-
Notifications
You must be signed in to change notification settings - Fork 0
/
new-discount-menu.js
148 lines (113 loc) · 7.25 KB
/
new-discount-menu.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
$(document).ready(function() {
$(function() {
//récupère le click du bouton
$(".editProduct").click(function(e) {
e.preventDefault();
//récupère la valeur de data-id de {{ product.id }}
var id = ($(this).attr("data-id"));
//récupère la valeur de data-path pour renvoyer vers la fonction du controller grâce au nom de la route
var path = ($(this).attr("data-path"));
//charge la modal en passant la route /newproduct + id
$("#modal-wrapper").load(path, {}, function() {
$("#myModal").modal("show");
//parseFloat le prix pour qu'il soit considérer comme un nombre
var currentPrice = parseFloat($('#currentPrice').attr("data-price")).toFixed(2);
//désactive le submit par défaut
$(":input[type='submit']").prop('disabled', true);
//désactive le champ input du montant de la remise
$("#product_discount_discountValue").prop('disabled', true);
//récupère le click du discountType
$(":input[name='product_discount[discountType]']").click(function(e) {
//en cliquant sur le discountType, on reactive l'input du montant de la remise
$("#product_discount_discountValue").prop('disabled', false);
//récupère tout ce qui est saisi par l'utilisateur dans l'input montant de la remise
$("#product_discount_discountValue").keyup(function() {
//si l'input vaut 0 donc = à € on calcul le prix en faisant une soustraction
if ($('input[name="product_discount[discountType]"]:checked').val() == "0") {
var showNewPrice = (currentPrice - (this.value)).toFixed(2);
//condition pour vérifier que le prix ne sera pas inférieur à 0 et désactive le bouton valider
if (showNewPrice <= 0) {
$("#errorsNewProduct").html("Erreur : la remise ne peut pas être supérieure ou égale au prix");
$(':input[type="submit"]').prop('disabled', true);
// si pas de valeur, message d'avertissement
} else if ((this.value) == '' || (this.value).length == "0") {
$("#errorsNewProduct").html("Erreur : Veuillez saisir un montant de remise");
$(':input[type="submit"]').prop('disabled', true);
//sinon on affiche le résultat de la soustraction et on permet au client de valider
} else {
$("#errorsNewProduct").html("");
$(':input[type="submit"]').prop('disabled', false);
$("#newPrice").html("<h3>Nouveau prix : " + showNewPrice + "€</h3>");
}
}
//si l'input vaut 1 donc = à % on calcul le prix
if ($(':input[name="product_discount[discountType]"]:checked').val() == "1") {
var showNewPrice = (currentPrice - (currentPrice * (this.value / 100))).toFixed(2);
//condition pour vérifier que le prix ne sera pas inférieur à 0 et désactive le bouton valider
if (showNewPrice <= 0) {
$("#errorsNewProduct").html("Erreur : le prix remisé ne peut être inférieur à 0");
$(':input[type="submit"]').prop('disabled', true);
// si pas de valeur, message d'avertissement
} else if ((this.value) == '' || (this.value).length == 0) {
$("#errorsNewProduct").html("Erreur : Veuillez saisir un montant de remise");
$(':input[type="submit"]').prop('disabled', true);
//sinon on affiche le résultat de l'opération et on permet au client de valider
} else {
$("#errorsNewProduct").html("");
$(':input[type="submit"]').prop('disabled', false);
$("#newPrice").html("<h3>Nouveau prix : " + showNewPrice + "€</h3>");
}
}
});
});
var form = $("#newProductForm");
//fonction pour notre formulaire
form.submit(function() {
//ternaire pour la gestion de la photo
//form[0] permet de récupérer l'image
var newFormdata = (window.FormData) ? new FormData(form[0]) : null;
//soit data devient newFormdata (donc object avec image) soit fonction de serialize
var data = (newFormdata !== null) ? newFormdata : form.serialize();
//partie AJAX
$.ajax({
method: "POST",
url: path,
contentType: false, // obligatoire pour de l'upload
processData: false, // obligatoire pour de l'upload
data: data,
dataType: "json",
success: function(response) {
window.location.reload();
},
error: function(jqXHR, textStatus, errorThrown) {
$("#catchError").html('La taille ou le format de la photo n\'est pas correct.');
alert(jqXHR);
}
});
return false;
});
// A chaque sélection de fichier
$('#newProductForm').find('input[name="product_discount[picture]"]').on('change', function(e) {
e.preventDefault();
var files = $(this)[0].files;
if (files.length > 0) {
// On part du principe qu'il n'y qu'un seul fichier
// étant donné que l'on a pas renseigné l'attribut "multiple"
var file = files[0],
$image_preview = $('#image_preview');
// Ici on injecte les informations recoltées sur le fichier pour l'utilisateur
$image_preview.find('.thumbnail').removeClass('hidden');
$image_preview.find('img').attr('src', window.URL.createObjectURL(file));
$image_preview.find('h4').html(file.name);
}
});
// Bouton "Annuler" pour vider le champ d'upload
$('#image_preview').find('button[name="annulateButton"]').on('click', function(e) {
e.preventDefault();
$('#newProductForm').find('input[name="product_discount[picture]"]').val('');
$('#image_preview').find('.thumbnail').addClass('hidden');
});
});
});
});
});