dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #29813
[Branch ~dhis2-devs-core/dhis2/trunk] Rev 15128: New general setting: analytics max limit + PT, wip on orgunit hierarchy dimensions.
Merge authors:
Jan Henrik Øverland (janhenrik-overland)
------------------------------------------------------------
revno: 15128 [merge]
committer: Jan Henrik Overland <janhenrik.overland@xxxxxxxxx>
branch nick: dhis2
timestamp: Wed 2014-04-30 17:52:12 +0200
message:
New general setting: analytics max limit + PT, wip on orgunit hierarchy dimensions.
modified:
dhis-2/dhis-api/src/main/java/org/hisp/dhis/setting/SystemSettingManager.java
dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/setting/DefaultSystemSettingManager.java
dhis-2/dhis-web/dhis-web-commons/src/main/java/org/hisp/dhis/interceptor/SystemSettingInterceptor.java
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-settings/src/main/java/org/hisp/dhis/settings/action/system/SetGeneralSettingsAction.java
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-settings/src/main/resources/org/hisp/dhis/settings/i18n_module.properties
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-settings/src/main/webapp/dhis-web-maintenance-settings/systemGeneralSettings.vm
dhis-2/dhis-web/dhis-web-pivot/src/main/webapp/dhis-web-pivot/app/scripts/core.js
--
lp:dhis2
https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk
Your team DHIS 2 developers is subscribed to branch lp:dhis2.
To unsubscribe from this branch go to https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription
=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/setting/SystemSettingManager.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/setting/SystemSettingManager.java 2014-04-29 07:28:26 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/setting/SystemSettingManager.java 2014-04-30 15:46:01 +0000
@@ -90,6 +90,7 @@
final String KEY_OPENID_PROVIDER_LABEL = "keyOpenIdProviderLabel";
final String KEY_CAN_GRANT_OWN_USER_AUTHORITY_GROUPS = "keyCanGrantOwnUserAuthorityGroups";
final String KEY_HIDE_UNAPPROVED_DATA_IN_ANALYTICS = "keyHideUnapprovedDataInAnalytics";
+ final String KEY_ANALYTICS_MAX_LIMIT = "keyAnalyticsMaxLimit";
final String DEFAULT_SCHEDULE_AGGREGATE_QUERY_BUILDER_TASK_STRATEGY = "lastMonth";
final String DEFAULT_FLAG = "dhis2";
@@ -106,6 +107,7 @@
final int DEFAULT_COMPLETENESS_OFFSET = 15;
final String DEFAULT_TIME_FOR_SENDING_MESSAGE = "08:00";
final String DEFAULT_CACHE_STRATEGY = "CACHE_6AM_TOMORROW";
+ final int DEFAULT_ANALYTICS_MAX_LIMIT = 50000;
final String SYSPROP_PORTAL = "runningAsPortal";
=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/setting/DefaultSystemSettingManager.java'
--- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/setting/DefaultSystemSettingManager.java 2014-03-18 08:10:10 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/setting/DefaultSystemSettingManager.java 2014-04-30 15:46:01 +0000
@@ -67,7 +67,7 @@
// -------------------------------------------------------------------------
public void saveSystemSetting( String name, Serializable value )
- {
+ {
SystemSetting setting = systemSettingStore.getByName( name );
if ( setting == null )
=== modified file 'dhis-2/dhis-web/dhis-web-commons/src/main/java/org/hisp/dhis/interceptor/SystemSettingInterceptor.java'
--- dhis-2/dhis-web/dhis-web-commons/src/main/java/org/hisp/dhis/interceptor/SystemSettingInterceptor.java 2014-04-29 10:27:58 +0000
+++ dhis-2/dhis-web/dhis-web-commons/src/main/java/org/hisp/dhis/interceptor/SystemSettingInterceptor.java 2014-04-30 15:46:01 +0000
@@ -90,6 +90,7 @@
map.put( KEY_DATE_FORMAT, systemSettingManager.getSystemSetting( KEY_DATE_FORMAT, DEFAULT_DATE_FORMAT ) );
map.put( "dateFormat", calendarService.getSystemDateFormat() );
map.put( KEY_CACHE_STRATEGY, systemSettingManager.getSystemSetting( KEY_CACHE_STRATEGY, DEFAULT_CACHE_STRATEGY ) );
+ map.put( KEY_ANALYTICS_MAX_LIMIT, systemSettingManager.getSystemSetting( KEY_ANALYTICS_MAX_LIMIT, DEFAULT_ANALYTICS_MAX_LIMIT ) );
map.put( KEY_APPLICATION_TITLE, systemSettingManager.getSystemSetting( KEY_APPLICATION_TITLE, DEFAULT_APPLICATION_TITLE ) );
map.put( KEY_APPLICATION_INTRO, systemSettingManager.getSystemSetting( KEY_APPLICATION_INTRO ) );
map.put( KEY_APPLICATION_NOTIFICATION, systemSettingManager.getSystemSetting( KEY_APPLICATION_NOTIFICATION ) );
=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-settings/src/main/java/org/hisp/dhis/settings/action/system/SetGeneralSettingsAction.java'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-settings/src/main/java/org/hisp/dhis/settings/action/system/SetGeneralSettingsAction.java 2014-04-29 10:10:17 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-settings/src/main/java/org/hisp/dhis/settings/action/system/SetGeneralSettingsAction.java 2014-04-30 15:47:23 +0000
@@ -104,6 +104,13 @@
{
this.cacheStrategy = cacheStrategy;
}
+
+ private Integer analyticsMaxLimit;
+
+ public void setAnalyticsMaxLimit( Integer analyticsMaxLimit )
+ {
+ this.analyticsMaxLimit = analyticsMaxLimit;
+ }
private Integer infrastructuralDataElements;
@@ -205,6 +212,7 @@
systemSettingManager.saveSystemSetting( KEY_CALENDAR, calendar );
systemSettingManager.saveSystemSetting( KEY_DATE_FORMAT, dateFormat );
systemSettingManager.saveSystemSetting( KEY_CACHE_STRATEGY, cacheStrategy );
+ systemSettingManager.saveSystemSetting( KEY_ANALYTICS_MAX_LIMIT, analyticsMaxLimit );
systemSettingManager.saveSystemSetting( KEY_OMIT_INDICATORS_ZERO_NUMERATOR_DATAMART, omitIndicatorsZeroNumeratorDataMart );
systemSettingManager.saveSystemSetting( KEY_FACTOR_OF_DEVIATION, factorDeviation );
systemSettingManager.saveSystemSetting( KEY_PHONE_NUMBER_AREA_CODE, phoneNumberAreaCode );
=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-settings/src/main/resources/org/hisp/dhis/settings/i18n_module.properties'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-settings/src/main/resources/org/hisp/dhis/settings/i18n_module.properties 2014-04-29 10:10:17 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-settings/src/main/resources/org/hisp/dhis/settings/i18n_module.properties 2014-04-30 15:46:01 +0000
@@ -93,4 +93,6 @@
openid_provider_label=OpenID Provider Label
openid_provider=OpenID Provider
allow_users_to_grant_own_user_roles=Allow users to grant own user roles
-object_not_deleted_associated_by_objects=Object not deleted because it is associated by objects of type
\ No newline at end of file
+object_not_deleted_associated_by_objects=Object not deleted because it is associated by objects of type
+analytics_max_limit=Maximum number of analytics records
+unlimited=Unlimited
\ No newline at end of file
=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-settings/src/main/webapp/dhis-web-maintenance-settings/systemGeneralSettings.vm'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-settings/src/main/webapp/dhis-web-maintenance-settings/systemGeneralSettings.vm 2014-04-29 10:10:17 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-settings/src/main/webapp/dhis-web-maintenance-settings/systemGeneralSettings.vm 2014-04-30 15:46:01 +0000
@@ -3,6 +3,7 @@
jQuery("input[type=button]").click(function() {
jQuery.postUTF8('setSystemGeneralSettings.action', {
cacheStrategy: getFieldValue('cacheStrategy'),
+ analyticsMaxLimit: getFieldValue('analyticsMaxLimit'),
calendar: getFieldValue('calendar'),
dateFormat: getFieldValue('dateFormat'),
infrastructuralDataElements: getFieldValue('infrastructuralDataElements'),
@@ -35,6 +36,17 @@
</select>
</div>
+<div class="settingLabel">$i18n.getString( "analytics_max_limit" )</div>
+
+<div class="setting">
+<select id="analyticsMaxLimit" name="analyticsMaxLimit">
+ <option value="50000" #if( $keyAnalyticsMaxLimit == "50000" )selected="selected"#end>50 000</option>
+ <option value="100000" #if( $keyAnalyticsMaxLimit == "100000" )selected="selected"#end>100 000</option>
+ <option value="200000" #if( $keyAnalyticsMaxLimit == "200000" )selected="selected"#end>200 000</option>
+ <option value="0" #if( $keyAnalyticsMaxLimit == "0" )selected="selected"#end>$i18n.getString( "unlimited" )</option>
+</select>
+</div>
+
<div class="settingLabel">$i18n.getString( "calendar" )</div>
<div class="setting">
=== modified file 'dhis-2/dhis-web/dhis-web-pivot/src/main/webapp/dhis-web-pivot/app/scripts/core.js'
--- dhis-2/dhis-web/dhis-web-pivot/src/main/webapp/dhis-web-pivot/app/scripts/core.js 2014-04-29 14:44:05 +0000
+++ dhis-2/dhis-web/dhis-web-pivot/src/main/webapp/dhis-web-pivot/app/scripts/core.js 2014-04-30 15:46:01 +0000
@@ -860,10 +860,12 @@
dimensionNameIdsMap: {},
// for param string
- dimensionNameSortedIdsMap: {}
+ dimensionNameSortedIdsMap: {},
// sort table by column
//sortableIdObjects: []
+
+ dimensionNameAxisMap: {}
};
Ext.applyIf(xLayout, layout);
@@ -900,6 +902,8 @@
xLayout.objectNameDimensionsMap[xDim.objectName] = xDim;
xLayout.objectNameItemsMap[xDim.objectName] = xDim.items;
xLayout.objectNameIdsMap[xDim.objectName] = xDim.ids;
+
+ xLayout.dimensionNameAxisMap[xDim.dimensionName] = xLayout.columns;
}
}
@@ -934,6 +938,8 @@
xLayout.objectNameDimensionsMap[xDim.objectName] = xDim;
xLayout.objectNameItemsMap[xDim.objectName] = xDim.items;
xLayout.objectNameIdsMap[xDim.objectName] = xDim.ids;
+
+ xLayout.dimensionNameAxisMap[xDim.dimensionName] = xLayout.rows;
}
}
@@ -965,6 +971,8 @@
xLayout.objectNameDimensionsMap[xDim.objectName] = xDim;
xLayout.objectNameItemsMap[xDim.objectName] = xDim.items;
xLayout.objectNameIdsMap[xDim.objectName] = xDim.ids;
+
+ xLayout.dimensionNameAxisMap[xDim.dimensionName] = xLayout.filters;
}
}
@@ -1025,8 +1033,46 @@
service.layout.getSyncronizedXLayout = function(xLayout, response) {
var removeDimensionFromXLayout,
- getHeaderNames,
- dimensions = Ext.Array.clean([].concat(xLayout.columns || [], xLayout.rows || [], xLayout.filters || []));
+ addOuHierarchyDimensions,
+ dimensions = Ext.Array.clean([].concat(xLayout.columns || [], xLayout.rows || [], xLayout.filters || [])),
+ xOuDimension = xLayout.objectNameDimensionsMap[dimConf.organisationUnit.objectName],
+ isUserOrgunit = xOuDimension && Ext.Array.contains(xOuDimension.ids, 'USER_ORGUNIT'),
+ isUserOrgunitChildren = xOuDimension && Ext.Array.contains(xOuDimension.ids, 'USER_ORGUNIT_CHILDREN'),
+ isUserOrgunitGrandChildren = xOuDimension && Ext.Array.contains(xOuDimension.ids, 'USER_ORGUNIT_GRANDCHILDREN'),
+ isLevel = function() {
+ if (xOuDimension && Ext.isArray(xOuDimension.ids)) {
+ for (var i = 0; i < xOuDimension.ids.length; i++) {
+ if (xOuDimension.ids[i].substr(0,5) === 'LEVEL') {
+ return true;
+ }
+ }
+ }
+
+ return false;
+ }(),
+ isGroup = function() {
+ if (xOuDimension && Ext.isArray(xOuDimension.ids)) {
+ for (var i = 0; i < xOuDimension.ids.length; i++) {
+ if (xOuDimension.ids[i].substr(0,8) === 'OU_GROUP') {
+ return true;
+ }
+ }
+ }
+
+ return false;
+ }(),
+ co = dimConf.category.objectName,
+ ou = dimConf.organisationUnit.objectName,
+ headerNames = function() {
+ var headerNames = [];
+
+ for (var i = 0; i < response.headers.length; i++) {
+ headerNames.push(response.headers[i].name);
+ }
+
+ return headerNames;
+ }(),
+ layout;
removeDimensionFromXLayout = function(objectName) {
var getUpdatedAxis;
@@ -1059,173 +1105,171 @@
}
};
- getHeaderNames = function() {
- var headerNames = [];
-
- for (var i = 0; i < response.headers.length; i++) {
- headerNames.push(response.headers[i].name);
- }
-
- return headerNames;
- };
-
- return function() {
- var headerNames = getHeaderNames(),
- xOuDimension = xLayout.objectNameDimensionsMap[dimConf.organisationUnit.objectName],
- isUserOrgunit = xOuDimension && Ext.Array.contains(xOuDimension.ids, 'USER_ORGUNIT'),
- isUserOrgunitChildren = xOuDimension && Ext.Array.contains(xOuDimension.ids, 'USER_ORGUNIT_CHILDREN'),
- isUserOrgunitGrandChildren = xOuDimension && Ext.Array.contains(xOuDimension.ids, 'USER_ORGUNIT_GRANDCHILDREN'),
- isLevel = function() {
- if (xOuDimension && Ext.isArray(xOuDimension.ids)) {
- for (var i = 0; i < xOuDimension.ids.length; i++) {
- if (xOuDimension.ids[i].substr(0,5) === 'LEVEL') {
- return true;
- }
- }
- }
-
- return false;
- }(),
- isGroup = function() {
- if (xOuDimension && Ext.isArray(xOuDimension.ids)) {
- for (var i = 0; i < xOuDimension.ids.length; i++) {
- if (xOuDimension.ids[i].substr(0,8) === 'OU_GROUP') {
- return true;
- }
- }
- }
-
- return false;
- }(),
- co = dimConf.category.objectName,
- ou = dimConf.organisationUnit.objectName,
- layout;
-
- // Set items from init/metaData/xLayout
- for (var i = 0, dim, metaDataDim, items; i < dimensions.length; i++) {
- dim = dimensions[i];
- dim.items = [];
- metaDataDim = response.metaData[dim.objectName];
-
- // If ou and children
- if (dim.dimensionName === ou) {
- if (isUserOrgunit || isUserOrgunitChildren || isUserOrgunitGrandChildren) {
- var userOu,
- userOuc,
- userOugc;
-
- if (init.user && isUserOrgunit) {
- userOu = [];
-
- for (var j = 0; j < init.user.ou.length; j++) {
- userOu.push({
- id: init.user.ou[j],
- name: service.layout.getItemName(xLayout, response, init.user.ou[j], false)
- });
- }
- }
- if (init.user && init.user.ouc && isUserOrgunitChildren) {
- userOuc = [];
-
- for (var j = 0; j < init.user.ouc.length; j++) {
- userOuc.push({
- id: init.user.ouc[j],
- name: service.layout.getItemName(xLayout, response, init.user.ouc[j], false)
- });
- }
-
- support.prototype.array.sort(userOuc);
- }
- if (init.user && init.user.ouc && isUserOrgunitGrandChildren) {
- var userOuOuc = [].concat(init.user.ou, init.user.ouc),
- responseOu = response.metaData[ou];
-
- userOugc = [];
-
- for (var j = 0, id; j < responseOu.length; j++) {
- id = responseOu[j];
-
- if (!Ext.Array.contains(userOuOuc, id)) {
- userOugc.push({
- id: id,
- name: service.layout.getItemName(xLayout, response, id, false)
- });
- }
- }
-
- support.prototype.array.sort(userOugc);
- }
-
- dim.items = [].concat(userOu || [], userOuc || [], userOugc || []);
- }
- else if (isLevel || isGroup) {
- for (var j = 0, responseOu = response.metaData[ou], id; j < responseOu.length; j++) {
- id = responseOu[j];
-
- dim.items.push({
- id: id,
- name: service.layout.getItemName(xLayout, response, id, false)
- });
- }
-
- support.prototype.array.sort(dim.items);
- }
- else {
- dim.items = Ext.clone(xLayout.dimensionNameItemsMap[dim.dimensionName]);
- }
- }
- else {
- // Items: get ids from metadata -> items
- if (Ext.isArray(metaDataDim) && metaDataDim.length) {
- var ids = Ext.clone(response.metaData[dim.dimensionName]);
- for (var j = 0; j < ids.length; j++) {
- dim.items.push({
- id: ids[j],
- name: response.metaData.names[ids[j]]
- });
- }
- }
- // Items: get items from xLayout
- else {
- dim.items = Ext.clone(xLayout.objectNameItemsMap[dim.objectName]);
- }
- }
- }
-
- // Add missing names
- dimensions = Ext.Array.clean([].concat(xLayout.columns || [], xLayout.rows || [], xLayout.filters || []));
-
- for (var i = 0, idNameMap = response.metaData.names, dimItems; i < dimensions.length; i++) {
- dimItems = dimensions[i].items;
-
- if (Ext.isArray(dimItems) && dimItems.length) {
- for (var j = 0, item; j < dimItems.length; j++) {
- item = dimItems[j];
-
- if (Ext.isObject(item) && Ext.isString(idNameMap[item.id]) && !Ext.isString(item.name)) {
- item.name = idNameMap[item.id] || '';
- }
- }
- }
- }
-
- // Remove dimensions from layout that do not exist in response
- for (var i = 0, dimensionName; i < xLayout.axisDimensionNames.length; i++) {
- dimensionName = xLayout.axisDimensionNames[i];
- if (!Ext.Array.contains(headerNames, dimensionName)) {
- removeDimensionFromXLayout(dimensionName);
- }
- }
-
- // Re-layout
- layout = api.layout.Layout(xLayout);
-
- if (layout) {
- return service.layout.getExtendedLayout(layout);
- }
-
- return null;
- }();
+ addOuHierarchyDimensions = function() {
+ var axis = xLayout.dimensionNameAxisMap[ou],
+ ouHierarchy = response.metaData.ouHierarchy,
+ levels = [],
+ ouIndex,
+ a;
+
+ // get ou index
+ for (var i = 0; i < axis.length; i++) {
+ if (axis[i].dimensionName === ou) {
+ ouIndex = i;
+ break;
+ }
+ }
+
+ // get levels
+ for (var key in ouHierarchy) {
+ if (ouHierarchy.hasOwnProperty(key)) {
+ a = Ext.Array.clean(ouHierarchy[key].split('/'));
+
+ if (!levels[a.length]) {
+ levels[a.length] = [];
+ }
+
+ levels[a.length].push({
+ id: key,
+ name: response.metaData.names[key]
+ });
+ }
+ }
+
+ levels = Ext.Array.clean(levels);
+
+ console.log("levels", levels);
+ };
+
+ // Set items from init/metaData/xLayout
+ for (var i = 0, dim, metaDataDim, items; i < dimensions.length; i++) {
+ dim = dimensions[i];
+ dim.items = [];
+ metaDataDim = response.metaData[dim.objectName];
+
+ // If ou and children
+ if (dim.dimensionName === ou) {
+ if (isUserOrgunit || isUserOrgunitChildren || isUserOrgunitGrandChildren) {
+ var userOu,
+ userOuc,
+ userOugc;
+
+ if (init.user && isUserOrgunit) {
+ userOu = [];
+
+ for (var j = 0; j < init.user.ou.length; j++) {
+ userOu.push({
+ id: init.user.ou[j],
+ name: service.layout.getItemName(xLayout, response, init.user.ou[j], false)
+ });
+ }
+ }
+ if (init.user && init.user.ouc && isUserOrgunitChildren) {
+ userOuc = [];
+
+ for (var j = 0; j < init.user.ouc.length; j++) {
+ userOuc.push({
+ id: init.user.ouc[j],
+ name: service.layout.getItemName(xLayout, response, init.user.ouc[j], false)
+ });
+ }
+
+ support.prototype.array.sort(userOuc);
+ }
+ if (init.user && init.user.ouc && isUserOrgunitGrandChildren) {
+ var userOuOuc = [].concat(init.user.ou, init.user.ouc),
+ responseOu = response.metaData[ou];
+
+ userOugc = [];
+
+ for (var j = 0, id; j < responseOu.length; j++) {
+ id = responseOu[j];
+
+ if (!Ext.Array.contains(userOuOuc, id)) {
+ userOugc.push({
+ id: id,
+ name: service.layout.getItemName(xLayout, response, id, false)
+ });
+ }
+ }
+
+ support.prototype.array.sort(userOugc);
+ }
+
+ dim.items = [].concat(userOu || [], userOuc || [], userOugc || []);
+ }
+ else if (isLevel || isGroup) {
+ for (var j = 0, responseOu = response.metaData[ou], id; j < responseOu.length; j++) {
+ id = responseOu[j];
+
+ dim.items.push({
+ id: id,
+ name: service.layout.getItemName(xLayout, response, id, false)
+ });
+ }
+
+ support.prototype.array.sort(dim.items);
+ }
+ else {
+ dim.items = Ext.clone(xLayout.dimensionNameItemsMap[dim.dimensionName]);
+ }
+ }
+ else {
+ // Items: get ids from metadata -> items
+ if (Ext.isArray(metaDataDim) && metaDataDim.length) {
+ var ids = Ext.clone(response.metaData[dim.dimensionName]);
+ for (var j = 0; j < ids.length; j++) {
+ dim.items.push({
+ id: ids[j],
+ name: response.metaData.names[ids[j]]
+ });
+ }
+ }
+ // Items: get items from xLayout
+ else {
+ dim.items = Ext.clone(xLayout.objectNameItemsMap[dim.objectName]);
+ }
+ }
+ }
+
+ // Add missing names
+ dimensions = Ext.Array.clean([].concat(xLayout.columns || [], xLayout.rows || [], xLayout.filters || []));
+
+ for (var i = 0, idNameMap = response.metaData.names, dimItems; i < dimensions.length; i++) {
+ dimItems = dimensions[i].items;
+
+ if (Ext.isArray(dimItems) && dimItems.length) {
+ for (var j = 0, item; j < dimItems.length; j++) {
+ item = dimItems[j];
+
+ if (Ext.isObject(item) && Ext.isString(idNameMap[item.id]) && !Ext.isString(item.name)) {
+ item.name = idNameMap[item.id] || '';
+ }
+ }
+ }
+ }
+
+ // Remove dimensions from layout that do not exist in response
+ for (var i = 0, dimensionName; i < xLayout.axisDimensionNames.length; i++) {
+ dimensionName = xLayout.axisDimensionNames[i];
+ if (!Ext.Array.contains(headerNames, dimensionName)) {
+ removeDimensionFromXLayout(dimensionName);
+ }
+ }
+
+ // Add ou hierarchy dimensions
+ if (xOuDimension && xLayout.showHierarchy) {
+ addOuHierarchyDimensions();
+ }
+
+ // Re-layout
+ layout = api.layout.Layout(xLayout);
+
+ if (layout) {
+ return service.layout.getExtendedLayout(layout);
+ }
+
+ return null;
};
service.layout.getExtendedAxis = function(xLayout, type) {
@@ -1922,7 +1966,8 @@
totalColObjects = [],
uuidDimUuidsMap = {},
isLegendSet = Ext.isObject(xLayout.legendSet) && Ext.isArray(xLayout.legendSet.mapLegends) && xLayout.legendSet.mapLegends.length,
- htmlArray;
+ tdCount = 0,
+ htmlArray;
xResponse.sortableIdObjects = [];
@@ -1952,6 +1997,9 @@
return '';
}
+ // number of cells
+ tdCount = tdCount + 1;
+
// Background color from legend set
if (isNumeric && xLayout.legendSet) {
var value = parseFloat(config.value);
@@ -2604,7 +2652,10 @@
return {
html: getHtml(htmlArray),
- uuidDimUuidsMap: uuidDimUuidsMap
+ uuidDimUuidsMap: uuidDimUuidsMap,
+ xColAxis: xColAxis,
+ xRowAxis: xRowAxis,
+ tdCount: tdCount
};
}();
};