Automatically load last viewed (and not closed) file via localStorage
This commit is contained in:
parent
31bb476a4e
commit
0eb2fd3ab0
3 changed files with 181 additions and 12 deletions
|
@ -1,6 +1,7 @@
|
|||
Version 0.2.6 (2018-)
|
||||
- Displaying current filename in title (Issue #76) @danielperna84
|
||||
- Added menu item to open configurator in new tab (Issue #76) @danielperna84
|
||||
- Automatically load last viewed (and not closed) file via localStorage @danielperna84
|
||||
|
||||
Version 0.2.5 (2018-01-27)
|
||||
- Added warning-logs for access failure @danielperna84
|
||||
|
|
|
@ -631,7 +631,7 @@ INDEX = Template(r"""<!DOCTYPE html>
|
|||
</header>
|
||||
<main>
|
||||
<ul id="dropdown_menu" class="dropdown-content z-depth-4">
|
||||
<li><a onclick="window.open(window.location.href, '_blank');">New tab</a></li>
|
||||
<li><a onclick="localStorage.setItem('new_tab', true);window.open(window.location.href, '_blank');">New tab</a></li>
|
||||
<li class="divider"></li>
|
||||
<li><a class="modal-trigger" target="_blank" href="#modal_components">Components</a></li>
|
||||
<li><a class="modal-trigger" target="_blank" href="#modal_icons">Material Icons</a></li>
|
||||
|
@ -649,7 +649,7 @@ INDEX = Template(r"""<!DOCTYPE html>
|
|||
<li><a class="modal-trigger" href="#modal_exec_command">Execute shell command</a></li>
|
||||
</ul>
|
||||
<ul id="dropdown_menu_mobile" class="dropdown-content z-depth-4">
|
||||
<li><a onclick="window.open(window.location.href, '_blank');">New tab</a></li>
|
||||
<li><a onclick="localStorage.setItem('new_tab', true);window.open(window.location.href, '_blank');">New tab</a></li>
|
||||
<li class="divider"></li>
|
||||
<li><a target="_blank" href="https://home-assistant.io/help/">Help</a></li>
|
||||
<li><a target="_blank" href="https://home-assistant.io/components/">Components</a></li>
|
||||
|
@ -1276,7 +1276,7 @@ INDEX = Template(r"""<!DOCTYPE html>
|
|||
</div>
|
||||
<div class="modal-footer">
|
||||
<a class=" modal-action modal-close waves-effect waves-red btn-flat light-blue-text">No</a>
|
||||
<a onclick="document.getElementById('currentfile').value='';editor.getSession().setValue('');$('.markdirty').each(function(i, o){o.classList.remove('red');});document.title = 'HASS Configurator';" class="modal-action modal-close waves-effect waves-green btn-flat light-blue-text">Yes</a>
|
||||
<a onclick="closefile()" class="modal-action modal-close waves-effect waves-green btn-flat light-blue-text">Yes</a>
|
||||
</div>
|
||||
</div>
|
||||
<div id="modal_delete" class="modal">
|
||||
|
@ -2065,6 +2065,64 @@ INDEX = Template(r"""<!DOCTYPE html>
|
|||
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.100.2/js/materialize.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
var global_current_filepath = null;
|
||||
var global_current_filename = null;
|
||||
|
||||
function got_focus_or_visibility() {
|
||||
if (global_current_filename && global_current_filepath) {
|
||||
// The globals are set, set the localStorage to those values
|
||||
var current_file = {current_filepath: global_current_filepath,
|
||||
current_filename: global_current_filename}
|
||||
localStorage.setItem('current_file', JSON.stringify(current_file));
|
||||
}
|
||||
else {
|
||||
// This tab had no prior file opened, clearing from localStorage
|
||||
localStorage.removeItem('current_file');
|
||||
}
|
||||
}
|
||||
|
||||
window.onfocus = function() {
|
||||
console.log("got focus");
|
||||
got_focus_or_visibility();
|
||||
}
|
||||
//window.onblur = function() {
|
||||
// console.log("lost focus");
|
||||
//}
|
||||
|
||||
// Got this from here: https://developer.mozilla.org/en-US/docs/Web/API/Page_Visibility_API
|
||||
// Set the name of the hidden property and the change event for visibility
|
||||
var hidden, visibilityChange;
|
||||
if (typeof document.hidden !== "undefined") { // Opera 12.10 and Firefox 18 and later support
|
||||
hidden = "hidden";
|
||||
visibilityChange = "visibilitychange";
|
||||
}
|
||||
else if (typeof document.msHidden !== "undefined") {
|
||||
hidden = "msHidden";
|
||||
visibilityChange = "msvisibilitychange";
|
||||
}
|
||||
else if (typeof document.webkitHidden !== "undefined") {
|
||||
hidden = "webkitHidden";
|
||||
visibilityChange = "webkitvisibilitychange";
|
||||
}
|
||||
|
||||
function handleVisibilityChange() {
|
||||
if (document[hidden]) {
|
||||
// We're doing nothing when the tab gets out of vision
|
||||
}
|
||||
else {
|
||||
// We're doing this if the tab becomes visible
|
||||
got_focus_or_visibility();
|
||||
}
|
||||
}
|
||||
// Warn if the browser doesn't support addEventListener or the Page Visibility API
|
||||
if (typeof document.addEventListener === "undefined" || typeof document.hidden === "undefined") {
|
||||
console.log("This requires a browser, such as Google Chrome or Firefox, that supports the Page Visibility API.");
|
||||
}
|
||||
else {
|
||||
// Handle page visibility change
|
||||
document.addEventListener(visibilityChange, handleVisibilityChange, false);
|
||||
}
|
||||
|
||||
$(document).ready(function () {
|
||||
$('select').material_select();
|
||||
$('.modal').modal();
|
||||
|
@ -2102,9 +2160,18 @@ INDEX = Template(r"""<!DOCTYPE html>
|
|||
<script type="text/javascript">
|
||||
document.addEventListener("DOMContentLoaded", function(){
|
||||
$('.preloader-background').delay(800).fadeOut('slow');
|
||||
$('.preloader-wrapper')
|
||||
.delay(800)
|
||||
.fadeOut('slow');
|
||||
$('.preloader-wrapper').delay(800).fadeOut('slow');
|
||||
if (!localStorage.getItem("new_tab")) {
|
||||
var old_file = localStorage.getItem("current_file");
|
||||
if (old_file) {
|
||||
old_file = JSON.parse(old_file);
|
||||
loadfile(old_file.current_filepath, old_file.current_filename);
|
||||
}
|
||||
}
|
||||
else {
|
||||
localStorage.removeItem("current_file");
|
||||
}
|
||||
localStorage.removeItem("new_tab");
|
||||
});
|
||||
</script>
|
||||
<script>
|
||||
|
@ -2427,11 +2494,28 @@ INDEX = Template(r"""<!DOCTYPE html>
|
|||
$('.markdirty').each(function(i, o){o.classList.remove('red');});
|
||||
$('.hidesave').css('opacity', 0);
|
||||
document.title = filenameonly + " - HASS Configurator";
|
||||
global_current_filepath = filepath;
|
||||
global_current_filename = filenameonly;
|
||||
var current_file = {current_filepath: global_current_filepath,
|
||||
current_filename: global_current_filename}
|
||||
localStorage.setItem('current_file', JSON.stringify(current_file));
|
||||
check_lint();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function closefile() {
|
||||
document.getElementById('currentfile').value='';
|
||||
editor.getSession().setValue('');
|
||||
$('.markdirty').each(function(i, o) {
|
||||
o.classList.remove('red');
|
||||
});
|
||||
localStorage.removeItem('current_file');
|
||||
global_current_filepath = null;
|
||||
global_current_filename = null;
|
||||
document.title = 'HASS Configurator';
|
||||
}
|
||||
|
||||
function check_config() {
|
||||
$.get("api/check_config", function (resp) {
|
||||
if (resp.length == 0) {
|
||||
|
|
96
dev.html
96
dev.html
|
@ -547,7 +547,7 @@
|
|||
</header>
|
||||
<main>
|
||||
<ul id="dropdown_menu" class="dropdown-content z-depth-4">
|
||||
<li><a onclick="window.open(window.location.href, '_blank');">New tab</a></li>
|
||||
<li><a onclick="localStorage.setItem('new_tab', true);window.open(window.location.href, '_blank');">New tab</a></li>
|
||||
<li class="divider"></li>
|
||||
<li><a class="modal-trigger" target="_blank" href="#modal_components">Components</a></li>
|
||||
<li><a class="modal-trigger" target="_blank" href="#modal_icons">Material Icons</a></li>
|
||||
|
@ -565,7 +565,7 @@
|
|||
<li><a class="modal-trigger" href="#modal_exec_command">Execute shell command</a></li>
|
||||
</ul>
|
||||
<ul id="dropdown_menu_mobile" class="dropdown-content z-depth-4">
|
||||
<li><a onclick="window.open(window.location.href, '_blank');">New tab</a></li>
|
||||
<li><a onclick="localStorage.setItem('new_tab', true);window.open(window.location.href, '_blank');">New tab</a></li>
|
||||
<li class="divider"></li>
|
||||
<li><a target="_blank" href="https://home-assistant.io/help/">Help</a></li>
|
||||
<li><a target="_blank" href="https://home-assistant.io/components/">Components</a></li>
|
||||
|
@ -1192,7 +1192,7 @@
|
|||
</div>
|
||||
<div class="modal-footer">
|
||||
<a class=" modal-action modal-close waves-effect waves-red btn-flat light-blue-text">No</a>
|
||||
<a onclick="document.getElementById('currentfile').value='';editor.getSession().setValue('');$('.markdirty').each(function(i, o){o.classList.remove('red');});document.title = 'HASS Configurator';" class="modal-action modal-close waves-effect waves-green btn-flat light-blue-text">Yes</a>
|
||||
<a onclick="closefile()" class="modal-action modal-close waves-effect waves-green btn-flat light-blue-text">Yes</a>
|
||||
</div>
|
||||
</div>
|
||||
<div id="modal_delete" class="modal">
|
||||
|
@ -1981,6 +1981,64 @@
|
|||
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.100.2/js/materialize.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
var global_current_filepath = null;
|
||||
var global_current_filename = null;
|
||||
|
||||
function got_focus_or_visibility() {
|
||||
if (global_current_filename && global_current_filepath) {
|
||||
// The globals are set, set the localStorage to those values
|
||||
var current_file = {current_filepath: global_current_filepath,
|
||||
current_filename: global_current_filename}
|
||||
localStorage.setItem('current_file', JSON.stringify(current_file));
|
||||
}
|
||||
else {
|
||||
// This tab had no prior file opened, clearing from localStorage
|
||||
localStorage.removeItem('current_file');
|
||||
}
|
||||
}
|
||||
|
||||
window.onfocus = function() {
|
||||
console.log("got focus");
|
||||
got_focus_or_visibility();
|
||||
}
|
||||
//window.onblur = function() {
|
||||
// console.log("lost focus");
|
||||
//}
|
||||
|
||||
// Got this from here: https://developer.mozilla.org/en-US/docs/Web/API/Page_Visibility_API
|
||||
// Set the name of the hidden property and the change event for visibility
|
||||
var hidden, visibilityChange;
|
||||
if (typeof document.hidden !== "undefined") { // Opera 12.10 and Firefox 18 and later support
|
||||
hidden = "hidden";
|
||||
visibilityChange = "visibilitychange";
|
||||
}
|
||||
else if (typeof document.msHidden !== "undefined") {
|
||||
hidden = "msHidden";
|
||||
visibilityChange = "msvisibilitychange";
|
||||
}
|
||||
else if (typeof document.webkitHidden !== "undefined") {
|
||||
hidden = "webkitHidden";
|
||||
visibilityChange = "webkitvisibilitychange";
|
||||
}
|
||||
|
||||
function handleVisibilityChange() {
|
||||
if (document[hidden]) {
|
||||
// We're doing nothing when the tab gets out of vision
|
||||
}
|
||||
else {
|
||||
// We're doing this if the tab becomes visible
|
||||
got_focus_or_visibility();
|
||||
}
|
||||
}
|
||||
// Warn if the browser doesn't support addEventListener or the Page Visibility API
|
||||
if (typeof document.addEventListener === "undefined" || typeof document.hidden === "undefined") {
|
||||
console.log("This requires a browser, such as Google Chrome or Firefox, that supports the Page Visibility API.");
|
||||
}
|
||||
else {
|
||||
// Handle page visibility change
|
||||
document.addEventListener(visibilityChange, handleVisibilityChange, false);
|
||||
}
|
||||
|
||||
$(document).ready(function () {
|
||||
$('select').material_select();
|
||||
$('.modal').modal();
|
||||
|
@ -2018,9 +2076,18 @@
|
|||
<script type="text/javascript">
|
||||
document.addEventListener("DOMContentLoaded", function(){
|
||||
$('.preloader-background').delay(800).fadeOut('slow');
|
||||
$('.preloader-wrapper')
|
||||
.delay(800)
|
||||
.fadeOut('slow');
|
||||
$('.preloader-wrapper').delay(800).fadeOut('slow');
|
||||
if (!localStorage.getItem("new_tab")) {
|
||||
var old_file = localStorage.getItem("current_file");
|
||||
if (old_file) {
|
||||
old_file = JSON.parse(old_file);
|
||||
loadfile(old_file.current_filepath, old_file.current_filename);
|
||||
}
|
||||
}
|
||||
else {
|
||||
localStorage.removeItem("current_file");
|
||||
}
|
||||
localStorage.removeItem("new_tab");
|
||||
});
|
||||
</script>
|
||||
<script>
|
||||
|
@ -2343,11 +2410,28 @@
|
|||
$('.markdirty').each(function(i, o){o.classList.remove('red');});
|
||||
$('.hidesave').css('opacity', 0);
|
||||
document.title = filenameonly + " - HASS Configurator";
|
||||
global_current_filepath = filepath;
|
||||
global_current_filename = filenameonly;
|
||||
var current_file = {current_filepath: global_current_filepath,
|
||||
current_filename: global_current_filename}
|
||||
localStorage.setItem('current_file', JSON.stringify(current_file));
|
||||
check_lint();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function closefile() {
|
||||
document.getElementById('currentfile').value='';
|
||||
editor.getSession().setValue('');
|
||||
$('.markdirty').each(function(i, o) {
|
||||
o.classList.remove('red');
|
||||
});
|
||||
localStorage.removeItem('current_file');
|
||||
global_current_filepath = null;
|
||||
global_current_filename = null;
|
||||
document.title = 'HASS Configurator';
|
||||
}
|
||||
|
||||
function check_config() {
|
||||
$.get("api/check_config", function (resp) {
|
||||
if (resp.length == 0) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue