From f639500d91d1d2d306acea714f9f83109a5ff478 Mon Sep 17 00:00:00 2001 From: Mikko Ahlroth Date: Fri, 12 Nov 2021 11:10:52 +0200 Subject: [PATCH] Refactor for better UI --- assets/css/app.css | 55 +++------- assets/css/phoenix.css | 2 - .../geo_therminator_web.ex | 2 + .../live/components/main_view.html.heex | 100 ++++++++---------- .../live/main/pump.html.heex | 2 - .../templates/layout/root.html.heex | 15 --- priv/static/images/geotherminator.png | Bin 10850 -> 0 bytes 7 files changed, 58 insertions(+), 118 deletions(-) delete mode 100644 priv/static/images/geotherminator.png diff --git a/assets/css/app.css b/assets/css/app.css index 72fb781..995dff6 100644 --- a/assets/css/app.css +++ b/assets/css/app.css @@ -53,39 +53,11 @@ pointer-events: none; } -.phx-modal { - opacity: 1!important; - position: fixed; - z-index: 1; - left: 0; - top: 0; +html, body, div[data-phx-main="true"], main.container, .main-view-component { width: 100%; height: 100%; - overflow: auto; - background-color: rgb(0,0,0); - background-color: rgba(0,0,0,0.4); -} - -.phx-modal-content { - background-color: #fefefe; - margin: 15vh auto; - padding: 20px; - border: 1px solid #888; - width: 80%; -} - -.phx-modal-close { - color: #aaa; - float: right; - font-size: 28px; - font-weight: bold; -} - -.phx-modal-close:hover, -.phx-modal-close:focus { - color: black; - text-decoration: none; - cursor: pointer; + margin: 0; + padding: 0; } .gthm-logo { @@ -101,21 +73,22 @@ .main-view-component { position: relative; + + padding: 10px; } -.pump-overlay-btn { - opacity: 0; +.main-view-component svg { + width: 100%; + height: 100%; + object-fit: contain; - position: absolute; - width: 60px; - height: 61px; - top: 384px; + margin: 0 auto; } -#pump-dec-btn { - left: 25px; +.pump-btn:hover { + cursor: pointer; } -#pump-inc-btn { - left: 115px; +.pump-btn-loading:hover { + cursor: progress; } diff --git a/assets/css/phoenix.css b/assets/css/phoenix.css index cb99aa8..8e842ab 100644 --- a/assets/css/phoenix.css +++ b/assets/css/phoenix.css @@ -19,8 +19,6 @@ pre{padding: 1em;} .container{ margin: 0 auto; - max-width: 80.0rem; - padding: 0 2.0rem; position: relative; width: 100% } diff --git a/lib/geo_therminator_web/geo_therminator_web.ex b/lib/geo_therminator_web/geo_therminator_web.ex index 1d9718a..a090f80 100644 --- a/lib/geo_therminator_web/geo_therminator_web.ex +++ b/lib/geo_therminator_web/geo_therminator_web.ex @@ -87,6 +87,8 @@ defmodule GeoTherminatorWeb do # Import basic rendering functionality (render, render_layout, etc) import Phoenix.View + alias Phoenix.LiveView.JS + import GeoTherminatorWeb.ErrorHelpers import GeoTherminatorWeb.Gettext alias GeoTherminatorWeb.Router.Helpers, as: Routes diff --git a/lib/geo_therminator_web/live/components/main_view.html.heex b/lib/geo_therminator_web/live/components/main_view.html.heex index b319d74..d02b7af 100644 --- a/lib/geo_therminator_web/live/components/main_view.html.heex +++ b/lib/geo_therminator_web/live/components/main_view.html.heex @@ -22,10 +22,8 @@ pointer-events="none" /> - - <%= @outdoor_temp %>°C - + <%= @outdoor_temp %>°C @@ -47,12 +45,12 @@ stroke-miterlimit="10" pointer-events="none" /> - - <%= @set_temp %>°C - + <%= @set_temp %>°C - - - - + - - - + - + + @@ -100,38 +114,28 @@ stroke-miterlimit="10" pointer-events="none" /> - - <%= @brine_in %>°C - + <%= @brine_in %>°C - - <%= @brine_out %>°C - + <%= @brine_out %>°C - - <%= @supply_in %>°C - + <%= @supply_in %>°C - - <%= @supply_out %>°C - + <%= @supply_out %>°C - - <%= @hot_water_temp %>°C - + <%= @hot_water_temp %>°C @@ -176,25 +180,5 @@ - - Viewer does not support full SVG 1.1 - - - - diff --git a/lib/geo_therminator_web/live/main/pump.html.heex b/lib/geo_therminator_web/live/main/pump.html.heex index 44f7b26..6a3c995 100644 --- a/lib/geo_therminator_web/live/main/pump.html.heex +++ b/lib/geo_therminator_web/live/main/pump.html.heex @@ -1,5 +1,3 @@ -<%= live_redirect("« Go back", to: Routes.live_path(@socket, GeoTherminatorWeb.MainLive.Index)) %> - <%= if is_nil(@pid) do %> Some fail happened. <% else %> diff --git a/lib/geo_therminator_web/templates/layout/root.html.heex b/lib/geo_therminator_web/templates/layout/root.html.heex index b18a692..b8e2cfc 100644 --- a/lib/geo_therminator_web/templates/layout/root.html.heex +++ b/lib/geo_therminator_web/templates/layout/root.html.heex @@ -10,21 +10,6 @@ -
-
- - -
-
<%= @inner_content %> diff --git a/priv/static/images/geotherminator.png b/priv/static/images/geotherminator.png deleted file mode 100644 index 97e0c7bbacfbcd8099fb6c99c9edf0c0b24b34de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10850 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%0AmVD4ugn)q9C$?ew11=erTCPP87bf@-4E|qfQaDT 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 R_^0brMNw0sMb0wv{{R?b!nFVZ