mirror of
https://github.com/zombieFox/nightTab.git
synced 2025-08-17 17:21:11 +02:00
[feature] adding update module
This commit is contained in:
@ -286,6 +286,7 @@
|
||||
|
||||
<script src="js/helper.js"></script>
|
||||
<script src="js/data.js"></script>
|
||||
<script src="js/update.js"></script>
|
||||
<script src="js/state.js"></script>
|
||||
<script src="js/bookmarks.js"></script>
|
||||
<script src="js/control.js"></script>
|
||||
|
@ -215,8 +215,7 @@ var bookmarks = (function() {
|
||||
get: get,
|
||||
add: add,
|
||||
edit: edit,
|
||||
remove: remove,
|
||||
restore: restore
|
||||
remove: remove
|
||||
};
|
||||
|
||||
})();
|
||||
|
@ -108,7 +108,7 @@ var control = (function() {
|
||||
_layout();
|
||||
};
|
||||
|
||||
var _dependents = function(options) {
|
||||
var _dependents = function() {
|
||||
var _date = function() {
|
||||
var activeCount = 0;
|
||||
var toCheck = [state.get().header.date.show.date, state.get().header.date.show.day, state.get().header.date.show.month, state.get().header.date.show.year];
|
||||
|
25
js/data.js
25
js/data.js
@ -16,6 +16,7 @@ var data = (function() {
|
||||
|
||||
var save = function() {
|
||||
var data = {
|
||||
version: version.get(),
|
||||
state: state.get(),
|
||||
bookmarks: bookmarks.get()
|
||||
};
|
||||
@ -28,17 +29,37 @@ var data = (function() {
|
||||
return data;
|
||||
};
|
||||
|
||||
var _checkForSavedData = function(data) {
|
||||
if (data) {
|
||||
console.log("data loaded");
|
||||
if (!("version" in data) || data.version != version.get()) {
|
||||
console.log("data version found less than current");
|
||||
data = update.render(data);
|
||||
set(saveName, JSON.stringify(data));
|
||||
} else {
|
||||
console.log("data version =", version.get());
|
||||
};
|
||||
} else {
|
||||
console.log("no data found to load");
|
||||
};
|
||||
};
|
||||
|
||||
var init = function() {
|
||||
_checkForSavedData(load());
|
||||
};
|
||||
|
||||
var wipe = function() {
|
||||
clear(saveName);
|
||||
};
|
||||
|
||||
return {
|
||||
init: init,
|
||||
save: save,
|
||||
clear: clear,
|
||||
set: set,
|
||||
get: get,
|
||||
wipe: wipe,
|
||||
load: load
|
||||
load: load,
|
||||
wipe: wipe
|
||||
};
|
||||
|
||||
})();
|
||||
|
60
js/helper.js
60
js/helper.js
@ -69,16 +69,16 @@ var helper = (function() {
|
||||
return object;
|
||||
};
|
||||
|
||||
var applyOptions = function(defaultOptions, options) {
|
||||
if (defaultOptions && options) {
|
||||
if (options) {
|
||||
for (var key in options) {
|
||||
if (key in defaultOptions) {
|
||||
defaultOptions[key] = options[key];
|
||||
var applyOptions = function(options, override) {
|
||||
if (options && override) {
|
||||
if (override) {
|
||||
for (var key in override) {
|
||||
if (key in options) {
|
||||
options[key] = override[key];
|
||||
};
|
||||
};
|
||||
};
|
||||
return defaultOptions;
|
||||
return options;
|
||||
} else {
|
||||
return null;
|
||||
};
|
||||
@ -156,75 +156,75 @@ var helper = (function() {
|
||||
return array;
|
||||
};
|
||||
|
||||
function setObject(options) {
|
||||
var defaultOptions = {
|
||||
function setObject(override) {
|
||||
var options = {
|
||||
path: null,
|
||||
object: null,
|
||||
newValue: null
|
||||
};
|
||||
if (options) {
|
||||
var defaultOptions = applyOptions(defaultOptions, options);
|
||||
if (override) {
|
||||
var options = applyOptions(options, override);
|
||||
};
|
||||
var address = _makeAddress(defaultOptions.path);
|
||||
var address = _makeAddress(options.path);
|
||||
var _setData = function() {
|
||||
while (address.length > 1) {
|
||||
// shift off and store the first key
|
||||
var currentKey = address.shift();
|
||||
// if the key is not found make a new object
|
||||
if (!(currentKey in defaultOptions.object)) {
|
||||
if (!(currentKey in options.object)) {
|
||||
// make an empty object in the current object level
|
||||
if (isNaN(currentKey)) {
|
||||
defaultOptions.object[currentKey] = {};
|
||||
options.object[currentKey] = {};
|
||||
} else {
|
||||
defaultOptions.object[currentKey] = [];
|
||||
options.object[currentKey] = [];
|
||||
};
|
||||
};
|
||||
// drill down the object with the first key
|
||||
defaultOptions.object = defaultOptions.object[currentKey];
|
||||
options.object = options.object[currentKey];
|
||||
};
|
||||
var finalKey = address.shift();
|
||||
defaultOptions.object[finalKey] = defaultOptions.newValue;
|
||||
options.object[finalKey] = options.newValue;
|
||||
};
|
||||
if (defaultOptions.object != null && defaultOptions.path != null && defaultOptions.newValue != null) {
|
||||
if (options.object != null && options.path != null && options.newValue != null) {
|
||||
_setData();
|
||||
} else {
|
||||
return false;
|
||||
};
|
||||
};
|
||||
|
||||
function getObject(options) {
|
||||
var defaultOptions = {
|
||||
function getObject(override) {
|
||||
var options = {
|
||||
object: null,
|
||||
path: null
|
||||
};
|
||||
if (options) {
|
||||
var defaultOptions = applyOptions(defaultOptions, options);
|
||||
if (override) {
|
||||
var options = applyOptions(options, override);
|
||||
};
|
||||
var address = _makeAddress(defaultOptions.path);
|
||||
var address = _makeAddress(options.path);
|
||||
var _getData = function() {
|
||||
while (address.length > 1) {
|
||||
// shift off and store the first key
|
||||
var currentKey = address.shift();
|
||||
// if the key is not found make a new object
|
||||
if (!(currentKey in defaultOptions.object)) {
|
||||
if (!(currentKey in options.object)) {
|
||||
// make an empty object in the current object level
|
||||
if (isNaN(currentKey)) {
|
||||
defaultOptions.object[currentKey] = {};
|
||||
options.object[currentKey] = {};
|
||||
} else {
|
||||
defaultOptions.object[currentKey] = [];
|
||||
options.object[currentKey] = [];
|
||||
};
|
||||
};
|
||||
// drill down the object with the first key
|
||||
defaultOptions.object = defaultOptions.object[currentKey];
|
||||
options.object = options.object[currentKey];
|
||||
};
|
||||
var finalKey = address.shift();
|
||||
if (!(finalKey in defaultOptions.object)) {
|
||||
if (!(finalKey in options.object)) {
|
||||
return "";
|
||||
} else {
|
||||
return defaultOptions.object[finalKey];
|
||||
return options.object[finalKey];
|
||||
};
|
||||
};
|
||||
if (defaultOptions.object != null && defaultOptions.path != null) {
|
||||
if (options.object != null && options.path != null) {
|
||||
return _getData();
|
||||
} else {
|
||||
return false;
|
||||
|
@ -1,16 +1,19 @@
|
||||
// log version
|
||||
console.log("nightTab v", version.get(), "loaded");
|
||||
|
||||
// check for old versions
|
||||
data.init();
|
||||
|
||||
// bind and update controls
|
||||
// render states
|
||||
state.init();
|
||||
|
||||
// close menu if left open
|
||||
menu.init();
|
||||
|
||||
// restore bookmarks
|
||||
bookmarks.init();
|
||||
|
||||
// close menu if left open
|
||||
menu.init();
|
||||
|
||||
// render input color value
|
||||
// render css accent var
|
||||
theme.init();
|
||||
|
34
js/modal.js
34
js/modal.js
@ -11,8 +11,8 @@ var modal = (function() {
|
||||
};
|
||||
};
|
||||
|
||||
var render = function(options) {
|
||||
var defaultOptions = {
|
||||
var render = function(override) {
|
||||
var options = {
|
||||
heading: "Modal",
|
||||
content: "Body",
|
||||
action: null,
|
||||
@ -20,8 +20,8 @@ var modal = (function() {
|
||||
cancelText: "Cancel",
|
||||
size: "medium"
|
||||
};
|
||||
if (options) {
|
||||
defaultOptions = helper.applyOptions(defaultOptions, options);
|
||||
if (override) {
|
||||
options = helper.applyOptions(options, override);
|
||||
};
|
||||
var makeModal = function() {
|
||||
var body = helper.e("body");
|
||||
@ -32,11 +32,11 @@ var modal = (function() {
|
||||
var modalWrapper = document.createElement("div");
|
||||
modalWrapper.setAttribute("class", "modal-wrapper");
|
||||
var modal = document.createElement("div");
|
||||
if (defaultOptions.size == "large") {
|
||||
if (options.size == "large") {
|
||||
modal.setAttribute("class", "modal modal-large");
|
||||
} else if (defaultOptions.size == "small") {
|
||||
} else if (options.size == "small") {
|
||||
modal.setAttribute("class", "modal modal-small");
|
||||
} else if (defaultOptions.size) {
|
||||
} else if (options.size) {
|
||||
modal.setAttribute("class", "modal");
|
||||
};
|
||||
modal.destroy = function() {
|
||||
@ -59,30 +59,30 @@ var modal = (function() {
|
||||
var actionButton = document.createElement("button");
|
||||
actionButton.setAttribute("tabindex", "1");
|
||||
actionButton.setAttribute("class", "button button-primary button-block");
|
||||
actionButton.textContent = defaultOptions.actionText;
|
||||
actionButton.textContent = options.actionText;
|
||||
var cancelButton = document.createElement("button");
|
||||
cancelButton.setAttribute("tabindex", "1");
|
||||
cancelButton.setAttribute("class", "button button-primary button-block");
|
||||
cancelButton.textContent = defaultOptions.cancelText;
|
||||
cancelButton.textContent = options.cancelText;
|
||||
modalControls.appendChild(cancelButton);
|
||||
modalControls.appendChild(actionButton);
|
||||
if (defaultOptions.heading != null) {
|
||||
if (options.heading != null) {
|
||||
var modalHeading = document.createElement("h1");
|
||||
modalHeading.setAttribute("tabindex", "1");
|
||||
modalHeading.setAttribute("class", "modal-heading");
|
||||
modalHeading.textContent = defaultOptions.heading;
|
||||
modalHeading.textContent = options.heading;
|
||||
modalBody.appendChild(modalHeading);
|
||||
};
|
||||
if (defaultOptions.content) {
|
||||
if (typeof defaultOptions.content == "string") {
|
||||
if (options.content) {
|
||||
if (typeof options.content == "string") {
|
||||
var container = document.createElement("div");
|
||||
container.setAttribute("class", "container");
|
||||
var para = document.createElement("p");
|
||||
para.textContent = defaultOptions.content;
|
||||
para.textContent = options.content;
|
||||
container.appendChild(para);
|
||||
modalBody.appendChild(container);
|
||||
} else {
|
||||
modalBody.appendChild(defaultOptions.content);
|
||||
modalBody.appendChild(options.content);
|
||||
};
|
||||
};
|
||||
modalWrapper.appendChild(modalBody);
|
||||
@ -99,8 +99,8 @@ var modal = (function() {
|
||||
actionButton.addEventListener("click", function(event) {
|
||||
this.destroy();
|
||||
shade.destroy();
|
||||
if (defaultOptions.action) {
|
||||
defaultOptions.action();
|
||||
if (options.action) {
|
||||
options.action();
|
||||
};
|
||||
}.bind(modal), false);
|
||||
cancelButton.addEventListener("click", function(event) {
|
||||
|
14
js/shade.js
14
js/shade.js
@ -11,13 +11,13 @@ var shade = (function() {
|
||||
};
|
||||
};
|
||||
|
||||
var render = function(options) {
|
||||
var defaultOptions = {
|
||||
var render = function(override) {
|
||||
var options = {
|
||||
action: null,
|
||||
includeHeader: false
|
||||
};
|
||||
if (options) {
|
||||
defaultOptions = helper.applyOptions(defaultOptions, options);
|
||||
if (override) {
|
||||
options = helper.applyOptions(options, override);
|
||||
};
|
||||
var _destroy_previousShade = function() {
|
||||
if (previousShade != null) {
|
||||
@ -28,7 +28,7 @@ var shade = (function() {
|
||||
var body = helper.e("body");
|
||||
var shade = document.createElement("div");
|
||||
shade.setAttribute("class", "shade");
|
||||
if (defaultOptions.includeHeader) {
|
||||
if (options.includeHeader) {
|
||||
helper.addClass(shade, "m-shade-top");
|
||||
};
|
||||
shade.destroy = function() {
|
||||
@ -49,8 +49,8 @@ var shade = (function() {
|
||||
}.bind(shade), false);
|
||||
shade.addEventListener("click", function() {
|
||||
this.destroy();
|
||||
if (defaultOptions.action) {
|
||||
defaultOptions.action();
|
||||
if (options.action) {
|
||||
options.action();
|
||||
};
|
||||
}, false);
|
||||
previousShade = shade;
|
||||
|
@ -116,8 +116,7 @@ var state = (function() {
|
||||
return {
|
||||
init: init,
|
||||
get: get,
|
||||
change: change,
|
||||
restore: restore
|
||||
change: change
|
||||
};
|
||||
|
||||
})();
|
||||
|
52
js/update.js
Normal file
52
js/update.js
Normal file
@ -0,0 +1,52 @@
|
||||
var update = (function() {
|
||||
|
||||
var _update_100 = function(data) {
|
||||
var time = new Date().getTime();
|
||||
data.bookmarks.forEach(function(arrayItem, index) {
|
||||
time = time + 1;
|
||||
arrayItem.timeStamp = time;
|
||||
});
|
||||
data.version = 1.00;
|
||||
return data;
|
||||
};
|
||||
|
||||
var _update_200 = function(data) {
|
||||
state.change({
|
||||
path: "layout.theme",
|
||||
value: data.theme
|
||||
});
|
||||
data = {
|
||||
state: state.get(),
|
||||
bookmarks: data.bookmarks
|
||||
};
|
||||
data.version = 2.00;
|
||||
return data;
|
||||
};
|
||||
|
||||
// var _update_300 = function(data) {
|
||||
// data.version = 3.00;
|
||||
// return data;
|
||||
// };
|
||||
|
||||
function render(data) {
|
||||
if (!("version" in data)) {
|
||||
console.log("\trunning update", 1.00);
|
||||
data = _update_100(data);
|
||||
};
|
||||
if (data.version < 2.00) {
|
||||
console.log("\trunning update", 2.00);
|
||||
data = _update_200(data);
|
||||
};
|
||||
// if (data.version < 3.00) {
|
||||
// console.log("\t# running update", 3.00);
|
||||
// data = _update_300(data);
|
||||
// };
|
||||
return data;
|
||||
};
|
||||
|
||||
// exposed methods
|
||||
return {
|
||||
render: render
|
||||
};
|
||||
|
||||
})();
|
@ -1,9 +1,10 @@
|
||||
var version = (function() {
|
||||
|
||||
var current = 2.0;
|
||||
var current = "2.0.0";
|
||||
|
||||
var get = function() {
|
||||
return current;
|
||||
var number = current.split(".");
|
||||
return parseFloat(number.shift() + "." + number.join(""));
|
||||
};
|
||||
|
||||
// exposed methods
|
||||
|
Reference in New Issue
Block a user