/** * @provides javelin-chart-curtain-view */ JX.install('ChartCurtainView', { construct: function() { this._labels = []; }, members: { _node: null, _labels: null, _labelsNode: null, getNode: function() { if (!this._node) { var attr = { className: 'chart-curtain' }; this._node = JX.$N('div', attr); } return this._node; }, reset: function() { this._labels = []; }, addFunctionLabel: function(label) { this._labels.push(label); return this; }, redraw: function() { var content = [this._getFunctionLabelsNode()]; JX.DOM.setContent(this.getNode(), content); return this; }, _getFunctionLabelsNode: function() { if (!this._labels.length) { return null; } if (!this._labelsNode) { var list_attrs = { className: 'chart-function-label-list' }; var labels = JX.$N('ul', list_attrs); var items = []; for (var ii = 0; ii < this._labels.length; ii++) { items.push(this._newFunctionLabelItem(this._labels[ii])); } JX.DOM.setContent(labels, items); this._labelsNode = labels; } return this._labelsNode; }, _newFunctionLabelItem: function(label) { var item_attrs = { className: 'chart-function-label-list-item' }; var icon = new JX.PHUIXIconView() .setIcon(label.getIcon()); // Charts may use custom colors, so we can't rely on the CSS classes // which only provide standard colors like "red" and "blue". icon.getNode().style.color = label.getColor(); var content = [ icon.getNode(), label.getName() ]; return JX.$N('li', item_attrs, content); } } });