From 2628570dafac88fd088328af48bfff149d31fccc Mon Sep 17 00:00:00 2001 From: Correl Roush Date: Wed, 28 Aug 2024 17:10:25 -0400 Subject: [PATCH] Initial commit --- .gitignore | 3 ++ Makefile | 39 +++++++++++++++++ elm.json | 25 +++++++++++ public/Chicago.woff | Bin 0 -> 21996 bytes public/chicago.css | 6 +++ public/index.html | 17 ++++++++ src/App.elm | 100 ++++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 190 insertions(+) create mode 100644 .gitignore create mode 100644 Makefile create mode 100644 elm.json create mode 100644 public/Chicago.woff create mode 100644 public/chicago.css create mode 100644 public/index.html create mode 100644 src/App.elm diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..809bf74 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +bin/ +elm-stuff/ +public/elm.js diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..6a1dbaf --- /dev/null +++ b/Makefile @@ -0,0 +1,39 @@ +.PHONY: all node-deps clean run + +UNAME_S := $(shell uname -s) +ifeq ($(UNAME_S),Darwin) + PLATFORM = mac +else + PLATFORM = linux +endif + +TARGET=public/elm.js +SOURCE=src/App.elm + +ELM_FILES = $(shell find src -type f -name '*.elm') +ELM = ./bin/elm + +ELMMAKE_FLAGS = +ifeq ($(DEBUG),1) + ELMMAKE_FLAGS += --debug +endif + +all: $(TARGET) + +$(ELM): + mkdir -p ./bin + curl -sL https://github.com/elm/compiler/releases/download/0.19.1/binary-for-$(PLATFORM)-64-bit.gz \ + | gunzip > $@ + chmod +x $@ + +$(TARGET): $(ELM_FILES) $(ELM) + $(ELM) make $(ELMMAKE_FLAGS) $(SOURCE) --output $@ + +clean-deps: + rm -rf bin + rm -rf elm-stuff + +clean: + rm -f $(TARGET) + rm -f $(ELM) + rm -rf elm-stuff/build-artifacts diff --git a/elm.json b/elm.json new file mode 100644 index 0000000..5398be3 --- /dev/null +++ b/elm.json @@ -0,0 +1,25 @@ +{ + "type": "application", + "source-directories": [ + "src" + ], + "elm-version": "0.19.1", + "dependencies": { + "direct": { + "elm/browser": "1.0.2", + "elm/core": "1.0.5", + "elm/html": "1.0.0", + "mdgriffith/elm-ui": "1.1.8" + }, + "indirect": { + "elm/json": "1.1.3", + "elm/time": "1.0.0", + "elm/url": "1.0.0", + "elm/virtual-dom": "1.0.3" + } + }, + "test-dependencies": { + "direct": {}, + "indirect": {} + } +} diff --git a/public/Chicago.woff b/public/Chicago.woff new file mode 100644 index 0000000000000000000000000000000000000000..240fd3e8c0fc58f5e50481e0550c49313895c19f GIT binary patch literal 21996 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 T5GRoM(?c- + + Past Tense Clock + + + + + + + + +
+ + + diff --git a/src/App.elm b/src/App.elm new file mode 100644 index 0000000..2c1d830 --- /dev/null +++ b/src/App.elm @@ -0,0 +1,100 @@ +module App exposing (main, update, view) + +import Browser +import Element +import Element.Background as Background +import Element.Border as Border +import Element.Font as Font + + +type alias Model = + { day : String + , date : String + , temperature : Int + } + + +type Msg + = Update (List String) String + + +init : Model +init = + { day = "Friday" + , date = "8/30/24" + , temperature = 15 + } + + +main = + Browser.sandbox { init = init, update = update, view = view } + + +update msg model = + model + + +view model = + let + box borderWidth child = + Element.el + [ Border.color <| Element.rgb 255 255 255 + , Border.width borderWidth + , Border.rounded 35 + ] + child + + display label size value = + Element.column [ Element.centerY, Font.size size ] + [ Element.el + [ Font.color <| Element.rgb 255 255 255 + , Font.size 16 + , Element.centerX + , Element.height <| Element.px 16 + ] + <| + Element.text label + , box 3 <| Element.el [ Element.paddingXY 30 8 ] <| Element.text value + ] + + bars = + let + bar = + Element.el + [ Border.color <| Element.rgb 255 255 255 + , Border.width 3 + , Border.rounded 25 + , Element.width <| Element.px 20 + , Element.height <| Element.px 52 + ] + Element.none + in + Element.column + [ Element.paddingEach { top = 18, right = 20, bottom = 0, left = 20 } + ] + [ Element.row [ Element.spacing 3 ] [ bar, bar, bar ] + ] + in + Element.layout + [ Background.color <| Element.rgb 0 0 0 + , Element.padding 50 + , Font.color <| Element.rgb 255 0 0 + , Font.family [ Font.typeface "Chicago Plain" ] + , Font.size 36 + ] + <| + box 5 <| + Element.column [ Element.paddingXY 15 25, Element.spacing 5 ] + [ Element.row [ Element.centerY, Element.spacing 15 ] + [ display "TODAY" 36 <| String.toUpper model.day + , display "" 18 <| + String.concat + [ String.fromInt model.temperature + , "°C" + ] + ] + , Element.row [ Element.centerY, Element.spacing 15 ] + [ bars + , display "DATE" 36 <| String.toUpper model.date + ] + ]