snappymail/dev/Components/Abstract.js
2014-10-29 02:58:21 +04:00

73 lines
1.2 KiB
JavaScript

(function () {
'use strict';
var
_ = require('_'),
ko = require('ko'),
Utils = require('Common/Utils')
;
/**
* @constructor
*/
function AbstractComponent()
{
this.disposable = [];
}
/**
* @type {Array}
*/
AbstractComponent.prototype.disposable = [];
AbstractComponent.prototype.dispose = function ()
{
_.each(this.disposable, function (fFuncToDispose) {
if (fFuncToDispose && fFuncToDispose.dispose)
{
fFuncToDispose.dispose();
}
});
};
/**
* @param {AbstractComponent} fClassObject
* @param {string} sTemplateID
* @return {Object}
*/
AbstractComponent.componentExportHelper = function (fClassObject, sTemplateID) {
return {
viewModel: {
createViewModel: function(oParams, oCmponentInfo) {
oParams = oParams || {};
oParams.element = null;
if (oCmponentInfo.element)
{
oParams.element = $(oCmponentInfo.element);
Utils.i18nToNode(oParams.element);
if (!Utils.isUnd(oParams.inline) && ko.unwrap(oParams.inline))
{
oParams.element.css('display', 'inline-block');
}
}
return new fClassObject(oParams);
}
},
template: {
element: sTemplateID
}
};
};
module.exports = AbstractComponent;
}());