GotoPageAction.js 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. /*
  2. *+------------------------------------------------------------------------+
  3. *| Licensed Materials - Property of IBM
  4. *| IBM Cognos Products: Viewer
  5. *| (C) Copyright IBM Corp. 2013
  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 GotoPageAction() {
  13. this.pageNumber = null;
  14. }
  15. GotoPageAction.prototype = new CognosViewerAction();
  16. GotoPageAction.ERROR_CODE_INVALID_INT = "Goto-001";
  17. GotoPageAction.ERROR_CODE_REPORT_NOT_COMPLETE = "Goto-002";
  18. GotoPageAction.ERROR_CODE_INVALID_PAGE_RANGE = "Goto-003";
  19. GotoPageAction.prototype.setRequestParms = function(params) {
  20. if (params) {
  21. this.pageNumber = params.pageNumber; // This is a Public API, we must always support .pageNumber
  22. this.anchorName = params.anchorName; // This is a Public API, we must always support .anchorName
  23. }
  24. };
  25. GotoPageAction.prototype.execute = function() {
  26. var oCV = this.getCognosViewer();
  27. var pageInfo = oCV.getPageInfo();
  28. // Make sure we're dealing with a valid integer
  29. if (!this.isPositiveInt(this.pageNumber)) {
  30. return this.buildActionResponseObject("error", GotoPageAction.ERROR_CODE_INVALID_INT, RV_RES.IDS_JS_ERROR_INVALID_INT);
  31. }
  32. else if (oCV.getStatus() != "complete") {
  33. return this.buildActionResponseObject("error", GotoPageAction.ERROR_CODE_REPORT_NOT_COMPLETE, RV_RES.IDS_JS_ERROR_REPORT_NOT_COMPLETE);
  34. }
  35. else if (pageInfo && pageInfo.pageCount && this.pageNumber > pageInfo.pageCount) {
  36. return this.buildActionResponseObject("error", GotoPageAction.ERROR_CODE_INVALID_PAGE_RANGE, RV_RES.IDS_JS_ERROR_INVALID_PAGE_RANGE);
  37. }
  38. if (pageInfo.currentPage == this.pageNumber) {
  39. this.scrollTo();
  40. return true;
  41. }
  42. var request = new ViewerDispatcherEntry(oCV);
  43. request.addFormField("ui.action", "reportAction");
  44. request.addFormField("generic.anyURI.http://developer.cognos.com/ceba/constants/runOptionEnum#pageNumber", this.pageNumber);
  45. if (this.anchorName) {
  46. request.setCallbacks( { "postComplete" : {"object":this, "method": this.scrollTo}
  47. });
  48. }
  49. oCV.dispatchRequest(request);
  50. };
  51. GotoPageAction.prototype.scrollTo = function() {
  52. if(this.anchorName) {
  53. var anchorElements = document.getElementsByName(this.anchorName);
  54. if (anchorElements && anchorElements.length>0 && anchorElements[0].scrollIntoView) {
  55. anchorElements[0].scrollIntoView();
  56. } else {
  57. document.location = '#'+this.anchorName;
  58. }
  59. }
  60. };