optimisations #2, basic session cache for some dropdowns
This commit is contained in:
@@ -1576,6 +1576,9 @@ def upgradeDB ():
|
|||||||
ALTER TABLE "Devices" ADD "dev_Network_Node_port" INTEGER
|
ALTER TABLE "Devices" ADD "dev_Network_Node_port" INTEGER
|
||||||
""")
|
""")
|
||||||
|
|
||||||
|
# don't hog DB access
|
||||||
|
closeDB ()
|
||||||
|
|
||||||
#-------------------------------------------------------------------------------
|
#-------------------------------------------------------------------------------
|
||||||
|
|
||||||
def openDB ():
|
def openDB ():
|
||||||
@@ -1591,6 +1594,7 @@ def openDB ():
|
|||||||
|
|
||||||
# Open DB and Cursor
|
# Open DB and Cursor
|
||||||
sql_connection = sqlite3.connect (DB_PATH, isolation_level=None)
|
sql_connection = sqlite3.connect (DB_PATH, isolation_level=None)
|
||||||
|
sql_connection.execute('pragma journal_mode=wal') #
|
||||||
sql_connection.text_factory = str
|
sql_connection.text_factory = str
|
||||||
sql_connection.row_factory = sqlite3.Row
|
sql_connection.row_factory = sqlite3.Row
|
||||||
sql = sql_connection.cursor()
|
sql = sql_connection.cursor()
|
||||||
|
|||||||
@@ -815,44 +815,85 @@ function initializeiCheck () {
|
|||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
function initializeCombos () {
|
function initializeCombos () {
|
||||||
// Initialize combos with queries
|
// Initialize combos with queries
|
||||||
initializeCombo ( $('#dropdownOwner')[0], 'getOwners', 'txtOwner');
|
initializeCombo ( '#dropdownOwner', 'getOwners', 'txtOwner', true);
|
||||||
initializeCombo ( $('#dropdownDeviceType')[0], 'getDeviceTypes', 'txtDeviceType');
|
initializeCombo ( '#dropdownDeviceType', 'getDeviceTypes', 'txtDeviceType', true);
|
||||||
initializeCombo ( $('#dropdownGroup')[0], 'getGroups', 'txtGroup');
|
initializeCombo ( '#dropdownGroup', 'getGroups', 'txtGroup', true);
|
||||||
initializeCombo ( $('#dropdownLocation')[0], 'getLocations', 'txtLocation');
|
initializeCombo ( '#dropdownLocation', 'getLocations', 'txtLocation', true);
|
||||||
initializeCombo ( $('#dropdownNetworkNodeMac')[0], 'getNetworkNodes', 'txtNetworkNodeMac');
|
initializeCombo ( '#dropdownNetworkNodeMac', 'getNetworkNodes', 'txtNetworkNodeMac', false);
|
||||||
|
|
||||||
// Initialize static combos
|
// Initialize static combos
|
||||||
initializeComboSkipRepeated ();
|
initializeComboSkipRepeated ();
|
||||||
}
|
}
|
||||||
|
|
||||||
function initializeCombo (HTMLelement, queryAction, txtDataField) {
|
function initializeCombo (dropdownId, queryAction, txtDataField, useCache) {
|
||||||
// get data from server
|
|
||||||
$.get('php/server/devices.php?action='+queryAction, function(data) {
|
|
||||||
var listData = JSON.parse(data);
|
|
||||||
var order = 1;
|
|
||||||
|
|
||||||
HTMLelement.innerHTML = ''
|
// check if we have the value cached already
|
||||||
// for each item
|
var dropdownHtmlContent = useCache ? getCache(dropdownId) : "";
|
||||||
listData.forEach(function (item, index) {
|
|
||||||
// insert line divisor
|
|
||||||
if (order != item['order']) {
|
|
||||||
HTMLelement.innerHTML += '<li class="divider"></li>';
|
|
||||||
order = item['order'];
|
|
||||||
}
|
|
||||||
|
|
||||||
id = item['name'];
|
if(dropdownHtmlContent == "")
|
||||||
// use explicitly specified id (value) if avaliable
|
{
|
||||||
if(item['id'])
|
// get data from server
|
||||||
{
|
$.get('php/server/devices.php?action='+queryAction, function(data) {
|
||||||
id = item['id'];
|
var listData = JSON.parse(data);
|
||||||
}
|
var order = 1;
|
||||||
|
|
||||||
// add dropdown item
|
|
||||||
HTMLelement.innerHTML +=
|
// for each item
|
||||||
'<li><a href="javascript:void(0)" onclick="setTextValue(\''+
|
listData.forEach(function (item, index) {
|
||||||
txtDataField +'\',\''+ id +'\')">'+ item['name'] + '</a></li>'
|
// insert line divisor
|
||||||
|
if (order != item['order']) {
|
||||||
|
dropdownHtmlContent += '<li class="divider"></li>';
|
||||||
|
order = item['order'];
|
||||||
|
}
|
||||||
|
|
||||||
|
id = item['name'];
|
||||||
|
// use explicitly specified id (value) if avaliable
|
||||||
|
if(item['id'])
|
||||||
|
{
|
||||||
|
id = item['id'];
|
||||||
|
}
|
||||||
|
|
||||||
|
// add dropdown item
|
||||||
|
dropdownHtmlContent +=
|
||||||
|
'<li><a href="javascript:void(0)" onclick="setTextValue(\''+
|
||||||
|
txtDataField +'\',\''+ id +'\')">'+ item['name'] + '</a></li>'
|
||||||
|
});
|
||||||
|
|
||||||
|
writeDropdownHtml(dropdownId, dropdownHtmlContent)
|
||||||
});
|
});
|
||||||
});
|
} else
|
||||||
|
{
|
||||||
|
writeDropdownHtml(dropdownId, dropdownHtmlContent)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// write out the HTML for the dropdown
|
||||||
|
function writeDropdownHtml(dropdownId, dropdownHtmlContent)
|
||||||
|
{
|
||||||
|
// cache
|
||||||
|
setCache(dropdownId, dropdownHtmlContent);
|
||||||
|
|
||||||
|
// write HTML for the dropdown
|
||||||
|
var HTMLelement = $(dropdownId)[0];
|
||||||
|
HTMLelement.innerHTML = ''
|
||||||
|
HTMLelement.innerHTML += dropdownHtmlContent;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getCache(key)
|
||||||
|
{
|
||||||
|
// check cache
|
||||||
|
if(sessionStorage.getItem(key))
|
||||||
|
{
|
||||||
|
return sessionStorage.getItem(key);
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function setCache(key, data)
|
||||||
|
{
|
||||||
|
sessionStorage.setItem(key, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user