APIs

Show:
  1. ///<reference path="../../typings/lite/app_references.d.ts" />
  2. var __extends = (this && this.__extends) || function (d, b) {
  3. for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
  4. function __() { this.constructor = d; }
  5. d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
  6. };
  7. //GULP_ABSTRACT_END
  8. define(['jquery', 'Block'], function ($, Block) {
  9. TSLiteModules.Block = Block;
  10. /**
  11. BlockJsonBase is a Player block that is used as the base class for all JSON based components
  12. it allows for parsing of JSON data and is supported with the JSON Item inside scenes
  13. @class BlockJsonBase
  14. @constructor
  15. @return {Object} instantiated BlockJsonBase
  16. @example
  17. path: http://www.digitalsignage.com/videoTutorials/_data/videos.json
  18. json player: children[0].children
  19. json item: text
  20. **/
  21. var BlockJsonBase = (function (_super) {
  22. __extends(BlockJsonBase, _super);
  23. function BlockJsonBase(options) {
  24. //BB.lib.log('c base');
  25. if (options)
  26. this.m_options = options;
  27. _super.call(this);
  28. }
  29. BlockJsonBase.prototype.initialize = function () {
  30. //BB.lib.log('i base');
  31. var self = this;
  32. _super.prototype.initialize.call(this, self.m_options);
  33. self._initSubPanel(Elements.BLOCK_JSON_COMMON_PROPERTIES);
  34. self._listenSceneListChange();
  35. self._listenUrlChange();
  36. self._listenVideoPlayToCompletion();
  37. self._listenRandomPlayback();
  38. self._listenObjectPathChange();
  39. self._listenSceneDropdownChange();
  40. self._listenIntervalChange();
  41. self._listenSlideShowMode();
  42. self._listenAddEvent();
  43. self._listenRemoveEvent();
  44. self.m_jsonEventTable = $(Elements.JSON_EVENTS_TABLE);
  45. self._listenJsonRowEventChanged();
  46. self.m_blockProperty.jsonEventDatatableInit();
  47. self.m_mimeType = '';
  48. self.m_actions = {
  49. firstPage: 'beginning',
  50. nextPage: 'next',
  51. prevPage: 'previous',
  52. lastPage: 'last',
  53. loadUrl: 'loadURL'
  54. };
  55. };
  56. /**
  57. Listen to when json row was edited
  58. @method _listenJsonRowEventChanged
  59. **/
  60. BlockJsonBase.prototype._listenJsonRowEventChanged = function () {
  61. var self = this;
  62. self.m_jsonRowEventChangedHandler = function (e) {
  63. if (!self.m_selected)
  64. return;
  65. var domPlayerData = self._getBlockPlayerData();
  66. var rowIndex = e.edata.rowIndex;
  67. var event = e.edata.event;
  68. var action = e.edata.action;
  69. var item = $(domPlayerData).find('EventCommands').children().get(rowIndex);
  70. $(item).attr('from', event);
  71. self._setBlockPlayerData(domPlayerData, BB.CONSTS.NO_NOTIFICATION);
  72. };
  73. BB.comBroker.listen(BB.EVENTS.JSON_EVENT_ROW_CHANGED, self.m_jsonRowEventChangedHandler);
  74. };
  75. /**
  76. Listen to when user wants to add new events
  77. @method _listenAddEvent
  78. **/
  79. BlockJsonBase.prototype._listenAddEvent = function () {
  80. var self = this;
  81. this.m_addNewEvent = function () {
  82. if (!self.m_selected)
  83. return;
  84. var domPlayerData = self._getBlockPlayerData();
  85. var buff = '<EventCommand from="event" condition="" command="firstPage" />';
  86. $(domPlayerData).find('EventCommands').append($(buff));
  87. self._setBlockPlayerData(BB.Pepper.xmlToStringIEfix(domPlayerData), BB.CONSTS.NO_NOTIFICATION, true);
  88. self._populateTableEvents();
  89. };
  90. $(Elements.ADD_JSON_EVENTS).on('click', self.m_addNewEvent);
  91. };
  92. /**
  93. Listen to when removing a resource from list
  94. The algorithm will uses our bootstrap-table own inject rowIndex value
  95. and counts up to match with the order of <EventCommand/> in msdb json, once matched against same value
  96. we delete the proper ordered json item from msdb and refresh the entire table
  97. @method _listenRemoveResource
  98. **/
  99. BlockJsonBase.prototype._listenRemoveEvent = function () {
  100. var self = this;
  101. self.m_removeEvent = function () {
  102. if (!self.m_selected)
  103. return;
  104. if (self.m_jsonEventTable.bootstrapTable('getSelections').length == 0) {
  105. bootbox.alert($(Elements.MSG_BOOTBOX_NO_ITEM_SELECTED).text());
  106. return;
  107. }
  108. var rowIndex = $('input[name=btSelectItem]:checked', Elements.JSON_EVENTS_TABLE).closest('tr').attr('data-index');
  109. var domPlayerData = self._getBlockPlayerData();
  110. $(domPlayerData).find('EventCommands').children().eq(rowIndex).remove();
  111. self._setBlockPlayerData(domPlayerData, BB.CONSTS.NO_NOTIFICATION);
  112. self._populateTableEvents();
  113. };
  114. $(Elements.REMOVE_JSON_EVENTS).on('click', self.m_removeEvent);
  115. };
  116. /**
  117. Load event list to block props UI
  118. @method _populateTableEvents
  119. **/
  120. BlockJsonBase.prototype._populateTableEvents = function () {
  121. var self = this;
  122. var data = [], rowIndex = 0;
  123. var domPlayerData = self._getBlockPlayerData();
  124. self.m_jsonEventTable.bootstrapTable('removeAll');
  125. $(domPlayerData).find('EventCommands').children().each(function (k, eventCommand) {
  126. var url = '';
  127. if ($(eventCommand).attr('command') == 'loadUrl')
  128. url = $(eventCommand).find('Url').attr('name');
  129. if (_.isUndefined(url))
  130. url = '';
  131. data.push({
  132. rowIndex: rowIndex,
  133. checkbox: true,
  134. event: $(eventCommand).attr('from'),
  135. url: url,
  136. action: self.m_actions[$(eventCommand).attr('command')]
  137. });
  138. rowIndex++;
  139. });
  140. self.m_jsonEventTable.bootstrapTable('load', data);
  141. self._listenDropdownEvenActionSelection();
  142. self._listenActionURLChange();
  143. // disable drag cursor due to bug in bootstrap-table lib (can't disable dragging, yach...)
  144. setTimeout(function () {
  145. $('tr', Elements.JSON_EVENTS_CONTAINER).css({
  146. cursor: 'pointer'
  147. });
  148. }, 500);
  149. };
  150. /**
  151. Update the title of the selected tab properties element and also show the sub tab
  152. for Settings of Json sub components (world weather, Calendar etc...)
  153. @override
  154. @method _updateTitleTab
  155. */
  156. BlockJsonBase.prototype._updateTitleTab = function () {
  157. var self = this;
  158. //super._updateTitleTab();
  159. $(Elements.BLOCK_COMMON_SETTINGS_TAB).show();
  160. $(Elements.BLOCK_SUBPROPERTIES_TITLE).text(self.m_blockAcronym);
  161. };
  162. /**
  163. re-take ownership for a caller block instance and register global Validators for bootstrap-table to format data
  164. This function has to run everytime we populate the UI since it is a shared global function
  165. and we have to override it so 'this' refers to correct BlockJsonBase instance
  166. @method _setJsonBlockGlobalValidationOwner
  167. **/
  168. BlockJsonBase.prototype._setJsonBlockGlobalValidationOwner = function (i_this) {
  169. // add draggable icons
  170. //BB.lib.collectionDragIcons = function () {
  171. // return '<div class="dragIconTable"><i class="fa fa-arrows-v"></i></div>';
  172. //};
  173. // register a global shared function to validate checkbox state
  174. //BB.lib.collectionChecks = function (value, row, index) {
  175. // return {
  176. // checked: false,
  177. // disabled: false
  178. // }
  179. //};
  180. BB.lib.jsonEventAction = function (value, row, index) {
  181. var buffer = '<select class="' + BB.lib.unclass(Elements.CLASS_JSON_EVENT_ACTION) + ' btn">';
  182. _.forEach(i_this.m_actions, function (name, value) {
  183. if (row.action == name) {
  184. buffer += '<option selected>' + name + '</option>';
  185. }
  186. else {
  187. buffer += '<option>' + name + '</option>';
  188. }
  189. });
  190. return buffer + '</select>';
  191. };
  192. BB.lib.jsonEventActionGoToItem = function (value, row, index) {
  193. var visibilityClass = row.action == 'loadURL' ? '' : 'hidden';
  194. var buffer = '<input class="' + visibilityClass + ' ' + BB.lib.unclass(Elements.CLASS_JSON_EVENT_ACTION_GOTO) + ' " value="' + row.url + '" >';
  195. return buffer;
  196. };
  197. };
  198. /**
  199. Listen in Event Action go to dropdown selections
  200. @method _listenActionURLChange
  201. **/
  202. BlockJsonBase.prototype._listenActionURLChange = function () {
  203. var self = this;
  204. if (self.m_onDropDownEventActionGoToHandler)
  205. $(Elements.CLASS_JSON_EVENT_ACTION_GOTO).off('change', self.m_onDropDownEventActionGoToHandler);
  206. self.m_onDropDownEventActionGoToHandler = function (e) {
  207. if (!self.m_selected)
  208. return;
  209. var url = $(this).val();
  210. var index = $(this).closest('[data-index]').attr('data-index');
  211. var domPlayerData = self._getBlockPlayerData();
  212. var target = $(domPlayerData).find('EventCommands').children().get(parseInt(index));
  213. $(target).find('Params').remove();
  214. $(target).append('<Params> <Url name="' + url + '" /></Params>');
  215. self._setBlockPlayerData(BB.Pepper.xmlToStringIEfix(domPlayerData), BB.CONSTS.NO_NOTIFICATION, true);
  216. self._populateTableEvents();
  217. };
  218. $(Elements.CLASS_JSON_EVENT_ACTION_GOTO).on('change', self.m_onDropDownEventActionGoToHandler);
  219. };
  220. /**
  221. Listen in Event Action dropdown selections
  222. @method _listenDropdownEvenActionSelection
  223. **/
  224. BlockJsonBase.prototype._listenDropdownEvenActionSelection = function () {
  225. var self = this;
  226. if (self.m_onDropDownEventActionHandler)
  227. $(Elements.CLASS_JSON_EVENT_ACTION).off('change', self.m_onDropDownEventActionHandler);
  228. self.m_onDropDownEventActionHandler = function (e) {
  229. if (!self.m_selected)
  230. return;
  231. var selected = $("option:selected", this).val();
  232. var actions = _.invert(self.m_actions);
  233. var action = actions[selected];
  234. var index = $(this).closest('[data-index]').attr('data-index');
  235. var domPlayerData = self._getBlockPlayerData();
  236. var target = $(domPlayerData).find('EventCommands').children().get(parseInt(index));
  237. $(target).attr('command', action);
  238. self._setBlockPlayerData(domPlayerData, BB.CONSTS.NO_NOTIFICATION);
  239. self._populateTableEvents();
  240. };
  241. $(Elements.CLASS_JSON_EVENT_ACTION).on('change', self.m_onDropDownEventActionHandler);
  242. };
  243. /**
  244. Populate the LI with all available scenes from msdb
  245. if the mimetype is empty (used for this class) we show all scenes in dropdown, but if mimetype exists
  246. (used by subclasses of this class) we filter dropdown list by matching mimetypes
  247. @method _populateSceneDropdown
  248. **/
  249. BlockJsonBase.prototype._populateSceneDropdown = function () {
  250. var self = this;
  251. var selected = '';
  252. var snippet = ['<option selected">Select scene to use'];
  253. $(Elements.JSON_DROPDOWN).empty();
  254. var scenenames = BB.Pepper.getSceneNames();
  255. if (_.size(scenenames) == 0)
  256. return;
  257. var domPlayerData = self._getBlockPlayerData();
  258. var xSnippet = $(domPlayerData).find('Json');
  259. var xSnippetPlayer = $(xSnippet).find('Player');
  260. var selectedSceneID = $(xSnippetPlayer).attr('hDataSrc');
  261. for (var sceneID in scenenames) {
  262. var mimeType = scenenames[sceneID].mimeType;
  263. var label = scenenames[sceneID].label;
  264. if (self.m_mimeType != '' && self.m_mimeType != mimeType)
  265. continue;
  266. if (sceneID == selectedSceneID) {
  267. selected = 'selected';
  268. snippet.shift();
  269. }
  270. else {
  271. selected = '';
  272. }
  273. snippet.push("<option " + selected + " data-scene_id=\"" + sceneID + "\">" + label + "</option>");
  274. }
  275. $(Elements.JSON_DROPDOWN).append($(snippet.join(' ')));
  276. };
  277. /**
  278. Populate the UI of the scene interval selector
  279. @method _populateInterval
  280. @param {Number} i_interval
  281. **/
  282. BlockJsonBase.prototype._populateInterval = function (i_interval) {
  283. var self = this;
  284. var interval = Number(i_interval);
  285. $('.spinner', Elements.BLOCK_JSON_COMMON_PROPERTIES).spinner('value', interval);
  286. };
  287. /**
  288. Populate Url input field
  289. @method _populateUrlInput
  290. @param {String} i_url
  291. **/
  292. BlockJsonBase.prototype._populateUrlInput = function (i_url) {
  293. var self = this;
  294. $(Elements.JSON_URL_INPUT).val(i_url);
  295. };
  296. /**
  297. Load up property values in the common panel
  298. @method _populate
  299. @return none
  300. **/
  301. BlockJsonBase.prototype._populate = function () {
  302. var self = this;
  303. var domPlayerData = self._getBlockPlayerData();
  304. var xSnippet = $(domPlayerData).find('Json');
  305. var url = $(xSnippet).attr('url');
  306. var xSnippetPlayer = $(xSnippet).find('Player');
  307. var sceneID = $(xSnippetPlayer).attr('hDataSrc');
  308. var interval = $(xSnippet).attr('itemInterval');
  309. var itemsPath = $(xSnippet).attr('itemsPath');
  310. var playVideoInFull = $(xSnippet).attr('playVideoInFull');
  311. var randomOrder = $(xSnippet).attr('randomOrder');
  312. var slideShow = $(xSnippet).attr('slideShow');
  313. self._populateEventVisibility(slideShow);
  314. self._populateSceneDropdown();
  315. self._populateUrlInput(url);
  316. self._populateInterval(interval);
  317. self._populateObjectPlayToCompletion(playVideoInFull);
  318. self._populateSlideShow(slideShow);
  319. self._populateRandomPlayback(randomOrder);
  320. self._populateObjectPath(itemsPath);
  321. self._setJsonBlockGlobalValidationOwner(self);
  322. self._populateTableEvents();
  323. self._updateJsonPaths();
  324. };
  325. /**
  326. By default hide the JSON URL and JSON Object paths inputs
  327. @method _showJsonPaths
  328. **/
  329. BlockJsonBase.prototype._updateJsonPaths = function () {
  330. $(Elements.JSON_PATHS_CONTAINER).slideUp();
  331. };
  332. /**
  333. Show or hide the events UI depending on slideshow mode
  334. @method _populateEventVisibility
  335. @param {Number} i_slideShow
  336. **/
  337. BlockJsonBase.prototype._populateEventVisibility = function (i_slideShow) {
  338. if (i_slideShow == "1") {
  339. $(Elements.JSON_EVENTS_CONTAINER).hide();
  340. }
  341. else {
  342. $(Elements.JSON_EVENTS_CONTAINER).show();
  343. }
  344. };
  345. /**
  346. Populate Object json path using dot notation
  347. @method _populateObjectPath
  348. @params {String} i_objectPath
  349. **/
  350. BlockJsonBase.prototype._populateObjectPath = function (i_objectPath) {
  351. var self = this;
  352. $(Elements.JSON_PATH_INPUT).val(i_objectPath);
  353. };
  354. /**
  355. Populate json object play to completion if we are pulling videos from the json path
  356. @method _populateObjectPlayToCompletion
  357. @params {Boolean} i_playToCompletion
  358. **/
  359. BlockJsonBase.prototype._populateObjectPlayToCompletion = function (i_playToCompletion) {
  360. var self = this;
  361. if (i_playToCompletion == '1') {
  362. $(Elements.JSON_PLAY_VIDEO_COMPLETION).prop('checked', true);
  363. }
  364. else {
  365. $(Elements.JSON_PLAY_VIDEO_COMPLETION).prop('checked', false);
  366. }
  367. };
  368. /**
  369. Populate json slideshow mode
  370. @method _populateSlideShow
  371. @params {Boolean} i_slideshow
  372. **/
  373. BlockJsonBase.prototype._populateSlideShow = function (i_slideshow) {
  374. var self = this;
  375. if (i_slideshow == '1') {
  376. $(Elements.JSON_SLIDESHOW).prop('checked', true);
  377. }
  378. else {
  379. $(Elements.JSON_SLIDESHOW).prop('checked', false);
  380. }
  381. };
  382. /**
  383. Populate json object random playback
  384. @method _populateRandomPlayback
  385. @params {Boolean} i_randomPlayback
  386. **/
  387. BlockJsonBase.prototype._populateRandomPlayback = function (i_randomPlayback) {
  388. var self = this;
  389. if (i_randomPlayback == '1') {
  390. $(Elements.JSON_RANDOM_PLAYBACK).prop('checked', true);
  391. }
  392. else {
  393. $(Elements.JSON_RANDOM_PLAYBACK).prop('checked', false);
  394. }
  395. };
  396. /**
  397. Listen to changes in the scene interval control
  398. @method _listenIntervalChange
  399. **/
  400. BlockJsonBase.prototype._listenIntervalChange = function () {
  401. var self = this;
  402. $('.spinner', Elements.BLOCK_JSON_COMMON_PROPERTIES).spinner({ value: 4, min: 1, max: 9999, step: 1 });
  403. $(Elements.JSON_INTERVAL_INPUT).prop('disabled', true).css({ backgroundColor: 'transparent' });
  404. self.m_intervalInput = _.debounce(function (e) {
  405. if (!self.m_selected)
  406. return;
  407. if ($(e.target).prop("tagName") == 'INPUT')
  408. return;
  409. var interval = $(Elements.JSON_INTERVAL_INPUT).val();
  410. var domPlayerData = self._getBlockPlayerData();
  411. var xSnippet = $(domPlayerData).find('Json');
  412. $(xSnippet).attr('itemInterval', interval);
  413. self._setBlockPlayerData(domPlayerData, BB.CONSTS.NO_NOTIFICATION);
  414. }, 250, false);
  415. $('.spinner', Elements.BLOCK_JSON_COMMON_PROPERTIES).on('mouseup', self.m_intervalInput);
  416. };
  417. /**
  418. Wire changing of campaign name through scene properties
  419. @method _listenObjectPathChange
  420. @return none
  421. **/
  422. BlockJsonBase.prototype._listenObjectPathChange = function () {
  423. var self = this;
  424. self.m_pathChange = _.debounce(function (e) {
  425. if (!self.m_selected)
  426. return;
  427. var itemsPath = $(e.target).val();
  428. var domPlayerData = self._getBlockPlayerData();
  429. var xSnippet = $(domPlayerData).find('Json');
  430. $(xSnippet).attr('itemsPath', itemsPath);
  431. self._setBlockPlayerData(domPlayerData, BB.CONSTS.NO_NOTIFICATION);
  432. }, 333, false);
  433. $(Elements.JSON_PATH_INPUT).on("input", self.m_pathChange);
  434. };
  435. /**
  436. Listen to Video Play to completion change mode
  437. @method _listenVideoPlayToCompletion
  438. @return none
  439. **/
  440. BlockJsonBase.prototype._listenVideoPlayToCompletion = function () {
  441. var self = this;
  442. self.m_playVideoCompletion = function (e) {
  443. if (!self.m_selected)
  444. return;
  445. var mode = $(e.target).prop('checked') == true ? 1 : 0;
  446. var domPlayerData = self._getBlockPlayerData();
  447. var xSnippet = $(domPlayerData).find('Json');
  448. $(xSnippet).attr('playVideoInFull', mode);
  449. self._setBlockPlayerData(domPlayerData, BB.CONSTS.NO_NOTIFICATION);
  450. };
  451. $(Elements.JSON_PLAY_VIDEO_COMPLETION).on("change", self.m_playVideoCompletion);
  452. };
  453. /**
  454. Listen to Video Play to completion change mode
  455. @method _listenVideoPlayToCompletion
  456. @return none
  457. **/
  458. BlockJsonBase.prototype._listenRandomPlayback = function () {
  459. var self = this;
  460. self.m_randomPlayback = function (e) {
  461. if (!self.m_selected)
  462. return;
  463. var mode = $(e.target).prop('checked') == true ? 1 : 0;
  464. var domPlayerData = self._getBlockPlayerData();
  465. var xSnippet = $(domPlayerData).find('Json');
  466. $(xSnippet).attr('randomOrder', mode);
  467. self._setBlockPlayerData(domPlayerData, BB.CONSTS.NO_NOTIFICATION);
  468. };
  469. $(Elements.JSON_RANDOM_PLAYBACK).on("change", self.m_randomPlayback);
  470. };
  471. /**
  472. Listen to slideshow change mode
  473. @method _listenSlideShowMode
  474. @return none
  475. **/
  476. BlockJsonBase.prototype._listenSlideShowMode = function () {
  477. var self = this;
  478. self.m_slideShow = function (e) {
  479. if (!self.m_selected)
  480. return;
  481. var mode = $(e.target).prop('checked') == true ? 1 : 0;
  482. self._populateEventVisibility(mode);
  483. var domPlayerData = self._getBlockPlayerData();
  484. var xSnippet = $(domPlayerData).find('Json');
  485. $(xSnippet).attr('slideShow', mode);
  486. self._setBlockPlayerData(domPlayerData, BB.CONSTS.NO_NOTIFICATION);
  487. };
  488. $(Elements.JSON_SLIDESHOW).on("change", self.m_slideShow);
  489. };
  490. /**
  491. Wire changing of campaign name through scene properties
  492. @method _listenUrlChange
  493. @return none
  494. **/
  495. BlockJsonBase.prototype._listenUrlChange = function () {
  496. var self = this;
  497. self.m_urlChange = _.debounce(function (e) {
  498. if (!self.m_selected)
  499. return;
  500. var url = $(e.target).val();
  501. var domPlayerData = self._getBlockPlayerData();
  502. var xSnippet = $(domPlayerData).find('Json');
  503. $(xSnippet).attr('url', url);
  504. self._setBlockPlayerData(domPlayerData, BB.CONSTS.NO_NOTIFICATION);
  505. }, 333, false);
  506. $(Elements.JSON_URL_INPUT).on("input", self.m_urlChange);
  507. };
  508. /**
  509. Listen to the global scene list changes event so we can update the list of available scenes
  510. @method _listenSceneListChange
  511. **/
  512. BlockJsonBase.prototype._listenSceneListChange = function () {
  513. var self = this;
  514. BB.comBroker.listenWithNamespace(BB.EVENTS.SCENE_LIST_UPDATED, self, function (e) {
  515. if (!self.m_selected)
  516. return;
  517. self._populateSceneDropdown();
  518. });
  519. };
  520. /**
  521. Listen to playlist changes dropdown
  522. @method _listenSceneDropdownChange
  523. **/
  524. BlockJsonBase.prototype._listenSceneDropdownChange = function () {
  525. var self = this;
  526. self.m_bindScene = function (e) {
  527. if (!self.m_selected)
  528. return;
  529. //var listType = $(e.target).attr('name');
  530. //if (_.isUndefined(listType))
  531. // return;
  532. var $selected = $(e.target).find(':selected');
  533. //var sceneName = $(e.target).text();
  534. var sceneID = $selected.attr('data-scene_id');
  535. var domPlayerData = self._getBlockPlayerData();
  536. var xSnippet = $(domPlayerData).find('Json');
  537. var xSnippetPlayer = $(xSnippet).find('Player');
  538. $(xSnippetPlayer).attr('hDataSrc', sceneID);
  539. BB.lib.log('assigning to scene ' + sceneID);
  540. self._setBlockPlayerData(domPlayerData, BB.CONSTS.NO_NOTIFICATION);
  541. };
  542. $(Elements.JSON_DROPDOWN).on('change', self.m_bindScene);
  543. };
  544. /**
  545. Populate the common block properties panel, called from base class if exists
  546. @method _loadBlockSpecificProps
  547. @return none
  548. **/
  549. BlockJsonBase.prototype._loadBlockSpecificProps = function () {
  550. var self = this;
  551. self._populate();
  552. this._viewSubPanel(Elements.BLOCK_JSON_COMMON_PROPERTIES);
  553. };
  554. /**
  555. Delete this block
  556. @method deleteBlock
  557. @params {Boolean} i_memoryOnly if true only remove from existance but not from msdb
  558. **/
  559. BlockJsonBase.prototype.deleteBlock = function (i_memoryOnly) {
  560. var self = this;
  561. $('.spinner', Elements.BLOCK_JSON_COMMON_PROPERTIES).off('mouseup', self.m_intervalInput);
  562. $(Elements.CLASS_JSON_EVENT_ACTION).off('change', self.m_onDropDownEventActionHandler);
  563. $(Elements.CLASS_JSON_EVENT_ACTION_GOTO).off('change', self.m_onDropDownEventActionGoToHandler);
  564. $(Elements.ADD_JSON_EVENTS).off('click', self.m_addNewEvent);
  565. $(Elements.REMOVE_JSON_EVENTS).off('click', self.m_removeEvent);
  566. $(Elements.JSON_DROPDOWN).off('change', self.m_bindScene);
  567. $(Elements.JSON_URL_INPUT).off("input", self.m_urlChange);
  568. $(Elements.JSON_PATH_INPUT).off("input", self.m_pathChange);
  569. $(Elements.JSON_PLAY_VIDEO_COMPLETION).off("change", self.m_playVideoCompletion);
  570. $(Elements.JSON_RANDOM_PLAYBACK).off("change", self.m_randomPlayback);
  571. $(Elements.JSON_SLIDESHOW).off("change", self.m_slideShow);
  572. BB.comBroker.stopListenWithNamespace(BB.EVENTS.SCENE_LIST_UPDATED, self);
  573. BB.comBroker.stopListen(BB.EVENTS.JSON_EVENT_ROW_CHANGED, self.m_jsonRowEventChangedHandler);
  574. self._deleteBlock(i_memoryOnly);
  575. };
  576. return BlockJsonBase;
  577. })(TSLiteModules.Block);
  578. return BlockJsonBase;
  579. });
  580. //# sourceMappingURL=BlockJsonBase.js.map