/
Site.fs
57 lines (46 loc) · 1.32 KB
/
Site.fs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
namespace WebSharper7
open WebSharper
open WebSharper.Sitelets
open WebSharper.UI
open WebSharper.UI.Server
open WebSharper.JQuery
type EndPoint =
| [<EndPoint "/">] Home
module Templating =
open WebSharper.UI.Templating
type HomeTemplate = Template<"Home.html", ClientLoad.FromDocument>
[<JavaScript>]
module Client =
let private insertRegion (region : string) =
let content =
Templating
.HomeTemplate
.RegionTemplate()
.Name(region)
.Doc()
Templating
.HomeTemplate()
.Region(content)
.Bind()
let FillRegionAjax () =
let geoUrl = "https://ipinfo.io/json"
JQuery.GetJSON(geoUrl, fun (_, _) ->
//get by local IP
insertRegion "Mars-1"
)|> ignore
let FillRegionPlain () =
insertRegion "Mars-1"
module Site =
let HomePage ctx =
Content.Page(
Templating.HomeTemplate()
.Title("Home page")
.Elt(keepUnfilled = true)
.OnAfterRender(fun _ -> Client.FillRegionAjax ())
)
[<Website>]
let Main =
Application.MultiPage (fun ctx endpoint ->
match endpoint with
| EndPoint.Home -> HomePage ctx
)