public static IHtmlString Terratype(this HtmlHelper htmlHelper, Models.Model map) { return(htmlHelper.Terratype(new Options() { MapSetId = Counter, Height = DefaultHeight }, map, null)); }
public static IHtmlString Terratype(this HtmlHelper htmlHelper, Models.Model map, params Func <object, object>[] label) { return(htmlHelper.Terratype(new Options() { MapSetId = Counter, Height = DefaultHeight }, map, label)); }
public static IHtmlString Terratype(this HtmlHelper htmlHelper, Options options, Models.Model map, params Func <object, object>[] label) { if (options == null && map == null) { // Nothing to do, as no map or options are present return(new HtmlString("")); } if (map == null && options.Provider == null) { throw new ArgumentNullException("No map provider declared"); } if (options == null) { options = new Options() { MapSetId = Counter }; } Models.Model merge = null; if (map == null) { merge = new Models.Model() { Provider = options.Provider, Position = options.Position, Zoom = (options.Zoom != null) ? (int)options.Zoom : 0, Height = (options.Height != null) ? (int)options.Height : DefaultHeight, Icon = options.Icon, }; } else { merge = new Models.Model() { Provider = map.Provider, Position = map.Position, Zoom = map.Zoom, Icon = map.Icon, Height = map.Height }; if (options.Provider != null) { // Merge providers, with options taking precedents var mergeJson = JObject.FromObject(merge.Provider); mergeJson.Merge(JObject.FromObject(options.Provider), new JsonMergeSettings { MergeArrayHandling = MergeArrayHandling.Replace }); var providerType = (options.Provider is Models.Provider) ? map.Provider.GetType() : options.Provider.GetType(); merge.Provider = (Models.Provider)mergeJson.ToObject(providerType); } if (options.Zoom != null) { merge.Zoom = (int)options.Zoom; } if (options.Height != null) { merge.Height = (int)options.Height; } if (options.Icon != null) { merge.Icon = options.Icon; } if (options.Position != null) { merge.Position = options.Position; } } var builder = new StringWriter(System.Globalization.CultureInfo.InvariantCulture); using (var writer = new HtmlTextWriter(builder)) { writer.AddAttribute(HtmlTextWriterAttribute.Class, nameof(Terratype)); writer.RenderBeginTag(HtmlTextWriterTag.Div); var hasLabel = map != null && (label != null || (map.Label != null && map.Label.HasContent)); var labelId = (hasLabel) ? nameof(Terratype) + Guid.NewGuid().ToString() : null; const string addScriptOnce = "9b5a5783-242f-4f75-b31f-d506dcf22bf9"; if (!HttpContext.Current.Items.Contains(addScriptOnce)) { HttpContext.Current.Items.Add(addScriptOnce, true); #if DEBUG writer.AddAttribute(HtmlTextWriterAttribute.Src, UrlPath("scripts/terratype.renderer.js")); #else writer.AddAttribute(HtmlTextWriterAttribute.Src, UrlPath("scripts/terratype.renderer.min.js")); #endif //writer.AddAttribute("defer", ""); writer.RenderBeginTag(HtmlTextWriterTag.Script); writer.RenderEndTag(); } var guid = Guid.NewGuid(); merge.Provider.Render(guid, writer, options.MapSetId ?? Counter, merge, labelId, merge.Height, options.Language, options.DomMonitorType, options.AutoShowLabel, options.AutoRecenterAfterRefresh, options.AutoFit, options.Tag); if (hasLabel) { writer.AddStyleAttribute(HtmlTextWriterStyle.Display, "none"); writer.RenderBeginTag(HtmlTextWriterTag.Div); writer.AddAttribute(HtmlTextWriterAttribute.Id, labelId); writer.RenderBeginTag(HtmlTextWriterTag.Div); if (label != null) { foreach (var value in label) { writer.Write(value.DynamicInvoke(htmlHelper.ViewContext)); } } else { map.Label.Render(guid, writer, map); } writer.RenderEndTag(); writer.RenderEndTag(); } writer.RenderEndTag(); } return(new HtmlString(builder.ToString())); }
public static IHtmlString Terratype(this HtmlHelper <RenderModel> htmlHelper, Options options, Models.Model map, params Func <object, object>[] label) { return((htmlHelper as HtmlHelper).Terratype(options, map, label)); }
public static IHtmlString Terratype(this HtmlHelper <RenderModel> htmlHelper, Options options, Models.Model map) { return((htmlHelper as HtmlHelper).Terratype(options, map, null)); }
public static IHtmlString Terratype(this HtmlHelper htmlHelper, Options options, Models.Model map) { return(htmlHelper.Terratype(options, map, null)); }
public void BingModel_ConvertToJsonAndBack_ShouldBeEqual() { foreach (var culture in Cultures) { Thread.CurrentThread.CurrentCulture = new CultureInfo(culture); var icon = new Terratype.Models.Icon() { Id = "test", Url = new Uri("http://mydomain.com/myfile.jpg"), Size = new Terratype.Models.Icon.SizeDefinition() { Width = 50, Height = 66 }, Anchor = new Terratype.Models.Icon.AnchorDefinition() { Vertical = 25, Horizontal = 33 } }; var provider = new Terratype.Providers.BingMapsV8() { Version = "release", ApiKey = "abcdefghhijklmnopqrstuvwxyz", Language = "en-gb", Search = new Terratype.Providers.BingMapsV8.SearchDefinition() { Enable = Terratype.Providers.BingMapsV8.SearchDefinition.SearchStatus.Enable }, Variety = new Terratype.Providers.BingMapsV8.VarietyDefinition() { Basic = false, Satellite = true, StreetView = true }, Scale = new Terratype.Providers.BingMapsV8.Control() { Enable = false }, ZoomControl = new Terratype.Providers.BingMapsV8.Control() { Enable = true }, Traffic = new Terratype.Providers.BingMapsV8.TrafficDefinition() { Enable = true, Legend = true }, ShowLabels = false }; var model = new Terratype.Models.Model() { Zoom = rnd.Next(19) + 1, Label = new Terratype.Labels.Standard() { Content = new HtmlString("<p>This is some text<p>") }, Lookup = "Paris, France", Position = new Terratype.CoordinateSystems.Wgs84(RandomLatLng()), }; // Use private set to add properties to class PrivateObject accessor = new PrivateObject(model); accessor.SetProperty(nameof(Terratype.Models.Model.Provider), provider); accessor.SetProperty(nameof(Terratype.Models.Model.Icon), icon); var json = JsonConvert.SerializeObject(model); var model2 = new Terratype.Models.Model(json); model.ShouldBeEquivalentTo <Terratype.Models.Model>(model2); var json2 = JsonConvert.SerializeObject(model2); Assert.AreEqual(json, json2); } }
public void LeafletModel_ConvertToJsonAndBack_ShouldBeEqual() { foreach (var culture in Cultures) { Thread.CurrentThread.CurrentCulture = new CultureInfo(culture); var icon = new Terratype.Models.Icon() { Id = "test", Url = new Uri("http://mydomain.com/myfile.jpg"), Size = new Terratype.Models.Icon.SizeDefinition() { Width = 50, Height = 66 }, Anchor = new Terratype.Models.Icon.AnchorDefinition() { Vertical = 25, Horizontal = 33 } }; var provider = new Terratype.Providers.LeafletV1() { MapSources = new Terratype.Providers.LeafletV1.MapSourceDefinition[] { new Terratype.Providers.LeafletV1.MapSourceDefinition { TileServer = new Terratype.Providers.LeafletV1.MapSourceDefinition.TileServerDefinition() { Id = "TileServerId1" }, MinZoom = 0, MaxZoom = 10 }, new Terratype.Providers.LeafletV1.MapSourceDefinition { TileServer = new Terratype.Providers.LeafletV1.MapSourceDefinition.TileServerDefinition() { Id = "TileServerId2" }, MinZoom = 11, MaxZoom = 20, Key = "AAAABBBBCCCCDDDD" } }, ZoomControl = new Terratype.Providers.LeafletV1.ZoomControlDefinition() { Enable = true, Position = Terratype.Providers.LeafletV1.ControlPositions.BottomLeft }, }; var model = new Terratype.Models.Model() { Zoom = rnd.Next(19) + 1, Label = new Terratype.Labels.Standard() { Content = new HtmlString("<p>This is some text<p>") }, Lookup = "Paris, France", Position = new Terratype.CoordinateSystems.Wgs84(RandomLatLng()), }; // Use private set to add properties to class PrivateObject accessor = new PrivateObject(model); accessor.SetProperty(nameof(Terratype.Models.Model.Provider), provider); accessor.SetProperty(nameof(Terratype.Models.Model.Icon), icon); var json = JsonConvert.SerializeObject(model); var model2 = new Terratype.Models.Model(json); model.ShouldBeEquivalentTo <Terratype.Models.Model>(model2); var json2 = JsonConvert.SerializeObject(model2); Assert.AreEqual(json, json2); } }
public void GMapsModel_ConvertToJsonAndBack_ShouldBeEqual() { foreach (var culture in Cultures) { Thread.CurrentThread.CurrentCulture = new CultureInfo(culture); var icon = new Terratype.Models.Icon() { Id = "test", Url = new Uri("http://mydomain.com/myfile.jpg"), Size = new Terratype.Models.Icon.SizeDefinition() { Width = 50, Height = 66 }, Anchor = new Terratype.Models.Icon.AnchorDefinition() { Vertical = 25, Horizontal = 33 } }; var provider = new Terratype.Providers.GoogleMapsV3() { Variety = new Terratype.Providers.GoogleMapsV3.VarietyDefinition() { Selector = new Terratype.Providers.GoogleMapsV3.VarietyDefinition.SelectorDefinition() { Type = Terratype.Providers.GoogleMapsV3.VarietyDefinition.SelectorType.Default, Position = Terratype.Providers.GoogleMapsV3.ControlPositions.BottomRight }, Basic = true, Satellite = false, Terrain = true }, StreetView = new Terratype.Providers.GoogleMapsV3.Control() { Enable = false, Position = Terratype.Providers.GoogleMapsV3.ControlPositions.RightBottom }, Fullscreen = new Terratype.Providers.GoogleMapsV3.Control() { Enable = true, Position = Terratype.Providers.GoogleMapsV3.ControlPositions.LeftCenter }, Scale = new Terratype.Providers.GoogleMapsV3.Control() { Enable = false, Position = Terratype.Providers.GoogleMapsV3.ControlPositions.TopLeft }, ZoomControl = new Terratype.Providers.GoogleMapsV3.Control() { Enable = true, Position = Terratype.Providers.GoogleMapsV3.ControlPositions.BottomLeft }, Search = new Terratype.Providers.GoogleMapsV3.SearchDefinition() { Enable = Terratype.Providers.GoogleMapsV3.SearchDefinition.SearchStatus.Autocomplete, Limit = new Terratype.Providers.GoogleMapsV3.SearchDefinition.LimitDefinition() { Countries = new string[] { "France", "Germany", "Italy", "United Kingdom" } } } }; PrivateObject providerAccessor = new PrivateObject(provider); providerAccessor.SetProperty(nameof(Terratype.Providers.GoogleMapsV3.Version), "3"); providerAccessor.SetProperty(nameof(Terratype.Providers.GoogleMapsV3.ApiKey), "XXXAAABBBCC1234567890abcdefghijklmnopqrstuvwxyz"); providerAccessor.SetProperty(nameof(Terratype.Providers.GoogleMapsV3.ForceHttps), true); providerAccessor.SetProperty(nameof(Terratype.Providers.GoogleMapsV3.Language), "en-gb"); providerAccessor.SetProperty(nameof(Terratype.Providers.GoogleMapsV3.PredefineStyling), "pretty"); providerAccessor.SetProperty(nameof(Terratype.Providers.GoogleMapsV3.ShowRoads), false); providerAccessor.SetProperty(nameof(Terratype.Providers.GoogleMapsV3.ShowLandmarks), true); providerAccessor.SetProperty(nameof(Terratype.Providers.GoogleMapsV3.ShowLabels), false); var model = new Terratype.Models.Model() { Zoom = rnd.Next(19) + 1, Label = new Terratype.Labels.Standard() { Content = new HtmlString("<p>This is some text<p>") }, Lookup = "Paris, France", Position = new Terratype.CoordinateSystems.Wgs84(RandomLatLng()), }; // Use private set to add properties to class PrivateObject accessor = new PrivateObject(model); accessor.SetProperty(nameof(Terratype.Models.Model.Provider), provider); accessor.SetProperty(nameof(Terratype.Models.Model.Icon), icon); var json = JsonConvert.SerializeObject(model); var model2 = new Terratype.Models.Model(json); model.ShouldBeEquivalentTo <Terratype.Models.Model>(model2); var json2 = JsonConvert.SerializeObject(model2); Assert.AreEqual(json, json2); } }
public static IHtmlString Terratype(this HtmlHelper htmlHelper, Options options, Models.Model map, params Func <object, object>[] label) { if (options == null && map == null) { // Nothing to do, as no map or options are present return(new HtmlString("")); } if (map == null && options.Provider == null) { throw new ArgumentNullException("No map provider declared"); } if (options == null) { options = new Options() { MapSetId = Counter, Height = DefaultHeight }; } Models.Model merge = null; if (map == null) { merge = new Models.Model() { Provider = options.Provider, Position = options.Position }; if (options.Zoom != null) { merge.Zoom = (int)options.Zoom; } } else { merge = new Models.Model() { Provider = map.Provider, Position = map.Position, Zoom = map.Zoom, Icon = map.Icon }; if (options.Provider != null) { // Merge providers, with options taking precedents var mergeJson = JObject.FromObject(merge.Provider); mergeJson.Merge(JObject.FromObject(options.Provider), new JsonMergeSettings { MergeArrayHandling = MergeArrayHandling.Replace }); merge.Provider = mergeJson.ToObject <Models.Provider>(); } } var builder = new StringWriter(System.Globalization.CultureInfo.InvariantCulture); using (var writer = new HtmlTextWriter(builder)) { writer.AddAttribute(HtmlTextWriterAttribute.Class, nameof(Terratype)); writer.RenderBeginTag(HtmlTextWriterTag.Div); var labelId = nameof(Terratype) + Guid.NewGuid().ToString(); merge.Provider.GetHtml(writer, options.MapSetId ?? Counter, merge, options.Height ?? DefaultHeight, options.Language, labelId); if (label != null) { writer.AddStyleAttribute(HtmlTextWriterStyle.Display, "none"); writer.RenderBeginTag(HtmlTextWriterTag.Div); writer.AddAttribute(HtmlTextWriterAttribute.Id, labelId); writer.RenderBeginTag(HtmlTextWriterTag.Div); foreach (var value in label) { writer.Write(value.DynamicInvoke(htmlHelper.ViewContext)); } writer.RenderEndTag(); writer.RenderEndTag(); } writer.RenderEndTag(); } return(new HtmlString(builder.ToString())); }