public static XElement SpanDates(SNode item, SNode excepted) { string df = item.DateFirst(); string dl = item.DateLast(); XElement xdates = (!String.IsNullOrEmpty(df) || !String.IsNullOrEmpty(dl)) ? new XElement("span", //new XAttribute("class", "date"), // "[" + SSNodeExt.DatePrinted(df) + (dl != null ? "-" + SSNodeExt.DatePrinted(dl) : "") //+ "]" ) : null; IEnumerable <XObject> xPlaces = from inDoc in item.InverseProperties("in-doc") let ground = inDoc.AllElseProps <SDataLink>().FirstOrDefault(g => g.Definition.Id == "ground") where ground != null && ground.InnerText == "place" let reflectedPlace = inDoc.AllElseProps <SObjectLink>().FirstOrDefault(refl => refl.Definition.Id == "reflected") where reflectedPlace != null && reflectedPlace.Target != null && reflectedPlace.Target != excepted && reflectedPlace.Target.Name() != String.Empty select new XElement("span", reflectedPlace.Target.Name()); //,new XAttribute("href", "?id="+reflectedPlace.TargetId)); return(new XElement("span", new XAttribute("style", "text-align:center;"), xdates, xdates != null && xPlaces.Any() ? ", " : null, EnumExtensions.InsertSplitter(xPlaces, new XText(", ")))); }
public static XObject DmDataField(SGraph.SNode item, SGraph.ROntologyDatatypePropertyDefinition prop) { string str = null; var range_name = prop.DirectObjectLinks("range") .Select(p => p.TargetId).FirstOrDefault(); if (range_name == "string") { str = item.DataField(prop.Id); } else if (range_name == "date") { str = item.DataField(prop.Id); str = SSNodeExt.DatePrinted(str); } else if (range_name == "text") { str = item.TextField(prop.Id, "ru"); } else if (range_name == "Email") { str = item.TextField(prop.Id, "ru"); } else if (range_name == "URI") { string uri_text = item.DataField(prop.Id); return(uri_text != null ? new XElement("a", new XAttribute("href", uri_text), new XAttribute("target", "external"), uri_text) : null); } else if (range_name != null) { var range_def = StaticModels.sDataModel.OntologyModel.GetItemById(range_name); if (range_def != null && range_def.Definition.Id == "EnumerationType") { string enum_value = item.DataField(prop.Id); if (enum_value != null) { str = range_def.DirectProperties().Where(p => p.Definition.Id == "state").Cast <SGraph.SDataLink>() .Select(p => p.XOriginal).Where(px => px.Attribute("value").Value == enum_value && px.Attribute(SGraph.SNames.xmllang).Value == "ru") .Select(px => px.Value).FirstOrDefault(); } } } return(str == null ? null : new XText(str)); }