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
7f377397
Commit
7f377397
authored
May 21, 2021
by
Damien Moulard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
save input values for dom changes
parent
9d2a5ee7
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
56 additions
and
13 deletions
+56
-13
orders_helper.js
orders/static/js/orders_helper.js
+56
-13
No files found.
orders/static/js/orders_helper.js
View file @
7f377397
...
...
@@ -5,6 +5,7 @@ var suppliers_list = [],
/**
* Add a supplier to the selected suppliers list.
*
* @returns -1 if validation failed, void otherwise
*/
function
add_supplier
()
{
...
...
@@ -59,6 +60,7 @@ function add_supplier() {
/**
* Remove a supplier from the selected list & its associated products
*
* @param {int} supplier_id
*/
function
remove_supplier
(
supplier_id
)
{
...
...
@@ -89,10 +91,30 @@ function save_supplier_products(supplier, new_products) {
let
index
=
products
.
findIndex
(
p
=>
p
.
id
===
np
.
id
);
if
(
index
===
-
1
)
{
np
.
suppliers
=
[
supplier
];
np
.
suppliers
=
[
{
...
supplier
}
];
products
.
push
(
np
)
}
else
{
products
[
index
].
suppliers
.
push
(
supplier
)
products
[
index
].
suppliers
.
push
({
...
supplier
})
}
}
}
/**
* Save the quantity set for a product/supplier
*
* @param {int} prod_id
* @param {int} supplier_id
* @param {float} val
*/
function
save_product_supplier_qty
(
prod_id
,
supplier_id
,
val
)
{
for
(
const
i
in
products
)
{
if
(
products
[
i
].
id
==
prod_id
)
{
for
(
const
j
in
products
[
i
].
suppliers
)
{
if
(
products
[
i
].
suppliers
[
j
].
id
==
supplier_id
)
{
products
[
i
].
suppliers
[
j
].
qty
=
val
;
break
;
}
}
}
}
}
...
...
@@ -108,16 +130,12 @@ function is_product_related_to_supplier(product, supplier) {
return
product
.
suppliers
.
find
(
s
=>
s
.
id
===
supplier
.
id
)
!==
undefined
;
}
/**
* Create a string to represent a supplier column in product data
* @returns String
*/
function
supplier_column_name
(
supplier
)
{
let
parsed_name
=
supplier
.
display_name
parsed_name
=
parsed_name
.
toLowerCase
().
replaceAll
(
/
\s
+/g
,
" "
).
trim
()
parsed_name
=
parsed_name
.
replaceAll
(
" "
,
"_"
);
return
`supplier_
${
parsed_name
}
`
;
return
`qty_supplier_
${
supplier
.
id
}
`
;
}
/**
...
...
@@ -152,12 +170,19 @@ function prepare_datatable_data() {
for
(
product
of
products
)
{
let
item
=
{
id
:
product
.
id
,
name
:
product
.
name
}
// If product not related to supplier : false ; else null (qty to be set) or qty
for
(
product_supplier
of
product
.
suppliers
)
{
item
[
supplier_column_name
(
product_supplier
)]
=
(
"qty"
in
product_supplier
)
?
product_supplier
.
qty
:
null
;
}
for
(
supplier
of
selected_suppliers
)
{
// If product not related to supplier : false ; else null (value to be set)
item
[
supplier_column_name
(
supplier
)]
=
is_product_related_to_supplier
(
product
,
supplier
)
?
null
:
false
;
if
(
!
is_product_related_to_supplier
(
product
,
supplier
))
{
item
[
supplier_column_name
(
supplier
)]
=
false
;
}
}
data
.
push
(
item
);
...
...
@@ -172,6 +197,11 @@ function prepare_datatable_data() {
function
prepare_datatable_columns
()
{
columns
=
[
{
data
:
"id"
,
title
:
"id"
,
visible
:
false
},
{
data
:
"name"
,
title
:
"Produit"
,
}
...
...
@@ -187,7 +217,8 @@ function prepare_datatable_columns() {
if
(
data
===
false
)
{
return
"X"
;
}
else
{
return
`<input type="number" class="product_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
}
>`
}
}
})
...
...
@@ -219,7 +250,7 @@ function display_products() {
columns
:
columns
,
order
:
[
[
1
,
2
,
"asc"
]
],
...
...
@@ -229,6 +260,19 @@ function display_products() {
});
$
(
'.main'
).
show
();
// Save value on inputs change
$
(
'#products_table'
).
on
(
'input'
,
'tbody td .product_qty_input'
,
function
()
{
let
val
=
parseFloat
(
$
(
this
).
val
())
// If value is a number
if
(
!
isNaN
(
val
))
{
const
id_split
=
$
(
this
).
attr
(
'id'
).
split
(
'_'
)
const
prod_id
=
id_split
[
1
];
const
supplier_id
=
id_split
[
3
];
save_product_supplier_qty
(
prod_id
,
supplier_id
,
val
);
}
});
}
/**
...
...
@@ -278,6 +322,5 @@ $(document).ready(function() {
add_supplier
();
})
// todo on input change : update value in array of products
// todo on click on 'X' change to i
// 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