=== modified file 'dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-mapping/scripts/app.js' --- dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-mapping/scripts/app.js 2015-03-11 11:03:46 +0000 +++ dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-mapping/scripts/app.js 2015-03-17 10:03:01 +0000 @@ -9282,7 +9282,7 @@ layout = gis.api.layout.Layout(JSON.parse(sessionStorage.getItem('dhis2'))[session]); if (layout) { - GIS.core.MapLoader(gis).load([layout]); + GIS.core.MapLoader(gis, true).load([layout]); } } === modified file 'dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-mapping/scripts/core.js' --- dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-mapping/scripts/core.js 2015-03-10 10:06:00 +0000 +++ dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-mapping/scripts/core.js 2015-03-17 10:03:01 +0000 @@ -1048,7 +1048,7 @@ return window; }; - GIS.core.MapLoader = function(gis) { + GIS.core.MapLoader = function(gis, isSession) { var getMap, setMap, afterLoad, @@ -1181,7 +1181,7 @@ lat = p.y; } - if (gis.el) { + if (gis.el || isSession) { gis.olmap.zoomToVisibleExtent(); } else { @@ -2388,7 +2388,11 @@ }; loadLegend = function(view) { - var bounds, + var bounds = [], + colors = [], + names = [], + legends = [], + addNames, fn; @@ -2429,34 +2433,29 @@ view.filters[0].items[0].name = metaData.names[peIds[peIds.length - 1]]; }; - fn = function() { - addNames(gis.response); - - // Classification options - var options = { - indicator: gis.conf.finals.widget.value, - method: view.legendSet ? mapfish.GeoStat.Distribution.CLASSIFY_WITH_BOUNDS : view.method, - numClasses: view.classes, - bounds: bounds, - colors: layer.core.getColors(view.colorLow, view.colorHigh), - minSize: view.radiusLow, - maxSize: view.radiusHigh - }; - - layer.core.view = view; - layer.core.colorInterpolation = colors; - layer.core.applyClassification(options); - - afterLoad(view); - }; - - if (view.legendSet) { - var bounds = [], - colors = [], - names = [], - legends = []; - - Ext.Ajax.request({ + fn = function() { + addNames(gis.response); + + // Classification options + var options = { + indicator: gis.conf.finals.widget.value, + method: view.legendSet ? mapfish.GeoStat.Distribution.CLASSIFY_WITH_BOUNDS : view.method, + numClasses: view.classes, + bounds: bounds, + colors: layer.core.getColors(view.colorLow, view.colorHigh), + minSize: view.radiusLow, + maxSize: view.radiusHigh + }; + + layer.core.view = view; + layer.core.colorInterpolation = colors; + layer.core.applyClassification(options); + + afterLoad(view); + }; + + loadLegendSet = function(view) { + Ext.Ajax.request({ url: gis.init.contextPath + '/api/legendSets/' + view.legendSet.id + '.json?fields=' + gis.conf.url.legendSetFields.join(','), scope: this, disableCaching: false, @@ -2484,13 +2483,42 @@ view.legendSet.names = names; view.legendSet.bounds = bounds; view.legendSet.colors = colors; - + }, + callback: function() { fn(); - } + } }); - } + }; + + if (view.legendSet) { + loadLegendSet(view); + } else { - fn(); + var elementMap = { + 'in': 'indicators', + 'de': 'dataElements', + 'ds': 'dataSets' + }, + elementUrl = elementMap[view.columns[0].dimension], + id = view.columns[0].items[0].id; + + Ext.Ajax.request({ + url: gis.init.contextPath + '/api/' + elementUrl + '.json?fields=legendSet[id,name]&paging=false&filter=id:eq:' + id, + success: function(r) { + var set = Ext.decode(r.responseText)[elementUrl][0].legendSet; + + if (set) { + view.legendSet = set; + loadLegendSet(view); + } + else { + fn(); + } + }, + failure: function() { + fn(); + } + }); } };