Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
梦中观雨
cat
提交
1d8d71a4
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,发现更多精彩内容 >>
提交
1d8d71a4
编写于
10月 15, 2013
作者:
Y
yong.you
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
modify the metric page
上级
3c0b7521
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
106 addition
and
109 deletion
+106
-109
cat-home/src/main/java/com/dianping/cat/report/page/metric/Handler.java
...ain/java/com/dianping/cat/report/page/metric/Handler.java
+15
-13
cat-home/src/main/java/com/dianping/cat/report/page/metric/Model.java
.../main/java/com/dianping/cat/report/page/metric/Model.java
+5
-1
cat-home/src/main/java/com/dianping/cat/report/page/metric/Payload.java
...ain/java/com/dianping/cat/report/page/metric/Payload.java
+0
-1
cat-home/src/main/java/com/dianping/cat/report/page/metric/Range.java
.../main/java/com/dianping/cat/report/page/metric/Range.java
+41
-0
cat-home/src/main/webapp/jsp/report/metric/dashboard.jsp
cat-home/src/main/webapp/jsp/report/metric/dashboard.jsp
+34
-72
cat-home/src/main/webapp/jsp/report/metric/metric.jsp
cat-home/src/main/webapp/jsp/report/metric/metric.jsp
+11
-22
未找到文件。
cat-home/src/main/java/com/dianping/cat/report/page/metric/Handler.java
浏览文件 @
1d8d71a4
...
...
@@ -63,8 +63,6 @@ public class Handler implements PageHandler<Context> {
private
static
final
String
TUAN
=
"TuanGou"
;
private
int
m_timeRange
;
private
final
Map
<
String
,
MetricReport
>
m_metricReportMap
=
new
LinkedHashMap
<
String
,
MetricReport
>()
{
private
static
final
long
serialVersionUID
=
1L
;
...
...
@@ -118,16 +116,14 @@ public class Handler implements PageHandler<Context> {
Model
model
=
new
Model
(
ctx
);
Payload
payload
=
ctx
.
getPayload
();
Action
action
=
payload
.
getAction
();
m_timeRange
=
payload
.
getTimeRange
();
normalize
(
model
,
payload
);
MetricDisplay
metricDisplay
=
null
;
Collection
<
ProductLine
>
productLines
=
m_productLineConfigManager
.
queryProductLines
().
values
();
long
date
=
payload
.
getDate
();
switch
(
action
)
{
case
METRIC:
metricDisplay
=
build
MetricsByProduct
(
date
,
payload
.
getProduct
(),
payload
.
getTest
()
,
false
);
metricDisplay
=
build
ProductLineMetrics
(
payload
.
getProduct
(),
payload
,
false
);
model
.
setLineCharts
(
metricDisplay
.
getLineCharts
());
model
.
setAbtests
(
metricDisplay
.
getAbtests
());
...
...
@@ -135,8 +131,7 @@ public class Handler implements PageHandler<Context> {
case
DASHBOARD:
List
<
LineChart
>
allCharts
=
new
ArrayList
<
LineChart
>();
for
(
ProductLine
productLine
:
productLines
)
{
metricDisplay
=
buildMetricsByProduct
(
date
,
productLine
.
getId
(),
payload
.
getTest
(),
true
);
metricDisplay
=
buildProductLineMetrics
(
productLine
.
getId
(),
payload
,
true
);
List
<
LineChart
>
charts
=
metricDisplay
.
getLineCharts
();
...
...
@@ -149,12 +144,17 @@ public class Handler implements PageHandler<Context> {
m_jspViewer
.
view
(
ctx
,
model
);
}
private
MetricDisplay
buildMetricsByProduct
(
long
date
,
String
product
,
String
abtestID
,
boolean
isDashboard
)
{
Date
startTime
=
new
Date
(
date
-
(
m_timeRange
-
1
)
*
TimeUtil
.
ONE_HOUR
);
private
MetricDisplay
buildProductLineMetrics
(
String
product
,
Payload
payload
,
boolean
isDashboard
)
{
long
date
=
payload
.
getDate
();
String
abtestID
=
payload
.
getTest
();
int
timeRange
=
payload
.
getTimeRange
();
Date
startTime
=
new
Date
(
date
-
(
timeRange
-
1
)
*
TimeUtil
.
ONE_HOUR
);
List
<
String
>
domains
=
m_productLineConfigManager
.
queryProductLineDomains
(
product
);
List
<
MetricItemConfig
>
metricConfigs
=
m_configManager
.
queryMetricItemConfigs
(
new
HashSet
<
String
>(
domains
));
MetricDisplay
display
=
new
MetricDisplay
(
abtestID
,
startTime
,
isDashboard
,
m_timeRange
);
MetricDisplay
display
=
new
MetricDisplay
(
abtestID
,
startTime
,
isDashboard
,
timeRange
);
display
.
initializeLineCharts
(
metricConfigs
);
MetricDisplayMerger
displayMerger
=
new
MetricDisplayMerger
(
abtestID
,
isDashboard
);
long
time
=
startTime
.
getTime
();
...
...
@@ -162,15 +162,16 @@ public class Handler implements PageHandler<Context> {
display
.
setBaselineService
(
m_baselineService
);
display
.
setDisplayMerger
(
displayMerger
);
for
(
int
i
=
0
;
i
<
m_timeRange
;
i
++)
{
for
(
int
i
ndex
=
0
;
index
<
timeRange
;
index
++)
{
ModelPeriod
period
=
ModelPeriod
.
getByTime
(
time
);
MetricReport
report
=
getReport
(
period
,
product
,
time
);
if
(
report
!=
null
)
{
displayMerger
.
visitMetricReport
(
i
,
report
);
displayMerger
.
visitMetricReport
(
i
ndex
,
report
);
}
time
=
time
+
TimeUtil
.
ONE_HOUR
;
}
display
.
generateLineCharts
();
if
(
abtestID
.
equals
(
"-1"
))
{
display
.
generateBaselineChart
();
...
...
@@ -186,7 +187,8 @@ public class Handler implements PageHandler<Context> {
if
(
poduct
==
null
||
poduct
.
length
()
==
0
)
{
payload
.
setProduct
(
TUAN
);
}
Date
startTime
=
new
Date
(
payload
.
getDate
()
-
(
m_timeRange
-
1
)
*
TimeUtil
.
ONE_HOUR
);
int
timeRange
=
payload
.
getTimeRange
();
Date
startTime
=
new
Date
(
payload
.
getDate
()
-
(
timeRange
-
1
)
*
TimeUtil
.
ONE_HOUR
);
Date
endTime
=
new
Date
(
payload
.
getDate
()
+
TimeUtil
.
ONE_HOUR
-
1
);
model
.
setStartTime
(
startTime
);
...
...
cat-home/src/main/java/com/dianping/cat/report/page/metric/Model.java
浏览文件 @
1d8d71a4
...
...
@@ -28,7 +28,11 @@ public class Model extends AbstractReportModel<Action, Context> {
private
Date
m_endTime
;
private
Map
<
Integer
,
Abtest
>
m_abtests
;
public
Range
[]
getAllRange
()
{
return
Range
.
values
();
}
public
Model
(
Context
ctx
)
{
super
(
ctx
);
}
...
...
cat-home/src/main/java/com/dianping/cat/report/page/metric/Payload.java
浏览文件 @
1d8d71a4
...
...
@@ -26,7 +26,6 @@ public class Payload extends AbstractReportPayload<Action> {
@FieldMeta
(
"timeRange"
)
private
int
m_timeRange
=
2
;
@FieldMeta
(
"fullScreen"
)
private
boolean
m_fullScreen
=
false
;
...
...
cat-home/src/main/java/com/dianping/cat/report/page/metric/Range.java
0 → 100644
浏览文件 @
1d8d71a4
package
com.dianping.cat.report.page.metric
;
public
enum
Range
{
ONE
(
"1小时"
,
1
),
TWO
(
"2小时"
,
2
),
SIX
(
"6小时"
,
6
),
NINE
(
"9小时"
,
9
),
THELVE
(
"12小时"
,
12
),
ONE_DAY
(
"24小时"
,
24
),
;
private
Range
(
String
title
,
int
duration
)
{
m_title
=
title
;
m_duration
=
duration
;
}
public
String
getTitle
()
{
return
m_title
;
}
public
int
getDuration
()
{
return
m_duration
;
}
private
String
m_title
;
private
int
m_duration
;
public
static
Range
getByTitle
(
String
title
,
Range
defaultRange
)
{
for
(
Range
range
:
Range
.
values
())
{
if
(
range
.
getTitle
().
equals
(
title
))
{
return
range
;
}
}
return
defaultRange
;
}
}
cat-home/src/main/webapp/jsp/report/metric/dashboard.jsp
浏览文件 @
1d8d71a4
...
...
@@ -18,6 +18,22 @@
<c:choose>
<c:when
test=
"
${
payload
.
fullScreen
}
"
>
<table>
<tr
style=
"text-align: left"
>
<th>
时间段选择:
<c:forEach
var=
"range"
items=
"
${
model
.
allRange
}
"
>
<c:choose>
<c:when
test=
"
${
payload
.
timeRange
eq
range
.
duration
}
"
>
[
<a
href=
"?op=dashboard&${navUrlPrefix}&fullScreen=${payload.fullScreen}&date=${model.date}&domain=${model.domain}&product=${payload.product}&test=${payload.test}&timeRange=${range.duration}"
class=
"current"
>
${range.title}
</a>
]
</c:when>
<c:otherwise>
[
<a
href=
"?op=dashboard&${navUrlPrefix}&fullScreen=${payload.fullScreen}&date=${model.date}&domain=${model.domain}&product=${payload.product}&test=${payload.test}&timeRange=${range.duration}"
>
${range.title}
</a>
]
</c:otherwise>
</c:choose>
</c:forEach>
</th>
</tr>
</table>
<%@ include
file=
"detail.jsp"
%>
</c:when>
<c:otherwise>
...
...
@@ -28,12 +44,28 @@
<td
class=
"title"
>
From ${w:format(model.startTime,'yyyy-MM-dd HH:mm:ss')} to ${w:format(model.endTime,'yyyy-MM-dd HH:mm:ss')}
</td>
<td
class=
"nav"
>
<c:forEach
var=
"nav"
items=
"
${
model
.
navs
}
"
>
[
<a
href=
"${model.baseUri}?date=${model.date}&domain=${model.domain}&step=${nav.hours}&product=${payload.product}&test=${payload.test}&${navUrlPrefix}"
>
${nav.title}
</a>
]
[
<a
href=
"${model.baseUri}?
op=dashboard&
date=${model.date}&domain=${model.domain}&step=${nav.hours}&product=${payload.product}&test=${payload.test}&${navUrlPrefix}"
>
${nav.title}
</a>
]
</c:forEach>
[
<a
href=
"${model.baseUri}?${navUrlPrefix}&product=${payload.product}"
>
now
</a>
]
[
<a
href=
"${model.baseUri}?
op=dashboard&
${navUrlPrefix}&product=${payload.product}"
>
now
</a>
]
</td>
</tr>
</table>
<table>
<tr
style=
"text-align: left"
>
<th>
时间段选择:
<c:forEach
var=
"range"
items=
"
${
model
.
allRange
}
"
>
<c:choose>
<c:when
test=
"
${
payload
.
timeRange
eq
range
.
duration
}
"
>
[
<a
href=
"?op=dashboard&date=${model.date}&domain=${model.domain}&product=${payload.product}&test=${payload.test}&timeRange=${range.duration}"
class=
"current"
>
${range.title}
</a>
]
</c:when>
<c:otherwise>
[
<a
href=
"?op=dashboard&date=${model.date}&domain=${model.domain}&product=${payload.product}&test=${payload.test}&timeRange=${range.duration}"
>
${range.title}
</a>
]
</c:otherwise>
</c:choose>
</c:forEach>
</th>
</tr>
</table>
<%@ include
file=
"detail.jsp"
%>
<table
class=
"footer"
>
<tr>
...
...
@@ -54,76 +86,6 @@
</c:forEach>
});
</script>
<div
class=
"report"
>
<table
class=
"header"
>
<tr>
<td
class=
"title"
>
From ${w:format(model.startTime,'yyyy-MM-dd HH:mm:ss')} to ${w:format(model.endTime,'yyyy-MM-dd HH:mm:ss')}
</td>
<td
class=
"nav"
>
<c:forEach
var=
"nav"
items=
"
${
model
.
navs
}
"
>
[
<a
href=
"${model.baseUri}?date=${model.date}&domain=${model.domain}&step=${nav.hours}&product=${payload.product}&test=${payload.test}&${navUrlPrefix}"
>
${nav.title}
</a>
]
</c:forEach>
[
<a
href=
"${model.baseUri}?${navUrlPrefix}&product=${payload.product}"
>
now
</a>
]
</td>
</tr>
</table>
</br>
<table>
<tr
style=
"text-align: left"
>
<th>
Time range:
[
<c:choose>
<c:when
test=
"
${
payload
.
timeRange
eq
2
}
"
>
<a
href=
"?op=dashboard&date=${model.date}&domain=${model.domain}&product=${payload.product}&test=${payload.test}&timeRange=2"
class=
"current"
>
Two hours
</a>
</c:when>
<c:otherwise>
<a
href=
"?op=dashboard&date=${model.date}&domain=${model.domain}&product=${payload.product}&test=${payload.test}&timeRange=2"
>
Two hours
</a>
</c:otherwise>
</c:choose>
]
[
<c:choose>
<c:when
test=
"
${
payload
.
timeRange
eq
24
}
"
>
<a
href=
"?op=dashboard&date=${model.date}&domain=${model.domain}&product=${payload.product}&test=${payload.test}&timeRange=24"
class=
"current"
>
One day
</a>
</c:when>
<c:otherwise>
<a
href=
"?op=dashboard&?date=${model.date}&domain=${model.domain}&product=${payload.product}&test=${payload.test}&timeRange=24"
>
One day
</a>
</c:otherwise>
</c:choose>
]
</th>
</tr>
</table>
<br/>
<div
class=
"container-fluid"
>
<div
class=
"row-fluid"
>
<div
class=
"span2"
>
<div
class=
"well sidebar-nav"
>
<ul
class=
"nav nav-list"
>
<li
class=
'nav-header active'
id=
"${item.id}"
><a
href=
"?op=dashboard&date=${model.date}&domain=${model.domain}"
><strong>
业务大盘
</strong></a></li>
<c:forEach
var=
"item"
items=
"
${
model
.
productLines
}
"
varStatus=
"status"
>
<li
class=
'nav-header'
id=
"${item.id}"
><a
href=
"?date=${model.date}&domain=${model.domain}&product=${item.id}"
><strong>
${item.title}
</strong></a></li>
</c:forEach>
<li
>
</li>
</ul>
</div>
<!--/.well -->
</div>
<!--/span-->
<div
class=
"span10"
>
<c:if
test=
"
${
payload
.
timeRange
eq
24
}
"
>
<h3
class=
'text-red'
>
说明:图中纵轴数据为10分钟数据之和
</h3>
</c:if>
<c:forEach
var=
"item"
items=
"
${
model
.
lineCharts
}
"
varStatus=
"status"
>
<div
style=
"float:left;"
>
<h5
class=
"text-center text-error"
>
${item.title}
</h5>
<div
id=
"${item.title}"
class=
"metricGraph"
></div>
</div>
</c:forEach>
</div>
<table
class=
"footer"
>
<tr>
<td>
[ end ]
</td>
</tr>
</table>
</div>
<style
type=
"text/css"
>
.row-fluid
.span2
{
width
:
10%
;
...
...
cat-home/src/main/webapp/jsp/report/metric/metric.jsp
浏览文件 @
1d8d71a4
...
...
@@ -40,33 +40,22 @@
</td>
</tr>
</table>
</br>
<table>
<tr
style=
"text-align: left"
>
<th>
Time range:
[
<c:choose>
<c:when
test=
"
${
payload
.
timeRange
eq
2
}
"
>
<a
href=
"?date=${model.date}&domain=${model.domain}&product=${payload.product}&test=${payload.test}&timeRange=2"
class=
"current"
>
Two hours
</a>
</c:when>
<c:otherwise>
<a
href=
"?date=${model.date}&domain=${model.domain}&product=${payload.product}&test=${payload.test}&timeRange=2"
>
Two hours
</a>
</c:otherwise>
</c:choose>
]
[
<c:choose>
<c:when
test=
"
${
payload
.
timeRange
eq
24
}
"
>
<a
href=
"?date=${model.date}&domain=${model.domain}&product=${payload.product}&test=${payload.test}&timeRange=24"
class=
"current"
>
One day
</a>
</c:when>
<c:otherwise>
<a
href=
"?date=${model.date}&domain=${model.domain}&product=${payload.product}&test=${payload.test}&timeRange=24"
>
One day
</a>
</c:otherwise>
</c:choose>
]
<th>
时间段选择:
<c:forEach
var=
"range"
items=
"
${
model
.
allRange
}
"
>
<c:choose>
<c:when
test=
"
${
payload
.
timeRange
eq
range
.
duration
}
"
>
[
<a
href=
"?date=${model.date}&domain=${model.domain}&product=${payload.product}&test=${payload.test}&timeRange=${range.duration}"
class=
"current"
>
${range.title}
</a>
]
</c:when>
<c:otherwise>
[
<a
href=
"?date=${model.date}&domain=${model.domain}&product=${payload.product}&test=${payload.test}&timeRange=${range.duration}"
>
${range.title}
</a>
]
</c:otherwise>
</c:choose>
</c:forEach>
</th>
</tr>
</table>
<br/>
<div
class=
"container-fluid"
>
<div
class=
"row-fluid"
>
<div
class=
"span2"
>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录