172 lines
6.5 KiB
JavaScript
172 lines
6.5 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 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.' + flagDetail + ' .' + flagDetail
|
|
].join('');
|
|
let detailButton = newestRow.querySelector('td.' + flagDetail + ' .' + flagDetail); /*.forEach((clickableElement) => {
|
|
clickableElement.
|
|
clickableElement.click();
|
|
});
|
|
*/
|
|
newestRow.classList.add(flagIsCollapsed);
|
|
detailButton.click();
|
|
// console.log({ newestRow, detailButton });
|
|
}
|
|
|
|
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();
|
|
}
|
|
}
|
|
|