/// <summary> /// Adds a style to the style collection /// </summary> /// <param name="name">Name of style</param> /// <exception cref="System.ArgumentException">Throws an exception is an unknown layer is added</exception> public void AddStyle(string name) { if (!StyleExists(_wmsClient.Layer, name)) { throw new ArgumentException("Cannot add WMS Layer - Unknown layername"); } StylesList.Add(name); }
private void InitializeStylesComponent() { var gridView = new GridView(); gridView.Columns.Add(new GridViewColumn { Header = "Style", DisplayMemberBinding = new Binding() }); StylesList.View = gridView; StylesList.AddHandler(MouseDoubleClickEvent, new RoutedEventHandler(ListView1_MouseDoubleClick)); }
/// <summary> /// Removes all styles from the list /// </summary> public void RemoveAllStyles() { StylesList.Clear(); }
/// <summary> /// Removes a style at specified index /// </summary> /// <param name="index">Index</param> public void RemoveStyleAt(int index) { StylesList.RemoveAt(index); }
/// <summary> /// Removes a style from the collection /// </summary> /// <param name="name">Name of style</param> public void RemoveStyle(string name) { StylesList.Remove(name); }
public override Task ProcessAsync(TagHelperContext context, TagHelperOutput output) { if (!isVisible) { output.SuppressOutput(); return(Task.CompletedTask); } if (Width == 0) { Width = null; } if (Height == 0) { Height = null; } #region << Init >> var initSuccess = InitField(context, output); if (!initSuccess) { return(Task.CompletedTask); } if (Value != null && !String.IsNullOrWhiteSpace(Value.ToString())) { if (!Value.StartsWith("/fs") && !Value.StartsWith("http")) { Value = "/fs" + Value; } FileName = Path.GetFileName(Value); } if (!((string)Value).StartsWith("http")) { if (!String.IsNullOrWhiteSpace(Value)) { var fileDbPath = Value; if (Value.StartsWith("/fs")) { fileDbPath = Value.Substring(3); } var file = new DbFileRepository().Find(fileDbPath); if (file != null) { var fileContent = file.GetBytes(); using (Image <Rgba32> image = SixLabors.ImageSharp.Image.Load(fileContent)) { OriginalWidth = image.Width; OriginalHeight = image.Height; OriginalRatio = ((decimal)(OriginalWidth ?? 1)) / (OriginalHeight ?? 1); } } } if (Height != null || Width != null) { QueryCommandsList.Add($"action=resize"); QueryCommandsList.Add($"mode={ResizeAction}"); } if (Height == null && Width != null) { Height = Decimal.ToInt32(Math.Round((OriginalRatio / Width ?? 1), 0)); } if (Height != null) { StylesList.Add($"height:{Height}px"); QueryCommandsList.Add($"height={Height}"); } if (Width == null && Height != null) { Width = Decimal.ToInt32(Math.Round((OriginalRatio * Height ?? 1), 0)); } if (Width != null) { StylesList.Add($"width:{Width}px"); QueryCommandsList.Add($"width={Width}"); } } WrapperStyle = String.Join(";", StylesList); ImageQuery = "?" + String.Join("&", QueryCommandsList); #endregion #region << Render >> if (Mode == FieldRenderMode.Form) { if (Access == FieldAccess.Full || Access == FieldAccess.FullAndCreate) { var outsideWrapper = new TagBuilder("div"); var viewWrapper = new TagBuilder("div"); viewWrapper.Attributes.Add("id", $"view-{FieldId}"); viewWrapper.AddCssClass($"image-wrapper erp-image view-wrapper {(String.IsNullOrWhiteSpace(Value)?"d-none":"")} {(ValidationErrors.Count > 0 ? "is-invalid" : "")}"); viewWrapper.Attributes.Add("style", WrapperStyle); var viewImage = new TagBuilder("img"); viewImage.AddCssClass("wrapper-image"); viewImage.Attributes.Add("src", $"{Value}{ImageQuery}"); viewImage.Attributes.Add("title", $"{FileName}"); viewWrapper.InnerHtml.AppendHtml(viewImage); var viewRemoveLink = new TagBuilder("a"); viewRemoveLink.Attributes.Add("href", "javascript:void(0)"); viewRemoveLink.AddCssClass("action remove"); viewRemoveLink.InnerHtml.AppendHtml(TextRemove); viewWrapper.InnerHtml.AppendHtml(viewRemoveLink); outsideWrapper.InnerHtml.AppendHtml(viewWrapper); var editWrapper = new TagBuilder("div"); editWrapper.Attributes.Add("id", $"edit-{FieldId}"); editWrapper.AddCssClass($"image-wrapper erp-image edit-wrapper {(String.IsNullOrWhiteSpace(Value) ? "" : "d-none")} {(ValidationErrors.Count > 0 ? "is-invalid" : "")}"); editWrapper.Attributes.Add("style", WrapperStyle); var editInput = new TagBuilder("input"); editInput.Attributes.Add("type", "file"); editInput.Attributes.Add("value", ""); editInput.Attributes.Add("id", $"file-{FieldId}"); editInput.Attributes.Add("accept", $"{Accept}"); editWrapper.InnerHtml.AppendHtml(editInput); var editWrapperIconDiv = new TagBuilder("div"); editWrapperIconDiv.AddCssClass("wrapper-icon"); var editWrapperIconSpan = new TagBuilder("span"); editWrapperIconSpan.AddCssClass("fa fa-image fa-fw"); editWrapperIconDiv.InnerHtml.AppendHtml(editWrapperIconSpan); editWrapper.InnerHtml.AppendHtml(editWrapperIconDiv); var editWrapperTextDiv = new TagBuilder("div"); editWrapperTextDiv.AddCssClass("wrapper-text"); editWrapperTextDiv.Attributes.Add("id", $"fake-{Name}-{FieldId}"); var editWrapperTextLink = new TagBuilder("button"); editWrapperTextLink.Attributes.Add("type", "button"); editWrapperTextLink.AddCssClass("btn btn-secondary btn-sm"); editWrapperTextLink.InnerHtml.AppendHtml(TextSelect); editWrapperTextDiv.InnerHtml.AppendHtml(editWrapperTextLink); var editWrapperTextSpan = new TagBuilder("span"); editWrapperTextSpan.AddCssClass("d-none"); editWrapperTextDiv.InnerHtml.AppendHtml(editWrapperTextSpan); editWrapper.InnerHtml.AppendHtml(editWrapperTextDiv); outsideWrapper.InnerHtml.AppendHtml(editWrapper); var hiddenInput = new TagBuilder("input"); hiddenInput.Attributes.Add("type", "hidden"); hiddenInput.Attributes.Add("id", $"input-{FieldId}"); hiddenInput.Attributes.Add("name", $"{Name}"); hiddenInput.Attributes.Add("value", (Value ?? "").ToString()); hiddenInput.Attributes.Add("data-original-value", (Value ?? "").ToString()); hiddenInput.Attributes.Add("data-original-filename", Name); outsideWrapper.InnerHtml.AppendHtml(hiddenInput); output.Content.AppendHtml(outsideWrapper); var jsCompressor = new JavaScriptCompressor(); #region << Init Scripts >> var tagHelperInitialized = false; if (ViewContext.HttpContext.Items.ContainsKey(typeof(WvFieldImage) + "-form")) { var tagHelperContext = (WvTagHelperContext)ViewContext.HttpContext.Items[typeof(WvFieldImage) + "-form"]; tagHelperInitialized = tagHelperContext.Initialized; } if (!tagHelperInitialized) { var scriptContent = FileService.GetEmbeddedTextResource("form.js", "WebVella.Erp.Web.TagHelpers.WvFieldImage"); var scriptEl = new TagBuilder("script"); scriptEl.Attributes.Add("type", "text/javascript"); scriptEl.InnerHtml.AppendHtml(jsCompressor.Compress(scriptContent)); output.PostContent.AppendHtml(scriptEl); ViewContext.HttpContext.Items[typeof(WvFieldImage) + "-form"] = new WvTagHelperContext() { Initialized = true }; } #endregion #region << Add Inline Init Script for this instance >> var initScript = new TagBuilder("script"); initScript.Attributes.Add("type", "text/javascript"); var scriptTemplate = @" $(function(){ ImageFormInit(""{{FieldId}}"",""{{Name}}"",{{ConfigJson}}); });" ; scriptTemplate = scriptTemplate.Replace("{{FieldId}}", (FieldId ?? null).ToString()); scriptTemplate = scriptTemplate.Replace("{{Name}}", Name); var fieldConfig = new WvFieldImageConfig() { ApiUrl = ApiUrl, CanAddValues = Access == FieldAccess.FullAndCreate ? true : false, Accept = Accept, Width = Width, Height = Height, ResizeAction = ResizeAction }; scriptTemplate = scriptTemplate.Replace("{{ConfigJson}}", JsonConvert.SerializeObject(fieldConfig)); initScript.InnerHtml.AppendHtml(jsCompressor.Compress(scriptTemplate)); output.PostContent.AppendHtml(initScript); #endregion } else if (Access == FieldAccess.ReadOnly) { var outerWrapper = new TagBuilder("div"); var viewWrapper = new TagBuilder("div"); viewWrapper.Attributes.Add("id", $"view-{FieldId}"); viewWrapper.AddCssClass($"image-wrapper erp-image view-wrapper {(String.IsNullOrWhiteSpace(Value)?"d-none":"")} {(ValidationErrors.Count > 0 ? "is-invalid" : "")}"); viewWrapper.Attributes.Add("style", $"{WrapperStyle}"); var viewImage = new TagBuilder("img"); viewImage.AddCssClass("wrapper-image"); viewImage.Attributes.Add("src", $"{Value}{ImageQuery}"); viewImage.Attributes.Add("title", $"{FileName}"); viewWrapper.InnerHtml.AppendHtml(viewImage); outerWrapper.InnerHtml.AppendHtml(viewWrapper); //Hidden input with the value var hiddenInput = new TagBuilder("input"); hiddenInput.Attributes.Add("type", "hidden"); hiddenInput.Attributes.Add("id", $"input-{FieldId}"); hiddenInput.Attributes.Add("name", Name); hiddenInput.Attributes.Add("value", (Value ?? "").ToString()); output.PostContent.AppendHtml(hiddenInput); output.PostContent.AppendHtml(outerWrapper); } } else if (Mode == FieldRenderMode.Display) { if (!String.IsNullOrWhiteSpace(Value)) { var outerWrapper = new TagBuilder("div"); var viewWrapper = new TagBuilder("div"); viewWrapper.Attributes.Add("id", $"view-{FieldId}"); viewWrapper.AddCssClass($"image-wrapper erp-image view-wrapper {(String.IsNullOrWhiteSpace(Value) ? "d-none" : "")} {(ValidationErrors.Count > 0 ? "is-invalid" : "")}"); viewWrapper.Attributes.Add("style", $"{WrapperStyle}"); var viewImage = new TagBuilder("img"); viewImage.AddCssClass("wrapper-image"); viewImage.Attributes.Add("src", $"{Value}{ImageQuery}"); viewImage.Attributes.Add("title", $"{FileName}"); viewWrapper.InnerHtml.AppendHtml(viewImage); outerWrapper.InnerHtml.AppendHtml(viewWrapper); output.PostContent.AppendHtml(outerWrapper); } else { output.Content.AppendHtml(EmptyValEl); } } else if (Mode == FieldRenderMode.Simple) { output.SuppressOutput(); var viewImage = new TagBuilder("img"); viewImage.AddCssClass("img-fluid"); viewImage.Attributes.Add("src", $"{Value}{ImageQuery}"); viewImage.Attributes.Add("title", $"{FileName}"); output.Content.AppendHtml(viewImage); return(Task.CompletedTask); } else if (Mode == FieldRenderMode.InlineEdit) { if (Access == FieldAccess.Full || Access == FieldAccess.FullAndCreate) { var outsideWrapper = new TagBuilder("div"); var viewWrapper = new TagBuilder("div"); viewWrapper.Attributes.Add("id", $"view-{FieldId}"); viewWrapper.AddCssClass($"image-wrapper erp-image view-wrapper {(String.IsNullOrWhiteSpace(Value) ? "d-none" : "")} {(ValidationErrors.Count > 0 ? "is-invalid" : "")}"); viewWrapper.Attributes.Add("style", WrapperStyle); var viewImage = new TagBuilder("img"); viewImage.AddCssClass("wrapper-image"); viewImage.Attributes.Add("src", $"{Value}{ImageQuery}"); viewImage.Attributes.Add("title", $"{FileName}"); viewWrapper.InnerHtml.AppendHtml(viewImage); var viewRemoveLink = new TagBuilder("a"); viewRemoveLink.Attributes.Add("href", "javascript:void(0)"); viewRemoveLink.AddCssClass("action remove"); viewRemoveLink.InnerHtml.AppendHtml(TextRemove); viewWrapper.InnerHtml.AppendHtml(viewRemoveLink); outsideWrapper.InnerHtml.AppendHtml(viewWrapper); var editWrapper = new TagBuilder("div"); editWrapper.Attributes.Add("id", $"edit-{FieldId}"); editWrapper.AddCssClass($"image-wrapper erp-image edit-wrapper {(String.IsNullOrWhiteSpace(Value) ? "" : "d-none")} {(ValidationErrors.Count > 0 ? "is-invalid" : "")}"); editWrapper.Attributes.Add("style", WrapperStyle); var editInput = new TagBuilder("input"); editInput.Attributes.Add("type", "file"); editInput.Attributes.Add("value", ""); editInput.Attributes.Add("id", $"file-{FieldId}"); editInput.Attributes.Add("accept", $"{Accept}"); editWrapper.InnerHtml.AppendHtml(editInput); var editWrapperIconDiv = new TagBuilder("div"); editWrapperIconDiv.AddCssClass("wrapper-icon"); var editWrapperIconSpan = new TagBuilder("span"); editWrapperIconSpan.AddCssClass("fa fa-image fa-fw"); editWrapperIconDiv.InnerHtml.AppendHtml(editWrapperIconSpan); editWrapper.InnerHtml.AppendHtml(editWrapperIconDiv); var editWrapperTextDiv = new TagBuilder("div"); editWrapperTextDiv.AddCssClass("wrapper-text"); editWrapperTextDiv.Attributes.Add("id", $"fake-{Name}-{FieldId}"); var editWrapperTextLink = new TagBuilder("button"); editWrapperTextLink.Attributes.Add("type", "button"); editWrapperTextLink.AddCssClass("btn btn-secondary btn-sm"); editWrapperTextLink.InnerHtml.AppendHtml(TextSelect); editWrapperTextDiv.InnerHtml.AppendHtml(editWrapperTextLink); var editWrapperTextSpan = new TagBuilder("span"); editWrapperTextSpan.AddCssClass("d-none"); editWrapperTextDiv.InnerHtml.AppendHtml(editWrapperTextSpan); editWrapper.InnerHtml.AppendHtml(editWrapperTextDiv); outsideWrapper.InnerHtml.AppendHtml(editWrapper); var hiddenInput = new TagBuilder("input"); hiddenInput.Attributes.Add("type", "hidden"); hiddenInput.Attributes.Add("id", $"input-{FieldId}"); hiddenInput.Attributes.Add("name", $"{Name}"); hiddenInput.Attributes.Add("value", (Value ?? "").ToString()); hiddenInput.Attributes.Add("data-original-value", (Value ?? "").ToString()); hiddenInput.Attributes.Add("data-original-filename", Name); outsideWrapper.InnerHtml.AppendHtml(hiddenInput); output.Content.AppendHtml(outsideWrapper); var jsCompressor = new JavaScriptCompressor(); #region << Init Scripts >> var tagHelperInitialized = false; if (ViewContext.HttpContext.Items.ContainsKey(typeof(WvFieldImage) + "-inline-edit")) { var tagHelperContext = (WvTagHelperContext)ViewContext.HttpContext.Items[typeof(WvFieldImage) + "-inline-edit"]; tagHelperInitialized = tagHelperContext.Initialized; } if (!tagHelperInitialized) { var scriptContent = FileService.GetEmbeddedTextResource("inline-edit.js", "WebVella.Erp.Web.TagHelpers.WvFieldImage"); var scriptEl = new TagBuilder("script"); scriptEl.Attributes.Add("type", "text/javascript"); scriptEl.InnerHtml.AppendHtml(jsCompressor.Compress(scriptContent)); output.PostContent.AppendHtml(scriptEl); ViewContext.HttpContext.Items[typeof(WvFieldImage) + "-inline-edit"] = new WvTagHelperContext() { Initialized = true }; } #endregion #region << Add Inline Init Script for this instance >> var initScript = new TagBuilder("script"); initScript.Attributes.Add("type", "text/javascript"); var scriptTemplate = @" $(function(){ ImageInlineEditInit(""{{FieldId}}"",""{{Name}}"",""{{EntityName}}"",""{{RecordId}}"",{{ConfigJson}}); });" ; scriptTemplate = scriptTemplate.Replace("{{FieldId}}", (FieldId ?? null).ToString()); scriptTemplate = scriptTemplate.Replace("{{Name}}", Name); scriptTemplate = scriptTemplate.Replace("{{EntityName}}", EntityName); scriptTemplate = scriptTemplate.Replace("{{RecordId}}", (RecordId ?? null).ToString()); var fieldConfig = new WvFieldImageConfig() { ApiUrl = ApiUrl, CanAddValues = Access == FieldAccess.FullAndCreate ? true : false, Accept = Accept, Width = Width, Height = Height, ResizeAction = ResizeAction }; scriptTemplate = scriptTemplate.Replace("{{ConfigJson}}", JsonConvert.SerializeObject(fieldConfig)); initScript.InnerHtml.AppendHtml(jsCompressor.Compress(scriptTemplate)); output.PostContent.AppendHtml(initScript); #endregion } else if (Access == FieldAccess.ReadOnly) { var outerWrapper = new TagBuilder("div"); var viewWrapper = new TagBuilder("div"); viewWrapper.Attributes.Add("id", $"view-{FieldId}"); viewWrapper.AddCssClass($"image-wrapper erp-image view-wrapper {(String.IsNullOrWhiteSpace(Value) ? "d-none" : "")} {(ValidationErrors.Count > 0 ? "is-invalid" : "")}"); viewWrapper.Attributes.Add("style", $"{WrapperStyle}"); var viewImage = new TagBuilder("img"); viewImage.AddCssClass("wrapper-image"); viewImage.Attributes.Add("src", $"{Value}{ImageQuery}"); viewImage.Attributes.Add("title", $"{FileName}"); viewWrapper.InnerHtml.AppendHtml(viewImage); outerWrapper.InnerHtml.AppendHtml(viewWrapper); output.PostContent.AppendHtml(outerWrapper); } } #endregion //Finally if (SubInputEl != null) { output.PostContent.AppendHtml(SubInputEl); } return(Task.CompletedTask); }