new web page added and weather api key save added

This commit is contained in:
Neythen Treloar
2022-02-24 18:35:43 +00:00
parent 9c81db3665
commit 3a6eef93fb
50 changed files with 71360 additions and 3095 deletions

View File

@@ -237,16 +237,9 @@ def update():
os.system("sudo reboot now") os.system("sudo reboot now")
return index() return index()
@app.route("/display_format", methods = ['PUT', 'POST', 'GET']) @app.route("/restart", methods=['PUT','POST'])
def display_format(): def restart():
global professional os.system("sudo reboot now")
data = str(request.data)
if "Standard" in data:
professional = False
elif "Professional" in data:
professional = True
print(professional)
return index() return index()
@app.route("/save", methods = ['PUT', 'POST', 'GET']) @app.route("/save", methods = ['PUT', 'POST', 'GET'])
@@ -449,6 +442,26 @@ def hostname():
return index() return index()
@app.route("/saveWeatherAPIKey", methods = ['PUT', 'POST'])
def saveWeatherAPIKey():
data= request.data.decode('utf-8')
settings = json.loads(data)
key = settings['api_key']
print(key)
with open('./api_keys.txt') as f:
lines = f.readlines()
if len(lines) == 1:
lines.append(str(key))
elif len(lines) == 2:
lines[1] = str(key)
print(lines)
with open('./api_keys.txt', 'w') as f:
for line in lines:
f.write(line)
return index()
@app.route("/screensaver", methods = ['PUT', 'POST']) @app.route("/screensaver", methods = ['PUT', 'POST'])
def screensaver(): def screensaver():
global displaying_screensaver global displaying_screensaver
@@ -516,7 +529,6 @@ def save_trade_settings(input_settings):
current_settings['percent'] = input_settings['percent'] current_settings['percent'] = input_settings['percent']
current_settings['point'] = input_settings['point'] current_settings['point'] = input_settings['point']
current_settings['logos'] = input_settings['logos'] current_settings['logos'] = input_settings['logos']
current_settings['chart'] = input_settings['chart']
current_settings['title'] = input_settings['title'] current_settings['title'] = input_settings['title']

View File

@@ -345,11 +345,11 @@ const addEventOnFeaturesList = () => {
availableFeature.setAttribute("class", ""); availableFeature.setAttribute("class", "");
} else { } else {
availableFeature.setAttribute("class", "active"); availableFeature.setAttribute("class", "active");
let getCustomImages = JSON.parse( // let getCustomImages = JSON.parse(
localStorage.getItem("customImages") // localStorage.getItem("customImages")
); // );
let getCustomGifs = JSON.parse(localStorage.getItem("customGifs")); // let getCustomGifs = JSON.parse(localStorage.getItem("customGifs"));
let getCustomMsg = JSON.parse(localStorage.getItem("customMsg")); // let getCustomMsg = JSON.parse(localStorage.getItem("customMsg"));
getCustomImages.map((value) => { getCustomImages.map((value) => {
let scrollSpeed1 = document.getElementById("inputScrollSpeed11"); let scrollSpeed1 = document.getElementById("inputScrollSpeed11");
@@ -484,34 +484,37 @@ allFeaturesRemoveBtns.map((value, index) => {
value.addEventListener("click", () => { value.addEventListener("click", () => {
for (let i = 0; i < allFeaturesList[index].length; i++) { for (let i = 0; i < allFeaturesList[index].length; i++) {
var item = allFeaturesList[index][i]; var item = allFeaturesList[index][i];
console.log(item);
if (item.getAttribute("class") == "active") { if (item.getAttribute("class") == "active") {
if (item.parentElement.getAttribute("id") == "images-features") { if (item.parentElement.getAttribute("id") == "images-features") {
let getImages = JSON.parse(localStorage.getItem("customImages")); // let getImages = JSON.parse(localStorage.getItem("customImages"));
let filter = getImages.filter( let filter = getImages.filter(
(value) => value.fileName !== item.innerText (value) => value.fileName !== item.innerText
); );
localStorage.setItem("customImages", JSON.stringify(filter)); // localStorage.setItem("customImages", JSON.stringify(filter));
} else if (item.parentElement.getAttribute("id") == "gifs-features") { } else if (item.parentElement.getAttribute("id") == "gifs-features") {
let getGifs = JSON.parse(localStorage.getItem("customGifs")); // let getGifs = JSON.parse(localStorage.getItem("customGifs"));
let filter = getGifs.filter( let filter = getGifs.filter(
(value) => value.fileName !== item.innerText (value) => value.fileName !== item.innerText
); );
localStorage.setItem("customGifs", JSON.stringify(filter)); // localStorage.setItem("customGifs", JSON.stringify(filter));
} else if ( } else if (
item.parentElement.getAttribute("id") == "messages-features" item.parentElement.getAttribute("id") == "messages-features"
) { ) {
let getMsgs = JSON.parse(localStorage.getItem("customMsg")); // let getMsgs = JSON.parse(localStorage.getItem("customMsg"));
let filter = getMsgs.filter( let filter = getMsgs.filter(
(value) => value.messageName !== item.innerText (value) => value.messageName !== item.innerText
); );
localStorage.setItem("customMsg", JSON.stringify(filter)); // localStorage.setItem("customMsg", JSON.stringify(filter));
} }
else {
item.remove(); item.remove();
} }
} }
}
}); });
}); });
@@ -727,6 +730,26 @@ var allFeaturesTextAddBtn = [
messagesTextAddBtn, messagesTextAddBtn,
]; ];
var allFeaturesLimit = [
200,
100,
100,
20,
20,
null,
null,
null,
null,
null,
20,
20,
20,
];
allFeaturesTextAddBtn.map((value, index) => { allFeaturesTextAddBtn.map((value, index) => {
if (value !== null) { if (value !== null) {
value.addEventListener("click", () => { value.addEventListener("click", () => {
@@ -766,27 +789,45 @@ allFeaturesTextAddBtn.map((value, index) => {
displayCheck, displayCheck,
}; };
let getCustomMsg = localStorage.getItem("customMsg"); // let getCustomMsg = localStorage.getItem("customMsg");
let newValues = getCustomMsg && JSON.parse(getCustomMsg); let newValues = getCustomMsg && JSON.parse(getCustomMsg);
getCustomMsg && newValues.push(values); getCustomMsg && newValues.push(values);
getCustomMsg // getCustomMsg
? localStorage.setItem("customMsg", JSON.stringify(newValues)) // ? localStorage.setItem("customMsg", JSON.stringify(newValues))
: localStorage.setItem("customMsg", JSON.stringify([values])); // : localStorage.setItem("customMsg", JSON.stringify([values]));
var tag = document.createElement("li"); var tag = document.createElement("li");
tag.innerHTML = allFeaturesText[index].value; var msg = "You've reached the maximum limit of items to add for this feature";
allFeatures[index].appendChild(tag);
// if the list length exceeds the limit
if (allFeatures[index].getElementsByTagName("li").length == allFeaturesLimit[index]){
document.getElementById("limit-msg").innerHTML = msg;
} }
else{
tag.innerHTML = allFeaturesText[index].value;
allFeatures[index].appendChild(tag);
changeVarValue(); changeVarValue();
addEventOnFeaturesList(); addEventOnFeaturesList();
}
}
} else { } else {
var msg = "You've reached the maximum limit of items to add for this feature";
// if the list length exceeds the limit
if (allFeatures[index].getElementsByTagName("li").length > allFeaturesLimit[index]){
document.getElementById("limit-msg").innerHTML = msg;
}
else{
var tag = document.createElement("li"); var tag = document.createElement("li");
tag.innerHTML = allFeaturesText[index].value; tag.innerHTML = allFeaturesText[index].value;
allFeatures[index].appendChild(tag); allFeatures[index].appendChild(tag);
changeVarValue(); changeVarValue();
addEventOnFeaturesList(); addEventOnFeaturesList();
} }
}
}); });
} }
}); });
@@ -794,11 +835,9 @@ allFeaturesTextAddBtn.map((value, index) => {
var startButton = document.getElementById("start-btn"); var startButton = document.getElementById("start-btn");
// start the display // start the display
startButton.addEventListener("click", () => { startButton.addEventListener("click", () => {
fetch("/start", { fetch("/start", {
method: "PUT", method: "PUT",
}); });
}); });
var brightnessButton = document.getElementById("brightness-btn"); var brightnessButton = document.getElementById("brightness-btn");
@@ -819,6 +858,16 @@ shutdownButton.addEventListener("click", () => {
}); });
}); });
var restartButton = document.getElementById("restart-btn");
restartButton.addEventListener("click", () => {
fetch("/restart", {
method: "GET",
});
});
var stopButton = document.getElementById("stop-btn"); var stopButton = document.getElementById("stop-btn");
stopButton.addEventListener("click", () => { stopButton.addEventListener("click", () => {
fetch("/stop", { fetch("/stop", {
@@ -910,13 +959,9 @@ function getDisplaying(){
} }
function get_page(){
// gets feature specific settings
function getFeatureSettings() {
let featureSelector = document.getElementById("drop"); let featureSelector = document.getElementById("drop");
feature = getSelected(featureSelector); feature = getSelected(featureSelector);
let features = [ let features = [
"Stocks", "Stocks",
"Crypto", "Crypto",
@@ -936,6 +981,13 @@ function getFeatureSettings() {
let pageSelector = "Page" + pageNum.toString(); let pageSelector = "Page" + pageNum.toString();
let page = document.getElementById(pageSelector); let page = document.getElementById(pageSelector);
return page;
}
// gets feature specific settings
function getFeatureSettings() {
let page = get_page();
// these common to all settings // these common to all settings
let speed = getSelected(page.querySelectorAll(".speed-select")[0]); let speed = getSelected(page.querySelectorAll(".speed-select")[0]);
@@ -1021,7 +1073,7 @@ function saveSettings() {
} }
let saveSettingsButtons = document.querySelectorAll(".save-btn-div").forEach((button) => button.addEventListener("click", saveSettings)); let saveSettingsButtons = document.querySelectorAll(".save-btn").forEach((button) => button.addEventListener("click", saveSettings));
// gets the stock, crypto or forex specific settings // gets the stock, crypto or forex specific settings
function getTradingSettings(page) { function getTradingSettings(page) {
@@ -1029,7 +1081,6 @@ function getTradingSettings(page) {
let percent = page.querySelectorAll(".percent-select")[0].checked; let percent = page.querySelectorAll(".percent-select")[0].checked;
let point = page.querySelectorAll(".point-select")[0].checked; let point = page.querySelectorAll(".point-select")[0].checked;
let no_logos = page.querySelectorAll(".logo-select")[0].checked; let no_logos = page.querySelectorAll(".logo-select")[0].checked;
let chart = page.querySelectorAll(".chart-select")[0].checked;
let title = page.querySelectorAll(".title-select")[0].checked; let title = page.querySelectorAll(".title-select")[0].checked;
let symbols_el = page.querySelectorAll(".symbol-list")[0]; let symbols_el = page.querySelectorAll(".symbol-list")[0];
@@ -1039,7 +1090,6 @@ function getTradingSettings(page) {
percent: percent, percent: percent,
point: point, point: point,
logos: no_logos, logos: no_logos,
chart: chart,
title: title, title: title,
symbols: symbols, symbols: symbols,
}; };
@@ -1053,11 +1103,14 @@ function getWeatherSettings(page) {
let speed = getSelected(page.querySelectorAll(".wind-speed-select")[0]); let speed = getSelected(page.querySelectorAll(".wind-speed-select")[0]);
let title = page.querySelectorAll(".title-select")[0].checked; let title = page.querySelectorAll(".title-select")[0].checked;
let api_key = page.querySelectorAll(".api-key")[0];
let
settings = { settings = {
temp: temp, temp: temp,
wind_speed: speed, wind_speed: speed,
title: title, title: title,
api_key:api_key
}; };
//only for daily weather //only for daily weather
@@ -1074,19 +1127,41 @@ function getWeatherSettings(page) {
return settings; return settings;
} }
function saveWeatherAPIKey(){
let page = get_page();
let api_key = page.querySelectorAll(".api-key")[0].value;
let settings = {
api_key:api_key
};
console.log(settings);
fetch("/saveWeatherAPIKey", {
method: "POST",
body: JSON.stringify(settings),
});
}
var weatherAPIbtn = document.getElementById("weather-api-btn");
weatherAPIbtn.addEventListener("click", saveWeatherAPIKey);
function getNewsSettings(page) { function getNewsSettings(page) {
let country = getSelected(page.querySelectorAll(".country-select")[0]); let country = getSelected(page.querySelectorAll(".country-select")[0]);
let category = getSelected(page.querySelectorAll(".category-select")[0]); let category = getSelected(page.querySelectorAll(".category-select")[0]);
let title = page.querySelectorAll(".title-select")[0].checked; let title = page.querySelectorAll(".title-select")[0].checked;
let use_sources = page.querySelectorAll(".sources-select")[0].checked; // let use_sources = page.querySelectorAll(".sources-select")[0].checked;
let sources_el = page.querySelectorAll(".sources-list")[0]; // let sources_el = page.querySelectorAll(".sources-list")[0];
let sources = getListItems(sources_el); // let sources = getListItems(sources_el);
settings = { settings = {
country: country, country: country,
category: category, category: category,
title: title, title: title,
use_sources: use_sources, // use_sources: use_sources,
sources: sources, sources: sources,
}; };
return settings; return settings;
@@ -1111,7 +1186,7 @@ allFeaturesFileAddBtn.map((value, index) => {
var tag = document.createElement("li"); var tag = document.createElement("li");
tag.innerHTML = allFeaturesFile[index].files[0].name; tag.innerHTML = allFeaturesFile[index].files[0].name;
if (index == 10) { if (index == 10) {
let getCustomImg = localStorage.getItem("customImages"); // let getCustomImg = localStorage.getItem("customImages");
let fileName = imagesFile.files[0].name; let fileName = imagesFile.files[0].name;
let scrollSpeed = document.getElementById("inputScrollSpeed11").value; let scrollSpeed = document.getElementById("inputScrollSpeed11").value;
let scrollSpeed2 = document.getElementById( let scrollSpeed2 = document.getElementById(
@@ -1141,15 +1216,15 @@ allFeaturesFileAddBtn.map((value, index) => {
let newValues = getCustomImg && JSON.parse(getCustomImg); let newValues = getCustomImg && JSON.parse(getCustomImg);
getCustomImg && newValues.push(values); getCustomImg && newValues.push(values);
getCustomImg // getCustomImg
? localStorage.setItem("customImages", JSON.stringify(newValues)) // ? localStorage.setItem("customImages", JSON.stringify(newValues))
: localStorage.setItem("customImages", JSON.stringify([values])); // : localStorage.setItem("customImages", JSON.stringify([values]));
uploaded_images.push(allFeaturesFile[index].files[0]); uploaded_images.push(allFeaturesFile[index].files[0]);
allFeatures[index].appendChild(tag); allFeatures[index].appendChild(tag);
} }
} else if (index == 11) { } else if (index == 11) {
let getCustomGifs = localStorage.getItem("customGifs"); // let getCustomGifs = localStorage.getItem("customGifs");
let fileName = allFeaturesFile[index].files[0].name; let fileName = allFeaturesFile[index].files[0].name;
let scrollSpeed = document.getElementById("inputScrollSpeed12").value; let scrollSpeed = document.getElementById("inputScrollSpeed12").value;
let scrollSpeed2 = document.getElementById( let scrollSpeed2 = document.getElementById(
@@ -1179,15 +1254,15 @@ allFeaturesFileAddBtn.map((value, index) => {
let newValues = getCustomGifs && JSON.parse(getCustomGifs); let newValues = getCustomGifs && JSON.parse(getCustomGifs);
getCustomGifs && newValues.push(values); getCustomGifs && newValues.push(values);
getCustomGifs // getCustomGifs
? localStorage.setItem("customGifs", JSON.stringify(newValues)) // ? localStorage.setItem("customGifs", JSON.stringify(newValues))
: localStorage.setItem("customGifs", JSON.stringify([values])); // : localStorage.setItem("customGifs", JSON.stringify([values]));
uploaded_GIFs.push(allFeaturesFile[index].files[0]); uploaded_GIFs.push(allFeaturesFile[index].files[0]);
allFeatures[index].appendChild(tag); allFeatures[index].appendChild(tag);
} }
} }
imagesFile.value = "";
changeVarValue(); changeVarValue();
addEventOnFeaturesList(); addEventOnFeaturesList();
}); });
@@ -1273,23 +1348,23 @@ let countryCodeInput = document.getElementById("country-code-input");
let joinNetworkBtn = document.querySelector("#join-network-btn"); let joinNetworkBtn = document.querySelector("#join-network-btn");
let connectedText = document.querySelector("#connected-text"); let connectedText = document.querySelector("#connected-text");
joinNetworkBtn.addEventListener("click", () => { // joinNetworkBtn.addEventListener("click", () => {
localStorage.setItem("wifiSsid", wifiSsidInput.value); // localStorage.setItem("wifiSsid", wifiSsidInput.value);
localStorage.setItem("wifiPass", wifiPassInput.value); // localStorage.setItem("wifiPass", wifiPassInput.value);
localStorage.setItem("countryCode", countryCodeInput.value); // localStorage.setItem("countryCode", countryCodeInput.value);
connectedText.style.display = "block"; // connectedText.style.display = "block";
setTimeout(() => { // setTimeout(() => {
connectedText.style.display = "none"; // connectedText.style.display = "none";
}, 2000); // }, 2000);
data = {country:countryCodeInput.value, ssid:wifiSsidInput.value, pwd:wifiPassInput.value} // data = {country:countryCodeInput.value, ssid:wifiSsidInput.value, pwd:wifiPassInput.value}
fetch("/wifi", { // fetch("/wifi", {
method: "POST", // method: "POST",
body: JSON.stringify(data), // body: JSON.stringify(data),
}); // });
}); // });
// change display format // change display format
let displayFormatDropDown = document.querySelector("#inputDisplayFormat"); let displayFormatDropDown = document.querySelector("#inputDisplayFormat");
@@ -1332,7 +1407,7 @@ let hostNameText = document.getElementById("host-name");
hostNameBtn.addEventListener("click", () => { hostNameBtn.addEventListener("click", () => {
hostNameText.innerText = hostNameInput.value; hostNameText.innerText = hostNameInput.value;
localStorage.setItem("hostName", hostNameText.innerText); // localStorage.setItem("hostName", hostNameText.innerText);
data = {hostname:hostNameText.innerText} data = {hostname:hostNameText.innerText}
@@ -1342,13 +1417,30 @@ hostNameBtn.addEventListener("click", () => {
}); });
}); });
// Add Weather API Key
// let weatherKeyInput = document.getElementById("api-key");
// let weatherKeyBtn = document.getElementById("weather-api-button");
// let inputTextWeather = document.getElementById("inputText-weather");
// weatherKeyBtn.addEventListener("click", () => {
// inputTextWeather.innerText = weatherKeyInput.value;
// data = {api-key:inputTextWeather.innerText}
// fetch("/weatherAPI", {
// method: "POST",
// body: JSON.stringify(data),
// });
// });
// change brightness // change brightness
let brightnessInput = document.getElementById("brightness-input"); let brightnessInput = document.getElementById("brightness-input");
let brightnessBtn = document.getElementById("brightness-btn"); let brightnessBtn = document.getElementById("brightness-btn");
brightnessBtn.addEventListener("click", () => { brightnessBtn.addEventListener("click", () => {
localStorage.setItem("brightness", brightnessInput.value); // localStorage.setItem("brightness", brightnessInput.value);
}); });
// change input animation // change input animation
@@ -1372,16 +1464,16 @@ for (let i = 1; i <= 13; i++) {
} }
window.onload = () => { window.onload = () => {
let getHostName = localStorage.getItem("hostName"); // let getHostName = localStorage.getItem("hostName");
let getBrightness = localStorage.getItem("brightness"); // let getBrightness = localStorage.getItem("brightness");
let getWifiSsid = localStorage.getItem("wifiSsid"); // let getWifiSsid = localStorage.getItem("wifiSsid");
let getWifiPass = localStorage.getItem("wifiPass"); // let getWifiPass = localStorage.getItem("wifiPass");
let getCountryCode = localStorage.getItem("countryCode"); // let getCountryCode = localStorage.getItem("countryCode");
let getInputAnimation = localStorage.getItem("inputAnimation"); // let getInputAnimation = localStorage.getItem("inputAnimation");
getHostName && // getHostName &&
(hostNameText.innerText = getHostName) && // (hostNameText.innerText = getHostName) &&
(hostNameInput.value = getHostName); // (hostNameInput.value = getHostName);
//getBrightness && (brightnessInput.value = getBrightness); //getBrightness && (brightnessInput.value = getBrightness);
//getWifiSsid && (wifiSsidInput.value = getWifiSsid); //getWifiSsid && (wifiSsidInput.value = getWifiSsid);

BIN
static/bootstrap/.DS_Store vendored Normal file

Binary file not shown.

5002
static/bootstrap/css/bootstrap-grid.css vendored Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,426 @@
/*!
* Bootstrap Reboot v5.0.2 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors
* Copyright 2011-2021 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
*/
*,
*::before,
*::after {
box-sizing: border-box;
}
@media (prefers-reduced-motion: no-preference) {
:root {
scroll-behavior: smooth;
}
}
body {
margin: 0;
font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
font-size: 1rem;
font-weight: 400;
line-height: 1.5;
color: #212529;
background-color: #fff;
-webkit-text-size-adjust: 100%;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
hr {
margin: 1rem 0;
color: inherit;
background-color: currentColor;
border: 0;
opacity: 0.25;
}
hr:not([size]) {
height: 1px;
}
h6, h5, h4, h3, h2, h1 {
margin-top: 0;
margin-bottom: 0.5rem;
font-weight: 500;
line-height: 1.2;
}
h1 {
font-size: calc(1.375rem + 1.5vw);
}
@media (min-width: 1200px) {
h1 {
font-size: 2.5rem;
}
}
h2 {
font-size: calc(1.325rem + 0.9vw);
}
@media (min-width: 1200px) {
h2 {
font-size: 2rem;
}
}
h3 {
font-size: calc(1.3rem + 0.6vw);
}
@media (min-width: 1200px) {
h3 {
font-size: 1.75rem;
}
}
h4 {
font-size: calc(1.275rem + 0.3vw);
}
@media (min-width: 1200px) {
h4 {
font-size: 1.5rem;
}
}
h5 {
font-size: 1.25rem;
}
h6 {
font-size: 1rem;
}
p {
margin-top: 0;
margin-bottom: 1rem;
}
abbr[title],
abbr[data-bs-original-title] {
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted;
cursor: help;
-webkit-text-decoration-skip-ink: none;
text-decoration-skip-ink: none;
}
address {
margin-bottom: 1rem;
font-style: normal;
line-height: inherit;
}
ol,
ul {
padding-left: 2rem;
}
ol,
ul,
dl {
margin-top: 0;
margin-bottom: 1rem;
}
ol ol,
ul ul,
ol ul,
ul ol {
margin-bottom: 0;
}
dt {
font-weight: 700;
}
dd {
margin-bottom: 0.5rem;
margin-left: 0;
}
blockquote {
margin: 0 0 1rem;
}
b,
strong {
font-weight: bolder;
}
small {
font-size: 0.875em;
}
mark {
padding: 0.2em;
background-color: #fcf8e3;
}
sub,
sup {
position: relative;
font-size: 0.75em;
line-height: 0;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
a {
color: #0d6efd;
text-decoration: underline;
}
a:hover {
color: #0a58ca;
}
a:not([href]):not([class]), a:not([href]):not([class]):hover {
color: inherit;
text-decoration: none;
}
pre,
code,
kbd,
samp {
font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
font-size: 1em;
direction: ltr /* rtl:ignore */;
unicode-bidi: bidi-override;
}
pre {
display: block;
margin-top: 0;
margin-bottom: 1rem;
overflow: auto;
font-size: 0.875em;
}
pre code {
font-size: inherit;
color: inherit;
word-break: normal;
}
code {
font-size: 0.875em;
color: #d63384;
word-wrap: break-word;
}
a > code {
color: inherit;
}
kbd {
padding: 0.2rem 0.4rem;
font-size: 0.875em;
color: #fff;
background-color: #212529;
border-radius: 0.2rem;
}
kbd kbd {
padding: 0;
font-size: 1em;
font-weight: 700;
}
figure {
margin: 0 0 1rem;
}
img,
svg {
vertical-align: middle;
}
table {
caption-side: bottom;
border-collapse: collapse;
}
caption {
padding-top: 0.5rem;
padding-bottom: 0.5rem;
color: #6c757d;
text-align: left;
}
th {
text-align: inherit;
text-align: -webkit-match-parent;
}
thead,
tbody,
tfoot,
tr,
td,
th {
border-color: inherit;
border-style: solid;
border-width: 0;
}
label {
display: inline-block;
}
button {
border-radius: 0;
}
button:focus:not(:focus-visible) {
outline: 0;
}
input,
button,
select,
optgroup,
textarea {
margin: 0;
font-family: inherit;
font-size: inherit;
line-height: inherit;
}
button,
select {
text-transform: none;
}
[role=button] {
cursor: pointer;
}
select {
word-wrap: normal;
}
select:disabled {
opacity: 1;
}
[list]::-webkit-calendar-picker-indicator {
display: none;
}
button,
[type=button],
[type=reset],
[type=submit] {
-webkit-appearance: button;
}
button:not(:disabled),
[type=button]:not(:disabled),
[type=reset]:not(:disabled),
[type=submit]:not(:disabled) {
cursor: pointer;
}
::-moz-focus-inner {
padding: 0;
border-style: none;
}
textarea {
resize: vertical;
}
fieldset {
min-width: 0;
padding: 0;
margin: 0;
border: 0;
}
legend {
float: left;
width: 100%;
padding: 0;
margin-bottom: 0.5rem;
font-size: calc(1.275rem + 0.3vw);
line-height: inherit;
}
@media (min-width: 1200px) {
legend {
font-size: 1.5rem;
}
}
legend + * {
clear: left;
}
::-webkit-datetime-edit-fields-wrapper,
::-webkit-datetime-edit-text,
::-webkit-datetime-edit-minute,
::-webkit-datetime-edit-hour-field,
::-webkit-datetime-edit-day-field,
::-webkit-datetime-edit-month-field,
::-webkit-datetime-edit-year-field {
padding: 0;
}
::-webkit-inner-spin-button {
height: auto;
}
[type=search] {
outline-offset: -2px;
-webkit-appearance: textfield;
}
/* rtl:raw:
[type="tel"],
[type="url"],
[type="email"],
[type="number"] {
direction: ltr;
}
*/
::-webkit-search-decoration {
-webkit-appearance: none;
}
::-webkit-color-swatch-wrapper {
padding: 0;
}
::file-selector-button {
font: inherit;
}
::-webkit-file-upload-button {
font: inherit;
-webkit-appearance: button;
}
output {
display: inline-block;
}
iframe {
border: 0;
}
summary {
display: list-item;
cursor: pointer;
}
progress {
vertical-align: baseline;
}
[hidden] {
display: none !important;
}
/*# sourceMappingURL=bootstrap-reboot.css.map */

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,8 @@
/*!
* Bootstrap Reboot v5.0.2 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors
* Copyright 2011-2021 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
*/*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){h1{font-size:2.5rem}}h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){h2{font-size:2rem}}h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){h3{font-size:1.75rem}}h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){h4{font-size:1.5rem}}h5{font-size:1.25rem}h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[data-bs-original-title],abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:.875em}mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0d6efd;text-decoration:underline}a:hover{color:#0a58ca}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em;direction:ltr;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:#d63384;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}
/*# sourceMappingURL=bootstrap-reboot.min.css.map */

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,423 @@
/*!
* Bootstrap Reboot v5.0.2 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors
* Copyright 2011-2021 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
*/
*,
*::before,
*::after {
box-sizing: border-box;
}
@media (prefers-reduced-motion: no-preference) {
:root {
scroll-behavior: smooth;
}
}
body {
margin: 0;
font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
font-size: 1rem;
font-weight: 400;
line-height: 1.5;
color: #212529;
background-color: #fff;
-webkit-text-size-adjust: 100%;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
hr {
margin: 1rem 0;
color: inherit;
background-color: currentColor;
border: 0;
opacity: 0.25;
}
hr:not([size]) {
height: 1px;
}
h6, h5, h4, h3, h2, h1 {
margin-top: 0;
margin-bottom: 0.5rem;
font-weight: 500;
line-height: 1.2;
}
h1 {
font-size: calc(1.375rem + 1.5vw);
}
@media (min-width: 1200px) {
h1 {
font-size: 2.5rem;
}
}
h2 {
font-size: calc(1.325rem + 0.9vw);
}
@media (min-width: 1200px) {
h2 {
font-size: 2rem;
}
}
h3 {
font-size: calc(1.3rem + 0.6vw);
}
@media (min-width: 1200px) {
h3 {
font-size: 1.75rem;
}
}
h4 {
font-size: calc(1.275rem + 0.3vw);
}
@media (min-width: 1200px) {
h4 {
font-size: 1.5rem;
}
}
h5 {
font-size: 1.25rem;
}
h6 {
font-size: 1rem;
}
p {
margin-top: 0;
margin-bottom: 1rem;
}
abbr[title],
abbr[data-bs-original-title] {
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted;
cursor: help;
-webkit-text-decoration-skip-ink: none;
text-decoration-skip-ink: none;
}
address {
margin-bottom: 1rem;
font-style: normal;
line-height: inherit;
}
ol,
ul {
padding-right: 2rem;
}
ol,
ul,
dl {
margin-top: 0;
margin-bottom: 1rem;
}
ol ol,
ul ul,
ol ul,
ul ol {
margin-bottom: 0;
}
dt {
font-weight: 700;
}
dd {
margin-bottom: 0.5rem;
margin-right: 0;
}
blockquote {
margin: 0 0 1rem;
}
b,
strong {
font-weight: bolder;
}
small {
font-size: 0.875em;
}
mark {
padding: 0.2em;
background-color: #fcf8e3;
}
sub,
sup {
position: relative;
font-size: 0.75em;
line-height: 0;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
a {
color: #0d6efd;
text-decoration: underline;
}
a:hover {
color: #0a58ca;
}
a:not([href]):not([class]), a:not([href]):not([class]):hover {
color: inherit;
text-decoration: none;
}
pre,
code,
kbd,
samp {
font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
font-size: 1em;
direction: ltr ;
unicode-bidi: bidi-override;
}
pre {
display: block;
margin-top: 0;
margin-bottom: 1rem;
overflow: auto;
font-size: 0.875em;
}
pre code {
font-size: inherit;
color: inherit;
word-break: normal;
}
code {
font-size: 0.875em;
color: #d63384;
word-wrap: break-word;
}
a > code {
color: inherit;
}
kbd {
padding: 0.2rem 0.4rem;
font-size: 0.875em;
color: #fff;
background-color: #212529;
border-radius: 0.2rem;
}
kbd kbd {
padding: 0;
font-size: 1em;
font-weight: 700;
}
figure {
margin: 0 0 1rem;
}
img,
svg {
vertical-align: middle;
}
table {
caption-side: bottom;
border-collapse: collapse;
}
caption {
padding-top: 0.5rem;
padding-bottom: 0.5rem;
color: #6c757d;
text-align: right;
}
th {
text-align: inherit;
text-align: -webkit-match-parent;
}
thead,
tbody,
tfoot,
tr,
td,
th {
border-color: inherit;
border-style: solid;
border-width: 0;
}
label {
display: inline-block;
}
button {
border-radius: 0;
}
button:focus:not(:focus-visible) {
outline: 0;
}
input,
button,
select,
optgroup,
textarea {
margin: 0;
font-family: inherit;
font-size: inherit;
line-height: inherit;
}
button,
select {
text-transform: none;
}
[role=button] {
cursor: pointer;
}
select {
word-wrap: normal;
}
select:disabled {
opacity: 1;
}
[list]::-webkit-calendar-picker-indicator {
display: none;
}
button,
[type=button],
[type=reset],
[type=submit] {
-webkit-appearance: button;
}
button:not(:disabled),
[type=button]:not(:disabled),
[type=reset]:not(:disabled),
[type=submit]:not(:disabled) {
cursor: pointer;
}
::-moz-focus-inner {
padding: 0;
border-style: none;
}
textarea {
resize: vertical;
}
fieldset {
min-width: 0;
padding: 0;
margin: 0;
border: 0;
}
legend {
float: right;
width: 100%;
padding: 0;
margin-bottom: 0.5rem;
font-size: calc(1.275rem + 0.3vw);
line-height: inherit;
}
@media (min-width: 1200px) {
legend {
font-size: 1.5rem;
}
}
legend + * {
clear: right;
}
::-webkit-datetime-edit-fields-wrapper,
::-webkit-datetime-edit-text,
::-webkit-datetime-edit-minute,
::-webkit-datetime-edit-hour-field,
::-webkit-datetime-edit-day-field,
::-webkit-datetime-edit-month-field,
::-webkit-datetime-edit-year-field {
padding: 0;
}
::-webkit-inner-spin-button {
height: auto;
}
[type=search] {
outline-offset: -2px;
-webkit-appearance: textfield;
}
[type="tel"],
[type="url"],
[type="email"],
[type="number"] {
direction: ltr;
}
::-webkit-search-decoration {
-webkit-appearance: none;
}
::-webkit-color-swatch-wrapper {
padding: 0;
}
::file-selector-button {
font: inherit;
}
::-webkit-file-upload-button {
font: inherit;
-webkit-appearance: button;
}
output {
display: inline-block;
}
iframe {
border: 0;
}
summary {
display: list-item;
cursor: pointer;
}
progress {
vertical-align: baseline;
}
[hidden] {
display: none !important;
}
/*# sourceMappingURL=bootstrap-reboot.rtl.css.map */

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,8 @@
/*!
* Bootstrap Reboot v5.0.2 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors
* Copyright 2011-2021 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
*/*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){h1{font-size:2.5rem}}h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){h2{font-size:2rem}}h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){h3{font-size:1.75rem}}h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){h4{font-size:1.5rem}}h5{font-size:1.25rem}h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[data-bs-original-title],abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-right:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-right:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:.875em}mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0d6efd;text-decoration:underline}a:hover{color:#0a58ca}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em;direction:ltr;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:#d63384;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:right}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:right;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:right}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}[type=email],[type=number],[type=tel],[type=url]{direction:ltr}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}
/*# sourceMappingURL=bootstrap-reboot.rtl.min.css.map */

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

10837
static/bootstrap/css/bootstrap.css vendored Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

10813
static/bootstrap/css/bootstrap.rtl.css vendored Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

6748
static/bootstrap/js/bootstrap.bundle.js vendored Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

4967
static/bootstrap/js/bootstrap.esm.js vendored Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

5016
static/bootstrap/js/bootstrap.js vendored Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

7
static/bootstrap/js/bootstrap.min.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

9190
static/js/jquery-2.1.1.js vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -12,6 +12,7 @@ html {
} }
body { body {
background-color: black; background-color: black;
color:white
} }
/* Top logo bar */ /* Top logo bar */
@@ -34,16 +35,11 @@ header {
transition: 0.25s; transition: 0.25s;
} }
.hostname-text { .hostname-text {
margin: 0;
align-self: flex-end;
font-style: italic; font-style: italic;
color: greenyellow; color: greenyellow;
font-size: 18px;
position: absolute;
left: 50%;
transform: translateX(-50%);
} }
/* General Ticker */ /* General Ticker */
.buttons-list { .buttons-list {
display: flex; display: flex;
@@ -238,6 +234,20 @@ li.active {
} }
} }
.status {
width: 25px;
height: 25px;
}
#circle-1 {
background-color: green;
}
#circle-2 {
background-color: red;
}
#circle-3 {
background-color: orange;
}
@media (min-width: 768px) and (max-width: 991px) { @media (min-width: 768px) and (max-width: 991px) {
.icons-list a { .icons-list a {
position: relative; position: relative;

540
templates/index.html Executable file → Normal file
View File

@@ -3,21 +3,19 @@
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" /> <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<link
href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css"
rel="stylesheet"
integrity="sha384-+0n0xVW2eSR5OomGNYDnhzAbDsOXxcvSN1TPprVMTNDbiYZCxYbOOl7+AMvyTG2x"
crossorigin="anonymous"
/>
src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" <meta http-equiv="Pragma" content="no-cache" />
integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
crossorigin="anonymous"
page
<meta http-equiv="Expires" content="0" />
<title>Fintic</title>
<!-- Bootstrap 5 CDN Links --> <!-- Bootstrap 5 CDN Links -->
@@ -41,42 +39,65 @@
<!-- Fontawesome - for icons --> <!-- Fontawesome - for icons -->
<link <link
<header>
<div class="d-inline-flex align-items-end"> rel="stylesheet"
<img src="{{ url_for('static', filename='images/logo_white.png') }}" class="img-fluid logo" alt="logo" />
<p class="m-0 text-white">Version 1.0</p> href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css"
</div>
<p class="hostname-text"> integrity="sha512-+4zCK9k+qNFUR5X+cKL9EIR+ZOhtIloNl9GIKS57V1MyNsYpYcUrUeQc9vNfzsWfV28IaLL3i96P9sdNyeRssA=="
crossorigin="anonymous"
/> />
<a id="update-btn" class="btn update-btn">Check Updates</a> <link
</header>
rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/fontawesome.min.css"
integrity="sha512-kJ30H6g4NGhWopgdseRb8wTsyllFUYIx3hiUwmGAkgA9B/JbzUBDQVr2VVlWGde6sdBVOG7oU8AL35ORDuMm8g=="
<!-- General Ticker Settings --> crossorigin="anonymous"
<section class="general-ticker text-white">
<h4 class="pt-3 pb-3">General Ticker Settings:</h4> />
<ul class="buttons-list">
<!--<li><a href="/start" class="btn btn-success">Start Display</a></li>-->
<li><a id="start-btn" class="btn btn-success">Start Display</a></li>
<li> <!-- CSS Stylesheet linking -->
<a id="stop-btn" class="btn btn-stop-display">Stop Display</a>
</li> <link href="{{ url_for('static', filename='style.css') }}" type="text/css" rel="stylesheet" />
<li>
<a id="screensaver-btn" class="btn btn-warning text-white">Screensaver</a>
</li>
<li><a id="shutdown-btn" class="btn btn-danger">Shut Down</a></li>
</ul>
<div class="row row-1"> </head>
<body>
<div class="container">
<!-- Top logo bar -->
<!-- Top logo bar -->
<nav class="navbar navbar-light justify-content-end" style="border-bottom:2px solid white">
<div class="container">
<a class="navbar-brand" href="#">
<img src="{{ url_for('static', filename='images/logo_white.png') }}" class="logo" alt="logo" /><p class="text-white">Version 1.0</p>
</a>
<div class="hostname-text">
<label for="brightness-input" class="col-form-label" <p>
>Brightness (1 - 10):
</label>
</div>
<br />
<br />
Hostname: <span id="host-name">{{ general_settings.hostname }}</span>.local Hostname: <span id="host-name">{{ general_settings.hostname }}</span>.local
</p> </p>
@@ -86,20 +107,18 @@
<div class=""> <div class="">
<button id="update-btn" class="btn btn-secondary">Check Updates</button> <button id="update-btn" class="btn btn-secondary">Check Updates</button>
<button class="btn set-btn" id="brightness-btn">Set</button> </div>
</div> </div>
</nav>
<div class="col-lg-6 col-md-6 col-sm-12 screen-saver">
<!-- End logo bar --> <!-- End logo bar -->
<label for="inputAnimation" class="col-form-label"
>Screensaver animation:
</div> <!-- General Ticker Heading -->
<div class="row"> <div class="row">
@@ -110,20 +129,21 @@
General Ticker Settings: General Ticker Settings:
</h3> </h3>
<button class="btn set-btn">Set</button>
</div> </div>
</div> </div>
<!-- End General Ticker Heading -->
<div class="row">
<div class="col-lg-6 col-md-6 col-sm-12">
<!-- Button List -->
<div class="row" style="justify-content:center">
<label for="host-name-input" class="col-form-label" <div class="col-lg-2 col-md-2 col-sm-2">
>Change host name:
</label>
</div>
<a id="start-btn" class="btn btn-success">Start Display</a> <a id="start-btn" class="btn btn-success">Start Display</a>
</div> </div>
@@ -133,126 +153,112 @@
<a id="stop-btn" class="btn btn-info">Stop Display</a> <a id="stop-btn" class="btn btn-info">Stop Display</a>
</div> </div>
<button id="host-name-btn" class="btn set-btn">Set</button> <div class="col-lg-2 col-md-2 col-sm-2">
<a id="restart-btn" class="btn btn-dark">Restart Display</a> <a id="restart-btn" class="btn btn-dark">Restart Display</a>
<div class="col-lg-6 col-md-6 col-sm-12"> </div>
<div class="col-lg-2 col-md-2 col-sm-2"> <div class="col-lg-2 col-md-2 col-sm-2">
<label for="inputDisplayFormat" class="col-form-label" <a id="screensaver-btn" class="btn btn-warning text-white">Screen Saver</a>
>Ticker Display Format:
</div> </div>
<div class="col-lg-2 col-md-2 col-sm-2"> <div class="col-lg-2 col-md-2 col-sm-2">
<a id="shutdown-btn" class="btn btn-danger">Shut Down</a> <a id="shutdown-btn" class="btn btn-danger">Shut Down</a>
</div> </div>
<div class="col-auto">
<button id="dispformat-btn" class="btn set-btn">Set</button> </div>
<!-- End Button List --> <!-- End Button List -->
<!-- Ticker Form -->
<!-- First Row --> <!-- First Row -->
<div class="ticker-form" style="padding-top:3%; padding-bottom:2%;border-bottom:2px solid white">
<div class="row-2"></div>
</section> <div class="row g-3 align-items-center" >
<!-- Features to Display -->
<section class="display-features text-white">
<h4 class="pt-3">Features to Display:</h4>
<div class="col-lg-6 col-md-6 col-sm-12 d-block"> <div class="col-lg-6 col-md-6 col-sm-12 d-block">
<div class="row g-3 align-items-center"> <div class="row g-3 align-items-center">
<div class="row row-3">
<h4 id="top-row-text">Top row</h4> <!-- Brightness Input -->
<div class="col-auto">
<label for="brightness-input" class="col-form-label">Brightness (1 - 10):</label>
<h6>Available Features:</h6> </div><br /><br />
<div class="features-div">
<div class="col-auto">
<input
type="text" type="text"
class="display-features-list text-dark"
>
id="brightness-input" id="brightness-input"
class="form-control brightness-text" class="form-control brightness-text"
aria-describedby="TextHelpInline" aria-describedby="TextHelpInline"
<div class="col-lg-2 col-md-2 col-sm-12"> value={{ general_settings.brightness }}
<div class="icons-list">
<i />
id="feature-to-display"
class="fa fa-chevron-right" </div>
aria-hidden="true"
></i>
<br />
<br />
<i
id="display-to-feature"
class="fa fa-chevron-left"
aria-hidden="true"
></i>
<div class="col-auto"> <div class="col-auto">
<button class="btn btn-secondary" id="brightness-btn">Set</button>
<h6>Display Format:</h6> </div>
<div class="features-div">
<ul </div>
id="display-format"
class="display-features-list text-dark" </div>
>
<!-- End Brightness Input --> <!-- End Brightness Input -->
<div class="col-lg-6 col-md-6 col-sm-12 d-block"> <div class="col-lg-6 col-md-6 col-sm-12 d-block">
<div class="row g-3 align-items-center"> <div class="row g-3 align-items-center">
<div class="col-auto"> <div class="col-auto">
<label for="inputAnimation" class="col-form-label">Screensaver animation: <label for="inputAnimation" class="col-form-label">Screensaver animation:
<div class="col-lg-2 col-md-2 col-sm-12">
<div class="icons-list"> </label>
<i
id="display-increase-btn" </div><br/><br/>
class="fa fa-chevron-up"
aria-hidden="true"
></i>
<br />
<br />
<i
id="display-decrease-btn"
class="fa fa-chevron-down"
aria-hidden="true"
></i>
<a style="position: relative; bottom: 30px; left: 10px"
>Sort Order</a
>
<div class="col-auto"> <div class="col-auto">
<select id="inputAnimation" class="form-select"> <select id="inputAnimation" class="form-select">
<option>Pulsating Colors</option> <option>Pulsating Colors</option>
<div id="second-row" class="row row-3">
<h4 id="bottom-row-text">Bottom row</h4>
<!--<option>Rotating Square</option>--> <!--<option>Rotating Square</option>-->
<option>Pulsating brightness</option>
<!--<option>Game of Life</option>-->
<h6>Available Features:</h6> <option>Sleep</option>
<div class="features-div">
</select>
</div> </div>
class="display-features-list text-dark" <div class="col-auto" id="input-animation-btn">
>
<button class="btn btn-secondary">Set</button> <button class="btn btn-secondary">Set</button>
@@ -269,71 +275,49 @@
<!-- Second Row --> <!-- Second Row -->
<div class="col-lg-2 col-md-2 col-sm-12">
<div class="icons-list"> <div class="row g-3 align-items-center" style="padding-top:3%">
<i
id="feature-to-display-2" <div class="col-lg-6 col-md-6 col-sm-12 d-block">
class="fa fa-chevron-right"
aria-hidden="true" <div class="row g-3 align-items-center">
></i>
<br />
<br />
<i
id="display-to-feature-2"
class="fa fa-chevron-left"
aria-hidden="true"
></i>
<!-- Host Name Input --> <!-- Host Name Input -->
<div class="col-auto">
<h6>Display Format:</h6> <label for="host-name-input" class="col-form-label">Change host name:</label>
<div class="features-div">
<ul </div><br/><br/>
id="display-format-2"
class="display-features-list text-dark" <div class="col-auto">
<input <input
type="text" type="text"
id="host-name-input"
class="form-control"
aria-describedby="TextHelpInline"
value={{ general_settings.hostname }}
/>
</div>
<div class="col-auto">
></ul> <button class="btn btn-secondary" id="host-name-btn">Set</button>
</div>
</div>
<div class="col-lg-2 col-md-2 col-sm-12">
<div class="icons-list">
<i
id="display-increase-btn-2"
class="fa fa-chevron-up"
aria-hidden="true"
></i>
<br />
<br />
<i
id="display-decrease-btn-2"
class="fa fa-chevron-down"
aria-hidden="true"
></i>
<a style="position: relative; bottom: 30px; left: 10px"
>Sort Order</a
>
</div>
</div>
</div>
<div class="row-2"></div>
</section>
<!-- what to display in each feature(Stocks) -->
<section class="stocks-features text-white row-3">
</div> </div>
<div
class="row g-3 align-items-center d-flex justify-content-center mt-3" </div>
>
</div> </div>
<!-- End Brightness Input --> <!-- End Brightness Input -->
<div class="col-lg-6 col-md-6 col-sm-12 d-block"> <div class="col-lg-6 col-md-6 col-sm-12 d-block">
@@ -351,7 +335,7 @@
<div class="col-auto"> <div class="col-auto">
<select id="inputDisplayFormat" class="form-select"> <select id="inputDisplayFormat" class="form-select">
<option>Standard Scrolling</option> <option>Standard Scrolling</option>
<option>Professional two rows</option> <option>Professional two rows</option>
@@ -430,6 +414,9 @@
<li>{{f}}</li> <li>{{f}}</li>
{% endfor%}
</ul>
</div> </div>
@@ -491,7 +478,7 @@
<i id="display-increase-btn" class="fa fa-chevron-up" aria-hidden="true"></i><br><br> <i id="display-increase-btn" class="fa fa-chevron-up" aria-hidden="true"></i><br><br>
<div class="row g-3 align-items-center left-div"> <i id="display-decrease-btn" class="fa fa-chevron-down" aria-hidden="true"></i>
<a>Sort Order</a> <a>Sort Order</a>
@@ -510,7 +497,7 @@
<!-- Features List Second Row --> <!-- Features List Second Row -->
</div>
<div id="second-row" class="row" style="border-bottom:2px solid white; padding:2%"> <div id="second-row" class="row" style="border-bottom:2px solid white; padding:2%">
<h4 id="bottom-row-text" style="display:none">Bottom row</h4> <h4 id="bottom-row-text" style="display:none">Bottom row</h4>
@@ -662,6 +649,9 @@
<option value="3">Forex</option> <option value="3">Forex</option>
<option value="4">Current Weather</option> <option value="4">Current Weather</option>
<option value="5">Daily Forecast</option>
<option value="6">News</option> <option value="6">News</option>
<option value="7">Sports (Upcoming Games)</option> <option value="7">Sports (Upcoming Games)</option>
@@ -725,7 +715,7 @@
</div> </div>
</div> </div>
<div class="row g-3 align-items-center">
<div class="row g-3 align-items-center mt-3 left-div"> <div class="row g-3 align-items-center mt-3 left-div">
@@ -744,7 +734,7 @@
<select <select
</div> id="inputScrollSpeedRow"
class="form-select speed-select" class="form-select speed-select"
@@ -895,6 +885,9 @@
</label> </label>
</div> </div>
<div class="col-auto">
<input <input
class="form-check-input point-select" class="form-check-input point-select"
@@ -957,7 +950,7 @@
{%endif%} {%endif%}
/>
</div> </div>
@@ -977,7 +970,7 @@
</div> </div>
</div> <div class="col-auto">
<input <input
@@ -1127,6 +1120,9 @@
<span style="position: relative; bottom: 0; left: 10px"
>Remove</span
> >
@@ -1188,7 +1184,26 @@
</div> </div>
</div>
<div class="row g-3 align-items-center mt-3 left-div"> <div class="row g-3 align-items-center mt-3 left-div">
<div class="col-auto">
<label for="inputScrollSpeedRow2" class="col-form-label"
>Scroll Speed (Row 2):
</label>
</div>
<div class="col-auto">
<select
id="inputScrollSpeedRow2" id="inputScrollSpeedRow2"
class="form-select speed-select" class="form-select speed-select"
@@ -1316,6 +1331,9 @@
id="flexCheckChecked6" id="flexCheckChecked6"
{% {%
if
crypto_settings.percent%} crypto_settings.percent%}
checked checked
@@ -1393,7 +1411,25 @@
type="checkbox" type="checkbox"
value="" value=""
id="flexCheckChecked8"
{% {%
if
crypto_settings.logos%}
checked
{%endif%}
/>
</div>
</div>
<!-- <div class="row g-3 align-items-center"> <!-- <div class="row g-3 align-items-center">
@@ -1503,6 +1539,7 @@
</ul> </ul>
</div> </div>
</div> </div>
<div class="col-lg-2 col-md-2 col-sm-12"> <div class="col-lg-2 col-md-2 col-sm-12">
@@ -1514,12 +1551,27 @@
id="crypto-increase-btn" id="crypto-increase-btn"
class="fa fa-chevron-up" class="fa fa-chevron-up"
<option>US</option>
<option>GB</option> aria-hidden="true"
></i>
<br />
<br />
<i <i
id="crypto-decrease-btn"
class="fa fa-chevron-down"
aria-hidden="true"
></i>
<a style="position: relative; bottom: 30px; left: 10px"
>Sort Order</a >Sort Order</a
> >
@@ -1533,17 +1585,47 @@
<i <i
id="crypto-remove-btn" id="crypto-remove-btn"
<option>Special</option>
<option></option> class="fa fa-minus"
<option></option>
<option></option> aria-hidden="true"
></i>
<span style="position: relative; bottom: 0; left: 10px"
>Remove</span
>
</div>
</div>
</div>
<div class="save-btn-div">
<a href="#" class="btn save-btn">Save</a>
</div>
</div>
<!-- Forex -->
<div class="page" id="Page3" style="display: none">
<div class="row"> <div class="row">
<div class="col-lg-6 col-md-6 col-sm-12"> <div class="col-lg-6 col-md-6 col-sm-12">
<p class="text-center pt-2">Or</p>
<div class="row g-3 align-items-center mt-3"> <div class="row g-3 align-items-center mt-3">
<div class="row g-3 align-items-center mt-3">
<div class="col-auto"> <div class="col-auto">
<label for="inputScrollSpeed3" class="col-form-label" <label for="inputScrollSpeed3" class="col-form-label"
@@ -1576,7 +1658,7 @@
</div> </div>
</div>
<div class="row g-3 align-items-center mt-3 left-div"> <div class="row g-3 align-items-center mt-3 left-div">
@@ -1718,7 +1800,7 @@
value="" value=""
<option>NHA</option> id="flexCheckChecked11"
{% {%
@@ -1869,7 +1951,7 @@
<div class="col-auto"> <div class="col-auto">
<label for="inputTransition" class="col-form-label" <label for="inputTransition" class="col-form-label"
<option>NHA</option>
>Display Feature Title >Display Feature Title
</label> </label>
@@ -2020,8 +2102,7 @@
<div class="col-auto"> <div class="col-auto">
<option>NHA</option> <label for="inputScrollSpeed4" class="col-form-label"
<option>Premier League</option>
>Scroll Speed: >Scroll Speed:
@@ -2170,8 +2251,8 @@
<div class="row g-3 align-items-center mt-3"> <div class="row g-3 align-items-center mt-3">
<div class="col-auto"> <div class="col-auto">
<option>NHA</option>
<option>PL</option> <label for="inputScrollSpeed" class="col-form-label"
>Temperature unit: >Temperature unit:
@@ -2277,6 +2358,9 @@
if if
current_weather.title%}
checked
{%endif%} {%endif%}
@@ -2457,6 +2541,9 @@
class="form-select speed-select" class="form-select speed-select"
> >
<option>Medium</option>
<option>Slow</option> <option>Slow</option>
<option>Fast</option> <option>Fast</option>
@@ -2635,6 +2722,9 @@
<select <select
id="inputTransition52"
class="form-select wind-speed-select"
> >
@@ -2969,26 +3059,29 @@
<div class="col-auto"> <div class="col-auto">
<select <select
id="inputTransition6"
<button class="btn set-btn h-50-px" id="join-network-btn"> class="form-select animation-select"
> >
<p class="font-6 m-0 position-absolute" id="connected-text"> <option>Down</option>
Connected
</p> <option>Up</option>
<option>Continuous</option> <option>Continuous</option>
</select> </select>
</div> </div>
<p>&copy; 2021 Fintic All Rights Reserved</p>
</div> </div>
<p>Frankfurter API, NewsAPI</p>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="row g-3 align-items-center mt-3"> <div class="row g-3 align-items-center mt-3">
<div class="col-auto"> <div class="col-auto">
@@ -2998,6 +3091,45 @@
>Country: >Country:
</label> </label>
</div>
<div class="col-auto">
<select
id="inputScrollSpeed62"
class="form-select country-select"
>
<option>United States</option>
<option>Australia</option>
<option>Canada</option>
<option>Great Britain</option>
<option>New Zealand</option>
<option>Ireland</option>
<option>Singapore</option>
<option>South Africa</option>
<option>Worldwide</option>
</select>
</div>
<div class="col-auto">
<input
class="form-check-input title-select news_check_class" class="form-check-input title-select news_check_class"
type="checkbox" type="checkbox"