/** * Copyright 2014 Antoine Aflalo * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. **/ RED.settings = (function () { var hasLocalStorage = function () { try { return 'localStorage' in window && window['localStorage'] !== null; } catch (e) { return false; } }; var set = function (key, value) { if (!hasLocalStorage()) { return; } localStorage.setItem(key, JSON.stringify(value)); }; /** * If the key is not set in the localStorage it returns undefined * Else return the JSON parsed value * @param key * @returns {*} */ var get = function (key) { if (!hasLocalStorage()) { return undefined; } return JSON.parse(localStorage.getItem(key)); }; var remove = function (key) { if (!hasLocalStorage()) { return; } localStorage.removeItem(key); }; var setProperties = function(data) { for(var prop in data) { if(data.hasOwnProperty(prop)) { RED.settings[prop] = data[prop]; } } }; var init = function (callback) { $.ajax({ headers: { "Accept": "application/json" }, dataType: "json", cache: false, url: 'settings', success: function (data) { setProperties(data); console.log("Node-RED: " + data.version); callback(); } }); }; return { set: set, get: get, remove: remove, init : init } }) ();