Esempio n. 1
0
        public List <Node> ConvertToNodes()
        {
            List <Node> nodes = new List <CAAC_LawLibrary.Entity.Node>();

            foreach (listItem item in this.data.list)
            {
                Node node = new CAAC_LawLibrary.Entity.Node();
                node.Id         = item.id.ToString();
                node.title      = item.title;
                node.nodeLevel  = item.nodeLevel;
                node.nodeNumber = item.nodeNumber;
                node.nodeOrder  = item.nodeOrder;
                nodes.Add(node);
            }
            return(nodes);
        }
Esempio n. 2
0
        private static List <NodeTag> pickTag(CAAC_LawLibrary.Entity.Node node)
        {
            List <NodeTag> tags = new List <NodeTag>();

            //标题中的标签
            if (string.IsNullOrEmpty(node.nodeClass) == false)
            {
                NodeTag tag = new NodeTag();
                tag.color      = getColor("class");
                tag.TagType    = getTypeCN("class");
                tag.TagNode    = node.title;
                tag.TagContent = node.nodeClass;
                tag.OuterHTML  = getContentButtonHtml("class", node.Id, node.title, node.nodeClass);
                tags.Add(tag);
            }
            if (string.IsNullOrEmpty(node.nodeDef) == false)
            {
                NodeTag tag = new NodeTag();
                tag.color      = getColor("define");
                tag.TagType    = getTypeCN("define");
                tag.TagNode    = node.title;
                tag.TagContent = node.nodeDef;
                tag.OuterHTML  = getContentButtonHtml("define", node.Id, node.title, node.nodeDef);
                tags.Add(tag);
            }
            if (string.IsNullOrEmpty(node.nodeKey) == false)
            {
                NodeTag tag = new NodeTag();
                tag.color      = getColor("key");
                tag.TagType    = getTypeCN("key");
                tag.TagNode    = node.title;
                tag.TagContent = node.nodeKey;
                tag.OuterHTML  = getContentButtonHtml("key", node.Id, node.title, node.nodeKey);
                tags.Add(tag);
            }
            if (string.IsNullOrEmpty(node.nodeRef) == false)
            {
                NodeTag tag = new NodeTag();
                tag.color   = getColor("ref");
                tag.TagType = getTypeCN("ref");
                tag.TagNode = node.title;
                //tag.TagContent = node.nodeRef;
                List <string> tagContentList = new List <string>();
                foreach (string str in node.nodeRef.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries))
                {
                    List <string> idsList = str.Split(new string[] { "@" }, StringSplitOptions.RemoveEmptyEntries).ToList();
                    if (idsList.Count > 0)
                    {
                        string lawId = idsList[0];
                        Law    law   = db.getLawById(lawId);
                        if (law != null)
                        {
                            tagContentList.Add(law.title);
                        }
                    }
                }
                tag.TagContent = string.Join(Environment.NewLine, tagContentList);
                tag.OuterHTML  = getContentButtonHtml("ref", node.Id, node.title, node.nodeRef);
                tags.Add(tag);
            }
            //正文中的标签
            List <string> list = (Global.online? node.content:node.offlineContent.ToString()).Split(new string[] { "</s>" }, StringSplitOptions.RemoveEmptyEntries).ToList();

            foreach (string part in list)
            {
                if (part.Contains("<s data-obj="))
                {
                    //NodeTag tag = new NodeTag();
                    string s            = part.Substring(part.IndexOf("<s data-obj="));
                    string selectedText = s.Substring(s.IndexOf(">") + 1);
                    //tag.TagContent = s.Substring(s.IndexOf(">") + 1);
                    //tag.OuterHTML = s;
                    int    sIndex     = s.IndexOf("\"") + 1;
                    int    eIndex     = s.LastIndexOf("\"");
                    string dataObject = string.Empty;
                    if (eIndex > sIndex)
                    {
                        dataObject = s.Substring(sIndex, eIndex - sIndex);
                        List <string> kv = dataObject.Split(new string[] { "-" }, StringSplitOptions.RemoveEmptyEntries).ToList();
                        if (kv.Count > 1)
                        {
                            //tag.TagType = kv[0];
                            //tag.TagNode = selectedText;
                            //tag.color = getColor(tag.TagType);
                            //tag.TagType = getTypeCN(tag.TagType);
                            if (kv[0] == "ref")
                            {
                                //List<string> list1 = new List<string>();
                                //foreach (string partStr in kv[1].Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries))
                                //{
                                //    foreach (string subpartStr in partStr.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries))
                                //    {
                                //        string lawId = string.Empty;
                                //        if (subpartStr.Contains("@"))
                                //        {
                                //            lawId = subpartStr.Substring(0, subpartStr.IndexOf("@"));
                                //        }
                                //        else
                                //        {
                                //            lawId = subpartStr;
                                //        }
                                //        Law law = db.getLawById(lawId);
                                //        if (law != null)
                                //        {
                                //            list1.Add(law.title);
                                //        }
                                //    }
                                //}
                                //tag.TagContent = string.Join(",", list1);
                                foreach (string partStr in kv[1].Split(new string[] { "||" }, StringSplitOptions.RemoveEmptyEntries))
                                {
                                    string typeStr    = string.Empty;
                                    string contentStr = string.Empty;
                                    if (partStr.Contains("=="))//2018.12.28 分隔符替换为==
                                    {
                                        typeStr    = partStr.Split(new string[] { "==" }, StringSplitOptions.RemoveEmptyEntries)[0];
                                        contentStr = partStr.Split(new string[] { "==" }, StringSplitOptions.RemoveEmptyEntries)[1];
                                    }
                                    foreach (string bookStr in contentStr.Split(new string[] { "#" }, StringSplitOptions.RemoveEmptyEntries))
                                    {
                                        string bookId = string.Empty;
                                        string nodeId = string.Empty;
                                        if (bookStr.Contains("@"))//含bookid和nodeid
                                        {
                                            bookId = bookStr.Split(new string[] { "@" }, StringSplitOptions.RemoveEmptyEntries)[0];
                                            Law    law     = db.getLawById(bookId);
                                            string nodeStr = bookStr.Split(new string[] { "@" }, StringSplitOptions.RemoveEmptyEntries)[1];
                                            foreach (string nodeIdStr in nodeStr.Split(new string[] { "|" }, StringSplitOptions.RemoveEmptyEntries))
                                            {
                                                nodeId = nodeIdStr;
                                                NodeTag tag = new NodeTag();
                                                if (typeStr.Contains("OUT"))//外部引用
                                                {
                                                    tag.color      = getColor("ref");
                                                    tag.TagType    = getTypeCN(typeStr);
                                                    tag.TagNode    = selectedText;                //Base64.DecodeBase64(bookId); //bookId;
                                                    tag.TagContent = Base64.DecodeBase64(bookId); //Base64.DecodeBase64(nodeId); //nodeId;
                                                    tag.OuterHTML  = getContentButtonHtml(kv[0], node.Id, selectedText, kv[1]);
                                                    tags.Add(tag);
                                                }
                                                else//内部引用
                                                {
                                                    CAAC_LawLibrary.Entity.Node tagNode = db.getNodeById(nodeId);
                                                    if (law != null)
                                                    {
                                                        tag.TagContent = law.title;
                                                    }
                                                    if (tagNode != null)
                                                    {
                                                        tag.TagContent += string.IsNullOrEmpty(tagNode.nodeNumber) ? "" : "-" + tagNode.nodeNumber;
                                                        tag.TagNode     = selectedText;//string.IsNullOrEmpty(tagNode.title) ? (string.IsNullOrEmpty(tagNode.nodeNumber)?tagNode.content:tagNode.nodeNumber) : tagNode.title;
                                                        string tagNodeStr = string.Empty;
                                                        if (string.IsNullOrEmpty(tagNode.title))
                                                        {
                                                        }
                                                    }
                                                    else//如果node在数据库中查不到,说明用户没有下载或打开过该法规,此时去接口中查node信息
                                                    {
                                                        if (Global.online == true)
                                                        {
                                                            if (RemoteWorker.getNodeDetail(new List <string>()
                                                            {
                                                                nodeId
                                                            }))
                                                            {
                                                                tagNode = db.getNodeById(nodeId);
                                                                if (tagNode != null)
                                                                {
                                                                    tag.TagContent += string.IsNullOrEmpty(tagNode.nodeNumber) ? "" : "-" + tagNode.nodeNumber;
                                                                    tag.TagNode     = selectedText;//tagNode.title;
                                                                }
                                                            }
                                                        }
                                                    }
                                                    tag.color     = getColor("ref");
                                                    tag.TagType   = getTypeCN(typeStr);
                                                    tag.OuterHTML = getContentButtonHtml(kv[0], node.Id, selectedText, kv[1]);
                                                    tags.Add(tag);
                                                }
                                            }
                                        }
                                        else//只含bookid
                                        {
                                            bookId = bookStr;
                                            Law     law = db.getLawById(bookId);
                                            NodeTag tag = new NodeTag();
                                            if (law != null)
                                            {
                                                tag.TagContent = law.title;
                                                tag.TagNode    = selectedText;//law.title;
                                            }
                                            tag.color     = getColor("ref");
                                            tag.TagType   = getTypeCN(typeStr);
                                            tag.OuterHTML = getContentButtonHtml(kv[0], node.Id, selectedText, kv[1]);
                                            tags.Add(tag);
                                        }
                                    }
                                }
                            }
                            else
                            {
                                NodeTag       tag   = new NodeTag();
                                List <string> list2 = new List <string>();
                                foreach (string s1 in kv[1].Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries))
                                {
                                    int id;
                                    if (int.TryParse(s1, out id)) //text可能为逗号分隔的id,也有可能是逗号分隔的文本值
                                    {
                                        list2.Add(Global.GetCodeValueById(s1));
                                    }
                                    else
                                    {
                                        list2.Add(s1);
                                    }
                                }
                                tag.TagContent = string.Join(",", list2);
                                tag.OuterHTML  = getContentButtonHtml(kv[0], node.Id, selectedText, kv[1]);
                                tags.Add(tag);
                            }
                        }
                    }
                }
            }
            return(tags);
        }