SmartIT_Extensions/BMC/smart-it-full/scripts/app/l10n/l10n-model.js

89 lines
3.1 KiB
JavaScript

"use strict";
/**
* Created by igor.samulenko on 4/18/2014.
*/
(function () {
'use strict';
angular.module('l10nModule')
.factory('l10nModel', ['l10nService', '$log', '$q', function (l10nService, $log, $q) {
var l10nModel = {
localizedMessagesDictionary: {},
messagesLoaded: false,
messageLoadPending: false
};
/**
* Public functions
*/
/**
* Get localized message by id
*
* @param {String} messageId
* @returns {String} localized message
*/
l10nModel.getLocalizedMessage = function (messageId) {
return l10nModel.localizedMessagesDictionary[messageId];
};
/**
* Load system messages.
* @returns {*}
*/
l10nModel.loadSystemMessages = function () {
if (l10nModel.messagesLoaded || l10nModel.messageLoadPending) {
return $q.when(1);
}
if (!l10nModel.messageLoadPending) {
l10nModel.messageLoadPending = true;
}
var params = {
messageType: LocalizedMessageVO.prototype.SOCIAL_MESSAGE,
locale: window.myitsmLocale
};
return l10nModel.loadMessages(params);
};
/**
* Load localized messages.
*
* @param {Object} params
* @returns {*} HTTP request promise
*/
l10nModel.loadMessages = function (params) {
var promise = l10nService.getMessages(params).$promise;
promise
.then(processMessages)
.catch(function () {
$log.error('Error getting localized messages.');
});
return promise;
};
/**
* Private functions
*/
/**
* Process message list data from server.
*
* @param {Array} data
*/
function processMessages(data) {
//$log.debug("Processing localized message data:");
//$log.debug(data);
var items = data[0].items || [];
if (!items.length) {
$log.warn('Localized messages data returned from server is empty or malformed');
}
l10nModel.localizedMessages = items.map(parseLocalizedMessage);
l10nModel.localizedMessagesDictionary = _.indexBy(l10nModel.localizedMessages, 'messageId');
l10nModel.messagesLoaded = true;
}
/**
* Transform raw data into localized message item.
*
* @param {Object} data
* @returns {LocalizedMessageVO} localized message item
*/
function parseLocalizedMessage(data) {
return new LocalizedMessageVO().build(data);
}
return l10nModel;
}]);
})();