├── .gitignore ├── DDDInventoryItemFSharp.Web ├── DDDInventoryItemFSharp.WebWebAppSpa │ ├── Controllers │ │ ├── HomeController.fs │ │ └── InventoryItemsController.fs │ ├── DDDInventoryItemFSharp.Web.fsproj │ └── Global.fs └── DDDInventoryItemFSharp.WebWebSpa │ ├── Content │ ├── Site.css │ ├── bootstrap-responsive.css │ ├── bootstrap-responsive.min.css │ ├── bootstrap.css │ ├── bootstrap.min.css │ ├── foundation.css │ ├── images │ │ ├── glyphicons-halflings-white.png │ │ └── glyphicons-halflings.png │ ├── themes │ │ └── base │ │ │ ├── images │ │ │ ├── ui-bg_flat_0_aaaaaa_40x100.png │ │ │ ├── ui-bg_flat_75_ffffff_40x100.png │ │ │ ├── ui-bg_glass_55_fbf9ee_1x400.png │ │ │ ├── ui-bg_glass_65_ffffff_1x400.png │ │ │ ├── ui-bg_glass_75_dadada_1x400.png │ │ │ ├── ui-bg_glass_75_e6e6e6_1x400.png │ │ │ ├── ui-bg_glass_95_fef1ec_1x400.png │ │ │ ├── ui-bg_highlight-soft_75_cccccc_1x100.png │ │ │ ├── ui-icons_222222_256x240.png │ │ │ ├── ui-icons_2e83ff_256x240.png │ │ │ ├── ui-icons_454545_256x240.png │ │ │ ├── ui-icons_888888_256x240.png │ │ │ └── ui-icons_cd0a0a_256x240.png │ │ │ ├── jquery.ui.accordion.css │ │ │ ├── jquery.ui.all.css │ │ │ ├── jquery.ui.autocomplete.css │ │ │ ├── jquery.ui.base.css │ │ │ ├── jquery.ui.button.css │ │ │ ├── jquery.ui.core.css │ │ │ ├── jquery.ui.datepicker.css │ │ │ ├── jquery.ui.dialog.css │ │ │ ├── jquery.ui.progressbar.css │ │ │ ├── jquery.ui.resizable.css │ │ │ ├── jquery.ui.selectable.css │ │ │ ├── jquery.ui.slider.css │ │ │ ├── jquery.ui.tabs.css │ │ │ └── jquery.ui.theme.css │ ├── toastr-responsive.css │ └── toastr.css │ ├── DDDInventoryItemFSharp.Web.UI.csproj │ ├── Global.asax │ ├── Images │ ├── NuGetGallery.png │ ├── accent.png │ ├── aspNetHome.png │ ├── bullet.png │ ├── facebook.png │ ├── findHosting.png │ ├── heroAccent.png │ ├── orderedList0.png │ ├── orderedList1.png │ ├── orderedList2.png │ ├── orderedList3.png │ ├── orderedList4.png │ ├── orderedList5.png │ ├── orderedList6.png │ ├── orderedList7.png │ ├── orderedList8.png │ ├── orderedList9.png │ ├── twitter.png │ └── windowsLive.png │ ├── Properties │ └── AssemblyInfo.cs │ ├── Scripts │ ├── _references.js │ ├── app │ │ ├── main.js │ │ ├── router.js │ │ └── utility.js │ ├── backbone.js │ ├── backbone.min.js │ ├── bootstrap.js │ ├── bootstrap.min.js │ ├── jquery-1.9.1.intellisense.js │ ├── jquery-1.9.1.js │ ├── jquery-1.9.1.min.js │ ├── jquery-ui-1.8.11.js │ ├── jquery-ui-1.8.11.min.js │ ├── jquery.unobtrusive-ajax.js │ ├── jquery.unobtrusive-ajax.min.js │ ├── jquery.validate-vsdoc.js │ ├── jquery.validate.js │ ├── jquery.validate.min.js │ ├── jquery.validate.unobtrusive.js │ ├── jquery.validate.unobtrusive.min.js │ ├── knockout-2.0.0.debug.js │ ├── knockout-2.0.0.js │ ├── knockout-2.1.0.debug.js │ ├── knockout-2.1.0.js │ ├── modernizr-2.5.3.js │ ├── sammy-0.7.4.js │ ├── sammy-0.7.4.min.js │ ├── toastr.js │ ├── underscore.js │ ├── underscore.min.js │ └── viewModels │ │ └── inventoryItemsViewModel.js │ ├── Templates │ ├── inventoryItemCreate.htm │ └── inventoryItemOverview.htm │ ├── Views │ ├── Home │ │ └── Index.cshtml │ ├── Shared │ │ ├── Error.cshtml │ │ └── _Layout.cshtml │ ├── Web.config │ └── _ViewStart.cshtml │ ├── Web.Debug.config │ ├── Web.Release.config │ ├── Web.config │ ├── favicon.ico │ └── packages.config ├── DDDInventoryItemFSharp.sln ├── DDDInventoryItemFSharp ├── Aggregate.fs ├── DDDInventoryItemFSharp.fsproj ├── EventStore.fs ├── FlatReadModelProjection.js ├── IntegrationTests.fs ├── InventoryItem.fs ├── OverviewReadModelProjection.js ├── ReadModels.fs ├── Serialization.fs ├── SerializationTests.fs └── Validatior.fs ├── README.md ├── lib ├── EventStore.ClientAPI.dll ├── Newtonsoft.Json.dll ├── Newtonsoft.Json.xml ├── protobuf-net.dll ├── protobuf-net.xml ├── xunit.dll └── xunit.xml └── packages ├── EntityFramework.5.0.0 ├── Content │ ├── App.config.transform │ └── Web.config.transform ├── EntityFramework.5.0.0.nupkg ├── lib │ ├── net40 │ │ ├── EntityFramework.dll │ │ └── EntityFramework.xml │ └── net45 │ │ ├── EntityFramework.dll │ │ └── EntityFramework.xml └── tools │ ├── EntityFramework.PS3.psd1 │ ├── EntityFramework.PowerShell.Utility.dll │ ├── EntityFramework.PowerShell.dll │ ├── EntityFramework.psd1 │ ├── EntityFramework.psm1 │ ├── Redirect.VS11.config │ ├── Redirect.config │ ├── about_EntityFramework.help.txt │ ├── init.ps1 │ ├── install.ps1 │ └── migrate.exe ├── FsSpa-Knockout.0.1.0.0 ├── Content │ ├── Scripts │ │ ├── app │ │ │ ├── main.js.pp │ │ │ ├── router.js.pp │ │ │ └── utility.js.pp │ │ └── viewModels │ │ │ └── contactsViewModel.js.pp │ └── Templates │ │ ├── contactCreate.htm │ │ └── contactDetail.htm └── FsSpa-Knockout.0.1.0.0.nupkg ├── Microsoft.AspNet.Mvc.4.0.20710.0 ├── Microsoft.AspNet.Mvc.4.0.20710.0.nupkg └── lib │ └── net40 │ ├── System.Web.Mvc.dll │ └── System.Web.Mvc.xml ├── Microsoft.AspNet.Providers.Core.1.1 ├── Microsoft.AspNet.Providers.Core.1.1.nupkg ├── lib │ └── net40 │ │ └── System.Web.Providers.dll └── readme.html ├── Microsoft.AspNet.Providers.LocalDB.1.1 ├── Microsoft.AspNet.Providers.LocalDB.1.1.nupkg ├── content │ └── web.config.transform └── tools │ └── Install.ps1 ├── Microsoft.AspNet.Razor.2.0.20710.0 ├── Microsoft.AspNet.Razor.2.0.20710.0.nupkg └── lib │ └── net40 │ ├── System.Web.Razor.dll │ └── System.Web.Razor.xml ├── Microsoft.AspNet.Web.Optimization.1.0.0 ├── Microsoft.AspNet.Web.Optimization.1.0.0.nupkg └── lib │ └── net40 │ └── System.Web.Optimization.dll ├── Microsoft.AspNet.WebApi.4.0.20710.0 └── Microsoft.AspNet.WebApi.4.0.20710.0.nupkg ├── Microsoft.AspNet.WebApi.Client.4.0.20710.0 ├── Microsoft.AspNet.WebApi.Client.4.0.20710.0.nupkg └── lib │ └── net40 │ ├── System.Net.Http.Formatting.dll │ └── System.Net.Http.Formatting.xml ├── Microsoft.AspNet.WebApi.Core.4.0.20710.0 ├── Microsoft.AspNet.WebApi.Core.4.0.20710.0.nupkg ├── content │ └── web.config.transform └── lib │ └── net40 │ ├── System.Web.Http.dll │ └── System.Web.Http.xml ├── Microsoft.AspNet.WebApi.WebHost.4.0.20710.0 ├── Microsoft.AspNet.WebApi.WebHost.4.0.20710.0.nupkg └── lib │ └── net40 │ ├── System.Web.Http.WebHost.dll │ └── System.Web.Http.WebHost.xml ├── Microsoft.AspNet.WebPages.2.0.20710.0 ├── Microsoft.AspNet.WebPages.2.0.20710.0.nupkg └── lib │ └── net40 │ ├── System.Web.Helpers.dll │ ├── System.Web.Helpers.xml │ ├── System.Web.WebPages.Deployment.dll │ ├── System.Web.WebPages.Deployment.xml │ ├── System.Web.WebPages.Razor.dll │ ├── System.Web.WebPages.Razor.xml │ ├── System.Web.WebPages.dll │ └── System.Web.WebPages.xml ├── Microsoft.Net.Http.2.0.20710.0 ├── Microsoft.Net.Http.2.0.20710.0.nupkg └── lib │ ├── net40 │ ├── System.Net.Http.WebRequest.dll │ ├── System.Net.Http.WebRequest.xml │ ├── System.Net.Http.dll │ └── System.Net.Http.xml │ └── net45 │ └── _._ ├── Microsoft.Web.Infrastructure.1.0.0.0 ├── Microsoft.Web.Infrastructure.1.0.0.0.nupkg └── lib │ └── net40 │ └── Microsoft.Web.Infrastructure.dll ├── Microsoft.jQuery.Unobtrusive.Ajax.2.0.20710.0 ├── Content │ └── Scripts │ │ ├── jquery.unobtrusive-ajax.js │ │ └── jquery.unobtrusive-ajax.min.js └── Microsoft.jQuery.Unobtrusive.Ajax.2.0.20710.0.nupkg ├── Microsoft.jQuery.Unobtrusive.Validation.2.0.20710.0 ├── Content │ └── Scripts │ │ ├── jquery.validate.unobtrusive.js │ │ └── jquery.validate.unobtrusive.min.js └── Microsoft.jQuery.Unobtrusive.Validation.2.0.20710.0.nupkg ├── Modernizr.2.5.3 ├── Content │ └── Scripts │ │ └── modernizr-2.5.3.js └── Modernizr.2.5.3.nupkg ├── Newtonsoft.Json.4.5.6 ├── Newtonsoft.Json.4.5.6.nupkg └── lib │ └── net40 │ ├── Newtonsoft.Json.dll │ └── Newtonsoft.Json.xml ├── Sammy.js.0.7.4 ├── Content │ └── Scripts │ │ ├── sammy-0.7.4.js │ │ └── sammy-0.7.4.min.js ├── Sammy.js.0.7.4.nupkg ├── Sammy.js.0.7.4.nuspec └── Tools │ ├── common.ps1 │ ├── install.ps1 │ └── uninstall.ps1 ├── Twitter.Bootstrap.2.3.1 ├── Twitter.Bootstrap.2.3.1.nupkg ├── Twitter.Bootstrap.2.3.1.nuspec └── content │ ├── Content │ ├── bootstrap-responsive.css │ ├── bootstrap-responsive.min.css │ ├── bootstrap.css │ ├── bootstrap.min.css │ └── images │ │ ├── glyphicons-halflings-white.png │ │ └── glyphicons-halflings.png │ └── Scripts │ ├── bootstrap.js │ └── bootstrap.min.js ├── WebGrease.1.1.0 ├── WebGrease.1.1.0.nupkg ├── lib │ ├── Antlr3.Runtime.dll │ └── WebGrease.dll └── tools │ └── WG.exe ├── jQuery.1.9.1 ├── Content │ └── Scripts │ │ ├── jquery-1.9.1-vsdoc.js │ │ ├── jquery-1.9.1.js │ │ ├── jquery-1.9.1.min.js │ │ └── jquery-1.9.1.min.map ├── Tools │ ├── common.ps1 │ ├── install.ps1 │ ├── jquery-1.9.1.intellisense.js │ └── uninstall.ps1 ├── jQuery.1.9.1.nupkg └── jQuery.1.9.1.nuspec ├── jQuery.UI.Combined.1.8.11 ├── Content │ ├── Content │ │ └── themes │ │ │ └── base │ │ │ ├── images │ │ │ ├── ui-bg_flat_0_aaaaaa_40x100.png │ │ │ ├── ui-bg_flat_75_ffffff_40x100.png │ │ │ ├── ui-bg_glass_55_fbf9ee_1x400.png │ │ │ ├── ui-bg_glass_65_ffffff_1x400.png │ │ │ ├── ui-bg_glass_75_dadada_1x400.png │ │ │ ├── ui-bg_glass_75_e6e6e6_1x400.png │ │ │ ├── ui-bg_glass_95_fef1ec_1x400.png │ │ │ ├── ui-bg_highlight-soft_75_cccccc_1x100.png │ │ │ ├── ui-icons_222222_256x240.png │ │ │ ├── ui-icons_2e83ff_256x240.png │ │ │ ├── ui-icons_454545_256x240.png │ │ │ ├── ui-icons_888888_256x240.png │ │ │ └── ui-icons_cd0a0a_256x240.png │ │ │ ├── jquery.ui.accordion.css │ │ │ ├── jquery.ui.all.css │ │ │ ├── jquery.ui.autocomplete.css │ │ │ ├── jquery.ui.base.css │ │ │ ├── jquery.ui.button.css │ │ │ ├── jquery.ui.core.css │ │ │ ├── jquery.ui.datepicker.css │ │ │ ├── jquery.ui.dialog.css │ │ │ ├── jquery.ui.progressbar.css │ │ │ ├── jquery.ui.resizable.css │ │ │ ├── jquery.ui.selectable.css │ │ │ ├── jquery.ui.slider.css │ │ │ ├── jquery.ui.tabs.css │ │ │ └── jquery.ui.theme.css │ └── Scripts │ │ ├── jquery-ui-1.8.11.js │ │ └── jquery-ui-1.8.11.min.js └── jQuery.UI.Combined.1.8.11.nupkg ├── jQuery.Validation.1.9.0.1 ├── Content │ └── Scripts │ │ ├── jquery.validate-vsdoc.js │ │ ├── jquery.validate.js │ │ └── jquery.validate.min.js └── jQuery.Validation.1.9.0.1.nupkg ├── knockoutjs.2.1.0 ├── Content │ └── Scripts │ │ ├── knockout-2.1.0.debug.js │ │ └── knockout-2.1.0.js └── knockoutjs.2.1.0.nupkg └── repositories.config /.gitignore: -------------------------------------------------------------------------------- 1 | ################# 2 | ## Visual Studio 3 | ################# 4 | 5 | ## Ignore Visual Studio temporary files, build results, and 6 | ## files generated by popular Visual Studio add-ons. 7 | 8 | # User-specific files 9 | *.suo 10 | *.user 11 | *.sln.docstates 12 | 13 | # Build results 14 | [Dd]ebug/ 15 | [Rr]elease/ 16 | *_i.c 17 | *_p.c 18 | *.ilk 19 | *.meta 20 | *.obj 21 | *.pch 22 | *.pdb 23 | *.pgc 24 | *.pgd 25 | *.rsp 26 | *.sbr 27 | *.tlb 28 | *.tli 29 | *.tlh 30 | *.tmp 31 | *.vspscc 32 | .builds 33 | *.dotCover 34 | 35 | ## TODO: If you have NuGet Package Restore enabled, uncomment this 36 | #packages/ 37 | 38 | # Visual C++ cache files 39 | ipch/ 40 | *.aps 41 | *.ncb 42 | *.opensdf 43 | *.sdf 44 | 45 | # Visual Studio profiler 46 | *.psess 47 | *.vsp 48 | 49 | # ReSharper is a .NET coding add-in 50 | _ReSharper* 51 | 52 | # Installshield output folder 53 | [Ee]xpress 54 | 55 | # DocProject is a documentation generator add-in 56 | DocProject/buildhelp/ 57 | DocProject/Help/*.HxT 58 | DocProject/Help/*.HxC 59 | DocProject/Help/*.hhc 60 | DocProject/Help/*.hhk 61 | DocProject/Help/*.hhp 62 | DocProject/Help/Html2 63 | DocProject/Help/html 64 | 65 | # Click-Once directory 66 | publish 67 | 68 | # Others 69 | [Bb]in 70 | [Oo]bj 71 | sql 72 | TestResults 73 | *.Cache 74 | ClientBin 75 | stylecop.* 76 | ~$* 77 | *.dbmdl 78 | Generated_Code #added for RIA/Silverlight projects 79 | 80 | # Backup & report files from converting an old project file to a newer 81 | # Visual Studio version. Backup files are not needed, because we have git ;-) 82 | _UpgradeReport_Files/ 83 | Backup*/ 84 | UpgradeLog*.XML 85 | 86 | 87 | 88 | ############ 89 | ## Windows 90 | ############ 91 | 92 | # Windows image file caches 93 | Thumbs.db 94 | 95 | # Folder config file 96 | Desktop.ini 97 | -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebAppSpa/Controllers/HomeController.fs: -------------------------------------------------------------------------------- 1 | namespace DDDInventoryItemFSharp.Web.Controllers 2 | 3 | open System.Web 4 | open System.Web.Mvc 5 | 6 | [] 7 | type HomeController() = 8 | inherit Controller() 9 | member this.Index () = this.View() 10 | -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebAppSpa/Controllers/InventoryItemsController.fs: -------------------------------------------------------------------------------- 1 | namespace DDDInventoryItemFSharp.Web.Controllers 2 | 3 | open System 4 | open System.Collections.Generic 5 | open System.Web 6 | open System.Web.Mvc 7 | open System.Net 8 | open System.Net.Http 9 | open System.Web.Http 10 | open Newtonsoft.Json 11 | open DDDInventoryItemFSharp.Web 12 | 13 | [] 14 | [] 15 | type InventoryItemModel = { 16 | name : string; 17 | count : int; 18 | active : bool; 19 | } 20 | 21 | [] 22 | [] 23 | type CreateInventoryItemModel = { 24 | name : string; 25 | } 26 | 27 | type InventoryItemsController() = 28 | inherit ApiController() 29 | 30 | let get = 31 | let get = EventStore.makeReadModelGetter Global.EventStore.Value (fun data -> Serialization.deserializet(data)) 32 | fun (id:Guid) -> get ("InventoryItemFlatReadModel-" + id.ToString("N")) |> Async.RunSynchronously 33 | 34 | let handleCommand' = 35 | Aggregate.makeHandler 36 | { zero = InventoryItem.State.Zero; apply = InventoryItem.apply; exec = InventoryItem.exec } 37 | (EventStore.makeRepository Global.EventStore.Value "InventoryItem" Serialization.serializer) 38 | 39 | let handleCommand (id,v) c = handleCommand' (id,v) c |> Async.RunSynchronously 40 | 41 | member x.Get() = 42 | let item = get (System.Guid.Parse("88085239-6f0f-48c6-b73d-017333cb99ba")) 43 | match item with 44 | | Some item -> { InventoryItemModel.name = item.name; count = item.count; active = item.active } :> obj 45 | | None -> new HttpResponseMessage(HttpStatusCode.NotFound) :> obj 46 | 47 | member x.Post ([] item:CreateInventoryItemModel) = 48 | let id = Guid.NewGuid() 49 | InventoryItem.Create(item.name) |> handleCommand (id,0) 50 | id.ToString("N") -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebAppSpa/Global.fs: -------------------------------------------------------------------------------- 1 | namespace DDDInventoryItemFSharp.Web 2 | 3 | open System 4 | open System.Web 5 | open System.Web.Mvc 6 | open System.Web.Routing 7 | open System.Web.Http 8 | open System.Net.Http.Formatting 9 | open System.Data.Entity 10 | open System.Web.Optimization 11 | open System.IO 12 | 13 | type BundleConfig() = 14 | static member RegisterBundles (bundles:BundleCollection) = 15 | bundles.Add(ScriptBundle("~/bundles/jquery").Include("~/Scripts/jquery-1.*")) 16 | 17 | bundles.Add(ScriptBundle("~/bundles/jqueryui").Include("~/Scripts/jquery-ui*")) 18 | 19 | bundles.Add(ScriptBundle("~/bundles/jqueryval").Include( 20 | "~/Scripts/jquery.unobtrusive*", 21 | "~/Scripts/jquery.validate*")) 22 | 23 | bundles.Add(ScriptBundle("~/bundles/extLibs").Include( 24 | "~/Scripts/underscore.js", 25 | "~/Scripts/backbone.js", 26 | "~/Scripts/toastr.js", 27 | "~/Scripts/bootstrap.js", 28 | "~/Scripts/knockout-2.1.0.js")) 29 | 30 | if Directory.Exists(HttpContext.Current.Server.MapPath "/Scripts/models") then 31 | bundles.Add(ScriptBundle("~/bundles/localApp").Include( 32 | "~/Scripts/app/main.js", 33 | "~/Scripts/app/utility.js", 34 | "~/Scripts/models/*.js", 35 | "~/Scripts/views/*.js", 36 | "~/Scripts/app/router.js")) 37 | else 38 | bundles.Add(ScriptBundle("~/bundles/localApp").Include( 39 | "~/Scripts/app/main.js", 40 | "~/Scripts/app/utility.js", 41 | "~/Scripts/viewModels/*.js", 42 | "~/Scripts/app/router.js")) 43 | 44 | bundles.Add(ScriptBundle("~/bundles/sammy").Include("~/Scripts/sammy-*")) 45 | 46 | bundles.Add(ScriptBundle("~/bundles/modernizr").Include("~/Scripts/modernizr-*")) 47 | 48 | //bundles.Add(StyleBundle("~/Content/css").Include("~/Content/*.css")) 49 | 50 | // bundles.Add(StyleBundle("~/Content/themes/base/css").Include( 51 | // "~/Content/themes/base/jquery.ui.core.css", 52 | // "~/Content/themes/base/jquery.ui.resizable.css", 53 | // "~/Content/themes/base/jquery.ui.selectable.css", 54 | // "~/Content/themes/base/jquery.ui.accordion.css", 55 | // "~/Content/themes/base/jquery.ui.autocomplete.css", 56 | // "~/Content/themes/base/jquery.ui.button.css", 57 | // "~/Content/themes/base/jquery.ui.dialog.css", 58 | // "~/Content/themes/base/jquery.ui.slider.css", 59 | // "~/Content/themes/base/jquery.ui.tabs.css", 60 | // "~/Content/themes/base/jquery.ui.datepicker.css", 61 | // "~/Content/themes/base/jquery.ui.progressbar.css", 62 | // "~/Content/themes/base/jquery.ui.theme.css")) 63 | 64 | type Route = { controller : string; action : string; id : UrlParameter } 65 | type ApiRoute = { id : RouteParameter } 66 | 67 | type Global() = 68 | inherit System.Web.HttpApplication() 69 | 70 | let registerGlobalFilters (filters:GlobalFilterCollection) = 71 | filters.Add(new HandleErrorAttribute()) 72 | 73 | let registerRoutes (routes:RouteCollection) = 74 | routes.IgnoreRoute("{resource}.axd/{*pathInfo}") 75 | routes.MapHttpRoute("DefaultApi", "api/{controller}/{id}", { id = RouteParameter.Optional } ) |> ignore 76 | routes.MapRoute("Default", "{controller}/{action}/{id}", { controller = "Home"; action = "Index"; id = UrlParameter.Optional } ) |> ignore 77 | 78 | static member EventStore = lazy( 79 | let endPoint = new System.Net.IPEndPoint(System.Net.IPAddress.Parse("127.0.0.1"), 1113) 80 | EventStore.conn endPoint) 81 | 82 | member this.Start() = 83 | AreaRegistration.RegisterAllAreas() 84 | registerRoutes RouteTable.Routes 85 | registerGlobalFilters GlobalFilters.Filters 86 | BundleConfig.RegisterBundles BundleTable.Bundles 87 | () 88 | -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Content/Site.css: -------------------------------------------------------------------------------- 1 | html { 2 | background-color: #e2e2e2; 3 | margin: 0; 4 | padding: 0; 5 | } 6 | 7 | body { 8 | background-color: #fff; 9 | border-top: solid 10px #000; 10 | color: #333; 11 | font-family: "Segoe UI", Verdana, Helvetica, Sans-Serif; 12 | margin: 0; 13 | padding: 0; 14 | } 15 | 16 | /* info and errors */ 17 | .message-info { 18 | border: 1px solid; 19 | clear: both; 20 | padding: 10px 20px; 21 | } 22 | 23 | .message-error { 24 | clear: both; 25 | color: #e80c4d; 26 | font-size: 1.1em; 27 | font-weight: bold; 28 | margin: 20px 0 10px 0; 29 | } 30 | 31 | .message-success { 32 | color: #7ac0da; 33 | font-size: 1.3em; 34 | font-weight: bold; 35 | margin: 20px 0 10px 0; 36 | } 37 | 38 | .error { 39 | color: #e80c4d; 40 | } 41 | 42 | /* styles for validation helpers */ 43 | .field-validation-error { 44 | color: #e80c4d; 45 | font-weight: bold; 46 | } 47 | 48 | .error { 49 | padding-bottom:5px; 50 | } 51 | 52 | .field-validation-valid { 53 | display: none; 54 | } 55 | 56 | input[type="text"].input-validation-error, 57 | input[type="password"].input-validation-error { 58 | border: 1px solid #e80c4d; 59 | } 60 | 61 | .validation-summary-errors { 62 | color: #e80c4d; 63 | font-weight: bold; 64 | font-size: 1.1em; 65 | } 66 | 67 | .validation-summary-valid { 68 | display: none; 69 | } 70 | 71 | .row { 72 | padding: 4px; 73 | } 74 | 75 | .header { 76 | color:#2BA6CB; 77 | font-size:large; 78 | } -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Content/images/glyphicons-halflings-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Content/images/glyphicons-halflings-white.png -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Content/images/glyphicons-halflings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Content/images/glyphicons-halflings.png -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Content/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Content/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Content/themes/base/images/ui-bg_flat_75_ffffff_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Content/themes/base/images/ui-bg_flat_75_ffffff_40x100.png -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Content/themes/base/images/ui-bg_glass_55_fbf9ee_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Content/themes/base/images/ui-bg_glass_55_fbf9ee_1x400.png -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Content/themes/base/images/ui-bg_glass_65_ffffff_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Content/themes/base/images/ui-bg_glass_65_ffffff_1x400.png -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Content/themes/base/images/ui-bg_glass_75_dadada_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Content/themes/base/images/ui-bg_glass_75_dadada_1x400.png -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Content/themes/base/images/ui-bg_glass_75_e6e6e6_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Content/themes/base/images/ui-bg_glass_75_e6e6e6_1x400.png -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Content/themes/base/images/ui-bg_glass_95_fef1ec_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Content/themes/base/images/ui-bg_glass_95_fef1ec_1x400.png -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Content/themes/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Content/themes/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Content/themes/base/images/ui-icons_222222_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Content/themes/base/images/ui-icons_222222_256x240.png -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Content/themes/base/images/ui-icons_2e83ff_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Content/themes/base/images/ui-icons_2e83ff_256x240.png -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Content/themes/base/images/ui-icons_454545_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Content/themes/base/images/ui-icons_454545_256x240.png -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Content/themes/base/images/ui-icons_888888_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Content/themes/base/images/ui-icons_888888_256x240.png -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Content/themes/base/images/ui-icons_cd0a0a_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Content/themes/base/images/ui-icons_cd0a0a_256x240.png -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Content/themes/base/jquery.ui.accordion.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Note: While Microsoft is not the author of this file, Microsoft is 3 | * offering you a license subject to the terms of the Microsoft Software 4 | * License Terms for Microsoft ASP.NET Model View Controller 4 Developer Preview. 5 | * Microsoft reserves all other rights. The notices below are provided 6 | * for informational purposes only and are not the license terms under 7 | * which Microsoft distributed this file. 8 | * 9 | * jQuery UI Accordion 1.8.11 10 | * 11 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) 12 | * 13 | * http://docs.jquery.com/UI/Accordion#theming 14 | */ 15 | /* IE/Win - Fix animation bug - #4615 */ 16 | .ui-accordion { width: 100%; } 17 | .ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; } 18 | .ui-accordion .ui-accordion-li-fix { display: inline; } 19 | .ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; } 20 | .ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; } 21 | .ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; } 22 | .ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; } 23 | .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; } 24 | .ui-accordion .ui-accordion-content-active { display: block; } 25 | -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Content/themes/base/jquery.ui.all.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Note: While Microsoft is not the author of this file, Microsoft is 3 | * offering you a license subject to the terms of the Microsoft Software 4 | * License Terms for Microsoft ASP.NET Model View Controller 4 Developer Preview. 5 | * Microsoft reserves all other rights. The notices below are provided 6 | * for informational purposes only and are not the license terms under 7 | * which Microsoft distributed this file. 8 | * 9 | * jQuery UI CSS Framework 1.8.11 10 | * 11 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) 12 | * 13 | * http://docs.jquery.com/UI/Theming 14 | */ 15 | @import "jquery.ui.base.css"; 16 | @import "jquery.ui.theme.css"; 17 | -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Content/themes/base/jquery.ui.autocomplete.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Note: While Microsoft is not the author of this file, Microsoft is 3 | * offering you a license subject to the terms of the Microsoft Software 4 | * License Terms for Microsoft ASP.NET Model View Controller 4 Developer Preview. 5 | * Microsoft reserves all other rights. The notices below are provided 6 | * for informational purposes only and are not the license terms under 7 | * which Microsoft distributed this file. 8 | * 9 | * jQuery UI Autocomplete 1.8.11 10 | * 11 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) 12 | * http://docs.jquery.com/UI/Autocomplete#theming 13 | */ 14 | .ui-autocomplete { position: absolute; cursor: default; } 15 | 16 | /* workarounds */ 17 | * html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */ 18 | 19 | /* 20 | * Note: While Microsoft is not the author of this file, Microsoft is 21 | * offering you a license subject to the terms of the Microsoft Software 22 | * License Terms for Microsoft ASP.NET Model View Controller 4 Developer Preview. 23 | * Microsoft reserves all other rights. The notices below are provided 24 | * for informational purposes only and are not the license terms under 25 | * which Microsoft distributed this file. 26 | * 27 | * jQuery UI Menu 1.8.11 28 | * 29 | * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) 30 | * 31 | * http://docs.jquery.com/UI/Menu#theming 32 | */ 33 | .ui-menu { 34 | list-style:none; 35 | padding: 2px; 36 | margin: 0; 37 | display:block; 38 | float: left; 39 | } 40 | .ui-menu .ui-menu { 41 | margin-top: -3px; 42 | } 43 | .ui-menu .ui-menu-item { 44 | margin:0; 45 | padding: 0; 46 | zoom: 1; 47 | float: left; 48 | clear: left; 49 | width: 100%; 50 | } 51 | .ui-menu .ui-menu-item a { 52 | text-decoration:none; 53 | display:block; 54 | padding:.2em .4em; 55 | line-height:1.5; 56 | zoom:1; 57 | } 58 | .ui-menu .ui-menu-item a.ui-state-hover, 59 | .ui-menu .ui-menu-item a.ui-state-active { 60 | font-weight: normal; 61 | margin: -1px; 62 | } 63 | -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Content/themes/base/jquery.ui.base.css: -------------------------------------------------------------------------------- 1 | @import url("jquery.ui.core.css"); 2 | @import url("jquery.ui.resizable.css"); 3 | @import url("jquery.ui.selectable.css"); 4 | @import url("jquery.ui.accordion.css"); 5 | @import url("jquery.ui.autocomplete.css"); 6 | @import url("jquery.ui.button.css"); 7 | @import url("jquery.ui.dialog.css"); 8 | @import url("jquery.ui.slider.css"); 9 | @import url("jquery.ui.tabs.css"); 10 | @import url("jquery.ui.datepicker.css"); 11 | @import url("jquery.ui.progressbar.css"); -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Content/themes/base/jquery.ui.button.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Note: While Microsoft is not the author of this file, Microsoft is 3 | * offering you a license subject to the terms of the Microsoft Software 4 | * License Terms for Microsoft ASP.NET Model View Controller 4 Developer Preview. 5 | * Microsoft reserves all other rights. The notices below are provided 6 | * for informational purposes only and are not the license terms under 7 | * which Microsoft distributed this file. 8 | * 9 | * jQuery UI Button 1.8.11 10 | * 11 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) 12 | * 13 | * http://docs.jquery.com/UI/Button#theming 14 | */ 15 | .ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */ 16 | .ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */ 17 | button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */ 18 | .ui-button-icons-only { width: 3.4em; } 19 | button.ui-button-icons-only { width: 3.7em; } 20 | 21 | /*button text element */ 22 | .ui-button .ui-button-text { display: block; line-height: 1.4; } 23 | .ui-button-text-only .ui-button-text { padding: .4em 1em; } 24 | .ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; } 25 | .ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; } 26 | .ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; } 27 | .ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; } 28 | /* no icon support for input elements, provide padding by default */ 29 | input.ui-button { padding: .4em 1em; } 30 | 31 | /*button icon element(s) */ 32 | .ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; } 33 | .ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; } 34 | .ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; } 35 | .ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } 36 | .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } 37 | 38 | /*button sets*/ 39 | .ui-buttonset { margin-right: 7px; } 40 | .ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; } 41 | 42 | /* workarounds */ 43 | button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */ 44 | -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Content/themes/base/jquery.ui.core.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Note: While Microsoft is not the author of this file, Microsoft is 3 | * offering you a license subject to the terms of the Microsoft Software 4 | * License Terms for Microsoft ASP.NET Model View Controller 4 Developer Preview. 5 | * Microsoft reserves all other rights. The notices below are provided 6 | * for informational purposes only and are not the license terms under 7 | * which Microsoft distributed this file. 8 | * 9 | * jQuery UI CSS Framework 1.8.11 10 | * 11 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) 12 | * 13 | * http://docs.jquery.com/UI/Theming/API 14 | */ 15 | 16 | /* Layout helpers 17 | ----------------------------------*/ 18 | .ui-helper-hidden { display: none; } 19 | .ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); } 20 | .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } 21 | .ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } 22 | .ui-helper-clearfix { display: inline-block; } 23 | /* required comment for clearfix to work in Opera \*/ 24 | * html .ui-helper-clearfix { height:1%; } 25 | .ui-helper-clearfix { display:block; } 26 | /* end clearfix */ 27 | .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } 28 | 29 | 30 | /* Interaction Cues 31 | ----------------------------------*/ 32 | .ui-state-disabled { cursor: default !important; } 33 | 34 | 35 | /* Icons 36 | ----------------------------------*/ 37 | 38 | /* states and images */ 39 | .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } 40 | 41 | 42 | /* Misc visuals 43 | ----------------------------------*/ 44 | 45 | /* Overlays */ 46 | .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } 47 | -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Content/themes/base/jquery.ui.datepicker.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Note: While Microsoft is not the author of this file, Microsoft is 3 | * offering you a license subject to the terms of the Microsoft Software 4 | * License Terms for Microsoft ASP.NET Model View Controller 4 Developer Preview. 5 | * Microsoft reserves all other rights. The notices below are provided 6 | * for informational purposes only and are not the license terms under 7 | * which Microsoft distributed this file. 8 | * 9 | * jQuery UI Datepicker 1.8.11 10 | * 11 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) 12 | * 13 | * http://docs.jquery.com/UI/Datepicker#theming 14 | */ 15 | .ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; } 16 | .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; } 17 | .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; } 18 | .ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; } 19 | .ui-datepicker .ui-datepicker-prev { left:2px; } 20 | .ui-datepicker .ui-datepicker-next { right:2px; } 21 | .ui-datepicker .ui-datepicker-prev-hover { left:1px; } 22 | .ui-datepicker .ui-datepicker-next-hover { right:1px; } 23 | .ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } 24 | .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } 25 | .ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; } 26 | .ui-datepicker select.ui-datepicker-month-year {width: 100%;} 27 | .ui-datepicker select.ui-datepicker-month, 28 | .ui-datepicker select.ui-datepicker-year { width: 49%;} 29 | .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; } 30 | .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } 31 | .ui-datepicker td { border: 0; padding: 1px; } 32 | .ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } 33 | .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } 34 | .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } 35 | .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; } 36 | 37 | /* with multiple calendars */ 38 | .ui-datepicker.ui-datepicker-multi { width:auto; } 39 | .ui-datepicker-multi .ui-datepicker-group { float:left; } 40 | .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; } 41 | .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; } 42 | .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; } 43 | .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; } 44 | .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } 45 | .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } 46 | .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } 47 | .ui-datepicker-row-break { clear:both; width:100%; } 48 | 49 | /* RTL support */ 50 | .ui-datepicker-rtl { direction: rtl; } 51 | .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } 52 | .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } 53 | .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } 54 | .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } 55 | .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; } 56 | .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } 57 | .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; } 58 | .ui-datepicker-rtl .ui-datepicker-group { float:right; } 59 | .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; } 60 | .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; } 61 | 62 | /* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ 63 | .ui-datepicker-cover { 64 | display: none; /*sorry for IE5*/ 65 | display/**/: block; /*sorry for IE5*/ 66 | position: absolute; /*must have*/ 67 | z-index: -1; /*must have*/ 68 | filter: mask(); /*must have*/ 69 | top: -4px; /*must have*/ 70 | left: -4px; /*must have*/ 71 | width: 200px; /*must have*/ 72 | height: 200px; /*must have*/ 73 | } -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Content/themes/base/jquery.ui.dialog.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Note: While Microsoft is not the author of this file, Microsoft is 3 | * offering you a license subject to the terms of the Microsoft Software 4 | * License Terms for Microsoft ASP.NET Model View Controller 4 Developer Preview. 5 | * Microsoft reserves all other rights. The notices below are provided 6 | * for informational purposes only and are not the license terms under 7 | * which Microsoft distributed this file. 8 | * 9 | * jQuery UI Dialog 1.8.11 10 | * 11 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) 12 | * 13 | * http://docs.jquery.com/UI/Dialog#theming 14 | */ 15 | .ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; } 16 | .ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; } 17 | .ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } 18 | .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; } 19 | .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; } 20 | .ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; } 21 | .ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } 22 | .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; } 23 | .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; } 24 | .ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; } 25 | .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } 26 | .ui-draggable .ui-dialog-titlebar { cursor: move; } 27 | -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Content/themes/base/jquery.ui.progressbar.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Note: While Microsoft is not the author of this file, Microsoft is 3 | * offering you a license subject to the terms of the Microsoft Software 4 | * License Terms for Microsoft ASP.NET Model View Controller 4 Developer Preview. 5 | * Microsoft reserves all other rights. The notices below are provided 6 | * for informational purposes only and are not the license terms under 7 | * which Microsoft distributed this file. 8 | * 9 | * jQuery UI Progressbar 1.8.11 10 | * 11 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) 12 | * 13 | * http://docs.jquery.com/UI/Progressbar#theming 14 | */ 15 | .ui-progressbar { height:2em; text-align: left; } 16 | .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; } -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Content/themes/base/jquery.ui.resizable.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Note: While Microsoft is not the author of this file, Microsoft is 3 | * offering you a license subject to the terms of the Microsoft Software 4 | * License Terms for Microsoft ASP.NET Model View Controller 4 Developer Preview. 5 | * Microsoft reserves all other rights. The notices below are provided 6 | * for informational purposes only and are not the license terms under 7 | * which Microsoft distributed this file. 8 | * 9 | * jQuery UI Resizable 1.8.11 10 | * 11 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)] 12 | * 13 | * http://docs.jquery.com/UI/Resizable#theming 14 | */ 15 | .ui-resizable { position: relative;} 16 | .ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;} 17 | .ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } 18 | .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; } 19 | .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; } 20 | .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; } 21 | .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; } 22 | .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; } 23 | .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } 24 | .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } 25 | .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;} -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Content/themes/base/jquery.ui.selectable.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Note: While Microsoft is not the author of this file, Microsoft is 3 | * offering you a license subject to the terms of the Microsoft Software 4 | * License Terms for Microsoft ASP.NET Model View Controller 4 Developer Preview. 5 | * Microsoft reserves all other rights. The notices below are provided 6 | * for informational purposes only and are not the license terms under 7 | * which Microsoft distributed this file. 8 | * 9 | * jQuery UI Selectable 1.8.11 10 | * 11 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) 12 | * 13 | * http://docs.jquery.com/UI/Selectable#theming 14 | */ 15 | .ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; } 16 | -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Content/themes/base/jquery.ui.slider.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Note: While Microsoft is not the author of this file, Microsoft is 3 | * offering you a license subject to the terms of the Microsoft Software 4 | * License Terms for Microsoft ASP.NET Model View Controller 4 Developer Preview. 5 | * Microsoft reserves all other rights. The notices below are provided 6 | * for informational purposes only and are not the license terms under 7 | * which Microsoft distributed this file. 8 | * 9 | * jQuery UI Slider 1.8.11 10 | * 11 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) 12 | * 13 | * http://docs.jquery.com/UI/Slider#theming 14 | */ 15 | .ui-slider { position: relative; text-align: left; } 16 | .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; } 17 | .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; } 18 | 19 | .ui-slider-horizontal { height: .8em; } 20 | .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } 21 | .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } 22 | .ui-slider-horizontal .ui-slider-range-min { left: 0; } 23 | .ui-slider-horizontal .ui-slider-range-max { right: 0; } 24 | 25 | .ui-slider-vertical { width: .8em; height: 100px; } 26 | .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } 27 | .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } 28 | .ui-slider-vertical .ui-slider-range-min { bottom: 0; } 29 | .ui-slider-vertical .ui-slider-range-max { top: 0; } -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Content/themes/base/jquery.ui.tabs.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Note: While Microsoft is not the author of this file, Microsoft is 3 | * offering you a license subject to the terms of the Microsoft Software 4 | * License Terms for Microsoft ASP.NET Model View Controller 4 Developer Preview. 5 | * Microsoft reserves all other rights. The notices below are provided 6 | * for informational purposes only and are not the license terms under 7 | * which Microsoft distributed this file. 8 | * 9 | * jQuery UI Tabs 1.8.11 10 | * 11 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) 12 | * 13 | * http://docs.jquery.com/UI/Tabs#theming 14 | */ 15 | .ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ 16 | .ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; } 17 | .ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; } 18 | .ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; } 19 | .ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; } 20 | .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; } 21 | .ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ 22 | .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; } 23 | .ui-tabs .ui-tabs-hide { display: none !important; } 24 | -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Content/toastr-responsive.css: -------------------------------------------------------------------------------- 1 | @media all and (max-width: 240px) { 2 | #toast-container > div { 3 | padding: 8px 8px 8px 50px; 4 | width: 108px; 5 | } 6 | } 7 | @media all and (min-width: 241px) and (max-width: 320px) { 8 | #toast-container > div { 9 | padding: 8px 8px 8px 50px; 10 | width: 128px; 11 | } 12 | } 13 | @media all and (min-width: 321px) and (max-width: 480px) { 14 | #toast-container > div { 15 | padding: 8px 8px 8px 50px; 16 | width: 192px; 17 | } 18 | } 19 | @media all and (min-width: 481px) and (max-width: 768px) { 20 | #toast-container > div { 21 | padding: 15px 15px 15px 50px; 22 | width: 300px; 23 | } 24 | } 25 | @media all and (min-width: 769px) { 26 | #toast-container > div { 27 | padding: 15px 15px 15px 50px; 28 | width: 300px; 29 | } 30 | } -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Content/toastr.css: -------------------------------------------------------------------------------- 1 | .toast-title { 2 | font-weight: bold; 3 | } 4 | .toast-message { 5 | } 6 | 7 | .toast-message a, 8 | .toast-message label{ 9 | color: #FFF; 10 | } 11 | .toast-message a:hover { 12 | color: #CCC; 13 | text-decoration: none; 14 | } 15 | 16 | .toast-top-left { 17 | top: 12px; 18 | left: 12px; 19 | } 20 | 21 | .toast-bottom-right { 22 | right: 12px; 23 | bottom: 12px; 24 | } 25 | 26 | .toast-bottom-left { 27 | left: 12px; 28 | bottom: 12px; 29 | } 30 | 31 | #toast-container { 32 | position: fixed; 33 | z-index: 9999; 34 | } 35 | 36 | #toast-container > div { 37 | background-position: 15px center; 38 | background-repeat: no-repeat; 39 | -moz-border-radius: 3px 3px 3px 3px; 40 | -webkit-border-radius: 3px 3px 3px 3px; 41 | border-radius: 3px 3px 3px 3px; 42 | -moz-box-shadow: 0 0 12px #999999; 43 | -webkit-box-shadow: 0 0 12px #999999; 44 | -o-box-shadow: 0 0 12px #999999; 45 | box-shadow: 0 0 12px #999999; 46 | color: #FFFFFF; 47 | margin: 0 0 6px; 48 | filter: alpha(opacity=80); 49 | -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; 50 | opacity: 0.8; 51 | padding: 15px 15px 15px 50px; 52 | width: 300px; 53 | } 54 | 55 | .toast { 56 | background-color: #030303; 57 | } 58 | 59 | .toast-success{ 60 | background-color: #51A351; 61 | } 62 | 63 | .toast-error{ 64 | background-color: #BD362F; 65 | } 66 | 67 | .toast-info{ 68 | background-color: #2F96B4; 69 | } 70 | 71 | .toast-warning{ 72 | background-color: #F89406; 73 | } 74 | .toast-top-right { 75 | top: 12px; 76 | right: 12px; 77 | } 78 | 79 | #toast-container > :hover { 80 | -moz-box-shadow: 0 0 12px #000000; 81 | -webkit-box-shadow: 0 0 12px #000000; 82 | -o-box-shadow: 0 0 12px #000000; 83 | box-shadow: 0 0 12px #000000; 84 | filter: alpha(opacity=100); 85 | -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; 86 | opacity: 1; 87 | cursor: pointer; 88 | } 89 | 90 | #toast-container > .toast-info { 91 | background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=") !important; 92 | } 93 | 94 | #toast-container > .toast-error { 95 | background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=") !important; 96 | } 97 | 98 | #toast-container > .toast-success { 99 | background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==") !important; 100 | } 101 | 102 | #toast-container > .toast-warning { 103 | background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=") !important; 104 | } 105 | -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Global.asax: -------------------------------------------------------------------------------- 1 | <%@ Application Inherits="DDDInventoryItemFSharp.Web.Global" Language="C#" %> 2 | -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Images/NuGetGallery.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Images/NuGetGallery.png -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Images/accent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Images/accent.png -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Images/aspNetHome.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Images/aspNetHome.png -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Images/bullet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Images/bullet.png -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Images/facebook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Images/facebook.png -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Images/findHosting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Images/findHosting.png -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Images/heroAccent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Images/heroAccent.png -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Images/orderedList0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Images/orderedList0.png -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Images/orderedList1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Images/orderedList1.png -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Images/orderedList2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Images/orderedList2.png -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Images/orderedList3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Images/orderedList3.png -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Images/orderedList4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Images/orderedList4.png -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Images/orderedList5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Images/orderedList5.png -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Images/orderedList6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Images/orderedList6.png -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Images/orderedList7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Images/orderedList7.png -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Images/orderedList8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Images/orderedList8.png -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Images/orderedList9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Images/orderedList9.png -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Images/twitter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Images/twitter.png -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Images/windowsLive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Images/windowsLive.png -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("SpaRazor")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("Deloitte")] 12 | [assembly: AssemblyProduct("SpaRazor")] 13 | [assembly: AssemblyCopyright("Copyright © Deloitte 2012")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("459f4cd9-471f-49f4-85dd-9eae9e67e10c")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Revision and Build Numbers 33 | // by using the '*' as shown below: 34 | [assembly: AssemblyVersion("1.0.0.0")] 35 | [assembly: AssemblyFileVersion("1.0.0.0")] 36 | -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Scripts/_references.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Scripts/_references.js -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Scripts/app/main.js: -------------------------------------------------------------------------------- 1 | window.appFsMvc = {}; -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Scripts/app/router.js: -------------------------------------------------------------------------------- 1 | (function ($) { 2 | appFsMvc.App = function(inventoryItemsViewModel) { 3 | return $.sammy("#content", function () { 4 | var self = this; 5 | 6 | this.use(Sammy.Cache); 7 | this.inventoryItemsViewModel = inventoryItemsViewModel; 8 | 9 | this.renderTemplate = function (html) { 10 | self.$element().html(html); 11 | ko.applyBindings(self.inventoryItemsViewModel); 12 | }; 13 | 14 | this.get("#/", function () { 15 | this.render("/Templates/inventoryItemOverview.htm", {}, self.renderTemplate); 16 | }); 17 | 18 | this.get("#/create", function () { 19 | this.render("/Templates/inventoryItemCreate.htm", {}, function (html) { 20 | self.renderTemplate(html); 21 | }); 22 | }); 23 | }); 24 | }; 25 | 26 | $(function () { 27 | $.getJSON("/api/inventoryItems", function (item) { 28 | var viewModel = new appFsMvc.ViewModels.InventoryItemsViewModel([item]); 29 | appFsMvc.App(viewModel).run("#/"); 30 | }); 31 | }); 32 | })(jQuery); 33 | 34 | -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Scripts/app/utility.js: -------------------------------------------------------------------------------- 1 | (function ( mod, $ ) { 2 | mod.buildTemplateUrl = function ( templateFileName ) { 3 | return "/Templates/" + templateFileName; 4 | }; 5 | 6 | mod.renderTemplate = function ( templateFileName, $el, data ) { 7 | data = data || { }; 8 | mod.getHtmlFromTemplate( templateFileName, function ( html ) { 9 | $el.empty().append( _.template( html, data ) ); 10 | }); 11 | }; 12 | 13 | mod.getHtmlFromTemplate = function ( templateFileName, callback ) { 14 | $.get( mod.buildTemplateUrl( templateFileName ), function ( template ) { 15 | callback( template ); 16 | }); 17 | }; 18 | 19 | mod.serializeObject = function ( selector ) { 20 | var result = {}; 21 | var serializedArray = $( selector ).serializeArray( { checkboxesAsBools: true } ); 22 | $.each(serializedArray, function () { 23 | if ( result[this.name] ) { 24 | if ( !result[this.name].push ) { 25 | result[this.name] = [result[this.name]]; 26 | } 27 | result[this.name].push( this.value || "" ); 28 | } else { 29 | result[this.name] = this.value || ""; 30 | } 31 | }); 32 | return result; 33 | }; 34 | 35 | mod.getBaseUrl = function () { 36 | var pathArray = window.location.href.split( '/' ); 37 | var baseUrl = pathArray[0] + "//" + pathArray[1] + pathArray[2]; 38 | if (baseUrl.substr( baseUrl.length - 1) !== "/" ) { 39 | baseUrl += "/"; 40 | } 41 | return baseUrl; 42 | }; 43 | 44 | })( window.appFsMvc.utility = window.appFsMvc.utility || {}, jQuery ); -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Scripts/jquery.unobtrusive-ajax.js: -------------------------------------------------------------------------------- 1 | /*! 2 | ** Unobtrusive Ajax support library for jQuery 3 | ** Copyright (C) Microsoft Corporation. All rights reserved. 4 | */ 5 | 6 | /*jslint white: true, browser: true, onevar: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, newcap: true, immed: true, strict: false */ 7 | /*global window: false, jQuery: false */ 8 | 9 | (function ($) { 10 | var data_click = "unobtrusiveAjaxClick", 11 | data_validation = "unobtrusiveValidation"; 12 | 13 | function getFunction(code, argNames) { 14 | var fn = window, parts = (code || "").split("."); 15 | while (fn && parts.length) { 16 | fn = fn[parts.shift()]; 17 | } 18 | if (typeof (fn) === "function") { 19 | return fn; 20 | } 21 | argNames.push(code); 22 | return Function.constructor.apply(null, argNames); 23 | } 24 | 25 | function isMethodProxySafe(method) { 26 | return method === "GET" || method === "POST"; 27 | } 28 | 29 | function asyncOnBeforeSend(xhr, method) { 30 | if (!isMethodProxySafe(method)) { 31 | xhr.setRequestHeader("X-HTTP-Method-Override", method); 32 | } 33 | } 34 | 35 | function asyncOnSuccess(element, data, contentType) { 36 | var mode; 37 | 38 | if (contentType.indexOf("application/x-javascript") !== -1) { // jQuery already executes JavaScript for us 39 | return; 40 | } 41 | 42 | mode = (element.getAttribute("data-ajax-mode") || "").toUpperCase(); 43 | $(element.getAttribute("data-ajax-update")).each(function (i, update) { 44 | var top; 45 | 46 | switch (mode) { 47 | case "BEFORE": 48 | top = update.firstChild; 49 | $("
").html(data).contents().each(function () { 50 | update.insertBefore(this, top); 51 | }); 52 | break; 53 | case "AFTER": 54 | $("
").html(data).contents().each(function () { 55 | update.appendChild(this); 56 | }); 57 | break; 58 | default: 59 | $(update).html(data); 60 | break; 61 | } 62 | }); 63 | } 64 | 65 | function asyncRequest(element, options) { 66 | var confirm, loading, method, duration; 67 | 68 | confirm = element.getAttribute("data-ajax-confirm"); 69 | if (confirm && !window.confirm(confirm)) { 70 | return; 71 | } 72 | 73 | loading = $(element.getAttribute("data-ajax-loading")); 74 | duration = element.getAttribute("data-ajax-loading-duration") || 0; 75 | 76 | $.extend(options, { 77 | type: element.getAttribute("data-ajax-method") || undefined, 78 | url: element.getAttribute("data-ajax-url") || undefined, 79 | beforeSend: function (xhr) { 80 | var result; 81 | asyncOnBeforeSend(xhr, method); 82 | result = getFunction(element.getAttribute("data-ajax-begin"), ["xhr"]).apply(this, arguments); 83 | if (result !== false) { 84 | loading.show(duration); 85 | } 86 | return result; 87 | }, 88 | complete: function () { 89 | loading.hide(duration); 90 | getFunction(element.getAttribute("data-ajax-complete"), ["xhr", "status"]).apply(this, arguments); 91 | }, 92 | success: function (data, status, xhr) { 93 | asyncOnSuccess(element, data, xhr.getResponseHeader("Content-Type") || "text/html"); 94 | getFunction(element.getAttribute("data-ajax-success"), ["data", "status", "xhr"]).apply(this, arguments); 95 | }, 96 | error: getFunction(element.getAttribute("data-ajax-failure"), ["xhr", "status", "error"]) 97 | }); 98 | 99 | options.data.push({ name: "X-Requested-With", value: "XMLHttpRequest" }); 100 | 101 | method = options.type.toUpperCase(); 102 | if (!isMethodProxySafe(method)) { 103 | options.type = "POST"; 104 | options.data.push({ name: "X-HTTP-Method-Override", value: method }); 105 | } 106 | 107 | $.ajax(options); 108 | } 109 | 110 | function validate(form) { 111 | var validationInfo = $(form).data(data_validation); 112 | return !validationInfo || !validationInfo.validate || validationInfo.validate(); 113 | } 114 | 115 | $("a[data-ajax=true]").live("click", function (evt) { 116 | evt.preventDefault(); 117 | asyncRequest(this, { 118 | url: this.href, 119 | type: "GET", 120 | data: [] 121 | }); 122 | }); 123 | 124 | $("form[data-ajax=true] input[type=image]").live("click", function (evt) { 125 | var name = evt.target.name, 126 | $target = $(evt.target), 127 | form = $target.parents("form")[0], 128 | offset = $target.offset(); 129 | 130 | $(form).data(data_click, [ 131 | { name: name + ".x", value: Math.round(evt.pageX - offset.left) }, 132 | { name: name + ".y", value: Math.round(evt.pageY - offset.top) } 133 | ]); 134 | 135 | setTimeout(function () { 136 | $(form).removeData(data_click); 137 | }, 0); 138 | }); 139 | 140 | $("form[data-ajax=true] :submit").live("click", function (evt) { 141 | var name = evt.target.name, 142 | form = $(evt.target).parents("form")[0]; 143 | 144 | $(form).data(data_click, name ? [{ name: name, value: evt.target.value }] : []); 145 | 146 | setTimeout(function () { 147 | $(form).removeData(data_click); 148 | }, 0); 149 | }); 150 | 151 | $("form[data-ajax=true]").live("submit", function (evt) { 152 | var clickInfo = $(this).data(data_click) || []; 153 | evt.preventDefault(); 154 | if (!validate(this)) { 155 | return; 156 | } 157 | asyncRequest(this, { 158 | url: this.action, 159 | type: this.method || "GET", 160 | data: clickInfo.concat($(this).serializeArray()) 161 | }); 162 | }); 163 | }(jQuery)); -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Scripts/jquery.unobtrusive-ajax.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | ** Unobtrusive Ajax support library for jQuery 3 | ** Copyright (C) Microsoft Corporation. All rights reserved. 4 | */ 5 | (function(a){var b="unobtrusiveAjaxClick",g="unobtrusiveValidation";function c(d,b){var a=window,c=(d||"").split(".");while(a&&c.length)a=a[c.shift()];if(typeof a==="function")return a;b.push(d);return Function.constructor.apply(null,b)}function d(a){return a==="GET"||a==="POST"}function f(b,a){!d(a)&&b.setRequestHeader("X-HTTP-Method-Override",a)}function h(c,b,e){var d;if(e.indexOf("application/x-javascript")!==-1)return;d=(c.getAttribute("data-ajax-mode")||"").toUpperCase();a(c.getAttribute("data-ajax-update")).each(function(f,c){var e;switch(d){case"BEFORE":e=c.firstChild;a("
").html(b).contents().each(function(){c.insertBefore(this,e)});break;case"AFTER":a("
").html(b).contents().each(function(){c.appendChild(this)});break;default:a(c).html(b)}})}function e(b,e){var j,k,g,i;j=b.getAttribute("data-ajax-confirm");if(j&&!window.confirm(j))return;k=a(b.getAttribute("data-ajax-loading"));i=b.getAttribute("data-ajax-loading-duration")||0;a.extend(e,{type:b.getAttribute("data-ajax-method")||undefined,url:b.getAttribute("data-ajax-url")||undefined,beforeSend:function(d){var a;f(d,g);a=c(b.getAttribute("data-ajax-begin"),["xhr"]).apply(this,arguments);a!==false&&k.show(i);return a},complete:function(){k.hide(i);c(b.getAttribute("data-ajax-complete"),["xhr","status"]).apply(this,arguments)},success:function(a,e,d){h(b,a,d.getResponseHeader("Content-Type")||"text/html");c(b.getAttribute("data-ajax-success"),["data","status","xhr"]).apply(this,arguments)},error:c(b.getAttribute("data-ajax-failure"),["xhr","status","error"])});e.data.push({name:"X-Requested-With",value:"XMLHttpRequest"});g=e.type.toUpperCase();if(!d(g)){e.type="POST";e.data.push({name:"X-HTTP-Method-Override",value:g})}a.ajax(e)}function i(c){var b=a(c).data(g);return!b||!b.validate||b.validate()}a("a[data-ajax=true]").live("click",function(a){a.preventDefault();e(this,{url:this.href,type:"GET",data:[]})});a("form[data-ajax=true] input[type=image]").live("click",function(c){var g=c.target.name,d=a(c.target),f=d.parents("form")[0],e=d.offset();a(f).data(b,[{name:g+".x",value:Math.round(c.pageX-e.left)},{name:g+".y",value:Math.round(c.pageY-e.top)}]);setTimeout(function(){a(f).removeData(b)},0)});a("form[data-ajax=true] :submit").live("click",function(c){var e=c.target.name,d=a(c.target).parents("form")[0];a(d).data(b,e?[{name:e,value:c.target.value}]:[]);setTimeout(function(){a(d).removeData(b)},0)});a("form[data-ajax=true]").live("submit",function(d){var c=a(this).data(b)||[];d.preventDefault();if(!i(this))return;e(this,{url:this.action,type:this.method||"GET",data:c.concat(a(this).serializeArray())})})})(jQuery); -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Scripts/jquery.validate.unobtrusive.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | ** Unobtrusive validation support library for jQuery and jQuery Validate 3 | ** Copyright (C) Microsoft Corporation. All rights reserved. 4 | */ 5 | (function(a){var d=a.validator,b,e="unobtrusiveValidation";function c(a,b,c){a.rules[b]=c;if(a.message)a.messages[b]=a.message}function j(a){return a.replace(/^\s+|\s+$/g,"").split(/\s*,\s*/g)}function f(a){return a.replace(/([!"#$%&'()*+,./:;<=>?@\[\\\]^`{|}~])/g,"\\$1")}function h(a){return a.substr(0,a.lastIndexOf(".")+1)}function g(a,b){if(a.indexOf("*.")===0)a=a.replace("*.",b);return a}function m(c,d){var b=a(this).find("[data-valmsg-for='"+f(d[0].name)+"']"),e=a.parseJSON(b.attr("data-valmsg-replace"))!==false;b.removeClass("field-validation-valid").addClass("field-validation-error");c.data("unobtrusiveContainer",b);if(e){b.empty();c.removeClass("input-validation-error").appendTo(b)}else c.hide()}function l(e,d){var c=a(this).find("[data-valmsg-summary=true]"),b=c.find("ul");if(b&&b.length&&d.errorList.length){b.empty();c.addClass("validation-summary-errors").removeClass("validation-summary-valid");a.each(d.errorList,function(){a("
  • ").html(this.message).appendTo(b)})}}function k(c){var b=c.data("unobtrusiveContainer"),d=a.parseJSON(b.attr("data-valmsg-replace"));if(b){b.addClass("field-validation-valid").removeClass("field-validation-error");c.removeData("unobtrusiveContainer");d&&b.empty()}}function n(){var b=a(this);b.data("validator").resetForm();b.find(".validation-summary-errors").addClass("validation-summary-valid").removeClass("validation-summary-errors");b.find(".field-validation-error").addClass("field-validation-valid").removeClass("field-validation-error").removeData("unobtrusiveContainer").find(">*").removeData("unobtrusiveContainer")}function i(c){var b=a(c),d=b.data(e),f=a.proxy(n,c);if(!d){d={options:{errorClass:"input-validation-error",errorElement:"span",errorPlacement:a.proxy(m,c),invalidHandler:a.proxy(l,c),messages:{},rules:{},success:a.proxy(k,c)},attachValidation:function(){b.unbind("reset."+e,f).bind("reset."+e,f).validate(this.options)},validate:function(){b.validate();return b.valid()}};b.data(e,d)}return d}d.unobtrusive={adapters:[],parseElement:function(b,h){var d=a(b),f=d.parents("form")[0],c,e,g;if(!f)return;c=i(f);c.options.rules[b.name]=e={};c.options.messages[b.name]=g={};a.each(this.adapters,function(){var c="data-val-"+this.name,i=d.attr(c),h={};if(i!==undefined){c+="-";a.each(this.params,function(){h[this]=d.attr(c+this)});this.adapt({element:b,form:f,message:i,params:h,rules:e,messages:g})}});a.extend(e,{__dummy__:true});!h&&c.attachValidation()},parse:function(b){var c=a(b).parents("form").andSelf().add(a(b).find("form")).filter("form");a(b).find(":input[data-val=true]").each(function(){d.unobtrusive.parseElement(this,true)});c.each(function(){var a=i(this);a&&a.attachValidation()})}};b=d.unobtrusive.adapters;b.add=function(c,a,b){if(!b){b=a;a=[]}this.push({name:c,params:a,adapt:b});return this};b.addBool=function(a,b){return this.add(a,function(d){c(d,b||a,true)})};b.addMinMax=function(e,g,f,a,d,b){return this.add(e,[d||"min",b||"max"],function(b){var e=b.params.min,d=b.params.max;if(e&&d)c(b,a,[e,d]);else if(e)c(b,g,e);else d&&c(b,f,d)})};b.addSingleVal=function(a,b,d){return this.add(a,[b||"val"],function(e){c(e,d||a,e.params[b])})};d.addMethod("__dummy__",function(){return true});d.addMethod("regex",function(b,c,d){var a;if(this.optional(c))return true;a=(new RegExp(d)).exec(b);return a&&a.index===0&&a[0].length===b.length});b.addSingleVal("accept","exts").addSingleVal("regex","pattern");b.addBool("creditcard").addBool("date").addBool("digits").addBool("email").addBool("number").addBool("url");b.addMinMax("length","minlength","maxlength","rangelength").addMinMax("range","min","max","range");b.add("equalto",["other"],function(b){var i=h(b.element.name),j=b.params.other,d=g(j,i),e=a(b.form).find(":input[name='"+f(d)+"']")[0];c(b,"equalTo",e)});b.add("required",function(a){(a.element.tagName.toUpperCase()!=="INPUT"||a.element.type.toUpperCase()!=="CHECKBOX")&&c(a,"required",true)});b.add("remote",["url","type","additionalfields"],function(b){var d={url:b.params.url,type:b.params.type||"GET",data:{}},e=h(b.element.name);a.each(j(b.params.additionalfields||b.element.name),function(i,h){var c=g(h,e);d.data[c]=function(){return a(b.form).find(":input[name='"+f(c)+"']").val()}});c(b,"remote",d)});a(function(){d.unobtrusive.parse(document)})})(jQuery); -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Scripts/toastr.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Scripts/toastr.js -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Scripts/viewModels/inventoryItemsViewModel.js: -------------------------------------------------------------------------------- 1 | (function (viewModel, $) { 2 | viewModel.InventoryItemsViewModel = function (items) { 3 | var self = this; 4 | self.items = ko.observableArray(items); 5 | self.addInventoryItem = function () { 6 | var item = appFsMvc.utility.serializeObject($("#inventoryItemForm")); 7 | $.ajax({ 8 | url: "/api/inventoryItems", 9 | data: JSON.stringify(item), 10 | type: "POST", 11 | dataType: "json", 12 | contentType: "application/json" 13 | }) 14 | .done(function (r) { 15 | toastr.success("You have successfully created a new inventory item!", "Success!"); 16 | //self.items.push(item); 17 | window.location.href = "#/"; 18 | }) 19 | .fail(function () { 20 | toastr.error("There was an error creating your new inventory item", ""); 21 | }); 22 | }; 23 | }; 24 | })(appFsMvc.ViewModels = appFsMvc.ViewModels || {}, jQuery); -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Templates/inventoryItemCreate.htm: -------------------------------------------------------------------------------- 1 | 
    2 |

    Add New Inventory Item

    3 |
    4 |
    5 | 6 |
    7 | 8 |
    9 |
    10 |
    11 |
    12 | 13 |
    14 |
    15 |
    16 |
    17 | -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Templates/inventoryItemOverview.htm: -------------------------------------------------------------------------------- 1 | 
    2 |
    3 |
    4 |
    5 |

    6 | Create Inventory Item 7 |

    8 |

    Items

    9 |
    10 |

    11 | Name: 12 | 13 |

    14 |

    15 | Count: 16 | 17 |

    18 |
    19 |
    20 |
    -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Views/Home/Index.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "~/Views/Shared/_Layout.cshtml"; 3 | } 4 |
    -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Views/Shared/Error.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = null; 3 | } 4 | 5 | 6 | 7 | 8 | 9 | Error 10 | 11 | 12 |

    13 | Sorry, an error occurred while processing your request. 14 |

    15 | 16 | -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Views/Shared/_Layout.cshtml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | @ViewBag.Title 7 | 8 | 9 | @Scripts.Render("~/bundles/modernizr") 10 | 11 | 12 | @RenderBody() 13 | @Scripts.Render("~/bundles/jquery") 14 | @Scripts.Render("~/bundles/extLibs", "~/bundles/sammy", "~/bundles/localApp") 15 | @RenderSection("scripts", required: false) 16 | 17 | 18 | -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Views/Web.config: -------------------------------------------------------------------------------- 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 | 41 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Views/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "~/Views/Shared/_Layout.cshtml"; 3 | } -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Web.Debug.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 17 | 18 | 29 | 30 | -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Web.Release.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 17 | 18 | 19 | 30 | 31 | -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/Web.config: -------------------------------------------------------------------------------- 1 |  2 | 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 | 58 | 59 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/favicon.ico -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.Web/DDDInventoryItemFSharp.WebWebSpa/packages.config: -------------------------------------------------------------------------------- 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 | -------------------------------------------------------------------------------- /DDDInventoryItemFSharp.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 2013 4 | VisualStudioVersion = 12.0.21005.1 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "DDDInventoryItemFSharp", "DDDInventoryItemFSharp\DDDInventoryItemFSharp.fsproj", "{4198FAD2-A8B5-491F-A2B3-6B719C27BF5D}" 7 | EndProject 8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DDDInventoryItemFSharp.Web.UI", "DDDInventoryItemFSharp.Web\DDDInventoryItemFSharp.WebWebSpa\DDDInventoryItemFSharp.Web.UI.csproj", "{7EE3A9F8-817B-4371-BF48-12FA68010CE9}" 9 | EndProject 10 | Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "DDDInventoryItemFSharp.Web", "DDDInventoryItemFSharp.Web\DDDInventoryItemFSharp.WebWebAppSpa\DDDInventoryItemFSharp.Web.fsproj", "{A999575F-C66E-42BF-A70F-655D4C3F0069}" 11 | EndProject 12 | Global 13 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 14 | Debug|Any CPU = Debug|Any CPU 15 | Release|Any CPU = Release|Any CPU 16 | EndGlobalSection 17 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 18 | {4198FAD2-A8B5-491F-A2B3-6B719C27BF5D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 19 | {4198FAD2-A8B5-491F-A2B3-6B719C27BF5D}.Debug|Any CPU.Build.0 = Debug|Any CPU 20 | {4198FAD2-A8B5-491F-A2B3-6B719C27BF5D}.Release|Any CPU.ActiveCfg = Release|Any CPU 21 | {4198FAD2-A8B5-491F-A2B3-6B719C27BF5D}.Release|Any CPU.Build.0 = Release|Any CPU 22 | {7EE3A9F8-817B-4371-BF48-12FA68010CE9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 23 | {7EE3A9F8-817B-4371-BF48-12FA68010CE9}.Debug|Any CPU.Build.0 = Debug|Any CPU 24 | {7EE3A9F8-817B-4371-BF48-12FA68010CE9}.Release|Any CPU.ActiveCfg = Release|Any CPU 25 | {7EE3A9F8-817B-4371-BF48-12FA68010CE9}.Release|Any CPU.Build.0 = Release|Any CPU 26 | {A999575F-C66E-42BF-A70F-655D4C3F0069}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 27 | {A999575F-C66E-42BF-A70F-655D4C3F0069}.Debug|Any CPU.Build.0 = Debug|Any CPU 28 | {A999575F-C66E-42BF-A70F-655D4C3F0069}.Release|Any CPU.ActiveCfg = Release|Any CPU 29 | {A999575F-C66E-42BF-A70F-655D4C3F0069}.Release|Any CPU.Build.0 = Release|Any CPU 30 | EndGlobalSection 31 | GlobalSection(SolutionProperties) = preSolution 32 | HideSolutionNode = FALSE 33 | EndGlobalSection 34 | EndGlobal 35 | -------------------------------------------------------------------------------- /DDDInventoryItemFSharp/Aggregate.fs: -------------------------------------------------------------------------------- 1 | /// Aggregate framework. 2 | [] 3 | module Aggregate 4 | 5 | /// Represents an aggregate. 6 | type Aggregate<'TState, 'TCommand, 'TEvent> = { 7 | 8 | /// An initial state value. 9 | zero : 'TState; 10 | 11 | /// Applies an event to a state returning a new state. 12 | apply : 'TState -> 'TEvent -> 'TState; 13 | 14 | /// Executes a command on a state yielding an event. 15 | exec : 'TState -> 'TCommand -> Choice<'TEvent, string list>; 16 | } 17 | 18 | type Id = System.Guid 19 | 20 | /// Creates a persistent, async command handler for an aggregate given load and commit functions. 21 | let makeHandler (aggregate:Aggregate<'TState, 'TCommand, 'TEvent>) (load:System.Type * Id -> Async, commit:Id * int -> obj -> Async) = 22 | fun (id,version) command -> async { 23 | let! events = load (typeof<'TEvent>,id) 24 | let events = events |> Seq.cast :> 'TEvent seq 25 | let state = Seq.fold aggregate.apply aggregate.zero events 26 | let event = aggregate.exec state command 27 | match event with 28 | | Choice1Of2 event -> 29 | let! _ = event |> commit (id,version) 30 | return Choice1Of2 () 31 | | Choice2Of2 errors -> 32 | return errors |> Choice2Of2 33 | } 34 | 35 | /// Creates a persistent command handler for an aggregate given load and commit functions. 36 | let makeHandlerSync (aggregate:Aggregate<'TState, 'TCommand, 'TEvent>) (load:System.Type * Id -> obj seq, commit:Id * int -> obj -> unit) = 37 | fun (id,version) command -> 38 | let events = load (typeof<'TEvent>,id) |> Seq.cast :> 'TEvent seq 39 | let state = Seq.fold aggregate.apply aggregate.zero events 40 | let result = aggregate.exec state command 41 | match result with 42 | | Choice1Of2 event -> event |> commit (id,version) |> Choice1Of2 43 | | Choice2Of2 errors -> errors |> Choice2Of2 44 | -------------------------------------------------------------------------------- /DDDInventoryItemFSharp/DDDInventoryItemFSharp.fsproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | 2.0 8 | 4198fad2-a8b5-491f-a2b3-6b719c27bf5d 9 | Library 10 | DDDInventoryItemFSharp 11 | DDDInventoryItemFSharp 12 | v4.5 13 | DDDInventoryItemFSharp 14 | 4.3.0.0 15 | 16 | 17 | true 18 | full 19 | false 20 | false 21 | bin\Debug\ 22 | DEBUG;TRACE 23 | 3 24 | bin\Debug\DDDInventoryItemFSharp.XML 25 | 26 | 27 | pdbonly 28 | true 29 | true 30 | bin\Release\ 31 | TRACE 32 | 3 33 | bin\Release\DDDInventoryItemFSharp.XML 34 | 35 | 36 | 11 37 | 38 | 39 | 40 | 41 | $(MSBuildExtensionsPath32)\..\Microsoft SDKs\F#\3.0\Framework\v4.0\Microsoft.FSharp.Targets 42 | 43 | 44 | 45 | 46 | $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\FSharp\Microsoft.FSharp.Targets 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | PreserveNewest 62 | 63 | 64 | PreserveNewest 65 | 66 | 67 | 68 | 69 | 70 | ..\packages\EventStore.Client.2.0.2\lib\net40\EventStore.ClientAPI.dll 71 | True 72 | 73 | 74 | True 75 | 76 | 77 | 78 | ..\lib\Newtonsoft.Json.dll 79 | 80 | 81 | ..\lib\protobuf-net.dll 82 | 83 | 84 | 85 | 86 | 87 | ..\lib\xunit.dll 88 | 89 | 90 | 97 | -------------------------------------------------------------------------------- /DDDInventoryItemFSharp/EventStore.fs: -------------------------------------------------------------------------------- 1 | /// Integration with EventStore. 2 | [] 3 | module EventStore 4 | 5 | open System 6 | open System.Net 7 | open EventStore.ClientAPI 8 | 9 | /// Creates and opens an EventStore connection. 10 | let conn endPoint = 11 | let conn = EventStoreConnection.Create(endPoint) 12 | conn.Connect() 13 | conn 14 | 15 | /// Creates event store based repository. 16 | let makeRepository (conn:IEventStoreConnection) category (serialize:obj -> string * byte array, deserialize: Type * string * byte array -> obj) = 17 | 18 | let streamId (id:Guid) = category + "-" + id.ToString("N").ToLower() 19 | 20 | let load (t,id) = async { 21 | let streamId = streamId id 22 | let! eventsSlice = conn.ReadStreamEventsForwardAsync(streamId, 1, Int32.MaxValue, false) |> Async.AwaitTask 23 | return eventsSlice.Events |> Seq.map (fun e -> deserialize(t, e.Event.EventType, e.Event.Data)) 24 | } 25 | 26 | let commit (id,expectedVersion) e = async { 27 | let streamId = streamId id 28 | let eventType,data = serialize e 29 | let metaData = [||] : byte array 30 | let eventData = new EventData(Guid.NewGuid(), eventType, true, data, metaData) 31 | if expectedVersion = 0 then conn.AppendToStreamAsync(streamId, ExpectedVersion.Any, eventData) |> Async.AwaitIAsyncResult |> Async.Ignore |> ignore 32 | return! conn.AppendToStreamAsync(streamId, expectedVersion, eventData) |> Async.AwaitIAsyncResult |> Async.Ignore 33 | } 34 | 35 | load,commit 36 | 37 | /// Creates a function that returns a read model from the last event of a stream. 38 | let makeReadModelGetter (conn:IEventStoreConnection) (deserialize:byte array -> _) = 39 | fun streamId -> async { 40 | let! eventsSlice = conn.ReadStreamEventsBackwardAsync(streamId, -1, 1, false) |> Async.AwaitTask 41 | if eventsSlice.Status <> SliceReadStatus.Success then return None 42 | elif eventsSlice.Events.Length = 0 then return None 43 | else 44 | let lastEvent = eventsSlice.Events.[0] 45 | if lastEvent.Event.EventNumber = 0 then return None 46 | else return Some(deserialize(lastEvent.Event.Data)) 47 | } 48 | -------------------------------------------------------------------------------- /DDDInventoryItemFSharp/FlatReadModelProjection.js: -------------------------------------------------------------------------------- 1 | var emitReadModel = function (s, e) { 2 | var streamId = "InventoryItemFlatReadModel-" + e.streamId.replace("InventoryItem-", ""); 3 | var eventType = e.eventType + "_InventoryItemFlatReadModel"; 4 | emit(streamId, eventType, s); 5 | }; 6 | fromCategory('InventoryItem').foreachStream().when({ 7 | $init: function() { 8 | return { 9 | name: null, 10 | count: 0, 11 | active: false, 12 | countChanges: 0 13 | }; 14 | }, 15 | "Created": function (s, e) { 16 | s.name = e.body.value; 17 | s.active = true; 18 | emitReadModel(s, e); 19 | }, 20 | "Deactivated": function (s, e) { 21 | s.active = false; 22 | emitReadModel(s, e); 23 | }, 24 | "Renamed": function (s, e) { 25 | s.name = e.body.value; 26 | emitReadModel(s, e); 27 | }, 28 | "ItemsCheckedIn": function (s, e) { 29 | s.count += e.body.value; 30 | s.countChanges += 1; 31 | emitReadModel(s, e); 32 | }, 33 | "ItemsRemoved": function (s, e) { 34 | s.count -= e.body.value; 35 | s.countChanges += 1; 36 | emitReadModel(s, e); 37 | } 38 | }); -------------------------------------------------------------------------------- /DDDInventoryItemFSharp/IntegrationTests.fs: -------------------------------------------------------------------------------- 1 | module IntegrationTests 2 | 3 | open EventStore.ClientAPI 4 | open EventStore.ClientAPI.SystemData 5 | 6 | let endPoint = new System.Net.IPEndPoint(System.Net.IPAddress.Parse("127.0.0.1"), 2113) 7 | 8 | let conn = EventStore.conn endPoint 9 | 10 | let handleCommand' = 11 | Aggregate.makeHandler 12 | { zero = InventoryItem.State.Zero; apply = InventoryItem.apply; exec = InventoryItem.exec } 13 | (EventStore.makeRepository conn "InventoryItem" Serialization.serializer) 14 | 15 | let handleCommand (id,v) c = handleCommand' (id,v) c |> Async.RunSynchronously 16 | 17 | let id = System.Guid.Parse("88085239-6f0f-48c6-b73d-017333cb99ba") 18 | 19 | [] 20 | let initProjections() = 21 | let pm = new ProjectionsManager(new EventStore.ClientAPI.Common.Log.ConsoleLogger(), endPoint) 22 | let file p = System.IO.File.ReadAllText(@"..\..\" + p) 23 | pm.CreateContinuous("FlatReadModelProjection", file "FlatReadModelProjection.js", UserCredentials("admin", "changeit")) 24 | pm.CreateContinuous("OverviewReadModelProjection", file "OverviewReadModelProjection.js", UserCredentials("admin", "changeit")) 25 | () 26 | 27 | [] 28 | let createInventoryItem() = 29 | let version = 0 30 | InventoryItem.Create("Pool Pump") |> handleCommand (id,version) 31 | 32 | [] 33 | let renameInventoryItem() = 34 | let version = 1 35 | InventoryItem.Rename("Cooler Pool Pump") |> handleCommand (id,version) 36 | 37 | [] 38 | let checkInItemsItem() = 39 | let version = 2 40 | InventoryItem.CheckInItems(100) |> handleCommand (id,version) 41 | 42 | [] 43 | let removeItems() = 44 | let version = 3 45 | InventoryItem.RemoveItems(37) |> handleCommand (id,version) 46 | 47 | [] 48 | let getFlatReadModel() = 49 | let get = EventStore.makeReadModelGetter conn (fun data -> Serialization.deserializet(data)) 50 | let readModel = get ("InventoryItemFlatReadModel-" + id.ToString("N")) |> Async.RunSynchronously 51 | printfn "%A" readModel 52 | 53 | [] 54 | let getOverviewReadModel() = 55 | let get = EventStore.makeReadModelGetter conn (fun data -> Serialization.deserializet(data)) 56 | let readModel = get "InventoryItemOverviewReadModel" |> Async.RunSynchronously 57 | printfn "%A" readModel 58 | 59 | 60 | -------------------------------------------------------------------------------- /DDDInventoryItemFSharp/InventoryItem.fs: -------------------------------------------------------------------------------- 1 | [] 2 | module InventoryItem 3 | 4 | type State = { 5 | isActive : bool; 6 | } 7 | with static member Zero = { isActive = false } 8 | 9 | type Command = 10 | | Create of string 11 | | Deactivate 12 | | Rename of string 13 | | CheckInItems of int 14 | | RemoveItems of int 15 | 16 | type Event = 17 | | Created of string 18 | | Deactivated 19 | | Renamed of string 20 | | ItemsCheckedIn of int 21 | | ItemsRemoved of int 22 | 23 | let apply item = function 24 | | Created _ -> { item with State.isActive = true; } 25 | | Deactivated _ -> { item with State.isActive = false; } 26 | | Renamed _ -> item 27 | | ItemsCheckedIn _ -> item 28 | | ItemsRemoved _ -> item 29 | 30 | open Validator 31 | 32 | module private Assert = 33 | let validName name = notNull ["The name must not be null."] name <* notEmptyString ["The name must not be empty"] name 34 | let validCount count = validator (fun c -> c > 0) ["The item count must be positive."] count 35 | let inactive state = validator (fun i -> i.isActive = false) ["The item is already deactivated."] state 36 | 37 | let exec state = 38 | function 39 | | Create name -> Assert.validName name Created(name) 40 | | Deactivate -> Assert.inactive state Deactivated 41 | | Rename name -> Assert.validName name Renamed(name) 42 | | CheckInItems count -> Assert.validCount count ItemsCheckedIn(count) 43 | | RemoveItems count -> Assert.validCount count ItemsRemoved(count) -------------------------------------------------------------------------------- /DDDInventoryItemFSharp/OverviewReadModelProjection.js: -------------------------------------------------------------------------------- 1 | var emitReadModel = function (s, e) { 2 | emit("InventoryItemOverviewReadModel", e.eventType + "_InventoryItemOverviewReadModel", s); 3 | }; 4 | fromCategory('InventoryItem').when({ 5 | $init: function() { 6 | return {total:0}; 7 | }, 8 | "ItemsCheckedIn": function(s, e) { 9 | s.total += e.body.value; 10 | emitReadModel(s, e); 11 | }, 12 | "ItemsRemoved": function(s, e) { 13 | s.total -= e.body.value; 14 | emitReadModel(s, e); 15 | } 16 | }); 17 | -------------------------------------------------------------------------------- /DDDInventoryItemFSharp/ReadModels.fs: -------------------------------------------------------------------------------- 1 | module ReadModels 2 | 3 | [] 4 | type InventoryItemFlatReadModel = { 5 | name : string; 6 | count : int; 7 | active : bool; 8 | } 9 | 10 | [] 11 | type InventoryItemOverviewReadModel = { 12 | total : int; 13 | } -------------------------------------------------------------------------------- /DDDInventoryItemFSharp/SerializationTests.fs: -------------------------------------------------------------------------------- 1 | module SerializationTests 2 | 3 | let serialize',deserialize = Serialization.serializer 4 | 5 | let serialize o = 6 | let et,bytes = serialize' o 7 | let json = System.Text.Encoding.UTF8.GetString(bytes) 8 | printfn "EventType=%A;Json=%A" et json 9 | let o' = deserialize(o.GetType(), et, System.Text.Encoding.UTF8.GetBytes(json)) 10 | printfn "Deserialized=%A" o' 11 | et,json 12 | 13 | let test (eet:string) (ejson:string) o = 14 | let et,json = serialize(o) 15 | assert(eet = et) 16 | assert(ejson = json) 17 | 18 | type ComplexType = { 19 | links : int list; 20 | limit : bool option; 21 | name : string; 22 | birth : System.DateTime; 23 | } 24 | and ComplexEvent = 25 | | Created of ComplexType 26 | | Destroyed of System.Guid * string 27 | | Renamed of string 28 | | Limited 29 | 30 | [] 31 | let complexTypeShouldSerialize() = 32 | 33 | let v = { 34 | ComplexType.name = "e to the i"; 35 | links = [1;2;3]; 36 | limit = Some(false); 37 | birth = System.DateTime(1985, 10, 9); 38 | } 39 | 40 | serialize (Created v) |> ignore 41 | serialize (Destroyed (System.Guid.NewGuid(),"see ya")) |> ignore 42 | () 43 | 44 | 45 | [] 46 | let eventsShouldSerialize() = 47 | 48 | test "Created" """{"case":"Created","value":"hello item"}""" (InventoryItem.Created("hello item")) 49 | test "Deactivated" """{"case":"Deactivated","value":null}""" (InventoryItem.Deactivated) 50 | test "Renamed" """{"case":"Renamed","value":"new name"}""" (InventoryItem.Renamed("new name")) 51 | test "ItemsCheckedIn" """{"case":"ItemsCheckedIn","value":100}""" (InventoryItem.ItemsCheckedIn(100)) 52 | test "ItemsRemoved" """{"case":"ItemsRemoved","value":200}""" (InventoryItem.ItemsRemoved(200)) 53 | 54 | () -------------------------------------------------------------------------------- /DDDInventoryItemFSharp/Validatior.fs: -------------------------------------------------------------------------------- 1 | module Validator 2 | 3 | let validator predicate error x = 4 | if predicate x then Choice1Of2 x 5 | else Choice2Of2 error 6 | 7 | let (==) = LanguagePrimitives.PhysicalEquality 8 | let inline (!=) a b = not (a == b) 9 | let notNull e = validator ((!=) null) e 10 | let notEmptyString e = validator (fun (s:string) -> s.Length > 0) e 11 | 12 | /// Given a value, creates a choice 1. (Applicative functor) 13 | let puree = Choice1Of2 14 | 15 | /// Given a function in a choice and a choice value x, applies the function to the value if available, 16 | /// otherwise propagates the second choice. (Applicative functor) 17 | let apply f x = 18 | match f,x with 19 | | Choice1Of2 f, Choice1Of2 x -> Choice1Of2 (f x) 20 | | Choice2Of2 e, Choice1Of2 x -> Choice2Of2 e 21 | | Choice1Of2 f, Choice2Of2 e -> Choice2Of2 e 22 | | Choice2Of2 e1, Choice2Of2 e2 -> Choice2Of2 (e1 @ e2) 23 | 24 | let (<*>) = apply 25 | 26 | /// Applies the function to the choice 1 value and returns the result as a choice 1, if matched, 27 | /// otherwise returns the original choice 2 value. (Functor) 28 | let map f o = 29 | match o with 30 | | Choice1Of2 x -> f x |> puree 31 | | Choice2Of2 x -> Choice2Of2 x 32 | 33 | let inline () f x = map f x 34 | 35 | /// Lifts a two argument function to operate over the choice type. 36 | let inline lift2 f a b = f a <*> b 37 | 38 | /// Composes two choice types, passing the case-1 type of the right value. 39 | let inline ( *>) a b = lift2 (fun _ z -> z) a b 40 | 41 | /// Composes two choice types, passing the case-2 type of the left value. 42 | let inline ( <*) a b = lift2 (fun z _ -> z) a b 43 | 44 | /// Composes a choice type with a non choice type. 45 | let inline () a b = lift2 (fun _ z -> z) a (Choice1Of2 b) 46 | 47 | /// Composes a non-choice type with a choice type. 48 | let inline (|?>) a b = lift2 (fun z _ -> z) (Choice1Of2 a) b -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # An idiomatic F# implementation of Domain-Driven Design 2 | 3 | [Domain-Driven Design With F# and EventStore](http://gorodinski.com/blog/2013/02/17/domain-driven-design-with-fsharp-and-eventstore/) 4 | 5 | [Domain-Driven Design With F# and EventStore:Projections](http://gorodinski.com/blog/2013/02/24/domain-driven-design-with-fsharp-and-eventstore-projections/) 6 | 7 | Based on [SimpleCQRS](https://github.com/gregoryyoung/m-r) by [Greg Young](http://goodenoughsoftware.net/) 8 | 9 | Uses [EventStore](http://geteventstore.com/) for event persistance. 10 | 11 | To run the Xunit integration tests: 12 | 13 | * Run EventStore.SingleNode.exe --run-projections 14 | * Enable the $by_category projection. 15 | * Create new projections *FlatReadModelProjection.js* and *OverviewReadModelProjection.js* with mode=**Continuous** and **Emit** enabled. -------------------------------------------------------------------------------- /lib/EventStore.ClientAPI.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/lib/EventStore.ClientAPI.dll -------------------------------------------------------------------------------- /lib/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/lib/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /lib/protobuf-net.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/lib/protobuf-net.dll -------------------------------------------------------------------------------- /lib/xunit.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/lib/xunit.dll -------------------------------------------------------------------------------- /packages/EntityFramework.5.0.0/Content/App.config.transform: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /packages/EntityFramework.5.0.0/Content/Web.config.transform: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /packages/EntityFramework.5.0.0/EntityFramework.5.0.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/EntityFramework.5.0.0/EntityFramework.5.0.0.nupkg -------------------------------------------------------------------------------- /packages/EntityFramework.5.0.0/lib/net40/EntityFramework.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/EntityFramework.5.0.0/lib/net40/EntityFramework.dll -------------------------------------------------------------------------------- /packages/EntityFramework.5.0.0/lib/net45/EntityFramework.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/EntityFramework.5.0.0/lib/net45/EntityFramework.dll -------------------------------------------------------------------------------- /packages/EntityFramework.5.0.0/tools/EntityFramework.PS3.psd1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/EntityFramework.5.0.0/tools/EntityFramework.PS3.psd1 -------------------------------------------------------------------------------- /packages/EntityFramework.5.0.0/tools/EntityFramework.PowerShell.Utility.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/EntityFramework.5.0.0/tools/EntityFramework.PowerShell.Utility.dll -------------------------------------------------------------------------------- /packages/EntityFramework.5.0.0/tools/EntityFramework.PowerShell.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/EntityFramework.5.0.0/tools/EntityFramework.PowerShell.dll -------------------------------------------------------------------------------- /packages/EntityFramework.5.0.0/tools/EntityFramework.psd1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/EntityFramework.5.0.0/tools/EntityFramework.psd1 -------------------------------------------------------------------------------- /packages/EntityFramework.5.0.0/tools/Redirect.VS11.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 9 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /packages/EntityFramework.5.0.0/tools/Redirect.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 9 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /packages/EntityFramework.5.0.0/tools/about_EntityFramework.help.txt: -------------------------------------------------------------------------------- 1 | TOPIC 2 | about_EntityFramework 3 | 4 | SHORT DESCRIPTION 5 | Provides information about Entity Framework commands. 6 | 7 | LONG DESCRIPTION 8 | This topic describes the Entity Framework commands. Entity Framework is 9 | Microsoft's recommended data access technology for new applications. 10 | 11 | 12 | The following Entity Framework cmdlets are included. 13 | 14 | Cmdlet Description 15 | ----------------- --------------------------------------------------- 16 | Enable-Migrations Enables Code First Migrations in a project. 17 | 18 | Add-Migration Scaffolds a migration script for any pending model 19 | changes. 20 | 21 | Update-Database Applies any pending migrations to the database. 22 | 23 | Get-Migrations Displays the migrations that have been applied to 24 | the target database. 25 | 26 | SEE ALSO 27 | Enable-Migrations 28 | Add-Migration 29 | Update-Database 30 | Get-Migrations 31 | -------------------------------------------------------------------------------- /packages/EntityFramework.5.0.0/tools/migrate.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/EntityFramework.5.0.0/tools/migrate.exe -------------------------------------------------------------------------------- /packages/FsSpa-Knockout.0.1.0.0/Content/Scripts/app/main.js.pp: -------------------------------------------------------------------------------- 1 | window.appFsMvc = {}; -------------------------------------------------------------------------------- /packages/FsSpa-Knockout.0.1.0.0/Content/Scripts/app/router.js.pp: -------------------------------------------------------------------------------- 1 | (function ($) { 2 | appFsMvc.App = function( contactsViewModel ) { 3 | return $.sammy( "#content", function () { 4 | var self = this; 5 | 6 | this.use( Sammy.Cache ); 7 | this.contactViewModel = contactsViewModel; 8 | 9 | this.renderTemplate = function ( html ) { 10 | self.$element().html( html ); 11 | ko.applyBindings( self.contactViewModel ); 12 | }; 13 | 14 | // display all contacts 15 | this.get( "#/", function() { 16 | this.render("/Templates/contactDetail.htm", {}, function ( html ) { 17 | self.renderTemplate( html ); 18 | }); 19 | }); 20 | 21 | // display the create contacts view 22 | this.get( "#/create", function() { 23 | this.render("/Templates/contactCreate.htm", {}, function ( html ) { 24 | self.renderTemplate( html ); 25 | }); 26 | }); 27 | }); 28 | }; 29 | 30 | $(function () { 31 | $.getJSON( "/api/contacts", function ( data ) { 32 | var viewModel = new appFsMvc.ViewModels.ContactsViewModel( data ); 33 | appFsMvc.App( viewModel ).run( "#/" ); 34 | }); 35 | }); 36 | })(jQuery); 37 | 38 | -------------------------------------------------------------------------------- /packages/FsSpa-Knockout.0.1.0.0/Content/Scripts/app/utility.js.pp: -------------------------------------------------------------------------------- 1 | (function ( mod, $ ) { 2 | mod.buildTemplateUrl = function ( templateFileName ) { 3 | return "/Templates/" + templateFileName; 4 | }; 5 | 6 | mod.renderTemplate = function ( templateFileName, $el, data ) { 7 | data = data || { }; 8 | mod.getHtmlFromTemplate( templateFileName, function ( html ) { 9 | $el.empty().append( _.template( html, data ) ); 10 | }); 11 | }; 12 | 13 | mod.getHtmlFromTemplate = function ( templateFileName, callback ) { 14 | $.get( mod.buildTemplateUrl( templateFileName ), function ( template ) { 15 | callback( template ); 16 | }); 17 | }; 18 | 19 | mod.serializeObject = function ( selector ) { 20 | var result = {}; 21 | var serializedArray = $( selector ).serializeArray( { checkboxesAsBools: true } ); 22 | $.each(serializedArray, function () { 23 | if ( result[this.name] ) { 24 | if ( !result[this.name].push ) { 25 | result[this.name] = [result[this.name]]; 26 | } 27 | result[this.name].push( this.value || "" ); 28 | } else { 29 | result[this.name] = this.value || ""; 30 | } 31 | }); 32 | return result; 33 | }; 34 | 35 | mod.getBaseUrl = function () { 36 | var pathArray = window.location.href.split( '/' ); 37 | var baseUrl = pathArray[0] + "//" + pathArray[1] + pathArray[2]; 38 | if (baseUrl.substr( baseUrl.length - 1) !== "/" ) { 39 | baseUrl += "/"; 40 | } 41 | return baseUrl; 42 | }; 43 | 44 | })( window.appFsMvc.utility = window.appFsMvc.utility || {}, jQuery ); -------------------------------------------------------------------------------- /packages/FsSpa-Knockout.0.1.0.0/Content/Scripts/viewModels/contactsViewModel.js.pp: -------------------------------------------------------------------------------- 1 | // This is largely based on the example from http://knockoutjs.com/examples/contactsEditor.html (function ( viewModel, $ ) { viewModel.ContactsViewModel = function ( contacts ) { 2 | var self = this; 3 | self.contacts = ko.observableArray( ko.utils.arrayMap( contacts, function ( contact ) { 4 | return { firstName: contact.firstName, lastName: contact.lastName, phone: contact.phone }; 5 | })); 6 | 7 | self.addContact = function () { 8 | var data = appFsMvc.utility.serializeObject( $("#contactForm") ); 9 | $.ajax({ 10 | url: "/api/Contacts", 11 | data: JSON.stringify( data ), 12 | type: "POST", 13 | dataType: "json", 14 | contentType: "application/json" 15 | }) 16 | .done(function () { 17 | toastr.success( "You have successfully created a new contact!", "Success!" ); 18 | self.contacts.push( data ); 19 | window.location.href = "#/"; 20 | }) 21 | .fail(function () { 22 | toastr.error( "There was an error creating your new contact", "" ); 23 | }); 24 | }; 25 | }; 26 | })( appFsMvc.ViewModels = appFsMvc.ViewModels || {}, jQuery ); -------------------------------------------------------------------------------- /packages/FsSpa-Knockout.0.1.0.0/Content/Templates/contactCreate.htm: -------------------------------------------------------------------------------- 1 | 
    2 |
    3 |
    4 | Create New Contact 5 | 6 |
    7 | First Name: 8 |
    9 |
    10 | 11 |
    12 | 13 |
    14 | Last Name: 15 |
    16 |
    17 | 18 |
    19 | 20 |
    21 | Phone Number: 22 |
    23 |
    24 | 25 |
    26 |

    27 | 28 |

    29 |
    30 |
    31 |
    32 | -------------------------------------------------------------------------------- /packages/FsSpa-Knockout.0.1.0.0/Content/Templates/contactDetail.htm: -------------------------------------------------------------------------------- 1 | 
    2 |

    3 | Create Contact 4 |

    5 |
    6 |
    FirstName
    7 |
    LastName
    8 |
    Phone
    9 |
    10 | 11 |
    12 |
    13 |
    14 |
    15 |
    16 |
    17 |
    18 |
    -------------------------------------------------------------------------------- /packages/FsSpa-Knockout.0.1.0.0/FsSpa-Knockout.0.1.0.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/FsSpa-Knockout.0.1.0.0/FsSpa-Knockout.0.1.0.0.nupkg -------------------------------------------------------------------------------- /packages/Microsoft.AspNet.Mvc.4.0.20710.0/Microsoft.AspNet.Mvc.4.0.20710.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/Microsoft.AspNet.Mvc.4.0.20710.0/Microsoft.AspNet.Mvc.4.0.20710.0.nupkg -------------------------------------------------------------------------------- /packages/Microsoft.AspNet.Mvc.4.0.20710.0/lib/net40/System.Web.Mvc.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/Microsoft.AspNet.Mvc.4.0.20710.0/lib/net40/System.Web.Mvc.dll -------------------------------------------------------------------------------- /packages/Microsoft.AspNet.Providers.Core.1.1/Microsoft.AspNet.Providers.Core.1.1.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/Microsoft.AspNet.Providers.Core.1.1/Microsoft.AspNet.Providers.Core.1.1.nupkg -------------------------------------------------------------------------------- /packages/Microsoft.AspNet.Providers.Core.1.1/lib/net40/System.Web.Providers.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/Microsoft.AspNet.Providers.Core.1.1/lib/net40/System.Web.Providers.dll -------------------------------------------------------------------------------- /packages/Microsoft.AspNet.Providers.Core.1.1/readme.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/Microsoft.AspNet.Providers.Core.1.1/readme.html -------------------------------------------------------------------------------- /packages/Microsoft.AspNet.Providers.LocalDB.1.1/Microsoft.AspNet.Providers.LocalDB.1.1.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/Microsoft.AspNet.Providers.LocalDB.1.1/Microsoft.AspNet.Providers.LocalDB.1.1.nupkg -------------------------------------------------------------------------------- /packages/Microsoft.AspNet.Providers.LocalDB.1.1/content/web.config.transform: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /packages/Microsoft.AspNet.Razor.2.0.20710.0/Microsoft.AspNet.Razor.2.0.20710.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/Microsoft.AspNet.Razor.2.0.20710.0/Microsoft.AspNet.Razor.2.0.20710.0.nupkg -------------------------------------------------------------------------------- /packages/Microsoft.AspNet.Razor.2.0.20710.0/lib/net40/System.Web.Razor.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/Microsoft.AspNet.Razor.2.0.20710.0/lib/net40/System.Web.Razor.dll -------------------------------------------------------------------------------- /packages/Microsoft.AspNet.Web.Optimization.1.0.0/Microsoft.AspNet.Web.Optimization.1.0.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/Microsoft.AspNet.Web.Optimization.1.0.0/Microsoft.AspNet.Web.Optimization.1.0.0.nupkg -------------------------------------------------------------------------------- /packages/Microsoft.AspNet.Web.Optimization.1.0.0/lib/net40/System.Web.Optimization.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/Microsoft.AspNet.Web.Optimization.1.0.0/lib/net40/System.Web.Optimization.dll -------------------------------------------------------------------------------- /packages/Microsoft.AspNet.WebApi.4.0.20710.0/Microsoft.AspNet.WebApi.4.0.20710.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/Microsoft.AspNet.WebApi.4.0.20710.0/Microsoft.AspNet.WebApi.4.0.20710.0.nupkg -------------------------------------------------------------------------------- /packages/Microsoft.AspNet.WebApi.Client.4.0.20710.0/Microsoft.AspNet.WebApi.Client.4.0.20710.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/Microsoft.AspNet.WebApi.Client.4.0.20710.0/Microsoft.AspNet.WebApi.Client.4.0.20710.0.nupkg -------------------------------------------------------------------------------- /packages/Microsoft.AspNet.WebApi.Client.4.0.20710.0/lib/net40/System.Net.Http.Formatting.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/Microsoft.AspNet.WebApi.Client.4.0.20710.0/lib/net40/System.Net.Http.Formatting.dll -------------------------------------------------------------------------------- /packages/Microsoft.AspNet.WebApi.Core.4.0.20710.0/Microsoft.AspNet.WebApi.Core.4.0.20710.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/Microsoft.AspNet.WebApi.Core.4.0.20710.0/Microsoft.AspNet.WebApi.Core.4.0.20710.0.nupkg -------------------------------------------------------------------------------- /packages/Microsoft.AspNet.WebApi.Core.4.0.20710.0/content/web.config.transform: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /packages/Microsoft.AspNet.WebApi.Core.4.0.20710.0/lib/net40/System.Web.Http.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/Microsoft.AspNet.WebApi.Core.4.0.20710.0/lib/net40/System.Web.Http.dll -------------------------------------------------------------------------------- /packages/Microsoft.AspNet.WebApi.WebHost.4.0.20710.0/Microsoft.AspNet.WebApi.WebHost.4.0.20710.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/Microsoft.AspNet.WebApi.WebHost.4.0.20710.0/Microsoft.AspNet.WebApi.WebHost.4.0.20710.0.nupkg -------------------------------------------------------------------------------- /packages/Microsoft.AspNet.WebApi.WebHost.4.0.20710.0/lib/net40/System.Web.Http.WebHost.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/Microsoft.AspNet.WebApi.WebHost.4.0.20710.0/lib/net40/System.Web.Http.WebHost.dll -------------------------------------------------------------------------------- /packages/Microsoft.AspNet.WebPages.2.0.20710.0/Microsoft.AspNet.WebPages.2.0.20710.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/Microsoft.AspNet.WebPages.2.0.20710.0/Microsoft.AspNet.WebPages.2.0.20710.0.nupkg -------------------------------------------------------------------------------- /packages/Microsoft.AspNet.WebPages.2.0.20710.0/lib/net40/System.Web.Helpers.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/Microsoft.AspNet.WebPages.2.0.20710.0/lib/net40/System.Web.Helpers.dll -------------------------------------------------------------------------------- /packages/Microsoft.AspNet.WebPages.2.0.20710.0/lib/net40/System.Web.WebPages.Deployment.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/Microsoft.AspNet.WebPages.2.0.20710.0/lib/net40/System.Web.WebPages.Deployment.dll -------------------------------------------------------------------------------- /packages/Microsoft.AspNet.WebPages.2.0.20710.0/lib/net40/System.Web.WebPages.Deployment.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | System.Web.WebPages.Deployment 5 | 6 | 7 | 8 | Provides a registration point for pre-application start code for Web Pages deployment. 9 | 10 | 11 | Registers pre-application start code for Web Pages deployment. 12 | 13 | 14 | This type/member supports the .NET Framework infrastructure and is not intended to be used directly from your code. 15 | 16 | 17 | This type/member supports the .NET Framework infrastructure and is not intended to be used directly from your code. 18 | 19 | 20 | This type/member supports the .NET Framework infrastructure and is not intended to be used directly from your code. 21 | 22 | 23 | This type/member supports the .NET Framework infrastructure and is not intended to be used directly from your code. 24 | 25 | 26 | The path of the root directory for the application. 27 | 28 | 29 | This type/member supports the .NET Framework infrastructure and is not intended to be used directly from your code. 30 | 31 | 32 | This type/member supports the .NET Framework infrastructure and is not intended to be used directly from your code. 33 | 34 | 35 | This type/member supports the .NET Framework infrastructure and is not intended to be used directly from your code. 36 | 37 | 38 | This type/member supports the .NET Framework infrastructure and is not intended to be used directly from your code. 39 | 40 | 41 | -------------------------------------------------------------------------------- /packages/Microsoft.AspNet.WebPages.2.0.20710.0/lib/net40/System.Web.WebPages.Razor.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/Microsoft.AspNet.WebPages.2.0.20710.0/lib/net40/System.Web.WebPages.Razor.dll -------------------------------------------------------------------------------- /packages/Microsoft.AspNet.WebPages.2.0.20710.0/lib/net40/System.Web.WebPages.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/Microsoft.AspNet.WebPages.2.0.20710.0/lib/net40/System.Web.WebPages.dll -------------------------------------------------------------------------------- /packages/Microsoft.Net.Http.2.0.20710.0/Microsoft.Net.Http.2.0.20710.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/Microsoft.Net.Http.2.0.20710.0/Microsoft.Net.Http.2.0.20710.0.nupkg -------------------------------------------------------------------------------- /packages/Microsoft.Net.Http.2.0.20710.0/lib/net40/System.Net.Http.WebRequest.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/Microsoft.Net.Http.2.0.20710.0/lib/net40/System.Net.Http.WebRequest.dll -------------------------------------------------------------------------------- /packages/Microsoft.Net.Http.2.0.20710.0/lib/net40/System.Net.Http.WebRequest.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | System.Net.Http.WebRequest 5 | 6 | 7 | 8 | Represents the class that is used to create special for use with the Real-Time-Communications (RTC) background notification infrastructure. 9 | 10 | 11 | Creates a special for use with the Real-Time-Communications (RTC) background notification infrastructure. 12 | Returns .An HTTP request message for use with the RTC background notification infrastructure. 13 | The HTTP method. 14 | The Uri the request is sent to. 15 | 16 | 17 | Provides desktop-specific features not available to Windows Store apps or other environments. 18 | 19 | 20 | Initializes a new instance of the class. 21 | 22 | 23 | Gets or sets a value that indicates whether to pipeline the request to the Internet resource. 24 | Returns .true if the request should be pipelined; otherwise, false. The default is true. 25 | 26 | 27 | Gets or sets a value indicating the level of authentication and impersonation used for this request. 28 | Returns .A bitwise combination of the values. The default value is . 29 | 30 | 31 | Gets or sets the cache policy for this request. 32 | Returns .A object that defines a cache policy. The default is . 33 | 34 | 35 | Gets or sets the collection of security certificates that are associated with this request. 36 | Returns .The collection of security certificates associated with this request. 37 | 38 | 39 | Gets or sets the amount of time, in milliseconds, the application will wait for 100-continue from the server before uploading data. 40 | Returns .The amount of time, in milliseconds, the application will wait for 100-continue from the server before uploading data. The default value is 350 milliseconds. 41 | 42 | 43 | Gets or sets the impersonation level for the current request. 44 | Returns .The impersonation level for the request. The default is . 45 | 46 | 47 | Gets or sets the maximum allowed length of the response headers. 48 | Returns .The length, in kilobytes (1024 bytes), of the response headers. 49 | 50 | 51 | Gets or sets a time-out in milliseconds when writing a request to or reading a response from a server. 52 | Returns .The number of milliseconds before the writing or reading times out. The default value is 300,000 milliseconds (5 minutes). 53 | 54 | 55 | Gets or sets a callback method to validate the server certificate. 56 | Returns .A callback method to validate the server certificate. 57 | 58 | 59 | Gets or sets a value that indicates whether to allow high-speed NTLM-authenticated connection sharing. 60 | Returns .true to keep the authenticated connection open; otherwise, false. 61 | 62 | 63 | -------------------------------------------------------------------------------- /packages/Microsoft.Net.Http.2.0.20710.0/lib/net40/System.Net.Http.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/Microsoft.Net.Http.2.0.20710.0/lib/net40/System.Net.Http.dll -------------------------------------------------------------------------------- /packages/Microsoft.Net.Http.2.0.20710.0/lib/net45/_._: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /packages/Microsoft.Web.Infrastructure.1.0.0.0/Microsoft.Web.Infrastructure.1.0.0.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/Microsoft.Web.Infrastructure.1.0.0.0/Microsoft.Web.Infrastructure.1.0.0.0.nupkg -------------------------------------------------------------------------------- /packages/Microsoft.Web.Infrastructure.1.0.0.0/lib/net40/Microsoft.Web.Infrastructure.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/Microsoft.Web.Infrastructure.1.0.0.0/lib/net40/Microsoft.Web.Infrastructure.dll -------------------------------------------------------------------------------- /packages/Microsoft.jQuery.Unobtrusive.Ajax.2.0.20710.0/Content/Scripts/jquery.unobtrusive-ajax.js: -------------------------------------------------------------------------------- 1 | /*! 2 | ** Unobtrusive Ajax support library for jQuery 3 | ** Copyright (C) Microsoft Corporation. All rights reserved. 4 | */ 5 | 6 | /*jslint white: true, browser: true, onevar: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, newcap: true, immed: true, strict: false */ 7 | /*global window: false, jQuery: false */ 8 | 9 | (function ($) { 10 | var data_click = "unobtrusiveAjaxClick", 11 | data_validation = "unobtrusiveValidation"; 12 | 13 | function getFunction(code, argNames) { 14 | var fn = window, parts = (code || "").split("."); 15 | while (fn && parts.length) { 16 | fn = fn[parts.shift()]; 17 | } 18 | if (typeof (fn) === "function") { 19 | return fn; 20 | } 21 | argNames.push(code); 22 | return Function.constructor.apply(null, argNames); 23 | } 24 | 25 | function isMethodProxySafe(method) { 26 | return method === "GET" || method === "POST"; 27 | } 28 | 29 | function asyncOnBeforeSend(xhr, method) { 30 | if (!isMethodProxySafe(method)) { 31 | xhr.setRequestHeader("X-HTTP-Method-Override", method); 32 | } 33 | } 34 | 35 | function asyncOnSuccess(element, data, contentType) { 36 | var mode; 37 | 38 | if (contentType.indexOf("application/x-javascript") !== -1) { // jQuery already executes JavaScript for us 39 | return; 40 | } 41 | 42 | mode = (element.getAttribute("data-ajax-mode") || "").toUpperCase(); 43 | $(element.getAttribute("data-ajax-update")).each(function (i, update) { 44 | var top; 45 | 46 | switch (mode) { 47 | case "BEFORE": 48 | top = update.firstChild; 49 | $("
    ").html(data).contents().each(function () { 50 | update.insertBefore(this, top); 51 | }); 52 | break; 53 | case "AFTER": 54 | $("
    ").html(data).contents().each(function () { 55 | update.appendChild(this); 56 | }); 57 | break; 58 | default: 59 | $(update).html(data); 60 | break; 61 | } 62 | }); 63 | } 64 | 65 | function asyncRequest(element, options) { 66 | var confirm, loading, method, duration; 67 | 68 | confirm = element.getAttribute("data-ajax-confirm"); 69 | if (confirm && !window.confirm(confirm)) { 70 | return; 71 | } 72 | 73 | loading = $(element.getAttribute("data-ajax-loading")); 74 | duration = element.getAttribute("data-ajax-loading-duration") || 0; 75 | 76 | $.extend(options, { 77 | type: element.getAttribute("data-ajax-method") || undefined, 78 | url: element.getAttribute("data-ajax-url") || undefined, 79 | beforeSend: function (xhr) { 80 | var result; 81 | asyncOnBeforeSend(xhr, method); 82 | result = getFunction(element.getAttribute("data-ajax-begin"), ["xhr"]).apply(this, arguments); 83 | if (result !== false) { 84 | loading.show(duration); 85 | } 86 | return result; 87 | }, 88 | complete: function () { 89 | loading.hide(duration); 90 | getFunction(element.getAttribute("data-ajax-complete"), ["xhr", "status"]).apply(this, arguments); 91 | }, 92 | success: function (data, status, xhr) { 93 | asyncOnSuccess(element, data, xhr.getResponseHeader("Content-Type") || "text/html"); 94 | getFunction(element.getAttribute("data-ajax-success"), ["data", "status", "xhr"]).apply(this, arguments); 95 | }, 96 | error: getFunction(element.getAttribute("data-ajax-failure"), ["xhr", "status", "error"]) 97 | }); 98 | 99 | options.data.push({ name: "X-Requested-With", value: "XMLHttpRequest" }); 100 | 101 | method = options.type.toUpperCase(); 102 | if (!isMethodProxySafe(method)) { 103 | options.type = "POST"; 104 | options.data.push({ name: "X-HTTP-Method-Override", value: method }); 105 | } 106 | 107 | $.ajax(options); 108 | } 109 | 110 | function validate(form) { 111 | var validationInfo = $(form).data(data_validation); 112 | return !validationInfo || !validationInfo.validate || validationInfo.validate(); 113 | } 114 | 115 | $("a[data-ajax=true]").live("click", function (evt) { 116 | evt.preventDefault(); 117 | asyncRequest(this, { 118 | url: this.href, 119 | type: "GET", 120 | data: [] 121 | }); 122 | }); 123 | 124 | $("form[data-ajax=true] input[type=image]").live("click", function (evt) { 125 | var name = evt.target.name, 126 | $target = $(evt.target), 127 | form = $target.parents("form")[0], 128 | offset = $target.offset(); 129 | 130 | $(form).data(data_click, [ 131 | { name: name + ".x", value: Math.round(evt.pageX - offset.left) }, 132 | { name: name + ".y", value: Math.round(evt.pageY - offset.top) } 133 | ]); 134 | 135 | setTimeout(function () { 136 | $(form).removeData(data_click); 137 | }, 0); 138 | }); 139 | 140 | $("form[data-ajax=true] :submit").live("click", function (evt) { 141 | var name = evt.target.name, 142 | form = $(evt.target).parents("form")[0]; 143 | 144 | $(form).data(data_click, name ? [{ name: name, value: evt.target.value }] : []); 145 | 146 | setTimeout(function () { 147 | $(form).removeData(data_click); 148 | }, 0); 149 | }); 150 | 151 | $("form[data-ajax=true]").live("submit", function (evt) { 152 | var clickInfo = $(this).data(data_click) || []; 153 | evt.preventDefault(); 154 | if (!validate(this)) { 155 | return; 156 | } 157 | asyncRequest(this, { 158 | url: this.action, 159 | type: this.method || "GET", 160 | data: clickInfo.concat($(this).serializeArray()) 161 | }); 162 | }); 163 | }(jQuery)); -------------------------------------------------------------------------------- /packages/Microsoft.jQuery.Unobtrusive.Ajax.2.0.20710.0/Content/Scripts/jquery.unobtrusive-ajax.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | ** Unobtrusive Ajax support library for jQuery 3 | ** Copyright (C) Microsoft Corporation. All rights reserved. 4 | */ 5 | (function(a){var b="unobtrusiveAjaxClick",g="unobtrusiveValidation";function c(d,b){var a=window,c=(d||"").split(".");while(a&&c.length)a=a[c.shift()];if(typeof a==="function")return a;b.push(d);return Function.constructor.apply(null,b)}function d(a){return a==="GET"||a==="POST"}function f(b,a){!d(a)&&b.setRequestHeader("X-HTTP-Method-Override",a)}function h(c,b,e){var d;if(e.indexOf("application/x-javascript")!==-1)return;d=(c.getAttribute("data-ajax-mode")||"").toUpperCase();a(c.getAttribute("data-ajax-update")).each(function(f,c){var e;switch(d){case"BEFORE":e=c.firstChild;a("
    ").html(b).contents().each(function(){c.insertBefore(this,e)});break;case"AFTER":a("
    ").html(b).contents().each(function(){c.appendChild(this)});break;default:a(c).html(b)}})}function e(b,e){var j,k,g,i;j=b.getAttribute("data-ajax-confirm");if(j&&!window.confirm(j))return;k=a(b.getAttribute("data-ajax-loading"));i=b.getAttribute("data-ajax-loading-duration")||0;a.extend(e,{type:b.getAttribute("data-ajax-method")||undefined,url:b.getAttribute("data-ajax-url")||undefined,beforeSend:function(d){var a;f(d,g);a=c(b.getAttribute("data-ajax-begin"),["xhr"]).apply(this,arguments);a!==false&&k.show(i);return a},complete:function(){k.hide(i);c(b.getAttribute("data-ajax-complete"),["xhr","status"]).apply(this,arguments)},success:function(a,e,d){h(b,a,d.getResponseHeader("Content-Type")||"text/html");c(b.getAttribute("data-ajax-success"),["data","status","xhr"]).apply(this,arguments)},error:c(b.getAttribute("data-ajax-failure"),["xhr","status","error"])});e.data.push({name:"X-Requested-With",value:"XMLHttpRequest"});g=e.type.toUpperCase();if(!d(g)){e.type="POST";e.data.push({name:"X-HTTP-Method-Override",value:g})}a.ajax(e)}function i(c){var b=a(c).data(g);return!b||!b.validate||b.validate()}a("a[data-ajax=true]").live("click",function(a){a.preventDefault();e(this,{url:this.href,type:"GET",data:[]})});a("form[data-ajax=true] input[type=image]").live("click",function(c){var g=c.target.name,d=a(c.target),f=d.parents("form")[0],e=d.offset();a(f).data(b,[{name:g+".x",value:Math.round(c.pageX-e.left)},{name:g+".y",value:Math.round(c.pageY-e.top)}]);setTimeout(function(){a(f).removeData(b)},0)});a("form[data-ajax=true] :submit").live("click",function(c){var e=c.target.name,d=a(c.target).parents("form")[0];a(d).data(b,e?[{name:e,value:c.target.value}]:[]);setTimeout(function(){a(d).removeData(b)},0)});a("form[data-ajax=true]").live("submit",function(d){var c=a(this).data(b)||[];d.preventDefault();if(!i(this))return;e(this,{url:this.action,type:this.method||"GET",data:c.concat(a(this).serializeArray())})})})(jQuery); -------------------------------------------------------------------------------- /packages/Microsoft.jQuery.Unobtrusive.Ajax.2.0.20710.0/Microsoft.jQuery.Unobtrusive.Ajax.2.0.20710.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/Microsoft.jQuery.Unobtrusive.Ajax.2.0.20710.0/Microsoft.jQuery.Unobtrusive.Ajax.2.0.20710.0.nupkg -------------------------------------------------------------------------------- /packages/Microsoft.jQuery.Unobtrusive.Validation.2.0.20710.0/Content/Scripts/jquery.validate.unobtrusive.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | ** Unobtrusive validation support library for jQuery and jQuery Validate 3 | ** Copyright (C) Microsoft Corporation. All rights reserved. 4 | */ 5 | (function(a){var d=a.validator,b,e="unobtrusiveValidation";function c(a,b,c){a.rules[b]=c;if(a.message)a.messages[b]=a.message}function j(a){return a.replace(/^\s+|\s+$/g,"").split(/\s*,\s*/g)}function f(a){return a.replace(/([!"#$%&'()*+,./:;<=>?@\[\\\]^`{|}~])/g,"\\$1")}function h(a){return a.substr(0,a.lastIndexOf(".")+1)}function g(a,b){if(a.indexOf("*.")===0)a=a.replace("*.",b);return a}function m(c,d){var b=a(this).find("[data-valmsg-for='"+f(d[0].name)+"']"),e=a.parseJSON(b.attr("data-valmsg-replace"))!==false;b.removeClass("field-validation-valid").addClass("field-validation-error");c.data("unobtrusiveContainer",b);if(e){b.empty();c.removeClass("input-validation-error").appendTo(b)}else c.hide()}function l(e,d){var c=a(this).find("[data-valmsg-summary=true]"),b=c.find("ul");if(b&&b.length&&d.errorList.length){b.empty();c.addClass("validation-summary-errors").removeClass("validation-summary-valid");a.each(d.errorList,function(){a("
  • ").html(this.message).appendTo(b)})}}function k(c){var b=c.data("unobtrusiveContainer"),d=a.parseJSON(b.attr("data-valmsg-replace"));if(b){b.addClass("field-validation-valid").removeClass("field-validation-error");c.removeData("unobtrusiveContainer");d&&b.empty()}}function n(){var b=a(this);b.data("validator").resetForm();b.find(".validation-summary-errors").addClass("validation-summary-valid").removeClass("validation-summary-errors");b.find(".field-validation-error").addClass("field-validation-valid").removeClass("field-validation-error").removeData("unobtrusiveContainer").find(">*").removeData("unobtrusiveContainer")}function i(c){var b=a(c),d=b.data(e),f=a.proxy(n,c);if(!d){d={options:{errorClass:"input-validation-error",errorElement:"span",errorPlacement:a.proxy(m,c),invalidHandler:a.proxy(l,c),messages:{},rules:{},success:a.proxy(k,c)},attachValidation:function(){b.unbind("reset."+e,f).bind("reset."+e,f).validate(this.options)},validate:function(){b.validate();return b.valid()}};b.data(e,d)}return d}d.unobtrusive={adapters:[],parseElement:function(b,h){var d=a(b),f=d.parents("form")[0],c,e,g;if(!f)return;c=i(f);c.options.rules[b.name]=e={};c.options.messages[b.name]=g={};a.each(this.adapters,function(){var c="data-val-"+this.name,i=d.attr(c),h={};if(i!==undefined){c+="-";a.each(this.params,function(){h[this]=d.attr(c+this)});this.adapt({element:b,form:f,message:i,params:h,rules:e,messages:g})}});a.extend(e,{__dummy__:true});!h&&c.attachValidation()},parse:function(b){var c=a(b).parents("form").andSelf().add(a(b).find("form")).filter("form");a(b).find(":input[data-val=true]").each(function(){d.unobtrusive.parseElement(this,true)});c.each(function(){var a=i(this);a&&a.attachValidation()})}};b=d.unobtrusive.adapters;b.add=function(c,a,b){if(!b){b=a;a=[]}this.push({name:c,params:a,adapt:b});return this};b.addBool=function(a,b){return this.add(a,function(d){c(d,b||a,true)})};b.addMinMax=function(e,g,f,a,d,b){return this.add(e,[d||"min",b||"max"],function(b){var e=b.params.min,d=b.params.max;if(e&&d)c(b,a,[e,d]);else if(e)c(b,g,e);else d&&c(b,f,d)})};b.addSingleVal=function(a,b,d){return this.add(a,[b||"val"],function(e){c(e,d||a,e.params[b])})};d.addMethod("__dummy__",function(){return true});d.addMethod("regex",function(b,c,d){var a;if(this.optional(c))return true;a=(new RegExp(d)).exec(b);return a&&a.index===0&&a[0].length===b.length});d.addMethod("nonalphamin",function(c,d,b){var a;if(b){a=c.match(/\W/g);a=a&&a.length>=b}return a});b.addSingleVal("accept","exts").addSingleVal("regex","pattern");b.addBool("creditcard").addBool("date").addBool("digits").addBool("email").addBool("number").addBool("url");b.addMinMax("length","minlength","maxlength","rangelength").addMinMax("range","min","max","range");b.add("equalto",["other"],function(b){var i=h(b.element.name),j=b.params.other,d=g(j,i),e=a(b.form).find(":input[name='"+f(d)+"']")[0];c(b,"equalTo",e)});b.add("required",function(a){(a.element.tagName.toUpperCase()!=="INPUT"||a.element.type.toUpperCase()!=="CHECKBOX")&&c(a,"required",true)});b.add("remote",["url","type","additionalfields"],function(b){var d={url:b.params.url,type:b.params.type||"GET",data:{}},e=h(b.element.name);a.each(j(b.params.additionalfields||b.element.name),function(i,h){var c=g(h,e);d.data[c]=function(){return a(b.form).find(":input[name='"+f(c)+"']").val()}});c(b,"remote",d)});b.add("password",["min","nonalphamin","regex"],function(a){a.params.min&&c(a,"minlength",a.params.min);a.params.nonalphamin&&c(a,"nonalphamin",a.params.nonalphamin);a.params.regex&&c(a,"regex",a.params.regex)});a(function(){d.unobtrusive.parse(document)})})(jQuery); -------------------------------------------------------------------------------- /packages/Microsoft.jQuery.Unobtrusive.Validation.2.0.20710.0/Microsoft.jQuery.Unobtrusive.Validation.2.0.20710.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/Microsoft.jQuery.Unobtrusive.Validation.2.0.20710.0/Microsoft.jQuery.Unobtrusive.Validation.2.0.20710.0.nupkg -------------------------------------------------------------------------------- /packages/Modernizr.2.5.3/Modernizr.2.5.3.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/Modernizr.2.5.3/Modernizr.2.5.3.nupkg -------------------------------------------------------------------------------- /packages/Newtonsoft.Json.4.5.6/Newtonsoft.Json.4.5.6.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/Newtonsoft.Json.4.5.6/Newtonsoft.Json.4.5.6.nupkg -------------------------------------------------------------------------------- /packages/Newtonsoft.Json.4.5.6/lib/net40/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/Newtonsoft.Json.4.5.6/lib/net40/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /packages/Sammy.js.0.7.4/Sammy.js.0.7.4.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/Sammy.js.0.7.4/Sammy.js.0.7.4.nupkg -------------------------------------------------------------------------------- /packages/Sammy.js.0.7.4/Sammy.js.0.7.4.nuspec: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Sammy.js 5 | 0.7.4 6 | Sammy.js 7 | Aaron Quint 8 | Aaron Quint 9 | https://github.com/quirkey/sammy/blob/master/LICENSE 10 | http://sammyjs.org/ 11 | false 12 | Sammy.js is a tiny JavaScript framework developed to ease the pain and provide a basic structure for developing JavaScript applications. Sammy tries to achieve this by providing a small core framework and an ever-growing list of plugins for specific functionality. The core includes a simple API for defining applications which are made up primarily of routes and events. By driving application development around a small and specific API, Sammy attempts to keep your code organized while still allowing a lot of breathing room to define your own style and structure. 13 | Sammy.js is a tiny JavaScript framework built on top of jQuery inspired by Ruby's Sinatra. 14 | 15 | © 2013 Aaron Quint. All code provided is open source under the MIT License. 16 | 17 | Sammy JavaScript History Hash Routing 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /packages/Sammy.js.0.7.4/Tools/common.ps1: -------------------------------------------------------------------------------- 1 | function Get-Checksum($file) { 2 | $cryptoProvider = New-Object "System.Security.Cryptography.MD5CryptoServiceProvider" 3 | 4 | $fileInfo = Get-Item $file 5 | trap { ; 6 | continue } $stream = $fileInfo.OpenRead() 7 | if ($? -eq $false) { 8 | # Couldn't open file for reading 9 | return $null 10 | } 11 | 12 | $bytes = $cryptoProvider.ComputeHash($stream) 13 | $checksum = '' 14 | foreach ($byte in $bytes) { 15 | $checksum += $byte.ToString('x2') 16 | } 17 | 18 | $stream.Close() | Out-Null 19 | 20 | return $checksum 21 | } 22 | 23 | function AddOrUpdate-Reference($scriptsFolderProjectItem, $fileNamePattern, $newFileName) { 24 | try { 25 | $referencesFileProjectItem = $scriptsFolderProjectItem.ProjectItems.Item("_references.js") 26 | } 27 | catch { 28 | # _references.js file not found 29 | return 30 | } 31 | 32 | if ($referencesFileProjectItem -eq $null) { 33 | # _references.js file not found 34 | return 35 | } 36 | 37 | $referencesFilePath = $referencesFileProjectItem.FileNames(1) 38 | $referencesTempFilePath = Join-Path $env:TEMP "_references.tmp.js" 39 | 40 | if ((Select-String $referencesFilePath -pattern $fileNamePattern).Length -eq 0) { 41 | # File has no existing matching reference line 42 | # Add the full reference line to the beginning of the file 43 | "/// " | Add-Content $referencesTempFilePath -Encoding UTF8 44 | Get-Content $referencesFilePath | Add-Content $referencesTempFilePath 45 | } 46 | else { 47 | # Loop through file and replace old file name with new file name 48 | Get-Content $referencesFilePath | ForEach-Object { $_ -replace $fileNamePattern, $newFileName } > $referencesTempFilePath 49 | } 50 | 51 | # Copy over the new _references.js file 52 | Copy-Item $referencesTempFilePath $referencesFilePath -Force 53 | Remove-Item $referencesTempFilePath -Force 54 | } 55 | 56 | function Remove-Reference($scriptsFolderProjectItem, $fileNamePattern) { 57 | try { 58 | $referencesFileProjectItem = $scriptsFolderProjectItem.ProjectItems.Item("_references.js") 59 | } 60 | catch { 61 | # _references.js file not found 62 | return 63 | } 64 | 65 | if ($referencesFileProjectItem -eq $null) { 66 | return 67 | } 68 | 69 | $referencesFilePath = $referencesFileProjectItem.FileNames(1) 70 | $referencesTempFilePath = Join-Path $env:TEMP "_references.tmp.js" 71 | 72 | if ((Select-String $referencesFilePath -pattern $fileNamePattern).Length -eq 1) { 73 | # Delete the line referencing the file 74 | Get-Content $referencesFilePath | ForEach-Object { if (-not ($_ -match $fileNamePattern)) { $_ } } > $referencesTempFilePath 75 | 76 | # Copy over the new _references.js file 77 | Copy-Item $referencesTempFilePath $referencesFilePath -Force 78 | Remove-Item $referencesTempFilePath -Force 79 | } 80 | } 81 | 82 | function Delete-ProjectItem($item) { 83 | $itemDeleted = $false 84 | for ($1=1; $i -le 5; $i++) { 85 | try { 86 | $item.Delete() 87 | $itemDeleted = $true 88 | break 89 | } 90 | catch { 91 | # Try again in 200ms 92 | [System.Threading.Thread]::Sleep(200) 93 | } 94 | } 95 | if ($itemDeleted -eq $false) { 96 | throw "Unable to delete project item after five attempts." 97 | } 98 | } 99 | 100 | # Extract the version number from the sammy file in the package's content\scripts folder 101 | $packageScriptsFolder = Join-Path $installPath Content\Scripts 102 | $sammyFileName = Join-Path $packageScriptsFolder "sammy-*.js" | Get-ChildItem -Exclude "*.min.js","*-vsdoc.js" | Split-Path -Leaf 103 | $sammyFileNameRegEx = "sammy-((?:\d+\.)?(?:\d+\.)?(?:\d+\.)?(?:\d+)).js" 104 | $sammyFileName -match $sammyFileNameRegEx 105 | $ver = $matches[1] 106 | 107 | $intelliSenseFileName = "sammy-$ver.intellisense.js" 108 | 109 | # Get the project item for the scripts folder 110 | try { 111 | $scriptsFolderProjectItem = $project.ProjectItems.Item("Scripts") 112 | $projectScriptsFolderPath = $scriptsFolderProjectItem.FileNames(1) 113 | } 114 | catch { 115 | # No Scripts folder 116 | Write-Host "No scripts folder found" 117 | } -------------------------------------------------------------------------------- /packages/Sammy.js.0.7.4/Tools/install.ps1: -------------------------------------------------------------------------------- 1 | param($installPath, $toolsPath, $package, $project) 2 | 3 | . (Join-Path $toolsPath common.ps1) 4 | 5 | exit 6 | 7 | # VS 11 and above supports the new intellisense JS files 8 | #$vsVersion = [System.Version]::Parse($dte.Version) 9 | #$supportsJsIntelliSenseFile = $vsVersion.Major -ge 11 10 | 11 | #if (-not $supportsJsIntelliSenseFile) { 12 | # $displayVersion = $vsVersion.Major 13 | # Write-Host "IntelliSense JS files are not supported by your version of Visual Studio: $displayVersion" 14 | # exit 15 | #} 16 | 17 | #if ($scriptsFolderProjectItem -eq $null) { 18 | # # No Scripts folder 19 | # Write-Host "No Scripts folder found" 20 | # exit 21 | #} 22 | 23 | # Delete the vsdoc file from the project 24 | try { 25 | $vsDocProjectItem = $scriptsFolderProjectItem.ProjectItems.Item("sammy-$ver-vsdoc.js") 26 | Delete-ProjectItem $vsDocProjectItem 27 | } 28 | catch { 29 | # Write-Host "Error deleting vsdoc file: " + $_.Exception -ForegroundColor Red 30 | exit 31 | } 32 | 33 | # Copy the intellisense file to the project from the tools folder 34 | #$intelliSenseFileSourcePath = Join-Path $toolsPath $intelliSenseFileName 35 | #try { 36 | # $scriptsFolderProjectItem.ProjectItems.AddFromFileCopy($intelliSenseFileSourcePath) 37 | #} 38 | #catch { 39 | # # This will throw if the file already exists, so we need to catch here 40 | #} 41 | 42 | # Update the _references.js file 43 | AddOrUpdate-Reference $scriptsFolderProjectItem $sammyFileNameRegEx $sammyFileName -------------------------------------------------------------------------------- /packages/Sammy.js.0.7.4/Tools/uninstall.ps1: -------------------------------------------------------------------------------- 1 | param($installPath, $toolsPath, $package, $project) 2 | 3 | . (Join-Path $toolsPath common.ps1) 4 | 5 | # Determine the file paths 6 | $projectIntelliSenseFilePath = Join-Path $projectScriptsFolderPath $intelliSenseFileName 7 | $origIntelliSenseFilePath = Join-Path $toolsPath $intelliSenseFileName 8 | 9 | if (Test-Path $projectIntelliSenseFilePath) { 10 | if ((Get-Checksum $projectIntelliSenseFilePath) -eq (Get-Checksum $origIntelliSenseFilePath)) { 11 | # The intellisense file in the project matches the file in the tools folder, delete it 12 | 13 | if ($scriptsFolderProjectItem -eq $null) { 14 | # No Scripts folder 15 | exit 16 | } 17 | 18 | try { 19 | # Get the project item for the intellisense file 20 | $intelliSenseFileProjectItem = $scriptsFolderProjectItem.ProjectItems.Item($intelliSenseFileName) 21 | } 22 | catch { 23 | # The item wasn't found 24 | exit 25 | } 26 | 27 | # Delete the project item 28 | Delete-ProjectItem $intelliSenseFileProjectItem 29 | } 30 | else { 31 | $projectScriptsFolderLeaf = Split-Path $projectScriptsFolderPath -Leaf 32 | Write-Host "Skipping '$projectScriptsFolderLeaf\$intelliSenseFileName' because it was modified." -ForegroundColor Magenta 33 | } 34 | } 35 | else { 36 | # The intellisense file was not found in project 37 | Write-Host "The intellisense file was not found in project at path $projectIntelliSenseFilePath" 38 | } 39 | 40 | # Update the _references.js file 41 | Remove-Reference $scriptsFolderProjectItem $sammyFileNameRegEx -------------------------------------------------------------------------------- /packages/Twitter.Bootstrap.2.3.1/Twitter.Bootstrap.2.3.1.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/Twitter.Bootstrap.2.3.1/Twitter.Bootstrap.2.3.1.nupkg -------------------------------------------------------------------------------- /packages/Twitter.Bootstrap.2.3.1/Twitter.Bootstrap.2.3.1.nuspec: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Twitter.Bootstrap 5 | 2.3.1 6 | Bootstrap 7 | Jacob Thornton, Mark Otto 8 | Jacob Thornton, Mark Otto 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | http://twitter.github.com/bootstrap/ 11 | https://raw.github.com/twitter/bootstrap/master/docs/assets/ico/apple-touch-icon-72-precomposed.png 12 | false 13 | Sleek, intuitive, and powerful front-end framework for faster and easier web development. Issues? Please post them here https://github.com/sirkirby/twitter-bootstrap-nuget/issues 14 | Copyright 2013 Twitter, Inc. 15 | 16 | Licensed under the Apache License, Version 2.0 (the "License"); 17 | you may not use this file except in compliance with the License. 18 | https://github.com/twitter/bootstrap/wiki/Changelog 19 | 20 | http://blog.getbootstrap.com/2013/03/01/bootstrap-2-3-1-released/ 21 | en-US 22 | twitter css css3 html html5 less ui jquery ender bootstrap 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /packages/Twitter.Bootstrap.2.3.1/content/Content/images/glyphicons-halflings-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/Twitter.Bootstrap.2.3.1/content/Content/images/glyphicons-halflings-white.png -------------------------------------------------------------------------------- /packages/Twitter.Bootstrap.2.3.1/content/Content/images/glyphicons-halflings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/Twitter.Bootstrap.2.3.1/content/Content/images/glyphicons-halflings.png -------------------------------------------------------------------------------- /packages/WebGrease.1.1.0/WebGrease.1.1.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/WebGrease.1.1.0/WebGrease.1.1.0.nupkg -------------------------------------------------------------------------------- /packages/WebGrease.1.1.0/lib/Antlr3.Runtime.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/WebGrease.1.1.0/lib/Antlr3.Runtime.dll -------------------------------------------------------------------------------- /packages/WebGrease.1.1.0/lib/WebGrease.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/WebGrease.1.1.0/lib/WebGrease.dll -------------------------------------------------------------------------------- /packages/WebGrease.1.1.0/tools/WG.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/WebGrease.1.1.0/tools/WG.exe -------------------------------------------------------------------------------- /packages/jQuery.1.9.1/Tools/common.ps1: -------------------------------------------------------------------------------- 1 | function Get-Checksum($file) { 2 | $cryptoProvider = New-Object "System.Security.Cryptography.MD5CryptoServiceProvider" 3 | 4 | $fileInfo = Get-Item $file 5 | trap { ; 6 | continue } $stream = $fileInfo.OpenRead() 7 | if ($? -eq $false) { 8 | # Couldn't open file for reading 9 | return $null 10 | } 11 | 12 | $bytes = $cryptoProvider.ComputeHash($stream) 13 | $checksum = '' 14 | foreach ($byte in $bytes) { 15 | $checksum += $byte.ToString('x2') 16 | } 17 | 18 | $stream.Close() | Out-Null 19 | 20 | return $checksum 21 | } 22 | 23 | function AddOrUpdate-Reference($scriptsFolderProjectItem, $fileNamePattern, $newFileName) { 24 | try { 25 | $referencesFileProjectItem = $scriptsFolderProjectItem.ProjectItems.Item("_references.js") 26 | } 27 | catch { 28 | # _references.js file not found 29 | return 30 | } 31 | 32 | if ($referencesFileProjectItem -eq $null) { 33 | # _references.js file not found 34 | return 35 | } 36 | 37 | $referencesFilePath = $referencesFileProjectItem.FileNames(1) 38 | $referencesTempFilePath = Join-Path $env:TEMP "_references.tmp.js" 39 | 40 | if ((Select-String $referencesFilePath -pattern $fileNamePattern).Length -eq 0) { 41 | # File has no existing matching reference line 42 | # Add the full reference line to the beginning of the file 43 | "/// " | Add-Content $referencesTempFilePath -Encoding UTF8 44 | Get-Content $referencesFilePath | Add-Content $referencesTempFilePath 45 | } 46 | else { 47 | # Loop through file and replace old file name with new file name 48 | Get-Content $referencesFilePath | ForEach-Object { $_ -replace $fileNamePattern, $newFileName } > $referencesTempFilePath 49 | } 50 | 51 | # Copy over the new _references.js file 52 | Copy-Item $referencesTempFilePath $referencesFilePath -Force 53 | Remove-Item $referencesTempFilePath -Force 54 | } 55 | 56 | function Remove-Reference($scriptsFolderProjectItem, $fileNamePattern) { 57 | try { 58 | $referencesFileProjectItem = $scriptsFolderProjectItem.ProjectItems.Item("_references.js") 59 | } 60 | catch { 61 | # _references.js file not found 62 | return 63 | } 64 | 65 | if ($referencesFileProjectItem -eq $null) { 66 | return 67 | } 68 | 69 | $referencesFilePath = $referencesFileProjectItem.FileNames(1) 70 | $referencesTempFilePath = Join-Path $env:TEMP "_references.tmp.js" 71 | 72 | if ((Select-String $referencesFilePath -pattern $fileNamePattern).Length -eq 1) { 73 | # Delete the line referencing the file 74 | Get-Content $referencesFilePath | ForEach-Object { if (-not ($_ -match $fileNamePattern)) { $_ } } > $referencesTempFilePath 75 | 76 | # Copy over the new _references.js file 77 | Copy-Item $referencesTempFilePath $referencesFilePath -Force 78 | Remove-Item $referencesTempFilePath -Force 79 | } 80 | } 81 | 82 | function Delete-ProjectItem($item) { 83 | $itemDeleted = $false 84 | for ($1=1; $i -le 5; $i++) { 85 | try { 86 | $item.Delete() 87 | $itemDeleted = $true 88 | break 89 | } 90 | catch { 91 | # Try again in 200ms 92 | [System.Threading.Thread]::Sleep(200) 93 | } 94 | } 95 | if ($itemDeleted -eq $false) { 96 | throw "Unable to delete project item after five attempts." 97 | } 98 | } 99 | 100 | # Extract the version number from the jquery file in the package's content\scripts folder 101 | $packageScriptsFolder = Join-Path $installPath Content\Scripts 102 | $jqueryFileName = Join-Path $packageScriptsFolder "jquery-*.js" | Get-ChildItem -Exclude "*.min.js","*-vsdoc.js" | Split-Path -Leaf 103 | $jqueryFileNameRegEx = "jquery-((?:\d+\.)?(?:\d+\.)?(?:\d+\.)?(?:\d+)).js" 104 | $jqueryFileName -match $jqueryFileNameRegEx 105 | $ver = $matches[1] 106 | 107 | $intelliSenseFileName = "jquery-$ver.intellisense.js" 108 | 109 | # Get the project item for the scripts folder 110 | try { 111 | $scriptsFolderProjectItem = $project.ProjectItems.Item("Scripts") 112 | $projectScriptsFolderPath = $scriptsFolderProjectItem.FileNames(1) 113 | } 114 | catch { 115 | # No Scripts folder 116 | Write-Host "No scripts folder found" 117 | } -------------------------------------------------------------------------------- /packages/jQuery.1.9.1/Tools/install.ps1: -------------------------------------------------------------------------------- 1 | param($installPath, $toolsPath, $package, $project) 2 | 3 | . (Join-Path $toolsPath common.ps1) 4 | 5 | # VS 11 and above supports the new intellisense JS files 6 | $vsVersion = [System.Version]::Parse($dte.Version) 7 | $supportsJsIntelliSenseFile = $vsVersion.Major -ge 11 8 | 9 | if (-not $supportsJsIntelliSenseFile) { 10 | $displayVersion = $vsVersion.Major 11 | Write-Host "IntelliSense JS files are not supported by your version of Visual Studio: $displayVersion" 12 | exit 13 | } 14 | 15 | if ($scriptsFolderProjectItem -eq $null) { 16 | # No Scripts folder 17 | Write-Host "No Scripts folder found" 18 | exit 19 | } 20 | 21 | # Delete the vsdoc file from the project 22 | try { 23 | $vsDocProjectItem = $scriptsFolderProjectItem.ProjectItems.Item("jquery-$ver-vsdoc.js") 24 | Delete-ProjectItem $vsDocProjectItem 25 | } 26 | catch { 27 | Write-Host "Error deleting vsdoc file: " + $_.Exception -ForegroundColor Red 28 | exit 29 | } 30 | 31 | # Copy the intellisense file to the project from the tools folder 32 | $intelliSenseFileSourcePath = Join-Path $toolsPath $intelliSenseFileName 33 | try { 34 | $scriptsFolderProjectItem.ProjectItems.AddFromFileCopy($intelliSenseFileSourcePath) 35 | } 36 | catch { 37 | # This will throw if the file already exists, so we need to catch here 38 | } 39 | 40 | # Update the _references.js file 41 | AddOrUpdate-Reference $scriptsFolderProjectItem $jqueryFileNameRegEx $jqueryFileName -------------------------------------------------------------------------------- /packages/jQuery.1.9.1/Tools/uninstall.ps1: -------------------------------------------------------------------------------- 1 | param($installPath, $toolsPath, $package, $project) 2 | 3 | . (Join-Path $toolsPath common.ps1) 4 | 5 | # Determine the file paths 6 | $projectIntelliSenseFilePath = Join-Path $projectScriptsFolderPath $intelliSenseFileName 7 | $origIntelliSenseFilePath = Join-Path $toolsPath $intelliSenseFileName 8 | 9 | if (Test-Path $projectIntelliSenseFilePath) { 10 | if ((Get-Checksum $projectIntelliSenseFilePath) -eq (Get-Checksum $origIntelliSenseFilePath)) { 11 | # The intellisense file in the project matches the file in the tools folder, delete it 12 | 13 | if ($scriptsFolderProjectItem -eq $null) { 14 | # No Scripts folder 15 | exit 16 | } 17 | 18 | try { 19 | # Get the project item for the intellisense file 20 | $intelliSenseFileProjectItem = $scriptsFolderProjectItem.ProjectItems.Item($intelliSenseFileName) 21 | } 22 | catch { 23 | # The item wasn't found 24 | exit 25 | } 26 | 27 | # Delete the project item 28 | Delete-ProjectItem $intelliSenseFileProjectItem 29 | } 30 | else { 31 | $projectScriptsFolderLeaf = Split-Path $projectScriptsFolderPath -Leaf 32 | Write-Host "Skipping '$projectScriptsFolderLeaf\$intelliSenseFileName' because it was modified." -ForegroundColor Magenta 33 | } 34 | } 35 | else { 36 | # The intellisense file was not found in project 37 | Write-Host "The intellisense file was not found in project at path $projectIntelliSenseFilePath" 38 | } 39 | 40 | # Update the _references.js file 41 | Remove-Reference $scriptsFolderProjectItem $jqueryFileNameRegEx -------------------------------------------------------------------------------- /packages/jQuery.1.9.1/jQuery.1.9.1.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/jQuery.1.9.1/jQuery.1.9.1.nupkg -------------------------------------------------------------------------------- /packages/jQuery.1.9.1/jQuery.1.9.1.nuspec: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | jQuery 5 | 1.9.1 6 | jQuery 7 | jQuery Foundation, Inc. 8 | jQuery Foundation, Inc. 9 | http://jquery.org/license 10 | http://jquery.com/ 11 | false 12 | jQuery is a new kind of JavaScript Library. 13 | jQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. jQuery is designed to change the way that you write JavaScript. 14 | NOTE: This package is maintained on behalf of the library owners by the NuGet Community Packages project at http://nugetpackages.codeplex.com/ 15 | en-US 16 | jQuery 17 | 18 | 19 | -------------------------------------------------------------------------------- /packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png -------------------------------------------------------------------------------- /packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-bg_flat_75_ffffff_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-bg_flat_75_ffffff_40x100.png -------------------------------------------------------------------------------- /packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-bg_glass_55_fbf9ee_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-bg_glass_55_fbf9ee_1x400.png -------------------------------------------------------------------------------- /packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-bg_glass_65_ffffff_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-bg_glass_65_ffffff_1x400.png -------------------------------------------------------------------------------- /packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-bg_glass_75_dadada_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-bg_glass_75_dadada_1x400.png -------------------------------------------------------------------------------- /packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-bg_glass_75_e6e6e6_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-bg_glass_75_e6e6e6_1x400.png -------------------------------------------------------------------------------- /packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-bg_glass_95_fef1ec_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-bg_glass_95_fef1ec_1x400.png -------------------------------------------------------------------------------- /packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png -------------------------------------------------------------------------------- /packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-icons_222222_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-icons_222222_256x240.png -------------------------------------------------------------------------------- /packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-icons_2e83ff_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-icons_2e83ff_256x240.png -------------------------------------------------------------------------------- /packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-icons_454545_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-icons_454545_256x240.png -------------------------------------------------------------------------------- /packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-icons_888888_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-icons_888888_256x240.png -------------------------------------------------------------------------------- /packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-icons_cd0a0a_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-icons_cd0a0a_256x240.png -------------------------------------------------------------------------------- /packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/jquery.ui.accordion.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Note: While Microsoft is not the author of this file, Microsoft is 3 | * offering you a license subject to the terms of the Microsoft Software 4 | * License Terms for Microsoft ASP.NET Model View Controller 4 Developer Preview. 5 | * Microsoft reserves all other rights. The notices below are provided 6 | * for informational purposes only and are not the license terms under 7 | * which Microsoft distributed this file. 8 | * 9 | * jQuery UI Accordion 1.8.11 10 | * 11 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) 12 | * 13 | * http://docs.jquery.com/UI/Accordion#theming 14 | */ 15 | /* IE/Win - Fix animation bug - #4615 */ 16 | .ui-accordion { width: 100%; } 17 | .ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; } 18 | .ui-accordion .ui-accordion-li-fix { display: inline; } 19 | .ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; } 20 | .ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; } 21 | .ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; } 22 | .ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; } 23 | .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; } 24 | .ui-accordion .ui-accordion-content-active { display: block; } 25 | -------------------------------------------------------------------------------- /packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/jquery.ui.all.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Note: While Microsoft is not the author of this file, Microsoft is 3 | * offering you a license subject to the terms of the Microsoft Software 4 | * License Terms for Microsoft ASP.NET Model View Controller 4 Developer Preview. 5 | * Microsoft reserves all other rights. The notices below are provided 6 | * for informational purposes only and are not the license terms under 7 | * which Microsoft distributed this file. 8 | * 9 | * jQuery UI CSS Framework 1.8.11 10 | * 11 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) 12 | * 13 | * http://docs.jquery.com/UI/Theming 14 | */ 15 | @import "jquery.ui.base.css"; 16 | @import "jquery.ui.theme.css"; 17 | -------------------------------------------------------------------------------- /packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/jquery.ui.autocomplete.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Note: While Microsoft is not the author of this file, Microsoft is 3 | * offering you a license subject to the terms of the Microsoft Software 4 | * License Terms for Microsoft ASP.NET Model View Controller 4 Developer Preview. 5 | * Microsoft reserves all other rights. The notices below are provided 6 | * for informational purposes only and are not the license terms under 7 | * which Microsoft distributed this file. 8 | * 9 | * jQuery UI Autocomplete 1.8.11 10 | * 11 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) 12 | * http://docs.jquery.com/UI/Autocomplete#theming 13 | */ 14 | .ui-autocomplete { position: absolute; cursor: default; } 15 | 16 | /* workarounds */ 17 | * html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */ 18 | 19 | /* 20 | * Note: While Microsoft is not the author of this file, Microsoft is 21 | * offering you a license subject to the terms of the Microsoft Software 22 | * License Terms for Microsoft ASP.NET Model View Controller 4 Developer Preview. 23 | * Microsoft reserves all other rights. The notices below are provided 24 | * for informational purposes only and are not the license terms under 25 | * which Microsoft distributed this file. 26 | * 27 | * jQuery UI Menu 1.8.11 28 | * 29 | * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) 30 | * 31 | * http://docs.jquery.com/UI/Menu#theming 32 | */ 33 | .ui-menu { 34 | list-style:none; 35 | padding: 2px; 36 | margin: 0; 37 | display:block; 38 | float: left; 39 | } 40 | .ui-menu .ui-menu { 41 | margin-top: -3px; 42 | } 43 | .ui-menu .ui-menu-item { 44 | margin:0; 45 | padding: 0; 46 | zoom: 1; 47 | float: left; 48 | clear: left; 49 | width: 100%; 50 | } 51 | .ui-menu .ui-menu-item a { 52 | text-decoration:none; 53 | display:block; 54 | padding:.2em .4em; 55 | line-height:1.5; 56 | zoom:1; 57 | } 58 | .ui-menu .ui-menu-item a.ui-state-hover, 59 | .ui-menu .ui-menu-item a.ui-state-active { 60 | font-weight: normal; 61 | margin: -1px; 62 | } 63 | -------------------------------------------------------------------------------- /packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/jquery.ui.base.css: -------------------------------------------------------------------------------- 1 | @import url("jquery.ui.core.css"); 2 | @import url("jquery.ui.resizable.css"); 3 | @import url("jquery.ui.selectable.css"); 4 | @import url("jquery.ui.accordion.css"); 5 | @import url("jquery.ui.autocomplete.css"); 6 | @import url("jquery.ui.button.css"); 7 | @import url("jquery.ui.dialog.css"); 8 | @import url("jquery.ui.slider.css"); 9 | @import url("jquery.ui.tabs.css"); 10 | @import url("jquery.ui.datepicker.css"); 11 | @import url("jquery.ui.progressbar.css"); -------------------------------------------------------------------------------- /packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/jquery.ui.button.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Note: While Microsoft is not the author of this file, Microsoft is 3 | * offering you a license subject to the terms of the Microsoft Software 4 | * License Terms for Microsoft ASP.NET Model View Controller 4 Developer Preview. 5 | * Microsoft reserves all other rights. The notices below are provided 6 | * for informational purposes only and are not the license terms under 7 | * which Microsoft distributed this file. 8 | * 9 | * jQuery UI Button 1.8.11 10 | * 11 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) 12 | * 13 | * http://docs.jquery.com/UI/Button#theming 14 | */ 15 | .ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */ 16 | .ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */ 17 | button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */ 18 | .ui-button-icons-only { width: 3.4em; } 19 | button.ui-button-icons-only { width: 3.7em; } 20 | 21 | /*button text element */ 22 | .ui-button .ui-button-text { display: block; line-height: 1.4; } 23 | .ui-button-text-only .ui-button-text { padding: .4em 1em; } 24 | .ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; } 25 | .ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; } 26 | .ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; } 27 | .ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; } 28 | /* no icon support for input elements, provide padding by default */ 29 | input.ui-button { padding: .4em 1em; } 30 | 31 | /*button icon element(s) */ 32 | .ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; } 33 | .ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; } 34 | .ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; } 35 | .ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } 36 | .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } 37 | 38 | /*button sets*/ 39 | .ui-buttonset { margin-right: 7px; } 40 | .ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; } 41 | 42 | /* workarounds */ 43 | button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */ 44 | -------------------------------------------------------------------------------- /packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/jquery.ui.core.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Note: While Microsoft is not the author of this file, Microsoft is 3 | * offering you a license subject to the terms of the Microsoft Software 4 | * License Terms for Microsoft ASP.NET Model View Controller 4 Developer Preview. 5 | * Microsoft reserves all other rights. The notices below are provided 6 | * for informational purposes only and are not the license terms under 7 | * which Microsoft distributed this file. 8 | * 9 | * jQuery UI CSS Framework 1.8.11 10 | * 11 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) 12 | * 13 | * http://docs.jquery.com/UI/Theming/API 14 | */ 15 | 16 | /* Layout helpers 17 | ----------------------------------*/ 18 | .ui-helper-hidden { display: none; } 19 | .ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); } 20 | .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } 21 | .ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } 22 | .ui-helper-clearfix { display: inline-block; } 23 | /* required comment for clearfix to work in Opera \*/ 24 | * html .ui-helper-clearfix { height:1%; } 25 | .ui-helper-clearfix { display:block; } 26 | /* end clearfix */ 27 | .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } 28 | 29 | 30 | /* Interaction Cues 31 | ----------------------------------*/ 32 | .ui-state-disabled { cursor: default !important; } 33 | 34 | 35 | /* Icons 36 | ----------------------------------*/ 37 | 38 | /* states and images */ 39 | .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } 40 | 41 | 42 | /* Misc visuals 43 | ----------------------------------*/ 44 | 45 | /* Overlays */ 46 | .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } 47 | -------------------------------------------------------------------------------- /packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/jquery.ui.datepicker.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Note: While Microsoft is not the author of this file, Microsoft is 3 | * offering you a license subject to the terms of the Microsoft Software 4 | * License Terms for Microsoft ASP.NET Model View Controller 4 Developer Preview. 5 | * Microsoft reserves all other rights. The notices below are provided 6 | * for informational purposes only and are not the license terms under 7 | * which Microsoft distributed this file. 8 | * 9 | * jQuery UI Datepicker 1.8.11 10 | * 11 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) 12 | * 13 | * http://docs.jquery.com/UI/Datepicker#theming 14 | */ 15 | .ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; } 16 | .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; } 17 | .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; } 18 | .ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; } 19 | .ui-datepicker .ui-datepicker-prev { left:2px; } 20 | .ui-datepicker .ui-datepicker-next { right:2px; } 21 | .ui-datepicker .ui-datepicker-prev-hover { left:1px; } 22 | .ui-datepicker .ui-datepicker-next-hover { right:1px; } 23 | .ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } 24 | .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } 25 | .ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; } 26 | .ui-datepicker select.ui-datepicker-month-year {width: 100%;} 27 | .ui-datepicker select.ui-datepicker-month, 28 | .ui-datepicker select.ui-datepicker-year { width: 49%;} 29 | .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; } 30 | .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } 31 | .ui-datepicker td { border: 0; padding: 1px; } 32 | .ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } 33 | .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } 34 | .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } 35 | .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; } 36 | 37 | /* with multiple calendars */ 38 | .ui-datepicker.ui-datepicker-multi { width:auto; } 39 | .ui-datepicker-multi .ui-datepicker-group { float:left; } 40 | .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; } 41 | .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; } 42 | .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; } 43 | .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; } 44 | .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } 45 | .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } 46 | .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } 47 | .ui-datepicker-row-break { clear:both; width:100%; } 48 | 49 | /* RTL support */ 50 | .ui-datepicker-rtl { direction: rtl; } 51 | .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } 52 | .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } 53 | .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } 54 | .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } 55 | .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; } 56 | .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } 57 | .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; } 58 | .ui-datepicker-rtl .ui-datepicker-group { float:right; } 59 | .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; } 60 | .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; } 61 | 62 | /* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ 63 | .ui-datepicker-cover { 64 | display: none; /*sorry for IE5*/ 65 | display/**/: block; /*sorry for IE5*/ 66 | position: absolute; /*must have*/ 67 | z-index: -1; /*must have*/ 68 | filter: mask(); /*must have*/ 69 | top: -4px; /*must have*/ 70 | left: -4px; /*must have*/ 71 | width: 200px; /*must have*/ 72 | height: 200px; /*must have*/ 73 | } -------------------------------------------------------------------------------- /packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/jquery.ui.dialog.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Note: While Microsoft is not the author of this file, Microsoft is 3 | * offering you a license subject to the terms of the Microsoft Software 4 | * License Terms for Microsoft ASP.NET Model View Controller 4 Developer Preview. 5 | * Microsoft reserves all other rights. The notices below are provided 6 | * for informational purposes only and are not the license terms under 7 | * which Microsoft distributed this file. 8 | * 9 | * jQuery UI Dialog 1.8.11 10 | * 11 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) 12 | * 13 | * http://docs.jquery.com/UI/Dialog#theming 14 | */ 15 | .ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; } 16 | .ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; } 17 | .ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } 18 | .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; } 19 | .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; } 20 | .ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; } 21 | .ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } 22 | .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; } 23 | .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; } 24 | .ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; } 25 | .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } 26 | .ui-draggable .ui-dialog-titlebar { cursor: move; } 27 | -------------------------------------------------------------------------------- /packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/jquery.ui.progressbar.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Note: While Microsoft is not the author of this file, Microsoft is 3 | * offering you a license subject to the terms of the Microsoft Software 4 | * License Terms for Microsoft ASP.NET Model View Controller 4 Developer Preview. 5 | * Microsoft reserves all other rights. The notices below are provided 6 | * for informational purposes only and are not the license terms under 7 | * which Microsoft distributed this file. 8 | * 9 | * jQuery UI Progressbar 1.8.11 10 | * 11 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) 12 | * 13 | * http://docs.jquery.com/UI/Progressbar#theming 14 | */ 15 | .ui-progressbar { height:2em; text-align: left; } 16 | .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; } -------------------------------------------------------------------------------- /packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/jquery.ui.resizable.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Note: While Microsoft is not the author of this file, Microsoft is 3 | * offering you a license subject to the terms of the Microsoft Software 4 | * License Terms for Microsoft ASP.NET Model View Controller 4 Developer Preview. 5 | * Microsoft reserves all other rights. The notices below are provided 6 | * for informational purposes only and are not the license terms under 7 | * which Microsoft distributed this file. 8 | * 9 | * jQuery UI Resizable 1.8.11 10 | * 11 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)] 12 | * 13 | * http://docs.jquery.com/UI/Resizable#theming 14 | */ 15 | .ui-resizable { position: relative;} 16 | .ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;} 17 | .ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } 18 | .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; } 19 | .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; } 20 | .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; } 21 | .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; } 22 | .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; } 23 | .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } 24 | .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } 25 | .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;} -------------------------------------------------------------------------------- /packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/jquery.ui.selectable.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Note: While Microsoft is not the author of this file, Microsoft is 3 | * offering you a license subject to the terms of the Microsoft Software 4 | * License Terms for Microsoft ASP.NET Model View Controller 4 Developer Preview. 5 | * Microsoft reserves all other rights. The notices below are provided 6 | * for informational purposes only and are not the license terms under 7 | * which Microsoft distributed this file. 8 | * 9 | * jQuery UI Selectable 1.8.11 10 | * 11 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) 12 | * 13 | * http://docs.jquery.com/UI/Selectable#theming 14 | */ 15 | .ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; } 16 | -------------------------------------------------------------------------------- /packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/jquery.ui.slider.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Note: While Microsoft is not the author of this file, Microsoft is 3 | * offering you a license subject to the terms of the Microsoft Software 4 | * License Terms for Microsoft ASP.NET Model View Controller 4 Developer Preview. 5 | * Microsoft reserves all other rights. The notices below are provided 6 | * for informational purposes only and are not the license terms under 7 | * which Microsoft distributed this file. 8 | * 9 | * jQuery UI Slider 1.8.11 10 | * 11 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) 12 | * 13 | * http://docs.jquery.com/UI/Slider#theming 14 | */ 15 | .ui-slider { position: relative; text-align: left; } 16 | .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; } 17 | .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; } 18 | 19 | .ui-slider-horizontal { height: .8em; } 20 | .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } 21 | .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } 22 | .ui-slider-horizontal .ui-slider-range-min { left: 0; } 23 | .ui-slider-horizontal .ui-slider-range-max { right: 0; } 24 | 25 | .ui-slider-vertical { width: .8em; height: 100px; } 26 | .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } 27 | .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } 28 | .ui-slider-vertical .ui-slider-range-min { bottom: 0; } 29 | .ui-slider-vertical .ui-slider-range-max { top: 0; } -------------------------------------------------------------------------------- /packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/jquery.ui.tabs.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Note: While Microsoft is not the author of this file, Microsoft is 3 | * offering you a license subject to the terms of the Microsoft Software 4 | * License Terms for Microsoft ASP.NET Model View Controller 4 Developer Preview. 5 | * Microsoft reserves all other rights. The notices below are provided 6 | * for informational purposes only and are not the license terms under 7 | * which Microsoft distributed this file. 8 | * 9 | * jQuery UI Tabs 1.8.11 10 | * 11 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) 12 | * 13 | * http://docs.jquery.com/UI/Tabs#theming 14 | */ 15 | .ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ 16 | .ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; } 17 | .ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; } 18 | .ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; } 19 | .ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; } 20 | .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; } 21 | .ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ 22 | .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; } 23 | .ui-tabs .ui-tabs-hide { display: none !important; } 24 | -------------------------------------------------------------------------------- /packages/jQuery.UI.Combined.1.8.11/jQuery.UI.Combined.1.8.11.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/jQuery.UI.Combined.1.8.11/jQuery.UI.Combined.1.8.11.nupkg -------------------------------------------------------------------------------- /packages/jQuery.Validation.1.9.0.1/jQuery.Validation.1.9.0.1.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/jQuery.Validation.1.9.0.1/jQuery.Validation.1.9.0.1.nupkg -------------------------------------------------------------------------------- /packages/knockoutjs.2.1.0/knockoutjs.2.1.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eulerfx/DDDInventoryItemFSharp/d38149238c439ddcd4ef51ceafe116060c626d41/packages/knockoutjs.2.1.0/knockoutjs.2.1.0.nupkg -------------------------------------------------------------------------------- /packages/repositories.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | --------------------------------------------------------------------------------