Inititial commit for release v2.0.0
A lot of work-in-progress and far from complete. Lots of improvements related to user-friendliness, fully new web-UI. Better infrastructure.... more coming soon
This commit is contained in:
837
settings-UI.html
837
settings-UI.html
@@ -1,837 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<title>Settings-File Generator v2.0.0 BETA</title>
|
||||
<script src="https://code.jquery.com/jquery-3.3.1.min.js"
|
||||
integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/tocas-ui/2.3.3/tocas.css">
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/tocas-ui/2.3.3/tocas.js"></script>
|
||||
<style>
|
||||
body {
|
||||
background-color: #eaeaea;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<br><br>
|
||||
<div class="ts container">
|
||||
<div class="ts segment">
|
||||
<div class="ts header">
|
||||
Setting Generator, v.2.0.0 BETA
|
||||
<div class="sub header"><a href="https://github.com/aceisace/Inky-Calendar">For Inky-Calendar Project of
|
||||
Ace-Innovation Laboratory (by aceisace)</a><br>
|
||||
<img src="https://github.com/aceisace/Inky-Calendar/blob/dev_ver2_0/Gallery/logo.png?raw=true"
|
||||
width="1000" alt="logo">
|
||||
<div>
|
||||
</div>
|
||||
<ins>If no value is filled in for any of the row, the default value will be used.</ins>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<form class="ts form">
|
||||
<blockquote>
|
||||
<div class="content">
|
||||
<p>Instructions<br>
|
||||
Insert your personal details and preferences and click on 'Generate'. Copy the downloaded file to the
|
||||
Raspberry Pi. The location does not matter, however, you need to know the path to this file.
|
||||
</p>
|
||||
</div>
|
||||
</blockquote>
|
||||
|
||||
<fieldset>
|
||||
<legend>
|
||||
General settings
|
||||
</legend>
|
||||
<div class="field">
|
||||
<label>On which day does the week start on in your country?</label>
|
||||
<div class="ts checkboxes">
|
||||
<div class="ts radio checkbox">
|
||||
<input id="week_monday" type="radio" name="hr" checked>
|
||||
<label for="week_monday">Monday</label>
|
||||
</div>
|
||||
<div class="ts radio checkbox">
|
||||
<input id="week_sunday" type="radio" name="hr">
|
||||
<label for="week_sunday">Sunday</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<label>At which hours (in 24 hour-format) should the display be calibrated? Leave blank if you're not
|
||||
sure.</label>
|
||||
<details class="ts accordion">
|
||||
<summary>
|
||||
<i class="dropdown icon"></i> Info
|
||||
</summary>
|
||||
<div class="content">
|
||||
<p>Calibration refers to the process of flushing the display with a single colour to prevent 'ghosting'
|
||||
(an
|
||||
effect specific to E-Paper displays where the remnants of the previous image can be seen on the current
|
||||
one). It takes several minutes to finish the calibration(around 10 mins for the 2-colour displays and
|
||||
around 20 mins for the 3-colour displays) so please choose hours where you are less likely to need the
|
||||
display. It is recommended to calibrate at least thrice a day.</p>
|
||||
</div>
|
||||
</details>
|
||||
<input id="calibration_hours" type="text" placeholder="0,12,18">
|
||||
</div>
|
||||
<div class="field">
|
||||
<label>Which E-Paper model are you using?</label>
|
||||
<div class="ts checkboxes">
|
||||
<div class="ts radio checkbox">
|
||||
<input id="9_in_7" type="radio" name="dp" checked>
|
||||
<label for="9_in_7">9.7" ePaper</label>
|
||||
</div>
|
||||
<div class="ts checkboxes">
|
||||
<div class="ts radio checkbox">
|
||||
<input id="epd_7_in_5_v3_colour" type="radio" name="dp" checked>
|
||||
<label for="epd_7_in_5_v3_colour">7.5" v3 (880x528px) colour (latest)</label>
|
||||
</div>
|
||||
<div class="ts radio checkbox">
|
||||
<input id="epd_7_in_5_v3" type="radio" name="dp">
|
||||
<label for="epd_7_in_5_v3">7.5" v3 (880x528px) black-white (latest)</label>
|
||||
</div>
|
||||
<div class="ts checkboxes">
|
||||
<div class="ts radio checkbox">
|
||||
<input id="epd_7_in_5_v2_colour" type="radio" name="dp" checked>
|
||||
<label for="epd_7_in_5_v2_colour">7.5" v2 (800x400px) colour</label>
|
||||
</div>
|
||||
<div class="ts radio checkbox">
|
||||
<input id="epd_7_in_5_v2" type="radio" name="dp">
|
||||
<label for="epd_7_in_5_v2">7.5" v2 (800x400px) black-white</label>
|
||||
</div>
|
||||
<div class="ts radio checkbox">
|
||||
<input id="epd_7_in_5_colour" type="radio" name="dp">
|
||||
<label for="epd_7_in_5_colour">7.5" v1 (600x384px) colour</label>
|
||||
</div>
|
||||
<div class="ts radio checkbox">
|
||||
<input id="epd_7_in_5" type="radio" name="dp">
|
||||
<label for="epd_7_in_5">7.5" v1 (600x384px) black-white</label>
|
||||
</div>
|
||||
<div class="ts radio checkbox">
|
||||
<input id="epd_5_in_83_colour" type="radio" name="dp">
|
||||
<label for="epd_5_in_83_colour">5.83" colour</label>
|
||||
</div>
|
||||
<div class="ts radio checkbox">
|
||||
<input id="epd_5_in_83" type="radio" name="dp">
|
||||
<label for="epd_5_in_83">5.83" black-white</label>
|
||||
</div>
|
||||
<div class="ts radio checkbox">
|
||||
<input id="epd_4_in_2_colour" type="radio" name="dp">
|
||||
<label for="epd_4_in_2_colour">4.2" colour</label>
|
||||
</div>
|
||||
<div class="ts radio checkbox">
|
||||
<input id="epd_4_in_2" type="radio" name="dp">
|
||||
<label for="epd_4_in_2">4.2" black-white</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<label>How often should the display be refreshed?</label>
|
||||
<div class="ts checkboxes">
|
||||
<div class="ts radio checkbox">
|
||||
<input id="update_10_mins" type="radio" name="aa">
|
||||
<label for="update_10_mins">every 10 minutes. Not recommended for 3-colour E-Papers!</label>
|
||||
</div>
|
||||
<div class="ts radio checkbox">
|
||||
<input id="update_15_mins" type="radio" name="aa">
|
||||
<label for="update_15_mins">every 15 minutes</label>
|
||||
</div>
|
||||
<div class="ts radio checkbox">
|
||||
<input id="update_20_mins" type="radio" name="aa">
|
||||
<label for="update_20_mins">every 20 minutes</label>
|
||||
</div>
|
||||
<div class="ts radio checkbox">
|
||||
<input id="update_30_mins" type="radio" name="aa">
|
||||
<label for="update_30_mins">every 30 minutes</label>
|
||||
</div>
|
||||
<div class="ts radio checkbox">
|
||||
<input id="update_60_mins" type="radio" name="aa" checked>
|
||||
<label for="update_60_mins">every 60 minutes (recommended)</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<label>Which language should be used in the software?</label>
|
||||
<div class="ts checkboxes">
|
||||
<div class="ts radio checkbox">
|
||||
<input id="language_en" type="radio" name="la" checked>
|
||||
<label for="language_en">English</label>
|
||||
</div>
|
||||
<div class="ts radio checkbox">
|
||||
<input id="language_de" type="radio" name="la">
|
||||
<label for="language_de">German</label>
|
||||
</div>
|
||||
<div class="ts radio checkbox">
|
||||
<input id="language_ru" type="radio" name="la">
|
||||
<label for="language_ru">Russian</label>
|
||||
</div>
|
||||
<div class="ts radio checkbox">
|
||||
<input id="language_it" type="radio" name="la">
|
||||
<label for="language_it">Italian</label>
|
||||
</div>
|
||||
<div class="ts radio checkbox">
|
||||
<input id="language_es" type="radio" name="la">
|
||||
<label for="language_es">Spanish</label>
|
||||
</div>
|
||||
<div class="ts radio checkbox">
|
||||
<input id="language_fr" type="radio" name="la">
|
||||
<label for="language_fr">French</label>
|
||||
</div>
|
||||
<div class="ts radio checkbox">
|
||||
<input id="language_el" type="radio" name="la">
|
||||
<label for="language_el">Greek</label>
|
||||
</div>
|
||||
<div class="ts radio checkbox">
|
||||
<input id="language_sv" type="radio" name="la">
|
||||
<label for="language_sv">Swedish</label>
|
||||
</div>
|
||||
<div class="ts radio checkbox">
|
||||
<input id="language_nl" type="radio" name="la">
|
||||
<label for="language_nl">Dutch</label>
|
||||
</div>
|
||||
<div class="ts radio checkbox">
|
||||
<input id="language_pl" type="radio" name="la">
|
||||
<label for="language_pl">Polish</label>
|
||||
</div>
|
||||
<div class="ts radio checkbox">
|
||||
<input id="language_ua" type="radio" name="la">
|
||||
<label for="language_ua">Ukrainian</label>
|
||||
</div>
|
||||
<div class="ts radio checkbox">
|
||||
<input id="language_nb" type="radio" name="la">
|
||||
<label for="language_nb">Norwegian</label>
|
||||
</div>
|
||||
<div class="ts radio checkbox">
|
||||
<input id="language_vi" type="radio" name="la">
|
||||
<label for="language_vi">Vietnamese</label>
|
||||
</div>
|
||||
<div class="ts radio checkbox">
|
||||
<input id="language_zh_tw" type="radio" name="la">
|
||||
<label for="language_zh_tw">Chinese-Taiwanese</label>
|
||||
</div>
|
||||
<div class="ts radio checkbox">
|
||||
<input id="language_zh" type="radio" name="la">
|
||||
<label for="language_zh">Chinese</label>
|
||||
</div>
|
||||
<div class="ts radio checkbox">
|
||||
<input id="language_ja" type="radio" name="la">
|
||||
<label for="language_ja">Japanese</label>
|
||||
</div>
|
||||
<div class="ts radio checkbox">
|
||||
<input id="language_ko" type="radio" name="la">
|
||||
<label for="language_ko">Korean</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<label>Which units are used in your country?</label>
|
||||
<div class="ts checkboxes">
|
||||
<div class="ts radio checkbox">
|
||||
<input id="metric" type="radio" name="un" checked>
|
||||
<label for="metric">Metric</label>
|
||||
</div>
|
||||
<div class="ts radio checkbox">
|
||||
<input id="imperial" type="radio" name="un">
|
||||
<label for="imperial">Imperial</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<label>Which hour-format do you prefer?</label>
|
||||
<div class="ts checkboxes">
|
||||
<div class="ts radio checkbox">
|
||||
<input id="24_hours" type="radio" name="tf" checked>
|
||||
<label for="24_hours">24-hour format</label>
|
||||
</div>
|
||||
<div class="ts radio checkbox">
|
||||
<input id="12_hours" type="radio" name="tf">
|
||||
<label for="12_hours">12-hour format</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<label>Show an info section? The info section will be shown at the very bottom of the display and shows the time of last update.</label>
|
||||
<div class="ts checkboxes">
|
||||
<div class="ts radio checkbox">
|
||||
<input id="info_yes" type="radio" name="info_section" checked>
|
||||
<label for="info_yes">Yes, show an info section</label>
|
||||
</div>
|
||||
<div class="ts radio checkbox">
|
||||
<input id="info_no" type="radio" name="info_section">
|
||||
<label for="info_no">Do not show the info section</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<label>What should be displayed in the top section?</label>
|
||||
<div class="ts checkboxes" id="cb_top_section">
|
||||
<div class="ts radio checkbox">
|
||||
<input id="Weather" type="radio" name="ts" checked>
|
||||
<label for="Weather">Weather</label>
|
||||
</div>
|
||||
<div class="ts radio checkbox">
|
||||
<input id="top_blank" type="radio" name="ts">
|
||||
<label for="top_blank">Nothing</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field" id="pnl_top_height">
|
||||
<label>Height of the top section</label>
|
||||
<details class="ts accordion">
|
||||
<summary>
|
||||
<i class="dropdown icon"></i> Info
|
||||
</summary>
|
||||
<div class="content">
|
||||
<p>Section height is calculated relative to other sections. With this approach you can choose pixel-perfect, relative or percentage panel heights.</p></div>
|
||||
</details>
|
||||
<input id="top_height" type="number" min="1" max="100" placeholder="10">
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<label>What should be displayed in the middle (main) section?</label>
|
||||
<div class="ts checkboxes" id="cb_middle_section">
|
||||
<div class="ts radio checkbox">
|
||||
<input id="Calendar" type="radio" name="ms" checked>
|
||||
<label for="Calendar">A monthly Calendar</label>
|
||||
</div>
|
||||
<div class="ts radio checkbox">
|
||||
<input id="Agenda" type="radio" name="ms">
|
||||
<label for="Agenda">Agenda of upcoming events</label>
|
||||
</div>
|
||||
<div class="ts radio checkbox">
|
||||
<input id="Image" type="radio" name="ms">
|
||||
<label for="Image">An image</label>
|
||||
</div>
|
||||
<div class="ts radio checkbox">
|
||||
<input id="middle_blank" type="radio" name="ms">
|
||||
<label for="middle_blank">Nothing</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="field" id="pnl_middle_height">
|
||||
<label>Height of the middle section</label>
|
||||
<details class="ts accordion">
|
||||
<summary>
|
||||
<i class="dropdown icon"></i> Info
|
||||
</summary>
|
||||
<div class="content">
|
||||
<p>Section height is calculated relative to other sections. With this approach you can choose pixel-perfect, relative or percentage panel heights.</p></div>
|
||||
</details>
|
||||
<input id="middle_height" type="number" min="1" max="100" placeholder="65">
|
||||
</div>
|
||||
|
||||
|
||||
<div class="field" id="Image_Config" style="display:none;">
|
||||
<div class="field">
|
||||
<label>What is the URl or path of the image?</label>
|
||||
<details class="ts accordion">
|
||||
<summary>
|
||||
<i class="dropdown icon"></i> Info
|
||||
</summary>
|
||||
<div class="content">
|
||||
The following parameters will be substituted:
|
||||
<ul>
|
||||
<li><code>{model}</code> - substituted by the E-Paper model name.</li>
|
||||
<li><code>{width}</code> - substituted by the panel width.</li>
|
||||
<li><code>{height}</code> - substituted by the panel width.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</details>
|
||||
<input id="image_path" type="text"
|
||||
placeholder="https://github.com/aceisace/Inky-Calendar/blob/master/Gallery/Inky-Calendar-logo.png?raw=true" />
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<label>Do you want to send extra data while obtaining the image?</label>
|
||||
<details class="ts accordion">
|
||||
<summary>
|
||||
<i class="dropdown icon"></i> Info
|
||||
</summary>
|
||||
<div class="content">
|
||||
<p>Optional data. When specified, this data is sent as Json to the image url using POST.
|
||||
<br />This is useful for some dynamically generated images.
|
||||
</p>
|
||||
</div>
|
||||
</details>
|
||||
<textarea id="image_path_body" type="text" rows="4" placeholder='[
|
||||
"https://calendar.google.com/calendar/ical/en.usa%23holiday%40group.v.calendar.google.com/public/basic.ics"
|
||||
]'></textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<label>What should be displayed in the bottom section?</label>
|
||||
<div class="ts checkboxes" id="cb_bottom_section">
|
||||
<div class="ts radio checkbox">
|
||||
<input id="RSS" type="radio" name="bs" checked>
|
||||
<label for="RSS">RSS-feeds</label>
|
||||
</div>
|
||||
<div class="ts radio checkbox">
|
||||
<input id="bottom_blank" type="radio" name="bs">
|
||||
<label for="bottom_blank">Nothing</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field" id="pnl_bottom_height">
|
||||
<label>Height of the bottom section</label>
|
||||
<details class="ts accordion">
|
||||
<summary>
|
||||
<i class="dropdown icon"></i> Info
|
||||
</summary>
|
||||
<div class="content">
|
||||
<p>Section height is calculated relative to other sections. With this approach you can choose pixel-perfect, relative or percentage panel heights.</p></div>
|
||||
</details>
|
||||
<input id="bottom_height" type="number" min="1" max="100" placeholder="25">
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<label>Display orientation</label>
|
||||
<div class="ts checkboxes">
|
||||
<div class="ts radio checkbox">
|
||||
<input id="DisplayNotRotated" type="radio" name="bbs" checked>
|
||||
<label for="DisplayNotRotated">Normal</label>
|
||||
</div>
|
||||
<div class="ts radio checkbox">
|
||||
<input id="DisplayRotated" type="radio" name="bbs">
|
||||
<label for="DisplayRotated">Upside-down</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>
|
||||
Panel-specific settings
|
||||
</legend>
|
||||
<div class="field">
|
||||
<label>iCalendar URL/s, separated by comma: url1, url2, url3</label>
|
||||
<input id="ical_urls" type="text"
|
||||
placeholder="https://calendar.google.com/calendar/ical/en.usa%23holiday%40group.v.calendar.google.com/public/basic.ics">
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<label>RSS-Feed URL/s, separated by comma: url1, url2, url3</label>
|
||||
<input id="rss_urls" type="text" placeholder="http://feeds.bbci.co.uk/news/world/rss.xml#">
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<label>Openweathermap API Key</label>
|
||||
<details class="ts accordion">
|
||||
<summary>
|
||||
<i class="dropdown icon"></i> Info
|
||||
</summary>
|
||||
<div class="content">
|
||||
<p> Please insert your own Openweathermap API-key to fetch the latest weather info. To find out how to
|
||||
create your own key, please click here: <a
|
||||
href="https://github.com/aceisace/Inky-Calendar/wiki/Openweathermap-API">Creating an openweathermap
|
||||
api-key</a>. If you don't add an api-key, the top section will not show any weather info</p>
|
||||
</div>
|
||||
</details>
|
||||
<input id="api_key" type="text" placeholder="">
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<label>Location (for weather data)</label>
|
||||
<details class="ts accordion">
|
||||
<summary>
|
||||
<i class="dropdown icon"></i> Info
|
||||
</summary>
|
||||
<div class="content">
|
||||
<p>Location refers to the closest weather station from your place. It isn't necessarily the place you live
|
||||
in. To find this location, type your city name in the search box on <a
|
||||
href="https://openweathermap.org/">openweathermap</a>. The output should be in the following format:
|
||||
City Name, Country ISO-Code. Not sure what your ISO code is? Check here: <a
|
||||
href="https://countrycode.org/">(find iso-code)</a></p>
|
||||
</div>
|
||||
</details>
|
||||
<input id="location" type="text" placeholder="Stuttgart, DE">
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
|
||||
</form>
|
||||
<br>
|
||||
<button class="ts primary button" onClick="generate()">Generate</button>
|
||||
<br><br>
|
||||
<kbd>Developed by Toby Chui for Inkycal Project, modified by aceisace. Licensed under MIT</kbd>
|
||||
<details class="ts accordion">
|
||||
<summary>
|
||||
<i class="dropdown icon"></i> MIT License
|
||||
</summary>
|
||||
<div class="content">
|
||||
<p>Copyright 2019-2020 Toby Chui <br>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
|
||||
documentation files (the "Software"), to deal in the Software without restriction, including without
|
||||
limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
|
||||
Software, and to permit persons to whom the Software is furnished to do so, subject to the following
|
||||
conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions
|
||||
of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
|
||||
TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
|
||||
CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.</p>
|
||||
</div>
|
||||
</details>
|
||||
</div>
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<script>
|
||||
$('#cb_middle_section').change(function () {
|
||||
if ($('#Image').prop("checked")) {
|
||||
$('#Image_Config').show();
|
||||
} else {
|
||||
$('#Image_Config').hide();
|
||||
}
|
||||
});
|
||||
|
||||
function generate() {
|
||||
var ical_urls = $("#ical_urls").val().trim().split(' ').join('').split(',');
|
||||
if (ical_urls == "") {
|
||||
ical_urls = $("#ical_urls").attr("placeholder").split(' ').join('').split(',');
|
||||
}
|
||||
|
||||
var rss_urls = $("#rss_urls").val().trim().split(' ').join('').split(',');
|
||||
if (rss_urls == "") {
|
||||
rss_urls = $("#rss_urls").attr("placeholder").split(' ').join('').split(',');
|
||||
}
|
||||
|
||||
var update_interval = "60";
|
||||
if ($('#update_10_mins').is(':checked')) {
|
||||
update_interval = "10";
|
||||
}
|
||||
if ($('#update_15_mins').is(':checked')) {
|
||||
update_interval = "15";
|
||||
}
|
||||
if ($('#update_20_mins').is(':checked')) {
|
||||
update_interval = "20";
|
||||
}
|
||||
if ($('#update_30_mins').is(':checked')) {
|
||||
update_interval = "30";
|
||||
}
|
||||
if ($('#update_60_mins').is(':checked')) {
|
||||
update_interval = "60";
|
||||
}
|
||||
|
||||
var api_key = $("#api_key").val().trim();
|
||||
if (api_key == "") {
|
||||
api_key = "";
|
||||
}
|
||||
|
||||
var location = $("#location").val().trim();
|
||||
if (location == "") {
|
||||
location = $("#location").attr("placeholder");
|
||||
}
|
||||
|
||||
var week_starts_on = "Monday";
|
||||
if ($('#week_sunday').is(':checked')) {
|
||||
week_starts_on = "Sunday";
|
||||
}
|
||||
|
||||
var calibration_hours = $("#calibration_hours").val().trim();
|
||||
if (calibration_hours == "") {
|
||||
calibration_hours = $("#calibration_hours").attr("placeholder");
|
||||
}
|
||||
|
||||
var model = "epd_7_in_5_v2";
|
||||
if ($('#9_in_7').is(':checked')) {
|
||||
model = "9_in_7";
|
||||
}
|
||||
if ($('#epd_7_in_5_v3_colour').is(':checked')) {
|
||||
model = "epd_7_in_5_v3_colour";
|
||||
}
|
||||
if ($('#epd_7_in_5_v3').is(':checked')) {
|
||||
model = "epd_7_in_5_v3";
|
||||
}
|
||||
if ($('#epd_7_in_5_v2_colour').is(':checked')) {
|
||||
model = "epd_7_in_5_v2_colour";
|
||||
}
|
||||
if ($('#epd_7_in_5_colour').is(':checked')) {
|
||||
model = "epd_7_in_5_colour";
|
||||
}
|
||||
if ($('#epd_7_in_5').is(':checked')) {
|
||||
model = "epd_7_in_5";
|
||||
}
|
||||
if ($('#epd_5_in_83_colour').is(':checked')) {
|
||||
model = "epd_5_in_83_colour";
|
||||
}
|
||||
if ($('#epd_5_in_83').is(':checked')) {
|
||||
model = "epd_5_in_83";
|
||||
}
|
||||
if ($('#epd_4_in_2_colour').is(':checked')) {
|
||||
model = "epd_4_in_2_colour";
|
||||
}
|
||||
if ($('#epd_4_in_2').is(':checked')) {
|
||||
model = "epd_4_in_2";
|
||||
}
|
||||
|
||||
var language = "en";
|
||||
if ($('#language_de').is(':checked')) {
|
||||
language = "de";
|
||||
}
|
||||
if ($('#language_ru').is(':checked')) {
|
||||
language = "ru";
|
||||
}
|
||||
if ($('#language_it').is(':checked')) {
|
||||
language = "it";
|
||||
}
|
||||
if ($('#language_es').is(':checked')) {
|
||||
language = "es";
|
||||
}
|
||||
if ($('#language_fr').is(':checked')) {
|
||||
language = "fr";
|
||||
}
|
||||
if ($('#language_el').is(':checked')) {
|
||||
language = "el";
|
||||
}
|
||||
if ($('#language_sv').is(':checked')) {
|
||||
language = "sv";
|
||||
}
|
||||
if ($('#language_nl').is(':checked')) {
|
||||
language = "nl";
|
||||
}
|
||||
if ($('#language_pl').is(':checked')) {
|
||||
language = "pl";
|
||||
}
|
||||
if ($('#language_ua').is(':checked')) {
|
||||
language = "ua";
|
||||
}
|
||||
if ($('#language_nb').is(':checked')) {
|
||||
language = "nb";
|
||||
}
|
||||
if ($('#language_vi').is(':checked')) {
|
||||
language = "vi";
|
||||
}
|
||||
if ($('#language_zh_tw').is(':checked')) {
|
||||
language = "zh_tw";
|
||||
}
|
||||
if ($('#language_zh').is(':checked')) {
|
||||
language = "zh";
|
||||
}
|
||||
if ($('#language_ja').is(':checked')) {
|
||||
language = "ja";
|
||||
}
|
||||
if ($('#language_ko').is(':checked')) {
|
||||
language = "ko";
|
||||
}
|
||||
|
||||
var units = "metric";
|
||||
if ($('#imperial').is(':checked')) {
|
||||
units = "imperial";
|
||||
}
|
||||
|
||||
|
||||
var info_section = true;
|
||||
if ($('#info_no').is(':checked')) {
|
||||
info_section = false;
|
||||
}
|
||||
|
||||
var hours = 24;
|
||||
if ($('#12_hours').is(':checked')) {
|
||||
hours = 12;
|
||||
}
|
||||
|
||||
var top_section = "Weather";
|
||||
if ($('#top_blank').is(':checked')) {
|
||||
top_section = "";
|
||||
}
|
||||
|
||||
var middle_section = "Calendar";
|
||||
if ($('#Agenda').is(':checked')) {
|
||||
middle_section = "Agenda";
|
||||
}
|
||||
if ($('#Image').is(':checked')) {
|
||||
middle_section = "Image";
|
||||
}
|
||||
if ($('#middle_blank').is(':checked')) {
|
||||
middle_section = "";
|
||||
}
|
||||
|
||||
var bottom_section = "RSS";
|
||||
if ($('#bottom_blank').is(':checked')) {
|
||||
bottom_section = "";
|
||||
}
|
||||
|
||||
top_section_height = $("#top_height").val().trim()
|
||||
top_section_height = top_section_height=="" ? null : Number(top_section_height)
|
||||
|
||||
middle_section_height = $("#middle_height").val().trim()
|
||||
middle_section_height = middle_section_height=="" ? null : Number(middle_section_height)
|
||||
|
||||
bottom_section_height = $("#bottom_height").val().trim()
|
||||
bottom_section_height = bottom_section_height=="" ? null : Number(bottom_section_height)
|
||||
|
||||
var display_orientation = "normal";
|
||||
if ($('#DisplayRotated').is(':checked')) {
|
||||
display_orientation = "upside_down";
|
||||
}
|
||||
|
||||
var image_path = $("#image_path").val().trim();
|
||||
if (image_path == "") {
|
||||
image_path = $("#image_path").attr("placeholder");
|
||||
}
|
||||
|
||||
var image_path_body = $("#image_path").val().trim();
|
||||
|
||||
//console.log(ical_urls, rss_urls, update_interval, api_key, location, week_starts_on, calibration_hours, model, language, units, hours, top_section, middle_section, bottom_section);
|
||||
downloadSettingsAsJson(
|
||||
ical_urls,
|
||||
rss_urls,
|
||||
update_interval,
|
||||
api_key, location,
|
||||
week_starts_on,
|
||||
calibration_hours,
|
||||
model, language,
|
||||
units, hours,
|
||||
info_section,
|
||||
top_section,
|
||||
top_section_height,
|
||||
middle_section,
|
||||
middle_section_height,
|
||||
bottom_section,
|
||||
bottom_section_height,
|
||||
display_orientation,
|
||||
image_path,
|
||||
image_path_body)
|
||||
}
|
||||
|
||||
function TrimSingleQuotes(text) {
|
||||
return text.replace(/^'+/g, "").replace(/'+$/g, "")
|
||||
}
|
||||
|
||||
function downloadSettingsAsJson(
|
||||
ical_urls,
|
||||
rss_urls,
|
||||
update_interval,
|
||||
api_key,
|
||||
location,
|
||||
week_starts_on,
|
||||
calibration_hours,
|
||||
model,
|
||||
language,
|
||||
units,
|
||||
hours,
|
||||
info_section,
|
||||
top_section,
|
||||
top_section_height,
|
||||
middle_section,
|
||||
middle_section_height,
|
||||
bottom_section,
|
||||
bottom_section_height,
|
||||
display_orientation,
|
||||
image_path,
|
||||
image_path_body
|
||||
) {
|
||||
var result = {
|
||||
"language": language, // "en", "de", "fr", "jp" etc.
|
||||
"units": units, // "metric", "imperial"
|
||||
"hours": Number(hours), // 24, 12
|
||||
"model": model,
|
||||
"update_interval": Number(update_interval), // 10, 15, 20, 30, 60
|
||||
"calibration_hours": calibration_hours.split(",").map(function (x) { return Number(x); }), // Do not change unless you know what you are doing
|
||||
"display_orientation": display_orientation,
|
||||
"info_section":info_section,
|
||||
"panels": []
|
||||
};
|
||||
|
||||
switch (top_section) {
|
||||
case "Weather":
|
||||
result.panels.push(
|
||||
{
|
||||
"location": "top",
|
||||
"type": "Weather",
|
||||
"height" : top_section_height,
|
||||
"config": {
|
||||
"api_key": api_key, //Your openweathermap API-KEY -> "api-key"
|
||||
"location": location //"City name, Country code"
|
||||
}
|
||||
}
|
||||
)
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
switch (middle_section) {
|
||||
case "Agenda":
|
||||
case "Calendar":
|
||||
result.panels.push(
|
||||
{
|
||||
"location": "middle",
|
||||
"type": middle_section,
|
||||
"height" : middle_section_height,
|
||||
"config": {
|
||||
"week_starts_on": week_starts_on, //"Sunday", "Monday"...
|
||||
"ical_urls": ical_urls
|
||||
}
|
||||
}
|
||||
)
|
||||
break;
|
||||
case "Image":
|
||||
result.panels.push(
|
||||
{
|
||||
"location": "middle",
|
||||
"type": middle_section,
|
||||
"height" : middle_section_height,
|
||||
"config": {
|
||||
"image_path": TrimSingleQuotes(image_path),
|
||||
"image_path_body": image_path_body
|
||||
}
|
||||
}
|
||||
)
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
switch (bottom_section) {
|
||||
case "RSS":
|
||||
result.panels.push(
|
||||
{
|
||||
"location": "bottom",
|
||||
"type": bottom_section,
|
||||
"height" : bottom_section_height,
|
||||
"config": {
|
||||
"rss_urls": rss_urls
|
||||
}
|
||||
}
|
||||
)
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
var config = new Blob([JSON.stringify(result, null, "\t")], { type: "text/json" });
|
||||
var link = document.createElement('link');
|
||||
link.href = window.URL.createObjectURL(config);
|
||||
var a = document.createElement('A');
|
||||
a.href = link.href;
|
||||
a.download = link.href.substr(link.href.lastIndexOf('/') + 1);
|
||||
document.body.appendChild(a);
|
||||
$(a).attr('download', 'settings.json');
|
||||
a.click();
|
||||
document.body.removeChild(a);
|
||||
}
|
||||
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
Reference in New Issue
Block a user