chart.api 8.7 KB

syntax = "v1"

info(
    title: "天联字库图表模板"
    desc: "图表模板"
    author: "小火箭"
    email: "email"
    version: "v1"
)

@server(
    prefix: v1
    group: chart
    jwt: JwtAuth
    //middleware: Authority
)
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
)
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 struct{
		Chart ChartItem `json:"chart"`
    }

	ChartSaveRequest struct{
        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 struct{
        Chart ChartItem `json:"chart"`
    }

    ChartSaveAsRequest struct{
        ChartId int64 `json:"chartId"` // 图表Id
        Name string `json:"name"`// 名称
    }
    ChartSaveAsResponse struct{
        Chart ChartItem `json:"chart"`
    }

	ChartDeleteRequest struct{
        Id int64 `path:"id"`
    }
    ChartDeleteResponse struct{}

	ChartUpdateRequest struct{
		Id int64 `path:"id"`
        Cover        string       `json:"cover,optional"`  // 封面
        ChartProperty ChartProperty `json:"property"` // 图表属性
    }
    ChartUpdateResponse struct{}

    ChartSearchRequest struct {
        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 struct{
        Id int64 `json:"id"`
        Pid  int64 `json:"pid"`
        Index int `json:"index"` // 元素下标
    }
    ChartUpdateSortResponse struct{}
    ChartRenameRequest struct{
        Id int64 `json:"id"`
        Name string `json:"name"`// 名称
    }
    ChartRenameResponse struct{}
	ChartItem struct{
        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"` // 图表类型
        ChartProperty *ChartProperty `json:"property,optional,omitempty"` //属性
	}
    LoadChartDataRequest struct{
        ChartId int64 `json:"chartId"`
    }
    LoadChartDataResponse struct{

    }
)

type(
    ChartComponentSearchRequest{
        Name string `json:"name,optional"`
    }
    ChartComponentSearchResponse{
        List []ChartComponentItem  `json:"list"`
        Total int64 `json:"total"`
    }
    ChartComponentItem struct{
        Name string `json:"name,optional"`// 名称
        Code string `json:"code,optional"`// 编码
        Cover string `json:"cover,optional"` // 封面
        Desc string `json:"desc,optional"`// 描述
    }
)

type(
    ChartProperty struct {
        Title        Title        `json:"title,optional"`  // 标题
        TableAbility TableAbility `json:"table,optional"`  // 表筛选功能
        Series       []Series     `json:"series,optional"` // 系列(数据源)
        Other        Other        `json:"other,optional"`  // 其他额外配置
    }
    Other struct {
        Quarter *Quarter `json:"quarter,optional,omitempty"` // 四分图
    }
    Quarter struct {
        XAxisLabel       string          `json:"xAxisLabel"`       // x轴标签名
        XAxisFirstLabel  string          `json:"xAxisFirstLabel"`  // 签名1
        XAxisSecondLabel string          `json:"xAxisSecondLabel"` // 签名2
        YAxisLabel       string          `json:"yAxisLabel"`       // y轴标签名
        YAxisFirstLabel  string          `json:"yAxisFirstLabel"`  // y标签1
        YAxisSecondLabel string          `json:"yAxisSecondLabel"` // y标签2
        Area             string          `json:"area"`             // 图形面积
        AreaColor        bool            `json:"areaColor"` // 颜色
        SeriesList       []QuarterSeries `json:"seriesList"`       // 图形系列
    }
    QuarterSeries struct {
        SeriesValue string `json:"seriesValue"`
    }
    Title struct {
        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 struct {
        FilterSwitch  bool     `json:"filterSwitch,optional"`  // 表筛选功能开关
        DimensionList []Dimension `json:"dimensionList,optional"` // 维度列表
    }
    Series struct {// 图表类型 (记录型表格: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 struct {
        Operator     string `json:"operator"` // 操作符号 <,>,==,<>,<=,>=
        CompareValue string `json:"compareValue"`                       // 比较值
        ToValue      string `json:"toValue"`                            // 显示值(转为)
    }
    Dimension struct{
        Name string `json:"name,optional,omitempty"`
        Value string `json:"dimensionVal,optional"`
    }
)