Files
dog_training/static/js/pages/dog/assessment.js

1036 lines
58 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";
var _rowBlankDistraction;
var _rowBlankAssessmentCommandLink;
export default class PageDogAssessment extends TableBasePage {
static hash = hashPageDogAssessment;
static attrIdRowObject = attrIdAssessment;
callSaveTableContent = API.saveAssessmentsDistractionsAndResponses;
constructor(router) {
super(router);
this.dogMixin = new DogTableMixinPage(this);
}
initialize() {
this.sharedInitialize();
}
hookupFilters() {
}
loadRowTable(rowJson) {
if (rowJson == null) return;
if (_verbose) { Utils.consoleLogIfNotProductionEnvironment("applying data row: ", rowJson); }
}
getTableRecords(dirtyOnly = false) {
dirtyOnly = true;
let row = document.querySelector(idTableAssessment + ' tbody tr.' + flagAssessment);
return [this.getJsonRow(row)];
}
getJsonRow(row) {
console.log("getJsonRow: ", row);
if (row == null) return;
let inputAssessmentType = row.querySelector(idTableAssessment + ' td.' + flagAssessmentType + ' .' + flagAssessmentType);
let inputWeather = row.querySelector(idTableAssessment + ' td.' + flagWeather + ' .' + flagWeather);
let inputLightingLevel = row.querySelector(idTableAssessment + ' td.' + flagLightingLevel + ' .' + flagLightingLevel);
let inputTemeratureCelcius = row.querySelector(idTableAssessment + ' td.' + flagTemperatureCelcius + ' .' + flagTemperatureCelcius);
let inputLocation = row.querySelector(idTableAssessment + ' td.' + flagLocation + ' .' + flagLocation);
let inputUserHandler = row.querySelector(idTableAssessment + ' td.' + flagUserHandler + ' .' + flagUserHandler);
let inputStartOn = row.querySelector(idTableAssessment + ' td.' + flagStartOn + ' .' + flagStartOn);
let inputEndOn = row.querySelector(idTableAssessment + ' td.' + flagEndOn + ' .' + flagEndOn);
let inputNotes = row.querySelector(idTableAssessment + ' td.' + flagNotes + ' .' + flagNotes);
// let buttonActive = row.querySelector(idTableAssessment + ' td.' + flagActive + ' .' + flagButton + '.' + flagIcon + '.' + flagActive);
let idAssessment = row.getAttribute(attrIdAssessment);
let jsonRow = {};
jsonRow[attrIdAssessment] = idAssessment;
jsonRow[attrIdAssessmentType] = DOM.getElementAttributeValueCurrent(inputAssessmentType);
jsonRow[attrIdWeather] = DOM.getElementAttributeValueCurrent(inputWeather);
jsonRow[attrIdLightingLevel] = DOM.getElementAttributeValueCurrent(inputLightingLevel);
jsonRow[flagTemperatureCelcius] = DOM.getElementAttributeValueCurrent(inputTemeratureCelcius);
jsonRow[attrIdLocation] = DOM.getElementAttributeValueCurrent(inputLocation);
jsonRow[flagUserHandler] = DOM.getElementAttributeValueCurrent(inputUserHandler);
jsonRow[flagNotes] = DOM.getElementAttributeValueCurrent(inputNotes);
jsonRow[flagStartOn] = DOM.getElementAttributeValueCurrent(inputStartOn);
jsonRow[flagEndOn] = DOM.getElementAttributeValueCurrent(inputEndOn);
jsonRow[flagActive] = true; // buttonActive.classList.contains(flagDelete);
jsonRow[flagAssessmentCommandLink] = this.getDirtyAssessmentCommandLinks(idAssessment);
console.log({ jsonRow });
return jsonRow;
}
getDirtyAssessmentCommandLinks(idAssessment) {
let dirtyRows = document.querySelectorAll(idTableAssessmentCommandLinks + ' > tbody > tr.' + flagAssessmentCommandLink + '.' + flagDirty);
if (dirtyRows == null || dirtyRows.length == 0) return [];
dirtyRows = Array.from(dirtyRows);
let dirtyRow, idAssessmentCommandLink,
inputCommand, command,
inputReinforcementSchedule, reinforcementSchedule,
// inputBribe, bribe,
inputDistanceFromHandler, distanceFromhandler,
inputIsInHearingRangeOfHandler, isInHearingRangeOfHandler,
inputIsInScentRangeOfHandler, isInScentRangeOfHandler,
inputIsInSightOfHandler, isInSightOfHandler,
inputIsOnLead, isOnLead,
inputNotes, notes,
buttonActive, active;
console.log('getDirtyAssessmentCommandLinks');
console.log({ dirtyRows });
let dirtyLinks = [];
for(let indexRow = 0; indexRow < dirtyRows.length; indexRow++) {
dirtyRow = dirtyRows[indexRow];
idAssessmentCommandLink = dirtyRow.getAttribute(attrIdAssessmentCommandLink);
inputCommand = dirtyRow.querySelector('td.' + flagCommand + ' .' + flagCommand);
command = DOM.getElementAttributeValueCurrent(inputCommand);
inputReinforcementSchedule = dirtyRow.querySelector('td.' + flagReinforcementSchedule + ' .' + flagReinforcementSchedule);
reinforcementSchedule = DOM.getElementAttributeValueCurrent(inputReinforcementSchedule);
// inputBribe = dirtyRow.querySelector('td.' + flagBribe + ' .' + flagBribe);
// bribe = DOM.getElementAttributeValueCurrent(inputBribe);
inputDistanceFromHandler = dirtyRow.querySelector('td.' + flagDistanceFromHandlerMetres + ' .' + flagDistanceFromHandlerMetres);
distanceFromhandler = DOM.getElementAttributeValueCurrent(inputDistanceFromHandler);
inputIsInHearingRangeOfHandler = dirtyRow.querySelector('td.' + flagIsInHearingRangeOfHandler + ' .' + flagIsInHearingRangeOfHandler);
isInHearingRangeOfHandler = DOM.getElementAttributeValueCurrent(inputIsInHearingRangeOfHandler);
inputIsInScentRangeOfHandler = dirtyRow.querySelector('td.' + flagIsInScentRangeOfHandler + ' .' + flagIsInScentRangeOfHandler);
isInScentRangeOfHandler = DOM.getElementAttributeValueCurrent(inputIsInScentRangeOfHandler);
inputIsInSightOfHandler = dirtyRow.querySelector('td.' + flagIsInSightOfHandler + ' .' + flagIsInSightOfHandler);
isInSightOfHandler = DOM.getElementAttributeValueCurrent(inputIsInSightOfHandler);
inputIsOnLead = dirtyRow.querySelector('td.' + flagIsOnLead + ' .' + flagIsOnLead);
isOnLead = DOM.getElementAttributeValueCurrent(inputIsOnLead);
inputNotes = dirtyRow.querySelector('td.' + flagNotes + ' .' + flagNotes);
notes = DOM.getElementAttributeValueCurrent(inputNotes);
buttonActive = dirtyRow.querySelector(idTableAssessmentCommandLinks + ' td.' + flagActive + ' .' + flagButton + '.' + flagIcon + '.' + flagActive);
active = buttonActive.classList.contains(flagDelete);
dirtyLinks.push({
[attrIdAssessmentCommandLink]: idAssessmentCommandLink
, [attrIdAssessment]: idAssessment
, [attrIdCommand]: command
, [attrIdReinforcementSchedule]: reinforcementSchedule
// , [attrIdBribe]: bribe
, [flagDistanceFromHandlerMetres]: distanceFromhandler
, [flagIsInHearingRangeOfHandler]: isInHearingRangeOfHandler
, [flagIsInScentRangeOfHandler]: isInScentRangeOfHandler
, [flagIsInSightOfHandler]: isInSightOfHandler
, [flagIsOnLead]: isOnLead
, [flagNotes]: notes
, [flagActive]: active
, [flagAssessmentCommandModalityLink]: this.getDirtyAssessmentCommandModalityLinks(dirtyRow, idAssessmentCommandLink)
, [flagAssessmentCommandTechniqueLink]: this.getDirtyAssessmentCommandTechniqueLinks(dirtyRow, idAssessmentCommandLink)
, [flagDistraction]: this.getDirtyDistractions(dirtyRow, idAssessmentCommandLink)
, [flagAssessmentResponse]: this.getDirtyAssessmentResponses(dirtyRow, idAssessmentCommandLink)
});
}
return dirtyLinks;
}
getDirtyAssessmentCommandModalityLinks(assessmentCommandLinkRow, idAssessmentCommandLink) {
let assessmentCommandModalityLinkRows = assessmentCommandLinkRow.querySelectorAll(idTableAssessmentCommandModalityLinks + ' > tbody > tr.' + flagAssessmentCommandModalityLink + '.' + flagDirty);
if (assessmentCommandModalityLinkRows == null || assessmentCommandModalityLinkRows.length == 0) return [];
// assessmentCommandModalityLinkRows = Array.from(assessmentCommandModalityLinkRows);
let assessmentCommandModalityLinkRow, idAssessmentCommandModalityLink,
inputCommandModality, commandModality,
buttonActive, active;
console.log('getDirtyAssessmentCommandModalityLinks');
console.log({ assessmentCommandModalityLinkRows });
let dirtyLinks = [];
for (let indexRow = 0; indexRow < assessmentCommandModalityLinkRows.length; indexRow++) {
assessmentCommandModalityLinkRow = assessmentCommandModalityLinkRows[indexRow];
idAssessmentCommandLink = assessmentCommandModalityLinkRow.getAttribute(attrIdAssessmentCommandLink);
idAssessmentCommandModalityLink = assessmentCommandModalityLinkRow.getAttribute(attrIdAssessmentCommandModalityLink);
inputCommand = assessmentCommandModalityLinkRow.querySelector('td.' + flagCommand + ' .' + flagCommand);
command = DOM.getElementAttributeValueCurrent(inputCommand);
inputCommandModality = assessmentCommandModalityLinkRow.querySelector('td.' + flagCommandModality + ' .' + flagCommandModality);
commandModality = DOM.getElementAttributeValueCurrent(inputCommandModality);
buttonActive = assessmentCommandModalityLinkRow.querySelector(idTableAssessmentCommandModalityLinks + ' td.' + flagActive + ' .' + flagButton + '.' + flagIcon + '.' + flagActive);
active = buttonActive.classList.contains(flagDelete);
dirtyLinks.push({
[attrIdAssessmentCommandModalityLink]: idAssessmentCommandModalityLink
, [attrIdAssessmentCommandLink]: idAssessmentCommandLink
, [attrIdCommandModality]: commandModality
, [flagActive]: active
});
}
return dirtyLinks;
}
getDirtyAssessmentCommandTechniqueLinks(assessmentCommandLinkRow, idAssessmentCommandLink) {
let assessmentCommandTechniqueLinkRows = assessmentCommandLinkRow.querySelectorAll(idTableAssessmentCommandTechniqueLinks + ' > tbody > tr.' + flagAssessmentCommandTechniqueLink + '.' + flagDirty);
if (assessmentCommandTechniqueLinkRows == null || assessmentCommandTechniqueLinkRows.length == 0) return [];
// assessmentCommandTechniqueLinkRows = Array.from(assessmentCommandTechniqueLinkRows);
let assessmentCommandTechniqueLinkRow, idAssessmentCommandTechniqueLink,
inputTrainingTechnique, trainingTechnique,
buttonActive, active;
console.log('getDirtyAssessmentCommandTechniqueLinks');
console.log({ assessmentCommandTechniqueLinkRows });
let dirtyLinks = [];
for (let indexRow = 0; indexRow < assessmentCommandTechniqueLinkRows.length; indexRow++) {
assessmentCommandTechniqueLinkRow = assessmentCommandTechniqueLinkRows[indexRow];
idAssessmentCommandLink = assessmentCommandTechniqueLinkRow.getAttribute(attrIdAssessmentCommandLink);
idAssessmentCommandTechniqueLink = assessmentCommandTechniqueLinkRow.getAttribute(attrIdAssessmentCommandTechniqueLink);
inputCommand = assessmentCommandTechniqueLinkRow.querySelector('td.' + flagCommand + ' .' + flagCommand);
command = DOM.getElementAttributeValueCurrent(inputCommand);
inputTrainingTechnique = assessmentCommandTechniqueLinkRow.querySelector('td.' + flagTrainingTechnique + ' .' + flagTrainingTechnique);
trainingTechnique = DOM.getElementAttributeValueCurrent(inputTrainingTechnique);
buttonActive = assessmentCommandTechniqueLinkRow.querySelector(idTableAssessmentCommandTechniqueLinks + ' td.' + flagActive + ' .' + flagButton + '.' + flagIcon + '.' + flagActive);
active = buttonActive.classList.contains(flagDelete);
dirtyLinks.push({
[attrIdAssessmentCommandTechniqueLink]: idAssessmentCommandTechniqueLink
, [attrIdAssessmentCommandLink]: idAssessmentCommandLink
, [attrIdTrainingTechnique]: trainingTechnique
, [flagActive]: active
});
}
return dirtyLinks;
}
getDirtyDistractions(assessmentCommandLinkRow, idAssessmentCommandLink) {
let distractionRows = assessmentCommandLinkRow.querySelectorAll(idTableDistractions + ' tbody tr.' + flagDistraction + '.' + flagDirty);
if (distractionRows == null || distractionRows.length == 0) return [];
// dirtyRows = Array.from(dirtyRows);
let distractionRow,
inputDistractionType, distractionType,
inputIntensityLevelEmotional, intensityLevelEmotional,
inputIntensityLevelScent, intensityLevelScent,
inputIntensityLevelSight, intensityLevelSight,
inputIntensityLevelSound, intensityLevelSound,
inputIntensityLevelTouch, intensityLevelTouch,
inputQuantity, quantity,
inputProximityMetres, proximityMetres,
inputNotes, notes,
buttonActive, active;
console.log('getDirtyDistractions');
console.log({ distractionRows });
let dirtyDistractions = [];
for(let indexRow = 0; indexRow < distractionRows.length; indexRow++) {
distractionRow = distractionRows[indexRow];
inputDistractionType = distractionRow.querySelector('td.' + flagDistractionType + ' .' + flagDistractionType);
distractionType = DOM.getElementAttributeValueCurrent(inputDistractionType);
inputIntensityLevelEmotional = distractionRow.querySelector('td.' + flagDistractionIntensityLevelEmotional + ' .' + flagDistractionIntensityLevelEmotional);
intensityLevelEmotional = DOM.getElementAttributeValueCurrent(inputIntensityLevelEmotional);
inputIntensityLevelScent = distractionRow.querySelector('td.' + flagDistractionIntensityLevelScent + ' .' + flagDistractionIntensityLevelScent);
intensityLevelScent = DOM.getElementAttributeValueCurrent(inputIntensityLevelScent);
inputIntensityLevelSight = distractionRow.querySelector('td.' + flagDistractionIntensityLevelSight + ' .' + flagDistractionIntensityLevelSight);
intensityLevelSight = DOM.getElementAttributeValueCurrent(inputIntensityLevelSight);
inputIntensityLevelSound = distractionRow.querySelector('td.' + flagDistractionIntensityLevelSound + ' .' + flagDistractionIntensityLevelSound);
intensityLevelSound = DOM.getElementAttributeValueCurrent(inputIntensityLevelSound);
inputIntensityLevelTouch = distractionRow.querySelector('td.' + flagDistractionIntensityLevelTouch + ' .' + flagDistractionIntensityLevelTouch);
intensityLevelTouch = DOM.getElementAttributeValueCurrent(inputIntensityLevelTouch);
inputQuantity = distractionRow.querySelector('td.' + flagQuantity + ' .' + flagQuantity);
quantity = DOM.getElementAttributeValueCurrent(inputQuantity);
inputProximityMetres = distractionRow.querySelector('td.' + flagProximityMetres + ' .' + flagProximityMetres);
proximityMetres = DOM.getElementAttributeValueCurrent(inputProximityMetres);
inputNotes = distractionRow.querySelector('td.' + flagNotes + ' .' + flagNotes);
notes = DOM.getElementAttributeValueCurrent(inputNotes);
buttonActive = distractionRow.querySelector(idTableDistractions + ' td.' + flagActive + ' .' + flagButton + '.' + flagIcon + '.' + flagActive);
active = buttonActive.classList.contains(flagDelete);
dirtyDistractions.push({
[attrIdDistraction]: distractionRow.getAttribute(attrIdDistraction)
, [attrIdAssessmentCommandLink]: idAssessmentCommandLink
, [attrIdDistractionType]: distractionType
, [flagDistractionIntensityLevelEmotional]: intensityLevelEmotional
, [flagDistractionIntensityLevelScent]: intensityLevelScent
, [flagDistractionIntensityLevelSight]: intensityLevelSight
, [flagDistractionIntensityLevelSound]: intensityLevelSound
, [flagDistractionIntensityLevelTouch]: intensityLevelTouch
, [flagQuantity]: quantity
, [flagProximityMetres]: proximityMetres
, [flagNotes]: notes
, [flagActive]: active
});
};
return dirtyDistractions;
}
getDirtyAssessmentResponses(assessmentCommandLinkRow, idAssessmentCommandLink) {
let assessmentResponseRows = assessmentCommandLinkRow.querySelectorAll(idTableAssessmentResponses + ' tbody tr.' + flagAssessmentResponse + '.' + flagDirty);
if (assessmentResponseRows == null || assessmentResponseRows.length == 0) return [];
// assessmentResponseRows = Array.from(assessmentResponseRows);
let assessmentResponseRow,
inputResponseQualityMetric, responseQualityMetric,
inputObedienceLevel, obedienceLevel,
inputValueMeasured, valueMeasured,
inputNotes, notes,
buttonActive, active;
console.log('getDirtyAssessmentResponses');
console.log({ assessmentResponseRows });
let dirtyResponses = [];
for(let indexRow = 0; indexRow < assessmentResponseRows.length; indexRow++) {
assessmentResponseRow = assessmentResponseRows[indexRow];
inputResponseQualityMetric = assessmentResponseRow.querySelector('td.' + flagResponseQualityMetric + ' .' + flagResponseQualityMetric);
responseQualityMetric = DOM.getElementAttributeValueCurrent(inputResponseQualityMetric);
inputObedienceLevel = assessmentResponseRow.querySelector('td.' + flagObedienceLevel + ' .' + flagObedienceLevel);
obedienceLevel = DOM.getElementAttributeValueCurrent(inputObedienceLevel);
inputValueMeasured = assessmentResponseRow.querySelector('td.' + flagValueMeasured + ' .' + flagValueMeasured);
valueMeasured = DOM.getElementAttributeValueCurrent(inputValueMeasured);
inputNotes = assessmentResponseRow.querySelector('td.' + flagNotes + ' .' + flagNotes);
notes = DOM.getElementAttributeValueCurrent(inputNotes);
buttonActive = assessmentResponseRow.querySelector(idTableAssessmentResponses + ' td.' + flagActive + ' .' + flagButton + '.' + flagIcon + '.' + flagActive);
active = buttonActive.classList.contains(flagDelete);
dirtyResponses.push({
[attrIdAssessmentResponse]: assessmentResponseRow.getAttribute(attrIdAssessmentResponse)
, [attrIdAssessmentCommandLink]: idAssessmentCommandLink
, [attrIdResponseQualityMetric]: responseQualityMetric
, [attrIdObedienceLevel]: obedienceLevel
, [flagValueMeasured]: valueMeasured
, [flagNotes]: notes
, [flagActive]: active
});
}
return dirtyResponses;
}
initialiseRowNew(tbody, row) {
}
postInitialiseRowNewCallback(tbody) {
let newRows = tbody.querySelectorAll('tr.' + flagRowNew);
let newestRow = newRows[0];
let clickableElementsSelector = [
'td.' + flagAssessmentType + ' div.' + flagAssessmentType
, 'td.' + flagWeather + ' div.' + flagWeather
, ',td.' + flagLightingLevel + ' div.' + flagLightingLevel
, ',td.' + flagLocation + ' div.' + flagLocation
, ',td.' + flagUserHandler + ' div.' + flagUserHandler
].join('');
newestRow.querySelectorAll(clickableElementsSelector).forEach((clickableElement) => {
clickableElement.click();
});
}
callFilterTableContent() {
if (assessment[attrIdAssessment] < 1) {
let formFilters = TableBasePage.getFormFilters();
let filterAssessment = formFilters.querySelector('#' + attrIdAssessment);
DOM.setElementValueCurrent(filterAssessment, '');
}
super.callFilterTableContent();
}
hookupTableMain() {
super.hookupTableMain();
this.hookupTableAssessmentHeader();
this.hookupTableAssessmentCommandLinks();
}
hookupTableAssessmentHeader() {
this.hookupTableAssessmentFieldAssessmentType();
this.hookupTableAssessmentFieldWeather();
this.hookupTableAssessmentFieldLightingLevel();
this.hookupTableAssessmentFieldTemperature();
this.hookupTableAssessmentFieldLocation();
this.hookupTableAssessmentFieldUserHandler();
this.hookupTableAssessmentFieldStartOn();
this.hookupTableAssessmentFieldEndOn();
this.hookupTableAssessmentFieldNotes();
if (assessment[attrIdAssessment] < 1) {
let tbody = document.querySelector(idTableAssessment + ' tbody');
let row = tbody.querySelector('tr');
row.classList.add(flagRowNew);
this.postInitialiseRowNewCallback(tbody);
}
}
hookupTableAssessmentFieldAssessmentType() {
let fieldFlag = flagAssessmentType;
let optionList = Utils.getListFromDict(filterAssessmentTypes);
let cellSelector = idTableAssessment + ' td.' + flagAssessmentType;
this.hookupTableCellDdlPreviews(
fieldFlag
, optionList
, cellSelector
);
}
hookupTableAssessmentFieldWeather() {
let fieldFlag = flagWeather;
let optionList = Utils.getListFromDict(filterWeathers);
let cellSelector = idTableAssessment + ' td.' + flagWeather;
this.hookupTableCellDdlPreviews(
fieldFlag
, optionList
, cellSelector
);
}
hookupTableAssessmentFieldLightingLevel() {
let fieldFlag = flagLightingLevel;
let optionList = Utils.getListFromDict(filterLightingLevels);
let cellSelector = idTableAssessment + ' td.' + flagLightingLevel;
this.hookupTableCellDdlPreviews(
fieldFlag
, optionList
, cellSelector
);
}
hookupTableAssessmentFieldTemperature() {
this.hookupChangeHandlerTableCells(idTableAssessment + ' td.' + flagTemperatureCelcius + ' .' + flagTemperatureCelcius);
}
hookupTableAssessmentFieldLocation() {
let fieldFlag = flagLocation;
let optionList = Utils.getListFromDict(filterLocations);
let cellSelector = idTableAssessment + ' td.' + flagLocation;
this.hookupTableCellDdlPreviews(
fieldFlag
, optionList
, cellSelector
);
}
hookupTableAssessmentFieldUserHandler() {
let fieldFlag = flagUserHandler;
let optionList = Utils.getListFromDict(filterUserHandlers);
let cellSelector = idTableAssessment + ' td.' + flagUserHandler;
this.hookupTableCellDdlPreviews(
fieldFlag
, optionList
, cellSelector
);
}
hookupTableAssessmentFieldStartOn() {
this.hookupChangeHandlerTableCells(idTableAssessment + ' td.' + flagStartOn + ' .' + flagStartOn);
}
hookupTableAssessmentFieldEndOn() {
this.hookupChangeHandlerTableCells(idTableAssessment + ' td.' + flagEndOn + ' .' + flagEndOn);
}
hookupTableAssessmentFieldNotes() {
this.hookupChangeHandlerTableCells(idTableAssessment + ' td.' + flagNotes + ' .' + flagNotes);
}
hookupTableAssessmentCommandLinks() {
Events.initialiseEventHandler(idTableAssessmentCommandLinks, flagInitialised, (table) => {
let selectorRowNew = idTableAssessmentCommandLinks + ' tbody tr.' + flagRowNew;
let rowBlankTemp = document.querySelector(selectorRowNew);
Utils.consoleLogIfNotProductionEnvironment("row blank temp: ", rowBlankTemp);
let countRows = document.querySelectorAll(idTableAssessmentCommandLinks + ' > tbody > tr').length;
_rowBlankAssessmentCommandLink = rowBlankTemp.cloneNode(true);
document.querySelectorAll(selectorRowNew).forEach(function(row) {
row.remove();
});
_rowBlankAssessmentCommandLink.setAttribute(attrIdAssessmentCommandLink, -1 - countRows);
});
this.hookupTableAssessmentCommandLinksFieldsCommandCategory();
this.hookupTableAssessmentCommandLinksFieldsCommand();
this.hookupTableAssessmentCommandLinksFieldsReinforcementSchedule();
this.hookupTableAssessmentCommandLinksFieldsDistanceFromHandlerMetres();
this.hookupTableAssessmentCommandLinksFieldsIsInHearingRangeOfHandler();
this.hookupTableAssessmentCommandLinksFieldsIsInScentRangeOfHandler();
this.hookupTableAssessmentCommandLinksFieldsIsInSightOfHandler();
this.hookupTableAssessmentCommandLinksFieldsIsOnLead();
this.hookupTableAssessmentCommandLinksFieldsNotes();
this.hookupTableAssessmentCommandLinksFieldsCommandModalities();
this.hookupTableAssessmentCommandLinksFieldsTrainingTechniques();
this.hookupTableAssessmentCommandLinksFieldsTrialCount();
this.hookupTableAssessmentCommandLinksFieldsResponses();
this.hookupTableAssessmentCommandLinksFieldsActive();
}
hookupTableAssessmentCommandLinksFieldsCommandCategory() {
this.hookupFieldsCommandCategory(idTableAssessmentCommandLinks);
/*
let fieldFlag = flagCommandCategory;
let optionList = Utils.getListFromDict(filterCommandCategories).sort((a, b) => a[flagName].localeCompare(b[flagName]));
let cellSelector = idTableAssessmentCommandLinks + ' td.' + flagCommandCategory;
this.hookupTableCellDdlPreviews(
fieldFlag
, optionList
, cellSelector
, (tdSelector) => { this.hookupTableAssessmentCommandLinksDdlsCommandCategory(tdSelector); }
, (event, element) => { this.handleChangeTableAssessmentCommandModalityLinksDdlCommandCategory(event, element); }
);
*/
}
/*
hookupTableAssessmentCommandLinksDdlsCommandCategory(ddlSelector) {
this.hookupChangeHandlerTableCells(ddlSelector, (event, element) => { this.handleChangeTableAssessmentCommandModalityLinksDdlCommandCategory(event, element); });
}
handleChangeTableAssessmentCommandModalityLinksDdlCommandCategory(event, ddlCategory) {
let row = DOM.getRowFromElement(ddlCategory);
let idCommandCategoryRowOld = this.getIdCommandCategoryRow(row); // DOM.getElementAttributeValueCurrent(ddlCategory);
this.handleChangeNestedElementCellTable(event, ddlCategory);
let idCommandCategoryRowNew = this.getIdCommandCategoryRow(row); // DOM.getElementAttributeValueCurrent(ddlCategory);
if (idCommandCategoryRowOld == idCommandCategoryRowNew) return;
let divCommand = row.querySelector('td.' + flagCommand + ' div');
if (divCommand) divCommand.dispatchEvent(new Event('click'));
let ddlCommand = row.querySelector('td.' + flagCommand + ' select.' + flagCommand);
ddlCommand.innerHTML = '';
ddlCommand.appendChild(DOM.createOption(null));
let optionJson, option;
let commandsInCategory = Utils.getListFromDict(filterCommands).filter(command =>
(
command[attrIdCommandCategory] == idCommandCategoryRowNew
|| idCommandCategoryRowNew == 0
)
);
let sortedCommands = commandsInCategory.sort((a, b) => a[flagName].localeCompare(b[flagName]));
sortedCommands.forEach((command) => {
optionJson = BusinessObjects.getOptionJsonFromObjectJson(command);
option = DOM.createOption(optionJson);
ddlCommand.appendChild(option);
});
this.handleChangeNestedElementCellTable(event, ddlCommand);
}
*/
hookupTableAssessmentCommandLinksFieldsCommand() {
this.hookupFieldsCommand(idTableAssessmentCommandLinks);
}
hookupTableAssessmentCommandLinksFieldsReinforcementSchedule() {
let fieldFlag = flagReinforcementSchedule;
let optionList = Utils.getListFromDict(filterReinforcementSchedules);
let cellSelector = idTableAssessmentCommandLinks + ' td.' + flagReinforcementSchedule;
this.hookupTableCellDdlPreviews(
fieldFlag
, optionList
, cellSelector
);
}
/*
hookupTableAssessmentCommandLinksFieldsBribe() {
let fieldFlag = flagBribe;
let optionList = Utils.getListFromDict(filterBribes); // .sort((a, b) => a[flagName].localeCompare(b[flagName]))
let cellSelector = idTableAssessmentCommandLinks + ' td.' + flagBribe;
this.hookupTableCellDdlPreviews(
fieldFlag
, optionList
, cellSelector
);
}
*/
hookupTableAssessmentCommandLinksFieldsDistanceFromHandlerMetres() {
this.hookupChangeHandlerTableCells(idTableAssessmentCommandLinks + ' td.' + flagDistanceFromHandlerMetres + ' .' + flagDistanceFromHandlerMetres);
}
hookupTableAssessmentCommandLinksFieldsIsInHearingRangeOfHandler() {
this.hookupChangeHandlerTableCells(idTableAssessmentCommandLinks + ' td.' + flagIsInHearingRangeOfHandler + ' .' + flagIsInHearingRangeOfHandler);
}
hookupTableAssessmentCommandLinksFieldsIsInScentRangeOfHandler() {
this.hookupChangeHandlerTableCells(idTableAssessmentCommandLinks + ' td.' + flagIsInScentRangeOfHandler + ' .' + flagIsInScentRangeOfHandler);
}
hookupTableAssessmentCommandLinksFieldsIsInSightOfHandler() {
this.hookupChangeHandlerTableCells(idTableAssessmentCommandLinks + ' td.' + flagIsInSightOfHandler + ' .' + flagIsInSightOfHandler);
}
hookupTableAssessmentCommandLinksFieldsIsOnLead() {
this.hookupChangeHandlerTableCells(idTableAssessmentCommandLinks + ' td.' + flagIsOnLead + ' .' + flagIsOnLead);
}
hookupTableAssessmentCommandLinksFieldsTrialCount() {
// this.hookupChangeHandlerTableCells(idTableAssessmentCommandLinks + ' td.' + flagTrialCount + ' .' + flagTrialCount);
}
hookupTableAssessmentCommandLinksFieldsNotes() {
this.hookupChangeHandlerTableCells(idTableAssessmentCommandLinks + ' > tbody > tr > td.' + flagNotes + ' .' + flagNotes);
}
hookupTableAssessmentCommandLinksFieldsCommandModalities() {
this.hookupTableAssessmentCommandLinksCommandModalityPreviews();
this.hookupTableAssessmentCommandLinksCommandModalityCheckboxes();
}
hookupTableAssessmentCommandLinksCommandModalityPreviews() {
let eventType = "click";
let selector = idTableAssessmentCommandLinks + ' td.' + flagAssessmentCommandModalityLink + ' div.' + flagAssessmentCommandModalityLink;
let handler = (event, element) => {
let parentTd = DOM.getCellFromElement(element);
let rowAssessmentCommandLink = parentTd.closest('tr.' + flagAssessmentCommandLink);
let idAssessmentCommandLink = rowAssessmentCommandLink.getAttribute(attrIdAssessmentCommandLink);
let assessmentCommandLinksFiltered = assessment[flagAssessmentCommandLink].filter(link => link[attrIdAssessmentCommandLink] == idAssessmentCommandLink);
let assessmentCommandLink = (assessmentCommandLinksFiltered == null || assessmentCommandLinksFiltered.length == 0) ? null : assessmentCommandLinksFiltered[0];
let assessmentCommandModalityLinks = (assessmentCommandLink == null) ? null : assessmentCommandLink[flagAssessmentCommandModalityLink];
Utils.consoleLogIfNotProductionEnvironment({ assessmentCommandLinksFiltered, assessmentCommandModalityLinks });
let commandModalityContainer = document.createElement('div');
commandModalityContainer.classList.add(flagContainer);
commandModalityContainer.classList.add(flagColumn);
let commandModality, active, row;
for (let keyCommandModality in Object.keys(filterCommandModalities)) {
commandModality = filterCommandModalities[keyCommandModality];
active = assessmentCommandModalityLinks.filter(l => {
l[attrIdCommandModality] == commandModality[attrIdCommandModality]
&& l[flagActive]
}).length > 0;
row = PageDogAssessment.createNewRowAssessmentCommandModalityLink(commandModality, active);
commandModalityContainer.appendChild(row);
}
parentTd.innerHTML = commandModalityContainer.outerHTML;
this.hookupTableAssessmentCommandLinksFieldsCommandModalities();
};
Events.hookupEventHandler(
eventType
, selector
, handler
);
this.hookupTableAssessmentCommandLinksFieldsCommandModalities();
}
static createNewRowAssessmentCommandModalityLink(commandModality, active) {
if (commandModality == null) commandModality = {
[attrIdAssessmentCommandModalityLink]: null
, [attrIdAssessmentCommandLink]: null
, [attrIdCommandModality]: 0
, [flagCode]: ''
, [flagName]: ''
, [flagDescription]: ''
, [flagActive]: true
};
console.log({ commandModality });
let isNew = (commandModality[attrIdAssessmentCommandModalityLink] == null || commandModality[attrIdAssessmentCommandModalityLink] < 1);
let row = document.createElement("div");
row.classList.add(flagAssessmentCommandModalityLink);
row.classList.add(flagCommandModality);
row.classList.add(flagContainer);
row.classList.add(flagRow);
if (isNew) row.classList.add(flagRowNew);
row.setAttribute(attrIdAssessmentCommandModalityLink, commandModality[attrIdAssessmentCommandModalityLink]);
let checkboxCommandModality = document.createElement("input");
checkboxCommandModality.type = 'checkbox';
checkboxCommandModality.classList.add(flagAssessmentCommandModalityLink);
checkboxCommandModality.classList.add(flagCommandModality);
checkboxCommandModality.setAttribute(attrIdCommandModality, commandModality[attrIdCommandModality]);
// checkboxCommandModality.value = active;
DOM.setElementValuesCurrentAndPrevious(checkboxCommandModality, active);
let labelCommandModality = document.createElement('label');
labelCommandModality.innerHTML = checkboxCommandModality.outerHTML + commandModality[flagName];
labelCommandModality.setAttribute('alt', commandModality[flagDescription]);
row.appendChild(labelCommandModality);
return row;
}
hookupTableAssessmentCommandLinksCommandModalityCheckboxes() {
let eventType = "click";
let selector = idTableAssessmentCommandLinks + ' td.' + flagAssessmentCommandModalityLink + ' label'; // input[type="checkbox"].' + flagAssessmentCommandModalityLink;
let handler = (event, element) => {
let parentTd = DOM.getCellFromElement(element);
let wasDirtyParentRows = this.getAllIsDirtyRowsInParentTree(element);
let wasDirtyElement = element.classList.contains(flagDirty);
let isDirtyElement = DOM.updateAndCheckIsElementDirty(element);
if (isDirtyElement != wasDirtyElement) {
/*
let rowAssessmentCommandLink = parentTd.closest('tr.' + flagAssessmentCommandLink);
let idAssessmentCommandLink = rowAssessmentCommandLink.getAttribute(attrIdAssessmentCommandLink);
*/
let checkboxesCommandModality = parentTd.querySelectorAll('input[type="checkbox"]');
let checkboxCommandModality, idCommandModality;
let newCommandModalityLinkCsv = '';
for (let indexCheckbox = 0; indexCheckbox < checkboxesCommandModality.length; indexCheckbox++) {
checkboxCommandModality = checkboxesCommandModality[indexCheckbox];
if (DOM.getElementValueCurrent(checkboxCommandModality)) {
idCommandModality = checkboxCommandModality.getAttribute(attrIdCommandModality);
newCommandModalityLinkCsv = newCommandModalityLinkCsv + ',' + idCommandModality;
}
}
this.updateAndToggleShowButtonsSaveCancel();
this.cascadeChangedIsDirtyNestedElementCellTable(element, isDirtyElement, wasDirtyParentRows);
}
};
Events.hookupEventHandler(
eventType
, selector
, handler
);
}
hookupTableAssessmentCommandLinksFieldsResponses() {
let eventType = "click";
let selector = idTableAssessmentCommandLinks + ' td.' + flagAssessmentResponse + ' div.' + flagAssessmentResponse;
let handler = (event, element) => {
let parentTd = DOM.getCellFromElement(element);
let rowAssessmentCommandLink = parentTd.closest('tr.' + flagAssessmentCommandLink);
let idAssessmentCommandLink = rowAssessmentCommandLink.getAttribute(attrIdAssessmentCommandLink);
let responsesTable = document.createElement("table");
responsesTable.id = idTableAssessmentResponses.replace("#", "");
responsesTable.classList.add(flagTableMain, flagAssessmentResponse);
let head = document.createElement("thead");
let headRow = document.createElement("tr");
let thResponseQualityMetric = document.createElement("th");
thResponseQualityMetric.classList.add(flagResponseQualityMetric);
thResponseQualityMetric.innerText = 'Response Quality Metric';
headRow.appendChild(thResponseQualityMetric);
let thObedienceLevel = document.createElement("th");
thObedienceLevel.classList.add(flagObedienceLevel);
thObedienceLevel.innerText = 'Obedience Level';
headRow.appendChild(thObedienceLevel);
let thValueMeasured = document.createElement("th");
thValueMeasured.classList.add(flagValueMeasured);
thValueMeasured.innerText = 'Value Measured';
headRow.appendChild(thValueMeasured);
let thNotes = document.createElement("th");
thNotes.classList.add(flagNotes);
thNotes.innerText = 'Notes';
headRow.appendChild(thNotes);
let thActive = document.createElement("th");
thActive.classList.add(flagActive);
let templateAddIcon = document.querySelector(idContainerTemplateElements + ' .' + flagButton + '.' + flagIcon + '.' + flagActive + '.' + flagAdd);
thActive.appendChild(templateAddIcon.cloneNode(true));
headRow.appendChild(thActive);
head.appendChild(headRow);
responsesTable.appendChild(head);
let body = document.createElement("tbody");
let assessmentCommandLinks = assessment[flagAssessmentCommandLink].filter(link => link[attrIdAssessmentCommandLink] == idAssessmentCommandLink);
let assessmentCommandLink = (assessmentCommandLinks == null || assessmentCommandLinks.length == 0) ? null : assessmentCommandLinks[0];
let responses = (assessmentCommandLink == null) ? null : assessmentCommandLink[flagAssessmentResponse];
console.log({ assessmentCommandLinks, responses });
if (responses != null && responses.length > 0) {
for (let responseKey in Object.keys(responses)) {
let response = responses[responseKey];
let row = PageDogAssessment.createNewRowTableAssessmentResponses(response);
body.appendChild(row);
}
}
responsesTable.appendChild(body);
parentTd.innerHTML = responsesTable.outerHTML;
let responseRows = parentTd.querySelectorAll('tbody tr.' + flagAssessmentResponse);
if (responseRows != null && responseRows.length > 0) {
for (let indexRow = 0; indexRow < responseRows.length; indexRow++) {
let row = responseRows[indexRow];
// let idAssessmentResponse = row.getAttribute(attrIdAssessmentResponse);
let response = responses[indexRow]; // idAssessmentResponse];
console.log({ indexRow, row, response }); // idAssessmentResponse,
let inputValueMeasured = row.querySelector('td.' + flagValueMeasured + ' .' + flagValueMeasured);
DOM.setElementValueCurrent(inputValueMeasured, response[flagValueMeasured]);
let inputNotes = row.querySelector('td.' + flagNotes + ' .' + flagNotes);
DOM.setElementValueCurrent(inputNotes, response[flagNotes]);
}
}
this.hookupTablesAssessmentResponses();
};
Events.hookupEventHandler(
eventType
, selector
, handler
);
this.hookupTablesAssessmentResponses();
}
static createNewRowTableAssessmentResponses(response) {
if (response == null) response = {
[attrIdAssessmentResponse]: null
, [attrIdResponseQualityMetric]: {
[attrIdResponseQualityMetric]: 0
}
, [attrIdObedienceLevel]: {
[attrIdObedienceLevel]: 0
}
, [flagValueMeasured]: ''
, [flagNotes]: ''
, [flagActive]: true
};
console.log({ response });
let isNew = (response[attrIdAssessmentResponse] == null || response[attrIdAssessmentResponse] < 1);
let row = document.createElement("tr");
row.classList.add(flagAssessmentResponse);
if (isNew) row.classList.add(flagRowNew);
row.setAttribute(attrIdAssessmentResponse, response[attrIdAssessmentResponse]);
let tdResponseQualityMetric = document.createElement("td");
tdResponseQualityMetric.classList.add(flagResponseQualityMetric, flagDdlPreview);
let divResponseQualityMetric = document.createElement("div");
divResponseQualityMetric.classList.add(flagResponseQualityMetric);
let idResponseQualityMetric = response[attrIdResponseQualityMetric][attrIdResponseQualityMetric];
let responseQualityMetric = filterResponseQualityMetrics[idResponseQualityMetric];
DOM.setElementAttributesValuesCurrentAndPrevious(divResponseQualityMetric, idResponseQualityMetric);
divResponseQualityMetric.innerText = (responseQualityMetric == null) ? '' : responseQualityMetric[flagName];
tdResponseQualityMetric.appendChild(divResponseQualityMetric);
row.appendChild(tdResponseQualityMetric);
let tdObedienceLevel = document.createElement("td");
tdObedienceLevel.classList.add(flagObedienceLevel, flagDdlPreview);
let divObedienceLevel = document.createElement("div");
divObedienceLevel.classList.add(flagObedienceLevel);
let idObedienceLevel = response[attrIdObedienceLevel][attrIdObedienceLevel];
let obedienceLevel = filterObedienceLevels[idObedienceLevel];
DOM.setElementAttributesValuesCurrentAndPrevious(divObedienceLevel, idObedienceLevel);
divObedienceLevel.innerText = (obedienceLevel == null) ? '' : obedienceLevel[flagName];
tdObedienceLevel.appendChild(divObedienceLevel);
row.appendChild(tdObedienceLevel);
let tdValueMeasured = document.createElement("td");
tdValueMeasured.classList.add(flagValueMeasured, flagDdlPreview);
let inputValueMeasured = document.createElement("input");
inputValueMeasured.type = "number";
inputValueMeasured.classList.add(flagValueMeasured);
let valueMeasured = response[flagValueMeasured];
DOM.setElementValueCurrent(inputValueMeasured, valueMeasured);
DOM.setElementAttributeValuePrevious(inputValueMeasured, valueMeasured);
tdValueMeasured.appendChild(inputValueMeasured);
row.appendChild(tdValueMeasured);
let tdNotes = document.createElement("td");
tdNotes.classList.add(flagNotes, flagDdlPreview);
let inputNotes = document.createElement("textarea");
inputNotes.classList.add(flagNotes);
let notes = response[flagNotes];
DOM.setElementValueCurrent(inputNotes, notes);
DOM.setElementAttributeValuePrevious(inputNotes, notes);
tdNotes.appendChild(inputNotes);
row.appendChild(tdNotes);
console.log(inputValueMeasured.tagName);
console.log(inputNotes.tagName);
console.log({ valueMeasured, notes });
let tdActive = document.createElement("td");
tdActive.classList.add(flagActive, flagDdlPreview);
let templateAddIcon = document.querySelector(idContainerTemplateElements + ' .' + flagButton + '.' + flagIcon + '.' + flagActive + '.' + flagAdd);
let templateDeleteIcon = document.querySelector(idContainerTemplateElements + ' .' + flagButton + '.' + flagIcon + '.' + flagActive + '.' + flagDelete);
let buttonActive = (response[flagActive]) ? templateDeleteIcon.cloneNode(true) : templateAddIcon.cloneNode(true);
tdActive.appendChild(buttonActive);
row.appendChild(tdActive);
return row;
}
hookupTablesAssessmentResponses() {
this.hookupTableAssessmentResponsesFieldsResponseQualityMetric();
this.hookupTableAssessmentResponsesFieldsObedienceLevel();
this.hookupTableAssessmentResponsesFieldsValueMeasured();
this.hookupTableAssessmentResponsesFieldsNotes();
this.hookupTableAssessmentResponsesFieldsActive();
}
hookupTableAssessmentResponsesFieldsResponseQualityMetric() {
let fieldFlag = flagResponseQualityMetric;
let optionList = Utils.getListFromDict(filterResponseQualityMetrics); // .sort((a, b) => a[flagName].localeCompare(b[flagName]))
let cellSelector = idTableAssessmentResponses + ' td.' + flagResponseQualityMetric;
this.hookupTableCellDdlPreviews(
fieldFlag
, optionList
, cellSelector
);
}
hookupTableAssessmentResponsesFieldsObedienceLevel() {
let fieldFlag = flagObedienceLevel;
let optionList = Utils.getListFromDict(filterObedienceLevels); // .sort((a, b) => a[flagName].localeCompare(b[flagName]))
let cellSelector = idTableAssessmentResponses + ' td.' + flagObedienceLevel;
this.hookupTableCellDdlPreviews(
fieldFlag
, optionList
, cellSelector
);
}
hookupTableAssessmentResponsesFieldsValueMeasured() {
this.hookupChangeHandlerTableCells(idTableAssessmentResponses + ' td.' + flagValueMeasured + ' .' + flagValueMeasured);
}
hookupTableAssessmentResponsesFieldsNotes() {
this.hookupChangeHandlerTableCells(idTableAssessmentResponses + ' td.' + flagNotes + ' .' + flagNotes);
}
hookupTableAssessmentResponsesFieldsActive() {
this.hookupFieldsActive(flagAssessmentResponse, (event, element) => { this.handleClickAddRowTableAssessmentResponses(event, element); });
}
handleClickAddRowTableAssessmentResponses(event, button) {
event.stopPropagation();
let tableResponses = DOM.getClosestParent(button, "table");
let tbody = tableResponses.querySelector(":scope > tbody");
let row = PageDogAssessment.createNewRowTableAssessmentResponses(null);
if (tbody.classList.contains(flagIsCollapsed)) return;
row.classList.remove(flagInitialised);
row.querySelectorAll('.' + flagInitialised).forEach(function(element) {
element.classList.remove(flagInitialised);
});
let countRows = document.querySelectorAll(idTableAssessmentResponses + ' > tbody > tr').length;
row.setAttribute(attrIdAssessmentResponse, -1 - countRows);
tbody.prepend(row);
tbody.scrollTop = 0;
this.hookupTablesAssessmentResponses();
this.postInitialiseAssessmentResponseRowNewCallback(tbody);
}
postInitialiseAssessmentResponseRowNewCallback(tbody) {
let newRows = tbody.querySelectorAll('tr.' + flagRowNew);
let newestRow = newRows[0];
let clickableElementsSelector = [
'td.' + flagResponseQualityMetric + ' div.' + flagResponseQualityMetric
, ',td.' + flagObedienceLevel + ' div.' + flagObedienceLevel
, ',td.' + flagValueMeasured + ' div.' + flagValueMeasured
, ',td.' + flagNotes + ' div.' + flagNotes
].join('');
newestRow.querySelectorAll(clickableElementsSelector).forEach((clickableElement) => {
clickableElement.click();
});
let countActiveRows = tbody.querySelectorAll('td.' + flagActive + ' .' + flagButton + '.' + flagIcon + '.' + flagActive + '.' + flagDelete).length;
/*
newRows.filter(row => {
let activeButton = row.querySelector('td.' + flagActive + ' .' + flagButton + '.' + flagIcon + '.' + flagActive);
return activeButton.classList.contains(flagDelete);
}).length;
*/
let rowAssessmentCommandLink = DOM.getRowFromElement(tbody);
let divTrialCount = rowAssessmentCommandLink.querySelector('td.' + flagTrialCount + ' div.' + flagTrialCount);
divTrialCount.innerText = countActiveRows;
}
hookupTableAssessmentCommandLinksFieldsActive() {
this.hookupFieldsActive(flagAssessmentCommandLink, (event, element) => { this.handleClickAddRowTableAssessmentCommandLinks(event, element); });
}
handleClickAddRowTableAssessmentCommandLinks(event, button) {
event.stopPropagation();
_rowBlankAssessmentCommandLink.setAttribute(attrIdAssessmentCommandLink, -1 - _rowBlankAssessmentCommandLink.getAttribute(attrIdAssessmentCommandLink));
let tbody = document.querySelector(idTableAssessmentCommandLinks + ' tbody');
if (tbody.classList.contains(flagIsCollapsed)) return;
let row = _rowBlankAssessmentCommandLink.cloneNode(true);
row.classList.remove(flagInitialised);
row.querySelectorAll('.' + flagInitialised).forEach(function(element) {
element.classList.remove(flagInitialised);
});
let countRows = document.querySelectorAll(idTableAssessmentCommandLinks + ' > tbody > tr').length;
row.setAttribute(attrIdAssessmentCommandLink, -1 - countRows);
tbody.prepend(row);
tbody.scrollTop = 0;
this.hookupTableAssessmentCommandLinks();
this.postInitialiseAssessmentCommandLinkRowNewCallback(tbody);
}
postInitialiseAssessmentCommandLinkRowNewCallback(tbody) {
let newRows = tbody.querySelectorAll('tr.' + flagRowNew);
let newestRow = newRows[0];
let clickableElementsSelector = [
'td.' + flagCommandCategory + ' div.' + flagCommandCategory
, ',td.' + flagCommand + ' div.' + flagCommand
, ',td.' + flagCommandModality + ' div.' + flagCommandModality
// , ',td.' + flagBribe + ' div.' + flagBribe
].join('');
newestRow.querySelectorAll(clickableElementsSelector).forEach((clickableElement) => {
clickableElement.click();
});
}
/*
hookupTableDistractions() {
Events.initialiseEventHandler(idTableDistractions, flagInitialised, (table) => {
let selectorRowNew = idTableDistractions + ' tbody tr.' + flagRowNew;
let rowBlankTemp = document.querySelector(selectorRowNew);
Utils.consoleLogIfNotProductionEnvironment("row blank temp: ", rowBlankTemp);
let countRows = document.querySelectorAll(idTableDistractions + ' > tbody > tr').length;
_rowBlankDistraction = rowBlankTemp.cloneNode(true);
document.querySelectorAll(selectorRowNew).forEach(function(row) {
row.remove();
});
_rowBlankDistraction.setAttribute(attrIdDistraction, -1 - countRows);
});
this.hookupTableDistractionsFieldsDistractionType();
this.hookupTableDistractionsFieldsIntensityLevelEmotional();
this.hookupTableDistractionsFieldsIntensityLevelScent();
this.hookupTableDistractionsFieldsIntensityLevelSight();
this.hookupTableDistractionsFieldsIntensityLevelSound();
this.hookupTableDistractionsFieldsIntensityLevelTouch();
this.hookupTableDistractionsFieldsQuantity();
this.hookupTableDistractionsFieldsProximityMetres();
this.hookupTableDistractionsFieldsNotes();
this.hookupTableDistractionsFieldsActive();
}
hookupTableDistractionsFieldsDistractionType() {
let fieldFlag = flagDistractionType;
let optionList = Utils.getListFromDict(filterDistractionTypes); // .sort((a, b) => a[flagName].localeCompare(b[flagName]))
let cellSelector = idTableDistractions + ' td.' + flagDistractionType;
this.hookupTableCellDdlPreviews(
fieldFlag
, optionList
, cellSelector
);
}
hookupTableDistractionsFieldsIntensityLevelEmotional() {
let fieldFlag = flagDistractionIntensityLevelEmotional;
let optionList = Utils.getListFromDict(filterDistractionIntensityLevels); // .sort((a, b) => a[flagName].localeCompare(b[flagName]))
let cellSelector = idTableDistractions + ' td.' + flagDistractionIntensityLevelEmotional;
this.hookupTableCellDdlPreviews(
fieldFlag
, optionList
, cellSelector
);
}
hookupTableDistractionsFieldsIntensityLevelScent() {
let fieldFlag = flagDistractionIntensityLevelScent;
let optionList = Utils.getListFromDict(filterDistractionIntensityLevels); // .sort((a, b) => a[flagName].localeCompare(b[flagName]))
let cellSelector = idTableDistractions + ' td.' + flagDistractionIntensityLevelScent;
this.hookupTableCellDdlPreviews(
fieldFlag
, optionList
, cellSelector
);
}
hookupTableDistractionsFieldsIntensityLevelSight() {
let fieldFlag = flagDistractionIntensityLevelSight;
let optionList = Utils.getListFromDict(filterDistractionIntensityLevels); // .sort((a, b) => a[flagName].localeCompare(b[flagName]))
let cellSelector = idTableDistractions + ' td.' + flagDistractionIntensityLevelSight;
this.hookupTableCellDdlPreviews(
fieldFlag
, optionList
, cellSelector
);
}
hookupTableDistractionsFieldsIntensityLevelSound() {
let fieldFlag = flagDistractionIntensityLevelSound;
let optionList = Utils.getListFromDict(filterDistractionIntensityLevels); // .sort((a, b) => a[flagName].localeCompare(b[flagName]))
let cellSelector = idTableDistractions + ' td.' + flagDistractionIntensityLevelSound;
this.hookupTableCellDdlPreviews(
fieldFlag
, optionList
, cellSelector
);
}
hookupTableDistractionsFieldsIntensityLevelTouch() {
let fieldFlag = flagDistractionIntensityLevelTouch;
let optionList = Utils.getListFromDict(filterDistractionIntensityLevels); // .sort((a, b) => a[flagName].localeCompare(b[flagName]))
let cellSelector = idTableDistractions + ' td.' + flagDistractionIntensityLevelTouch;
this.hookupTableCellDdlPreviews(
fieldFlag
, optionList
, cellSelector
);
}
hookupTableDistractionsFieldsQuantity() {
this.hookupChangeHandlerTableCells(idTableDistractions + ' td.' + flagQuantity + ' .' + flagQuantity);
}
hookupTableDistractionsFieldsProximityMetres() {
this.hookupChangeHandlerTableCells(idTableDistractions + ' td.' + flagProximityMetres + ' .' + flagProximityMetres);
}
hookupTableDistractionsFieldsNotes() {
this.hookupChangeHandlerTableCells(idTableDistractions + ' td.' + flagNotes + ' .' + flagNotes);
}
hookupTableDistractionsFieldsActive() {
this.hookupFieldsActive(flagDistraction, (event, element) => { this.handleClickAddRowTableDistractions(event, element); });
}
handleClickAddRowTableDistractions(event, button) {
event.stopPropagation();
_rowBlankDistraction.setAttribute(attrIdDistraction, -1 - _rowBlankDistraction.getAttribute(attrIdDistraction));
let tbody = document.querySelector(idTableDistractions + ' tbody');
if (tbody.classList.contains(flagIsCollapsed)) return;
let row = _rowBlankDistraction.cloneNode(true);
row.classList.remove(flagInitialised);
row.querySelectorAll('.' + flagInitialised).forEach(function(element) {
element.classList.remove(flagInitialised);
});
let countRows = document.querySelectorAll(idTableDistractions + ' > tbody > tr').length;
row.setAttribute(attrIdDistraction, -1 - countRows);
tbody.prepend(row);
tbody.scrollTop = 0;
this.hookupTableDistractions();
this.postInitialiseDistractionRowNewCallback(tbody);
}
postInitialiseDistractionRowNewCallback(tbody) {
let newRows = tbody.querySelectorAll('tr.' + flagRowNew);
let newestRow = newRows[0];
let clickableElementsSelector = [
'td.' + flagDistractionType + ' div.' + flagDistractionType
, ',td.' + flagDistractionIntensityLevelEmotional + ' div.' + flagDistractionIntensityLevelEmotional
, ',td.' + flagDistractionIntensityLevelScent + ' div.' + flagDistractionIntensityLevelScent
, ',td.' + flagDistractionIntensityLevelSight + ' div.' + flagDistractionIntensityLevelSight
, ',td.' + flagDistractionIntensityLevelSound + ' div.' + flagDistractionIntensityLevelSound
, ',td.' + flagDistractionIntensityLevelTouch + ' div.' + flagDistractionIntensityLevelTouch
].join('');
newestRow.querySelectorAll(clickableElementsSelector).forEach((clickableElement) => {
clickableElement.click();
});
}
*/
leave() {
super.leave();
}
}