123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237 |
- function execute()
- {
-
- var calc = document.f.calcList.options[document.f.calcList.selectedIndex].value;
- var before_col_id = cf.dlgGlobalGetParm('xxInsBeforeColid');
- var regularAgg = cf.dlgGlobalGetParm('xxRegularAgg');
- var detailAgg = cf.dlgGlobalGetParm('xxDetailAgg');
- var calcExpr = "";
- var calcOp = "none";
- var ii;
- var selCount = expression.length;
- var constantVal;
- var textBoxnumberDecs = -1;
- var cType = -1;
- var cUsage = -1;
- if (calcType == 'interval')
- {
- if (!document.f.inputValueRadio || (document.f.inputValueRadio[0].checked || (document.f.inputValueRadio[1].checked && substVarValue == null)))
- {
- if (intervalControlintervalFrom.isValid())
- constantVal = intervalControlintervalFrom.sGetValue();
- else
- return;
- }
- else
- constantVal = substVarValue;
- }
- else
- {
- if (document.getElementById("textBoxNumeric").style.display != "none")
- {
- if (textBoxnumberValue.isValid())
- {
- constantVal = textBoxnumberValue.sGetValue();
- if (document.f.numberCheck.checked)
- textBoxnumberDecs = textBoxnumberValue.getDecimalSize();
- }
- else
- return;
- }
- else if (document.getElementById("textBoxString").style.display != "none")
- {
- constantVal = substVarValue;
- }
- constantVal = constantVal.replace("\.", goDialogManager.getMiniQueryManager().getDecimalSeparator());
- }
- if (calc != "*" && constantVal == "")
- constantVal = 0;
- if (selCount > 1 || document.f.numberCheck.checked)
- {
- detailAgg = "calculated";
- switch (calc) {
- case "+":
- calcExpr = "(^^^0^^^)";
- for (ii=1; ii < selCount; ii++)
- {
- calcExpr += " + (^^^" + ii + "^^^)";
- }
-
- if (selectedColumnSupportsTotal())
- {
- regularAgg = setRegAgg("total");
- }
- else
- {
- regularAgg = setRegAgg("automatic");
- }
-
-
- if (document.f.numberCheck.checked)
- {
- regularAgg = setRegAgg(regularAgg);
- calcExpr += " + (" + constantVal + ")";
- }
- if (calcType == 'interval')
- calcOp = "sumInterval";
- else
- calcOp = "sum";
- break;
- case "*":
- calcExpr = "(^^^0^^^)";
- if (constantVal == "")
- {
- constantVal = 1;
- }
- for (ii=1; ii < selCount; ii++)
- {
- calcExpr += " * (^^^" + ii + "^^^)";
- }
- if (selectedColumnSupportsTotal())
- {
- regularAgg = setRegAgg("total");
- }
- else
- {
- regularAgg = setRegAgg("automatic");
- }
-
-
- if (document.f.numberCheck.checked)
- {
- regularAgg = setRegAgg(regularAgg);
- calcExpr += " * (" + constantVal + ")";
- }
- calcOp = "product";
- break;
- case "maximum":
- calcExpr = minmax(">", constantVal);
- if (document.f.numberCheck.checked)
- regularAgg = setRegAgg(regularAgg);
- calcOp = "maximum";
- regularAgg = setRegAgg("calculated");
- break;
- case "minimum":
- calcExpr = minmax("<", constantVal);
- if (document.f.numberCheck.checked)
- regularAgg = setRegAgg(regularAgg);
- calcOp = "minimum";
- regularAgg = setRegAgg("calculated");
- break;
- case "average":
- calcExpr = "(^^^0^^^)";
- for (ii=1; ii < selCount; ii++)
- calcExpr += " + (^^^" + ii + "^^^)";
- if (document.f.numberCheck.checked)
- {
- regularAgg = setRegAgg(regularAgg);
- calcExpr += " + (" + constantVal + ")";
- ++selCount;
- }
- calcExpr = "(" + calcExpr + ")/" + selCount;
- calcOp = "average";
- regularAgg = setRegAgg("calculated");
- break;
- default:
- break;
- }
- }
- if (calcExpr != "")
- {
- var calculationExpression = calcExpr;
- var summarizationExpression = calcExpr;
- for (var counter = 0; counter < selCount; counter++)
- {
- calculationExpression = stringReplace (calculationExpression, "\\^\\^\\^" + counter + "\\^\\^\\^", expression[counter]);
- summarizationExpression = stringReplace (summarizationExpression, "\\^\\^\\^" + counter + "\\^\\^\\^", calculatedExpression[counter]);
- }
- var calcName = getCalcName();
- if (cf.dlgGlobalGetParm('xxIsMeasureOutput') == "false")
- {
- if (calcType == 'interval')
- cType = 53;
- else
- cType = 21;
- cUsage = 2;
- detailAgg = "none";
- regularAgg = "none";
- }
- getConfigFrame().addCalcColumn(before_col_id, calculationExpression, summarizationExpression, calcName, "none", calcOp, "none", textBoxnumberDecs, cType, cUsage, regularAgg, -1, detailAgg, calcParentIds);
- }
- };
- function setRegAgg(regAgg)
- {
- var selCount = detailAggs.length;
- var detailAgg = "";
- var isFirst = true;
- if (detailAggs[0] != "total")
- {
- return regAgg;
- }
-
- for (var ii = 0; ii < selCount; ii++)
- {
- if (detailAggs[0] != detailAggs[ii])
- return regAgg;
- }
- return "total";
- };
- function selectedColumnSupportsTotal()
- {
- var cf = (typeof getConfigFrame == "function" ? getConfigFrame() : this);
-
- if (typeof cf === "undefined" ||
- typeof selectionIsNumeric === "undefined"
- )
- {
-
- return true;
- }
-
-
-
-
- var bIsOLAP = (! cf.checkCalcFunctionAgainstDB("FLEXIBLE_FILTERS"));
- if (bIsOLAP && selectionIsNumeric() && ! selectionIsMeasure())
- {
- return false;
- }
- return true;
- };
|