123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- jvm.DataSeries = function(params, elements) {
- var scaleConstructor;
- params = params || {};
- params.attribute = params.attribute || 'fill';
- this.elements = elements;
- this.params = params;
- if (params.attributes) {
- this.setAttributes(params.attributes);
- }
- if (jvm.$.isArray(params.scale)) {
- scaleConstructor = (params.attribute === 'fill' || params.attribute === 'stroke') ? jvm.ColorScale : jvm.NumericScale;
- this.scale = new scaleConstructor(params.scale, params.normalizeFunction, params.min, params.max);
- } else if (params.scale) {
- this.scale = new jvm.OrdinalScale(params.scale);
- } else {
- this.scale = new jvm.SimpleScale(params.scale);
- }
- this.values = params.values || {};
- this.setValues(this.values);
- };
- jvm.DataSeries.prototype = {
- setAttributes: function(key, attr){
- var attrs = key,
- code;
- if (typeof key == 'string') {
- if (this.elements[key]) {
- this.elements[key].setStyle(this.params.attribute, attr);
- }
- } else {
- for (code in attrs) {
- if (this.elements[code]) {
- this.elements[code].element.setStyle(this.params.attribute, attrs[code]);
- }
- }
- }
- },
-
- setValues: function(values) {
- var max = Number.MIN_VALUE,
- min = Number.MAX_VALUE,
- val,
- cc,
- attrs = {};
- if (!(this.scale instanceof jvm.OrdinalScale) && !(this.scale instanceof jvm.SimpleScale)) {
- if (!this.params.min || !this.params.max) {
- for (cc in values) {
- val = parseFloat(values[cc]);
- if (val > max) max = values[cc];
- if (val < min) min = val;
- }
- if (!this.params.min) {
- this.scale.setMin(min);
- }
- if (!this.params.max) {
- this.scale.setMax(max);
- }
- this.params.min = min;
- this.params.max = max;
- }
- for (cc in values) {
- val = parseFloat(values[cc]);
- if (!isNaN(val)) {
- attrs[cc] = this.scale.getValue(val);
- } else {
- attrs[cc] = this.elements[cc].element.style.initial[this.params.attribute];
- }
- }
- } else {
- for (cc in values) {
- if (values[cc]) {
- attrs[cc] = this.scale.getValue(values[cc]);
- } else {
- attrs[cc] = this.elements[cc].element.style.initial[this.params.attribute];
- }
- }
- }
- this.setAttributes(attrs);
- jvm.$.extend(this.values, values);
- },
- clear: function(){
- var key,
- attrs = {};
- for (key in this.values) {
- if (this.elements[key]) {
- attrs[key] = this.elements[key].element.style.initial[this.params.attribute];
- }
- }
- this.setAttributes(attrs);
- this.values = {};
- },
-
- setScale: function(scale) {
- this.scale.setScale(scale);
- if (this.values) {
- this.setValues(this.values);
- }
- },
-
- setNormalizeFunction: function(f) {
- this.scale.setNormalizeFunction(f);
- if (this.values) {
- this.setValues(this.values);
- }
- }
- };
|