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); }
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); }