EOX GitLab Instance

Skip to content
Snippets Groups Projects
Commit 9672d958 authored by Lubomir Dolezal's avatar Lubomir Dolezal
Browse files

update new recordModel also for cleanup methods

parent 3e39765c
No related branches found
No related tags found
1 merge request!7Client performance improvements timeslider
Pipeline #26955 passed
......@@ -97,7 +97,7 @@ const RecordsDetailsModalView = ModalView.extend({
$('.modal-body').height(`calc(100% - ${restHeightCombined}px)`);
},
updateRecord(recordModel, searchModel, refreshOnlyRecordDetails=false) {
updateRecord(recordModel, searchModel) {
let time = recordModel.get('properties').time;
if (time instanceof Date) {
time = [time, time];
......@@ -139,10 +139,7 @@ const RecordsDetailsModalView = ModalView.extend({
iframeView: this.iframeView,
});
this.showChildView('content', detailsView);
if (refreshOnlyRecordDetails) {
// earlier exit for case when only RecordDetailsView should be redrawn
return;
}
this.filtersModel.set('area', recordModel.attributes.geometry);
this.mapModel.show(recordModel.attributes);
......@@ -195,42 +192,59 @@ const RecordsDetailsModalView = ModalView.extend({
onIframeDisplayToggleChange() {
this.iframeDisplayEnabled = this.$('.iframe-display-toggle').is(':checked');
this.updateRecord(...this.records[this.currentRecordIndex], true);
this.updateRecord(...this.records[this.currentRecordIndex]);
},
replaceLayerParameters(option, model) {
if (typeof option.IdAttached != 'undefined') {
let displayOption = model.get('detailsDisplay') ? 'detailsDisplay' : 'display';
const layerID = model.get(`${displayOption}.id`) + (option.IdAttached);
model.set(`${displayOption}.extraParameters.LAYERS`, layerID);
}
replaceLayerParameters(option, layerModel, recordModel) {
// perform replacing of parameters in underyling model if it was configured
const replaceList = option.replace;
_.each(replaceList, (config) => {
if (typeof config.target === 'string' && typeof config.value !== 'undefined') {
if (config.value.template) {
// interpolate template
const evaluated = _.template(config.value.template, {
interpolate: /\{\{(.+?)\}\}/g
})(model.toJSON());
model.set(config.target, evaluated);
let evaluated = null;
// interpolate template from Record if able
if (recordModel) {
// special prefix record.something for interpolation
evaluated = _.template(config.value.template, {
interpolate: /\{\{record\.(.+?)\}\}/g
})(recordModel.toJSON());
}
// fallback, interpolate template from layer if able
if (typeof evaluated === 'string' && evaluated.includes('{{')) {
evaluated = _.template(config.value.template, {
interpolate: /\{\{(.+?)\}\}/g
})(layerModel.toJSON());
}
layerModel.set(config.target, evaluated);
} else {
model.set(config.target, config.value);
layerModel.set(config.target, config.value);
}
}
});
if (typeof option.IdAttached !== 'undefined') {
// default layerID when adding attachment is layer.id itself
let displayOption = layerModel.get('detailsDisplay') ? 'detailsDisplay' : 'display';
let layerID = layerModel.get(`${displayOption}.id`);
if (layerModel.get(`${displayOption}.extraParameters.LAYERS`)) {
// if extraParameters.LAYERS override was already set during replace
// only append attachment to it
layerID = layerModel.get(`${displayOption}.extraParameters.LAYERS`);
}
layerID = layerID + option.IdAttached;
layerModel.set(`${displayOption}.extraParameters.LAYERS`, layerID);
}
},
applySettings(model) {
let displayOption = model.get('detailsDisplay') ? 'detailsDisplay' : 'display';
model.set(`${displayOption}.variablesParameter`, '');
applySettings(layerModel, recordModel) {
let displayOption = layerModel.get('detailsDisplay') ? 'detailsDisplay' : 'display';
layerModel.set(`${displayOption}.variablesParameter`, '');
// set values from currently chosen form/s in layerModel
const options = model.get(`${displayOption}.options`);
const options = layerModel.get(`${displayOption}.options`);
// first reset the unselected options to clear the parameters
_.each(options, (option) => {
_.each(option.parameters, (param) => {
if (option.isChosen !== true) {
model.set(param.target, '');
layerModel.set(param.target, '');
}
});
});
......@@ -254,43 +268,43 @@ const RecordsDetailsModalView = ModalView.extend({
}
});
// reset isSelected in model and update it with what is selected in ui
// reset isSelected in layerModel and update it with what is selected in ui
_.each(param.values, (_, l) => {
model.set(`${displayOption}.options[${i}].parameters[${j}].values[${l}].isCurrentB1`, false);
model.set(`${displayOption}.options[${i}].parameters[${j}].values[${l}].isCurrentB2`, false);
model.set(`${displayOption}.options[${i}].parameters[${j}].values[${l}].isCurrentB3`, false);
layerModel.set(`${displayOption}.options[${i}].parameters[${j}].values[${l}].isCurrentB1`, false);
layerModel.set(`${displayOption}.options[${i}].parameters[${j}].values[${l}].isCurrentB2`, false);
layerModel.set(`${displayOption}.options[${i}].parameters[${j}].values[${l}].isCurrentB3`, false);
});
if (typeof param.min === 'undefined') {
model.set(`${displayOption}.options[${i}].parameters[${j}].values[${selectedIndices[0]}].isCurrentB1`, true);
layerModel.set(`${displayOption}.options[${i}].parameters[${j}].values[${selectedIndices[0]}].isCurrentB1`, true);
}
if (param.selectThree && typeof param.min === 'undefined') {
model.set(`${displayOption}.options[${i}].parameters[${j}].values[${selectedIndices[1]}].isCurrentB2`, true);
model.set(`${displayOption}.options[${i}].parameters[${j}].values[${selectedIndices[2]}].isCurrentB3`, true);
layerModel.set(`${displayOption}.options[${i}].parameters[${j}].values[${selectedIndices[1]}].isCurrentB2`, true);
layerModel.set(`${displayOption}.options[${i}].parameters[${j}].values[${selectedIndices[2]}].isCurrentB3`, true);
}
if (option.isChosen === true) {
// set options to model and trigger a reload of layer in map
// set options to layerModel and trigger a reload of layer in map
if(param.oneToManyMapping){
let variables = model.get(param.target) || {};
let variables = layerModel.get(param.target) || {};
variables[param.value] = values.join(',')
let variablesParameter = []
_.each(_.keys(variables), key => {
variablesParameter.push(`${key}=${variables[key]}`)
});
model.set(`${displayOption}.variablesParameter`, variablesParameter.join(','));
model.set(param.target, variables);
layerModel.set(`${displayOption}.variablesParameter`, variablesParameter.join(','));
layerModel.set(param.target, variables);
}
else{
model.set(param.target, values.join(','));
layerModel.set(param.target, values.join(','));
}
}
})
});
_.each(model.get(`${displayOption}.options`), (option) => {
_.each(layerModel.get(`${displayOption}.options`), (option) => {
if (option.isChosen === true) {
// if replace was configured for this option, apply it
this.replaceLayerParameters(option, model);
this.replaceLayerParameters(option, layerModel, recordModel);
}
});
},
......@@ -302,7 +316,7 @@ const RecordsDetailsModalView = ModalView.extend({
layerModel.set(`${displayOption}.extraParameters.LAYERS`, originalID);
layerModel.set(`${displayOption}.extraParameters.VARIABLES`, '');
_.each(layerModel.get(`${displayOption}.options`), (option, i) => option.isChosen = i === 0 ? true : false);
this.applySettings(layerModel)
this.applySettings(layerModel, recordModel)
}
});
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment