layrz-sdk 3.0.4__py3-none-any.whl → 3.0.6__py3-none-any.whl
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.
Potentially problematic release.
This version of layrz-sdk might be problematic. Click here for more details.
- layrz_sdk/entities/__init__.py +5 -5
- layrz_sdk/entities/charts/__init__.py +2 -1
- layrz_sdk/entities/charts/alignment.py +1 -1
- layrz_sdk/entities/charts/bar.py +78 -5
- layrz_sdk/entities/charts/color.py +35 -0
- layrz_sdk/entities/charts/column.py +78 -5
- layrz_sdk/entities/charts/configuration.py +28 -0
- layrz_sdk/entities/charts/data_type.py +4 -4
- layrz_sdk/entities/charts/line.py +51 -5
- layrz_sdk/entities/charts/map.py +6 -5
- layrz_sdk/entities/charts/number.py +11 -3
- layrz_sdk/entities/charts/pie.py +39 -5
- layrz_sdk/entities/charts/radial_bar.py +39 -5
- layrz_sdk/entities/charts/render_technology.py +3 -0
- layrz_sdk/entities/charts/scatter.py +94 -5
- layrz_sdk/entities/charts/serie.py +1 -1
- layrz_sdk/entities/charts/table.py +11 -3
- {layrz_sdk-3.0.4.dist-info → layrz_sdk-3.0.6.dist-info}/METADATA +1 -1
- {layrz_sdk-3.0.4.dist-info → layrz_sdk-3.0.6.dist-info}/RECORD +22 -21
- {layrz_sdk-3.0.4.dist-info → layrz_sdk-3.0.6.dist-info}/LICENSE +0 -0
- {layrz_sdk-3.0.4.dist-info → layrz_sdk-3.0.6.dist-info}/WHEEL +0 -0
- {layrz_sdk-3.0.4.dist-info → layrz_sdk-3.0.6.dist-info}/top_level.txt +0 -0
layrz_sdk/entities/__init__.py
CHANGED
|
@@ -4,11 +4,11 @@ from .broadcasts import (BroadcastRequest, BroadcastResponse, BroadcastResult, B
|
|
|
4
4
|
# Cases entitites
|
|
5
5
|
from .cases import Case, CaseIgnoredStatus, CaseStatus, Comment, Trigger
|
|
6
6
|
# Charts entities
|
|
7
|
-
from .charts import (AreaChart, BarChart, ChartAlignment, ChartConfiguration, ChartDataSerie,
|
|
8
|
-
ChartDataType, ChartException, ChartRenderTechnology, ColumnChart, HTMLChart,
|
|
9
|
-
MapCenterType, MapChart, MapPoint, NumberChart, PieChart, RadarChart, RadialBarChart,
|
|
10
|
-
ScatterSerie, ScatterSerieItem, TableChart, TableHeader, TableRow, TimelineChart,
|
|
11
|
-
TimelineSerieItem)
|
|
7
|
+
from .charts import (AreaChart, AxisConfig, BarChart, ChartAlignment, ChartColor, ChartConfiguration, ChartDataSerie,
|
|
8
|
+
ChartDataSerieType, ChartDataType, ChartException, ChartRenderTechnology, ColumnChart, HTMLChart,
|
|
9
|
+
LineChart, MapCenterType, MapChart, MapPoint, NumberChart, PieChart, RadarChart, RadialBarChart,
|
|
10
|
+
ScatterChart, ScatterSerie, ScatterSerieItem, TableChart, TableHeader, TableRow, TimelineChart,
|
|
11
|
+
TimelineSerie, TimelineSerieItem, get_color_list)
|
|
12
12
|
# Checkpoints entities
|
|
13
13
|
from .checkpoints import Checkpoint, Geofence, Waypoint
|
|
14
14
|
# Events entities
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
""" Charts entities """
|
|
2
2
|
from .alignment import ChartAlignment
|
|
3
3
|
from .bar import BarChart
|
|
4
|
+
from .color import ChartColor, get_color_list
|
|
4
5
|
from .column import ColumnChart
|
|
5
|
-
from .configuration import ChartConfiguration
|
|
6
|
+
from .configuration import ChartConfiguration, AxisConfig
|
|
6
7
|
from .data_type import ChartDataType
|
|
7
8
|
from .exceptions import ChartException
|
|
8
9
|
from .html import HTMLChart
|
layrz_sdk/entities/charts/bar.py
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
""" Bar chart """
|
|
2
2
|
from .alignment import ChartAlignment
|
|
3
|
+
from .configuration import AxisConfig
|
|
3
4
|
from .exceptions import ChartException
|
|
5
|
+
from .render_technology import ChartRenderTechnology
|
|
4
6
|
from .serie import ChartDataSerie
|
|
5
7
|
from .serie_type import ChartDataSerieType
|
|
6
8
|
|
|
@@ -16,6 +18,8 @@ class BarChart:
|
|
|
16
18
|
y_axis: list[ChartDataSerie],
|
|
17
19
|
title: str = 'Chart',
|
|
18
20
|
align: ChartAlignment = ChartAlignment.CENTER,
|
|
21
|
+
x_axis_config: AxisConfig = None,
|
|
22
|
+
y_axis_config: AxisConfig = None,
|
|
19
23
|
) -> None:
|
|
20
24
|
"""
|
|
21
25
|
Constructor
|
|
@@ -27,6 +31,8 @@ class BarChart:
|
|
|
27
31
|
Please read the documentation to more information.
|
|
28
32
|
- title : Title of the chart
|
|
29
33
|
- align : Alignment of the title
|
|
34
|
+
- x_axis_config : Configuration of the X Axis
|
|
35
|
+
- y_axis_config : Configuration of the Y Axis
|
|
30
36
|
"""
|
|
31
37
|
for i, serie in enumerate(y_axis):
|
|
32
38
|
if not isinstance(serie, ChartDataSerie):
|
|
@@ -45,7 +51,24 @@ class BarChart:
|
|
|
45
51
|
raise ChartException('align must be an instance of ChartAlignment')
|
|
46
52
|
self.align = align
|
|
47
53
|
|
|
48
|
-
|
|
54
|
+
if x_axis_config is None:
|
|
55
|
+
x_axis_config = AxisConfig()
|
|
56
|
+
|
|
57
|
+
if not isinstance(x_axis_config, AxisConfig):
|
|
58
|
+
raise ChartException('x_axis_config must be an instance of AxisConfig')
|
|
59
|
+
self.x_axis_config = x_axis_config
|
|
60
|
+
|
|
61
|
+
if y_axis_config is None:
|
|
62
|
+
y_axis_config = AxisConfig()
|
|
63
|
+
|
|
64
|
+
if not isinstance(y_axis_config, AxisConfig):
|
|
65
|
+
raise ChartException('y_axis_config must be an instance of AxisConfig')
|
|
66
|
+
self.y_axis_config = y_axis_config
|
|
67
|
+
|
|
68
|
+
def render(
|
|
69
|
+
self,
|
|
70
|
+
technology: ChartRenderTechnology = ChartRenderTechnology.SYNCFUSION_FLUTTER_CHARTS,
|
|
71
|
+
) -> dict:
|
|
49
72
|
"""
|
|
50
73
|
Render chart to a graphic Library.
|
|
51
74
|
We have two graphic libraries: GRAPHIC and APEXCHARTS.
|
|
@@ -53,17 +76,67 @@ class BarChart:
|
|
|
53
76
|
GRAPHIC is a Flutter chart library. To return this option, use the parameter use_new_definition=True.
|
|
54
77
|
APEXCHARTS is a Javascript chart library. This is the default option.
|
|
55
78
|
"""
|
|
56
|
-
if
|
|
79
|
+
if technology == ChartRenderTechnology.GRAPHIC:
|
|
57
80
|
return {
|
|
58
81
|
'library': 'GRAPHIC',
|
|
59
82
|
'chart': 'BAR',
|
|
60
83
|
'configuration': self._render_graphic(),
|
|
61
84
|
}
|
|
62
85
|
|
|
86
|
+
if technology == ChartRenderTechnology.SYNCFUSION_FLUTTER_CHARTS:
|
|
87
|
+
return {
|
|
88
|
+
'library': 'SYNCFUSION_FLUTTER_CHARTS',
|
|
89
|
+
'chart': 'BAR',
|
|
90
|
+
'configuration': self._render_syncfusion_flutter_charts(),
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
if technology == ChartRenderTechnology.APEX_CHARTS:
|
|
94
|
+
return {
|
|
95
|
+
'library': 'APEXCHARTS',
|
|
96
|
+
'chart': 'BAR',
|
|
97
|
+
'configuration': self._render_apexcharts(),
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
return {
|
|
101
|
+
'library': 'FLUTTER',
|
|
102
|
+
'chart': 'TEXT',
|
|
103
|
+
'configuration': [f'Unsupported rendering technology {technology.name}'],
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
def _render_syncfusion_flutter_charts(self) -> list[dict]:
|
|
107
|
+
"""
|
|
108
|
+
Converts the configuration of the chart to Syncfusion Flutter Charts.
|
|
109
|
+
"""
|
|
110
|
+
series = []
|
|
111
|
+
|
|
112
|
+
for serie in self.y_axis:
|
|
113
|
+
values = []
|
|
114
|
+
for i, value in enumerate(serie.data):
|
|
115
|
+
x_axis = self.x_axis.data[i]
|
|
116
|
+
values.append({'xAxis': x_axis, 'yAxis': value})
|
|
117
|
+
|
|
118
|
+
series.append({
|
|
119
|
+
'label': serie.label,
|
|
120
|
+
'color': serie.color,
|
|
121
|
+
'values': values,
|
|
122
|
+
})
|
|
123
|
+
|
|
63
124
|
return {
|
|
64
|
-
'
|
|
65
|
-
'
|
|
66
|
-
|
|
125
|
+
'series': series,
|
|
126
|
+
'xAxis': {
|
|
127
|
+
'label': self.x_axis_config.label,
|
|
128
|
+
'measureUnit': self.x_axis_config.measure_unit,
|
|
129
|
+
'dataType': self.x_axis_config.data_type.value,
|
|
130
|
+
'minValue': self.x_axis_config.min_value,
|
|
131
|
+
'maxValue': self.x_axis_config.max_value,
|
|
132
|
+
},
|
|
133
|
+
'yAxis': {
|
|
134
|
+
'label': self.y_axis_config.label,
|
|
135
|
+
'measureUnit': self.y_axis_config.measure_unit,
|
|
136
|
+
'dataType': self.y_axis_config.data_type.value,
|
|
137
|
+
'minValue': self.y_axis_config.min_value,
|
|
138
|
+
'maxValue': self.y_axis_config.max_value,
|
|
139
|
+
},
|
|
67
140
|
}
|
|
68
141
|
|
|
69
142
|
def _render_graphic(self) -> list[dict]:
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
""" Chart alignment """
|
|
2
|
+
from enum import Enum
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class ChartColor(Enum):
|
|
6
|
+
""" Chart color list, ideal to use to colorize the series """
|
|
7
|
+
RED = '#F44336'
|
|
8
|
+
BLUE = '#2196F3'
|
|
9
|
+
GREEN = '#4CAF50'
|
|
10
|
+
PURPLE = '#9C27B0'
|
|
11
|
+
ORANGE = '#FF9800'
|
|
12
|
+
PINK = '#E91E63'
|
|
13
|
+
TEAL = '#009688'
|
|
14
|
+
AMBER = '#FFC107'
|
|
15
|
+
CYAN = '#00BCD4'
|
|
16
|
+
INDIGO = '#3F51B5'
|
|
17
|
+
LIME = '#CDDC39'
|
|
18
|
+
|
|
19
|
+
@property
|
|
20
|
+
def _readable(self) -> str:
|
|
21
|
+
""" Readable """
|
|
22
|
+
return f'ChartColor.{self.value}'
|
|
23
|
+
|
|
24
|
+
def __str__(self) -> str:
|
|
25
|
+
""" Readable property """
|
|
26
|
+
return self._readable
|
|
27
|
+
|
|
28
|
+
def __repr__(self) -> str:
|
|
29
|
+
""" Readable property """
|
|
30
|
+
return self._readable
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def get_color_list() -> list[str]:
|
|
34
|
+
""" Get all colors """
|
|
35
|
+
return [color.value for color in ChartColor]
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
from layrz_sdk.helpers import convert_to_rgba
|
|
3
3
|
|
|
4
4
|
from .alignment import ChartAlignment
|
|
5
|
+
from .configuration import AxisConfig
|
|
5
6
|
from .exceptions import ChartException
|
|
7
|
+
from .render_technology import ChartRenderTechnology
|
|
6
8
|
from .serie import ChartDataSerie
|
|
7
9
|
from .serie_type import ChartDataSerieType
|
|
8
10
|
|
|
@@ -19,6 +21,8 @@ class ColumnChart:
|
|
|
19
21
|
y_axis: list[ChartDataSerie],
|
|
20
22
|
title: str = 'Chart',
|
|
21
23
|
align: ChartAlignment = ChartAlignment.CENTER,
|
|
24
|
+
x_axis_config: AxisConfig = None,
|
|
25
|
+
y_axis_config: AxisConfig = None,
|
|
22
26
|
) -> None:
|
|
23
27
|
"""
|
|
24
28
|
Constructor
|
|
@@ -30,6 +34,8 @@ class ColumnChart:
|
|
|
30
34
|
Please read the documentation to more information.
|
|
31
35
|
- title : Title of the chart
|
|
32
36
|
- align : Alignment of the title
|
|
37
|
+
- x_axis_config : Configuration of the X Axis
|
|
38
|
+
- y_axis_config : Configuration of the Y Axis
|
|
33
39
|
"""
|
|
34
40
|
for i, serie in enumerate(y_axis):
|
|
35
41
|
if not isinstance(serie, ChartDataSerie):
|
|
@@ -48,7 +54,24 @@ class ColumnChart:
|
|
|
48
54
|
raise ChartException('align must be an instance of ChartAlignment')
|
|
49
55
|
self.align = align
|
|
50
56
|
|
|
51
|
-
|
|
57
|
+
if x_axis_config is None:
|
|
58
|
+
x_axis_config = AxisConfig()
|
|
59
|
+
|
|
60
|
+
if not isinstance(x_axis_config, AxisConfig):
|
|
61
|
+
raise ChartException('x_axis_config must be an instance of AxisConfig')
|
|
62
|
+
self.x_axis_config = x_axis_config
|
|
63
|
+
|
|
64
|
+
if y_axis_config is None:
|
|
65
|
+
y_axis_config = AxisConfig()
|
|
66
|
+
|
|
67
|
+
if not isinstance(y_axis_config, AxisConfig):
|
|
68
|
+
raise ChartException('y_axis_config must be an instance of AxisConfig')
|
|
69
|
+
self.y_axis_config = y_axis_config
|
|
70
|
+
|
|
71
|
+
def render(
|
|
72
|
+
self,
|
|
73
|
+
technology: ChartRenderTechnology = ChartRenderTechnology.SYNCFUSION_FLUTTER_CHARTS,
|
|
74
|
+
) -> dict:
|
|
52
75
|
"""
|
|
53
76
|
Render chart to a graphic Library.
|
|
54
77
|
We have two graphic libraries: GRAPHIC and APEXCHARTS.
|
|
@@ -56,17 +79,67 @@ class ColumnChart:
|
|
|
56
79
|
GRAPHIC is a Flutter chart library. To return this option, use the parameter use_new_definition=True.
|
|
57
80
|
APEXCHARTS is a Javascript chart library. This is the default option.
|
|
58
81
|
"""
|
|
59
|
-
if
|
|
82
|
+
if technology == ChartRenderTechnology.GRAPHIC:
|
|
60
83
|
return {
|
|
61
84
|
'library': 'GRAPHIC',
|
|
62
85
|
'chart': 'COLUMN',
|
|
63
86
|
'configuration': self._render_graphic(),
|
|
64
87
|
}
|
|
65
88
|
|
|
89
|
+
if technology == ChartRenderTechnology.SYNCFUSION_FLUTTER_CHARTS:
|
|
90
|
+
return {
|
|
91
|
+
'library': 'SYNCFUSION_FLUTTER_CHARTS',
|
|
92
|
+
'chart': 'COLUMN',
|
|
93
|
+
'configuration': self._render_syncfusion_flutter_charts(),
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
if technology == ChartRenderTechnology.APEX_CHARTS:
|
|
97
|
+
return {
|
|
98
|
+
'library': 'APEXCHARTS',
|
|
99
|
+
'chart': 'COLUMN',
|
|
100
|
+
'configuration': self._render_apexcharts(),
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
return {
|
|
104
|
+
'library': 'FLUTTER',
|
|
105
|
+
'chart': 'TEXT',
|
|
106
|
+
'configuration': [f'Unsupported {technology}'],
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
def _render_syncfusion_flutter_charts(self) -> dict:
|
|
110
|
+
"""
|
|
111
|
+
Converts the configuration of the chart to Syncfusion Flutter Charts.
|
|
112
|
+
"""
|
|
113
|
+
series = []
|
|
114
|
+
|
|
115
|
+
for serie in self.y_axis:
|
|
116
|
+
values = []
|
|
117
|
+
for i, value in enumerate(serie.data):
|
|
118
|
+
x_axis = self.x_axis.data[i]
|
|
119
|
+
values.append({'xAxis': x_axis, 'yAxis': value})
|
|
120
|
+
|
|
121
|
+
series.append({
|
|
122
|
+
'label': serie.label,
|
|
123
|
+
'color': serie.color,
|
|
124
|
+
'values': values,
|
|
125
|
+
})
|
|
126
|
+
|
|
66
127
|
return {
|
|
67
|
-
'
|
|
68
|
-
'
|
|
69
|
-
|
|
128
|
+
'series': series,
|
|
129
|
+
'xAxis': {
|
|
130
|
+
'label': self.x_axis_config.label,
|
|
131
|
+
'measureUnit': self.x_axis_config.measure_unit,
|
|
132
|
+
'dataType': self.x_axis_config.data_type.value,
|
|
133
|
+
'minValue': self.x_axis_config.min_value,
|
|
134
|
+
'maxValue': self.x_axis_config.max_value,
|
|
135
|
+
},
|
|
136
|
+
'yAxis': {
|
|
137
|
+
'label': self.y_axis_config.label,
|
|
138
|
+
'measureUnit': self.y_axis_config.measure_unit,
|
|
139
|
+
'dataType': self.y_axis_config.data_type.value,
|
|
140
|
+
'minValue': self.y_axis_config.min_value,
|
|
141
|
+
'maxValue': self.y_axis_config.max_value,
|
|
142
|
+
},
|
|
70
143
|
}
|
|
71
144
|
|
|
72
145
|
def _render_graphic(self) -> list[dict]:
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
""" Charts entities """
|
|
2
|
+
from .data_type import ChartDataType
|
|
2
3
|
|
|
3
4
|
|
|
4
5
|
class ChartConfiguration:
|
|
@@ -23,3 +24,30 @@ class ChartConfiguration:
|
|
|
23
24
|
def __repr__(self) -> str:
|
|
24
25
|
""" Readable property """
|
|
25
26
|
return self._readable
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class AxisConfig:
|
|
30
|
+
""" Axis configuration """
|
|
31
|
+
|
|
32
|
+
def __init__(
|
|
33
|
+
self,
|
|
34
|
+
label: str = '',
|
|
35
|
+
measure_unit: str = '',
|
|
36
|
+
min_value: int | float = None,
|
|
37
|
+
max_value: int | float = None,
|
|
38
|
+
data_type: ChartDataType = ChartDataType.DATETIME,
|
|
39
|
+
) -> None:
|
|
40
|
+
"""
|
|
41
|
+
Constructor
|
|
42
|
+
---
|
|
43
|
+
Arguments
|
|
44
|
+
- label : Label of the axis
|
|
45
|
+
- color : Color of the axis
|
|
46
|
+
- min_value : Minimum value of the axis
|
|
47
|
+
- max_value : Maximum value of the axis
|
|
48
|
+
"""
|
|
49
|
+
self.label = label
|
|
50
|
+
self.measure_unit = measure_unit
|
|
51
|
+
self.min_value = min_value
|
|
52
|
+
self.max_value = max_value
|
|
53
|
+
self.data_type = data_type
|
|
@@ -6,14 +6,14 @@ class ChartDataType(Enum):
|
|
|
6
6
|
"""
|
|
7
7
|
Chart Data Type
|
|
8
8
|
"""
|
|
9
|
-
STRING = '
|
|
10
|
-
DATETIME = '
|
|
11
|
-
NUMBER = '
|
|
9
|
+
STRING = 'STRING'
|
|
10
|
+
DATETIME = 'DATETIME'
|
|
11
|
+
NUMBER = 'NUMBER'
|
|
12
12
|
|
|
13
13
|
@property
|
|
14
14
|
def _readable(self) -> str:
|
|
15
15
|
""" Readable """
|
|
16
|
-
return f'
|
|
16
|
+
return f'ChartDataType.{self.value}'
|
|
17
17
|
|
|
18
18
|
def __str__(self) -> str:
|
|
19
19
|
""" Readable property """
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
""" Line chart """
|
|
2
|
+
import logging
|
|
2
3
|
|
|
3
4
|
from .alignment import ChartAlignment
|
|
5
|
+
from .configuration import AxisConfig
|
|
4
6
|
from .data_type import ChartDataType
|
|
5
7
|
from .exceptions import ChartException
|
|
6
8
|
from .render_technology import ChartRenderTechnology
|
|
7
9
|
from .serie import ChartDataSerie
|
|
8
10
|
from .serie_type import ChartDataSerieType
|
|
9
11
|
|
|
12
|
+
log = logging.getLogger(__name__)
|
|
10
13
|
|
|
11
14
|
class LineChart:
|
|
12
15
|
"""
|
|
@@ -20,6 +23,8 @@ class LineChart:
|
|
|
20
23
|
y_axis: list[ChartDataSerie],
|
|
21
24
|
title: str = 'Chart',
|
|
22
25
|
align: ChartAlignment = ChartAlignment.CENTER,
|
|
26
|
+
x_axis_config: AxisConfig = None,
|
|
27
|
+
y_axis_config: AxisConfig = None,
|
|
23
28
|
) -> None:
|
|
24
29
|
"""
|
|
25
30
|
Constructor
|
|
@@ -31,6 +36,8 @@ class LineChart:
|
|
|
31
36
|
Please read the documentation to more information.
|
|
32
37
|
- title : Title of the chart
|
|
33
38
|
- align : Alignment of the title
|
|
39
|
+
- x_axis_config : Configuration of the X Axis
|
|
40
|
+
- y_axis_config : Configuration of the Y Axis
|
|
34
41
|
"""
|
|
35
42
|
for i, serie in enumerate(y_axis):
|
|
36
43
|
if not isinstance(serie, ChartDataSerie):
|
|
@@ -49,6 +56,20 @@ class LineChart:
|
|
|
49
56
|
raise ChartException('align must be an instance of ChartAlignment')
|
|
50
57
|
self.align = align
|
|
51
58
|
|
|
59
|
+
if x_axis_config is None:
|
|
60
|
+
x_axis_config = AxisConfig()
|
|
61
|
+
|
|
62
|
+
if not isinstance(x_axis_config, AxisConfig):
|
|
63
|
+
raise ChartException('x_axis_config must be an instance of AxisConfig')
|
|
64
|
+
self.x_axis_config = x_axis_config
|
|
65
|
+
|
|
66
|
+
if y_axis_config is None:
|
|
67
|
+
y_axis_config = AxisConfig()
|
|
68
|
+
|
|
69
|
+
if not isinstance(y_axis_config, AxisConfig):
|
|
70
|
+
raise ChartException('y_axis_config must be an instance of AxisConfig')
|
|
71
|
+
self.y_axis_config = y_axis_config
|
|
72
|
+
|
|
52
73
|
def render(self, technology: ChartRenderTechnology) -> dict | list[dict]:
|
|
53
74
|
"""
|
|
54
75
|
Render chart to a graphic Library.
|
|
@@ -72,13 +93,20 @@ class LineChart:
|
|
|
72
93
|
'configuration': self._render_syncfusion_flutter_charts(),
|
|
73
94
|
}
|
|
74
95
|
|
|
96
|
+
if technology == ChartRenderTechnology.CANVASJS:
|
|
97
|
+
return {
|
|
98
|
+
'library': 'CANVASJS',
|
|
99
|
+
'chart': 'LINE',
|
|
100
|
+
'configuration': self._render_canvasjs(),
|
|
101
|
+
}
|
|
102
|
+
|
|
75
103
|
return {
|
|
76
|
-
'library': '
|
|
77
|
-
'chart': '
|
|
78
|
-
'configuration':
|
|
104
|
+
'library': 'FLUTTER',
|
|
105
|
+
'chart': 'TEXT',
|
|
106
|
+
'configuration': [f'Unsupported {technology}'],
|
|
79
107
|
}
|
|
80
108
|
|
|
81
|
-
def _render_syncfusion_flutter_charts(self) ->
|
|
109
|
+
def _render_syncfusion_flutter_charts(self) -> dict:
|
|
82
110
|
"""
|
|
83
111
|
Converts the configuration of the chart to a Flutter library syncfusion_flutter_charts.
|
|
84
112
|
"""
|
|
@@ -86,6 +114,7 @@ class LineChart:
|
|
|
86
114
|
|
|
87
115
|
for serie in self.y_axis:
|
|
88
116
|
if serie.serie_type not in [ChartDataSerieType.LINE, ChartDataSerieType.AREA]:
|
|
117
|
+
log.warning('Serie type not supported: %s', serie.serie_type)
|
|
89
118
|
continue
|
|
90
119
|
|
|
91
120
|
points = []
|
|
@@ -103,6 +132,7 @@ class LineChart:
|
|
|
103
132
|
y_value = 0
|
|
104
133
|
|
|
105
134
|
if not isinstance(y_value, (int, float)):
|
|
135
|
+
log.debug('Value isn\'t a number: %s', y_value)
|
|
106
136
|
continue
|
|
107
137
|
|
|
108
138
|
points.append({
|
|
@@ -117,7 +147,23 @@ class LineChart:
|
|
|
117
147
|
'type': 'AREA' if serie.serie_type == ChartDataSerieType.AREA else 'LINE',
|
|
118
148
|
})
|
|
119
149
|
|
|
120
|
-
return
|
|
150
|
+
return {
|
|
151
|
+
'series': series,
|
|
152
|
+
'xAxis': {
|
|
153
|
+
'label': self.x_axis_config.label,
|
|
154
|
+
'measureUnit': self.x_axis_config.measure_unit,
|
|
155
|
+
'dataType': self.x_axis_config.data_type.value,
|
|
156
|
+
'minValue': self.x_axis_config.min_value,
|
|
157
|
+
'maxValue': self.x_axis_config.max_value,
|
|
158
|
+
},
|
|
159
|
+
'yAxis': {
|
|
160
|
+
'label': self.y_axis_config.label,
|
|
161
|
+
'measureUnit': self.y_axis_config.measure_unit,
|
|
162
|
+
'dataType': self.y_axis_config.data_type.value,
|
|
163
|
+
'minValue': self.y_axis_config.min_value,
|
|
164
|
+
'maxValue': self.y_axis_config.max_value,
|
|
165
|
+
},
|
|
166
|
+
}
|
|
121
167
|
|
|
122
168
|
def _render_graphic(self) -> list[dict]:
|
|
123
169
|
"""
|
layrz_sdk/entities/charts/map.py
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
from enum import Enum
|
|
3
3
|
|
|
4
4
|
from .exceptions import ChartException
|
|
5
|
+
from .render_technology import ChartRenderTechnology
|
|
5
6
|
|
|
6
7
|
|
|
7
8
|
class MapCenterType(Enum):
|
|
@@ -99,7 +100,7 @@ class MapChart:
|
|
|
99
100
|
raise ChartException('center_latlng must be an instance of list or tuple')
|
|
100
101
|
self.center_latlng = center_latlng
|
|
101
102
|
|
|
102
|
-
def render(self,
|
|
103
|
+
def render(self, technology: ChartRenderTechnology = ChartRenderTechnology.FLUTTER_MAP) -> dict:
|
|
103
104
|
"""
|
|
104
105
|
Render chart to a graphic Library.
|
|
105
106
|
We have two graphic libraries: FLUTTER_MAP and LEAFLET.
|
|
@@ -107,7 +108,7 @@ class MapChart:
|
|
|
107
108
|
FLUTTER_MAP is a Flutter chart library. To return this option, use the parameter use_new_definition=True.
|
|
108
109
|
LEAFLET is a Javascript chart library. This is the default option.
|
|
109
110
|
"""
|
|
110
|
-
if
|
|
111
|
+
if technology == ChartRenderTechnology.FLUTTER_MAP:
|
|
111
112
|
return {
|
|
112
113
|
'library': 'FLUTTER_MAP',
|
|
113
114
|
'chart': 'MAP',
|
|
@@ -115,9 +116,9 @@ class MapChart:
|
|
|
115
116
|
}
|
|
116
117
|
|
|
117
118
|
return {
|
|
118
|
-
'library': '
|
|
119
|
-
'chart': '
|
|
120
|
-
'configuration':
|
|
119
|
+
'library': 'FLUTTER',
|
|
120
|
+
'chart': 'TEXT',
|
|
121
|
+
'configuration': [f'Unsupported {technology}'],
|
|
121
122
|
}
|
|
122
123
|
|
|
123
124
|
def _render_flutter_map(self) -> dict:
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
""" Number chart """
|
|
2
|
+
from .render_technology import ChartRenderTechnology
|
|
2
3
|
|
|
3
4
|
|
|
4
5
|
class NumberChart:
|
|
@@ -20,14 +21,21 @@ class NumberChart:
|
|
|
20
21
|
self.color = color
|
|
21
22
|
self.label = label
|
|
22
23
|
|
|
23
|
-
def render(self) -> dict:
|
|
24
|
+
def render(self, technology: ChartRenderTechnology = ChartRenderTechnology.FLUTTER) -> dict:
|
|
24
25
|
"""
|
|
25
26
|
Render chart to a graphic Library.
|
|
26
27
|
"""
|
|
28
|
+
if technology == ChartRenderTechnology.FLUTTER:
|
|
29
|
+
return {
|
|
30
|
+
'library': 'FLUTTER',
|
|
31
|
+
'chart': 'NUMBER',
|
|
32
|
+
'configuration': self._render_flutter(),
|
|
33
|
+
}
|
|
34
|
+
|
|
27
35
|
return {
|
|
28
36
|
'library': 'FLUTTER',
|
|
29
|
-
'chart': '
|
|
30
|
-
'configuration':
|
|
37
|
+
'chart': 'TEXT',
|
|
38
|
+
'configuration': [f'Unsupported {technology}'],
|
|
31
39
|
}
|
|
32
40
|
|
|
33
41
|
def _render_flutter(self) -> dict:
|
layrz_sdk/entities/charts/pie.py
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
""" Pie chart """
|
|
2
2
|
from .alignment import ChartAlignment
|
|
3
3
|
from .exceptions import ChartException
|
|
4
|
+
from .render_technology import ChartRenderTechnology
|
|
4
5
|
from .serie import ChartDataSerie
|
|
5
6
|
|
|
6
7
|
|
|
@@ -37,7 +38,10 @@ class PieChart:
|
|
|
37
38
|
raise ChartException('align must be an instance of ChartAlignment')
|
|
38
39
|
self.align = align
|
|
39
40
|
|
|
40
|
-
def render(
|
|
41
|
+
def render(
|
|
42
|
+
self,
|
|
43
|
+
technology: ChartRenderTechnology = ChartRenderTechnology.SYNCFUSION_FLUTTER_CHARTS,
|
|
44
|
+
) -> dict | list[dict]:
|
|
41
45
|
"""
|
|
42
46
|
Render chart to a graphic Library.
|
|
43
47
|
We have two graphic libraries: GRAPHIC and CANVASJS.
|
|
@@ -45,18 +49,48 @@ class PieChart:
|
|
|
45
49
|
GRAPHIC is a Flutter chart library. To return this option, use the parameter use_new_definition=True.
|
|
46
50
|
CANVASJS is a Javascript chart library. This is the default option.
|
|
47
51
|
"""
|
|
48
|
-
if
|
|
52
|
+
if technology == ChartRenderTechnology.GRAPHIC:
|
|
49
53
|
return {
|
|
50
54
|
'library': 'GRAPHIC',
|
|
51
55
|
'chart': 'PIE',
|
|
52
56
|
'configuration': self._render_graphic(),
|
|
53
57
|
}
|
|
58
|
+
|
|
59
|
+
if technology == ChartRenderTechnology.SYNCFUSION_FLUTTER_CHARTS:
|
|
60
|
+
return {
|
|
61
|
+
'library': 'SYNCFUSION_FLUTTER_CHARTS',
|
|
62
|
+
'chart': 'PIE',
|
|
63
|
+
'configuration': self._render_syncfusion_flutter_charts(),
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
if technology == ChartRenderTechnology.APEX_CHARTS:
|
|
67
|
+
return {
|
|
68
|
+
'library': 'APEXCHARTS',
|
|
69
|
+
'chart': 'PIE',
|
|
70
|
+
'configuration': self._render_apexcharts(),
|
|
71
|
+
}
|
|
72
|
+
|
|
54
73
|
return {
|
|
55
|
-
'library': '
|
|
56
|
-
'chart': '
|
|
57
|
-
'configuration':
|
|
74
|
+
'library': 'FLUTTER',
|
|
75
|
+
'chart': 'TEXT',
|
|
76
|
+
'configuration': [f'Unsupported {technology}'],
|
|
58
77
|
}
|
|
59
78
|
|
|
79
|
+
def _render_syncfusion_flutter_charts(self) -> dict:
|
|
80
|
+
"""
|
|
81
|
+
Converts the configuration of the chart to Syncfusion Flutter Charts.
|
|
82
|
+
"""
|
|
83
|
+
series = []
|
|
84
|
+
|
|
85
|
+
for serie in self.series:
|
|
86
|
+
series.append({
|
|
87
|
+
'label': serie.label,
|
|
88
|
+
'color': serie.color,
|
|
89
|
+
'value': serie.data[0],
|
|
90
|
+
})
|
|
91
|
+
|
|
92
|
+
return {'series': series}
|
|
93
|
+
|
|
60
94
|
def _render_graphic(self) -> list[dict]:
|
|
61
95
|
"""
|
|
62
96
|
Converts the configuration of the chart to a Flutter library Graphic.
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
""" Radial Bar chart """
|
|
2
2
|
from .alignment import ChartAlignment
|
|
3
3
|
from .exceptions import ChartException
|
|
4
|
+
from .render_technology import ChartRenderTechnology
|
|
4
5
|
from .serie import ChartDataSerie
|
|
5
6
|
|
|
6
7
|
|
|
@@ -37,7 +38,10 @@ class RadialBarChart:
|
|
|
37
38
|
raise ChartException('align must be an instance of ChartAlignment')
|
|
38
39
|
self.align = align
|
|
39
40
|
|
|
40
|
-
def render(
|
|
41
|
+
def render(
|
|
42
|
+
self,
|
|
43
|
+
technology: ChartRenderTechnology = ChartRenderTechnology.SYNCFUSION_FLUTTER_CHARTS,
|
|
44
|
+
) -> dict | list[dict]:
|
|
41
45
|
"""
|
|
42
46
|
Render chart to a graphic Library.
|
|
43
47
|
We have two graphic libraries: GRAPHIC and CANVASJS.
|
|
@@ -45,18 +49,48 @@ class RadialBarChart:
|
|
|
45
49
|
GRAPHIC is a Flutter chart library. To return this option, use the parameter use_new_definition=True.
|
|
46
50
|
CANVASJS is a Javascript chart library. This is the default option.
|
|
47
51
|
"""
|
|
48
|
-
if
|
|
52
|
+
if technology == ChartRenderTechnology.GRAPHIC:
|
|
49
53
|
return {
|
|
50
54
|
'library': 'GRAPHIC',
|
|
51
55
|
'chart': 'RADIALBAR',
|
|
52
56
|
'configuration': self._render_graphic(),
|
|
53
57
|
}
|
|
58
|
+
|
|
59
|
+
if technology == ChartRenderTechnology.APEX_CHARTS:
|
|
60
|
+
return {
|
|
61
|
+
'library': 'APEXCHARTS',
|
|
62
|
+
'chart': 'RADIALBAR',
|
|
63
|
+
'configuration': self._render_apexcharts(),
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
if technology == ChartRenderTechnology.SYNCFUSION_FLUTTER_CHARTS:
|
|
67
|
+
return {
|
|
68
|
+
'library': 'SYNCFUSION_FLUTTER_CHARTS',
|
|
69
|
+
'chart': 'RADIALBAR',
|
|
70
|
+
'configuration': self._render_syncfusion_flutter_charts(),
|
|
71
|
+
}
|
|
72
|
+
|
|
54
73
|
return {
|
|
55
|
-
'library': '
|
|
56
|
-
'chart': '
|
|
57
|
-
'configuration':
|
|
74
|
+
'library': 'FLUTTER',
|
|
75
|
+
'chart': 'TEXT',
|
|
76
|
+
'configuration': [f'Unsupported {technology}'],
|
|
58
77
|
}
|
|
59
78
|
|
|
79
|
+
def _render_syncfusion_flutter_charts(self) -> dict:
|
|
80
|
+
"""
|
|
81
|
+
Converts the configuration of the chart to Syncfusion Flutter Charts.
|
|
82
|
+
"""
|
|
83
|
+
series = []
|
|
84
|
+
|
|
85
|
+
for serie in self.series:
|
|
86
|
+
series.append({
|
|
87
|
+
'label': serie.label,
|
|
88
|
+
'color': serie.color,
|
|
89
|
+
'value': serie.data[0],
|
|
90
|
+
})
|
|
91
|
+
|
|
92
|
+
return {'series': series}
|
|
93
|
+
|
|
60
94
|
def _render_graphic(self) -> list[dict]:
|
|
61
95
|
"""
|
|
62
96
|
Converts the configuration of the chart to a Flutter library Graphic.
|
|
@@ -9,6 +9,9 @@ class ChartRenderTechnology(Enum):
|
|
|
9
9
|
CANVAS_JS = 'CANVAS_JS'
|
|
10
10
|
GRAPHIC = 'GRAPHIC'
|
|
11
11
|
SYNCFUSION_FLUTTER_CHARTS = 'SYNCFUSION_FLUTTER_CHARTS'
|
|
12
|
+
FLUTTER_MAP = 'FLUTTER_MAP'
|
|
13
|
+
APEX_CHARTS = 'APEX_CHARTS'
|
|
14
|
+
FLUTTER = 'FLUTTER'
|
|
12
15
|
|
|
13
16
|
@property
|
|
14
17
|
def _readable(self) -> str:
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
""" Scatter chart """
|
|
2
2
|
from .alignment import ChartAlignment
|
|
3
|
+
from .configuration import AxisConfig
|
|
3
4
|
from .exceptions import ChartException
|
|
5
|
+
from .render_technology import ChartRenderTechnology
|
|
4
6
|
from .serie_type import ChartDataSerieType
|
|
5
7
|
|
|
6
8
|
|
|
@@ -70,6 +72,8 @@ class ScatterChart:
|
|
|
70
72
|
series: list[ScatterSerie],
|
|
71
73
|
title: str = 'Chart',
|
|
72
74
|
align: ChartAlignment = ChartAlignment.CENTER,
|
|
75
|
+
x_axis_config: AxisConfig = None,
|
|
76
|
+
y_axis_config: AxisConfig = None,
|
|
73
77
|
) -> None:
|
|
74
78
|
"""
|
|
75
79
|
Constructor
|
|
@@ -93,7 +97,24 @@ class ScatterChart:
|
|
|
93
97
|
raise ChartException('align must be an instance of ChartAlignment')
|
|
94
98
|
self.align = align
|
|
95
99
|
|
|
96
|
-
|
|
100
|
+
if x_axis_config is None:
|
|
101
|
+
x_axis_config = AxisConfig(label='', measure_unit='')
|
|
102
|
+
|
|
103
|
+
if not isinstance(x_axis_config, AxisConfig):
|
|
104
|
+
raise ChartException('x_axis_config must be an instance of AxisConfig')
|
|
105
|
+
self.x_axis_config = x_axis_config
|
|
106
|
+
|
|
107
|
+
if y_axis_config is None:
|
|
108
|
+
y_axis_config = AxisConfig(label='', measure_unit='')
|
|
109
|
+
|
|
110
|
+
if not isinstance(y_axis_config, AxisConfig):
|
|
111
|
+
raise ChartException('y_axis_config must be an instance of AxisConfig')
|
|
112
|
+
self.y_axis_config = y_axis_config
|
|
113
|
+
|
|
114
|
+
def render(
|
|
115
|
+
self,
|
|
116
|
+
technology: ChartRenderTechnology = ChartRenderTechnology.SYNCFUSION_FLUTTER_CHARTS,
|
|
117
|
+
) -> dict:
|
|
97
118
|
"""
|
|
98
119
|
Render chart to a graphic Library.
|
|
99
120
|
We have two graphic libraries: GRAPHIC and APEXCHARTS.
|
|
@@ -101,17 +122,85 @@ class ScatterChart:
|
|
|
101
122
|
GRAPHIC is a Flutter chart library. To return this option, use the parameter use_new_definition=True.
|
|
102
123
|
APEXCHARTS is a Javascript chart library. This is the default option.
|
|
103
124
|
"""
|
|
104
|
-
if
|
|
125
|
+
if technology == ChartRenderTechnology.GRAPHIC:
|
|
105
126
|
return {
|
|
106
127
|
'library': 'GRAPHIC',
|
|
107
128
|
'chart': 'SCATTER',
|
|
108
129
|
'configuration': self._render_graphic(),
|
|
109
130
|
}
|
|
110
131
|
|
|
132
|
+
if technology == ChartRenderTechnology.SYNCFUSION_FLUTTER_CHARTS:
|
|
133
|
+
return {
|
|
134
|
+
'library': 'SYNCFUSION_FLUTTER_CHARTS',
|
|
135
|
+
'chart': 'SCATTER',
|
|
136
|
+
'configuration': self._render_syncfusion_flutter_charts(),
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
if technology == ChartRenderTechnology.APEX_CHARTS:
|
|
140
|
+
return {
|
|
141
|
+
'library': 'APEXCHARTS',
|
|
142
|
+
'chart': 'SCATTER',
|
|
143
|
+
'configuration': self._render_apexcharts(),
|
|
144
|
+
}
|
|
145
|
+
|
|
111
146
|
return {
|
|
112
|
-
'library': '
|
|
113
|
-
'chart': '
|
|
114
|
-
'configuration':
|
|
147
|
+
'library': 'FLUTTER',
|
|
148
|
+
'chart': 'TEXT',
|
|
149
|
+
'configuration': [f'Unsupported {technology}'],
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
def _render_syncfusion_flutter_charts(self) -> dict:
|
|
153
|
+
"""
|
|
154
|
+
Converts the configuration of the chart to Flutter library Graphic.
|
|
155
|
+
"""
|
|
156
|
+
series = []
|
|
157
|
+
for serie in self.series:
|
|
158
|
+
data = []
|
|
159
|
+
|
|
160
|
+
type_serie = 'SCATTER'
|
|
161
|
+
if serie.serie_type == ChartDataSerieType.SCATTER:
|
|
162
|
+
type_serie = 'SCATTER'
|
|
163
|
+
elif serie.serie_type == ChartDataSerieType.LINE:
|
|
164
|
+
type_serie = 'LINE'
|
|
165
|
+
elif serie.serie_type == ChartDataSerieType.AREA:
|
|
166
|
+
type_serie = 'AREA'
|
|
167
|
+
else:
|
|
168
|
+
continue
|
|
169
|
+
|
|
170
|
+
for item in serie.data:
|
|
171
|
+
if not isinstance(item.x, (int, float)):
|
|
172
|
+
continue
|
|
173
|
+
if not isinstance(item.y, (int, float)):
|
|
174
|
+
continue
|
|
175
|
+
|
|
176
|
+
data.append({
|
|
177
|
+
'xAxis': item.x,
|
|
178
|
+
'yAxis': item.y,
|
|
179
|
+
})
|
|
180
|
+
|
|
181
|
+
series.append({
|
|
182
|
+
'label': serie.label,
|
|
183
|
+
'color': serie.color,
|
|
184
|
+
'values': data,
|
|
185
|
+
'type': type_serie,
|
|
186
|
+
})
|
|
187
|
+
|
|
188
|
+
return {
|
|
189
|
+
'series': series,
|
|
190
|
+
'xAxis': {
|
|
191
|
+
'label': self.x_axis_config.label,
|
|
192
|
+
'measureUnit': self.x_axis_config.measure_unit,
|
|
193
|
+
'dataType': self.x_axis_config.data_type.value,
|
|
194
|
+
'minValue': self.x_axis_config.min_value,
|
|
195
|
+
'maxValue': self.x_axis_config.max_value,
|
|
196
|
+
},
|
|
197
|
+
'yAxis': {
|
|
198
|
+
'label': self.y_axis_config.label,
|
|
199
|
+
'measureUnit': self.y_axis_config.measure_unit,
|
|
200
|
+
'dataType': self.y_axis_config.data_type.value,
|
|
201
|
+
'minValue': self.y_axis_config.min_value,
|
|
202
|
+
'maxValue': self.y_axis_config.max_value,
|
|
203
|
+
},
|
|
115
204
|
}
|
|
116
205
|
|
|
117
206
|
def _render_graphic(self) -> list[dict]:
|
|
@@ -14,7 +14,7 @@ class ChartDataSerie:
|
|
|
14
14
|
data: list[float | int | bool],
|
|
15
15
|
color: str = '#000000',
|
|
16
16
|
label: str = '',
|
|
17
|
-
serie_type: ChartDataSerieType = ChartDataSerieType.
|
|
17
|
+
serie_type: ChartDataSerieType = ChartDataSerieType.LINE,
|
|
18
18
|
data_type: ChartDataType = ChartDataType.NUMBER,
|
|
19
19
|
dashed: bool = False,
|
|
20
20
|
):
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
""" Number chart """
|
|
2
|
+
from .render_technology import ChartRenderTechnology
|
|
2
3
|
|
|
3
4
|
|
|
4
5
|
class TableHeader:
|
|
@@ -43,14 +44,21 @@ class TableChart:
|
|
|
43
44
|
self.columns = columns
|
|
44
45
|
self.rows = rows
|
|
45
46
|
|
|
46
|
-
def render(self) -> dict:
|
|
47
|
+
def render(self, technology: ChartRenderTechnology = ChartRenderTechnology.FLUTTER) -> dict:
|
|
47
48
|
"""
|
|
48
49
|
Render chart to a graphic Library.
|
|
49
50
|
"""
|
|
51
|
+
if technology == ChartRenderTechnology.FLUTTER:
|
|
52
|
+
return {
|
|
53
|
+
'library': 'FLUTTER',
|
|
54
|
+
'chart': 'TABLE',
|
|
55
|
+
'configuration': self._render_flutter(),
|
|
56
|
+
}
|
|
57
|
+
|
|
50
58
|
return {
|
|
51
59
|
'library': 'FLUTTER',
|
|
52
|
-
'chart': '
|
|
53
|
-
'configuration':
|
|
60
|
+
'chart': 'TEXT',
|
|
61
|
+
'configuration': [f'Unsupported {technology}'],
|
|
54
62
|
}
|
|
55
63
|
|
|
56
64
|
def _render_flutter(self) -> dict:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: layrz-sdk
|
|
3
|
-
Version: 3.0.
|
|
3
|
+
Version: 3.0.6
|
|
4
4
|
Summary: Layrz SDK for Python
|
|
5
5
|
Author-email: "Golden M, Inc." <software@goldenm.com>
|
|
6
6
|
Maintainer-email: Kenny Mochizuki <kenny@goldenm.com>, Luis Reyes <lreyes@goldenm.com>, Kasen Li <kli@goldenm.com>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
layrz_sdk/__init__.py,sha256=OutylN0QazaeDVIA5NRDVyzwfYnZkAwVQzT-2F6iX2M,28
|
|
2
|
-
layrz_sdk/entities/__init__.py,sha256=
|
|
2
|
+
layrz_sdk/entities/__init__.py,sha256=P3x1t3T55U0cT1rgBARi08TLz8IHmfiolCKS8Julp4c,1390
|
|
3
3
|
layrz_sdk/entities/broadcasts/__init__.py,sha256=E-Mmr-UjpD5Jxkut4UX7XMqi6IUEYxb_5NP3xyDM_cg,215
|
|
4
4
|
layrz_sdk/entities/broadcasts/request.py,sha256=wj1SvD0Bz36xch-Fj4u2qfA9NIhznGF9lzSBDJUS-4g,566
|
|
5
5
|
layrz_sdk/entities/broadcasts/response.py,sha256=Gd7uJvkKv_vqsML74X5Y0p4F2s-ufedvFyvdiem0-_s,586
|
|
@@ -10,25 +10,26 @@ layrz_sdk/entities/cases/__init__.py,sha256=_8cP3iegIclIkc1yUbdd9w4Da1xMragxV0aV
|
|
|
10
10
|
layrz_sdk/entities/cases/case.py,sha256=EEYOcHgU__Ysu6HKMVE3QKZHvmZ84nnWxNSawK_l0eM,2786
|
|
11
11
|
layrz_sdk/entities/cases/comment.py,sha256=y765KFiQ9hg4L2hZ-XdLKMKy5xPKXVSlgKhkX4LU_Pc,902
|
|
12
12
|
layrz_sdk/entities/cases/trigger.py,sha256=O41HpQX2eOuHbpQYsIfNHl0c2zUUkJ5yBaZB-kqFTvc,629
|
|
13
|
-
layrz_sdk/entities/charts/__init__.py,sha256
|
|
14
|
-
layrz_sdk/entities/charts/alignment.py,sha256=
|
|
15
|
-
layrz_sdk/entities/charts/bar.py,sha256=
|
|
16
|
-
layrz_sdk/entities/charts/
|
|
17
|
-
layrz_sdk/entities/charts/
|
|
18
|
-
layrz_sdk/entities/charts/
|
|
13
|
+
layrz_sdk/entities/charts/__init__.py,sha256=-hy3fhJC-KyDYjnKU_ihrPmFNwB4mdYYD8BPGmOZ1d8,864
|
|
14
|
+
layrz_sdk/entities/charts/alignment.py,sha256=XeKabkxr7sGkDauJzaA2ut1M6Dw1a4C_1snz9gpbEYY,437
|
|
15
|
+
layrz_sdk/entities/charts/bar.py,sha256=MEB-dNJe2gQBSwFEEZKRbF4xKLdIJqGp9dEeDfsmLJk,6212
|
|
16
|
+
layrz_sdk/entities/charts/color.py,sha256=xT_zbmSFcWO2-HsI6zeKycS48sri0qx1p96FMvXwSlg,734
|
|
17
|
+
layrz_sdk/entities/charts/column.py,sha256=t19V0a0IG9sryh2-pMTmmn85LRwPDm8wSl59CvC7Ct8,7244
|
|
18
|
+
layrz_sdk/entities/charts/configuration.py,sha256=gxpSrJcRIDS1h3pUJG0HRFbE9Zjbez7K7ISkQ2LRTxI,1181
|
|
19
|
+
layrz_sdk/entities/charts/data_type.py,sha256=pYLTkceEpBVmhDaQk34Hlk18lyTIBHBr4XQDWblagVo,445
|
|
19
20
|
layrz_sdk/entities/charts/exceptions.py,sha256=yh7HpX2bEI-clDMz-6gD0G5Z7mOH3CRqS0CClR_XImQ,558
|
|
20
21
|
layrz_sdk/entities/charts/html.py,sha256=3oSHeZv82uuc0sfRU6LhyFrPPt0FJYOnj6hcluUM-Gk,995
|
|
21
|
-
layrz_sdk/entities/charts/line.py,sha256=
|
|
22
|
-
layrz_sdk/entities/charts/map.py,sha256=
|
|
23
|
-
layrz_sdk/entities/charts/number.py,sha256=
|
|
24
|
-
layrz_sdk/entities/charts/pie.py,sha256=
|
|
22
|
+
layrz_sdk/entities/charts/line.py,sha256=3Phi5M1zBLWHtxnO4cuH-4MrZffFVGv7Li4QU6kOI3w,8218
|
|
23
|
+
layrz_sdk/entities/charts/map.py,sha256=1gK3GK4uUIFPZUpDDSVv-JEzyHWZ5r7aION5ijXEsO4,4357
|
|
24
|
+
layrz_sdk/entities/charts/number.py,sha256=DIV9VMF3-dYCaQy5Aa_5CDJ7kiUPrpSqZveLp9r-8QY,1118
|
|
25
|
+
layrz_sdk/entities/charts/pie.py,sha256=HiGU0pJoMzmzq0hUxMlvDSI6TgHcKRQwLzNNqI_NE4U,3886
|
|
25
26
|
layrz_sdk/entities/charts/radar.py,sha256=VfDyElzZA6k2vEUXrst_N44RcJPo9cGzE-k2e04BmXo,3155
|
|
26
|
-
layrz_sdk/entities/charts/radial_bar.py,sha256=
|
|
27
|
-
layrz_sdk/entities/charts/render_technology.py,sha256=
|
|
28
|
-
layrz_sdk/entities/charts/scatter.py,sha256=
|
|
29
|
-
layrz_sdk/entities/charts/serie.py,sha256=
|
|
27
|
+
layrz_sdk/entities/charts/radial_bar.py,sha256=Acz6hEkcVgQN5LMzTNlcMgK5dCOdTihCyPLJcqvCK2Q,3931
|
|
28
|
+
layrz_sdk/entities/charts/render_technology.py,sha256=clTfK7DrVaNvi8pOGZPaSZtxSwZSW7e1Ygq2WXMHuCs,606
|
|
29
|
+
layrz_sdk/entities/charts/scatter.py,sha256=oo3q_P_D4MMK2Cr24OqmmWPPXEr-NHHxMhqpoGCsY8U,7586
|
|
30
|
+
layrz_sdk/entities/charts/serie.py,sha256=ybssAEZE_XhK1yUArEgkGuUKCvsg_fVrHA0otzJYwes,1509
|
|
30
31
|
layrz_sdk/entities/charts/serie_type.py,sha256=cHV06B2pDEt5-5vBcGlJFxg9Srg5CoE5UkiyKmWhb6c,463
|
|
31
|
-
layrz_sdk/entities/charts/table.py,sha256=
|
|
32
|
+
layrz_sdk/entities/charts/table.py,sha256=kMS4tAkS91cQPyZsBgeljvs6HAwIZ0EHUJoRw8G7lKw,1651
|
|
32
33
|
layrz_sdk/entities/charts/timeline.py,sha256=7CQxzqM5l-qCufLsUisS-tJSvnCpbIAzwgAOPIUjGbw,3985
|
|
33
34
|
layrz_sdk/entities/checkpoints/__init__.py,sha256=Bn_L1GbWcWUuBDpSVHKDqpjGYeIWDbPNI-_OnD-jrJQ,126
|
|
34
35
|
layrz_sdk/entities/checkpoints/checkpoint.py,sha256=e9Bhnc4oQfeiMgXY77YuO_i-kEvzSIMBwQAx2xc0SqI,1040
|
|
@@ -61,8 +62,8 @@ layrz_sdk/helpers/__init__.py,sha256=v3WbYVr9ygyDtxEIi59kGVXuirNswhhkG4BQv5iESRo
|
|
|
61
62
|
layrz_sdk/helpers/color.py,sha256=BoC61kyGrdplz4qB-MA9xpyEOKuiV7dPYhmAba-rk1M,1102
|
|
62
63
|
layrz_sdk/lcl/__init__.py,sha256=nmfOnbot49pvfR8xyqvs0tg7ZwzxunhWJbwA805w20M,67
|
|
63
64
|
layrz_sdk/lcl/core.py,sha256=OVy4LCDlX9d3GsP1hzZkurqAsBSEx-Q5A15Mb7J67Qs,22987
|
|
64
|
-
layrz_sdk-3.0.
|
|
65
|
-
layrz_sdk-3.0.
|
|
66
|
-
layrz_sdk-3.0.
|
|
67
|
-
layrz_sdk-3.0.
|
|
68
|
-
layrz_sdk-3.0.
|
|
65
|
+
layrz_sdk-3.0.6.dist-info/LICENSE,sha256=d5ZrU--lIPER7QByXDKcrtOTOMk1JvN_9FdYDuoWi7Y,1057
|
|
66
|
+
layrz_sdk-3.0.6.dist-info/METADATA,sha256=VhoVVbMzs6-xpOKVYtUifGqEasFNrOQUBqI1D4fNdrs,1458
|
|
67
|
+
layrz_sdk-3.0.6.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
|
68
|
+
layrz_sdk-3.0.6.dist-info/top_level.txt,sha256=yUTMMzfdZ0HDWQH5TaSlFM4xtwmP1fSGxmlL1dmu4l4,10
|
|
69
|
+
layrz_sdk-3.0.6.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|