viewer.mobile.core.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522
  1. /*
  2. *+------------------------------------------------------------------------+
  3. *| Licensed Materials - Property of IBM
  4. *| IBM Cognos Products: Viewer
  5. *| (C) Copyright IBM Corp. 2014
  6. *|
  7. *| US Government Users Restricted Rights - Use, duplication or
  8. *| disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  9. *|
  10. *+------------------------------------------------------------------------+
  11. */
  12. function GotoAction(){
  13. };
  14. GotoAction.prototype=new CognosViewerAction();
  15. GotoAction.prototype.execute=function(){
  16. var _1=this.m_oCV.getDrillMgr();
  17. _1.launchGoToPage();
  18. };
  19. GotoAction.prototype.updateMenu=function(_2){
  20. var _3=[];
  21. var _4=this.m_oCV.getDrillTargets();
  22. var _5=this.m_oCV.getDrillMgr();
  23. var _6=_5.getAuthoredDrillThroughTargets();
  24. if(_6.length>0){
  25. var _7="<AuthoredDrillTargets>";
  26. for(var _8=0;_8<_6.length;++_8){
  27. _7+=eval("\""+_6[_8]+"\"");
  28. }
  29. _7+="</AuthoredDrillTargets>";
  30. var _9=this.m_oCV.getAction("AuthoredDrill");
  31. var _a=_9.getAuthoredDrillThroughContext(_7,_4);
  32. var _b=_a.childNodes;
  33. if(_b.length>0){
  34. for(var _c=0;_c<_b.length;++_c){
  35. var _d=_b[_c];
  36. var _e=this.getTargetReportIconClass(_d);
  37. var _f=_d.getAttribute("label");
  38. _3.push({name:"AuthoredDrill",label:_f,iconClass:_e,action:{name:"AuthoredDrill",payload:XMLBuilderSerializeNode(_d)},items:null});
  39. }
  40. }
  41. }
  42. if(_3.length>0){
  43. _3.push({separator:true});
  44. }
  45. var _10=false;
  46. if(this.m_oCV.getSelectionController()==null||this.m_oCV.getSelectionController().getModelDrillThroughEnabled()==false){
  47. _10=true;
  48. }
  49. _3.push({name:"Goto",disabled:_10,label:RV_RES.RV_MORE,iconClass:"",action:{name:"Goto",payload:""},items:null});
  50. if(this.m_oCV.isIWidgetMobile()){
  51. _2.flatten="true";
  52. }
  53. _2.items=_3;
  54. return _2;
  55. };
  56. GotoAction.prototype.getTargetReportIconClass=function(_11){
  57. var _12="";
  58. var _13=_11.getAttribute("method");
  59. switch(_13){
  60. case "edit":
  61. _12="editContent";
  62. break;
  63. case "execute":
  64. _12="runReport";
  65. break;
  66. case "view":
  67. var _14=_11.getAttribute("outputFormat");
  68. switch(_14){
  69. case "HTML":
  70. case "XHTML":
  71. case "HTMLFragment":
  72. _12="html";
  73. break;
  74. case "PDF":
  75. _12="pdf";
  76. break;
  77. case "XML":
  78. _12="xml";
  79. break;
  80. case "CSV":
  81. _12="csv";
  82. break;
  83. case "XLS":
  84. _12="excel2000";
  85. break;
  86. case "SingleXLS":
  87. _12="excelSingleSheet";
  88. break;
  89. case "XLWA":
  90. _12="excel2002";
  91. break;
  92. case "spreadsheetML":
  93. _12="excel2007";
  94. break;
  95. case "xlsxData":
  96. _12="excel2007";
  97. break;
  98. }
  99. break;
  100. }
  101. return _12;
  102. };
  103. function DrillContextMenuHelper(){
  104. };
  105. DrillContextMenuHelper.updateDrillMenuItems=function(_15,oCV,_17){
  106. var _18=[];
  107. if(DrillContextMenuHelper.needsDrillSubMenu(oCV)){
  108. var _19=oCV.getSelectionController();
  109. var _1a=_19.getAllSelectedObjects();
  110. var _1b=_1a[0];
  111. if(_1b.getUseValues().length>1&&typeof RV_RES!="undefined"){
  112. var _1c={name:_17,label:RV_RES.RV_DRILL_DEFAULT,action:{name:_17,payload:{}}};
  113. _18.push(_1c);
  114. }
  115. var _1d=(_1b.getUseValues().length>1)?1:0;
  116. var _1e=_1b.getUseValues().length-1;
  117. _1e=(_1e>2)?2:_1e;
  118. for(var _1f=_1d;_1f<=_1e;++_1f){
  119. DrillContextMenuHelper.addSubMenuItem(_17,_18,_1b,_1f,0);
  120. }
  121. var _20=false;
  122. for(var _1f=_1d;_1f<=_1e;++_1f){
  123. for(var _21=1;_21<_1b.getUseValues()[_1f].length;++_21){
  124. if(_20==false){
  125. _18.push({separator:true});
  126. _20=true;
  127. }
  128. DrillContextMenuHelper.addSubMenuItem(_17,_18,_1b,_1f,_21);
  129. }
  130. }
  131. }
  132. DrillContextMenuHelper.completeDrillMenu(_17,_18,_15);
  133. };
  134. DrillContextMenuHelper.needsDrillSubMenu=function(oCV){
  135. var _23=(oCV&&oCV.getSelectionController());
  136. if(_23){
  137. var _24=_23.getAllSelectedObjects();
  138. if(_24.length==1&&_24[0].isHomeCell&&_24[0].isHomeCell()==false){
  139. var _25=_24[0].isSelectionOnVizChart();
  140. if(!_25){
  141. var _26=oCV.getAdvancedServerProperty("VIEWER_JS_ENABLE_DRILL_SUBMENU");
  142. _25=(_26=="charts"&&_23.hasSelectedChartNodes());
  143. }
  144. if(_25){
  145. var _27=_24[0];
  146. return (_25&&_27.getUseValues()&&(_27.getUseValues().length>1||_27.getUseValues()[0].length>1));
  147. }
  148. }
  149. }
  150. return false;
  151. };
  152. DrillContextMenuHelper.addSubMenuItem=function(_28,_29,_2a,_2b,_2c){
  153. var _2d=_2a.getDrillOptions()[_2b][_2c];
  154. if(DrillContextMenuHelper.isOptionDrillable(_28,_2d)){
  155. var _2e=DrillContextMenuHelper.getItemValue(_2a,_2b,_2c);
  156. if(_2e){
  157. var _2f=_2a.getDataItems()[_2b][_2c];
  158. var _30={name:_28,label:_2e,action:{name:_28,payload:{userSelectedDrillItem:_2f}}};
  159. _29.push(_30);
  160. }
  161. }
  162. };
  163. DrillContextMenuHelper.completeDrillMenu=function(_31,_32,_33){
  164. if(_32.length>0){
  165. _33.items=_32;
  166. }else{
  167. _33.items=null;
  168. if(_33.action==null){
  169. _33.action={name:_31,action:{name:_31}};
  170. }
  171. }
  172. };
  173. DrillContextMenuHelper.isOptionDrillable=function(_34,_35){
  174. return (_35>=3||(_34=="DrillDown"&&_35==2)||(_34=="DrillUp"&&_35==1));
  175. };
  176. DrillContextMenuHelper.getItemValue=function(_36,_37,_38){
  177. var _39=(_38==0)?_36.getDisplayValues()[_37]:null;
  178. return ((_39)?_39:_36.getUseValues()[_37][_38]);
  179. };
  180. function DrillAction(){
  181. };
  182. DrillAction.prototype=new CognosViewerAction();
  183. DrillAction.prototype.setRequestParms=function(_3a){
  184. if(_3a&&_3a.userSelectedDrillItem){
  185. this.m_userSelectedDrillItem=_3a.userSelectedDrillItem;
  186. }
  187. };
  188. DrillAction.prototype.submitDrillRequest=function(_3b,_3c,_3d){
  189. var oCV=this.getCognosViewer();
  190. var _3f=new ViewerDispatcherEntry(oCV);
  191. _3f.addFormField("ui.action","drill");
  192. _3f.addFormField("rv_drillOption",_3c);
  193. _3f.addFormField("rv_drillparams",_3b);
  194. _3f.addFormField("rv_drillRefQuery",_3d);
  195. oCV.dispatchRequest(_3f);
  196. };
  197. function DrillDownAction(){
  198. this.m_sAction="DrillDown";
  199. };
  200. DrillDownAction.prototype=new DrillAction();
  201. DrillDownAction.prototype.updateMenu=function(_40){
  202. return _40;
  203. };
  204. DrillDownAction.prototype.execute=function(){
  205. var oCV=this.getCognosViewer();
  206. var _42=oCV.getDrillMgr();
  207. if(_42.canDrillDown()==false){
  208. return;
  209. }
  210. var _43=_42.rvBuildXMLDrillParameters("drillDown",this.m_userSelectedDrillItem);
  211. var _44=_42.getRefQuery();
  212. if(oCV.envParams["cv.id"]=="AA"){
  213. oCV.m_viewerFragment.raiseAADrillDownEvent();
  214. }
  215. this.submitDrillRequest(_43,"down",_44);
  216. };
  217. function DrillUpAction(){
  218. this.m_sAction="DrillUp";
  219. };
  220. DrillUpAction.prototype=new DrillAction();
  221. DrillUpAction.prototype.updateMenu=function(_45){
  222. return _45;
  223. };
  224. DrillUpAction.prototype.execute=function(){
  225. var oCV=this.getCognosViewer();
  226. var _47=oCV.getDrillMgr();
  227. if(_47.canDrillUp()==false){
  228. return;
  229. }
  230. var _48=_47.rvBuildXMLDrillParameters("drillUp",this.m_userSelectedDrillItem);
  231. var _49=_47.getRefQuery();
  232. if(oCV.envParams["cv.containerApp"]=="AA"){
  233. oCV.m_viewerFragment.raiseAADrillUpEvent();
  234. }
  235. this.submitDrillRequest(_48,"up",_49);
  236. };
  237. DrillDownAction.prototype.updateMenu=function(_4a){
  238. var _4b=this.getCognosViewer().getDrillMgr();
  239. if(_4b&&_4b.canDrillDown()==false){
  240. _4a.visible=false;
  241. }else{
  242. _4a.visible=true;
  243. DrillContextMenuHelper.updateDrillMenuItems(_4a,this.m_oCV,this.m_sAction);
  244. }
  245. return _4a;
  246. };
  247. DrillUpAction.prototype.updateMenu=function(_4c){
  248. var _4d=this.getCognosViewer().getDrillMgr();
  249. if(_4d&&_4d.canDrillUp()==false){
  250. _4c.visible=false;
  251. }else{
  252. _4c.visible=true;
  253. DrillContextMenuHelper.updateDrillMenuItems(_4c,this.m_oCV,this.m_sAction);
  254. }
  255. return _4c;
  256. };
  257. AuthoredDrillAction.prototype._shouldShowInNewWindow=function(_4e){
  258. return true;
  259. };
  260. function CCognosViewerToolbarHelper(){
  261. };
  262. CCognosViewerToolbarHelper.updateToolbarForCurrentSelection=function(oCV,_50){
  263. if(_50){
  264. var _51=oCV.getActionFactory();
  265. for(var _52=0;_52<_50.length;++_52){
  266. var _53=_50[_52]["name"];
  267. if(typeof _53!="undefined"&&_53!=null){
  268. var _54=_51.load(_53);
  269. if(_54!=null&&typeof _54!="undefined"){
  270. var _55=_54.updateMenu(_50[_52]);
  271. if(_55.visible==false){
  272. if(_55.save){
  273. oCV.getViewerWidget().addButtonToSavedToolbarButtons(_53,_50[_52],_52);
  274. }
  275. _50.splice(_52,1);
  276. --_52;
  277. }else{
  278. _50[_52]=_55;
  279. }
  280. }
  281. }else{
  282. if(typeof _50[_52]._root!="undefined"){
  283. CCognosViewerToolbarHelper.updateToolbarForCurrentSelection(oCV,_50[_52]._root);
  284. }else{
  285. if(_50[_52].separator){
  286. if(_52==0||(_52>0&&_50[_52-1].separator)||_52==_50.length){
  287. _50.splice(_52,1);
  288. --_52;
  289. }
  290. }
  291. }
  292. }
  293. }
  294. }
  295. };
  296. CCognosViewerToolbarHelper.updateContextMenuForCurrentSelection=function(oCV,_57){
  297. var _58=[];
  298. if(_57){
  299. var _59=oCV.getActionFactory();
  300. for(var _5a=0;_5a<_57.length;++_5a){
  301. var _5b=_57[_5a];
  302. var _5c=_57[_5a]["name"];
  303. var _5d=true;
  304. if(typeof _5c!="undefined"){
  305. var _5e=_59.load(_5c);
  306. if(!_5e){
  307. if(_5c=="drillDown"){
  308. _5e=_59.load("DrillDown");
  309. }else{
  310. if(_5c=="drillUp"){
  311. _5e=_59.load("DrillUp");
  312. }
  313. }
  314. }
  315. if(_5e!=null&&typeof _5e!="undefined"){
  316. if(typeof _5e.buildMenu=="function"){
  317. _5b=_5e.buildMenu(_57[_5a]);
  318. }else{
  319. _5b=_5e.updateMenu(_57[_5a]);
  320. }
  321. _5d=_5e.isValidMenuItem();
  322. }else{
  323. if(typeof _5b.items!="undefined"){
  324. _5b.items=CCognosViewerToolbarHelper.updateContextMenuForCurrentSelection(oCV,_5b.items);
  325. _5d=(_5b.items&&_5b.items.length>0)?true:false;
  326. if(_5d&&_5b.items.length==1){
  327. _5b=_5b.items[0];
  328. }
  329. }
  330. }
  331. }
  332. if(_5b&&_5b.visible!==false&&_5d){
  333. if(_5b.separator===true){
  334. if(_58.length>0&&typeof _58[_58.length-1].separator=="undefined"){
  335. _58[_58.length]=_5b;
  336. }
  337. }else{
  338. if(_5b.useChildrenItems==true&&_5b.items&&_5b.items.length>0){
  339. if(!_5b.disabled){
  340. for(var _5f=0;_5f<_5b.items.length;_5f++){
  341. _58[_58.length]=_5b.items[_5f];
  342. }
  343. }
  344. }else{
  345. if(typeof _5b._root!="undefined"){
  346. _58[_58.length]={"_root":CCognosViewerToolbarHelper.updateContextMenuForCurrentSelection(oCV,_5b._root)};
  347. }else{
  348. _58[_58.length]=_5b;
  349. }
  350. }
  351. }
  352. }
  353. }
  354. if(_58.length>1){
  355. if(_58[_58.length-1].separator){
  356. _58=_58.splice(0,_58.length-1);
  357. }
  358. }
  359. }
  360. return _58;
  361. };
  362. CMainWnd.prototype.pageClicked=function(evt){
  363. var oCV=this.getCV();
  364. var _62=oCV.getSelectionController();
  365. if(_62&&oCV.bCanUseCognosViewerSelection==true){
  366. _62.resetSelections();
  367. var _63=_62.pageClickedForMobile(evt);
  368. if(_63){
  369. if(this._bookmarkDrillThrough(evt,oCV)){
  370. return;
  371. }
  372. var _64=CCognosViewerToolbarHelper.updateContextMenuForCurrentSelection(oCV,oCV.getContextMenu());
  373. this._fixGotoMenu(_64);
  374. var _65=_62.getContainerType();
  375. var _66=_65==="chart"?_62.getChartTooltip():null;
  376. var _67={"action":"showMenu","event":evt,"payload":_64.length>0?_64:null,"displayValues":_62.getDisplayValues(_62),"chartTooltip":_66,"containerType":_65};
  377. if(window.onAction){
  378. window.onAction(_67);
  379. }else{
  380. if(typeof console!="undefined"){
  381. console.log(_67);
  382. }
  383. }
  384. }
  385. }
  386. };
  387. CMainWnd.prototype._bookmarkDrillThrough=function(evt,oCV){
  388. var _6a=oCV.getDrillMgr();
  389. var _6b=_6a.getAuthoredDrillsForCurrentSelection();
  390. if(_6b){
  391. var _6c=XMLHelper_FindChildrenByTagName(_6b,"drillTarget",false);
  392. if(_6c&&_6c.length==1){
  393. var _6d=_6c[0];
  394. var _6e=_6d.getAttribute("bookmarkRef");
  395. var _6f=_6d.getAttribute("path");
  396. if(_6e&&_6e.length>0&&(!_6f||_6f.length==0)){
  397. _6a.singleClickDrillEvent(evt,"RV");
  398. return true;
  399. }
  400. }
  401. }
  402. return false;
  403. };
  404. CMainWnd.prototype.displayContextMenu=function(evt,_71){
  405. if(!this.getCV().bEnableContextMenu){
  406. return false;
  407. }
  408. this.pageClicked(evt);
  409. };
  410. CMainWnd.prototype._fixGotoMenu=function(_72){
  411. if(_72&&_72.length){
  412. var _73=null;
  413. var _74=_72.length;
  414. var _75=0;
  415. for(var i=0;i<_74;i++){
  416. if(_72[i].name==="Goto"){
  417. _75=i;
  418. _73=_72.splice(i,1);
  419. break;
  420. }
  421. }
  422. if(_73&&_73[0]&&_73[0].items){
  423. var _77=_73[0].items;
  424. var _78=_77.length;
  425. for(var i=0;i<_78;i++){
  426. if(!_77[i].separator){
  427. _72.splice(_75,0,_77[i]);
  428. _75++;
  429. }
  430. }
  431. }
  432. }
  433. };
  434. CCognosViewer.prototype.isMobile=function(){
  435. return true;
  436. };
  437. CCognosViewer.prototype.sendDrillThroughRequest=function(_79){
  438. var _7a=getChildElementsByAttribute(_79,"input","name","ui.action");
  439. if(_7a&&_7a.length>0){
  440. _7a[0].setAttribute("value","authoredDrillThroughMobile");
  441. }
  442. ViewerMobileRequest.passFormFieldsToMobile(_79);
  443. };
  444. CCognosViewer.prototype.launchGotoPage=function(_7b){
  445. ViewerMobileRequest.passFormFieldsToMobile(_7b);
  446. };
  447. CCognosViewer.prototype.shouldWriteNavLinks=function(){
  448. return false;
  449. };
  450. CCognosViewer.prototype.getCancelDispatcherEntry=function(){
  451. return new ViewerDispatcherEntry(this);
  452. };
  453. CCognosViewer.prototype.notifyTabChange=function(_7c){
  454. var _7d={"action":"savedOutputTabChange","tabId":_7c};
  455. if(typeof window.onAction=="function"){
  456. window.onAction(_7d);
  457. }else{
  458. if(typeof console!="undefined"){
  459. console.log(_7d);
  460. }
  461. }
  462. };
  463. ViewerDispatcherEntry.prototype.sendRequest=function(){
  464. this.prepareRequest();
  465. var oCV=this.getViewer();
  466. if(oCV.envParams["ui.action"]=="view"){
  467. this.addFormField("cv.responseFormat","mobileView");
  468. }else{
  469. this.addFormField("cv.responseFormat","mobileData");
  470. }
  471. oCV.resetViewerDispatcher();
  472. var _7f=this.getRequest().getFormFields();
  473. for(param in oCV.envParams){
  474. if(!_7f.exists(param)&&param!="cv.actionState"){
  475. this.addFormField(param,oCV.envParams[param]);
  476. }
  477. }
  478. if(!ViewerMobileRequest.passRequestFieldsToMobile(this.getRequest())){
  479. var _80=this.buildRequestForm();
  480. _80.submit();
  481. }
  482. };
  483. function ViewerMobileRequest(){
  484. };
  485. ViewerMobileRequest.passFormFieldsToMobile=function(_81){
  486. var _82={};
  487. var _83=_81.getElementsByTagName("input");
  488. if(_83){
  489. for(var i=0;i<_83.length;i++){
  490. var _85=_83[i].getAttribute("name");
  491. var _86=_83[i].getAttribute("value");
  492. if(_85&&_86){
  493. _82[_85]=_86;
  494. }
  495. }
  496. }
  497. return ViewerMobileRequest._callMobile(_82);
  498. };
  499. ViewerMobileRequest.passRequestFieldsToMobile=function(_87){
  500. var _88={};
  501. var _89=_87.getFormFields();
  502. var _8a=_89.keys();
  503. for(var _8b=0;_8b<_8a.length;_8b++){
  504. var _8c=_8a[_8b];
  505. _88[_8c]=_89.get(_8c);
  506. }
  507. return ViewerMobileRequest._callMobile(_88);
  508. };
  509. ViewerMobileRequest._callMobile=function(_8d){
  510. var _8e={"action":"httpRequest",payload:_8d};
  511. if(window.onAction){
  512. window.onAction(_8e);
  513. return true;
  514. }else{
  515. if(typeof console!="undefined"&&console&&console.log){
  516. console.log(_8e);
  517. return false;
  518. }
  519. }
  520. return false;
  521. };