=== modified file 'dhis-2/dhis-web/dhis-web-visualizer/src/main/resources/org/hisp/dhis/visualizer/i18n_module.properties' --- dhis-2/dhis-web/dhis-web-visualizer/src/main/resources/org/hisp/dhis/visualizer/i18n_module.properties 2012-01-25 17:26:58 +0000 +++ dhis-2/dhis-web/dhis-web-visualizer/src/main/resources/org/hisp/dhis/visualizer/i18n_module.properties 2012-01-30 13:51:10 +0000 @@ -21,9 +21,8 @@ select_group=Select group data_elements=Data elements all_indicator_groups=[ All indicator groups ] -available_indicators=Available indicators -selected_indicators=Selected indicators -available_data_elements=Available data elements +available=Available +selected=Selected periods=Periods months=Months last_month=Last month @@ -88,4 +87,4 @@ organisation_unit=Organisation unit invalid_uid=Invalid uid system_favorite_overwrite_not_allowed=* You are not allowed to overwrite a system favorite -favorite_no_orgunits=Favorite has no organisation units +favorite_no_orgunits=Favorite has no organisation units \ No newline at end of file === modified file 'dhis-2/dhis-web/dhis-web-visualizer/src/main/resources/org/hisp/dhis/visualizer/i18n_module_fr_FR.properties' --- dhis-2/dhis-web/dhis-web-visualizer/src/main/resources/org/hisp/dhis/visualizer/i18n_module_fr_FR.properties 2012-01-20 04:31:05 +0000 +++ dhis-2/dhis-web/dhis-web-visualizer/src/main/resources/org/hisp/dhis/visualizer/i18n_module_fr_FR.properties 2012-01-30 13:51:10 +0000 @@ -21,9 +21,8 @@ select_group=S\u00e9lectionner le goupe data_elements=Elements de donn\u00e9es all_indicator_groups=[ Tous les groupes d'indicateurs ] -available_indicators=Indicateurs disponibles -selected_indicators=Indicateurs s\u00e9lectionn\u00e9s -available_data_elements=El\u00e9ments de donn\u00e9es disponibles +available=Disponibles +selected=S\u00e9lectionn\u00e9s periods=P\u00e9riodes months=Mois last_month=Dernier mois @@ -45,8 +44,9 @@ hide_subtitle=Masquer le sous-titre hide_legend=Masquer la l\u00e9gende user_orgunit=Unit\u00e9 d'organisation de l'utilisateur -x_axis_label=Libell\u00e9 axe X -y_axis_label=Libell\u00e9 axe Y +domain_axis_label=Libell\u00e9 axe X +range_axis_label=Libell\u00e9 axe Y +target_line=Ligne cible target_line_value=Valeur de la ligne cible target_line_label=Libell\u00e9 de la ligne cible show_hide_chart_settings=Montrer/Masquer les param\u00e8tres du graphique @@ -87,3 +87,4 @@ organisation_unit=Unit\u00e9 d'organisation invalid_uid=uid invalide system_favorite_overwrite_not_allowed=* Vous n'\u00eates pas autoris\u00e9 \u00e0 \u00e9craser un favori du syst\u00e8me +favorite_no_orgunits=Favoris n'a pas d'unit\u00e8s d'organisation \ No newline at end of file === modified file 'dhis-2/dhis-web/dhis-web-visualizer/src/main/webapp/dhis-web-visualizer/app/app.js' --- dhis-2/dhis-web/dhis-web-visualizer/src/main/webapp/dhis-web-visualizer/app/app.js 2012-01-27 12:37:21 +0000 +++ dhis-2/dhis-web/dhis-web-visualizer/src/main/webapp/dhis-web-visualizer/app/app.js 2012-01-30 20:15:40 +0000 @@ -1,21 +1,74 @@ DV.conf = { init: { - data: [ - {'domain_': 'Category 1', 'Series 1': 41, 'Series 2': 69, 'Series 3': 63, 'Series 4': 51}, - {'domain_': 'Category 2', 'Series 1': 51, 'Series 2': 42, 'Series 3': 58, 'Series 4': 52}, - {'domain_': 'Category 3', 'Series 1': 44, 'Series 2': 71, 'Series 3': 62, 'Series 4': 54} - ], - jsonfy: function(r) { - r = Ext.JSON.decode(r.responseText); - var obj = {system: {rootNode: {id: r.rn[0], name: r.rn[1], level: 1}, periods: {}, user: {id: r.user.id, isAdmin: r.user.isAdmin}}}; - for (var relative in r.p) { - obj.system.periods[relative] = []; - for (var i = 0; i < r.p[relative].length; i++) { - obj.system.periods[relative].push({id: r.p[relative][i][0], name: r.p[relative][i][1]}); - } - } - return obj; - } + example: { + series: ['Series 1', 'Series 2', 'Series 3', 'Series 4'], + category: ['Category 1', 'Category 2', 'Category 3'], + filter: [DV.i18n.example_chart], + values: [51, 64, 48, 52, 72, 47, 66, 55, 62, 68, 63, 57], + setState: function() { + DV.state.type = DV.conf.finals.chart.column; + DV.state.series.dimension = DV.conf.finals.dimension.data.value; + DV.state.series.names = DV.conf.init.example.series; + DV.state.category.dimension = DV.conf.finals.dimension.period.value; + DV.state.category.names = DV.conf.init.example.category; + DV.state.filter.names = DV.conf.init.example.filter; + DV.state.targetLineValue = 90; + DV.state.rangeAxisLabel = 'Range axis label'; + }, + setValues: function() { + var obj1 = {}, obj2 = {}, obj3 = {}, obj4 = {}, obj5 = {}, obj6 = {}, obj7 = {}, obj8 = {}, obj9 = {}, obj10 = {}, obj11 = {}, obj12 = {}; + obj1[DV.state.series.dimension] = DV.conf.init.example.series[0]; + obj1[DV.state.category.dimension] = DV.conf.init.example.category[0]; + obj1.v = DV.conf.init.example.values[0]; + obj2[DV.state.series.dimension] = DV.conf.init.example.series[1]; + obj2[DV.state.category.dimension] = DV.conf.init.example.category[0]; + obj2.v = DV.conf.init.example.values[1]; + obj3[DV.state.series.dimension] = DV.conf.init.example.series[2]; + obj3[DV.state.category.dimension] = DV.conf.init.example.category[0]; + obj3.v = DV.conf.init.example.values[2]; + obj4[DV.state.series.dimension] = DV.conf.init.example.series[3]; + obj4[DV.state.category.dimension] = DV.conf.init.example.category[0]; + obj4.v = DV.conf.init.example.values[3]; + obj5[DV.state.series.dimension] = DV.conf.init.example.series[0]; + obj5[DV.state.category.dimension] = DV.conf.init.example.category[1]; + obj5.v = DV.conf.init.example.values[4]; + obj6[DV.state.series.dimension] = DV.conf.init.example.series[1]; + obj6[DV.state.category.dimension] = DV.conf.init.example.category[1]; + obj6.v = DV.conf.init.example.values[5]; + obj7[DV.state.series.dimension] = DV.conf.init.example.series[2]; + obj7[DV.state.category.dimension] = DV.conf.init.example.category[1]; + obj7.v = DV.conf.init.example.values[6]; + obj8[DV.state.series.dimension] = DV.conf.init.example.series[3]; + obj8[DV.state.category.dimension] = DV.conf.init.example.category[1]; + obj8.v = DV.conf.init.example.values[7]; + obj9[DV.state.series.dimension] = DV.conf.init.example.series[0]; + obj9[DV.state.category.dimension] = DV.conf.init.example.category[2]; + obj9.v = DV.conf.init.example.values[8]; + obj10[DV.state.series.dimension] = DV.conf.init.example.series[1]; + obj10[DV.state.category.dimension] = DV.conf.init.example.category[2]; + obj10.v = DV.conf.init.example.values[9]; + obj11[DV.state.series.dimension] = DV.conf.init.example.series[2]; + obj11[DV.state.category.dimension] = DV.conf.init.example.category[2]; + obj11.v = DV.conf.init.example.values[10]; + obj12[DV.state.series.dimension] = DV.conf.init.example.series[3]; + obj12[DV.state.category.dimension] = DV.conf.init.example.category[2]; + obj12.v = DV.conf.init.example.values[11]; + DV.value.values = [obj1, obj2, obj3, obj4, obj5, obj6, obj7, obj8, obj9, obj10, obj11, obj12]; + } + }, + ajax: { + jsonfy: function(r) { + r = Ext.JSON.decode(r.responseText); + var obj = {system: {rootNode: {id: r.rn[0], name: r.rn[1], level: 1}, periods: {}, user: {id: r.user.id, isAdmin: r.user.isAdmin}}}; + for (var relative in r.p) { + obj.system.periods[relative] = []; + for (var i = 0; i < r.p[relative].length; i++) { + obj.system.periods[relative].push({id: r.p[relative][i][0], name: r.p[relative][i][1]}); + } + } + return obj; + } + } }, finals: { ajax: { @@ -74,7 +127,8 @@ }, data: { domain: 'domain_', - targetline: 'targetline_' + targetline: 'targetline_', + trendline: 'trendline_' }, image: { png: 'png', @@ -86,14 +140,12 @@ }, chart: { style: { - inset: 30 + inset: 30, + font: 'arial,sans-serif,ubuntu,consolas' }, theme: { dv1: ['#94ae0a', '#115fa6', '#a61120', '#ff8809', '#7c7474', '#a61187', '#ffd13e', '#24ad9a', '#a66111', '#414141', '#4500c4', '#1d5700'] - }, - axis: { - range: 1.1 - } + } }, layout: { west_width: 424, @@ -129,10 +181,13 @@ url: DV.conf.finals.ajax.path_visualizer + DV.conf.finals.ajax.initialize, success: function(r) { - DV.init = DV.conf.init.jsonfy(r); - DV.init.initialize = function() { + DV.init = DV.conf.init.ajax.jsonfy(r); + + DV.init.initialize = function() { DV.util.combobox.filter.category(); - DV.chart.data = DV.conf.init.data; + + DV.conf.init.example.setState(); + DV.conf.init.example.setValues(); DV.init.cmd = DV.util.getUrlParam('uid') || DV.conf.finals.cmd.init; DV.exe.execute(true, DV.init.cmd); @@ -313,14 +368,7 @@ } } return false; - }, - getMaximum: function(store, keys) { - var maximum = 0; - for (var i = 0; i < keys.length; i++) { - maximum = store.max(keys[i]) > maximum ? store.max(keys[i]) : maximum; - } - return maximum; - } + } }, dimension: { indicator: { @@ -479,7 +527,7 @@ a.push(DV.util.string.getEncodedString(r.data.text)); }); if (exception && !a.length) { - alert( DV.i18n.no_orgunits_selected ); + alert(DV.i18n.no_orgunits_selected); } return a; }, @@ -495,7 +543,7 @@ a.push(DV.util.string.getEncodedString(r.data.id)); }); if (exception && !a.length) { - alert( DV.i18n.no_orgunits_selected ); + alert(DV.i18n.no_orgunits_selected); } return a; } @@ -511,12 +559,24 @@ } }, chart: { - default: { + default: { + getChart: function(axes, series) { + return Ext.create('Ext.chart.Chart', { + animate: true, + store: DV.store.chart, + insetPadding: DV.conf.chart.style.inset, + items: DV.state.hideSubtitle ? false : DV.util.chart.default.getTitle(), + legend: DV.state.hideLegend ? false : DV.util.chart.default.getLegend(), + axes: axes, + series: series, + theme: 'dv1' + }); + }, getLegend: function(len) { len = len ? len : DV.store.chart.range.length; return { position: len > 5 ? 'right' : 'top', - labelFont: '15px arial', + labelFont: '15px ' + DV.conf.chart.style.font, boxStroke: '#ffffff', boxStrokeWidth: 0, padding: 0 @@ -525,8 +585,8 @@ getTitle: function() { return { type: 'text', - text: DV.init.cmd === DV.conf.finals.cmd.init ? DV.i18n.example_chart : DV.state.filter.names[0], - font: 'bold 15px arial', + text: DV.state.filter.names[0], + font: 'bold 15px ' + DV.conf.chart.style.font, fill: '#222', width: 300, height: 20, @@ -537,7 +597,7 @@ label: { getCategory: function() { return { - font: '14px arial', + font: '14px ' + DV.conf.chart.style.font, rotate: { degrees: 330 } @@ -545,32 +605,37 @@ }, getNumeric: function() { return { - font: '13px arial', + font: '13px ' + DV.conf.chart.style.font, renderer: Ext.util.Format.numberRenderer(DV.util.number.getChartAxisFormatRenderer()) }; } }, axis: { - getGrid: function() { - return { - opacity: 1, - fill: '#f1f1f1', - stroke: '#aaa', - 'stroke-width': 0.2 - }; - }, - getNumeric: function() { - return { + getNumeric: function(stacked) { + var axis = { type: 'Numeric', position: 'left', title: DV.state.rangeAxisLabel || false, + labelTitle: { + font: '17px ' + DV.conf.chart.style.font + }, minimum: 0, - fields: DV.store.chart.range, + fields: stacked ? DV.state.series.names : DV.store.chart.range, label: DV.util.chart.default.label.getNumeric(), grid: { - even: DV.util.chart.default.axis.getGrid() + even: { + opacity: 1, + fill: '#f1f1f1', + stroke: '#aaa', + 'stroke-width': 0.2 + } } }; + if (DV.init.cmd === DV.conf.finals.cmd.init) { + axis.maximum = 100; + axis.majorTickSteps = 10; + } + return axis; }, getCategory: function() { return { @@ -609,6 +674,23 @@ }, title: title }; + }, + getTrendLine: function() { + return { + type: 'line', + axis: 'left', + xField: DV.conf.finals.data.domain, + yField: DV.conf.finals.data.trendline, + style: { + opacity: 1, + 'stroke-width': 2 + }, + markerConfig: { + type: 'circle', + radius: 0 + }, + title: DV.i18n.trend_line + ' (' + DV.value.trendLine[0] + ' - ' + DV.value.trendLine[DV.value.trendLine.length - 1] + ')' + }; } } }, @@ -616,7 +698,7 @@ label: { getCategory: function() { return { - font: '14px arial' + font: '14px ' + DV.conf.chart.style.font }; } }, @@ -640,6 +722,13 @@ tl.xField = DV.conf.finals.data.targetline; tl.yField = DV.conf.finals.data.domain; return tl; + }, + getTrendLine: function() { + var tl = DV.util.chart.default.series.getTrendLine(); + tl.axis = 'bottom'; + tl.xField = DV.conf.finals.data.trendline; + tl.yField = DV.conf.finals.data.domain; + return tl; } } }, @@ -647,12 +736,12 @@ series: { getArray: function() { var a = []; - for (var i = 0; i < DV.store.chart.range.length; i++) { + for (var i = 0; i < DV.state.series.names.length; i++) { a.push({ type: 'line', axis: 'left', xField: DV.conf.finals.data.domain, - yField: DV.store.chart.range[i], + yField: DV.state.series.names[i], style: { opacity: 0.8, 'stroke-width': 3 @@ -673,7 +762,7 @@ { type: 'text', text: DV.state.filter.names[0], - font: 'bold 15px arial', + font: 'bold 15px ' + DV.conf.chart.style.font, fill: '#222', width: 300, height: 20, @@ -682,8 +771,8 @@ }, { type: 'text', - text: DV.store.chart.range[0], - font: '13px arial', + text: DV.state.series.names[0], + font: '13px ' + DV.conf.chart.style.font, fill: '#444', width: 300, height: 20, @@ -699,7 +788,7 @@ height: 47, renderer: function(item) { this.setWidth((item.data[DV.conf.finals.data.domain].length * 8) + 15); - this.setTitle('' + item.data[DV.conf.finals.data.domain] + '
' + item.data[DV.store.chart.range[0]] + '
'); + this.setTitle('' + item.data[DV.conf.finals.data.domain] + '
' + item.data[DV.state.series.names[0]] + '
'); } }; } @@ -795,11 +884,15 @@ value: { jsonfy: function(r) { r = Ext.JSON.decode(r.responseText); - var values = []; + var obj = { + values: [], + trendline: [] + }; for (var i = 0; i < r.length; i++) { - values.push({v: r[i][0], d: r[i][1], p: r[i][2], o: r[i][3]}); + obj.values.push({v: r[i][0], d: r[i][1], p: r[i][2], o: r[i][3]}); } - return values; + obj.trendline = [40,45,50,55,60,65,70,75,80,85,90,95]; + return obj; } }, crud: { @@ -824,7 +917,7 @@ var url = DV.cmp.favorite.system.getValue() ? DV.conf.finals.ajax.favorite_addorupdatesystem : DV.conf.finals.ajax.favorite_addorupdate; Ext.Ajax.request({ - url: DV.conf.finals.ajax.path_visualizer + url, + url: DV.conf.finals.ajax.path_visexecualizer + url, params: params, success: function() { DV.store.favorite.load({callback: function() { @@ -951,26 +1044,6 @@ data: [] }) }, - datatable: null, - getDataTableStore: function(exe) { - this.datatable = Ext.create('Ext.data.Store', { - fields: [ - DV.conf.finals.dimension.data.value, - DV.conf.finals.dimension.period.value, - DV.conf.finals.dimension.organisationunit.value, - 'v' - ], - data: DV.value.values - }); - - if (exe) { - DV.datatable.getDataTable(true); - } - else { - return this.datatable; - } - - }, chart: null, getChartStore: function(exe) { var keys = []; @@ -984,15 +1057,10 @@ this.chart.range = keys.slice(0); for (var i = 0; i < this.chart.range.length; i++) { - if (this.chart.range[i] === DV.conf.finals.data.domain || this.chart.range[i] === DV.conf.finals.data.targetline) { + if (this.chart.range[i] === DV.conf.finals.data.domain) { this.chart.range.splice(i, 1); - i = 0; } } - - if (DV.state.targetLineValue) { - this.chart.maximum = DV.util.store.getMaximum(this.chart, this.chart.range); - } if (exe) { DV.chart.getChart(true); @@ -1001,6 +1069,26 @@ return this.chart; } }, + datatable: null, + getDataTableStore: function(exe) { + this.datatable = Ext.create('Ext.data.Store', { + fields: [ + DV.conf.finals.dimension.data.value, + DV.conf.finals.dimension.period.value, + DV.conf.finals.dimension.organisationunit.value, + 'v' + ], + data: DV.value.values + }); + + if (exe) { + DV.datatable.getDataTable(true); + } + else { + return this.datatable; + } + + }, favorite: Ext.create('Ext.data.Store', { fields: ['id', 'name', 'lastUpdated', 'userId'], proxy: { @@ -1037,15 +1125,15 @@ DV.state = { type: DV.conf.finals.chart.column, series: { - dimension: DV.conf.finals.dimension.data.value, + dimension: null, names: [] }, category: { - dimension: DV.conf.finals.dimension.period.value, + dimension: null, names: [] }, filter: { - dimension: DV.conf.finals.dimension.organisationunit.value, + dimension: null, names: [] }, indicatorIds: [], @@ -1056,8 +1144,9 @@ hideLegend: false, domainAxisLabel: null, rangeAxisLabel: null, - targetLineValue: null, + targetLineValue: 70, targetLineLabel: null, + trendLine: null, isRendered: false, getState: function(exe) { this.resetState(); @@ -1093,6 +1182,7 @@ this.hideSubtitle = DV.cmp.favorite.hidesubtitle.getValue(); this.hideLegend = DV.cmp.favorite.hidelegend.getValue(); + this.trendLine = DV.cmp.favorite.trendline.getValue(); this.domainAxisLabel = DV.cmp.favorite.domainaxislabel.getValue(); this.rangeAxisLabel = DV.cmp.favorite.rangeaxislabel.getValue(); this.targetLineValue = parseFloat(DV.cmp.favorite.targetlinevalue.getValue()); @@ -1120,10 +1210,7 @@ obj = Ext.Object.merge(obj, this.relativePeriods); return obj; }, - isBar: function() { - return this.type === DV.conf.finals.chart.bar || this.type === DV.conf.finals.chart.stackedbar; - }, - setState: function(exe, uid) { + setFavorite: function(exe, uid) { if (uid) { this.resetState(); Ext.Ajax.request({ @@ -1210,6 +1297,7 @@ this.category.names = f.names[this.category.dimension]; this.filter.names = f.names[this.filter.dimension]; + this.trendLine = f.regression; DV.cmp.favorite.trendline.setValue(f.regression); this.hideSubtitle = f.hideSubtitle; DV.cmp.favorite.hidesubtitle.setValue(f.hideSubtitle); @@ -1250,7 +1338,13 @@ this.dataelementIds = []; this.relativePeriods = {}; this.organisationunitIds = []; + this.hideSubtitle = false, this.hideLegend = false; + this.trendLine = null; + this.domainAxisLabel = null; + this.rangeAxisLabel = null; + this.targetLineValue = null; + this.targetLineLabel = null; } }; @@ -1274,7 +1368,9 @@ Ext.Ajax.request({ url: baseurl, success: function(r) { - DV.value.values = DV.util.value.jsonfy(r); + var json = DV.util.value.jsonfy(r); + DV.value.values = json.values; + DV.value.trendLine = json.trendline; if (!DV.value.values.length) { DV.mask.hide(); alert(DV.i18n.no_data); @@ -1297,7 +1393,8 @@ } } }); - } + }, + trendLine: [] }; DV.chart = { @@ -1330,8 +1427,14 @@ if (DV.state.targetLineValue) { Ext.Array.each(DV.chart.data, function(item) { - item[DV.conf.finals.data.targetline] = parseFloat(DV.state.targetLineValue); + item[DV.conf.finals.data.targetline] = DV.state.targetLineValue; }); + } + + if (DV.state.trendLine) { + for (var i = 0; i < DV.chart.data.length; i++) { + DV.chart.data[i][DV.conf.finals.data.trendline] = DV.value.trendLine[i]; + } } if (exe) { @@ -1342,7 +1445,7 @@ } }, chart: null, - getChart: function(exe) { + getChart: function(exe) { this[DV.state.type](); if (exe) { this.reload(); @@ -1357,7 +1460,7 @@ type: 'column', axis: 'left', xField: DV.conf.finals.data.domain, - yField: DV.store.chart.range, + yField: DV.state.series.names, stacked: stacked, style: { opacity: 0.8 @@ -1366,25 +1469,16 @@ if (DV.state.targetLineValue && !stacked) { series.push(DV.util.chart.default.series.getTargetLine()); } + if (DV.state.trendLine && !stacked) { + series.push(DV.util.chart.default.series.getTrendLine()); + } var axes = []; - var numeric = DV.util.chart.default.axis.getNumeric(); - if (DV.state.targetLineValue && DV.state.targetLineValue > DV.store.chart.maximum) { - numeric.maximum = Math.round(DV.state.targetLineValue * DV.conf.chart.axis.range); - } + var numeric = DV.util.chart.default.axis.getNumeric(stacked); axes.push(numeric); axes.push(DV.util.chart.default.axis.getCategory()); - this.chart = Ext.create('Ext.chart.Chart', { - animate: true, - store: DV.store.chart, - insetPadding: DV.conf.chart.style.inset, - items: DV.state.hideSubtitle ? false : DV.util.chart.default.getTitle(), - legend: DV.state.hideLegend ? false : DV.util.chart.default.getLegend(), - axes: axes, - series: series, - theme: 'dv1' - }); + this.chart = DV.util.chart.default.getChart(axes, series); }, stackedcolumn: function() { this.column(true); @@ -1395,7 +1489,7 @@ type: 'bar', axis: 'bottom', xField: DV.conf.finals.data.domain, - yField: DV.store.chart.range, + yField: DV.state.series.names, stacked: stacked, style: { opacity: 0.8 @@ -1404,25 +1498,16 @@ if (DV.state.targetLineValue && !stacked) { series.push(DV.util.chart.bar.series.getTargetLine()); } + if (DV.state.trendLine && !stacked) { + series.push(DV.util.chart.bar.series.getTrendLine()); + } var axes = []; - var numeric = DV.util.chart.bar.axis.getNumeric(); - if (DV.state.targetLineValue && DV.state.targetLineValue > DV.store.chart.maximum) { - numeric.maximum = Math.round(DV.state.targetLineValue * DV.conf.chart.axis.range); - } + var numeric = DV.util.chart.bar.axis.getNumeric(stacked); axes.push(numeric); axes.push(DV.util.chart.bar.axis.getCategory()); - this.chart = Ext.create('Ext.chart.Chart', { - animate: true, - store: DV.store.chart, - insetPadding: DV.conf.chart.style.inset, - items: DV.state.hideSubtitle ? false : DV.util.chart.default.getTitle(), - legend: DV.state.hideLegend ? false : DV.util.chart.default.getLegend(), - axes: axes, - series: series, - theme: 'dv1' - }); + this.chart = DV.util.chart.default.getChart(axes, series); }, stackedbar: function() { this.bar(true); @@ -1432,25 +1517,16 @@ if (DV.state.targetLineValue) { series.push(DV.util.chart.default.series.getTargetLine()); } + if (DV.state.trendLine) { + series.push(DV.util.chart.default.series.getTrendLine()); + } var axes = []; var numeric = DV.util.chart.default.axis.getNumeric(); - if (DV.state.targetLineValue && DV.state.targetLineValue > DV.store.chart.maximum) { - numeric.maximum = Math.round(DV.state.targetLineValue * DV.conf.chart.axis.range); - } axes.push(numeric); axes.push(DV.util.chart.default.axis.getCategory()); - this.chart = Ext.create('Ext.chart.Chart', { - animate: true, - store: DV.store.chart, - insetPadding: DV.conf.chart.style.inset, - items: DV.state.hideSubtitle ? false : DV.util.chart.default.getTitle(), - legend: DV.state.hideLegend ? false : DV.util.chart.default.getLegend(), - axes: axes, - series: series, - theme: 'dv1' - }); + this.chart = DV.util.chart.default.getChart(axes, series); }, area: function() { var series = []; @@ -1458,7 +1534,7 @@ type: 'area', axis: 'left', xField: DV.conf.finals.data.domain, - yField: DV.store.chart.range, + yField: DV.state.series.names, style: { opacity: 0.65 } @@ -1466,22 +1542,10 @@ var axes = []; var numeric = DV.util.chart.default.axis.getNumeric(); - if (DV.state.targetLineValue && DV.state.targetLineValue > DV.store.chart.maximum) { - numeric.maximum = Math.round(DV.state.targetLineValue * DV.conf.chart.axis.range); - } axes.push(numeric); axes.push(DV.util.chart.default.axis.getCategory()); - this.chart = Ext.create('Ext.chart.Chart', { - animate: true, - store: DV.store.chart, - insetPadding: DV.conf.chart.style.inset, - items: DV.state.hideSubtitle ? false : DV.util.chart.default.getTitle(), - legend: DV.state.hideLegend ? false : DV.util.chart.default.getLegend(), - axes: axes, - series: series, - theme: 'dv1' - }); + this.chart = DV.util.chart.default.getChart(axes, series); }, pie: function() { this.chart = Ext.create('Ext.chart.Chart', { @@ -1493,7 +1557,7 @@ legend: DV.state.hideLegend ? false : DV.util.chart.default.getLegend(DV.state.category.names.length), series: [{ type: 'pie', - field: DV.store.chart.range[0], + field: DV.state.series.names[0], showInLegend: true, tips: DV.util.chart.pie.series.getTips(), label: { @@ -1580,10 +1644,10 @@ execute: function(exe, cmd) { if (cmd) { if (cmd === DV.conf.finals.cmd.init) { - DV.store.getChartStore(exe); + DV.chart.getData(exe); } else { - DV.state.setState(true, cmd); + DV.state.setFavorite(true, cmd); } } else { @@ -1858,7 +1922,7 @@ tbar: [ { xtype: 'label', - text: DV.i18n.available_indicators, + text: DV.i18n.available, cls: 'dv-toolbar-multiselect-left-label' }, '->', @@ -1923,7 +1987,7 @@ '->', { xtype: 'label', - text: DV.i18n.selected_indicators, + text: DV.i18n.selected, cls: 'dv-toolbar-multiselect-right-label' } ], @@ -2019,7 +2083,7 @@ tbar: [ { xtype: 'label', - text: DV.i18n.available_data_elements, + text: DV.i18n.available, cls: 'dv-toolbar-multiselect-left-label' }, '->', @@ -2084,7 +2148,7 @@ '->', { xtype: 'label', - text: DV.i18n.selected_data_elements, + text: DV.i18n.selected, cls: 'dv-toolbar-multiselect-right-label' } ], === modified file 'dhis-2/dhis-web/dhis-web-visualizer/src/main/webapp/dhis-web-visualizer/app/css/style.css' --- dhis-2/dhis-web/dhis-web-visualizer/src/main/webapp/dhis-web-visualizer/app/css/style.css 2012-01-19 14:32:10 +0000 +++ dhis-2/dhis-web/dhis-web-visualizer/src/main/webapp/dhis-web-visualizer/app/css/style.css 2012-01-30 14:32:22 +0000 @@ -411,11 +411,11 @@ /* Multiselect docked bar font size */ .dv-toolbar-multiselect-left .dv-toolbar-multiselect-left-label { font-size: 11px; - padding-left: 5px; + padding-left: 6px; } .dv-toolbar-multiselect-right .dv-toolbar-multiselect-right-label { font-size: 11px; - padding-right: 5px; + padding-right: 7px; } /* Multiselect boundlist */ === modified file 'dhis-2/dhis-web/dhis-web-visualizer/src/main/webapp/dhis-web-visualizer/i18n.vm' --- dhis-2/dhis-web/dhis-web-visualizer/src/main/webapp/dhis-web-visualizer/i18n.vm 2012-01-25 17:26:58 +0000 +++ dhis-2/dhis-web/dhis-web-visualizer/src/main/webapp/dhis-web-visualizer/i18n.vm 2012-01-30 13:51:10 +0000 @@ -1,13 +1,13 @@ DV.i18n = { -title: '$encoder.jsEscape($i18n.getString( 'title' ) , "'")', -chart_type: '$encoder.jsEscape($i18n.getString( 'chart_type' ) , "'")', -column_chart: '$encoder.jsEscape($i18n.getString( 'column_chart' ) , "'")', +title:'$encoder.jsEscape($i18n.getString( 'title' ) , "'")', +chart_type:'$encoder.jsEscape($i18n.getString( 'chart_type' ) , "'")', +column_chart:'$encoder.jsEscape($i18n.getString( 'column_chart' ) , "'")', stacked_column_chart: '$encoder.jsEscape($i18n.getString( 'stacked_column_chart' ) , "'")', -bar_chart: '$encoder.jsEscape($i18n.getString( 'bar_chart' ) , "'")', +bar_chart:'$encoder.jsEscape($i18n.getString( 'bar_chart' ) , "'")', stacked_bar_chart: '$encoder.jsEscape($i18n.getString( 'stacked_bar_chart' ) , "'")', -line_chart: '$encoder.jsEscape($i18n.getString( 'line_chart' ) , "'")', -area_chart: '$encoder.jsEscape($i18n.getString( 'line_chart' ) , "'")', -pie_chart: '$encoder.jsEscape($i18n.getString( 'pie_chart' ) , "'")', +line_chart:'$encoder.jsEscape($i18n.getString( 'line_chart' ) , "'")', +area_chart:'$encoder.jsEscape($i18n.getString( 'line_chart' ) , "'")', +pie_chart:'$encoder.jsEscape($i18n.getString( 'pie_chart' ) , "'")', series: '$encoder.jsEscape($i18n.getString( 'series' ) , "'")' , category:'$encoder.jsEscape($i18n.getString( 'category' ) , "'")', filter:'$encoder.jsEscape($i18n.getString( 'filter' ) , "'")', @@ -22,9 +22,8 @@ select_group:'$encoder.jsEscape($i18n.getString( 'select_group' ) , "'")', data_elements:'$encoder.jsEscape($i18n.getString( 'data_elements' ) , "'")', all_indicator_groups:'$encoder.jsEscape($i18n.getString( 'all_indicator_groups' ) , "'")', -available_indicators:'$encoder.jsEscape($i18n.getString( 'available_indicators' ) , "'")', -selected_indicators:'$encoder.jsEscape($i18n.getString( 'selected_indicators' ) , "'")', -available_data_elements:'$encoder.jsEscape($i18n.getString( 'available_data_elements' ) , "'")', +available:'$encoder.jsEscape($i18n.getString( 'available' ) , "'")', +selected:'$encoder.jsEscape($i18n.getString( 'selected' ) , "'")', periods:'$encoder.jsEscape($i18n.getString( 'periods' ) , "'")', months:'$encoder.jsEscape($i18n.getString( 'months' ) , "'")', last_month:'$encoder.jsEscape($i18n.getString( 'last_month' ) , "'")',