jui.define("chart.widget.core", [ "util.base" ], function(_) { /** * @class chart.widget.core * implements core widget * @extends chart.draw * @alias CoreWidget * @requires util.base * @requires jquery * */ var CoreWidget = function() { this.getIndexArray = function(index) { var list = [ 0 ]; if(_.typeCheck("array", index)) { list = index; } else if(_.typeCheck("integer", index)) { list = [ index ]; } return list; } this.getScaleToValue = function(scale, minScale, maxScale, minValue, maxValue) { var tick = (maxScale - minScale) * 10, step = (maxValue - minValue) / tick, value = maxValue - (step * ((scale - minScale) / 0.1)); if(value < minValue) return minValue; else if(value > maxValue) return maxValue; return value; } this.getValueToScale = function(value, minValue, maxValue, minScale, maxScale) { var tick = (maxScale - minScale) * 10, step = (maxValue - minValue) / tick; return parseFloat((minScale + ((maxValue - value) / step) * 0.1).toFixed(1)); } this.isRender = function() { return (this.widget.render === true) ? true : false; } this.on = function(type, callback, axisIndex) { var self = this; return this.chart.on(type, function() { if(_.startsWith(type, "axis.") && _.typeCheck("integer", axisIndex)) { var axis = self.chart.axis(axisIndex), e = arguments[0]; if (_.typeCheck("object", axis)) { if (arguments[1] == axisIndex) { callback.apply(self, [ e ]); } } } else { callback.apply(self, arguments); } }, this.isRender() ? "render" : "renderAll"); } this.drawAfter = function(obj) { obj.attr({ "class" : "widget-" + this.widget.type }); } } CoreWidget.setup = function() { /** @property {chart.builder} chart */ /** @property {chart.axis} axis */ /** @property {Object} widget */ /** @property {Number} index [Read Only] Index which shows the sequence how a widget is drawn. */ return { /** * @cfg {Boolean} [render=false] Determines whether a widget is to be rendered. */ render: false, /** * @cfg {Number} [index=0] current widget index */ index: 0 } } return CoreWidget; }, "chart.draw");