Not sure in what way the MarkerClusterer would be effected by such change in URL routing, but feel free to send along your project so we can investigate.
Hi, Although I sent it by email, here is a link to test project, possibly for others:
BTW, Is there any progress with it?
Your attachment uses an older WebSharper project layout and has a number of paths that are invalid on machines other than yours. If you could recreate it using the latest WebSharper and send that, it would be appreciated.
In the meantime, does your page rely on relative links? When your page's URL changes depth (such as moving from /abc
to /abc/xyz
, it will break relatively links you may have on it. This could cause what you are experiencing, although it's hard to tell without a running example. Perhaps you could just send a URL to a live deployment?
Thanks.
Hi Adam,
I am not sure if I can install new version of WS on my production machine. Probably I don't have permission on it (compile our commercial project with it) and it could interfere with my older project. Or is it OK? If it is OK I will recreate my test project and send to you.
My attachment is only slightly modified version of "Sample Web Application (sitelets)" project from VisualStudio where is only inserted MarkerClusterer to the home page, so I don't think there is a problem with relative links. And it is not a lot of work to reproduce it in newer version of WS.
In the meantime here is the URL to live deployment: [link:ns.codoma.cz]
-you can see that error in the console in the firebug for instance.
Thank you.
I see the issue. The dependency for the MarkerClusterer library is included as
Scripts/markerclusterer_compiled.js
instead of
/MarkerTest/Scripts/markerclusterer_compiled.js
Just to be sure, how is this dependency declared on the extension you are compiling with?
It is declared in Main.fs in IntelliFactory.WebSharper.MarkerClusterer as shown in:
[link:fpish.net]
So how to set it to be resilient to URL depth changes?
Here are some clarifications about why it didn't work and what is fixed in the NuGet package.
The scheme to determine the url to include for a resource declared as Resource "name" "somePath.js"
is as follows:
- If the assembly contains an embedded resource file named
somePath.js
, then this file is extracted to(website root)/Scripts/WebSharper/somePath.js
, and a corresponding URL is generated and used. - If there is no such embedded resource file, then
somePath
is used as is as the source path to include. This means thatsomePath
should be an absolute path (such as/some/path.js
orhttp:// someSite.com/some/path.js
), or the problem that you faced will occur.
The NuGet package uses an embedded resource, so the js file will be automatically extracted as /Scripts/WebSharper/markerclusterer_compiled.js
.
We just published MarkerClusterer to NuGet under the name WebSharper.Google.Maps.MarkerClusterer
. Can you try to use that and confirm that the reference is added correctly?
It doesn't compile now, it gives this error:
C:\Users\kanovsky\Documents\Visual Studio 11\Projects\MarkerTest2\packages\WebSharper.2.5.125.62\build\WebSharper.targets(55,5): error : Failed to deserialize metadata for: IntelliFactory.Formlet, Version=2.4.0.0, Culture=neutral, PublicKeyToken=451ee5fa653b377d
I think the problem is now that your package has dependency on WebSharper 2.5.125.62 and I use WebSharper 2.4.
Maybe I will have to upgrade to newer version of WS, but are there any breaking changes? Will I be able to compile my solution?
What about licensing, although by this [link:websharper.com] it looks it should be ok to use version 2.5 after having licence for 2.4.
Or can I fix my old version of MarkerClusterer somehow?
All current extensions target the latest WebSharper, so yes, you will need to upgrade to 2.5 to benefit from this package. Licensing-wise, since you have a 2.4 license you should be covered (but support requires a yearly renewal).
Ok, I am now on a journey to upgrade to WS 2.5. I have recreated the whole solution, supplied all required nuget references and ended up with this:
C:\Vyvoj\Web\AspoBooking\packages\WebSharper.2.5.125.62\build\WebSharper.targets(55,5): error : Failed to deserialize metadata for: IntelliFactory.WebSharper.Formlet.JQueryUI, Version=2.4.0.0, Culture=neutral, PublicKeyToken=dcd983dec8f76a71
So now I already know that this is older version, not compatible with WS 2.5, right?
I wanted to donwload newer version from [link:www.websharper.com] where it is stated that need license, so I logged in, but I dont't see my license there, although we have one.
So what should I do now?
Thank you
The original 2.4 license granted you WebSharper 2.4 and minor updates, and a handful of extensions. Since then, we switched to a simpler licensing model and introduced many new extensions and tools.
The new support site (which gives access to extensions, updates to extensions, and updates to WebSharper) is coded to interpret old licenses as: "2.4 licenses cover WebSharper 2.x, but not updates issued to extensions targeting 2.5+."
This goes back to the combination of reasons that 1) we now have many more extensions than back with 2.4, 2) back then extensions were available via support URLs and now they are on a private Nuget feed, and 3) WebSharper itself is on the public Nuget feed. So all in all, and we had to draw the line somewhere what old license holders can access on the support site, and this line was to cover WebSharper but not the extensions, and worded the license update accordingly ("However, you will not benefit from any updates and bugfixes, as those require an ongoing license.").
This is rather unfortunate, and not something we can fix quickly. Updates to private and premium extensions are and have been for quite some time available to subscribers only.
You can do one of two things:
Keep using WebSharper 2.4 with the 2.4 extensions you have (these older extensions are also available upon request, or can be obtained via public Nuget).
- For new extensions such as
WebSharper.Google.Maps.MarkerClusterer
(a 2.5 extension), you can use WIG 2.4 with some extra care in your hand written extension. I know, this is what started this thread, but now on a second look, in theory, you could get away using WIG 2.4 with your own implementation of MarkerClusterer (as available here) by markingmarkerclusterer_compiled.js
as an embedded resource. This should make the reference inlined correctly (but I didn't test it, and I might be wrong, sorry, but it's worth a try...)
- For new extensions such as
- Renew your license to get access to all current private/premium extensions and their updates, including
WebSharper.Formlet.JQueryUI
.
To be as helpful as possible, I can also forward you the latest WebSharper.Formlet.JQueryUI
extension package, since this seems to be the only extension update you require for your project.
Cheers,
Adam.
Ok, I understand it.
In regard to setting the resources to right path I even realized (after Loïc's hints) that I can set the resource's path in web.config. Something like this:
<add key="IntelliFactory.WebSharper.MarkerClusterer.Resources.Js" value="http:/localhost:50674/Scripts/markerclusterer_compiled.js" />
So the MarkerClusterer is already resolved (even in WS 2.4).
But unfortunately there is other problem which I didn't notice earlier: The routing stops work for other Action
than Home of string
after my change as I showed In my first post above. It can be seen in that live deploy here: [link:ns.codoma.cz] - Other links give: 500.0 - Internal Error
So this was the other reason I started upgrading to WS 2.5, to we could further communicate other issues. In this regard I would appreciate if you could forward me that WebSharper.Formlet.JQueryUI
package, so I could try it in the latest version of WS.
Thank you,
Tomas
The reason why other pages throw an error 500 is
because that's what the Content.ServerError
you
added in Sitelet.Infer
does. It doesn't defer handling
to the subsequent sitelets in the Sum
; it just returns an
error 500. There are two solutions:
The simplest is to just put your handler for
Home
in your mainSitelet.Infer
(ie. usePages.HomePage s
as the return value forAction.Home
), and to remove the separate one forHome
.If for some reason you absolutely need to define the sitelet for
Home
separately, you can use this code:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
let filterSitelet f (s: Sitelet<'a>) : Sitelet<'a> = { Controller = s.Controller Router = let partialRoute req = match s.Router.Route req with | Some a when f a -> Some a | _ -> None Router.New partialRoute s.Router.Link } let home = Sitelet.Infer <| function | Action.Home s -> Pages.HomePage s | _ -> failwith "This will never be reached" |> filterSitelet (function | Action.Home _ -> true | _ -> false)
What it does is tell WebSharper that if the request doesn't match
Action.Home
, then it doesn't want to handle it (instead of returning an error page), so it then gets passed on to the next sitelet in theSum
.
Hi Loïc,
Thank you, it works now. First option is good enough, I could try it myself earlier, I was not very confident how it exactly works and it was based on earlier version of Sitelet project template, so it seemed correct how it was with separate home sitelet.
Cheers
Sent, let me know in email how it goes.
Topic tags
- f# × 3705
- websharper × 1897
- compiler × 286
- functional × 201
- ui next × 139
- c# × 121
- classes × 97
- web × 97
- .net × 84
- book × 84
- async × 76
- ui.next × 67
- bug × 54
- core × 49
- website × 49
- server × 45
- parallel × 43
- ui × 43
- enhancement × 41
- parsing × 41
- testing × 41
- trywebsharper × 41
- typescript × 37
- html × 35
- javascript × 35
- owin × 35
- asynchronous × 30
- monad × 28
- ocaml × 28
- tutorial × 27
- warp × 27
- haskell × 26
- sitelet × 25
- linq × 22
- workflows × 22
- wpf × 20
- fpish × 19
- introduction × 19
- silverlight × 19
- sitelets × 19
- monodevelop × 17
- rpc × 17
- suave × 17
- piglets × 16
- collections × 15
- feature request × 15
- jquery × 15
- templates × 15
- getting started × 14
- pipeline × 14
- kendoui × 13
- reactive × 12
- 4.1.0.171 × 11
- monads × 11
- opinion × 10
- 4.0.190.100-rc × 9
- deployment × 9
- fixed × 9
- formlets × 9
- in × 9
- json × 9
- plugin × 9
- proposal × 9
- scheme × 9
- solid × 9
- basics × 8
- concurrent × 8
- highcharts × 8
- how-to × 8
- python × 8
- 4.1.1.175 × 7
- complexity × 7
- documentation × 7
- visual studio × 7
- 4.1.2.178 × 6
- lisp × 6
- real-world × 6
- released in 4.0.192.103-rc × 6
- remoting × 6
- resources × 6
- scala × 6
- websharper ui.next × 6
- workshop × 6
- xaml × 6
- 4.0.193.110 × 5
- 4.2.3.236 × 5
- aspnetmvc × 5
- authentication × 5
- azure × 5
- bootstrap × 5
- conference × 5
- dsl × 5
- formlet × 5
- java × 5
- list × 5
- metaprogramming × 5
- ml × 5
- released in Zafir.4.0.188.91-beta10 × 5
- sql × 5
- visualstudio × 5
- websharper.forms × 5
- zafir × 5
- 4.0.192.106 × 4
- 4.0.195.127 × 4
- 4.1.0.38 × 4
- 4.2.1.86 × 4
- 4.2.6.118 × 4
- css × 4
- example × 4
- extensions × 4
- fsi × 4
- fsx × 4
- html5 × 4
- jqueryui × 4
- lift × 4
- reflection × 4
- remote × 4
- rest × 4
- spa × 4
- teaching × 4
- template × 4
- websocket × 4
- wontfix × 4
- 4.0.196.147 × 3
- 4.1.0.34 × 3
- 4.1.6.207 × 3
- 4.2.1.223-beta × 3
- 4.2.11.258 × 3
- 4.2.4.114 × 3
- 4.2.4.247 × 3
- 4.2.5.115 × 3
- 4.2.6.253 × 3
- 4.2.9.256 × 3
- ajax × 3
- alt.net × 3
- aml × 3
- asp.net mvc × 3
- canvas × 3
- cloudsharper × 3
- compilation × 3
- database × 3
- erlang × 3
- events × 3
- extension × 3
- file upload × 3
- forums × 3
- inline × 3
- issue × 3
- kendo × 3
- macro × 3
- mono × 3
- msbuild × 3
- mvc × 3
- pattern × 3
- piglet × 3
- released in Zafir.4.0.187.90-beta10 × 3
- svg × 3
- type provider × 3
- view × 3
- 4.1.1.64 × 2
- 4.1.5.203 × 2
- 4.1.7.232 × 2
- 4.2.10.257 × 2
- 4.2.3.111 × 2
- 4.2.5.249 × 2
- android × 2
- asp.net × 2
- beginner × 2
- blog × 2
- chart × 2
- client × 2
- client server app × 2
- clojure × 2
- computation expressions × 2
- constructor × 2
- corporate × 2
- courses × 2
- cufp × 2
- d3 × 2
- debugging × 2
- direct × 2
- discriminated union × 2
- docs × 2
- elm × 2
- endpoint × 2
- endpoints × 2
- enterprise × 2
- entity framework × 2
- event × 2
- f# interactive × 2
- fable × 2
- flowlet × 2
- formdata × 2
- forms × 2
- fsc × 2
- google maps × 2
- hosting × 2
- http × 2
- https × 2
- iis 8.0 × 2
- install × 2
- interactive × 2
- interface × 2
- iphone × 2
- iteratee × 2
- jobs × 2
- jquery mobile × 2
- keynote × 2
- lens × 2
- lenses × 2
- linux × 2
- listmodel × 2
- mac × 2
- numeric × 2
- oauth × 2
- obfuscation × 2
- offline × 2
- oop × 2
- osx × 2
- packaging × 2
- pattern matching × 2
- performance × 2
- pipelines × 2
- q&a × 2
- quotation × 2
- reference × 2
- released in Zafir.4.0.185.88-beta10 × 2
- rx × 2
- script × 2
- security × 2
- self host × 2
- seq × 2
- sockets × 2
- stm × 2
- tcp × 2
- trie × 2
- tutorials × 2
- type × 2
- url × 2
- var × 2
- websharper.charting × 2
- websharper4 × 2
- websockets × 2
- wig × 2
- xna × 2
- zh × 2
- .net interop × 1
- 2012 × 1
- 4.0.194.126 × 1
- 4.1.3.184 × 1
- 4.1.4.189 × 1
- 4.2.0.214-beta × 1
- 4.2.12.259 × 1
- 4.2.2.231-beta × 1
- 4.2.8.255 × 1
- Canvas Sample Example × 1
- DynamicStyle Animated Style × 1
- Fixed in 4.0.190.100-rc × 1
- Released in Zafir.UI.Next.4.0.169.79-beta10 × 1
- SvgDynamicAttribute × 1
- WebComponent × 1
- abstract class × 1
- accumulator × 1
- active pattern × 1
- actor × 1
- addin × 1
- agents × 1
- aggregation × 1
- agile × 1
- alter session × 1
- animation × 1
- anonymous object × 1
- apache × 1
- api × 1
- appcelerator × 1
- architecture × 1
- array × 1
- arrays × 1
- asp.net 4.5 × 1
- asp.net core × 1
- asp.net integration × 1
- asp.net mvc 4 × 1
- asp.net web api × 1
- aspnet × 1
- ast × 1
- attributes × 1
- authorization × 1
- b-tree × 1
- back button × 1
- badimageformatexception × 1
- bash script × 1
- batching × 1
- binding-vars × 1
- bistro × 1
- body × 1
- bundle × 1
- camtasia studio × 1
- cas protocol × 1
- charts × 1
- clarity × 1
- class × 1
- cli × 1
- clipboard × 1
- clojurescript × 1
- closures × 1
- cloud × 1
- cms × 1
- coding diacritics × 1
- color highlighting × 1
- color zones × 1
- combinator × 1
- combinators × 1
- compile × 1
- compile code on server × 1
- config × 1
- confirm × 1
- content × 1
- context × 1
- context.usersession × 1
- continuation-passing style × 1
- coords × 1
- cordova × 1
- cors × 1
- coursera × 1
- cross-domain × 1
- csla × 1
- current_schema × 1
- custom content × 1
- data × 1
- data grid × 1
- datetime × 1
- debug × 1
- declarative × 1
- delete × 1
- devexpress × 1
- dhtmlx × 1
- dictionary × 1
- directattribute × 1
- disqus × 1
- distance × 1
- do binding × 1
- doc elt ui.next upgrade × 1
- docker × 1
- dojo × 1
- dol × 1
- dom × 1
- domain × 1
- du × 1
- duf-101 × 1
- dynamic × 1
- eastern language × 1
- eclipse × 1
- edsl × 1
- em algorithm × 1
- emacs × 1
- emotion × 1
- enums × 1
- error × 1
- etw × 1
- euclidean × 1
- eventhandlerlist × 1
- examples × 1
- ext js × 1
- extension methods × 1
- extra × 1
- facet pattern × 1
- failed to translate × 1
- fake × 1
- fantomas × 1
- fear × 1
- float × 1
- form × 1
- form-data × 1
- forum × 1
- fp × 1
- frank × 1
- fsdoc × 1
- fsharp × 1
- fsharp.core × 1
- fsharp.powerpack × 1
- fsharpx × 1
- fsunit × 1
- function × 1
- functional style × 1
- game × 1
- games × 1
- gc × 1
- generic × 1
- geometry × 1
- getlastwin32error × 1
- getting-started × 1
- google × 1
- google.maps × 1
- grid × 1
- group × 1
- guide × 1
- hash × 1
- headers × 1
- hello world example × 1
- heroku × 1
- highchart × 1
- history × 1
- how to × 1
- html-templating × 1
- http405 × 1
- httpcontext × 1
- hubfs × 1
- i18n × 1
- ie 8 × 1
- if-doc × 1
- iis × 1
- image × 1
- images × 1
- inheritance × 1
- initialize × 1
- input × 1
- install "visual studio" × 1
- installer × 1
- int64 × 1
- interfaces × 1
- internet explorer × 1
- interop × 1
- interpreter × 1
- io × 1
- iobservable × 1
- ios × 1
- iot × 1
- ipad × 1
- isomorphic × 1
- javascript optimization × 1
- javascript semanticui resources × 1
- jquery-plugin × 1
- jquery-ui × 1
- jquery-ui-datepicker × 1
- js × 1
- kendo datasource × 1
- kendochart × 1
- kendoui compiler × 1
- knockout × 1
- l10n × 1
- learning × 1
- library × 1
- libs × 1
- license × 1
- licensing × 1
- lineserieszonescfg × 1
- local setting × 1
- localization × 1
- logging × 1
- loop × 1
- macros × 1
- mailboxprocessor × 1
- mapping × 1
- maps × 1
- markerclusterer × 1
- markup × 1
- marshal × 1
- math × 1
- mathjax × 1
- message × 1
- message passing × 1
- message-passing × 1
- meta × 1
- metro style × 1
- micro orm × 1
- minimum-requirements × 1
- mix × 1
- mobile installation × 1
- mod_mono × 1
- modal × 1
- module × 1
- mouseevent × 1
- mouseposition × 1
- multidimensional × 1
- multiline × 1
- multithreading × 1
- mysql × 1
- mysqlclient × 1
- nancy × 1
- native × 1
- nested × 1
- nested loops × 1
- node × 1
- nunit × 1
- object relation mapper × 1
- object-oriented × 1
- om × 1
- onboarding × 1
- onclick × 1
- optimization × 1
- option × 1
- orm × 1
- os x × 1
- output-path × 1
- override × 1
- paper × 1
- parameter × 1
- persistence × 1
- persistent data structure × 1
- phonegap × 1
- pola × 1
- post × 1
- powerpack × 1
- prefix tree × 1
- principle of least authority × 1
- privacy × 1
- private × 1
- profile × 1
- programming × 1
- project × 1
- project euler × 1
- projekt_feladat × 1
- protected × 1
- provider × 1
- proxy × 1
- ptvs × 1
- public × 1
- pure f# × 1
- purescript × 1
- qna × 1
- quant × 1
- query sitelet × 1
- question × 1
- quotations × 1
- range × 1
- raphael × 1
- razor × 1
- rc × 1
- reactjs × 1
- real-time × 1
- ref × 1
- region × 1
- released in 4.0.190.100-rc × 1
- reporting × 1
- responsive design × 1
- rest api × 1
- rest sitelet × 1
- restful × 1
- round table × 1
- router × 1
- routing × 1
- rpc reverseproxy × 1
- runtime × 1
- sales × 1
- sample × 1
- sampleapp × 1
- scriptcs × 1
- scripting × 1
- search × 1
- self hosted × 1
- semanticui × 1
- sequence × 1
- serialisation × 1
- service × 1
- session-state × 1
- sharepoint × 1
- signals × 1
- sitelet website × 1
- sitelet.protect × 1
- sitlets × 1
- slickgrid × 1
- source code × 1
- sqlentityconnection × 1
- ssl × 1
- standards × 1
- static content × 1
- stickynotes × 1
- streamreader × 1
- stress × 1
- strong name × 1
- structures × 1
- submitbutton × 1
- subscribe × 1
- svg example html5 websharper.ui.next × 1
- sweetalert × 1
- system.datetime × 1
- system.reflection.targetinvocationexception × 1
- table storage × 1
- targets × 1
- tdd × 1
- templates ui.next × 1
- templating × 1
- text parsing × 1
- three.js × 1
- time travel × 1
- tls × 1
- tooltip × 1
- tracing × 1
- tsunamiide × 1
- turkish × 1
- twitter-bootstrap × 1
- type erasure × 1
- type inference × 1
- type providers × 1
- type-providers × 1
- typeprovider × 1
- ui next forms × 1
- ui-next × 1
- ui.next jqueryui × 1
- ui.next charting × 1
- ui.next formlets × 1
- ui.next forms × 1
- ui.next suave visualstudio × 1
- ui.next templating × 1
- unicode × 1
- unittest client × 1
- upload × 1
- usersession × 1
- validation × 1
- vb × 1
- vb.net × 1
- vector × 1
- view.map × 1
- visal studio × 1
- visual f# × 1
- visual studio 11 × 1
- visual studio 2012 × 1
- visual studio shell × 1
- vs2017 compiler zafir × 1
- vsix × 1
- web api × 1
- web-scraping × 1
- webapi × 1
- webcomponents × 1
- webforms × 1
- webgl × 1
- webrtc × 1
- webshaper × 1
- websharper async × 1
- websharper codemirror × 1
- websharper f# google × 1
- websharper forms × 1
- websharper reactive × 1
- websharper rpc × 1
- websharper sitelets routing × 1
- websharper warp × 1
- websharper-interface-generator × 1
- websharper.chartsjs × 1
- websharper.com × 1
- websharper.exe × 1
- websharper.owin × 1
- websharper.ui.next × 1
- websharper.ui.next jquery × 1
- websockets iis × 1
- why-websharper × 1
- windows 7 × 1
- windows 8 × 1
- windows-phone × 1
- winrt × 1
- www.grabbitmedia.com × 1
- xamarin × 1
- xml × 1
- yeoman × 1
- yield × 1
- zafir beta × 1
- zafir websharper4 × 1
- zarovizsga × 1
![]() |
Copyright (c) 2011-2012 IntelliFactory. All rights reserved. Home | Products | Consulting | Trainings | Blogs | Jobs | Contact Us | Terms of Use | Privacy Policy | Cookie Policy |
Built with WebSharper |
Hi,
In our web we use google maps with MarkerClusterer ( [link:fpish.net] ) on home page. I found out, that when we change url from
to
the MarkerClusterer stops work.
-This is simplified observation of our change of routing of our home page:
instead of simple:
So I conclude that the MarkerClusterer has some problem with changed routing, but haven't managed to work around it somehow.
Could someone help me with that, please?
Thank you,
Tomas
P.S. I can send sample test project where this issue can be observed.