Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
梦中观雨
cat
提交
95cf2b20
C
cat
项目概览
梦中观雨
/
cat
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
cat
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
95cf2b20
编写于
7月 16, 2014
作者:
J
jialinsun
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
app linechart
上级
4a0609ae
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
229 addition
and
104 deletion
+229
-104
cat-core/src/main/java/com/dianping/cat/build/ComponentsConfigurator.java
...n/java/com/dianping/cat/build/ComponentsConfigurator.java
+7
-3
cat-core/src/main/java/com/dianping/cat/config/app/AppConfigManager.java
...in/java/com/dianping/cat/config/app/AppConfigManager.java
+5
-5
cat-core/src/main/java/com/dianping/cat/config/app/AppDataService.java
...main/java/com/dianping/cat/config/app/AppDataService.java
+127
-78
cat-core/src/main/resources/META-INF/plexus/components.xml
cat-core/src/main/resources/META-INF/plexus/components.xml
+12
-0
cat-home/src/main/java/com/dianping/cat/report/chart/AbstractGraphCreator.java
...a/com/dianping/cat/report/chart/AbstractGraphCreator.java
+1
-1
cat-home/src/main/java/com/dianping/cat/report/page/app/Handler.java
...c/main/java/com/dianping/cat/report/page/app/Handler.java
+10
-9
cat-home/src/main/java/com/dianping/cat/report/page/app/graph/AppGraphCreator.java
...m/dianping/cat/report/page/app/graph/AppGraphCreator.java
+48
-2
cat-home/src/main/webapp/jsp/report/app.jsp
cat-home/src/main/webapp/jsp/report/app.jsp
+19
-6
未找到文件。
cat-core/src/main/java/com/dianping/cat/build/ComponentsConfigurator.java
浏览文件 @
95cf2b20
...
...
@@ -12,10 +12,12 @@ import com.dianping.cat.DomainManager;
import
com.dianping.cat.ServerConfigManager
;
import
com.dianping.cat.analysis.DefaultMessageAnalyzerManager
;
import
com.dianping.cat.analysis.MessageAnalyzerManager
;
import
com.dianping.cat.app.AppDataCommandDao
;
import
com.dianping.cat.config.aggregation.AggregationConfigManager
;
import
com.dianping.cat.config.aggregation.AggregationHandler
;
import
com.dianping.cat.config.aggregation.DefaultAggregationHandler
;
import
com.dianping.cat.config.app.AppConfigManager
;
import
com.dianping.cat.config.app.AppDataService
;
import
com.dianping.cat.config.url.DefaultUrlPatternHandler
;
import
com.dianping.cat.config.url.UrlPatternConfigManager
;
import
com.dianping.cat.config.url.UrlPatternHandler
;
...
...
@@ -61,8 +63,10 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
all
.
add
(
C
(
AggregationHandler
.
class
,
DefaultAggregationHandler
.
class
));
all
.
add
(
C
(
AggregationConfigManager
.
class
).
req
(
AggregationHandler
.
class
,
ConfigDao
.
class
));
all
.
add
(
C
(
AppConfigManager
.
class
).
req
(
ConfigDao
.
class
));
all
.
add
(
C
(
AppConfigManager
.
class
).
req
(
ConfigDao
.
class
));
all
.
add
(
C
(
AppDataService
.
class
).
req
(
AppConfigManager
.
class
,
AppDataCommandDao
.
class
));
all
.
add
(
C
(
UrlPatternHandler
.
class
,
DefaultUrlPatternHandler
.
class
));
...
...
@@ -75,7 +79,7 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
.
req
(
ServerConfigManager
.
class
,
MessagePathBuilder
.
class
,
ServerStatisticManager
.
class
));
all
.
add
(
C
(
Module
.
class
,
CatCoreModule
.
ID
,
CatCoreModule
.
class
));
all
.
addAll
(
new
CatCoreDatabaseConfigurator
().
defineComponents
());
all
.
addAll
(
new
CodecComponentConfigurator
().
defineComponents
());
all
.
addAll
(
new
StorageComponentConfigurator
().
defineComponents
());
...
...
cat-core/src/main/java/com/dianping/cat/config/app/AppConfigManager.java
浏览文件 @
95cf2b20
...
...
@@ -3,6 +3,7 @@ package com.dianping.cat.config.app;
import
java.io.IOException
;
import
java.util.ArrayList
;
import
java.util.Collection
;
import
java.util.Collections
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -106,7 +107,7 @@ public class AppConfigManager implements Initializable {
if
(
c
!=
null
)
{
return
c
.
getCodes
().
values
();
}
else
{
return
null
;
return
Collections
.
emptySet
()
;
}
}
...
...
@@ -120,14 +121,13 @@ public class AppConfigManager implements Initializable {
if
(
config
!=
null
)
{
return
new
ArrayList
<
Item
>(
config
.
getItems
().
values
());
}
else
{
System
.
out
.
println
(
name
);
return
new
ArrayList
<
Item
>();
}
}
public
Map
<
String
,
Integer
>
getCommands
()
{
return
m_commands
;
}
return
m_commands
;
}
private
void
refreshCommand
()
{
Collection
<
Command
>
commands
=
m_config
.
getCommands
().
values
();
...
...
cat-core/src/main/java/com/dianping/cat/config/app/AppDataService.java
浏览文件 @
95cf2b20
package
com.dianping.cat.config.app
;
import
java.util.Calendar
;
import
java.util.Collection
;
import
java.util.Collections
;
import
java.util.Comparator
;
import
java.util.Date
;
import
java.util.LinkedHashMap
;
import
java.util.LinkedList
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.
Random
;
import
java.util.
Map.Entry
;
import
org.unidal.dal.jdbc.DalException
;
import
org.unidal.lookup.annotation.Inject
;
...
...
@@ -14,72 +17,29 @@ import com.dianping.cat.Cat;
import
com.dianping.cat.app.AppDataCommand
;
import
com.dianping.cat.app.AppDataCommandDao
;
import
com.dianping.cat.app.AppDataCommandEntity
;
import
com.dianping.cat.configuration.app.entity.Code
;
public
class
AppDataService
{
@Inject
private
AppDataCommandDao
m_dao
;
@Inject
private
AppConfigManager
m_appConfigManager
;
public
static
final
String
SUCCESS_RATIO
=
"successRatio"
;
public
static
final
String
REQUEST_COUNT
=
"requestCount"
;
public
static
final
String
DELAY_AVG
=
"delayAvg"
;
public
void
insert
()
{
}
public
Map
<
String
,
double
[]>
queryAppValue
(
QueryEntity
entity
,
String
type
)
{
if
(
SUCCESS_RATIO
.
equals
(
type
))
{
return
querySuccessRatio
(
entity
);
}
else
if
(
REQUEST_COUNT
.
equals
(
type
))
{
return
queryRequestCount
(
entity
);
}
else
if
(
DELAY_AVG
.
equals
(
type
))
{
return
queryDelayAvg
(
entity
);
}
else
{
return
new
LinkedHashMap
<
String
,
double
[]>();
}
}
private
Map
<
String
,
double
[]>
makeMockValue
(
String
type
)
{
Map
<
String
,
double
[]>
map
=
new
LinkedHashMap
<
String
,
double
[]>();
Calendar
cal
=
Calendar
.
getInstance
();
cal
.
set
(
Calendar
.
HOUR_OF_DAY
,
0
);
cal
.
set
(
Calendar
.
MINUTE
,
0
);
cal
.
set
(
Calendar
.
SECOND
,
0
);
cal
.
set
(
Calendar
.
MILLISECOND
,
0
);
long
startTime
=
cal
.
getTime
().
getTime
();
long
current
=
System
.
currentTimeMillis
();
long
endTime
=
current
-
current
%
300000
;
int
n
=
(
int
)
(
endTime
-
startTime
)
/
300000
;
double
[]
value
=
new
double
[
n
];
for
(
int
i
=
0
;
i
<
n
;
i
++)
{
value
[
i
]
=
(
new
Random
().
nextDouble
()
+
1
)
*
100
;
}
map
.
put
(
type
,
value
);
return
map
;
}
private
Map
<
String
,
double
[]>
querySuccessRatio
(
QueryEntity
entity
)
{
return
makeMockValue
(
SUCCESS_RATIO
);
}
private
Map
<
String
,
double
[]>
queryDelayAvg
(
QueryEntity
entity
)
{
return
makeMockValue
(
DELAY_AVG
);
}
private
static
final
int
MAX_SIZE
=
288
;
p
rivate
Map
<
String
,
double
[]>
queryRequestCount
(
QueryEntity
entity
)
{
p
ublic
void
insert
(
)
{
return
makeMockValue
(
REQUEST_COUNT
);
}
public
void
queryAvg
(
QueryEntity
entity
)
{
public
Map
<
String
,
double
[]>
queryValue
(
QueryEntity
entity
,
String
type
)
{
int
commandId
=
entity
.
getCommand
();
Date
period
=
entity
.
getDate
();
int
city
=
entity
.
getCity
();
...
...
@@ -89,53 +49,142 @@ public class AppDataService {
int
connnectType
=
entity
.
getChannel
();
int
code
=
entity
.
getCode
();
int
platform
=
entity
.
getPlatfrom
();
List
<
AppDataCommand
>
datas
;
try
{
List
<
AppDataCommand
>
datas
=
m_dao
.
findData
(
commandId
,
period
,
city
,
operator
,
network
,
appVersion
,
connnectType
,
code
,
platform
,
AppDataCommandEntity
.
READSET_DATA
);
for
(
AppDataCommand
data
:
datas
)
{
int
minuteOrder
=
data
.
getMinuteOrder
();
long
count
=
data
.
getAccessNumberSum
();
long
sum
=
data
.
getResponseSumTimeSum
();
double
avg
=
sum
/
count
;
datas
=
m_dao
.
findData
(
commandId
,
period
,
city
,
operator
,
network
,
appVersion
,
connnectType
,
code
,
platform
,
AppDataCommandEntity
.
READSET_DATA
);
Collections
.
sort
(
datas
,
new
Comparator
<
AppDataCommand
>()
{
@Override
public
int
compare
(
AppDataCommand
o1
,
AppDataCommand
o2
)
{
return
(
int
)
(
o2
.
getMinuteOrder
()
-
o1
.
getMinuteOrder
());
}
});
int
n
=
calculateSize
(
entity
.
getDate
().
getTime
());
if
(
SUCCESS_RATIO
.
equals
(
type
))
{
return
querySuccessRatio
(
datas
,
n
);
}
else
if
(
REQUEST_COUNT
.
equals
(
type
))
{
return
queryRequestCount
(
datas
,
n
);
}
else
if
(
DELAY_AVG
.
equals
(
type
))
{
return
queryDelayAvg
(
datas
,
n
);
}
}
catch
(
DalException
e
)
{
Cat
.
logError
(
e
);
}
return
new
LinkedHashMap
<
String
,
double
[]>();
}
p
ublic
static
class
Statistics
{
private
Date
m_period
;
p
rivate
Map
<
Integer
,
List
<
AppDataCommand
>>
convert2AppDataCommandMap
(
List
<
AppDataCommand
>
fromDatas
)
{
Map
<
Integer
,
List
<
AppDataCommand
>>
dataMap
=
new
LinkedHashMap
<
Integer
,
List
<
AppDataCommand
>>()
;
private
long
m_count
;
for
(
AppDataCommand
from
:
fromDatas
)
{
int
minute
=
from
.
getMinuteOrder
();
List
<
AppDataCommand
>
data
=
dataMap
.
get
(
minute
);
private
double
m_avg
;
if
(
data
==
null
)
{
data
=
new
LinkedList
<
AppDataCommand
>();
public
Date
getPeriod
()
{
return
m_period
;
dataMap
.
put
(
minute
,
data
);
}
data
.
add
(
from
);
}
return
dataMap
;
}
public
void
setPeriod
(
Date
period
)
{
m_period
=
period
;
}
public
Map
<
String
,
double
[]>
querySuccessRatio
(
List
<
AppDataCommand
>
datas
,
int
n
)
{
Map
<
String
,
double
[]>
values
=
new
LinkedHashMap
<
String
,
double
[]>();
double
[]
value
=
new
double
[
n
];
int
i
=
0
;
public
long
getCount
()
{
return
m_count
;
try
{
Map
<
Integer
,
List
<
AppDataCommand
>>
dataMap
=
convert2AppDataCommandMap
(
datas
);
int
size
=
dataMap
.
size
();
if
(
size
<=
n
)
{
for
(
Entry
<
Integer
,
List
<
AppDataCommand
>>
entry
:
dataMap
.
entrySet
())
{
long
success
=
0
;
long
sum
=
0
;
for
(
AppDataCommand
data
:
entry
.
getValue
())
{
long
number
=
data
.
getAccessNumberSum
();
if
(
isSuccessStatus
(
data
))
{
success
+=
number
;
}
sum
+=
number
;
}
value
[
i
++]
=
(
double
)
success
/
sum
;
}
}
else
{
Cat
.
logError
(
new
RuntimeException
(
"query database minute number "
+
size
+
" lagger than expected size "
+
n
));
}
}
catch
(
Exception
e
)
{
Cat
.
logError
(
e
);
}
public
void
setCount
(
long
count
)
{
m_count
=
count
;
values
.
put
(
DELAY_AVG
,
value
);
return
values
;
}
private
boolean
isSuccessStatus
(
AppDataCommand
data
)
{
int
code
=
data
.
getCode
();
Collection
<
Code
>
codes
=
m_appConfigManager
.
queryCodeByCommand
(
data
.
getCommandId
());
for
(
Code
c
:
codes
)
{
if
(
c
.
getId
()
==
code
)
{
return
(
c
.
getStatus
()
==
0
);
}
}
return
false
;
}
public
double
getAvg
()
{
return
m_avg
;
public
Map
<
String
,
double
[]>
queryRequestCount
(
List
<
AppDataCommand
>
datas
,
int
n
)
{
Map
<
String
,
double
[]>
values
=
new
LinkedHashMap
<
String
,
double
[]>();
double
[]
value
=
new
double
[
n
];
int
i
=
0
;
for
(
AppDataCommand
data
:
datas
)
{
long
count
=
data
.
getAccessNumberSum
();
if
(
i
<
n
)
{
value
[
i
++]
=
count
;
}
}
values
.
put
(
DELAY_AVG
,
value
);
return
values
;
}
public
Map
<
String
,
double
[]>
queryDelayAvg
(
List
<
AppDataCommand
>
datas
,
int
n
)
{
Map
<
String
,
double
[]>
values
=
new
LinkedHashMap
<
String
,
double
[]>();
double
[]
value
=
new
double
[
n
];
int
i
=
0
;
for
(
AppDataCommand
data
:
datas
)
{
long
count
=
data
.
getAccessNumberSum
();
long
sum
=
data
.
getResponseSumTimeSum
();
public
void
setAvg
(
double
avg
)
{
m_avg
=
avg
;
double
avg
=
sum
/
count
;
if
(
i
<
n
)
{
value
[
i
++]
=
avg
;
}
}
values
.
put
(
DELAY_AVG
,
value
);
return
values
;
}
private
int
calculateSize
(
long
startTime
)
{
int
n
=
MAX_SIZE
;
int
oneDay
=
24
*
3600
*
1000
;
if
(
startTime
+
oneDay
>
System
.
currentTimeMillis
())
{
long
current
=
System
.
currentTimeMillis
();
long
endTime
=
current
-
current
%
300000
;
n
=
(
int
)
(
endTime
-
startTime
)
/
300000
;
}
return
n
;
}
}
cat-core/src/main/resources/META-INF/plexus/components.xml
浏览文件 @
95cf2b20
...
...
@@ -88,6 +88,18 @@
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.config.app.AppDataService
</role>
<implementation>
com.dianping.cat.config.app.AppDataService
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.config.app.AppConfigManager
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.app.AppDataCommandDao
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.config.url.UrlPatternHandler
</role>
<implementation>
com.dianping.cat.config.url.DefaultUrlPatternHandler
</implementation>
...
...
cat-home/src/main/java/com/dianping/cat/report/chart/AbstractGraphCreator.java
浏览文件 @
95cf2b20
...
...
@@ -230,7 +230,7 @@ public abstract class AbstractGraphCreator implements LogEnabled {
}
}
p
rotected
Map
<
Long
,
Double
>
buildNoneData
(
Date
startDate
,
Date
endDate
,
int
step
)
{
p
ublic
Map
<
Long
,
Double
>
buildNoneData
(
Date
startDate
,
Date
endDate
,
int
step
)
{
int
n
=
0
;
long
current
=
System
.
currentTimeMillis
();
...
...
cat-home/src/main/java/com/dianping/cat/report/page/app/Handler.java
浏览文件 @
95cf2b20
...
...
@@ -63,24 +63,25 @@ public class Handler implements PageHandler<Context> {
LineChart
lineCharts
=
new
LineChart
();
if
(
entity1
!=
null
)
{
LineChart
lineChart1
=
m_appGraphCreator
.
buildChartsByProductLine
(
entity1
,
type
);
Iterator
<
String
>
ititle
=
lineChart1
.
getSubTitles
().
iterator
();
LineChart
lineChart1
=
m_appGraphCreator
.
buildLineChart
(
entity1
,
type
);
Iterator
<
Map
<
Long
,
Double
>>
idata
=
lineChart1
.
getDatas
().
iterator
();
while
(
ititle
.
hasNext
()
&&
idata
.
hasNext
())
{
lineCharts
.
add
(
ititle
.
next
().
toString
(),
idata
.
next
());
if
(
lineChart1
.
getDatas
().
size
()
==
1
)
{
lineCharts
.
add
(
"查询1"
,
idata
.
next
());
}
}
if
(
entity2
!=
null
)
{
LineChart
lineChart2
=
m_appGraphCreator
.
buildChartsByProductLine
(
entity2
,
type
);
Iterator
<
String
>
ititle
=
lineChart2
.
getSubTitles
().
iterator
();
LineChart
lineChart2
=
m_appGraphCreator
.
buildLineChart
(
entity2
,
type
);
Iterator
<
Map
<
Long
,
Double
>>
idata
=
lineChart2
.
getDatas
().
iterator
();
while
(
ititle
.
hasNext
()
&&
idata
.
hasNext
())
{
lineCharts
.
add
(
ititle
.
next
().
toString
(),
idata
.
next
());
if
(
lineChart2
.
getDatas
().
size
()
==
1
)
{
lineCharts
.
add
(
"查询2"
,
idata
.
next
());
}
}
lineCharts
.
setId
(
"app"
);
lineCharts
.
setHtmlTitle
(
type
);
model
.
setLineChart
(
lineCharts
);
if
(!
ctx
.
isProcessStopped
())
{
...
...
cat-home/src/main/java/com/dianping/cat/report/page/app/graph/AppGraphCreator.java
浏览文件 @
95cf2b20
...
...
@@ -3,6 +3,7 @@ package com.dianping.cat.report.page.app.graph;
import
java.util.Date
;
import
java.util.LinkedHashMap
;
import
java.util.Map
;
import
java.util.Random
;
import
java.util.Map.Entry
;
import
org.unidal.lookup.annotation.Inject
;
...
...
@@ -18,7 +19,7 @@ public class AppGraphCreator extends AbstractGraphCreator {
@Inject
private
AppDataService
m_appDataService
;
public
LineChart
build
ChartsByProductLine
(
QueryEntity
queryEntity
,
String
type
)
{
public
LineChart
build
LineChart
(
QueryEntity
queryEntity
,
String
type
)
{
Map
<
String
,
double
[]>
values
=
prepareAllData
(
queryEntity
,
type
);
long
startTime
=
queryEntity
.
getDate
().
getTime
();
...
...
@@ -30,7 +31,7 @@ public class AppGraphCreator extends AbstractGraphCreator {
}
private
Map
<
String
,
double
[]>
prepareAllData
(
QueryEntity
queryEntity
,
String
type
)
{
Map
<
String
,
double
[]>
value
=
m_appDataService
.
queryApp
Value
(
queryEntity
,
type
);
Map
<
String
,
double
[]>
value
=
new
AppDataServiceMock
().
query
Value
(
queryEntity
,
type
);
return
value
;
}
...
...
@@ -65,4 +66,49 @@ public class AppGraphCreator extends AbstractGraphCreator {
return
map
;
}
public
class
AppDataServiceMock
extends
AppDataService
{
public
Map
<
String
,
double
[]>
queryValue
(
QueryEntity
entity
,
String
type
)
{
if
(
SUCCESS_RATIO
.
equals
(
type
))
{
return
querySuccessRatio
(
entity
);
}
else
if
(
REQUEST_COUNT
.
equals
(
type
))
{
return
queryRequestCount
(
entity
);
}
else
if
(
DELAY_AVG
.
equals
(
type
))
{
return
queryDelayAvg
(
entity
);
}
else
{
return
new
LinkedHashMap
<
String
,
double
[]>();
}
}
private
Map
<
String
,
double
[]>
makeMockValue
(
String
type
)
{
Map
<
String
,
double
[]>
map
=
new
LinkedHashMap
<
String
,
double
[]>();
long
startTime
=
TimeUtil
.
getCurrentDay
().
getTime
();
long
current
=
System
.
currentTimeMillis
();
long
endTime
=
current
-
current
%
300000
;
int
n
=
(
int
)
(
endTime
-
startTime
)
/
300000
;
double
[]
value
=
new
double
[
n
];
for
(
int
i
=
0
;
i
<
n
;
i
++)
{
value
[
i
]
=
(
new
Random
().
nextDouble
()
+
1
)
*
100
;
}
map
.
put
(
type
,
value
);
return
map
;
}
private
Map
<
String
,
double
[]>
querySuccessRatio
(
QueryEntity
entity
)
{
return
makeMockValue
(
SUCCESS_RATIO
);
}
private
Map
<
String
,
double
[]>
queryDelayAvg
(
QueryEntity
entity
)
{
return
makeMockValue
(
DELAY_AVG
);
}
private
Map
<
String
,
double
[]>
queryRequestCount
(
QueryEntity
entity
)
{
return
makeMockValue
(
REQUEST_COUNT
);
}
}
}
cat-home/src/main/webapp/jsp/report/app.jsp
浏览文件 @
95cf2b20
...
...
@@ -32,7 +32,6 @@
var
key
=
$
(
"
#command
"
).
val
();
var
value
=
commandInfo
[
key
];
var
code
=
document
.
getElementById
(
"
code
"
);
code
.
length
=
0
;
for
(
var
prop
in
value
)
{
var
opt
=
$
(
'
<option />
'
);
...
...
@@ -45,7 +44,6 @@
var
key
=
$
(
"
#command2
"
).
val
();
var
value
=
commandInfo
[
key
];
var
code
=
document
.
getElementById
(
"
code2
"
);
code
.
length
=
0
;
for
(
var
prop
in
value
)
{
var
opt
=
$
(
'
<option />
'
);
...
...
@@ -190,11 +188,13 @@
data-date-icon=
"icon-calendar"
>
</i>
</span>
</div>
命令字
<select
id=
"command"
style=
"width: 350px;"
>
<option
value=
'0'
>
All
</option>
<c:forEach
var=
"item"
items=
"
${
model
.
commands
}
"
varStatus=
"status"
>
<option
value=
'${item.id}'
>
${item.name}
</option>
</c:forEach>
</select>
返回码
<select
id=
"code"
style=
"width: 120px;"
>
</select>
返回码
<select
id=
"code"
style=
"width: 120px;"
>
<option
value=
'0'
>
All
</option>
</select>
网络类型
<select
id=
"network"
style=
"width: 80px;"
>
<option
value=
'0'
>
All
</option>
<c:forEach
var=
"item"
items=
"
${
model
.
networks
}
"
varStatus=
"status"
>
<option
value=
'${item.id}'
>
${item.name}
</option>
</c:forEach>
...
...
@@ -203,23 +203,28 @@
</tr>
<tr>
<th
align=
left
>
版本
<select
id=
"version"
style=
"width: 100px;"
>
<option
value=
'0'
>
All
</option>
<c:forEach
var=
"item"
items=
"
${
model
.
versions
}
"
varStatus=
"status"
>
<option
value=
'${item.id}'
>
${item.name}
</option>
</c:forEach>
</select>
渠道
<select
id=
"channel"
style=
"width: 100px;"
>
<option
value=
'0'
>
All
</option>
<c:forEach
var=
"item"
items=
"
${
model
.
channels
}
"
varStatus=
"status"
>
<option
value=
'${item.id}'
>
${item.name}
</option>
</c:forEach>
</select>
平台
<select
id=
"platform"
style=
"width: 100px;"
>
<option
value=
'0'
>
All
</option>
<c:forEach
var=
"item"
items=
"
${
model
.
platforms
}
"
varStatus=
"status"
>
<option
value=
'${item.id}'
>
${item.name}
</option>
</c:forEach>
</select>
地区
<select
id=
"city"
style=
"width: 100px;"
>
<option
value=
'0'
>
All
</option>
<c:forEach
var=
"item"
items=
"
${
model
.
cities
}
"
varStatus=
"status"
>
<option
value=
'${item.id}'
>
${item.name}
</option>
</c:forEach>
</select>
运营商
<select
id=
"operator"
style=
"width: 100px;"
>
<option
value=
'0'
>
All
</option>
<c:forEach
var=
"item"
items=
"
${
model
.
operators
}
"
varStatus=
"status"
>
<option
value=
'${item.id}'
>
${item.name}
</option>
...
...
@@ -243,11 +248,14 @@
data-date-icon=
"icon-calendar"
>
</i>
</span>
</div>
命令字
<select
id=
"command2"
style=
"width: 350px;"
>
<option
value=
'0'
>
All
</option>
<c:forEach
var=
"item"
items=
"
${
model
.
commands
}
"
varStatus=
"status"
>
<option
value=
'${item.id}'
>
${item.name}
</option>
</c:forEach>
</select>
返回码
<select
id=
"code2"
style=
"width: 120px;"
>
<option
value=
'0'
>
All
</option>
</select>
网络类型
<select
id=
"network2"
style=
"width: 80px;"
>
<option
value=
'0'
>
All
</option>
<c:forEach
var=
"item"
items=
"
${
model
.
networks
}
"
varStatus=
"status"
>
<option
value=
'${item.id}'
>
${item.name}
</option>
</c:forEach>
...
...
@@ -256,23 +264,28 @@
</tr>
<tr>
<th
align=
left
>
版本
<select
id=
"version2"
style=
"width: 100px;"
>
<option
value=
'0'
>
All
</option>
<c:forEach
var=
"item"
items=
"
${
model
.
versions
}
"
varStatus=
"status"
>
<option
value=
'${item.id}'
>
${item.name}
</option>
</c:forEach>
</select>
渠道
<select
id=
"channel2"
style=
"width: 100px;"
>
<option
value=
'0'
>
All
</option>
<c:forEach
var=
"item"
items=
"
${
model
.
channels
}
"
varStatus=
"status"
>
<option
value=
'${item.id}'
>
${item.name}
</option>
</c:forEach>
</select>
平台
<select
id=
"platform2"
style=
"width: 100px;"
>
<option
value=
'0'
>
All
</option>
<c:forEach
var=
"item"
items=
"
${
model
.
platforms
}
"
varStatus=
"status"
>
<option
value=
'${item.id}'
>
${item.name}
</option>
</c:forEach>
</select>
地区
<select
id=
"city2"
style=
"width: 100px;"
>
<option
value=
'0'
>
All
</option>
<c:forEach
var=
"item"
items=
"
${
model
.
cities
}
"
varStatus=
"status"
>
<option
value=
'${item.id}'
>
${item.name}
</option>
</c:forEach>
</select>
运营商
<select
id=
"operator2"
style=
"width: 100px;"
>
<option
value=
'0'
>
All
</option>
<c:forEach
var=
"item"
items=
"
${
model
.
operators
}
"
varStatus=
"status"
>
<option
value=
'${item.id}'
>
${item.name}
</option>
...
...
@@ -284,11 +297,11 @@
<div
class=
"btn-group"
data-toggle=
"buttons"
>
<label
class=
"btn btn-info"
>
<input
type=
"radio"
name=
"typeCheckbox"
value=
"successRatio"
>
成功率
name=
"typeCheckbox"
value=
"successRatio"
onclick=
"query()"
>
成功率
</label>
<label
class=
"btn btn-info"
>
<input
type=
"radio"
name=
"typeCheckbox"
value=
"requestCount"
>
总请求数
name=
"typeCheckbox"
value=
"requestCount"
onclick=
"query()"
>
总请求数
</label>
<label
class=
"btn btn-info"
>
<input
type=
"radio"
name=
"typeCheckbox"
value=
"delayAvg"
>
成功延时(ms)
name=
"typeCheckbox"
value=
"delayAvg"
onclick=
"query()"
>
成功延时(ms)
</label>
</div>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录