public string GetHtmlToAppendByBrowserCard(BrowserCard card) { string fontSettings = GetStylesToAppendByBrowserFont(card); string defaultSettings = GetDefaultStyleSettings(card, true); string animationClasses = GetAnimationClass(card.AnimationType); string exitButton = ""; if (card.ExitButton) { exitButton = $"<button type=\"button\" class=\"close\" aria-label=\"Close\"" + " onclick=\"onExitButtonClick()\"><span aria-hidden=\"true\">×</span></button>"; } string topImage = ""; if ((!string.IsNullOrEmpty(card.Image))) { topImage = $"<img src=\"{card.Image}\" class=\"card-img-top\" alt=\"{card.Image}\">"; } var contentTitleStyle = GetStylesToAppendByBrowserFont(card.ContentTitle); var contentTitleStyles = GetDefaultStyleSettings(card.ContentTitle); string contentTitle = !string.IsNullOrEmpty(card.ContentTitle.Title) ? $"<h5 class=\"card-title\" style=\"{contentTitleStyle}{contentTitleStyles}\">{card.ContentTitle.Title}</h5>" : ""; var contentStyles = GetDefaultStyleSettings(card.ContentText); var contentFontStyle = GetStylesToAppendByBrowserFont(card.ContentText); string contentText = !string.IsNullOrEmpty(card.ContentText.Text) ? $"<p class=\"card-text\" style=\"{contentFontStyle}{contentStyles}\">{card.ContentText.Text}</p>" : ""; string flexWrap = card.FlexWrap.ToString().Replace('_', '-'); string flex = card.FlexDirection == BrowserFlexDirection.unset ? "" : card.FlexDirection.ToString().Replace('_', '-'); string contentAlign = GetContentAlignment(card.ItemAlignment); var cardTitleFontStyle = GetStylesToAppendByBrowserFont(card.CardTitle); var cardTitleStyles = GetDefaultStyleSettings(card.CardTitle); string cardHeader = !string.IsNullOrEmpty(card.CardTitle.Title) ? $"<h5 class=\"card-header\" style=\"{cardTitleFontStyle}{cardTitleStyles}\">{card.CardTitle.Title}{exitButton}</h5>" : ""; return ($"<div class=\"card container{animationClasses}\" style=\"{defaultSettings}{fontSettings}\">{topImage}{cardHeader}{contentTitle}{contentText}<div class=\"cardContentus d-flex {flexWrap} {flex} {contentAlign}\">"); }
public string GetHtmlStringByBrowserElement(IBrowserElement element) { try { StringBuilder rawHtmlBuilder = new StringBuilder(); switch (element.Type) { case BrowserElementType.Card: BrowserCard card = element as BrowserCard; switch (card.CardType) { case BrowserCardType.HeaderDescriptionAndButtonWithIcon: string cardHtml2 = GetHtmlToAppendByBrowserCard(card); rawHtmlBuilder.Append(cardHtml2); break; default: string cardHtml3 = GetHtmlToAppendByBrowserCard(card); rawHtmlBuilder.Append(cardHtml3); break; } break; case BrowserElementType.BrowserBoxSelection: // Not implemented yet BrowserBoxSelection boxSelection = element as BrowserBoxSelection; rawHtmlBuilder.Append(GetHtmlToAppendByBrowserBoxSelection(boxSelection)); break; case BrowserElementType.Title: BrowserTitle titleElement = element as BrowserTitle; rawHtmlBuilder.Append(GetHtmlToAppendByBrowserTitle(titleElement)); break; case BrowserElementType.Text: BrowserText textElement = element as BrowserText; rawHtmlBuilder.Append(GetHtmlToAppendByBrowserTextElement(textElement)); break; case BrowserElementType.Checkbox: BrowserCheckBox checkBoxElement = element as BrowserCheckBox; rawHtmlBuilder.Append(GetHtmlToAppendByCheckBox(checkBoxElement)); break; case BrowserElementType.Button: BrowserButton browserButton = element as BrowserButton; rawHtmlBuilder.Append(GetHtmlToAppendByBrowserButton(browserButton)); break; case BrowserElementType.TextBox: BrowserTextBox browserTextBox = element as BrowserTextBox; rawHtmlBuilder.Append(GetHtmlToAppendByBrowserTextBox(browserTextBox)); break; case BrowserElementType.Password: BrowserPasswordTextBox browserPasswordTextBox = element as BrowserPasswordTextBox; rawHtmlBuilder.Append(GetHtmlToAppendByBrowserPasswordTextBox(browserPasswordTextBox)); break; case BrowserElementType.DropDown: BrowserDropDown dropDown = element as BrowserDropDown; rawHtmlBuilder.Append(GetHtmlToAppendByBrowserDropDown(dropDown)); break; case BrowserElementType.ProgressBar: BrowserProgressbar progressBar = element as BrowserProgressbar; rawHtmlBuilder.Append(GetHtmlToAppendByBrowserProgressBar(progressBar)); break; case BrowserElementType.Icon: BrowserButtonIcon icon = element as BrowserButtonIcon; rawHtmlBuilder.Append(GetHtmlToAppendByIcon(icon)); break; } return(rawHtmlBuilder.ToString()); } catch (Exception e) { ProvideError(e); return(""); } }
public void AddCard(string cardTitle, string cardContent) { var card = new BrowserCard(BrowserCardType.HeaderDescriptionAndButtonWithIcon, "", cardTitle, cardContent); this.Cards.Add(card); }
public string GetHtmlStringByElements(List <IBrowserElement> elements, List <Guid> alreadyAdded = null) { if (alreadyAdded == null) { alreadyAdded = new List <Guid>(); } StringBuilder rawHtmlBuilder = new StringBuilder(); if (elements.Any(w => w.Type == BrowserElementType.Card)) { List <IBrowserElement> container = elements.Where(w => w.Type == BrowserElementType.Card).ToList(); foreach (IBrowserElement element in container) { BrowserCard browserCard = element as BrowserCard; if (browserCard == null) { ProvideError("Error", "Browser Card is null."); continue; } alreadyAdded.Add(browserCard.Id); switch (browserCard.CardType) { case BrowserCardType.HeaderAndContent: string cardHtml = GetHtmlToAppendByBrowserCard(browserCard); foreach (IBrowserElement elem in elements.OrderBy(o => o.OrderIndex)) { if (alreadyAdded.Contains(elem.Id)) { continue; } if (!browserCard.ChildElements.Contains(elem.Id)) { continue; } alreadyAdded.Add(elem.Id); switch (elem.Type) { case BrowserElementType.Card: BrowserCard card = elem as BrowserCard; string align = GetContentAlignment(card.ItemAlignment); cardHtml += $"<div class=\"p-2 {align}\">"; if (card.ChildElements.Count <= 0) { cardHtml += GetHtmlStringByBrowserElement(elem); cardHtml += "</div></div></div>"; continue; } cardHtml += GetHtmlStringByBrowserElement(elem); for (int i = 1; i <= card.CurrentRow; i++) { IEnumerable <IBrowserElement> childElements = elements.Where(w => card.ChildElements.Contains(w.Id) && w.Row == i); if (!childElements.Any()) { continue; } string itemAlign = GetContentAlignment(card.ItemAlignment); cardHtml += $"<div class=\"p-2 {itemAlign} {card.FlexWrap.ToString().Replace('_', '-')}\" style=\"margin:0;padding:0;\">"; foreach (IBrowserElement child in childElements.OrderBy(w => w.OrderIndex)) { string childAlign = GetContentAlignment(child.ItemAlignment); cardHtml += $"<div class=\"p2 {childAlign} {child.FlexDirection.ToString().Replace('_', '-')}\">"; cardHtml += GetHtmlStringByBrowserElement(child); alreadyAdded.Add(child.Id); switch (child.Type) { case BrowserElementType.Card: cardHtml += "</div></div></div>"; break; } cardHtml += "</div>"; } cardHtml += "</div></div>"; } cardHtml += "</div></div>"; break; default: string itemAlignment = GetContentAlignment(elem.ItemAlignment); cardHtml += $"<div class=\"p-2 {itemAlignment}\">"; cardHtml += GetHtmlStringByBrowserElement(elem); cardHtml += "</div>"; break; } } rawHtmlBuilder.Append(cardHtml + "</div></div>"); break; case BrowserCardType.HeaderDescriptionAndButtonWithIcon: break; } } } foreach (IBrowserElement element in elements.OrderBy(w => w.OrderIndex)) { if (alreadyAdded.Contains(element.Id)) { continue; } rawHtmlBuilder.Append(GetHtmlStringByBrowserElement(element)); } return(rawHtmlBuilder.ToString()); }
public void AddElement(BrowserElement element) { element.OrderIndex = AddedElements++; //element.Position = this.Position; switch (element.Type) { case BrowserElementType.BrowserBoxSelection: BrowserBoxSelection boxSelection = element as BrowserBoxSelection; break; case BrowserElementType.Button: BrowserButton button = element as BrowserButton; Buttons.Add(button); break; case BrowserElementType.Title: BrowserTitle title = element as BrowserTitle; Titles.Add(title); break; case BrowserElementType.Text: BrowserText text = element as BrowserText; Texts.Add(text); break; case BrowserElementType.TextBox: BrowserTextBox textBox = element as BrowserTextBox; TextBoxes.Add(textBox); break; case BrowserElementType.Card: BrowserCard card = element as BrowserCard; Cards.Add(card); break; case BrowserElementType.Password: BrowserPasswordTextBox passwordTextBox = element as BrowserPasswordTextBox; PasswordTextBoxes.Add(passwordTextBox); break; //case BrowserElementType.YesNoDialog: // BrowserYesNoDialog yesNoDialog = element as BrowserYesNoDialog; // YesNoDialog = yesNoDialog; // break; case BrowserElementType.Checkbox: BrowserCheckBox checkBox = element as BrowserCheckBox; CheckBoxes.Add(checkBox); break; case BrowserElementType.DropDown: BrowserDropDown dropDown = element as BrowserDropDown; DropDowns.Add(dropDown); break; case BrowserElementType.ProgressBar: BrowserProgressBar progressBar = element as BrowserProgressBar; ProgressBars.Add(progressBar); break; case BrowserElementType.Container: BrowserContainer container = element as BrowserContainer; Container.Add(container); break; case BrowserElementType.Icon: BrowserButtonIcon icon = element as BrowserButtonIcon; Icons.Add(icon); break; default: NAPI.Util.ConsoleOutput($"UNKNOWN ELEMENT OF TYPE {element.Type}"); break; } }