@opengis/bi 1.0.12 → 1.0.14

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.
Files changed (104) hide show
  1. package/README.md +2 -4
  2. package/config.js +5 -5
  3. package/dist/bi.js +1 -1
  4. package/dist/bi.umd.cjs +143 -158
  5. package/dist/{import-file-Db7C78fp.js → import-file-DUp3rsNI.js} +8142 -7757
  6. package/dist/{vs-map-DuBKvlTI.js → map-component-mixin-CGM0P5ub.js} +7687 -8396
  7. package/dist/style.css +1 -1
  8. package/dist/vs-calendar-cOoinEwc.js +99 -0
  9. package/dist/vs-funnel-bar-kLkPoIhJ.js +105 -0
  10. package/dist/vs-heatmap-3XAVGTSo.js +98 -0
  11. package/dist/vs-map-B1tr6V5_.js +74 -0
  12. package/dist/vs-map-cluster-BWJPx7wE.js +106 -0
  13. package/dist/vs-number-CrU7LmkV.js +48 -0
  14. package/dist/{vs-text-C3RkizPQ.js → vs-text-DRPx3aID.js} +2 -1
  15. package/package.json +42 -14
  16. package/plugin.js +4 -4
  17. package/server/migrations/bi.sql +93 -0
  18. package/server/plugins/docs.js +36 -35
  19. package/server/plugins/hook.js +89 -0
  20. package/server/plugins/vite.js +25 -8
  21. package/server/routes/dashboard/controllers/dashboard.delete.js +5 -3
  22. package/server/routes/dashboard/controllers/dashboard.js +71 -36
  23. package/server/routes/dashboard/controllers/dashboard.list.js +2 -5
  24. package/server/routes/dashboard/controllers/utils/yaml.js +1 -2
  25. package/server/routes/dashboard/index.mjs +5 -4
  26. package/server/routes/data/controllers/data.js +109 -65
  27. package/server/routes/data/controllers/util/chartSQL.js +25 -11
  28. package/server/routes/data/controllers/util/normalizeData.js +54 -25
  29. package/server/routes/data/index.mjs +1 -3
  30. package/server/routes/db/controllers/dbTablePreview.js +63 -0
  31. package/server/routes/db/controllers/dbTables.js +36 -0
  32. package/server/routes/db/index.mjs +17 -0
  33. package/server/routes/edit/controllers/dashboard.add.js +6 -5
  34. package/server/routes/edit/controllers/dashboard.edit.js +16 -9
  35. package/server/routes/edit/controllers/widget.add.js +43 -19
  36. package/server/routes/edit/controllers/widget.del.js +13 -6
  37. package/server/routes/edit/controllers/widget.edit.js +34 -13
  38. package/server/routes/edit/index.mjs +14 -10
  39. package/server/routes/map/controllers/cluster.js +89 -75
  40. package/server/routes/map/controllers/clusterVtile.js +162 -93
  41. package/server/routes/map/controllers/geojson.js +57 -45
  42. package/server/routes/map/controllers/map.js +51 -57
  43. package/server/routes/map/controllers/vtile.js +72 -58
  44. package/server/routes/map/index.mjs +1 -1
  45. package/server/utils/getWidget.js +83 -0
  46. package/utils.js +12 -0
  47. package/dist/vs-calendar-Ddl6WRL3.js +0 -96
  48. package/dist/vs-funnel-bar-GbisTylf.js +0 -92
  49. package/dist/vs-heatmap-CPiim0yg.js +0 -83
  50. package/dist/vs-number-CR1H0JTM.js +0 -39
  51. package/server/templates/cls/demo.parcel.object_type.json +0 -12
  52. package/server/templates/dashboard/demo/funnel.yml +0 -18
  53. package/server/templates/dashboard/demo/heatmap.yml +0 -18
  54. package/server/templates/dashboard/demo/index.yml +0 -58
  55. package/server/templates/dashboard/demo/line.yml +0 -19
  56. package/server/templates/dashboard/demo/map.yml +0 -13
  57. package/server/templates/dashboard/demo/pivot.yml +0 -18
  58. package/server/templates/dashboard/demo/progress.yml +0 -15
  59. package/server/templates/dashboard/demo/quarterly_revenue.yml +0 -17
  60. package/server/templates/dashboard/demo/quarterly_revenue_by_product_line.yml +0 -19
  61. package/server/templates/dashboard/demo/stat.yml +0 -15
  62. package/server/templates/dashboard/demo/total_products_sold.yml +0 -9
  63. package/server/templates/dashboard/demo/total_products_sold_by_product_line.yml +0 -12
  64. package/server/templates/dashboard/demo/total_revenue.yml +0 -10
  65. package/server/templates/dashboard/demo/total_revenue_by_product_line.yml +0 -20
  66. package/server/templates/dashboard/demo/vehicle_sales_info.md +0 -17
  67. package/server/templates/dashboard/demo/waterfall.yml +0 -19
  68. package/server/templates/dashboard/erobota/bar_area.yml +0 -19
  69. package/server/templates/dashboard/erobota/bar_culture.yml +0 -18
  70. package/server/templates/dashboard/erobota/bar_grand.yml +0 -19
  71. package/server/templates/dashboard/erobota/count_grand.yml +0 -8
  72. package/server/templates/dashboard/erobota/index.yml +0 -49
  73. package/server/templates/dashboard/erobota/list_culture.yml +0 -12
  74. package/server/templates/dashboard/erobota/list_grant.yml +0 -12
  75. package/server/templates/dashboard/erobota/map.yml +0 -4
  76. package/server/templates/dashboard/erobota/pie_area.yml +0 -17
  77. package/server/templates/dashboard/erobota/pie_grant.yml +0 -17
  78. package/server/templates/dashboard/erobota/total_area.yml +0 -9
  79. package/server/templates/dashboard/erobota/total_grand.yml +0 -9
  80. package/server/templates/dashboard/map/index.yml +0 -6
  81. package/server/templates/dashboard/map/map.yml +0 -13
  82. package/server/templates/dashboard/map/mapCluster.yml +0 -16
  83. package/server/templates/dashboard/sales/index.yml +0 -41
  84. package/server/templates/dashboard/sales/quarterly_revenue.yml +0 -17
  85. package/server/templates/dashboard/sales/quarterly_revenue_by_product_line.yml +0 -19
  86. package/server/templates/dashboard/sales/total_products_sold.yml +0 -9
  87. package/server/templates/dashboard/sales/total_products_sold_by_product_line.yml +0 -13
  88. package/server/templates/dashboard/sales/total_revenue.yml +0 -8
  89. package/server/templates/dashboard/sales/total_revenue_by_product_line.yml +0 -20
  90. package/server/templates/dashboard/sales/vehicle_sales_info.md +0 -17
  91. package/server/templates/dashboard/test3/index.yml +0 -29
  92. package/server/templates/dashboard/test3/quarterly_revenue.yml +0 -19
  93. package/server/templates/dashboard/test3/widget1.yml +0 -8
  94. package/server/templates/pt/vehicle_sales.md +0 -17
  95. package/server/templates/table/demo.cleaned_sales_data.table.json +0 -104
  96. package/server/templates/table/test.dataset.table.json +0 -16
  97. package/server/templates/widget/calendar.yml +0 -14
  98. package/server/templates/widget/map.yml +0 -15
  99. package/server/templates/widget/mapCluster.yml +0 -16
  100. package/server/templates/widget/negative.yml +0 -18
  101. package/server/templates/widget/negative_profi_expense.yml +0 -23
  102. package/server/templates/widget/negative_type.yml +0 -24
  103. package/server/templates/widget/product_line.yml +0 -20
  104. package/server/templates/widget/test_vtile.yml +0 -7
@@ -1,19 +0,0 @@
1
- type: bar
2
- title: Сума виплачених грантів
3
-
4
- data:
5
- table: demo.parcel_object # Назва таблиці
6
- query: 1=1 # Запит
7
-
8
- metrics: # Групування
9
- - name: grant_sum
10
- operator: sum
11
- title: grant_sum
12
-
13
- x: region
14
- orderby: region
15
-
16
- controls:
17
- style:
18
- x_axis:
19
- rotate: 20
@@ -1,8 +0,0 @@
1
- type: number
2
- title: Кількість грантів
3
-
4
- data:
5
- table: demo.parcel_object # Назва таблиці
6
- query: 1=1 # Запит
7
- metrics: object_id
8
- controls:
@@ -1,49 +0,0 @@
1
- title: Гранти на розвиток садівництва та тепличного господарства
2
- description: Ініціатива реалізована в межах Програми USAID з аграрного і сільського розвитку (АГРО)
3
- table_name: demo.parcel
4
- panels:
5
- - type: column
6
- col: 3
7
- widgets:
8
- - total_area
9
- - total_grand
10
-
11
- # - widget: count_grand
12
- # col: 4
13
-
14
- - widget: pie_area
15
- col: 3
16
-
17
- - widget: bar_area
18
- col: 6
19
-
20
- - widget: pie_grant
21
- col: 3
22
-
23
- - widget: bar_grand
24
- col: 8
25
-
26
- - widget: bar_culture
27
- col: 12
28
-
29
- - widget: list_culture
30
- col: 6
31
-
32
- - widget: list_grant
33
- col: 6
34
-
35
- style:
36
- color:
37
- stack: true # only for bar
38
- orientation: vertical # only for bar, line
39
- date_format: smart_date # d3 format number
40
- number_format: smart_date # d3 format number
41
- label: fff
42
- tooltip: 333
43
- filters:
44
- - { id: object_type, type: Check, title: Тип об'єкту, data: demo.parcel.object_type }
45
- - { id: grant_sum, type: Range, title: Сума гранту }
46
- - { id: grant_date, type: Date, title: Дата отримання гранту }
47
- - { id: obj_area, type: Range, title: Площа під об'єкт }
48
- - { id: all_area, type: Range, title: Площа під загальне використання }
49
- - { id: cad_num_total, type: Range, title: Кількість земельних ділянок } # фільтри
@@ -1,12 +0,0 @@
1
- type: listbar
2
- title: Розподіл за культурами. га
3
-
4
- data:
5
- table: demo.parcel_object_culture # Назва таблиці
6
- query: 1=1 # Запит
7
-
8
- metrics: # Групування
9
- - name: obj_area
10
- operator: sum
11
- title: obj_area
12
- x: culture
@@ -1,12 +0,0 @@
1
- type: listbar
2
- title: Сума виплачених грантів, тис. грн
3
-
4
- data:
5
- table: demo.parcel_object # Назва таблиці
6
- query: 1=1 # Запит
7
-
8
- metrics: # Групування
9
- - name: grant_sum
10
- operator: sum
11
- title: grant_sum
12
- x: region
@@ -1,4 +0,0 @@
1
- type: map
2
- title: Регіональний розподіл
3
-
4
- data:
@@ -1,17 +0,0 @@
1
- type: pie
2
- title: Площа, га
3
-
4
- data:
5
- table: demo.parcel_object # Назва таблиці
6
- query: 1=1 # Запит
7
-
8
- metrics: # Групування
9
- - name: obj_area
10
- operator: sum
11
- title: obj_area
12
- x: object_type
13
-
14
- style:
15
- donut: true
16
- innerRadius: 30
17
- outerRadius: 70
@@ -1,17 +0,0 @@
1
- type: pie
2
- title: Виплата грантів
3
-
4
- data:
5
- table: demo.parcel_object # Назва таблиці
6
- query: 1=1 # Запит
7
-
8
- metrics: # Групування
9
- - name: grant_sum
10
- operator: sum
11
- title: grant_sum
12
- x: object_type
13
-
14
- style:
15
- donut: true
16
- innerRadius: 30
17
- outerRadius: 70
@@ -1,9 +0,0 @@
1
- type: number
2
- title: Площа, га
3
-
4
- data:
5
- table: demo.parcel_object # Назва таблиці
6
- query: 1=1 # Запит
7
- metrics: obj_area
8
- controls:
9
-
@@ -1,9 +0,0 @@
1
- type: number
2
- title: Сума грантів, тис. грн
3
-
4
- data:
5
- table: demo.parcel_object # Назва таблиці
6
- query: 1=1 # Запит
7
- metrics: grant_sum
8
- controls:
9
-
@@ -1,6 +0,0 @@
1
- title: Карти тест карт
2
- description: тест карт
3
- table_name: demo.parcel
4
- panels:
5
- - widget: map
6
- - widget: mapCluster
@@ -1,13 +0,0 @@
1
- type: map
2
- text: Регіональний розподіл
3
-
4
- data:
5
- table: demo.parcel_object_culture # Назва таблиці
6
- query: 1=1 # Запит
7
-
8
- metrics: # Розмір точки
9
- - obj_area
10
- color: object_type # color
11
- clusterZoom: 15
12
- columns: # додаткові колонки
13
- - obj_area
@@ -1,16 +0,0 @@
1
- type: mapCluster
2
- text: Регіональний розподіл
3
-
4
- data:
5
- table: demo.parcel_object # Назва таблиці
6
- query: 1=1 # Запит
7
-
8
- metrics: # Fill color by sum value
9
- - obj_area
10
- cluster: region # region, community, table
11
- clusterTable:
12
- name: ato_new.region
13
- title: name_ua
14
- clusterZoom: 15
15
- columns: # додаткові колонки
16
- - obj_area
@@ -1,41 +0,0 @@
1
- title: Sales Dashboard
2
- description: This example dashboard provides insight into the business operations of vehicle seller
3
- table_name: demo.cleaned_sales_data
4
- panels:
5
- # row 1
6
- - type: column
7
- col: 3
8
- widgets:
9
- - total_revenue
10
- - total_products_sold
11
-
12
- - widget: quarterly_revenue
13
- col: 6
14
- - widget: vehicle_sales_info
15
- col: 3
16
-
17
- # row 2
18
- - widget: total_products_sold_by_product_line
19
- col: 3
20
- - widget: quarterly_revenue_by_product_line
21
- col: 6
22
- - widget: total_revenue_by_product_line
23
- col: 3
24
-
25
- grid: # сітка якщо є
26
- - { 'x': 0, 'y': 0, 'w': 2, 'h': 2, 'i': 0, widget: 'quarterly_revenue' }
27
- - { 'x': 1, 'y': 0, 'w': 2, 'h': 2, 'i': 0, widget: 'total_revenue' }
28
-
29
- widgets: null # самі віджети
30
-
31
- filters:
32
- - { id: order_date, type: Date, title: Дата замовлення } # фільтри
33
-
34
- style:
35
- color:
36
- stack: true # only for bar
37
- orientation: vertical # only for bar, line
38
- date_format: smart_date # d3 format number
39
- number_format: smart_date # d3 format number
40
- label: 222
41
- tooltip: 333
@@ -1,17 +0,0 @@
1
- type: bar
2
- title: Quarterly Revenue
3
-
4
- data:
5
- table: demo.cleaned_sales_data # Назва таблиці
6
- query: 1=1 # Запит
7
-
8
- metrics: # Групування
9
- - name: sales
10
- operator: sum
11
- title: sales
12
-
13
- x: order_date
14
- granularity: quarter
15
- orderby: year
16
-
17
- controls:
@@ -1,19 +0,0 @@
1
- type: bar
2
- title: Quarterly Revenue (By Product Line)
3
-
4
- data:
5
- table: demo.cleaned_sales_data # Назва таблиці
6
- query: 1=1 # Запит
7
-
8
- metrics: # Групування
9
- - name: sales
10
- operator: sum
11
- title: sales
12
-
13
- x: order_date
14
- granularity: quarter
15
- groupby: product_line
16
-
17
- controls:
18
- style:
19
- stack: true
@@ -1,9 +0,0 @@
1
- type: number
2
- title: Total Products Sold
3
-
4
- data:
5
- table: demo.cleaned_sales_data # Назва таблиці
6
- query: 1=1 # Запит
7
- metrics:
8
- - quantity_ordered
9
- controls:
@@ -1,13 +0,0 @@
1
- type: listbar
2
- title: Total Products Sold (By Product Line)
3
-
4
- data:
5
- table: demo.cleaned_sales_data # Назва таблиці
6
- query: 1=1 # Запит
7
-
8
- metrics: # Групування
9
- - name: quantity_ordered
10
- operator: sum
11
- title: quantity_sold
12
- x: product_line
13
- order1: metric desc
@@ -1,8 +0,0 @@
1
- type: number
2
- title: Total Revenue
3
-
4
- data:
5
- table: demo.cleaned_sales_data # Назва таблиці
6
- query: 1=1 # Запит
7
- metrics: sales
8
- controls:
@@ -1,20 +0,0 @@
1
- type: pie
2
- title: Total Revenue (By Product Line)
3
-
4
- data:
5
- table: demo.cleaned_sales_data # Назва таблиці
6
- query: 1=1 # Запит
7
-
8
- metrics: # Групування
9
- - name: sales
10
- operator: sum
11
- title: sales
12
- x: product_line
13
-
14
- style:
15
- donut: true
16
- innerRadius: 30
17
- outerRadius: 70
18
- show_label: true
19
- label:
20
- position: top
@@ -1,17 +0,0 @@
1
- # 🚗 Vehicle Sales Dashboard 🏍
2
-
3
- This example dashboard provides insight into the business operations of vehicle seller. The dataset powering this dashboard can be found here on Kaggle.
4
-
5
- ## Timeline
6
- The dataset contains data on all orders from the 2003 and 2004 fiscal years, and some orders from 2005.
7
-
8
- ## Products Sold
9
- This shop mainly sells the following products:
10
-
11
- - 🚗 Classic Cars
12
- - 🏎️ Vintage Cars
13
- - 🏍️ Motorcycles
14
- - 🚚 Trucks & Buses 🚌
15
- - 🛩️ Planes
16
- - 🚢 Ships
17
- - 🚈 Trains
@@ -1,29 +0,0 @@
1
- title: Sales Dashboard
2
- description: This example dashboard provides insight into the business operations of vehicle seller
3
- table_name: demo.cleaned_sales_data
4
- panels:
5
-
6
-
7
- # row 1
8
- - widget: widget1
9
- col: 3
10
- - widget: quarterly_revenue
11
- col: 6
12
-
13
-
14
- grid: # сітка якщо є
15
- - { "x": 0, "y": 0, "w": 2, "h": 2, "i": 0, widget: "quarterly_revenue" }
16
- - { "x": 1, "y": 0, "w": 2, "h": 2, "i": 0, widget: "total_revenue" }
17
-
18
- widgets: null # самі віджети
19
-
20
- filters: null # фільтри
21
-
22
- style:
23
- color:
24
- stack: true # only for bar
25
- orientation: vertical # only for bar, line
26
- date_format: smart_date # d3 format number
27
- number_format: smart_date # d3 format number
28
- label: 222
29
- tooltip: 333
@@ -1,19 +0,0 @@
1
- type: bar
2
- title: Quarterly Revenue
3
-
4
- data:
5
- table: demo.cleaned_sales_data # Назва таблиці
6
- query: 1=1 # Запит
7
-
8
- metrics: # Групування
9
- - name: sales
10
- operator: sum
11
- title: sales
12
-
13
- x: order_date
14
- granularity: quarter
15
- orderby: year
16
-
17
- controls:
18
- style:
19
- horizontal: true
@@ -1,8 +0,0 @@
1
- type: number
2
-
3
- data:
4
- table: demo.cleaned_sales_data # Назва таблиці
5
- query: 1=1 # Запит
6
- metrics: sales
7
- controls:
8
- title: Widget1
@@ -1,17 +0,0 @@
1
- # 🚗 Vehicle Sales Dashboard 🏍
2
-
3
- This example dashboard provides insight into the business operations of vehicle seller. The dataset powering this dashboard can be found here on Kaggle.
4
-
5
- ## Timeline
6
- The dataset contains data on all orders from the 2003 and 2004 fiscal years, and some orders from 2005.
7
-
8
- ## Products Sold
9
- This shop mainly sells the following products:
10
-
11
- - 🚗 Classic Cars
12
- - 🏎️ Vintage Cars
13
- - 🏍️ Motorcycles
14
- - 🚚 Trucks & Buses 🚌
15
- - 🛩️ Planes
16
- - 🚢 Ships
17
- - 🚈 Trains
@@ -1,104 +0,0 @@
1
- {
2
- "table": "demo.cleaned_sales_data",
3
- "key": "id",
4
- "order": "id asc",
5
- "columns": [
6
- {
7
- "name": "order_number",
8
- "ua": "Номер замовлення",
9
- "format": "text"
10
- },
11
- {
12
- "name": "quantity_ordered",
13
- "format": "text"
14
- },
15
- {
16
- "name": "price_each",
17
- "format": "text"
18
- },
19
- {
20
- "name": "order_line_number",
21
- "format": "text"
22
- },
23
- {
24
- "name": "sales",
25
- "format": "text"
26
- },
27
- {
28
- "name": "order_date",
29
- "format": "date"
30
- },
31
- {
32
- "name": "status",
33
- "format": "text"
34
- },
35
- {
36
- "name": "quarter",
37
- "format": "text"
38
- },
39
- {
40
- "name": "month",
41
- "format": "text"
42
- },
43
- {
44
- "name": "year",
45
- "format": "text"
46
- },
47
- {
48
- "name": "product_code",
49
- "format": "text"
50
- },
51
- {
52
- "name": "customer_name",
53
- "format": "text"
54
- },
55
- {
56
- "name": "phone",
57
- "format": "text"
58
- },
59
- {
60
- "name": "address_line1",
61
- "format": "text"
62
- },
63
- {
64
- "name": "address_line2",
65
- "format": "text"
66
- },
67
- {
68
- "name": "city",
69
- "format": "text"
70
- },
71
- {
72
- "name": "state",
73
- "format": "text"
74
- },
75
- {
76
- "name": "postal_code",
77
- "format": "text"
78
- },
79
- {
80
- "name": "country",
81
- "format": "text"
82
- },
83
- {
84
- "name": "territory",
85
- "format": "text"
86
- },
87
- {
88
- "name": "contact_last_name",
89
- "format": "text"
90
- },
91
- {
92
- "name": "contact_first_name",
93
- "format": "text"
94
- },
95
- {
96
- "name": "deal_size",
97
- "format": "text"
98
- },
99
- {
100
- "name": "order_date_text",
101
- "format": "text"
102
- }
103
- ]
104
- }
@@ -1,16 +0,0 @@
1
- {
2
- "table": "gis.dataset",
3
- "key": "dataset_id",
4
- "columns": [
5
- {
6
- "name": "dataset_id",
7
- "ua": "dataset_id",
8
- "format": "text"
9
- },
10
- {
11
- "name": "dataset_name",
12
- "ua": "dataset_name",
13
- "format": "text"
14
- }
15
- ]
16
- }
@@ -1,14 +0,0 @@
1
- type: calendar
2
- text: Календар
3
-
4
- data:
5
- table: demo.cleaned_sales_data # Назва таблиці
6
- query: 1=1 # Запит
7
-
8
- metrics: # Групування
9
- - name: sales
10
- operator: sum
11
- title: sales
12
-
13
- x: order_date
14
- granularity: day
@@ -1,15 +0,0 @@
1
- type: map
2
- text: Регіональний розподіл
3
-
4
- data:
5
- table: demo.parcel_object # Назва таблиці
6
- query: 1=1 # Запит
7
-
8
- metrics: # Розмір точки
9
- - obj_area
10
- color: object_type # color
11
- clusterZoom: 15
12
- columns: # додаткові колонки
13
- - obj_area
14
- x:
15
- - name: obj_area
@@ -1,16 +0,0 @@
1
- type: mapCluster
2
- text: Регіональний розподіл
3
-
4
- data:
5
- table: demo.parcel_object # Назва таблиці
6
- query: 1=1 # Запит
7
-
8
- metrics: # Fill color by sum value
9
- - obj_area
10
- cluster: region # region, community, table
11
- clusterTable:
12
- name: ato_new.region
13
- title: name_ua
14
- clusterZoom: 15
15
- columns: # додаткові колонки
16
- - obj_area
@@ -1,18 +0,0 @@
1
- type: bar
2
- text: Порівняння садів і теплиць
3
-
4
- data:
5
- table: demo.parcel_object # Назва таблиці
6
- query: 1=1 # Запит
7
-
8
- metrics: # Групування
9
- - name: grant_sum
10
- filter: object_type = 1
11
- title: Сади
12
- - name: grant_sum
13
- filter: object_type = 2
14
- title: Теплиці
15
- negative: true
16
-
17
- x: order_date
18
- granularity: year
@@ -1,23 +0,0 @@
1
- type: bar
2
- text: Порівняння садів і теплиць
3
-
4
- data:
5
- table:
6
- - name: profit # Дохід
7
- x: order_date
8
- - name: expense # Розхід
9
- x: order_date
10
- query: 1=1 # Запит
11
-
12
- metrics: # Групування
13
- - name: amount
14
- table: profit
15
- filter: object_type = 1
16
- title: Сади
17
- - name: amount
18
- table: expense
19
- filter: object_type = 2
20
- title: Теплиці
21
- negative: true
22
-
23
- granularity: year