Feat(SQL, UI): 1. Calc and Get Many Stored Procedures created for Weather, Lighting Level, Assessment, Distraction Type, Distraction Intensity Level, Distraction, Bribe, Assessment Command Modality Link, Response Quality Metric, Obedience Level, and Assessment Response. \n 2. Assessments and Assessment pages created with data loading and hooked up, but not saving.
This commit is contained in:
169
static/js/pages/dog/assessments.js
Normal file
169
static/js/pages/dog/assessments.js
Normal file
@@ -0,0 +1,169 @@
|
||||
|
||||
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 PageDogAssessments extends TableBasePage {
|
||||
static hash = hashPageDogAssessments;
|
||||
static attrIdRowObject = attrIdAssessment;
|
||||
callSaveTableContent = API.saveAssessments;
|
||||
|
||||
constructor(router) {
|
||||
super(router);
|
||||
this.dogMixin = new DogTableMixinPage(this);
|
||||
}
|
||||
|
||||
initialize() {
|
||||
this.sharedInitialize();
|
||||
}
|
||||
|
||||
hookupFilters() {
|
||||
this.sharedHookupFilters();
|
||||
this.hookupFilterWeather();
|
||||
this.hookupFilterLightingLevel();
|
||||
this.hookupFilterLocation();
|
||||
this.hookupFilterHandler();
|
||||
this.hookupFilterActive();
|
||||
}
|
||||
hookupFilterWeather() {
|
||||
this.hookupFilter(attrIdWeather);
|
||||
}
|
||||
hookupFilterLightingLevel() {
|
||||
this.hookupFilter(attrIdLightingLevel);
|
||||
}
|
||||
hookupFilterHandler() {
|
||||
this.hookupFilter(flagUserHandler);
|
||||
}
|
||||
|
||||
loadRowTable(rowJson) {
|
||||
if (rowJson == null) return;
|
||||
if (_verbose) { Utils.consoleLogIfNotProductionEnvironment("applying data row: ", rowJson); }
|
||||
}
|
||||
getJsonRow(row) {
|
||||
if (row == null) return;
|
||||
let inputTemperatureCelcius = row.querySelector('td.' + flagTemperatureCelcius + ' input');
|
||||
let inputNotes = row.querySelector('td.' + flagNotes + ' textarea');
|
||||
let buttonActive = row.querySelector('td.' + flagActive + ' .' + flagActive);
|
||||
|
||||
let jsonRow = {};
|
||||
jsonRow[attrIdAssessment] = row.getAttribute(attrIdAssessment);
|
||||
jsonRow[attrIdWeather] = this.getIdWeatherRow(row);
|
||||
jsonRow[attrIdLightingLevel] = this.getIdLightingLevelRow(row);
|
||||
jsonRow[flagTemperatureCelcius] = DOM.getElementAttributeValueCurrent(inputTemperatureCelcius);
|
||||
jsonRow[attrIdLocation] = this.getIdLocationRow(row);
|
||||
jsonRow[flagUserHandler] = this.getIdUserHandlerRow(row);
|
||||
jsonRow[flagNotes] = DOM.getElementAttributeValueCurrent(inputNotes);
|
||||
jsonRow[flagActive] = buttonActive.classList.contains(flagDelete);
|
||||
return jsonRow;
|
||||
}
|
||||
getIdWeatherRow(tr) {
|
||||
let elementWeather = tr.querySelector('td.' + flagWeather + ' .' + flagWeather);
|
||||
return DOM.getElementAttributeValueCurrent(elementWeather);
|
||||
}
|
||||
getIdLightingLevelRow(tr) {
|
||||
let elementLightingLevel = tr.querySelector('td.' + flagLightingLevel + ' .' + flagLightingLevel);
|
||||
return DOM.getElementAttributeValueCurrent(elementLightingLevel);
|
||||
}
|
||||
getIdLocationRow(tr) {
|
||||
let elementLocation = tr.querySelector('td.' + flagLocation + ' .' + flagLocation);
|
||||
return DOM.getElementAttributeValueCurrent(elementLocation);
|
||||
}
|
||||
getIdUserHandlerRow(tr) {
|
||||
let elementUserHandler = tr.querySelector('td.' + flagUserHandler + ' .' + flagUserHandler);
|
||||
return DOM.getElementAttributeValueCurrent(elementUserHandler);
|
||||
}
|
||||
initialiseRowNew(tbody, row) {
|
||||
|
||||
}
|
||||
postInitialiseRowNewCallback(tbody) {
|
||||
let newRows = tbody.querySelectorAll('tr.' + flagRowNew);
|
||||
let newestRow = newRows[0];
|
||||
let clickableElementsSelector = [
|
||||
'td.' + flagWeather + ' div.' + flagWeather
|
||||
, ',td.' + flagLightingLevel + ' div.' + flagLightingLevel
|
||||
, ',td.' + flagLocation + ' div.' + flagLocation
|
||||
, ',td.' + flagUserHandler + ' div.' + flagUserHandler
|
||||
].join('');
|
||||
newestRow.querySelectorAll(clickableElementsSelector).forEach((clickableElement) => {
|
||||
clickableElement.click();
|
||||
});
|
||||
}
|
||||
|
||||
hookupTableMain() {
|
||||
super.hookupTableMain();
|
||||
this.hookupFieldsDetail();
|
||||
this.hookupFieldsWeather();
|
||||
this.hookupFieldsLightingLevel();
|
||||
this.hookupFieldsTemperature();
|
||||
this.dogMixin.hookupFieldsLocation();
|
||||
this.hookupFieldsHandler();
|
||||
this.hookupFieldsNotesTable();
|
||||
this.hookupFieldsActive();
|
||||
}
|
||||
hookupFieldsDetail() {
|
||||
Events.hookupEventHandler(
|
||||
"click" // eventType
|
||||
, idTableMain + ' td.' + flagDetail + ' button.' + flagDetail // selector
|
||||
, (event, element) => {
|
||||
let parentTr = DOM.getRowFromElement(element);
|
||||
let idAssessment = parentTr.getAttribute(attrIdAssessment);
|
||||
/*
|
||||
console.log("click detail");
|
||||
console.log({ element, parentTr, idAssessment });
|
||||
const data = {};
|
||||
const params = {
|
||||
[attrIdAssessment]: idAssessment
|
||||
};
|
||||
API.request(
|
||||
hashPageDogAssessment // hashEndpoint
|
||||
, 'GET' // method
|
||||
, data
|
||||
, params
|
||||
);
|
||||
*/
|
||||
|
||||
let formFilters = TableBasePage.getFormFilters();
|
||||
let filtersJson = DOM.convertForm2JSON(formFilters);
|
||||
filtersJson[attrIdAssessment] = idAssessment;
|
||||
Utils.consoleLogIfNotProductionEnvironment("hookupFieldsDetail");
|
||||
Utils.consoleLogIfNotProductionEnvironment("formFilters");
|
||||
Utils.consoleLogIfNotProductionEnvironment(formFilters);
|
||||
Utils.consoleLogIfNotProductionEnvironment("filtersJson");
|
||||
Utils.consoleLogIfNotProductionEnvironment(filtersJson);
|
||||
this.leave();
|
||||
API.goToHash(hashPageDogAssessment, filtersJson);
|
||||
}
|
||||
);
|
||||
}
|
||||
hookupFieldsWeather() {
|
||||
this.hookupTableCellDdlPreviews(
|
||||
flagWeather
|
||||
, Utils.getListFromDict(filterWeathers) // .sort((a, b) => a[flagName].localeCompare(b[flagName]))
|
||||
);
|
||||
}
|
||||
hookupFieldsLightingLevel() {
|
||||
this.hookupTableCellDdlPreviews(
|
||||
flagLightingLevel
|
||||
, Utils.getListFromDict(filterLightingLevels) // .sort((a, b) => a[flagName].localeCompare(b[flagName]))
|
||||
);
|
||||
}
|
||||
hookupFieldsTemperature() {
|
||||
this.hookupChangeHandlerTableCells(idTableMain + ' td.' + flagTemperatureCelcius + ' input.' + flagTemperatureCelcius);
|
||||
}
|
||||
hookupFieldsHandler() {
|
||||
this.hookupTableCellDdlPreviews(
|
||||
flagUserHandler
|
||||
, Utils.getListFromDict(filterUserHandlers) // .sort((a, b) => a[flagName].localeCompare(b[flagName]))
|
||||
);
|
||||
}
|
||||
|
||||
leave() {
|
||||
super.leave();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user