123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234 |
- function CUngroup()
- {
- };
- CUngroup.prototype = new AFeatureObject();
- CUngroup.prototype.setup = function (aFeatureParams)
- {
- doGrouping(MINI_QUERY_NONE_STR);
- };
- function doGrouping(groupType)
- {
- var oMQMgr = goApplicationManager.getMiniQueryManager();
-
- if (cfgSize("SelColumns") == 0)
- {
- switch (groupType)
- {
- case MINI_QUERY_NONE_STR: dlgShowMessage("MOVE_DETAILS_TITLE", "", "MOVE_DETAILS_NO_SELECTION");
- break;
- case MINI_QUERY_GROUP_LIST: dlgShowMessage("MOVE_ROW_TITLE", "", "MOVE_ROW_NO_SELECTION");
- break;
- case MINI_QUERY_GROUP_SECTION: dlgShowMessage("MOVE_SECTION_TITLE", "", "MOVE_SECTION_NO_SELECTION");
- break;
- case MINI_QUERY_GROUP_PIVOT: dlgShowMessage("MOVE_PIVOT_TITLE", "", "MOVE_PIVOT_NO_SELECTION");
- break;
- default:
- break;
- }
- return;
- }
-
- if (!isValidGroupingSelection())
- {
- dlgShowMessage("MOVE_GROUP_TITLE", "", "MOVE_GROUP_INVALID_SELECTION");
- return;
- }
- var showShortcut = true;
- for (var i = 0; i < oMQMgr.getAllColumns().length; i++)
- {
- if (oMQMgr.isPivoted(i))
- {
- showShortcut = false;
- break;
- }
- }
- if (!checkForValidSelection(true))
- return;
- var groupCols = new Array();
- for (i = 0; i < cfgSize("SelColumns"); i++)
- groupCols[i] = oMQMgr.getColumnId(cfgGetAt("SelColumns",i));
- var cmd = generateGroupingCmd(groupType, groupCols);
-
- sendCmd(cmd, "", true);
- };
- function generateGroupingCmd(groupType, groupCols)
- {
- var oMQMgr = goApplicationManager.getMiniQueryManager();
-
- var cmd = "";
- var cmdArray = new Array();
- switch (groupType)
- {
- case MINI_QUERY_NONE_STR:
- cmdArray[0] = "nogroup";
- break;
- case MINI_QUERY_GROUP_LIST:
- cmdArray[0] = "colgroup";
- break;
- case MINI_QUERY_GROUP_SECTION:
- cmdArray[0] = "headergroup";
- break;
- case MINI_QUERY_GROUP_PIVOT:
- cmdArray[0] = "pivotgroup";
- break;
- default:
-
- break;
- }
- for (var i = 0; i < groupCols.length; i++)
- cmdArray[cmdArray.length] = escapeParam(groupCols[i]);
- cmd += createCommand("M","G", cmdArray);
-
- var orderList = createOrderListForGroup(groupType);
- cmdArray = new Array();
- for (i = 0; i < orderList.length; i++)
- {
- cmdArray[cmdArray.length] = escapeParam(oMQMgr.getColumnId(orderList[i]));
- }
- cmd += ";" + createCommand("O","R", cmdArray);
- return cmd;
- };
- function collectFuture(colType, preOrPost, groupType, selList, orderList)
- {
- var oMQMgr = goApplicationManager.getMiniQueryManager();
- if (colType != groupType)
- return;
- if (selList.length == 0)
- return;
- var addIt;
- var role;
- for (i = 0; i < selList.length; i++)
- {
- if (preOrPost == "post")
- addIt = true;
- else
- {
- addIt = false;
- role = oMQMgr.getColumnRole(selList[i]);
- if (groupType === MINI_QUERY_GROUP_LIST && role === MINI_QUERY_GROUP_SECTION)
- addIt = true;
-
- else if (groupType === MINI_QUERY_GROUP_PIVOT && (role === MINI_QUERY_GROUP_SECTION && role === MINI_QUERY_GROUP_LIST))
- addIt = true;
- else if (groupType === MINI_QUERY_NONE_STR && role !== MINI_QUERY_NONE_STR)
- addIt = true;
- }
- if (addIt)
- {
- orderList[orderList.length] = selList[i];
- removeFromIntArray(selList[i], selList);
- i--;
- }
- }
- };
- function collectExisting(colType, groupType, selList, orderList)
- {
- var oMQMgr = goApplicationManager.getMiniQueryManager();
- var i;
- var isSel;
- for (i = 0; i < oMQMgr.getAllColumns().length; i++)
- {
- if (oMQMgr.getColumnRole(i) == colType)
- {
- isSel = (cfgIndexOf("SelColumns", i) > -1);
- if (!isSel || groupType == colType)
- {
- orderList[orderList.length] = i;
- if (isSel)
- removeFromIntArray(i, selList);
- }
- }
- }
- return;
- };
- function createOrderListForGroup(groupType)
- {
- var selList = new Array();
- for (i = 0; i < cfgSize("SelColumns"); i++)
- selList[i] = cfgGetAt("SelColumns", i);
- var orderList = new Array();
- collectExisting(MINI_QUERY_GROUP_SECTION, groupType, selList, orderList);
- collectFuture(MINI_QUERY_GROUP_SECTION, "post", groupType, selList, orderList);
- collectFuture(MINI_QUERY_GROUP_LIST, "pre", groupType, selList, orderList);
- collectExisting(MINI_QUERY_GROUP_LIST, groupType, selList, orderList);
- collectFuture(MINI_QUERY_GROUP_LIST, "post", groupType, selList, orderList);
- collectFuture(MINI_QUERY_GROUP_PIVOT, "pre", groupType, selList, orderList);
- collectExisting(MINI_QUERY_GROUP_PIVOT, groupType, selList, orderList);
- collectFuture(MINI_QUERY_GROUP_PIVOT, "post", groupType, selList, orderList);
- collectFuture(MINI_QUERY_NONE_STR, "pre", groupType, selList, orderList);
- collectExisting(MINI_QUERY_NONE_STR, groupType, selList, orderList);
- return orderList;
- };
- function canDoGrouping(col)
- {
- var oMQMgr = goApplicationManager.getMiniQueryManager();
- if (oMQMgr.isReportExpression(col))
- return false;
- if (oMQMgr.isBlob(col))
- return false;
- if (oMQMgr.isMeasure(col))
- return false;
- var iDisplayType = oMQMgr.getDisplayType(col);
- if (iDisplayType != MINI_QUERY_ATTRIBUTE_NOT_FOUND)
- return false;
- var calcType = getCalcType(col);
-
- if (oMQMgr.isCalculation(col) && (calcType == "model") && (oMQMgr.isMeasure(col) === true) || (oMQMgr.getDataType(col) == 0))
- return false;
- if ((calcType == "number")&&(!oMQMgr.isMeasure(col)))
- return true;
- if (oMQMgr.isCalculation(col) && (calcType != "range") && (calcType != "group") && (calcType != "string") && (calcType != "model"))
- return false;
- return true;
- };
- function isValidGroupingSelection()
- {
-
- var i;
- for (i = 0; i < cfgSize("SelColumns"); i++)
- {
- if (!canDoGrouping(cfgGetAt("SelColumns", i)))
- return false;
- }
- return true;
- };
|