metadataTree.js 66 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082
  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. var newMetadataObjects = null;
  14. var allMetadataObjects = new Array();
  15. var metadataTree = null;
  16. var activeNodeFetches = new Array();
  17. var metadataErrors = new Array();
  18. var processMetadataRecursion = true;
  19. var metadataTreeTracking = "";
  20. var greMETADATA_APOS = /'/g;
  21. var greMETADATA_APOS_ESCAPE = /\\'/g;
  22. var greMETADATA_COMMA = /&comma/g;
  23. var greMETADATA_GREATERTHAN = /\\>/g;
  24. var greMETADATA_LESSTHAN = /\\</g;
  25. var greMETADATA_SEMICOLON = /&semicolon/g;
  26. var gsMETADATA_APOS = "'";
  27. var gsMETADATA_APOS_ESCAPE = "\\'";
  28. var gsMETADATA_COMMA = ",";
  29. var gsMETADATA_EMPTY = "";
  30. var gsMETADATA_GREATERTHAN = ">";
  31. var gsMETADATA_LESSTHAN = "<";
  32. var gsMETADATA_SEMICOLON = ";";
  33. var gsMETADATA_calcConstants = "calcConstants";
  34. var gsMETADATA_calculation = "calculation";
  35. var gsMETADATA_calculationConstant = "calculationConstant";
  36. var gsMETADATA_cmLastModel = "cmLastModel";
  37. var gsMETADATA_dimension = "dimension";
  38. var gsMETADATA_ERROR_CODE = "<ERROR_CODE>";
  39. var gsMETADATA_ERROR_COMPONENT = "<ERROR_COMPONENT>";
  40. var gsMETADATA_failed = "failed";
  41. var gsMETADATA_FAULT = "FAULT";
  42. var gsMETADATA_filter = "filter";
  43. var gsMETADATA_firstChild = "firstChild";
  44. var gsMETADATA_folder = "folder";
  45. var gsMETADATA_hierarchy = "hierarchy";
  46. var gsMETADATA_hierarchyFolder = "hierarchyFolder";
  47. var gsMETADATA_hild = "hild";
  48. var gsMETADATA_HTML = "<HTML>";
  49. var gsMETADATA_lastChild = "lastChild";
  50. var gsMETADATA_level = "level";
  51. var gsMETADATA_loading = "loading";
  52. var gsMETADATA_measure = "measure";
  53. var gsMETADATA_measureDimension = "measureDimension";
  54. var gsMETADATA_measureFolder = "measureFolder";
  55. var gsMETADATA_member = "member";
  56. var gsMETADATA_MEMBER_SEARCH_IN_HIERARCHY = "MEMBER_SEARCH_IN_HIERARCHY";
  57. var gsMETADATA_META_TreeLoadedFirstTime = "META_TreeLoadedFirstTime";
  58. var gsMETADATA_namedSet = "namedSet";
  59. var gsMETADATA_namespace = "namespace";
  60. var gsMETADATA_parentChild = "parentChild";
  61. var gsMETADATA_queryItem = "queryItem";
  62. var gsMETADATA_queryItemFolder = "queryItemFolder";
  63. var gsMETADATA_querySubject = "querySubject";
  64. var gsMETADATA_resubmitSingleHierarchy = "resubmitSingleHierarchy";
  65. var gsMETADATA___resubmitSingleHierarchy = "--resubmitSingleHierarchy";
  66. var gsMETADATA_rollupMeasure = "rollupMeasure";
  67. var gsMETADATA_undefined = "undefined";
  68. function showMetadataLoading()
  69. {
  70. if (metadataTree == null)
  71. {
  72. setupMetadataTree();
  73. metadataTree.setupOuterTable();
  74. metadataTree.drawLoading(metadataTree.getRootNode(), null);
  75. }
  76. };
  77. function setupMetadataTree()
  78. {
  79. if (metadataTree == null)
  80. {
  81. var metadataTreeNode = document.getElementById("metadataTreeOuterPane");
  82. if (metadataTreeNode.addEventListener)
  83. {
  84. metadataTreeNode.addEventListener("mouseup", function(e) {if(e.target.toString().indexOf("XULElement") > -1){e.cancelBubble = true;return false;}}, true);
  85. if (window.ie) {
  86. metadataTreeNode.addEventListener("dragover", function(e) {e.preventBubble();}, true);
  87. metadataTreeNode.addEventListener("dragdrop", function(e) {e.preventBubble();}, true);
  88. }
  89. }
  90. metadataTree = new CTree (metadataTreeNode, gsMETADATA_EMPTY, false, true, "metadataTree");
  91. metadataTree.setLoadOnTheFlyFunction(loadFunc);
  92. metadataTree.setSelectionMode(CONTIGUOUS_TREE_SELECTION);
  93. metadataTree.setSelectTreeUI(NORMAL_TREE);
  94. metadataTree.setAllowDragDrop(true);
  95. metadataTree.setOnDragStart(onDragStartF);
  96. metadataTree.setOnDrag(onDragF);
  97. metadataTree.setOnDragEnd(onDragEndF);
  98. metadataTree.setContextMenu(treeContextMenuFunc);
  99. metadataTree.setTrackSelectionOrder(true);
  100. metadataTree.setSingleClickFunc(singleClickMetadata);
  101. metadataTree.setDoubleClickFunc(addSelectedDblClick);
  102. metadataTree.setHideOuterTable(true);
  103. }
  104. };
  105. function doMetadataTree()
  106. {
  107. var cmLastModel = cfgGet("cmLastModel");
  108. if (cmLastModel != null && typeof goApplicationManager.getMiniQueryManager().getCRQReportNode() == "object")
  109. {
  110. setupMetadataTree();
  111. if (metadataTree.getHasBeenDrawn() == false)
  112. {
  113. metadataTree.removeLoading(metadataTree.getRootNode());
  114. metadataTree.drawAll();
  115. metadataTree.checkData();
  116. }
  117. autoSetMetadataContainerHeight();
  118. }
  119. else
  120. {
  121. setTimeout(doMetadataTree, 100);
  122. }
  123. };
  124. function getMetadataRequestString(model, startAtPath, depth, contextNodeRef)
  125. {
  126. var cl="";
  127. var pl="";
  128. var el = goApplicationManager.getMiniQueryManager().getCRQReportNode().getAttribute("expressionLocale");
  129. var cookieValues = document.cookie.split(gsMETADATA_SEMICOLON);
  130. for (var i = 0; i < cookieValues.length; i++)
  131. {
  132. if (cookieValues[i].match(/^\s*CRN=/i))
  133. {
  134. var aLocales = decodeURIComponent(decodeURIComponent(cookieValues[i].split("=")[1])).split("&");
  135. for (var j = 0; j < aLocales.length; j++)
  136. {
  137. if (aLocales[j].match(/^contentLocale=/i)) {
  138. cl = aLocales[j].split("=")[1];
  139. }
  140. if (aLocales[j].match(/^productLocale=/i)) {
  141. pl = aLocales[j].split("=")[1];
  142. }
  143. }
  144. }
  145. }
  146. if (cl == "") {
  147. cl = goApplicationManager.get("contentLocale");
  148. }
  149. if (pl == "") {
  150. pl = goApplicationManager.get("productLocale");
  151. }
  152. var sUrl = "";
  153. if (model) {
  154. sUrl += "&model=" + model;
  155. }
  156. if (cl) {
  157. sUrl += "&cl=" + cl;
  158. }
  159. if (pl) {
  160. sUrl += "&pl=" + pl;
  161. }
  162. if (el) {
  163. sUrl += "&el=" + el;
  164. }
  165. if (depth) {
  166. sUrl += "&depth=" + depth;
  167. }
  168. if (startAtPath) {
  169. sUrl += "&startAtPath=" + startAtPath;
  170. }
  171. if (contextNodeRef) {
  172. sUrl += "&contextNodeRef=" + encodeURIComponent(contextNodeRef);
  173. }
  174. if (processMetadataRecursion) {
  175. sUrl += "&processRecursion=1";
  176. }
  177. if (goApplicationManager.getFeatureRegistry().isRegistered("MetaExtensions") == true)
  178. {
  179. sUrl += "&showMetaExtensions=1";
  180. }
  181. if (goApplicationManager.getReportManager().getParameterManager().getExecutionParameters() !== null)
  182. {
  183. sUrl += "&executionParameters=" + encodeURIComponent(goApplicationManager.getReportManager().getParameterManager().getExecutionParameters());
  184. }
  185. if (goApplicationManager.getReportManager().getParameterManager().getMetadataParameters() !== null)
  186. {
  187. sUrl += "&metadataParameters=" + encodeURIComponent(goApplicationManager.getReportManager().getParameterManager().getMetadataParameters());
  188. }
  189. else if (cfgIsValid("parameterValues") && cfgGet("parameterValues").indexOf("item") > -1)
  190. {
  191. sUrl += "&parameterValues=" + encodeURIComponent(cfgGet("parameterValues"));
  192. }
  193. for (var i = 0; i < cfgSize("filter_promptValuesXML"); i++)
  194. {
  195. sUrl += "&promptValues=" + encodeURIComponent(cfgGetAt("filter_promptValuesXML", i));
  196. }
  197. return sUrl;
  198. };
  199. function doMetadataRequest(request)
  200. {
  201. var url = "b_action=xts.run&m=/" + qs_dir + "/metadata.xts" + request;
  202. if (cafContextId != "")
  203. {
  204. url += "&ui.cafcontextid=" + cafContextId;
  205. }
  206. if (metadataTreeTracking != "")
  207. {
  208. url += "&m_tracking=" + metadataTreeTracking;
  209. }
  210. if (typeof routingServerGroup != "undefined")
  211. {
  212. url += "&ui.routingServerGroup=" + encodeURIComponent(routingServerGroup);
  213. }
  214. if (cfgGet("markup_track") != "undefined")
  215. {
  216. url += "&markup_track=" + cfgGet("markup_track");
  217. }
  218. cfgSet("CURRENT_REQUEST",request);
  219. setDispatcherErrorHandler(errorHandler);
  220. sendDispatcherRequestWithXMLResponse(url, getMetadataResponse);
  221. };
  222. function releaseMetadataRequest()
  223. {
  224. if (metadataTreeTracking != "")
  225. {
  226. doMetadataRequest("&qs_releaseConversation=true");
  227. }
  228. cfgSet("markup_track","");
  229. };
  230. function promptResponse(parameters, response, conversation, clientContext, tracking)
  231. {
  232. if (response == "Cancel" || response == "Error")
  233. {
  234. closeLink();
  235. }
  236. else
  237. {
  238. metadataTreeTracking = tracking;
  239. var XMLNodes = null;
  240. var x = cfgGet("parameterValues");
  241. if (x) {
  242. XMLNodes = new XMLParser(cfgGet("parameterValues"));
  243. }
  244. if (parameters && parameters.length> 0)
  245. {
  246. if (XMLNodes == null) {
  247. XMLNodes = parameters.join(" ");
  248. }
  249. else {
  250. for (var i = 0; i < parameters.length; i++)
  251. {
  252. XMLNodes.appendChild(parameters[i]);
  253. }
  254. }
  255. goApplicationManager.getReportManager().getParameterManager().setMetadataParameters(XMLNodes.toString());
  256. goApplicationManager.getReportManager().getParameterManager().setMetadataParametersPassed(false);
  257. var request = getMetadataRequestString() + "&contextNodeRef=" + clientContext;
  258. if (clientContext && clientContext.indexOf("metadataFunctionListResponse:") >= 0)
  259. {
  260. request += "&functionList=" + encodeURIComponent(response);
  261. setTimeout("sendFunctionListRequest('" + request + "');", 100);
  262. }
  263. else
  264. {
  265. request += "&metadataTree=" + encodeURIComponent(response);
  266. setTimeout("doMetadataRequest('" + request + "');", 100);
  267. }
  268. if (typeof goApplicationManager.getMiniQueryManager().getCRQReportNode().getAttribute("limitData") == "string")
  269. {
  270. goApplicationManager.getFeatureManager().launchFeature('Run', new Array(goApplicationManager.getMiniQueryManager().getCRQReportNode().getAttribute("limitData")));
  271. }
  272. else
  273. {
  274. goApplicationManager.getFeatureManager().launchFeature('Run', new Array('full'));
  275. }
  276. }
  277. var request = cfgGet("CURRENT_REQUEST");
  278. if (clientContext && clientContext.indexOf("metadataFunctionListResponse:") >= 0)
  279. {
  280. request += "&functionList=" + encodeURIComponent(response);
  281. setTimeout("sendFunctionListRequest('" + request + "');", 100);
  282. }
  283. else
  284. {
  285. request += "&metadataTree=" + encodeURIComponent(response);
  286. setTimeout("doMetadataRequest('" + request + "');", 100);
  287. }
  288. }
  289. };
  290. function getMetadataResponse(responseXML)
  291. {
  292. var response = "";
  293. try
  294. {
  295. if (typeof responseXML == "object" && responseXML != null)
  296. {
  297. var oElement = responseXML.getElementsByTagName("xmlResponse")[0];
  298. if (typeof oElement == "object" && oElement != null)
  299. {
  300. var oNodeCollection = oElement.childNodes;
  301. for (var idxColl = 0; idxColl < oNodeCollection.length; idxColl++)
  302. {
  303. response += oNodeCollection[idxColl].nodeValue;
  304. }
  305. }
  306. }
  307. }
  308. catch (e)
  309. {
  310. return;
  311. }
  312. if (response === "")
  313. {
  314. return;
  315. }
  316. var metadataObjects = response.split(gsMETADATA_SEMICOLON);
  317. var nodeDepth = 0;
  318. var lastNodeDepth = 0;
  319. if (metadataObjects[0] == "working")
  320. {
  321. var request = "&doWait=1&contextNodeRef=" + jsdecode(metadataObjects[1]) + "&m_tracking=" + jsdecode(metadataObjects[2]) + fetchAllParametersAsURLSnippet();
  322. if (metadataObjects[3] != "")
  323. {
  324. request = request + "&depth=" + jsdecode(metadataObjects[3]);
  325. }
  326. if (processMetadataRecursion)
  327. {
  328. request += "&processRecursion=1";
  329. }
  330. request += "&model=" + cfgGet("cmLastModel");
  331. if (typeof routingServerGroup != "undefined")
  332. {
  333. request += "&routingServerGroup=" + encodeURIComponent(routingServerGroup);
  334. }
  335. setTimeout("doMetadataRequest('" + request + "');", 100);
  336. }
  337. else if (metadataObjects[0] == "prompting")
  338. {
  339. var reportFrame = getReportFrame();
  340. var frmWarpRequest = reportFrame.document.createElement("form");
  341. reportFrame.document.body.appendChild(frmWarpRequest);
  342. frmWarpRequest.setAttribute("name", "formWarpRequest");
  343. frmWarpRequest.setAttribute("id", "formWarpRequest");
  344. frmWarpRequest.setAttribute("method", "post");
  345. frmWarpRequest.setAttribute("action", jsdecode(metadataObjects[1]));
  346. frmWarpRequest.appendChild(createInput("b_action", "xts.run"));
  347. frmWarpRequest.appendChild(createInput("m", "prompting/promptDataSource.xts"));
  348. frmWarpRequest.appendChild(createInput("ccs_invoke", "parent"));
  349. frmWarpRequest.appendChild(createInput("clientContext", jsdecode(metadataObjects[2])));
  350. frmWarpRequest.appendChild(createInput("isEncoded", "1"));
  351. frmWarpRequest.appendChild(createInput("ui.conversation", jsdecode(metadataObjects[3])));
  352. frmWarpRequest.appendChild(createInput("tracking", jsdecode(metadataObjects[4])));
  353. frmWarpRequest.appendChild(createInput("releaseConversation", "1"));
  354. if (typeof routingServerGroup != "undefined")
  355. {
  356. frmWarpRequest.appendChild(createInput("routingServerGroup", routingServerGroup));
  357. }
  358. if (processMetadataRecursion) {
  359. frmWarpRequest.appendChild(createInput("processRecursion", "1"));
  360. }
  361. var value = "";
  362. var moLength = metadataObjects.length;
  363. for (var i = 5; i < moLength; i++)
  364. {
  365. if (i < moLength - 1)
  366. {
  367. value += jsdecode(metadataObjects[i]) + gsMETADATA_SEMICOLON;
  368. }
  369. else
  370. {
  371. value += jsdecode(metadataObjects[i]);
  372. }
  373. }
  374. frmWarpRequest.appendChild(createInput("htmlFragment", value));
  375. frmWarpRequest.submit();
  376. }
  377. else
  378. {
  379. if (metadataObjects[0] != gsMETADATA_FAULT)
  380. {
  381. metadataTreeTracking = metadataObjects.shift();
  382. }
  383. newMetadataObjects = new Array();
  384. var activeNodeName;
  385. var iMOlength = metadataObjects.length;
  386. if (iMOlength > 0)
  387. {
  388. if (metadataObjects[0] == gsMETADATA_FAULT)
  389. {
  390. if (cfgGet(gsMETADATA_META_TreeLoadedFirstTime) == gsMETADATA_loading)
  391. {
  392. cfgSet(gsMETADATA_META_TreeLoadedFirstTime, gsMETADATA_failed);
  393. }
  394. cfgSet("LAST_ACTION", "metadataTree");
  395. var bDisplayMetadataIfAvailable = metadataFault(jsdecode(metadataObjects));
  396. if (bDisplayMetadataIfAvailable)
  397. {
  398. metadataTree.childrenReadyForNode(metadataTree.getRootNode());
  399. }
  400. return false;
  401. }
  402. else if ((response.indexOf(gsMETADATA_HTML) > -1) && (response.indexOf(gsMETADATA_ERROR_COMPONENT) > -1) && (response.indexOf(gsMETADATA_ERROR_CODE) > -1))
  403. {
  404. cfgSet("LAST_ACTION", "metadataTree");
  405. metadataFault(response);
  406. return false;
  407. }
  408. activeNodeName = jsdecode(convertBack(metadataObjects[0]));
  409. }
  410. if (iMOlength > 1)
  411. {
  412. if (cfgGet(gsMETADATA_META_TreeLoadedFirstTime) == gsMETADATA_loading)
  413. {
  414. var metadataModelName = jsdecode(convertBack(metadataObjects[1]));
  415. var metadataModelScreentip = jsdecode(convertBack(metadataObjects[2]));
  416. if (metadataModelScreentip.indexOf(gsMETADATA_resubmitSingleHierarchy))
  417. {
  418. metadataModelScreentip = metadataModelScreentip.substring(0,metadataModelScreentip.indexOf(gsMETADATA___resubmitSingleHierarchy));
  419. }
  420. metadataTree.getRootNode().setName(metadataModelName);
  421. metadataTree.setRootNodeShowing(true);
  422. if (metadataModelScreentip != "")
  423. {
  424. metadataTree.getRootNode().setTooltip(metadataModelScreentip);
  425. }
  426. metadataTree.drawAll();
  427. }
  428. }
  429. if (iMOlength > 2)
  430. {
  431. if (metadataObjects[2].indexOf(gsMETADATA_resubmitSingleHierarchy) >= 0)
  432. {
  433. var thisNode = activeNodeFetches[activeNodeName][0];
  434. thisNode.hierarchyPath = jsdecode(convertBack(metadataObjects[5]));
  435. thisNode.hierarchyName = jsdecode(convertBack(metadataObjects[4]));
  436. var request = getMetadataRequestString(cfgGet(gsMETADATA_cmLastModel), encodeURIComponent(jsdecode(convertBack(metadataObjects[3]))), 2, activeNodeName);
  437. request = request.replace(greMETADATA_APOS, gsMETADATA_APOS_ESCAPE);
  438. setTimeout("doMetadataRequest('" + request + "');", 100);
  439. return true;
  440. }
  441. }
  442. for (i = 3; i < iMOlength; i++)
  443. {
  444. if (metadataObjects[i].length > 0)
  445. {
  446. var metaObj = metadataObjects[i].split(gsMETADATA_COMMA);
  447. var nodeType = jsdecode(metaObj[0]);
  448. var metaArray = [];
  449. for (var j = 1; j < metaObj.length; j++)
  450. {
  451. metaArray.push( jsdecode(metaObj[j]) );
  452. }
  453. if (nodeType.indexOf(gsMETADATA_firstChild) > -1)
  454. {
  455. nodeDepth += 1;
  456. }
  457. var metaNode = createNewMetaObject(metaArray, activeNodeName, nodeDepth);
  458. activeNodeFetches[activeNodeName][nodeDepth] = metaNode;
  459. if (nodeType.indexOf(gsMETADATA_lastChild) > -1)
  460. {
  461. var theNextChild = null;
  462. if (iMOlength > (i + 1))
  463. {
  464. theNextChild = metadataObjects[i + 1].split(gsMETADATA_COMMA);
  465. if (theNextChild[0].indexOf(gsMETADATA_firstChild) > -1)
  466. {
  467. lastNodeDepth += 1;
  468. continue;
  469. }
  470. }
  471. if (lastNodeDepth > 0)
  472. {
  473. if (theNextChild != null && theNextChild.length > 0)
  474. {
  475. var hild = gsMETADATA_hild;
  476. var currentDepthThisChild = nodeType.substr(nodeType.lastIndexOf(hild) + hild.length);
  477. var currentDepthNextChild = theNextChild[0].substr(theNextChild[0].lastIndexOf(hild) + hild.length);
  478. var depthDiff = (currentDepthThisChild - currentDepthNextChild);
  479. if (depthDiff > 0)
  480. {
  481. nodeDepth -= depthDiff;
  482. if (nodeDepth < 0)
  483. {
  484. nodeDepth = 0;
  485. }
  486. lastNodeDepth -= depthDiff;
  487. if (lastNodeDepth < 0)
  488. {
  489. lastNodeDepth = 0;
  490. }
  491. continue;
  492. }
  493. }
  494. nodeDepth -= lastNodeDepth + 1;
  495. lastNodeDepth = 0;
  496. }
  497. else
  498. {
  499. nodeDepth -= 1;
  500. }
  501. }
  502. }
  503. }
  504. var thisNode = activeNodeFetches[activeNodeName][0];
  505. if ((checkCalcFunctionAgainstDB(gsMETADATA_MEMBER_SEARCH_IN_HIERARCHY) || checkRestrictedCalcFunctionAgainstDB(gsMETADATA_MEMBER_SEARCH_IN_HIERARCHY)) && thisNode.m_isDimension == true && typeof thisNode.getChildren()[0].m_HierarchyPath != "undefined")
  506. {
  507. thisNode.hierarchyPath = thisNode.getChildren()[0].m_HierarchyPath;
  508. thisNode.hierarchyName = thisNode.getChildren()[0].getName();
  509. }
  510. thisNode.getTree().childrenReadyForNode(thisNode);
  511. delete activeNodeFetches[activeNodeName];
  512. cfgSet("META_TreeLoadedFirstTime", true);
  513. for (var idxMO in newMetadataObjects)
  514. {
  515. allMetadataObjects[idxMO] = newMetadataObjects[idxMO];
  516. }
  517. setTimeout(metadataTreeLoaded, 10);
  518. }
  519. return true;
  520. };
  521. function createInput(inputName, inputValue)
  522. {
  523. var reportFrame = getReportFrame();
  524. var input = reportFrame.document.createElement("input");
  525. input.setAttribute("name", inputName);
  526. input.setAttribute("type", "hidden");
  527. input.setAttribute("value", inputValue);
  528. return(input);
  529. };
  530. function convertBack(str)
  531. {
  532. if (typeof str != "string")
  533. {
  534. if (typeof str != "undefined")
  535. {
  536. str = "" + str;
  537. }
  538. else
  539. {
  540. str = "";
  541. }
  542. }
  543. str = str.replace(greMETADATA_SEMICOLON, gsMETADATA_SEMICOLON);
  544. str = str.replace(greMETADATA_GREATERTHAN, gsMETADATA_GREATERTHAN);
  545. str = str.replace(greMETADATA_LESSTHAN, gsMETADATA_LESSTHAN);
  546. str = str.replace(greMETADATA_APOS_ESCAPE, gsMETADATA_APOS);
  547. return str.replace(greMETADATA_COMMA, gsMETADATA_COMMA);
  548. };
  549. function createNewMetaObject(metaObj, activeNodeName, nodeDepth)
  550. {
  551. var newNode;
  552. var path = convertBack(metaObj[3]);
  553. var oNodeType = null;
  554. switch (metaObj[0])
  555. {
  556. case gsMETADATA_querySubject:
  557. newMetadataObjects[path] = new mdFolder(convertBack(metaObj[1]), path, convertBack(metaObj[4]), convertBack(metaObj[5]), convertBack(metaObj[7]));
  558. newNode = new CTreeNode(activeNodeFetches[activeNodeName][nodeDepth - 1], tntQuerySubject, false, convertBack(metaObj[1]), path, false);
  559. break;
  560. case gsMETADATA_hierarchy:
  561. if (checkCalcFunctionAgainstDB(gsMETADATA_MEMBER_SEARCH_IN_HIERARCHY) || checkRestrictedCalcFunctionAgainstDB(gsMETADATA_MEMBER_SEARCH_IN_HIERARCHY))
  562. {
  563. newMetadataObjects[path] = new mdQueryItem(convertBack(metaObj[1]), path, convertBack(metaObj[4]), 60, 7, 0, 0, 0, 0, gsMETADATA_EMPTY, gsMETADATA_EMPTY, gsMETADATA_EMPTY, gsMETADATA_EMPTY, gsMETADATA_EMPTY, convertBack(metaObj[7]), gsMETADATA_EMPTY, gsMETADATA_EMPTY);
  564. }
  565. else
  566. {
  567. newMetadataObjects[path] = new mdFolder(convertBack(metaObj[1]), path, convertBack(metaObj[4]), convertBack(metaObj[5]), convertBack(metaObj[7]));
  568. }
  569. newMetadataObjects[path].isHierarchy = true;
  570. newNode = new CTreeNode(activeNodeFetches[activeNodeName][nodeDepth - 1], tntHeirarchy, false, convertBack(metaObj[1]), path, false);
  571. newNode.m_HierarchyPath = convertBack(metaObj[4]);
  572. if (typeof metaObj[6] != gsMETADATA_undefined && convertBack(metaObj[6]) == gsMETADATA_parentChild)
  573. {
  574. newNode.m_isParentChild = true;
  575. }
  576. break;
  577. case gsMETADATA_dimension:
  578. newMetadataObjects[path] = new mdFolder(convertBack(metaObj[1]), path, convertBack(metaObj[4]), convertBack(metaObj[5]), convertBack(metaObj[7]));
  579. newNode = new CTreeNode(activeNodeFetches[activeNodeName][nodeDepth - 1], tntDimension, false, convertBack(metaObj[1]), path, false);
  580. newNode.m_isDimension = true;
  581. break;
  582. case gsMETADATA_filter:
  583. newMetadataObjects[path] = new mdFilter(convertBack(metaObj[1]), path, convertBack(metaObj[4]), convertBack(metaObj[5]), convertBack(metaObj[7]));
  584. newNode = new CTreeNode(activeNodeFetches[activeNodeName][nodeDepth - 1], tntFilter, false, convertBack(metaObj[1]), path, false);
  585. break;
  586. case gsMETADATA_measureDimension:
  587. newMetadataObjects[path] = new mdFolder(convertBack(metaObj[1]), path, convertBack(metaObj[4]), convertBack(metaObj[5]), convertBack(metaObj[7]));
  588. newNode = new CTreeNode(activeNodeFetches[activeNodeName][nodeDepth - 1], tntMeasureDimension, false, convertBack(metaObj[1]), path, false);
  589. break;
  590. case gsMETADATA_hierarchyFolder:
  591. case gsMETADATA_measureFolder:
  592. case gsMETADATA_queryItemFolder:
  593. case gsMETADATA_folder:
  594. newMetadataObjects[path] = new mdFolder(convertBack(metaObj[1]), path, convertBack(metaObj[4]), convertBack(metaObj[5]), convertBack(metaObj[7]));
  595. newNode = new CTreeNode(activeNodeFetches[activeNodeName][nodeDepth - 1], tntFolder_2, false, convertBack(metaObj[1]), path, false);
  596. break;
  597. case gsMETADATA_namespace:
  598. newMetadataObjects[path] = new mdFolder(convertBack(metaObj[1]), path, convertBack(metaObj[4]), convertBack(metaObj[5]), convertBack(metaObj[7]));
  599. newNode = new CTreeNode(activeNodeFetches[activeNodeName][nodeDepth - 1], tntNamespace, false, convertBack(metaObj[1]), path, false);
  600. break;
  601. case gsMETADATA_calculation:
  602. newMetadataObjects[path] = new mdCalculation(convertBack(metaObj[1]), path, convertBack(metaObj[4]), convertBack(metaObj[5]), convertBack(metaObj[6]), convertBack(metaObj[7]), convertBack(metaObj[8]), convertBack(metaObj[9]), convertBack(metaObj[10]), convertBack(metaObj[11]), convertBack(metaObj[12]), convertBack(metaObj[13]), convertBack(metaObj[15]), convertBack(metaObj[18]), convertBack(metaObj[20]));
  603. if (metaObj[6] == 3)
  604. {
  605. oNodeType = tntCalculationFact;
  606. }
  607. else if(metaObj[6] == 2)
  608. {
  609. oNodeType = tntCalculationDimension;
  610. }
  611. else
  612. {
  613. oNodeType = tntCalculationAttribute;
  614. }
  615. newNode = new CTreeNode(activeNodeFetches[activeNodeName][nodeDepth - 1], oNodeType, false, convertBack(metaObj[1]), path, false);
  616. break;
  617. case gsMETADATA_calculationConstant:
  618. newMetadataObjects[path] = new mdCalculation(convertBack(metaObj[1]), path, convertBack(metaObj[4]), convertBack(metaObj[5]), convertBack(metaObj[6]), convertBack(metaObj[7]), convertBack(metaObj[8]), convertBack(metaObj[9]), convertBack(metaObj[10]), convertBack(metaObj[11]), convertBack(metaObj[12]), convertBack(metaObj[13]), convertBack(metaObj[15]), convertBack(metaObj[18]), convertBack(metaObj[20]));
  619. newNode = new CTreeNode(activeNodeFetches[activeNodeName][nodeDepth - 1], tntCalculationConstant, false, convertBack(metaObj[1]), path, false);
  620. cfgSetAt(gsMETADATA_calcConstants, cfgSize(gsMETADATA_calcConstants), new Array(convertBack(metaObj[1]), path, convertBack(metaObj[5])));
  621. break;
  622. case gsMETADATA_measure:
  623. newMetadataObjects[path] = new mdQueryItem(convertBack(metaObj[1]), path, convertBack(metaObj[4]), convertBack(metaObj[5]), convertBack(metaObj[6]), convertBack(metaObj[7]), convertBack(metaObj[8]), convertBack(metaObj[9]), convertBack(metaObj[10]), convertBack(metaObj[11]), convertBack(metaObj[12]), convertBack(metaObj[13]), convertBack(metaObj[15]), convertBack(metaObj[18]), convertBack(metaObj[20]), gsMETADATA_EMPTY, gsMETADATA_EMPTY);
  624. newNode = new CTreeNode(activeNodeFetches[activeNodeName][nodeDepth - 1], tntMeasure, false, convertBack(metaObj[1]), path, false);
  625. break;
  626. case gsMETADATA_rollupMeasure:
  627. newMetadataObjects[path] = new mdQueryItem(convertBack(metaObj[1]), path, convertBack(metaObj[4]), convertBack(metaObj[5]), convertBack(metaObj[6]), convertBack(metaObj[7]), convertBack(metaObj[8]), convertBack(metaObj[9]), convertBack(metaObj[10]), convertBack(metaObj[11]), convertBack(metaObj[12]), convertBack(metaObj[13]), convertBack(metaObj[15]), convertBack(metaObj[18]), convertBack(metaObj[20]), gsMETADATA_EMPTY, gsMETADATA_EMPTY);
  628. newNode = new CTreeNode(activeNodeFetches[activeNodeName][nodeDepth - 1], tntRollupMeasure, false, convertBack(metaObj[1]), path, false);
  629. break;
  630. case gsMETADATA_namedSet:
  631. newMetadataObjects[path] = new mdQueryItem(convertBack(metaObj[1]), path, convertBack(metaObj[4]), 60, 7, 0, 0, 0, 0, gsMETADATA_EMPTY, gsMETADATA_EMPTY, gsMETADATA_EMPTY, gsMETADATA_EMPTY, gsMETADATA_EMPTY, convertBack(metaObj[20]), gsMETADATA_EMPTY, gsMETADATA_EMPTY);
  632. newNode = new CTreeNode(activeNodeFetches[activeNodeName][nodeDepth - 1], tntNamedSet, false, convertBack(metaObj[1]), path, false);
  633. break;
  634. case gsMETADATA_level:
  635. newMetadataObjects[path] = new mdQueryItem(convertBack(metaObj[1]), path, convertBack(metaObj[4]), 60, 7, 0, 0, convertBack(metaObj[9]), 0, gsMETADATA_EMPTY, convertBack(metaObj[12]), convertBack(metaObj[13]), gsMETADATA_EMPTY, gsMETADATA_EMPTY, convertBack(metaObj[20]), convertBack(metaObj[16]), convertBack(metaObj[17]));
  636. newMetadataObjects[path].levelOrdinal = convertBack(metaObj[14]);
  637. newMetadataObjects[path].hun = convertBack(metaObj[metaObj.length-2]);
  638. newNode = new CTreeNode(activeNodeFetches[activeNodeName][nodeDepth - 1], tntLevel, false, convertBack(metaObj[1]), path, false);
  639. break;
  640. case gsMETADATA_member:
  641. if (goApplicationManager.getFeatureRegistry().isRegistered("MetaExtensions") == true)
  642. {
  643. newMetadataObjects[path] = new mdQueryItem(convertBack(metaObj[1]), path, convertBack(metaObj[4]), 60, 7, 0, 0, 0, 0, gsMETADATA_EMPTY, gsMETADATA_EMPTY, gsMETADATA_EMPTY, gsMETADATA_EMPTY, gsMETADATA_EMPTY, convertBack(metaObj[20]), gsMETADATA_EMPTY, gsMETADATA_EMPTY);
  644. newMetadataObjects[path].levelOrdinal = convertBack(metaObj[14]);
  645. newMetadataObjects[path].hun = convertBack(metaObj[metaObj.length-2]);
  646. newNode = new CTreeNode(activeNodeFetches[activeNodeName][nodeDepth - 1], tntMember, false, convertBack(metaObj[1]), path, false);
  647. }
  648. break;
  649. case gsMETADATA_queryItem:
  650. newMetadataObjects[path] = new mdQueryItem(convertBack(metaObj[1]), path, convertBack(metaObj[4]), convertBack(metaObj[5]), convertBack(metaObj[6]), convertBack(metaObj[7]), convertBack(metaObj[8]), convertBack(metaObj[9]), convertBack(metaObj[10]), convertBack(metaObj[11]), convertBack(metaObj[12]), convertBack(metaObj[13]), convertBack(metaObj[15]), convertBack(metaObj[18]), convertBack(metaObj[20]), convertBack(metaObj[16]), convertBack(metaObj[17]));
  651. if (metaObj[6] == 3)
  652. {
  653. oNodeType = tntQueryItemFact;
  654. }
  655. else if (metaObj[6] == 2)
  656. {
  657. oNodeType = tntQueryItemIdentifier;
  658. }
  659. else
  660. {
  661. oNodeType = tntQueryItem;
  662. }
  663. newNode = new CTreeNode(activeNodeFetches[activeNodeName][nodeDepth - 1], oNodeType, false, convertBack(metaObj[1]), path, false);
  664. if (metaObj[metaObj.length-2] !== "")
  665. {
  666. newMetadataObjects[path].hun = convertBack(metaObj[metaObj.length-2]);
  667. }
  668. break;
  669. default:
  670. return false;
  671. }
  672. newNode.m_sRef = convertBack(metaObj[4]);
  673. newNode.nodeMetaType = metaObj[0];
  674. newNode.setTooltip(convertBack(metaObj[2]));
  675. return newNode;
  676. };
  677. function metadataFault(metaFaultObjects)
  678. {
  679. var bDisplayMetadataIfAvailable = true;
  680. if ((typeof metaFaultObjects == "string") && (metaFaultObjects.indexOf("<HTML>") > -1) && (metaFaultObjects.indexOf("<ERROR_COMPONENT>") > -1) && (metaFaultObjects.indexOf("<ERROR_CODE>") > -1))
  681. {
  682. document.getElementById("metadataTreeContainer").innerHTML = metaFaultObjects;
  683. cfgRemove("LAST_ACTION");
  684. return;
  685. }
  686. metadataErrors = new Array();
  687. var maDenied = false;
  688. var maTimeout = false;
  689. var aCAMinfo = [];
  690. for (var i = 0; i < metaFaultObjects.length; i++)
  691. {
  692. if (metaFaultObjects[i].indexOf("timeout") > -1) {
  693. maTimeout = true;
  694. }
  695. if (metaFaultObjects[i].indexOf("MA-DEF-0024") > -1) {
  696. maDenied = true;
  697. }
  698. var aCAMmatch = metaFaultObjects[i].match( /(\w*CAM\w*)=(.*)/ );
  699. if ( aCAMmatch )
  700. {
  701. aCAMinfo.push( {"name": aCAMmatch[1], "value": aCAMmatch[2]} );
  702. cfgSet( aCAMmatch[1], aCAMmatch[2] );
  703. }
  704. var metaFaultObjectsSplit = metaFaultObjects[i].split("\\n");
  705. for (var j = 0; j < metaFaultObjectsSplit.length; j++)
  706. {
  707. metadataErrors[metadataErrors.length] = convertBack(metaFaultObjectsSplit[j]);
  708. }
  709. }
  710. if (maTimeout == true) {
  711. bDisplayMetadataIfAvailable = false;
  712. pptFaultHandler( aCAMinfo );
  713. }
  714. else if (maDenied == true) {
  715. MADenied();
  716. cfgRemove("LAST_ACTION");
  717. }
  718. else {
  719. MAErrorPage();
  720. cfgRemove("LAST_ACTION");
  721. }
  722. return bDisplayMetadataIfAvailable;
  723. };
  724. function mdFilter(name, path, ref, parent, description)
  725. {
  726. this.name = name;
  727. this.ref = ref;
  728. this.path = path;
  729. this.parent = parent;
  730. this.description = description;
  731. };
  732. function mdFolder(name, path, ref, parent, description)
  733. {
  734. this.name = name;
  735. this.ref = ref;
  736. this.path = path;
  737. this.parent = parent;
  738. this.description = description;
  739. };
  740. function mdCalculation(name, path, ref, datatype, usage, regularAggregate, semiAggregate, promptType, displayType, sortOnRef, promptCascadeOnRef, promptFilterItemRef, currency, parent, description)
  741. {
  742. this.name = name;
  743. this.ref = ref;
  744. this.path = path;
  745. this.datatype = datatype;
  746. this.usage = usage;
  747. this.regularAggregate = regularAggregate;
  748. this.semiAggregate = semiAggregate;
  749. this.promptType = promptType;
  750. this.displayType = displayType;
  751. this.sortOnRef = sortOnRef;
  752. this.promptCascadeOnRef = promptCascadeOnRef;
  753. this.promptFilterItemRef = promptFilterItemRef;
  754. this.currency = currency;
  755. this.parent = parent;
  756. this.description = description;
  757. };
  758. function mdQueryItem(name, path, ref, datatype, usage, regularAggregate, semiAggregate, promptType, displayType, sortOnRef, promptCascadeOnRef, promptFilterItemRef, currency, parent, description, promptUseItemRef, promptDisplayItemRef)
  759. {
  760. this.name = name;
  761. this.ref = ref;
  762. this.path = path;
  763. this.datatype = datatype;
  764. this.usage = usage;
  765. this.regularAggregate = regularAggregate;
  766. this.semiAggregate = semiAggregate;
  767. this.promptType = promptType;
  768. this.displayType = displayType;
  769. this.sortOnRef = sortOnRef;
  770. this.promptCascadeOnRef = promptCascadeOnRef;
  771. this.promptFilterItemRef = promptFilterItemRef;
  772. this.promptUseItemRef = promptUseItemRef;
  773. this.promptDisplayItemRef = promptDisplayItemRef;
  774. this.currency = currency;
  775. this.parent = parent;
  776. this.description = description;
  777. };
  778. function loadFunc(loadingNode)
  779. {
  780. if (cfgGet("META_TreeLoadedFirstTime") == null)
  781. {
  782. if (checkCalcFunctionAgainstDB(gsMETADATA_MEMBER_SEARCH_IN_HIERARCHY) === false && checkRestrictedCalcFunctionAgainstDB(gsMETADATA_MEMBER_SEARCH_IN_HIERARCHY) === false)
  783. {
  784. tntDimension.m_bIsDraggable = false;
  785. tntDimension.setRecursiveSelect(true);
  786. tntHeirarchy.m_bIsDraggable = false;
  787. tntHeirarchy.setRecursiveSelect(true);
  788. }
  789. cfgSet("META_TreeLoadedFirstTime", "loading");
  790. activeNodeFetches[loadingNode.getValue()] = new Array(loadingNode);
  791. var req;
  792. req = getMetadataRequestString(cfgGet("cmLastModel"), "", 2, loadingNode.getValue());
  793. if (goApplicationManager.getFeatureRegistry().isRegistered("MetaExtensions") == true && (loadingNode.getName()=='Members' || loadingNode.nodeMetaType=='member'))
  794. {
  795. req = req + "&memberFolder=true";
  796. }
  797. doMetadataRequest(req);
  798. }
  799. else if (cfgGet("META_TreeLoadedFirstTime") != "loading" && cfgGet("META_TreeLoadedFirstTime") != "failed")
  800. {
  801. var iDepth = 2;
  802. if (loadingNode.nodeMetaType == gsMETADATA_measureDimension || loadingNode.nodeMetaType == gsMETADATA_measureFolder || loadingNode.nodeMetaType == gsMETADATA_rollupMeasure)
  803. {
  804. iDepth = 3;
  805. }
  806. activeNodeFetches[loadingNode.getValue()] = new Array(loadingNode);
  807. var req = getMetadataRequestString(cfgGet("cmLastModel"), encodeURIComponent(loadingNode.getValue()), iDepth, loadingNode.getValue());
  808. if (goApplicationManager.getFeatureRegistry().isRegistered("MetaExtensions") == true && (loadingNode.getName()=='Members' || loadingNode.nodeMetaType=='member'))
  809. {
  810. req = req + "&memberFolder=true";
  811. }
  812. doMetadataRequest(req);
  813. }
  814. };
  815. function onDragStartF(evt)
  816. {
  817. evt = (evt) ? evt : ((event) ? event : null);
  818. clearSelection();
  819. cancelBub(evt);
  820. var dragRef = evt.srcElement ? evt.srcElement.getAttribute(gsCTREE_dragRef) : evt.originalTarget ? evt.originalTarget.getAttribute(gsCTREE_dragRef) : null;
  821. if (typeof dragRef == "string" && dragRef.length != 0)
  822. {
  823. var uiNode = getUINode(evt);
  824. if (uiNode)
  825. {
  826. var tree = uiNode.getAttribute('dragTree').toString();
  827. var node = getTreeNode(tree, dragRef);
  828. if (node.getNodeTypeObject().m_bIsDraggable == true)
  829. {
  830. if (!node.isSelected())
  831. {
  832. if ((evt.ctrlKey == false) && (evt.shiftKey == false))
  833. {
  834. node.getTree().getRootNode().setSelected(false);
  835. }
  836. node.setSelected(true);
  837. node.updateParent();
  838. var label = document.getElementById(tree + node.getTreeRef() + 'label');
  839. label.className = getClassName(node, node.getTree());
  840. if ((evt.ctrlKey == false) && (evt.shiftKey == false))
  841. {
  842. node.getTree().redraw();
  843. }
  844. }
  845. var treeObj = node.getTree();
  846. var selectedNodes = treeObj.getSelectedFolderNodes();
  847. selectedNodes = selectedNodes.concat(treeObj.getSelectedLeafNodes());
  848. var arr = new Array();
  849. var selectionType = null;
  850. for (var i = 0; i < selectedNodes.length; i++)
  851. {
  852. var nodeObj = selectedNodes[i].getNodeTypeObject();
  853. var usage = allMetadataObjects[selectedNodes[i].getValue()].usage;
  854. arr[selectedNodes[i].getName()] = getTreeNodeObjectIcon(nodeObj);
  855. if (usage == 3 && (selectionType == 'measure' || selectionType == null)) {
  856. selectionType = 'measure';
  857. }
  858. else if (usage != 3 && (selectionType == 'nonMeasure' || selectionType == null)) {
  859. selectionType = 'nonMeasure';
  860. }
  861. else {
  862. selectionType = 'mixed';
  863. }
  864. }
  865. if (window.ie) {
  866. showDragToolTip(arr, evt);
  867. }
  868. getConfigFrame().cfgSet('DragSelectionType',selectionType);
  869. ddController = new DragDropController();
  870. ddController.allowDropEffect(evt);
  871. ddController.dragStart();
  872. }
  873. else
  874. {
  875. evt.dataTransfer.clearData("Text");
  876. }
  877. }
  878. }
  879. };
  880. function onDragF(evt)
  881. {
  882. var dtt = document.getElementById('dragToolTip');
  883. if (dtt && dtt.style && dtt.style.display == "inline")
  884. {
  885. dtt.style.left = (evt.clientX + 20) + "px";
  886. dtt.style.top = evt.clientY + "px";
  887. }
  888. };
  889. function onDragEndF(evt)
  890. {
  891. var dtt = document.getElementById('dragToolTip');
  892. if (dtt && dtt.style)
  893. {
  894. dtt.style.display = "none";
  895. }
  896. getConfigFrame().cfgRemove('DragSelectionType');
  897. if (ddController != null) {
  898. ddController.dragEnd();
  899. }
  900. };
  901. function showDragToolTip(arr, event)
  902. {
  903. var htmlOUT = "<table cellspacing=\"0\" cellpadding=\"0\" class=\"clsTooltipTable\">";
  904. var childrenExist = false;
  905. for (var i in arr)
  906. {
  907. childrenExist = true;
  908. htmlOUT += "<tr nowrap=\"nowrap\"><td></td><td><img src=\"" + arr[i] + "\"/></td><td nowrap=\"nowrap\">&nbsp;" + i + "</td></tr>\n";
  909. }
  910. htmlOUT += "</table>";
  911. var dtt = document.getElementById("dragToolTip");
  912. if (dtt && dtt.style && childrenExist)
  913. {
  914. dtt.innerHTML = htmlOUT;
  915. dtt.style.zIndex = 100;
  916. dtt.style.position = "absolute";
  917. dtt.style.left = (event.clientX + 20) + "px";
  918. dtt.style.top = event.clientY + "px";
  919. dtt.style.display = "inline";
  920. }
  921. };
  922. function treeContextMenuFunc(evt)
  923. {
  924. clearSelection();
  925. var uiNode = getUINode(evt);
  926. var uiNodeTreeRef = uiNode.getAttribute(gsCTREE_treeRef).toString();
  927. var node = getTreeNode("metadataTree", uiNodeTreeRef);
  928. if (! node.isSelected())
  929. {
  930. selectNode(evt);
  931. }
  932. gQsMetadataTreeContextMenu.setHTMLContainer(goApplicationManager.getApplicationFrame().document.body);
  933. gQsMetadataTreeContextMenu.draw();
  934. gQsMetadataTreeContextMenu.setXCoord(evt.clientX);
  935. gQsMetadataTreeContextMenu.setYCoord(evt.clientY);
  936. gQsMetadataTreeContextMenu.show();
  937. if (typeof evt.preventDefault == "function")
  938. {
  939. evt.preventDefault();
  940. }
  941. return true;
  942. };
  943. function MADenied()
  944. {
  945. dlgReset();
  946. dlgSetParm("m", qs_dir + "/maDenied.xts");
  947. dlgSubmit();
  948. };
  949. function MAErrorPage()
  950. {
  951. dlgReset();
  952. dlgSetParm("m", qs_dir + "/maError.xts");
  953. if (cfgGet("META_TreeLoadedFirstTime") == "failed") {
  954. dlgSetParm("xxForceExit", "true");
  955. }
  956. dlgSubmit();
  957. };
  958. function addSelectedDblClick(evt)
  959. {
  960. evt = (evt) ? evt : ((event) ? event : null);
  961. clearSelection();
  962. cancelBub(evt);
  963. var uiNode = getUINode(evt);
  964. if (uiNode && evt != null)
  965. {
  966. var tree = uiNode.getAttribute('dragTree').toString();
  967. var uiNodeTreeRef = uiNode.getAttribute('treeRef').toString();
  968. var node = getTreeNode(tree, uiNodeTreeRef);
  969. var allSelections = metadataTree.getSelectionOrder();
  970. if (((evt.ctrlKey == true || evt.shiftKey == true) && allSelections.length > 1) || node.canHaveChildren() == false)
  971. {
  972. addSelected();
  973. }
  974. else
  975. {
  976. var theUINodeId = tree + uiNode.getAttribute('dragRef').toString() + gsCTREE_toggle + node.getTreeHierarchy();
  977. var theUINode = document.getElementById(theUINodeId);
  978. toggle(evt, theUINode);
  979. }
  980. }
  981. };
  982. function addSelected(qid, groupType)
  983. {
  984. var reportState = goApplicationManager.getReportManager().get("reportState");
  985. if (reportState == "" || reportState == "invalidPackage" || reportState == "noPackage" || reportState == "upgrading" || reportState == "submitted" || reportState == "prompting") {
  986. return;
  987. }
  988. var unfetchedChildren = metadataTree.getSelectedUnfetchedChildren();
  989. if (typeof qid == "undefined" || qid == null || typeof qid != "string")
  990. {
  991. qid = "";
  992. }
  993. if (unfetchedChildren) {
  994. waitForFetchingChildren(qid, groupType);
  995. }
  996. else
  997. {
  998. var hasDimensionSelections = false;
  999. var selectedNodes = metadataTree.getSelectionOrder();
  1000. for (var i = 0; i < selectedNodes.length; i++)
  1001. {
  1002. if (selectedNodes[i].getNodeTypeObject().m_nodeTypeName == "dimension")
  1003. {
  1004. hasDimensionSelections = true;
  1005. break;
  1006. }
  1007. }
  1008. if (hasDimensionSelections)
  1009. {
  1010. var anyChildrenToFetch = false;
  1011. for (var i = 0; i < selectedNodes.length; i++)
  1012. {
  1013. if (selectedNodes[i].getNodeTypeObject().m_nodeTypeName == "dimension" && !selectedNodes[i].hasChildren())
  1014. {
  1015. anyChildrenToFetch = true;
  1016. selectedNodes[i].setShowUI(false);
  1017. selectedNodes[i].fetchChildren();
  1018. }
  1019. }
  1020. if (anyChildrenToFetch == true) {
  1021. waitForFetchingChildren(qid, groupType);
  1022. }
  1023. else {
  1024. processFetchedChildren(qid, groupType);
  1025. }
  1026. }
  1027. else
  1028. {
  1029. processFetchedChildren(qid, groupType);
  1030. }
  1031. }
  1032. };
  1033. function waitForFetchingChildren(qid, groupType)
  1034. {
  1035. if (metadataTree.getLoading())
  1036. {
  1037. if (typeof qid != "string")
  1038. {
  1039. qid = "";
  1040. }
  1041. setTimeout("waitForFetchingChildren('" + qid + "', '" + groupType + "')", 100);
  1042. }
  1043. else
  1044. {
  1045. addSelected(qid, groupType);
  1046. }
  1047. };
  1048. function getNodesOrdered(leafNode,OrderedNodes)
  1049. {
  1050. var nodeObject;
  1051. if (typeof leafNode.hierarchyPath != "undefined" && typeof leafNode.hierarchyName != "undefined")
  1052. {
  1053. nodeObject = new mdQueryItem(leafNode.hierarchyName, gsMETADATA_EMPTY, leafNode.hierarchyPath, 60, 7, 0, 0, 0, 0, gsMETADATA_EMPTY, gsMETADATA_EMPTY, gsMETADATA_EMPTY, gsMETADATA_EMPTY, gsMETADATA_EMPTY, gsMETADATA_EMPTY, gsMETADATA_EMPTY);
  1054. nodeObject.isHierarchy = true;
  1055. }
  1056. else {
  1057. nodeObject = allMetadataObjects[leafNode.getValue()];
  1058. }
  1059. var nodeObjectType = getNodeObjectType(nodeObject);
  1060. var metaType = leafNode.nodeMetaType ? leafNode.nodeMetaType : "none";
  1061. var nodeMetaType = null;
  1062. var i_countChildren = leafNode.m_oChildren.length;
  1063. if (nodeObjectType == 'FOLDER' )
  1064. {
  1065. for(var j=0;j<i_countChildren;j++)
  1066. {
  1067. var chlid = leafNode.getChild(j);
  1068. getNodesOrdered(chlid,OrderedNodes);
  1069. }
  1070. }
  1071. else
  1072. {
  1073. var flag = false;
  1074. for (var item=0;item<OrderedNodes.length;item++)
  1075. {
  1076. if(leafNode.getValue() == OrderedNodes[item].getValue())
  1077. {
  1078. flag = true;
  1079. break;
  1080. }
  1081. }
  1082. if(flag==false)
  1083. OrderedNodes.push(leafNode);
  1084. }
  1085. };
  1086. function processFetchedChildren(qid, groupType)
  1087. {
  1088. if (typeof qid == "undefined" || qid == null || qid == "null" || typeof qid != "string")
  1089. {
  1090. qid = "";
  1091. }
  1092. var allSelectedLeafNodes = metadataTree.getSelectionOrder();
  1093. var OrderedNodes = new Array();
  1094. for (var i = 0; i < allSelectedLeafNodes.length; i++)
  1095. {
  1096. getNodesOrdered(allSelectedLeafNodes[i],OrderedNodes);
  1097. }
  1098. var sFilterCmd = null;
  1099. for (var i = 0; i < OrderedNodes.length; i++)
  1100. {
  1101. var leafNode = OrderedNodes[i];
  1102. var nodeObject;
  1103. if (typeof leafNode.hierarchyPath != "undefined" && typeof leafNode.hierarchyName != "undefined")
  1104. {
  1105. nodeObject = new mdQueryItem(leafNode.hierarchyName, gsMETADATA_EMPTY, leafNode.hierarchyPath, 60, 7, 0, 0, 0, 0, gsMETADATA_EMPTY, gsMETADATA_EMPTY, gsMETADATA_EMPTY, gsMETADATA_EMPTY, gsMETADATA_EMPTY, gsMETADATA_EMPTY, gsMETADATA_EMPTY);
  1106. nodeObject.isHierarchy = true;
  1107. }
  1108. else {
  1109. nodeObject = allMetadataObjects[leafNode.getValue()];
  1110. }
  1111. var bIsHierarchy = (typeof nodeObject.isHierarchy != "undefined" && nodeObject.isHierarchy == true) ? true : false;
  1112. if (bIsHierarchy && checkCalcFunctionAgainstDB(gsMETADATA_MEMBER_SEARCH_IN_HIERARCHY) === false && checkRestrictedCalcFunctionAgainstDB(gsMETADATA_MEMBER_SEARCH_IN_HIERARCHY) === false) {
  1113. continue;
  1114. }
  1115. var hun = (typeof nodeObject.hun != "undefined") ? nodeObject.hun : "none";
  1116. var levelOrdinal = (typeof nodeObject.levelOrdinal != "undefined") ? nodeObject.levelOrdinal : "none";
  1117. var nodeObjectType = getNodeObjectType(nodeObject);
  1118. var nodeType = "XX";
  1119. if (nodeObjectType == 'FILTER')
  1120. {
  1121. if (needComplexFilterDialogForModelFilter(nodeObject.name))
  1122. {
  1123. var oCC = getCombinedFilter();
  1124. if (!oCC)
  1125. {
  1126. var cf = getConfigFrame();
  1127. oCC = cf.convertToCombinedFilter();
  1128. }
  1129. addModelFilterToCombinedFilter(oCC, nodeObject);
  1130. oFilterViewObj = goApplicationManager.getDialogFrame().document.getElementById('filterList');
  1131. if (typeof oFilterViewObj === "object" && oFilterViewObj !== null)
  1132. {
  1133. oCC.renderFilterView(oFilterViewObj);
  1134. }
  1135. sFilterCmd = oCC.getCommand();
  1136. continue;
  1137. }
  1138. else
  1139. {
  1140. nodeType = "OD";
  1141. }
  1142. }
  1143. else if (nodeObjectType == 'CALCULATION') {
  1144. nodeType = "MX";
  1145. }
  1146. if (nodeObjectType != 'FOLDER')
  1147. {
  1148. var metaType = leafNode.nodeMetaType ? leafNode.nodeMetaType : "none";
  1149. var nodeMetaType = null;
  1150. if (metaType == "queryItem")
  1151. {
  1152. var parentNode = leafNode.getParent();
  1153. while (parentNode.nodeMetaType == "queryFolder")
  1154. {
  1155. parentNode = parentNode.getParent();
  1156. }
  1157. nodeMetaType = parentNode.nodeMetaType;
  1158. if (nodeMetaType == "level" || nodeMetaType == "dimension" || nodeMetaType == "hierarchy")
  1159. {
  1160. metaType = "attribute";
  1161. }
  1162. }
  1163. cc(nodeType, qid, nodeObject.ref, nodeObject.name, nodeObject.datatype, nodeObject.usage, nodeObject.regularAggregate, nodeObject.semiAggregate, nodeObject.promptType, nodeObject.displayType, nodeObject.sortOnRef, nodeObject.promptCascadeOnRef, nodeObject.promptFilterItemRef, groupType ? groupType : "none", bIsHierarchy, levelOrdinal, hun, metaType, nodeObject.currency, nodeObject.promptUseItemRef, nodeObject.promptDisplayItemRef);
  1164. }
  1165. }
  1166. if (sFilterCmd)
  1167. {
  1168. var mc = cfgGet("MultiColumnAddCommand");
  1169. dlgGlobalRemoveParm("xxFilterComplexMode");
  1170. if (mc)
  1171. {
  1172. mc += gsMETADATA_SEMICOLON + sFilterCmd;
  1173. cfgSet("MultiColumnAddCommand", mc);
  1174. }
  1175. else {
  1176. goApplicationManager.getFeatureManager().launchFeature('FilterComplex');
  1177. }
  1178. }
  1179. endac();
  1180. metadataTree.deSelectAll();
  1181. };
  1182. function getNodeObjectType(leafNode)
  1183. {
  1184. if (leafNode instanceof mdFilter) {
  1185. return "FILTER";
  1186. }
  1187. else if (leafNode instanceof mdCalculation) {
  1188. return "CALCULATION";
  1189. }
  1190. else if (leafNode instanceof mdQueryItem) {
  1191. return "QUERYITEM";
  1192. }
  1193. else if (leafNode instanceof mdFolder) {
  1194. return "FOLDER";
  1195. }
  1196. };
  1197. function getTreeNodeObjectIcon(leafNode)
  1198. {
  1199. return leafNode.m_sIconSrc;
  1200. };
  1201. tntRoot.m_sIconSrc = sWebRoot + "/" + common_images_dir + "/tree/package.gif";
  1202. tntRoot.m_sIconOpenSrc = sWebRoot + "/" + common_images_dir + "/tree/package.gif";
  1203. var tntQueryItem = new CTreeNodeType(TREE_ITEM, false, sWebRoot + "/" + common_images_dir + "/tree/metadata_attribute.gif", sWebRoot + "/" + common_images_dir + "/tree/metadata_attribute.gif");
  1204. var tntQueryItemFact = new CTreeNodeType(TREE_ITEM, false, sWebRoot + "/" + common_images_dir + "/tree/query_item_fact.gif", sWebRoot + "/" + common_images_dir + "/tree/query_item_fact.gif");
  1205. var tntQueryItemIdentifier = new CTreeNodeType(TREE_ITEM, false,sWebRoot + "/" + common_images_dir + "/tree/query_item_dimension.gif", sWebRoot + "/" + common_images_dir + "/tree/query_item_dimension.gif");
  1206. var tntFilter = new CTreeNodeType(TREE_ITEM, false, sWebRoot + "/" + common_images_dir + "/tree/filter.gif", sWebRoot + "/" + common_images_dir + "/tree/filter.gif");
  1207. var tntCalculationFact = new CTreeNodeType(TREE_ITEM, false, sWebRoot + "/" + common_images_dir + "/tree/calculation_fact.gif", sWebRoot + "/" + common_images_dir + "/tree/calculation_fact.gif");
  1208. var tntCalculationDimension = new CTreeNodeType(TREE_ITEM, false, sWebRoot + "/" + common_images_dir + "/tree/calculation_dimension.gif", sWebRoot + "/" + common_images_dir + "/tree/calculation_dimension.gif");
  1209. var tntCalculationAttribute = new CTreeNodeType(TREE_ITEM, false, sWebRoot + "/" + common_images_dir + "/tree/calculation_attribute.gif", sWebRoot + "/" + common_images_dir + "/tree/calculation_attribute.gif");
  1210. var tntCalculationConstant = new CTreeNodeType(TREE_ITEM, false, sWebRoot + "/" + common_images_dir + "/tree/calculation_constant.gif", sWebRoot + "/" + common_images_dir + "/tree/calculation_constant.gif");
  1211. var tntQuerySubject = new CTreeNodeType(TREE_FOLDER, true, sWebRoot + "/" + common_images_dir + "/tree/query_subject.gif", sWebRoot + "/" + common_images_dir + "/tree/query_subject.gif");
  1212. var tntDimension = new CTreeNodeType(TREE_FOLDER, true, sWebRoot + "/" + common_images_dir + "/tree/dimension.gif", sWebRoot + "/" + common_images_dir + "/tree/dimension.gif");
  1213. var tntHeirarchy = new CTreeNodeType(TREE_ITEM, true, sWebRoot + "/" + common_images_dir + "/tree/hierarchy.gif", sWebRoot + "/" + common_images_dir + "/tree/hierarchy.gif");
  1214. var tntLevel = new CTreeNodeType(TREE_ITEM, true, sWebRoot + "/" + common_images_dir + "/tree/level.gif", sWebRoot + "/" + common_images_dir + "/tree/level.gif");
  1215. var tntMember = new CTreeNodeType(TREE_ITEM, true, sWebRoot + "/" + common_images_dir + "/tree/member.gif", sWebRoot + "/" + common_images_dir + "/tree/member.gif");
  1216. var tntMeasure = new CTreeNodeType(TREE_ITEM, false, sWebRoot + "/" + common_images_dir + "/tree/measure.gif", sWebRoot+ "/" + common_images_dir + "/tree/measure.gif");
  1217. var tntNamespace = new CTreeNodeType(TREE_FOLDER, true, sWebRoot + "/" + common_images_dir + "/tree/namespace.gif", sWebRoot + "/" + common_images_dir + "/tree/namespace.gif");
  1218. var tntFolder_2 = new CTreeNodeType(TREE_FOLDER, true, sWebRoot + "/" + common_images_dir + "/tree/folder.gif", sWebRoot + "/" + common_images_dir + "/tree/folder_open.gif");
  1219. var tntMeasureDimension = new CTreeNodeType(TREE_FOLDER, true, sWebRoot + "/" + common_images_dir + "/tree/measure_dimension.gif", sWebRoot + "/" + common_images_dir + "/tree/measure_dimension.gif");
  1220. var tntRollupMeasure = new CTreeNodeType(TREE_ITEM, true, sWebRoot + "/" + common_images_dir + "/tree/measure.gif", sWebRoot + "/" + common_images_dir + "/tree/measure.gif");
  1221. var tntNamedSet = new CTreeNodeType(TREE_ITEM, false, sWebRoot + "/" + common_images_dir + "/tree/named_set.gif", sWebRoot + "/" + common_images_dir + "/tree/named_set.gif");
  1222. tntQueryItem.m_bIsDraggable = true;
  1223. tntQueryItemFact.m_bIsDraggable = true;
  1224. tntQueryItemIdentifier.m_bIsDraggable = true;
  1225. tntFilter.m_bIsDraggable = true;
  1226. tntFilter.m_bIsFilter = true;
  1227. tntCalculationFact.m_bIsDraggable = true;
  1228. tntCalculationDimension.m_bIsDraggable = true;
  1229. tntCalculationAttribute.m_bIsDraggable = true;
  1230. tntCalculationConstant.m_bIsDraggable = true;
  1231. tntQuerySubject.m_bIsDraggable = true;
  1232. tntDimension.m_nodeTypeName = gsMETADATA_dimension;
  1233. tntDimension.m_bIsDraggable = true;
  1234. tntDimension.setRecursiveSelect(false);
  1235. tntHeirarchy.m_bIsDraggable = true;
  1236. tntHeirarchy.setRecursiveSelect(false);
  1237. tntLevel.m_bIsDraggable = true;
  1238. tntLevel.setRecursiveSelect(false);
  1239. tntLevel.m_nodeTypeName = gsMETADATA_level;
  1240. tntMember.m_bIsDraggable = true;
  1241. tntMember.setRecursiveSelect(false);
  1242. tntMember.m_nodeTypeName = gsMETADATA_member;
  1243. tntMeasure.m_bIsDraggable = true;
  1244. tntNamespace.m_bIsDraggable = false;
  1245. tntFolder_2.m_bIsDraggable = true;
  1246. tntMeasureDimension.m_bIsDraggable = true;
  1247. tntRollupMeasure.m_bIsDraggable = true;
  1248. tntRollupMeasure.setRecursiveSelect(false);
  1249. tntNamedSet.m_bIsDraggable = true;
  1250. var sSkinRoot = p_sSkinFolder;
  1251. function fetchMetadataFunctionList(firstFetch)
  1252. {
  1253. if (cfgGet("META_TreeLoadedFirstTime") == null && ((typeof firstFetch != "undefined" && firstFetch != "initial") || (typeof firstFetch == "undefined" && cfgGet("currentMetadataFunctionOperations") != null)))
  1254. {
  1255. cfgSet("runFetchMetadataFunctionList", true);
  1256. doMetadataTree();
  1257. }
  1258. else if (cfgGet("cmLastModel") != null && typeof goApplicationManager.getMiniQueryManager().getCRQReportNode() == "object")
  1259. {
  1260. var req = "";
  1261. var cl = "";
  1262. var el = goApplicationManager.getMiniQueryManager().getCRQReportNode().getAttribute("expressionLocale");
  1263. var cookieValues = document.cookie.split(gsMETADATA_SEMICOLON);
  1264. for (var i = 0; i < cookieValues.length; i++)
  1265. {
  1266. if (cookieValues[i].match(/^\s*CRN=/i))
  1267. {
  1268. var aLocales = decodeURIComponent(decodeURIComponent(cookieValues[i].split("=")[1])).split("&");
  1269. for (var j = 0; j < aLocales.length; j++)
  1270. {
  1271. if (aLocales[j].match(/^contentLocale=/i)) {
  1272. cl = aLocales[j].split("=")[1];
  1273. }
  1274. break;
  1275. }
  1276. }
  1277. if (cl != "") {
  1278. break;
  1279. }
  1280. }
  1281. if (cl == "") {
  1282. cl = goApplicationManager.get("contentLocale");
  1283. }
  1284. if (cl) {
  1285. req += "&cl=" + cl;
  1286. }
  1287. if (el) {
  1288. req += "&el=" + el;
  1289. }
  1290. req += "&model=" + cfgGet("cmLastModel");
  1291. var fetchVal = null;
  1292. if (typeof firstFetch != "undefined" && firstFetch == "initial")
  1293. {
  1294. if (cfgSize("CalcFns") == 0)
  1295. {
  1296. cfgSet("currentMetadataFunctionOperations", "onlyOperation");
  1297. fetchVal = "onlyOperation";
  1298. }
  1299. else if (cfgGet("currentMetadataFunctionOperations") == "onlyOperation")
  1300. {
  1301. cfgSet("currentMetadataFunctionOperations", "all");
  1302. }
  1303. else if (cfgGet("currentMetadataFunctionOperations") == "all")
  1304. {
  1305. metadataFunctionListResponse("");
  1306. return;
  1307. }
  1308. }
  1309. else
  1310. {
  1311. if (cfgSize("CalcFns") == 0)
  1312. {
  1313. fetchVal = "all";
  1314. }
  1315. else if (cfgGet("currentMetadataFunctionOperations") == "all")
  1316. {
  1317. metadataFunctionListResponse("");
  1318. return;
  1319. }
  1320. cfgSet("currentMetadataFunctionOperations", "all");
  1321. }
  1322. var url = buildFunctionListRequest(req, fetchVal);
  1323. setTimeout("sendFunctionListRequest('" + url + "');", 100);
  1324. }
  1325. else
  1326. {
  1327. setTimeout("fetchMetadataFunctionList('" + firstFetch + "')", 100);
  1328. }
  1329. };
  1330. function buildFunctionListRequest(req, fetchVal)
  1331. {
  1332. var url = "b_action=xts.run&m=/" + qs_dir + "/functionList.xts" + req;
  1333. if (fetchVal != null)
  1334. {
  1335. url += "&fetch=" + fetchVal;
  1336. }
  1337. if (cafContextId != "")
  1338. {
  1339. url += "&ui.cafcontextid=" + cafContextId;
  1340. }
  1341. if (typeof routingServerGroup != "undefined")
  1342. {
  1343. url += "&ui.routingServerGroup=" + encodeURIComponent(routingServerGroup);
  1344. }
  1345. url += fetchAllParametersAsURLSnippet();
  1346. for (var i = 0; i < cfgSize("filter_promptValuesXML"); i++)
  1347. {
  1348. url += "&promptValues=" + encodeURIComponent(cfgGetAt("filter_promptValuesXML", i));
  1349. }
  1350. if (cfgGet("markup_track") != "undefined")
  1351. {
  1352. url += "&markup_track=" + cfgGet("markup_track");
  1353. }
  1354. return url;
  1355. };
  1356. function sendFunctionListRequest(url)
  1357. {
  1358. cfgSet("CURRENT_REQUEST", url);
  1359. sendDispatcherRequestWithXMLResponse(url , metadataFunctionListResponse);
  1360. };
  1361. function metadataFunctionListResponse(responseXML)
  1362. {
  1363. var response = "";
  1364. try
  1365. {
  1366. for (var i = 0; i < responseXML.getElementsByTagName("xmlResponse")[0].childNodes.length; i++)
  1367. {
  1368. response += responseXML.getElementsByTagName("xmlResponse")[0].childNodes[i].nodeValue;
  1369. }
  1370. }
  1371. catch (e)
  1372. {
  1373. return;
  1374. }
  1375. var responseArr = response.split("*#*");
  1376. response = responseArr[0].split(gsMETADATA_SEMICOLON);
  1377. if (response[0] == "working")
  1378. {
  1379. var requestStr = "&doWait=1&m_tracking=" + response[2];
  1380. var request = buildFunctionListRequest(requestStr, response[1]);
  1381. setTimeout("sendFunctionListRequest('" + request + "');", 100);
  1382. return;
  1383. }
  1384. else if (response[0] == "prompting")
  1385. {
  1386. var reportFrame = getReportFrame();
  1387. var frmWarpRequest = reportFrame.document.createElement("form");
  1388. reportFrame.document.body.appendChild(frmWarpRequest);
  1389. frmWarpRequest.setAttribute("name", "formWarpRequest");
  1390. frmWarpRequest.setAttribute("id", "formWarpRequest");
  1391. frmWarpRequest.setAttribute("method", "post");
  1392. frmWarpRequest.setAttribute("action", response[1]);
  1393. frmWarpRequest.appendChild(createInput("b_action", "xts.run"));
  1394. frmWarpRequest.appendChild(createInput("m", "prompting/promptDataSource.xts"));
  1395. frmWarpRequest.appendChild(createInput("ccs_invoke", "parent"));
  1396. frmWarpRequest.appendChild(createInput("clientContext", "metadataFunctionListResponse:" + response[2]));
  1397. frmWarpRequest.appendChild(createInput("isEncoded", "1"));
  1398. frmWarpRequest.appendChild(createInput("ui.conversation", response[3]));
  1399. frmWarpRequest.appendChild(createInput("tracking", response[4]));
  1400. frmWarpRequest.appendChild(createInput("releaseConversation", "1"));
  1401. if (processMetadataRecursion)
  1402. {
  1403. frmWarpRequest.appendChild(createInput("processRecursion", "1"));
  1404. }
  1405. var value = "";
  1406. var moLength = response.length;
  1407. for (var i = 5; i < moLength; i++)
  1408. {
  1409. if (i < moLength - 1)
  1410. {
  1411. value += jsdecode(response[i]) + gsMETADATA_SEMICOLON;
  1412. }
  1413. else
  1414. {
  1415. value += jsdecode(response[i]);
  1416. }
  1417. }
  1418. frmWarpRequest.appendChild(createInput("htmlFragment", value));
  1419. frmWarpRequest.submit();
  1420. return;
  1421. }
  1422. else if (response[0] == "FAULT")
  1423. {
  1424. cfgSet("LAST_ACTION", "functionList");
  1425. cfgRemove("currentMetadataFunctionOperations");
  1426. cfgSet("CalcFnsERROR", "ERROR RETRIEVEING FUNCTION LIST");
  1427. cfgRemove("CalcFns");
  1428. cfgRemove("CalcFnsRestricted");
  1429. metadataFault(response);
  1430. return false;
  1431. }
  1432. else
  1433. {
  1434. cfgRemove("CalcFnsERROR");
  1435. for (var i = 0; i < response.length; i++)
  1436. {
  1437. if (response[i].length > 0)
  1438. {
  1439. cfgSetAt("CalcFns", cfgSize("CalcFns"), response[i]);
  1440. }
  1441. }
  1442. if (responseArr.length > 1)
  1443. {
  1444. response = responseArr[1].split(gsMETADATA_SEMICOLON);
  1445. for (var i = 0; i < response.length; i++)
  1446. {
  1447. if (response[i].length > 0)
  1448. {
  1449. cfgSetAt("CalcFnsRestricted", cfgSize("CalcFnsRestricted"), response[i]);
  1450. }
  1451. }
  1452. }
  1453. }
  1454. if (cfgGet("currentMetadataFunctionOperations") == "onlyOperation") {
  1455. setTimeout(doMetadataTree, 100);
  1456. }
  1457. else
  1458. {
  1459. var newFnToRun = cfgGet("postFetchFunctionToRun");
  1460. if (typeof newFnToRun == "function")
  1461. {
  1462. if (cfgSize("postFetchParameter") > 0)
  1463. {
  1464. var newFnParam = "";
  1465. for (var pfpCounter = 0; pfpCounter < cfgSize("postFetchParameter"); pfpCounter++)
  1466. {
  1467. if(newFnParam != "")
  1468. {
  1469. newFnParam =+ ",";
  1470. }
  1471. newFnParam += "'" + cfgGetAt("postFetchParameter", pfpCounter) + "'";
  1472. }
  1473. newFnToRun(eval(newFnParam));
  1474. }
  1475. else
  1476. {
  1477. newFnToRun();
  1478. }
  1479. }
  1480. cfgRemove("postFetchFunctionToRun");
  1481. cfgRemove("postFetchParameter");
  1482. if (goApplicationManager.get("featureWaitingToLaunch") !== null)
  1483. {
  1484. goApplicationManager.getFeatureManager().launchFeature(goApplicationManager.get("featureWaitingToLaunch"), goApplicationManager.get("featureWaitingToLaunchParams"));
  1485. goApplicationManager.remove("featureWaitingToLaunch");
  1486. goApplicationManager.remove("featureWaitingToLaunchParams");
  1487. }
  1488. if (cfgGet("META_TreeLoadedFirstTime") == null)
  1489. {
  1490. setTimeout(doMetadataTree, 1);
  1491. }
  1492. }
  1493. };
  1494. function metadataTreeLoaded()
  1495. {
  1496. if (cfgGet("runFetchMetadataFunctionList") != null)
  1497. {
  1498. cfgRemove("runFetchMetadataFunctionList");
  1499. fetchMetadataFunctionList();
  1500. }
  1501. };
  1502. function metaTreeContainerClicked(event)
  1503. {
  1504. gQsMetadataTreeContextMenu.hide();
  1505. treeContainerClicked(event);
  1506. setMetaInformation(new Array());
  1507. };
  1508. function singleClickMetadata(evt)
  1509. {
  1510. gQsMetadataTreeContextMenu.hide();
  1511. var uiNode = getUINode(evt);
  1512. var selectedNode = (uiNode) ? getTreeNode(uiNode.getAttribute('dragTree').toString(), uiNode.getAttribute('treeRef').toString()) : null;
  1513. if (selectedNode == null)
  1514. {
  1515. setMetaInformation(new Array());
  1516. }
  1517. else
  1518. {
  1519. var metaObj = allMetadataObjects[selectedNode.getValue()];
  1520. var nodeObjType = getNodeObjectType(metaObj);
  1521. var regAgg = "";
  1522. var dataType = "";
  1523. if ((nodeObjType != "FOLDER") && (nodeObjType != 'FILTER'))
  1524. {
  1525. var dataTypeCategory = determineDataType(jsdecode(metaObj.datatype));
  1526. var isDate = false;
  1527. switch (dataTypeCategory)
  1528. {
  1529. case 1:
  1530. case 2:
  1531. case 3:
  1532. case 4:
  1533. isDate = true;
  1534. }
  1535. regAgg = determineRegAggType(parseInt(metaObj.regularAggregate, 10), isDate);
  1536. dataType = getStringFromDataType(parseInt(metaObj.datatype, 10));
  1537. }
  1538. setMetaInformation(new Array(jsdecode(metaObj.name), jsdecode(metaObj.description), regAgg, dataType));
  1539. }
  1540. };
  1541. function toggleInformation(bOpenPane)
  1542. {
  1543. clearSelection();
  1544. var bIsOpen = false;
  1545. if (bOpenPane !== null && typeof bOpenPane !== "undefined")
  1546. {
  1547. bIsOpen = !bOpenPane;
  1548. }
  1549. else
  1550. {
  1551. bIsOpen = document.getElementById("informationContent").getAttribute("isOpen");
  1552. }
  1553. if (bIsOpen == "true")
  1554. {
  1555. document.getElementById("informationContent").setAttribute("isOpen", "false");
  1556. document.getElementById("nsResizeBar").style.display = "none";
  1557. cfgSet("InformationTableHeight", document.getElementById("informationTableContainer").style.height);
  1558. document.getElementById("informationTableContainer").style.height = "auto";
  1559. document.getElementById("informationContentContainer").style.display = "none";
  1560. resizeMenuPaneToSize("ns", menuPaneMinSize, false);
  1561. setQSCookie('qs', 'in', 0);
  1562. autoSetMetadataContainerHeight();
  1563. }
  1564. else
  1565. {
  1566. var iStoredInfoPaneSize = cfgGet("InformationTableHeight");
  1567. var oInfoHeader = document.getElementById("informationHeaderRow");
  1568. if(document.getElementById("informationContent").getAttribute("isOpen") === "false")
  1569. setMetadataContainerHeight(getMetadataContainerHeight() - parseInt(iStoredInfoPaneSize) + oInfoHeader.offsetHeight);
  1570. document.getElementById("informationContent").setAttribute("isOpen", "true");
  1571. document.getElementById("nsResizeBar").style.display = "block";
  1572. document.getElementById("informationTableContainer").style.height = iStoredInfoPaneSize;
  1573. if (document.all)
  1574. {
  1575. document.getElementById("informationContentContainer").style.display = "inline";
  1576. }
  1577. else
  1578. {
  1579. document.getElementById("informationContentContainer").style.display = "table-cell";
  1580. }
  1581. var size = getMenuPaneSize("ns");
  1582. if (size == menuPaneMinSize)
  1583. {
  1584. var openSize = menuPaneMinNSOpenSize;
  1585. if (openSize < getQSCookie('qs', 'msns'))
  1586. {
  1587. openSize = getQSCookie('qs', 'msns');
  1588. }
  1589. resizeMenuPaneToSize("ns", openSize, true);
  1590. }
  1591. setQSCookie('qs', 'in', 1);
  1592. }
  1593. renderInformation(true, false);
  1594. };
  1595. function renderInformation(allowToggle, keepOpen)
  1596. {
  1597. var metadataInfoImg = document.getElementById("metadataInfoImg");
  1598. var infoRow1 = document.getElementById("informationDesc");
  1599. var infoRow2 = document.getElementById("informationContent");
  1600. var data = document.getElementById("informationContent").getAttribute("data");
  1601. var isOpen = document.getElementById("informationContent").getAttribute("isOpen");
  1602. if (data != "none" && isOpen == "true")
  1603. {
  1604. if (document.all)
  1605. {
  1606. infoRow2.style.display = "inline";
  1607. }
  1608. else
  1609. {
  1610. infoRow2.style.display = "table-row";
  1611. }
  1612. if (data.indexOf("d") > 0)
  1613. {
  1614. if (document.all) {
  1615. infoRow1.style.display = "inline";
  1616. }
  1617. else {
  1618. infoRow1.style.display = "table-row";
  1619. }
  1620. }
  1621. else {
  1622. infoRow1.style.display = "none";
  1623. }
  1624. var metaAggRow = document.getElementById("informationAgg");
  1625. if (data.indexOf("a") > 0)
  1626. {
  1627. if (document.all) {
  1628. metaAggRow.style.display = "inline";
  1629. }
  1630. else {
  1631. metaAggRow.style.display = "table-row";
  1632. }
  1633. }
  1634. else {
  1635. metaAggRow.style.display = "none";
  1636. }
  1637. var metaTypeRow = document.getElementById("informationDataType");
  1638. if (data.indexOf("t") > 0)
  1639. {
  1640. if (document.all) {
  1641. metaTypeRow.style.display = "inline";
  1642. }
  1643. else {
  1644. metaTypeRow.style.display = "table-row";
  1645. }
  1646. }
  1647. else {
  1648. metaTypeRow.style.display = "none";
  1649. }
  1650. metadataInfoImg.src = sSkinRoot + "/qs/images/hide_area.gif";
  1651. }
  1652. else
  1653. {
  1654. infoRow1.style.display = "none";
  1655. infoRow2.style.display = "none";
  1656. if (allowToggle)
  1657. {
  1658. if (metadataInfoImg.src.indexOf("hide_area") > 0) {
  1659. metadataInfoImg.src = sSkinRoot + "/qs/images/show_area.gif";
  1660. }
  1661. else {
  1662. metadataInfoImg.src = sSkinRoot + "/qs/images/hide_area.gif";
  1663. }
  1664. }
  1665. }
  1666. var metadataContainer = document.getElementById("informationTDContainer");
  1667. var metadataTitle = document.getElementById("informationTitle");
  1668. var iContainerWidth = parseInt(metadataContainer.offsetWidth,10) - 20;
  1669. if (iContainerWidth < 0) {
  1670. iContainerWidth = 0;
  1671. }
  1672. metadataTitle.style.width = iContainerWidth + "px";
  1673. updateInfoDivWidth("informationNameLabel","auto");
  1674. updateInfoDivWidth("informationAggLabel","auto");
  1675. updateInfoDivWidth("informationDataTypeLabel","auto");
  1676. var oLabel = document.getElementById("informationNameLabel");
  1677. var oValue = document.getElementById("informationNameValue");
  1678. var iLabelWidth = oLabel.offsetWidth;
  1679. if (iLabelWidth > metadataContainer.offsetWidth)
  1680. {
  1681. iLabelWidth = metadataContainer.offsetWidth - 50;
  1682. if (iLabelWidth < 0) {
  1683. iLabelWidth = 0;
  1684. }
  1685. }
  1686. if (iLabelWidth > 0)
  1687. {
  1688. iLabelWidth = iLabelWidth + "px";
  1689. updateInfoDivWidth("informationNameLabel",iLabelWidth);
  1690. updateInfoDivWidth("informationAggLabel",iLabelWidth);
  1691. updateInfoDivWidth("informationDataTypeLabel",iLabelWidth);
  1692. var iValueWidth = (metadataContainer.offsetWidth - oLabel.offsetWidth - 20);
  1693. if (iValueWidth < 0) {
  1694. iValueWidth = 0;
  1695. }
  1696. updateInfoDivWidth("informationNameValue",iValueWidth);
  1697. updateInfoDivWidth("informationAggValue",iValueWidth);
  1698. updateInfoDivWidth("informationDataTypeValue",iValueWidth);
  1699. }
  1700. };
  1701. function updateInfoDivWidth(sId, iWidth) {
  1702. var o = document.getElementById(sId);
  1703. if (o) {
  1704. o.style.width = iWidth;
  1705. }
  1706. };
  1707. function setMetaInformation(metaInfo)
  1708. {
  1709. var name = typeof metaInfo[0] != "undefined" ? metaInfo[0] : "";
  1710. var description = typeof metaInfo[1] != "undefined" ? metaInfo[1] : "";
  1711. var aggregation = typeof metaInfo[2] != "undefined" ? metaInfo[2] : "";
  1712. var dataType = typeof metaInfo[3] != "undefined" ? metaInfo[3] : "";
  1713. if (name == "" && description == "" && aggregation == "")
  1714. {
  1715. document.getElementById("informationContent").setAttribute("data", "none");
  1716. setMetaTitle("");
  1717. renderInformation(false, false);
  1718. }
  1719. else
  1720. {
  1721. var data = "n";
  1722. clearMetaInformation();
  1723. setMetaTitle(name);
  1724. var metaName = document.getElementById("informationNameValue");
  1725. metaName.appendChild(document.createTextNode(name));
  1726. if (description != "")
  1727. {
  1728. data += "d";
  1729. var metaDesc = document.getElementById("informationDescValue");
  1730. metaDesc.appendChild(document.createTextNode(description));
  1731. }
  1732. if (aggregation != "")
  1733. {
  1734. data += "a";
  1735. var metaAgg = document.getElementById("informationAggValue");
  1736. metaAgg.appendChild(document.createTextNode(aggregation));
  1737. }
  1738. if (dataType != "")
  1739. {
  1740. data += "t";
  1741. var metaType = document.getElementById("informationDataTypeValue");
  1742. metaType.appendChild(document.createTextNode(dataType));
  1743. }
  1744. document.getElementById("informationContent").setAttribute("data", data);
  1745. renderInformation(false, true);
  1746. }
  1747. };
  1748. function clearMetaInformation()
  1749. {
  1750. var metaName = document.getElementById("informationNameValue");
  1751. var metaDesc = document.getElementById("informationDescValue");
  1752. var metaAgg = document.getElementById("informationAggValue");
  1753. var metaType = document.getElementById("informationDataTypeValue");
  1754. while (metaName.hasChildNodes()) {
  1755. metaName.removeChild(metaName.firstChild);
  1756. }
  1757. while (metaDesc.hasChildNodes()) {
  1758. metaDesc.removeChild(metaDesc.firstChild);
  1759. }
  1760. while (metaAgg.hasChildNodes()) {
  1761. metaAgg.removeChild(metaAgg.firstChild);
  1762. }
  1763. while (metaType.hasChildNodes()) {
  1764. metaType.removeChild(metaType.firstChild);
  1765. }
  1766. document.getElementById("informationContent").setAttribute("data", "none");
  1767. };
  1768. function setMetaTitle(value)
  1769. {
  1770. var metaTitle = document.getElementById("informationTitle");
  1771. while (metaTitle.hasChildNodes()) {
  1772. metaTitle.removeChild(metaTitle.firstChild);
  1773. }
  1774. if (value == "")
  1775. {
  1776. metaTitle.appendChild(document.createTextNode(metaNoInformation));
  1777. }
  1778. else
  1779. {
  1780. var infoVal = metaInformation.replace(/\^0/, value);
  1781. metaTitle.appendChild(document.createTextNode(infoVal));
  1782. }
  1783. };
  1784. function fetchAllParametersAsURLSnippet()
  1785. {
  1786. var sParamValues = cfgGet("parameterValues");
  1787. var sExecutionParameters = goApplicationManager.getReportManager().getParameterManager().getExecutionParameters();
  1788. var sMetadataParameters = goApplicationManager.getReportManager().getParameterManager().getMetadataParameters();
  1789. var sRequestStr = "";
  1790. if (typeof sParamValues !== "undefined" && sParamValues)
  1791. {
  1792. sRequestStr += "&parameterValues=" + encodeURIComponent(sParamValues);
  1793. }
  1794. if (typeof sExecutionParameters !== "undefined" && sExecutionParameters)
  1795. {
  1796. sRequestStr += "&executionParameters=" + encodeURIComponent(sExecutionParameters);
  1797. }
  1798. if (typeof sMetadataParameters !== "undefined" && sMetadataParameters)
  1799. {
  1800. sRequestStr += "&metadataParameters=" + encodeURIComponent(sMetadataParameters);
  1801. }
  1802. return sRequestStr;
  1803. };
  1804. function needComplexFilterDialogForModelFilter(filterName)
  1805. {
  1806. if (typeof canUseQueryStudioAdvancedMode !== "undefined" && ! canUseQueryStudioAdvancedMode)
  1807. {
  1808. return false;
  1809. }
  1810. var oMQMgr = goApplicationManager.getMiniQueryManager();
  1811. var complexFilterDialogMode = false;
  1812. var bThisModelFilterDoesNotExist = (oMQMgr.getModelFilterNode(filterName) === null);
  1813. return (bThisModelFilterDoesNotExist && oMQMgr.filterExists());
  1814. };
  1815. function addModelFilterToCombinedFilter(oCC, nodeObject)
  1816. {
  1817. if (!cf.cfgGet("combinedFilters_default"))
  1818. {
  1819. cf.cfgSet("combinedFilters_default", oCC.clone());
  1820. }
  1821. oCC.addFilter(oCC.generateID(), nodeObject.name, gsFILTER_REFTYPE_MODEL, gsFILTER_MODEL, nodeObject.ref, "none", nodeObject.name, null);
  1822. return;
  1823. };
  1824. function errorHandler(errorStoppedAt, e)
  1825. {
  1826. };