Index: ../src-rep/src/lib/aqua-visual-analytics/com/aquafold/bistudio/model/BIModel.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- ../src-rep/src/lib/aqua-visual-analytics/com/aquafold/bistudio/model/BIModel.java (revision 56351) +++ ../src-rep/src/lib/aqua-visual-analytics/com/aquafold/bistudio/model/BIModel.java (revision ) @@ -1473,13 +1473,14 @@ boolean hasHiddenDim = _accordionsHelper.hasHiddenDiscreteDimension(); boolean hasHiddenMeasure = _accordionsHelper.hasHiddenMeasure(); boolean isDoubleAxis = !_chartsAPI.isTableType() && _fieldsAPI.isDataInRows() && _fieldsAPI.isDataInColumns(); - boolean isDataInColumns = _fieldsAPI.getDataFieldCount()-getDiscreteMeasureFieldCount() > 0 && !_fieldsAPI.isDataInRows(); + int discreteMeasureFieldCount = getDiscreteMeasureFieldCount(); + boolean isDataInColumns = _fieldsAPI.getDataFieldCount()-discreteMeasureFieldCount > 0 && !_fieldsAPI.isDataInRows(); boolean isIndividualAxis = _chartsAPI.isIndividualAxes() || !_chartsAPI.isMergedAxisSupported(_chartsAPI.getChartType()); boolean allowSortByMeasureValues = _chartsAPI.supportsValueSorting(_chartsAPI.getChartType()); boolean allowSortByHiddenField = hasHiddenDim && allowSortByMeasureValues && !_accordionsHelper.hasDisaggregateHiddenFieldOnly(); - BIModelField firstDataField = _fieldsAPI.getDataFieldCount()-getDiscreteMeasureFieldCount() > 0 ? _fieldsAPI.getDataFields().get(0+getDiscreteMeasureFieldCount()) : _accordionsHelper.getFirstValidMeasure(); + BIModelField firstDataField = _fieldsAPI.getDataFieldCount()-discreteMeasureFieldCount > 0 ? _fieldsAPI.getDataFields().get(0+discreteMeasureFieldCount) : _accordionsHelper.getFirstValidMeasure(); boolean hasTableCalculation = firstDataField != null && firstDataField.isMeasure() && !firstDataField.isParameter() && ((BIMeasureField) firstDataField).hasTableCalculation(); - int dataFieldCount = _fieldsAPI.getDataFieldCount()-getDiscreteMeasureFieldCount() + _accordionsHelper.getAccordionMeasureModelFields().size(); + int dataFieldCount = _fieldsAPI.getDataFieldCount()-discreteMeasureFieldCount + _accordionsHelper.getAccordionMeasureModelFields().size(); List allRowColumnDimensionFields = _fieldsAPI.getRowColumnDimensionFields(); boolean isParameterField = CollectionUtils.isNotEmpty(allRowColumnDimensionFields) && allRowColumnDimensionFields.get(0).isParameter(); boolean allowSortFromRowLeafHeaderTooltip = _hasContinuousDimensionInColumn && _fieldsAPI.hasValidColumnDiscreteDimension(); @@ -1489,21 +1490,21 @@ boolean hasAllHiddenParameterFields = _accordionsHelper.hasAllHiddenParameterFields(); boolean innermostRowDimFieldAttr = hasHiddenDim && innermostRowDimField != null && innermostRowDimField.isAttribute(); boolean innermostColumnDimFieldAttr = hasHiddenDim && innermostColumnDimField != null && innermostColumnDimField.isAttribute(); - boolean allowSortBySortSupportedDataField = _fieldsAPI.getDataFieldCount()-getDiscreteMeasureFieldCount() > 0 && _fieldsAPI.getDataFields().get(0+getDiscreteMeasureFieldCount()).isSortSupportedMeasureField(); + boolean allowSortBySortSupportedDataField = _fieldsAPI.getDataFieldCount()-discreteMeasureFieldCount > 0 && _fieldsAPI.getDataFields().get(0+discreteMeasureFieldCount).isSortSupportedMeasureField(); boolean isAggregateMeasures = _chartsAPI.isAggregateMeasures() || !_chartsAPI.isAllowDisaggregateMeasures(); _allowSortByColumn = !(!isVertical && isShowTrendLine && !_chartsAPI.isTableType()) && !hasContinuousDim && !isDoubleAxis && isAggregateMeasures - && (!_fieldsAPI.isDataInRows() || _fieldsAPI.getDataFieldCount()-getDiscreteMeasureFieldCount() < 2) + && (!_fieldsAPI.isDataInRows() || _fieldsAPI.getDataFieldCount()-discreteMeasureFieldCount < 2) && (_fieldsAPI.hasValidRowDiscreteDimension() && innermostRowDimField != null && !innermostRowDimField.isParameter() && !innermostRowDimFieldAttr) && ((isIndividualAxis || _chartsAPI.isMergedSeparateAxes() || _chartsAPI.isDualAxes() && !_fieldsAPI.isDataInRows())); _allowSortByRow = !(isVertical && isShowTrendLine && !_chartsAPI.isTableType()) && !hasContinuousDim && !isDoubleAxis && isAggregateMeasures - && (_fieldsAPI.isDataInRows() || _fieldsAPI.getDataFieldCount()-getDiscreteMeasureFieldCount() < 2) + && (_fieldsAPI.isDataInRows() || _fieldsAPI.getDataFieldCount()-discreteMeasureFieldCount < 2) && (_fieldsAPI.hasValidColumnDiscreteDimension() && innermostColumnDimField != null && !innermostColumnDimField.isParameter() && !innermostColumnDimFieldAttr) && ((isIndividualAxis || _chartsAPI.isMergedSeparateAxes() || _chartsAPI.isDualAxes() && _fieldsAPI.isDataInRows())); - _allowSortByLeafColumn = _allowSortByColumn && (!_fieldsAPI.isDataInColumns() || _fieldsAPI.getDataFieldCount()-getDiscreteMeasureFieldCount() < 2); - _allowSortByLeafRow = _allowSortByRow && (!_fieldsAPI.isDataInRows() || _fieldsAPI.getDataFieldCount()-getDiscreteMeasureFieldCount() < 2); + _allowSortByLeafColumn = _allowSortByColumn && (!_fieldsAPI.isDataInColumns() || _fieldsAPI.getDataFieldCount()-discreteMeasureFieldCount < 2); + _allowSortByLeafRow = _allowSortByRow && (!_fieldsAPI.isDataInRows() || _fieldsAPI.getDataFieldCount()-discreteMeasureFieldCount < 2); boolean supportsByMeasureValuesSorting = !isDoubleAxis && _chartsAPI.isAllSupportSortByMeasureValues(); _allowSortByColumnFromTooltip = supportsByMeasureValuesSorting @@ -1525,7 +1526,7 @@ _allowSortByRowColumnInToolBar = !isShowTrendLine && !isParameterField && (!hasContinuousDim && (!_accordionsHelper.hasHiddenDimension() && allRowColumnDimensionFields.size() == 1 && dataFieldCount > 0) - || ((_chartsAPI.isTableType() && allRowColumnDimensionFields.size() == 1) && _fieldsAPI.getDataFieldCount()-getDiscreteMeasureFieldCount() == 0 && !hasHiddenMeasure)); + || ((_chartsAPI.isTableType() && allRowColumnDimensionFields.size() == 1) && _fieldsAPI.getDataFieldCount()-discreteMeasureFieldCount == 0 && !hasHiddenMeasure)); if (!_allowSortByColumn && !_allowSortByRowColumnInToolBar || _accordionsHelper.hasHiddenDimension()) { @@ -2388,8 +2389,9 @@ } else { final PivotField[] dataFields = pivotModel.getPivotTableDataFields(); - if (dataFields.length >= 1) { - dataField = dataFields[getDiscreteMeasureFieldCount()]; + int count = getDiscreteMeasureFieldCount(); + if (dataFields.length >= 1 && count < dataFields.length) { + dataField = dataFields[count]; } } } @@ -4243,7 +4245,8 @@ public boolean allowSortByValueWithTableCalc(PivotField pf, boolean row){ boolean hasTableCalculation = TableCalcUtils.hasTableCalculation(pf); - if (_fieldsAPI.getDataFieldCount()-getDiscreteMeasureFieldCount() == 1) { + int discreteMeasureFieldCount = getDiscreteMeasureFieldCount(); + if (_fieldsAPI.getDataFieldCount()-discreteMeasureFieldCount == 1) { hasTableCalculation = TableCalcUtils.hasTableCalculation(getPivotModel().getPivotTableDataFields()[0]); pf = getPivotModel().getPivotTableDataFields()[0]; } @@ -4263,9 +4266,9 @@ boolean isColumn = this.getFieldsAPI().isColumnField(getModelField(pf)); PivotField baseOnField = summary.get(0).getBaseOnField(); - BIModelField lastValidDimRowField =getDiscreteMeasureFieldCount()>0?this.getFieldsAPI().getLastValidDiscreteMeasureRowField(): this.getFieldsAPI().getLastValidDimRowField(); - BIModelField lastValidDimColumnField = getDiscreteMeasureFieldCount()>0?this.getFieldsAPI().getLastValidDiscreteMeasureColumnField():this.getFieldsAPI().getLastValidDimColumnField(); - if (_fieldsAPI.getDataFieldCount()-getDiscreteMeasureFieldCount() == 1) { + BIModelField lastValidDimRowField =discreteMeasureFieldCount>0?this.getFieldsAPI().getLastValidDiscreteMeasureRowField(): this.getFieldsAPI().getLastValidDimRowField(); + BIModelField lastValidDimColumnField = discreteMeasureFieldCount>0?this.getFieldsAPI().getLastValidDiscreteMeasureColumnField():this.getFieldsAPI().getLastValidDimColumnField(); + if (_fieldsAPI.getDataFieldCount()-discreteMeasureFieldCount == 1) { if(row){ if ((lastValidDimRowField.isMeasure() && lastValidDimRowField.isDiscrete())||(lastValidDimColumnField != null && !lastValidDimColumnField.isSameAs(getModelField(baseOnField)))) { return true;