Skip to content

Instantly share code, notes, and snippets.

@Kimserey
Kimserey / Main.fs
Created November 15, 2015 01:27
Sample Sitelet with UI.Next and Owin selfhost
namespace Sample
open WebSharper
open WebSharper.JavaScript
open WebSharper.Sitelets
open WebSharper.UI.Next
open WebSharper.UI.Next.Html
module Resources =
open WebSharper.Core.Resources
@Kimserey
Kimserey / Client.fs
Created November 2, 2015 09:19
Error while building with FAKE script. `ConfigMacro: error: No default constructor`
namespace MacroTest
open WebSharper
open WebSharper.JavaScript
open WebSharper.JQuery
open WebSharper.UI.Next
open WebSharper.UI.Next.Client
open WebSharper.UI.Next.Html
open WebSharper.Core.Quotations
open WebSharper.Core.JavaScript.Core
@Kimserey
Kimserey / script.fsx
Created October 28, 2015 14:01
Write to CSV
module UserTable =
open System.IO
type List =
static member Write (path:string) (data:'a list) =
use writer = new StreamWriter(path)
data |> List.iter writer.WriteLine
let makeRow (data: string) =
sprintf "id_%s_1,User %s 1,[email protected],TOKENHASH"
<| data.Replace('-', '_')
@Kimserey
Kimserey / build-instances.fsx
Last active October 25, 2015 17:08
FAKE build script to deploy W# UI.Next SPA. Defines multiple targets depending on the number of instances. Clean, build, deploy and run on IIS express website for particular instance on port 9090 by default. Can be overwritten with -ev port XXXX
// --------------------------------------------------------------------------------------
// Build instances used in build.fsx to create Targets
// --------------------------------------------------------------------------------------
module BuildInstances
// Add new instances here
//
let instances = [
"earth"
@Kimserey
Kimserey / Client.fs
Created October 21, 2015 15:54
W# UI.Next routing with easy way to add new pages
namespace RouterTest
open WebSharper
open WebSharper.JavaScript
open WebSharper.JQuery
open WebSharper.UI.Next
open WebSharper.UI.Next.Client
open WebSharper.UI.Next.Html
[<JavaScript>]
@Kimserey
Kimserey / macro.fs
Last active December 16, 2015 03:09
W# Macro to get a config object constructed before JS built. The macro can then be used to access the config from the W# JavaScript annotated code. The advantage is that we have full flexibility in getConfig as it is before JS compilation.
type private ConfigMacro () =
interface M.IMacro with
member this.Translate(q, tr) =
match q with
| Q.CallOrCallModule (_, []) ->
let rec convert (obj: obj) =
match obj.GetType() with
| ty when ty.IsGenericType && ty.GetGenericTypeDefinition() = typedefof<list<_>> ->
C.NewArray <| (obj :?> seq<_> |> List.ofSeq |> List.map convert)
| ty when ty.IsPrimitive || ty = typeof<string> -> !~ (C.String (string obj))
@Kimserey
Kimserey / client.fs
Created October 20, 2015 08:49
Drag and drop sortable with html5 sortable
namespace DragnDropUInNext
open WebSharper
open WebSharper.JavaScript
open WebSharper.JQuery
open WebSharper.UI.Next
open WebSharper.UI.Next.Client
open WebSharper.UI.Next.Html
open WebSharper.JQueryUI
@Kimserey
Kimserey / domain.fs
Last active October 1, 2015 22:14
Compile a script.fsx and get out a result from a console app fsharp. FSharp.Core.sigdata / FSharp.Core.optdata must be added to the project. Domain is in a separate library project, script.fsx and Program project reference the Domain library.
module Domain.Core
type Breed =
| Papillon
| Corgy
type Dog =
{ breed : Breed
name : string }
override x.ToString() =
@Kimserey
Kimserey / Run.cmd
Last active September 30, 2015 22:09
Sqlite backup script
@echo off
cls
C:\"Program Files (x86)"\"Microsoft SDKs"\F#\4.0\Framework\v4.0\Fsi.exe .\script.fsx %1 %2 %3
@Kimserey
Kimserey / BootstrapUI.fs
Last active September 14, 2017 14:19
SPA UI.Next Bootstrap
[<JavaScript>]
module BootstrapUI =
open WebSharper.UI.Next
open WebSharper.UI.Next.Html
open WebSharper.UI.Next.Client
module Button =
type private ButtonColor =
| Default
| Primary