SlideShow.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. 'use strict';
  2. /**
  3. * Licensed Materials - Property of IBM
  4. * IBM Cognos Products: BI Cloud (C) Copyright IBM Corp. 2014, 2019
  5. * US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  6. */
  7. define(['gemini/dashboard/layout/authoring/views/PageCollectionView', 'baglass/core-client/js/core-client/utils/EventHelper'], function (PageCollectionView) {
  8. var SlideShow = PageCollectionView.extend({
  9. layoutName: 'slideshow',
  10. init: function init() {
  11. SlideShow.inherited('init', this, arguments);
  12. this.specializeConsumeView(['onPlaybackNext', 'onPlaybackPrevious']);
  13. },
  14. /**
  15. * Called when a new scene is added or existing scene is updated
  16. *
  17. * @param {Object} layoutView The scene layout model that is being added/moved
  18. * @param {String} [insertBefore] The id value of the scene model to use as the next sibling
  19. *
  20. * @returns {Promise}
  21. */
  22. add: function add(layoutView, insertBefore) {
  23. if (!this.consumeView._hasScene(layoutView.model)) {
  24. this._addNewScene(layoutView, insertBefore);
  25. } else {
  26. this._reorderScenes(layoutView, insertBefore);
  27. }
  28. // Once the add/update of the scene is done we want to select it
  29. return this.consumeView._selectScene(layoutView.model.id);
  30. },
  31. /**
  32. * Called when a view is removed
  33. *
  34. * @param node
  35. */
  36. removeChild: function removeChild(layoutView) {
  37. var model = layoutView.model;
  38. // Remove the content nodes
  39. layoutView.$el.parent().remove();
  40. this.consumeView._removeScene(model);
  41. SlideShow.inherited('remove', this, arguments);
  42. },
  43. /**
  44. * @param {Object} layoutView The scene layout model that is being added/moved
  45. * @param {String} [insertBefore] The id value of the scene model to use as the next sibling
  46. */
  47. _addNewScene: function _addNewScene(layoutView, insertBefore) {
  48. var model = layoutView.model;
  49. var template = this.htmlTemplate.getItemTemplate(this.layoutName, '', model);
  50. var sceneContent = this.htmlTemplate.replaceLayoutValues(template, this.model);
  51. var htmlNode = document.createElement('div');
  52. htmlNode.innerHTML = sceneContent.trim();
  53. var sceneHtml = htmlNode.firstChild;
  54. sceneHtml.appendChild(layoutView.domNode);
  55. this.$el.find('.tabCntr').append(sceneHtml);
  56. this.consumeView._addScene(model);
  57. if (insertBefore) {
  58. this._reorderScenes(layoutView, insertBefore);
  59. }
  60. },
  61. /**
  62. * @param {Object} layoutView The scene layout model that is being added/moved
  63. * @param {String} [insertBefore] The id value of the scene model to use as the next sibling
  64. */
  65. _reorderScenes: function _reorderScenes(layoutView, insertBefore) {
  66. var model = layoutView.model;
  67. var scene = this.consumeView._getScene(model);
  68. scene.$el.detach().append(layoutView.domNode);
  69. if (insertBefore) {
  70. var beforeScene = this.consumeView._getSceneById(insertBefore);
  71. scene.$el.insertBefore(beforeScene.$el);
  72. } else {
  73. scene.$el.appendTo(this.$el.find('.tabCntr'));
  74. }
  75. this.consumeView._updateSceneList(model, insertBefore);
  76. this.layoutController.eventRouter.trigger('scene:reorder', { model: model, insertBefore: insertBefore });
  77. },
  78. // Overrides consume-mode behavior
  79. onPlaybackNext: function onPlaybackNext() {
  80. return this;
  81. },
  82. onPlaybackPrevious: function onPlaybackPrevious() {
  83. return this;
  84. }
  85. });
  86. return SlideShow;
  87. });
  88. //# sourceMappingURL=SlideShow.js.map