Files
karma/assets/static/option.js
2017-07-29 13:50:18 -07:00

58 lines
1.4 KiB
JavaScript

"use strict";
const $ = require("jquery");
const Cookies = require("js-cookie");
require("bootstrap-switch");
require("bootstrap-switch/dist/css/bootstrap3/bootstrap-switch.css");
const querystring = require("./querystring");
function Option(params) {
this.Cookie = params.Cookie;
this.QueryParam = params.QueryParam;
this.Selector = params.Selector;
this.Get = params.Getter || function() {
return $(this.Selector).is(":checked");
};
this.Set = params.Setter || function(val) {
$(this.Selector).bootstrapSwitch("state", $.parseJSON(val), true);
};
this.Action = params.Action || function() {};
this.Init = params.Init || function() {
var elem = this;
$(this.Selector).on("switchChange.bootstrapSwitch", function(event, val) {
elem.Save(val);
elem.Action(val);
});
};
}
Option.prototype.Load = function() {
var currentVal = this.Get();
var val = Cookies.get(this.Cookie);
if (val !== undefined) {
this.Set(val);
}
var q = querystring.parse();
if (q[this.QueryParam] !== undefined) {
this.Set(q[this.QueryParam]);
val = q[this.QueryParam];
}
if (currentVal != val) {
this.Action(val);
}
};
Option.prototype.Save = function(val) {
Cookies.set(this.Cookie, val, {
expires: 365,
path: ""
});
};
module.exports = Option;