Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
T
third-party
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Alexis AOUN
third-party
Commits
7078ba9e
Commit
7078ba9e
authored
May 21, 2021
by
Damien Moulard
Committed by
Alexis Aoun
Jul 06, 2021
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
linting
parent
9f41ce36
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
42 additions
and
24 deletions
+42
-24
orders_helper.js
orders/static/js/orders_helper.js
+42
-24
No files found.
orders/static/js/orders_helper.js
View file @
7078ba9e
...
@@ -6,22 +6,26 @@ var suppliers_list = [],
...
@@ -6,22 +6,26 @@ var suppliers_list = [],
/**
/**
* Add a supplier to the selected suppliers list.
* Add a supplier to the selected suppliers list.
*
*
* @returns -1 if validation failed,
void
otherwise
* @returns -1 if validation failed,
0
otherwise
*/
*/
function
add_supplier
()
{
function
add_supplier
()
{
const
user_input
=
$
(
"#supplier_input"
).
val
();
const
user_input
=
$
(
"#supplier_input"
).
val
();
// Check if user input is a valid supplier
// Check if user input is a valid supplier
const
supplier
=
suppliers_list
.
find
(
s
=>
s
.
display_name
===
user_input
)
const
supplier
=
suppliers_list
.
find
(
s
=>
s
.
display_name
===
user_input
);
if
(
supplier
===
undefined
)
{
if
(
supplier
===
undefined
)
{
alert
(
"Le fournisseur renseigné n'est pas valide.
\
n"
alert
(
"Le fournisseur renseigné n'est pas valide.
\
n"
+
"Veuillez sélectionner un fournisseur dans la liste déroulante."
);
+
"Veuillez sélectionner un fournisseur dans la liste déroulante."
);
return
-
1
;
return
-
1
;
}
}
const
supplier_selected
=
selected_suppliers
.
find
(
s
=>
s
.
display_name
===
user_input
)
const
supplier_selected
=
selected_suppliers
.
find
(
s
=>
s
.
display_name
===
user_input
);
if
(
supplier_selected
!==
undefined
)
{
if
(
supplier_selected
!==
undefined
)
{
alert
(
"Ce fournisseur est déjà sélectionné."
);
alert
(
"Ce fournisseur est déjà sélectionné."
);
return
-
1
;
return
-
1
;
}
}
...
@@ -30,6 +34,7 @@ function add_supplier() {
...
@@ -30,6 +34,7 @@ function add_supplier() {
selected_suppliers
.
push
(
supplier
);
selected_suppliers
.
push
(
supplier
);
let
url
=
"/orders/get_supplier_products"
;
let
url
=
"/orders/get_supplier_products"
;
url
+=
"?sid="
+
encodeURIComponent
(
supplier
.
id
);
url
+=
"?sid="
+
encodeURIComponent
(
supplier
.
id
);
// Fetch supplier products
// Fetch supplier products
...
@@ -42,7 +47,7 @@ function add_supplier() {
...
@@ -42,7 +47,7 @@ function add_supplier() {
success
:
function
(
data
)
{
success
:
function
(
data
)
{
save_supplier_products
(
supplier
,
data
.
res
.
products
);
save_supplier_products
(
supplier
,
data
.
res
.
products
);
update_display
();
update_display
();
$
(
"#supplier_input"
).
val
(
""
)
$
(
"#supplier_input"
).
val
(
""
)
;
closeModal
();
closeModal
();
},
},
error
:
function
(
data
)
{
error
:
function
(
data
)
{
...
@@ -56,6 +61,8 @@ function add_supplier() {
...
@@ -56,6 +61,8 @@ function add_supplier() {
alert
(
'Erreur lors de la récupération des produits, réessayer plus tard.'
);
alert
(
'Erreur lors de la récupération des produits, réessayer plus tard.'
);
}
}
});
});
return
0
;
}
}
/**
/**
...
@@ -65,15 +72,15 @@ function add_supplier() {
...
@@ -65,15 +72,15 @@ function add_supplier() {
*/
*/
function
remove_supplier
(
supplier_id
)
{
function
remove_supplier
(
supplier_id
)
{
// Remove from suppliers list
// Remove from suppliers list
selected_suppliers
=
selected_suppliers
.
filter
(
supplier
=>
supplier
.
id
!=
supplier_id
)
selected_suppliers
=
selected_suppliers
.
filter
(
supplier
=>
supplier
.
id
!=
supplier_id
)
;
// Remove the supplier from the products suppliers list
// Remove the supplier from the products suppliers list
for
(
const
i
in
products
)
{
for
(
const
i
in
products
)
{
products
[
i
].
suppliers
=
products
[
i
].
suppliers
.
filter
(
supplier
=>
supplier
.
id
!=
supplier_id
)
products
[
i
].
suppliers
=
products
[
i
].
suppliers
.
filter
(
supplier
=>
supplier
.
id
!=
supplier_id
)
;
}
}
// Remove products only associated to this product
// Remove products only associated to this product
products
=
products
.
filter
(
product
=>
product
.
suppliers
.
length
>
0
)
products
=
products
.
filter
(
product
=>
product
.
suppliers
.
length
>
0
)
;
update_display
();
update_display
();
}
}
...
@@ -92,9 +99,9 @@ function save_supplier_products(supplier, new_products) {
...
@@ -92,9 +99,9 @@ function save_supplier_products(supplier, new_products) {
if
(
index
===
-
1
)
{
if
(
index
===
-
1
)
{
np
.
suppliers
=
[{
...
supplier
}];
np
.
suppliers
=
[{
...
supplier
}];
products
.
push
(
np
)
products
.
push
(
np
)
;
}
else
{
}
else
{
products
[
index
].
suppliers
.
push
({
...
supplier
})
products
[
index
].
suppliers
.
push
({
...
supplier
})
;
}
}
}
}
}
}
...
@@ -143,21 +150,25 @@ function supplier_column_name(supplier) {
...
@@ -143,21 +150,25 @@ function supplier_column_name(supplier) {
*/
*/
function
display_suppliers
()
{
function
display_suppliers
()
{
let
supplier_container
=
$
(
"#suppliers_container"
);
let
supplier_container
=
$
(
"#suppliers_container"
);
$
(
"#suppliers_container"
).
empty
();
$
(
"#suppliers_container"
).
empty
();
for
(
supplier
of
selected_suppliers
)
{
for
(
supplier
of
selected_suppliers
)
{
let
template
=
$
(
"#templates #supplier_pill"
)
let
template
=
$
(
"#templates #supplier_pill"
);
template
.
find
(
".supplier_name"
).
text
(
supplier
.
display_name
);
template
.
find
(
".supplier_name"
).
text
(
supplier
.
display_name
);
template
.
find
(
".remove_supplier_icon"
).
attr
(
'id'
,
`remove_supplier_
${
supplier
.
id
}
`
)
template
.
find
(
".remove_supplier_icon"
).
attr
(
'id'
,
`remove_supplier_
${
supplier
.
id
}
`
)
;
supplier_container
.
append
(
template
.
html
());
supplier_container
.
append
(
template
.
html
());
}
}
$
(
".remove_supplier_icon"
).
on
(
"click"
,
function
(
e
)
{
$
(
".remove_supplier_icon"
).
on
(
"click"
,
function
()
{
const
el_id
=
$
(
this
).
attr
(
'id'
).
split
(
'_'
);
const
el_id
=
$
(
this
).
attr
(
'id'
)
.
split
(
'_'
);
const
supplier_id
=
el_id
[
el_id
.
length
-
1
];
const
supplier_id
=
el_id
[
el_id
.
length
-
1
];
let
modal_remove_supplier
=
$
(
'#templates #modal_remove_supplier'
);
let
modal_remove_supplier
=
$
(
'#templates #modal_remove_supplier'
);
modal_remove_supplier
.
find
(
".supplier_name"
).
text
(
supplier
.
display_name
);
modal_remove_supplier
.
find
(
".supplier_name"
).
text
(
supplier
.
display_name
);
openModal
(
openModal
(
...
@@ -165,9 +176,9 @@ function display_suppliers() {
...
@@ -165,9 +176,9 @@ function display_suppliers() {
()
=>
{
()
=>
{
remove_supplier
(
supplier_id
);
remove_supplier
(
supplier_id
);
},
},
'Valider'
,
'Valider'
);
);
})
})
;
}
}
/* DATATABLE */
/* DATATABLE */
...
@@ -182,7 +193,7 @@ function prepare_datatable_data() {
...
@@ -182,7 +193,7 @@ function prepare_datatable_data() {
let
item
=
{
let
item
=
{
id
:
product
.
id
,
id
:
product
.
id
,
name
:
product
.
name
name
:
product
.
name
}
}
;
// If product not related to supplier : false ; else null (qty to be set) or qty
// If product not related to supplier : false ; else null (qty to be set) or qty
for
(
product_supplier
of
product
.
suppliers
)
{
for
(
product_supplier
of
product
.
suppliers
)
{
...
@@ -213,7 +224,7 @@ function prepare_datatable_columns() {
...
@@ -213,7 +224,7 @@ function prepare_datatable_columns() {
},
},
{
{
data
:
"name"
,
data
:
"name"
,
title
:
"Produit"
,
title
:
"Produit"
}
}
];
];
...
@@ -227,11 +238,13 @@ function prepare_datatable_columns() {
...
@@ -227,11 +238,13 @@ function prepare_datatable_columns() {
if
(
data
===
false
)
{
if
(
data
===
false
)
{
return
"X"
;
return
"X"
;
}
else
{
}
else
{
const
input_id
=
`product_
${
full
.
id
}
_supplier_
${
supplier
.
id
}
_qty_input`
const
input_id
=
`product_
${
full
.
id
}
_supplier_
${
supplier
.
id
}
_qty_input`
;
return
`<input type="number" class="product_qty_input" id=
${
input_id
}
value=
${
data
}
>`
return
`<input type="number" class="product_qty_input" id=
${
input_id
}
value=
${
data
}
>`
;
}
}
}
}
})
})
;
}
}
return
columns
;
return
columns
;
...
@@ -244,6 +257,7 @@ function display_products() {
...
@@ -244,6 +257,7 @@ function display_products() {
// Empty datatable if already exists
// Empty datatable if already exists
if
(
products
.
length
==
0
)
{
if
(
products
.
length
==
0
)
{
$
(
'.main'
).
hide
();
$
(
'.main'
).
hide
();
return
-
1
;
return
-
1
;
}
}
...
@@ -273,16 +287,20 @@ function display_products() {
...
@@ -273,16 +287,20 @@ function display_products() {
// Save value on inputs change
// Save value on inputs change
$
(
'#products_table'
).
on
(
'input'
,
'tbody td .product_qty_input'
,
function
()
{
$
(
'#products_table'
).
on
(
'input'
,
'tbody td .product_qty_input'
,
function
()
{
let
val
=
parseFloat
(
$
(
this
).
val
())
let
val
=
parseFloat
(
$
(
this
).
val
())
;
// If value is a number
// If value is a number
if
(
!
isNaN
(
val
))
{
if
(
!
isNaN
(
val
))
{
const
id_split
=
$
(
this
).
attr
(
'id'
).
split
(
'_'
)
const
id_split
=
$
(
this
).
attr
(
'id'
)
.
split
(
'_'
);
const
prod_id
=
id_split
[
1
];
const
prod_id
=
id_split
[
1
];
const
supplier_id
=
id_split
[
3
];
const
supplier_id
=
id_split
[
3
];
save_product_supplier_qty
(
prod_id
,
supplier_id
,
val
);
save_product_supplier_qty
(
prod_id
,
supplier_id
,
val
);
}
}
});
});
return
0
;
}
}
/**
/**
...
@@ -309,7 +327,7 @@ $(document).ready(function() {
...
@@ -309,7 +327,7 @@ $(document).ready(function() {
suppliers_list
=
data
.
res
;
suppliers_list
=
data
.
res
;
// Set up autocomplete on supplier input
// Set up autocomplete on supplier input
$
(
"#supplier_input"
).
autocomplete
({
$
(
"#supplier_input"
).
autocomplete
({
source
:
suppliers_list
.
map
(
a
=>
a
.
display_name
)
source
:
suppliers_list
.
map
(
a
=>
a
.
display_name
)
});
});
...
@@ -330,7 +348,7 @@ $(document).ready(function() {
...
@@ -330,7 +348,7 @@ $(document).ready(function() {
$
(
"#supplier_form"
).
on
(
"submit"
,
function
(
e
)
{
$
(
"#supplier_form"
).
on
(
"submit"
,
function
(
e
)
{
e
.
preventDefault
();
e
.
preventDefault
();
add_supplier
();
add_supplier
();
})
})
;
// TODO: on click on 'X' change to input
// TODO: on click on 'X' change to input
});
});
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment