Skip to content

Instantly share code, notes, and snippets.

@kunjee17
Created July 24, 2018 11:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kunjee17/a75d623effd4c8bb6608ac89bfc7e1e4 to your computer and use it in GitHub Desktop.
Save kunjee17/a75d623effd4c8bb6608ac89bfc7e1e4 to your computer and use it in GitHub Desktop.
WebSharper example
open WebSharper
open WebSharper.JavaScript
open WebSharper.JQuery
open WebSharper.UI
open WebSharper.UI.Client
[<JavaScript>]
module Code =
// This creates a typed access to the HTML template (see the Markup tab)
type IndexTemplate = Templating.Template<Snippet.IndexHtml>
[<NoComparison>]
type Task = { Name: string; Done: Var<bool> }
let Tasks =
ListModel.Create (fun task -> task.Name)
[ { Name = "Have breakfast"; Done = Var.Create true }
{ Name = "Have lunch"; Done = Var.Create false } ]
let NewTaskName = Var.Create ""
let Main =
IndexTemplate.Main()
.ListContainer(
ListModel.View Tasks |> Doc.BindSeqCached (fun task ->
IndexTemplate.ListItem()
.Task(task.Name)
.Clear(fun _ -> Tasks.RemoveByKey task.Name)
.Done(task.Done)
.ShowDone(Attr.DynamicClass "checked" task.Done.View id)
.Doc()
))
.NewTaskName(NewTaskName)
.Add(fun _ ->
Tasks.Add { Name = NewTaskName.Value; Done = Var.Create false }
Var.Set NewTaskName "")
.ClearCompleted(fun _ -> Tasks.RemoveBy (fun task -> task.Done.Value))
.Doc()
|> Doc.RunById "tasks"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment