123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626 |
- /****************************************************************
- ** Licensed Materials - Property of IBM
- **
- ** BI and PM: qs
- **
- ** (C) Copyright IBM Corp. 2001, 2015
- **
- ** US Government Users Restricted Rights - Use, duplication or
- ** disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
- *****************************************************************/
- // Copyright (C) 2008 Cognos ULC, an IBM Company. All Rights Reserved.
- // Cognos and the Cognos logo are trademarks of Cognos ULC (formerly Cognos Incorporated) in the United States and/or other countries. IBM and the IBM logo are trademarks of International Business Machines Corporation in the United States, or other countries, or both. Other company, product, or service names may be trademarks or service marks of others.
- function CCustomGroups()
- {
- this.m_bFeatureRequiresQualityOfService = true;
- };
- CCustomGroups.prototype = new AFeatureObject();
- CCustomGroups.prototype.setup = function (aFeatureParams)
- {
- newCustomValue();
- };
- function newCustomValue(newGroupOrRange)
- {
- cfgSet("LAST_DIALOG", "customizeValues");
- dlgReset();
- dlgGlobalReset();
- var oMQMgr = goApplicationManager.getMiniQueryManager();
- var sel = cfgGetAt("SelColumns", 0);
- if (cfgSize("SelColumns") <= 0)
- {
- dlgShowMessage("CUSTOMIZE_VALUES_CREATE_BASIC_TITLE", "", "CUSTOMIZE_VALUES_CREATE_NO_SELECTION");
- return;
- }
- if (cfgSize("SelColumns") > 1)
- {
- dlgShowMessage("CUSTOMIZE_VALUES_CREATE_BASIC_TITLE", "", "CUSTOMIZE_VALUES_CREATE_TOO_MANY_SELECTIONS");
- return;
- }
-
- var colDataType = getDataType(sel);
- if ((oMQMgr.isReportExpression(sel)) || (oMQMgr.getDisplayType(sel) === 1) || (colDataType == 6) || (colDataType == -1))
- {
- dlgShowMessage("CUSTOMIZE_VALUES_CREATE_BASIC_TITLE", "", "CUSTOMIZE_VALUES_CREATE_BAD_SELECTION");
- return;
- }
- if (!checkForValidSelection(false))
- return;
- setupCustomValue(newGroupOrRange);
- };
- function setupCustomValue(newGroupOrRange)
- {
- if (!checkCalcFunctionAgainstDB("ces_if") || !checkCalcFunctionAgainstDB("CUSTOM_GROUPS"))
- {
- dlgShowMessage("CALCULATE_CREATE_BASIC_TITLE", "", "CUSTOMIZE_VALUES_HAS_NO_VALID_OPERATIONS");
- return;
- }
- var groupOrRange = -1;
- if (typeof newGroupOrRange != "undefined")
- groupOrRange = newGroupOrRange;
- var oMQMgr = goApplicationManager.getMiniQueryManager();
- var sel = cfgGetAt("SelColumns", 0);
- retrieveCreds();
- var bIsNumeric = isNumeric(sel);
- var bIsString = isString(sel);
-
-
- if (bIsString && oMQMgr.hasNumericDetailAggregate(sel))
- {
- bIsString = false;
- bIsNumeric = true;
- }
-
- if (bIsString)
- {
- dlgSetParm("xxCustomType", "0");
- dlgGlobalSetParm("xxCustomType", "0");
- if (oMQMgr.getPromptType(sel) == 0 || oMQMgr.getPromptType(sel) == 6)
- {
- dlgSetParm("xxAdvanced", "0");
- dlgGlobalSetParm("xxAdvanced", "0");
- }
- else
- {
- dlgSetParm("xxAdvanced", "1");
- dlgGlobalSetParm("xxAdvanced", "1");
- }
- if (groupOrRange == -1)
- {
- groupOrRange = "group";
- }
- else if (groupOrRange == "range")
- {
- dlgRemoveParm("xxAdvanced");
- dlgGlobalRemoveParm("xxAdvanced");
- }
- }
- else if (bIsNumeric)
- {
- dlgSetParm("xxCustomType", "1");
- dlgGlobalSetParm("xxCustomType", "1");
- if (oMQMgr.isMeasure(sel))
- {
- dlgGlobalSetParm("xxIsMeasure", "1");
- }
- if (oMQMgr.getPromptType(sel) == 0 || oMQMgr.getPromptType(sel) == 6)
- {
- dlgSetParm("xxAdvanced", "0");
- dlgGlobalSetParm("xxAdvanced", "0");
- }
- else
- {
- dlgSetParm("xxAdvanced", "1");
- dlgGlobalSetParm("xxAdvanced", "1");
- }
- if (groupOrRange == -1)
- {
- groupOrRange = "range";
- dlgRemoveParm("xxAdvanced");
- dlgGlobalRemoveParm("xxAdvanced");
- }
- if (groupOrRange == "group")
- addAggsAndOtherCols(sel);
- else
- addAggsAndOtherCols(sel, false);
- }
- else if (isDate(sel))
- {
- dlgSetParm("xxCustomType", "2");
- dlgGlobalSetParm("xxCustomType", "2");
- if (oMQMgr.getPromptType(sel) == 0 || oMQMgr.getPromptType(sel) == 6)
- dlgGlobalSetParm("xxAdvanced", "0");
- else
- dlgGlobalSetParm("xxAdvanced", "1");
- groupOrRange = "range";
- }
- else if (isTime(sel))
- {
- dlgSetParm("xxCustomType", "3");
- dlgGlobalSetParm("xxCustomType", "3");
- if (oMQMgr.getPromptType(sel) == 0 || oMQMgr.getPromptType(sel) == 6)
- dlgGlobalSetParm("xxAdvanced", "0");
- else
- dlgGlobalSetParm("xxAdvanced", "1");
- groupOrRange = "range";
- }
- else if (isInterval(sel))
- {
- dlgSetParm("xxCustomType", "4");
- dlgGlobalSetParm("xxCustomType", "4");
- if (oMQMgr.getPromptType(sel) == 0 || oMQMgr.getPromptType(sel) == 6)
- dlgGlobalSetParm("xxAdvanced", "0");
- else
- dlgGlobalSetParm("xxAdvanced", "1");
- groupOrRange = "range";
- }
- else if (isDateTime(sel))
- {
- dlgSetParm("xxCustomType", "5");
- dlgGlobalSetParm("xxCustomType", "5");
- if (oMQMgr.getPromptType(sel) == 0 || oMQMgr.getPromptType(sel) == 6)
- dlgGlobalSetParm("xxAdvanced", "0");
- else
- dlgGlobalSetParm("xxAdvanced", "1");
- groupOrRange = "range";
- }
- else
- {
- dlgShowMessage("CUSTOMIZE_VALUES_CREATE_BASIC_TITLE", "", "MOVE_GROUP_INVALID_SELECTION");
- return;
- }
- dlgGlobalSetParm("xxExprLocale", oMQMgr.getExpressionLocale());
-
- var mqObject = cfgGet("MiniQueryObj");
- var c = (mqObject != null ? mqObject.findChildWithAttribute('id', oMQMgr.getColumnId(sel)) : null);
- var bUseMUN = isMUN(c);
- if (bUseMUN) {
- dlgGlobalSetParm("xxUseMUN", true);
- }
-
- if (getCalcType(sel) == "group")
- {
- dlgGlobalSetParm("xxExistingCol", "group");
- if (typeof newGroupOrRange == "undefined")
- {
- groupOrRange = "group";
- parseGroup(true, sel);
- }
- else
- {
- groupOrRange = newGroupOrRange;
- parseGroup(false, sel);
- }
- dlgGlobalSetParm("xxCVColumnName", oMQMgr.getColumnLabel(sel));
- }
- else if (getCalcType(sel) == "range")
- {
- dlgGlobalSetParm("xxExistingCol", "range");
- if (typeof newGroupOrRange == "undefined")
- {
- groupOrRange = "range";
- var colExp = parseRange(true, sel);
- if (colExp.charAt(0) != "[")
- colExp = colExp.substring(colExp.indexOf("["), (colExp.lastIndexOf("]") + 1));
- for (var i = 0; i < oMQMgr.getAllColumns().length; i++)
- {
- if (oMQMgr.getExpression(i) == colExp)
- {
- if (oMQMgr.isMeasure(i))
- dlgGlobalSetParm("xxIsMeasure", "1");
- break;
- }
- }
- }
- else
- {
- groupOrRange = newGroupOrRange;
- var colExp = parseRange(false, sel);
- if (colExp.charAt(0) != "[")
- colExp = colExp.substring(colExp.indexOf("["), (colExp.lastIndexOf("]") + 1));
- for (var i = 0; i < oMQMgr.getAllColumns().length; i++)
- {
- if (oMQMgr.getExpression(i) == colExp)
- {
- if (oMQMgr.isMeasure(i))
- dlgGlobalSetParm("xxIsMeasure", "1");
- addAggsAndOtherCols(i);
- break;
- }
- }
- }
- dlgGlobalSetParm("xxCVColumnName", oMQMgr.getColumnLabel(sel));
- }
- else
- {
- dlgGlobalSetParm("xxColumnName", oMQMgr.getColumnLabel(sel));
- if (bUseMUN)
- {
- var useSep = ",";
- useSep = oMQMgr.getListSeparator();
- dlgGlobalSetParm("xxColumnExpression", "RoleValue('_memberCaption'" + useSep + " " + oMQMgr.getExpression(sel) + ")");
- }
- else
- dlgGlobalSetParm("xxColumnExpression", oMQMgr.getExpression(sel));
- }
- dlgGlobalSetParm("xxColumnIndex", sel);
- var before_col_id = "-1";
- if (sel < (oMQMgr.getAllColumns().length - 1))
- before_col_id = oMQMgr.getColumnId(sel + 1);
- dlgGlobalSetParm("xxInsBeforeColId", before_col_id);
- if (groupOrRange == "group")
- {
- dlgGlobalSetParm("xxModelName", cfgGet("cmLastModel"));
- dlgSetParm("m", "/" + qs_dir + "/customizeGroups.xts");
- if (oMQMgr.getCRQReportNode().getAttribute("limitData") == "partial")
- dlgGlobalSetParm("xxDesignMode", "true");
- }
- else
- {
- dlgSetParm("m", "/" + qs_dir + "/customizeRanges.xts");
- }
-
- for (var i = 0; i < cfgSize("filter_promptValuesXML"); i++)
- {
- dlgGlobalSetParmAt("xxPromptValues", dlgGlobalSize("xxPromptValues"), cfgGetAt("filter_promptValuesXML", i));
- }
- try
- {
- if (goApplicationManager.getReportManager().getParameterManager().getExecutionParameters())
- {
- dlgGlobalSetParm("xxExecutionParameters", goApplicationManager.getReportManager().getParameterManager().getExecutionParameters());
- }
- }
- catch (e)
- {
- }
-
- var formatArr = cfgGetAt("ColFormat", sel);
- if(formatArr[0] != "none")
- {
- var numDecs = -1;
- for (var i = 0; i < formatArr.length; i++)
- {
- if (formatArr[i] == "decimalSize" && formatArr.length > (i + 1))
- {
- numDecs = formatArr[i + 1];
- break;
- }
- }
- if (numDecs > -1)
- dlgGlobalSetParm("xxNumDecimals", numDecs);
- }
- dlgSubmit();
- };
- function loadCustomRange()
- {
- newCustomValue("range")
- };
- function loadCustomGroups()
- {
- newCustomValue("group")
- };
- function parseRange(setExisting, sel)
- {
- var oMQMgr = goApplicationManager.getMiniQueryManager();
- var rangeType = oMQMgr.getCalcOp(sel);
- if (rangeType === MINI_QUERY_NO_COLUMN_FOUND || rangeType === MINI_QUERY_ATTRIBUTE_NOT_FOUND)
- {
- return;
- }
- rangeType = rangeType.substr(5);
- switch (rangeType)
- {
- case "String":
- dlgSetParm("xxCustomType", "0");
- dlgGlobalSetParm("xxCustomType", "0");
- break;
- case "Number":
- dlgSetParm("xxCustomType", "1");
- dlgGlobalSetParm("xxCustomType", "1");
- break;
- case "Date":
- dlgSetParm("xxCustomType", "2");
- dlgGlobalSetParm("xxCustomType", "2");
- break;
- case "Time":
- dlgSetParm("xxCustomType", "3");
- dlgGlobalSetParm("xxCustomType", "3");
- break;
- case "Interval":
- dlgSetParm("xxCustomType", "4");
- dlgGlobalSetParm("xxCustomType", "4");
- break;
- case "DateTime":
- dlgSetParm("xxCustomType", "5");
- dlgGlobalSetParm("xxCustomType", "5");
- break;
- default:
- return;
- }
- var existingGroups = new Array();
- var existingGroupValues = new Array();
- var colFullExpr = oMQMgr.getExpression(sel);
- var ifColStr = "if (";
- var lastCastString = "CAST(";
- var asDecimalString = " as decimal(";
- var asVarcharString = " as varchar(";
- var asNVarcharString = " as nvarchar(";
- var nullString = "null";
- var ifColPointer = colFullExpr.indexOf(ifColStr);
- var origColPointer = colFullExpr.indexOf("[");
- var inOrInRangeStr = " in_range {"
- var origColExp;
- if (colFullExpr.indexOf(inOrInRangeStr) == -1)
- inOrInRangeStr = " in ("
- var inRange = colFullExpr.indexOf(inOrInRangeStr);
- origColExp = colFullExpr.substring(ifColPointer + ifColStr.length, inRange);
- var lastCloseBracket = origColExp.lastIndexOf("]");
- var origColName = origColExp.substring(origColExp.lastIndexOf("[") + 1, lastCloseBracket);
- var colExpr = colFullExpr;
- var thenPoint = colFullExpr.indexOf(") then ('");
- var quoteBracketElse = "') else ";
- var lastElse = colFullExpr.substr(colFullExpr.lastIndexOf(quoteBracketElse) + quoteBracketElse.length + 1);
- var afterElse = lastElse.substring(0, lastElse.lastIndexOf(")"));
- if (setExisting)
- {
- while (thenPoint > -1)
- {
- var elsePoint = colExpr.indexOf(quoteBracketElse, thenPoint);
- var rangeName = colExpr.substring(thenPoint + 9, elsePoint);
- colExpr = colExpr.substr(0, thenPoint);
- lastCloseBracket = colExpr.lastIndexOf("]");
- var rangeVals = colExpr.substring(lastCloseBracket, thenPoint);
- colExpr = colFullExpr.substr(thenPoint + 9);
- colFullExpr = colExpr;
- var inRange = rangeVals.indexOf(inOrInRangeStr);
- rangeVals = rangeVals.substring(inRange + 11, rangeVals.length - 1).replace(/^'|'$/g, "");
- dlgGlobalSetParmAt("xxExistingRanges", cf.dlgGlobalSize('xxExistingRanges'), new Array(rangeName, rangeVals));
- thenPoint = colExpr.indexOf(") then ('");
- }
- }
- dlgGlobalSetParm("xxColumnName", origColName);
- if (afterElse.indexOf(lastCastString) > -1)
- {
- var colExpOrLabel = "";
- if (afterElse.indexOf(asDecimalString) > -1)
- colExpOrLabel = afterElse.substring(afterElse.lastIndexOf(lastCastString) + lastCastString.length, afterElse.lastIndexOf(asDecimalString));
- else
- {
- var lastIdx = afterElse.lastIndexOf(asNVarcharString);
- if (lastIdx == -1)
- lastIdx = afterElse.lastIndexOf(asVarcharString);
- colExpOrLabel = afterElse.substring(afterElse.lastIndexOf(lastCastString) + lastCastString.length, lastIdx);
- if (colExpOrLabel.charAt(0) == "'" && colExpOrLabel.charAt(colExpOrLabel.length - 1) == "'")
- {
- colExpOrLabel = colExpOrLabel.substring(1, colExpOrLabel.length - 1);
- dlgGlobalSetParm("xxExistingRemainingGroup", colExpOrLabel);
- }
- }
- }
- else if (afterElse.indexOf(nullString) > -1)
- dlgGlobalSetParm("xxExistingRemainingGroup", false);
- var substringStr = "substring(";
- if (origColExp.indexOf(substringStr) > -1)
- {
-
- if ( origColExp.match(/^\s*substring\s*\(\s*(.*?)(\s*,\s*\d+\s*)*\)$/gi) )
- {
- origColExp = RegExp.$1;
- }
- }
- dlgGlobalSetParm("xxColumnExpression", origColExp);
- return origColExp;
- };
- function parseGroup(setExisting, sel)
- {
- var oMQMgr = goApplicationManager.getMiniQueryManager();
- var rangeType = oMQMgr.getCalcOp(sel);
- if (rangeType === MINI_QUERY_NO_COLUMN_FOUND || rangeType === MINI_QUERY_ATTRIBUTE_NOT_FOUND)
- {
- return;
- }
- rangeType = rangeType.substr(5);
- switch (rangeType)
- {
- case "String":
- dlgSetParm("xxCustomType", "0");
- dlgGlobalSetParm("xxCustomType", "0");
- break;
- case "Number":
- dlgSetParm("xxCustomType", "1");
- dlgGlobalSetParm("xxCustomType", "1");
- break;
- default:
- return;
- }
- var existingGroups = new Array();
- var existingGroupValues = new Array();
- var colExpr = oMQMgr.getExpression(sel);
- var ifString = "if (";
- var inString = " in (";
- var thenString = ")) then (CAST('";
- var lastCastString = "CAST('";
- var elseStringN = "' as nvarchar(30))) else ";
- var elseString = "' as varchar(30))) else ";
- var nullString = "null";
- var ifColPointer = colExpr.indexOf(ifString);
- var origColPointer = colExpr.indexOf("[");
- var inGroup = colExpr.indexOf(inString);
- var origColExp = colExpr.substring(ifColPointer + ifString.length, inGroup);
- origColPointer = origColExp.lastIndexOf("]");
- var origColName = origColExp.substring(origColExp.lastIndexOf("[") + 1, origColPointer);
- var quoteBracketElse = "') else ";
- var nullBracketElse = "null) else ";
- var lastElse;
- if (colExpr.lastIndexOf(quoteBracketElse) == -1)
- lastElse = colExpr.substr(colExpr.lastIndexOf(nullBracketElse) + nullBracketElse.length + 1);
- else
- lastElse = colExpr.substr(colExpr.lastIndexOf(quoteBracketElse) + quoteBracketElse.length + 1);
- var afterElse = lastElse.substring(0, lastElse.lastIndexOf(")"));
- if (setExisting)
- {
- while (inGroup > -1)
- {
- colExpr = colExpr.substr(inGroup + inString.length);
- var thenPoint = colExpr.indexOf(thenString);
- var grpVals = colExpr.substring(0, thenPoint);
- var elsePoint;
- var nVarChar = colExpr.indexOf(elseStringN, thenPoint);
- if (nVarChar > -1)
- elsePoint = nVarChar;
- else
- elsePoint = colExpr.indexOf(elseString, thenPoint);
- var grpName = colExpr.substring(thenPoint + thenString.length, elsePoint);
- if (nVarChar > -1)
- colExpr = colExpr.substr(elsePoint + elseStringN.length);
- else
- colExpr = colExpr.substr(elsePoint + elseString.length);
- if (grpName != "")
- {
- if (grpVals != "")
- {
- grpVals = parseQuoteEncodedList(grpVals);
- for (i = 0; i < grpVals.length; i++)
- dlgGlobalSetParmAt("xxExistingGroups", cf.dlgGlobalSize('xxExistingGroups'), new Array (grpName, grpVals[i]));
- }
- }
- inGroup = colExpr.indexOf(inString);
- }
- if (colExpr.indexOf(lastCastString) > -1)
- {
- var asVarcharString = "' as varchar(30)))";
- var asNVarcharString = "' as nvarchar(30)))";
- var lastIdx = colExpr.lastIndexOf(asNVarcharString);
- if (lastIdx == -1)
- lastIdx = colExpr.lastIndexOf(asVarcharString);
- if (lastIdx > -1)
- {
- var remainingGroup = colExpr.substring(colExpr.indexOf(lastCastString) + lastCastString.length, lastIdx);
- if (remainingGroup != "")
- dlgGlobalSetParm("xxExistingRemainingGroup", remainingGroup);
- }
- }
- else if (colExpr.indexOf(nullString) > -1)
- dlgGlobalSetParm("xxExistingRemainingGroup", false);
- }
- dlgGlobalSetParm("xxColumnName", origColName);
- dlgGlobalSetParm("xxColumnExpression", origColExp);
- };
- function parseQuoteEncodedList(list)
- {
- var grpVals = new Array();
-
- var startPos = list.indexOf("'");
- var intPos = startPos;
- var endPos, index = 0;
-
- while (true)
- {
- endPos = list.indexOf("'", intPos + 1);
-
- if (endPos == -1)
- return grpVals;
-
- if (list.indexOf(",'", endPos + 1) == endPos + 1)
- {
- grpVals[index++] = list.slice(startPos + 1, endPos);
- startPos = endPos + 2;
- intPos = startPos
- }
- else if (list.indexOf("'", endPos + 1) == endPos + 1)
- {
- intPos = endPos + 1;
- }
- else
- {
- grpVals[index++] = list.slice(startPos + 1, endPos);
- return grpVals;
- }
- }
- };
- function addAggsAndOtherCols(colRef, addOtherCols)
- {
- var oMQMgr = goApplicationManager.getMiniQueryManager();
- var summaryAgg = oMQMgr.getSummaryAggregate(colRef);
- var detailAgg = oMQMgr.getDetailAggregate(colRef);
- var regularAgg = oMQMgr.getRegularAggregate(colRef);
- if (summaryAgg == "default")
- {
- if ((regularAgg != "")&&(regularAgg != "none"))
- summaryAgg = regularAgg;
- else if (isNumeric(colRef))
- summaryAgg = "total";
- else
- summaryAgg = "count";
- }
- switch (summaryAgg)
- {
- case "any":
- case "none":
- case "automatic":
- case "calculated":
- case "default":
- break;
- default:
- dlgGlobalSetParm("xxAggregateType", summaryAgg);
- }
- switch (detailAgg)
- {
- case "any":
- case "none":
- case "automatic":
- case "calculated":
- break;
- case "averageNonZero":
- case "countDistinct":
- case "countNonZero":
- case "median":
- dlgGlobalSetParm("xxDetailAggregateType", "total");
- default:
- dlgGlobalSetParm("xxDetailAggregateType", detailAgg);
- }
- if (typeof addOtherCols != "undefined" && addOtherCols == false)
- return;
- for (var i = 0; i < oMQMgr.getAllColumns().length; i++)
- {
- if((oMQMgr.getColumnId(i) != oMQMgr.getColumnId(colRef)) && (oMQMgr.isMeasure(i) === false) && (!oMQMgr.isReportExpression(i)))
- {
- dlgGlobalSetParmAt("xxOtherColIds", dlgGlobalSize('xxOtherColIds'), oMQMgr.getColumnId(i));
- dlgGlobalSetParmAt("xxOtherColExps", dlgGlobalSize('xxOtherColExps'), oMQMgr.getExpression(i).replace(/</g,"<"));
- }
- }
- };
|