lamed_io
Version:
88 lines (77 loc) • 2.5 kB
JavaScript
/* jshint esversion: 6 */
// ------------------------------------------------------
const _test = require('lamed_test')
const { Ok, notOk, notOk_Then, Equal, notEqual, con, testAND } = _test // eslint-disable-line
// con.traceSet(0)
con.trace('Starting localstorage_functions.js...')
const _unique = require('lodash.uniq') // npm install lodash --save
/**
* Return value from the local storage
* @param localDef - The localstorage that was defined
* @param name
* @param defaultVal
* @returns {string - the value that was stored}
*/
function storageGet (localDef, name, defaultVal = '') {
let result = localDef.getItem(name)
if (notOk(result)) {
result = defaultVal
localDef.setItem(name, result)
}
return result
}
/**
* Set the local storage with a value
* @param localDef
* @param name
* @param newValue
*/
function storageSet (localDef, name, newValue) {
localDef.setItem(name, '' + newValue) // Save to local storage
}
/**
* Show the history
* @param localDef - The localstorage that was defined
* @param max int - The max history items
*/
function storageGetHistory (localDef, max = 10) {
let items = []
for (let ii = 1; ii <= max; ii++) {
const no = `${ii}`
const item = localDef.getItem(no)
if (item !== 'null' && item !== null) items.push(item)
// con.log({ ii, max, item })
}
if (items.length > 1) items = _unique(items) // Make sure all is unique
return items
}
/**
* Return item from history items
* @param localDef - The localstorage that was defined
* @param itemNo
* @returns {*}
*/
function storageGetHistoryItem (localDef, itemNo = 1) {
const items = storageGetHistory(localDef)
return items[itemNo - 1]
}
/**
* Save item to the history
* @param localDef - The localstorage that was defined
* @param itemNew
*/
function storagePushHistory (localDef, itemNew) {
const lastItem = localDef.getItem('1')
if (itemNew === lastItem) return // Minimize duplicates
// con.log( { itemNew })
let items = storageGetHistory(localDef)
items.unshift(itemNew) // Add at the start
items = _unique(items) // Make sure all is unique
for (let ii = 0; ii < items.length; ii++) {
const no = `${ii + 1}`
const item = items[ii]
storageSet(localDef, no, item)
}
}
// Exports --------------------------
module.exports = { storageGet, storageSet, storageGetHistory, storageGetHistoryItem, storagePushHistory }