Feat(SQL): Location Get Many and Calc Stored Procedures created with logic using Location Link table.

This commit is contained in:
2025-07-15 15:07:40 +01:00
parent 7573f329e9
commit a3fd8b12fe
44 changed files with 2590 additions and 873 deletions

View File

@@ -23,7 +23,7 @@
.home-hero a {
font-size: 1.25rem;
margin-bottom: 2rem;
color: var(--colour-text-background);
color: var(--colour-primary);
cursor: pointer;
margin-left: auto;
margin-right: auto;

View File

@@ -1 +1 @@
{"version":3,"file":"css/core_home.bundle.css","mappings":";AACA,iBAAiB;AACjB;IACI,oBAAoB;IACpB,kBAAkB;IAClB,iBAAiB;IACjB,kBAAkB;AACtB;;AAEA;IACI,gBAAgB;AACpB;;AAEA;IACI,eAAe;IACf,gBAAgB;IAChB,qBAAqB;IACrB,yBAAyB;IACzB,iBAAiB;IACjB,kBAAkB;AACtB;;AAEA;IACI,kBAAkB;IAClB,mBAAmB;IACnB,oCAAoC;IACpC,eAAe;IACf,iBAAiB;IACjB,kBAAkB;AACtB;;AAEA,qBAAqB;AACrB;IACI,eAAe;IACf,iBAAiB;AACrB;;AAEA;IACI,aAAa;IACb,2DAA2D;IAC3D,SAAS;IACT,gBAAgB;AACpB;;AAEA;IACI,aAAa;IACb,wBAAwB;IACxB,kBAAkB;IAClB,+BAA+B;AACnC;;AAEA;IACI,2BAA2B;AAC/B;;AAEA,wBAAwB;AACxB;IACI,eAAe;IACf,wBAAwB;AAC5B;;AAEA;IACI,iBAAiB;IACjB,aAAa;IACb,kBAAkB;IAClB,gBAAgB;IAChB,mBAAmB;IACnB,qCAAqC;AACzC;;AAEA,oBAAoB;AACpB;IACI,eAAe;IACf,iBAAiB;AACrB;;AAEA;IACI,wBAAwB;IACxB,aAAa;IACb,kBAAkB;IAClB,kBAAkB;IAClB,gBAAgB;IAChB,mBAAmB;AACvB;;AAEA;IACI,iBAAiB;IACjB,qBAAqB;IACrB,iBAAiB;IACjB,cAAc;AAClB;;AAEA,gBAAgB;AAChB;IACI,eAAe;IACf,0BAA0B;IAC1B,YAAY;IACZ,kBAAkB;AACtB;;;AAGA,eAAe;AACf,4DAA4D;AAC5D;IACI,UAAU,EAAE,0BAA0B;AAC1C;;AAEA,iEAAiE;AACjE;IACI;QACI,UAAU;IACd;;IAEA;QACI,yCAAyC;IAC7C;AACJ;;AAEA;IACI;QACI,UAAU;QACV,2BAA2B;IAC/B;IACA;QACI,UAAU;QACV,wBAAwB;IAC5B;AACJ;;AAEA,WAAW,qBAAqB,EAAE;AAClC,WAAW,qBAAqB,EAAE;AAClC,WAAW,qBAAqB,EAAE;AAClC,WAAW,qBAAqB,EAAE,C","sources":["webpack://app/./static/css/pages/core/home.css"],"sourcesContent":["\n/* Hero Section */\n.home-hero {\n padding: 8rem 0 4rem;\n align-self: center;\n margin-left: auto;\n margin-right: auto;\n}\n\n.hero-content {\n max-width: 600px;\n}\n\n.home-hero h2 {\n font-size: 24px;\n line-height: 1.2;\n margin-bottom: 1.5rem;\n color: var(--colour-text); \n margin-left: auto;\n margin-right: auto;\n}\n\n.home-hero a {\n font-size: 1.25rem;\n margin-bottom: 2rem;\n color: var(--colour-text-background);\n cursor: pointer;\n margin-left: auto;\n margin-right: auto;\n}\n\n/* Services Section */\n.services {\n padding: 6rem 0;\n background: white;\n}\n\n.services-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n gap: 2rem;\n margin-top: 3rem;\n}\n\n.service-card {\n padding: 2rem;\n background: var(--light);\n border-radius: 8px;\n transition: transform 0.3s ease;\n}\n\n.service-card:hover {\n transform: translateY(-5px);\n}\n\n/* Testimonial Section */\n.testimonial {\n padding: 6rem 0;\n background: var(--light);\n}\n\n.testimonial-card {\n background: white;\n padding: 2rem;\n border-radius: 8px;\n max-width: 800px;\n margin: 3rem auto 0;\n box-shadow: 0 4px 6px rgba(0,0,0,0.1);\n}\n\n/* Pricing Section */\n.pricing {\n padding: 6rem 0;\n background: white;\n}\n\n.pricing-card {\n background: var(--light);\n padding: 2rem;\n border-radius: 8px;\n text-align: center;\n max-width: 400px;\n margin: 3rem auto 0;\n}\n\n.price {\n font-size: 2.5rem;\n color: var(--primary);\n font-weight: bold;\n margin: 1rem 0;\n}\n\n/* CTA Section */\n.cta {\n padding: 6rem 0;\n background: var(--primary);\n color: white;\n text-align: center;\n}\n\n\n/* Animations */\n/* Fallback styles to ensure content is visible without JS */\n.reveal {\n opacity: 1; /* Default visible state */\n}\n\n/* Only hide elements if browser supports Intersection Observer */\n@supports (animation-name: fade) {\n .reveal {\n opacity: 0;\n }\n\n .reveal.active {\n animation: fade-up 0.8s ease-out forwards;\n }\n}\n\n@keyframes fade-up {\n 0% {\n opacity: 0;\n transform: translateY(30px);\n }\n 100% {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.delay-1 { animation-delay: 0.1s; }\n.delay-2 { animation-delay: 0.2s; }\n.delay-3 { animation-delay: 0.3s; }\n.delay-4 { animation-delay: 0.4s; }"],"names":[],"sourceRoot":""}
{"version":3,"file":"css/core_home.bundle.css","mappings":";AACA,iBAAiB;AACjB;IACI,oBAAoB;IACpB,kBAAkB;IAClB,iBAAiB;IACjB,kBAAkB;AACtB;;AAEA;IACI,gBAAgB;AACpB;;AAEA;IACI,eAAe;IACf,gBAAgB;IAChB,qBAAqB;IACrB,yBAAyB;IACzB,iBAAiB;IACjB,kBAAkB;AACtB;;AAEA;IACI,kBAAkB;IAClB,mBAAmB;IACnB,4BAA4B;IAC5B,eAAe;IACf,iBAAiB;IACjB,kBAAkB;AACtB;;AAEA,qBAAqB;AACrB;IACI,eAAe;IACf,iBAAiB;AACrB;;AAEA;IACI,aAAa;IACb,2DAA2D;IAC3D,SAAS;IACT,gBAAgB;AACpB;;AAEA;IACI,aAAa;IACb,wBAAwB;IACxB,kBAAkB;IAClB,+BAA+B;AACnC;;AAEA;IACI,2BAA2B;AAC/B;;AAEA,wBAAwB;AACxB;IACI,eAAe;IACf,wBAAwB;AAC5B;;AAEA;IACI,iBAAiB;IACjB,aAAa;IACb,kBAAkB;IAClB,gBAAgB;IAChB,mBAAmB;IACnB,qCAAqC;AACzC;;AAEA,oBAAoB;AACpB;IACI,eAAe;IACf,iBAAiB;AACrB;;AAEA;IACI,wBAAwB;IACxB,aAAa;IACb,kBAAkB;IAClB,kBAAkB;IAClB,gBAAgB;IAChB,mBAAmB;AACvB;;AAEA;IACI,iBAAiB;IACjB,qBAAqB;IACrB,iBAAiB;IACjB,cAAc;AAClB;;AAEA,gBAAgB;AAChB;IACI,eAAe;IACf,0BAA0B;IAC1B,YAAY;IACZ,kBAAkB;AACtB;;;AAGA,eAAe;AACf,4DAA4D;AAC5D;IACI,UAAU,EAAE,0BAA0B;AAC1C;;AAEA,iEAAiE;AACjE;IACI;QACI,UAAU;IACd;;IAEA;QACI,yCAAyC;IAC7C;AACJ;;AAEA;IACI;QACI,UAAU;QACV,2BAA2B;IAC/B;IACA;QACI,UAAU;QACV,wBAAwB;IAC5B;AACJ;;AAEA,WAAW,qBAAqB,EAAE;AAClC,WAAW,qBAAqB,EAAE;AAClC,WAAW,qBAAqB,EAAE;AAClC,WAAW,qBAAqB,EAAE,C","sources":["webpack://app/./static/css/pages/core/home.css"],"sourcesContent":["\n/* Hero Section */\n.home-hero {\n padding: 8rem 0 4rem;\n align-self: center;\n margin-left: auto;\n margin-right: auto;\n}\n\n.hero-content {\n max-width: 600px;\n}\n\n.home-hero h2 {\n font-size: 24px;\n line-height: 1.2;\n margin-bottom: 1.5rem;\n color: var(--colour-text); \n margin-left: auto;\n margin-right: auto;\n}\n\n.home-hero a {\n font-size: 1.25rem;\n margin-bottom: 2rem;\n color: var(--colour-primary);\n cursor: pointer;\n margin-left: auto;\n margin-right: auto;\n}\n\n/* Services Section */\n.services {\n padding: 6rem 0;\n background: white;\n}\n\n.services-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n gap: 2rem;\n margin-top: 3rem;\n}\n\n.service-card {\n padding: 2rem;\n background: var(--light);\n border-radius: 8px;\n transition: transform 0.3s ease;\n}\n\n.service-card:hover {\n transform: translateY(-5px);\n}\n\n/* Testimonial Section */\n.testimonial {\n padding: 6rem 0;\n background: var(--light);\n}\n\n.testimonial-card {\n background: white;\n padding: 2rem;\n border-radius: 8px;\n max-width: 800px;\n margin: 3rem auto 0;\n box-shadow: 0 4px 6px rgba(0,0,0,0.1);\n}\n\n/* Pricing Section */\n.pricing {\n padding: 6rem 0;\n background: white;\n}\n\n.pricing-card {\n background: var(--light);\n padding: 2rem;\n border-radius: 8px;\n text-align: center;\n max-width: 400px;\n margin: 3rem auto 0;\n}\n\n.price {\n font-size: 2.5rem;\n color: var(--primary);\n font-weight: bold;\n margin: 1rem 0;\n}\n\n/* CTA Section */\n.cta {\n padding: 6rem 0;\n background: var(--primary);\n color: white;\n text-align: center;\n}\n\n\n/* Animations */\n/* Fallback styles to ensure content is visible without JS */\n.reveal {\n opacity: 1; /* Default visible state */\n}\n\n/* Only hide elements if browser supports Intersection Observer */\n@supports (animation-name: fade) {\n .reveal {\n opacity: 0;\n }\n\n .reveal.active {\n animation: fade-up 0.8s ease-out forwards;\n }\n}\n\n@keyframes fade-up {\n 0% {\n opacity: 0;\n transform: translateY(30px);\n }\n 100% {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.delay-1 { animation-delay: 0.1s; }\n.delay-2 { animation-delay: 0.2s; }\n.delay-3 { animation-delay: 0.3s; }\n.delay-4 { animation-delay: 0.4s; }"],"names":[],"sourceRoot":""}

View File

@@ -196,8 +196,9 @@ img.header-logo {
margin-top: 0;
}
.container-input > input, .container-input > textarea {
border: 2px solid var(--colour-primary);
.container-input > input,
.container-input > textarea {
border: 2px solid var(--colour-accent);
padding: 1vh;
}
@@ -289,6 +290,10 @@ input.dirty, textarea.dirty, select.dirty {
select {
border: 1px solid var(--colour-accent);
}
img, video {
border-radius: 3vh;
}
@@ -645,6 +650,7 @@ header {
#formFilters .container-input input {
width: 10vh;
max-width: 10vh;
height: 20px;
}
/*
#formFilters .container-input input {
@@ -662,15 +668,16 @@ header {
display: none;
}
#formFilters .container-input.filter.active_only svg.active_only {
height: 2vh;
height: 25px;
fill: var(--colour-text-background);
background-color: var(--colour-primary);
border: 1px solid var(--colour-primary);
width: 2vh;
border-radius: 0.5vh;
background-color: var(--colour-accent);
/* border: 1px solid var(--colour-accent);
border-radius: 0.5vh; */
width: 25px;
}
#formFilters .container-input.filter.active_only svg.active_only.is_checked {
fill: var(--colour-accent);
background-color: var(--colour-text-background);
}
#formFilters .container-input.filter.is_not_empty {
width: 12vh;
@@ -792,7 +799,7 @@ form.filter button.save, form.filter button.button-cancel {
align-self: center;
position: relative;
display: block;
width: min(calc(90vh), calc(70vw));
width: 100%; /* min(calc(90vh), calc(70vw)); */
}
#tableMain select,

File diff suppressed because one or more lines are too long

View File

@@ -1339,7 +1339,7 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
} else {
var dataPage = this.getLocalStoragePage();
var filters = dataPage[flagFormFilters];
var formFilters = this.getFormFilters();
var formFilters = TableBasePage.getFormFilters();
var filtersDefault = DOM.convertForm2JSON(formFilters);
if (!Validation.areEqualDicts(filters, filtersDefault)) {
this.callFilterTableContent();
@@ -1362,6 +1362,7 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
}, {
key: "hookupFilterActive",
value: function hookupFilterActive() {
var _this3 = this;
var filterSelector = idFormFilters + ' #' + flagActiveOnly;
var filterActiveOld = document.querySelector(filterSelector);
filterActiveOld.removeAttribute('id');
@@ -1382,7 +1383,7 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
} else {
svgElement.classList.add(flagIsChecked);
}
return TableBasePage.isDirtyFilter(svgElement);
return _this3.handleChangeFilter(event, filterActive);
});
var filter = document.querySelector(filterSelector);
var filterValuePrevious = DOM.getElementValueCurrent(filter);
@@ -1392,8 +1393,9 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
}, {
key: "hookupFilter",
value: function hookupFilter(filterFlag) {
var _this4 = this;
var handler = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (event, filter) {
return TableBasePage.isDirtyFilter(filter);
return _this4.handleChangeFilter(event, filter);
};
var filterSelector = idFormFilters + ' #' + filterFlag;
this.hookupEventHandler("change", filterSelector, handler);
@@ -1402,6 +1404,44 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
filter.setAttribute(attrValueCurrent, filterValuePrevious);
filter.setAttribute(attrValuePrevious, filterValuePrevious);
}
}, {
key: "handleChangeFilter",
value: function handleChangeFilter(event, filter) {
var isDirtyFilter = DOM.updateAndCheckIsElementDirty(filter);
var formFilters = TableBasePage.getFormFilters();
var areDirtyFilters = isDirtyFilter || DOM.hasDirtyChildrenContainer(formFilters);
var tbody = document.querySelector(idTableMain + ' tbody');
var rows = tbody.querySelectorAll(':scope > tr');
rows.forEach(function (row) {
if (areDirtyFilters && !row.classList.contains(flagIsCollapsed)) row.classList.add(flagIsCollapsed);
if (!areDirtyFilters && row.classList.contains(flagIsCollapsed)) {
row.classList.remove(flagIsCollapsed);
var dirtyInputs = row.querySelectorAll('input.' + flagDirty);
dirtyInputs.forEach(function (dirtyInput) {
dirtyInput.value = DOM.getElementAttributeValueCurrent(dirtyInput);
});
}
});
if (areDirtyFilters) {
/*
tbody.querySelectorAll('tr').forEach((tr) => {
if (!DOM.hasDirtyChildrenContainer(tr)) tr.remove();
});
*/
tbody.innerHTML = '<div>Press "Apply Filters" to refresh the table.</div>' + tbody.innerHTML;
if (!tbody.classList.contains(flagIsCollapsed)) tbody.classList.add(flagIsCollapsed);
} else {
var isDirtyLabel = tbody.querySelector(":scope > div");
if (isDirtyLabel != null) isDirtyLabel.remove();
if (tbody.classList.contains(flagIsCollapsed)) tbody.classList.remove(flagIsCollapsed);
var initialisedElements = tbody.querySelectorAll('.' + flagInitialised);
initialisedElements.forEach(function (initialisedElement) {
initialisedElement.classList.remove(flagInitialised);
});
this.hookupTableMain();
}
this.updateAndToggleShowButtonsSaveCancel();
}
}, {
key: "hookupFilterIsNotEmpty",
value: function hookupFilterIsNotEmpty() {
@@ -1410,10 +1450,10 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
}, {
key: "hookupButtonApplyFilters",
value: function hookupButtonApplyFilters() {
var _this3 = this;
var _this5 = this;
this.hookupEventHandler("click", idButtonApplyFilters, function (event, button) {
event.stopPropagation();
_this3.callFilterTableContent();
_this5.callFilterTableContent();
});
}
}, {
@@ -1429,8 +1469,9 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
}, {
key: "hookupFilterCommandCategory",
value: function hookupFilterCommandCategory() {
var _this6 = this;
this.hookupFilter(attrIdCommandCategory, function (event, filterCommandCategory) {
TableBasePage.isDirtyFilter(filterCommandCategory);
_this6.handleChangeFilter();
var isDirtyFilter = filterCommandCategory.classList.contains(flagDirty);
var idCommandCategory = DOM.getElementValueCurrent(filterCommandCategory);
console.log("filter commands unsorted");
@@ -1467,15 +1508,10 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
.catch(error => console.error('Error:', error));
}
*/
}, {
key: "getFormFilters",
value: function getFormFilters() {
return document.querySelector(idFormFilters);
}
}, {
key: "callFilterTableContent",
value: function callFilterTableContent() {
var formFilters = this.getFormFilters();
var formFilters = TableBasePage.getFormFilters();
var filtersJson = DOM.convertForm2JSON(formFilters);
utils_Utils.consoleLogIfNotProductionEnvironment("callFilterTableContent");
utils_Utils.consoleLogIfNotProductionEnvironment("formFilters");
@@ -1512,10 +1548,10 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
}, {
key: "getAndLoadFilteredTableContentSinglePageApp",
value: function getAndLoadFilteredTableContentSinglePageApp() {
var _this4 = this;
var _this7 = this;
this.callFilterTableContent().then(function (data) {
utils_Utils.consoleLogIfNotProductionEnvironment('Table data received:', data);
_this4.callbackLoadTableContent(data);
_this7.callbackLoadTableContent(data);
})["catch"](function (error) {
return console.error('Error:', error);
});
@@ -1530,13 +1566,13 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
}, {
key: "saveRecordsTableDirty",
value: function saveRecordsTableDirty() {
var _this5 = this;
var _this8 = this;
var records = this.getTableRecords(true);
if (records.length == 0) {
OverlayError.show('No records to save');
return;
}
var formElement = this.getFormFilters();
var formElement = TableBasePage.getFormFilters();
var comment = DOM.getElementValueCurrent(document.querySelector(idTextareaConfirm));
/*
Utils.consoleLogIfNotProductionEnvironment({ formElement, comment, records });
@@ -1550,7 +1586,7 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
utils_Utils.consoleLogIfNotProductionEnvironment('Records saved!');
utils_Utils.consoleLogIfNotProductionEnvironment('Data received:', data);
}
_this5.callFilterTableContent();
_this8.callFilterTableContent();
} else {
utils_Utils.consoleLogIfNotProductionEnvironment("error: ", data[flagMessage]);
OverlayError.show(data[flagMessage]);
@@ -1562,13 +1598,13 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
}, {
key: "getTableRecords",
value: function getTableRecords() {
var _this6 = this;
var _this9 = this;
var dirtyOnly = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
var records = [];
var record;
document.querySelectorAll(idTableMain + ' > tbody > tr').forEach(function (row) {
if (dirtyOnly && !DOM.hasDirtyChildrenContainer(row)) return;
record = _this6.getJsonRow(row);
record = _this9.getJsonRow(row);
records.push(record);
});
return records;
@@ -1581,13 +1617,13 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
}, {
key: "saveRecordsTableDirtySinglePageApp",
value: function saveRecordsTableDirtySinglePageApp() {
var _this7 = this;
var _this10 = this;
var records = this.getTableRecords(true);
if (records.length == 0) {
OverlayError.show('No records to save');
return;
}
var formElement = this.getFormFilters();
var formElement = TableBasePage.getFormFilters();
var comment = DOM.getElementValueCurrent(document.querySelector(idTextareaConfirm));
this.callSaveTableContent(records, formElement, comment).then(function (data) {
if (data[flagStatus] == flagSuccess) {
@@ -1595,7 +1631,7 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
utils_Utils.consoleLogIfNotProductionEnvironment('Records saved!');
utils_Utils.consoleLogIfNotProductionEnvironment('Data received:', data);
}
_this7.callbackLoadTableContent(data);
_this10.callbackLoadTableContent(data);
} else {
utils_Utils.consoleLogIfNotProductionEnvironment("error: ", data[flagMessage]);
OverlayError.show(data[flagMessage]);
@@ -1607,13 +1643,13 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
}, {
key: "hookupButtonCancel",
value: function hookupButtonCancel() {
var _this8 = this;
var _this11 = this;
Events.initialiseEventHandler(idFormFilters + ' button.' + flagCancel, flagInitialised, function (button) {
button.addEventListener("click", function (event) {
event.stopPropagation();
button = event.target;
if (button.classList.contains(flagIsCollapsed)) return;
_this8.callFilterTableContent();
_this11.callFilterTableContent();
});
button.classList.add(flagIsCollapsed);
});
@@ -1649,14 +1685,14 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
}, {
key: "hookupTableMain",
value: function hookupTableMain() {
var _this9 = this;
var _this12 = this;
if (this.constructor === TableBasePage) {
throw new Error("Must implement hookupTableMain() method.");
}
if (true) {
// _rowBlank == null) {
Events.initialiseEventHandler(idTableMain, flagInitialised, function (table) {
_this9.cacheRowBlank();
_this12.cacheRowBlank();
});
}
}
@@ -1702,9 +1738,9 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
}, {
key: "hookupChangeHandlerTableCells",
value: function hookupChangeHandlerTableCells(inputSelector) {
var _this10 = this;
var _this13 = this;
var handler = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (event, element) {
_this10.handleChangeNestedElementCellTable(event, element);
_this13.handleChangeNestedElementCellTable(event, element);
};
Events.initialiseEventHandler(inputSelector, flagInitialised, function (input) {
input.addEventListener("change", function (event) {
@@ -1836,9 +1872,9 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
}, {
key: "hookupChangeHandlerTableCellsWhenNotCollapsed",
value: function hookupChangeHandlerTableCellsWhenNotCollapsed(inputSelector) {
var _this11 = this;
var _this14 = this;
var handler = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (event, element) {
if (!element.classList.contains(flagIsCollapsed)) _this11.handleChangeNestedElementCellTable(event, element);
if (!element.classList.contains(flagIsCollapsed)) _this14.handleChangeNestedElementCellTable(event, element);
};
this.hookupEventHandler("change", inputSelector, handler);
}
@@ -1865,10 +1901,10 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
}, {
key: "hookupFieldsActive",
value: function hookupFieldsActive() {
var _this12 = this;
var _this15 = this;
var flagTable = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
var handleClickRowNew = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (event, element) {
_this12.handleClickAddRowTable(event, element);
_this15.handleClickAddRowTable(event, element);
};
var selectorButton = 'table' + (Validation.isEmpty(flagTable) ? '' : '.' + flagTable) + ' > tbody > tr > td.' + flagActive + ' .' + flagButton + '.' + flagActive;
var selectorButtonDelete = selectorButton + '.' + flagDelete;
@@ -1883,12 +1919,12 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
}, {
key: "hookupButtonsRowDelete",
value: function hookupButtonsRowDelete(selectorButtonDelete, selectorButtonUndelete) {
var _this13 = this;
var _this16 = this;
var changeHandler = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function (event, element) {
_this13.handleChangeNestedElementCellTable(event, element);
_this16.handleChangeNestedElementCellTable(event, element);
};
this.hookupEventHandler("click", selectorButtonDelete, function (event, element) {
_this13.handleClickButtonRowDelete(event, element, selectorButtonDelete, selectorButtonUndelete, function (changeEvent, changeElement) {
_this16.handleClickButtonRowDelete(event, element, selectorButtonDelete, selectorButtonUndelete, function (changeEvent, changeElement) {
changeHandler(changeEvent, changeElement);
});
});
@@ -1896,9 +1932,9 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
}, {
key: "handleClickButtonRowDelete",
value: function handleClickButtonRowDelete(event, element, selectorButtonDelete, selectorButtonUndelete) {
var _this14 = this;
var _this17 = this;
var changeHandler = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : function (event, element) {
_this14.handleChangeNestedElementCellTable(event, element);
_this17.handleChangeNestedElementCellTable(event, element);
};
if (element.tagName.toUpperCase() != 'SVG') element = element.parentElement;
var valuePrevious = DOM.getElementAttributeValuePrevious(element);
@@ -1923,12 +1959,12 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
}, {
key: "hookupButtonsRowUndelete",
value: function hookupButtonsRowUndelete(selectorButtonDelete, selectorButtonUndelete) {
var _this15 = this;
var _this18 = this;
var changeHandler = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function (event, element) {
_this15.handleChangeNestedElementCellTable(event, element);
_this18.handleChangeNestedElementCellTable(event, element);
};
this.hookupEventHandler("click", selectorButtonUndelete, function (event, element) {
_this15.handleClickButtonRowUndelete(event, element, selectorButtonDelete, selectorButtonUndelete, function (changeEvent, changeElement) {
_this18.handleClickButtonRowUndelete(event, element, selectorButtonDelete, selectorButtonUndelete, function (changeEvent, changeElement) {
changeHandler(changeEvent, changeElement);
});
});
@@ -1936,9 +1972,9 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
}, {
key: "handleClickButtonRowUndelete",
value: function handleClickButtonRowUndelete(event, element, selectorButtonDelete, selectorButtonUndelete) {
var _this16 = this;
var _this19 = this;
var changeHandler = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : function (event, element) {
_this16.handleChangeNestedElementCellTable(event, element);
_this19.handleChangeNestedElementCellTable(event, element);
};
if (element.tagName.toUpperCase() != 'SVG') element = element.parentElement;
var valuePrevious = DOM.getElementAttributeValuePrevious(element);
@@ -1963,17 +1999,17 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
}, {
key: "hookupTableCellDdlPreviews",
value: function hookupTableCellDdlPreviews(fieldFlag, optionList) {
var _this17 = this;
var _this20 = this;
var cellSelector = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
var ddlHookup = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : function (ddlSelector) {
_this17.hookupTableCellDdls(ddlSelector);
_this20.hookupTableCellDdls(ddlSelector);
};
var changeHandler = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : function (event, element) {
_this17.handleChangeNestedElementCellTable(event, element);
_this20.handleChangeNestedElementCellTable(event, element);
};
if (cellSelector == null) cellSelector = idTableMain + ' > tbody > tr > td.' + fieldFlag;
this.hookupEventHandler("click", cellSelector + ' div.' + fieldFlag, function (event, div) {
_this17.handleClickTableCellDdlPreview(event, div, fieldFlag, optionList, cellSelector, function (ddlSelector) {
_this20.handleClickTableCellDdlPreview(event, div, fieldFlag, optionList, cellSelector, function (ddlSelector) {
ddlHookup(ddlSelector, function (event, element) {
changeHandler(event, element);
});
@@ -1984,9 +2020,9 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
}, {
key: "hookupTableCellDdls",
value: function hookupTableCellDdls(ddlSelector) {
var _this18 = this;
var _this21 = this;
var changeHandler = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (event, element) {
_this18.handleChangeNestedElementCellTable(event, element);
_this21.handleChangeNestedElementCellTable(event, element);
};
this.hookupEventHandler("change", ddlSelector, function (event, element) {
changeHandler(event, element);
@@ -1995,10 +2031,10 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
}, {
key: "handleClickTableCellDdlPreview",
value: function handleClickTableCellDdlPreview(event, div, fieldFlag, optionObjectList) {
var _this19 = this;
var _this22 = this;
var cellSelector = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;
var ddlHookup = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : function (cellSelector) {
_this19.hookupTableCellDdls(cellSelector);
_this22.hookupTableCellDdls(cellSelector);
};
if (Validation.isEmpty(cellSelector)) cellSelector = idTableMain + ' > tbody > tr > td.' + fieldFlag;
var idSelected = DOM.getElementAttributeValueCurrent(div);
@@ -2046,19 +2082,19 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
}, {
key: "hookupFieldsCommandCategory",
value: function hookupFieldsCommandCategory() {
var _this20 = this;
var _this23 = this;
this.hookupTableCellDdlPreviews(flagCommandCategory, utils_Utils.getListFromDict(filterCommandCategories).sort(function (a, b) {
return a[flagName].localeCompare(b[flagName]);
}), null, function (cellSelector) {
_this20.hookupCommandCategoryDdls(cellSelector);
_this23.hookupCommandCategoryDdls(cellSelector);
});
}
}, {
key: "hookupCommandCategoryDdls",
value: function hookupCommandCategoryDdls(ddlSelector) {
var _this21 = this;
var _this24 = this;
this.hookupChangeHandlerTableCells(ddlSelector, function (event, element) {
_this21.handleChangeCommandCategoryDdl(event, element);
_this24.handleChangeCommandCategoryDdl(event, element);
});
}
}, {
@@ -2092,7 +2128,7 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
}, {
key: "hookupFieldsCommand",
value: function hookupFieldsCommand() {
var _this22 = this;
var _this25 = this;
this.hookupEventHandler("click", idTableMain + ' td.' + flagCommand + ' .' + flagCommand, function (event, div) {
utils_Utils.consoleLogIfNotProductionEnvironment(div);
var parentTr = DOM.getRowFromElement(div);
@@ -2101,8 +2137,8 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
parentTr: parentTr
});
var tdCommandCategory = parentTr.querySelector('td.' + flagCommandCategory);
var idCommandCategoryRow = _this22.getIdCommandCategoryRow(parentTr); // DOM.getElementAttributeValueCurrent(tdCommandCategory);
var idCommandCategoryFilter = _this22.getIdCommandCategoryFilter();
var idCommandCategoryRow = _this25.getIdCommandCategoryRow(parentTr); // DOM.getElementAttributeValueCurrent(tdCommandCategory);
var idCommandCategoryFilter = _this25.getIdCommandCategoryFilter();
var filterCommandList = utils_Utils.getListFromDict(filterCommands);
var commandsInCategory = filterCommandList.filter(function (command) {
return (command[attrIdCommandCategory] == idCommandCategoryRow || idCommandCategoryRow == 0) && (command[attrIdCommandCategory] == idCommandCategoryFilter || idCommandCategoryFilter == 0);
@@ -2118,9 +2154,9 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
commandsInCategory: commandsInCategory
});
utils_Utils.consoleLogIfNotProductionEnvironment(filterCommandList);
_this22.handleClickTableCellDdlPreview(event, div, flagCommand, sortedCommands, null, function (cellSelector) {
_this22.hookupTableCellDdls(cellSelector, function (event, element) {
_this22.handleChangeNestedElementCellTable(event, element);
_this25.handleClickTableCellDdlPreview(event, div, flagCommand, sortedCommands, null, function (cellSelector) {
_this25.hookupTableCellDdls(cellSelector, function (event, element) {
_this25.handleChangeNestedElementCellTable(event, element);
});
});
});
@@ -2135,7 +2171,7 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
}, {
key: "getIdCommandCategoryFilter",
value: function getIdCommandCategoryFilter() {
var formFilters = this.getFormFilters();
var formFilters = TableBasePage.getFormFilters();
var commandCategoryFilter = formFilters.querySelector('#' + attrIdCommandCategory);
var commandFilter = formFilters.querySelector('#' + attrIdCommand);
var idCommandCategory = 0;
@@ -2172,7 +2208,7 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
}, {
key: "getIdCommandFilter",
value: function getIdCommandFilter() {
var formFilters = this.getFormFilters();
var formFilters = TableBasePage.getFormFilters();
var commandFilter = formFilters.querySelector('#' + attrIdCommand);
var valueCurrentCommandFilter = DOM.getElementAttributeValueCurrent(commandFilter);
var idCommand = Number(valueCurrentCommandFilter);
@@ -2215,7 +2251,7 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
throw new Error("Must implement leave() method.");
}
base_table_superPropGet(TableBasePage, "leave", this, 3)([]);
var formFilters = this.getFormFilters();
var formFilters = TableBasePage.getFormFilters();
var dataPage = {};
dataPage[flagFormFilters] = DOM.convertForm2JSON(formFilters);
this.setLocalStoragePage(dataPage);
@@ -2240,35 +2276,15 @@ var TableBasePage = /*#__PURE__*/function (_BasePage) {
key: "updateAndToggleShowButtonsSaveCancel",
value: function updateAndToggleShowButtonsSaveCancel() {
var records = this.getTableRecords(true);
var existsDirtyRecord = records.length > 0;
this.toggleShowButtonsSaveCancel(existsDirtyRecord);
var isDirtyMainTable = records.length > 0;
var formFilters = TableBasePage.getFormFilters();
var areDirtyFilters = DOM.hasDirtyChildrenContainer(formFilters);
this.toggleShowButtonsSaveCancel(isDirtyMainTable && !areDirtyFilters);
}
}], [{
key: "isDirtyFilter",
value: function isDirtyFilter(filter) {
var isDirty = DOM.updateAndCheckIsElementDirty(filter);
var tbody = document.querySelector(idTableMain + ' tbody');
var rows = tbody.querySelectorAll(':scope > tr');
var cancelButton = document.querySelector(idFormFilters + ' ' + idButtonCancel);
var saveButton = document.querySelector(idFormFilters + ' ' + idButtonSave);
rows.forEach(function (row) {
if (isDirty && !row.classList.contains(flagIsCollapsed)) row.classList.add(flagIsCollapsed);
if (!isDirty && row.classList.contains(flagIsCollapsed)) row.classList.remove(flagIsCollapsed);
});
if (isDirty) {
// tbody.querySelectorAll('tr').forEach((tr) => { tr.remove(); });
tbody.innerHTML = '<div>Press "Apply Filters" to refresh the table.</div>' + tbody.innerHTML;
if (!tbody.classList.contains(flagIsCollapsed)) tbody.classList.add(flagIsCollapsed);
if (!cancelButton.classList.contains(flagIsCollapsed)) cancelButton.classList.add(flagIsCollapsed);
if (!saveButton.classList.contains(flagIsCollapsed)) saveButton.classList.add(flagIsCollapsed);
} else {
if (tbody.classList.contains(flagIsCollapsed)) tbody.classList.remove(flagIsCollapsed);
if (cancelButton.classList.contains(flagIsCollapsed)) cancelButton.classList.remove(flagIsCollapsed);
if (saveButton.classList.contains(flagIsCollapsed)) saveButton.classList.remove(flagIsCollapsed);
var isDirtyLabel = tbody.querySelector(":scope > div");
if (isDirtyLabel != null) isDirtyLabel.remove();
}
return isDirty;
key: "getFormFilters",
value: function getFormFilters() {
return document.querySelector(idFormFilters);
}
}, {
key: "getTableMain",

File diff suppressed because one or more lines are too long