Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
sunac_report
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
java-sunac-report
sunac_report
Commits
0a550977
Commit
0a550977
authored
Sep 14, 2017
by
mengxy
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
工作台代码
parent
d9aafc3f
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
594 additions
and
0 deletions
+594
-0
WorkbenchBean.java
src/main/java/com/ejweb/modules/workbench/Bean/WorkbenchBean.java
+275
-0
WorkbenchService.java
src/main/java/com/ejweb/modules/workbench/service/WorkbenchService.java
+143
-0
WorkbenchController.java
src/main/java/com/ejweb/modules/workbench/web/WorkbenchController.java
+147
-0
workbench.jsp
src/main/webapp/WEB-INF/views/modules/workbench/workbench.jsp
+0
-0
exporting.js
src/main/webapp/assets/highcharts/exporting.js
+27
-0
highcharts-zh_CN.js
src/main/webapp/assets/highcharts/highcharts-zh_CN.js
+2
-0
highcharts.js
src/main/webapp/assets/highcharts/highcharts.js
+0
-0
No files found.
src/main/java/com/ejweb/modules/workbench/Bean/WorkbenchBean.java
0 → 100644
View file @
0a550977
package
com
.
ejweb
.
modules
.
workbench
.
Bean
;
/**
* Created by mengxy on 2017/9/11.
*/
public
class
WorkbenchBean
{
//是否管理员
private
String
isAdmin
;
//处理状态
private
String
processStatus
;
//时间段
private
String
startDate
;
private
String
endDate
;
//举报状态
private
int
repStatusTotal
=
0
;
private
int
unProcess
=
0
;
private
int
processing
=
0
;
private
int
processed
=
0
;
//举报结果
private
int
repResultTotal
=
0
;
private
int
invalid
=
0
;
private
int
complainNum
=
0
;
private
int
verified
=
0
;
//总体
private
int
total
=
0
;
private
int
weChat
=
0
;
private
int
oa
=
0
;
private
int
supplier
=
0
;
private
int
web
=
0
;
private
int
offline
=
0
;
private
int
email
=
0
;
private
int
sunacE
=
0
;
private
int
phone
=
0
;
//举报类型
private
int
sale
=
0
;
private
int
project
=
0
;
private
int
cost
=
0
;
private
int
forMining
=
0
;
private
int
manpower
=
0
;
private
int
tenement
=
0
;
private
int
complain
=
0
;
public
WorkbenchBean
()
{
}
public
int
getRepStatusTotal
()
{
return
repStatusTotal
;
}
public
int
getSupplier
()
{
return
supplier
;
}
public
void
setSupplier
(
int
supplier
)
{
this
.
supplier
=
supplier
;
}
public
int
getOffline
()
{
return
offline
;
}
public
void
setOffline
(
int
offline
)
{
this
.
offline
=
offline
;
}
public
int
getSunacE
()
{
return
sunacE
;
}
public
void
setSunacE
(
int
sunacE
)
{
this
.
sunacE
=
sunacE
;
}
public
void
setRepStatusTotal
(
int
repStatusTotal
)
{
this
.
repStatusTotal
=
repStatusTotal
;
}
public
int
getUnProcess
()
{
return
unProcess
;
}
public
void
setUnProcess
(
int
unProcess
)
{
this
.
unProcess
=
unProcess
;
}
public
int
getProcessing
()
{
return
processing
;
}
public
void
setProcessing
(
int
processing
)
{
this
.
processing
=
processing
;
}
public
int
getProcessed
()
{
return
processed
;
}
public
void
setProcessed
(
int
processed
)
{
this
.
processed
=
processed
;
}
public
int
getRepResultTotal
()
{
return
repResultTotal
;
}
public
void
setRepResultTotal
(
int
repResultTotal
)
{
this
.
repResultTotal
=
repResultTotal
;
}
public
int
getInvalid
()
{
return
invalid
;
}
public
void
setInvalid
(
int
invalid
)
{
this
.
invalid
=
invalid
;
}
public
int
getComplainNum
()
{
return
complainNum
;
}
public
void
setComplainNum
(
int
complainNum
)
{
this
.
complainNum
=
complainNum
;
}
public
int
getVerified
()
{
return
verified
;
}
public
void
setVerified
(
int
verified
)
{
this
.
verified
=
verified
;
}
public
int
getTotal
()
{
return
total
;
}
public
void
setTotal
(
int
total
)
{
this
.
total
=
total
;
}
public
int
getWeChat
()
{
return
weChat
;
}
public
void
setWeChat
(
int
weChat
)
{
this
.
weChat
=
weChat
;
}
public
int
getOa
()
{
return
oa
;
}
public
void
setOa
(
int
oa
)
{
this
.
oa
=
oa
;
}
public
int
getWeb
()
{
return
web
;
}
public
void
setWeb
(
int
web
)
{
this
.
web
=
web
;
}
public
int
getEmail
()
{
return
email
;
}
public
void
setEmail
(
int
email
)
{
this
.
email
=
email
;
}
public
int
getPhone
()
{
return
phone
;
}
public
void
setPhone
(
int
phone
)
{
this
.
phone
=
phone
;
}
public
int
getSale
()
{
return
sale
;
}
public
void
setSale
(
int
sale
)
{
this
.
sale
=
sale
;
}
public
int
getProject
()
{
return
project
;
}
public
void
setProject
(
int
project
)
{
this
.
project
=
project
;
}
public
int
getCost
()
{
return
cost
;
}
public
void
setCost
(
int
cost
)
{
this
.
cost
=
cost
;
}
public
int
getForMining
()
{
return
forMining
;
}
public
void
setForMining
(
int
forMining
)
{
this
.
forMining
=
forMining
;
}
public
int
getManpower
()
{
return
manpower
;
}
public
void
setManpower
(
int
manpower
)
{
this
.
manpower
=
manpower
;
}
public
int
getTenement
()
{
return
tenement
;
}
public
void
setTenement
(
int
tenement
)
{
this
.
tenement
=
tenement
;
}
public
int
getComplain
()
{
return
complain
;
}
public
void
setComplain
(
int
complain
)
{
this
.
complain
=
complain
;
}
public
String
getStartDate
()
{
return
startDate
;
}
public
void
setStartDate
(
String
startDate
)
{
this
.
startDate
=
startDate
;
}
public
String
getEndDate
()
{
return
endDate
;
}
public
void
setEndDate
(
String
endDate
)
{
this
.
endDate
=
endDate
;
}
public
String
getIsAdmin
()
{
return
isAdmin
;
}
public
void
setIsAdmin
(
String
isAdmin
)
{
this
.
isAdmin
=
isAdmin
;
}
public
String
getProcessStatus
()
{
return
processStatus
;
}
public
void
setProcessStatus
(
String
processStatus
)
{
this
.
processStatus
=
processStatus
;
}
}
src/main/java/com/ejweb/modules/workbench/service/WorkbenchService.java
0 → 100644
View file @
0a550977
package
com
.
ejweb
.
modules
.
workbench
.
service
;
import
com.ejweb.core.service.CrudService
;
import
com.ejweb.core.utils.DateUtils
;
import
com.ejweb.modules.report.dao.ReportDao
;
import
com.ejweb.modules.report.entity.ReportEntity
;
import
com.ejweb.modules.workbench.Bean.WorkbenchBean
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.text.DateFormat
;
import
java.text.SimpleDateFormat
;
import
java.util.Calendar
;
import
java.util.HashMap
;
import
java.util.List
;
/**
* Created by mengxy on 2017/9/11.
*/
@Service
public
class
WorkbenchService
extends
CrudService
<
ReportDao
,
ReportEntity
>
{
@Autowired
private
ReportDao
reportDao
;
public
WorkbenchBean
getWorkbench
(
WorkbenchBean
workbench
)
throws
Exception
{
// WorkbenchBean workbench = new WorkbenchBean();
if
(
StringUtils
.
isBlank
(
workbench
.
getStartDate
())
&&
StringUtils
.
isBlank
(
workbench
.
getEndDate
())){
workbench
.
setEndDate
(
DateUtils
.
getDate
());
DateFormat
df
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
Calendar
c
=
Calendar
.
getInstance
();
c
.
setTime
(
df
.
parse
(
workbench
.
getEndDate
()));
c
.
set
(
Calendar
.
DATE
,
c
.
get
(
Calendar
.
DATE
)-
30
);
String
startDate
=
df
.
format
(
c
.
getTime
());
workbench
.
setStartDate
(
startDate
);
}
else
if
(
StringUtils
.
isNotBlank
(
workbench
.
getStartDate
())
&&
StringUtils
.
isBlank
(
workbench
.
getEndDate
())){
workbench
.
setEndDate
(
DateUtils
.
getDate
());
}
else
if
(
StringUtils
.
isBlank
(
workbench
.
getStartDate
())
&&
StringUtils
.
isNotBlank
(
workbench
.
getEndDate
())){
workbench
.
setStartDate
(
"2017-09-12"
);
}
List
<
HashMap
>
results
=
reportDao
.
getReportResult
(
workbench
);
//举报结果
for
(
HashMap
res:
results
)
{
if
(
StringUtils
.
isNotBlank
((
String
)
res
.
get
(
"deal_result"
))){
if
(
"1"
.
equals
((
String
)
res
.
get
(
"deal_result"
))){
//投诉
workbench
.
setComplainNum
(
Integer
.
valueOf
(
String
.
valueOf
(
res
.
get
(
"COUNT(deal_result)"
))));
}
else
if
(
"2"
.
equals
((
String
)
res
.
get
(
"deal_result"
))){
//无效
workbench
.
setInvalid
(
Integer
.
valueOf
(
String
.
valueOf
(
res
.
get
(
"COUNT(deal_result)"
))));
}
else
if
(
"3"
.
equals
((
String
)
res
.
get
(
"deal_result"
))){
//属实
workbench
.
setVerified
(
Integer
.
valueOf
(
String
.
valueOf
(
res
.
get
(
"COUNT(deal_result)"
))));
}
}
}
workbench
.
setRepResultTotal
(
workbench
.
getComplainNum
()+
workbench
.
getInvalid
()+
workbench
.
getVerified
());
List
<
HashMap
>
statusList
=
reportDao
.
getReportStatus
(
workbench
);
//举报状态
for
(
HashMap
status:
statusList
){
if
(
StringUtils
.
isNotBlank
((
String
)
status
.
get
(
"report_status"
))){
if
(
"1"
.
equals
(
String
.
valueOf
(
status
.
get
(
"report_status"
)))){
//处理中
workbench
.
setProcessing
(
Integer
.
valueOf
(
String
.
valueOf
(
status
.
get
(
"COUNT(report_status)"
))));
}
else
if
(
"2"
.
equals
(
String
.
valueOf
(
status
.
get
(
"report_status"
)))){
//已处理
workbench
.
setProcessed
(
Integer
.
valueOf
(
String
.
valueOf
(
status
.
get
(
"COUNT(report_status)"
))));
}
else
if
(
"0"
.
equals
(
String
.
valueOf
(
status
.
get
(
"report_status"
)))){
//未处理
workbench
.
setUnProcess
(
Integer
.
valueOf
(
String
.
valueOf
(
status
.
get
(
"COUNT(report_status)"
))));
}
}
}
workbench
.
setRepStatusTotal
(
workbench
.
getUnProcess
()+
workbench
.
getProcessing
()+
workbench
.
getProcessed
());
List
<
HashMap
>
types
=
reportDao
.
getReportType
(
workbench
);
for
(
HashMap
type:
types
){
if
(
StringUtils
.
isNotBlank
((
String
)
type
.
get
(
"supplement_type"
))){
if
(
"1"
.
equals
((
String
)
type
.
get
(
"supplement_type"
))){
//营销
workbench
.
setSale
(
Integer
.
valueOf
(
String
.
valueOf
(
type
.
get
(
"COUNT(supplement_type)"
))));
}
else
if
(
"2"
.
equals
((
String
)
type
.
get
(
"supplement_type"
))){
//工程
workbench
.
setProject
(
Integer
.
valueOf
(
String
.
valueOf
(
type
.
get
(
"COUNT(supplement_type)"
))));
}
else
if
(
"3"
.
equals
(
String
.
valueOf
(
type
.
get
(
"supplement_type"
)))){
//成本
workbench
.
setCost
(
Integer
.
valueOf
(
String
.
valueOf
(
type
.
get
(
"COUNT(supplement_type)"
))));
}
else
if
(
"4"
.
equals
(
String
.
valueOf
(
type
.
get
(
"supplement_type"
)))){
//招采
workbench
.
setForMining
(
Integer
.
valueOf
(
String
.
valueOf
(
type
.
get
(
"COUNT(supplement_type)"
))));
}
else
if
(
"5"
.
equals
(
String
.
valueOf
(
type
.
get
(
"supplement_type"
)))){
//人力
workbench
.
setManpower
(
Integer
.
valueOf
(
String
.
valueOf
(
type
.
get
(
"COUNT(supplement_type)"
))));
}
else
if
(
"6"
.
equals
(
String
.
valueOf
(
type
.
get
(
"supplement_type"
)))){
//物业
workbench
.
setTenement
(
Integer
.
valueOf
(
String
.
valueOf
(
type
.
get
(
"COUNT(supplement_type)"
))));
}
else
if
(
"7"
.
equals
(
String
.
valueOf
(
type
.
get
(
"supplement_type"
)))){
//投诉
workbench
.
setComplain
(
Integer
.
valueOf
(
String
.
valueOf
(
type
.
get
(
"COUNT(supplement_type)"
))));
}
}
}
List
<
HashMap
>
totals
=
reportDao
.
getTotal
(
workbench
);
for
(
HashMap
total:
totals
){
if
(
StringUtils
.
isNotBlank
((
String
)
total
.
get
(
"report_source"
))){
if
(
"web"
.
equals
((
String
)
total
.
get
(
"report_source"
))){
//官网
workbench
.
setWeb
(
Integer
.
valueOf
(
String
.
valueOf
(
total
.
get
(
"COUNT(report_source)"
))));
}
else
if
(
"oa"
.
equals
((
String
)
total
.
get
(
"report_source"
))){
//融创oa
workbench
.
setOa
(
Integer
.
valueOf
(
String
.
valueOf
(
total
.
get
(
"COUNT(report_source)"
))));
}
else
if
(
"supplier"
.
equals
(
String
.
valueOf
(
total
.
get
(
"report_source"
)))){
//供应商
workbench
.
setSupplier
(
Integer
.
valueOf
(
String
.
valueOf
(
total
.
get
(
"COUNT(report_source)"
))));
}
else
if
(
"wechat"
.
equals
(
String
.
valueOf
(
total
.
get
(
"report_source"
)))){
//微信公众号
workbench
.
setWeChat
(
Integer
.
valueOf
(
String
.
valueOf
(
total
.
get
(
"COUNT(report_source)"
))));
}
else
if
(
"sunacE:"
.
equals
(
String
.
valueOf
(
total
.
get
(
"report_source"
)))){
//融E
workbench
.
setSunacE
(
Integer
.
valueOf
(
String
.
valueOf
(
total
.
get
(
"COUNT(report_source)"
))));
}
else
if
(
"offline"
.
equals
(
String
.
valueOf
(
total
.
get
(
"report_source"
)))){
//线下扫码
workbench
.
setOffline
(
Integer
.
valueOf
(
String
.
valueOf
(
total
.
get
(
"COUNT(report_source)"
))));
}
else
if
(
"tel"
.
equals
(
String
.
valueOf
(
total
.
get
(
"report_source"
)))){
//电话
workbench
.
setPhone
(
Integer
.
valueOf
(
String
.
valueOf
(
total
.
get
(
"COUNT(report_source)"
))));
}
else
if
(
"email:"
.
equals
((
String
)
total
.
get
(
"report_source"
))){
//邮件
workbench
.
setEmail
(
Integer
.
valueOf
(
String
.
valueOf
(
total
.
get
(
"COUNT(report_source)"
))));
}
}
}
workbench
.
setTotal
(
workbench
.
getWeb
()+
workbench
.
getOa
()+
workbench
.
getSupplier
()+
workbench
.
getWeChat
()+
workbench
.
getSunacE
()+
workbench
.
getOffline
()+
workbench
.
getPhone
()+
workbench
.
getEmail
());
return
workbench
;
}
public
List
<
ReportEntity
>
getRepList
(
WorkbenchBean
benchBean
)
throws
Exception
{
return
reportDao
.
getRepList
(
benchBean
);
}
}
src/main/java/com/ejweb/modules/workbench/web/WorkbenchController.java
0 → 100644
View file @
0a550977
package
com
.
ejweb
.
modules
.
workbench
.
web
;
import
com.alibaba.fastjson.JSONObject
;
import
com.ejweb.core.base.BaseController
;
import
com.ejweb.core.utils.StringUtils
;
import
com.ejweb.modules.report.entity.ReportEntity
;
import
com.ejweb.modules.report.service.ReportService
;
import
com.ejweb.modules.sys.entity.User
;
import
com.ejweb.modules.sys.utils.UserUtils
;
import
com.ejweb.modules.workbench.Bean.WorkbenchBean
;
import
com.ejweb.modules.workbench.service.WorkbenchService
;
import
org.apache.shiro.authz.annotation.RequiresPermissions
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.ui.Model
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
java.util.List
;
/**
* Created by mengxy on 2017/9/12.
*/
@Controller
@RequestMapping
(
"${adminPath}/workbench"
)
public
class
WorkbenchController
extends
BaseController
{
@Autowired
private
WorkbenchService
workbenchService
;
@Autowired
private
ReportService
reportService
;
@RequiresPermissions
(
"workbench:view"
)
@RequestMapping
(
value
={
"list"
,
""
})
public
String
getWorkbench
(
Model
model
,
WorkbenchBean
bean
){
WorkbenchBean
workbench
;
try
{
User
user
=
UserUtils
.
getUser
();
bean
=
getWorkbenchByUser
(
user
,
bean
);
if
(
StringUtils
.
isBlank
(
bean
.
getProcessStatus
())
||
"0"
.
equals
(
bean
.
getProcessStatus
())){
bean
.
setProcessStatus
(
"0"
);
}
else
if
(
"1"
.
equals
(
bean
.
getProcessStatus
())){
bean
.
setProcessStatus
(
"1"
);
}
List
<
ReportEntity
>
repList
=
workbenchService
.
getRepList
(
bean
);
model
.
addAttribute
(
"workbench"
,
bean
);
model
.
addAttribute
(
"repList"
,
repList
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
"modules/workbench/workbench"
;
}
@RequestMapping
(
"/getHighcharts"
)
@ResponseBody
public
JSONObject
getHighcharts
(
WorkbenchBean
bean
){
JSONObject
res
=
new
JSONObject
();
try
{
User
user
=
UserUtils
.
getUser
();
bean
=
getWorkbenchByUser
(
user
,
bean
);
res
.
put
(
"bench"
,
bean
);
//举报状态
res
.
put
(
"unProcess"
,
bean
.
getUnProcess
());
res
.
put
(
"processing"
,
bean
.
getProcessing
());
res
.
put
(
"processed"
,
bean
.
getProcessed
());
//举报结果
res
.
put
(
"invalid"
,
bean
.
getInvalid
());
res
.
put
(
"complainNum"
,
bean
.
getComplainNum
());
res
.
put
(
"verified"
,
bean
.
getVerified
());
res
.
put
(
"startDate"
,
bean
.
getStartDate
());
res
.
put
(
"endDate"
,
bean
.
getEndDate
());
//举报类型
res
.
put
(
"sale"
,
bean
.
getSale
());
res
.
put
(
"project"
,
bean
.
getProject
());
res
.
put
(
"cost"
,
bean
.
getCost
());
res
.
put
(
"forMining"
,
bean
.
getForMining
());
res
.
put
(
"manpower"
,
bean
.
getManpower
());
res
.
put
(
"tenement"
,
bean
.
getTenement
());
res
.
put
(
"complain"
,
bean
.
getComplain
());
res
.
put
(
"startDate"
,
bean
.
getStartDate
());
res
.
put
(
"endDate"
,
bean
.
getEndDate
());
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
res
;
}
// @RequestMapping("/getRepResult")
// @ResponseBody
// public JSONObject getRepResult(WorkbenchBean bean){
// JSONObject res = new JSONObject();
// try {
// User user = UserUtils.getUser();
// bean = getWorkbenchByUser(user, bean);
// res.put("invalid",bean.getInvalid());
// res.put("complainNum",bean.getComplainNum());
// res.put("verified",bean.getVerified());
// res.put("startDate",bean.getStartDate());
// res.put("endDate",bean.getEndDate());
// } catch (Exception e) {
// e.printStackTrace();
// }
// return res;
// }
// @RequestMapping("/getRepType")
// @ResponseBody
// public JSONObject getRepType(WorkbenchBean bean){
// JSONObject res = new JSONObject();
// try {
// User user = UserUtils.getUser();
// bean = getWorkbenchByUser(user, bean);
// res.put("sale",bean.getSale());
// res.put("project",bean.getProject());
// res.put("cost",bean.getCost());
// res.put("forMining",bean.getForMining());
// res.put("manpower",bean.getManpower());
// res.put("tenement",bean.getTenement());
// res.put("complain",bean.getComplain());
// res.put("startDate",bean.getStartDate());
// res.put("endDate",bean.getEndDate());
// } catch (Exception e) {
// e.printStackTrace();
// }
// return res;
// }
public
WorkbenchBean
getWorkbenchByUser
(
User
user
,
WorkbenchBean
bean
){
if
(
user
!=
null
)
{
try
{
//判断登录人的角色
String
roleName
=
reportService
.
findRole
(
user
);
if
(
StringUtils
.
isNotBlank
(
roleName
))
{
if
(!
roleName
.
equals
(
"系统管理员"
))
{
bean
.
setIsAdmin
(
user
.
getId
());
}
}
bean
=
workbenchService
.
getWorkbench
(
bean
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
return
bean
;
}
}
src/main/webapp/WEB-INF/views/modules/workbench/workbench.jsp
0 → 100644
View file @
0a550977
This diff is collapsed.
Click to expand it.
src/main/webapp/assets/highcharts/exporting.js
0 → 100644
View file @
0a550977
/*
Highcharts JS v5.0.14 (2017-07-28)
Exporting module
(c) 2010-2017 Torstein Honsi
License: www.highcharts.com/license
*/
(
function
(
k
){
"object"
===
typeof
module
&&
module
.
exports
?
module
.
exports
=
k
:
k
(
Highcharts
)})(
function
(
k
){(
function
(
f
){
var
k
=
f
.
defaultOptions
,
p
=
f
.
doc
,
B
=
f
.
Chart
,
x
=
f
.
addEvent
,
I
=
f
.
removeEvent
,
F
=
f
.
fireEvent
,
r
=
f
.
createElement
,
C
=
f
.
discardElement
,
v
=
f
.
css
,
n
=
f
.
merge
,
D
=
f
.
pick
,
h
=
f
.
each
,
G
=
f
.
objectEach
,
t
=
f
.
extend
,
J
=
f
.
isTouchDevice
,
E
=
f
.
win
,
H
=
E
.
navigator
.
userAgent
,
K
=
f
.
Renderer
.
prototype
.
symbols
;
/Edge
\/
|Trident
\/
|MSIE /
.
test
(
H
);
/firefox/i
.
test
(
H
);
t
(
k
.
lang
,{
printChart
:
"Print chart"
,
downloadPNG
:
"Download PNG image"
,
downloadJPEG
:
"Download JPEG image"
,
downloadPDF
:
"Download PDF document"
,
downloadSVG
:
"Download SVG vector image"
,
contextButtonTitle
:
"Chart context menu"
});
k
.
navigation
=
{
buttonOptions
:{
theme
:{},
symbolSize
:
14
,
symbolX
:
12.5
,
symbolY
:
10.5
,
align
:
"right"
,
buttonSpacing
:
3
,
height
:
22
,
verticalAlign
:
"top"
,
width
:
24
}};
n
(
!
0
,
k
.
navigation
,{
menuStyle
:{
border
:
"1px solid #999999"
,
background
:
"#ffffff"
,
padding
:
"5px 0"
},
menuItemStyle
:{
padding
:
"0.5em 1em"
,
background
:
"none"
,
color
:
"#333333"
,
fontSize
:
J
?
"14px"
:
"11px"
,
transition
:
"background 250ms, color 250ms"
},
menuItemHoverStyle
:{
background
:
"#335cad"
,
color
:
"#ffffff"
},
buttonOptions
:{
symbolFill
:
"#666666"
,
symbolStroke
:
"#666666"
,
symbolStrokeWidth
:
3
,
theme
:{
fill
:
"#ffffff"
,
stroke
:
"none"
,
padding
:
5
}}});
k
.
exporting
=
{
type
:
"image/png"
,
url
:
"https://export.highcharts.com/"
,
printMaxWidth
:
780
,
scale
:
2
,
buttons
:{
contextButton
:{
className
:
"highcharts-contextbutton"
,
menuClassName
:
"highcharts-contextmenu"
,
symbol
:
"menu"
,
_titleKey
:
"contextButtonTitle"
,
menuItems
:
"printChart separator downloadPNG downloadJPEG downloadPDF downloadSVG"
.
split
(
" "
)}},
menuItemDefinitions
:{
printChart
:{
textKey
:
"printChart"
,
onclick
:
function
(){
this
.
print
()}},
separator
:{
separator
:
!
0
},
downloadPNG
:{
textKey
:
"downloadPNG"
,
onclick
:
function
(){
this
.
exportChart
()}},
downloadJPEG
:{
textKey
:
"downloadJPEG"
,
onclick
:
function
(){
this
.
exportChart
({
type
:
"image/jpeg"
})}},
downloadPDF
:{
textKey
:
"downloadPDF"
,
onclick
:
function
(){
this
.
exportChart
({
type
:
"application/pdf"
})}},
downloadSVG
:{
textKey
:
"downloadSVG"
,
onclick
:
function
(){
this
.
exportChart
({
type
:
"image/svg+xml"
})}}}};
f
.
post
=
function
(
a
,
b
,
e
){
var
c
=
r
(
"form"
,
n
({
method
:
"post"
,
action
:
a
,
enctype
:
"multipart/form-data"
},
e
),{
display
:
"none"
},
p
.
body
);
G
(
b
,
function
(
a
,
b
){
r
(
"input"
,{
type
:
"hidden"
,
name
:
b
,
value
:
a
},
null
,
c
)});
c
.
submit
();
C
(
c
)};
t
(
B
.
prototype
,{
sanitizeSVG
:
function
(
a
,
b
){
if
(
b
&&
b
.
exporting
&&
b
.
exporting
.
allowHTML
){
var
e
=
a
.
match
(
/<
\/
svg>
(
.*
?
$
)
/
);
e
&&
e
[
1
]
&&
(
e
=
'
\
x3cforeignObject x
\
x3d"0" y
\
x3d"0" width
\
x3d"'
+
b
.
chart
.
width
+
'" height
\
x3d"'
+
b
.
chart
.
height
+
'"
\
x3e
\
x3cbody xmlns
\
x3d"http://www.w3.org/1999/xhtml"
\
x3e'
+
e
[
1
]
+
"
\
x3c/body
\
x3e
\
x3c/foreignObject
\
x3e"
,
a
=
a
.
replace
(
"
\
x3c/svg
\
x3e"
,
e
+
"
\
x3c/svg
\
x3e"
))}
a
=
a
.
replace
(
/zIndex="
[^
"
]
+"/g
,
""
).
replace
(
/isShadow="
[^
"
]
+"/g
,
""
).
replace
(
/symbolName="
[^
"
]
+"/g
,
""
).
replace
(
/jQuery
[
0-9
]
+="
[^
"
]
+"/g
,
""
).
replace
(
/url
\((
"|"
)(\S
+
)(
"|"
)\)
/g
,
"url($2)"
).
replace
(
/url
\([^
#
]
+#/g
,
"url(#"
).
replace
(
/<svg /
,
'
\
x3csvg xmlns:xlink
\
x3d"http://www.w3.org/1999/xlink" '
).
replace
(
/
(
NS
[
0-9
]
+
\:)?
href=/g
,
" xlink:href
\
x3d"
).
replace
(
/
\n
/
,
" "
).
replace
(
/<
\/
svg>.*
?
$/
,
"
\
x3c/svg
\
x3e"
).
replace
(
/
(
fill|stroke
)
="rgba
\(([
0-9
]
+,
[
0-9
]
+,
[
0-9
]
+
)
,
([
0-9
\.]
+
)\)
"/g
,
'$1
\
x3d"rgb($2)" $1-opacity
\
x3d"$3"'
).
replace
(
/ /g
,
"
\
u00a0"
).
replace
(
/­/g
,
"
\
u00ad"
);
return
a
=
a
.
replace
(
/<IMG /g
,
"
\
x3cimage "
).
replace
(
/<
(\/?)
TITLE>/g
,
"
\
x3c$1title
\
x3e"
).
replace
(
/height=
([^
"
]
+
)
/g
,
'height
\
x3d"$1"'
).
replace
(
/width=
([^
"
]
+
)
/g
,
'width
\
x3d"$1"'
).
replace
(
/hc-svg-href="
([^
"
]
+
)
">/g
,
'xlink:href
\
x3d"$1"/
\
x3e'
).
replace
(
/ id=
([^
" >
]
+
)
/g
,
' id
\
x3d"$1"'
).
replace
(
/class=
([^
" >
]
+
)
/g
,
'class
\
x3d"$1"'
).
replace
(
/ transform /g
,
" "
).
replace
(
/:
(
path|rect
)
/g
,
"$1"
).
replace
(
/style="
([^
"
]
+
)
"/g
,
function
(
a
){
return
a
.
toLowerCase
()})},
getChartHTML
:
function
(){
return
this
.
container
.
innerHTML
},
getSVG
:
function
(
a
){
var
b
,
e
,
c
,
w
,
m
,
g
=
n
(
this
.
options
,
a
);
p
.
createElementNS
||
(
p
.
createElementNS
=
function
(
a
,
b
){
return
p
.
createElement
(
b
)});
e
=
r
(
"div"
,
null
,{
position
:
"absolute"
,
top
:
"-9999em"
,
width
:
this
.
chartWidth
+
"px"
,
height
:
this
.
chartHeight
+
"px"
},
p
.
body
);
c
=
this
.
renderTo
.
style
.
width
;
m
=
this
.
renderTo
.
style
.
height
;
c
=
g
.
exporting
.
sourceWidth
||
g
.
chart
.
width
||
/px$/
.
test
(
c
)
&&
parseInt
(
c
,
10
)
||
600
;
m
=
g
.
exporting
.
sourceHeight
||
g
.
chart
.
height
||
/px$/
.
test
(
m
)
&&
parseInt
(
m
,
10
)
||
400
;
t
(
g
.
chart
,{
animation
:
!
1
,
renderTo
:
e
,
forExport
:
!
0
,
renderer
:
"SVGRenderer"
,
width
:
c
,
height
:
m
});
g
.
exporting
.
enabled
=!
1
;
delete
g
.
data
;
g
.
series
=
[];
h
(
this
.
series
,
function
(
a
){
w
=
n
(
a
.
userOptions
,{
animation
:
!
1
,
enableMouseTracking
:
!
1
,
showCheckbox
:
!
1
,
visible
:
a
.
visible
});
w
.
isInternal
||
g
.
series
.
push
(
w
)});
h
(
this
.
axes
,
function
(
a
){
a
.
userOptions
.
internalKey
||
(
a
.
userOptions
.
internalKey
=
f
.
uniqueKey
())});
b
=
new
f
.
Chart
(
g
,
this
.
callback
);
a
&&
h
([
"xAxis"
,
"yAxis"
,
"series"
],
function
(
c
){
var
d
=
{};
a
[
c
]
&&
(
d
[
c
]
=
a
[
c
],
b
.
update
(
d
))});
h
(
this
.
axes
,
function
(
a
){
var
c
=
f
.
find
(
b
.
axes
,
function
(
b
){
return
b
.
options
.
internalKey
===
a
.
userOptions
.
internalKey
}),
d
=
a
.
getExtremes
(),
e
=
d
.
userMin
,
d
=
d
.
userMax
;
!
c
||
void
0
===
e
&&
void
0
===
d
||
c
.
setExtremes
(
e
,
d
,
!
0
,
!
1
)});
c
=
b
.
getChartHTML
();
c
=
this
.
sanitizeSVG
(
c
,
g
);
g
=
null
;
b
.
destroy
();
C
(
e
);
return
c
},
getSVGForExport
:
function
(
a
,
b
){
var
e
=
this
.
options
.
exporting
;
return
this
.
getSVG
(
n
({
chart
:{
borderRadius
:
0
}},
e
.
chartOptions
,
b
,{
exporting
:{
sourceWidth
:
a
&&
a
.
sourceWidth
||
e
.
sourceWidth
,
sourceHeight
:
a
&&
a
.
sourceHeight
||
e
.
sourceHeight
}}))},
exportChart
:
function
(
a
,
b
){
b
=
this
.
getSVGForExport
(
a
,
b
);
a
=
n
(
this
.
options
.
exporting
,
a
);
f
.
post
(
a
.
url
,{
filename
:
a
.
filename
||
"chart"
,
type
:
a
.
type
,
width
:
a
.
width
||
0
,
scale
:
a
.
scale
,
svg
:
b
},
a
.
formAttributes
)},
print
:
function
(){
var
a
=
this
,
b
=
a
.
container
,
e
=
[],
c
=
b
.
parentNode
,
f
=
p
.
body
,
m
=
f
.
childNodes
,
g
=
a
.
options
.
exporting
.
printMaxWidth
,
d
,
u
;
if
(
!
a
.
isPrinting
){
a
.
isPrinting
=!
0
;
a
.
pointer
.
reset
(
null
,
0
);
F
(
a
,
"beforePrint"
);
if
(
u
=
g
&&
a
.
chartWidth
>
g
)
d
=
[
a
.
options
.
chart
.
width
,
void
0
,
!
1
],
a
.
setSize
(
g
,
void
0
,
!
1
);
h
(
m
,
function
(
a
,
b
){
1
===
a
.
nodeType
&&
(
e
[
b
]
=
a
.
style
.
display
,
a
.
style
.
display
=
"none"
)});
f
.
appendChild
(
b
);
E
.
focus
();
E
.
print
();
setTimeout
(
function
(){
c
.
appendChild
(
b
);
h
(
m
,
function
(
a
,
b
){
1
===
a
.
nodeType
&&
(
a
.
style
.
display
=
e
[
b
])});
a
.
isPrinting
=!
1
;
u
&&
a
.
setSize
.
apply
(
a
,
d
);
F
(
a
,
"afterPrint"
)},
1
E3
)}},
contextMenu
:
function
(
a
,
b
,
e
,
c
,
w
,
m
,
g
){
var
d
=
this
,
u
=
d
.
options
.
navigation
,
k
=
d
.
chartWidth
,
q
=
d
.
chartHeight
,
n
=
"cache-"
+
a
,
l
=
d
[
n
],
y
=
Math
.
max
(
w
,
m
),
z
,
A
;
l
||
(
d
[
n
]
=
l
=
r
(
"div"
,{
className
:
a
},{
position
:
"absolute"
,
zIndex
:
1
E3
,
padding
:
y
+
"px"
},
d
.
container
),
z
=
r
(
"div"
,{
className
:
"highcharts-menu"
},
null
,
l
),
v
(
z
,
t
({
MozBoxShadow
:
"3px 3px 10px #888"
,
WebkitBoxShadow
:
"3px 3px 10px #888"
,
boxShadow
:
"3px 3px 10px #888"
},
u
.
menuStyle
)),
A
=
function
(){
v
(
l
,{
display
:
"none"
});
g
&&
g
.
setState
(
0
);
d
.
openMenu
=!
1
},
d
.
exportEvents
.
push
(
x
(
l
,
"mouseleave"
,
function
(){
l
.
hideTimer
=
setTimeout
(
A
,
500
)}),
x
(
l
,
"mouseenter"
,
function
(){
clearTimeout
(
l
.
hideTimer
)}),
x
(
p
,
"mouseup"
,
function
(
b
){
d
.
pointer
.
inClass
(
b
.
target
,
a
)
||
A
()})),
h
(
b
,
function
(
a
){
"string"
===
typeof
a
&&
(
a
=
d
.
options
.
exporting
.
menuItemDefinitions
[
a
]);
if
(
f
.
isObject
(
a
,
!
0
)){
var
b
;
a
.
separator
?
b
=
r
(
"hr"
,
null
,
null
,
z
):(
b
=
r
(
"div"
,{
className
:
"highcharts-menu-item"
,
onclick
:
function
(
b
){
b
&&
b
.
stopPropagation
();
A
();
a
.
onclick
&&
a
.
onclick
.
apply
(
d
,
arguments
)},
innerHTML
:
a
.
text
||
d
.
options
.
lang
[
a
.
textKey
]},
null
,
z
),
b
.
onmouseover
=
function
(){
v
(
this
,
u
.
menuItemHoverStyle
)},
b
.
onmouseout
=
function
(){
v
(
this
,
u
.
menuItemStyle
)},
v
(
b
,
t
({
cursor
:
"pointer"
},
u
.
menuItemStyle
)));
d
.
exportDivElements
.
push
(
b
)}}),
d
.
exportDivElements
.
push
(
z
,
l
),
d
.
exportMenuWidth
=
l
.
offsetWidth
,
d
.
exportMenuHeight
=
l
.
offsetHeight
);
b
=
{
display
:
"block"
};
e
+
d
.
exportMenuWidth
>
k
?
b
.
right
=
k
-
e
-
w
-
y
+
"px"
:
b
.
left
=
e
-
y
+
"px"
;
c
+
m
+
d
.
exportMenuHeight
>
q
&&
"top"
!==
g
.
alignOptions
.
verticalAlign
?
b
.
bottom
=
q
-
c
-
y
+
"px"
:
b
.
top
=
c
+
m
-
y
+
"px"
;
v
(
l
,
b
);
d
.
openMenu
=!
0
},
addButton
:
function
(
a
){
var
b
=
this
,
e
=
b
.
renderer
,
c
=
n
(
b
.
options
.
navigation
.
buttonOptions
,
a
),
f
=
c
.
onclick
,
m
=
c
.
menuItems
,
g
,
d
,
k
=
c
.
symbolSize
||
12
;
b
.
btnCount
||
(
b
.
btnCount
=
0
);
b
.
exportDivElements
||
(
b
.
exportDivElements
=
[],
b
.
exportSVGElements
=
[]);
if
(
!
1
!==
c
.
enabled
){
var
h
=
c
.
theme
,
q
=
h
.
states
,
p
=
q
&&
q
.
hover
,
q
=
q
&&
q
.
select
,
l
;
delete
h
.
states
;
f
?
l
=
function
(
a
){
a
.
stopPropagation
();
f
.
call
(
b
,
a
)}:
m
&&
(
l
=
function
(){
b
.
contextMenu
(
d
.
menuClassName
,
m
,
d
.
translateX
,
d
.
translateY
,
d
.
width
,
d
.
height
,
d
);
d
.
setState
(
2
)});
c
.
text
&&
c
.
symbol
?
h
.
paddingLeft
=
D
(
h
.
paddingLeft
,
25
):
c
.
text
||
t
(
h
,{
width
:
c
.
width
,
height
:
c
.
height
,
padding
:
0
});
d
=
e
.
button
(
c
.
text
,
0
,
0
,
l
,
h
,
p
,
q
).
addClass
(
a
.
className
).
attr
({
"stroke-linecap"
:
"round"
,
title
:
b
.
options
.
lang
[
c
.
_titleKey
],
zIndex
:
3
});
d
.
menuClassName
=
a
.
menuClassName
||
"highcharts-menu-"
+
b
.
btnCount
++
;
c
.
symbol
&&
(
g
=
e
.
symbol
(
c
.
symbol
,
c
.
symbolX
-
k
/
2
,
c
.
symbolY
-
k
/
2
,
k
,
k
).
addClass
(
"highcharts-button-symbol"
).
attr
({
zIndex
:
1
}).
add
(
d
),
g
.
attr
({
stroke
:
c
.
symbolStroke
,
fill
:
c
.
symbolFill
,
"stroke-width"
:
c
.
symbolStrokeWidth
||
1
}));
d
.
add
().
align
(
t
(
c
,{
width
:
d
.
width
,
x
:
D
(
c
.
x
,
b
.
buttonOffset
)}),
!
0
,
"spacingBox"
);
b
.
buttonOffset
+=
(
d
.
width
+
c
.
buttonSpacing
)
*
(
"right"
===
c
.
align
?
-
1
:
1
);
b
.
exportSVGElements
.
push
(
d
,
g
)}},
destroyExport
:
function
(
a
){
var
b
=
a
?
a
.
target
:
this
;
a
=
b
.
exportSVGElements
;
var
e
=
b
.
exportDivElements
,
c
=
b
.
exportEvents
,
f
;
a
&&
(
h
(
a
,
function
(
a
,
c
){
a
&&
(
a
.
onclick
=
a
.
ontouchstart
=
null
,
f
=
"cache-"
+
a
.
menuClassName
,
b
[
f
]
&&
delete
b
[
f
],
b
.
exportSVGElements
[
c
]
=
a
.
destroy
())}),
a
.
length
=
0
);
e
&&
(
h
(
e
,
function
(
a
,
c
){
clearTimeout
(
a
.
hideTimer
);
I
(
a
,
"mouseleave"
);
b
.
exportDivElements
[
c
]
=
a
.
onmouseout
=
a
.
onmouseover
=
a
.
ontouchstart
=
a
.
onclick
=
null
;
C
(
a
)}),
e
.
length
=
0
);
c
&&
(
h
(
c
,
function
(
a
){
a
()}),
c
.
length
=
0
)}});
K
.
menu
=
function
(
a
,
b
,
e
,
c
){
return
[
"M"
,
a
,
b
+
2.5
,
"L"
,
a
+
e
,
b
+
2.5
,
"M"
,
a
,
b
+
c
/
2
+
.
5
,
"L"
,
a
+
e
,
b
+
c
/
2
+
.
5
,
"M"
,
a
,
b
+
c
-
1.5
,
"L"
,
a
+
e
,
b
+
c
-
1.5
]};
B
.
prototype
.
renderExporting
=
function
(){
var
a
=
this
,
b
=
a
.
options
.
exporting
,
e
=
b
.
buttons
,
c
=
a
.
isDirtyExporting
||!
a
.
exportSVGElements
;
a
.
buttonOffset
=
0
;
a
.
isDirtyExporting
&&
a
.
destroyExport
();
c
&&!
1
!==
b
.
enabled
&&
(
a
.
exportEvents
=
[],
G
(
e
,
function
(
b
){
a
.
addButton
(
b
)}),
a
.
isDirtyExporting
=!
1
);
x
(
a
,
"destroy"
,
a
.
destroyExport
)};
B
.
prototype
.
callbacks
.
push
(
function
(
a
){
a
.
renderExporting
();
x
(
a
,
"redraw"
,
a
.
renderExporting
);
h
([
"exporting"
,
"navigation"
],
function
(
b
){
a
[
b
]
=
{
update
:
function
(
e
,
c
){
a
.
isDirtyExporting
=!
0
;
n
(
!
0
,
a
.
options
[
b
],
e
);
D
(
c
,
!
0
)
&&
a
.
redraw
()}}})})})(
k
)});
src/main/webapp/assets/highcharts/highcharts-zh_CN.js
0 → 100644
View file @
0a550977
(
function
(
H
){
var
protocol
=
window
.
location
.
protocol
;
var
defaultOptionsZhCn
=
{
lang
:{
contextButtonTitle
:
'图表导出菜单'
,
decimalPoint
:
'.'
,
downloadJPEG
:
"下载JPEG图片"
,
downloadPDF
:
"下载PDF文件"
,
downloadPNG
:
"下载PNG文件"
,
downloadSVG
:
"下载SVG文件"
,
drillUpText
:
"返回 {series.name}"
,
invalidDate
:
'无效的时间'
,
loading
:
'加载中...'
,
months
:[
'一月'
,
'二月'
,
'三月'
,
'四月'
,
'五月'
,
'六月'
,
'七月'
,
'八月'
,
'九月'
,
'十月'
,
'十一月'
,
'十二月'
],
noData
:
"没有数据"
,
numericSymbols
:
null
,
printChart
:
"打印图表"
,
resetZoom
:
'重置缩放比例'
,
resetZoomTitle
:
'重置为原始大小'
,
shortMonths
:[
'一月'
,
'二月'
,
'三月'
,
'四月'
,
'五月'
,
'六月'
,
'七月'
,
'八月'
,
'九月'
,
'十月'
,
'十一月'
,
'十二月'
],
thousandsSep
:
','
,
weekdays
:[
'星期一'
,
'星期二'
,
'星期三'
,
'星期四'
,
'星期五'
,
'星期六'
,
'星期天'
],
rangeSelectorFrom
:
'开始时间'
,
rangeSelectorTo
:
'结束时间'
,
rangeSelectorZoom
:
'缩放'
,
zoomIn
:
'缩小'
,
zoomOut
:
'放大'
},
global
:{
useUTC
:
true
,
canvasToolsURL
:
protocol
+
'//cdn.hcharts.cn/highcharts/modules/canvas-tools.js'
,
VMLRadialGradientURL
:
protocol
+
+
'//cdn.hcharts.cn/highcharts/gfx/vml-radial-gradient.png'
},
title
:{
text
:
'图表标题'
},
tooltip
:{
dateTimeLabelFormats
:{
millisecond
:
'%H:%M:%S.%L'
,
second
:
'%H:%M:%S'
,
minute
:
'%H:%M'
,
hour
:
'%H:%M'
,
day
:
'%Y-%m-%d'
,
week
:
'Week from %A, %b %e, %Y'
,
month
:
'%Y-%m'
,
year
:
'%Y'
}},
exporting
:{
url
:
protocol
+
'//export.highcharts.com.cn'
},
credits
:{
text
:
'Highcharts.com.cn'
,
href
:
'https://www.highcharts.com.cn'
},
xAxis
:{
dateTimeLabelFormats
:{
millisecond
:
'%H:%M:%S.%L'
,
second
:
'%H:%M:%S'
,
minute
:
'%H:%M'
,
hour
:
'%H:%M'
,
day
:
'%Y-%m-%d'
,
week
:
'%e. %b'
,
month
:
'%Y-%m'
,
year
:
'%Y'
}}};
H
.
setOptions
(
defaultOptionsZhCn
)}(
Highcharts
));
\ No newline at end of file
src/main/webapp/assets/highcharts/highcharts.js
0 → 100644
View file @
0a550977
This source diff could not be displayed because it is too large. You can
view the blob
instead.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment