mirror of
https://github.com/prymitive/karma
synced 2026-05-05 03:16:51 +00:00
134 lines
3.3 KiB
JavaScript
134 lines
3.3 KiB
JavaScript
"use strict";
|
|
|
|
const $ = require("jquery");
|
|
const Cookies = require("js-cookie");
|
|
const Clipboard = require("clipboard");
|
|
|
|
const filters = require("./filters");
|
|
const Option = require("./option");
|
|
const unsee = require("./unsee");
|
|
const querystring = require("./querystring");
|
|
|
|
var options = {};
|
|
|
|
function newOption(params) {
|
|
var opt = new Option(params);
|
|
opt.Init();
|
|
options[opt.QueryParam] = opt;
|
|
}
|
|
|
|
function getOption(queryParam) {
|
|
return options[queryParam];
|
|
}
|
|
|
|
function loadFromCookies() {
|
|
$.each(options, function(name, option) {
|
|
var value = option.Load();
|
|
if (value !== undefined) {
|
|
option.Set(value);
|
|
}
|
|
});
|
|
}
|
|
|
|
function reset() {
|
|
// this is not part of options map
|
|
Cookies.remove("defaultFilter.v2");
|
|
$.each(options, function(name, option) {
|
|
Cookies.remove(option.Cookie);
|
|
});
|
|
}
|
|
|
|
function init(params) {
|
|
|
|
// copy current filter button action
|
|
new Clipboard(params.CopySelector, {
|
|
text: function(elem) {
|
|
var baseUrl = [ location.protocol, "//", location.host, location.pathname ].join("");
|
|
var query = [ "q=" + filters.getFilters().join(",") ];
|
|
$.each(options, function(name, option) {
|
|
query.push(option.QueryParam + "=" + option.Get().toString());
|
|
});
|
|
$(elem).finish().fadeOut(100).fadeIn(300);
|
|
return baseUrl + "?" + query.join("&");
|
|
}
|
|
});
|
|
|
|
// save settings button action
|
|
$(params.SaveSelector).on("click", function() {
|
|
var filter = filters.getFilters().join(",");
|
|
Cookies.set("defaultFilter.v2", filter, {
|
|
expires: 365,
|
|
path: ""
|
|
});
|
|
$(params.SaveSelector).finish().fadeOut(100).fadeIn(300);
|
|
});
|
|
|
|
// reset settings button action
|
|
$(params.ResetSelector).on("click", function() {
|
|
reset();
|
|
querystring.remove("q");
|
|
location.reload();
|
|
});
|
|
|
|
// https://github.com/twbs/bootstrap/issues/2097
|
|
$(document).on("click", ".dropdown-menu.dropdown-menu-form", function(e) {
|
|
e.stopPropagation();
|
|
});
|
|
|
|
newOption({
|
|
Cookie: "autoRefresh",
|
|
QueryParam: "autorefresh",
|
|
Selector: "#autorefresh",
|
|
Action: function(val) {
|
|
if (val) {
|
|
unsee.resume();
|
|
} else {
|
|
unsee.pause();
|
|
}
|
|
}
|
|
});
|
|
|
|
newOption({
|
|
Cookie: "refreshInterval",
|
|
QueryParam: "refresh",
|
|
Selector: "#refresh-interval",
|
|
Init: function() {
|
|
var elem = this;
|
|
$(this.Selector).on("change", function() {
|
|
var val = elem.Get();
|
|
elem.Save(val);
|
|
elem.Action(val);
|
|
});
|
|
},
|
|
Getter: function() {
|
|
return $(this.Selector).val();
|
|
},
|
|
Setter: function(val) {
|
|
$(this.Selector).val(parseInt(val));
|
|
},
|
|
Action: function(val) {
|
|
unsee.setRefreshRate(parseInt(val));
|
|
}
|
|
});
|
|
|
|
|
|
newOption({
|
|
Cookie: "showFlash",
|
|
QueryParam: "flash",
|
|
Selector: "#show-flash"
|
|
});
|
|
|
|
newOption({
|
|
Cookie: "appendTop",
|
|
QueryParam: "appendtop",
|
|
Selector: "#append-top"
|
|
});
|
|
|
|
}
|
|
|
|
exports.init = init;
|
|
exports.reset = reset;
|
|
exports.loadFromCookies = loadFromCookies;
|
|
exports.newOption = newOption;
|
|
exports.getOption = getOption;
|