tree_hierarchy 2.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/helper/support_method.rb +6 -1
- data/lib/hierarchy/added_hierarchy_level.rb +75 -36
- data/lib/hierarchy/hierarchy_with_level.rb +3 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cd96e4fd227c305f65ee064919210b1b90578a4e
|
4
|
+
data.tar.gz: e06bf8a983ee4c7d4306f306284f5391c373e323
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 81ea22e4fdb6b6d54f90463557e51f428db8ebf928578f0009ec9f3e91e401411bc56130092b2e5f67635e671290a2633f406362eb0417e0f5c80917b50c07d9
|
7
|
+
data.tar.gz: 8f45cdabd4c66953ef4608e3bf1d601848dd4d01bd91c15632ff8748d0ec845a0f0609e3cfa3d90a45d3b5bb4c94bbe78f75a278b8ac0d433a960fc00e567cd0
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module SupportMethod
|
2
2
|
|
3
3
|
def group_result_set(result_set)
|
4
|
-
result_set.group_by{|x| x.parent_id
|
4
|
+
result_set.group_by{|x| nil_check(x.parent_id) }
|
5
5
|
end
|
6
6
|
|
7
7
|
def total_calc(result_group,field_set)
|
@@ -19,4 +19,9 @@ module SupportMethod
|
|
19
19
|
def compare(arg1,arg2)
|
20
20
|
arg1 > arg2
|
21
21
|
end
|
22
|
+
|
23
|
+
def nil_check(value)
|
24
|
+
value ? value.to_i : value
|
25
|
+
end
|
26
|
+
|
22
27
|
end
|
@@ -4,63 +4,73 @@ module AddedHierarchyLevel
|
|
4
4
|
@@linear = []
|
5
5
|
|
6
6
|
def added_hierarchy(result_set,args,depth = 0)
|
7
|
-
|
8
|
-
parent_child_add(args)
|
9
|
-
level_check(depth) ? self.tree_structure(result_set,@@result_group) : self.tree_structure_depth(result_set,@@result_group,depth.to_i)
|
7
|
+
added_hierarchy_calc(result_set,args,depth,'tree_structure')
|
10
8
|
end
|
11
9
|
|
12
10
|
def added_hierarchy_level(result_set,args,depth = 0)
|
13
|
-
|
14
|
-
parent_child_add(args)
|
15
|
-
level_check(depth) ? self.tree_structure_level(result_set,@@result_group) : self.tree_structure_depth_level(result_set,@@result_group,depth.to_i)
|
11
|
+
added_hierarchy_calc(result_set,args,depth,'tree_structure_level')
|
16
12
|
end
|
17
|
-
|
13
|
+
|
14
|
+
def added_hierarchy_calc(result_set,args,depth,type)
|
15
|
+
initial = initial_load(result_set,args)
|
16
|
+
method_detection(result_set,depth,type,self,@@result_group)
|
17
|
+
end
|
18
|
+
|
18
19
|
def added_hchildren(result_set,args)
|
19
|
-
|
20
|
-
parent_child_add(args)
|
20
|
+
children_group(result_set,args)
|
21
21
|
self.hchildren_structure(result_set,@@result_group)
|
22
22
|
end
|
23
23
|
|
24
24
|
def added_hchildren_ids(result_set,args)
|
25
|
-
|
26
|
-
parent_child_add(args)
|
25
|
+
children_group(result_set,args)
|
27
26
|
self.hchildren_structure_ids(result_set,@@result_group)
|
28
27
|
end
|
29
28
|
|
30
29
|
def linear_level(result_set,depth = 0)
|
31
|
-
|
32
|
-
result_group = group_result_set(result_set)
|
33
|
-
level_check(depth) ? self.linear_structure_level(result_set,result_group) : self.linear_structure_depth_level(result_set,result_group,depth.to_i)
|
34
|
-
return @@linear
|
30
|
+
linear_calc(result_set,depth,'linear_structure_level')
|
35
31
|
end
|
36
32
|
|
37
33
|
def linear(result_set,depth = 0)
|
38
|
-
|
39
|
-
result_group = group_result_set(result_set)
|
40
|
-
level_check(depth) ? self.linear_structure(result_set,result_group) : self.linear_structure_depth(result_set,result_group,depth.to_i)
|
41
|
-
return @@linear
|
34
|
+
linear_calc(result_set,depth,'linear_structure')
|
42
35
|
end
|
43
36
|
|
44
|
-
def
|
45
|
-
|
46
|
-
|
47
|
-
parent_child_add(args)
|
48
|
-
level_check(depth) ? self.linear_structure(result_set,@@result_group) : self.linear_structure_depth(result_set,@@result_group,depth.to_i)
|
37
|
+
def linear_calc(result_set,depth,type)
|
38
|
+
result_group = linear_load(result_set)
|
39
|
+
method_detection(result_set,depth,type,self,result_group)
|
49
40
|
return @@linear
|
50
41
|
end
|
42
|
+
|
43
|
+
def added_linear(result_set,args,depth = 0)
|
44
|
+
added_calc(result_set,args,depth,'linear_structure')
|
45
|
+
end
|
51
46
|
|
52
47
|
def added_linear_level(result_set,args,depth = 0)
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
48
|
+
added_calc(result_set,args,depth,'linear_structure_level')
|
49
|
+
end
|
50
|
+
|
51
|
+
def added_calc(result_set,args,depth,type)
|
52
|
+
initial = added_linear_load(result_set,args)
|
53
|
+
method_detection(result_set,depth,type,initial,@@result_group)
|
57
54
|
return @@linear
|
55
|
+
end
|
56
|
+
|
57
|
+
def method_detection(result_set,depth,type,initial,result_group)
|
58
|
+
level_check(depth) ? initial.send(type,result_set,result_group) : initial.send(type+'_depth',result_set,@@result_group,depth.to_i)
|
59
|
+
end
|
60
|
+
|
61
|
+
def added_linear_load(result_set,args)
|
62
|
+
@@linear = initialise_array()
|
63
|
+
initial_load(result_set,args)
|
58
64
|
end
|
59
65
|
|
66
|
+
def initialise_array()
|
67
|
+
[]
|
68
|
+
end
|
69
|
+
|
60
70
|
def parent_child_add(field_set)
|
61
71
|
unless presence_check(@@result_group[self.id])
|
62
72
|
@@result_group[self.id].map{|x| x.parent_child_add(field_set)}
|
63
|
-
@@result_group[self.parent_id].each do|x|
|
73
|
+
@@result_group[nil_check(self.parent_id)].each do|x|
|
64
74
|
next unless x.id == self.id
|
65
75
|
for i in 0..field_set.length-1
|
66
76
|
x[field_set[i]] = total_calc(@@result_group[self.id],field_set[i])
|
@@ -70,16 +80,14 @@ module AddedHierarchyLevel
|
|
70
80
|
end
|
71
81
|
|
72
82
|
def linear_structure_level(result_set,result_group,increment = 1)
|
73
|
-
self.attributes.merge(:level => increment)
|
74
|
-
@@linear << self
|
83
|
+
@@linear << self.attributes.merge(:level => increment)
|
75
84
|
result_group[self.id].map{|x| x.linear_structure_level(result_set,result_group,increment+1)} unless presence_check(result_group[self.id])
|
76
85
|
end
|
77
86
|
|
78
|
-
def
|
87
|
+
def linear_structure_level_depth(result_set,result_group,depth,increment = 1)
|
79
88
|
unless compare(increment,depth)
|
80
|
-
self.attributes.merge({:level => increment})
|
81
|
-
|
82
|
-
result_group[self.id].map{|x| x.linear_structure_depth(result_set,result_group,depth,increment + 1)} unless presence_check(result_group[self.id])
|
89
|
+
@@linear << self.attributes.merge({:level => increment})
|
90
|
+
linear_method_detection(result_set,result_group,depth,increment,'linear_structure_level_depth')
|
83
91
|
end
|
84
92
|
end
|
85
93
|
|
@@ -91,8 +99,39 @@ module AddedHierarchyLevel
|
|
91
99
|
def linear_structure_depth(result_set,result_group,depth,increment = 1)
|
92
100
|
unless compare(increment,depth)
|
93
101
|
@@linear << self
|
94
|
-
|
102
|
+
linear_method_detection(result_set,result_group,depth,increment,'linear_structure_depth')
|
95
103
|
end
|
96
104
|
end
|
97
105
|
|
106
|
+
def linear_method_detection(result_set,result_group,depth,increment,type)
|
107
|
+
result_group[self.id].map{|x| x.send(type,result_set,result_group,depth,increment + 1)} unless presence_check(result_group[self.id])
|
108
|
+
end
|
109
|
+
|
110
|
+
private
|
111
|
+
|
112
|
+
|
113
|
+
def initial_load(result_set,args)
|
114
|
+
children_group(result_set,args)
|
115
|
+
@@result_group[nil_check(self.parent_id)].select{|x| x.id == self.id}.first
|
116
|
+
end
|
117
|
+
|
118
|
+
def children_group(result_set,args)
|
119
|
+
@@result_group = group_result_set(result_set)
|
120
|
+
parent_child_add(args)
|
121
|
+
end
|
122
|
+
|
123
|
+
def linear_load(result_set)
|
124
|
+
@@linear = initialise_array()
|
125
|
+
group_result_set(result_set)
|
126
|
+
end
|
127
|
+
|
128
|
+
def added_linear_load(result_set,args)
|
129
|
+
@@linear = initialise_array()
|
130
|
+
initial_load(result_set,args)
|
131
|
+
end
|
132
|
+
|
133
|
+
def initialise_array()
|
134
|
+
[]
|
135
|
+
end
|
136
|
+
|
98
137
|
end
|
@@ -2,15 +2,15 @@ module HierarchyWithLevel
|
|
2
2
|
|
3
3
|
def hierarchy_level(result_set,depth = 0)
|
4
4
|
result_group = group_result_set(result_set)
|
5
|
-
level_check(depth) ? self.tree_structure_level(result_set,result_group) : self.
|
5
|
+
level_check(depth) ? self.tree_structure_level(result_set,result_group) : self.tree_structure_level_depth(result_set,result_group,depth.to_i)
|
6
6
|
end
|
7
7
|
|
8
8
|
def tree_structure_level(result_set,result_group,increment = 1)
|
9
9
|
presence_check(result_group[self.id]) ? self.attributes.merge({:level => increment}) : self.attributes.merge({:level => increment, :children => result_group[self.id].map{|x| x.tree_structure_level(result_set,result_group,increment + 1)}})
|
10
10
|
end
|
11
11
|
|
12
|
-
def
|
13
|
-
presence_check(result_group[self.id]) ? self.attributes.merge({:level => increment}) : self.attributes.merge({:level => increment, :children => result_group[self.id].map{|x| x.
|
12
|
+
def tree_structure_level_depth(result_set,result_group,depth,increment = 1)
|
13
|
+
presence_check(result_group[self.id]) ? self.attributes.merge({:level => increment}) : self.attributes.merge({:level => increment, :children => result_group[self.id].map{|x| x.tree_structure_level_depth(result_set,result_group,depth,increment + 1)}}) unless compare(increment,depth)
|
14
14
|
end
|
15
15
|
|
16
16
|
def hchildren(result_set)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tree_hierarchy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dheenadhayalan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-05-02 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: " \n Tree_hierarchy allows to form a tree structure based on parent-child
|
14
14
|
relationship \n with simple and fast computation for large records. Additional
|