Skip to content

Instantly share code, notes, and snippets.

@dsyme
Created August 12, 2015 20:57
Show Gist options
  • Save dsyme/034956eb0f41a5ff1aa6 to your computer and use it in GitHub Desktop.
Save dsyme/034956eb0f41a5ff1aa6 to your computer and use it in GitHub Desktop.
namespace TODOList
open WebSharper
open WebSharper.JavaScript
open WebSharper.JQuery
open WebSharper.UI.Next
open WebSharper.UI.Next.Client
[<JavaScript>]
module Code =
type IndexTemplate = Templating.Template<"index.html">
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.Doc(
ListContainer =
[ListModel.View tasks |> Doc.Convert (fun task ->
IndexTemplate.ListItem.Doc(
Task = task.Name,
Clear = (fun _ _ -> tasks.RemoveByKey task.Name),
Done = task.Done,
ShowDone = Attr.DynamicClass "checked" task.Done.View id)
)],
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.RunById "tasks"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment