]> git.ktnx.net Git - lsl.git/commitdiff
add a splash screen
authorDamyan Ivanov <dmn@debian.org>
Sat, 19 Feb 2022 08:32:33 +0000 (08:32 +0000)
committerDamyan Ivanov <dmn@debian.org>
Sat, 19 Feb 2022 08:32:33 +0000 (08:32 +0000)
without it there is a brief moment of "First create a shopping list"
message that is confusing

public/css/style.css
public/javascripts/lsl.js
views/index.tt

index 98ef56559d391dc93f8ccd3a466d9437b98d0d6d..7cf3d465683e0a805b5da75def5617f211601c36 100644 (file)
@@ -8,6 +8,27 @@ font-family: "Bitstream Vera Sans", sans-serif;
 font-size: 14pt;
 color: #333;
 }
+#splash {
+    z-index: 1;
+    position: absolute;
+    top: 0;
+    left: 0;
+    right: 0;
+    bottom: 0;
+    background: hsl(0, 0%, 30%);
+    color: white;
+    display: grid;
+    transition: 0.2s;
+}
+#splash.done {
+    opacity: 0;
+    color: black;
+}
+#splash > p {
+  margin: auto;
+  width: max-content;
+  font-size: 200%;
+}
 
 input {
     font-size: 14pt;
index d1656d4f1320aedd2e680cb77690154e9d122eeb..fa6b4127fb6d9758d9523b785e5ab51f449a1924 100644 (file)
@@ -1,6 +1,8 @@
 "use strict";
 (function(){
 var uri_base, environment, devel_env;   // filled on page load from an HTML attribute
+var start_time = Date.now();
+
 var ui_icon_class_re = new RegExp('\\bui-icon-\\S+\\b');
 var uri_id_re = new RegExp('/(\\d+)$');
 var lists_version = -1;
@@ -80,6 +82,26 @@ function select_list(new_selected_list) {
 }
 function load_lists() {
     $.get(uri_base + '/api/v1/list')
+    .always(()=>{
+        var splash = $('#splash');
+        if (splash.length) {
+            var dur = splash.css('transition-duration');
+            if (dur && dur.endsWith('s')) {
+                dur = 1000 * parseFloat(dur.substring(0, dur.length-1));
+            }
+            else
+                dur = 1000;
+
+            var now = Date.now();
+            window.setTimeout(() => {
+                splash.addClass('done');
+                debug('scheduling splash removal in '+dur+'ms');
+                window.setTimeout(()=>{ splash.remove(); }, dur);
+            },
+                Math.max(0, 500 - (now - start_time))
+            );
+        }
+    })
     .done(data => {
         lists_version = data.lists_version;
 
index d1f463707e0db952e6decffb742134705fb3b2aa..9e5d4406dba25faca21c15e57f5e67459d90f487 100644 (file)
@@ -1,3 +1,6 @@
+<div id="splash">
+  <p>Loading…</p>
+</div>
 <div id="page" class="loading-lists" lsl-uri-base="<% request.uri_base %>" lsl-environment="<% settings.environment %>" >
   <div id="sidebar">
     <ul id="sidebar-items">