837 lines
31 KiB
HTML
837 lines
31 KiB
HTML
<!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> |