更新 widgets-form-formula_mini-schema-model.js
This commit is contained in:
parent
a4f8a89cb9
commit
758b6d16bd
@ -0,0 +1,102 @@
|
|||||||
|
var _ = require('underscore');
|
||||||
|
var WidgetsFormBaseSchema = require('./widgets-form-base-schema-model');
|
||||||
|
var DialogConstants = require('builder/components/form-components/_constants/_dialogs');
|
||||||
|
|
||||||
|
module.exports = WidgetsFormBaseSchema.extend({
|
||||||
|
|
||||||
|
defaults: {
|
||||||
|
schema: {},
|
||||||
|
aggregate: {
|
||||||
|
attribute: '',
|
||||||
|
operator: 'count'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
initialize: function (attrs, opts) {
|
||||||
|
if (!opts.columnOptionsFactory) throw new Error('columnOptionsFactory is required');
|
||||||
|
this._columnOptionsFactory = opts.columnOptionsFactory;
|
||||||
|
|
||||||
|
this.listenTo(this, 'change:aggregate', this._updateAggregate);
|
||||||
|
|
||||||
|
this._updateAggregate();
|
||||||
|
|
||||||
|
WidgetsFormBaseSchema.prototype.initialize.apply(this, arguments);
|
||||||
|
},
|
||||||
|
|
||||||
|
parse: function (r) {
|
||||||
|
r.aggregate = {
|
||||||
|
attribute: r.column,
|
||||||
|
operator: r.operation
|
||||||
|
};
|
||||||
|
|
||||||
|
return r;
|
||||||
|
},
|
||||||
|
|
||||||
|
getFields: function () {
|
||||||
|
return {
|
||||||
|
data: 'aggregate,prefix,suffix,description',
|
||||||
|
style: 'sync_on_bbox_change'
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
_updateAggregate: function () {
|
||||||
|
var aggregate = this.get('aggregate');
|
||||||
|
this.set({
|
||||||
|
column: aggregate.attribute,
|
||||||
|
operation: aggregate.operator
|
||||||
|
});
|
||||||
|
|
||||||
|
this.updateSchema();
|
||||||
|
},
|
||||||
|
|
||||||
|
updateSchema: function () {
|
||||||
|
var columnOptions = this._columnOptionsFactory.create(this.get('column'), this._isNumberType);
|
||||||
|
|
||||||
|
this.schema = _.extend(this.schema, {
|
||||||
|
aggregate: {
|
||||||
|
type: 'Operators',
|
||||||
|
title: _t('editor.widgets.widgets-form.data.operation'),
|
||||||
|
options: columnOptions,
|
||||||
|
dialogMode: DialogConstants.Mode.FLOAT,
|
||||||
|
editorAttrs: {
|
||||||
|
showSearch: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
suffix: {
|
||||||
|
type: 'EnablerEditor',
|
||||||
|
title: '',
|
||||||
|
label: _t('editor.widgets.widgets-form.data.suffix'),
|
||||||
|
editor: {
|
||||||
|
type: 'Text'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
prefix: {
|
||||||
|
type: 'EnablerEditor',
|
||||||
|
title: '',
|
||||||
|
label: _t('editor.widgets.widgets-form.data.prefix'),
|
||||||
|
editor: {
|
||||||
|
type: 'Text'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
description: {
|
||||||
|
type: 'EnablerEditor',
|
||||||
|
title: '',
|
||||||
|
label: _t('editor.widgets.widgets-form.style.description'),
|
||||||
|
editor: {
|
||||||
|
type: 'TextArea'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
canSave: function () {
|
||||||
|
var column = this.get('column');
|
||||||
|
var operation = this.get('operation');
|
||||||
|
|
||||||
|
return operation === 'count' || !!column;
|
||||||
|
},
|
||||||
|
|
||||||
|
_isNumberType: function (m) {
|
||||||
|
return m.get('type') === 'number';
|
||||||
|
}
|
||||||
|
});
|
Loading…
Reference in New Issue
Block a user