Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
爱吃血肠
incubator-dubbo-admin
提交
0eca2b0c
I
incubator-dubbo-admin
项目概览
爱吃血肠
/
incubator-dubbo-admin
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
I
incubator-dubbo-admin
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
0eca2b0c
编写于
2月 23, 2019
作者:
N
nzomkxia
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix serviceTest info missing #313
上级
b7971452
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
121 addition
and
40 deletion
+121
-40
dubbo-admin-server/src/main/java/org/apache/dubbo/admin/controller/ServiceController.java
.../org/apache/dubbo/admin/controller/ServiceController.java
+14
-4
dubbo-admin-ui/src/components/ServiceSearch.vue
dubbo-admin-ui/src/components/ServiceSearch.vue
+10
-3
dubbo-admin-ui/src/components/test/ServiceTest.vue
dubbo-admin-ui/src/components/test/ServiceTest.vue
+97
-33
未找到文件。
dubbo-admin-server/src/main/java/org/apache/dubbo/admin/controller/ServiceController.java
浏览文件 @
0eca2b0c
...
...
@@ -63,18 +63,28 @@ public class ServiceController {
@RequestMapping
(
value
=
"/service/{service}"
,
method
=
RequestMethod
.
GET
)
public
ServiceDetailDTO
serviceDetail
(
@PathVariable
String
service
,
@PathVariable
String
env
)
{
service
=
service
.
replace
(
Constants
.
ANY_VALUE
,
Constants
.
PATH_SEPARATOR
);
String
group
=
null
;
String
version
=
null
;
String
interfaze
=
service
;
int
i
=
interfaze
.
indexOf
(
"/"
);
if
(
i
>=
0
)
{
group
=
interfaze
.
substring
(
0
,
i
);
interfaze
=
interfaze
.
substring
(
i
+
1
);
}
i
=
interfaze
.
lastIndexOf
(
":"
);
if
(
i
>=
0
)
{
version
=
interfaze
.
substring
(
i
+
1
);
interfaze
=
interfaze
.
substring
(
0
,
i
);
}
List
<
Provider
>
providers
=
providerService
.
findByService
(
service
);
List
<
Consumer
>
consumers
=
consumerService
.
findByService
(
service
);
Map
<
String
,
String
>
info
=
ConvertUtil
.
serviceName2Map
(
service
);
String
application
=
null
;
if
(
providers
!=
null
&&
providers
.
size
()
>
0
)
{
application
=
providers
.
get
(
0
).
getApplication
();
}
MetadataIdentifier
identifier
=
new
MetadataIdentifier
(
info
.
get
(
Constants
.
INTERFACE_KEY
),
info
.
get
(
Constants
.
VERSION_KEY
),
info
.
get
(
Constants
.
GROUP_KEY
),
Constants
.
PROVIDER_SIDE
,
application
);
MetadataIdentifier
identifier
=
new
MetadataIdentifier
(
interfaze
,
version
,
group
,
Constants
.
PROVIDER_SIDE
,
application
);
String
metadata
=
providerService
.
getProviderMetaData
(
identifier
);
ServiceDetailDTO
serviceDetailDTO
=
new
ServiceDetailDTO
();
serviceDetailDTO
.
setConsumers
(
consumers
);
...
...
dubbo-admin-ui/src/components/ServiceSearch.vue
浏览文件 @
0eca2b0c
...
...
@@ -91,7 +91,7 @@
small
class=
"tiny"
outline
@
click=
"toTestService(props.item)"
:href=
'toTestService(props.item)'
>
{{
$t
(
'
test
'
)
}}
</v-btn>
...
...
@@ -286,8 +286,15 @@
})
},
toTestService
(
item
)
{
const
service
=
item
.
service
this
.
$router
.
push
(
`/test/?service=
${
service
}
`
)
let
base
=
'
#/test
'
let
query
=
'
?service=
'
+
item
.
service
if
(
item
.
group
)
{
query
=
query
+
'
&group=
'
+
item
.
group
}
if
(
item
.
version
)
{
query
=
query
+
'
&version=
'
+
item
.
version
}
return
base
+
query
}
},
mounted
:
function
()
{
...
...
dubbo-admin-ui/src/components/test/ServiceTest.vue
浏览文件 @
0eca2b0c
...
...
@@ -20,23 +20,54 @@
<v-flex
lg12
>
<breadcrumb
title=
"serviceTest"
:items=
"breads"
></breadcrumb>
</v-flex>
<v-flex
xs12
>
<v-autocomplete
flat
hide-no-data
v-model=
"service"
:loading=
"loading"
:search-input.sync=
"filter"
:hint=
"$t('testModule.searchServiceHint')"
:items=
"services"
item-value=
"service"
item-text=
"service"
:label=
"$t('placeholders.searchService')"
persistent-hint
@
keyup.enter=
"search"
clearable
></v-autocomplete>
</v-flex>
<v-layout
row
wrap
>
<v-flex
lg12
>
<v-card
flat
color=
"transparent"
>
<v-card-text>
<v-form>
<v-layout
row
wrap
>
<v-combobox
id=
"serviceTestSearch"
:loading=
"searchLoading"
:items=
"typeAhead"
:search-input.sync=
"input"
v-model=
"filter"
flat
append-icon=
""
hide-no-data
:hint=
"$t('testModule.searchServiceHint')"
:label=
"$t('placeholders.searchService')"
@
keyup.enter=
"submit"
></v-combobox>
<v-btn
@
click=
"submit"
color=
"primary"
large
>
{{
$t
(
'
search
'
)
}}
</v-btn>
</v-layout>
</v-form>
</v-card-text>
</v-card>
</v-flex>
</v-layout>
<!--
<v-flex
xs12
>
-->
<!--
<search
v-model=
"filter"
:label=
"$t('placeholders.searchService')"
--
>
<!--:hint="$t('testModule.searchServiceHint')"-->
<!--:submit="search">
</search>
-->
<!--
</v-flex>
-->
<!--
<v-flex
xs12
>
-->
<!--
<v-autocomplete-->
<!--flat-->
<!--hide-no-data-->
<!--v-model="service"-->
<!--:loading="loading"-->
<!--:search-input.sync="filter"-->
<!--:hint="$t('testModule.searchServiceHint')"-->
<!--:items="services"-->
<!--item-value="service"-->
<!--item-text="service"-->
<!--:label="$t('placeholders.searchService')"-->
<!--persistent-hint-->
<!--@keyup.enter="search"-->
<!--clearable-->
<!-->
</v-autocomplete>
-->
<!--
</v-flex>
-->
<v-flex
xs12
>
<h3>
{{
$t
(
'
methods
'
)
}}
</h3>
</v-flex>
...
...
@@ -78,7 +109,11 @@
},
data
()
{
return
{
filter
:
this
.
$route
.
query
[
'
service
'
]
||
''
,
typeAhead
:
[],
input
:
null
,
searchLoading
:
false
,
timerID
:
null
,
filter
:
''
,
breads
:
[
{
text
:
'
serviceSearch
'
,
...
...
@@ -90,11 +125,36 @@
service
:
null
,
methods
:
[],
services
:
[],
searchKey
:
this
.
$route
.
query
[
'
service
'
]
||
'
*
'
,
loading
:
false
}
},
methods
:
{
querySelections
(
v
)
{
if
(
this
.
timerID
)
{
clearTimeout
(
this
.
timerID
)
}
// Simulated ajax query
this
.
timerID
=
setTimeout
(()
=>
{
if
(
v
&&
v
.
length
>=
4
)
{
this
.
searchLoading
=
true
this
.
typeAhead
=
this
.
$store
.
getters
.
getServiceItems
(
v
)
this
.
searchLoading
=
false
this
.
timerID
=
null
}
else
{
this
.
typeAhead
=
[]
}
},
500
)
},
submit
()
{
this
.
filter
=
document
.
querySelector
(
'
#serviceTestSearch
'
).
value
.
trim
()
if
(
this
.
filter
)
{
let
filter
=
this
.
filter
.
replace
(
'
/
'
,
'
*
'
)
this
.
search
(
filter
)
}
else
{
return
false
}
},
setHeaders
:
function
()
{
this
.
headers
=
[
{
...
...
@@ -119,14 +179,11 @@
}
]
},
search
()
{
if
(
!
this
.
filter
)
{
search
(
filter
)
{
if
(
!
filter
)
{
return
}
this
.
$router
.
replace
({
query
:
{
service
:
this
.
filter
}
})
this
.
$axios
.
get
(
'
/service/
'
+
this
.
filter
).
then
(
response
=>
{
this
.
$axios
.
get
(
'
/service/
'
+
filter
).
then
(
response
=>
{
this
.
service
=
response
.
data
this
.
methods
=
[]
if
(
this
.
service
.
metadata
)
{
...
...
@@ -185,18 +242,25 @@
}
},
watch
:
{
input
(
val
)
{
this
.
querySelections
(
val
)
},
area
()
{
this
.
setHeaders
()
},
filter
()
{
this
.
searchServices
()
},
searchKey
()
{
this
.
search
()
}
},
created
()
{
this
.
search
()
mounted
()
{
this
.
$store
.
dispatch
(
'
loadServiceItems
'
)
let
query
=
this
.
$route
.
query
this
.
filter
=
query
[
'
service
'
]
if
(
'
group
'
in
query
)
{
this
.
filter
=
query
[
'
group
'
]
+
'
/
'
+
this
.
filter
}
if
(
'
version
'
in
query
)
{
this
.
filter
=
this
.
filter
+
'
:
'
+
query
[
'
version
'
]
}
this
.
search
(
this
.
filter
.
replace
(
'
/
'
,
'
*
'
))
}
}
</
script
>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录