123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234 |
- /****************************************************************
- ** 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 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;
- };
|