Fix(UI): Product Permutations page saving.

This commit is contained in:
2024-11-18 19:37:21 +00:00
parent 48185da25f
commit c40cc5a854
8 changed files with 100 additions and 70 deletions

View File

@@ -587,6 +587,15 @@ CALL partsltd_prod.p_shop_calc_user (
, '1,2,3,4,5' , '1,2,3,4,5'
, 0 , 0
); );
CALL partsltd_prod.p_shop_calc_user (
'chips '
, 1
, 0
, '2'
, '1'
, NULL
, 0
);
SELECT * FROM partsltd_prod.Shop_Calc_User_Temp WHERE GUID = 'chips '; SELECT * FROM partsltd_prod.Shop_Calc_User_Temp WHERE GUID = 'chips ';
DELETE FROM partsltd_prod.Shop_Calc_User_Temp WHERE GUID = 'chips '; DELETE FROM partsltd_prod.Shop_Calc_User_Temp WHERE GUID = 'chips ';

View File

@@ -457,7 +457,7 @@ BEGIN
; ;
END IF; END IF;
IF EXISTS (SELECT * FROM partsltd_prod.Shop_User_Eval_Temp WHERE ISNULL(id_product) AND GUID = a_guid AND can_edit = 0) THEN IF EXISTS (SELECT * FROM partsltd_prod.Shop_Calc_User_Temp WHERE ISNULL(id_product) AND GUID = a_guid AND can_edit = 0) THEN
DELETE FROM tmp_Msg_Error DELETE FROM tmp_Msg_Error
WHERE id_type <> v_id_type_error_no_permission WHERE id_type <> v_id_type_error_no_permission
; ;

View File

@@ -96,7 +96,7 @@ BEGIN
-1 -- id_permutation -1 -- id_permutation
, 1 -- id_product , 1 -- id_product
, '1:3' -- csv_id_pairs_variation , '1:3' -- csv_id_pairs_variation
, 'Test with variations' -- description , 'Good Green' -- description
, NULL -- cost_local_VAT_excl , NULL -- cost_local_VAT_excl
, NULL -- cost_local_VAT_incl , NULL -- cost_local_VAT_incl
, 1 -- id_currency_cost , 1 -- id_currency_cost
@@ -147,7 +147,6 @@ BEGIN
END // END //
DELIMITER ;; DELIMITER ;;
/*
CALL partsltd_prod.p_shop_save_product_permutation_test (); CALL partsltd_prod.p_shop_save_product_permutation_test ();
DELETE FROM partsltd_prod.Shop_Product_Permutation_Temp; DELETE FROM partsltd_prod.Shop_Product_Permutation_Temp;
@@ -155,6 +154,7 @@ DELETE FROM partsltd_prod.Shop_Product_Permutation_Temp;
DROP TABLE IF EXISTS tmp_Msg_Error; DROP TABLE IF EXISTS tmp_Msg_Error;
/*
DELETE FROM partsltd_prod.Shop_Product_Permutation_Variation_Link DELETE FROM partsltd_prod.Shop_Product_Permutation_Variation_Link
WHERE id_link >= 3 WHERE id_link >= 3
; ;

View File

@@ -269,7 +269,7 @@ li {
} }
:not(input,textarea,select).dirty { :not(input,textarea,select,button).dirty {
background-color: var(--c_purple_dark); background-color: var(--c_purple_dark);
} }
input.dirty, textarea.dirty, select.dirty { input.dirty, textarea.dirty, select.dirty {

View File

@@ -269,7 +269,7 @@ li {
} }
:not(input,textarea,select).dirty { :not(input,textarea,select,button).dirty {
background-color: var(--c_purple_dark); background-color: var(--c_purple_dark);
} }
input.dirty, textarea.dirty, select.dirty { input.dirty, textarea.dirty, select.dirty {

View File

@@ -2626,13 +2626,23 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
key: "hookupButtonsRowDelete", key: "hookupButtonsRowDelete",
value: function hookupButtonsRowDelete(selectorButtonDelete, selectorButtonUndelete) { value: function hookupButtonsRowDelete(selectorButtonDelete, selectorButtonUndelete) {
var _this13 = this; var _this13 = this;
var changeHandler = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function (event, element) {
_this13.handleChangeNestedElementCellTable(event, element);
};
this.hookupEventHandler("click", selectorButtonDelete, function (event, element) { this.hookupEventHandler("click", selectorButtonDelete, function (event, element) {
_this13.handleClickButtonRowDelete(event, element, selectorButtonDelete, selectorButtonUndelete); _this13.handleClickButtonRowDelete(event, element, selectorButtonDelete, selectorButtonUndelete, function (changeEvent, changeElement) {
changeHandler(changeEvent, changeElement);
});
}); });
} }
}, { }, {
key: "handleClickButtonRowDelete", key: "handleClickButtonRowDelete",
value: function handleClickButtonRowDelete(event, element, selectorButtonDelete, selectorButtonUndelete) { value: function handleClickButtonRowDelete(event, element, selectorButtonDelete, selectorButtonUndelete) {
var _this14 = this;
var changeHandler = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : function (event, element) {
_this14.handleChangeNestedElementCellTable(event, element);
};
debugger;
var row = DOM.getRowFromElement(element); var row = DOM.getRowFromElement(element);
// row.classList.add(flagDelete); // row.classList.add(flagDelete);
if (row.classList.contains(flagRowNew) && !DOM.hasDirtyChildrenContainer(row)) { if (row.classList.contains(flagRowNew) && !DOM.hasDirtyChildrenContainer(row)) {
@@ -2645,21 +2655,33 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
buttonAdd.textContent = '+'; buttonAdd.textContent = '+';
// DOM.setElementAttributeValueCurrent(buttonAdd, false); // DOM.setElementAttributeValueCurrent(buttonAdd, false);
element.replaceWith(buttonAdd); element.replaceWith(buttonAdd);
this.handleChangeNestedElementCellTable(null, buttonAdd); changeHandler(null, buttonAdd);
this.hookupButtonsRowUndelete(selectorButtonDelete, selectorButtonUndelete); this.hookupButtonsRowUndelete(selectorButtonDelete, selectorButtonUndelete, function (changeEvent, changeElement) {
changeHandler(changeEvent, changeElement);
});
this.updateAndToggleShowButtonsSaveCancel(); this.updateAndToggleShowButtonsSaveCancel();
} }
}, { }, {
key: "hookupButtonsRowUndelete", key: "hookupButtonsRowUndelete",
value: function hookupButtonsRowUndelete(selectorButtonDelete, selectorButtonUndelete) { value: function hookupButtonsRowUndelete(selectorButtonDelete, selectorButtonUndelete) {
var _this14 = this; var _this15 = this;
var changeHandler = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function (event, element) {
_this15.handleChangeNestedElementCellTable(event, element);
};
this.hookupEventHandler("click", selectorButtonUndelete, function (event, element) { this.hookupEventHandler("click", selectorButtonUndelete, function (event, element) {
_this14.handleClickButtonRowUndelete(event, element, selectorButtonDelete, selectorButtonUndelete); _this15.handleClickButtonRowUndelete(event, element, selectorButtonDelete, selectorButtonUndelete, function (changeEvent, changeElement) {
changeHandler(changeEvent, changeElement);
});
}); });
} }
}, { }, {
key: "handleClickButtonRowUndelete", key: "handleClickButtonRowUndelete",
value: function handleClickButtonRowUndelete(event, element, selectorButtonDelete, selectorButtonUndelete) { value: function handleClickButtonRowUndelete(event, element, selectorButtonDelete, selectorButtonUndelete) {
var _this16 = this;
var changeHandler = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : function (event, element) {
_this16.handleChangeNestedElementCellTable(event, element);
};
debugger;
// let row = DOM.getRowFromElement(element); // let row = DOM.getRowFromElement(element);
// row.classList.remove(flagDelete); // row.classList.remove(flagDelete);
var buttonDelete = element.cloneNode(false); // document.createElement("button"); var buttonDelete = element.cloneNode(false); // document.createElement("button");
@@ -2669,8 +2691,10 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
buttonDelete.textContent = 'x'; buttonDelete.textContent = 'x';
// DOM.setElementAttributeValueCurrent(buttonDelete, true); // DOM.setElementAttributeValueCurrent(buttonDelete, true);
element.replaceWith(buttonDelete); element.replaceWith(buttonDelete);
this.handleChangeNestedElementCellTable(null, buttonDelete); changeHandler(null, buttonDelete);
this.hookupButtonsRowDelete(selectorButtonDelete, selectorButtonUndelete); this.hookupButtonsRowDelete(selectorButtonDelete, selectorButtonUndelete, function (changeEvent, changeElement) {
changeHandler(changeEvent, changeElement);
});
this.updateAndToggleShowButtonsSaveCancel(); this.updateAndToggleShowButtonsSaveCancel();
} }
}, { }, {
@@ -2682,15 +2706,15 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
}, { }, {
key: "hookupTableCellDdlPreviews", key: "hookupTableCellDdlPreviews",
value: function hookupTableCellDdlPreviews(cellSelector, optionList) { value: function hookupTableCellDdlPreviews(cellSelector, optionList) {
var _this15 = this; var _this17 = this;
var ddlHookup = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function (cellSelector) { var ddlHookup = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function (cellSelector) {
_this15.hookupTableCellDdls(cellSelector); _this17.hookupTableCellDdls(cellSelector);
}; };
var changeHandler = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : function (event, element) { var changeHandler = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : function (event, element) {
_this15.handleChangeNestedElementCellTable(event, element); _this17.handleChangeNestedElementCellTable(event, element);
}; };
this.hookupEventHandler("click", cellSelector, function (event, td) { this.hookupEventHandler("click", cellSelector, function (event, td) {
_this15.handleClickTableCellDdlPreview(event, td, optionList, cellSelector, function (cellSelector) { _this17.handleClickTableCellDdlPreview(event, td, optionList, cellSelector, function (cellSelector) {
ddlHookup(cellSelector, function (event, element) { ddlHookup(cellSelector, function (event, element) {
changeHandler(event, element); changeHandler(event, element);
}); });
@@ -2701,9 +2725,9 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
}, { }, {
key: "hookupTableCellDdls", key: "hookupTableCellDdls",
value: function hookupTableCellDdls(ddlSelector) { value: function hookupTableCellDdls(ddlSelector) {
var _this16 = this; var _this18 = this;
var changeHandler = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (event, element) { var changeHandler = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (event, element) {
_this16.handleChangeNestedElementCellTable(event, element); _this18.handleChangeNestedElementCellTable(event, element);
}; };
this.hookupEventHandler("change", ddlSelector, function (event, element) { this.hookupEventHandler("change", ddlSelector, function (event, element) {
changeHandler(event, element); changeHandler(event, element);
@@ -2712,9 +2736,9 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
}, { }, {
key: "handleClickTableCellDdlPreview", key: "handleClickTableCellDdlPreview",
value: function handleClickTableCellDdlPreview(event, td, optionObjectList, cellSelector) { value: function handleClickTableCellDdlPreview(event, td, optionObjectList, cellSelector) {
var _this17 = this; var _this19 = this;
var ddlHookup = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : function (cellSelector) { var ddlHookup = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : function (cellSelector) {
_this17.hookupTableCellDdls(cellSelector); _this19.hookupTableCellDdls(cellSelector);
}; };
if (td.querySelector('select')) return; if (td.querySelector('select')) return;
// td.removeEventListener("click", ddlHookup); // td.removeEventListener("click", ddlHookup);
@@ -2774,14 +2798,14 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
}, { }, {
key: "hookupTableCellDDlPreviewsWhenNotCollapsed", key: "hookupTableCellDDlPreviewsWhenNotCollapsed",
value: function hookupTableCellDDlPreviewsWhenNotCollapsed(cellSelector, optionList) { value: function hookupTableCellDDlPreviewsWhenNotCollapsed(cellSelector, optionList) {
var _this18 = this; var _this20 = this;
var ddlHookup = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function (event, element) { var ddlHookup = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function (event, element) {
_this18.hookupTableCellDdls(event, element); _this20.hookupTableCellDdls(event, element);
}; };
this.hookupEventHandler("click", cellSelector, function (event, td) { this.hookupEventHandler("click", cellSelector, function (event, td) {
var div = td.querySelector('div'); var div = td.querySelector('div');
if (!div || div.classList.contains(flagCollapsed)) return; if (!div || div.classList.contains(flagCollapsed)) return;
_this18.handleClickTableCellDdlPreview(event, td, optionList, cellSelector, function (event, element) { _this20.handleClickTableCellDdlPreview(event, td, optionList, cellSelector, function (event, element) {
ddlHookup(event, element); ddlHookup(event, element);
}); });
}); });
@@ -2789,9 +2813,9 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
}, { }, {
key: "hookupProductCategoryDdls", key: "hookupProductCategoryDdls",
value: function hookupProductCategoryDdls(ddlSelector) { value: function hookupProductCategoryDdls(ddlSelector) {
var _this19 = this; var _this21 = this;
this.hookupChangeHandlerTableCells(ddlSelector, function (event, element) { this.hookupChangeHandlerTableCells(ddlSelector, function (event, element) {
_this19.handleChangeProductCategoryDdl(event, element); _this21.handleChangeProductCategoryDdl(event, element);
}); });
} }
}, { }, {
@@ -2825,15 +2849,15 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
}, { }, {
key: "hookupPreviewsProductPermutationVariation", key: "hookupPreviewsProductPermutationVariation",
value: function hookupPreviewsProductPermutationVariation() { value: function hookupPreviewsProductPermutationVariation() {
var _this20 = this; var _this22 = this;
this.hookupEventHandler("click", idTableMain + ' td.' + flagProductVariations, function (event, element) { this.hookupEventHandler("click", idTableMain + ' td.' + flagProductVariations, function (event, element) {
return _this20.handleClickProductPermutationVariationsPreview(event, element); return _this22.handleClickProductPermutationVariationsPreview(event, element);
}); });
} }
}, { }, {
key: "handleClickProductPermutationVariationsPreview", key: "handleClickProductPermutationVariationsPreview",
value: function handleClickProductPermutationVariationsPreview(event, element) { value: function handleClickProductPermutationVariationsPreview(event, element) {
var _this21 = this; var _this23 = this;
var tblVariations = element.querySelector('table.' + flagProductVariations); var tblVariations = element.querySelector('table.' + flagProductVariations);
if (!validation_Validation.isEmpty(tblVariations)) return; if (!validation_Validation.isEmpty(tblVariations)) return;
this.toggleColumnCollapsed(flagProductVariations, false); this.toggleColumnCollapsed(flagProductVariations, false);
@@ -2862,7 +2886,7 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
var tbody = document.createElement("tbody"); var tbody = document.createElement("tbody");
if (!validation_Validation.isEmpty(permutationVariations)) { if (!validation_Validation.isEmpty(permutationVariations)) {
permutationVariations.forEach(function (permutationVariation, index) { permutationVariations.forEach(function (permutationVariation, index) {
_this21.addProductPermutationVariationRow(tbody, permutationVariation); _this23.addProductPermutationVariationRow(tbody, permutationVariation);
}); });
} }
tblVariations.appendChild(tbody); tblVariations.appendChild(tbody);
@@ -2993,8 +3017,10 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
var tdDelete = document.createElement("td"); var tdDelete = document.createElement("td");
tdDelete.classList.add(flagDelete); tdDelete.classList.add(flagDelete);
var buttonDelete = document.createElement("button"); var buttonDelete = document.createElement("button");
buttonDelete.classList.add(flagActive);
buttonDelete.classList.add(flagDelete); buttonDelete.classList.add(flagDelete);
buttonDelete.textContent = 'x'; buttonDelete.textContent = 'x';
DOM.setElementAttributesValuesCurrentAndPrevious(buttonDelete, true);
var tr = document.createElement("tr"); var tr = document.createElement("tr");
tr.classList.add(flagProductVariation); tr.classList.add(flagProductVariation);
tdVariationType.appendChild(ddlVariationType); tdVariationType.appendChild(ddlVariationType);
@@ -3008,9 +3034,9 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
}, { }, {
key: "hookupDdlsProductPermutationVariationType", key: "hookupDdlsProductPermutationVariationType",
value: function hookupDdlsProductPermutationVariationType() { value: function hookupDdlsProductPermutationVariationType() {
var _this22 = this; var _this24 = this;
this.hookupTableCellDdls(idTableMain + ' td.' + flagProductVariations + ' td.' + flagProductVariationType + ' select', function (event, ddlVariationType) { this.hookupTableCellDdls(idTableMain + ' td.' + flagProductVariations + ' td.' + flagProductVariationType + ' select', function (event, ddlVariationType) {
_this22.handleChangeDdlProductVariationOrVariationType(event, ddlVariationType); _this24.handleChangeProductVariationInput(event, ddlVariationType);
var idVariationTypeSelected = DOM.getElementValueCurrent(ddlVariationType); var idVariationTypeSelected = DOM.getElementValueCurrent(ddlVariationType);
var row = DOM.getRowFromElement(ddlVariationType); var row = DOM.getRowFromElement(ddlVariationType);
var tdVariation = row.querySelector('td.' + flagProductVariation); var tdVariation = row.querySelector('td.' + flagProductVariation);
@@ -3026,43 +3052,44 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
option = DOM.createOption(optionJson); option = DOM.createOption(optionJson);
ddlVariation.appendChild(option); ddlVariation.appendChild(option);
}); });
_this22.handleChangeDdlProductVariationOrVariationType(event, ddlVariation); _this24.handleChangeProductVariationInput(event, ddlVariation);
}); });
} }
}, { }, {
key: "handleChangeDdlProductVariationOrVariationType", key: "handleChangeProductVariationInput",
value: function handleChangeDdlProductVariationOrVariationType(event, element) { value: function handleChangeProductVariationInput(event, element) {
this.handleChangeNestedElementCellTable(event, element); this.handleChangeNestedElementCellTable(event, element);
this.updateProductPermutationVariations(element); this.updateProductPermutationVariations(element);
} }
}, { }, {
key: "hookupDdlsProductPermutationVariation", key: "hookupDdlsProductPermutationVariation",
value: function hookupDdlsProductPermutationVariation() { value: function hookupDdlsProductPermutationVariation() {
var _this23 = this; var _this25 = this;
this.hookupTableCellDdls(idTableMain + ' td.' + flagProductVariations + ' td.' + flagProductVariation + ' select', function (event, ddlVariation) { this.hookupTableCellDdls(idTableMain + ' td.' + flagProductVariations + ' td.' + flagProductVariation + ' select', function (event, ddlVariation) {
_this23.handleChangeDdlProductVariationOrVariationType(event, ddlVariation); _this25.handleChangeProductVariationInput(event, ddlVariation);
}); });
} }
}, { }, {
key: "hookupButtonsProductPermutationVariationAddDelete", key: "hookupButtonsProductPermutationVariationAddDelete",
value: function hookupButtonsProductPermutationVariationAddDelete() { value: function hookupButtonsProductPermutationVariationAddDelete() {
var _this24 = this; var _this26 = this;
var selectorButton = idTableMain + ' td.' + flagProductVariations + ' tr.' + flagProductVariation + ' button'; var selectorButton = idTableMain + ' td.' + flagProductVariations + ' tr.' + flagProductVariation + ' button';
var selectorButtonDelete = selectorButton + '.' + flagDelete; var selectorButtonDelete = selectorButton + '.' + flagDelete;
var selectorButtonUndelete = selectorButton + '.' + flagAdd; var selectorButtonUndelete = selectorButton + '.' + flagAdd;
this.hookupButtonsRowDelete(selectorButtonDelete, selectorButtonUndelete, function (event, element) { this.hookupButtonsRowDelete(selectorButtonDelete, selectorButtonUndelete, function (event, element) {
_this24.handleClickButtonRowDelete(event, element); _this26.handleChangeProductVariationInput(event, element);
_this24.updateProductPermutationVariations(element); });
this.hookupButtonsRowUndelete(selectorButtonDelete, selectorButtonUndelete, function (event, element) {
_this26.handleChangeProductVariationInput(event, element);
}); });
this.hookupButtonsRowUndelete(selectorButtonDelete, selectorButtonUndelete);
this.hookupButtonsProductPermutationVariationAdd(); this.hookupButtonsProductPermutationVariationAdd();
} }
}, { }, {
key: "hookupButtonsProductPermutationVariationAdd", key: "hookupButtonsProductPermutationVariationAdd",
value: function hookupButtonsProductPermutationVariationAdd() { value: function hookupButtonsProductPermutationVariationAdd() {
var _this25 = this; var _this27 = this;
this.hookupEventHandler("click", idTableMain + ' td.' + flagProductVariations + ' button.' + flagAdd, function (event, element) { this.hookupEventHandler("click", idTableMain + ' td.' + flagProductVariations + ' button.' + flagAdd, function (event, element) {
_this25.handleClickButtonProductPermutationVariationAdd(event, element); _this27.handleClickButtonProductPermutationVariationAdd(event, element);
}); });
} }
}, { }, {
@@ -3085,7 +3112,7 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
}, { }, {
key: "getProductPermutationVariationsText", key: "getProductPermutationVariationsText",
value: function getProductPermutationVariationsText(variationsTd) { value: function getProductPermutationVariationsText(variationsTd) {
var rows = variationsTd.querySelectorAll(':scope tbody tr'); var rows = variationsTd.querySelectorAll(':scope tbody tr:has(button.' + flagDelete + ')');
var variationPairsString = ''; var variationPairsString = '';
var ddlVariationType, ddlVariation, idVariationType, idVariation; var ddlVariationType, ddlVariation, idVariationType, idVariation;
rows.forEach(function (row, index) { rows.forEach(function (row, index) {

View File

@@ -484,45 +484,40 @@ export default class TableBasePage extends BasePage {
, (event, button) => { handleClickRowNew(event, button); } , (event, button) => { handleClickRowNew(event, button); }
); );
} }
hookupButtonsRowDelete(selectorButtonDelete, selectorButtonUndelete) { hookupButtonsRowDelete(selectorButtonDelete, selectorButtonUndelete, changeHandler = (event, element) => { this.handleChangeNestedElementCellTable(event, element); }) {
this.hookupEventHandler("click", selectorButtonDelete, (event, element) => { this.hookupEventHandler("click", selectorButtonDelete, (event, element) => {
this.handleClickButtonRowDelete(event, element, selectorButtonDelete, selectorButtonUndelete); this.handleClickButtonRowDelete(event, element, selectorButtonDelete, selectorButtonUndelete, (changeEvent, changeElement) => { changeHandler(changeEvent, changeElement); });
}); });
} }
handleClickButtonRowDelete(event, element, selectorButtonDelete, selectorButtonUndelete) { handleClickButtonRowDelete(event, element, selectorButtonDelete, selectorButtonUndelete, changeHandler = (event, element) => { this.handleChangeNestedElementCellTable(event, element); }) {
let row = DOM.getRowFromElement(element); let row = DOM.getRowFromElement(element);
// row.classList.add(flagDelete);
if (row.classList.contains(flagRowNew) && !DOM.hasDirtyChildrenContainer(row)) { if (row.classList.contains(flagRowNew) && !DOM.hasDirtyChildrenContainer(row)) {
row.parentNode.removeChild(row); row.parentNode.removeChild(row);
} }
let buttonAdd = element.cloneNode(false); // document.createElement("button"); let buttonAdd = element.cloneNode(false);
buttonAdd.classList.remove(flagInitialised); buttonAdd.classList.remove(flagInitialised);
buttonAdd.classList.remove(flagDelete); buttonAdd.classList.remove(flagDelete);
buttonAdd.classList.add(flagAdd); buttonAdd.classList.add(flagAdd);
buttonAdd.textContent = '+'; buttonAdd.textContent = '+';
// DOM.setElementAttributeValueCurrent(buttonAdd, false);
element.replaceWith(buttonAdd); element.replaceWith(buttonAdd);
this.handleChangeNestedElementCellTable(null, buttonAdd); changeHandler(null, buttonAdd);
this.hookupButtonsRowUndelete(selectorButtonDelete, selectorButtonUndelete); this.hookupButtonsRowUndelete(selectorButtonDelete, selectorButtonUndelete, (changeEvent, changeElement) => { changeHandler(changeEvent, changeElement); });
this.updateAndToggleShowButtonsSaveCancel(); this.updateAndToggleShowButtonsSaveCancel();
} }
hookupButtonsRowUndelete(selectorButtonDelete, selectorButtonUndelete) { hookupButtonsRowUndelete(selectorButtonDelete, selectorButtonUndelete, changeHandler = (event, element) => { this.handleChangeNestedElementCellTable(event, element); }) {
this.hookupEventHandler("click", selectorButtonUndelete, (event, element) => { this.hookupEventHandler("click", selectorButtonUndelete, (event, element) => {
this.handleClickButtonRowUndelete(event, element, selectorButtonDelete, selectorButtonUndelete); this.handleClickButtonRowUndelete(event, element, selectorButtonDelete, selectorButtonUndelete, (changeEvent, changeElement) => { changeHandler(changeEvent, changeElement); });
}); });
} }
handleClickButtonRowUndelete(event, element, selectorButtonDelete, selectorButtonUndelete) { handleClickButtonRowUndelete(event, element, selectorButtonDelete, selectorButtonUndelete, changeHandler = (event, element) => { this.handleChangeNestedElementCellTable(event, element); }) {
// let row = DOM.getRowFromElement(element); let buttonDelete = element.cloneNode(false);
// row.classList.remove(flagDelete);
let buttonDelete = element.cloneNode(false); // document.createElement("button");
buttonDelete.classList.remove(flagInitialised); buttonDelete.classList.remove(flagInitialised);
buttonDelete.classList.remove(flagAdd); buttonDelete.classList.remove(flagAdd);
buttonDelete.classList.add(flagDelete); buttonDelete.classList.add(flagDelete);
buttonDelete.textContent = 'x'; buttonDelete.textContent = 'x';
// DOM.setElementAttributeValueCurrent(buttonDelete, true);
element.replaceWith(buttonDelete); element.replaceWith(buttonDelete);
this.handleChangeNestedElementCellTable(null, buttonDelete); changeHandler(null, buttonDelete);
this.hookupButtonsRowDelete(selectorButtonDelete, selectorButtonUndelete); this.hookupButtonsRowDelete(selectorButtonDelete, selectorButtonUndelete, (changeEvent, changeElement) => { changeHandler(changeEvent, changeElement); });
this.updateAndToggleShowButtonsSaveCancel(); this.updateAndToggleShowButtonsSaveCancel();
} }
hookupTdsAccessLevel() { hookupTdsAccessLevel() {
@@ -810,8 +805,10 @@ export default class TableBasePage extends BasePage {
tdDelete.classList.add(flagDelete); tdDelete.classList.add(flagDelete);
let buttonDelete = document.createElement("button"); let buttonDelete = document.createElement("button");
buttonDelete.classList.add(flagActive);
buttonDelete.classList.add(flagDelete); buttonDelete.classList.add(flagDelete);
buttonDelete.textContent = 'x'; buttonDelete.textContent = 'x';
DOM.setElementAttributesValuesCurrentAndPrevious(buttonDelete, true);
let tr = document.createElement("tr"); let tr = document.createElement("tr");
tr.classList.add(flagProductVariation); tr.classList.add(flagProductVariation);
@@ -827,7 +824,7 @@ export default class TableBasePage extends BasePage {
this.hookupTableCellDdls( this.hookupTableCellDdls(
idTableMain + ' td.' + flagProductVariations + ' td.' + flagProductVariationType + ' select' idTableMain + ' td.' + flagProductVariations + ' td.' + flagProductVariationType + ' select'
, (event, ddlVariationType) => { , (event, ddlVariationType) => {
this.handleChangeDdlProductVariationOrVariationType(event, ddlVariationType); this.handleChangeProductVariationInput(event, ddlVariationType);
let idVariationTypeSelected = DOM.getElementValueCurrent(ddlVariationType); let idVariationTypeSelected = DOM.getElementValueCurrent(ddlVariationType);
let row = DOM.getRowFromElement(ddlVariationType); let row = DOM.getRowFromElement(ddlVariationType);
let tdVariation = row.querySelector('td.' + flagProductVariation); let tdVariation = row.querySelector('td.' + flagProductVariation);
@@ -845,26 +842,23 @@ export default class TableBasePage extends BasePage {
option = DOM.createOption(optionJson); option = DOM.createOption(optionJson);
ddlVariation.appendChild(option); ddlVariation.appendChild(option);
}); });
this.handleChangeDdlProductVariationOrVariationType(event, ddlVariation); this.handleChangeProductVariationInput(event, ddlVariation);
} }
); );
} }
handleChangeDdlProductVariationOrVariationType(event, element) { handleChangeProductVariationInput(event, element) {
this.handleChangeNestedElementCellTable(event, element); this.handleChangeNestedElementCellTable(event, element);
this.updateProductPermutationVariations(element); this.updateProductPermutationVariations(element);
} }
hookupDdlsProductPermutationVariation() { hookupDdlsProductPermutationVariation() {
this.hookupTableCellDdls(idTableMain + ' td.' + flagProductVariations + ' td.' + flagProductVariation + ' select', (event, ddlVariation) => { this.handleChangeDdlProductVariationOrVariationType(event, ddlVariation); }); this.hookupTableCellDdls(idTableMain + ' td.' + flagProductVariations + ' td.' + flagProductVariation + ' select', (event, ddlVariation) => { this.handleChangeProductVariationInput(event, ddlVariation); });
} }
hookupButtonsProductPermutationVariationAddDelete() { hookupButtonsProductPermutationVariationAddDelete() {
let selectorButton = idTableMain + ' td.' + flagProductVariations + ' tr.' + flagProductVariation + ' button'; let selectorButton = idTableMain + ' td.' + flagProductVariations + ' tr.' + flagProductVariation + ' button';
let selectorButtonDelete = selectorButton + '.' + flagDelete; let selectorButtonDelete = selectorButton + '.' + flagDelete;
let selectorButtonUndelete = selectorButton + '.' + flagAdd; let selectorButtonUndelete = selectorButton + '.' + flagAdd;
this.hookupButtonsRowDelete(selectorButtonDelete, selectorButtonUndelete, (event, element) => { this.hookupButtonsRowDelete(selectorButtonDelete, selectorButtonUndelete, (event, element) => { this.handleChangeProductVariationInput(event, element); });
this.handleClickButtonRowDelete(event, element); this.hookupButtonsRowUndelete(selectorButtonDelete, selectorButtonUndelete, (event, element) => { this.handleChangeProductVariationInput(event, element); });
this.updateProductPermutationVariations(element);
});
this.hookupButtonsRowUndelete(selectorButtonDelete, selectorButtonUndelete);
this.hookupButtonsProductPermutationVariationAdd(); this.hookupButtonsProductPermutationVariationAdd();
} }
hookupButtonsProductPermutationVariationAdd() { hookupButtonsProductPermutationVariationAdd() {
@@ -888,7 +882,7 @@ export default class TableBasePage extends BasePage {
this.handleChangeNestedElementCellTable(null, variationsCell); this.handleChangeNestedElementCellTable(null, variationsCell);
} }
getProductPermutationVariationsText(variationsTd) { getProductPermutationVariationsText(variationsTd) {
let rows = variationsTd.querySelectorAll(':scope tbody tr'); let rows = variationsTd.querySelectorAll(':scope tbody tr:has(button.' + flagDelete + ')');
let variationPairsString = ''; let variationPairsString = '';
let ddlVariationType, ddlVariation, idVariationType, idVariation; let ddlVariationType, ddlVariation, idVariationType, idVariation;
rows.forEach((row, index) => { rows.forEach((row, index) => {