This commit is contained in:
benjaminramey
2019-11-02 15:42:12 -05:00
commit 6f79cdf456
29 changed files with 8717 additions and 0 deletions

77
src/Client/Client.fs Normal file
View File

@@ -0,0 +1,77 @@
module Client
open Elmish
open Elmish.React
open Fable.React
open Fable.React.Props
open Fetch.Types
open Thoth.Fetch
open Fulma
open Thoth.Json
open Browser.Types
open Shared
let [<Literal>] ENTER_KEY = 13.
let onEnter msg dispatch =
OnKeyDown (fun ev ->
if ev.keyCode = ENTER_KEY then
dispatch msg)
let targetValue (ev: Event) =
(ev.target :?> HTMLInputElement).value
type Model = { Run: Run }
type Msg =
| StartRun
| UpdateName of string
//let initialCounter () = Fetch.fetchAs<Counter> "/api/init"
let init () : Model * Cmd<Msg> =
let initialModel = { Run = { Name = "george" } }
initialModel, Cmd.none
let update (msg : Msg) (currentModel : Model) : Model * Cmd<Msg> =
match msg with
| StartRun ->
let nextModel = { currentModel with Run = { Name = currentModel.Run.Name + " saved" } }
nextModel, Cmd.none
| UpdateName newName ->
let nextModel = { currentModel with Run = { Name = newName }}
nextModel, Cmd.none
let view (model : Model) (dispatch : Msg -> unit) =
Columns.columns []
[ Column.column [ Column.Offset (Screen.All, Column.Is3)
Column.Width (Screen.All, Column.Is6) ]
[ Box.box' []
[ Heading.h1 [] [ str "lunch run" ]
p [] [ str "Start a lunch run today!" ]
Field.div []
[ Control.div []
[ Input.text [ Input.Placeholder "lunch run name"
Input.Value model.Run.Name
Input.OnChange (fun ev -> targetValue ev |> UpdateName |> dispatch)
Input.Props [ onEnter StartRun dispatch ] ]
]
]
]
]
]
#if DEBUG
open Elmish.Debug
open Elmish.HMR
#endif
Program.mkProgram init update view
#if DEBUG
|> Program.withConsoleTrace
#endif
|> Program.withReactBatched "elmish-app"
#if DEBUG
|> Program.withDebugger
#endif
|> Program.run

16
src/Client/Client.fsproj Normal file
View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<DefineConstants>FABLE_COMPILER</DefineConstants>
</PropertyGroup>
<ItemGroup>
<None Include="index.html" />
<None Include="paket.references" />
<None Include="style.scss" />
<Compile Include="..\Shared\Shared.fs" />
<Compile Include="Version.fs" />
<Compile Include="Client.fs" />
</ItemGroup>
<Import Project="..\..\.paket\Paket.Restore.targets" />
</Project>

5
src/Client/Version.fs Normal file
View File

@@ -0,0 +1,5 @@
module Version
let template = "1.18.0"
let app = "0.0.1"

14
src/Client/index.html Normal file
View File

@@ -0,0 +1,14 @@
<!doctype html>
<html>
<head>
<title>lunch run!</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="shortcut icon" type="image/png" href="/favicon.png"/>
</head>
<body>
<div id="elmish-app"></div>
</body>
</html>

View File

@@ -0,0 +1,10 @@
group Client
FSharp.Core
Fable.Core
Fable.Elmish.Debugger
Fable.Elmish.React
Fable.Elmish.HMR
Thoth.Fetch
Fulma
Fable.FontAwesome.Free

Binary file not shown.

After

Width:  |  Height:  |  Size: 810 B

17
src/Client/style.scss Normal file
View File

@@ -0,0 +1,17 @@
@charset "utf-8";
// FontAwesome
$fa_font_path: "~@fortawesome/fontawesome-free/webfonts";
@import '~@fortawesome/fontawesome-free/scss/fontawesome.scss';
@import '~@fortawesome/fontawesome-free/scss/regular.scss';
@import '~@fortawesome/fontawesome-free/scss/solid.scss';
@import '~@fortawesome/fontawesome-free/scss/brands.scss';
// OpenSans
$FontPathOpenSans: "~open-sans-fonts/open-sans";
@import '~open-sans-fonts/open-sans';
$family-primary: 'Open Sans';
// Bulma
@import "~bulma/bulma";