public string BuildHtmlDirTree(int root) { string success; DirTreeSuccessModel dirTreeModel = new DirTreeSuccessModel(); try { IEnumerable <VwDirTree> VwDirTrees = new List <VwDirTree>(); using (var db = new OggleBoobleMySqlContext()) { // wow did this speed things up VwDirTrees = db.VwDirTrees.ToList().OrderBy(v => v.Id); } var vRootNode = VwDirTrees.Where(v => v.Id == root).First(); DirTreeModelNode rootNode = new DirTreeModelNode() { ThisNode = vRootNode }; DirTreeModelNode startNode = new DirTreeModelNode(); dirTreeModel.SubDirs.Add(startNode); startNode.SubDirs.Add(rootNode); GetDirTreeChildNodes(dirTreeModel, rootNode, VwDirTrees, ""); HtmlDirTreeRecurr(startNode); sbDirTree.Append("<div id='dirTreeCtxMenu'></div>"); WriteFileToDisk(sbDirTree.ToString()); success = "ok"; } catch (Exception ex) { success = Helpers.ErrorDetails(ex); } return(success); }
public DirTreeSuccessModel BuildDirTree(int root) { DirTreeSuccessModel dirTreeModel = new DirTreeSuccessModel(); try { var timer = new System.Diagnostics.Stopwatch(); timer.Start(); IEnumerable <VwDirTree> VwDirTrees = new List <VwDirTree>(); using (var db = new OggleBoobleMySqlContext()) { // wow did this speed things up VwDirTrees = db.VwDirTrees.ToList().OrderBy(v => v.Id); } var vRootNode = VwDirTrees.Where(v => v.Id == root).First(); DirTreeModelNode rootNode = new DirTreeModelNode() { ThisNode = vRootNode }; dirTreeModel.SubDirs.Add(rootNode); GetDirTreeChildNodes(dirTreeModel, rootNode, VwDirTrees, ""); timer.Stop(); dirTreeModel.TimeTook = timer.Elapsed; System.Diagnostics.Debug.WriteLine("RebuildCatTree took: " + timer.Elapsed); dirTreeModel.Success = "ok"; } catch (Exception ex) { dirTreeModel.Success = Helpers.ErrorDetails(ex); } return(dirTreeModel); }
private void GetDirTreeChildNodes(DirTreeSuccessModel dirTreeModel, DirTreeModelNode parentNode, IEnumerable <VwDirTree> VwDirTrees, string dPath) { List <VwDirTree> vwDirTreeNodes = VwDirTrees.Where(v => v.Parent == parentNode.ThisNode.Id).OrderBy(f => f.SortOrder).ThenBy(f => f.FolderName).ToList(); foreach (VwDirTree vNode in vwDirTreeNodes) { DirTreeModelNode childNode = new DirTreeModelNode() { ThisNode = vNode, DanniPath = dPath + "/" + WebUtility.HtmlEncode(vNode.FolderName) // .Replace(" ", "%20") }; parentNode.SubDirs.Add(childNode); if (vNode.IsStepChild == 0) { GetDirTreeChildNodes(dirTreeModel, childNode, VwDirTrees, WebUtility.HtmlEncode(dPath + "/" + vNode.FolderName)); } } }
private void HtmlDirTreeRecurr(DirTreeModelNode parentNode) { dirTreeTab += dirTreeTabIndent; string txtFileCount = "", expandClass = "", folderImage = ""; foreach (DirTreeModelNode vwDir in parentNode.SubDirs) { if (vwDir.ThisNode.FolderImage == null) { folderImage = "Images/redballon.png"; } else { folderImage = settingsImgRepo + vwDir.ThisNode.FolderImage; } expandMode = "-"; expandClass = ""; if (dirTreeTab / dirTreeTabIndent > expandDepth) { expandClass = "displayHidden"; if (vwDir.SubDirs.Count > 0) { expandMode = "+"; } } if (vwDir.ThisNode.SubFolderCount > 0) { //txtFileCount = "(" + parentNode.SubDirs.length + ")"; if (vwDir.ThisNode.FileCount > 0) { txtFileCount = "[" + vwDir.ThisNode.SubFolderCount + "] (" + String.Format("{0:n0}", vwDir.ThisNode.TotalChildFiles) + ") {" + vwDir.ThisNode.FileCount + "}"; } else { if (vwDir.SubDirs.Count == vwDir.ThisNode.SubFolderCount) { txtFileCount = vwDir.SubDirs.Count + " (" + String.Format("{0:n0}", vwDir.ThisNode.TotalChildFiles) + ")"; } else { txtFileCount = vwDir.SubDirs.Count + " [" + vwDir.ThisNode.SubFolderCount + " / " + String.Format("{0:n0}", vwDir.ThisNode.TotalChildFiles) + "]"; } } } else { txtFileCount = "(" + vwDir.ThisNode.FileCount + ")"; } randomId = Guid.NewGuid().ToString(); treeNodeClass = "treeLabelDiv"; if (vwDir.ThisNode.IsStepChild == 1) { treeNodeClass = "stepchildTreeLabel"; } if (vwDir.ThisNode.FolderName == null) { vwDir.ThisNode.FolderName = "unknown"; } sbDirTree.Append( "<div class='dirTreeNode clickable' style='text-indent:" + dirTreeTab + "px'>" + "<span id='DQ33" + randomId + "' onclick='toggleDirTree(\"" + randomId + "\")' >[" + expandMode + "] </span>" + "<div id='" + randomId + "aq' class='" + treeNodeClass + "' " + "onclick='commonDirTreeClick(\"" + vwDir.DanniPath + "\"," + vwDir.ThisNode.Id + ")' " + "oncontextmenu='showDirTreeContextMenu(" + vwDir.ThisNode.Id + ")' " + "onmouseover='showFolderImage(\"" + folderImage + "\")' onmouseout='hideFolderImage()'>" + vwDir.ThisNode.FolderName + "</div><span class='fileCount'> : " + txtFileCount + "</span></div>" + "\n<div class='" + expandClass + "' id='Q88" + randomId + "'>"); dirTreeTabIndent = 22; HtmlDirTreeRecurr(vwDir); sbDirTree.Append("</div>"); dirTreeTab -= dirTreeTabIndent; } }