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', 'BlockJsonBase', 'validator'], function ($, BlockJsonBase, validator) {
  9. TSLiteModules.BlockJsonBase = BlockJsonBase;
  10. /**
  11. BlockGoogleSheets is based on JSON base class component
  12. @class BlockGoogleSheets
  13. @constructor
  14. @return {Object} instantiated BlockGoogleSheets
  15. 6e2919a1-47f0-4a4f-bd94-de7ecfbe604d
  16. **/
  17. var BlockGoogleSheets = (function (_super) {
  18. __extends(BlockGoogleSheets, _super);
  19. function BlockGoogleSheets(options) {
  20. this.m_options = options;
  21. this.m_blockType = 6022;
  22. _.extend(this.m_options, { blockType: this.m_blockType });
  23. _super.call(this);
  24. }
  25. /**
  26. Init sub class and super on base
  27. @method initialize
  28. **/
  29. BlockGoogleSheets.prototype.initialize = function () {
  30. var self = this;
  31. self.m_minTokenLength = 15;
  32. _super.prototype.initialize.call(this, this.m_options);
  33. self.m_mimeType = 'Json.spreadsheet';
  34. self._initSettingsPanel();
  35. self._listenSheetChanged();
  36. self._listenTokenChanged();
  37. self._listenRefreshSheetList();
  38. self._loadSheetList();
  39. };
  40. /**
  41. Get current token from msdb
  42. @method _getToken
  43. @return {string} token
  44. **/
  45. BlockGoogleSheets.prototype._getToken = function () {
  46. var self = this;
  47. var domPlayerData = self._getBlockPlayerData();
  48. var item = $(domPlayerData).find('Json').find('Data');
  49. return $(item).attr('token');
  50. };
  51. /**
  52. Get current fileID from msdb
  53. @method _getFileId
  54. @return {string} id
  55. **/
  56. BlockGoogleSheets.prototype._getFileId = function () {
  57. var self = this;
  58. var domPlayerData = self._getBlockPlayerData();
  59. var item = $(domPlayerData).find('Json').find('Data');
  60. return $(item).attr('id');
  61. };
  62. /**
  63. Load list of latest sheets from server
  64. @method _listenRefreshSheetList
  65. @param {Number} i_playerData
  66. @return {Number} Unique clientId.
  67. **/
  68. BlockGoogleSheets.prototype._listenRefreshSheetList = function () {
  69. var self = this;
  70. self.m_sheetsRefreshHandler = function (e) {
  71. if (!self.m_selected)
  72. return;
  73. var token = self._getToken();
  74. if (token.length < self.m_minTokenLength) {
  75. bootbox.alert($(Elements.MSG_BOOTBOX_TOKEN_TOO_SHORT).text());
  76. return;
  77. }
  78. self._loadSheetList();
  79. };
  80. $(Elements.GOOGLE_SHEET_REFRESH).on('click', self.m_sheetsRefreshHandler);
  81. };
  82. /**
  83. Listen sheet selected / changed
  84. @method _listenSheetChanged
  85. **/
  86. BlockGoogleSheets.prototype._listenSheetChanged = function () {
  87. var self = this;
  88. self.m_sheetsChangedHandler = function (e) {
  89. if (!self.m_selected)
  90. return;
  91. var value = $(Elements.GOOGLE_SHEET + ' option:selected').val();
  92. var domPlayerData = self._getBlockPlayerData();
  93. var item = $(domPlayerData).find('Json').find('Data');
  94. $(item).attr('id', value);
  95. self._setBlockPlayerData(domPlayerData, BB.CONSTS.NO_NOTIFICATION);
  96. };
  97. $(Elements.GOOGLE_SHEET).on('change', self.m_sheetsChangedHandler);
  98. };
  99. /**
  100. Listen token updated
  101. @method _listenTokenChanged
  102. **/
  103. BlockGoogleSheets.prototype._listenTokenChanged = function () {
  104. var self = this;
  105. self.m_tokenChangedHandler = function (e) {
  106. if (!self.m_selected)
  107. return;
  108. var value = $(Elements.GOOGLE_SHEET_TOKEN).val();
  109. var domPlayerData = self._getBlockPlayerData();
  110. var item = $(domPlayerData).find('Json').find('Data');
  111. $(item).attr('token', value);
  112. self._setBlockPlayerData(domPlayerData, BB.CONSTS.NO_NOTIFICATION);
  113. self._loadSheetList();
  114. };
  115. $(Elements.GOOGLE_SHEET_TOKEN).on('change', self.m_tokenChangedHandler);
  116. };
  117. /**
  118. Clear the list of Google sheets
  119. @method _clearSheetList
  120. **/
  121. BlockGoogleSheets.prototype._clearSheetList = function () {
  122. var self = this;
  123. $(Elements.GOOGLE_SHEET).empty();
  124. $(Elements.GOOGLE_SHEET).selectpicker('refresh');
  125. };
  126. /**
  127. Load latest sheets from Google services
  128. @method _loadSheetList
  129. **/
  130. BlockGoogleSheets.prototype._loadSheetList = function () {
  131. var self = this;
  132. self._clearSheetList();
  133. var token = self._getToken();
  134. if (token.length < self.m_minTokenLength)
  135. return;
  136. try {
  137. $.ajax({
  138. url: 'https://secure.digitalsignage.com/GoogleSheetsList/' + token,
  139. dataType: "json",
  140. type: "post",
  141. complete: function (response, status) {
  142. if (!self.m_selected)
  143. return;
  144. self._clearSheetList();
  145. //BB.lib.log('from sheets ' + response.responseText);
  146. if (_.isUndefined(response.responseText) || response.responseText.length == 0)
  147. return;
  148. var jData = JSON.parse(response.responseText);
  149. var snippet = "<option value=\"\">Nothing selected</option>";
  150. _.forEach(jData, function (k) {
  151. snippet += "<option value=\"" + k.id + "\">" + k.title + "</option>";
  152. });
  153. $(Elements.GOOGLE_SHEET).append(snippet);
  154. var id = self._getFileId();
  155. if (id.length > self.m_minTokenLength)
  156. $(Elements.GOOGLE_SHEET).val(id);
  157. $(Elements.GOOGLE_SHEET).selectpicker('refresh');
  158. },
  159. error: function (jqXHR, exception) {
  160. BB.lib.log(jqXHR, exception);
  161. }
  162. });
  163. }
  164. catch (e) {
  165. BB.lib.log('error on ajax' + e);
  166. }
  167. };
  168. /**
  169. Init the settings panel that's used by Block common props for JSON based components
  170. @method _initSettingsPanel
  171. **/
  172. BlockGoogleSheets.prototype._initSettingsPanel = function () {
  173. var self = this;
  174. self.m_blockProperty.initSettingsPanel(Elements.BLOCK_COMMON_SETTINGS_GOOGLE_SHEETS);
  175. };
  176. /**
  177. Load block specific properties
  178. @override
  179. @method _loadBlockSpecificProps
  180. **/
  181. BlockGoogleSheets.prototype._loadBlockSpecificProps = function () {
  182. var self = this;
  183. self.m_blockProperty.viewSettingsPanel(Elements.BLOCK_COMMON_SETTINGS_GOOGLE_SHEETS);
  184. _super.prototype._loadBlockSpecificProps.call(this);
  185. };
  186. /**
  187. Populate UI
  188. @method _populate
  189. **/
  190. BlockGoogleSheets.prototype._populate = function () {
  191. var self = this;
  192. _super.prototype._populate.call(this);
  193. var domPlayerData = self._getBlockPlayerData();
  194. var $data = $(domPlayerData).find('Json').find('Data');
  195. var style = $data.attr('id');
  196. var token = $data.attr('token');
  197. $(Elements.GOOGLE_SHEET).selectpicker('val', style);
  198. $(Elements.GOOGLE_SHEET_TOKEN).val(token);
  199. self._loadSheetList();
  200. };
  201. /**
  202. Delete this block
  203. @method deleteBlock
  204. @params {Boolean} i_memoryOnly if true only remove from existance but not from msdb
  205. **/
  206. BlockGoogleSheets.prototype.deleteBlock = function (i_memoryOnly) {
  207. var self = this;
  208. $(Elements.GOOGLE_SHEET).off('change', self.m_sheetsChangedHandler);
  209. $(Elements.GOOGLE_SHEET_TOKEN).off('change', self.m_tokenChangedHandler);
  210. $(Elements.GOOGLE_SHEET_REFRESH).off('click', self.m_sheetsRefreshHandler);
  211. _super.prototype.deleteBlock.call(this, i_memoryOnly);
  212. };
  213. return BlockGoogleSheets;
  214. })(TSLiteModules.BlockJsonBase);
  215. return BlockGoogleSheets;
  216. });
  217. //# sourceMappingURL=BlockGoogleSheets.js.map