treemap21 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c6d4cea411a212554b648adda8cc3ef97caeb9bc777930fae4812d6cfff3531a
4
- data.tar.gz: d53d6fae22338a229522fa0e3ff80797708fea28e856456f705a3bc4a0cd81d2
3
+ metadata.gz: eab8d9c1cea48b4a87cae180ee9833edb73228b2b030f79b8147bbe182c759f3
4
+ data.tar.gz: 61de221e10bf7313e9ce20dabdf6c02348a5a252b286f7b8b1726faf931100c1
5
5
  SHA512:
6
- metadata.gz: 9e97f1cf05c2c1c55147c4f010459e40ab4d8ceded089d14fb081d6d91ab773af3be2bb0922dee7bfcb4f5f9d0c4bde257273e033c23c23da0d2aa05110a0572
7
- data.tar.gz: d597f34903c1c95d0d403dc3c93028d27e06284c0037b880e4bb18a18032ab9fcf512f32073a22011a2b13f3c7aa640e7b32b1f5fb456e866265dbda44272388
6
+ metadata.gz: bdd8d262424837797d71b637bc37bb1b2bd3902d6f55a74957768c2029abd1c4abfce774bccc3037b47c58fa5d489ee63c1653f89dd42de5ddddac826a1a09de
7
+ data.tar.gz: 06d08c9ddcc9a542c8dca4460490bb1564077ab5b2012e9febbfd2cdc7bb3009981a78e1409ea3bc0af3ec8b2fae4ae949a2e6b34f832bfe7afce749601f441a
checksums.yaml.gz.sig CHANGED
Binary file
data.tar.gz.sig CHANGED
Binary file
data/lib/treemap21.rb CHANGED
@@ -25,12 +25,14 @@ class Treemap21
25
25
 
26
26
  doc3 = Rexle.new("<div id='box1' class='cbox'/>")
27
27
  doc = mapper(doc3, @a, orientation: @orientation)
28
+
29
+ cbox_css = doc.root.xpath('//div[@class="cbox1"]').map do |e|
30
+ hex = 3.times.map { rand(60..250).to_s(16) }.join
31
+ "#%s { background-color: #%s}" % [e.attributes[:id], hex]
32
+ end
33
+
28
34
  boxes = doc.root.xml pretty: true
29
35
 
30
- cbox_css = @a.length.times.with_index.map do |i|
31
- hex = 3.times.map { rand(60..250).to_s(16) }.join
32
- "#cbox%s {background-color: #%s}" % [i+1, hex]
33
- end
34
36
 
35
37
  <<EOF
36
38
  <html>
@@ -40,7 +42,7 @@ class Treemap21
40
42
  width: 100%;
41
43
  height: 100%;
42
44
  }
43
- .cbox1 ~.long, .cbox1 {
45
+ .long, .cbox1 {
44
46
  float: left;
45
47
  }
46
48
  .cbox1, .cbox1 a {
@@ -58,6 +60,27 @@ class Treemap21
58
60
 
59
61
  .cbox1 a:hover { background-color: rgba(255,255,255,0.2); color: #902}
60
62
  .cbox1 span { background-color: transparent; color2: #300 }
63
+
64
+ .cbox {position: relative}
65
+
66
+ .glabel {
67
+ background-color: #111;
68
+ width: 100%;
69
+ height: 30px;
70
+ color: #fff; font-size: 1.6em;
71
+ position: absolute;
72
+ z-index: 1
73
+ }
74
+
75
+ .gfoot {
76
+ background-color: #111;
77
+ width: 100%;
78
+ height: 20px;
79
+ position: absolute;
80
+ bottom: 0;
81
+ }
82
+
83
+ .group { border: 0px solid black;}
61
84
 
62
85
  .c10 {font-size: 8em}
63
86
  .c9 {font-size: 7.5em}
@@ -89,12 +112,12 @@ EOF
89
112
 
90
113
  span = Rexle::Element.new('span', value: text)
91
114
 
92
- a = attr.map {|key, value| "%s: %s" % [key, value]}
115
+ #a = attr.map {|key, value| "%s: %s" % [key, value]}
93
116
 
94
117
  h = {
95
118
  id: 'cbox' + @count.to_s,
96
- class: 'cbox1 ' + cfont,
97
- style: a.join('; ')
119
+ class: 'cbox1 ' + cfont#,
120
+ #style: a.join('; ')
98
121
  }
99
122
  @count = @count + 1
100
123
 
@@ -113,11 +136,13 @@ EOF
113
136
 
114
137
  end
115
138
 
116
- def mapper(doc, a, orientation: :landscape, total: 100)
139
+ def mapper(doc, a, orientation: :landscape, total: 100, scale: 100)
117
140
 
118
141
  if @debug then
142
+ puts 'a: ' + a.inspect
119
143
  puts 'orientation: ' + orientation.inspect
120
144
  puts 'total: ' + total.inspect
145
+ puts 'scale: ' + scale.inspect
121
146
  end
122
147
 
123
148
  klass = if orientation == :landscape then
@@ -131,8 +156,9 @@ EOF
131
156
  # find the largest box
132
157
  a2 = a.sort_by {|_, percent, _| percent}
133
158
  puts 'a2.first: ' + a2.first.inspect if @debug
134
- title, percent, url = a2.pop
135
-
159
+ item = a2.pop
160
+
161
+ percent = item[1]
136
162
  remainder = total - percent
137
163
  # how much space does the largest box take?
138
164
  rpct = 100 / (total / percent.to_f)
@@ -145,14 +171,61 @@ EOF
145
171
  end
146
172
 
147
173
  puts 'new_orientation: ' + new_orientation.inspect if @debug
148
-
174
+
149
175
  dimension = orientation == :landscape ? :width : :height
150
176
  style = { dimension => rpct.round.to_s + '%' }
151
177
 
152
- e = add_box(title, url, style, ("c%02d" % percent).to_s[0..-2])
153
- puts 'e: ' + e.inspect if @debug
178
+ h = {
179
+ class: klass,
180
+ style: style.map {|key, value| "%s: %s" % [key, value]}.join(';')
181
+ }
182
+
183
+ div = Rexle::Element.new('div', attributes: h)
184
+
185
+
186
+ if item[3].is_a? Array then
187
+
188
+ # it's a group item
189
+ group_name = item[0]
190
+ #<div class='glabel'> <span>Group A</span> </div>
191
+ group = Rexle::Element.new('div', attributes: {class: 'glabel'})
192
+ span = Rexle::Element.new('span', value: group_name)
193
+ group.add span
194
+ div.add group
195
+
196
+ doc4 = Rexle.new("<div id='box%s' class='%s' style='%s: %s%%'/>" % \
197
+ [@counter, klass, dimension, rem_pct.round.to_s])
198
+ mapper(div, item[3], scale: scale)
199
+
200
+ group_foot = Rexle::Element.new('div', attributes: {class: 'gfoot'})
201
+ div.add group_foot
202
+
203
+ else
204
+
205
+ title, percent, url = item
206
+
207
+
208
+ factor = scale / (100 / percent.to_f)
209
+ puts 'scale: ' + scale.inspect
210
+ puts 'percent: ' + percent.inspect
211
+ puts 'factor: ' + factor.inspect
212
+ e = add_box(title, url, {}, ("c%02d" % factor).to_s[0..-2])
213
+ puts 'e: ' + e.inspect if @debug
214
+
215
+
216
+ end
217
+
218
+
219
+ # add the group if there is any
220
+ if group_name then
221
+
154
222
 
155
- doc.root.add e
223
+ #div.add diva
224
+
225
+ end
226
+
227
+ div.add e
228
+ doc.root.add div
156
229
 
157
230
  if a2.any? then
158
231
 
@@ -160,11 +233,13 @@ EOF
160
233
  [@counter, klass, dimension, rem_pct.round.to_s])
161
234
  @counter += 1
162
235
 
163
- doc2 = mapper(doc3, a2, orientation: new_orientation, total: remainder)
236
+ doc2 = mapper(doc3, a2, orientation: new_orientation, total: remainder, scale: rem_pct.round)
164
237
  doc.root.add doc2.root
165
238
 
166
239
  end
167
-
240
+
241
+ #<div class='gfoot'> </div>
242
+
168
243
  return doc
169
244
 
170
245
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: treemap21
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
metadata.gz.sig CHANGED
Binary file