/// <summary> /// Get a MetaTreeNode from either MetaTree or UserObjectTree /// searching both by name and target /// </summary> /// <param name="name"></param> /// <returns></returns> public static MetaTreeNode GetNode( string name) { MetaTreeNode mtn = MetaTree.GetNode(name); // check main tree first if (mtn == null) // check UserObject tree if not in main tree { mtn = UserObjectTree.GetNodeByName(name); } if (mtn == null) // try by main tree target { mtn = MetaTree.GetNodeByTarget(name); } if (mtn == null) // try UserObject tree target { mtn = UserObjectTree.GetNodeByTarget(name); } if (mtn != null) { return(mtn); } else { return(null); } }
/// <summary> /// Setup /// </summary> /// <param name="prompt"></param> /// <param name="caption"></param> /// <param name="mc"></param> /// <param name="checkmarkDefaultColumn"></param> void Setup( string prompt, string caption, MetaColumn mc, bool selectSummarizedDataByDefault, bool checkmarkDefaultColumn) { MetaTable mt, mt2; QueryTable qt = null; QueryColumn qc = null; string selectedNodeTarget = "", topNodeTarget = ""; int i1; SelectSummarizedDataByDefault = selectSummarizedDataByDefault; CheckmarkDefaultColumn = checkmarkDefaultColumn; if (mc != null) { mt = mc.MetaTable; // specify starting table/field } else if (SelectedQt != null) { mt = SelectedQt.MetaTable; // use any last table } else { mt = null; } if (mt != null) { selectedNodeTarget = mt.Name; MetaTreeNode mtn = MetaTree.GetNodeByTarget(selectedNodeTarget); if (mtn == null && Lex.EndsWith(selectedNodeTarget, MetaTable.SummarySuffix)) { selectedNodeTarget = Lex.Replace(selectedNodeTarget, MetaTable.SummarySuffix, ""); mtn = MetaTree.GetNodeByTarget(selectedNodeTarget); } if (mtn != null) { topNodeTarget = selectedNodeTarget; } } if (String.IsNullOrEmpty(topNodeTarget)) { topNodeTarget = SS.I.PreferredProjectId; } ContentsTreeWithSearch.ContentsTreeCtl.FillTree( "root", MetaTreeNodeType.DataTableTypes, selectedNodeTarget, topNodeTarget, null, true, false); RenderTable(mt, mc); if (String.IsNullOrEmpty(caption)) { caption = "Select Data Field"; } Text = caption; if (String.IsNullOrEmpty(prompt)) { prompt = "Select a data table/assay from Database Contents and a Data Field"; } Prompt.Text = prompt; }
/// <summary> /// Get the description for a project in HTML format /// </summary> /// <param name="projIdString"></param> /// <returns></returns> public static string GetProjectHtmlDescription(string projIdString) { string html = ""; AfsProject p = AfsProject.SelectMetaData(projIdString); try { string templateFile = ServicesDirs.MetaDataDir + @"\MiscConfig\AFSProjectTemplate.htm"; StreamReader sr = new StreamReader(templateFile); html = sr.ReadToEnd(); sr.Close(); } catch (Exception ex) { return(ex.Message); } html = Lex.Replace(html, "[Project]", p.ProjectLabel); html = Lex.Replace(html, "[Platform]", p.PlatformName); html = Lex.Replace(html, "[Description]", p.Description); string targets = ""; foreach (AfsTarget t in p.Targets) { if (Lex.IsNullOrEmpty(t.TargetName)) { continue; } if (targets != "") { targets += " ,"; } targets += t.TargetName; if (!Lex.IsNullOrEmpty(t.TargetType)) { targets += " (" + t.TargetType + ")"; } } html = Lex.Replace(html, "[Targets]", targets); if (!Lex.IsNullOrEmpty(p.ProjectFlowScheme)) { html = Lex.Replace(html, "[LinkText]", "Link"); html = Lex.Replace(html, "[LinkArg]", p.ProjId.ToString()); } else { html = Lex.Replace(html, "[LinkText]", "Not Available"); } // Project metadata string currentCat = ""; string vals = ""; string metaHtml = ""; for (int i1 = 0; i1 < p.ProjMeta.Count; i1++) { AfsProjMeta m = p.ProjMeta[i1]; if (Lex.IsNullOrEmpty(m.CategoryName) || Lex.IsNullOrEmpty(m.CategoryValue)) { continue; } if (m.CategoryName != currentCat) // going to new category { if (vals != "") // add any vals for current category { metaHtml += "<strong>" + currentCat + " : </strong>" + vals + "<br>"; } currentCat = m.CategoryName; vals = ""; } if (vals != "") { vals += ", "; } vals += m.CategoryValue; } if (vals != "") // last one { metaHtml += "<strong>" + currentCat + " : </strong>" + vals + "<br>"; } html = Lex.Replace(html, "[ProjMeta]", metaHtml); // Assays metaHtml = ""; for (int i1 = 0; i1 < p.Assays.Count; i1++) { AfsAssay a = p.Assays[i1]; string target = a.AssayDb + "_" + a.AssayId; string label = a.AssayLabel; MetaTreeNode mtn = MetaTree.GetNodeByTarget(target); // try to get better label from contents tree if (mtn != null) { label = mtn.Label + " ("; if (!Lex.IsNullOrEmpty(a.AssayUse) && !Lex.Contains(label, a.AssayUse)) // append any assay use { label += "Use: " + a.AssayUse + ", "; } label += "Id: " + mtn.Target + ", "; label += MetaTreeNode.FormatStatistics(mtn); label += ")"; } metaHtml += " " + label + "<br>"; } html = Lex.Replace(html, "[AssayMeta]", metaHtml); // Libraries metaHtml = ""; for (int i1 = 0; i1 < p.Libraries.Count; i1++) { AfsLibrary l = p.Libraries[i1]; metaHtml += " " + l.LibLabel + "<br>"; } html = Lex.Replace(html, "[LibraryMeta]", metaHtml); // Flowscheme if any if (!Lex.IsNullOrEmpty(p.ProjectFlowScheme)) { html += "\v" + p.ProjectFlowScheme; } return(html); }