Your IP : 18.219.40.177
/**
* LocalStorage module
*
* read and write data to localStorage
* @param {object} window global object
* @param {function} $ jQuery library
* @param {object} EventMgr EventMgr library
*/
/*global App:true */
App.LocalStorage = function(window, $, EventMgr) {
'use strict';
var init = function() {
if (window.localStorage) {
EventMgr.bind('changedTabs', updateTabsState);
EventMgr.bind('loadPage', readTabsState);
EventMgr.bind('writeDatatoLocalStorage', writeData);
EventMgr.bind('readDatafromLocalStorage', readData);
EventMgr.bind('removeDatafromLocalStorage', removeData);
EventMgr.bind('loadPage', readGlobalSettings);
EventMgr.bind('setGlobalSetting', setGlobalSetting);
}
},
pageInfo = window.pageInfo,
productId = pageInfo.product + '_5_' + pageInfo.user + '_' +
pageInfo.hostName + '_' + pageInfo.lang + pageInfo.project,
writeData = function(e, data) {
if (data && data.id) {
localStorage.setItem(data.id, JSON.stringify(data.data));
}
},
readData = function(e, data) {
},
removeData = function(e, data) {
if (data && data.id) {
localStorage.removeItem(data.id);
}
},
sortByIndex = function(a, b) {
if (a[0] && b[0]) {
return a[0].sIndex - b[0].sIndex;
} else {
return 0;
}
},
/**
* Update data of active tab in local storage
* @param {object} e
* @param {object} data
*/
updateTabsState = function(e, data) {
var tabs = data.tabs,
forceActive = data.forceActive,
tabsStorageObj = {},
keyVar,
chain,
ok,
ind, tab;
tabsStorageObj.tabs = [];
//console.log("tabhandler");
for (keyVar in tabs) {
if (tabs[keyVar].hType === 'parent' && keyVar !== 'tab0' && tabs[keyVar].pin !== true) {
chain = [];
tab = {
sIndex: tabs[keyVar].sIndex,
status: tabs[keyVar].status,
title: tabs[keyVar].title,
params: tabs[keyVar].paramObjAll,
menuFunc: tabs[keyVar].menuFunc,
help: tabs[keyVar].help
};
if (forceActive && tabs[keyVar].beforeRequest) {
tab.beforeRequest = tabs[keyVar].beforeRequest;
}
chain.push(tab);
ok = true;
ind = keyVar;
while (ok) {
if (tabs[ind].child && tabs[ind] !== undefined) {
ind = tabs[ind].child;
tab = {
status: forceActive ? tabs[ind].forceActive ? 1 : 0 : tabs[ind].status,
title: tabs[ind].title,
params: tabs[ind].paramObjAll,
help: tabs[ind].help
};
if (forceActive && tabs[ind].beforeRequest) {
tab.beforeRequest = tabs[ind].beforeRequest;
}
chain.push(tab);
} else {
ok = false;
}
}
tabsStorageObj.tabs.push(chain);
}
}
chain = null;
tabsStorageObj.tabs.sort(sortByIndex);
var tabsStorageString = JSON.stringify(tabsStorageObj);
if (typeof localStorage !== 'undefined') {
localStorage.setItem(productId, tabsStorageString);
localStorage.setItem(productId + '_time', new Date().getTime());
}
tabsStorageString = null;
tabsStorageObj = null;
data = null;
},
/**
* read local storage data when startup
*
*
*/
readTabsState = function() {
var tabsStorage,
now, timeSave,
//parse for a lot of params in startform/startpage
startFormParam = App.u.parseParams('func=' + pageInfo.startform),
startPageParam = App.u.parseParams('func=' + pageInfo.startpage);
//startpage/startform handler
if (pageInfo.startpage !== 'dashboard') {
if (pageInfo.startform) {
tabsStorage = '{"tabs": [[{"status": 1,' +
' "title": "",' +
' "params": ' + JSON.stringify(startPageParam) + '},' +
' {"status": 1,' +
' "title": "",' +
' "params": ' + JSON.stringify(startFormParam) + '}]]}';
EventMgr.trigger('readStorage', { tabs: tabsStorage });
return;
} else {
tabsStorage = '{ "tabs": [[{"status": 1, "title": "", "params":' +
' ' + JSON.stringify(startPageParam) + '}]]}';
EventMgr.trigger('readStorage', { tabs: tabsStorage });
return;
}
} else if (pageInfo.startform) {
tabsStorage = '{"tabs": [[{"status": 1, "title": "", "params":' +
' ' + JSON.stringify(startFormParam) + '}]]}';
EventMgr.trigger('readStorage', { tabs: tabsStorage });
return;
}
now = new Date().getTime();
if (localStorage.getItem(productId)) {
//check for week expiries
timeSave = localStorage.getItem(productId + '_time');
if (((now - timeSave) > (604800 * 1000)) || pageInfo.forgetTabs) {
localStorage.removeItem(productId);
localStorage.removeItem(productId + '_time');
} else {
tabsStorage = localStorage.getItem(productId);
EventMgr.trigger('readStorage', { tabs: tabsStorage });
}
}
},
readGlobalSettings = function() {
var settings = localStorage.getItem(productId + '_gs'),
settingsObj = JSON.parse(settings);
if (settingsObj) {
/* jslint forin:true */
for (var key in settingsObj) {
pageInfo[key] = settingsObj[key];
}
}
},
setGlobalSetting = function(e, data) {
var settings = localStorage.getItem(productId + '_gs'),
settingsObj = JSON.parse(settings) || {},
key = data.key,
value = data.value;
settingsObj[key] = value;
pageInfo[key] = value;
localStorage.setItem(productId + '_gs', JSON.stringify(settingsObj));
};
return {
init: init
};
}(window, $, EventMgr);