Implemented export of config as JSON

This commit is contained in:
Robert Sirre 2020-02-15 22:54:49 +01:00
parent 0ce1722c7d
commit 7c31fb286a
2 changed files with 204 additions and 3 deletions

View File

@ -351,7 +351,8 @@ python3 /home/pi/Inky-Calendar/modules/inkycal.py.</p>
</form>
<br>
<button class="ts primary button" onClick="generate();">Generate</button>
<button class="ts primary button" onClick="generate(false);">Generate</button>
<button class="ts secondary button" onClick="generate(true);">Generate (as JSON, experimental)</button>
<br><br>
<kbd>Developed by Toby Chui for Inky-Calendar Project, modified by aceisace. Licensed under MIT</kbd>
<details class="ts accordion">
@ -398,7 +399,7 @@ inkycal_image_path_body = "{image_path_body}"`;
}
});
function generate(){
function generate(json){
var ical_urls = $("#ical_urls").val().trim();
if (ical_urls == ""){
ical_urls = $("#ical_urls").attr("placeholder");
@ -558,7 +559,10 @@ inkycal_image_path_body = "{image_path_body}"`;
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);
createPythonSetting(ical_urls, rss_urls, update_interval, api_key, location, week_starts_on, calibration_hours, model, language, units, hours, top_section, middle_section, bottom_section, image_path, image_path_body);
if(json)
downloadSettingsAsJson(ical_urls, rss_urls, update_interval, api_key, location, week_starts_on, calibration_hours, model, language, units, hours, top_section, middle_section, bottom_section, image_path, image_path_body)
else
createPythonSetting(ical_urls, rss_urls, update_interval, api_key, location, week_starts_on, calibration_hours, model, language, units, hours, top_section, middle_section, bottom_section, image_path, image_path_body);
}
function rk(content,key,value){
@ -596,6 +600,112 @@ inkycal_image_path_body = "{image_path_body}"`;
a.click();
document.body.removeChild(a);
}
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,
top_section,
middle_section,
bottom_section,
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
"panels" : []
};
switch(top_section){
case "inkycal_weather":
result.panels.push(
{
"location" : "top",
"type" : "inkycal_weather",
"config" : {
"api_key" : api_key, //Your openweathermap API-KEY -> "api-key"
"location" : location //"City name, Country code"
}
}
)
break;
default:
break;
}
switch(middle_section){
case "inkycal_agenda":
case "inkycal_calendar":
result.panels.push(
{
"location" : "middle",
"type" : middle_section,
"config" : {
"week_starts_on" : week_starts_on, //"Sunday", "Monday"...
"ical_urls" : ical_urls.split().map(function(x){ return TrimSingleQuotes(x);})
}
}
)
break;
case "inkycal_image":
result.panels.push(
{
"location" : "middle",
"type" : middle_section,
"config" : {
"image_path" : TrimSingleQuotes(image_path),
"image_path_body" : image_path_body
}
}
)
break;
default:
break;
}
switch(bottom_section){
case "inkycal_rss":
result.panels.push(
{
"location" : "bottom",
"type" : bottom_section,
"config" : {
"rss_urls" : rss_urls.split().map(function(x){ return TrimSingleQuotes(x);})
}
}
)
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.jsonc');
a.click();
document.body.removeChild(a);
}
</script>
</body>

91
settings/settings.jsonc Normal file
View File

@ -0,0 +1,91 @@
{
"language" : "en", // "en", "de", "fr", "jp" etc.
"units" : "metric", // "metric", "imperial"
"hours" : 24, // 24, 12
"model" : "epd_7_in_5_v2_colour", // For supported E-paper models, see below
"update_interval" : 60, // 10, 15, 20, 30, 60
"calibration_hours" : [0,12,18], // Do not change unlesss you know what you are doing
//For now three panels can be defined for three unique locations: 'top', 'middle' and 'bottom'
"panels" : [
{
"location" : "top",
"type" : "inkycal_weather",
"config" : {
"api_key" : "", //Your openweathermap API-KEY -> "api-key"
"location" : "Stuttgart, DE" //"City name, Country code"
}
},
{
"location" : "middle",
"type" : "inkycal_calendar", // "inkycal_calendar" and "inkycal_agenda" have the same parameters, but are displayed differently
"config" : {
"week_starts_on" : "Monday", //"Sunday", "Monday"...
"ical_urls" : [
"https://calendar.google.com/calendar/ical/en.usa%23holiday%40group.v.calendar.google.com/public/basic.ics",
"https://www.calendarlabs.com/ical-calendar/ics/101/Netherlands_Holidays.ics"
]
}
},
{
"location" : "bottom",
"type" : "inkycal_rss",
"config" : {
"rss_feeds" : [
"http://feeds.bbci.co.uk/news/world/rss.xml#",
"https://github.com/aceisace/Inky-Calendar/releases.atom"
]
}
},
{
"location" : "middle",
"type" : "inkycal_image",
"config" : {
/*
The url or file path to obtain the image from.
The following parameters within accolades ({}) will be substituted:
- model
- width
- height
Samples
The inkycal logo:
inkycal_image_path = 'https://github.com/aceisace/Inky-Calendar/raw/master/Gallery/Inky-Calendar-logo.png'
A dynamic image with a demo-calendar
inkycal_image_path = 'https://inkycal.robertsirre.nl/panel/test/{model}/image?width={width}&height={height}'
Dynamic image with configurable calendars (see https://inkycal.robertsirre.nl/ and parameter inkycal_image_path_body)
inkycal_image_path = 'https://inkycal.robertsirre.nl/panel/calendar/{model}?width={width}&height={height}'
inkycal_image_path ='/home/pi/Inky-Calendar/images/canvas.png'
*/
"image_path" : "https://github.com/aceisace/Inky-Calendar/raw/master/Gallery/Inky-Calendar-logo.png",
/*
Optional: inkycal_image_path_body
Allows obtaining complexer configure images.
When `inkycal_image_path` starts with `http` and `inkycal_image_path_body` is specified, the image is obtained using POST instead of GET.
NOTE: structure of the body depends on the web-based image service
*/
// inkycal_image_path_body = [
// 'https://calendar.google.com/calendar/ical/en.usa%23holiday%40group.v.calendar.google.com/public/basic.ics',
// 'https://www.calendarlabs.com/ical-calendar/ics/101/Netherlands_Holidays.ics'
// ]
}
}
]
}
/*
Supported E-Paper models"""
epd_7_in_5_v2_colour # 7.5" high-res black-white-red/yellow
epd_7_in_5_v2 # 7.5" high-res black-white
epd_7_in_5_colour # 7.5" black-white-red/yellow
epd_7_in_5 # 7.5" black-white
epd_5_in_83_colour # 5.83" black-white-red/yellow
epd_5_in_83 # 5.83" black-white
epd_4_in_2_colour # 4.2" black-white-red/yellow
epd_4_in_2 # 4.2" black-white
*/