=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/chart/Chart.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/chart/Chart.java 2013-05-10 16:29:19 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/chart/Chart.java 2013-05-10 22:39:22 +0000 @@ -836,7 +836,7 @@ } @JsonProperty - @JsonView( {DetailedView.class, ExportView.class} ) + @JsonView( {DetailedView.class, ExportView.class, DimensionalView.class} ) @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0) public boolean isUserOrganisationUnit() { @@ -849,7 +849,7 @@ } @JsonProperty - @JsonView( {DetailedView.class, ExportView.class} ) + @JsonView( {DetailedView.class, ExportView.class, DimensionalView.class} ) @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0) public boolean isUserOrganisationUnitChildren() { === modified file 'dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/javascripts/plugin/plugin.js' --- dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/javascripts/plugin/plugin.js 2012-07-02 11:46:10 +0000 +++ dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/javascripts/plugin/plugin.js 2013-05-10 14:24:18 +0000 @@ -10,7 +10,7 @@ ajax: { data_get: 'api/chartValues.jsonp', favorite_get: 'api/charts/' - }, + }, dimension: { data: { value: 'data', @@ -69,7 +69,7 @@ }; Ext.onReady( function() { - + DHIS.chart.initialize = function() { DHIS.chart.store.column = DHIS.chart.store.defaultChartStore; DHIS.chart.store.stackedcolumn = DHIS.chart.store.defaultChartStore; @@ -77,13 +77,13 @@ DHIS.chart.store.line = DHIS.chart.store.defaultChartStore; DHIS.chart.store.area = DHIS.chart.store.defaultChartStore; DHIS.chart.store.pie = DHIS.chart.store.defaultChartStore; - + DHIS.getChart = DHIS.chart.exe.addToQueue; DHIS.destroyChart = DHIS.chart.exe.destroy; }; - + DHIS.chart.projects = {}; - + DHIS.chart.plugin = { SimpleRegression: function SimpleRegression() { var sumX = 0; @@ -93,7 +93,7 @@ var n = 0; var xbar = 0; var ybar = 0; - + this.addData = function(x, y) { if ( n == 0 ) { xbar = x; @@ -107,30 +107,30 @@ xbar += dx / ( n + 1 ); ybar += dy / ( n + 1 ); } - + sumX += x; sumY += y; n++; }; - + this.predict = function( x ) { - var b1 = this.getSlope(); + var b1 = this.getSlope(); return this.getIntercept( b1 ) + b1 * x; }; - + this.getSlope = function() { if ( n < 2 ) { return Number.NaN; - } + } return sumXY / sumXX; }; - + this.getIntercept = function( slope ) { return ( sumY - slope * sumX ) / n; }; } }; - + DHIS.chart.util = { dimension: { indicator: { @@ -206,7 +206,7 @@ animate: !project.state.conf.skipAnimation, store: project.store, shadow: false, - insetPadding: DHIS.chart.conf.chart.style.inset, + insetPadding: DHIS.chart.conf.chart.style.inset, items: project.state.conf.hideSubtitle ? false : DHIS.chart.util.chart.def.getTitle(project), legend: project.state.conf.hideLegend ? false : DHIS.chart.util.chart.def.getLegend(project.store.range.length), width: project.state.conf.width || elWidth, @@ -287,7 +287,7 @@ fill: '#fefefe', stroke: '#aaa', 'stroke-width': 0.1 - }, + }, even: { opacity: 1, fill: '#f1f1f1', @@ -360,7 +360,7 @@ title: title }; }, - getTrendLineArray: function(project) { + getTrendLineArray: function(project) { var a = []; for (var i = 0; i < project.trendline.length; i++) { a.push({ @@ -386,10 +386,10 @@ var colors = DHIS.chart.conf.chart.theme.dv1.slice(0, project.state.series.names.length); if (project.state.conf.targetLineValue || project.state.conf.baseLineValue) { colors.push('#051a2e'); - } + } if (project.state.conf.targetLineValue) { colors.push('#051a2e'); - } + } if (project.state.conf.baseLineValue) { colors.push('#051a2e'); } @@ -541,7 +541,7 @@ x: 28, y: 36 } - ]; + ]; }, series: { getTips: function(project) { @@ -570,8 +570,8 @@ number: { isInteger: function(n) { var str = new String(n); - if (str.indexOf('.') > -1) { - var d = str.substr(str.indexOf('.') + 1); + if (str.indexOf('-') > -1) { + var d = str.substr(str.indexOf('-') + 1); return (d.length === 1 && d == '0'); } return false; @@ -602,11 +602,11 @@ if (expression && expression == true) { url = Ext.String.urlAppend(url, param + '=true'); } - return url; + return url; } }, value: { - jsonfy: function(r) { + jsonfy: function(r) { var object = { values: [], periods: r.p, @@ -630,17 +630,17 @@ return object; }, isDefined: function(variable) { - return (typeof(variable) !== 'undefined'); + return (typeof(variable) !== 'undefined'); } } }; - + DHIS.chart.store = { getChartStore: function(project) { - var keys = []; + var keys = []; Ext.Array.each(project.data, function(item) { keys = Ext.Array.merge(keys, Ext.Object.getKeys(item)); - }); + }); project.store = Ext.create('Ext.data.Store', { fields: keys, data: project.data @@ -651,11 +651,11 @@ project.store.range.splice(i, 1); } } - + DHIS.chart.chart.getChart(project); } }; - + DHIS.chart.state = { state: null, getState: function(conf) { @@ -677,7 +677,7 @@ } } }; - + var defaultConf = { type: 'column', stacked: false, @@ -705,28 +705,28 @@ rangeAxisLabel: null, url: '' }; - + project.state.conf = Ext.applyIf(conf, defaultConf); project.state.conf.type = project.state.conf.type.toLowerCase(); project.state.conf.series = project.state.conf.series.toLowerCase(); project.state.conf.category = project.state.conf.category.toLowerCase(); project.state.conf.filter = project.state.conf.filter.toLowerCase(); - + project.state.conf[project.state.conf.series] = DHIS.chart.conf.finals.chart.series; project.state.conf[project.state.conf.category] = DHIS.chart.conf.finals.chart.category; project.state.conf[project.state.conf.filter] = DHIS.chart.conf.finals.chart.filter; - + project.state.type = project.state.conf.type; project.state.series.dimension = project.state.conf.series; project.state.category.dimension = project.state.conf.category; project.state.filter.dimension = project.state.conf.filter; - + DHIS.chart.state.state = project.state; - + DHIS.chart.value.getValues(project); }, setState: function(conf) { - if (conf.uid) { + if (conf.uid) { var options = { url: conf.url + DHIS.chart.conf.finals.ajax.favorite_get + conf.uid + '.jsonp', scope: this, @@ -736,7 +736,7 @@ alert('Invalid uid'); return; } - + conf.type = r.type.toLowerCase(); conf.periods = DHIS.chart.util.dimension.period.getRelativesFromObject(r.relativePeriods); conf.organisationunits = DHIS.chart.util.dimension.organisationunit.getIdsFromObjects(r.organisationUnits); @@ -755,108 +755,108 @@ conf.baseLineLabel = r.baseLineLabel || null; conf.domainAxisLabel = r.domainAxisLabel || null; conf.rangeAxisLabel = r.rangeAxisLabel || null; - + if (r.indicators) { conf.indicators = DHIS.chart.util.dimension.indicator.getIdsFromObjects(r.indicators); } if (r.dataElements) { conf.dataelements = DHIS.chart.util.dimension.dataelement.getIdsFromObjects(r.dataElements); } - - this.getState(conf); + + this.getState(conf); } }; - + if (DHIS.chart.util.value.isDefined(conf.callbackName)) { - options.callbackName = conf.callbackName; + options.callbackName = conf.callbackName; } - + Ext.data.JsonP.request( options ); } } }; - + DHIS.chart.value = { getValues: function(project) { - var params = []; + var params = []; params = params.concat(DHIS.chart.util.dimension[project.state.series.dimension].getUrl()); params = params.concat(DHIS.chart.util.dimension[project.state.category.dimension].getUrl()); params = params.concat(DHIS.chart.util.dimension[project.state.filter.dimension].getUrl(true)); - + var baseUrl = DHIS.chart.util.string.extendUrl(project.state.conf.url) + DHIS.chart.conf.finals.ajax.data_get; baseUrl = DHIS.chart.util.string.appendUrlIfTrue(baseUrl, DHIS.chart.conf.finals.chart.orgUnitIsParent, project.state.conf.orgUnitIsParent); - + Ext.Array.each(params, function(item) { baseUrl = Ext.String.urlAppend(baseUrl, item); }); - + if (project.state.conf.userOrganisationUnit) { baseUrl = Ext.String.urlAppend(baseUrl, 'userOrganisationUnit=true'); } if (project.state.conf.userOrganisationUnitChildren) { baseUrl = Ext.String.urlAppend(baseUrl, 'userOrganisationUnitChildren=true'); } - + var options = { url: baseUrl, disableCaching: false, success: function(r) { var json = DHIS.chart.util.value.jsonfy(r); project.values = json.values; - + if (!project.values.length) { alert('No data values'); return; } - + for (var i = 0; i < project.values.length; i++) { project.values[i][DHIS.chart.conf.finals.dimension.data.value] = DHIS.chart.util.string.getEncodedString(project.values[i][DHIS.chart.conf.finals.dimension.data.value]); project.values[i][DHIS.chart.conf.finals.dimension.period.value] = DHIS.chart.util.string.getEncodedString(project.values[i][DHIS.chart.conf.finals.dimension.period.value]); project.values[i][DHIS.chart.conf.finals.dimension.organisationunit.value] = DHIS.chart.util.string.getEncodedString(project.values[i][DHIS.chart.conf.finals.dimension.organisationunit.value]); } - + project.state[project.state.conf.data].names = json.datanames; project.state[project.state.conf.organisationunit].names = json.organisationunitnames; - Ext.Array.each(project.values, function(item) { + Ext.Array.each(project.values, function(item) { Ext.Array.include(project.state[project.state.conf.period].names, DHIS.chart.util.string.getEncodedString(item[project.state[project.state.conf.period].dimension])); item.v = parseFloat(item.v); }); - + for (var k in project.state.conf) { if (project.state.conf[k] == 'period') { project.state[k].names = json.periods; } } - + DHIS.chart.state.state = project.state; DHIS.chart.chart.getData(project); } }; - + if (DHIS.chart.util.value.isDefined(project.state.conf.callbackName)) { - options.callbackName = project.state.conf.callbackName; + options.callbackName = project.state.conf.callbackName; } - + Ext.data.JsonP.request(options); } }; - + DHIS.chart.chart = { getData: function(project) { project.data = []; - + Ext.Array.each(project.state.category.names, function(item) { var obj = {}; obj[DHIS.chart.conf.finals.data.domain] = item; project.data.push(obj); }); - + Ext.Array.each(project.data, function(item) { for (var i = 0; i < project.state.series.names.length; i++) { item[project.state.series.names[i]] = 0; } }); - + Ext.Array.each(project.data, function(item) { for (var i = 0; i < project.state.series.names.length; i++) { for (var j = 0; j < project.values.length; j++) { @@ -867,7 +867,7 @@ } } }); - + if (project.state.conf.trendLine) { project.trendline = []; for (var i = 0; i < project.state.series.names.length; i++) { @@ -899,7 +899,7 @@ item[DHIS.chart.conf.finals.data.baseline] = project.state.conf.baseLineValue; }); } - + DHIS.chart.store.getChartStore(project); }, el: null, @@ -938,15 +938,15 @@ if (project.state.conf.baseLineValue) { series.push(DHIS.chart.util.chart.def.series.getBaseLine(project)); } - + var axes = []; var numeric = DHIS.chart.util.chart.def.axis.getNumeric(project, isStacked); axes.push(numeric); axes.push(DHIS.chart.util.chart.def.axis.getCategory(project)); - + DHIS.chart.util.chart.def.series.setTheme(project); project.chart = DHIS.chart.util.chart.def.getChart(project, axes, series, this.el.getWidth(), this.el.getHeight()); - + DHIS.chart.projects[project.state.conf.el] = project; }, stackedcolumn: function(project) { @@ -982,15 +982,15 @@ if (project.state.conf.baseLineValue) { series.push(DHIS.chart.util.chart.bar.series.getBaseLine(project)); } - + var axes = []; var numeric = DHIS.chart.util.chart.bar.axis.getNumeric(project, isStacked); axes.push(numeric); axes.push(DHIS.chart.util.chart.bar.axis.getCategory(project)); - + DHIS.chart.util.chart.def.series.setTheme(project); project.chart = DHIS.chart.util.chart.def.getChart(project, axes, series, this.el.getWidth(), this.el.getHeight()); - + DHIS.chart.projects[project.state.conf.el] = project; }, stackedbar: function(project) { @@ -1003,24 +1003,24 @@ for (var i = 0; i < a.length; i++) { series.push(a[i]); } - } + } series = series.concat(DHIS.chart.util.chart.line.series.getArray(project)); - + if (project.state.conf.targetLineValue) { series.push(DHIS.chart.util.chart.def.series.getTargetLine(project)); } if (project.state.conf.baseLineValue) { series.push(DHIS.chart.util.chart.def.series.getBaseLine(project)); } - + var axes = []; var numeric = DHIS.chart.util.chart.def.axis.getNumeric(project); axes.push(numeric); axes.push(DHIS.chart.util.chart.def.axis.getCategory(project)); - + DHIS.chart.util.chart.line.series.setTheme(project); project.chart = DHIS.chart.util.chart.def.getChart(project, axes, series, this.el.getWidth(), this.el.getHeight()); - + DHIS.chart.projects[project.state.conf.el] = project; }, area: function(project) { @@ -1035,15 +1035,15 @@ stroke: '#555' } }); - + var axes = []; var numeric = DHIS.chart.util.chart.def.axis.getNumeric(project); axes.push(numeric); axes.push(DHIS.chart.util.chart.def.axis.getCategory(project)); - + DHIS.chart.util.chart.line.series.setTheme(project); project.chart = DHIS.chart.util.chart.def.getChart(project, axes, series, this.el.getWidth(), this.el.getHeight()); - + DHIS.chart.projects[project.state.conf.el] = project; }, pie: function(project) { @@ -1078,11 +1078,11 @@ }], theme: project.state.conf.el }); - + DHIS.chart.projects[project.state.conf.el] = project; } }; - + DHIS.chart.exe = { allow: true, queue: [], @@ -1114,7 +1114,7 @@ } } }; - + DHIS.chart.initialize(); }); @@ -1126,7 +1126,7 @@ data: 'data', periods: 'periods', orgunits: 'orgunits', - crosstab: 'crosstab', + crosstab: 'crosstab', orgUnitIsParent: 'orgUnitIsParent', defaultConf: { indicators: [], @@ -1151,14 +1151,14 @@ if (expression && expression == true) { url = Ext.String.urlAppend(url, param + '=true'); } - return url; + return url; }, destroy: function(el) { if (DHIS.table.tables[el]) { DHIS.table.tables[el].destroy(); } }, - getDataQuery: function(conf, url) { + getDataQuery: function(conf, url) { Ext.Array.each(conf.indicators, function(item) { url = Ext.String.urlAppend(url, 'in=' + item); }); @@ -1178,7 +1178,7 @@ url = Ext.String.urlAppend(url, 'crosstab=' + item); }); url = DHIS.table.utils.appendUrlIfTrue(url, DHIS.table.finals.orgUnitIsParent, conf.orgUnitIsParent); - + return url; }, getTableDataUrl: function(conf) { @@ -1186,11 +1186,11 @@ return this.getDataQuery(conf, url); }, getDynamicDataUrl: function(conf) { - var url = conf.url + DHIS.table.finals.dynamicDataGet + '.' + conf.format; + var url = conf.url + DHIS.table.finals.dynamicDataGet + '-' + conf.format; return this.getDataQuery(conf, url); }, isDefined: function(variable) { - return (typeof(variable) !== 'undefined'); + return (typeof(variable) !== 'undefined'); } }; @@ -1231,11 +1231,11 @@ }); } }; - + if (DHIS.table.utils.isDefined(conf.callbackName)) { - options.callbackName = conf.callbackName; + options.callbackName = conf.callbackName; } - + Ext.data.JsonP.request(options); } }; @@ -1244,31 +1244,31 @@ getMarkup: function(conf, data) { var html = ''; var classMap = []; /* Col index -> class markup */ - + Ext.Array.each(data.headers, function(header, index) { if (!Ext.Array.contains(conf.hiddenCols, index)) { - var clazz = !header.meta ? ' class=\"val\"' : ''; + var clazz = !header.meta ? ' class=\"val\"' : ''; classMap[index] = clazz; html += '' + header.name + '<\/th>'; - } + } }); - + html += '<\/tr>'; - + Ext.Array.each(data.rows, function(row) { html += ''; Ext.Array.each(row, function(field, index) { if (!Ext.Array.contains(conf.hiddenCols, index)) { - var clazz = classMap[index]; + var clazz = classMap[index]; html += '' + field + '<\/td>'; } }); html += '<\/tr>'; }); - + html += '<\/table>'; return html; - }, + }, render: function(conf) { var options = { url: DHIS.table.utils.getTableDataUrl(conf), @@ -1278,11 +1278,11 @@ Ext.get(conf.el).update(html); } }; - + if (DHIS.table.utils.isDefined(conf.callbackName)) { - options.callbackName = conf.callbackName; + options.callbackName = conf.callbackName; } - + Ext.data.JsonP.request(options); } }; === modified file 'dhis-2/dhis-web/dhis-web-visualizer/src/main/webapp/dhis-web-visualizer/app/scripts/app.js' --- dhis-2/dhis-web/dhis-web-visualizer/src/main/webapp/dhis-web-visualizer/app/scripts/app.js 2013-05-10 05:41:52 +0000 +++ dhis-2/dhis-web/dhis-web-visualizer/src/main/webapp/dhis-web-visualizer/app/scripts/app.js 2013-05-10 22:39:22 +0000 @@ -1047,43 +1047,8 @@ NameWindow = function(id) { var window, - bodify, record = dv.store.charts.getById(id); - bodify = function(xLayout) { - if (xLayout.extended.objectNameRecordsMap[dv.conf.finals.dimension.operand.objectName]) { - for (var i = 0, id; i < xLayout.columns[0].items.length; i++) { - id = xLayout.columns[0].items[i].id; - if (id.indexOf('-') !== -1) { - xLayout.columns[0].items[i].id = id.substr(0, id.indexOf('-')); - console.log(xLayout.columns[0].items[i].id); - } - } - - for (var i = 0, dim; i < xLayout.rows.length; i++) { - dim = xLayout.rows[i]; - for (var j = 0, id; j < dim.items.length; j++) { - id = dim.items[j].id; - if (id.indexOf('-') !== -1) { - id = id.substr(0, id.indexOf('-')); - } - } - } - - for (var i = 0, dim; i < xLayout.filters.length; i++) { - dim = xLayout.filters[i]; - for (var j = 0, id; j < dim.items.length; j++) { - id = dim.items[j].id; - if (id.indexOf('-') !== -1) { - id = id.substr(0, id.indexOf('-')); - } - } - } - } - - return xLayout; - }; - nameTextfield = Ext.create('Ext.form.field.Text', { height: 26, width: 371, @@ -1101,12 +1066,12 @@ createButton = Ext.create('Ext.button.Button', { text: 'Create', //i18n handler: function() { - var favorite = bodify(Ext.clone(dv.xLayout)); + var favorite = Ext.clone(dv.xLayout); favorite.name = nameTextfield.getValue(); if (favorite && favorite.name) { - // Server sync + // Server sync: property names favorite.showData = favorite.showValues; favorite.targetLineLabel = favorite.targetLineTitle; favorite.baseLineLabel = favorite.baseLineTitle; @@ -1121,6 +1086,36 @@ delete favorite.extended; + // Server sync: operand ids + for (var i = 0, item; i < favorite.columns[0].items.length; i++) { + favorite.columns[0].items[i].id = dv.util.str.replaceAll(favorite.columns[0].items[i].id, '-', '.'); + } + for (var i = 0, item; i < favorite.rows[0].items.length; i++) { + favorite.rows[0].items[i].id = dv.util.str.replaceAll(favorite.rows[0].items[i].id, '-', '.'); + } + for (var i = 0, dim; i < favorite.filters.length; i++) { + dim = favorite.filters[i]; + for (var j = 0; j < dim.items.length; j++) { + dim.items[j].id = dv.util.str.replaceAll(dim.items[j].id, '-', '.'); + } + } + + // Server sync: user orgunit + if (favorite.userOrganisationUnit || favorite.userOrganisationUnitChildren) { + var dimensions = [].concat(favorite.columns, favorite.rows, favorite.filters); + + for (var i = 0; i < dimensions.length; i++) { + if (dimensions[i].dimension === dv.conf.finals.dimension.organisationUnit.objectName) { + if (favorite.userOrganisationUnit) { + dimensions[i].items.push({id: 'USER_ORGUNIT'}); + } + if (favorite.userOrganisationUnitChildren) { + dimensions[i].items.push({id: 'USER_ORGUNIT_CHILDREN'}); + } + } + } + } + // Request Ext.Ajax.request({ url: dv.init.contextPath + '/api/charts/', @@ -3450,8 +3445,18 @@ items: [] }; - for (var i = 0; i < r.length; i++) { - data.items.push({id: r[i].data.id}); + if (userOrganisationUnit.getValue() || userOrganisationUnitChildren.getValue()) { + if (userOrganisationUnit.getValue()) { + data.items.push({id: 'USER_ORGUNIT'}); + } + if (userOrganisationUnitChildren.getValue()) { + data.items.push({id: 'USER_ORGUNIT_CHILDREN'}); + } + } + else { + for (var i = 0; i < r.length; i++) { + data.items.push({id: r[i].data.id}); + } } return data.items.length ? data : null; @@ -4016,7 +4021,6 @@ objectName, periodRecords, fixedPeriodRecords = []; -console.log("xLayout", xLayout); // Type dv.viewport.chartType.setChartType(xLayout.type); @@ -4094,18 +4098,27 @@ } // Options - //var showTrendLine, - //targetLineValue, - //targetLineTitle, - //baseLineValue, - //baseLineTitle, - - //showValues, - //hideLegend, - //hideTitle, - //title, - //domainAxisTitle, - //rangeAxisTitle, + if (Ext.isNumber(xLayout.targetLineValue)) { + dv.viewport.targetLineValue.setValue(xLayout.targetLineValue); + } + if (Ext.isString(xLayout.targetLineTitle)) { + dv.viewport.targetLineTitle.setValue(xLayout.targetLineTitle); + } + if (Ext.isNumber(xLayout.baseLineValue)) { + dv.viewport.baseLineValue.setValue(xLayout.baseLineValue); + } + if (Ext.isString(xLayout.baseLineTitle)) { + dv.viewport.baseLineTitle.setValue(xLayout.baseLineTitle); + } + if (Ext.isString(xLayout.title)) { + dv.viewport.title.setValue(xLayout.title); + } + if (Ext.isString(xLayout.domainAxisTitle)) { + dv.viewport.domainAxisTitle.setValue(xLayout.domainAxisTitle); + } + if (Ext.isString(xLayout.rangeAxisTitle)) { + dv.viewport.rangeAxisTitle.setValue(xLayout.rangeAxisTitle); + } if (Ext.isBoolean(xLayout.regression)) { dv.viewport.showTrendLine.setValue(xLayout.regression); @@ -4120,14 +4133,6 @@ dv.viewport.hideTitle.setValue(xLayout.hideTitle); } - - - - - - - - // Organisation units userOrganisationUnit.setValue(xLayout.userOrganisationUnit); userOrganisationUnitChildren.setValue(xLayout.userOrganisationUnitChildren); === modified file 'dhis-2/dhis-web/dhis-web-visualizer/src/main/webapp/dhis-web-visualizer/app/scripts/core.js' --- dhis-2/dhis-web/dhis-web-visualizer/src/main/webapp/dhis-web-visualizer/app/scripts/core.js 2013-05-09 13:49:26 +0000 +++ dhis-2/dhis-web/dhis-web-visualizer/src/main/webapp/dhis-web-visualizer/app/scripts/core.js 2013-05-10 22:52:32 +0000 @@ -381,8 +381,8 @@ util.number = { isInteger: function(n) { var str = new String(n); - if (str.indexOf('.') > -1) { - var d = str.substr(str.indexOf('.') + 1); + if (str.indexOf('-') > -1) { + var d = str.substr(str.indexOf('-') + 1); return (d.length === 1 && d == '0'); } return false; @@ -674,6 +674,40 @@ return paramString; }; + getSyncronizedXLayout = function(xLayout, response) { + var dimensions = [].concat(xLayout.columns, xLayout.rows, xLayout.filters), + xOuDimension = xLayout.extended.objectNameDimensionMap[dimConf.organisationUnit.objectName], + isUserOrgunit = Ext.Array.contains(xOuDimension.items, 'USER_ORGUNIT'), + isUserOrgunitChildren = Ext.Array.contains(xOuDimension.items, 'USER_ORGUNIT_CHILDREN'), + items = [], + isDirty = false; + + // Add user orgunits + if (xOuDimension && (isUserOrgunit || isUserOrgunitChildren)) { + if (isUserOrgunit) { + items.push(Ext.clone(dv.init.user.ou)); + } + if (isUserOrgunitChildren) { + items = items.concat(Ext.clone(dv.init.user.ouc)); + } + + for (var i = 0; i < dimensions.length; i++) { + if (dimensions[i].dimension === dimConf.organisationUnit.objectName) { + dimensions[i].items = items; + } + } + + isDirty = true; + } + + if (isDirty) { + delete xLayout.extended; + xLayout = dv.util.chart.extendLayout(xLayout); + } + + return xLayout; + }; + validateResponse = function(response) { if (!(response && Ext.isObject(response))) { alert('Data response invalid'); @@ -1177,8 +1211,9 @@ getDefaultChartTitle = function(store, xResponse, xLayout) { var filterItems = xLayout.extended.filterItems, + a = [], text = ''; - +console.log("filterItems", filterItems); if (Ext.isArray(filterItems) && filterItems.length) { for (var i = 0; i < filterItems.length; i++) { text += xResponse.metaData.names[filterItems[i]]; @@ -1481,7 +1516,7 @@ series = getDefaultSeries(store, xResponse, xLayout); series.type = 'area'; - series.style.opacity = 0.55; + series.style.opacity = 0.7; series.style.lineWidth = 0; delete series.label; delete series.tips; @@ -1608,12 +1643,12 @@ return; } - //xLayout = getSyncronizedXLayout(xLayout, response); + xLayout = getSyncronizedXLayout(xLayout, response); - //if (!xLayout) { - //dv.util.mask.hideMask(); - //return; - //} + if (!xLayout) { + dv.util.mask.hideMask(); + return; + } xResponse = extendResponse(response, xLayout); @@ -1728,6 +1763,10 @@ if (!(Ext.isObject(dim) && Ext.isString(dim.dimension) && Ext.isArray(dim.items) && dim.items.length)) { return; } + + for (var j = 0; j < dim.items.length; j++) { + dim.items[j].id = dim.items[j].id.replace('.', '-'); + } } return true;