From dd23a6c7b70f6408a824d6db7080d5512482034b Mon Sep 17 00:00:00 2001 From: Jasper van Merle Date: Mon, 8 Jul 2019 01:42:34 +0200 Subject: [PATCH] Move all styling configuration to the client --- assets/javascripts/app/app.coffee | 4 ++-- assets/javascripts/app/serviceworker.coffee | 4 ++-- assets/javascripts/app/settings.coffee | 21 ++++++++++++++++++++ lib/app.rb | 4 ---- public/images/webapp-icon-192.png | Bin 0 -> 32187 bytes public/manifest.json | 6 ++++++ views/app.erb | 6 ------ views/service-worker.js.erb | 12 +++-------- 8 files changed, 34 insertions(+), 23 deletions(-) create mode 100644 public/images/webapp-icon-192.png diff --git a/assets/javascripts/app/app.coffee b/assets/javascripts/app/app.coffee index 0d2d9814..0928f45b 100644 --- a/assets/javascripts/app/app.coffee +++ b/assets/javascripts/app/app.coffee @@ -17,6 +17,8 @@ @settings = new app.Settings @db = new app.DB() + @settings.initLayout() + @docs = new app.collections.Docs @disabledDocs = new app.collections.Docs @entries = new app.collections.Entries @@ -26,8 +28,6 @@ @document = new app.views.Document @mobile = new app.views.Mobile if @isMobile() - @settings.initLayout() - if document.body.hasAttribute('data-doc') @DOC = JSON.parse(document.body.getAttribute('data-doc')) @bootOne() diff --git a/assets/javascripts/app/serviceworker.coffee b/assets/javascripts/app/serviceworker.coffee index 8bdd5064..7a58f304 100644 --- a/assets/javascripts/app/serviceworker.coffee +++ b/assets/javascripts/app/serviceworker.coffee @@ -30,13 +30,13 @@ class app.ServiceWorker $.on @registration, 'updatefound', @onUpdateFound return - onUpdateFound: () => + onUpdateFound: => $.off @installingRegistration, 'statechange', @onStateChange() if @installingRegistration @installingRegistration = @registration.installing $.on @installingRegistration, 'statechange', @onStateChange return - onStateChange: () => + onStateChange: => if @installingRegistration and @installingRegistration.state == 'installed' and navigator.serviceWorker.controller @installingRegistration = null @onUpdateReady() diff --git a/assets/javascripts/app/settings.coffee b/assets/javascripts/app/settings.coffee index 7b731e0b..58875f42 100644 --- a/assets/javascripts/app/settings.coffee +++ b/assets/javascripts/app/settings.coffee @@ -120,6 +120,7 @@ class app.Settings initLayout: -> @toggleDark(@get('dark')) @toggleLayout(layout, @hasLayout(layout)) for layout in @LAYOUTS + @addResizerCSS() toggleDark: (enable) -> classList = document.documentElement.classList @@ -130,3 +131,23 @@ class app.Settings classList = document.body.classList classList[if enable then 'add' else 'remove'](layout) unless layout is SIDEBAR_HIDDEN_LAYOUT classList[if $.overlayScrollbarsEnabled() then 'add' else 'remove']('_overlay-scrollbars') + + addResizerCSS: -> + size = @get('size') + size = if size then size + 'px' else '20rem' + + css = """ + ._container { margin-left: #{size}; } + ._header, ._list { width: #{size}; } + ._list-hover.clone { min-width: #{size}; } + ._notice, ._path, ._resizer { left: #{size}; } + """ + + style = document.createElement('style') + style.type = 'text/css' + style.appendChild(document.createTextNode(css)) + style.setAttribute('data-size', size) + style.setAttribute('data-resizer', '') + + document.head.appendChild(style) + return diff --git a/lib/app.rb b/lib/app.rb index c89328ad..83e646e4 100644 --- a/lib/app.rb +++ b/lib/app.rb @@ -205,10 +205,6 @@ class App < Sinatra::Application ].compact end - def app_size - @app_size ||= memoized_cookies['size'].nil? ? '20rem' : "#{memoized_cookies['size']}px" - end - def bypass_cache? !memoized_cookies['bypassCache'].nil? end diff --git a/public/images/webapp-icon-192.png b/public/images/webapp-icon-192.png new file mode 100644 index 0000000000000000000000000000000000000000..d1d1dd75e08500da6af54184399113672be73f93 GIT binary patch literal 32187 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 z - diff --git a/views/service-worker.js.erb b/views/service-worker.js.erb index c962564b..20de7bbe 100644 --- a/views/service-worker.js.erb +++ b/views/service-worker.js.erb @@ -2,17 +2,11 @@ <%# This ensures that the cache is always updated if the hash of the application.js file changes %> const cacheName = '<%= javascript_path('application', asset_host: false).scan(/application-([^\.]+)\.js/).last&.first || 'app' %>'; -<%# Paths to cache when the service worker is installed %> -const cachePaths = [ +<%# Url's to cache when the service worker is installed %> +const urlsToCache = [ '/', '/favicon.ico', '/manifest.json', - '/images/webapp-icon-32.png', - '/images/webapp-icon-60.png', - '/images/webapp-icon-80.png', - '/images/webapp-icon-128.png', - '/images/webapp-icon-256.png', - '/images/webapp-icon-512.png', '<%= service_worker_asset_urls.join "',\n '" %>', '<%= doc_index_urls.join "',\n '" %>', ]; @@ -22,7 +16,7 @@ self.addEventListener('install', event => { self.skipWaiting(); event.waitUntil( - caches.open(cacheName).then(cache => cache.addAll(cachePaths)), + caches.open(cacheName).then(cache => cache.addAll(urlsToCache)), ); });