Fix: \n 1. General styles cleanup. \n 2. Contact page - styling of input fields on mobile improved. \n 3. Services page - alignment error in technologies table on most devices, corrected. \n 4. Supplier Purchase Order page - items preview click event was not triggering, fixed end-to-end saving of new SPO, most changes copied to Manufacturing Purchase Orders, but not tested.
This commit is contained in:
@@ -1119,13 +1119,14 @@ CREATE TABLE IF NOT EXISTS Shop_Unit_Measurement_Audit (
|
||||
SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Unit_Measurement_Conversion';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS Shop_Unit_Measurement_Conversion (
|
||||
id_conversion INT NOT NULL PRIMARY KEY,
|
||||
id_conversion INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
|
||||
id_unit_derived INT NOT NULL,
|
||||
id_unit_base INT NOT NULL,
|
||||
power_unit_base FLOAT NOT NULL,
|
||||
multiplier_unit_base FLOAT NOT NULL,
|
||||
increment_unit_base FLOAT NOT NULL,
|
||||
apply_multiplier_before_increment BIT NOT NULL DEFAULT 1,
|
||||
active BIT NOT NULL DEFAULT 1,
|
||||
display_order INT NOT NULL,
|
||||
created_on DATETIME,
|
||||
created_by INT,
|
||||
id_change_set INT,
|
||||
@@ -1498,22 +1499,27 @@ CREATE TABLE IF NOT EXISTS Shop_Variation_Type_Temp (
|
||||
SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Variation';
|
||||
|
||||
CREATE TABLE Shop_Variation (
|
||||
id_variation INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
id_type INT NOT NULL,
|
||||
CONSTRAINT FK_Shop_Variation_id_type
|
||||
id_variation INT NOT NULL AUTO_INCREMENT PRIMARY KEY
|
||||
, id_type INT NOT NULL
|
||||
, CONSTRAINT FK_Shop_Variation_id_type
|
||||
FOREIGN KEY (id_type)
|
||||
REFERENCES Shop_Variation_Type(id_type)
|
||||
ON UPDATE RESTRICT,
|
||||
code VARCHAR(50),
|
||||
name VARCHAR(255),
|
||||
active BIT NOT NULL DEFAULT 1,
|
||||
display_order INT NOT NULL,
|
||||
created_on DATETIME,
|
||||
created_by INT,
|
||||
id_change_set INT,
|
||||
CONSTRAINT FK_Shop_Variation_id_change_set
|
||||
REFERENCES partsltd_prod.Shop_Variation_Type(id_type)
|
||||
ON UPDATE RESTRICT
|
||||
, id_unit_measurement INT NULL
|
||||
, CONSTRAINT FK_Shop_Unit_Measurement_id_unit_measurement
|
||||
FOREIGN KEY (id_unit_measurement)
|
||||
REFERENCES partsltd_prod.Shop_Unit_Measurement(id_unit_measurement)
|
||||
, count_unit_measurement INT NULL
|
||||
, code VARCHAR(50)
|
||||
, name VARCHAR(255)
|
||||
, active BIT NOT NULL DEFAULT 1
|
||||
, display_order INT NOT NULL
|
||||
, created_on DATETIME
|
||||
, created_by INT
|
||||
, id_change_set INT
|
||||
, CONSTRAINT FK_Shop_Variation_id_change_set
|
||||
FOREIGN KEY (id_change_set)
|
||||
REFERENCES Shop_Product_Change_Set(id_change_set)
|
||||
REFERENCES partsltd_prod.Shop_Product_Change_Set(id_change_set)
|
||||
);
|
||||
|
||||
# Variation Audits
|
||||
@@ -1548,6 +1554,8 @@ CREATE TABLE Shop_Variation_Temp (
|
||||
id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT
|
||||
, id_variation INT NOT NULL
|
||||
, id_type INT NOT NULL
|
||||
, id_unit_measurement INT NULL
|
||||
, count_unit_measurement INT NULL
|
||||
, code VARCHAR(50)
|
||||
, name VARCHAR(255)
|
||||
, active BIT
|
||||
@@ -2542,6 +2550,7 @@ CREATE TABLE IF NOT EXISTS Shop_Supplier_Audit (
|
||||
SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Supplier_Temp';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS Shop_Supplier_Temp (
|
||||
id_temp INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
id_supplier INT NOT NULL,
|
||||
name_company VARCHAR(255) NOT NULL,
|
||||
name_contact VARCHAR(255) NULL,
|
||||
@@ -2692,7 +2701,8 @@ DROP TABLE IF EXISTS Shop_Supplier_Purchase_Order_Temp;
|
||||
SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Supplier_Purchase_Order_Temp';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS Shop_Supplier_Purchase_Order_Temp (
|
||||
id_order INT NOT NULL
|
||||
id_temp INT NOT NULL AUTO_INCREMENT PRIMARY KEY
|
||||
, id_order INT NOT NULL
|
||||
, id_supplier_ordered INT NOT NULL
|
||||
, id_currency_cost INT NOT NULL
|
||||
, active BIT NULL
|
||||
@@ -2770,7 +2780,8 @@ CREATE TABLE IF NOT EXISTS Shop_Supplier_Purchase_Order_Product_Link_Audit (
|
||||
SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Supplier_Purchase_Order_Product_Link_Temp';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS Shop_Supplier_Purchase_Order_Product_Link_Temp (
|
||||
id_link INT NOT NULL PRIMARY KEY
|
||||
id_temp INT NOT NULL AUTO_INCREMENT PRIMARY KEY
|
||||
, id_link INT NOT NULL
|
||||
, id_order INT NOT NULL
|
||||
, id_product INT NULL
|
||||
, id_permutation INT NULL
|
||||
@@ -2855,7 +2866,8 @@ CREATE TABLE IF NOT EXISTS Shop_Manufacturing_Purchase_Order_Audit (
|
||||
SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Manufacturing_Purchase_Order_Temp';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS Shop_Manufacturing_Purchase_Order_Temp (
|
||||
id_order INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
id_temp INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
id_order INT NOT NULL,
|
||||
/*
|
||||
cost_total_local FLOAT NOT NULL,
|
||||
*/
|
||||
@@ -2952,7 +2964,8 @@ CREATE TABLE IF NOT EXISTS Shop_Manufacturing_Purchase_Order_Product_Link_Audit
|
||||
SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Manufacturing_Purchase_Order_Product_Link_Temp';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS Shop_Manufacturing_Purchase_Order_Product_Link_Temp (
|
||||
id_link INT NOT NULL PRIMARY KEY,
|
||||
id_temp INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
id_link INT NOT NULL,
|
||||
id_order INT NOT NULL,
|
||||
id_product INT NULL,
|
||||
id_permutation INT NULL,
|
||||
@@ -4347,6 +4360,14 @@ BEGIN
|
||||
value_new,
|
||||
id_change_set
|
||||
)
|
||||
# Changed id_unit_measurement
|
||||
SELECT NEW.id_variation, 'id_unit_measurement', OLD.id_unit_measurement, NEW.id_unit_measurement, NEW.id_change_set
|
||||
WHERE NOT OLD.id_unit_measurement <=> NEW.id_unit_measurement
|
||||
UNION
|
||||
# Changed count_unit_measurement
|
||||
SELECT NEW.id_variation, 'count_unit_measurement', OLD.count_unit_measurement, NEW.count_unit_measurement, NEW.id_change_set
|
||||
WHERE NOT OLD.count_unit_measurement <=> NEW.count_unit_measurement
|
||||
UNION
|
||||
# Changed code
|
||||
SELECT NEW.id_variation, 'code', OLD.code, NEW.code, NEW.id_change_set
|
||||
WHERE NOT OLD.code <=> NEW.code
|
||||
@@ -5755,10 +5776,6 @@ BEGIN
|
||||
# Changed id_unit_base
|
||||
SELECT NEW.id_conversion, 'id_unit_base', OLD.id_unit_base, NEW.id_unit_base, NEW.id_change_set
|
||||
WHERE NOT OLD.id_unit_base <=> NEW.id_unit_base
|
||||
UNION
|
||||
# Changed power_unit_base
|
||||
SELECT NEW.id_conversion, 'power_unit_base', OLD.power_unit_base, NEW.power_unit_base, NEW.id_change_set
|
||||
WHERE NOT OLD.power_unit_base <=> NEW.power_unit_base
|
||||
UNION
|
||||
# Changed multiplier_unit_base
|
||||
SELECT NEW.id_conversion, 'multiplier_unit_base', OLD.multiplier_unit_base, NEW.multiplier_unit_base, NEW.id_change_set
|
||||
@@ -5767,6 +5784,10 @@ BEGIN
|
||||
# Changed increment_unit_base
|
||||
SELECT NEW.id_conversion, 'active', OLD.increment_unit_base, NEW.increment_unit_base, NEW.id_change_set
|
||||
WHERE NOT OLD.increment_unit_base <=> NEW.increment_unit_base
|
||||
UNION
|
||||
# Changed apply_multiplier_before_increment
|
||||
SELECT NEW.id_conversion, 'apply_multiplier_before_increment', OLD.apply_multiplier_before_increment, NEW.apply_multiplier_before_increment, NEW.id_change_set
|
||||
WHERE NOT OLD.apply_multiplier_before_increment <=> NEW.apply_multiplier_before_increment
|
||||
UNION
|
||||
# Changed active
|
||||
SELECT NEW.id_conversion, 'active', OLD.active, NEW.active, NEW.id_change_set
|
||||
@@ -7690,7 +7711,7 @@ BEGIN
|
||||
SET a_get_inactive_storage_location = IFNULL(a_get_inactive_storage_location, 0);
|
||||
|
||||
SELECT
|
||||
SL.id_storage_location
|
||||
SL.id_location
|
||||
, P.id_plant
|
||||
, P.id_address
|
||||
, A.id_region
|
||||
@@ -11623,6 +11644,7 @@ BEGIN
|
||||
-- Duplicate Variation Ids
|
||||
-- Duplicate Variation Type Codes
|
||||
-- Duplicate Variation Codes
|
||||
-- Variation unit measurement with no count unit measurement
|
||||
|
||||
-- Permissions
|
||||
IF a_debug = 1 THEN
|
||||
@@ -22567,21 +22589,60 @@ INSERT INTO Shop_Unit_Measurement (
|
||||
name_singular, name_plural, symbol, is_base_unit, is_unit_of_distance, is_unit_of_mass, is_unit_of_time, is_unit_of_volume
|
||||
)
|
||||
VALUES
|
||||
('metre', 'metres', 'm', 1, 1, 0, 0, 0),
|
||||
('kilogram', 'kilograms', 'kg', 1, 0, 1, 0, 0),
|
||||
('item', 'items', 'x', 0, 0, 0, 0, 0),
|
||||
('hour', 'hours', 'h', 1, 0, 0, 1, 0)
|
||||
('metre', 'metres', 'm', 1, 1, 0, 0, 0)
|
||||
, ('millimetre', 'millimetres', 'mm', 0, 1, 0, 0, 0)
|
||||
, ('kilogram', 'kilograms', 'kg', 1, 0, 1, 0, 0)
|
||||
, ('gram', 'grams', 'g', 0, 0, 1, 0, 0)
|
||||
, ('litre', 'litres', 'L', 0, 0, 0, 0, 1)
|
||||
, ('millilitre', 'millilitres', 'mL', 0, 0, 0, 0, 1)
|
||||
, ('item', 'items', 'x', 0, 0, 0, 0, 0)
|
||||
, ('hour', 'hours', 'h', 1, 0, 0, 1, 0)
|
||||
, ('day', 'days', 'd', 0, 0, 0, 1, 0)
|
||||
;
|
||||
|
||||
/*
|
||||
# Unit of Measurement Conversion
|
||||
INSERT INTO Shop_Unit_Measurement_Conversion (
|
||||
id_unit_derived, id_unit_base, power_unit_base, multiplier_unit_base, increment_unit_base
|
||||
id_unit_derived
|
||||
, id_unit_base
|
||||
, display_order
|
||||
, multiplier_unit_base
|
||||
, increment_unit_base
|
||||
, apply_multiplier_before_increment
|
||||
)
|
||||
VALUES
|
||||
|
||||
VALUES
|
||||
(
|
||||
2 -- id_unit_derived
|
||||
, 1 -- id_unit_base
|
||||
, 1 -- display_order
|
||||
, 0.001 -- multiplier_unit_base
|
||||
, 0 -- increment_unit_base
|
||||
, apply_multiplier_before_increment
|
||||
)
|
||||
, (
|
||||
4 -- id_unit_derived
|
||||
, 3 -- id_unit_base
|
||||
, 1 -- display_order
|
||||
, 0.001 -- multiplier_unit_base
|
||||
, 0 -- increment_unit_base
|
||||
, apply_multiplier_before_increment
|
||||
)
|
||||
, (
|
||||
6 -- id_unit_derived
|
||||
, 5 -- id_unit_base
|
||||
, 1 -- display_order
|
||||
, 0.001 -- multiplier_unit_base
|
||||
, 0 -- increment_unit_base
|
||||
, apply_multiplier_before_increment
|
||||
)
|
||||
, (
|
||||
9 -- id_unit_derived
|
||||
, 8 -- id_unit_base
|
||||
, 1 -- display_order
|
||||
, 24 -- multiplier_unit_base
|
||||
, 0 -- increment_unit_base
|
||||
, apply_multiplier_before_increment
|
||||
)
|
||||
;
|
||||
*/
|
||||
|
||||
|
||||
# Categories
|
||||
@@ -22841,15 +22902,138 @@ INSERT INTO Shop_Variation_Type (
|
||||
)
|
||||
VALUES
|
||||
(1, 'COLOUR', 'Colour', 'Colours')
|
||||
, (2, 'SIZE', 'Size', 'Sizes')
|
||||
;
|
||||
|
||||
# Variations
|
||||
INSERT INTO Shop_Variation (
|
||||
display_order, id_type, code, name
|
||||
display_order, id_type, code, name, id_unit_measurement, count_unit_measurement
|
||||
)
|
||||
VALUES
|
||||
(1, 1, 'RED', 'Red'),
|
||||
(2, 1, 'BLUE', 'Blue')
|
||||
(1, 1, 'RED', 'Red', NULL, NULL)
|
||||
, (2, 1, 'BLUE', 'Blue', NULL, NULL)
|
||||
, (1, 2, '400ml', '400 millilitres', 6, 400)
|
||||
, (2, 2, '400g', '400 grams', 4, 400)
|
||||
, (3, 2, '410g', '410 grams', 4, 410)
|
||||
, (4, 2, '8g', '8 grams', 4, 8)
|
||||
, (5, 2, '13g', '13 grams', 4, 13)
|
||||
, (6, 2, '27g', '27 grams', 4, 27)
|
||||
, (7, 2, '104g', '104 grams', 4, 104)
|
||||
, (8, 2, '200g', '200 grams', 4, 200)
|
||||
, (9, 2, '92g', '92 grams', 4, 92)
|
||||
, (10, 2, '100g', '100 grams', 4, 100)
|
||||
, (11, 2, '500g', '500 grams', 4, 500)
|
||||
, (12, 2, '250g', '250 grams', 4, 250)
|
||||
, (13, 2, '750g', '750 grams', 4, 750)
|
||||
, (14, 2, '145g', '145 grams', 4, 145)
|
||||
, (15, 2, '340g', '340 grams', 4, 340)
|
||||
, (16, 2, '132g', '132 grams', 4, 132)
|
||||
, (17, 2, '170g', '170 grams', 4, 170)
|
||||
, (18, 2, '700g', '700 grams', 4, 700)
|
||||
, (19, 2, '150g', '150 grams', 4, 150)
|
||||
, (20, 2, '1kg', '1 kilogram', 3, 1)
|
||||
, (21, 2, '2kg', '2 kilograms', 3, 2)
|
||||
, (22, 2, '800ml', '800 millilitres', 6, 800)
|
||||
, (23, 2, '570g', '570 grams', 4, 570)
|
||||
, (24, 2, '300g', '300 grams', 4, 300)
|
||||
, (25, 2, '350g', '350 grams', 4, 350)
|
||||
, (26, 2, '30g', '30 grams', 4, 30)
|
||||
, (27, 2, '1L', '1 litre', 5, 1)
|
||||
, (28, 2, '1.2L', '1.2 litres', 5, 1.2)
|
||||
, (29, 2, '1.8L', '1.8 litres', 5, 1.8)
|
||||
, (30, 2, 'bag of 20', 'bag of 20', 7, 20)
|
||||
, (31, 2, '180ml', '180 millilitres', 6, 180)
|
||||
, (32, 2, '70g', '70 grams', 4, 70)
|
||||
, (33, 2, '60ml', '60 millilitres', 6, 60)
|
||||
, (34, 2, '325g', '325 grams', 4, 325)
|
||||
, (35, 2, 'pack of 50', 'pack of 50', 7, 50)
|
||||
, (36, 2, 'box of 24 (each 5.9g)', 'box of 24 (each 5.9 grams)', 7, 24)
|
||||
, (37, 2, '397g', '397 grams', 4, 397)
|
||||
, (38, 2, '720g', '720 grams', 4, 720)
|
||||
, (39, 2, '454g', '454 grams', 4, 454)
|
||||
, (40, 2, 'pack of 4 (each 37g)', 'pack of 4 (each 37 grams)', 7, 4)
|
||||
, (41, 2, '450g', '450 grams', 4, 450)
|
||||
, (42, 2, '24.6.g', '24.6 grams', 4, 24.6)
|
||||
, (43, 2, '230g', '230 grams', 4, 230)
|
||||
, (44, 2, '37.3g', '37.3 grams', 4, 37.3)
|
||||
, (45, 2, '38.3g', '38.3 grams', 4, 38.3)
|
||||
, (46, 2, '123g', '123 grams', 4, 123)
|
||||
, (47, 2, '266g', '266 grams', 4, 266)
|
||||
, (48, 2, '157g', '157 grams', 4, 157)
|
||||
, (49, 2, '285g', '285 grams', 4, 285)
|
||||
, (50, 2, '700ml', '700 millilitres', 6, 700)
|
||||
, (51, 2, '5L', '5 litres', 5, 5)
|
||||
, (52, 2, '216g', '216 grams', 4, 216)
|
||||
, (53, 2, '320g', '320 grams', 4, 320)
|
||||
, (54, 2, '2L', '2 litres', 5, 2)
|
||||
, (55, 2, '200ml', '200 millilitres', 6, 200)
|
||||
, (56, 2, '250ml', '250 millilitres', 6, 250)
|
||||
, (57, 2, '1 punnet', '1 punnet', 7, 1)
|
||||
, (58, 2, '420g', '420 grams', 4, 420)
|
||||
, (59, 2, '230g', '230 grams', 4, 230)
|
||||
, (60, 2, '465g', '465 grams', 4, 465)
|
||||
, (61, 2, '500ml', '500 millilitres', 6, 500)
|
||||
, (62, 2, '250ml', '250 millilitres', 6, 250)
|
||||
, (63, 2, '238ml', '238 millilitres', 6, 238)
|
||||
, (64, 2, '140ml', '140 millilitres', 6, 140)
|
||||
, (65, 2, '195g', '195 grams', 4, 195)
|
||||
, (66, 2, '1pt', '1 pint', 5, 1)
|
||||
, (67, 2, '570ml', '570 millilitres', 6, 570)
|
||||
, (68, 2, '360g', '360 grams', 4, 360)
|
||||
, (69, 2, '90g', '90 grams', 4, 90)
|
||||
, (70, 2, '800ml', '800 millilitres', 6, 800)
|
||||
, (71, 2, '197g', '197 grams', 4, 197)
|
||||
;
|
||||
|
||||
INSERT INTO partsltd_prod.Shop_Product_Change_Set (
|
||||
comment
|
||||
)
|
||||
VALUES ( 'Update Variation Display Orders' )
|
||||
;
|
||||
WITH RANKED AS (
|
||||
SELECT
|
||||
V.id_variation,
|
||||
RANK() OVER (ORDER BY
|
||||
CONCAT(
|
||||
CASE WHEN V.count_unit_measurement = FLOOR(V.count_unit_measurement) THEN
|
||||
LPAD(CAST(V.count_unit_measurement AS CHAR), 25, '0')
|
||||
ELSE
|
||||
CONCAT(
|
||||
LPAD(
|
||||
CAST(FLOOR(V.count_unit_measurement) AS CHAR)
|
||||
, 25
|
||||
, '0'
|
||||
)
|
||||
, SUBSTRING(
|
||||
CAST(V.count_unit_measurement AS CHAR)
|
||||
FROM LOCATE('.', CAST(V.count_unit_measurement AS CHAR))
|
||||
)
|
||||
)
|
||||
END
|
||||
, ' '
|
||||
, IFNULL(IFNULL(UM.symbol, UM.name_singular), '(No Unit of Measurement)')
|
||||
)
|
||||
) as new_order
|
||||
FROM partsltd_prod.Shop_Variation V
|
||||
INNER JOIN partsltd_prod.Shop_Unit_Measurement UM
|
||||
ON V.id_unit_measurement = UM.id_unit_measurement
|
||||
AND UM.active = 1
|
||||
WHERE
|
||||
V.id_type = 2
|
||||
)
|
||||
UPDATE partsltd_prod.Shop_Variation V
|
||||
INNER JOIN RANKED ON V.id_variation = RANKED.id_variation
|
||||
JOIN (
|
||||
SELECT CS.id_change_set
|
||||
FROM partsltd_prod.Shop_Product_Change_Set CS
|
||||
ORDER BY CS.id_change_set DESC
|
||||
LIMIT 1
|
||||
) CS
|
||||
SET
|
||||
V.display_order = RANKED.new_order
|
||||
, V.id_change_set = CS.id_change_set
|
||||
WHERE
|
||||
V.id_type = 2
|
||||
;
|
||||
|
||||
# Product Permutation Variation Links
|
||||
|
||||
@@ -6,13 +6,14 @@
|
||||
SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Unit_Measurement_Conversion';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS Shop_Unit_Measurement_Conversion (
|
||||
id_conversion INT NOT NULL PRIMARY KEY,
|
||||
id_conversion INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
|
||||
id_unit_derived INT NOT NULL,
|
||||
id_unit_base INT NOT NULL,
|
||||
power_unit_base FLOAT NOT NULL,
|
||||
multiplier_unit_base FLOAT NOT NULL,
|
||||
increment_unit_base FLOAT NOT NULL,
|
||||
apply_multiplier_before_increment BIT NOT NULL DEFAULT 1,
|
||||
active BIT NOT NULL DEFAULT 1,
|
||||
display_order INT NOT NULL,
|
||||
created_on DATETIME,
|
||||
created_by INT,
|
||||
id_change_set INT,
|
||||
|
||||
@@ -6,20 +6,25 @@
|
||||
SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Variation';
|
||||
|
||||
CREATE TABLE Shop_Variation (
|
||||
id_variation INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
id_type INT NOT NULL,
|
||||
CONSTRAINT FK_Shop_Variation_id_type
|
||||
id_variation INT NOT NULL AUTO_INCREMENT PRIMARY KEY
|
||||
, id_type INT NOT NULL
|
||||
, CONSTRAINT FK_Shop_Variation_id_type
|
||||
FOREIGN KEY (id_type)
|
||||
REFERENCES Shop_Variation_Type(id_type)
|
||||
ON UPDATE RESTRICT,
|
||||
code VARCHAR(50),
|
||||
name VARCHAR(255),
|
||||
active BIT NOT NULL DEFAULT 1,
|
||||
display_order INT NOT NULL,
|
||||
created_on DATETIME,
|
||||
created_by INT,
|
||||
id_change_set INT,
|
||||
CONSTRAINT FK_Shop_Variation_id_change_set
|
||||
REFERENCES partsltd_prod.Shop_Variation_Type(id_type)
|
||||
ON UPDATE RESTRICT
|
||||
, id_unit_measurement INT NULL
|
||||
, CONSTRAINT FK_Shop_Unit_Measurement_id_unit_measurement
|
||||
FOREIGN KEY (id_unit_measurement)
|
||||
REFERENCES partsltd_prod.Shop_Unit_Measurement(id_unit_measurement)
|
||||
, count_unit_measurement INT NULL
|
||||
, code VARCHAR(50)
|
||||
, name VARCHAR(255)
|
||||
, active BIT NOT NULL DEFAULT 1
|
||||
, display_order INT NOT NULL
|
||||
, created_on DATETIME
|
||||
, created_by INT
|
||||
, id_change_set INT
|
||||
, CONSTRAINT FK_Shop_Variation_id_change_set
|
||||
FOREIGN KEY (id_change_set)
|
||||
REFERENCES Shop_Product_Change_Set(id_change_set)
|
||||
REFERENCES partsltd_prod.Shop_Product_Change_Set(id_change_set)
|
||||
);
|
||||
|
||||
@@ -9,6 +9,8 @@ CREATE TABLE Shop_Variation_Temp (
|
||||
id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT
|
||||
, id_variation INT NOT NULL
|
||||
, id_type INT NOT NULL
|
||||
, id_unit_measurement INT NULL
|
||||
, count_unit_measurement INT NULL
|
||||
, code VARCHAR(50)
|
||||
, name VARCHAR(255)
|
||||
, active BIT
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Supplier_Temp';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS Shop_Supplier_Temp (
|
||||
id_temp INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
id_supplier INT NOT NULL,
|
||||
name_company VARCHAR(255) NOT NULL,
|
||||
name_contact VARCHAR(255) NULL,
|
||||
|
||||
@@ -6,7 +6,8 @@ DROP TABLE IF EXISTS Shop_Supplier_Purchase_Order_Temp;
|
||||
SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Supplier_Purchase_Order_Temp';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS Shop_Supplier_Purchase_Order_Temp (
|
||||
id_order INT NOT NULL
|
||||
id_temp INT NOT NULL AUTO_INCREMENT PRIMARY KEY
|
||||
, id_order INT NOT NULL
|
||||
, id_supplier_ordered INT NOT NULL
|
||||
, id_currency_cost INT NOT NULL
|
||||
, active BIT NULL
|
||||
|
||||
@@ -8,7 +8,8 @@
|
||||
SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Supplier_Purchase_Order_Product_Link_Temp';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS Shop_Supplier_Purchase_Order_Product_Link_Temp (
|
||||
id_link INT NOT NULL PRIMARY KEY
|
||||
id_temp INT NOT NULL AUTO_INCREMENT PRIMARY KEY
|
||||
, id_link INT NOT NULL
|
||||
, id_order INT NOT NULL
|
||||
, id_product INT NULL
|
||||
, id_permutation INT NULL
|
||||
|
||||
@@ -6,7 +6,8 @@
|
||||
SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Manufacturing_Purchase_Order_Temp';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS Shop_Manufacturing_Purchase_Order_Temp (
|
||||
id_order INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
id_temp INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
id_order INT NOT NULL,
|
||||
/*
|
||||
cost_total_local FLOAT NOT NULL,
|
||||
*/
|
||||
|
||||
@@ -7,7 +7,8 @@
|
||||
SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Manufacturing_Purchase_Order_Product_Link_Temp';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS Shop_Manufacturing_Purchase_Order_Product_Link_Temp (
|
||||
id_link INT NOT NULL PRIMARY KEY,
|
||||
id_temp INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
id_link INT NOT NULL,
|
||||
id_order INT NOT NULL,
|
||||
id_product INT NULL,
|
||||
id_permutation INT NULL,
|
||||
|
||||
@@ -35,6 +35,14 @@ BEGIN
|
||||
value_new,
|
||||
id_change_set
|
||||
)
|
||||
# Changed id_unit_measurement
|
||||
SELECT NEW.id_variation, 'id_unit_measurement', OLD.id_unit_measurement, NEW.id_unit_measurement, NEW.id_change_set
|
||||
WHERE NOT OLD.id_unit_measurement <=> NEW.id_unit_measurement
|
||||
UNION
|
||||
# Changed count_unit_measurement
|
||||
SELECT NEW.id_variation, 'count_unit_measurement', OLD.count_unit_measurement, NEW.count_unit_measurement, NEW.id_change_set
|
||||
WHERE NOT OLD.count_unit_measurement <=> NEW.count_unit_measurement
|
||||
UNION
|
||||
# Changed code
|
||||
SELECT NEW.id_variation, 'code', OLD.code, NEW.code, NEW.id_change_set
|
||||
WHERE NOT OLD.code <=> NEW.code
|
||||
|
||||
@@ -42,10 +42,6 @@ BEGIN
|
||||
# Changed id_unit_base
|
||||
SELECT NEW.id_conversion, 'id_unit_base', OLD.id_unit_base, NEW.id_unit_base, NEW.id_change_set
|
||||
WHERE NOT OLD.id_unit_base <=> NEW.id_unit_base
|
||||
UNION
|
||||
# Changed power_unit_base
|
||||
SELECT NEW.id_conversion, 'power_unit_base', OLD.power_unit_base, NEW.power_unit_base, NEW.id_change_set
|
||||
WHERE NOT OLD.power_unit_base <=> NEW.power_unit_base
|
||||
UNION
|
||||
# Changed multiplier_unit_base
|
||||
SELECT NEW.id_conversion, 'multiplier_unit_base', OLD.multiplier_unit_base, NEW.multiplier_unit_base, NEW.id_change_set
|
||||
@@ -54,6 +50,10 @@ BEGIN
|
||||
# Changed increment_unit_base
|
||||
SELECT NEW.id_conversion, 'active', OLD.increment_unit_base, NEW.increment_unit_base, NEW.id_change_set
|
||||
WHERE NOT OLD.increment_unit_base <=> NEW.increment_unit_base
|
||||
UNION
|
||||
# Changed apply_multiplier_before_increment
|
||||
SELECT NEW.id_conversion, 'apply_multiplier_before_increment', OLD.apply_multiplier_before_increment, NEW.apply_multiplier_before_increment, NEW.id_change_set
|
||||
WHERE NOT OLD.apply_multiplier_before_increment <=> NEW.apply_multiplier_before_increment
|
||||
UNION
|
||||
# Changed active
|
||||
SELECT NEW.id_conversion, 'active', OLD.active, NEW.active, NEW.id_change_set
|
||||
|
||||
@@ -1,44 +1,49 @@
|
||||
|
||||
DROP FUNCTION IF EXISTS fn_shop_get_product_permutation_name;
|
||||
DROP FUNCTION IF EXISTS fn_shop_get_product_permutation_variations_csv;
|
||||
|
||||
DELIMITER //
|
||||
|
||||
CREATE FUNCTION fn_shop_get_product_permutation_name(id_product_permutation INT)
|
||||
CREATE FUNCTION fn_shop_get_product_permutation_variations_csv(id_product_permutation INT)
|
||||
RETURNS VARCHAR(4000)
|
||||
DETERMINISTIC
|
||||
BEGIN
|
||||
DECLARE name VARCHAR(4000);
|
||||
DECLARE csv VARCHAR(4000);
|
||||
|
||||
SET name := (
|
||||
SET csv := (
|
||||
SELECT
|
||||
CONCAT(
|
||||
IFNULL(PC.name, '(No Category)')
|
||||
, ' - '
|
||||
, IFNULL(P.name, '(No Product)')
|
||||
, CASE WHEN P.has_variations = 1 THEN
|
||||
CONCAT(' - ', GROUP_CONCAT(CONCAT(VT.name, ': ', V.name) SEPARATOR ', '))
|
||||
ELSE '' END
|
||||
)
|
||||
FROM Shop_Product_Permutation PP
|
||||
LEFT JOIN Shop_Product P ON PP.id_product = P.id_product
|
||||
LEFT JOIN Shop_Product_Category PC ON P.id_category = PC.id_category
|
||||
LEFT JOIN Shop_Product_Permutation_Variation_Link PPVL ON PP.id_permutation = PPVL.id_permutation
|
||||
LEFT JOIN Shop_Variation V ON PPVL.id_variation = V.id_variation
|
||||
LEFT JOIN Shop_Variation_Type VT ON V.id_type = VT.id_type
|
||||
CASE WHEN P.has_variations = 0 THEN
|
||||
''
|
||||
ELSE
|
||||
GROUP_CONCAT(
|
||||
CONCAT(
|
||||
PV.id_type
|
||||
, ':'
|
||||
, PV.id_variation
|
||||
)
|
||||
SEPARATOR ','
|
||||
)
|
||||
END
|
||||
FROM partsltd_prod.Shop_Product_Permutation PP
|
||||
LEFT JOIN partsltd_prod.Shop_Product P ON PP.id_product = P.id_product
|
||||
LEFT JOIN partsltd_prod.Shop_Product_Permutation_Variation_Link PPVL ON PP.id_permutation = PPVL.id_permutation
|
||||
LEFT JOIN partsltd_prod.Shop_Variation PV ON PPVL.id_variation = PV.id_variation
|
||||
LEFT JOIN partsltd_prod.Shop_Variation_Type PVT ON PV.id_type = PVT.id_type
|
||||
WHERE PP.id_permutation = id_product_permutation
|
||||
GROUP BY PC.id_category, PC.name, P.id_product, P.name, P.has_variations, VT.display_order, VT.name, V.display_order, V.name
|
||||
GROUP BY P.id_product, P.has_variations, PVT.display_order, PVT.name, PV.display_order, PV.name
|
||||
LIMIT 1
|
||||
);
|
||||
|
||||
RETURN name;
|
||||
RETURN csv;
|
||||
END //
|
||||
|
||||
DELIMITER ;
|
||||
|
||||
/*
|
||||
SELECT
|
||||
fn_shop_get_product_permutation_name(
|
||||
fn_shop_get_product_permutation_variations_csv(
|
||||
3 -- id_product_permutation
|
||||
)
|
||||
, fn_shop_get_product_permutation_variations_csv(
|
||||
1 -- id_product_permutation
|
||||
)
|
||||
;
|
||||
/*
|
||||
*/
|
||||
@@ -340,6 +340,7 @@ BEGIN
|
||||
-- Duplicate Variation Ids
|
||||
-- Duplicate Variation Type Codes
|
||||
-- Duplicate Variation Codes
|
||||
-- Variation unit measurement with no count unit measurement
|
||||
|
||||
-- Permissions
|
||||
IF a_debug = 1 THEN
|
||||
|
||||
@@ -403,8 +403,8 @@ BEGIN
|
||||
id_type, code, msg
|
||||
)
|
||||
SELECT
|
||||
v_id_error_type_bad_data,
|
||||
v_code_error_type_bad_data,
|
||||
v_id_type_error_bad_data,
|
||||
v_code_type_error_bad_data,
|
||||
CONCAT(
|
||||
'A valid quantity ordered is required for the following Supplier Purchase Order Item(s): '
|
||||
, GROUP_CONCAT(t_SPOPL.name_error SEPARATOR ', ')
|
||||
@@ -425,8 +425,8 @@ BEGIN
|
||||
id_type, code, msg
|
||||
)
|
||||
SELECT
|
||||
v_id_error_type_bad_data,
|
||||
v_code_error_type_bad_data,
|
||||
v_id_type_error_bad_data,
|
||||
v_code_type_error_bad_data,
|
||||
CONCAT(
|
||||
'A valid quantity received is required for the following Supplier Purchase Order Item(s): '
|
||||
, GROUP_CONCAT(t_SPOPL.name_error, ' - ', t_SPOPL.quantity_received SEPARATOR ', ')
|
||||
@@ -445,8 +445,8 @@ BEGIN
|
||||
id_type, code, msg
|
||||
)
|
||||
SELECT
|
||||
v_id_error_type_bad_data,
|
||||
v_code_error_type_bad_data,
|
||||
v_id_type_error_bad_data,
|
||||
v_code_type_error_bad_data,
|
||||
CONCAT(
|
||||
'A valid delivery latency is required for the following Supplier Purchase Order Item(s): '
|
||||
, GROUP_CONCAT(t_SPOPL.name_error, ' - ', t_SPOPL.latency_delivery_days SEPARATOR ', ')
|
||||
@@ -470,8 +470,8 @@ BEGIN
|
||||
id_type, code, msg
|
||||
)
|
||||
SELECT
|
||||
v_id_error_type_bad_data,
|
||||
v_code_error_type_bad_data,
|
||||
v_id_type_error_bad_data,
|
||||
v_code_type_error_bad_data,
|
||||
CONCAT('Duplicate records: ', GROUP_CONCAT(t_SPOPLC.name_error SEPARATOR ', '))
|
||||
FROM (
|
||||
SELECT
|
||||
@@ -490,8 +490,8 @@ BEGIN
|
||||
id_type, code, msg
|
||||
)
|
||||
SELECT
|
||||
v_id_error_type_bad_data,
|
||||
v_code_error_type_bad_data,
|
||||
v_id_type_error_bad_data,
|
||||
v_code_type_error_bad_data,
|
||||
CONCAT(
|
||||
'There are no items in the following Supplier Purchase Order(s): '
|
||||
, GROUP_CONCAT(t_SPO.name_error SEPARATOR ', ')
|
||||
@@ -513,8 +513,8 @@ BEGIN
|
||||
id_type, code, msg
|
||||
)
|
||||
SELECT
|
||||
v_id_error_type_bad_data,
|
||||
v_code_error_type_bad_data,
|
||||
v_id_type_error_bad_data,
|
||||
v_code_type_error_bad_data,
|
||||
CONCAT(
|
||||
'There is no order for the following Supplier Purchase Order Item(s): '
|
||||
, GROUP_CONCAT(t_SPOPL.name_error SEPARATOR ', ')
|
||||
|
||||
@@ -58,7 +58,7 @@ BEGIN
|
||||
WHERE id_order = 6
|
||||
*/
|
||||
;
|
||||
|
||||
/*
|
||||
INSERT INTO partsltd_prod.Shop_Supplier_Purchase_Order_Product_Link_Temp (
|
||||
id_link
|
||||
, id_order
|
||||
@@ -73,7 +73,8 @@ BEGIN
|
||||
, cost_total_local_VAT_incl
|
||||
, GUID
|
||||
)
|
||||
/* Test 1 - Insert */
|
||||
;
|
||||
/ Test 1 - Insert
|
||||
VALUES (
|
||||
-1
|
||||
, -1
|
||||
@@ -88,6 +89,7 @@ BEGIN
|
||||
, 6
|
||||
, v_guid
|
||||
)
|
||||
*/
|
||||
/* Test 2 - Update
|
||||
SELECT
|
||||
id_link
|
||||
@@ -105,7 +107,7 @@ BEGIN
|
||||
FROM partsltd_prod.Shop_Supplier_Purchase_Order_Product_Link
|
||||
WHERE id_order = 6
|
||||
*/
|
||||
;
|
||||
|
||||
|
||||
COMMIT;
|
||||
|
||||
@@ -151,7 +153,6 @@ DELETE FROM partsltd_prod.Shop_Supplier_Purchase_Order_Product_Link_Temp;
|
||||
|
||||
DROP TABLE IF EXISTS tmp_Msg_Error;
|
||||
|
||||
/*
|
||||
Cannot add or update a child row: a foreign key constraint fails (`partsltd_prod`.`shop_supplier_address`, CONSTRAINT `FK_Shop_Supplier_Address_id_supplier` FOREIGN KEY (`id_supplier`) REFERENCES `shop_supplier` (`id_supplier`) ON UPDATE RESTRICT)
|
||||
|
||||
*/
|
||||
@@ -441,6 +441,7 @@ BEGIN
|
||||
, P.id_product
|
||||
, SPOPL.id_permutation
|
||||
, fn_shop_get_product_permutation_name(SPOPL.id_permutation) AS name_permutation
|
||||
, fn_shop_get_product_permutation_variations_csv(SPOPL.id_permutation) AS csv_id_pairs_variation
|
||||
-- , SPOPL.id_currency_cost
|
||||
, SPOPL.id_unit_quantity
|
||||
, SPOPL.quantity_ordered
|
||||
|
||||
@@ -97,7 +97,6 @@ BEGIN
|
||||
, id_order INT NOT NULL
|
||||
, id_product INT NULL
|
||||
, id_permutation INT NULL
|
||||
, id_currency INT NOT NULL
|
||||
, id_unit_quantity INT NOT NULL
|
||||
, quantity_used FLOAT NOT NULL
|
||||
, quantity_produced FLOAT NULL
|
||||
@@ -171,6 +170,7 @@ BEGIN
|
||||
, price_unit_local_VAT_incl
|
||||
, has_order
|
||||
, is_new
|
||||
, name_error
|
||||
)
|
||||
SELECT
|
||||
IFNULL(MPOPL_T.id_link, 0) AS id_link
|
||||
|
||||
@@ -341,6 +341,7 @@ BEGIN
|
||||
, MPOPL.id_order
|
||||
, MPOPL.id_permutation
|
||||
, fn_shop_get_product_permutation_name(MPOPL.id_permutation) AS name_permutation
|
||||
, fn_shop_get_product_permutation_variations_csv(MPOPL.id_permutation) AS csv_id_pairs_variation
|
||||
, MPOPL.id_unit_quantity
|
||||
, MPOPL.quantity_used
|
||||
, MPOPL.quantity_produced
|
||||
@@ -380,6 +381,7 @@ END //
|
||||
DELIMITER ;;
|
||||
|
||||
|
||||
/*
|
||||
|
||||
CALL p_shop_get_many_manufacturing_purchase_order (
|
||||
1 # a_id_user
|
||||
@@ -392,5 +394,11 @@ CALL p_shop_get_many_manufacturing_purchase_order (
|
||||
, 0 # a_debug
|
||||
);
|
||||
|
||||
/*
|
||||
|
||||
select *
|
||||
from partsltd_prod.shop_manufacturing_purchase_order
|
||||
;
|
||||
select *
|
||||
from partsltd_prod.shop_manufacturing_purchase_order_product_link
|
||||
;
|
||||
*/
|
||||
|
||||
@@ -225,21 +225,60 @@ INSERT INTO Shop_Unit_Measurement (
|
||||
name_singular, name_plural, symbol, is_base_unit, is_unit_of_distance, is_unit_of_mass, is_unit_of_time, is_unit_of_volume
|
||||
)
|
||||
VALUES
|
||||
('metre', 'metres', 'm', 1, 1, 0, 0, 0),
|
||||
('kilogram', 'kilograms', 'kg', 1, 0, 1, 0, 0),
|
||||
('item', 'items', 'x', 0, 0, 0, 0, 0),
|
||||
('hour', 'hours', 'h', 1, 0, 0, 1, 0)
|
||||
('metre', 'metres', 'm', 1, 1, 0, 0, 0)
|
||||
, ('millimetre', 'millimetres', 'mm', 0, 1, 0, 0, 0)
|
||||
, ('kilogram', 'kilograms', 'kg', 1, 0, 1, 0, 0)
|
||||
, ('gram', 'grams', 'g', 0, 0, 1, 0, 0)
|
||||
, ('litre', 'litres', 'L', 0, 0, 0, 0, 1)
|
||||
, ('millilitre', 'millilitres', 'mL', 0, 0, 0, 0, 1)
|
||||
, ('item', 'items', 'x', 0, 0, 0, 0, 0)
|
||||
, ('hour', 'hours', 'h', 1, 0, 0, 1, 0)
|
||||
, ('day', 'days', 'd', 0, 0, 0, 1, 0)
|
||||
;
|
||||
|
||||
/*
|
||||
# Unit of Measurement Conversion
|
||||
INSERT INTO Shop_Unit_Measurement_Conversion (
|
||||
id_unit_derived, id_unit_base, power_unit_base, multiplier_unit_base, increment_unit_base
|
||||
id_unit_derived
|
||||
, id_unit_base
|
||||
, display_order
|
||||
, multiplier_unit_base
|
||||
, increment_unit_base
|
||||
, apply_multiplier_before_increment
|
||||
)
|
||||
VALUES
|
||||
|
||||
VALUES
|
||||
(
|
||||
2 -- id_unit_derived
|
||||
, 1 -- id_unit_base
|
||||
, 1 -- display_order
|
||||
, 0.001 -- multiplier_unit_base
|
||||
, 0 -- increment_unit_base
|
||||
, apply_multiplier_before_increment
|
||||
)
|
||||
, (
|
||||
4 -- id_unit_derived
|
||||
, 3 -- id_unit_base
|
||||
, 1 -- display_order
|
||||
, 0.001 -- multiplier_unit_base
|
||||
, 0 -- increment_unit_base
|
||||
, apply_multiplier_before_increment
|
||||
)
|
||||
, (
|
||||
6 -- id_unit_derived
|
||||
, 5 -- id_unit_base
|
||||
, 1 -- display_order
|
||||
, 0.001 -- multiplier_unit_base
|
||||
, 0 -- increment_unit_base
|
||||
, apply_multiplier_before_increment
|
||||
)
|
||||
, (
|
||||
9 -- id_unit_derived
|
||||
, 8 -- id_unit_base
|
||||
, 1 -- display_order
|
||||
, 24 -- multiplier_unit_base
|
||||
, 0 -- increment_unit_base
|
||||
, apply_multiplier_before_increment
|
||||
)
|
||||
;
|
||||
*/
|
||||
|
||||
|
||||
# Categories
|
||||
@@ -499,15 +538,138 @@ INSERT INTO Shop_Variation_Type (
|
||||
)
|
||||
VALUES
|
||||
(1, 'COLOUR', 'Colour', 'Colours')
|
||||
, (2, 'SIZE', 'Size', 'Sizes')
|
||||
;
|
||||
|
||||
# Variations
|
||||
INSERT INTO Shop_Variation (
|
||||
display_order, id_type, code, name
|
||||
display_order, id_type, code, name, id_unit_measurement, count_unit_measurement
|
||||
)
|
||||
VALUES
|
||||
(1, 1, 'RED', 'Red'),
|
||||
(2, 1, 'BLUE', 'Blue')
|
||||
(1, 1, 'RED', 'Red', NULL, NULL)
|
||||
, (2, 1, 'BLUE', 'Blue', NULL, NULL)
|
||||
, (1, 2, '400ml', '400 millilitres', 6, 400)
|
||||
, (2, 2, '400g', '400 grams', 4, 400)
|
||||
, (3, 2, '410g', '410 grams', 4, 410)
|
||||
, (4, 2, '8g', '8 grams', 4, 8)
|
||||
, (5, 2, '13g', '13 grams', 4, 13)
|
||||
, (6, 2, '27g', '27 grams', 4, 27)
|
||||
, (7, 2, '104g', '104 grams', 4, 104)
|
||||
, (8, 2, '200g', '200 grams', 4, 200)
|
||||
, (9, 2, '92g', '92 grams', 4, 92)
|
||||
, (10, 2, '100g', '100 grams', 4, 100)
|
||||
, (11, 2, '500g', '500 grams', 4, 500)
|
||||
, (12, 2, '250g', '250 grams', 4, 250)
|
||||
, (13, 2, '750g', '750 grams', 4, 750)
|
||||
, (14, 2, '145g', '145 grams', 4, 145)
|
||||
, (15, 2, '340g', '340 grams', 4, 340)
|
||||
, (16, 2, '132g', '132 grams', 4, 132)
|
||||
, (17, 2, '170g', '170 grams', 4, 170)
|
||||
, (18, 2, '700g', '700 grams', 4, 700)
|
||||
, (19, 2, '150g', '150 grams', 4, 150)
|
||||
, (20, 2, '1kg', '1 kilogram', 3, 1)
|
||||
, (21, 2, '2kg', '2 kilograms', 3, 2)
|
||||
, (22, 2, '800ml', '800 millilitres', 6, 800)
|
||||
, (23, 2, '570g', '570 grams', 4, 570)
|
||||
, (24, 2, '300g', '300 grams', 4, 300)
|
||||
, (25, 2, '350g', '350 grams', 4, 350)
|
||||
, (26, 2, '30g', '30 grams', 4, 30)
|
||||
, (27, 2, '1L', '1 litre', 5, 1)
|
||||
, (28, 2, '1.2L', '1.2 litres', 5, 1.2)
|
||||
, (29, 2, '1.8L', '1.8 litres', 5, 1.8)
|
||||
, (30, 2, 'bag of 20', 'bag of 20', 7, 20)
|
||||
, (31, 2, '180ml', '180 millilitres', 6, 180)
|
||||
, (32, 2, '70g', '70 grams', 4, 70)
|
||||
, (33, 2, '60ml', '60 millilitres', 6, 60)
|
||||
, (34, 2, '325g', '325 grams', 4, 325)
|
||||
, (35, 2, 'pack of 50', 'pack of 50', 7, 50)
|
||||
, (36, 2, 'box of 24 (each 5.9g)', 'box of 24 (each 5.9 grams)', 7, 24)
|
||||
, (37, 2, '397g', '397 grams', 4, 397)
|
||||
, (38, 2, '720g', '720 grams', 4, 720)
|
||||
, (39, 2, '454g', '454 grams', 4, 454)
|
||||
, (40, 2, 'pack of 4 (each 37g)', 'pack of 4 (each 37 grams)', 7, 4)
|
||||
, (41, 2, '450g', '450 grams', 4, 450)
|
||||
, (42, 2, '24.6.g', '24.6 grams', 4, 24.6)
|
||||
, (43, 2, '230g', '230 grams', 4, 230)
|
||||
, (44, 2, '37.3g', '37.3 grams', 4, 37.3)
|
||||
, (45, 2, '38.3g', '38.3 grams', 4, 38.3)
|
||||
, (46, 2, '123g', '123 grams', 4, 123)
|
||||
, (47, 2, '266g', '266 grams', 4, 266)
|
||||
, (48, 2, '157g', '157 grams', 4, 157)
|
||||
, (49, 2, '285g', '285 grams', 4, 285)
|
||||
, (50, 2, '700ml', '700 millilitres', 6, 700)
|
||||
, (51, 2, '5L', '5 litres', 5, 5)
|
||||
, (52, 2, '216g', '216 grams', 4, 216)
|
||||
, (53, 2, '320g', '320 grams', 4, 320)
|
||||
, (54, 2, '2L', '2 litres', 5, 2)
|
||||
, (55, 2, '200ml', '200 millilitres', 6, 200)
|
||||
, (56, 2, '250ml', '250 millilitres', 6, 250)
|
||||
, (57, 2, '1 punnet', '1 punnet', 7, 1)
|
||||
, (58, 2, '420g', '420 grams', 4, 420)
|
||||
, (59, 2, '230g', '230 grams', 4, 230)
|
||||
, (60, 2, '465g', '465 grams', 4, 465)
|
||||
, (61, 2, '500ml', '500 millilitres', 6, 500)
|
||||
, (62, 2, '250ml', '250 millilitres', 6, 250)
|
||||
, (63, 2, '238ml', '238 millilitres', 6, 238)
|
||||
, (64, 2, '140ml', '140 millilitres', 6, 140)
|
||||
, (65, 2, '195g', '195 grams', 4, 195)
|
||||
, (66, 2, '1pt', '1 pint', 5, 1)
|
||||
, (67, 2, '570ml', '570 millilitres', 6, 570)
|
||||
, (68, 2, '360g', '360 grams', 4, 360)
|
||||
, (69, 2, '90g', '90 grams', 4, 90)
|
||||
, (70, 2, '800ml', '800 millilitres', 6, 800)
|
||||
, (71, 2, '197g', '197 grams', 4, 197)
|
||||
;
|
||||
|
||||
INSERT INTO partsltd_prod.Shop_Product_Change_Set (
|
||||
comment
|
||||
)
|
||||
VALUES ( 'Update Variation Display Orders' )
|
||||
;
|
||||
WITH RANKED AS (
|
||||
SELECT
|
||||
V.id_variation,
|
||||
RANK() OVER (ORDER BY
|
||||
CONCAT(
|
||||
CASE WHEN V.count_unit_measurement = FLOOR(V.count_unit_measurement) THEN
|
||||
LPAD(CAST(V.count_unit_measurement AS CHAR), 25, '0')
|
||||
ELSE
|
||||
CONCAT(
|
||||
LPAD(
|
||||
CAST(FLOOR(V.count_unit_measurement) AS CHAR)
|
||||
, 25
|
||||
, '0'
|
||||
)
|
||||
, SUBSTRING(
|
||||
CAST(V.count_unit_measurement AS CHAR)
|
||||
FROM LOCATE('.', CAST(V.count_unit_measurement AS CHAR))
|
||||
)
|
||||
)
|
||||
END
|
||||
, ' '
|
||||
, IFNULL(IFNULL(UM.symbol, UM.name_singular), '(No Unit of Measurement)')
|
||||
)
|
||||
) as new_order
|
||||
FROM partsltd_prod.Shop_Variation V
|
||||
INNER JOIN partsltd_prod.Shop_Unit_Measurement UM
|
||||
ON V.id_unit_measurement = UM.id_unit_measurement
|
||||
AND UM.active = 1
|
||||
WHERE
|
||||
V.id_type = 2
|
||||
)
|
||||
UPDATE partsltd_prod.Shop_Variation V
|
||||
INNER JOIN RANKED ON V.id_variation = RANKED.id_variation
|
||||
JOIN (
|
||||
SELECT CS.id_change_set
|
||||
FROM partsltd_prod.Shop_Product_Change_Set CS
|
||||
ORDER BY CS.id_change_set DESC
|
||||
LIMIT 1
|
||||
) CS
|
||||
SET
|
||||
V.display_order = RANKED.new_order
|
||||
, V.id_change_set = CS.id_change_set
|
||||
WHERE
|
||||
V.id_type = 2
|
||||
;
|
||||
|
||||
# Product Permutation Variation Links
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
|
||||
button, .button-submit, input[type="submit"] {
|
||||
font-size: 20px;
|
||||
font-weight: bold;
|
||||
border: 4px solid;
|
||||
border-radius: 2vh;
|
||||
padding: 1vh 2vh 1vh 2vh;
|
||||
margin: 0.5vh;
|
||||
background-color: var(--c_purple_pastel);
|
||||
color: var(--c_purple_dark);
|
||||
border-color: var(--c_purple_dark);
|
||||
}
|
||||
|
||||
button.navContactUs {
|
||||
border: 4px solid var(--c_purple_dark);
|
||||
background-color: var(--c_purple_pastel);
|
||||
color: var(--c_purple_dark) !important;
|
||||
border-radius: 2vh;
|
||||
width: 180px !important;
|
||||
}
|
||||
|
||||
button:hover, input[type="submit"]:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
4
static/css/components/image.css
Normal file
4
static/css/components/image.css
Normal file
@@ -0,0 +1,4 @@
|
||||
|
||||
img, video {
|
||||
border-radius: 3vh;
|
||||
}
|
||||
26
static/css/components/label.css
Normal file
26
static/css/components/label.css
Normal file
@@ -0,0 +1,26 @@
|
||||
|
||||
h1 {
|
||||
font-size: min(24px, calc(1vh * 6));
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: min(20px, calc(1vh * 5));
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: min(16px, calc(1vh * 4));
|
||||
margin-top: 1vh;
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: 13px;
|
||||
margin: 1vh;
|
||||
text-align: center;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
h5 {
|
||||
font-size: 11px;
|
||||
margin: 1vh;
|
||||
}
|
||||
@@ -1,3 +1,83 @@
|
||||
|
||||
|
||||
/* Overlay modal */
|
||||
.overlay {
|
||||
/*
|
||||
display: none;
|
||||
*/
|
||||
position: fixed;
|
||||
top: 15vh;
|
||||
right: 0;
|
||||
width: 100px;
|
||||
/* height: 50%; */
|
||||
background: var(--c_purple_pastel);
|
||||
justify-content: right;
|
||||
align-items: right;
|
||||
align-self: right;
|
||||
z-index: 999;
|
||||
}
|
||||
.overlay.expanded {
|
||||
display: block;
|
||||
}
|
||||
.collapsed {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Hamburger menu overlay */
|
||||
#buttonHamburger:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
#overlayHamburger {
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto;
|
||||
max-height: 80%;
|
||||
}
|
||||
.hamburger {
|
||||
border: 2px solid var(--c_purple_dark);
|
||||
border-radius: 4px;
|
||||
}
|
||||
.hamburger:first-child {
|
||||
border-top-left-radius: 12px;
|
||||
border-top-right-radius: 12px;
|
||||
}
|
||||
.hamburger:last-child {
|
||||
border-bottom-left-radius: 12px;
|
||||
border-bottom-right-radius: 12px;
|
||||
}
|
||||
|
||||
.hamburger > * {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
color: var(--c_purple_dark);
|
||||
font-weight: bold;
|
||||
font-size: 18px;
|
||||
/* height: 18px; */
|
||||
}
|
||||
.hamburger > :hover {
|
||||
background-color: var(--c_purple_light);
|
||||
color: var(--c_purple_dark);
|
||||
}
|
||||
.hamburger > * > * {
|
||||
width: 100%;
|
||||
/*
|
||||
margin-top: 4.5px;
|
||||
margin-bottom: 4.5px;
|
||||
*/
|
||||
}
|
||||
.hamburger > .container {
|
||||
padding-top: 4.5px;
|
||||
padding-bottom: 4.5px;
|
||||
}
|
||||
|
||||
#overlayHamburger .row *:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
/* Confirm overlay */
|
||||
#overlayConfirm {
|
||||
position: absolute;
|
||||
left: 25vw;
|
||||
|
||||
@@ -48,13 +48,6 @@ tr {
|
||||
}
|
||||
*/
|
||||
|
||||
table textarea,
|
||||
table select,
|
||||
table input {
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
table button {
|
||||
margin: 0.25vh;
|
||||
padding: 0.5vh 1vh;
|
||||
@@ -67,3 +60,7 @@ table button.active {
|
||||
tr.delete, tr.delete > td {
|
||||
background-color: red;
|
||||
}
|
||||
|
||||
table div {
|
||||
align-content: center;
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
|
||||
/* Footer */
|
||||
.footer {
|
||||
padding: 1vh;
|
||||
padding-left: 1vw;
|
||||
padding-right: 1vw;
|
||||
text-align: center;
|
||||
margin: 0;
|
||||
height: 8vh !important;
|
||||
overflow-y: auto;
|
||||
background-color: var(--c_purple_pastel);
|
||||
border-top-left-radius: 2.5vh;
|
||||
border-top-right-radius: 2.5vh;
|
||||
position: absolute;
|
||||
/* top: 2.5vh; */
|
||||
bottom: 0;
|
||||
width: 98vw;
|
||||
}
|
||||
|
||||
.footer > h4, h5 {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
@@ -1,5 +1,72 @@
|
||||
|
||||
|
||||
/* Navigation */
|
||||
.topnav {
|
||||
border-bottom-left-radius: 2.5vh;
|
||||
border-bottom-right-radius: 2.5vh;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
flex: 1;
|
||||
flex-direction: row;
|
||||
font-weight: bold;
|
||||
font-size: 1vh;
|
||||
max-height: 15vh;
|
||||
height: 15vh;
|
||||
align-items: flex-start;
|
||||
}
|
||||
.topnav a, .topnav label, .topnav p, .topnav h1 {
|
||||
float: left;
|
||||
display: flex;
|
||||
color: white;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
width: 100%;
|
||||
max-height: 15vh;
|
||||
font-weight: normal;
|
||||
justify-content: center;
|
||||
}
|
||||
.topnav a:hover {
|
||||
background-color: var(--c_purple_light);
|
||||
color: var(--c_purple_dark);
|
||||
}
|
||||
|
||||
.topnav > .container {
|
||||
max-width: 50%;
|
||||
height: 100%;
|
||||
align-items: center;
|
||||
align-self: center;
|
||||
/* align-content: center; */
|
||||
/* width: fit-content; */
|
||||
display: flex;
|
||||
}
|
||||
.topnav select {
|
||||
padding: 1vh;
|
||||
margin: 1vh;
|
||||
border-radius: 1vh;
|
||||
/* background-color: var(--c_purple_light); */
|
||||
color: var(--c_purple_dark);
|
||||
border: 2px solid white;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
}
|
||||
.topnav select .collapsed {
|
||||
width: 5vw;
|
||||
}
|
||||
.topnav select .expanded {
|
||||
width: 25vw;
|
||||
}
|
||||
|
||||
.company-name {
|
||||
font-size: min(28px, calc(1vh * 7));
|
||||
color: white;
|
||||
}
|
||||
@media screen and (max-width: 450px) {
|
||||
.company-name {
|
||||
font-size: min(24px, calc(1vh * 7));
|
||||
}
|
||||
}
|
||||
|
||||
/* Page Filters */
|
||||
button.collapsed {
|
||||
display: block;
|
||||
opacity: 0;
|
||||
|
||||
@@ -9,7 +9,11 @@
|
||||
justify-content: normal;
|
||||
}
|
||||
|
||||
#tableMain select, #tableMain input, #tableMain textarea, #tableMain div {
|
||||
#tableMain * {
|
||||
padding: 0.25vh 0.5vh;
|
||||
}
|
||||
|
||||
#tableMain select, #tableMain input:not([type="checkbox"]), #tableMain textarea, #tableMain div {
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
@@ -20,6 +24,13 @@
|
||||
min-width: 20vh;
|
||||
padding: 0 0.5vh;
|
||||
}
|
||||
#tableMain tbody tr td {
|
||||
height: 5vh;
|
||||
padding-top: 0.5vh;
|
||||
}
|
||||
#tableMain tbody tr:not(:last-of-type) td {
|
||||
padding-bottom: 0.5vh;
|
||||
}
|
||||
#tableMain thead tr th.active, #tableMain tbody tr td.active {
|
||||
width: 6vh;
|
||||
min-width: 6vh;
|
||||
@@ -27,4 +38,4 @@
|
||||
#tableMain tbody tr td.display_order, #tableMain thead tr th.display_order {
|
||||
width: 5vh;
|
||||
min-width: 5vh;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,60 +1,4 @@
|
||||
|
||||
|
||||
/* Base styles *
|
||||
@import 'lib/reset.css';
|
||||
@import 'lib/typography.css';
|
||||
@import 'lib/variables.css';
|
||||
@import 'lib/utils.css';
|
||||
|
||||
/* Layout styles *
|
||||
@import 'layouts/header.css';
|
||||
@import 'layouts/footer.css';
|
||||
@import 'layouts/table-main.css';
|
||||
|
||||
/* Component styles *
|
||||
@import 'components/button.css';
|
||||
@import 'components/card.css';
|
||||
@import 'components/dialog.css';
|
||||
@import 'components/form.css';
|
||||
@import 'components/modal.css';
|
||||
@import 'components/navigation.css';
|
||||
@import 'components/overlay.css';
|
||||
|
||||
/* Section styles *
|
||||
@import 'sections/store.css';
|
||||
*/
|
||||
|
||||
/* Page-specific styles *
|
||||
@import 'pages/page_admin.css';
|
||||
@import 'pages/page_contact.css';
|
||||
@import 'pages/page_home.css';
|
||||
@import 'pages/page_license.css';
|
||||
@import 'pages/page_services.css';
|
||||
@import 'pages/page_store_home.css';
|
||||
@import 'pages/page_store_product_permutations.css';
|
||||
@import 'pages/page_store_stock_items.css';
|
||||
*/
|
||||
|
||||
/* Theme styles *
|
||||
@import 'themes/light.css';
|
||||
/* Uncomment the line below to enable dark theme */
|
||||
/* @import 'themes/dark.css'; */
|
||||
|
||||
|
||||
|
||||
/* Custom styles */
|
||||
/* Add any custom styles or overrides here */
|
||||
|
||||
body {
|
||||
/* Example of using a CSS variable defined in variables.css */
|
||||
background-color: var(--background-color);
|
||||
color: var(--text-color);
|
||||
font-family: var(--font-family-base);
|
||||
}
|
||||
|
||||
/* You can add more global styles here */
|
||||
|
||||
|
||||
:root {
|
||||
/* Declare global variables */
|
||||
--c_purple: #5B29FF;
|
||||
@@ -67,19 +11,14 @@ body {
|
||||
--c_blue_dark: #003ADB;
|
||||
}
|
||||
|
||||
*{
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
script, link {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
html {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
body {
|
||||
background-color: var(--background-color);
|
||||
color: var(--text-color);
|
||||
font-family: var(--font-family-base);
|
||||
font-family: Arial;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
@@ -89,122 +28,14 @@ body {
|
||||
max-height: 100%;
|
||||
}
|
||||
|
||||
/*
|
||||
h1, h2, h3, h4, h5, p, a, label {
|
||||
display: flex;
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
*/
|
||||
|
||||
h1 {
|
||||
font-size: min(24px, calc(1vh * 6));
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: min(20px, calc(1vh * 5));
|
||||
script, link {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: min(16px, calc(1vh * 4));
|
||||
margin-top: 1vh;
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: 13px;
|
||||
margin: 1vh;
|
||||
text-align: center;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
h5 {
|
||||
font-size: 11px;
|
||||
margin: 1vh;
|
||||
}
|
||||
|
||||
/* Style the top navigation bar */
|
||||
.topnav {
|
||||
/* overflow: hidden; */
|
||||
/* background-color: var(--c_purple); */
|
||||
border-bottom-left-radius: 2.5vh;
|
||||
border-bottom-right-radius: 2.5vh;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
flex: 1;
|
||||
flex-direction: row;
|
||||
font-weight: bold;
|
||||
font-size: 1vh;
|
||||
max-height: 15vh;
|
||||
height: 15vh;
|
||||
align-items: flex-start;
|
||||
}
|
||||
|
||||
/* Style the topnav links */
|
||||
.topnav a, .topnav label, .topnav p, .topnav h1 {
|
||||
float: left;
|
||||
display: flex;
|
||||
color: white;
|
||||
text-align: center;
|
||||
/* padding: 14px 16px; */
|
||||
text-decoration: none;
|
||||
width: 100%;
|
||||
max-height: 15vh;
|
||||
font-weight: normal;
|
||||
/* font-size: 20px; */
|
||||
justify-content: center;
|
||||
}
|
||||
/*
|
||||
.topnav a {
|
||||
padding: 3vh 2vw;
|
||||
}
|
||||
*/
|
||||
|
||||
/* Change color on hover */
|
||||
.topnav a:hover {
|
||||
background-color: var(--c_purple_light);
|
||||
color: var(--c_purple_dark);
|
||||
}
|
||||
|
||||
.topnav > .container {
|
||||
max-width: 50%;
|
||||
height: 100%;
|
||||
align-items: center;
|
||||
align-self: center;
|
||||
/* align-content: center; */
|
||||
/* width: fit-content; */
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.topnav select {
|
||||
padding: 1vh;
|
||||
margin: 1vh;
|
||||
border-radius: 1vh;
|
||||
/* background-color: var(--c_purple_light); */
|
||||
color: var(--c_purple_dark);
|
||||
border: 2px solid white;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
}
|
||||
.topnav select .collapsed {
|
||||
width: 5vw;
|
||||
}
|
||||
.topnav select .expanded {
|
||||
width: 25vw;
|
||||
}
|
||||
|
||||
|
||||
.company-name {
|
||||
font-size: min(28px, calc(1vh * 7));
|
||||
color: white;
|
||||
}
|
||||
@media screen and (max-width: 450px) {
|
||||
.company-name {
|
||||
font-size: min(24px, calc(1vh * 7));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#pageBody {
|
||||
height: 69vh !important;
|
||||
padding: 1vh;
|
||||
@@ -222,8 +53,7 @@ h5 {
|
||||
overflow-y: auto;
|
||||
overflow-x: hidden;
|
||||
position: absolute;
|
||||
width: 98vw;
|
||||
|
||||
width: 98vw;
|
||||
}
|
||||
|
||||
.page-body > * {
|
||||
@@ -250,9 +80,7 @@ h5 {
|
||||
margin-top: 0vh;
|
||||
top: 0;
|
||||
}
|
||||
#pageBody > .card:last-of-type {
|
||||
/* margin-bottom: 1vh; */
|
||||
}
|
||||
|
||||
/* Create two unequal columns that floats next to each other *
|
||||
/* Left column *
|
||||
.leftcolumn {
|
||||
@@ -280,16 +108,14 @@ h5 {
|
||||
}
|
||||
*/
|
||||
|
||||
/* Fake image */
|
||||
/* Fake image
|
||||
.fakeimg {
|
||||
background-color: var(--c_purple_light);
|
||||
width: 100%;
|
||||
padding: 20px;
|
||||
}
|
||||
*/
|
||||
|
||||
img, video {
|
||||
border-radius: 3vh;
|
||||
}
|
||||
|
||||
/* header image */
|
||||
img.header-logo {
|
||||
@@ -306,6 +132,7 @@ img.header-logo {
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
/*
|
||||
.container-icon-label {
|
||||
padding: 0;
|
||||
display: flex;
|
||||
@@ -329,6 +156,7 @@ img.header-logo {
|
||||
max-width: 75%;
|
||||
justify-self: left;
|
||||
}
|
||||
*/
|
||||
|
||||
/* Add a card effect for articles */
|
||||
.card {
|
||||
@@ -349,10 +177,6 @@ img.header-logo {
|
||||
padding-right: 2.5vw;
|
||||
}
|
||||
|
||||
.card.subcard {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.header.card {
|
||||
border-radius: 2.5vh;
|
||||
border-bottom-left-radius: 0;
|
||||
@@ -388,36 +212,6 @@ img.header-logo {
|
||||
}
|
||||
|
||||
|
||||
/* Clear floats after the columns
|
||||
.row:after {
|
||||
content: "";
|
||||
display: table;
|
||||
clear: both;
|
||||
}
|
||||
*/
|
||||
/* Footer */
|
||||
.footer {
|
||||
padding: 1vh;
|
||||
padding-left: 1vw;
|
||||
padding-right: 1vw;
|
||||
text-align: center;
|
||||
margin: 0;
|
||||
height: 8vh !important;
|
||||
overflow-y: auto;
|
||||
background-color: var(--c_purple_pastel);
|
||||
border-top-left-radius: 2.5vh;
|
||||
border-top-right-radius: 2.5vh;
|
||||
position: absolute;
|
||||
/* top: 2.5vh; */
|
||||
bottom: 0;
|
||||
width: 98vw;
|
||||
}
|
||||
|
||||
.footer > h4, h5 {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/*
|
||||
/* Responsive layout - when the screen is less than 800px wide, make the two columns stack on top of each other instead of next to each other *
|
||||
@media screen and (max-width: 800px) {
|
||||
@@ -436,9 +230,6 @@ img.header-logo {
|
||||
}
|
||||
*/
|
||||
|
||||
/* input container
|
||||
margin-top: 3vh;
|
||||
*/
|
||||
.container-input {
|
||||
padding: 1vh;
|
||||
display: flex;
|
||||
@@ -460,8 +251,6 @@ img.header-logo {
|
||||
|
||||
.container-input > input, .container-input > textarea {
|
||||
border: 2px solid var(--c_purple);
|
||||
max-width: 66%;
|
||||
min-width: 20%;
|
||||
padding: 1vh;
|
||||
}
|
||||
|
||||
@@ -469,105 +258,6 @@ img.header-logo {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
button, .button-submit, input[type="submit"] {
|
||||
font-size: 20px;
|
||||
font-weight: bold;
|
||||
border: 4px solid;
|
||||
border-radius: 2vh;
|
||||
padding: 1vh 2vh 1vh 2vh;
|
||||
margin: 0.5vh;
|
||||
/*
|
||||
background-color: var(--c_blue_pastel);
|
||||
color: var(--c_blue_dark);
|
||||
border-color: var(--c_blue_dark);
|
||||
*/
|
||||
background-color: var(--c_purple_pastel);
|
||||
color: var(--c_purple_dark);
|
||||
border-color: var(--c_purple_dark);
|
||||
}
|
||||
button.navContactUs {
|
||||
border: 4px solid var(--c_purple_dark);
|
||||
background-color: var(--c_purple_pastel);
|
||||
color: var(--c_purple_dark) !important;
|
||||
border-radius: 2vh;
|
||||
width: 180px !important;
|
||||
}
|
||||
button:hover, input[type="submit"]:hover, #overlayHamburger .row *:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
#buttonHamburger:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
|
||||
/* Overlay modal */
|
||||
.overlay {
|
||||
/*
|
||||
display: none;
|
||||
*/
|
||||
position: fixed;
|
||||
top: 15vh;
|
||||
right: 0;
|
||||
width: 100px;
|
||||
/* height: 50%; */
|
||||
background: var(--c_purple_pastel);
|
||||
justify-content: right;
|
||||
align-items: right;
|
||||
align-self: right;
|
||||
z-index: 999;
|
||||
}
|
||||
.overlay.expanded {
|
||||
display: block;
|
||||
}
|
||||
.collapsed {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#overlayHamburger {
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto;
|
||||
max-height: 80%;
|
||||
}
|
||||
.hamburger {
|
||||
border: 2px solid var(--c_purple_dark);
|
||||
border-radius: 4px;
|
||||
}
|
||||
.hamburger:first-child {
|
||||
border-top-left-radius: 12px;
|
||||
border-top-right-radius: 12px;
|
||||
}
|
||||
.hamburger:last-child {
|
||||
border-bottom-left-radius: 12px;
|
||||
border-bottom-right-radius: 12px;
|
||||
}
|
||||
|
||||
.hamburger > * {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
color: var(--c_purple_dark);
|
||||
font-weight: bold;
|
||||
font-size: 18px;
|
||||
/* height: 18px; */
|
||||
}
|
||||
.hamburger > :hover {
|
||||
background-color: var(--c_purple_light);
|
||||
color: var(--c_purple_dark);
|
||||
}
|
||||
.hamburger > * > * {
|
||||
width: 100%;
|
||||
/*
|
||||
margin-top: 4.5px;
|
||||
margin-bottom: 4.5px;
|
||||
*/
|
||||
}
|
||||
.hamburger > .container {
|
||||
padding-top: 4.5px;
|
||||
padding-bottom: 4.5px;
|
||||
}
|
||||
|
||||
ul {
|
||||
max-width: 90%;
|
||||
@@ -587,7 +277,6 @@ input.dirty, textarea.dirty, select.dirty {
|
||||
}
|
||||
|
||||
|
||||
/* Tables */
|
||||
#pageBody > *, button {
|
||||
font-size: min(12px, calc(1vh * 3));
|
||||
}
|
||||
@@ -12,22 +12,16 @@
|
||||
}
|
||||
|
||||
#email {
|
||||
min-width: 40vw;
|
||||
/* min-width: 40vw; */
|
||||
width: 40vw;
|
||||
}
|
||||
|
||||
/*
|
||||
.content > a {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
text-align: center;
|
||||
#name {
|
||||
width: 50vw;
|
||||
}
|
||||
#message {
|
||||
width: 60vw;
|
||||
}
|
||||
|
||||
.content > a > img, .content > a > h4 {
|
||||
flex: content;
|
||||
margin: 0px;
|
||||
}
|
||||
*/
|
||||
|
||||
input, textarea {
|
||||
max-width: 65vw;
|
||||
}
|
||||
@@ -5,7 +5,8 @@
|
||||
}
|
||||
|
||||
#pageBody .card h1,
|
||||
#pageBody .card h2 {
|
||||
#pageBody .card h2,
|
||||
#pageBody .card p {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
@@ -26,21 +27,3 @@ table td {
|
||||
table th {
|
||||
font-size: min(16px, calc(1vh * 4));
|
||||
}
|
||||
|
||||
/*
|
||||
tr th::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 65px;
|
||||
left: 4%;
|
||||
width: 92%;
|
||||
border-bottom: 2px solid var(--c_purple_dark);
|
||||
}
|
||||
*/
|
||||
|
||||
/*
|
||||
img {
|
||||
max-height: 5vh;
|
||||
max-width: 10vw;
|
||||
}
|
||||
*/
|
||||
23
static/dist/css/core_contact.bundle.css
vendored
23
static/dist/css/core_contact.bundle.css
vendored
@@ -12,25 +12,18 @@
|
||||
}
|
||||
|
||||
#email {
|
||||
min-width: 40vw;
|
||||
/* min-width: 40vw; */
|
||||
width: 40vw;
|
||||
}
|
||||
|
||||
/*
|
||||
.content > a {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
text-align: center;
|
||||
#name {
|
||||
width: 50vw;
|
||||
}
|
||||
#message {
|
||||
width: 60vw;
|
||||
}
|
||||
|
||||
.content > a > img, .content > a > h4 {
|
||||
flex: content;
|
||||
margin: 0px;
|
||||
input, textarea {
|
||||
max-width: 65vw;
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
|
||||
/*# sourceMappingURL=core_contact.bundle.css.map*/
|
||||
20
static/dist/css/core_services.bundle.css
vendored
20
static/dist/css/core_services.bundle.css
vendored
@@ -5,7 +5,8 @@
|
||||
}
|
||||
|
||||
#pageBody .card h1,
|
||||
#pageBody .card h2 {
|
||||
#pageBody .card h2,
|
||||
#pageBody .card p {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
@@ -27,22 +28,5 @@ table th {
|
||||
font-size: min(16px, calc(1vh * 4));
|
||||
}
|
||||
|
||||
/*
|
||||
tr th::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 65px;
|
||||
left: 4%;
|
||||
width: 92%;
|
||||
border-bottom: 2px solid var(--c_purple_dark);
|
||||
}
|
||||
*/
|
||||
|
||||
/*
|
||||
img {
|
||||
max-height: 5vh;
|
||||
max-width: 10vw;
|
||||
}
|
||||
*/
|
||||
|
||||
/*# sourceMappingURL=core_services.bundle.css.map*/
|
||||
452
static/dist/css/main.bundle.css
vendored
452
static/dist/css/main.bundle.css
vendored
@@ -1,60 +1,4 @@
|
||||
|
||||
|
||||
/* Base styles *
|
||||
@import 'lib/reset.css';
|
||||
@import 'lib/typography.css';
|
||||
@import 'lib/variables.css';
|
||||
@import 'lib/utils.css';
|
||||
|
||||
/* Layout styles *
|
||||
@import 'layouts/header.css';
|
||||
@import 'layouts/footer.css';
|
||||
@import 'layouts/table-main.css';
|
||||
|
||||
/* Component styles *
|
||||
@import 'components/button.css';
|
||||
@import 'components/card.css';
|
||||
@import 'components/dialog.css';
|
||||
@import 'components/form.css';
|
||||
@import 'components/modal.css';
|
||||
@import 'components/navigation.css';
|
||||
@import 'components/overlay.css';
|
||||
|
||||
/* Section styles *
|
||||
@import 'sections/store.css';
|
||||
*/
|
||||
|
||||
/* Page-specific styles *
|
||||
@import 'pages/page_admin.css';
|
||||
@import 'pages/page_contact.css';
|
||||
@import 'pages/page_home.css';
|
||||
@import 'pages/page_license.css';
|
||||
@import 'pages/page_services.css';
|
||||
@import 'pages/page_store_home.css';
|
||||
@import 'pages/page_store_product_permutations.css';
|
||||
@import 'pages/page_store_stock_items.css';
|
||||
*/
|
||||
|
||||
/* Theme styles *
|
||||
@import 'themes/light.css';
|
||||
/* Uncomment the line below to enable dark theme */
|
||||
/* @import 'themes/dark.css'; */
|
||||
|
||||
|
||||
|
||||
/* Custom styles */
|
||||
/* Add any custom styles or overrides here */
|
||||
|
||||
body {
|
||||
/* Example of using a CSS variable defined in variables.css */
|
||||
background-color: var(--background-color);
|
||||
color: var(--text-color);
|
||||
font-family: var(--font-family-base);
|
||||
}
|
||||
|
||||
/* You can add more global styles here */
|
||||
|
||||
|
||||
:root {
|
||||
/* Declare global variables */
|
||||
--c_purple: #5B29FF;
|
||||
@@ -67,19 +11,14 @@ body {
|
||||
--c_blue_dark: #003ADB;
|
||||
}
|
||||
|
||||
*{
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
script, link {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
html {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
body {
|
||||
background-color: var(--background-color);
|
||||
color: var(--text-color);
|
||||
font-family: var(--font-family-base);
|
||||
font-family: Arial;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
@@ -89,122 +28,14 @@ body {
|
||||
max-height: 100%;
|
||||
}
|
||||
|
||||
/*
|
||||
h1, h2, h3, h4, h5, p, a, label {
|
||||
display: flex;
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
*/
|
||||
|
||||
h1 {
|
||||
font-size: min(24px, calc(1vh * 6));
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: min(20px, calc(1vh * 5));
|
||||
script, link {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: min(16px, calc(1vh * 4));
|
||||
margin-top: 1vh;
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: 13px;
|
||||
margin: 1vh;
|
||||
text-align: center;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
h5 {
|
||||
font-size: 11px;
|
||||
margin: 1vh;
|
||||
}
|
||||
|
||||
/* Style the top navigation bar */
|
||||
.topnav {
|
||||
/* overflow: hidden; */
|
||||
/* background-color: var(--c_purple); */
|
||||
border-bottom-left-radius: 2.5vh;
|
||||
border-bottom-right-radius: 2.5vh;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
flex: 1;
|
||||
flex-direction: row;
|
||||
font-weight: bold;
|
||||
font-size: 1vh;
|
||||
max-height: 15vh;
|
||||
height: 15vh;
|
||||
align-items: flex-start;
|
||||
}
|
||||
|
||||
/* Style the topnav links */
|
||||
.topnav a, .topnav label, .topnav p, .topnav h1 {
|
||||
float: left;
|
||||
display: flex;
|
||||
color: white;
|
||||
text-align: center;
|
||||
/* padding: 14px 16px; */
|
||||
text-decoration: none;
|
||||
width: 100%;
|
||||
max-height: 15vh;
|
||||
font-weight: normal;
|
||||
/* font-size: 20px; */
|
||||
justify-content: center;
|
||||
}
|
||||
/*
|
||||
.topnav a {
|
||||
padding: 3vh 2vw;
|
||||
}
|
||||
*/
|
||||
|
||||
/* Change color on hover */
|
||||
.topnav a:hover {
|
||||
background-color: var(--c_purple_light);
|
||||
color: var(--c_purple_dark);
|
||||
}
|
||||
|
||||
.topnav > .container {
|
||||
max-width: 50%;
|
||||
height: 100%;
|
||||
align-items: center;
|
||||
align-self: center;
|
||||
/* align-content: center; */
|
||||
/* width: fit-content; */
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.topnav select {
|
||||
padding: 1vh;
|
||||
margin: 1vh;
|
||||
border-radius: 1vh;
|
||||
/* background-color: var(--c_purple_light); */
|
||||
color: var(--c_purple_dark);
|
||||
border: 2px solid white;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
}
|
||||
.topnav select .collapsed {
|
||||
width: 5vw;
|
||||
}
|
||||
.topnav select .expanded {
|
||||
width: 25vw;
|
||||
}
|
||||
|
||||
|
||||
.company-name {
|
||||
font-size: min(28px, calc(1vh * 7));
|
||||
color: white;
|
||||
}
|
||||
@media screen and (max-width: 450px) {
|
||||
.company-name {
|
||||
font-size: min(24px, calc(1vh * 7));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#pageBody {
|
||||
height: 69vh !important;
|
||||
padding: 1vh;
|
||||
@@ -222,8 +53,7 @@ h5 {
|
||||
overflow-y: auto;
|
||||
overflow-x: hidden;
|
||||
position: absolute;
|
||||
width: 98vw;
|
||||
|
||||
width: 98vw;
|
||||
}
|
||||
|
||||
.page-body > * {
|
||||
@@ -250,9 +80,7 @@ h5 {
|
||||
margin-top: 0vh;
|
||||
top: 0;
|
||||
}
|
||||
#pageBody > .card:last-of-type {
|
||||
/* margin-bottom: 1vh; */
|
||||
}
|
||||
|
||||
/* Create two unequal columns that floats next to each other *
|
||||
/* Left column *
|
||||
.leftcolumn {
|
||||
@@ -280,16 +108,14 @@ h5 {
|
||||
}
|
||||
*/
|
||||
|
||||
/* Fake image */
|
||||
/* Fake image
|
||||
.fakeimg {
|
||||
background-color: var(--c_purple_light);
|
||||
width: 100%;
|
||||
padding: 20px;
|
||||
}
|
||||
*/
|
||||
|
||||
img, video {
|
||||
border-radius: 3vh;
|
||||
}
|
||||
|
||||
/* header image */
|
||||
img.header-logo {
|
||||
@@ -306,6 +132,7 @@ img.header-logo {
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
/*
|
||||
.container-icon-label {
|
||||
padding: 0;
|
||||
display: flex;
|
||||
@@ -329,6 +156,7 @@ img.header-logo {
|
||||
max-width: 75%;
|
||||
justify-self: left;
|
||||
}
|
||||
*/
|
||||
|
||||
/* Add a card effect for articles */
|
||||
.card {
|
||||
@@ -349,10 +177,6 @@ img.header-logo {
|
||||
padding-right: 2.5vw;
|
||||
}
|
||||
|
||||
.card.subcard {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.header.card {
|
||||
border-radius: 2.5vh;
|
||||
border-bottom-left-radius: 0;
|
||||
@@ -388,36 +212,6 @@ img.header-logo {
|
||||
}
|
||||
|
||||
|
||||
/* Clear floats after the columns
|
||||
.row:after {
|
||||
content: "";
|
||||
display: table;
|
||||
clear: both;
|
||||
}
|
||||
*/
|
||||
/* Footer */
|
||||
.footer {
|
||||
padding: 1vh;
|
||||
padding-left: 1vw;
|
||||
padding-right: 1vw;
|
||||
text-align: center;
|
||||
margin: 0;
|
||||
height: 8vh !important;
|
||||
overflow-y: auto;
|
||||
background-color: var(--c_purple_pastel);
|
||||
border-top-left-radius: 2.5vh;
|
||||
border-top-right-radius: 2.5vh;
|
||||
position: absolute;
|
||||
/* top: 2.5vh; */
|
||||
bottom: 0;
|
||||
width: 98vw;
|
||||
}
|
||||
|
||||
.footer > h4, h5 {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/*
|
||||
/* Responsive layout - when the screen is less than 800px wide, make the two columns stack on top of each other instead of next to each other *
|
||||
@media screen and (max-width: 800px) {
|
||||
@@ -436,9 +230,6 @@ img.header-logo {
|
||||
}
|
||||
*/
|
||||
|
||||
/* input container
|
||||
margin-top: 3vh;
|
||||
*/
|
||||
.container-input {
|
||||
padding: 1vh;
|
||||
display: flex;
|
||||
@@ -460,8 +251,6 @@ img.header-logo {
|
||||
|
||||
.container-input > input, .container-input > textarea {
|
||||
border: 2px solid var(--c_purple);
|
||||
max-width: 66%;
|
||||
min-width: 20%;
|
||||
padding: 1vh;
|
||||
}
|
||||
|
||||
@@ -469,6 +258,29 @@ img.header-logo {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
|
||||
ul {
|
||||
max-width: 90%;
|
||||
padding: 5px 0 10px 0;
|
||||
}
|
||||
li {
|
||||
text-align: left;
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
|
||||
:not(input,textarea,select).dirty {
|
||||
background-color: var(--c_purple_dark);
|
||||
}
|
||||
input.dirty, textarea.dirty, select.dirty {
|
||||
border-color: var(--c_purple_dark);
|
||||
}
|
||||
|
||||
|
||||
#pageBody > *, button {
|
||||
font-size: min(12px, calc(1vh * 3));
|
||||
}
|
||||
|
||||
button, .button-submit, input[type="submit"] {
|
||||
font-size: 20px;
|
||||
font-weight: bold;
|
||||
@@ -476,15 +288,11 @@ button, .button-submit, input[type="submit"] {
|
||||
border-radius: 2vh;
|
||||
padding: 1vh 2vh 1vh 2vh;
|
||||
margin: 0.5vh;
|
||||
/*
|
||||
background-color: var(--c_blue_pastel);
|
||||
color: var(--c_blue_dark);
|
||||
border-color: var(--c_blue_dark);
|
||||
*/
|
||||
background-color: var(--c_purple_pastel);
|
||||
color: var(--c_purple_dark);
|
||||
border-color: var(--c_purple_dark);
|
||||
}
|
||||
|
||||
button.navContactUs {
|
||||
border: 4px solid var(--c_purple_dark);
|
||||
background-color: var(--c_purple_pastel);
|
||||
@@ -492,14 +300,50 @@ button.navContactUs {
|
||||
border-radius: 2vh;
|
||||
width: 180px !important;
|
||||
}
|
||||
button:hover, input[type="submit"]:hover, #overlayHamburger .row *:hover {
|
||||
|
||||
button:hover, input[type="submit"]:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
#buttonHamburger:hover {
|
||||
text-decoration: none;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
img, video {
|
||||
border-radius: 3vh;
|
||||
}
|
||||
|
||||
|
||||
h1 {
|
||||
font-size: min(24px, calc(1vh * 6));
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: min(20px, calc(1vh * 5));
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: min(16px, calc(1vh * 4));
|
||||
margin-top: 1vh;
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: 13px;
|
||||
margin: 1vh;
|
||||
text-align: center;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
h5 {
|
||||
font-size: 11px;
|
||||
margin: 1vh;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* Overlay modal */
|
||||
.overlay {
|
||||
/*
|
||||
@@ -523,6 +367,10 @@ button:hover, input[type="submit"]:hover, #overlayHamburger .row *:hover {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Hamburger menu overlay */
|
||||
#buttonHamburger:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
#overlayHamburger {
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto;
|
||||
@@ -569,34 +417,11 @@ button:hover, input[type="submit"]:hover, #overlayHamburger .row *:hover {
|
||||
padding-bottom: 4.5px;
|
||||
}
|
||||
|
||||
ul {
|
||||
max-width: 90%;
|
||||
padding: 5px 0 10px 0;
|
||||
}
|
||||
li {
|
||||
text-align: left;
|
||||
font-size: 18px;
|
||||
#overlayHamburger .row *:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
|
||||
:not(input,textarea,select).dirty {
|
||||
background-color: var(--c_purple_dark);
|
||||
}
|
||||
input.dirty, textarea.dirty, select.dirty {
|
||||
border-color: var(--c_purple_dark);
|
||||
}
|
||||
|
||||
|
||||
/* Tables */
|
||||
#pageBody > *, button {
|
||||
font-size: min(12px, calc(1vh * 3));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* Confirm overlay */
|
||||
#overlayConfirm {
|
||||
position: absolute;
|
||||
left: 25vw;
|
||||
@@ -653,13 +478,6 @@ tr {
|
||||
}
|
||||
*/
|
||||
|
||||
table textarea,
|
||||
table select,
|
||||
table input {
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
table button {
|
||||
margin: 0.25vh;
|
||||
padding: 0.5vh 1vh;
|
||||
@@ -673,8 +491,78 @@ tr.delete, tr.delete > td {
|
||||
background-color: red;
|
||||
}
|
||||
|
||||
table div {
|
||||
align-content: center;
|
||||
}
|
||||
|
||||
|
||||
/* Navigation */
|
||||
.topnav {
|
||||
border-bottom-left-radius: 2.5vh;
|
||||
border-bottom-right-radius: 2.5vh;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
flex: 1;
|
||||
flex-direction: row;
|
||||
font-weight: bold;
|
||||
font-size: 1vh;
|
||||
max-height: 15vh;
|
||||
height: 15vh;
|
||||
align-items: flex-start;
|
||||
}
|
||||
.topnav a, .topnav label, .topnav p, .topnav h1 {
|
||||
float: left;
|
||||
display: flex;
|
||||
color: white;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
width: 100%;
|
||||
max-height: 15vh;
|
||||
font-weight: normal;
|
||||
justify-content: center;
|
||||
}
|
||||
.topnav a:hover {
|
||||
background-color: var(--c_purple_light);
|
||||
color: var(--c_purple_dark);
|
||||
}
|
||||
|
||||
.topnav > .container {
|
||||
max-width: 50%;
|
||||
height: 100%;
|
||||
align-items: center;
|
||||
align-self: center;
|
||||
/* align-content: center; */
|
||||
/* width: fit-content; */
|
||||
display: flex;
|
||||
}
|
||||
.topnav select {
|
||||
padding: 1vh;
|
||||
margin: 1vh;
|
||||
border-radius: 1vh;
|
||||
/* background-color: var(--c_purple_light); */
|
||||
color: var(--c_purple_dark);
|
||||
border: 2px solid white;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
}
|
||||
.topnav select .collapsed {
|
||||
width: 5vw;
|
||||
}
|
||||
.topnav select .expanded {
|
||||
width: 25vw;
|
||||
}
|
||||
|
||||
.company-name {
|
||||
font-size: min(28px, calc(1vh * 7));
|
||||
color: white;
|
||||
}
|
||||
@media screen and (max-width: 450px) {
|
||||
.company-name {
|
||||
font-size: min(24px, calc(1vh * 7));
|
||||
}
|
||||
}
|
||||
|
||||
/* Page Filters */
|
||||
button.collapsed {
|
||||
display: block;
|
||||
opacity: 0;
|
||||
@@ -696,6 +584,28 @@ form.filter button.save, form.filter button.button-cancel {
|
||||
width: 12vh;
|
||||
}
|
||||
|
||||
/* Footer */
|
||||
.footer {
|
||||
padding: 1vh;
|
||||
padding-left: 1vw;
|
||||
padding-right: 1vw;
|
||||
text-align: center;
|
||||
margin: 0;
|
||||
height: 8vh !important;
|
||||
overflow-y: auto;
|
||||
background-color: var(--c_purple_pastel);
|
||||
border-top-left-radius: 2.5vh;
|
||||
border-top-right-radius: 2.5vh;
|
||||
position: absolute;
|
||||
/* top: 2.5vh; */
|
||||
bottom: 0;
|
||||
width: 98vw;
|
||||
}
|
||||
|
||||
.footer > h4, h5 {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
#tableMain {
|
||||
overflow-x: auto;
|
||||
@@ -707,7 +617,11 @@ form.filter button.save, form.filter button.button-cancel {
|
||||
justify-content: normal;
|
||||
}
|
||||
|
||||
#tableMain select, #tableMain input, #tableMain textarea {
|
||||
#tableMain * {
|
||||
padding: 0.25vh 0.5vh;
|
||||
}
|
||||
|
||||
#tableMain select, #tableMain input:not([type="checkbox"]), #tableMain textarea, #tableMain div {
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
@@ -718,6 +632,13 @@ form.filter button.save, form.filter button.button-cancel {
|
||||
min-width: 20vh;
|
||||
padding: 0 0.5vh;
|
||||
}
|
||||
#tableMain tbody tr td {
|
||||
height: 5vh;
|
||||
padding-top: 0.5vh;
|
||||
}
|
||||
#tableMain tbody tr:not(:last-of-type) td {
|
||||
padding-bottom: 0.5vh;
|
||||
}
|
||||
#tableMain thead tr th.active, #tableMain tbody tr td.active {
|
||||
width: 6vh;
|
||||
min-width: 6vh;
|
||||
@@ -730,6 +651,7 @@ form.filter button.save, form.filter button.button-cancel {
|
||||
|
||||
|
||||
|
||||
|
||||
:root {
|
||||
--background-color: #ffffff;
|
||||
--text-color: #333333;
|
||||
|
||||
272
static/dist/js/main.bundle.js
vendored
272
static/dist/js/main.bundle.js
vendored
@@ -12,7 +12,7 @@ function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o =
|
||||
function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
|
||||
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
||||
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
||||
var Validation = /*#__PURE__*/function () {
|
||||
var validation_Validation = /*#__PURE__*/function () {
|
||||
function Validation() {
|
||||
_classCallCheck(this, Validation);
|
||||
}
|
||||
@@ -149,6 +149,12 @@ var Validation = /*#__PURE__*/function () {
|
||||
};
|
||||
img.src = url;
|
||||
}
|
||||
}, {
|
||||
key: "toFixedOrDefault",
|
||||
value: function toFixedOrDefault(value, decimalPlaces) {
|
||||
var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
|
||||
return Validation.isValidNumber(value) ? parseFloat(value).toFixed(decimalPlaces) : defaultValue;
|
||||
}
|
||||
}]);
|
||||
}();
|
||||
|
||||
@@ -204,7 +210,7 @@ var DOM = /*#__PURE__*/function () {
|
||||
}, {
|
||||
key: "setElementValueCurrentIfEmpty",
|
||||
value: function setElementValueCurrentIfEmpty(element, data) {
|
||||
if (Validation.isEmpty(DOM.getElementValueCurrent(element))) {
|
||||
if (validation_Validation.isEmpty(DOM.getElementValueCurrent(element))) {
|
||||
DOM.setElementValueCurrent(element, data);
|
||||
}
|
||||
}
|
||||
@@ -216,7 +222,7 @@ var DOM = /*#__PURE__*/function () {
|
||||
}, {
|
||||
key: "getRowFromElement",
|
||||
value: function getRowFromElement(element, flagRow) {
|
||||
var selector = Validation.isEmpty(flagRow) ? 'tr' : 'tr.' + flagRow;
|
||||
var selector = validation_Validation.isEmpty(flagRow) ? 'tr' : 'tr.' + flagRow;
|
||||
return element.closest(selector);
|
||||
}
|
||||
}, {
|
||||
@@ -235,7 +241,7 @@ var DOM = /*#__PURE__*/function () {
|
||||
key: "convertForm2JSON",
|
||||
value: function convertForm2JSON(elementForm) {
|
||||
var dataForm = {};
|
||||
if (Validation.isEmpty(elementForm)) {
|
||||
if (validation_Validation.isEmpty(elementForm)) {
|
||||
return dataForm;
|
||||
}
|
||||
var containersFilter = elementForm.querySelectorAll('.' + flagContainerInput + '.' + flagFilter);
|
||||
@@ -306,7 +312,7 @@ var DOM = /*#__PURE__*/function () {
|
||||
key: "getElementValueCurrent",
|
||||
value: function getElementValueCurrent(element) {
|
||||
var returnVal = '';
|
||||
if (!Validation.isEmpty(element)) {
|
||||
if (!validation_Validation.isEmpty(element)) {
|
||||
if (element.type === "checkbox") {
|
||||
returnVal = element.checked;
|
||||
}
|
||||
@@ -322,15 +328,15 @@ var DOM = /*#__PURE__*/function () {
|
||||
returnVal = element.textContent;
|
||||
}
|
||||
}
|
||||
if (Validation.isEmpty(returnVal)) returnVal = '';
|
||||
if (validation_Validation.isEmpty(returnVal)) returnVal = '';
|
||||
return returnVal;
|
||||
}
|
||||
}, {
|
||||
key: "getElementAttributeValueCurrent",
|
||||
value: function getElementAttributeValueCurrent(element) {
|
||||
if (Validation.isEmpty(element)) return null;
|
||||
if (validation_Validation.isEmpty(element)) return null;
|
||||
return element.getAttribute(attrValueCurrent);
|
||||
if (!Validation.isEmpty(value) && element.type === "checkbox") {
|
||||
if (!validation_Validation.isEmpty(value) && element.type === "checkbox") {
|
||||
value = value === 'true';
|
||||
}
|
||||
return value;
|
||||
@@ -338,9 +344,9 @@ var DOM = /*#__PURE__*/function () {
|
||||
}, {
|
||||
key: "getElementAttributeValuePrevious",
|
||||
value: function getElementAttributeValuePrevious(element) {
|
||||
if (Validation.isEmpty(element)) return null;
|
||||
if (validation_Validation.isEmpty(element)) return null;
|
||||
return element.getAttribute(attrValuePrevious);
|
||||
if (!Validation.isEmpty(value) && element.type === "checkbox") {
|
||||
if (!validation_Validation.isEmpty(value) && element.type === "checkbox") {
|
||||
value = value === 'true';
|
||||
}
|
||||
return value;
|
||||
@@ -404,7 +410,7 @@ var DOM = /*#__PURE__*/function () {
|
||||
}, {
|
||||
key: "createOption",
|
||||
value: function createOption(optionJson) {
|
||||
if (Validation.isEmpty(optionJson)) optionJson = {
|
||||
if (validation_Validation.isEmpty(optionJson)) optionJson = {
|
||||
text: 'Select',
|
||||
value: 0
|
||||
};
|
||||
@@ -2181,7 +2187,7 @@ var BusinessObjects = /*#__PURE__*/function () {
|
||||
}, {
|
||||
key: "getObjectText",
|
||||
value: function getObjectText(objectJson) {
|
||||
return objectJson[objectJson[flagNameAttrOptionText]];
|
||||
return objectJson == null ? '' : objectJson[objectJson[flagNameAttrOptionText]];
|
||||
}
|
||||
}, {
|
||||
key: "getListObjectsFromIdDictAndCsv",
|
||||
@@ -2300,6 +2306,8 @@ function base_table_setPrototypeOf(t, e) { return base_table_setPrototypeOf = Ob
|
||||
|
||||
|
||||
var TableBasePage = /*#__PURE__*/function (_BasePage) {
|
||||
// static hash
|
||||
// static attrIdRowObject
|
||||
// callFilterTableContent
|
||||
// callSaveTableContent
|
||||
|
||||
@@ -2361,7 +2369,7 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
|
||||
var filters = dataPage[flagFormFilters];
|
||||
var formFilters = this.getFormFilters();
|
||||
var filtersDefault = DOM.convertForm2JSON(formFilters);
|
||||
if (!Validation.areEqualDicts(filters, filtersDefault)) {
|
||||
if (!validation_Validation.areEqualDicts(filters, filtersDefault)) {
|
||||
this.callFilterTableContent(filters);
|
||||
}
|
||||
}
|
||||
@@ -2430,7 +2438,7 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
|
||||
row.remove();
|
||||
});
|
||||
var rowsJson = response.data[flagRows];
|
||||
if (!Validation.isEmpty(rowsJson) && rowsJson.every(function (row) {
|
||||
if (!validation_Validation.isEmpty(rowsJson) && rowsJson.every(function (row) {
|
||||
return row.hasOwnProperty('display_order');
|
||||
})) {
|
||||
rowsJson = rowsJson.sort(function (a, b) {
|
||||
@@ -2500,7 +2508,6 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
|
||||
value: function getTableRecords() {
|
||||
var _this6 = this;
|
||||
var dirtyOnly = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
||||
// let table = TableBasePage.getTableMain();
|
||||
var records = [];
|
||||
var record;
|
||||
document.querySelectorAll(idTableMain + ' > tbody > tr').forEach(function (row) {
|
||||
@@ -2567,13 +2574,13 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
|
||||
});
|
||||
var countRows = document.querySelectorAll(idTableMain + ' > tbody > tr').length;
|
||||
row.setAttribute(this.constructor.attrIdRowObject, -1 - countRows);
|
||||
this.initialiseRowNew(row);
|
||||
this.initialiseRowNew(tbody, row);
|
||||
tbody.appendChild(row);
|
||||
this.hookupTableMain();
|
||||
}
|
||||
}, {
|
||||
key: "initialiseRowNew",
|
||||
value: function initialiseRowNew(row) {
|
||||
value: function initialiseRowNew(tbody, row) {
|
||||
if (this.constructor === TableBasePage) {
|
||||
throw new Error("Subclass of TableBasePage must implement method initialiseRowNew().");
|
||||
}
|
||||
@@ -2608,6 +2615,19 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
|
||||
});
|
||||
_rowBlank.setAttribute(this.constructor.attrIdRowObject, -1 - countRows);
|
||||
}
|
||||
}, {
|
||||
key: "initialiseSliderDisplayOrderRowNew",
|
||||
value: function initialiseSliderDisplayOrderRowNew(tbody, row) {
|
||||
// let tdSelector = ':scope > tr > td.' + flagDisplayOrder;
|
||||
// let tbody = document.querySelector('table' + (Validation.isEmpty(flagTable) ? '' : '.' + flagTable) + ' > tbody');
|
||||
var slidersDisplayOrder = tbody.querySelectorAll(':scope > tr > td.' + flagDisplayOrder + ' input.' + flagSlider);
|
||||
var maxDisplayOrder = 0;
|
||||
slidersDisplayOrder.forEach(function (slider) {
|
||||
maxDisplayOrder = Math.max(maxDisplayOrder, parseFloat(DOM.getElementValueCurrent(slider)));
|
||||
});
|
||||
var sliderDisplayOrder = row.querySelector('td.' + flagDisplayOrder + ' .' + flagSlider);
|
||||
DOM.setElementValuesCurrentAndPrevious(sliderDisplayOrder, maxDisplayOrder + 1);
|
||||
}
|
||||
}, {
|
||||
key: "hookupSlidersDisplayOrderTable",
|
||||
value: function hookupSlidersDisplayOrderTable() {
|
||||
@@ -2723,7 +2743,7 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
|
||||
key: "handleChangeNestedElementCellTable",
|
||||
value: function handleChangeNestedElementCellTable(event, element) {
|
||||
var wasDirtyParentRows = this.getAllIsDirtyRowsInParentTree(element);
|
||||
var wasDirtyElement = DOM.isElementDirty(element);
|
||||
var wasDirtyElement = element.classList.contains(flagDirty);
|
||||
var isDirtyElement = DOM.updateAndCheckIsElementDirty(element);
|
||||
if (_verbose) {
|
||||
console.log({
|
||||
@@ -2758,7 +2778,7 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
|
||||
}, {
|
||||
key: "cascadeChangedIsDirtyNestedElementCellTable",
|
||||
value: function cascadeChangedIsDirtyNestedElementCellTable(element, isDirtyElement, wasDirtyParentRows) {
|
||||
if (Validation.isEmpty(wasDirtyParentRows)) return;
|
||||
if (validation_Validation.isEmpty(wasDirtyParentRows)) return;
|
||||
var td = DOM.getCellFromElement(element);
|
||||
var isDirtyTd = isDirtyElement || DOM.hasDirtyChildrenContainer(tr);
|
||||
DOM.handleDirtyElement(td, isDirtyTd);
|
||||
@@ -2867,13 +2887,13 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
|
||||
var handleClickRowNew = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (event, element) {
|
||||
_this11.handleClickAddRowTable(event, element);
|
||||
};
|
||||
var selectorButton = 'table' + (Validation.isEmpty(flagTable) ? '' : '.' + flagTable) + ' > tbody > tr > td.' + flagActive + ' button';
|
||||
var selectorButton = 'table' + (validation_Validation.isEmpty(flagTable) ? '' : '.' + flagTable) + ' > tbody > tr > td.' + flagActive + ' button';
|
||||
var selectorButtonDelete = selectorButton + '.' + flagDelete;
|
||||
var selectorButtonUndelete = selectorButton + ':not(.' + flagDelete + ')';
|
||||
console.log("hookupFieldsActive: ", selectorButtonDelete, selectorButtonUndelete);
|
||||
this.hookupButtonsRowDelete(selectorButtonDelete, selectorButtonUndelete);
|
||||
this.hookupButtonsRowUndelete(selectorButtonDelete, selectorButtonUndelete);
|
||||
this.hookupEventHandler("click", 'table' + (Validation.isEmpty(flagTable) ? '' : '.' + flagTable) + ' > thead > tr > th.' + flagActive + ' button', function (event, button) {
|
||||
this.hookupEventHandler("click", 'table' + (validation_Validation.isEmpty(flagTable) ? '' : '.' + flagTable) + ' > thead > tr > th.' + flagActive + ' button', function (event, button) {
|
||||
handleClickRowNew(event, button);
|
||||
});
|
||||
}
|
||||
@@ -2996,7 +3016,6 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
|
||||
});
|
||||
tdNew.appendChild(ddl);
|
||||
var ddlSelector = cellSelector + ' select';
|
||||
debugger;
|
||||
ddlHookup(ddlSelector);
|
||||
}
|
||||
/*
|
||||
@@ -3074,8 +3093,8 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
|
||||
key: "hookupFieldsProductPermutationVariation",
|
||||
value: function hookupFieldsProductPermutationVariation() {
|
||||
this.hookupPreviewsProductPermutationVariation();
|
||||
this.hookupDdlsProductPermutationVariation();
|
||||
this.hookupDdlsProductPermutationVariationType();
|
||||
this.hookupDdlsProductPermutationVariation();
|
||||
this.hookupButtonsProductPermutationVariationAddDelete();
|
||||
}
|
||||
}, {
|
||||
@@ -3091,7 +3110,7 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
|
||||
value: function handleClickProductPermutationVariationsPreview(event, element) {
|
||||
var _this20 = this;
|
||||
var tblVariations = element.querySelector('table.' + flagProductVariations);
|
||||
if (!Validation.isEmpty(tblVariations)) return;
|
||||
if (!validation_Validation.isEmpty(tblVariations)) return;
|
||||
this.toggleColumnCollapsed(flagProductVariations, false);
|
||||
var permutationVariations = this.getElementProductVariations(element);
|
||||
tblVariations = document.createElement("table");
|
||||
@@ -3116,7 +3135,7 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
|
||||
thead.appendChild(tr);
|
||||
tblVariations.appendChild(thead);
|
||||
var tbody = document.createElement("tbody");
|
||||
if (!Validation.isEmpty(permutationVariations)) {
|
||||
if (!validation_Validation.isEmpty(permutationVariations)) {
|
||||
permutationVariations.forEach(function (permutationVariation, index) {
|
||||
_this20.addProductPermutationVariationRow(tbody, permutationVariation);
|
||||
});
|
||||
@@ -3148,7 +3167,7 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
|
||||
var permutationVariations = element.getAttribute(attrValueCurrent);
|
||||
var objVariations = [];
|
||||
var parts, new_variation, new_variation_type;
|
||||
if (!Validation.isEmpty(permutationVariations)) {
|
||||
if (!validation_Validation.isEmpty(permutationVariations)) {
|
||||
permutationVariations = permutationVariations.split(',');
|
||||
permutationVariations.forEach(function (variation) {
|
||||
parts = variation.split(':');
|
||||
@@ -3261,26 +3280,54 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
|
||||
tr.appendChild(tdDelete);
|
||||
tbody.appendChild(tr);
|
||||
}
|
||||
}, {
|
||||
key: "hookupDdlsProductPermutationVariation",
|
||||
value: function hookupDdlsProductPermutationVariation() {
|
||||
this.hookupTableCellDdls(idTableMain + ' td.' + flagProductVariations + ' td.' + flagProductVariation);
|
||||
}
|
||||
}, {
|
||||
key: "hookupDdlsProductPermutationVariationType",
|
||||
value: function hookupDdlsProductPermutationVariationType() {
|
||||
this.hookupTableCellDdls(idTableMain + ' td.' + flagProductVariations + ' td.' + flagProductVariationType);
|
||||
var _this21 = this;
|
||||
this.hookupTableCellDdls(idTableMain + ' td.' + flagProductVariations + ' td.' + flagProductVariationType + ' select', function (event, ddlVariationType) {
|
||||
_this21.handleChangeDdlProductVariationOrVariationType(event, ddlVariationType);
|
||||
var idVariationTypeSelected = DOM.getElementValueCurrent(ddlVariationType);
|
||||
var row = DOM.getRowFromElement(ddlVariationType);
|
||||
var tdVariation = row.querySelector('td.' + flagProductVariation);
|
||||
tdVariation.dispatchEvent(new Event('click'));
|
||||
var ddlVariation = row.querySelector('td.' + flagProductVariation + ' select');
|
||||
ddlVariation.innerHTML = '';
|
||||
ddlVariation.appendChild(DOM.createOption(null));
|
||||
var optionJson, option;
|
||||
var variationType = productVariationTypes[idVariationTypeSelected];
|
||||
if (variationType == null) variationType = base_table_defineProperty({}, flagProductVariations, []);
|
||||
variationType[flagProductVariations].forEach(function (variation) {
|
||||
optionJson = BusinessObjects.getOptionJsonFromObjectJson(variation);
|
||||
option = DOM.createOption(optionJson);
|
||||
ddlVariation.appendChild(option);
|
||||
});
|
||||
_this21.handleChangeDdlProductVariationOrVariationType(event, ddlVariation);
|
||||
});
|
||||
}
|
||||
}, {
|
||||
key: "handleChangeDdlProductVariationOrVariationType",
|
||||
value: function handleChangeDdlProductVariationOrVariationType(event, element) {
|
||||
this.updateProductPermutationVariations(element);
|
||||
this.handleChangeNestedElementCellTable(event, element);
|
||||
}
|
||||
}, {
|
||||
key: "hookupDdlsProductPermutationVariation",
|
||||
value: function hookupDdlsProductPermutationVariation() {
|
||||
var _this22 = this;
|
||||
this.hookupTableCellDdls(idTableMain + ' td.' + flagProductVariations + ' td.' + flagProductVariation, function (event, ddlVariation) {
|
||||
_this22.handleChangeDdlProductVariationOrVariationType(event, ddlVariation);
|
||||
});
|
||||
}
|
||||
}, {
|
||||
key: "hookupButtonsProductPermutationVariationAddDelete",
|
||||
value: function hookupButtonsProductPermutationVariationAddDelete() {
|
||||
var _this21 = this;
|
||||
var _this23 = this;
|
||||
var selectorButton = idTableMain + ' td.' + flagProductVariations + ' tr.' + flagProductVariation + ' button';
|
||||
var selectorButtonDelete = selectorButton + '.' + flagDelete;
|
||||
var selectorButtonUndelete = selectorButton + '.' + flagAdd;
|
||||
this.hookupButtonsRowDelete(selectorButtonDelete, selectorButtonUndelete, function (event, element) {
|
||||
_this21.handleClickButtonRowDelete(event, element);
|
||||
_this21.updateProductPermutationVariations(element);
|
||||
_this23.handleClickButtonRowDelete(event, element);
|
||||
_this23.updateProductPermutationVariations(element);
|
||||
});
|
||||
this.hookupButtonsRowUndelete(selectorButtonDelete, selectorButtonUndelete);
|
||||
this.hookupButtonsProductPermutationVariationAdd();
|
||||
@@ -3288,9 +3335,9 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
|
||||
}, {
|
||||
key: "hookupButtonsProductPermutationVariationAdd",
|
||||
value: function hookupButtonsProductPermutationVariationAdd() {
|
||||
var _this22 = this;
|
||||
var _this24 = this;
|
||||
this.hookupEventHandler("click", idTableMain + ' td.' + flagProductVariations + ' button.' + flagAdd, function (event, element) {
|
||||
_this22.handleClickButtonProductPermutationVariationAdd(event, element);
|
||||
_this24.handleClickButtonProductPermutationVariationAdd(event, element);
|
||||
});
|
||||
}
|
||||
}, {
|
||||
@@ -3307,21 +3354,22 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
|
||||
value: function updateProductPermutationVariations(element) {
|
||||
var variationsCell = element.closest('td.' + flagProductVariations);
|
||||
var variationPairsString = this.getProductPermutationVariationsText(variationsCell);
|
||||
variationsCell.setAttribute(attrValueCurrent, variationPairsString);
|
||||
DOM.setElementAttributeValueCurrent(variationsCell, variationPairsString);
|
||||
DOM.isElementDirty(variationsCell);
|
||||
}
|
||||
}, {
|
||||
key: "getProductPermutationVariationsText",
|
||||
value: function getProductPermutationVariationsText(variationsTd) {
|
||||
var rows = variationsTd.querySelectorAll('tr');
|
||||
var rows = variationsTd.querySelectorAll(':scope tbody tr');
|
||||
var variationPairsString = '';
|
||||
var ddlVariationType, ddlVariation, idVariationType, idVariation;
|
||||
rows.forEach(function (row, index) {
|
||||
ddlVariationType = row.querySelector('td select.' + flagProductVariationType);
|
||||
ddlVariation = row.querySelector('td select.' + flagProductVariation);
|
||||
idVariationType = ddlVariationType.getAttribute(attrValueCurrent);
|
||||
idVariation = ddlVariation.getAttribute(attrValueCurrent);
|
||||
variationPairsString += idVariationType + ':' + idVariation + ',';
|
||||
ddlVariationType = row.querySelector(':scope td select.' + flagProductVariationType);
|
||||
ddlVariation = row.querySelector(':scope td select.' + flagProductVariation);
|
||||
idVariationType = DOM.getElementValueCurrent(ddlVariationType);
|
||||
idVariation = DOM.getElementValueCurrent(ddlVariation);
|
||||
if (variationPairsString != '') variationPairsString += ',';
|
||||
variationPairsString += idVariationType + ':' + idVariation;
|
||||
});
|
||||
return variationPairsString;
|
||||
}
|
||||
@@ -3411,7 +3459,7 @@ export class PageStoreProductCategories extends TableBasePage {
|
||||
hookupFilters() {}
|
||||
loadRowTable(rowJson) {}
|
||||
getJsonRow(row) {}
|
||||
initialiseRowNew(row) {}
|
||||
initialiseRowNew(tbody, row) {}
|
||||
hookupTableMain() {}
|
||||
isDirtyRow(row) {}
|
||||
leave() {}
|
||||
@@ -3897,7 +3945,7 @@ var StoreMixinPage = /*#__PURE__*/function () {
|
||||
}], [{
|
||||
key: "validateBasket",
|
||||
value: function validateBasket(basket) {
|
||||
return Validation.isEmpty(basket) && Validation.dictHasKey(basket, keyItems) && Validation.dictHasKey(basket, keyIsIncludedVAT) && Validation.dictHasKey(basket, keyIdCurrency) && Validation.dictHasKey(basket, keyIdRegionDelivery);
|
||||
return validation_Validation.isEmpty(basket) && validation_Validation.dictHasKey(basket, keyItems) && validation_Validation.dictHasKey(basket, keyIsIncludedVAT) && validation_Validation.dictHasKey(basket, keyIdCurrency) && validation_Validation.dictHasKey(basket, keyIdRegionDelivery);
|
||||
}
|
||||
}, {
|
||||
key: "makeNewBasket",
|
||||
@@ -4102,8 +4150,8 @@ var PageStoreManufacturingPurchaseOrders = /*#__PURE__*/function (_TableBasePage
|
||||
}
|
||||
}, {
|
||||
key: "initialiseRowNew",
|
||||
value: function initialiseRowNew(row) {
|
||||
manufacturing_purchase_orders_superPropGet(PageStoreManufacturingPurchaseOrders, "initialiseRowNew", this, 3)([row]);
|
||||
value: function initialiseRowNew(tbody, row) {
|
||||
manufacturing_purchase_orders_superPropGet(PageStoreManufacturingPurchaseOrders, "initialiseRowNew", this, 3)([tbody, row]);
|
||||
}
|
||||
}, {
|
||||
key: "hookupTableMain",
|
||||
@@ -4658,15 +4706,9 @@ var PageStoreProductCategories = /*#__PURE__*/function (_TableBasePage) {
|
||||
}
|
||||
}, {
|
||||
key: "initialiseRowNew",
|
||||
value: function initialiseRowNew(row) {
|
||||
value: function initialiseRowNew(tbody, row) {
|
||||
if (row == null) return;
|
||||
var slidersDisplayOrder = document.querySelectorAll('td.' + flagDisplayOrder + ' input.' + flagSlider);
|
||||
var maxDisplayOrder = 0;
|
||||
slidersDisplayOrder.forEach(function (slider) {
|
||||
maxDisplayOrder = Math.max(maxDisplayOrder, parseFloat(DOM.getElementValueCurrent(slider)));
|
||||
});
|
||||
var sliderDisplayOrder = row.querySelector('td.' + flagDisplayOrder + ' .' + flagSlider);
|
||||
DOM.setElementValuesCurrentAndPrevious(sliderDisplayOrder, maxDisplayOrder + 1);
|
||||
this.initialiseSliderDisplayOrderRowNew(tbody, row);
|
||||
}
|
||||
}, {
|
||||
key: "hookupTableMain",
|
||||
@@ -4926,13 +4968,13 @@ var PageStoreProductPermutations = /*#__PURE__*/function (_TableBasePage) {
|
||||
}
|
||||
}, {
|
||||
key: "initialiseRowNew",
|
||||
value: function initialiseRowNew(row) {
|
||||
value: function initialiseRowNew(tbody, row) {
|
||||
var ddlCategoryFilter = document.querySelector(idFormFilters + ' #' + attrIdProductCategory);
|
||||
var idProductCategoryFilter = DOM.getElementValueCurrent(ddlCategoryFilter);
|
||||
var hasCategoryFilter = !(Validation.isEmpty(idProductCategoryFilter) || idProductCategoryFilter == '0');
|
||||
var hasCategoryFilter = !(validation_Validation.isEmpty(idProductCategoryFilter) || idProductCategoryFilter == '0');
|
||||
var ddlProductFilter = document.querySelector(idFormFilters + ' #' + attrIdProduct);
|
||||
var idProductFilter = DOM.getElementValueCurrent(ddlProductFilter);
|
||||
var hasProductFilter = !(Validation.isEmpty(idProductFilter) || idProductFilter == '0');
|
||||
var hasProductFilter = !(validation_Validation.isEmpty(idProductFilter) || idProductFilter == '0');
|
||||
if (_verbose) {
|
||||
console.log("initialiseRowNew: ", row);
|
||||
console.log({
|
||||
@@ -5266,15 +5308,9 @@ var PageStoreProducts = /*#__PURE__*/function (_TableBasePage) {
|
||||
}
|
||||
}, {
|
||||
key: "initialiseRowNew",
|
||||
value: function initialiseRowNew(row) {
|
||||
value: function initialiseRowNew(tbody, row) {
|
||||
if (row == null) return;
|
||||
var slidersDisplayOrder = document.querySelectorAll('td.' + flagDisplayOrder + ' input.' + flagSlider);
|
||||
var maxDisplayOrder = 0;
|
||||
slidersDisplayOrder.forEach(function (slider) {
|
||||
maxDisplayOrder = Math.max(maxDisplayOrder, parseFloat(DOM.getElementValueCurrent(slider)));
|
||||
});
|
||||
var sliderDisplayOrder = row.querySelector('td.' + flagDisplayOrder + ' .' + flagSlider);
|
||||
DOM.setElementValuesCurrentAndPrevious(sliderDisplayOrder, maxDisplayOrder + 1);
|
||||
this.initialiseSliderDisplayOrderRowNew(tbody, row);
|
||||
}
|
||||
}, {
|
||||
key: "hookupTableMain",
|
||||
@@ -5401,7 +5437,7 @@ var PageStoreProductVariations = /*#__PURE__*/function (_TableBasePage) {
|
||||
var buttonActive = row.querySelector('td.' + flagActive + ' button');
|
||||
var jsonRow = {};
|
||||
jsonRow[attrIdProductVariationType] = row.getAttribute(attrIdProductVariationType);
|
||||
if (Validation.isEmpty(jsonRow[attrIdProductVariationType])) jsonRow[attrIdProductVariationType] = -1;
|
||||
if (validation_Validation.isEmpty(jsonRow[attrIdProductVariationType])) jsonRow[attrIdProductVariationType] = -1;
|
||||
jsonRow[flagDisplayOrder] = DOM.getElementAttributeValueCurrent(inputDisplayOrder);
|
||||
jsonRow[flagCode] = DOM.getElementAttributeValueCurrent(textareaCode);
|
||||
jsonRow[flagName] = DOM.getElementAttributeValueCurrent(textareaName);
|
||||
@@ -5431,7 +5467,7 @@ var PageStoreProductVariations = /*#__PURE__*/function (_TableBasePage) {
|
||||
var buttonActive = tr.querySelector('td.' + flagActive + ' button');
|
||||
var jsonRow = {};
|
||||
jsonRow[attrIdProductVariation] = tr.getAttribute(attrIdProductVariation);
|
||||
if (Validation.isEmpty(jsonRow[attrIdProductVariation])) jsonRow[attrIdProductVariation] = -1 - indexRow;
|
||||
if (validation_Validation.isEmpty(jsonRow[attrIdProductVariation])) jsonRow[attrIdProductVariation] = -1 - indexRow;
|
||||
jsonRow[attrIdProductVariationType] = tr.getAttribute(attrIdProductVariationType);
|
||||
jsonRow[flagDisplayOrder] = DOM.getElementAttributeValueCurrent(inputDisplayOrder);
|
||||
jsonRow[flagCode] = DOM.getElementAttributeValueCurrent(textareaCode);
|
||||
@@ -5441,8 +5477,9 @@ var PageStoreProductVariations = /*#__PURE__*/function (_TableBasePage) {
|
||||
}
|
||||
}, {
|
||||
key: "initialiseRowNew",
|
||||
value: function initialiseRowNew(row) {
|
||||
product_variations_superPropGet(PageStoreProductVariations, "initialiseRowNew", this, 3)([row]);
|
||||
value: function initialiseRowNew(tbody, row) {
|
||||
product_variations_superPropGet(PageStoreProductVariations, "initialiseRowNew", this, 3)([tbody, row]);
|
||||
this.initialiseSliderDisplayOrderRowNew(tbody, row);
|
||||
}
|
||||
}, {
|
||||
key: "hookupTableMain",
|
||||
@@ -5473,9 +5510,10 @@ var PageStoreProductVariations = /*#__PURE__*/function (_TableBasePage) {
|
||||
key: "hookupProductVariationsPreviews",
|
||||
value: function hookupProductVariationsPreviews() {
|
||||
var _this3 = this;
|
||||
this.hookupEventHandler("click", idTableMain + ' td.' + flagProductVariations, function (event, td) {
|
||||
this.hookupEventHandler("click", idTableMain + ' td.' + flagProductVariations + ' div', function (event, element) {
|
||||
var td = DOM.getCellFromElement(element);
|
||||
if (!td.classList.contains(flagCollapsed)) return;
|
||||
_this3.handleClickProductVariationsPreview(event, td);
|
||||
_this3.handleClickProductVariationsPreview(event, element);
|
||||
});
|
||||
}
|
||||
}, {
|
||||
@@ -5485,12 +5523,10 @@ var PageStoreProductVariations = /*#__PURE__*/function (_TableBasePage) {
|
||||
if (_verbose) {
|
||||
console.log("click order items preview");
|
||||
}
|
||||
this.toggleColumnHeaderCollapsed(flagProductVariations, false);
|
||||
element.classList.remove(flagCollapsed);
|
||||
var row = DOM.getRowFromElement(element);
|
||||
var idProductVariationType = row.getAttribute(attrIdProductVariationType);
|
||||
if (idProductVariationType == null || idProductVariationType < 1) return;
|
||||
var productVariationType = productVariationTypes[idProductVariationType];
|
||||
if (productVariationType == null) productVariationType = product_variations_defineProperty({}, flagProductVariations, []);
|
||||
var tblProductVariations = document.createElement("table");
|
||||
tblProductVariations.classList.add(flagProductVariations);
|
||||
var thead = document.createElement("thead");
|
||||
@@ -5526,10 +5562,12 @@ var PageStoreProductVariations = /*#__PURE__*/function (_TableBasePage) {
|
||||
var cell = DOM.getCellFromElement(element);
|
||||
var cellNew = cell.cloneNode(false);
|
||||
cellNew.appendChild(tblProductVariations);
|
||||
cellNew.classList.remove(flagCollapsed);
|
||||
row.replaceChild(cellNew, cell);
|
||||
if (_verbose) {
|
||||
console.log("tblProductVariations: ", tblProductVariations);
|
||||
}
|
||||
this.toggleColumnHeaderCollapsed(flagProductVariations, false);
|
||||
this.hookupFieldsProductVariation();
|
||||
}
|
||||
}, {
|
||||
@@ -5619,7 +5657,7 @@ var PageStoreProductVariations = /*#__PURE__*/function (_TableBasePage) {
|
||||
}]);
|
||||
}(TableBasePage);
|
||||
product_variations_defineProperty(PageStoreProductVariations, "hash", hashPageStoreProductVariations);
|
||||
product_variations_defineProperty(PageStoreProductVariations, "attrIdRowObject", attrIdProductVariation);
|
||||
product_variations_defineProperty(PageStoreProductVariations, "attrIdRowObject", attrIdProductVariationType);
|
||||
|
||||
;// CONCATENATED MODULE: ./static/js/pages/store/stock_items.js
|
||||
function stock_items_typeof(o) { "@babel/helpers - typeof"; return stock_items_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, stock_items_typeof(o); }
|
||||
@@ -5762,14 +5800,14 @@ var PageStoreStockItems = /*#__PURE__*/function (_TableBasePage) {
|
||||
}
|
||||
}, {
|
||||
key: "initialiseRowNew",
|
||||
value: function initialiseRowNew(row) {
|
||||
stock_items_superPropGet(PageStoreStockItems, "initialiseRowNew", this, 3)([row]);
|
||||
value: function initialiseRowNew(tbody, row) {
|
||||
stock_items_superPropGet(PageStoreStockItems, "initialiseRowNew", this, 3)([tbody, row]);
|
||||
var ddlCategoryFilter = document.querySelector(idFormFilters + ' #' + attrIdProductCategory);
|
||||
var idProductCategoryFilter = DOM.getElementValueCurrent(ddlCategoryFilter);
|
||||
var hasCategoryFilter = !(Validation.isEmpty(idProductCategoryFilter) || idProductCategoryFilter == '0');
|
||||
var hasCategoryFilter = !(validation_Validation.isEmpty(idProductCategoryFilter) || idProductCategoryFilter == '0');
|
||||
var ddlProductFilter = document.querySelector(idFormFilters + ' #' + attrIdProduct);
|
||||
var idProductFilter = DOM.getElementValueCurrent(ddlProductFilter);
|
||||
var hasProductFilter = !(Validation.isEmpty(idProductFilter) || idProductFilter == '0');
|
||||
var hasProductFilter = !(validation_Validation.isEmpty(idProductFilter) || idProductFilter == '0');
|
||||
if (_verbose) {
|
||||
console.log("initialiseRowNew: ", row);
|
||||
console.log({
|
||||
@@ -6150,8 +6188,8 @@ var PageStoreSuppliers = /*#__PURE__*/function (_TableBasePage) {
|
||||
}
|
||||
}, {
|
||||
key: "initialiseRowNew",
|
||||
value: function initialiseRowNew(row) {
|
||||
suppliers_superPropGet(PageStoreSuppliers, "initialiseRowNew", this, 3)([row]);
|
||||
value: function initialiseRowNew(tbody, row) {
|
||||
suppliers_superPropGet(PageStoreSuppliers, "initialiseRowNew", this, 3)([tbody, row]);
|
||||
}
|
||||
}, {
|
||||
key: "hookupTableMain",
|
||||
@@ -6539,6 +6577,19 @@ var ProductPermutation = /*#__PURE__*/function () {
|
||||
});
|
||||
return preview;
|
||||
}
|
||||
}, {
|
||||
key: "getProductVariationsIdCsvFromVariationTypeList",
|
||||
value: function getProductVariationsIdCsvFromVariationTypeList(variationTypeList) {
|
||||
var csvVariations = '';
|
||||
if (Validation.isEmpty(variationTypeList)) return csvVariations;
|
||||
variationTypeList.forEach(function (variationType) {
|
||||
if (csvVariations.length > 0) {
|
||||
csvVariations += ',';
|
||||
}
|
||||
csvVariations += variationType[attrIdProductVariationType] + ':' + variationType[flagProductVariations][0][attrIdProductVariation];
|
||||
});
|
||||
return csvVariations;
|
||||
}
|
||||
}]);
|
||||
}();
|
||||
|
||||
@@ -6654,8 +6705,8 @@ var PageStoreSupplierPurchaseOrders = /*#__PURE__*/function (_TableBasePage) {
|
||||
}
|
||||
}, {
|
||||
key: "initialiseRowNew",
|
||||
value: function initialiseRowNew(row) {
|
||||
supplier_purchase_orders_superPropGet(PageStoreSupplierPurchaseOrders, "initialiseRowNew", this, 3)([row]);
|
||||
value: function initialiseRowNew(tbody, row) {
|
||||
supplier_purchase_orders_superPropGet(PageStoreSupplierPurchaseOrders, "initialiseRowNew", this, 3)([tbody, row]);
|
||||
}
|
||||
}, {
|
||||
key: "hookupTableMain",
|
||||
@@ -6700,9 +6751,10 @@ var PageStoreSupplierPurchaseOrders = /*#__PURE__*/function (_TableBasePage) {
|
||||
key: "hookupOrderItemsPreviews",
|
||||
value: function hookupOrderItemsPreviews() {
|
||||
var _this3 = this;
|
||||
this.hookupEventHandler("click", idTableMain + ' td.' + flagOrderItems, function (event, td) {
|
||||
this.hookupEventHandler("click", idTableMain + ' > tbody > tr > td.' + flagOrderItems + ' > div', function (event, div) {
|
||||
var td = DOM.getCellFromElement(div);
|
||||
if (!td.classList.contains(flagCollapsed)) return;
|
||||
_this3.handleClickOrderItemsPreview(event, td);
|
||||
_this3.handleClickOrderItemsPreview(event, div);
|
||||
});
|
||||
}
|
||||
}, {
|
||||
@@ -6713,11 +6765,16 @@ var PageStoreSupplierPurchaseOrders = /*#__PURE__*/function (_TableBasePage) {
|
||||
console.log("click order items preview");
|
||||
}
|
||||
this.toggleColumnHeaderCollapsed(flagOrderItems, false);
|
||||
element.classList.remove(flagCollapsed);
|
||||
/*
|
||||
let td = DOM.getCellFromElement(element);
|
||||
td.classList.remove(flagCollapsed);
|
||||
*/
|
||||
|
||||
var row = DOM.getRowFromElement(element);
|
||||
var idSupplierPurchaseOrder = row.getAttribute(attrIdSupplierPurchaseOrder);
|
||||
if (idSupplierPurchaseOrder == null || idSupplierPurchaseOrder < 1) return;
|
||||
// if (idSupplierPurchaseOrder == null || idSupplierPurchaseOrder < 1) return;
|
||||
var supplierPurchaseOrder = supplierPurchaseOrders[idSupplierPurchaseOrder];
|
||||
if (supplierPurchaseOrder == null) supplierPurchaseOrder = supplier_purchase_orders_defineProperty({}, flagOrderItems, []);
|
||||
var tblOrderItems = document.createElement("table");
|
||||
tblOrderItems.classList.add(flagOrderItems);
|
||||
var thead = document.createElement("thead");
|
||||
@@ -6792,6 +6849,7 @@ var PageStoreSupplierPurchaseOrders = /*#__PURE__*/function (_TableBasePage) {
|
||||
var cell = DOM.getCellFromElement(element);
|
||||
var cellNew = cell.cloneNode(false);
|
||||
cellNew.appendChild(tblOrderItems);
|
||||
cellNew.classList.remove(flagCollapsed);
|
||||
row.replaceChild(cellNew, cell);
|
||||
if (_verbose) {
|
||||
console.log("tblOrderItems: ", tblOrderItems);
|
||||
@@ -6836,10 +6894,10 @@ var PageStoreSupplierPurchaseOrders = /*#__PURE__*/function (_TableBasePage) {
|
||||
var tdVariations = document.createElement("td");
|
||||
tdVariations.classList.add(flagProductVariations);
|
||||
tdVariations.classList.add(flagCollapsed);
|
||||
DOM.setElementAttributesValuesCurrentAndPrevious(tdVariations, orderItem[attrIdProductVariation]);
|
||||
DOM.setElementAttributesValuesCurrentAndPrevious(tdVariations, orderItem[flagProductVariations]);
|
||||
var divVariations = document.createElement("div");
|
||||
divVariations.classList.add(flagProductVariations);
|
||||
DOM.setElementAttributesValuesCurrentAndPrevious(divVariations, orderItem[attrIdProductVariation]);
|
||||
DOM.setElementAttributesValuesCurrentAndPrevious(divVariations, orderItem[flagProductVariations]);
|
||||
// divVariations.textContent = orderItem[flagProductVariations];
|
||||
var variationsText = ProductPermutation.getProductVariationsPreviewFromIdCsv(orderItem[flagProductVariations]);
|
||||
divVariations.textContent = variationsText;
|
||||
@@ -6887,13 +6945,13 @@ var PageStoreSupplierPurchaseOrders = /*#__PURE__*/function (_TableBasePage) {
|
||||
tdCostUnitLocalVatExcl.classList.add(flagCostUnitLocalVatExcl);
|
||||
var divCostUnitLocalVatExcl = document.createElement("div");
|
||||
divCostUnitLocalVatExcl.classList.add(flagCostUnitLocalVatExcl);
|
||||
DOM.setElementValuesCurrentAndPrevious(divCostUnitLocalVatExcl, orderItem[flagCostUnitLocalVatExcl].toFixed(3));
|
||||
DOM.setElementValuesCurrentAndPrevious(divCostUnitLocalVatExcl, validation_Validation.toFixedOrDefault(orderItem[flagCostUnitLocalVatExcl], 3, null));
|
||||
tdCostUnitLocalVatExcl.appendChild(divCostUnitLocalVatExcl);
|
||||
var tdCostUnitLocalVatIncl = document.createElement("td");
|
||||
tdCostUnitLocalVatIncl.classList.add(flagCostUnitLocalVatIncl);
|
||||
var divCostUnitLocalVatIncl = document.createElement("div");
|
||||
divCostUnitLocalVatIncl.classList.add(flagCostUnitLocalVatIncl);
|
||||
DOM.setElementValuesCurrentAndPrevious(divCostUnitLocalVatIncl, orderItem[flagCostUnitLocalVatIncl].toFixed(3));
|
||||
DOM.setElementValuesCurrentAndPrevious(divCostUnitLocalVatIncl, validation_Validation.toFixedOrDefault(orderItem[flagCostUnitLocalVatIncl], 3, null));
|
||||
tdCostUnitLocalVatIncl.appendChild(divCostUnitLocalVatIncl);
|
||||
var tdLatencyDeliveryDays = document.createElement("td");
|
||||
tdLatencyDeliveryDays.classList.add(flagLatencyDeliveryDays);
|
||||
@@ -6958,17 +7016,13 @@ var PageStoreSupplierPurchaseOrders = /*#__PURE__*/function (_TableBasePage) {
|
||||
hookupFieldsOrderItemProductVariations() {
|
||||
this.hookupEventHandler("click", idTableMain + ' td.' + flagOrderItems + ' td.' + flagProductVariations, (event, element) => this.handleClickProductPermutationVariationsPreview(event, element));
|
||||
}
|
||||
hookupDdlsProductPermutationVariation() {
|
||||
this.hookupTableCellDdls(idTableMain + ' td.' + flagProductVariations + ' td.' + flagProductVariation);
|
||||
}
|
||||
hookupDdlsProductPermutationVariationType() {
|
||||
this.hookupTableCellDdls(idTableMain + ' td.' + flagProductVariations + ' td.' + flagProductVariationType);
|
||||
}
|
||||
*/
|
||||
}, {
|
||||
key: "hookupDdlsProductPermutationVariation",
|
||||
value: function hookupDdlsProductPermutationVariation() {
|
||||
this.hookupTableCellDdls(idTableMain + ' td.' + flagProductVariations + ' td.' + flagProductVariation);
|
||||
}
|
||||
}, {
|
||||
key: "hookupDdlsProductPermutationVariationType",
|
||||
value: function hookupDdlsProductPermutationVariationType() {
|
||||
this.hookupTableCellDdls(idTableMain + ' td.' + flagProductVariations + ' td.' + flagProductVariationType);
|
||||
}
|
||||
}, {
|
||||
key: "hookupFieldsOrderItemUnitQuantity",
|
||||
value: function hookupFieldsOrderItemUnitQuantity() {
|
||||
@@ -7849,6 +7903,18 @@ window.app = app;
|
||||
|
||||
})();
|
||||
|
||||
// This entry need to be wrapped in an IIFE because it need to be isolated against other entry modules.
|
||||
(() => {
|
||||
// extracted by mini-css-extract-plugin
|
||||
|
||||
})();
|
||||
|
||||
// This entry need to be wrapped in an IIFE because it need to be isolated against other entry modules.
|
||||
(() => {
|
||||
// extracted by mini-css-extract-plugin
|
||||
|
||||
})();
|
||||
|
||||
/******/ })()
|
||||
;
|
||||
//# sourceMappingURL=main.bundle.js.map
|
||||
@@ -22,7 +22,7 @@ export default class BusinessObjects {
|
||||
}
|
||||
*/
|
||||
static getObjectText(objectJson) {
|
||||
return objectJson[objectJson[flagNameAttrOptionText]];
|
||||
return objectJson == null ? '' : objectJson[objectJson[flagNameAttrOptionText]];
|
||||
}
|
||||
static getListObjectsFromIdDictAndCsv(idDict, idCsv) {
|
||||
let listObjects = [];
|
||||
|
||||
@@ -31,4 +31,16 @@ export default class ProductPermutation {
|
||||
});
|
||||
return preview;
|
||||
}
|
||||
|
||||
static getProductVariationsIdCsvFromVariationTypeList(variationTypeList) {
|
||||
let csvVariations = '';
|
||||
if (Validation.isEmpty(variationTypeList)) return csvVariations;
|
||||
variationTypeList.forEach((variationType) => {
|
||||
if (csvVariations.length > 0) {
|
||||
csvVariations += ',';
|
||||
}
|
||||
csvVariations += variationType[attrIdProductVariationType] + ':' + variationType[flagProductVariations][0][attrIdProductVariation];
|
||||
});
|
||||
return csvVariations;
|
||||
}
|
||||
}
|
||||
@@ -151,4 +151,8 @@ export default class Validation {
|
||||
img.onerror = function() { callback(false); };
|
||||
img.src = url;
|
||||
}
|
||||
|
||||
static toFixedOrDefault(value, decimalPlaces, defaultValue = null) {
|
||||
return Validation.isValidNumber(value) ? parseFloat(value).toFixed(decimalPlaces) : defaultValue;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,6 +12,8 @@ import OverlayConfirm from "../components/common/temporary/overlay_confirm.js";
|
||||
import OverlayError from "../components/common/temporary/overlay_error.js";
|
||||
|
||||
export default class TableBasePage extends BasePage {
|
||||
// static hash
|
||||
// static attrIdRowObject
|
||||
// callFilterTableContent
|
||||
// callSaveTableContent
|
||||
|
||||
@@ -169,7 +171,6 @@ export default class TableBasePage extends BasePage {
|
||||
.catch(error => console.error('Error:', error));
|
||||
}
|
||||
getTableRecords(dirtyOnly = false) {
|
||||
// let table = TableBasePage.getTableMain();
|
||||
let records = [];
|
||||
let record;
|
||||
document.querySelectorAll(idTableMain + ' > tbody > tr').forEach((row) => {
|
||||
@@ -226,11 +227,11 @@ export default class TableBasePage extends BasePage {
|
||||
});
|
||||
let countRows = document.querySelectorAll(idTableMain + ' > tbody > tr').length;
|
||||
row.setAttribute(this.constructor.attrIdRowObject, -1 - countRows);
|
||||
this.initialiseRowNew(row);
|
||||
this.initialiseRowNew(tbody, row);
|
||||
tbody.appendChild(row);
|
||||
this.hookupTableMain();
|
||||
}
|
||||
initialiseRowNew(row) {
|
||||
initialiseRowNew(tbody, row) {
|
||||
if (this.constructor === TableBasePage) {
|
||||
throw new Error("Subclass of TableBasePage must implement method initialiseRowNew().");
|
||||
}
|
||||
@@ -257,6 +258,17 @@ export default class TableBasePage extends BasePage {
|
||||
});
|
||||
_rowBlank.setAttribute(this.constructor.attrIdRowObject, -1 - countRows);
|
||||
}
|
||||
initialiseSliderDisplayOrderRowNew(tbody, row) {
|
||||
// let tdSelector = ':scope > tr > td.' + flagDisplayOrder;
|
||||
// let tbody = document.querySelector('table' + (Validation.isEmpty(flagTable) ? '' : '.' + flagTable) + ' > tbody');
|
||||
let slidersDisplayOrder = tbody.querySelectorAll(':scope > tr > td.' + flagDisplayOrder + ' input.' + flagSlider);
|
||||
let maxDisplayOrder = 0;
|
||||
slidersDisplayOrder.forEach((slider) => {
|
||||
maxDisplayOrder = Math.max(maxDisplayOrder, parseFloat(DOM.getElementValueCurrent(slider)));
|
||||
});
|
||||
let sliderDisplayOrder = row.querySelector('td.' + flagDisplayOrder + ' .' + flagSlider);
|
||||
DOM.setElementValuesCurrentAndPrevious(sliderDisplayOrder, maxDisplayOrder + 1);
|
||||
}
|
||||
hookupSlidersDisplayOrderTable() {
|
||||
let selectorDisplayOrder = idTableMain + ' tbody tr td.' + flagDisplayOrder + ' input.' + flagSlider + '.' + flagDisplayOrder;
|
||||
/*
|
||||
@@ -362,7 +374,7 @@ export default class TableBasePage extends BasePage {
|
||||
*/
|
||||
handleChangeNestedElementCellTable(event, element) {
|
||||
let wasDirtyParentRows = this.getAllIsDirtyRowsInParentTree(element);
|
||||
let wasDirtyElement = DOM.isElementDirty(element);
|
||||
let wasDirtyElement = element.classList.contains(flagDirty);
|
||||
let isDirtyElement = DOM.updateAndCheckIsElementDirty(element);
|
||||
if (_verbose) { console.log({isDirtyElement, wasDirtyElement, wasDirtyParentRows}); }
|
||||
if (isDirtyElement != wasDirtyElement) {
|
||||
@@ -577,7 +589,6 @@ export default class TableBasePage extends BasePage {
|
||||
});
|
||||
tdNew.appendChild(ddl);
|
||||
let ddlSelector = cellSelector + ' select';
|
||||
debugger;
|
||||
ddlHookup(ddlSelector);
|
||||
}
|
||||
/*
|
||||
@@ -638,8 +649,8 @@ export default class TableBasePage extends BasePage {
|
||||
}
|
||||
hookupFieldsProductPermutationVariation() {
|
||||
this.hookupPreviewsProductPermutationVariation();
|
||||
this.hookupDdlsProductPermutationVariation();
|
||||
this.hookupDdlsProductPermutationVariationType();
|
||||
this.hookupDdlsProductPermutationVariation();
|
||||
this.hookupButtonsProductPermutationVariationAddDelete();
|
||||
}
|
||||
hookupPreviewsProductPermutationVariation() {
|
||||
@@ -826,11 +837,38 @@ export default class TableBasePage extends BasePage {
|
||||
tr.appendChild(tdDelete);
|
||||
tbody.appendChild(tr);
|
||||
}
|
||||
hookupDdlsProductPermutationVariation() {
|
||||
this.hookupTableCellDdls(idTableMain + ' td.' + flagProductVariations + ' td.' + flagProductVariation);
|
||||
}
|
||||
hookupDdlsProductPermutationVariationType() {
|
||||
this.hookupTableCellDdls(idTableMain + ' td.' + flagProductVariations + ' td.' + flagProductVariationType);
|
||||
this.hookupTableCellDdls(
|
||||
idTableMain + ' td.' + flagProductVariations + ' td.' + flagProductVariationType + ' select'
|
||||
, (event, ddlVariationType) => {
|
||||
this.handleChangeDdlProductVariationOrVariationType(event, ddlVariationType);
|
||||
let idVariationTypeSelected = DOM.getElementValueCurrent(ddlVariationType);
|
||||
let row = DOM.getRowFromElement(ddlVariationType);
|
||||
let tdVariation = row.querySelector('td.' + flagProductVariation);
|
||||
tdVariation.dispatchEvent(new Event('click'));
|
||||
let ddlVariation = row.querySelector('td.' + flagProductVariation + ' select');
|
||||
ddlVariation.innerHTML = '';
|
||||
ddlVariation.appendChild(DOM.createOption(null));
|
||||
let optionJson, option;
|
||||
let variationType = productVariationTypes[idVariationTypeSelected];
|
||||
if (variationType == null) variationType = {
|
||||
[flagProductVariations]: [],
|
||||
};
|
||||
variationType[flagProductVariations].forEach((variation) => {
|
||||
optionJson = BusinessObjects.getOptionJsonFromObjectJson(variation);
|
||||
option = DOM.createOption(optionJson);
|
||||
ddlVariation.appendChild(option);
|
||||
});
|
||||
this.handleChangeDdlProductVariationOrVariationType(event, ddlVariation);
|
||||
}
|
||||
);
|
||||
}
|
||||
handleChangeDdlProductVariationOrVariationType(event, element) {
|
||||
this.updateProductPermutationVariations(element);
|
||||
this.handleChangeNestedElementCellTable(event, element);
|
||||
}
|
||||
hookupDdlsProductPermutationVariation() {
|
||||
this.hookupTableCellDdls(idTableMain + ' td.' + flagProductVariations + ' td.' + flagProductVariation, (event, ddlVariation) => { this.handleChangeDdlProductVariationOrVariationType(event, ddlVariation); });
|
||||
}
|
||||
hookupButtonsProductPermutationVariationAddDelete() {
|
||||
let selectorButton = idTableMain + ' td.' + flagProductVariations + ' tr.' + flagProductVariation + ' button';
|
||||
@@ -860,19 +898,20 @@ export default class TableBasePage extends BasePage {
|
||||
updateProductPermutationVariations(element) {
|
||||
let variationsCell = element.closest('td.' + flagProductVariations);
|
||||
let variationPairsString = this.getProductPermutationVariationsText(variationsCell);
|
||||
variationsCell.setAttribute(attrValueCurrent, variationPairsString);
|
||||
DOM.setElementAttributeValueCurrent(variationsCell, variationPairsString);
|
||||
DOM.isElementDirty(variationsCell);
|
||||
}
|
||||
getProductPermutationVariationsText(variationsTd) {
|
||||
let rows = variationsTd.querySelectorAll('tr');
|
||||
let rows = variationsTd.querySelectorAll(':scope tbody tr');
|
||||
let variationPairsString = '';
|
||||
let ddlVariationType, ddlVariation, idVariationType, idVariation;
|
||||
rows.forEach((row, index) => {
|
||||
ddlVariationType = row.querySelector('td select.' + flagProductVariationType);
|
||||
ddlVariation = row.querySelector('td select.' + flagProductVariation);
|
||||
idVariationType = ddlVariationType.getAttribute(attrValueCurrent);
|
||||
idVariation = ddlVariation.getAttribute(attrValueCurrent);
|
||||
variationPairsString += idVariationType + ':' + idVariation + ',';
|
||||
ddlVariationType = row.querySelector(':scope td select.' + flagProductVariationType);
|
||||
ddlVariation = row.querySelector(':scope td select.' + flagProductVariation);
|
||||
idVariationType = DOM.getElementValueCurrent(ddlVariationType);
|
||||
idVariation = DOM.getElementValueCurrent(ddlVariation);
|
||||
if (variationPairsString != '') variationPairsString += ',';
|
||||
variationPairsString += idVariationType + ':' + idVariation;
|
||||
});
|
||||
return variationPairsString;
|
||||
}
|
||||
@@ -936,7 +975,7 @@ export class PageStoreProductCategories extends TableBasePage {
|
||||
hookupFilters() {}
|
||||
loadRowTable(rowJson) {}
|
||||
getJsonRow(row) {}
|
||||
initialiseRowNew(row) {}
|
||||
initialiseRowNew(tbody, row) {}
|
||||
hookupTableMain() {}
|
||||
isDirtyRow(row) {}
|
||||
leave() {}
|
||||
|
||||
@@ -83,8 +83,8 @@ export default class PageStoreManufacturingPurchaseOrders extends TableBasePage
|
||||
|
||||
return jsonRow;
|
||||
}
|
||||
initialiseRowNew(row) {
|
||||
super.initialiseRowNew(row);
|
||||
initialiseRowNew(tbody, row) {
|
||||
super.initialiseRowNew(tbody, row);
|
||||
}
|
||||
|
||||
hookupTableMain() {
|
||||
|
||||
@@ -84,15 +84,9 @@ export default class PageStoreProductCategories extends TableBasePage {
|
||||
jsonCategory[flagDisplayOrder] = DOM.getElementAttributeValueCurrent(sliderDisplayOrder);
|
||||
return jsonCategory;
|
||||
}
|
||||
initialiseRowNew(row) {
|
||||
initialiseRowNew(tbody, row) {
|
||||
if (row == null) return;
|
||||
let slidersDisplayOrder = document.querySelectorAll('td.' + flagDisplayOrder + ' input.' + flagSlider);
|
||||
let maxDisplayOrder = 0;
|
||||
slidersDisplayOrder.forEach((slider) => {
|
||||
maxDisplayOrder = Math.max(maxDisplayOrder, parseFloat(DOM.getElementValueCurrent(slider)));
|
||||
});
|
||||
let sliderDisplayOrder = row.querySelector('td.' + flagDisplayOrder + ' .' + flagSlider);
|
||||
DOM.setElementValuesCurrentAndPrevious(sliderDisplayOrder, maxDisplayOrder + 1);
|
||||
this.initialiseSliderDisplayOrderRowNew(tbody, row);
|
||||
}
|
||||
|
||||
hookupTableMain() {
|
||||
|
||||
@@ -176,7 +176,7 @@ export default class PageStoreProductPermutations extends TableBasePage {
|
||||
jsonRow[flagActive] = checkboxActive.getAttribute(attrValueCurrent);
|
||||
return jsonRow;
|
||||
}
|
||||
initialiseRowNew(row) {
|
||||
initialiseRowNew(tbody, row) {
|
||||
let ddlCategoryFilter = document.querySelector(idFormFilters + ' #' + attrIdProductCategory);
|
||||
let idProductCategoryFilter = DOM.getElementValueCurrent(ddlCategoryFilter);
|
||||
let hasCategoryFilter = !(Validation.isEmpty(idProductCategoryFilter) || idProductCategoryFilter == '0');
|
||||
|
||||
@@ -10,7 +10,7 @@ import StoreTableMixinPage from "./mixin_table.js";
|
||||
|
||||
export default class PageStoreProductVariations extends TableBasePage {
|
||||
static hash = hashPageStoreProductVariations;
|
||||
static attrIdRowObject = attrIdProductVariation;
|
||||
static attrIdRowObject = attrIdProductVariationType;
|
||||
callFilterTableContent = API.getProductVariationsByFilters;
|
||||
callSaveTableContent = API.saveProductVariations;
|
||||
|
||||
@@ -82,8 +82,9 @@ export default class PageStoreProductVariations extends TableBasePage {
|
||||
|
||||
return jsonRow;
|
||||
}
|
||||
initialiseRowNew(row) {
|
||||
super.initialiseRowNew(row);
|
||||
initialiseRowNew(tbody, row) {
|
||||
super.initialiseRowNew(tbody, row);
|
||||
this.initialiseSliderDisplayOrderRowNew(tbody, row);
|
||||
}
|
||||
|
||||
hookupTableMain() {
|
||||
@@ -106,20 +107,20 @@ export default class PageStoreProductVariations extends TableBasePage {
|
||||
this.hookupFieldsProductVariationActive();
|
||||
}
|
||||
hookupProductVariationsPreviews() {
|
||||
this.hookupEventHandler("click", idTableMain + ' td.' + flagProductVariations, (event, td) => {
|
||||
this.hookupEventHandler("click", idTableMain + ' td.' + flagProductVariations + ' div', (event, element) => {
|
||||
let td = DOM.getCellFromElement(element);
|
||||
if (!td.classList.contains(flagCollapsed)) return;
|
||||
this.handleClickProductVariationsPreview(event, td);
|
||||
this.handleClickProductVariationsPreview(event, element);
|
||||
});
|
||||
}
|
||||
handleClickProductVariationsPreview(event, element) {
|
||||
if (_verbose) { console.log("click order items preview"); }
|
||||
this.toggleColumnHeaderCollapsed(flagProductVariations, false);
|
||||
element.classList.remove(flagCollapsed);
|
||||
|
||||
let row = DOM.getRowFromElement(element);
|
||||
let idProductVariationType = row.getAttribute(attrIdProductVariationType);
|
||||
if (idProductVariationType == null || idProductVariationType < 1) return;
|
||||
let productVariationType = productVariationTypes[idProductVariationType];
|
||||
if (productVariationType == null) productVariationType = {
|
||||
[flagProductVariations]: [],
|
||||
};
|
||||
let tblProductVariations = document.createElement("table");
|
||||
tblProductVariations.classList.add(flagProductVariations);
|
||||
let thead = document.createElement("thead");
|
||||
@@ -159,8 +160,10 @@ export default class PageStoreProductVariations extends TableBasePage {
|
||||
let cell = DOM.getCellFromElement(element);
|
||||
let cellNew = cell.cloneNode(false);
|
||||
cellNew.appendChild(tblProductVariations);
|
||||
cellNew.classList.remove(flagCollapsed);
|
||||
row.replaceChild(cellNew, cell);
|
||||
if (_verbose) { console.log("tblProductVariations: ", tblProductVariations); }
|
||||
this.toggleColumnHeaderCollapsed(flagProductVariations, false);
|
||||
this.hookupFieldsProductVariation();
|
||||
}
|
||||
addRowProductVariation(tbody, productVariation) {
|
||||
|
||||
@@ -87,15 +87,9 @@ export default class PageStoreProducts extends TableBasePage {
|
||||
jsonProduct[flagDisplayOrder] = DOM.getElementAttributeValueCurrent(sliderDisplayOrder);
|
||||
return jsonProduct;
|
||||
}
|
||||
initialiseRowNew(row) {
|
||||
initialiseRowNew(tbody, row) {
|
||||
if (row == null) return;
|
||||
let slidersDisplayOrder = document.querySelectorAll('td.' + flagDisplayOrder + ' input.' + flagSlider);
|
||||
let maxDisplayOrder = 0;
|
||||
slidersDisplayOrder.forEach((slider) => {
|
||||
maxDisplayOrder = Math.max(maxDisplayOrder, parseFloat(DOM.getElementValueCurrent(slider)));
|
||||
});
|
||||
let sliderDisplayOrder = row.querySelector('td.' + flagDisplayOrder + ' .' + flagSlider);
|
||||
DOM.setElementValuesCurrentAndPrevious(sliderDisplayOrder, maxDisplayOrder + 1);
|
||||
this.initialiseSliderDisplayOrderRowNew(tbody, row);
|
||||
}
|
||||
|
||||
hookupTableMain() {
|
||||
|
||||
@@ -107,8 +107,8 @@ export default class PageStoreStockItems extends TableBasePage {
|
||||
jsonRow[flagActive] = checkboxActive.getAttribute(attrValueCurrent);
|
||||
return jsonRow;
|
||||
}
|
||||
initialiseRowNew(row) {
|
||||
super.initialiseRowNew(row);
|
||||
initialiseRowNew(tbody, row) {
|
||||
super.initialiseRowNew(tbody, row);
|
||||
let ddlCategoryFilter = document.querySelector(idFormFilters + ' #' + attrIdProductCategory);
|
||||
let idProductCategoryFilter = DOM.getElementValueCurrent(ddlCategoryFilter);
|
||||
let hasCategoryFilter = !(Validation.isEmpty(idProductCategoryFilter) || idProductCategoryFilter == '0');
|
||||
|
||||
@@ -87,8 +87,8 @@ export default class PageStoreSupplierPurchaseOrders extends TableBasePage {
|
||||
|
||||
return jsonRow;
|
||||
}
|
||||
initialiseRowNew(row) {
|
||||
super.initialiseRowNew(row);
|
||||
initialiseRowNew(tbody, row) {
|
||||
super.initialiseRowNew(tbody, row);
|
||||
}
|
||||
|
||||
hookupTableMain() {
|
||||
@@ -123,20 +123,27 @@ export default class PageStoreSupplierPurchaseOrders extends TableBasePage {
|
||||
this.hookupFieldsOrderItemAddDelete();
|
||||
}
|
||||
hookupOrderItemsPreviews() {
|
||||
this.hookupEventHandler("click", idTableMain + ' td.' + flagOrderItems, (event, td) => {
|
||||
this.hookupEventHandler("click", idTableMain + ' > tbody > tr > td.' + flagOrderItems + ' > div', (event, div) => {
|
||||
let td = DOM.getCellFromElement(div);
|
||||
if (!td.classList.contains(flagCollapsed)) return;
|
||||
this.handleClickOrderItemsPreview(event, td);
|
||||
this.handleClickOrderItemsPreview(event, div);
|
||||
});
|
||||
}
|
||||
handleClickOrderItemsPreview(event, element) {
|
||||
if (_verbose) { console.log("click order items preview"); }
|
||||
this.toggleColumnHeaderCollapsed(flagOrderItems, false);
|
||||
element.classList.remove(flagCollapsed);
|
||||
/*
|
||||
let td = DOM.getCellFromElement(element);
|
||||
td.classList.remove(flagCollapsed);
|
||||
*/
|
||||
|
||||
let row = DOM.getRowFromElement(element);
|
||||
let idSupplierPurchaseOrder = row.getAttribute(attrIdSupplierPurchaseOrder);
|
||||
if (idSupplierPurchaseOrder == null || idSupplierPurchaseOrder < 1) return;
|
||||
// if (idSupplierPurchaseOrder == null || idSupplierPurchaseOrder < 1) return;
|
||||
let supplierPurchaseOrder = supplierPurchaseOrders[idSupplierPurchaseOrder];
|
||||
if (supplierPurchaseOrder == null) supplierPurchaseOrder = {
|
||||
[flagOrderItems]: [],
|
||||
};
|
||||
let tblOrderItems = document.createElement("table");
|
||||
tblOrderItems.classList.add(flagOrderItems);
|
||||
let thead = document.createElement("thead");
|
||||
@@ -215,6 +222,7 @@ export default class PageStoreSupplierPurchaseOrders extends TableBasePage {
|
||||
let cell = DOM.getCellFromElement(element);
|
||||
let cellNew = cell.cloneNode(false);
|
||||
cellNew.appendChild(tblOrderItems);
|
||||
cellNew.classList.remove(flagCollapsed);
|
||||
row.replaceChild(cellNew, cell);
|
||||
if (_verbose) { console.log("tblOrderItems: ", tblOrderItems); }
|
||||
this.hookupOrderItemsFields();
|
||||
@@ -256,10 +264,10 @@ export default class PageStoreSupplierPurchaseOrders extends TableBasePage {
|
||||
let tdVariations = document.createElement("td");
|
||||
tdVariations.classList.add(flagProductVariations);
|
||||
tdVariations.classList.add(flagCollapsed);
|
||||
DOM.setElementAttributesValuesCurrentAndPrevious(tdVariations, orderItem[attrIdProductVariation]);
|
||||
DOM.setElementAttributesValuesCurrentAndPrevious(tdVariations, orderItem[flagProductVariations]);
|
||||
let divVariations = document.createElement("div");
|
||||
divVariations.classList.add(flagProductVariations);
|
||||
DOM.setElementAttributesValuesCurrentAndPrevious(divVariations, orderItem[attrIdProductVariation]);
|
||||
DOM.setElementAttributesValuesCurrentAndPrevious(divVariations, orderItem[flagProductVariations]);
|
||||
// divVariations.textContent = orderItem[flagProductVariations];
|
||||
let variationsText = ProductPermutation.getProductVariationsPreviewFromIdCsv(orderItem[flagProductVariations]);
|
||||
divVariations.textContent = variationsText;
|
||||
@@ -313,14 +321,14 @@ export default class PageStoreSupplierPurchaseOrders extends TableBasePage {
|
||||
tdCostUnitLocalVatExcl.classList.add(flagCostUnitLocalVatExcl);
|
||||
let divCostUnitLocalVatExcl = document.createElement("div");
|
||||
divCostUnitLocalVatExcl.classList.add(flagCostUnitLocalVatExcl);
|
||||
DOM.setElementValuesCurrentAndPrevious(divCostUnitLocalVatExcl, orderItem[flagCostUnitLocalVatExcl].toFixed(3));
|
||||
DOM.setElementValuesCurrentAndPrevious(divCostUnitLocalVatExcl, Validation.toFixedOrDefault(orderItem[flagCostUnitLocalVatExcl], 3, null));
|
||||
tdCostUnitLocalVatExcl.appendChild(divCostUnitLocalVatExcl);
|
||||
|
||||
let tdCostUnitLocalVatIncl = document.createElement("td");
|
||||
tdCostUnitLocalVatIncl.classList.add(flagCostUnitLocalVatIncl);
|
||||
let divCostUnitLocalVatIncl = document.createElement("div");
|
||||
divCostUnitLocalVatIncl.classList.add(flagCostUnitLocalVatIncl);
|
||||
DOM.setElementValuesCurrentAndPrevious(divCostUnitLocalVatIncl, orderItem[flagCostUnitLocalVatIncl].toFixed(3));
|
||||
DOM.setElementValuesCurrentAndPrevious(divCostUnitLocalVatIncl, Validation.toFixedOrDefault(orderItem[flagCostUnitLocalVatIncl], 3, null));
|
||||
tdCostUnitLocalVatIncl.appendChild(divCostUnitLocalVatIncl);
|
||||
|
||||
let tdLatencyDeliveryDays = document.createElement("td");
|
||||
@@ -384,13 +392,13 @@ export default class PageStoreSupplierPurchaseOrders extends TableBasePage {
|
||||
hookupFieldsOrderItemProductVariations() {
|
||||
this.hookupEventHandler("click", idTableMain + ' td.' + flagOrderItems + ' td.' + flagProductVariations, (event, element) => this.handleClickProductPermutationVariationsPreview(event, element));
|
||||
}
|
||||
*/
|
||||
hookupDdlsProductPermutationVariation() {
|
||||
this.hookupTableCellDdls(idTableMain + ' td.' + flagProductVariations + ' td.' + flagProductVariation);
|
||||
}
|
||||
hookupDdlsProductPermutationVariationType() {
|
||||
this.hookupTableCellDdls(idTableMain + ' td.' + flagProductVariations + ' td.' + flagProductVariationType);
|
||||
}
|
||||
*/
|
||||
hookupFieldsOrderItemUnitQuantity() {
|
||||
this.hookupTableCellDdlPreviews(
|
||||
idTableMain + ' td.' + flagOrderItems + ' td.' + flagUnitMeasurementQuantity
|
||||
|
||||
@@ -85,8 +85,8 @@ export default class PageStoreSuppliers extends TableBasePage {
|
||||
});
|
||||
return supplierAddresses;
|
||||
}
|
||||
initialiseRowNew(row) {
|
||||
super.initialiseRowNew(row);
|
||||
initialiseRowNew(tbody, row) {
|
||||
super.initialiseRowNew(tbody, row);
|
||||
}
|
||||
|
||||
hookupTableMain() {
|
||||
|
||||
Reference in New Issue
Block a user