From 7d80d3d2be3e0f8e36be66a08879b1f04a381e88 Mon Sep 17 00:00:00 2001 From: Guillermo Ramos Date: Sun, 16 Feb 2025 14:45:55 +0100 Subject: Basic Elm application --- Makefile | 5 +++++ front/.gitignore | 2 ++ front/elm.json | 24 ++++++++++++++++++++ front/src/Main.elm | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/bin/web.rs | 6 +++-- 5 files changed, 99 insertions(+), 2 deletions(-) create mode 100644 Makefile create mode 100644 front/.gitignore create mode 100644 front/elm.json create mode 100644 front/src/Main.elm diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..22ae3b9 --- /dev/null +++ b/Makefile @@ -0,0 +1,5 @@ +serve: + cd front && elm make src/Main.elm + cargo run -r --bin web + +.PHONY: serve diff --git a/front/.gitignore b/front/.gitignore new file mode 100644 index 0000000..e453cba --- /dev/null +++ b/front/.gitignore @@ -0,0 +1,2 @@ +elm-stuff +index.html diff --git a/front/elm.json b/front/elm.json new file mode 100644 index 0000000..ce2a08d --- /dev/null +++ b/front/elm.json @@ -0,0 +1,24 @@ +{ + "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" + }, + "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/front/src/Main.elm b/front/src/Main.elm new file mode 100644 index 0000000..fdf2fc4 --- /dev/null +++ b/front/src/Main.elm @@ -0,0 +1,64 @@ +module Main exposing (..) + +-- Press buttons to increment and decrement a counter. +-- +-- Read how it works: +-- https://guide.elm-lang.org/architecture/buttons.html +-- + + +import Browser +import Html exposing (Html, button, div, text) +import Html.Events exposing (onClick) + + + +-- MAIN + + +main = + Browser.sandbox { init = init, update = update, view = view } + + + +-- MODEL + + +type alias Model = Int + + +init : Model +init = + 0 + + + +-- UPDATE + + +type Msg + = Increment + | Decrement + + +update : Msg -> Model -> Model +update msg model = + case msg of + Increment -> + model + 1 + + Decrement -> + model - 1 + + + +-- VIEW + + +view : Model -> Html Msg +view model = + div [] + [ button [ onClick Decrement ] [ text "-" ] + , div [] [ text (String.fromInt model) ] + , button [ onClick Increment ] [ text "+" ] + ] diff --git a/src/bin/web.rs b/src/bin/web.rs index fed833b..243e4a2 100644 --- a/src/bin/web.rs +++ b/src/bin/web.rs @@ -1,11 +1,13 @@ + +use std::fs; use axum::{ response::Html, routing::get, Router, }; -async fn root_get() -> Html<&'static str> { - Html("