123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626 |
- 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,"<"));
- }
- }
- };
|