public override HtmlTag Build(ElementRequest request) { HtmlTag root = new HtmlTag("div"); root.AddClass("KYT_ListDisplayRoot"); var selectListItems = request.RawValue as IEnumerable<string>; if (selectListItems == null) return root; selectListItems.Each(item=> root.Child(new HtmlTag("div").Text(item))); return root; }
public DebugReportTagWriter() { _lastTag = _div; _behaviorTags.OnMissing = b => { HtmlTag tag = BuildBehaviorTag(b); _lastTag.Child(tag); _lastTag = tag; return tag; }; }
public void WriteBody(BehaviorChain chain, HtmlTag row, HtmlTag cell) { var text = Text(chain); if (shouldBeClickable(chain.Route)) { cell.Child(new LinkTag(text, chain.Route.Pattern.ToAbsoluteUrl()).AddClass("route-link")); } else { cell.Text(text); } if (text.StartsWith(DiagnosticUrlPolicy.DIAGNOSTICS_URL_ROOT)) { row.AddClass(BehaviorGraphWriter.FUBU_INTERNAL_CLASS); } }
public HtmlTag FilterTemplatesFor(GridViewModel model) { var tag = new HtmlTag("div"); var containerNameForGrid = model.GridType.ContainerNameForGrid(); tag.Id("filters_" + containerNameForGrid); tag.AddClass("smart-grid-filter"); tag.Child(new TableTag()); var metadata = new Dictionary<string, object>{ {"gridId", "grid_" + model.GridName}, {"initialCriteria", model.InitialCriteria()} }; tag.MetaData("filters", metadata); var properties = model.FilteredProperties; var templates = _sources.SelectMany(x => x.TagsFor(properties)); var operators = properties.Select(prop => { return new SelectTag(select => { prop.Operators.Each(oper => select.Option(oper.ToString(), oper.Key)); }).AddClass(prop.Accessor.Name); }); tag.Add("div", div => { div.Hide(); div.AddClass("templates"); div.Add("div").AddClass("smart-grid-editors").AddChildren(templates); div.Add("div").AddClass("smart-grid-operators").AddChildren(operators); div.Child(new SelectTag(select => { select.AddClass("smart-grid-properties"); properties.Each(prop => select.Option(prop.Header, prop.Accessor.Name)); })); }); return tag; }
public HtmlTag Execute(ManageProjectMenuRequest request) { var menus = new HtmlTag("ul"); //menus.Child(new HtmlTag("li").Child( // new LinkTag("Add User", // _urlRegistry.UrlFor(new AddUserToProjectRequest() {Id = request.Id}), // "manage-proj-menu").Title("Add User")).AddClass("bar")); menus.Child(new HtmlTag("li").Child( new LinkTag("Manage Users", _urlRegistry.UrlFor(new ProjectUsersRequest() { Id = request.Id }), "").Title("Manage Users")).AddClass("bar")); var script = new HtmlTag("script").Attr("type", "text/javascript") .Text( "$(function(){$('.manage-proj-menu').ajaxDialog({onComplete:HandleAjaxResponse,dataType:'json'});});"); menus.Next = script; return menus; }
public void WriteBody(BehaviorChain chain, HtmlTag row, HtmlTag cell) { cell.Child(new LinkTag(Text(chain), "chain/" + chain.UniqueId).AddClass("chainId")); }
public HtmlDocument Example(ExampleHtmlRequest exampleHtmlRequest) { var modelPath = exampleHtmlRequest.Model ?? typeof(ExampleViewModel).FullName + "-Person"; var tags = new List<HtmlTag>(); var propertyPath = new List<string>(modelPath.Split('-')); var rootModelTypeName = propertyPath[0]; tags.Add(new HtmlTag("h3").AddClass("viewmodel").Text(propertyPath.Join("."))); propertyPath.RemoveAt(0); Type scannedModelType = getTypeFromName(rootModelTypeName); var scannedModelInstance = createInstance(scannedModelType); var tagGeneratorType = typeof(TagGenerator<>).MakeGenericType(scannedModelType); var tagGenerator = (ITagGenerator)_serviceLocator.GetInstance(tagGeneratorType); tagGenerator.SetModel(scannedModelInstance); var propertyChainParts = new List<PropertyInfo>(); while (propertyPath.Count > 0) { var parentPropertyInfo = scannedModelType.GetProperty(propertyPath[0]); propertyChainParts.Add(parentPropertyInfo); var currentModelType = parentPropertyInfo.PropertyType; var currentModel = createInstance(currentModelType); setProperty(parentPropertyInfo, scannedModelInstance, currentModel); scannedModelType = currentModelType; scannedModelInstance = currentModel; propertyPath.RemoveAt(0); } var modelProperties = scannedModelType.GetProperties(); var propertiesToLink = modelProperties.Where(p => !TypeDescriptor.GetConverter(p.PropertyType).CanConvertFrom(typeof(string))); var propertiesToShow = modelProperties.Except(propertiesToLink); // show links to deeper properties var linkList = new HtmlTag("ul").AddClass("subproperties"); foreach (var propertyInfo in propertiesToLink) { var linkTag = new LinkTag("", _examplePageUrl + "?model=" + modelPath + "-" + propertyInfo.Name); linkTag.Child(new HtmlTag("code").Text(getPropertySourceCode(propertyInfo))); var listItem = new HtmlTag("li").Child(linkTag); linkList.Child(listItem); } if (linkList.Children.Count > 0) tags.Add(linkList); // show examples populateInstance(scannedModelInstance, propertiesToShow); foreach (var propertyInfo in propertiesToShow) { var property = propertyChainParts.Count > 0 ? (Accessor) new PropertyChain(propertyChainParts.Concat(new[]{propertyInfo}).ToArray()) : new SingleProperty(propertyInfo); var propertyExpression = "x => x." + property.PropertyNames.Join("."); var propertySource = getPropertySourceCode(propertyInfo); var example = new HtmlTag("div").AddClass("example"); example.AddChildren(new HtmlTag("code").AddClass("property").Text(propertySource)); example.AddChildren(createExample(tagGenerator.LabelFor(tagGenerator.GetRequest(property)), "LabelFor({0})".ToFormat(propertyExpression))); example.AddChildren(createExample(tagGenerator.DisplayFor(tagGenerator.GetRequest(property)), "DisplayFor({0})".ToFormat(propertyExpression))); example.AddChildren(createExample(tagGenerator.InputFor(tagGenerator.GetRequest(property)), "InputFor({0})".ToFormat(propertyExpression))); tags.Add(example); } var doc = DiagnosticHtml.BuildDocument(_urlRegistry, "FubuMVC.UI Examples", tags.ToArray()); doc.AddStyle(DiagnosticHtml.GetResourceText(GetType(), "examples.css")); return doc; }
public void WriteBody(BehaviorChain chain, HtmlTag row, HtmlTag cell) { var outputType = chain.ActionOutputType(); cell.Child(new LinkTag(outputType.Name, _examplePageUrl + "?model=" + outputType.FullName)); }
private HtmlTag showIntro() { var container = new HtmlTag("div").AddClass("intro"); container.Child( new HtmlTag("p").Text(@" These pages demonstrate the output that is rendered when using the FubuMVC.UI conventional HTML generators (InputFor/DisplayFor/LabelFor). To alter how the tags are generated, create your own class that derives from HtmlConventionRegistry, and declare it in your FubuRegistry using:" )); container.Child(new HtmlTag("pre").Text("this.HtmlConvention<MyHtmlConventionRegistry>();")); container.Child( new HtmlTag("p").Text(@" To alter how a property value is converted to a string value, use the StringConversions() extension method in your FubuRegistry. For example:" )); container.Child(new HtmlTag("pre").Text(@" this.StringConversions(x => { x.IfIsType<DateTime>().ConvertBy(date => date.ToShortDateString()); }); ")); container.Child(new HtmlTag("p").Text(@"You can see the conventions applied by selecting one of your view models below, or applied to ").Child(new LinkTag("the built-in example model.", _examplePageUrl))); return container; }
private HtmlTag getDiagnosticActionLink(MethodInfo method, string url) { var li = new HtmlTag("li"); li.Child(new LinkTag(method.Name, url)); var description = method.GetAttribute<DescriptionAttribute>().Description; li.Child(new HtmlTag("span").Text(" - " + description)); return li; }
public HtmlDocument Index() { var tags = new List<HtmlTag>(); var ul = new HtmlTag("ul"); tags.Add(ul); availableActions().Each(method => { var url = DiagnosticUrlPolicy.RootUrlFor(method); ul.Child(getDiagnosticActionLink(method, url)); }); var diagnosticAssemblies = _graph.Behaviors .Where(isDiagnosticChain) .GroupBy(chain => chain.FirstCall().HandlerType.Assembly.GetName().Name) .OrderBy(group => group.Key); foreach (var assembly in diagnosticAssemblies) { tags.Add(new HtmlTag("h3").Text(assembly.Key)); var moreUl = new HtmlTag("ul"); tags.Add(moreUl); foreach (var additionalRoute in assembly) { moreUl.Child(getDiagnosticActionLink(additionalRoute.FirstCall().Method, additionalRoute.RoutePattern.ToAbsoluteUrl())); } } return BuildDocument("Home", tags.ToArray()); }
public HtmlDocument Chain(ChainRequest chainRequest) { var title = "Chain " + chainRequest.Id; var behaviorChain = _graph.Behaviors.FirstOrDefault(chain => chain.UniqueId == chainRequest.Id); if (behaviorChain == null) { return BuildDocument("Unknown chain", new HtmlTag("span").Text("No behavior chain registered with ID: " + chainRequest.Id)); } var content = new HtmlTag("div").AddClass("main-content"); var document = new HtmlTag("div"); var pattern = behaviorChain.RoutePattern; if( pattern == string.Empty ) { pattern = "(default)"; } document.Child(new HtmlTag("div").Text("Route: " + pattern)); var nodeTable = new TableTag(); nodeTable.AddHeaderRow(header => { header.Header("Category"); header.Header("Description"); header.Header("Type"); }); foreach (var node in behaviorChain) { var description = node.ToString().HtmlEncode().ConvertCRLFToBreaks(); nodeTable.AddBodyRow(row => { row.Cell().Text(node.Category.ToString()); row.Cell().UnEncoded().Text(description); row.Cell().Text(node.GetType().FullName); if (description.Contains(_diagnosticsNamespace)) { row.AddClass(FUBU_INTERNAL_CLASS); } }); } var logDiv = new HtmlTag("div").AddClass("convention-log"); var ul = logDiv.Add("ul"); var observer = _graph.Observer; behaviorChain.Calls.Each( call => observer.GetLog(call).Each( entry => ul.Add("li").Text(entry))); content.AddChildren(new[]{ document, new HtmlTag("h3").Text("Nodes:"), nodeTable, new HtmlTag("h3").Text("Log:"), logDiv}); return BuildDocument(title, content); }
private void addCommentLink(HtmlTag tag) { var commentLink = new SelectorLinkTag(GrammarConstants.COMMENT); commentLink.Label(GrammarConstants.COMMENT); tag.Child(commentLink); }
public HtmlDocument Chain(ChainRequest chainRequest) { var behaviorChain = _graph.Behaviors.FirstOrDefault(chain => chain.UniqueId == chainRequest.Id); if (behaviorChain == null) { return BuildDocument("Unknown chain", new HtmlTag("span").Text("No behavior chain registered with ID: " + chainRequest.Id)); } var heading = new HtmlTag("h1").Modify(t => { t.Add("span").Text("Chain "); t.Add("span").AddClass("chainId").Text(behaviorChain.UniqueId.ToString()); }); var document = new HtmlTag("div"); document.Child(new HtmlTag("div").Text("Route: " + behaviorChain.RoutePattern)); var nodeTable = new TableTag(); nodeTable.AddHeaderRow(header => { header.Header("Category"); header.Header("Description"); header.Header("Type"); }); behaviorChain.Each(node => nodeTable.AddBodyRow(row => { row.Cell().Text(node.Category.ToString()); row.Cell().Text(node.ToString()); row.Cell().Text(node.GetType().FullName); })); return BuildDocument("Chain " + chainRequest.Id, heading, document, new HtmlTag("h2").Text("Nodes:"), nodeTable); }