api.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. // Copyright (c) Business Objects 2010. All rights reserved.
  2. // CrystalReports DHTML Viewer SDK
  3. // Version: Internal (Unsupported)
  4. // ###################################################################################
  5. // CRViewer object contains utilities that allow interaction with the CrystalReports DHTML viewer.
  6. // CRViewer has the following properties and methods defined.
  7. // CRViewer.getViewer()
  8. // returns an CRViewer.Viewer object that represents the DHTML viewer on the current page. Use this object to interact with the DHTML viewer.
  9. // CRViewer.getViewer().addEventListener (event type, listener function)
  10. // Registers a listener function with the given event type. The listener function should return true if the event was handled and normal viewer processing should not occur.
  11. // CRViewer.getViewer().removeEventListener (event type, listener function)
  12. // Removes the listener for the given event type.
  13. // CRViewer.Events
  14. // returns an Array of event types that can be handled using event listeners
  15. // CRViewer.Events.HyperlinkClicked
  16. // An event that will be fired when a hyperlink is clicked. Note this event will only occur if the viewer is configured to render hyperlinks using javascript.
  17. // Arguments to listeners of these events will be as follows: { url : 'url string', target : 'target for the link'}
  18. // ###################################################################################
  19. if (typeof (CRViewer) == "undefined") {
  20. CRViewer = {
  21. getViewer : function (/* optional */ viewerName) {
  22. return this._getViewer(viewerName);
  23. },
  24. Events : {
  25. HyperlinkClicked : "hyperlinkClicked"
  26. },
  27. _viewersMap : [],
  28. _getViewer : function (viewerName) {
  29. var map = this._viewersMap;
  30. if (viewerName) {
  31. for (var i = 0, len = map.length; i < len; i++) {
  32. if (map[i].id == viewerName) {
  33. return map[i];
  34. }
  35. }
  36. } else if (map.length > 0) {
  37. return map[0];
  38. }
  39. return this._createViewer(viewerName);
  40. },
  41. _getRealViewer : function (viewerName)
  42. {
  43. if (viewerName) {
  44. return getWidgetFromID(viewerName);
  45. } else {
  46. if (_widgets) {
  47. for (var i = 0, len = _widgets.length; i < len; i++) {
  48. if (_widgets[i].widgetType == "Viewer") {
  49. return _widgets[i];
  50. }
  51. }
  52. }
  53. }
  54. },
  55. _createViewer : function (viewerName)
  56. {
  57. var realViewer = this._getRealViewer(viewerName);
  58. if (realViewer && realViewer.widgetType == "Viewer") {
  59. var o = {};
  60. o.id = realViewer.id;
  61. o.realViewer = realViewer;
  62. o.addEventListener = function (event, listener) {
  63. this.realViewer.addViewerEventListener(event, listener);
  64. }
  65. o.removeEventListener = function (event, listener) {
  66. this.realViewer.removeViewerEventListener(event, listener);
  67. }
  68. this._viewersMap[this._viewersMap.length] = o;
  69. return o;
  70. }
  71. }
  72. };
  73. }