예제 #1
0
        /// <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);
            }
        }
예제 #2
0
/// <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;
        }
예제 #3
0
        /// <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 += "&nbsp; &nbsp;" + 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 += "&nbsp; &nbsp;" + l.LibLabel + "<br>";
            }

            html = Lex.Replace(html, "[LibraryMeta]", metaHtml);

// Flowscheme if any

            if (!Lex.IsNullOrEmpty(p.ProjectFlowScheme))
            {
                html += "\v" + p.ProjectFlowScheme;
            }

            return(html);
        }