- ///<reference path="../../typings/lite/app_references.d.ts" />
- var __extends = (this && this.__extends) || function (d, b) {
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- //GULP_ABSTRACT_END
- define(['jquery', 'BlockJsonBase', 'validator'], function ($, BlockJsonBase, validator) {
- TSLiteModules.BlockJsonBase = BlockJsonBase;
- /**
- BlockGoogleSheets is based on JSON base class component
- @class BlockGoogleSheets
- @constructor
- @return {Object} instantiated BlockGoogleSheets
- 6e2919a1-47f0-4a4f-bd94-de7ecfbe604d
- **/
- var BlockGoogleSheets = (function (_super) {
- __extends(BlockGoogleSheets, _super);
- function BlockGoogleSheets(options) {
- this.m_options = options;
- this.m_blockType = 6022;
- _.extend(this.m_options, { blockType: this.m_blockType });
- _super.call(this);
- }
- /**
- Init sub class and super on base
- @method initialize
- **/
- BlockGoogleSheets.prototype.initialize = function () {
- var self = this;
- self.m_minTokenLength = 15;
- _super.prototype.initialize.call(this, this.m_options);
- self.m_mimeType = 'Json.spreadsheet';
- self._initSettingsPanel();
- self._listenSheetChanged();
- self._listenTokenChanged();
- self._listenRefreshSheetList();
- self._loadSheetList();
- };
- /**
- Get current token from msdb
- @method _getToken
- @return {string} token
- **/
- BlockGoogleSheets.prototype._getToken = function () {
- var self = this;
- var domPlayerData = self._getBlockPlayerData();
- var item = $(domPlayerData).find('Json').find('Data');
- return $(item).attr('token');
- };
- /**
- Get current fileID from msdb
- @method _getFileId
- @return {string} id
- **/
- BlockGoogleSheets.prototype._getFileId = function () {
- var self = this;
- var domPlayerData = self._getBlockPlayerData();
- var item = $(domPlayerData).find('Json').find('Data');
- return $(item).attr('id');
- };
- /**
- Load list of latest sheets from server
- @method _listenRefreshSheetList
- @param {Number} i_playerData
- @return {Number} Unique clientId.
- **/
- BlockGoogleSheets.prototype._listenRefreshSheetList = function () {
- var self = this;
- self.m_sheetsRefreshHandler = function (e) {
- if (!self.m_selected)
- return;
- var token = self._getToken();
- if (token.length < self.m_minTokenLength) {
- bootbox.alert($(Elements.MSG_BOOTBOX_TOKEN_TOO_SHORT).text());
- return;
- }
- self._loadSheetList();
- };
- $(Elements.GOOGLE_SHEET_REFRESH).on('click', self.m_sheetsRefreshHandler);
- };
- /**
- Listen sheet selected / changed
- @method _listenSheetChanged
- **/
- BlockGoogleSheets.prototype._listenSheetChanged = function () {
- var self = this;
- self.m_sheetsChangedHandler = function (e) {
- if (!self.m_selected)
- return;
- var value = $(Elements.GOOGLE_SHEET + ' option:selected').val();
- var domPlayerData = self._getBlockPlayerData();
- var item = $(domPlayerData).find('Json').find('Data');
- $(item).attr('id', value);
- self._setBlockPlayerData(domPlayerData, BB.CONSTS.NO_NOTIFICATION);
- };
- $(Elements.GOOGLE_SHEET).on('change', self.m_sheetsChangedHandler);
- };
- /**
- Listen token updated
- @method _listenTokenChanged
- **/
- BlockGoogleSheets.prototype._listenTokenChanged = function () {
- var self = this;
- self.m_tokenChangedHandler = function (e) {
- if (!self.m_selected)
- return;
- var value = $(Elements.GOOGLE_SHEET_TOKEN).val();
- var domPlayerData = self._getBlockPlayerData();
- var item = $(domPlayerData).find('Json').find('Data');
- $(item).attr('token', value);
- self._setBlockPlayerData(domPlayerData, BB.CONSTS.NO_NOTIFICATION);
- self._loadSheetList();
- };
- $(Elements.GOOGLE_SHEET_TOKEN).on('change', self.m_tokenChangedHandler);
- };
- /**
- Clear the list of Google sheets
- @method _clearSheetList
- **/
- BlockGoogleSheets.prototype._clearSheetList = function () {
- var self = this;
- $(Elements.GOOGLE_SHEET).empty();
- $(Elements.GOOGLE_SHEET).selectpicker('refresh');
- };
- /**
- Load latest sheets from Google services
- @method _loadSheetList
- **/
- BlockGoogleSheets.prototype._loadSheetList = function () {
- var self = this;
- self._clearSheetList();
- var token = self._getToken();
- if (token.length < self.m_minTokenLength)
- return;
- try {
- $.ajax({
- url: 'https://secure.digitalsignage.com/GoogleSheetsList/' + token,
- dataType: "json",
- type: "post",
- complete: function (response, status) {
- if (!self.m_selected)
- return;
- self._clearSheetList();
- //BB.lib.log('from sheets ' + response.responseText);
- if (_.isUndefined(response.responseText) || response.responseText.length == 0)
- return;
- var jData = JSON.parse(response.responseText);
- var snippet = "<option value=\"\">Nothing selected</option>";
- _.forEach(jData, function (k) {
- snippet += "<option value=\"" + k.id + "\">" + k.title + "</option>";
- });
- $(Elements.GOOGLE_SHEET).append(snippet);
- var id = self._getFileId();
- if (id.length > self.m_minTokenLength)
- $(Elements.GOOGLE_SHEET).val(id);
- $(Elements.GOOGLE_SHEET).selectpicker('refresh');
- },
- error: function (jqXHR, exception) {
- BB.lib.log(jqXHR, exception);
- }
- });
- }
- catch (e) {
- BB.lib.log('error on ajax' + e);
- }
- };
- /**
- Init the settings panel that's used by Block common props for JSON based components
- @method _initSettingsPanel
- **/
- BlockGoogleSheets.prototype._initSettingsPanel = function () {
- var self = this;
- self.m_blockProperty.initSettingsPanel(Elements.BLOCK_COMMON_SETTINGS_GOOGLE_SHEETS);
- };
- /**
- Load block specific properties
- @override
- @method _loadBlockSpecificProps
- **/
- BlockGoogleSheets.prototype._loadBlockSpecificProps = function () {
- var self = this;
- self.m_blockProperty.viewSettingsPanel(Elements.BLOCK_COMMON_SETTINGS_GOOGLE_SHEETS);
- _super.prototype._loadBlockSpecificProps.call(this);
- };
- /**
- Populate UI
- @method _populate
- **/
- BlockGoogleSheets.prototype._populate = function () {
- var self = this;
- _super.prototype._populate.call(this);
- var domPlayerData = self._getBlockPlayerData();
- var $data = $(domPlayerData).find('Json').find('Data');
- var style = $data.attr('id');
- var token = $data.attr('token');
- $(Elements.GOOGLE_SHEET).selectpicker('val', style);
- $(Elements.GOOGLE_SHEET_TOKEN).val(token);
- self._loadSheetList();
- };
- /**
- Delete this block
- @method deleteBlock
- @params {Boolean} i_memoryOnly if true only remove from existance but not from msdb
- **/
- BlockGoogleSheets.prototype.deleteBlock = function (i_memoryOnly) {
- var self = this;
- $(Elements.GOOGLE_SHEET).off('change', self.m_sheetsChangedHandler);
- $(Elements.GOOGLE_SHEET_TOKEN).off('change', self.m_tokenChangedHandler);
- $(Elements.GOOGLE_SHEET_REFRESH).off('click', self.m_sheetsRefreshHandler);
- _super.prototype.deleteBlock.call(this, i_memoryOnly);
- };
- return BlockGoogleSheets;
- })(TSLiteModules.BlockJsonBase);
- return BlockGoogleSheets;
- });
- //# sourceMappingURL=BlockGoogleSheets.js.map
-