chart.api
12.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
syntax = "v1"
info(
title: "天联字库图表模板"
desc: "图表模板"
author: "小火箭"
email: "email"
version: "v1"
)
@server(
prefix: v1
group: chart
jwt: JwtAuth
middleware: LoginStatusCheck,LogRequest
)
service Core {
@doc "保存图表"
@handler saveChart
post /chart (ChartSaveRequest) returns (ChartSaveResponse)
@doc "图表另存为"
@handler saveAsChart
post /chart/saveas (ChartSaveAsRequest) returns (ChartSaveAsResponse)
@doc "删除图表"
@handler deleteChart
delete /chart/:id (ChartDeleteRequest) returns (ChartDeleteResponse)
@doc "更新图表(配置)"
@handler updateChart
put /chart/:id (ChartUpdateRequest) returns (ChartUpdateResponse)
@doc "搜索图表"
@handler searchChart
post /chart/search (ChartSearchRequest) returns (ChartSearchResponse)
@doc "移动图表"
@handler updateChartSort
post /chart/move (ChartUpdateSortRequest) returns (ChartUpdateSortResponse)
@doc "重命名图表"
@handler renameChartSort
post /chart/rename (ChartRenameRequest) returns (ChartRenameResponse)
@doc "搜索图表组件"
@handler searchChartComponents
post /chart/components/search(ChartComponentSearchRequest)returns(ChartComponentSearchResponse)
}
@server(
prefix: v1
group: chart
middleware: LogRequest
)
service Core {
@doc "加载图表数据"
@handler loadChartData
post /chart/load-data (LoadChartDataRequest) returns (LoadChartDataResponse)
@doc "获取图表详情"
@handler getChart
get /chart/:id (ChartGetRequest) returns (ChartGetResponse)
}
type (
ChartGetRequest {
Id int64 `path:"id"`
}
ChartGetResponse {
Chart ChartItem `json:"chart"`
}
ChartSaveRequest {
Pid int64 `json:"pid,optional"` // 父级ID
Type string `json:"type"` // 类型 report:报表 group:分组 chart:图表
Name string `json:"name,optional"` // 名称
ChartType string `json:"chartType"` // 图表类型
Cover string `json:"cover,optional"` // 封面
ChartProperty ChartProperty `json:"property"` // 图表属性
}
ChartSaveResponse {
Chart ChartItem `json:"chart"`
}
ChartSaveAsRequest {
ChartId int64 `json:"chartId"` // 图表Id
Name string `json:"name"` // 名称
}
ChartSaveAsResponse {
Chart ChartItem `json:"chart"`
}
ChartDeleteRequest {
Id int64 `path:"id"`
}
ChartDeleteResponse struct{}
ChartUpdateRequest {
Id int64 `path:"id"`
Cover string `json:"cover,optional"` // 封面
ChartProperty ChartProperty `json:"property"` // 图表属性
}
ChartUpdateResponse struct{}
ChartSearchRequest {
IncludeTypes []string `json:"includeTypes,optional"` //包含的类型: 类型 report:报表 group:分组 chart:图表(未指定返回所有)
DataStyle string `json:"dataStyle,optional"` // 数据样式 tree:树形 flat:平铺
}
ChartSearchResponse {
List []ChartItem `json:"list"`
Total int64 `json:"total"`
}
ChartUpdateSortRequest {
Id int64 `json:"id"`
Pid int64 `json:"pid"`
Index int `json:"index"` // 元素下标
}
ChartUpdateSortResponse struct{}
ChartRenameRequest {
Id int64 `json:"id"`
Name string `json:"name"` // 名称
}
ChartRenameResponse struct{}
ChartItem {
Id int64 `json:"id,optional"` // ID
Pid int64 `json:"pid,optional"` // 父级ID
Type string `json:"type,optional"` // 类型 report:报表 group:分组 chart:图表
Sort int64 `json:"sort,optional"` // 排序
Name string `json:"name,optional"` // 名称
Cover string `json:"cover,optional"` // 封面
ChartType string `json:"chartType,optional"` // 图表类型
UpdatedAt int `json:"updatedAt,optional"` // 更新时间
ChartProperty *ChartProperty `json:"property,optional,omitempty"` //属性
}
LoadChartDataRequest {
ChartId int64 `json:"chartId"`
}
LoadChartDataResponse {
}
)
type (
ChartComponentSearchRequest {
Name string `json:"name,optional"`
}
ChartComponentSearchResponse {
List []ChartComponentItem `json:"list"`
Total int64 `json:"total"`
}
ChartComponentItem {
Name string `json:"name,optional"` // 名称
Code string `json:"code,optional"` // 编码
Cover string `json:"cover,optional"` // 封面
Desc string `json:"desc,optional"` // 描述
}
)
type (
ChartProperty {
Title Title `json:"title,optional"` // 标题
TableAbility TableAbility `json:"table,optional"` // 表筛选功能
Series []Series `json:"series,optional"` // 系列(数据源)
Other Other `json:"other,optional"` // 其他额外配置
}
Other {
Quarter *Quarter `json:"quarter,optional,omitempty"` // 四分图
Divider *Divider `json:"divider,optional,omitempty"` // 分割线
Rank *Rank `json:"rank,optional,omitempty"` // 排名图
Deviation *Deviation `json:"deviation,optional,omitempty"` // 偏差图
Notepaper *Notepaper `json:"notepaper,optional,omitempty"` // 便签(富文本)
}
Quarter {
XAxisLabel string `json:"xAxisLabel"` // x轴标签名
XAxisFirstLabel string `json:"xAxisFirstLabel"` // 签名1
XAxisSecondLabel string `json:"xAxisSecondLabel"` // 签名2
XAxisFirstColor string `json:"xAxisFirstColor,optional,omitempty"` // x轴标签1默认颜色
XAxisSecondColor string `json:"xAxisSecondColor,optional,omitempty"` // x轴标签2默认颜色
YAxisLabel string `json:"yAxisLabel"` // y轴标签名
YAxisFirstLabel string `json:"yAxisFirstLabel"` // y标签1
YAxisSecondLabel string `json:"yAxisSecondLabel"` // y标签2
YAxisFirstColor string `json:"yAxisFirstColor,optional,omitempty"` // y轴标签1默认颜色
YAxisSecondColor string `json:"yAxisSecondColor,optional,omitempty"` // y轴标签2默认颜色
Area string `json:"area"` // 图形面积
AreaColor bool `json:"areaColor"` // 颜色
SeriesList []QuarterSeries `json:"seriesList"` // 图形系列
TableSwitch bool `json:"tableSwitch"` // 是否展示记录型表格
}
QuarterSeries {
SeriesValue string `json:"seriesValue"`
}
Divider {
SelectedIdx string `json:"selectedIdx,optional,omitempty"` // 选择的分割线样式
TextSwitch bool `json:"textSwitch,optional,omitempty"` // 是否展示组件文本
Text string `json:"text"` // 组件文本内容
}
Rank {
FirstLine []RankLine `json:"firstLine,optional,omitempty"` // 第一名设置
SecondLine []RankLine `json:"secondLine,optional,omitempty"` // 第二名设置
SortBySwitch bool `json:"sortBySwitch,optional,omitempty"` // 排序开关
SortBySeries string `json:"sortBySeries,optional,omitempty"` // 排序依据
SortByArrow string `json:"sortByArrow,optional,omitempty"` // 排序方向 1-降序 2-升序
}
RankLine {
SeriesValue string `json:"seriesValue"` // 排名图序列值
LabelSwitch bool `json:"labelSwitch"` // 标签开关
Label string `json:"label"` // 标签
ArrowSwitch bool `json:"arrowSwitch"` // 箭头开关
Unit string `json:"unit"` // 单位
}
Title {
TitleSwitch bool `json:"titleSwitch,optional"` // 组件标题开关
IntroduceSwitch bool `json:"introduceSwitch,optional"` // 组件说明开关
TitleType string `json:"titleType"` // 标题类型
Heading string `json:"heading,optional"` // 主标题
SubTitle string `json:"subTitle,optional"` // 副标题
ExplainType string `json:"explainType,optional,options=[text,,file]"` // text file ,options=text||file
ExplainTxt string `json:"explainTxt,optional"` // 文字说明
FileName string `json:"fileName,optional"` // 文件名
FileUrl string `json:"fileUrl,optional"` // 组件图片/视频
Align string `json:"align,optional"` // 废弃 文本对齐方式 left center right
HeadingAlign string `json:"headingAlign,optional"` // 主标题 文本对齐方式 left center right
SubAlign string `json:"subAlign,optional"` // 副标题 文本对齐方式 left center right
}
TableAbility {
FilterSwitch bool `json:"filterSwitch,optional"` // 表筛选功能开关
DimensionList []Dimension `json:"dimensionList,optional"` // 维度列表
CardSwitch bool `json:"cardSwitch,optional"` // 顺序标识开关
CardIdent string `json:"cardIdent,optional"` // 顺序标识
CardOrderList []CardOrderItem `json:"cardOrderList,optional"` // 卡片列表顺序
}
CardOrderItem {
CardId string `json:"cardId,optional"`
}
Series { // 图表类型 (记录型表格:RecordTable-1 总体指标:MetricsCard-1 容器卡片:ContainerCard-1 四分图:QuarterChart-1)
Name string `json:"name"` // 名称 (例如 指标1、指标2)
SourceFrom string `json:"from,options=[ByteBank,User]"` // 数据源类型 ByteBank:字库 User:用户自定义
DataSourceId int64 `json:"dataSourceId,optional,omitempty"` // 数据源ID(from值为ByteBank时有值)
CustomText string `json:"customText,optional,omitempty"` // 自定义数据文本(from值为User时有值)
MatchExpressions []Expression `json:"matchExpressions,optional,omitempty"` // 条件匹配表达式(总体指标)
TargetText string `json:"targetText,optional,omitempty"` // 指标名文本
TargetNum string `json:"targetNum,optional,omitempty"` // 指标数值
TargetUnit string `json:"targetUnit,optional,omitempty"` // 指标单位
}
Expression {
Operator string `json:"operator"` // 操作符号 <,>,==,<>,<=,>=
CompareValue string `json:"compareValue"` // 比较值
ToValue string `json:"toValue"` // 显示值(转为)
}
Dimension {
Name string `json:"name,optional,omitempty"`
Value string `json:"dimensionVal,optional"`
}
)
type (
Deviation struct {
XAxisLabel string `json:"xAxisLabel,optional,omitempty"` // 分类标签
TopChart TopChart `json:"topChart,optional,omitempty"`
MidChart MidChart `json:"midChart,optional,omitempty"`
BotChart []BotChart `json:"botChart,optional,omitempty"`
}
Notepaper struct {
Text string `json:"text,optional,omitempty"` // 富文本内容
Theme string `json:"theme,optional,omitempty"` // 主题风格
}
TopChart struct {
SeriesValue string `json:"seriesValue,optional,omitempty"` // 系列
Legend string `json:"legend,optional,omitempty"` // 图例
FormatType string `json:"formatType,optional,omitempty"` //
FormatPoint string `json:"formatPoint,optional,omitempty"` //
}
MidChart struct {
SeriesValue string `json:"seriesValue,optional,omitempty"` // 系列
Legend string `json:"legend,optional,omitempty"` // 图例
FormatType string `json:"formatType,optional,omitempty"` //
FormatPoint string `json:"formatPoint,optional,omitempty"` //
}
BotChart struct {
SeriesSwitch bool `json:"seriesSwitch,optional,omitempty"` // 是否显示
Type string `json:"type,optional,omitempty"` // 图表类型
SeriesValue string `json:"seriesValue,optional,omitempty"` // 系列
Legend string `json:"legend,optional,omitempty"` // 图例
FormatType string `json:"formatType,optional,omitempty"` //
FormatPoint string `json:"formatPoint,optional,omitempty"` //
}
)