X-Git-Url: https://git.wh0rd.org/?p=chrome-ext%2Fweb-power-switch.git;a=blobdiff_plain;f=popup.js;h=2f4bea59a758ca2896c0548277bc86404647103a;hp=bcb0dd4b5e81a8485b2fef439d038cb3d969dd33;hb=HEAD;hpb=ceb29ec97c04efa38e3b758e099d08d1ede73dcf diff --git a/popup.js b/popup.js index bcb0dd4..2f4bea5 100644 --- a/popup.js +++ b/popup.js @@ -42,6 +42,8 @@ function fetchpage(url, callback) { } } +function get_css_var(key) { return getComputedStyle(document.documentElement).getPropertyValue(`--${key}`); } + function onoff(o) { const data = o.toUpperCase(); switch (data) { @@ -95,8 +97,13 @@ function toggle_confirm() { }, 5000); } -function trim(str) { - return str.replace(/^\s+|\s+$/, ''); +/* Toggle the selected theme. */ +function toggle_theme() { + const theme = get_css_var('theme') == 'light' ? 'dark' : 'light'; + const css = $('link#theme-override'); + css.href = `css/${theme}.css`; + storage.set({theme}); + return false; } function initpopup(xhr, state) { @@ -120,7 +127,7 @@ function initpopup(xhr, state) { if (th.bgColor != '#DDDDFF') continue; - var controller_name = trim(th.innerText); + var controller_name = th.innerText.trim(); if (controller_name.slice(0, 12) != 'Controller: ') continue; @@ -128,8 +135,17 @@ function initpopup(xhr, state) { cell = row.insertCell(-1); cell.colSpan = 10; cell.align = 'center'; - cell.innerText = controller_name.slice(12); - cell.innerHTML = '' + cell.innerHTML + '' + + const a = document.createElement('a'); + a.href = url_base; + a.target = '_blank'; + a.text = controller_name.slice(12).trim(); + cell.appendChild(a); + + const button = document.createElement('button'); + button.name = 'theme'; + button.onclick = toggle_theme; + cell.appendChild(button); } var tr, trs = state.currentTarget.responseXML.querySelectorAll('tr'); @@ -137,10 +153,10 @@ function initpopup(xhr, state) { if (tr.bgColor != '#F4F4F4') continue; - var outlet_num = trim(tr.children[0].innerText); - var outlet_name = trim(tr.children[1].innerText); - var current_status = trim(tr.children[2].innerText); - var new_status = trim(tr.children[3].innerText); + var outlet_num = tr.children[0].innerText.trim(); + var outlet_name = tr.children[1].innerText.trim(); + var current_status = tr.children[2].innerText.trim(); + var new_status = tr.children[3].innerText.trim(); var confirmable = tr.children[3].children[0].hasAttribute('onclick'); row = tbl.insertRow(-1); @@ -190,10 +206,11 @@ function open_settings_page() { } document.addEventListener('DOMContentLoaded', function() { - storage.get(settings_keys, function(settings) { - url_base = settings['url'] || settings_defaults['url']; - user = settings['user'] || settings_defaults['user']; - pass = settings['pass'] || settings_defaults['pass']; + storage.get(settings_keys, function(settings_storage) { + const settings = Object.assign({}, settings_defaults, settings_storage); + url_base = settings['url']; + user = settings['user']; + pass = settings['pass']; chrome.permissions.contains({ origins: [url_base + '/*'] }, function(granted) {