init
This commit is contained in:
116
modules/EcmPaymentStates/javascript/widget-storage.js
Normal file
116
modules/EcmPaymentStates/javascript/widget-storage.js
Normal file
@@ -0,0 +1,116 @@
|
||||
/*! Widget: storage - updated 4/18/2017 (v2.28.8) */
|
||||
/*global JSON:false */
|
||||
;(function ($, window, document) {
|
||||
'use strict';
|
||||
|
||||
var ts = $.tablesorter || {};
|
||||
|
||||
// update defaults for validator; these values must be falsy!
|
||||
$.extend(true, ts.defaults, {
|
||||
fixedUrl: '',
|
||||
widgetOptions: {
|
||||
storage_fixedUrl: '',
|
||||
storage_group: '',
|
||||
storage_page: '',
|
||||
storage_storageType: '',
|
||||
storage_tableId: '',
|
||||
storage_useSessionStorage: ''
|
||||
}
|
||||
});
|
||||
|
||||
// *** Store data in local storage, with a cookie fallback ***
|
||||
/* IE7 needs JSON library for JSON.stringify - (http://caniuse.com/#search=json)
|
||||
if you need it, then include https://github.com/douglascrockford/JSON-js
|
||||
|
||||
$.parseJSON is not available is jQuery versions older than 1.4.1, using older
|
||||
versions will only allow storing information for one page at a time
|
||||
|
||||
// *** Save data (JSON format only) ***
|
||||
// val must be valid JSON... use http://jsonlint.com/ to ensure it is valid
|
||||
var val = { "mywidget" : "data1" }; // valid JSON uses double quotes
|
||||
// $.tablesorter.storage(table, key, val);
|
||||
$.tablesorter.storage(table, 'tablesorter-mywidget', val);
|
||||
|
||||
// *** Get data: $.tablesorter.storage(table, key); ***
|
||||
v = $.tablesorter.storage(table, 'tablesorter-mywidget');
|
||||
// val may be empty, so also check for your data
|
||||
val = (v && v.hasOwnProperty('mywidget')) ? v.mywidget : '';
|
||||
alert(val); // 'data1' if saved, or '' if not
|
||||
*/
|
||||
ts.storage = function(table, key, value, options) {
|
||||
table = $(table)[0];
|
||||
var cookieIndex, cookies, date,
|
||||
hasStorage = false,
|
||||
values = {},
|
||||
c = table.config,
|
||||
wo = c && c.widgetOptions,
|
||||
storageType = (
|
||||
( options && options.storageType ) || ( wo && wo.storage_storageType )
|
||||
).toString().charAt(0).toLowerCase(),
|
||||
// deprecating "useSessionStorage"; any storageType setting overrides it
|
||||
session = storageType ? '' :
|
||||
( options && options.useSessionStorage ) || ( wo && wo.storage_useSessionStorage ),
|
||||
$table = $(table),
|
||||
// id from (1) options ID, (2) table 'data-table-group' attribute, (3) widgetOptions.storage_tableId,
|
||||
// (4) table ID, then (5) table index
|
||||
id = options && options.id ||
|
||||
$table.attr( options && options.group || wo && wo.storage_group || 'data-table-group') ||
|
||||
wo && wo.storage_tableId || table.id || $('.tablesorter').index( $table ),
|
||||
// url from (1) options url, (2) table 'data-table-page' attribute, (3) widgetOptions.storage_fixedUrl,
|
||||
// (4) table.config.fixedUrl (deprecated), then (5) window location path
|
||||
url = options && options.url ||
|
||||
$table.attr(options && options.page || wo && wo.storage_page || 'data-table-page') ||
|
||||
wo && wo.storage_fixedUrl || c && c.fixedUrl || window.location.pathname;
|
||||
|
||||
// skip if using cookies
|
||||
if (storageType !== 'c') {
|
||||
storageType = (storageType === 's' || session) ? 'sessionStorage' : 'localStorage';
|
||||
// https://gist.github.com/paulirish/5558557
|
||||
if (storageType in window) {
|
||||
try {
|
||||
window[storageType].setItem('_tmptest', 'temp');
|
||||
hasStorage = true;
|
||||
window[storageType].removeItem('_tmptest');
|
||||
} catch (error) {
|
||||
if (c && c.debug) {
|
||||
console.warn( storageType + ' is not supported in this browser' );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (c.debug) {
|
||||
console.log('Storage widget using', hasStorage ? storageType : 'cookies');
|
||||
}
|
||||
// *** get value ***
|
||||
if ($.parseJSON) {
|
||||
if (hasStorage) {
|
||||
values = $.parseJSON( window[storageType][key] || 'null' ) || {};
|
||||
} else {
|
||||
// old browser, using cookies
|
||||
cookies = document.cookie.split(/[;\s|=]/);
|
||||
// add one to get from the key to the value
|
||||
cookieIndex = $.inArray(key, cookies) + 1;
|
||||
values = (cookieIndex !== 0) ? $.parseJSON(cookies[cookieIndex] || 'null') || {} : {};
|
||||
}
|
||||
}
|
||||
// allow value to be an empty string too
|
||||
if (typeof value !== 'undefined' && window.JSON && JSON.hasOwnProperty('stringify')) {
|
||||
// add unique identifiers = url pathname > table ID/index on page > data
|
||||
if (!values[url]) {
|
||||
values[url] = {};
|
||||
}
|
||||
values[url][id] = value;
|
||||
// *** set value ***
|
||||
if (hasStorage) {
|
||||
window[storageType][key] = JSON.stringify(values);
|
||||
} else {
|
||||
date = new Date();
|
||||
date.setTime(date.getTime() + (31536e+6)); // 365 days
|
||||
document.cookie = key + '=' + (JSON.stringify(values)).replace(/\"/g, '\"') + '; expires=' + date.toGMTString() + '; path=/';
|
||||
}
|
||||
} else {
|
||||
return values && values[url] ? values[url][id] : '';
|
||||
}
|
||||
};
|
||||
|
||||
})(jQuery, window, document);
|
||||
Reference in New Issue
Block a user