Created
July 24, 2018 11:06
-
-
Save kunjee17/a75d623effd4c8bb6608ac89bfc7e1e4 to your computer and use it in GitHub Desktop.
WebSharper example
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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