218 lines
11 KiB
JavaScript
218 lines
11 KiB
JavaScript
|
|
import API from "../../api.js";
|
|
import BusinessObjects from "../../lib/business_objects/business_objects.js";
|
|
import DOM from "../../dom.js";
|
|
import Events from "../../lib/events.js";
|
|
import TableBasePage from "../base_table.js";
|
|
import Utils from "../../lib/utils.js";
|
|
import Validation from "../../lib/validation.js";
|
|
import DogTableMixinPage from "./mixin_table.js";
|
|
|
|
export default class PageDogDogCommandLinks extends TableBasePage {
|
|
static hash = hashPageDogDogCommandLinks;
|
|
static attrIdRowObject = attrIdDogCommandLink;
|
|
callSaveTableContent = API.saveDogCommandLinks;
|
|
|
|
constructor(router) {
|
|
super(router);
|
|
this.dogMixin = new DogTableMixinPage(this);
|
|
}
|
|
|
|
initialize() {
|
|
this.sharedInitialize();
|
|
}
|
|
|
|
hookupFilters() {
|
|
this.sharedHookupFilters();
|
|
this.hookupFilterDog();
|
|
this.hookupFilterCommandCategory();
|
|
this.hookupFilterCommand();
|
|
this.hookupFilterActive();
|
|
}
|
|
hookupFilterDog() {
|
|
this.hookupFilter(attrIdDog);
|
|
}
|
|
hookupFilterCommandCategory() {
|
|
this.hookupFilter(attrIdCommandCategory, (event, filterCommandCategory) => {
|
|
// loadDogCommandLinks();
|
|
// let wasDirtyFilter = filterCommandCategory.classList.contains(flagDirty);
|
|
PageDogDogCommandLinks.isDirtyFilter(filterCommandCategory);
|
|
let isDirtyFilter = filterCommandCategory.classList.contains(flagDirty);
|
|
let idCommandCategory = DOM.getElementValueCurrent(filterCommandCategory);
|
|
let commands = filterCommands.filter(command => command[attrIdCommandCategory] == idCommandCategory);
|
|
let filterCommand = document.querySelector(idFormFilters + ' .' + flagCommand);
|
|
let idCommandPrevious = filterCommand.getAttribute(attrValuePrevious);
|
|
filterCommand.innerHTML = '';
|
|
let optionJson, option;
|
|
option = DOM.createOption(null);
|
|
filterCommand.appendChild(option);
|
|
commands.forEach((command) => {
|
|
optionJson = BusinessObjects.getOptionJsonFromObjectJson(command, idCommandPrevious);
|
|
option = DOM.createOption(optionJson);
|
|
filterCommand.appendChild(option);
|
|
});
|
|
filterCommand.dispatchEvent(new Event('change'));
|
|
return isDirtyFilter;
|
|
});
|
|
}
|
|
hookupFilterCommand() {
|
|
this.hookupFilter(attrIdCommand);
|
|
}
|
|
|
|
loadRowTable(rowJson) {
|
|
if (rowJson == null) return;
|
|
if (_verbose) { console.log("applying data row: ", rowJson); }
|
|
/*
|
|
let tableMain = TableBasePage.getTableMain();
|
|
let row = _rowBlank.cloneNode(true);
|
|
row.classList.remove(flagRowNew);
|
|
let dllDog = row.querySelector('td.' + flagDog + ' select');
|
|
dllDog.value = rowJson[attrIdDog];
|
|
let ddlCommand = row.querySelector('td.' + flagCommand + ' select');
|
|
let optionJson, option;
|
|
listCommands.forEach(function(command) {
|
|
if (command[attrIdDog] != rowJson[attrIdDog]) return;
|
|
optionJson = BusinessObjects.getOptionJsonFromObjectJson(command);
|
|
option = DOM.createOption(optionJson, rowJson[attrIdCommand]);
|
|
ddlCommand.appendChild(option);
|
|
});
|
|
ddlCommand.value = rowJson[attrIdCommand];
|
|
row.querySelector('td.' + flagCommandVariations + ' textarea').value = rowJson[flagCommandVariations];
|
|
let tdCommandVariations = row.querySelector('td.' + flagCommandVariations);
|
|
let textareaCommandVariations = tdCommandVariations.querySelector('textarea');
|
|
DOM.setElementValuesCurrentAndPrevious(textareaCommandVariations, rowJson[flagCommandVariations]);
|
|
let thCommandVariations = row.querySelector('td.' + flagCommandVariations);
|
|
if (!thCommandVariations.classList.contains(flagCollapsed)) tdCommandVariations.classList.remove(flagCollapsed);
|
|
let inputDescription = row.querySelector('td.' + flagDescription + ' textarea');
|
|
DOM.setElementValuesCurrentAndPrevious(inputDescription, rowJson[flagDescription]);
|
|
let inputCostLocal = row.querySelector('td.' + flagCostLocal + ' input');
|
|
DOM.setElementValuesCurrentAndPrevious(inputCostLocal, rowJson[flagCostLocal]);
|
|
let tdCurrencyCost = row.querySelector('td.' + flagCurrencyCost);
|
|
DOM.setElementAttributesValuesCurrentAndPrevious(tdCurrencyCost, rowJson[flagCurrencyCost]);
|
|
let ddlCurrencyCost = tdCurrencyCost.querySelector('select');
|
|
DOM.setElementValuesCurrentAndPrevious(ddlCurrencyCost, rowJson[flagCurrencyCost]);
|
|
let inputProfitLocalMin = row.querySelector('td.' + flagProfitLocalMin + ' input');
|
|
DOM.setElementValuesCurrentAndPrevious(inputProfitLocalMin, rowJson[flagProfitLocalMin]);
|
|
let inputLatencyManufactureDays = row.querySelector('td.' + flagLatencyManufacture + ' input');
|
|
DOM.setElementValuesCurrentAndPrevious(inputLatencyManufactureDays, rowJson[flagLatencyManufacture]);
|
|
let inputQuantityStock = row.querySelector('td.' + flagQuantityStock + ' input');
|
|
DOM.setElementValuesCurrentAndPrevious(inputQuantityStock, rowJson[flagQuantityStock]);
|
|
let inputQuantityMin = row.querySelector('td.' + flagQuantityMin + ' input');
|
|
DOM.setElementValuesCurrentAndPrevious(inputQuantityMin, rowJson[flagQuantityMin]);
|
|
let inputQuantityMax = row.querySelector('td.' + flagQuantityMax + ' input');
|
|
DOM.setElementValuesCurrentAndPrevious(inputQuantityMax, rowJson[flagQuantityMax]);
|
|
let inputQuantityStep = row.querySelector('td.' + flagCountUnitMeasurementPerQuantityStep + ' input');
|
|
DOM.setElementValuesCurrentAndPrevious(inputQuantityStep, rowJson[flagCountUnitMeasurementPerQuantityStep]);
|
|
|
|
|
|
|
|
row.querySelector('td.' + flagQuantityStock + ' input').value = rowJson[flagQuantityStock];
|
|
row.querySelector('td.' + flagQuantityMin + ' input').value = rowJson[flagQuantityMin];
|
|
row.querySelector('td.' + flagQuantityMax + ' input').value = rowJson[flagQuantityMax];
|
|
row.querySelector('td.' + flagCostLocal).innerHTML = rowJson[flagCostLocal];
|
|
row.setAttribute(attrIdDog, rowJson[flagDog]);
|
|
row.setAttribute(attrIdCommand, rowJson[flagCommand]);
|
|
row.setAttribute(attrIdDogCommandLink, rowJson[attrIdDogCommandLink]);
|
|
let tbody = tableMain.querySelector('tbody');
|
|
tbody.appendChild(row);
|
|
*/
|
|
}
|
|
getJsonRow(row) {
|
|
if (row == null) return;
|
|
let tdDog = row.querySelector('td.' + flagDog);
|
|
let tdCommand = row.querySelector('td.' + flagCommand);
|
|
let inputHandSignalDescription = row.querySelector('td.' + flagHandSignalDescription + ' textarea');
|
|
let inputNotes = row.querySelector('td.' + flagNotes + ' textarea');
|
|
let buttonActive = row.querySelector('td.' + flagActive + ' .' + flagActive);
|
|
|
|
let jsonRow = {};
|
|
jsonRow[attrIdDogCommandLink] = row.getAttribute(attrIdDogCommandLink);
|
|
jsonRow[attrIdDog] = tdDog.getAttribute(attrValueCurrent);
|
|
jsonRow[attrIdCommand] = tdCommand.getAttribute(attrValueCurrent);
|
|
jsonRow[flagHandSignalDescription] = inputHandSignalDescription.getAttribute(attrValueCurrent);
|
|
jsonRow[flagNotes] = inputNotes.getAttribute(attrValueCurrent);
|
|
jsonRow[flagActive] = buttonActive.classList.contains(flagDelete);
|
|
return jsonRow;
|
|
}
|
|
initialiseRowNew(tbody, row) {
|
|
/*
|
|
this.initialiseRowNewDdlsDog(row);
|
|
this.initialiseRowNewDdlsCommandCategory(row);
|
|
this.initialiseRowNewDdlsCommand(row);
|
|
this.initialiseRowNewDdlsDogAndCommand(row);
|
|
let checkboxIsSubscription = row.querySelector('td.' + flagIsSubscription + ' input');
|
|
let checkboxDoesExpireFasterOnceUnsealed = row.querySelector('td.' + flagDoesExpireFasterOnceUnsealed + ' input');
|
|
this.handleChangeCheckboxDoesExpireFasterOnceUnsealed(null, checkboxDoesExpireFasterOnceUnsealed);
|
|
this.handleChangeCheckboxIsSubscription(null, checkboxIsSubscription);
|
|
*/
|
|
}
|
|
initialiseRowNewDdlsDog(row) {
|
|
let ddlDogFilter = document.querySelector(idFormFilters + ' #' + attrIdDog);
|
|
let idDogFilter = DOM.getElementValueCurrent(ddlDogFilter);
|
|
let hasDogFilter = !(Validation.isEmpty(idDogFilter) || idDogFilter == '0');
|
|
if (_verbose) {
|
|
console.log("initialiseRowNew: ", row);
|
|
console.log({ ddlDogFilter, idDogFilter, hasDogFilter });
|
|
}
|
|
if (!hasDogFilter) return;
|
|
let ddlDog = row.querySelector('td.' + flagDog + ' select');
|
|
DOM.setElementValuesCurrentAndPrevious(ddlDog, idDogFilter);
|
|
this.handleChangeDogDdl(null, ddlDog);
|
|
}
|
|
initialiseRowNewDdlsCommandCategory(row) {
|
|
let idCommandCategoryFilter = this.getIdCommandCategoryFilter();
|
|
let hasCommandCategoryFilter = this.getHasCommandCategoryFilter();
|
|
if (_verbose) {
|
|
console.log("initialiseRowNew: ", row);
|
|
console.log({ddlDogFilter, idDogFilter, hasDogFilter, idCommandCategoryFilter, hasCommandCategoryFilter});
|
|
}
|
|
if (!hasCommandCategoryFilter) return;
|
|
let ddlCommandCategory = row.querySelector('td.' + flagCommandCategory + ' select');
|
|
DOM.setElementValuesCurrentAndPrevious(ddlCommandCategory, idCommandCategoryFilter);
|
|
}
|
|
initialiseRowNewDdlsCommand(row) {
|
|
let idCommandFilter = this.getIdCommandFilter();
|
|
let hasCommandFilter = this.getHasCommandFilter();
|
|
if (_verbose) {
|
|
console.log("initialiseRowNew: ", row);
|
|
console.log({ddlDogFilter, idDogFilter, hasDogFilter, ddlCommandFilter, idCommandFilter, hasCommandFilter});
|
|
}
|
|
if (!hasCommandFilter) return;
|
|
let ddlCommand = row.querySelector('td.' + flagCommand + ' select');
|
|
DOM.setElementValuesCurrentAndPrevious(ddlCommand, idCommandFilter);
|
|
}
|
|
postInitialiseRowNewCallback(tbody) {
|
|
let newRows = tbody.querySelectorAll('tr.' + flagRowNew);
|
|
let newestRow = newRows[newRows.length - 1];
|
|
let clickableElementsSelector = [
|
|
'td.' + flagDog + ' div.' + flagDog
|
|
, ',td.' + flagCommandCategory + ' div.' + flagCommandCategory
|
|
, ',td.' + flagCommand + ' div.' + flagCommand
|
|
].join('');
|
|
newestRow.querySelectorAll(clickableElementsSelector).forEach((clickableElement) => {
|
|
clickableElement.click();
|
|
});
|
|
}
|
|
|
|
hookupTableMain() {
|
|
super.hookupTableMain();
|
|
this.hookupFieldsDog();
|
|
this.hookupFieldsCommandCategory();
|
|
this.hookupFieldsCommand();
|
|
this.hookupTextareasHandSignalDescription();
|
|
this.hookupTextareasNotes();
|
|
this.hookupFieldsActive();
|
|
}
|
|
hookupTextareasHandSignalDescription() {
|
|
this.hookupChangeHandlerTableCells(idTableMain + ' td.' + flagHandSignalDescription + ' textarea');
|
|
}
|
|
hookupTextareasNotes() {
|
|
this.hookupChangeHandlerTableCells(idTableMain + ' td.' + flagNotes + ' textarea');
|
|
}
|
|
|
|
leave() {
|
|
super.leave();
|
|
}
|
|
}
|
|
|