CPaste.js 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. /****************************************************************
  2. ** Licensed Materials - Property of IBM
  3. **
  4. ** BI and PM: qs
  5. **
  6. ** (C) Copyright IBM Corp. 2001, 2015
  7. **
  8. ** US Government Users Restricted Rights - Use, duplication or
  9. ** disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  10. *****************************************************************/
  11. // Copyright (C) 2008 Cognos ULC, an IBM Company. All Rights Reserved.
  12. // 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.
  13. function CPaste()
  14. {
  15. };
  16. CPaste.prototype = new AFeatureObject();
  17. CPaste.prototype.setup = function (aFeatureParams)
  18. {
  19. paste();
  20. };
  21. function paste()
  22. {
  23. var oMQMgr = goApplicationManager.getMiniQueryManager();
  24. var rf = getReportFrame();
  25. if (cfgSize("CutColumns") == 0)
  26. return;
  27. if (oMQMgr.getAllColumns().length == cfgSize("CutColumns"))
  28. {
  29. goApplicationManager.getSelectionController().setCutColumns(false);
  30. return;
  31. }
  32. doPaste();
  33. };
  34. function createOrderListForPaste()
  35. {
  36. var oMQMgr = goApplicationManager.getMiniQueryManager();
  37. var orderList = new Array();
  38. var bInserted = false;
  39. var bInsertAtEnd = (cfgSize("SelColumns") == 0);
  40. var i, j;
  41. for (i = 0; i < oMQMgr.getAllColumns().length; i++)
  42. {
  43. if (!bInserted && !bInsertAtEnd)
  44. {
  45. if ((i == 0 && oMQMgr.isReportExpression(cfgGetAt("SelColumns", 0))) || cfgGetAt("SelColumns", 0) == i)
  46. {
  47. for (j = 0; j < cfgSize("CutColumns"); j++)
  48. orderList[orderList.length] = cfgGetAt("CutColumns", j);
  49. bInserted = true;
  50. }
  51. }
  52. if (cfgIndexOf("CutColumns", i) == -1)
  53. orderList[orderList.length] = i;
  54. }
  55. if (bInsertAtEnd)
  56. {
  57. for (j = 0; j < cfgSize("CutColumns"); j++)
  58. orderList[orderList.length] = cfgGetAt("CutColumns", j);
  59. }
  60. return orderList;
  61. };
  62. function doPaste()
  63. {
  64. var oMQMgr = goApplicationManager.getMiniQueryManager();
  65. var cmd = "";
  66. var cmdArray = new Array();
  67. if (oMQMgr.hasGroupedColumns() || oMQMgr.hasPivottedColumns())
  68. {
  69. var insertColRole;
  70. var prevColRole;
  71. if (cfgSize("SelColumns") == 0)
  72. {
  73. insertColRole = oMQMgr.getColumnRole(oMQMgr.getAllColumns().length - 1);
  74. prevColRole = insertColRole;
  75. }
  76. else if (oMQMgr.isReportExpression(cfgGetAt("SelColumns", 0)) || cfgGetAt("SelColumns",0) == 0)
  77. {
  78. insertColRole = oMQMgr.getColumnRole(0);
  79. prevColRole = insertColRole;
  80. }
  81. else
  82. {
  83. insertColRole = oMQMgr.getColumnRole(cfgGetAt("SelColumns",0));
  84. prevColRole = oMQMgr.getColumnRole(cfgGetAt("SelColumns",0)-1);
  85. if (oMQMgr.hasPivottedColumns() && insertColRole === MINI_QUERY_GROUP_PIVOT)
  86. {
  87. prevColRole = insertColRole;
  88. }
  89. }
  90. var groupType;
  91. if (insertColRole == prevColRole)
  92. {
  93. groupType = getGroupTypeFromRole(insertColRole);
  94. cmdArray[0] = escapeParam(groupType);
  95. for (j = 0; j < cfgSize("CutColumns"); j++)
  96. cmdArray[cmdArray.length] = escapeParam(oMQMgr.getColumnId(cfgGetAt("CutColumns", j)));
  97. cmd = createCommand("M","G",cmdArray);
  98. }
  99. else
  100. {
  101. var n = 0;
  102. for (j = 0; j < cfgSize("CutColumns"); j++)
  103. if (cfgGetAt("CutColumns", j) < cfgGetAt("SelColumns", 0))
  104. n++;
  105. if (n > 0)
  106. {
  107. groupType = getGroupTypeFromRole(prevColRole);
  108. cmdArray[0] = groupType;
  109. for (j = 0; j < cfgSize("CutColumns"); j++)
  110. {
  111. if (cfgGetAt("CutColumns", j) < cfgGetAt("SelColumns", 0))
  112. cmdArray[cmdArray.length] = escapeParam(oMQMgr.getColumnId(cfgGetAt("CutColumns", j)));
  113. }
  114. }
  115. else if (n < cfgSize("CutColumns"))
  116. {
  117. groupType = getGroupTypeFromRole(insertColRole);
  118. cmdArray[0] = escapeParam(groupType);
  119. for (j = 0; j < cfgSize("CutColumns"); j++)
  120. {
  121. if (cfgGetAt("CutColumns", j) >= cfgGetAt("SelColumns", 0))
  122. cmdArray[cmdArray.length] = escapeParam(oMQMgr.getColumnId(cfgGetAt("CutColumns", j)));
  123. }
  124. }
  125. cmd = createCommand("M","G",cmdArray);
  126. }
  127. }
  128. var orderList = new Array();
  129. cmdArray = new Array();
  130. orderList = createOrderListForPaste();
  131. if (cmd.length > 0)
  132. cmd += ";";
  133. for (i = 0; i < orderList.length; i++)
  134. cmdArray[cmdArray.length] = escapeParam(oMQMgr.getColumnId(orderList[i]));
  135. cmd += createCommand("O","R",cmdArray);
  136. sendCmd(cmd, "", true);
  137. };
  138. function getGroupTypeFromRole(role)
  139. {
  140. switch (role)
  141. {
  142. case MINI_QUERY_GROUP_SECTION:
  143. return "headergroup";
  144. case MINI_QUERY_GROUP_LIST:
  145. return "colgroup";
  146. case MINI_QUERY_GROUP_PIVOT:
  147. return "pivotgroup";
  148. case MINI_QUERY_NONE_STR:
  149. return "nogroup";
  150. }
  151. };