///<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'], function ($) {
BB.SERVICES.SCENES_CREATION_VIEW = 'ScenesCreationView';
/**
Wizard which allows user to select which scene to create, such as from a template, blank, with mimetype etc
@class SceneCreatorView
@constructor
@return {Object} instantiated SceneCreatorView
**/
var SceneCreatorView = (function (_super) {
__extends(SceneCreatorView, _super);
function SceneCreatorView(options) {
this.m_options = options;
_super.call(this);
}
SceneCreatorView.prototype.initialize = function () {
var self = this;
self.id = self.m_options.el;
self.$el = $(this.id);
self.el = this.$el.get(0);
self.m_sceneConfig = [];
BB.comBroker.setService(BB.SERVICES.SCENES_CREATION_VIEW, self);
self.m_sceneSelector = BB.comBroker.getService(BB.SERVICES.SCENES_CREATION_VIEW);
//BB.comBroker.setService(BB.SERVICES['SETTINGS_VIEW'], self);
self.listenTo(self.m_options.stackView, BB.EVENTS.SELECTED_STACK_VIEW, function (e) {
if (e === self && !self.m_rendered) {
self._render();
self.m_rendered = true;
}
});
$(self.el).find('#prev').on('click', function () {
self._goBack();
return false;
});
};
/**
Go back with slider
@method _goBack
**/
SceneCreatorView.prototype._goBack = function () {
var self = this;
self.m_options.stackView.slideToPage(self.m_options.from, 'left');
};
SceneCreatorView.prototype._nameScene = function (i_cb) {
var self = this;
bootbox.prompt("Give your scene a name:", function (result) {
if (result === null) {
i_cb();
}
else {
result = BB.lib.cleanChar(result);
i_cb(result);
}
});
};
/**
Listen to user selecting specific type of scene to create
@method _listenSelectScene
**/
SceneCreatorView.prototype._listenSelectScene = function () {
var self = this;
$(self.el).on('click', function (e) {
var mimeType = $(e.target).closest('.profileCard').data('mimetype');
if (_.isUndefined(mimeType))
return;
switch (mimeType) {
case 'blank':
{
self._nameScene(function (i_name) {
if (_.isUndefined(i_name) || i_name.length == 0)
return;
BB.comBroker.fire(BB.EVENTS.NEW_SCENE_ADD, this, null, {
name: i_name,
mimeType: ''
});
BB.comBroker.fire(BB.EVENTS.SCENE_LIST_UPDATED, this, this, 'pushToTop');
self._goBack();
});
break;
}
case 'template':
{
BB.comBroker.getService(BB.SERVICES.SCENE_CREATOR_TEMPLATE_VIEW).setSceneMimeType('all');
self.m_options.stackView.slideToPage(self.m_options.to, 'right');
break;
}
case 'Json.digg':
{
BB.comBroker.getService(BB.SERVICES.SCENE_CREATOR_TEMPLATE_VIEW).setSceneMimeType('Json.digg');
self.m_options.stackView.slideToPage(self.m_options.to, 'right');
break;
}
case 'Json.twitter':
{
BB.comBroker.getService(BB.SERVICES.SCENE_CREATOR_TEMPLATE_VIEW).setSceneMimeType('Json.twitter');
self.m_options.stackView.slideToPage(self.m_options.to, 'right');
break;
}
case 'Json.instagram.feed':
{
BB.comBroker.getService(BB.SERVICES.SCENE_CREATOR_TEMPLATE_VIEW).setSceneMimeType('Json.instagram');
self.m_options.stackView.slideToPage(self.m_options.to, 'right');
break;
}
case 'Json.calendar':
{
BB.comBroker.getService(BB.SERVICES.SCENE_CREATOR_TEMPLATE_VIEW).setSceneMimeType('Json.calendar');
self.m_options.stackView.slideToPage(self.m_options.to, 'right');
break;
}
case 'Json.weather':
{
BB.comBroker.getService(BB.SERVICES.SCENE_CREATOR_TEMPLATE_VIEW).setSceneMimeType('Json.weather');
self.m_options.stackView.slideToPage(self.m_options.to, 'right');
break;
}
case 'Json.spreadsheet':
{
BB.comBroker.getService(BB.SERVICES.SCENE_CREATOR_TEMPLATE_VIEW).setSceneMimeType('Json.spreadsheet');
self.m_options.stackView.slideToPage(self.m_options.to, 'right');
break;
}
}
});
};
/**
Render the view
@method _render
**/
SceneCreatorView.prototype._render = function () {
var self = this;
if (self.m_rendered)
return;
self.m_sceneConfig = [
{
name: $(Elements.BOOTBOX_START_BLANK).text(),
mimeType: 'blank',
icon: 'fa-star',
description: $(Elements.BOOTBOX_CREATE_DESIGN).text()
},
{
name: $(Elements.BOOTBOX_FROM_TEMPLATE).text(),
mimeType: 'template',
icon: 'fa-paint-brush',
description: $(Elements.BOOTBOX_PRE_MADE_SCENES).text()
}
];
var blocks = (BB.PepperHelper.getBlocks());
_.forEach(blocks, function (block) {
if (block.mimeType) {
self.m_sceneConfig.push({
name: block.description,
mimeType: block.mimeType,
icon: block.fontAwesome,
description: block.jsonItemLongDescription
});
}
});
var snippet = '';
_.forEach(self.m_sceneConfig, function (block) {
snippet += "\n <div data-mimetype=\"" + block.mimeType + "\" class=\"col-xs-12 col-sm-6 col-md-6 col-lg-4 profileCard\">\n <div class=\"profileCard1\">\n <div class=\"pImg\">\n <span class=\"fa " + block.icon + " fa-4x\"></span>\n </div>\n <div class=\"pDes\">\n <h1 class=\"text-center\">" + block.name + "</h1>\n <p>" + block.description + "</p>\n <a class=\"btn btn-md\">\n <span class=\"fa fa-plus fa-2x\"></span>\n </a>\n </div>\n </div>\n </div>\n ";
});
$(Elements.SELECT_SCENE_TYPE_CREATE).append(snippet);
self._listenSelectScene();
};
/**
Select scene creation and give it a set name (instead of click operation we can do it manually)
@method createScene
@param {String} i_name
**/
SceneCreatorView.prototype.createBlankScene = function (i_name) {
var self = this;
i_name = BB.lib.cleanChar(i_name);
BB.comBroker.fire(BB.EVENTS.NEW_SCENE_ADD, this, null, {
name: i_name,
mimeType: ''
});
BB.comBroker.fire(BB.EVENTS.SCENE_LIST_UPDATED, this, this, 'pushToTop');
self._goBack();
};
return SceneCreatorView;
}(Backbone.View));
return SceneCreatorView;
});
//# sourceMappingURL=SceneCreatorView.js.map