Skip to content

Commit dce1f82

Browse files
committed
added basic example for ChangeableModelListList
1 parent 2dd97af commit dce1f82

File tree

3 files changed

+55
-1
lines changed

3 files changed

+55
-1
lines changed
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
module ChangeableModelListList
2+
3+
open FSharp.Data.Adaptive
4+
open FSharp.Data.Traceable
5+
6+
type Thing =
7+
{
8+
Id : int
9+
Name : string
10+
}
11+
12+
type AdaptiveThing(initial : Thing) =
13+
let _id = cval initial.Id
14+
let _name = cval initial.Name
15+
member x.Id = _id :> aval<int>
16+
member x.Name = _name :> aval<string>
17+
member x.Update(t : Thing) =
18+
_id.Value <- t.Id
19+
if _name.Value <> t.Name then
20+
printfn "%d.Name <- %s" t.Id t.Name
21+
_name.Value <- t.Name
22+
23+
24+
override x.ToString() =
25+
sprintf "AdaptiveThing(Id = %d, Name = %s)" _id.Value _name.Value
26+
27+
let run() =
28+
29+
let cmp (a : Thing) (b : Thing) = a.Id = b.Id
30+
31+
let values = [ { Id = 1; Name = "Hello" }; { Id = 2; Name = "World" } ]
32+
let adaptiveThings = ChangeableModelListList(values, cmp, AdaptiveThing, (fun (t : AdaptiveThing) (a : Thing) -> t.Update a; t), id)
33+
34+
let ll = adaptiveThings :> alist<_>
35+
36+
let r = ll.GetReader()
37+
printfn "Initial:"
38+
let ops = r.GetChanges AdaptiveToken.Top
39+
printfn "%A" ops
40+
printfn "%A" r.State
41+
42+
43+
printfn "Change 1:"
44+
transact (fun () ->
45+
adaptiveThings.Update [ { Id = 1; Name = "Sepp" }; { Id = 3; Name = "says" }; { Id = 2; Name = "Hello" } ]
46+
)
47+
48+
let ops = r.GetChanges AdaptiveToken.Top
49+
printfn "%A" ops
50+
printfn "%A" r.State
51+
52+
()

src/Demo/Scratch/Program.fs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@ open FSharp.Data.Traceable
66
//ABag.run()
77
//Observable.run()
88
//LookupAll.example()
9-
AListSub.run()
9+
//AListSub.run()
10+
ChangeableModelListList.run()

src/Demo/Scratch/Scratch.fsproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
<Compile Include="LookupAll.fs" />
1818
<Compile Include="ABag.fs" />
1919
<Compile Include="AListSub.fs" />
20+
<Compile Include="ChangeableModelListList.fs" />
2021
<Compile Include="Program.fs" />
2122
</ItemGroup>
2223
<ItemGroup>

0 commit comments

Comments
 (0)