89 lines
3.1 KiB
JavaScript
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;
|
|
}]);
|
|
})();
|