thinreports 0.10.2 → 0.12.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (178) hide show
  1. checksums.yaml +4 -4
  2. data/.github/CONTRIBUTING.md +2 -2
  3. data/.github/dependabot.yml +11 -0
  4. data/.github/workflows/test.yml +50 -0
  5. data/.gitignore +1 -0
  6. data/CHANGELOG.md +43 -0
  7. data/Gemfile +2 -1
  8. data/{MIT-LICENSE → LICENSE.txt} +2 -0
  9. data/README.md +70 -56
  10. data/Rakefile +12 -25
  11. data/gemfiles/prawn-2.2.gemfile +5 -0
  12. data/gemfiles/prawn-2.3.gemfile +5 -0
  13. data/gemfiles/prawn-2.4.gemfile +5 -0
  14. data/lib/thinreports/core/shape/basic/format.rb +5 -0
  15. data/lib/thinreports/core/shape/image_block.rb +1 -1
  16. data/lib/thinreports/core/shape/list.rb +1 -1
  17. data/lib/thinreports/core/shape/page_number.rb +1 -1
  18. data/lib/thinreports/core/shape/stack_view/format.rb +27 -0
  19. data/lib/thinreports/core/shape/stack_view/interface.rb +17 -0
  20. data/lib/thinreports/core/shape/stack_view/internal.rb +22 -0
  21. data/lib/thinreports/core/shape/stack_view/row_format.rb +39 -0
  22. data/lib/thinreports/core/shape/stack_view.rb +17 -0
  23. data/lib/thinreports/core/shape/style/basic.rb +4 -1
  24. data/lib/thinreports/core/shape/text.rb +1 -1
  25. data/lib/thinreports/core/shape/text_block/formatter/number.rb +6 -1
  26. data/lib/thinreports/core/shape/text_block/internal.rb +0 -2
  27. data/lib/thinreports/core/shape/text_block.rb +1 -1
  28. data/lib/thinreports/core/shape.rb +2 -0
  29. data/lib/thinreports/generate.rb +11 -0
  30. data/lib/thinreports/generator/pdf/document/draw_shape.rb +31 -10
  31. data/lib/thinreports/generator/pdf/document/draw_template_items.rb +1 -1
  32. data/lib/thinreports/generator/pdf/document/graphics/image.rb +19 -1
  33. data/lib/thinreports/generator/pdf/document/graphics/text.rb +10 -5
  34. data/lib/thinreports/generator/pdf/document/page.rb +12 -0
  35. data/lib/thinreports/generator/pdf/prawn_ext/width_of.rb +7 -7
  36. data/lib/thinreports/layout/base.rb +1 -1
  37. data/lib/thinreports/layout/legacy_schema.rb +1 -0
  38. data/lib/thinreports/layout/version.rb +1 -1
  39. data/lib/thinreports/report/internal.rb +2 -0
  40. data/lib/thinreports/report.rb +2 -2
  41. data/lib/thinreports/section_report/build.rb +32 -0
  42. data/lib/thinreports/section_report/builder/item_builder.rb +49 -0
  43. data/lib/thinreports/section_report/builder/report_builder.rb +82 -0
  44. data/lib/thinreports/section_report/builder/report_data.rb +13 -0
  45. data/lib/thinreports/section_report/builder/stack_view_builder.rb +53 -0
  46. data/lib/thinreports/section_report/builder/stack_view_data.rb +11 -0
  47. data/lib/thinreports/section_report/generate.rb +26 -0
  48. data/lib/thinreports/section_report/pdf/render.rb +23 -0
  49. data/lib/thinreports/section_report/pdf/renderer/draw_item.rb +68 -0
  50. data/lib/thinreports/section_report/pdf/renderer/group_renderer.rb +57 -0
  51. data/lib/thinreports/section_report/pdf/renderer/section_height.rb +100 -0
  52. data/lib/thinreports/section_report/pdf/renderer/section_renderer.rb +39 -0
  53. data/lib/thinreports/section_report/pdf/renderer/stack_view_renderer.rb +55 -0
  54. data/lib/thinreports/section_report/pdf/renderer/stack_view_row_renderer.rb +38 -0
  55. data/lib/thinreports/section_report/schema/loader.rb +28 -0
  56. data/lib/thinreports/section_report/schema/parser.rb +52 -0
  57. data/lib/thinreports/section_report/schema/report.rb +30 -0
  58. data/lib/thinreports/section_report/schema/section.rb +47 -0
  59. data/lib/thinreports/version.rb +1 -1
  60. data/lib/thinreports.rb +5 -0
  61. data/thinreports.gemspec +11 -10
  62. metadata +48 -150
  63. data/.travis.yml +0 -16
  64. data/examples/character_spacing/character_spacing.rb +0 -8
  65. data/examples/character_spacing/character_spacing.tlf +0 -293
  66. data/examples/dynamic_image/dynamic_image.rb +0 -31
  67. data/examples/dynamic_image/dynamic_image.tlf +0 -661
  68. data/examples/dynamic_image/img200x100.png +0 -0
  69. data/examples/dynamic_image/img50x50.png +0 -0
  70. data/examples/dynamic_style/dynamic_style.rb +0 -150
  71. data/examples/dynamic_style/dynamic_style.tlf +0 -1835
  72. data/examples/dynamic_style/dynamic_style_in_list.tlf +0 -344
  73. data/examples/dynamic_style/image.png +0 -0
  74. data/examples/eudc/eudc.rb +0 -20
  75. data/examples/eudc/eudc.tlf +0 -180
  76. data/examples/eudc/eudc.ttf +0 -0
  77. data/examples/helper.rb +0 -50
  78. data/examples/hidden_shapes/hidden_shapes.rb +0 -9
  79. data/examples/hidden_shapes/hidden_shapes.tlf +0 -449
  80. data/examples/list_events/list_events.rb +0 -32
  81. data/examples/list_events/list_events.tlf +0 -361
  82. data/examples/list_manual_generation/list_manual_generation.rb +0 -22
  83. data/examples/list_manual_generation/list_manual_generation.tlf +0 -132
  84. data/examples/list_page_number/list_page_number.rb +0 -17
  85. data/examples/list_page_number/list_page_number.tlf +0 -254
  86. data/examples/page_number/page_number.rb +0 -33
  87. data/examples/page_number/page_number.tlf +0 -215
  88. data/examples/palleted_png/palleted_png.png +0 -0
  89. data/examples/palleted_png/palleted_png.rb +0 -9
  90. data/examples/palleted_png/palleted_png.tlf +0 -47
  91. data/examples/password_setting/password_setting.rb +0 -10
  92. data/examples/password_setting/password_setting.tlf +0 -45
  93. data/examples/report_callbacks/report_callbacks.rb +0 -14
  94. data/examples/report_callbacks/report_callbacks.tlf +0 -147
  95. data/examples/single_line_tblock/single_line_tblock.rb +0 -13
  96. data/examples/single_line_tblock/single_line_tblock.tlf +0 -170
  97. data/examples/tblock_overflow/tblock_overflow.rb +0 -20
  98. data/examples/tblock_overflow/tblock_overflow.tlf +0 -538
  99. data/examples/tblock_styles/font_size.tlf +0 -383
  100. data/examples/tblock_styles/tblock_styles.rb +0 -43
  101. data/examples/tblock_styles/tblock_styles.tlf +0 -889
  102. data/examples/text_align/text_align.rb +0 -8
  103. data/examples/text_align/text_align.tlf +0 -241
  104. data/examples/typeB_page_size/B4_ISO.tlf +0 -45
  105. data/examples/typeB_page_size/B4_JIS.tlf +0 -45
  106. data/examples/typeB_page_size/typeB_page_size.rb +0 -17
  107. data/examples/word_wrap/word_wrap.rb +0 -26
  108. data/examples/word_wrap/word_wrap.tlf +0 -297
  109. data/test/data/font.ttf +0 -0
  110. data/test/data/image_normal.jpg +0 -0
  111. data/test/data/image_normal.png +0 -0
  112. data/test/data/image_normal_jpg_noext +0 -0
  113. data/test/data/image_normal_png_noext +0 -0
  114. data/test/data/image_pallete_based.png +0 -0
  115. data/test/data/legacy_layout/all-items.tlf +0 -1
  116. data/test/schema_helper.rb +0 -122
  117. data/test/test_helper.rb +0 -48
  118. data/test/tmp/.gitkeep +0 -0
  119. data/test/unit/core/format/test_base.rb +0 -152
  120. data/test/unit/core/shape/base/test_internal.rb +0 -87
  121. data/test/unit/core/shape/basic/test_block_format.rb +0 -23
  122. data/test/unit/core/shape/basic/test_block_interface.rb +0 -29
  123. data/test/unit/core/shape/basic/test_block_internal.rb +0 -55
  124. data/test/unit/core/shape/basic/test_format.rb +0 -37
  125. data/test/unit/core/shape/basic/test_interface.rb +0 -108
  126. data/test/unit/core/shape/basic/test_internal.rb +0 -55
  127. data/test/unit/core/shape/image_block/test_interface.rb +0 -24
  128. data/test/unit/core/shape/image_block/test_internal.rb +0 -31
  129. data/test/unit/core/shape/list/test_format.rb +0 -111
  130. data/test/unit/core/shape/list/test_manager.rb +0 -67
  131. data/test/unit/core/shape/list/test_page.rb +0 -156
  132. data/test/unit/core/shape/list/test_page_state.rb +0 -31
  133. data/test/unit/core/shape/list/test_section_format.rb +0 -36
  134. data/test/unit/core/shape/list/test_section_interface.rb +0 -75
  135. data/test/unit/core/shape/list/test_section_internal.rb +0 -50
  136. data/test/unit/core/shape/manager/test_format.rb +0 -38
  137. data/test/unit/core/shape/manager/test_internal.rb +0 -132
  138. data/test/unit/core/shape/manager/test_target.rb +0 -140
  139. data/test/unit/core/shape/page_number/test_format.rb +0 -55
  140. data/test/unit/core/shape/page_number/test_interface.rb +0 -33
  141. data/test/unit/core/shape/page_number/test_internal.rb +0 -81
  142. data/test/unit/core/shape/styles/test_base.rb +0 -191
  143. data/test/unit/core/shape/styles/test_basic.rb +0 -24
  144. data/test/unit/core/shape/styles/test_graphic.rb +0 -50
  145. data/test/unit/core/shape/styles/test_text.rb +0 -97
  146. data/test/unit/core/shape/text/test_format.rb +0 -44
  147. data/test/unit/core/shape/text/test_internal.rb +0 -20
  148. data/test/unit/core/shape/text_block/formatter/test_basic.rb +0 -24
  149. data/test/unit/core/shape/text_block/formatter/test_datetime.rb +0 -49
  150. data/test/unit/core/shape/text_block/formatter/test_number.rb +0 -76
  151. data/test/unit/core/shape/text_block/formatter/test_padding.rb +0 -77
  152. data/test/unit/core/shape/text_block/test_format.rb +0 -169
  153. data/test/unit/core/shape/text_block/test_formatter.rb +0 -28
  154. data/test/unit/core/shape/text_block/test_interface.rb +0 -63
  155. data/test/unit/core/shape/text_block/test_internal.rb +0 -128
  156. data/test/unit/core/test_shape.rb +0 -52
  157. data/test/unit/core/test_utils.rb +0 -68
  158. data/test/unit/generator/pdf/document/graphics/test_attributes.rb +0 -135
  159. data/test/unit/generator/pdf/document/graphics/test_basic.rb +0 -46
  160. data/test/unit/generator/pdf/document/graphics/test_image.rb +0 -46
  161. data/test/unit/generator/pdf/document/graphics/test_text.rb +0 -171
  162. data/test/unit/generator/pdf/document/test_font.rb +0 -110
  163. data/test/unit/generator/pdf/document/test_graphics.rb +0 -42
  164. data/test/unit/generator/pdf/document/test_page.rb +0 -122
  165. data/test/unit/generator/pdf/document/test_parse_color.rb +0 -30
  166. data/test/unit/generator/pdf/prawn_ext/test_calc_image_dimensions.rb +0 -41
  167. data/test/unit/generator/pdf/prawn_ext/test_width_of.rb +0 -22
  168. data/test/unit/generator/pdf/test_document.rb +0 -22
  169. data/test/unit/generator/test_pdf.rb +0 -26
  170. data/test/unit/layout/test_base.rb +0 -41
  171. data/test/unit/layout/test_format.rb +0 -100
  172. data/test/unit/layout/test_legacy_schema.rb +0 -574
  173. data/test/unit/layout/test_version.rb +0 -26
  174. data/test/unit/report/test_base.rb +0 -248
  175. data/test/unit/report/test_internal.rb +0 -206
  176. data/test/unit/test_config.rb +0 -36
  177. data/test/unit/test_layout.rb +0 -12
  178. data/test/unit/test_report.rb +0 -18
@@ -1,449 +0,0 @@
1
- {
2
- "version": "0.9.0",
3
- "items": [
4
- {
5
- "id": "",
6
- "type": "rect",
7
- "display": true,
8
- "description": "",
9
- "x": 69,
10
- "y": 75,
11
- "width": 172.1,
12
- "height": 84,
13
- "style": {
14
- "border-color": "none",
15
- "border-width": 1,
16
- "border-style": "solid",
17
- "fill-color": "#ff0000"
18
- },
19
- "border-radius": 0
20
- },
21
- {
22
- "id": "",
23
- "type": "text",
24
- "display": true,
25
- "description": "",
26
- "x": 20,
27
- "y": 19,
28
- "width": 279.1,
29
- "height": 40,
30
- "style": {
31
- "font-family": [
32
- "Times New Roman"
33
- ],
34
- "font-size": 36,
35
- "color": "#000000",
36
- "text-align": "center",
37
- "vertical-align": "middle",
38
- "line-height": "",
39
- "line-height-ratio": "",
40
- "letter-spacing": "",
41
- "font-style": []
42
- },
43
- "texts": [
44
- "Visible"
45
- ]
46
- },
47
- {
48
- "id": "",
49
- "type": "line",
50
- "display": true,
51
- "description": "",
52
- "style": {
53
- "border-color": "#000000",
54
- "border-width": 1,
55
- "border-style": "solid"
56
- },
57
- "x1": 297.6,
58
- "y1": 20,
59
- "x2": 297.6,
60
- "y2": 821.8
61
- },
62
- {
63
- "id": "",
64
- "type": "rect",
65
- "display": false,
66
- "description": "",
67
- "x": 349,
68
- "y": 74,
69
- "width": 172.1,
70
- "height": 84,
71
- "style": {
72
- "border-color": "none",
73
- "border-width": 1,
74
- "border-style": "solid",
75
- "fill-color": "#ff0000"
76
- },
77
- "border-radius": 0
78
- },
79
- {
80
- "id": "",
81
- "type": "text",
82
- "display": true,
83
- "description": "",
84
- "x": 297,
85
- "y": 18,
86
- "width": 279.1,
87
- "height": 40,
88
- "style": {
89
- "font-family": [
90
- "Times New Roman"
91
- ],
92
- "font-size": 36,
93
- "color": "#000000",
94
- "text-align": "center",
95
- "vertical-align": "middle",
96
- "line-height": "",
97
- "line-height-ratio": "",
98
- "letter-spacing": "",
99
- "font-style": []
100
- },
101
- "texts": [
102
- "Hidden"
103
- ]
104
- },
105
- {
106
- "id": "",
107
- "type": "ellipse",
108
- "display": true,
109
- "description": "",
110
- "style": {
111
- "border-color": "#000000",
112
- "border-width": 1,
113
- "border-style": "solid",
114
- "fill-color": "#FFFFFF"
115
- },
116
- "cx": 205.55,
117
- "cy": 161.55,
118
- "rx": 57.55,
119
- "ry": 50.55
120
- },
121
- {
122
- "id": "",
123
- "type": "ellipse",
124
- "display": false,
125
- "description": "",
126
- "style": {
127
- "border-color": "#000000",
128
- "border-width": 1,
129
- "border-style": "solid",
130
- "fill-color": "#FFFFFF"
131
- },
132
- "cx": 485.55,
133
- "cy": 161.55,
134
- "rx": 57.55,
135
- "ry": 50.55
136
- },
137
- {
138
- "id": "",
139
- "type": "image",
140
- "display": true,
141
- "description": "",
142
- "x": 96.1,
143
- "y": 177,
144
- "width": 123.6,
145
- "height": 142,
146
- "data": {
147
- "mime-type": "image/jpeg",
148
- "base64": "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"
149
- }
150
- },
151
- {
152
- "id": "",
153
- "type": "image",
154
- "display": false,
155
- "description": "",
156
- "x": 376,
157
- "y": 177,
158
- "width": 123.6,
159
- "height": 142,
160
- "data": {
161
- "mime-type": "image/jpeg",
162
- "base64": "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"
163
- }
164
- },
165
- {
166
- "id": "",
167
- "type": "text",
168
- "display": true,
169
- "description": "",
170
- "x": 64,
171
- "y": 333.1,
172
- "width": 200,
173
- "height": 40,
174
- "style": {
175
- "font-family": [
176
- "Times New Roman"
177
- ],
178
- "font-size": 36,
179
- "color": "#c00000",
180
- "text-align": "center",
181
- "vertical-align": "middle",
182
- "line-height": "",
183
- "line-height-ratio": "",
184
- "letter-spacing": "",
185
- "font-style": []
186
- },
187
- "texts": [
188
- "Ruby"
189
- ]
190
- },
191
- {
192
- "id": "",
193
- "type": "text",
194
- "display": false,
195
- "description": "",
196
- "x": 339,
197
- "y": 333.1,
198
- "width": 200,
199
- "height": 40,
200
- "style": {
201
- "font-family": [
202
- "Times New Roman"
203
- ],
204
- "font-size": 36,
205
- "color": "#c00000",
206
- "text-align": "center",
207
- "vertical-align": "middle",
208
- "line-height": "",
209
- "line-height-ratio": "",
210
- "letter-spacing": "",
211
- "font-style": []
212
- },
213
- "texts": [
214
- "Ruby"
215
- ]
216
- },
217
- {
218
- "id": "v_thinreports",
219
- "type": "text-block",
220
- "display": true,
221
- "description": "",
222
- "x": 45,
223
- "y": 376.1,
224
- "width": 236.1,
225
- "height": 19,
226
- "style": {
227
- "font-family": [
228
- "Times New Roman"
229
- ],
230
- "font-size": 18,
231
- "color": "#000000",
232
- "text-align": "center",
233
- "vertical-align": "top",
234
- "line-height": "",
235
- "line-height-ratio": "",
236
- "letter-spacing": "",
237
- "font-style": [],
238
- "overflow": "truncate",
239
- "word-wrap": "break-word"
240
- },
241
- "reference-id": "",
242
- "value": "Thinreports",
243
- "multiple-line": false,
244
- "format": {
245
- "base": "",
246
- "type": ""
247
- }
248
- },
249
- {
250
- "id": "h_thinreports",
251
- "type": "text-block",
252
- "display": false,
253
- "description": "",
254
- "x": 320,
255
- "y": 376.1,
256
- "width": 236.1,
257
- "height": 19,
258
- "style": {
259
- "font-family": [
260
- "Times New Roman"
261
- ],
262
- "font-size": 18,
263
- "color": "#000000",
264
- "text-align": "center",
265
- "vertical-align": "top",
266
- "line-height": "",
267
- "line-height-ratio": "",
268
- "letter-spacing": "",
269
- "font-style": [],
270
- "overflow": "truncate",
271
- "word-wrap": "break-word"
272
- },
273
- "reference-id": "",
274
- "value": "Thinreports",
275
- "multiple-line": false,
276
- "format": {
277
- "base": "",
278
- "type": ""
279
- }
280
- },
281
- {
282
- "id": "List",
283
- "type": "list",
284
- "display": true,
285
- "description": "",
286
- "x": 20,
287
- "y": 430.1,
288
- "width": 555.2,
289
- "height": 306.1,
290
- "header": {
291
- "enabled": true,
292
- "height": 51.1,
293
- "translate": {
294
- "x": 0,
295
- "y": 0
296
- },
297
- "items": [
298
- {
299
- "id": "",
300
- "type": "text",
301
- "display": true,
302
- "description": "",
303
- "x": 63,
304
- "y": 443,
305
- "width": 200,
306
- "height": 24.3,
307
- "style": {
308
- "font-family": [
309
- "IPAMincho"
310
- ],
311
- "font-size": 24,
312
- "color": "#000000",
313
- "text-align": "center",
314
- "vertical-align": "top",
315
- "line-height": "",
316
- "line-height-ratio": "",
317
- "letter-spacing": "",
318
- "font-style": []
319
- },
320
- "texts": [
321
- "表示"
322
- ]
323
- },
324
- {
325
- "id": "",
326
- "type": "text",
327
- "display": false,
328
- "description": "",
329
- "x": 338,
330
- "y": 443,
331
- "width": 200,
332
- "height": 24.3,
333
- "style": {
334
- "font-family": [
335
- "IPAMincho"
336
- ],
337
- "font-size": 24,
338
- "color": "#000000",
339
- "text-align": "center",
340
- "vertical-align": "top",
341
- "line-height": "",
342
- "line-height-ratio": "",
343
- "letter-spacing": "",
344
- "font-style": []
345
- },
346
- "texts": [
347
- "非表示"
348
- ]
349
- }
350
- ]
351
- },
352
- "detail": {
353
- "height": 46,
354
- "translate": {
355
- "x": 0,
356
- "y": -22.5
357
- },
358
- "items": [
359
- {
360
- "id": "",
361
- "type": "text",
362
- "display": true,
363
- "description": "",
364
- "x": 63,
365
- "y": 516.5,
366
- "width": 200,
367
- "height": 24.3,
368
- "style": {
369
- "font-family": [
370
- "IPAMincho"
371
- ],
372
- "font-size": 24,
373
- "color": "#000000",
374
- "text-align": "center",
375
- "vertical-align": "top",
376
- "line-height": "",
377
- "line-height-ratio": "",
378
- "letter-spacing": "",
379
- "font-style": []
380
- },
381
- "texts": [
382
- "表示"
383
- ]
384
- },
385
- {
386
- "id": "",
387
- "type": "text",
388
- "display": false,
389
- "description": "",
390
- "x": 338,
391
- "y": 516.5,
392
- "width": 200,
393
- "height": 24.3,
394
- "style": {
395
- "font-family": [
396
- "IPAMincho"
397
- ],
398
- "font-size": 24,
399
- "color": "#000000",
400
- "text-align": "center",
401
- "vertical-align": "top",
402
- "line-height": "",
403
- "line-height-ratio": "",
404
- "letter-spacing": "",
405
- "font-style": []
406
- },
407
- "texts": [
408
- "非表示"
409
- ]
410
- }
411
- ]
412
- },
413
- "page-footer": {
414
- "enabled": false,
415
- "height": 0,
416
- "translate": {
417
- "x": 0,
418
- "y": -50.1
419
- },
420
- "items": []
421
- },
422
- "footer": {
423
- "enabled": false,
424
- "height": 0,
425
- "translate": {
426
- "x": 0,
427
- "y": -105.3
428
- },
429
- "items": []
430
- },
431
- "content-height": 255.00000000000003,
432
- "auto-page-break": true
433
- }
434
- ],
435
- "state": {
436
- "layout-guides": []
437
- },
438
- "title": "",
439
- "report": {
440
- "paper-type": "A4",
441
- "orientation": "portrait",
442
- "margin": [
443
- 20,
444
- 20,
445
- 20,
446
- 20
447
- ]
448
- }
449
- }
@@ -1,32 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- example :list_events, 'Basic list events' do |t|
4
- Thinreports::Report.generate filename: t.output_filename do |report|
5
- report.use_layout t.layout_filename
6
-
7
- report.list.header title: 'Prices'
8
-
9
- report.list do |list|
10
- price_for = { page: 0, all: 0 }
11
-
12
- list.on_page_finalize do
13
- price_for[:all] += price_for[:page]
14
- price_for[:page] = 0
15
- end
16
-
17
- list.on_page_footer_insert do |footer|
18
- footer.item(:price).value(price_for[:page])
19
- end
20
-
21
- list.on_footer_insert do |footer|
22
- footer.item(:price).value(price_for[:all])
23
- end
24
-
25
- [100, 200, 250, 50, 100, 20, 30, 50, 100, 100].each do |price|
26
- list.add_row price: price
27
- # Calculate sum price for each page of list
28
- price_for[:page] += price
29
- end
30
- end
31
- end
32
- end