diff --git a/.gitignore b/.gitignore index 11876fd..31931fa 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ __pycache__ venv surprise.txt +backend/static/main.js +frontend/elm-stuff diff --git a/backend/app.py b/backend/app.py index 23f3e3a..9b54f39 100644 --- a/backend/app.py +++ b/backend/app.py @@ -25,7 +25,7 @@ assert os.path.isdir(SURPRISE_ASSET_DIR) SURPRISE_REVEAL_DATETIME = dt_parser.parse( os.environ.get( "SURPRISE_REVEAL_DATETIME", - (datetime.datetime.now() + datetime.timedelta(minutes=5)).isoformat() + (datetime.datetime.now() + datetime.timedelta(minutes=1)).isoformat() ) ) print("SURPRISE_REVEAL_DATETIME =", SURPRISE_REVEAL_DATETIME) @@ -50,9 +50,9 @@ def _get_surprise_assets(): map(lambda s: s.lower().strip()) )(files) if '_null' not in surprise_assets: - surprise_assets['_null'] = os.path.join('/static', '_null.png') + surprise_assets['_null'] = os.path.join('/static', '_null.svg') if '_secret' not in surprise_assets: - surprise_assets['_secret'] = os.path.join('/static', '_secret.png') + surprise_assets['_secret'] = os.path.join('/static', '_secret.svg') return surprise_assets SURPRISE_ASSETS = _get_surprise_assets() diff --git a/backend/static/_null.png b/backend/static/_null.png deleted file mode 100644 index e69de29..0000000 diff --git a/backend/static/_null.svg b/backend/static/_null.svg new file mode 100644 index 0000000..7147278 --- /dev/null +++ b/backend/static/_null.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/backend/static/_secret.png b/backend/static/_secret.png deleted file mode 100644 index e69de29..0000000 diff --git a/backend/static/_secret.svg b/backend/static/_secret.svg new file mode 100644 index 0000000..051df77 --- /dev/null +++ b/backend/static/_secret.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/backend/static/loading.svg b/backend/static/loading.svg new file mode 100644 index 0000000..7a4d809 --- /dev/null +++ b/backend/static/loading.svg @@ -0,0 +1,33 @@ + + + + + + \ No newline at end of file diff --git a/backend/templates/index.html b/backend/templates/index.html index 4cb72de..330c97d 100644 --- a/backend/templates/index.html +++ b/backend/templates/index.html @@ -4,6 +4,22 @@ {{ title }} + + @@ -16,8 +32,11 @@ {% endif %} {% endwith %} -

Hei

-

TODO

+
+ - diff --git a/backend/templates/set_surprise.html b/backend/templates/set_surprise.html index c650915..33a9e67 100644 --- a/backend/templates/set_surprise.html +++ b/backend/templates/set_surprise.html @@ -4,6 +4,7 @@ {{ title }} + diff --git a/frontend/elm.json b/frontend/elm.json new file mode 100644 index 0000000..a14585c --- /dev/null +++ b/frontend/elm.json @@ -0,0 +1,27 @@ +{ + "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", + "elm/http": "2.0.0", + "elm/json": "1.1.3", + "elm/time": "1.0.0" + }, + "indirect": { + "elm/bytes": "1.0.8", + "elm/file": "1.0.5", + "elm/url": "1.0.0", + "elm/virtual-dom": "1.0.2" + } + }, + "test-dependencies": { + "direct": {}, + "indirect": {} + } +} diff --git a/frontend/src/Main.elm b/frontend/src/Main.elm new file mode 100644 index 0000000..d0a6115 --- /dev/null +++ b/frontend/src/Main.elm @@ -0,0 +1,106 @@ +module Main exposing (main) + +import Browser +import Html exposing (..) +import Html.Attributes exposing (..) +import Html.Events exposing (..) +import Http +import Time +import Json.Decode exposing (Decoder, map3, field, string, float) + + + +-- MAIN + +main = + Browser.element + { init = init + , update = update + , subscriptions = subscriptions + , view = view + } + + +-- MODEL + +type alias Surprise = + { diff : Float + , surprise : String + , asset : String + } + +type Model + = Failure + | Loading + | Success Surprise + + +init : () -> (Model, Cmd Msg) +init _ = + (Loading, getSurprise) + + +-- UPDATE + +type Msg + = FetchSurprise Time.Posix + | GotSurprise (Result Http.Error Surprise) + + +update : Msg -> Model -> (Model, Cmd Msg) +update msg model = + case msg of + FetchSurprise _ -> + (Loading, getSurprise) + + GotSurprise result -> + case result of + Ok surprise -> + (Success surprise, Cmd.none) + + Err _ -> + (Failure, Cmd.none) + + +-- SUBSCRIPTIONS + +subscriptions : Model -> Sub Msg +subscriptions model = + Time.every 1000 FetchSurprise + + +-- VIEW + +view : Model -> Html Msg +view model = + case model of + Failure -> + div [] [ text "Failed to fetch from server." ] + + Loading -> + img [ src "/static/loading.svg" ] [] + + Success surprise -> + div [] + [ div [] [ text (String.fromInt (round surprise.diff)) ] + , img [ src surprise.asset ] [] + ] + + +-- HTTP + +getSurprise : Cmd Msg +getSurprise = + Http.get + { url = "/get-surprise.json" + , expect = Http.expectJson GotSurprise surpriseDecoder + } + + +surpriseDecoder : Decoder Surprise +surpriseDecoder = + map3 Surprise + (field "diff_seconds" float) + (field "surprise" string) + (field "asset" string) + diff --git a/surprise-assets/gender-reveal/_null.gif b/surprise-assets/gender-reveal/_null.gif new file mode 100644 index 0000000..079de13 Binary files /dev/null and b/surprise-assets/gender-reveal/_null.gif differ diff --git a/surprise-assets/gender-reveal/_secret.png b/surprise-assets/gender-reveal/_secret.png deleted file mode 100644 index e69de29..0000000 diff --git a/surprise-assets/gender-reveal/_secret.webp b/surprise-assets/gender-reveal/_secret.webp new file mode 100644 index 0000000..712f5a6 Binary files /dev/null and b/surprise-assets/gender-reveal/_secret.webp differ diff --git a/surprise-assets/gender-reveal/boy.png b/surprise-assets/gender-reveal/boy.png deleted file mode 100644 index e69de29..0000000 diff --git a/surprise-assets/gender-reveal/boy.webp b/surprise-assets/gender-reveal/boy.webp new file mode 100644 index 0000000..655426e Binary files /dev/null and b/surprise-assets/gender-reveal/boy.webp differ diff --git a/surprise-assets/gender-reveal/girl.png b/surprise-assets/gender-reveal/girl.png deleted file mode 100644 index e69de29..0000000 diff --git a/surprise-assets/gender-reveal/girl.webp b/surprise-assets/gender-reveal/girl.webp new file mode 100644 index 0000000..a36e40d Binary files /dev/null and b/surprise-assets/gender-reveal/girl.webp differ