Initial commit
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
var _ = require('underscore');
|
||||
var WidgetModel = require('../widget-model');
|
||||
|
||||
/**
|
||||
* Model for a histogram widget
|
||||
*/
|
||||
module.exports = WidgetModel.extend({
|
||||
defaults: {
|
||||
normalized: true
|
||||
},
|
||||
|
||||
defaultState: _.extend(
|
||||
{
|
||||
autoStyle: false,
|
||||
normalized: false
|
||||
},
|
||||
WidgetModel.prototype.defaultState
|
||||
),
|
||||
|
||||
initialize: function (attrs, opts) {
|
||||
WidgetModel.prototype.initialize.apply(this, arguments);
|
||||
this.on('change:collapsed', this._onCollapsedChange, this);
|
||||
this.on('change:style', this._updateAutoStyle, this);
|
||||
this.dataviewModel.once('change', function () {
|
||||
if (this.get('autoStyle')) {
|
||||
this.autoStyle();
|
||||
}
|
||||
}, this);
|
||||
},
|
||||
|
||||
_onCollapsedChange: function (m, isCollapsed) {
|
||||
this.dataviewModel.set('enabled', !isCollapsed);
|
||||
},
|
||||
|
||||
getState: function () {
|
||||
var state = WidgetModel.prototype.getState.call(this);
|
||||
var start = this.dataviewModel.get('start');
|
||||
var end = this.dataviewModel.get('end');
|
||||
var min = this.get('min');
|
||||
var max = this.get('max');
|
||||
|
||||
var checkRoughEqual = function (a, b) {
|
||||
if (_.isNumber(a) && _.isNumber(b) && (a !== b) && Math.abs(a - b) > Math.abs(start - end) * 0.01) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
if (checkRoughEqual(start, min)) {
|
||||
state.min = min;
|
||||
} else {
|
||||
delete state.min;
|
||||
}
|
||||
|
||||
if (checkRoughEqual(end, max)) {
|
||||
state.max = max;
|
||||
} else {
|
||||
delete state.max;
|
||||
}
|
||||
|
||||
if (this.get('zoomed') === true) {
|
||||
state.zoomed = true;
|
||||
}
|
||||
|
||||
return state;
|
||||
}
|
||||
|
||||
});
|
||||
Reference in New Issue
Block a user