public ExcludeData(Graph.Edge r) { this.parent = r.From; this.child = r.To; this.from = r.RelFrom; this.to = r.RelTo; }
public bool Contains(Graph.Edge r) { var ex = new ExcludeData(r); return(items .Where(m => m.parent?.UniqId == ex.parent?.UniqId && m.child?.UniqId == ex.child?.UniqId) .Any(m => m.Mergable(ex))); }
void updateVazby(bool refresh = false) { try { _vazby = Lib.Data.Graph.VsechnyDcerineVazby(this.ICO, refresh) .ToArray(); } catch (Exception) { _vazby = new Graph.Edge[] { }; } }
private static string PrintFlatRelations(Graph.Edge parent, int level, IEnumerable <Graph.Edge> relations, TiskEnum typ, List <string> renderedIds, bool withStats = true, string highlightSubjId = null) { if (parent == null) { return(PrintFlatRelations((Graph.MergedEdge)null, level, relations, typ, renderedIds, withStats, highlightSubjId)); } else { return(PrintFlatRelations(new Graph.MergedEdge(parent), level, relations, typ, renderedIds, withStats, highlightSubjId)); } }
void updateVazby(bool refresh = false) { lock (lockObj) { try { _vazby = Lib.Data.Graph.VsechnyDcerineVazby(this, refresh) .ToArray(); //if (string.IsNullOrEmpty(VazbyRaw)) // VazbyRaw = "[]"; //_vazby = Newtonsoft.Json.JsonConvert.DeserializeObject<Graph.Edge[]>(VazbyRaw); } catch (Exception) { _vazby = new Graph.Edge[] { }; } } }
private static string PrintFlatRelations(Graph.Edge parent, int level, IEnumerable <Graph.Edge> relations, TiskEnum typ, List <string> renderedIds, bool withStats = true, string highlightSubjId = null) { int space = 2; string horizLine = "--"; //new string('\u2500',2); string vertLine = "|"; //new string('\u2502',1); string cross = "+"; //new string('\u251C', 1); if (renderedIds == null) { renderedIds = new List <string>(); } var rels = relations .Where(m => ( (parent != null && m.From?.UniqId == parent.To?.UniqId) || (parent == null && !relations.Any(r => r.To?.UniqId == m.From?.UniqId)) //do root urovne pridej vazby, ktere jsou sirotci bez parenta ) ) .Distinct() .GroupBy(k => new { id = k.To.UniqId, type = k.To.Type }, (k, v) => { Graph.Edge withChildren = v.Where(r => relations.Any(m => m.From?.UniqId == r.To?.UniqId)).FirstOrDefault(); if (withChildren == null) { withChildren = v.First(); } return(withChildren); }) .OrderBy(m => m.To.PrintName(typ == TiskEnum.Html)) .ToArray(); if (rels.Count() == 0) { return(string.Empty); } StringBuilder sb = new StringBuilder(512); List <Graph.Edge> deepRels = new List <Graph.Edge>(); switch (typ) { case TiskEnum.Text: break; case TiskEnum.Html: case TiskEnum.Checkbox: sb.AppendLine("<ul>"); break; case TiskEnum.Json: break; } for (int i = 0; i < rels.Count(); i++) { var rel = rels[i]; if (renderedIds.Contains(rel.To.UniqId)) { continue; } var last = i == (rels.Count() - 1); Analysis.SubjectStatistic stat = null; if (withStats && rel.To.Type == Graph.Node.NodeType.Company) { stat = new Analysis.SubjectStatistic(rel.To.Id); } string subjId = rel.To.Type == Graph.Node.NodeType.Company ? rel.To.Id : "Osoba"; string subjName = rel.To.PrintName(); renderedIds.Add(rel.To.UniqId); switch (typ) { case TiskEnum.Text: sb.AppendLine(string.Concat(Enumerable.Repeat(vertLine + new string(' ', space), level + 1))); sb.Append( string.Concat( Enumerable.Repeat( vertLine + new string(' ', space) , (level)) ) ); if (rel.To.Highlighted) { subjName = string.Format("!!{0}!!", subjName); } sb.AppendFormat("{0}{1}:{2} {3}\n", cross + horizLine + " ", subjId, subjName, rel.Doba() ); sb.Append(PrintFlatRelations(rel, level + 1, relations, typ, renderedIds, withStats)); break; case TiskEnum.Html: if (withStats && stat != null) { sb.AppendFormat("<li class='{3} {6}'><a href='/subjekt/{0}'>{0}:{1}</a>{7}; {4}, celkem {5}. {2}</li>", subjId, subjName, PrintFlatRelations(rel, level + 1, relations, typ, renderedIds, withStats), last ? "" : "connect", PluralForm.Get((int)stat.BasicStatPerYear.Summary.Pocet, "{0} smlouva;{0} smlouvy;{0} smluv"), Smlouva.NicePrice(stat.BasicStatPerYear.Summary.CelkemCena, html: true, shortFormat: true), "aktualnost" + ((int)rel.Aktualnost).ToString(), (rel.Aktualnost < AktualnostType.Aktualni) ? rel.Doba("/{0}/") : string.Empty ); } else { sb.AppendFormat("<li class='{3} {4}'><a href='/subjekt/{0}'><span class=''>{0}:{1}</span></a>{5}. {2}</li>", subjId, subjName, PrintFlatRelations(rel, level + 1, relations, typ, renderedIds, withStats), last ? "" : "connect", "aktualnost" + ((int)rel.Aktualnost).ToString(), (rel.Aktualnost < AktualnostType.Aktualni) ? rel.Doba("/{0}/") : string.Empty, (!string.IsNullOrEmpty(highlightSubjId) && subjId == highlightSubjId) ? "highlighted" : "" ); } break; case TiskEnum.Checkbox: sb.AppendFormat(@"<li class=""{0} {1}""><input type=""checkbox"" name=""ico"" value=""{2}"" /> <span><b>{2}</b> {3}</span>{4}</li>" , (last ? "" : "connect"), ("aktualnost" + ((int)rel.Aktualnost).ToString()), subjId, subjName, PrintFlatRelations(rel, level + 1, relations, typ, renderedIds, withStats) ); break; case TiskEnum.Json: break; } } switch (typ) { case TiskEnum.Text: break; case TiskEnum.Html: case TiskEnum.Checkbox: sb.AppendLine("</ul>"); break; case TiskEnum.Json: break; } return(sb.ToString()); }