Implemented export of config as JSON
This commit is contained in:
		| @@ -351,7 +351,8 @@ python3 /home/pi/Inky-Calendar/modules/inkycal.py.</p> | |||||||
|  |  | ||||||
|     </form> |     </form> | ||||||
|     <br> |     <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> |   <br><br> | ||||||
|   <kbd>Developed by Toby Chui for Inky-Calendar Project, modified by aceisace. Licensed under MIT</kbd> |   <kbd>Developed by Toby Chui for Inky-Calendar Project, modified by aceisace. Licensed under MIT</kbd> | ||||||
|   <details class="ts accordion"> |   <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(); |     var ical_urls = $("#ical_urls").val().trim(); | ||||||
|     if (ical_urls == ""){ |     if (ical_urls == ""){ | ||||||
|       ical_urls = $("#ical_urls").attr("placeholder"); |       ical_urls = $("#ical_urls").attr("placeholder"); | ||||||
| @@ -558,6 +559,9 @@ inkycal_image_path_body = "{image_path_body}"`; | |||||||
|     var image_path_body = $("#image_path").val().trim(); |     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); |     //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); | ||||||
|  |     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); |       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); | ||||||
|   } |   } | ||||||
|    |    | ||||||
| @@ -597,6 +601,112 @@ inkycal_image_path_body = "{image_path_body}"`; | |||||||
|     document.body.removeChild(a); |     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> |   </script> | ||||||
| </body> | </body> | ||||||
| </html> | </html> | ||||||
|   | |||||||
							
								
								
									
										91
									
								
								settings/settings.jsonc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										91
									
								
								settings/settings.jsonc
									
									
									
									
									
										Normal 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 | ||||||
|  | */ | ||||||
		Reference in New Issue
	
	Block a user