reportbro-designer
Version:
Designer to create pdf and excel report layouts. The reports can be generated with reportbro-lib (a Python package) on the server.
79 lines (72 loc) • 2.29 kB
JavaScript
import Command from './Command';
import Parameter from '../data/Parameter';
import MainPanelItem from '../menu/MainPanelItem';
/**
* Command to add and delete a parameter.
* @class
*/
export default class AddDeleteParameterCmd extends Command {
constructor(add, initialData, id, parentId, position, rb) {
super();
this.add = add;
this.initialData = initialData;
this.parentId = parentId;
this.position = position;
this.rb = rb;
this.id = id;
}
getName() {
if (this.add) {
return 'Add parameter';
} else {
return 'Delete parameter';
}
}
do() {
if (this.add) {
this.addParameter();
} else {
this.deleteParameter();
}
}
undo() {
if (this.add) {
this.deleteParameter();
} else {
this.addParameter();
}
}
addParameter() {
let parent = this.rb.getDataObject(this.parentId);
if (parent !== null) {
let parameter = new Parameter(this.id, this.initialData, this.rb);
this.rb.addParameter(parameter);
const showOnlyNameType = parameter.getValue('showOnlyNameType');
let panelItem = new MainPanelItem(
'parameter', parent.getPanelItem(), parameter, {
hasChildren: !showOnlyNameType, showAdd: !showOnlyNameType, showDelete: !showOnlyNameType,
draggable: true }, this.rb);
panelItem.openParentItems();
parameter.setPanelItem(panelItem);
parent.getPanelItem().insertChild(this.position, panelItem);
parameter.setup();
this.rb.notifyEvent(parameter, Command.operation.add);
}
}
deleteParameter() {
let parameter = this.rb.getDataObject(this.id);
if (parameter !== null) {
this.initialData = parameter.toJS();
this.rb.deleteParameter(parameter);
}
}
/**
* Returns class name.
* This can be useful for introspection when the class names are mangled
* due to the webpack uglification process.
* @returns {string}
*/
getClassName() {
return 'AddDeleteParameterCmd';
}
}