123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- 'use strict';
- var getBusinessObject = require('bpmn-js/lib/util/ModelUtil').getBusinessObject;
- // input entities
- var textInputField = require('./TextInputEntryFactory'),
- checkboxField = require('./CheckboxEntryFactory'),
- selectBoxField = require('./SelectEntryFactory'),
- comboBoxField = require('./ComboEntryFactory'),
- textBoxField = require('./TextBoxEntryFactory'),
- validationAwareTextInputField = require('./ValidationAwareTextInput'),
- tableField = require('./TableEntryFactory'),
- labelEntry = require('./LabelFactory'),
- link = require('./LinkEntryFactory');
- var cmdHelper = require('../helper/CmdHelper');
- // helpers ////////////////////////////////////////
- function ensureNotNull(prop) {
- if (!prop) {
- throw new Error(prop + ' must be set.');
- }
- return prop;
- }
- /**
- * sets the default parameters which are needed to create an entry
- *
- * @param options
- * @returns {{id: *, description: (*|string), get: (*|Function), set: (*|Function),
- * validate: (*|Function), html: string}}
- */
- var setDefaultParameters = function(options) {
- // default method to fetch the current value of the input field
- var defaultGet = function(element) {
- var bo = getBusinessObject(element),
- res = {},
- prop = ensureNotNull(options.modelProperty);
- res[prop] = bo.get(prop);
- return res;
- };
- // default method to set a new value to the input field
- var defaultSet = function(element, values) {
- var res = {},
- prop = ensureNotNull(options.modelProperty);
- if (values[prop] !== '') {
- res[prop] = values[prop];
- } else {
- res[prop] = undefined;
- }
- return cmdHelper.updateProperties(element, res);
- };
- // default validation method
- var defaultValidate = function() {
- return {};
- };
- return {
- id : options.id,
- description : (options.description || ''),
- get : (options.get || defaultGet),
- set : (options.set || defaultSet),
- validate : (options.validate || defaultValidate),
- html: ''
- };
- };
- function EntryFactory() {
- }
- /**
- * Generates an text input entry object for a property panel.
- * options are:
- * - id: id of the entry - String
- *
- * - description: description of the property - String
- *
- * - label: label for the input field - String
- *
- * - set: setter method - Function
- *
- * - get: getter method - Function
- *
- * - validate: validation mehtod - Function
- *
- * - modelProperty: name of the model property - String
- *
- * - buttonAction: Object which contains the following properties: - Object
- * ---- name: name of the [data-action] callback - String
- * ---- method: callback function for [data-action] - Function
- *
- * - buttonShow: Object which contains the following properties: - Object
- * ---- name: name of the [data-show] callback - String
- * ---- method: callback function for [data-show] - Function
- *
- * @param options
- * @returns the propertyPanel entry resource object
- */
- EntryFactory.textField = function(options) {
- return textInputField(options, setDefaultParameters(options));
- };
- EntryFactory.validationAwareTextField = function(options) {
- return validationAwareTextInputField(options, setDefaultParameters(options));
- };
- /**
- * Generates a checkbox input entry object for a property panel.
- * options are:
- * - id: id of the entry - String
- *
- * - description: description of the property - String
- *
- * - label: label for the input field - String
- *
- * - set: setter method - Function
- *
- * - get: getter method - Function
- *
- * - validate: validation method - Function
- *
- * - modelProperty: name of the model property - String
- *
- * @param options
- * @returns the propertyPanel entry resource object
- */
- EntryFactory.checkbox = function(options) {
- return checkboxField(options, setDefaultParameters(options));
- };
- EntryFactory.textBox = function(options) {
- return textBoxField(options, setDefaultParameters(options));
- };
- EntryFactory.selectBox = function(options) {
- return selectBoxField(options, setDefaultParameters(options));
- };
- EntryFactory.comboBox = function(options) {
- return comboBoxField(options);
- };
- EntryFactory.table = function(options) {
- return tableField(options);
- };
- EntryFactory.label = function(options) {
- return labelEntry(options);
- };
- EntryFactory.link = function(options) {
- return link(options);
- };
- module.exports = EntryFactory;
|