summaryrefslogtreecommitdiffstats
path: root/DHTMLX.Export.PDF/TreeTimelineParser.cs
diff options
context:
space:
mode:
authorAlexKlimenkov <shurick.klimenkov@gmail.com>2017-02-17 13:45:02 +0300
committerAlexKlimenkov <shurick.klimenkov@gmail.com>2017-02-17 13:45:02 +0300
commite495105f25efd2b401c79a1be1b2abd0264b4226 (patch)
treeb4386cefc590345e669dddee95c326feab17084c /DHTMLX.Export.PDF/TreeTimelineParser.cs
downloadscheduler-export-net-e495105f25efd2b401c79a1be1b2abd0264b4226.zip
scheduler-export-net-e495105f25efd2b401c79a1be1b2abd0264b4226.tar.gz
scheduler-export-net-e495105f25efd2b401c79a1be1b2abd0264b4226.tar.bz2
Diffstat (limited to 'DHTMLX.Export.PDF/TreeTimelineParser.cs')
-rw-r--r--DHTMLX.Export.PDF/TreeTimelineParser.cs61
1 files changed, 61 insertions, 0 deletions
diff --git a/DHTMLX.Export.PDF/TreeTimelineParser.cs b/DHTMLX.Export.PDF/TreeTimelineParser.cs
new file mode 100644
index 0000000..70d97b6
--- /dev/null
+++ b/DHTMLX.Export.PDF/TreeTimelineParser.cs
@@ -0,0 +1,61 @@
+using System.Text.RegularExpressions;
+
+namespace DHTMLX.Export.PDF
+{
+ public class TreeTimelineCategory
+ {
+ public bool Expanded { get; set; }
+ public int Level { get; set; }
+ public bool IsExpandable { get; set; }
+ public string Text { get; set; }
+ public TreeTimelineCategory(string text, int level, bool allowchild, bool expanded)
+ {
+ Level = level;
+ Expanded = expanded;
+ IsExpandable = allowchild;
+ Text = text;
+ }
+ public TreeTimelineCategory() : this("", 0, false, false)
+ {
+
+ }
+ }
+
+
+ public class TreeTimelineParser
+ {
+
+ /*
+ * Html tree timeline rows, e.g.:
+ <div class=\"dhx_scell_level0\">
+ <div class=\"dhx_scell_expand\">-</div><div class=\"dhx_scell_name\">Web Testing Dep.</div>
+ </div>
+ <div class=\"dhx_scell_level1\">
+ <div class=\"dhx_scell_expand\"> </div><div class=\"dhx_scell_name\">Managers</div>
+ </div>
+ <div class=\"dhx_scell_level1\">
+ <div class=\"dhx_scell_name\">Elizabeth Taylor</div>
+ </div>"
+ */
+ public static bool IsTreeRow(string item)
+ {
+ var treeRowRegex = "^<div.*dhx_scell_level.*>.*(dhx_scell_expand|dhx_scell_name).*<\\/div>$";
+ return (Regex.IsMatch(item.Trim(), treeRowRegex));
+ }
+ public TreeTimelineCategory Parse(string item)
+ {
+ var levelReg = "dhx_scell_level([0-9]+)";
+ var isExpandable = "dhx_scell_expand";
+ var state = "dhx_scell_expand.*?>(-| )<\\/div";
+ var text = "dhx_scell_name.*?>(.+?)<\\/div";
+ var expandable = Regex.IsMatch(item, isExpandable);
+ var level = 0;
+ int.TryParse(Regex.Match(item, levelReg).Groups[1].Value, out level);
+ var expanded = Regex.Match(item, state).Groups[1].Value == "-";
+ var value = Regex.Match(item, text).Groups[1].Value;
+ return new TreeTimelineCategory(value, level, expandable, expanded);
+
+
+ }
+ }
+}