Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
jobily
Nightingale
提交
aa4e6b7f
N
Nightingale
项目概览
jobily
/
Nightingale
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
N
Nightingale
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
aa4e6b7f
编写于
7月 06, 2021
作者:
7
710leo
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat: dashboards import and export
上级
6440645c
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
103 addition
and
0 deletion
+103
-0
http/router.go
http/router.go
+2
-0
http/router_dashboard.go
http/router_dashboard.go
+90
-0
models/dashboard.go
models/dashboard.go
+11
-0
未找到文件。
http/router.go
浏览文件 @
aa4e6b7f
...
...
@@ -101,6 +101,8 @@ func configRoutes(r *gin.Engine) {
pages
.
GET
(
"/dashboards"
,
login
(),
dashboardGets
)
pages
.
POST
(
"/dashboards"
,
login
(),
dashboardAdd
)
pages
.
POST
(
"/dashboards-clone"
,
login
(),
dashboardClone
)
pages
.
POST
(
"/dashboards/import"
,
login
(),
dashboardImport
)
pages
.
POST
(
"/dashboards/export"
,
login
(),
dashboardExport
)
pages
.
GET
(
"/dashboard/:id"
,
login
(),
dashboardGet
)
pages
.
PUT
(
"/dashboard/:id"
,
login
(),
dashboardPut
)
pages
.
DELETE
(
"/dashboard/:id"
,
login
(),
dashboardDel
)
...
...
http/router_dashboard.go
浏览文件 @
aa4e6b7f
...
...
@@ -152,3 +152,93 @@ func dashboardFavoriteDel(c *gin.Context) {
d
:=
Dashboard
(
urlParamInt64
(
c
,
"id"
))
renderMessage
(
c
,
models
.
DashboardFavoriteDel
(
d
.
Id
,
me
.
Id
))
}
type
ChartGroupDetail
struct
{
Id
int64
`json:"id"`
DashboardId
int64
`json:"dashboard_id"`
Name
string
`json:"name"`
Weight
int
`json:"weight"`
Charts
[]
models
.
Chart
`json:"charts"`
}
type
DashboardDetail
struct
{
Id
int64
`json:"id"`
Name
string
`json:"name"`
Tags
string
`json:"tags"`
Configs
string
`json:"configs"`
ChartGroups
[]
ChartGroupDetail
`json:"chart_groups"`
}
func
dashboardExport
(
c
*
gin
.
Context
)
{
var
f
idsForm
bind
(
c
,
&
f
)
dashboards
,
err
:=
models
.
DashboardGetsByIds
(
f
.
Ids
)
dangerous
(
err
)
var
details
[]
DashboardDetail
for
_
,
databoard
:=
range
dashboards
{
detail
:=
DashboardDetail
{
Name
:
databoard
.
Name
,
Tags
:
databoard
.
Tags
,
Configs
:
databoard
.
Configs
,
}
chartGroups
,
err
:=
models
.
ChartGroupGets
(
databoard
.
Id
)
dangerous
(
err
)
var
chartGroupsDetail
[]
ChartGroupDetail
for
_
,
chartGroup
:=
range
chartGroups
{
chartGroupDetail
:=
ChartGroupDetail
{
Name
:
chartGroup
.
Name
,
Weight
:
chartGroup
.
Weight
,
}
charts
,
err
:=
models
.
ChartGets
(
chartGroup
.
Id
)
dangerous
(
err
)
chartGroupDetail
.
Charts
=
charts
chartGroupsDetail
=
append
(
chartGroupsDetail
,
chartGroupDetail
)
}
detail
.
ChartGroups
=
chartGroupsDetail
details
=
append
(
details
,
detail
)
}
renderData
(
c
,
details
,
nil
)
}
func
dashboardImport
(
c
*
gin
.
Context
)
{
var
details
[]
DashboardDetail
bind
(
c
,
&
details
)
me
:=
loginUser
(
c
)
.
MustPerm
(
"dashboard_create"
)
for
_
,
detail
:=
range
details
{
d
:=
&
models
.
Dashboard
{
Name
:
detail
.
Name
,
Tags
:
detail
.
Tags
,
Configs
:
detail
.
Configs
,
CreateBy
:
me
.
Username
,
UpdateBy
:
me
.
Username
,
}
dangerous
(
d
.
AddOnly
())
for
_
,
chartGroup
:=
range
detail
.
ChartGroups
{
cg
:=
models
.
ChartGroup
{
DashboardId
:
d
.
Id
,
Name
:
chartGroup
.
Name
,
Weight
:
chartGroup
.
Weight
,
}
dangerous
(
cg
.
Add
())
for
_
,
chart
:=
range
chartGroup
.
Charts
{
c
:=
models
.
Chart
{
GroupId
:
cg
.
Id
,
Configs
:
chart
.
Configs
,
Weight
:
chart
.
Weight
,
}
dangerous
(
c
.
Add
())
}
}
}
renderMessage
(
c
,
nil
)
}
models/dashboard.go
浏览文件 @
aa4e6b7f
...
...
@@ -178,6 +178,17 @@ func DashboardGets(onlyfavorite bool, ids []int64, query string, limit, offset i
return
objs
,
nil
}
func
DashboardGetsByIds
(
ids
[]
int64
)
([]
*
Dashboard
,
error
)
{
var
objs
[]
*
Dashboard
err
:=
DB
.
In
(
"id"
,
ids
)
.
Find
(
&
objs
)
if
err
!=
nil
{
logger
.
Errorf
(
"mysql.error: query dashboards(%v) fail: %v"
,
ids
,
err
)
return
nil
,
internalServerError
}
return
objs
,
nil
}
func
DashboardGet
(
where
string
,
args
...
interface
{})
(
*
Dashboard
,
error
)
{
var
obj
Dashboard
has
,
err
:=
DB
.
Where
(
where
,
args
...
)
.
Get
(
&
obj
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录