Commit 47367ea67920a2859b5930cc6c1a51971bed5f99

Authored by 王通
2 parents fb68ef04 105a7390

Merge branch 'lggj' of http://61.169.120.202:8888/panzhaov5/bsth_control into lggj

Showing 46 changed files with 3138 additions and 1064 deletions

Too many changes to show.

To preserve performance only 46 of 120 files are displayed.

src/main/java/com/bsth/controller/lg_travel/RegionConterller.java 0 → 100644
  1 +package com.bsth.controller.lg_travel;
  2 +
  3 +import com.bsth.controller.BaseController;
  4 +import com.bsth.entity.lg_travel.Region;
  5 +import org.springframework.web.bind.annotation.RequestMapping;
  6 +import org.springframework.web.bind.annotation.RestController;
  7 +
  8 +/**
  9 + * 区域
  10 + */
  11 +
  12 +@RestController
  13 +@RequestMapping("region")
  14 +public class RegionConterller extends BaseController<Region, Long> {
  15 +
  16 +
  17 +}
src/main/java/com/bsth/controller/oil/JdlController.java
@@ -2,21 +2,21 @@ package com.bsth.controller.oil; @@ -2,21 +2,21 @@ package com.bsth.controller.oil;
2 2
3 import java.io.File; 3 import java.io.File;
4 import java.util.HashMap; 4 import java.util.HashMap;
  5 +import java.util.List;
5 import java.util.Map; 6 import java.util.Map;
6 7
  8 +import javax.servlet.http.HttpServletResponse;
  9 +
7 import org.springframework.beans.factory.annotation.Autowired; 10 import org.springframework.beans.factory.annotation.Autowired;
8 import org.springframework.web.bind.annotation.RequestMapping; 11 import org.springframework.web.bind.annotation.RequestMapping;
9 import org.springframework.web.bind.annotation.RequestMethod; 12 import org.springframework.web.bind.annotation.RequestMethod;
10 import org.springframework.web.bind.annotation.RequestParam; 13 import org.springframework.web.bind.annotation.RequestParam;
11 import org.springframework.web.bind.annotation.RestController; 14 import org.springframework.web.bind.annotation.RestController;
12 import org.springframework.web.multipart.MultipartFile; 15 import org.springframework.web.multipart.MultipartFile;
13 -import org.springframework.web.servlet.ModelAndView;  
14 16
15 -import com.alibaba.fastjson.JSON;  
16 -import com.alibaba.fastjson.JSONArray;  
17 -import com.alibaba.fastjson.JSONObject;  
18 import com.bsth.controller.BaseController; 17 import com.bsth.controller.BaseController;
19 import com.bsth.entity.oil.Jdl; 18 import com.bsth.entity.oil.Jdl;
  19 +import com.bsth.entity.oil.JdlReception;
20 import com.bsth.service.oil.JdlService; 20 import com.bsth.service.oil.JdlService;
21 import com.google.common.io.Files; 21 import com.google.common.io.Files;
22 22
@@ -46,9 +46,56 @@ public class JdlController extends BaseController&lt;Jdl, Integer&gt; { @@ -46,9 +46,56 @@ public class JdlController extends BaseController&lt;Jdl, Integer&gt; {
46 return "{\"result\":" + "\""+result+"\"}"; 46 return "{\"result\":" + "\""+result+"\"}";
47 } 47 }
48 48
  49 + /** 24年12月工单更新电量导入 */
  50 + @RequestMapping(value = "/uploadFile_2412",method = RequestMethod.POST)
  51 + public String uploadFile_2412(MultipartFile file, String gsbm_, String gsName,
  52 + String fgsbm_, String fgsName) throws Exception{
  53 + File newFile = new File(
  54 + getDataImportClasspath() + File.separator +
  55 + file.getOriginalFilename());
  56 + Files.write(file.getBytes(), newFile);
  57 + String result = jdlService.importExcel_2412(newFile, gsbm_, gsName, fgsbm_, fgsName);
  58 + return "{\"result\":" + "\""+result+"\"}";
  59 + }
  60 +
49 @RequestMapping(value = "/query",method = RequestMethod.GET) 61 @RequestMapping(value = "/query",method = RequestMethod.GET)
50 public Map<String, Object> query(@RequestParam Map<String, Object> map) throws Exception{ 62 public Map<String, Object> query(@RequestParam Map<String, Object> map) throws Exception{
51 return jdlService.query(map); 63 return jdlService.query(map);
52 } 64 }
53 65
  66 + @RequestMapping(value = "/query_2412",method = RequestMethod.GET)
  67 + public Map<String, Object> query_2412(@RequestParam Map<String, Object> map) throws Exception{
  68 + return jdlService.query_2412(map);
  69 + }
  70 +
  71 + @RequestMapping(value = "/queryJdlReception",method = RequestMethod.GET)
  72 + public List<JdlReception> queryJdlReception(@RequestParam Map<String, Object> map) throws Exception{
  73 + return jdlService.queryJdlReception(map);
  74 + }
  75 +
  76 + @RequestMapping(value = "/queryJdlReceptionBatch",method = RequestMethod.GET)
  77 + public Map<String, Object> queryJdlReceptionBatch(@RequestParam Map<String, Object> map) throws Exception{
  78 + return jdlService.queryJdlReceptionBatch(map);
  79 + }
  80 +
  81 + @RequestMapping(value = "/queryJdlReceptionBatchData",method = RequestMethod.GET)
  82 + public List<JdlReception> queryJdlReceptionBatchData(@RequestParam Map<String, Object> map) throws Exception{
  83 + return jdlService.queryJdlReceptionBatchData(map);
  84 + }
  85 +
  86 + @RequestMapping(value = "/deleteJdlReceptionBatch",method = RequestMethod.POST)
  87 + public Map<String, Object> deleteJdlReceptionBatch(@RequestParam Map<String, Object> map) throws Exception{
  88 + return jdlService.deleteJdlReceptionBatch(map);
  89 + }
  90 +
  91 + @RequestMapping(value = "/updateJdlReceptionBatch",method = RequestMethod.POST)
  92 + public Map<String, Object> updateJdlReceptionBatch(@RequestParam Map<String, Object> map) throws Exception{
  93 + return jdlService.updateJdlReceptionBatch(map);
  94 + }
  95 +
  96 + @RequestMapping(value = "/downloadJdlReceptionImportFile",method = RequestMethod.GET)
  97 + public void downloadJdlReceptionImportFile(@RequestParam Map<String, Object> map, HttpServletResponse response) throws Exception{
  98 + jdlService.downloadJdlReceptionImportFile(map, response);
  99 + }
  100 +
54 } 101 }
src/main/java/com/bsth/data/pilot80/PilotReport.java
1 package com.bsth.data.pilot80; 1 package com.bsth.data.pilot80;
2 2
  3 +import com.alibaba.fastjson.JSON;
3 import com.alibaba.fastjson.JSONObject; 4 import com.alibaba.fastjson.JSONObject;
4 import com.bsth.data.BasicData; 5 import com.bsth.data.BasicData;
5 import com.bsth.data.LineConfigData; 6 import com.bsth.data.LineConfigData;
@@ -13,6 +14,7 @@ import com.bsth.entity.realcontrol.LineConfig; @@ -13,6 +14,7 @@ import com.bsth.entity.realcontrol.LineConfig;
13 import com.bsth.entity.realcontrol.ScheduleRealInfo; 14 import com.bsth.entity.realcontrol.ScheduleRealInfo;
14 import com.bsth.repository.directive.D80Repository; 15 import com.bsth.repository.directive.D80Repository;
15 import com.bsth.repository.directive.DC0A4Repository; 16 import com.bsth.repository.directive.DC0A4Repository;
  17 +import com.bsth.service.SystemParamService;
16 import com.bsth.service.directive.DirectiveService; 18 import com.bsth.service.directive.DirectiveService;
17 import com.bsth.util.HttpClientUtils; 19 import com.bsth.util.HttpClientUtils;
18 import com.bsth.websocket.handler.SendUtils; 20 import com.bsth.websocket.handler.SendUtils;
@@ -22,7 +24,10 @@ import org.slf4j.LoggerFactory; @@ -22,7 +24,10 @@ import org.slf4j.LoggerFactory;
22 import org.springframework.beans.factory.annotation.Autowired; 24 import org.springframework.beans.factory.annotation.Autowired;
23 import org.springframework.stereotype.Component; 25 import org.springframework.stereotype.Component;
24 26
25 -import java.util.*; 27 +import java.util.ArrayList;
  28 +import java.util.Collection;
  29 +import java.util.Date;
  30 +import java.util.List;
26 import java.util.concurrent.ConcurrentHashMap; 31 import java.util.concurrent.ConcurrentHashMap;
27 32
28 /** 33 /**
@@ -53,6 +58,8 @@ public class PilotReport { @@ -53,6 +58,8 @@ public class PilotReport {
53 @Autowired 58 @Autowired
54 GpsStatusManager gpsStatusManager; 59 GpsStatusManager gpsStatusManager;
55 60
  61 + @Autowired
  62 + private SystemParamService systemParamService;
56 private static ConcurrentHashMap<Integer, D80> d80Maps; 63 private static ConcurrentHashMap<Integer, D80> d80Maps;
57 64
58 /** 65 /**
@@ -99,21 +106,11 @@ public class PilotReport { @@ -99,21 +106,11 @@ public class PilotReport {
99 } 106 }
100 break; 107 break;
101 //报警请求 108 //报警请求
102 - case 0x10:  
103 - try {  
104 - String url = "http://58.34.52.130:9103/dataDockingApi/accident/saveAccident?";  
105 - url = url + "accidentTime=" + new Date().getTime() + "&nbbm=" + nbbm;  
106 - logger.info("url===="+url);  
107 - String res = HttpClientUtils.get(url).toString();  
108 - JSONObject jsonObject = JSONObject.parseObject(res);  
109 - if ((int) jsonObject.get("code") == 200) {  
110 - logger.info("报警请求成功");  
111 - }else {  
112 - logger.info("报警请求失败");  
113 - }  
114 - }catch (Exception e){  
115 - logger.info("报警请求异常");  
116 - } 109 + case 0x21:
  110 + case 0x22:
  111 + case 0x23:
  112 + case 0x24:
  113 + yjbj(nbbm,d80);
117 break; 114 break;
118 } 115 }
119 116
@@ -129,6 +126,39 @@ public class PilotReport { @@ -129,6 +126,39 @@ public class PilotReport {
129 } 126 }
130 } 127 }
131 128
  129 + public void yjbj(String nbbm,D80 d80){
  130 + try {
  131 + ScheduleRealInfo sch = null;
  132 + if (d80.getSchId() == null){
  133 + logger.info(nbbm+"-----车辆没有班次");
  134 + return;
  135 + }
  136 + if (d80.getData().getStopNo() != null && !d80.getData().getStopNo().equals("")){
  137 + d80.setStationName(BasicData.stationCode2NameMap.get(d80.getData().getStopNo()));
  138 + }
  139 +
  140 + sch = dayOfSchedule.get(d80.getSchId());
  141 + Long nextschid = dayOfSchedule.nextByLp(sch).getId();
  142 + d80.setNextschId(nextschid);
  143 + String url = systemParamService.getValue("url.yjbj")+"dataDockingApi/accident/saveAccident?";
  144 + url = url + "accidentTime=" + new Date().getTime() + "&nbbm=" + nbbm +"&requestCode=" +d80.getData().getRequestCode()
  145 + +"&lineName=" +sch.getXlName()+"&jsy=" +sch.getjGh()+"&jsName=" +sch.getjName()+"&lon=" +d80.getData().getLon()+"&lat="+d80.getData().getLat();
  146 +
  147 + logger.info("url===="+url);
  148 + StringBuilder sb = HttpClientUtils.get(url);
  149 +
  150 +
  151 + JSONObject jsonObject = JSON.parseObject(sb.toString());
  152 + if ((int) jsonObject.get("code") == 200) {
  153 + logger.info("报警请求成功=" + jsonObject.get("msg"));
  154 + }else {
  155 + logger.info("报警请求失败="+ jsonObject.get("msg"));
  156 + }
  157 + }catch (Exception e){
  158 + logger.info("报警请求异常",e);
  159 + }
  160 + }
  161 +
132 public void report(DC0_A4 c0a4) { 162 public void report(DC0_A4 c0a4) {
133 String deviceId = c0a4.getData().getDeviceId(); 163 String deviceId = c0a4.getData().getDeviceId();
134 if (StringUtils.isNotEmpty(deviceId)) 164 if (StringUtils.isNotEmpty(deviceId))
src/main/java/com/bsth/data/zndd/AutomaticSch.java
@@ -29,8 +29,6 @@ import org.springframework.stereotype.Component; @@ -29,8 +29,6 @@ import org.springframework.stereotype.Component;
29 import java.text.ParseException; 29 import java.text.ParseException;
30 import java.text.SimpleDateFormat; 30 import java.text.SimpleDateFormat;
31 import java.util.*; 31 import java.util.*;
32 -import java.util.concurrent.ConcurrentHashMap;  
33 -import java.util.concurrent.ConcurrentMap;  
34 import java.util.regex.Matcher; 32 import java.util.regex.Matcher;
35 import java.util.regex.Pattern; 33 import java.util.regex.Pattern;
36 34
@@ -62,20 +60,16 @@ public class AutomaticSch { @@ -62,20 +60,16 @@ public class AutomaticSch {
62 @Autowired 60 @Autowired
63 ZnddYuAnService znddYuAnService; 61 ZnddYuAnService znddYuAnService;
64 62
65 - Queue<Map> queue = new LinkedList<>();  
66 -  
67 private static SimpleDateFormat sdfHHmm = new SimpleDateFormat("HH:mm"); 63 private static SimpleDateFormat sdfHHmm = new SimpleDateFormat("HH:mm");
68 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm"); 64 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm");
69 65
70 private static Comparator<ScheduleRealInfo> cpm = new ScheduleComparator.DFSJ2(); 66 private static Comparator<ScheduleRealInfo> cpm = new ScheduleComparator.DFSJ2();
71 private Map<String,Long> drivreMap =new HashMap<>(); //自动重发map 67 private Map<String,Long> drivreMap =new HashMap<>(); //自动重发map
72 - // 当日60指令缓存  
73 - private ConcurrentMap<Integer, D60> d60Map = new ConcurrentHashMap<>();//d60map  
74 68
75 - String urldkl = "http://10.10.200.202:5580/monitor/api/getMonitorInfoByDay?key=1&solt=1111&t=1&dayStr=2024-10-23"; //大间隔接口 69 + String urldkl = "http://10.10.200.202:5580/monitor/api/getMonitorInfoByDay?key=1&solt=1111&t=1&dayStr=2024-12-04"; //大间隔接口
76 70
77 //http://10.10.200.201:8083/wxk-prod-api/service-api/lggj/schedule/drByInfo 维修接口 71 //http://10.10.200.201:8083/wxk-prod-api/service-api/lggj/schedule/drByInfo 维修接口
78 - 72 + String urldkls = "http://10.10.200.140:13089/bsth_passengerflow/klbus/currentInsideNum.do"; //满载接口
79 private Map<String,Long> SFMAP = new HashMap<>(); 73 private Map<String,Long> SFMAP = new HashMap<>();
80 74
81 //满载 75 //满载
@@ -84,6 +78,9 @@ public class AutomaticSch { @@ -84,6 +78,9 @@ public class AutomaticSch {
84 78
85 List<ScheduleRealInfo> sr = dayOfSchedule.findByBcType("W9G-041","normal"); 79 List<ScheduleRealInfo> sr = dayOfSchedule.findByBcType("W9G-041","normal");
86 ts(addStationPeople(sr.get(5), "MZ", 0L));//第二种 设备未离线 出站时间内未出站 80 ts(addStationPeople(sr.get(5), "MZ", 0L));//第二种 设备未离线 出站时间内未出站
  81 +
  82 + String chartStr = JSON.toJSONString(sr.get(5));
  83 + logger.info("满载--"+chartStr);
87 } 84 }
88 catch (Exception e){ 85 catch (Exception e){
89 logger.error("满载------------------",e); 86 logger.error("满载------------------",e);
@@ -109,10 +106,14 @@ public class AutomaticSch { @@ -109,10 +106,14 @@ public class AutomaticSch {
109 if (k == 0 ){ 106 if (k == 0 ){
110 if(lg.getlGType() == 0){ 107 if(lg.getlGType() == 0){
111 ts(ConvertDJK(lg,sch,"FCJG")); 108 ts(ConvertDJK(lg,sch,"FCJG"));
  109 + String chartStr = JSON.toJSONString(sch);
  110 + logger.info("发车大间隔--"+chartStr);
112 } 111 }
113 }else { 112 }else {
114 if(lg.getlGType() != 0){ 113 if(lg.getlGType() != 0){
115 ts(ConvertDJK(lg,sch,"DJG")); 114 ts(ConvertDJK(lg,sch,"DJG"));
  115 + String chartStr = JSON.toJSONString(sch);
  116 + logger.info("行车大间隔--"+chartStr);
116 } 117 }
117 } 118 }
118 119
@@ -122,28 +123,6 @@ public class AutomaticSch { @@ -122,28 +123,6 @@ public class AutomaticSch {
122 logger.error("大间隔推送失败------------------",e); 123 logger.error("大间隔推送失败------------------",e);
123 } 124 }
124 } 125 }
125 - //发现大客流 -> 大客流情况 ->处置大客流  
126 - public void Dkl(){  
127 - //推送  
128 -  
129 - try{  
130 - Map m = queue.poll();  
131 - if (m != null) {  
132 - if (Integer.valueOf(m.get("num").toString()) > 15) {  
133 - //超过10的时候 判断为大客流  
134 - ts(ConvertDKL(m));  
135 - }  
136 - }  
137 -  
138 - ScheduleRealInfo sr = dayOfSchedule.findByNbbm("W8A-027").get(0);  
139 - ts(addStationPeople(sr, "DKL", 0L));//大客流  
140 -  
141 -  
142 - }catch (Exception e){  
143 - logger.error("大客流推送失败------------------",e);  
144 - }  
145 -  
146 - }  
147 126
148 //实发未发检测 -- 车辆GPS掉线的情况下,车辆该出站了 127 //实发未发检测 -- 车辆GPS掉线的情况下,车辆该出站了
149 /** 128 /**
@@ -336,10 +315,9 @@ public class AutomaticSch { @@ -336,10 +315,9 @@ public class AutomaticSch {
336 for (Map m : dzList){ 315 for (Map m : dzList){
337 if (basicData.nbbmCompanyPlateMap.get(prev.getClZbh()) != null && m.get("terminal").equals(basicData.nbbmCompanyPlateMap.get(prev.getClZbh()).replaceAll("-",""))){ 316 if (basicData.nbbmCompanyPlateMap.get(prev.getClZbh()) != null && m.get("terminal").equals(basicData.nbbmCompanyPlateMap.get(prev.getClZbh()).replaceAll("-",""))){
338 sch.setRemark(m.get("sj").toString()); 317 sch.setRemark(m.get("sj").toString());
339 - Gson gson = new Gson();  
340 - String chartStr = gson.toJsonTree(sch).toString();  
341 - logger.info("误点--"+chartStr);  
342 ts(addStationPeople(sch, "WD", 0L)); 318 ts(addStationPeople(sch, "WD", 0L));
  319 + String chartStr = JSON.toJSONString(sch);
  320 + logger.info("误点--"+chartStr);
343 } 321 }
344 } 322 }
345 } 323 }
src/main/java/com/bsth/data/zndd/OutEntrance.java
@@ -6,9 +6,11 @@ import com.bsth.common.ResponseCode; @@ -6,9 +6,11 @@ import com.bsth.common.ResponseCode;
6 import com.bsth.data.BasicData; 6 import com.bsth.data.BasicData;
7 import com.bsth.data.schedule.DayOfSchedule; 7 import com.bsth.data.schedule.DayOfSchedule;
8 import com.bsth.data.schedule.ScheduleComparator; 8 import com.bsth.data.schedule.ScheduleComparator;
  9 +import com.bsth.entity.DKLInfo;
9 import com.bsth.entity.realcontrol.ScheduleRealInfo; 10 import com.bsth.entity.realcontrol.ScheduleRealInfo;
10 import com.bsth.entity.zndd.StationPeopleLogger; 11 import com.bsth.entity.zndd.StationPeopleLogger;
11 import com.bsth.entity.zndd.StationSignsLogger; 12 import com.bsth.entity.zndd.StationSignsLogger;
  13 +import com.bsth.service.DKLInfoService;
12 import com.bsth.util.HttpClientUtils; 14 import com.bsth.util.HttpClientUtils;
13 import com.bsth.util.SignUtils; 15 import com.bsth.util.SignUtils;
14 import com.bsth.websocket.handler.SendUtils; 16 import com.bsth.websocket.handler.SendUtils;
@@ -17,20 +19,19 @@ import org.slf4j.Logger; @@ -17,20 +19,19 @@ import org.slf4j.Logger;
17 import org.slf4j.LoggerFactory; 19 import org.slf4j.LoggerFactory;
18 import org.springframework.beans.factory.annotation.Autowired; 20 import org.springframework.beans.factory.annotation.Autowired;
19 import org.springframework.beans.factory.annotation.Value; 21 import org.springframework.beans.factory.annotation.Value;
  22 +import org.springframework.dao.DataAccessException;
  23 +import org.springframework.jdbc.core.JdbcTemplate;
20 import org.springframework.scheduling.annotation.Scheduled; 24 import org.springframework.scheduling.annotation.Scheduled;
21 import org.springframework.web.bind.annotation.*; 25 import org.springframework.web.bind.annotation.*;
  26 +
22 import java.io.*; 27 import java.io.*;
23 import java.nio.file.Files; 28 import java.nio.file.Files;
24 import java.nio.file.Path; 29 import java.nio.file.Path;
25 import java.nio.file.Paths; 30 import java.nio.file.Paths;
26 import java.nio.file.StandardCopyOption; 31 import java.nio.file.StandardCopyOption;
27 -  
28 -import java.io.ByteArrayInputStream;  
29 -import java.io.File;  
30 -import java.io.FileOutputStream;  
31 -import java.io.InputStream;  
32 import java.text.SimpleDateFormat; 32 import java.text.SimpleDateFormat;
33 import java.time.Duration; 33 import java.time.Duration;
  34 +import java.time.LocalDateTime;
34 import java.time.LocalTime; 35 import java.time.LocalTime;
35 import java.time.format.DateTimeFormatter; 36 import java.time.format.DateTimeFormatter;
36 import java.util.*; 37 import java.util.*;
@@ -54,9 +55,8 @@ public class OutEntrance { @@ -54,9 +55,8 @@ public class OutEntrance {
54 55
55 @Value("${dc.imgurl}") 56 @Value("${dc.imgurl}")
56 private String imgurl; //存储图片地址 57 private String imgurl; //存储图片地址
57 -  
58 - @Value("${dc.profile}")  
59 - private String profile; //存储图片地址*/ 58 +
  59 + private String profile = "profile"; //存储图片地址*/
60 60
61 @Value("${baidu.ak}") 61 @Value("${baidu.ak}")
62 private String ak; //百度api秘钥*/ 62 private String ak; //百度api秘钥*/
@@ -69,6 +69,12 @@ public class OutEntrance { @@ -69,6 +69,12 @@ public class OutEntrance {
69 @Autowired 69 @Autowired
70 AutomaticSch automaticSch; 70 AutomaticSch automaticSch;
71 71
  72 + @Autowired
  73 + private DKLInfoService dklInfoService;
  74 +
  75 + @Autowired
  76 + JdbcTemplate jdbcTemplate;
  77 +
72 //调度屏小程序接口。 78 //调度屏小程序接口。
73 @RequestMapping(value = "/OutCar", method = RequestMethod.POST) 79 @RequestMapping(value = "/OutCar", method = RequestMethod.POST)
74 public Map OutCarOutCar(@RequestParam Map m,@RequestBody StationSignsLogger ssLogger) { 80 public Map OutCarOutCar(@RequestParam Map m,@RequestBody StationSignsLogger ssLogger) {
@@ -169,13 +175,27 @@ public class OutEntrance { @@ -169,13 +175,27 @@ public class OutEntrance {
169 String lineCode = line.get("lineCode").toString(); 175 String lineCode = line.get("lineCode").toString();
170 String stationCode = line.get("stationCode").toString(); 176 String stationCode = line.get("stationCode").toString();
171 String dir = line.get("dir").toString(); 177 String dir = line.get("dir").toString();
172 - /*StationRoute stationRoute=BasicData.stationCode2StationMap.get(lineCode+"_"+stationCode);*/ 178 + imgMap.put(lineCode+"_"+dir,img);
  179 + DKLInfo dklInfo =new DKLInfo();
  180 + dklInfo.setLineCode(stationCode);
  181 + String lineName=BasicData.lineCode2NameMap.get(lineCode);
  182 + String stationName=BasicData.stationCode2NameMap.get(lineCode+"_"+dir+"_"+stationCode);
  183 + dklInfo.setLineName(lineName);
  184 + dklInfo.setStationCode(stationCode);
  185 + dklInfo.setStationName(stationName);
  186 + dklInfo.setNum(Integer.parseInt(num));
  187 + dklInfo.setUpDown(dir);
  188 + dklInfo.setImage(img);
  189 + dklInfoService.save(dklInfo);
  190 + if(Integer.parseInt(num)<count){
  191 + continue;
  192 + }
173 Map m = new HashMap(); 193 Map m = new HashMap();
174 m.put("image", img); 194 m.put("image", img);
175 m.put("stationCode", stationCode); 195 m.put("stationCode", stationCode);
176 m.put("lineCode", lineCode); 196 m.put("lineCode", lineCode);
177 - m.put("stationName",BasicData.stationCode2NameMap.get(lineCode+"_"+dir+"_"+stationCode));  
178 - m.put("lineName",BasicData.lineCode2NameMap.get(lineCode)); 197 + m.put("stationName",stationName);
  198 + m.put("lineName",lineName);
179 m.put("num",num); 199 m.put("num",num);
180 m.put("xlDir",dir); 200 m.put("xlDir",dir);
181 List<ScheduleRealInfo> srList=dayOfSchedule.findByLineAndUpDown(lineCode,Integer.parseInt(dir)); 201 List<ScheduleRealInfo> srList=dayOfSchedule.findByLineAndUpDown(lineCode,Integer.parseInt(dir));
@@ -319,7 +339,7 @@ public class OutEntrance { @@ -319,7 +339,7 @@ public class OutEntrance {
319 destfile.mkdirs(); 339 destfile.mkdirs();
320 } 340 }
321 //文件新名称 341 //文件新名称
322 - String fileNameNew = AutomaticSch.UUID()+ ".png"; 342 + String fileNameNew = System.currentTimeMillis()+"_"+AutomaticSch.UUID()+ ".png";
323 File f = new File(destfile.getAbsoluteFile() + File.separator + fileNameNew); 343 File f = new File(destfile.getAbsoluteFile() + File.separator + fileNameNew);
324 // 将字符串转换成二进制,用于显示图片 344 // 将字符串转换成二进制,用于显示图片
325 // 将上面生成的图片格式字符串 imgStr,还原成图片显示 345 // 将上面生成的图片格式字符串 imgStr,还原成图片显示
@@ -397,7 +417,9 @@ public class OutEntrance { @@ -397,7 +417,9 @@ public class OutEntrance {
397 @Scheduled(cron = "0 0 0 * * ?") 417 @Scheduled(cron = "0 0 0 * * ?")
398 public void clearImg(){ 418 public void clearImg(){
399 try { 419 try {
400 - File folder=new File(imgurl+"/avat"); 420 + LocalDateTime date =LocalDateTime.now().minusDays(7);
  421 + String[] d=date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")).split("-");
  422 + File folder=new File(imgurl+"/avat/"+d[0]+"/"+d[1]+"/"+d[2]);
401 delete(folder); 423 delete(folder);
402 } catch (Exception e) { 424 } catch (Exception e) {
403 e.printStackTrace(); 425 e.printStackTrace();
@@ -416,4 +438,28 @@ public class OutEntrance { @@ -416,4 +438,28 @@ public class OutEntrance {
416 folder.delete(); // 删除空文件夹或者文件 438 folder.delete(); // 删除空文件夹或者文件
417 } 439 }
418 440
  441 + private static Map<String,String> imgMap =new HashMap<>();
  442 + //调度获取站台视频
  443 + @RequestMapping(value = "/getStationVideo", method = RequestMethod.GET)
  444 + public String getStationVideo(@RequestParam Map m) {
  445 + if (m.get("lineCode")==null || m.get("upDown")==null){
  446 + return null;
  447 + }
  448 + String sql="select url from station_video where line_code ='"+m.get("lineCode")+"' and up_down ='"+m.get("upDown")+"'";
  449 + String url= null;
  450 + try {
  451 + url = jdbcTemplate.queryForObject(sql,String.class);
  452 + } catch (DataAccessException e) {
  453 + return null;
  454 + }
  455 + return url;
  456 + }
  457 +
  458 + //调度获取站台图片
  459 + @RequestMapping(value = "/getStationImg", method = RequestMethod.GET)
  460 + public String getStationImg(@RequestParam Map m) {
  461 + String url=imgMap.get(m.get("lineCode")+"_"+m.get("upDown"));
  462 + return url;
  463 + }
  464 +
419 } 465 }
src/main/java/com/bsth/data/zndd/ZnddThread.java
@@ -45,11 +45,8 @@ public class ZnddThread extends Thread{ @@ -45,11 +45,8 @@ public class ZnddThread extends Thread{
45 static Map<String,List> ZNDDTYPEMAP = new HashMap<>(); //已经推送过的检测 45 static Map<String,List> ZNDDTYPEMAP = new HashMap<>(); //已经推送过的检测
46 46
47 47
48 - String url = "https://lgapp.bsth.tech:13089/bsth_passengerflow/klbus/currentInsideNum.do"; //车内客流接口  
49 48
50 49
51 - String urldkl = "http://10.10.200.140:13089/bsth_passengerflow/klbus/currentInsideNum.do"; //大客流接口  
52 -  
53 private static SimpleDateFormat sdfHHmm = new SimpleDateFormat("HH:mm"); 50 private static SimpleDateFormat sdfHHmm = new SimpleDateFormat("HH:mm");
54 private static SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"); 51 private static SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd");
55 private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); 52 private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
@@ -64,7 +61,7 @@ public class ZnddThread extends Thread{ @@ -64,7 +61,7 @@ public class ZnddThread extends Thread{
64 //automaticSch.mz(); 61 //automaticSch.mz();
65 //automaticSch.dfTz();//大间隔 62 //automaticSch.dfTz();//大间隔
66 for (znddStatus zs : znddStatusList) { 63 for (znddStatus zs : znddStatusList) {
67 - if (zs.getOpenStatus().equals("0")) { 64 + if (zs.getOpenStatus() != null && zs.getOpenStatus().equals("0")) {
68 //预案5个 65 //预案5个
69 if (zs.getType().equals("fcjg")) { 66 if (zs.getType().equals("fcjg")) {
70 automaticSch.dfTz(0); 67 automaticSch.dfTz(0);
@@ -91,11 +88,6 @@ public class ZnddThread extends Thread{ @@ -91,11 +88,6 @@ public class ZnddThread extends Thread{
91 automaticSch.dfTz(1); 88 automaticSch.dfTz(1);
92 logger.info("行车大间隔执行完毕"); 89 logger.info("行车大间隔执行完毕");
93 } 90 }
94 -  
95 - if (zs.getType().equals("dkl")){  
96 - automaticSch.Dkl();  
97 - logger.info("大客流执行完毕");  
98 - }  
99 if (zs.getType().equals("mz")){ 91 if (zs.getType().equals("mz")){
100 automaticSch.mz(); 92 automaticSch.mz();
101 logger.info("满载执行完毕"); 93 logger.info("满载执行完毕");
src/main/java/com/bsth/entity/Cars.java
1 package com.bsth.entity; 1 package com.bsth.entity;
2 2
3 import com.bsth.entity.schedule.BEntity; 3 import com.bsth.entity.schedule.BEntity;
  4 +import com.fasterxml.jackson.annotation.JsonIgnore;
4 import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 5 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
5 import org.hibernate.annotations.Formula; 6 import org.hibernate.annotations.Formula;
6 7
@@ -145,6 +146,24 @@ public class Cars extends BEntity implements Serializable { @@ -145,6 +146,24 @@ public class Cars extends BEntity implements Serializable {
145 /** 线路名称(TODO:在原系统里没有,这里暂时留着,并且不做线路关联,只保留个名字) */ 146 /** 线路名称(TODO:在原系统里没有,这里暂时留着,并且不做线路关联,只保留个名字) */
146 private String xlmc; 147 private String xlmc;
147 148
  149 +
  150 + //** 车辆颜色 *//*
  151 + @Transient
  152 + @JsonIgnore
  153 + private String color;
  154 + //** 车辆最大乘坐人数 *//*
  155 + @Transient
  156 + @JsonIgnore
  157 + private String maxPeople;
  158 + //** 票价类型 *//*
  159 + @Transient
  160 + @JsonIgnore
  161 + private String priceType;
  162 + //** 票价 *//*
  163 + @Transient
  164 + @JsonIgnore
  165 + private String price;
  166 +
148 public Cars() {} 167 public Cars() {}
149 168
150 public Cars(Object id, Object nbbh, Object clbh, Object cph, Object sbbh) { 169 public Cars(Object id, Object nbbh, Object clbh, Object cph, Object sbbh) {
@@ -164,7 +183,40 @@ public class Cars extends BEntity implements Serializable { @@ -164,7 +183,40 @@ public class Cars extends BEntity implements Serializable {
164 this.equipmentCode = sbbh.toString(); 183 this.equipmentCode = sbbh.toString();
165 } 184 }
166 } 185 }
167 - 186 +
  187 +
  188 + public String getColor() {
  189 + return color;
  190 + }
  191 +
  192 + public void setColor(String color) {
  193 + this.color = color;
  194 + }
  195 +
  196 + public String getMaxPeople() {
  197 + return maxPeople;
  198 + }
  199 +
  200 + public void setMaxPeople(String maxPeople) {
  201 + this.maxPeople = maxPeople;
  202 + }
  203 +
  204 + public String getPriceType() {
  205 + return priceType;
  206 + }
  207 +
  208 + public void setPriceType(String priceType) {
  209 + this.priceType = priceType;
  210 + }
  211 +
  212 + public String getPrice() {
  213 + return price;
  214 + }
  215 +
  216 + public void setPrice(String price) {
  217 + this.price = price;
  218 + }
  219 +
168 public String getServiceNo() { 220 public String getServiceNo() {
169 return serviceNo; 221 return serviceNo;
170 } 222 }
src/main/java/com/bsth/entity/DKLInfo.java 0 → 100644
  1 +package com.bsth.entity;
  2 +
  3 +import javax.persistence.*;
  4 +import java.util.Date;
  5 +
  6 +
  7 +
  8 +@Entity
  9 +@Table(name = "dkl_info")
  10 +public class DKLInfo {
  11 +
  12 + // ID
  13 + @Id
  14 + @GeneratedValue(strategy = GenerationType.IDENTITY)
  15 + private Integer id;
  16 +
  17 + private String lineCode;
  18 +
  19 + private String lineName;
  20 +
  21 + private String stationCode;
  22 +
  23 + private String stationName;
  24 +
  25 + private int num;
  26 +
  27 + private String upDown;
  28 +
  29 + private String image;
  30 +
  31 + // 创建日期
  32 + @Column(updatable = false, name = "create_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
  33 + private Date createDate;
  34 +
  35 +
  36 + public Integer getId() {
  37 + return id;
  38 + }
  39 +
  40 + public void setId(Integer id) {
  41 + this.id = id;
  42 + }
  43 +
  44 + public String getLineCode() {
  45 + return lineCode;
  46 + }
  47 +
  48 + public void setLineCode(String lineCode) {
  49 + this.lineCode = lineCode;
  50 + }
  51 +
  52 + public String getLineName() {
  53 + return lineName;
  54 + }
  55 +
  56 + public void setLineName(String lineName) {
  57 + this.lineName = lineName;
  58 + }
  59 +
  60 + public String getStationCode() {
  61 + return stationCode;
  62 + }
  63 +
  64 + public void setStationCode(String stationCode) {
  65 + this.stationCode = stationCode;
  66 + }
  67 +
  68 + public String getStationName() {
  69 + return stationName;
  70 + }
  71 +
  72 + public void setStationName(String stationName) {
  73 + this.stationName = stationName;
  74 + }
  75 +
  76 + public int getNum() {
  77 + return num;
  78 + }
  79 +
  80 + public void setNum(int num) {
  81 + this.num = num;
  82 + }
  83 +
  84 + public String getUpDown() {
  85 + return upDown;
  86 + }
  87 +
  88 + public void setUpDown(String upDown) {
  89 + this.upDown = upDown;
  90 + }
  91 +
  92 + public String getImage() {
  93 + return image;
  94 + }
  95 +
  96 + public void setImage(String image) {
  97 + this.image = image;
  98 + }
  99 +
  100 + public Date getCreateDate() {
  101 + return createDate;
  102 + }
  103 +
  104 + public void setCreateDate(Date createDate) {
  105 + this.createDate = createDate;
  106 + }
  107 +
  108 +}
src/main/java/com/bsth/entity/directive/D80.java
@@ -78,6 +78,7 @@ public class D80 { @@ -78,6 +78,7 @@ public class D80 {
78 @JsonIgnore 78 @JsonIgnore
79 private Short requestCode; 79 private Short requestCode;
80 80
  81 +
81 public Long getSchId() { 82 public Long getSchId() {
82 return schId; 83 return schId;
83 } 84 }
@@ -110,6 +111,30 @@ public class D80 { @@ -110,6 +111,30 @@ public class D80 {
110 this.requestCode = requestCode; 111 this.requestCode = requestCode;
111 } 112 }
112 113
  114 + @Transient
  115 + @JsonIgnore
  116 + private String stationName;
  117 + @Transient
  118 + @JsonIgnore
  119 + private Long nextschId;
  120 +
  121 + public Long getNextschId() {
  122 + return nextschId;
  123 + }
  124 +
  125 + public void setNextschId(Long nextschId) {
  126 + this.nextschId = nextschId;
  127 + }
  128 +
  129 + public String getStationName() {
  130 + return stationName;
  131 + }
  132 +
  133 + public void setStationName(String stationName) {
  134 + this.stationName = stationName;
  135 + }
  136 +
  137 +
113 @Embeddable 138 @Embeddable
114 public static class D80Data { 139 public static class D80Data {
115 140
@@ -121,6 +146,9 @@ public class D80 { @@ -121,6 +146,9 @@ public class D80 {
121 /** 146 /**
122 * 请求代码 0xa1 恢复运营 0xa2 申请调档 0xa3 出场请求 0xa5 进场请求 0xa7 加油请求 0x50 车辆故障 0x70 147 * 请求代码 0xa1 恢复运营 0xa2 申请调档 0xa3 出场请求 0xa5 进场请求 0xa7 加油请求 0x50 车辆故障 0x70
123 * 路阻报告 0x60 事故报告 0x11 扣证纠纷 0x12 报警 0x10 S0S 148 * 路阻报告 0x60 事故报告 0x11 扣证纠纷 0x12 报警 0x10 S0S
  149 + * 0x21 单车有人伤 0x22 单车无人伤
  150 + * 0x23 双车有人伤 0x24 双车无人伤
  151 + *
124 */ 152 */
125 private Short requestCode; 153 private Short requestCode;
126 154
@@ -134,7 +162,48 @@ public class D80 { @@ -134,7 +162,48 @@ public class D80 {
134 */ 162 */
135 @Transient 163 @Transient
136 private String nbbm; 164 private String nbbm;
137 - 165 + /**
  166 + * 经度
  167 + */
  168 + @Transient
  169 + @JsonIgnore
  170 + private Float lon;
  171 +
  172 + /**
  173 + * 纬度
  174 + */
  175 + @Transient
  176 + @JsonIgnore
  177 + private Float lat;
  178 + @Transient
  179 + @JsonIgnore
  180 + private String stopNo;
  181 +
  182 +
  183 + public String getStopNo() {
  184 + return stopNo;
  185 + }
  186 +
  187 + public void setStopNo(String stopNo) {
  188 + this.stopNo = stopNo;
  189 + }
  190 +
  191 + public Float getLon() {
  192 + return lon;
  193 + }
  194 +
  195 + public void setLon(Float lon) {
  196 + this.lon = lon;
  197 + }
  198 +
  199 + public Float getLat() {
  200 + return lat;
  201 + }
  202 +
  203 + public void setLat(Float lat) {
  204 + this.lat = lat;
  205 + }
  206 +
138 public Short getOperCode2() { 207 public Short getOperCode2() {
139 return operCode2; 208 return operCode2;
140 } 209 }
src/main/java/com/bsth/entity/lg_travel/Region.java 0 → 100644
  1 +package com.bsth.entity.lg_travel;
  2 +
  3 +import com.bsth.entity.schedule.BEntity;
  4 +
  5 +import javax.persistence.Entity;
  6 +import javax.persistence.Id;
  7 +import javax.persistence.Table;
  8 +import java.io.Serializable;
  9 +
  10 +/**
  11 + * 区域
  12 + */
  13 +@Entity
  14 +@Table(name = "bsth_c_region")
  15 +public class Region extends BEntity implements Serializable {
  16 + @Id
  17 + private Long id;
  18 + //区域名称
  19 + private String name;
  20 + //是否删除
  21 + private String destroy;
  22 +
  23 +
  24 +
  25 +
  26 + public void setId(Long id) {
  27 + this.id = id;
  28 + }
  29 +
  30 + public Long getId() {
  31 + return id;
  32 + }
  33 +
  34 + public String getName() {
  35 + return name;
  36 + }
  37 +
  38 + public void setName(String name) {
  39 + this.name = name;
  40 + }
  41 +
  42 + public String getDestroy() {
  43 + return destroy;
  44 + }
  45 +
  46 + public void setDestroy(String destroy) {
  47 + this.destroy = destroy;
  48 + }
  49 +}
0 \ No newline at end of file 50 \ No newline at end of file
src/main/java/com/bsth/entity/lg_travel/RegionLineCar.java 0 → 100644
  1 +package com.bsth.entity.lg_travel;
  2 +
  3 +import com.bsth.entity.Line;
  4 +import com.bsth.entity.schedule.BEntity;
  5 +
  6 +import javax.persistence.*;
  7 +import java.io.Serializable;
  8 +
  9 +/**
  10 + * 区域
  11 + */
  12 +@Entity
  13 +@Table(name = "bsth_c_region_line_car")
  14 +public class RegionLineCar extends BEntity implements Serializable {
  15 + @Id
  16 + @GeneratedValue(strategy = GenerationType.IDENTITY)
  17 + private Long id;
  18 + //区域名称
  19 + @ManyToOne
  20 + private Region region;
  21 + //线路
  22 + @ManyToOne
  23 + private Line line;
  24 + //线路名称
  25 + private String lineName;
  26 + //车辆自编号
  27 + private String clZbh;
  28 +
  29 + public Long getId() {
  30 + return id;
  31 + }
  32 +
  33 + public void setId(Long id) {
  34 + this.id = id;
  35 + }
  36 +
  37 +
  38 + public Region getRegion() {
  39 + return region;
  40 + }
  41 +
  42 + public void setRegion(Region region) {
  43 + this.region = region;
  44 + }
  45 +
  46 + public Line getLine() {
  47 + return line;
  48 + }
  49 +
  50 + public void setLine(Line line) {
  51 + this.line = line;
  52 + }
  53 +
  54 + public String getLineName() {
  55 + return lineName;
  56 + }
  57 +
  58 + public void setLineName(String lineName) {
  59 + this.lineName = lineName;
  60 + }
  61 +
  62 + public String getClZbh() {
  63 + return clZbh;
  64 + }
  65 +
  66 + public void setClZbh(String clZbh) {
  67 + this.clZbh = clZbh;
  68 + }
  69 +
  70 +
  71 +}
0 \ No newline at end of file 72 \ No newline at end of file
src/main/java/com/bsth/entity/oil/Dlb.java
1 -package com.bsth.entity.oil;  
2 -  
3 -import java.text.DecimalFormat;  
4 -import java.util.Date;  
5 -  
6 -import javax.persistence.*;  
7 -  
8 -import org.springframework.format.annotation.DateTimeFormat;  
9 -  
10 -import com.bsth.data.BasicData;  
11 -  
12 -@Entity  
13 -@Table(name = "bsth_c_dlb")  
14 -public class Dlb {  
15 - @Id  
16 - @GeneratedValue(strategy = GenerationType.IDENTITY)  
17 - private Integer id;  
18 - @DateTimeFormat(pattern="yyyy-MM-dd")  
19 - private Date rq;  
20 - private String xlbm;  
21 - private String linename;  
22 - private String ssgsdm;  
23 - private String fgsdm;  
24 - private String nbbm;  
25 - private String jsy;  
26 - private Double czlc=0.0;  
27 - private Double jzlc=0.0;  
28 - //出站存电  
29 - private Double czcd=0.0;  
30 - //进站存电  
31 - private Double jzcd=0.0;  
32 - //充电量  
33 - private Double cdl;  
34 - private int sfkt;  
35 - private String jhsj;  
36 - //耗电  
37 - private Double hd=0.0;  
38 - private Double sh=0.0;  
39 - private String shyy;  
40 - private Double zlc=0.0;  
41 - private int yhlx;  
42 -  
43 - private Double ns=0.0;  
44 - private Double fyylc=0.0;  
45 - private Double jhzlc=0.0;  
46 - private Double jhfyylc=0.0;  
47 - private int jhzbc;  
48 - private int jhbc;  
49 - private int sjzbc;  
50 - private int sjbc;  
51 - private String edituser;  
52 - private Date edittime;  
53 - private Date createtime;  
54 - private Date updatetime;  
55 - private int nylx;  
56 - //进场顺序(根据最先出场和最后进场来关联车辆的存电量)  
57 - private int jcsx;  
58 -  
59 - private String jname;  
60 - @Transient  
61 - private String name;  
62 - @Transient  
63 - private String bglyh;  
64 -  
65 - @Transient  
66 - private String xlname;  
67 -  
68 - @Transient  
69 - private String gsname;  
70 -  
71 - @Transient  
72 - private String fgsname;  
73 -  
74 -  
75 -  
76 - private String lp;  
77 -  
78 - public Integer getId() {  
79 - return id;  
80 - }  
81 -  
82 - public void setId(Integer id) {  
83 - this.id = id;  
84 - }  
85 -  
86 - public Date getRq() {  
87 - return rq;  
88 - }  
89 -  
90 - public void setRq(Date rq) {  
91 - this.rq = rq;  
92 - }  
93 -  
94 - public String getXlbm() {  
95 - return xlbm;  
96 - }  
97 -  
98 - public void setXlbm(String xlbm) {  
99 - this.xlbm = xlbm;  
100 - }  
101 -  
102 - public String getLinename() {  
103 - return linename;  
104 - }  
105 -  
106 - public void setLinename(String linename) {  
107 - this.linename = linename;  
108 - }  
109 -  
110 - public String getSsgsdm() {  
111 - return ssgsdm;  
112 - }  
113 -  
114 - public void setSsgsdm(String ssgsdm) {  
115 - this.ssgsdm = ssgsdm;  
116 - }  
117 -  
118 - public String getFgsdm() {  
119 - return fgsdm;  
120 - }  
121 -  
122 - public void setFgsdm(String fgsdm) {  
123 - this.fgsdm = fgsdm;  
124 - }  
125 -  
126 - public String getNbbm() {  
127 - return nbbm;  
128 - }  
129 -  
130 - public void setNbbm(String nbbm) {  
131 - this.nbbm = nbbm;  
132 - }  
133 -  
134 - public String getJsy() {  
135 - return jsy;  
136 - }  
137 -  
138 - public void setJsy(String jsy) {  
139 - this.jsy = jsy;  
140 - }  
141 -  
142 - public Double getCzlc() {  
143 - return czlc;  
144 - }  
145 -  
146 - public void setCzlc(Double czlc) {  
147 - this.czlc = czlc;  
148 - }  
149 -  
150 - public Double getJzlc() {  
151 - return jzlc;  
152 - }  
153 -  
154 - public void setJzlc(Double jzlc) {  
155 - this.jzlc = jzlc;  
156 - }  
157 -  
158 - public Double getCzcd() {  
159 - return czcd;  
160 - }  
161 -  
162 - public void setCzcd(Double czcd) {  
163 - this.czcd = czcd;  
164 - }  
165 -  
166 - public Double getJzcd() {  
167 - return jzcd;  
168 - }  
169 -  
170 - public void setJzcd(Double jzcd) {  
171 - this.jzcd = jzcd;  
172 - }  
173 -  
174 - public Double getCdl() {  
175 - return cdl;  
176 - }  
177 -  
178 - public void setCdl(Double cdl) {  
179 - this.cdl = cdl;  
180 - }  
181 -  
182 - public int getSfkt() {  
183 - return sfkt;  
184 - }  
185 -  
186 - public void setSfkt(int sfkt) {  
187 - this.sfkt = sfkt;  
188 - }  
189 -  
190 - public String getJhsj() {  
191 - return jhsj;  
192 - }  
193 -  
194 - public void setJhsj(String jhsj) {  
195 - this.jhsj = jhsj;  
196 - }  
197 -  
198 - public Double getHd() {  
199 - return hd;  
200 - }  
201 -  
202 - public void setHd(Double hd) {  
203 - this.hd = hd;  
204 - }  
205 -  
206 - public Double getSh() {  
207 - return sh;  
208 - }  
209 -  
210 - public void setSh(Double sh) {  
211 - this.sh = sh;  
212 - }  
213 -  
214 - public String getShyy() {  
215 - return shyy;  
216 - }  
217 -  
218 - public void setShyy(String shyy) {  
219 - this.shyy = shyy;  
220 - }  
221 -  
222 - public Double getZlc() {  
223 - return zlc;  
224 - }  
225 -  
226 - public void setZlc(Double zlc) {  
227 - this.zlc = zlc;  
228 - }  
229 -  
230 - public int getYhlx() {  
231 - return yhlx;  
232 - }  
233 -  
234 - public void setYhlx(int yhlx) {  
235 - this.yhlx = yhlx;  
236 - }  
237 -  
238 - public Double getNs() {  
239 - return ns;  
240 - }  
241 -  
242 - public void setNs(Double ns) {  
243 - this.ns = ns;  
244 - }  
245 -  
246 - public Double getFyylc() {  
247 - return fyylc;  
248 - }  
249 -  
250 - public void setFyylc(Double fyylc) {  
251 - this.fyylc = fyylc;  
252 - }  
253 -  
254 - public Double getJhzlc() {  
255 - return jhzlc;  
256 - }  
257 -  
258 - public void setJhzlc(Double jhzlc) {  
259 - this.jhzlc = jhzlc;  
260 - }  
261 -  
262 - public Double getJhfyylc() {  
263 - return jhfyylc;  
264 - }  
265 -  
266 - public void setJhfyylc(Double jhfyylc) {  
267 - this.jhfyylc = jhfyylc;  
268 - }  
269 -  
270 - public int getJhzbc() {  
271 - return jhzbc;  
272 - }  
273 -  
274 - public void setJhzbc(int jhzbc) {  
275 - this.jhzbc = jhzbc;  
276 - }  
277 -  
278 - public int getJhbc() {  
279 - return jhbc;  
280 - }  
281 -  
282 - public void setJhbc(int jhbc) {  
283 - this.jhbc = jhbc;  
284 - }  
285 -  
286 - public int getSjzbc() {  
287 - return sjzbc;  
288 - }  
289 -  
290 - public void setSjzbc(int sjzbc) {  
291 - this.sjzbc = sjzbc;  
292 - }  
293 -  
294 - public int getSjbc() {  
295 - return sjbc;  
296 - }  
297 -  
298 - public void setSjbc(int sjbc) {  
299 - this.sjbc = sjbc;  
300 - }  
301 -  
302 - public String getEdituser() {  
303 - return edituser;  
304 - }  
305 -  
306 - public void setEdituser(String edituser) {  
307 - this.edituser = edituser;  
308 - }  
309 -  
310 - public Date getEdittime() {  
311 - return edittime;  
312 - }  
313 -  
314 - public void setEdittime(Date edittime) {  
315 - this.edittime = edittime;  
316 - }  
317 -  
318 - public Date getCreatetime() {  
319 - return createtime;  
320 - }  
321 -  
322 - public void setCreatetime(Date createtime) {  
323 - this.createtime = createtime;  
324 - }  
325 -  
326 - public int getNylx() {  
327 - return nylx;  
328 - }  
329 -  
330 - public void setNylx(int nylx) {  
331 - this.nylx = nylx;  
332 - }  
333 -  
334 - public int getJcsx() {  
335 - return jcsx;  
336 - }  
337 -  
338 - public void setJcsx(int jcsx) {  
339 - this.jcsx = jcsx;  
340 - }  
341 -  
342 - public String getBglyh() {  
343 - if(this.getZlc()==0){  
344 - return "0";  
345 - }else{  
346 - DecimalFormat df = new DecimalFormat("0.00");  
347 - return df.format(this.getHd()/this.getZlc()*100);  
348 - }  
349 - }  
350 -  
351 - public void setBglyh(String bglyh) {  
352 - this.bglyh = bglyh;  
353 - }  
354 -  
355 - public String getXlname() {  
356 - return BasicData.lineCodeAllNameMap.get(this.xlbm);  
357 - }  
358 -  
359 - public void setXlname(String xlname) {  
360 - this.xlname = xlname;  
361 - }  
362 -  
363 - public String getGsname() {  
364 - return BasicData.businessCodeNameMap.get(this.ssgsdm);  
365 - }  
366 -  
367 - public void setGsname(String gsname) {  
368 - this.gsname = gsname;  
369 - }  
370 -  
371 - public String getName() {  
372 - return BasicData.allPerson.get(this.ssgsdm+"-"+this.jsy);  
373 - }  
374 -  
375 - public void setName(String name) {  
376 - this.name = name;  
377 - }  
378 -  
379 - public String getFgsname() {  
380 - return BasicData.businessFgsCodeNameMap.get(this.fgsdm+"_"+this.ssgsdm);  
381 - }  
382 -  
383 - public void setFgsname(String fgsname) {  
384 - this.fgsname = fgsname;  
385 - }  
386 -  
387 - public Date getUpdatetime() {  
388 - return updatetime;  
389 - }  
390 -  
391 - public void setUpdatetime(Date updatetime) {  
392 - this.updatetime = updatetime;  
393 - }  
394 -  
395 - public String getLp() {  
396 - return lp;  
397 - }  
398 -  
399 - public void setLp(String lp) {  
400 - this.lp = lp;  
401 - }  
402 -  
403 - public String getJname() {  
404 - return jname;  
405 - }  
406 -  
407 - public void setJname(String jname) {  
408 - this.jname = jname;  
409 - }  
410 -  
411 -  
412 -  
413 -} 1 +package com.bsth.entity.oil;
  2 +
  3 +import java.text.DecimalFormat;
  4 +import java.util.Date;
  5 +
  6 +import javax.persistence.*;
  7 +
  8 +import org.springframework.format.annotation.DateTimeFormat;
  9 +
  10 +import com.bsth.data.BasicData;
  11 +
  12 +@Entity
  13 +@Table(name = "bsth_c_dlb")
  14 +public class Dlb {
  15 + @Id
  16 + @GeneratedValue(strategy = GenerationType.IDENTITY)
  17 + private Integer id;
  18 + @DateTimeFormat(pattern="yyyy-MM-dd")
  19 + private Date rq;
  20 + private String xlbm;
  21 + private String linename;
  22 + private String ssgsdm;
  23 + private String fgsdm;
  24 + private String nbbm;
  25 + private String jsy;
  26 + private Double czlc=0.0;
  27 + private Double jzlc=0.0;
  28 + //出站存电
  29 + private Double czcd=0.0;
  30 + //进站存电
  31 + private Double jzcd=0.0;
  32 + //充电量
  33 + private Double cdl;
  34 + private int sfkt;
  35 + private String jhsj;
  36 + //耗电
  37 + private Double hd=0.0;
  38 + private Double sh=0.0;
  39 + private String shyy;
  40 + private Double zlc=0.0;
  41 + private int yhlx;
  42 +
  43 + private Double ns=0.0;
  44 + private Double fyylc=0.0;
  45 + private Double jhzlc=0.0;
  46 + private Double jhfyylc=0.0;
  47 + private int jhzbc;
  48 + private int jhbc;
  49 + private int sjzbc;
  50 + private int sjbc;
  51 + private String edituser;
  52 + private Date edittime;
  53 + private Date createtime;
  54 + private Date updatetime;
  55 + private int nylx;
  56 + //进场顺序(根据最先出场和最后进场来关联车辆的存电量)
  57 + private int jcsx;
  58 +
  59 + private String jname;
  60 + @Transient
  61 + private String name;
  62 + @Transient
  63 + private String bglyh;
  64 +
  65 + @Transient
  66 + private String xlname;
  67 +
  68 + @Transient
  69 + private String gsname;
  70 +
  71 + @Transient
  72 + private String fgsname;
  73 +
  74 +
  75 +
  76 + private String lp;
  77 +
  78 + public Integer getId() {
  79 + return id;
  80 + }
  81 +
  82 + public void setId(Integer id) {
  83 + this.id = id;
  84 + }
  85 +
  86 + public Date getRq() {
  87 + return rq;
  88 + }
  89 +
  90 + public void setRq(Date rq) {
  91 + this.rq = rq;
  92 + }
  93 +
  94 + public String getXlbm() {
  95 + return xlbm;
  96 + }
  97 +
  98 + public void setXlbm(String xlbm) {
  99 + this.xlbm = xlbm;
  100 + }
  101 +
  102 + public String getLinename() {
  103 + return linename;
  104 + }
  105 +
  106 + public void setLinename(String linename) {
  107 + this.linename = linename;
  108 + }
  109 +
  110 + public String getSsgsdm() {
  111 + return ssgsdm;
  112 + }
  113 +
  114 + public void setSsgsdm(String ssgsdm) {
  115 + this.ssgsdm = ssgsdm;
  116 + }
  117 +
  118 + public String getFgsdm() {
  119 + return fgsdm;
  120 + }
  121 +
  122 + public void setFgsdm(String fgsdm) {
  123 + this.fgsdm = fgsdm;
  124 + }
  125 +
  126 + public String getNbbm() {
  127 + return nbbm;
  128 + }
  129 +
  130 + public void setNbbm(String nbbm) {
  131 + this.nbbm = nbbm;
  132 + }
  133 +
  134 + public String getJsy() {
  135 + return jsy;
  136 + }
  137 +
  138 + public void setJsy(String jsy) {
  139 + this.jsy = jsy;
  140 + }
  141 +
  142 + public Double getCzlc() {
  143 + return czlc;
  144 + }
  145 +
  146 + public void setCzlc(Double czlc) {
  147 + this.czlc = czlc;
  148 + }
  149 +
  150 + public Double getJzlc() {
  151 + return jzlc;
  152 + }
  153 +
  154 + public void setJzlc(Double jzlc) {
  155 + this.jzlc = jzlc;
  156 + }
  157 +
  158 + public Double getCzcd() {
  159 + return czcd;
  160 + }
  161 +
  162 + public void setCzcd(Double czcd) {
  163 + this.czcd = czcd;
  164 + }
  165 +
  166 + public Double getJzcd() {
  167 + return jzcd;
  168 + }
  169 +
  170 + public void setJzcd(Double jzcd) {
  171 + this.jzcd = jzcd;
  172 + }
  173 +
  174 + public Double getCdl() {
  175 + return cdl;
  176 + }
  177 +
  178 + public void setCdl(Double cdl) {
  179 + this.cdl = cdl;
  180 + }
  181 +
  182 + public int getSfkt() {
  183 + return sfkt;
  184 + }
  185 +
  186 + public void setSfkt(int sfkt) {
  187 + this.sfkt = sfkt;
  188 + }
  189 +
  190 + public String getJhsj() {
  191 + return jhsj;
  192 + }
  193 +
  194 + public void setJhsj(String jhsj) {
  195 + this.jhsj = jhsj;
  196 + }
  197 +
  198 + public Double getHd() {
  199 + return hd;
  200 + }
  201 +
  202 + public void setHd(Double hd) {
  203 + this.hd = hd;
  204 + }
  205 +
  206 + public Double getSh() {
  207 + return sh;
  208 + }
  209 +
  210 + public void setSh(Double sh) {
  211 + this.sh = sh;
  212 + }
  213 +
  214 + public String getShyy() {
  215 + return shyy;
  216 + }
  217 +
  218 + public void setShyy(String shyy) {
  219 + this.shyy = shyy;
  220 + }
  221 +
  222 + public Double getZlc() {
  223 + return zlc;
  224 + }
  225 +
  226 + public void setZlc(Double zlc) {
  227 + this.zlc = zlc;
  228 + }
  229 +
  230 + public int getYhlx() {
  231 + return yhlx;
  232 + }
  233 +
  234 + public void setYhlx(int yhlx) {
  235 + this.yhlx = yhlx;
  236 + }
  237 +
  238 + public Double getNs() {
  239 + return ns;
  240 + }
  241 +
  242 + public void setNs(Double ns) {
  243 + this.ns = ns;
  244 + }
  245 +
  246 + public Double getFyylc() {
  247 + return fyylc;
  248 + }
  249 +
  250 + public void setFyylc(Double fyylc) {
  251 + this.fyylc = fyylc;
  252 + }
  253 +
  254 + public Double getJhzlc() {
  255 + return jhzlc;
  256 + }
  257 +
  258 + public void setJhzlc(Double jhzlc) {
  259 + this.jhzlc = jhzlc;
  260 + }
  261 +
  262 + public Double getJhfyylc() {
  263 + return jhfyylc;
  264 + }
  265 +
  266 + public void setJhfyylc(Double jhfyylc) {
  267 + this.jhfyylc = jhfyylc;
  268 + }
  269 +
  270 + public int getJhzbc() {
  271 + return jhzbc;
  272 + }
  273 +
  274 + public void setJhzbc(int jhzbc) {
  275 + this.jhzbc = jhzbc;
  276 + }
  277 +
  278 + public int getJhbc() {
  279 + return jhbc;
  280 + }
  281 +
  282 + public void setJhbc(int jhbc) {
  283 + this.jhbc = jhbc;
  284 + }
  285 +
  286 + public int getSjzbc() {
  287 + return sjzbc;
  288 + }
  289 +
  290 + public void setSjzbc(int sjzbc) {
  291 + this.sjzbc = sjzbc;
  292 + }
  293 +
  294 + public int getSjbc() {
  295 + return sjbc;
  296 + }
  297 +
  298 + public void setSjbc(int sjbc) {
  299 + this.sjbc = sjbc;
  300 + }
  301 +
  302 + public String getEdituser() {
  303 + return edituser;
  304 + }
  305 +
  306 + public void setEdituser(String edituser) {
  307 + this.edituser = edituser;
  308 + }
  309 +
  310 + public Date getEdittime() {
  311 + return edittime;
  312 + }
  313 +
  314 + public void setEdittime(Date edittime) {
  315 + this.edittime = edittime;
  316 + }
  317 +
  318 + public Date getCreatetime() {
  319 + return createtime;
  320 + }
  321 +
  322 + public void setCreatetime(Date createtime) {
  323 + this.createtime = createtime;
  324 + }
  325 +
  326 + public int getNylx() {
  327 + return nylx;
  328 + }
  329 +
  330 + public void setNylx(int nylx) {
  331 + this.nylx = nylx;
  332 + }
  333 +
  334 + public int getJcsx() {
  335 + return jcsx;
  336 + }
  337 +
  338 + public void setJcsx(int jcsx) {
  339 + this.jcsx = jcsx;
  340 + }
  341 +
  342 + public String getBglyh() {
  343 + if(this.getZlc()==0){
  344 + return "0";
  345 + }else{
  346 + DecimalFormat df = new DecimalFormat("0.000");
  347 + return df.format(this.getHd()/this.getZlc()*100);
  348 + }
  349 + }
  350 +
  351 + public void setBglyh(String bglyh) {
  352 + this.bglyh = bglyh;
  353 + }
  354 +
  355 + public String getXlname() {
  356 + return BasicData.lineCodeAllNameMap.get(this.xlbm);
  357 + }
  358 +
  359 + public void setXlname(String xlname) {
  360 + this.xlname = xlname;
  361 + }
  362 +
  363 + public String getGsname() {
  364 + return BasicData.businessCodeNameMap.get(this.ssgsdm);
  365 + }
  366 +
  367 + public void setGsname(String gsname) {
  368 + this.gsname = gsname;
  369 + }
  370 +
  371 + public String getName() {
  372 + return BasicData.allPerson.get(this.ssgsdm+"-"+this.jsy);
  373 + }
  374 +
  375 + public void setName(String name) {
  376 + this.name = name;
  377 + }
  378 +
  379 + public String getFgsname() {
  380 + return BasicData.businessFgsCodeNameMap.get(this.fgsdm+"_"+this.ssgsdm);
  381 + }
  382 +
  383 + public void setFgsname(String fgsname) {
  384 + this.fgsname = fgsname;
  385 + }
  386 +
  387 + public Date getUpdatetime() {
  388 + return updatetime;
  389 + }
  390 +
  391 + public void setUpdatetime(Date updatetime) {
  392 + this.updatetime = updatetime;
  393 + }
  394 +
  395 + public String getLp() {
  396 + return lp;
  397 + }
  398 +
  399 + public void setLp(String lp) {
  400 + this.lp = lp;
  401 + }
  402 +
  403 + public String getJname() {
  404 + return jname;
  405 + }
  406 +
  407 + public void setJname(String jname) {
  408 + this.jname = jname;
  409 + }
  410 +
  411 +
  412 +
  413 +}
src/main/java/com/bsth/entity/oil/JdlReception.java 0 → 100644
  1 +package com.bsth.entity.oil;
  2 +
  3 +import java.util.Date;
  4 +
  5 +import javax.persistence.Entity;
  6 +import javax.persistence.GeneratedValue;
  7 +import javax.persistence.GenerationType;
  8 +import javax.persistence.Id;
  9 +import javax.persistence.Table;
  10 +
  11 +import org.springframework.format.annotation.DateTimeFormat;
  12 +
  13 +/**
  14 +--------------------------------------------------------
  15 + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  16 + `station_name` varchar(255) DEFAULT NULL COMMENT '站点名称',
  17 + `connector_id` varchar(255) DEFAULT NULL COMMENT '枪编号',
  18 + `order_no` varchar(255) DEFAULT NULL COMMENT '订单编号',
  19 + `start_time` varchar(255) DEFAULT NULL COMMENT '充电开始时间',
  20 + `end_time` varchar(255) DEFAULT NULL COMMENT '充电结束时间',
  21 + `start_soc` double(11,2) DEFAULT NULL COMMENT '开始 SOC(%)',
  22 + `end_soc` double(11,2) DEFAULT NULL COMMENT '结束 SOC(%)',
  23 + `stop_reason` varchar(255) DEFAULT NULL COMMENT '终止原因',
  24 + `charge_capacity` double(11,3) DEFAULT NULL COMMENT '充电量,单位:度',
  25 + `electric_charge` double(11,2) DEFAULT NULL COMMENT '电费,单位:元',
  26 + `service_charge` double(11,2) DEFAULT NULL COMMENT '服务费,单位:元',
  27 + `total_amount` double(11,2) DEFAULT NULL COMMENT '总费用,单位:元',
  28 + `vin_code` varchar(255) DEFAULT NULL COMMENT '卡号',
  29 + `card_no` varchar(255) DEFAULT NULL COMMENT 'VIN,车架号',
  30 + `car_code` varchar(255) DEFAULT NULL COMMENT '车牌号',
  31 + `date_str` varchar(255) DEFAULT NULL COMMENT '营运日期',
  32 + `origin` int(2) NOT NULL DEFAULT '0' COMMENT '数据源(0:接口获取;1:导入)',
  33 + `sum_time` bigint(11) DEFAULT NULL COMMENT '总计充电时间(分钟)',
  34 + `pile_id` varchar(255) DEFAULT NULL COMMENT '桩号',
  35 + `create_by` varchar(255) DEFAULT NULL COMMENT '创建人',
  36 + `create_date` datetime DEFAULT NULL COMMENT '创建时间',
  37 + `update_by` varchar(255) DEFAULT NULL COMMENT '修改人',
  38 + `update_date` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  39 +*/
  40 +@Entity
  41 +@Table(name = "bsth_c_jdl_reception")
  42 +public class JdlReception {
  43 + @Id
  44 + @GeneratedValue(strategy = GenerationType.IDENTITY)
  45 + private Long id;
  46 + private String stationName;
  47 + private String connectorId;
  48 + private String orderNo;
  49 + private String startTime;
  50 + private String endTime;
  51 + private Double startSoc;
  52 + private Double endSoc;
  53 + private String stopReason;
  54 + private Double chargeCapacity;
  55 + private Double electricCharge;
  56 + private Double serviceCharge;
  57 + private Double totalAmount;
  58 + private String vinCode;
  59 + private String cardNo;
  60 + private String carCode;
  61 + private String dateStr;
  62 + private Integer origin;
  63 + private Integer sumTime;
  64 + private String batchNo;
  65 + private String pileId;
  66 + private String createBy;
  67 + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
  68 + private Date createDate;
  69 + private String updateBy;
  70 + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
  71 + private Date updateDate;
  72 +
  73 +
  74 + public Long getId() {
  75 + return id;
  76 + }
  77 + public void setId(Long id) {
  78 + this.id = id;
  79 + }
  80 + public String getStationName() {
  81 + return stationName;
  82 + }
  83 + public void setStationName(String stationName) {
  84 + this.stationName = stationName;
  85 + }
  86 + public String getConnectorId() {
  87 + return connectorId;
  88 + }
  89 + public void setConnectorId(String connectorId) {
  90 + this.connectorId = connectorId;
  91 + }
  92 + public String getOrderNo() {
  93 + return orderNo;
  94 + }
  95 + public void setOrderNo(String orderNo) {
  96 + this.orderNo = orderNo;
  97 + }
  98 + public String getStartTime() {
  99 + return startTime;
  100 + }
  101 + public void setStartTime(String startTime) {
  102 + this.startTime = startTime;
  103 + }
  104 + public String getEndTime() {
  105 + return endTime;
  106 + }
  107 + public void setEndTime(String endTime) {
  108 + this.endTime = endTime;
  109 + }
  110 + public Double getStartSoc() {
  111 + return startSoc;
  112 + }
  113 + public void setStartSoc(Double startSoc) {
  114 + this.startSoc = startSoc;
  115 + }
  116 + public Double getEndSoc() {
  117 + return endSoc;
  118 + }
  119 + public void setEndSoc(Double endSoc) {
  120 + this.endSoc = endSoc;
  121 + }
  122 + public String getStopReason() {
  123 + return stopReason;
  124 + }
  125 + public void setStopReason(String stopReason) {
  126 + this.stopReason = stopReason;
  127 + }
  128 + public Double getChargeCapacity() {
  129 + return chargeCapacity;
  130 + }
  131 + public void setChargeCapacity(Double chargeCapacity) {
  132 + this.chargeCapacity = chargeCapacity;
  133 + }
  134 + public Double getElectricCharge() {
  135 + return electricCharge;
  136 + }
  137 + public void setElectricCharge(Double electricCharge) {
  138 + this.electricCharge = electricCharge;
  139 + }
  140 + public Double getServiceCharge() {
  141 + return serviceCharge;
  142 + }
  143 + public void setServiceCharge(Double serviceCharge) {
  144 + this.serviceCharge = serviceCharge;
  145 + }
  146 + public Double getTotalAmount() {
  147 + return totalAmount;
  148 + }
  149 + public void setTotalAmount(Double totalAmount) {
  150 + this.totalAmount = totalAmount;
  151 + }
  152 + public String getVinCode() {
  153 + return vinCode;
  154 + }
  155 + public void setVinCode(String vinCode) {
  156 + this.vinCode = vinCode;
  157 + }
  158 + public String getCardNo() {
  159 + return cardNo;
  160 + }
  161 + public void setCardNo(String cardNo) {
  162 + this.cardNo = cardNo;
  163 + }
  164 + public String getCarCode() {
  165 + return carCode;
  166 + }
  167 + public void setCarCode(String carCode) {
  168 + this.carCode = carCode;
  169 + }
  170 + public String getDateStr() {
  171 + return dateStr;
  172 + }
  173 + public void setDateStr(String dateStr) {
  174 + this.dateStr = dateStr;
  175 + }
  176 + public Integer getOrigin() {
  177 + return origin;
  178 + }
  179 + public void setOrigin(Integer origin) {
  180 + this.origin = origin;
  181 + }
  182 + public Integer getSumTime() {
  183 + return sumTime;
  184 + }
  185 + public void setSumTime(Integer sumTime) {
  186 + this.sumTime = sumTime;
  187 + }
  188 + public String getBatchNo() {
  189 + return batchNo;
  190 + }
  191 + public void setBatchNo(String batchNo) {
  192 + this.batchNo = batchNo;
  193 + }
  194 + public String getPileId() {
  195 + return pileId;
  196 + }
  197 + public void setPileId(String pileId) {
  198 + this.pileId = pileId;
  199 + }
  200 + public String getCreateBy() {
  201 + return createBy;
  202 + }
  203 + public void setCreateBy(String createBy) {
  204 + this.createBy = createBy;
  205 + }
  206 + public Date getCreateDate() {
  207 + return createDate;
  208 + }
  209 + public void setCreateDate(Date createDate) {
  210 + this.createDate = createDate;
  211 + }
  212 + public String getUpdateBy() {
  213 + return updateBy;
  214 + }
  215 + public void setUpdateBy(String updateBy) {
  216 + this.updateBy = updateBy;
  217 + }
  218 + public Date getUpdateDate() {
  219 + return updateDate;
  220 + }
  221 + public void setUpdateDate(Date updateDate) {
  222 + this.updateDate = updateDate;
  223 + }
  224 +
  225 +}
0 \ No newline at end of file 226 \ No newline at end of file
src/main/java/com/bsth/entity/oil/Qlb.java
@@ -348,7 +348,7 @@ public class Qlb { @@ -348,7 +348,7 @@ public class Qlb {
348 if(this.getZlc()==0){ 348 if(this.getZlc()==0){
349 return "0"; 349 return "0";
350 }else{ 350 }else{
351 - DecimalFormat df = new DecimalFormat("0.00"); 351 + DecimalFormat df = new DecimalFormat("0.000");
352 return df.format(this.getHn()/this.getZlc()*100); 352 return df.format(this.getHn()/this.getZlc()*100);
353 } 353 }
354 } 354 }
src/main/java/com/bsth/entity/oil/Ylb.java
1 -package com.bsth.entity.oil;  
2 -  
3 -import java.text.DecimalFormat;  
4 -import java.util.Date;  
5 -  
6 -import javax.persistence.*;  
7 -  
8 -import org.springframework.format.annotation.DateTimeFormat;  
9 -  
10 -import com.bsth.data.BasicData;  
11 -  
12 -@Entity  
13 -@Table(name = "bsth_c_ylb")  
14 -public class Ylb {  
15 - @Id  
16 - @GeneratedValue(strategy = GenerationType.IDENTITY)  
17 - private Integer id;  
18 - @DateTimeFormat(pattern="yyyy-MM-dd")  
19 - private Date rq;  
20 - private String xlbm;  
21 - private String linename;  
22 - private String ssgsdm;  
23 - private String fgsdm;  
24 - private String nbbm;  
25 - private String jsy;  
26 - private String jname;  
27 - private Double czlc=0.0;  
28 - private Double jzlc=0.0;  
29 - private Double czyl=0.0;  
30 - private Double jzyl=0.0;  
31 - private Double jzl=0.0;  
32 - private int sfkt;  
33 - private String jhsj;  
34 - private Double yh=0.0;  
35 - private Double sh=0.0;  
36 - private String shyy;  
37 - private Double zlc=0.0;  
38 - private int yhlx;  
39 - private String rylx="0";  
40 - private Double ns=0.0;  
41 - private Double fyylc=0.0;  
42 - private Double jhzlc=0.0;  
43 - private Double jhfyylc=0.0;  
44 - private int jhzbc;  
45 - private int jhbc;  
46 - private int sjzbc;  
47 - private int sjbc;  
48 - private String edituser;  
49 - private Date edittime;  
50 - private Date updatetime;  
51 - private Date createtime;  
52 -  
53 - private int nylx;  
54 - //进场顺序(根据最先出场和最后进场来关联车辆的存油量)  
55 - private int jcsx;  
56 -  
57 - private String lp;  
58 - @Transient  
59 - private String bglyh;  
60 -  
61 - @Transient  
62 - private String xlname;  
63 -  
64 - @Transient  
65 - private String gsname;  
66 -  
67 - @Transient  
68 - private String fgsname;  
69 -  
70 - @Transient  
71 - private String name;  
72 -  
73 - public Integer getId() {  
74 - return id;  
75 - }  
76 -  
77 - public void setId(Integer id) {  
78 - this.id = id;  
79 - }  
80 - public Date getRq() {  
81 - return rq;  
82 - }  
83 -  
84 - public void setRq(Date rq) {  
85 - this.rq = rq;  
86 - }  
87 -  
88 - public String getXlbm() {  
89 - return xlbm;  
90 - }  
91 -  
92 - public void setXlbm(String xlbm) {  
93 - this.xlbm = xlbm;  
94 - }  
95 -  
96 - public String getLinename() {  
97 - return linename;  
98 - }  
99 -  
100 - public void setLinename(String linename) {  
101 - this.linename = linename;  
102 - }  
103 -  
104 - public String getSsgsdm() {  
105 - return ssgsdm;  
106 - }  
107 - public void setSsgsdm(String ssgsdm) {  
108 - this.ssgsdm = ssgsdm;  
109 - }  
110 - public String getFgsdm() {  
111 - return fgsdm;  
112 - }  
113 - public void setFgsdm(String fgsdm) {  
114 - this.fgsdm = fgsdm;  
115 - }  
116 - public String getNbbm() {  
117 - return nbbm;  
118 - }  
119 - public void setNbbm(String nbbm) {  
120 - this.nbbm = nbbm;  
121 - }  
122 - public String getJsy() {  
123 - return jsy;  
124 - }  
125 - public void setJsy(String jsy) {  
126 - this.jsy = jsy;  
127 - }  
128 - public Double getCzlc() {  
129 - return czlc;  
130 - }  
131 - public void setCzlc(Double czlc) {  
132 - this.czlc = czlc;  
133 - }  
134 - public Double getJzlc() {  
135 - return jzlc;  
136 - }  
137 - public void setJzlc(Double jzlc) {  
138 - this.jzlc = jzlc;  
139 - }  
140 - public Double getCzyl() {  
141 - return czyl;  
142 - }  
143 - public void setCzyl(Double czyl) {  
144 - this.czyl = czyl;  
145 - }  
146 - public Double getJzyl() {  
147 - return jzyl;  
148 - }  
149 - public void setJzyl(Double jzyl) {  
150 - this.jzyl = jzyl;  
151 - }  
152 - public Double getJzl() {  
153 - return jzl;  
154 - }  
155 - public void setJzl(Double jzl) {  
156 - this.jzl = jzl;  
157 - }  
158 - public int getSfkt() {  
159 - return sfkt;  
160 - }  
161 - public void setSfkt(int sfkt) {  
162 - this.sfkt = sfkt;  
163 - }  
164 - public String getJhsj() {  
165 - return jhsj;  
166 - }  
167 - public void setJhsj(String jhsj) {  
168 - this.jhsj = jhsj;  
169 - }  
170 - public Double getYh() {  
171 - return yh;  
172 - }  
173 - public void setYh(Double yh) {  
174 - this.yh = yh;  
175 - }  
176 - public Double getSh() {  
177 - return sh;  
178 - }  
179 - public void setSh(Double sh) {  
180 - this.sh = sh;  
181 - }  
182 - public String getShyy() {  
183 - return shyy;  
184 - }  
185 - public void setShyy(String shyy) {  
186 - this.shyy = shyy;  
187 - }  
188 - public Double getZlc() {  
189 - return zlc;  
190 - }  
191 - public void setZlc(Double zlc) {  
192 - this.zlc = zlc;  
193 - }  
194 - public int getYhlx() {  
195 - return yhlx;  
196 - }  
197 - public void setYhlx(int yhlx) {  
198 - this.yhlx = yhlx;  
199 - }  
200 - public String getRylx() {  
201 - return rylx;  
202 - }  
203 - public void setRylx(String rylx) {  
204 - this.rylx = rylx;  
205 - }  
206 - public Double getNs() {  
207 - return ns;  
208 - }  
209 - public void setNs(Double ns) {  
210 - this.ns = ns;  
211 - }  
212 - public Double getFyylc() {  
213 - return fyylc;  
214 - }  
215 - public void setFyylc(Double fyylc) {  
216 - this.fyylc = fyylc;  
217 - }  
218 - public Double getJhzlc() {  
219 - return jhzlc;  
220 - }  
221 - public void setJhzlc(Double jhzlc) {  
222 - this.jhzlc = jhzlc;  
223 - }  
224 - public Double getJhfyylc() {  
225 - return jhfyylc;  
226 - }  
227 - public void setJhfyylc(Double jhfyylc) {  
228 - this.jhfyylc = jhfyylc;  
229 - }  
230 - public int getJhzbc() {  
231 - return jhzbc;  
232 - }  
233 - public void setJhzbc(int jhzbc) {  
234 - this.jhzbc = jhzbc;  
235 - }  
236 - public int getJhbc() {  
237 - return jhbc;  
238 - }  
239 - public void setJhbc(int jhbc) {  
240 - this.jhbc = jhbc;  
241 - }  
242 - public int getSjzbc() {  
243 - return sjzbc;  
244 - }  
245 - public void setSjzbc(int sjzbc) {  
246 - this.sjzbc = sjzbc;  
247 - }  
248 - public int getSjbc() {  
249 - return sjbc;  
250 - }  
251 - public void setSjbc(int sjbc) {  
252 - this.sjbc = sjbc;  
253 - }  
254 - public String getEdituser() {  
255 - return edituser;  
256 - }  
257 - public void setEdituser(String edituser) {  
258 - this.edituser = edituser;  
259 - }  
260 - public Date getEdittime() {  
261 - return edittime;  
262 - }  
263 - public void setEdittime(Date edittime) {  
264 - this.edittime = edittime;  
265 - }  
266 - public Date getCreatetime() {  
267 - return createtime;  
268 - }  
269 - public void setCreatetime(Date createtime) {  
270 - this.createtime = createtime;  
271 - }  
272 - public int getNylx() {  
273 - return nylx;  
274 - }  
275 - public void setNylx(int nylx) {  
276 - this.nylx = nylx;  
277 - }  
278 -  
279 - public int getJcsx(){  
280 - return jcsx;  
281 - }  
282 -  
283 - public void setJcsx(int jcsx){  
284 - this.jcsx=jcsx;  
285 - }  
286 -  
287 - public String getBglyh() {  
288 - if(this.getZlc()==0){  
289 - return "0";  
290 - }else{  
291 - DecimalFormat df = new DecimalFormat("0.00");  
292 - return df.format(this.getYh()/this.getZlc()*100);  
293 - }  
294 - }  
295 -  
296 - public void setBglyh(String bglyh) {  
297 - this.bglyh = bglyh;  
298 - }  
299 -  
300 - public String getXlname() {  
301 - return BasicData.lineCodeAllNameMap.get(this.xlbm);  
302 - }  
303 -  
304 - public void setXlname(String xlname) {  
305 - this.xlname = xlname;  
306 - }  
307 -  
308 - public String getGsname() {  
309 - return BasicData.businessCodeNameMap.get(this.ssgsdm);  
310 - }  
311 -  
312 - public void setGsname(String gsname) {  
313 - this.gsname = gsname;  
314 - }  
315 -  
316 -  
317 - public String getFgsname() {  
318 - return BasicData.businessFgsCodeNameMap.get(this.fgsdm+"_"+this.ssgsdm);  
319 - }  
320 -  
321 - public void setFgsname(String fgsname) {  
322 - this.fgsname = fgsname;  
323 - }  
324 -  
325 - public String getName() {  
326 - return BasicData.allPerson.get(this.ssgsdm+"-"+this.jsy);  
327 - }  
328 -  
329 - public void setName(String name) {  
330 - this.name = name;  
331 - }  
332 -  
333 -  
334 - public Date getUpdatetime() {  
335 - return updatetime;  
336 - }  
337 -  
338 - public void setUpdatetime(Date updatetime) {  
339 - this.updatetime = updatetime;  
340 - }  
341 -  
342 - public String getLp() {  
343 - return lp;  
344 - }  
345 -  
346 - public void setLp(String lp) {  
347 - this.lp = lp;  
348 - }  
349 -  
350 - public String getJname() {  
351 - return jname;  
352 - }  
353 -  
354 - public void setJname(String jname) {  
355 - this.jname = jname;  
356 - }  
357 -  
358 -  
359 -} 1 +package com.bsth.entity.oil;
  2 +
  3 +import java.text.DecimalFormat;
  4 +import java.util.Date;
  5 +
  6 +import javax.persistence.*;
  7 +
  8 +import org.springframework.format.annotation.DateTimeFormat;
  9 +
  10 +import com.bsth.data.BasicData;
  11 +
  12 +@Entity
  13 +@Table(name = "bsth_c_ylb")
  14 +public class Ylb {
  15 + @Id
  16 + @GeneratedValue(strategy = GenerationType.IDENTITY)
  17 + private Integer id;
  18 + @DateTimeFormat(pattern="yyyy-MM-dd")
  19 + private Date rq;
  20 + private String xlbm;
  21 + private String linename;
  22 + private String ssgsdm;
  23 + private String fgsdm;
  24 + private String nbbm;
  25 + private String jsy;
  26 + private String jname;
  27 + private Double czlc=0.0;
  28 + private Double jzlc=0.0;
  29 + private Double czyl=0.0;
  30 + private Double jzyl=0.0;
  31 + private Double jzl=0.0;
  32 + private int sfkt;
  33 + private String jhsj;
  34 + private Double yh=0.0;
  35 + private Double sh=0.0;
  36 + private String shyy;
  37 + private Double zlc=0.0;
  38 + private int yhlx;
  39 + private String rylx="0";
  40 + private Double ns=0.0;
  41 + private Double fyylc=0.0;
  42 + private Double jhzlc=0.0;
  43 + private Double jhfyylc=0.0;
  44 + private int jhzbc;
  45 + private int jhbc;
  46 + private int sjzbc;
  47 + private int sjbc;
  48 + private String edituser;
  49 + private Date edittime;
  50 + private Date updatetime;
  51 + private Date createtime;
  52 +
  53 + private int nylx;
  54 + //进场顺序(根据最先出场和最后进场来关联车辆的存油量)
  55 + private int jcsx;
  56 +
  57 + private String lp;
  58 + @Transient
  59 + private String bglyh;
  60 +
  61 + @Transient
  62 + private String xlname;
  63 +
  64 + @Transient
  65 + private String gsname;
  66 +
  67 + @Transient
  68 + private String fgsname;
  69 +
  70 + @Transient
  71 + private String name;
  72 +
  73 + public Integer getId() {
  74 + return id;
  75 + }
  76 +
  77 + public void setId(Integer id) {
  78 + this.id = id;
  79 + }
  80 + public Date getRq() {
  81 + return rq;
  82 + }
  83 +
  84 + public void setRq(Date rq) {
  85 + this.rq = rq;
  86 + }
  87 +
  88 + public String getXlbm() {
  89 + return xlbm;
  90 + }
  91 +
  92 + public void setXlbm(String xlbm) {
  93 + this.xlbm = xlbm;
  94 + }
  95 +
  96 + public String getLinename() {
  97 + return linename;
  98 + }
  99 +
  100 + public void setLinename(String linename) {
  101 + this.linename = linename;
  102 + }
  103 +
  104 + public String getSsgsdm() {
  105 + return ssgsdm;
  106 + }
  107 + public void setSsgsdm(String ssgsdm) {
  108 + this.ssgsdm = ssgsdm;
  109 + }
  110 + public String getFgsdm() {
  111 + return fgsdm;
  112 + }
  113 + public void setFgsdm(String fgsdm) {
  114 + this.fgsdm = fgsdm;
  115 + }
  116 + public String getNbbm() {
  117 + return nbbm;
  118 + }
  119 + public void setNbbm(String nbbm) {
  120 + this.nbbm = nbbm;
  121 + }
  122 + public String getJsy() {
  123 + return jsy;
  124 + }
  125 + public void setJsy(String jsy) {
  126 + this.jsy = jsy;
  127 + }
  128 + public Double getCzlc() {
  129 + return czlc;
  130 + }
  131 + public void setCzlc(Double czlc) {
  132 + this.czlc = czlc;
  133 + }
  134 + public Double getJzlc() {
  135 + return jzlc;
  136 + }
  137 + public void setJzlc(Double jzlc) {
  138 + this.jzlc = jzlc;
  139 + }
  140 + public Double getCzyl() {
  141 + return czyl;
  142 + }
  143 + public void setCzyl(Double czyl) {
  144 + this.czyl = czyl;
  145 + }
  146 + public Double getJzyl() {
  147 + return jzyl;
  148 + }
  149 + public void setJzyl(Double jzyl) {
  150 + this.jzyl = jzyl;
  151 + }
  152 + public Double getJzl() {
  153 + return jzl;
  154 + }
  155 + public void setJzl(Double jzl) {
  156 + this.jzl = jzl;
  157 + }
  158 + public int getSfkt() {
  159 + return sfkt;
  160 + }
  161 + public void setSfkt(int sfkt) {
  162 + this.sfkt = sfkt;
  163 + }
  164 + public String getJhsj() {
  165 + return jhsj;
  166 + }
  167 + public void setJhsj(String jhsj) {
  168 + this.jhsj = jhsj;
  169 + }
  170 + public Double getYh() {
  171 + return yh;
  172 + }
  173 + public void setYh(Double yh) {
  174 + this.yh = yh;
  175 + }
  176 + public Double getSh() {
  177 + return sh;
  178 + }
  179 + public void setSh(Double sh) {
  180 + this.sh = sh;
  181 + }
  182 + public String getShyy() {
  183 + return shyy;
  184 + }
  185 + public void setShyy(String shyy) {
  186 + this.shyy = shyy;
  187 + }
  188 + public Double getZlc() {
  189 + return zlc;
  190 + }
  191 + public void setZlc(Double zlc) {
  192 + this.zlc = zlc;
  193 + }
  194 + public int getYhlx() {
  195 + return yhlx;
  196 + }
  197 + public void setYhlx(int yhlx) {
  198 + this.yhlx = yhlx;
  199 + }
  200 + public String getRylx() {
  201 + return rylx;
  202 + }
  203 + public void setRylx(String rylx) {
  204 + this.rylx = rylx;
  205 + }
  206 + public Double getNs() {
  207 + return ns;
  208 + }
  209 + public void setNs(Double ns) {
  210 + this.ns = ns;
  211 + }
  212 + public Double getFyylc() {
  213 + return fyylc;
  214 + }
  215 + public void setFyylc(Double fyylc) {
  216 + this.fyylc = fyylc;
  217 + }
  218 + public Double getJhzlc() {
  219 + return jhzlc;
  220 + }
  221 + public void setJhzlc(Double jhzlc) {
  222 + this.jhzlc = jhzlc;
  223 + }
  224 + public Double getJhfyylc() {
  225 + return jhfyylc;
  226 + }
  227 + public void setJhfyylc(Double jhfyylc) {
  228 + this.jhfyylc = jhfyylc;
  229 + }
  230 + public int getJhzbc() {
  231 + return jhzbc;
  232 + }
  233 + public void setJhzbc(int jhzbc) {
  234 + this.jhzbc = jhzbc;
  235 + }
  236 + public int getJhbc() {
  237 + return jhbc;
  238 + }
  239 + public void setJhbc(int jhbc) {
  240 + this.jhbc = jhbc;
  241 + }
  242 + public int getSjzbc() {
  243 + return sjzbc;
  244 + }
  245 + public void setSjzbc(int sjzbc) {
  246 + this.sjzbc = sjzbc;
  247 + }
  248 + public int getSjbc() {
  249 + return sjbc;
  250 + }
  251 + public void setSjbc(int sjbc) {
  252 + this.sjbc = sjbc;
  253 + }
  254 + public String getEdituser() {
  255 + return edituser;
  256 + }
  257 + public void setEdituser(String edituser) {
  258 + this.edituser = edituser;
  259 + }
  260 + public Date getEdittime() {
  261 + return edittime;
  262 + }
  263 + public void setEdittime(Date edittime) {
  264 + this.edittime = edittime;
  265 + }
  266 + public Date getCreatetime() {
  267 + return createtime;
  268 + }
  269 + public void setCreatetime(Date createtime) {
  270 + this.createtime = createtime;
  271 + }
  272 + public int getNylx() {
  273 + return nylx;
  274 + }
  275 + public void setNylx(int nylx) {
  276 + this.nylx = nylx;
  277 + }
  278 +
  279 + public int getJcsx(){
  280 + return jcsx;
  281 + }
  282 +
  283 + public void setJcsx(int jcsx){
  284 + this.jcsx=jcsx;
  285 + }
  286 +
  287 + public String getBglyh() {
  288 + if(this.getZlc()==0){
  289 + return "0";
  290 + }else{
  291 + DecimalFormat df = new DecimalFormat("0.000");
  292 + return df.format(this.getYh()/this.getZlc()*100);
  293 + }
  294 + }
  295 +
  296 + public void setBglyh(String bglyh) {
  297 + this.bglyh = bglyh;
  298 + }
  299 +
  300 + public String getXlname() {
  301 + return BasicData.lineCodeAllNameMap.get(this.xlbm);
  302 + }
  303 +
  304 + public void setXlname(String xlname) {
  305 + this.xlname = xlname;
  306 + }
  307 +
  308 + public String getGsname() {
  309 + return BasicData.businessCodeNameMap.get(this.ssgsdm);
  310 + }
  311 +
  312 + public void setGsname(String gsname) {
  313 + this.gsname = gsname;
  314 + }
  315 +
  316 +
  317 + public String getFgsname() {
  318 + return BasicData.businessFgsCodeNameMap.get(this.fgsdm+"_"+this.ssgsdm);
  319 + }
  320 +
  321 + public void setFgsname(String fgsname) {
  322 + this.fgsname = fgsname;
  323 + }
  324 +
  325 + public String getName() {
  326 + return BasicData.allPerson.get(this.ssgsdm+"-"+this.jsy);
  327 + }
  328 +
  329 + public void setName(String name) {
  330 + this.name = name;
  331 + }
  332 +
  333 +
  334 + public Date getUpdatetime() {
  335 + return updatetime;
  336 + }
  337 +
  338 + public void setUpdatetime(Date updatetime) {
  339 + this.updatetime = updatetime;
  340 + }
  341 +
  342 + public String getLp() {
  343 + return lp;
  344 + }
  345 +
  346 + public void setLp(String lp) {
  347 + this.lp = lp;
  348 + }
  349 +
  350 + public String getJname() {
  351 + return jname;
  352 + }
  353 +
  354 + public void setJname(String jname) {
  355 + this.jname = jname;
  356 + }
  357 +
  358 +
  359 +}
src/main/java/com/bsth/entity/realcontrol/ScheduleRealInfo.java
@@ -21,7 +21,7 @@ import java.util.Set; @@ -21,7 +21,7 @@ import java.util.Set;
21 @NamedAttributeNode("cTasks") 21 @NamedAttributeNode("cTasks")
22 }) 22 })
23 }) 23 })
24 -public class ScheduleRealInfo { 24 +public class ScheduleRealInfo implements Cloneable{
25 /** 主键Id */ 25 /** 主键Id */
26 @Id 26 @Id
27 private Long id; 27 private Long id;
@@ -1054,4 +1054,10 @@ public class ScheduleRealInfo { @@ -1054,4 +1054,10 @@ public class ScheduleRealInfo {
1054 public void setOperationType(String operationType) { 1054 public void setOperationType(String operationType) {
1055 this.operationType = operationType; 1055 this.operationType = operationType;
1056 } 1056 }
  1057 +
  1058 + @Override
  1059 + public ScheduleRealInfo clone() throws CloneNotSupportedException {
  1060 + ScheduleRealInfo cloned = (ScheduleRealInfo) super.clone();
  1061 + return cloned;
  1062 + }
1057 } 1063 }
src/main/java/com/bsth/repository/DKLInfoRepository.java 0 → 100644
  1 +package com.bsth.repository;
  2 +
  3 +import com.bsth.entity.DKLInfo;
  4 +import org.springframework.stereotype.Repository;
  5 +
  6 +
  7 +@Repository
  8 +public interface DKLInfoRepository extends BaseRepository<DKLInfo, Integer> {
  9 +}
src/main/java/com/bsth/repository/lg_travel/RegionLineCarRepository.java 0 → 100644
  1 +package com.bsth.repository.lg_travel;
  2 +
  3 +
  4 +import com.bsth.entity.lg_travel.RegionLineCar;
  5 +import com.bsth.repository.BaseRepository;
  6 +import org.springframework.stereotype.Repository;
  7 +
  8 +@Repository
  9 +public interface RegionLineCarRepository extends BaseRepository<RegionLineCar, Long> {
  10 +}
src/main/java/com/bsth/repository/lg_travel/RegionRepository.java 0 → 100644
  1 +package com.bsth.repository.lg_travel;
  2 +
  3 +
  4 +import com.bsth.entity.lg_travel.Region;
  5 +import com.bsth.repository.BaseRepository;
  6 +import org.springframework.stereotype.Repository;
  7 +
  8 +@Repository
  9 +public interface RegionRepository extends BaseRepository<Region, Long> {
  10 +}
src/main/java/com/bsth/repository/oil/JdlReceptionRepository.java 0 → 100644
  1 +package com.bsth.repository.oil;
  2 +
  3 +import java.util.List;
  4 +
  5 +import org.springframework.data.jpa.repository.Modifying;
  6 +import org.springframework.data.jpa.repository.Query;
  7 +import org.springframework.stereotype.Repository;
  8 +import org.springframework.transaction.annotation.Transactional;
  9 +
  10 +import com.bsth.entity.oil.JdlReception;
  11 +import com.bsth.repository.BaseRepository;
  12 +
  13 +@Repository
  14 +public interface JdlReceptionRepository extends BaseRepository<JdlReception, Integer>{
  15 +
  16 + @Query(value="SELECT date_str, car_code, sum(CAST(charge_capacity AS DECIMAL(10, 3))) charge_capacity FROM bsth_c_jdl_reception where date_str = ?1 and car_code like %?2% group by date_str, car_code order by date_str" ,nativeQuery=true)
  17 + List<Object[]> querySum(String rq, String nbbm);
  18 +
  19 + @Query(value="SELECT * FROM bsth_c_jdl_reception where date_str = ?1 and car_code like %?2% " ,nativeQuery=true)
  20 + List<JdlReception> query(String rq, String nbbm);
  21 +
  22 + @Query(value="SELECT batch_no, create_by, DATE_FORMAT(create_date, '%Y-%m-%d %H:%i:%s') create_date FROM bsth_c_jdl_reception where DATE_FORMAT(create_date, '%Y-%m-%d') = ?1 and origin = 1 group by batch_no, create_by, create_date order by batch_no" ,nativeQuery=true)
  23 + List<Object[]> queryBatch(String rq);
  24 +
  25 + @Query(value="SELECT * FROM bsth_c_jdl_reception where create_by = ?1 and DATE_FORMAT(create_date, '%Y-%m-%d %H:%i:%s') = ?2 and origin = 1 " ,nativeQuery=true)
  26 + List<JdlReception> queryBatchData(String createBy, String createDate);
  27 +
  28 + @Modifying
  29 + @Transactional
  30 + @Query(value = "delete JdlReception j where createBy = ?1 and DATE_FORMAT(createDate, '%Y-%m-%d %H:%i:%s') = ?2 and origin = 1")
  31 + void deleteBatch(String createBy, String createDate);
  32 +
  33 + @Transactional
  34 + @Modifying
  35 + @Query(value="UPDATE bsth_c_jdl_reception SET " +
  36 + " date_str = ?2," +
  37 + " pile_id = ?3," +
  38 + " car_code = ?4," +
  39 + " start_time = ?5," +
  40 + " end_time = ?6," +
  41 + " sum_time = ?7," +
  42 + " start_soc = ?8," +
  43 + " end_soc = ?9," +
  44 + " charge_capacity = ?10," +
  45 + " stop_reason = ?11" +
  46 + " WHERE id = ?1", nativeQuery=true)
  47 + public void update(Long id, String dateStr, String pileId, String carCode, String startTime, String endTime, Integer sumTime, Double startSoc, Double endSoc, Double chargeCapacity, String stopReason);
  48 +
  49 +}
src/main/java/com/bsth/repository/oil/NylogRepository.java
1 package com.bsth.repository.oil; 1 package com.bsth.repository.oil;
2 2
  3 +import java.util.List;
3 4
4 - 5 +import org.springframework.data.jpa.repository.Query;
5 import org.springframework.stereotype.Repository; 6 import org.springframework.stereotype.Repository;
  7 +
6 import com.bsth.entity.oil.Nylog; 8 import com.bsth.entity.oil.Nylog;
7 import com.bsth.repository.BaseRepository; 9 import com.bsth.repository.BaseRepository;
8 10
9 @Repository 11 @Repository
10 public interface NylogRepository extends BaseRepository<Nylog, Integer>{ 12 public interface NylogRepository extends BaseRepository<Nylog, Integer>{
  13 +
  14 + @Query(value="select n from Nylog n where nylx = ?1 and czmc = ?2 and cxtj = ?3 order by createdate desc ")
  15 + List<Nylog> selectByCxtj(String nylx, String czmc, String cxtj);
  16 +
11 } 17 }
src/main/java/com/bsth/service/DKLInfoService.java 0 → 100644
  1 +package com.bsth.service;
  2 +
  3 +import com.bsth.entity.DKLInfo;
  4 +
  5 +
  6 +public interface DKLInfoService extends BaseService<DKLInfo, Integer> {
  7 +}
src/main/java/com/bsth/service/impl/DKLInfoServiceImpl.java 0 → 100644
  1 +package com.bsth.service.impl;
  2 +
  3 +import com.bsth.entity.DKLInfo;
  4 +import com.bsth.service.DKLInfoService;
  5 +import org.springframework.stereotype.Service;
  6 +
  7 +
  8 +@Service
  9 +public class DKLInfoServiceImpl extends BaseServiceImpl<DKLInfo, Integer> implements DKLInfoService {
  10 +}
src/main/java/com/bsth/service/lg_travel/RegionLineCarService.java 0 → 100644
  1 +package com.bsth.service.lg_travel;
  2 +
  3 +import com.bsth.entity.lg_travel.RegionLineCar;
  4 +import com.bsth.service.BaseService;
  5 +
  6 +public interface RegionLineCarService extends BaseService<RegionLineCar, Long> {
  7 +}
src/main/java/com/bsth/service/lg_travel/RegionService.java 0 → 100644
  1 +package com.bsth.service.lg_travel;
  2 +
  3 +import com.bsth.entity.lg_travel.Region;
  4 +import com.bsth.service.BaseService;
  5 +
  6 +public interface RegionService extends BaseService<Region, Long> {
  7 +}
src/main/java/com/bsth/service/lg_travel/impl/RegionLineCarServiceImpl.java 0 → 100644
  1 +package com.bsth.service.lg_travel.impl;
  2 +
  3 +
  4 +import com.bsth.entity.lg_travel.RegionLineCar;
  5 +import com.bsth.service.impl.BaseServiceImpl;
  6 +import com.bsth.service.lg_travel.RegionLineCarService;
  7 +import org.springframework.stereotype.Service;
  8 +
  9 +@Service
  10 +public class RegionLineCarServiceImpl extends BaseServiceImpl<RegionLineCar, Long> implements RegionLineCarService {
  11 +
  12 +
  13 +
  14 +}
src/main/java/com/bsth/service/lg_travel/impl/RegionServiceImpl.java 0 → 100644
  1 +package com.bsth.service.lg_travel.impl;
  2 +
  3 +
  4 +import com.bsth.entity.lg_travel.Region;
  5 +import com.bsth.service.impl.BaseServiceImpl;
  6 +import com.bsth.service.lg_travel.RegionService;
  7 +import org.springframework.stereotype.Service;
  8 +
  9 +@Service
  10 +public class RegionServiceImpl extends BaseServiceImpl<Region, Long> implements RegionService {
  11 +
  12 +
  13 +
  14 +}
src/main/java/com/bsth/service/oil/JdlService.java
1 package com.bsth.service.oil; 1 package com.bsth.service.oil;
2 2
3 import java.io.File; 3 import java.io.File;
  4 +import java.io.IOException;
  5 +import java.util.List;
4 import java.util.Map; 6 import java.util.Map;
5 7
  8 +import javax.servlet.http.HttpServletResponse;
  9 +
6 import com.bsth.entity.oil.Jdl; 10 import com.bsth.entity.oil.Jdl;
  11 +import com.bsth.entity.oil.JdlReception;
7 import com.bsth.service.BaseService; 12 import com.bsth.service.BaseService;
8 13
9 public interface JdlService extends BaseService<Jdl, Integer> { 14 public interface JdlService extends BaseService<Jdl, Integer> {
10 15
11 public String importExcel(File file, String gsbm_, String gsName, String fgsbm, String fgsName); 16 public String importExcel(File file, String gsbm_, String gsName, String fgsbm, String fgsName);
  17 +
  18 + /** 24年12月工单更新电量导入 */
  19 + public String importExcel_2412(File file, String gsbm_, String gsName, String fgsbm, String fgsName);
12 20
13 public Map<String, Object> query(Map<String, Object> map); 21 public Map<String, Object> query(Map<String, Object> map);
  22 +
  23 + public Map<String, Object> query_2412(Map<String, Object> map);
  24 +
  25 + public List<JdlReception> queryJdlReception(Map<String, Object> map);
  26 +
  27 + public Map<String, Object> queryJdlReceptionBatch(Map<String, Object> map);
  28 +
  29 + public List<JdlReception> queryJdlReceptionBatchData(Map<String, Object> map);
  30 +
  31 + public Map<String, Object> deleteJdlReceptionBatch(Map<String, Object> map);
  32 +
  33 + public Map<String, Object> updateJdlReceptionBatch(Map<String, Object> map);
  34 +
  35 + public void downloadJdlReceptionImportFile(Map<String, Object> map, HttpServletResponse response) throws IOException;
  36 +
  37 + /**
  38 + * 查询车辆充电量,以jdl表格式返回
  39 + * @param rq 营运日期
  40 + * @param nbbm 车辆自编号(为‘’时查询全部车辆)
  41 + * @return
  42 + */
  43 + public List<Jdl> queryJdlByJdlReception(String rq, String nbbm);
14 44
15 } 45 }
src/main/java/com/bsth/service/oil/impl/DlbServiceImpl.java
@@ -48,6 +48,7 @@ import com.bsth.repository.CarsRepository; @@ -48,6 +48,7 @@ import com.bsth.repository.CarsRepository;
48 import com.bsth.repository.oil.CdlRepository; 48 import com.bsth.repository.oil.CdlRepository;
49 import com.bsth.repository.oil.CylRepository; 49 import com.bsth.repository.oil.CylRepository;
50 import com.bsth.repository.oil.DlbRepository; 50 import com.bsth.repository.oil.DlbRepository;
  51 +import com.bsth.repository.oil.JdlReceptionRepository;
51 import com.bsth.repository.oil.JdlRepository; 52 import com.bsth.repository.oil.JdlRepository;
52 import com.bsth.repository.oil.NylogRepository; 53 import com.bsth.repository.oil.NylogRepository;
53 import com.bsth.repository.oil.YlbRepository; 54 import com.bsth.repository.oil.YlbRepository;
@@ -55,6 +56,7 @@ import com.bsth.repository.oil.YlxxbRepository; @@ -55,6 +56,7 @@ import com.bsth.repository.oil.YlxxbRepository;
55 import com.bsth.security.util.SecurityUtils; 56 import com.bsth.security.util.SecurityUtils;
56 import com.bsth.service.impl.BaseServiceImpl; 57 import com.bsth.service.impl.BaseServiceImpl;
57 import com.bsth.service.oil.DlbService; 58 import com.bsth.service.oil.DlbService;
  59 +import com.bsth.service.oil.JdlService;
58 import com.bsth.service.realcontrol.ScheduleRealInfoService; 60 import com.bsth.service.realcontrol.ScheduleRealInfoService;
59 import com.bsth.util.Arith; 61 import com.bsth.util.Arith;
60 import com.bsth.util.BatchSaveUtils; 62 import com.bsth.util.BatchSaveUtils;
@@ -77,6 +79,8 @@ public class DlbServiceImpl extends BaseServiceImpl&lt;Dlb,Integer&gt; implements DlbS @@ -77,6 +79,8 @@ public class DlbServiceImpl extends BaseServiceImpl&lt;Dlb,Integer&gt; implements DlbS
77 79
78 @Autowired 80 @Autowired
79 ScheduleRealInfoService scheduleRealInfoService; 81 ScheduleRealInfoService scheduleRealInfoService;
  82 + @Autowired
  83 + JdlService jdlService;
80 84
81 @Autowired 85 @Autowired
82 JdbcTemplate jdbcTemplate; 86 JdbcTemplate jdbcTemplate;
@@ -91,7 +95,8 @@ public class DlbServiceImpl extends BaseServiceImpl&lt;Dlb,Integer&gt; implements DlbS @@ -91,7 +95,8 @@ public class DlbServiceImpl extends BaseServiceImpl&lt;Dlb,Integer&gt; implements DlbS
91 Map<String, Boolean> carsMap=new HashMap<String, Boolean>(); 95 Map<String, Boolean> carsMap=new HashMap<String, Boolean>();
92 for (int i = 0; i < carsList.size(); i++) { 96 for (int i = 0; i < carsList.size(); i++) {
93 Cars c=carsList.get(i); 97 Cars c=carsList.get(i);
94 - carsMap.put(c.getInsideCode(), c.getSfdc()); 98 + carsMap.put(c.getInsideCode(), (c.getSfdc()!=null?c.getSfdc():false)
  99 + || (c.getSfmix()!=null?c.getSfmix():false));//电车或油电混合,都可以充电
95 } 100 }
96 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); 101 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
97 Date dNow = new Date(); //当前时间 102 Date dNow = new Date(); //当前时间
@@ -104,7 +109,7 @@ public class DlbServiceImpl extends BaseServiceImpl&lt;Dlb,Integer&gt; implements DlbS @@ -104,7 +109,7 @@ public class DlbServiceImpl extends BaseServiceImpl&lt;Dlb,Integer&gt; implements DlbS
104 // String rq="2017-11-02"; 109 // String rq="2017-11-02";
105 String line=""; 110 String line="";
106 //保留两位小数 111 //保留两位小数
107 - DecimalFormat df = new DecimalFormat("#.00"); 112 + DecimalFormat df = new DecimalFormat("#.000");
108 // TODO Auto-generated method stub 113 // TODO Auto-generated method stub
109 Map<String, Object> newMap=new HashMap<String,Object>(); 114 Map<String, Object> newMap=new HashMap<String,Object>();
110 //当天DLB信息 115 //当天DLB信息
@@ -112,7 +117,8 @@ public class DlbServiceImpl extends BaseServiceImpl&lt;Dlb,Integer&gt; implements DlbS @@ -112,7 +117,8 @@ public class DlbServiceImpl extends BaseServiceImpl&lt;Dlb,Integer&gt; implements DlbS
112 //当天YLXXB信息 117 //当天YLXXB信息
113 List<Ylxxb> ylxxList=ylxxbRepository.obtainYlxx(rq,1,""); 118 List<Ylxxb> ylxxList=ylxxbRepository.obtainYlxx(rq,1,"");
114 //当天加电信息表 119 //当天加电信息表
115 - List<Jdl> jdlList=jdlRepository.JdlList(rq); 120 + List<Jdl> jdlList = jdlService.queryJdlByJdlReception(rq, "");
  121 + jdlList.addAll(jdlRepository.JdlList(rq));
116 //前一天所有车辆最后进场班次信息 122 //前一天所有车辆最后进场班次信息
117 // List<Dlb> dlListBe=repository.obtainYlbefore(rq, "", "", "", ""); 123 // List<Dlb> dlListBe=repository.obtainYlbefore(rq, "", "", "", "");
118 List<Cdl> cdyList=cdlRepository.obtainCdl(); 124 List<Cdl> cdyList=cdlRepository.obtainCdl();
@@ -123,7 +129,7 @@ public class DlbServiceImpl extends BaseServiceImpl&lt;Dlb,Integer&gt; implements DlbS @@ -123,7 +129,7 @@ public class DlbServiceImpl extends BaseServiceImpl&lt;Dlb,Integer&gt; implements DlbS
123 boolean sfdc=false; 129 boolean sfdc=false;
124 Map<String, Object> map=listpb.get(x); 130 Map<String, Object> map=listpb.get(x);
125 if (carsMap.get(map.get("clZbh").toString())!=null) { 131 if (carsMap.get(map.get("clZbh").toString())!=null) {
126 - sfdc= carsMap.get(map.get("clZbh").toString()); 132 + sfdc = carsMap.get(map.get("clZbh").toString());
127 }else{ 133 }else{
128 sfdc=false; 134 sfdc=false;
129 } 135 }
@@ -237,7 +243,8 @@ public class DlbServiceImpl extends BaseServiceImpl&lt;Dlb,Integer&gt; implements DlbS @@ -237,7 +243,8 @@ public class DlbServiceImpl extends BaseServiceImpl&lt;Dlb,Integer&gt; implements DlbS
237 Map<String, Boolean> carsMap = new HashMap<String, Boolean>(); 243 Map<String, Boolean> carsMap = new HashMap<String, Boolean>();
238 for (int i = 0; i < carsList.size(); i++) { 244 for (int i = 0; i < carsList.size(); i++) {
239 Cars c = carsList.get(i); 245 Cars c = carsList.get(i);
240 - carsMap.put(c.getInsideCode(), c.getSfdc()); 246 + carsMap.put(c.getInsideCode(), (c.getSfdc()!=null?c.getSfdc():false)
  247 + || (c.getSfmix()!=null?c.getSfmix():false));//电车或油电混合,都可以充电
241 } 248 }
242 String rq = map2.get("rq").toString(); 249 String rq = map2.get("rq").toString();
243 String line = ""; 250 String line = "";
@@ -258,7 +265,7 @@ public class DlbServiceImpl extends BaseServiceImpl&lt;Dlb,Integer&gt; implements DlbS @@ -258,7 +265,7 @@ public class DlbServiceImpl extends BaseServiceImpl&lt;Dlb,Integer&gt; implements DlbS
258 } 265 }
259 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 266 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
260 // 保留两位小数 267 // 保留两位小数
261 - DecimalFormat df = new DecimalFormat("#.00"); 268 + DecimalFormat df = new DecimalFormat("#.000");
262 // TODO Auto-generated method stub 269 // TODO Auto-generated method stub
263 // 当天DLB信息 270 // 当天DLB信息
264 List<Dlb> dlList = this.listOrderBy(rq,gsbm,fgsbm,"",nbbm,"nbbm"); 271 List<Dlb> dlList = this.listOrderBy(rq,gsbm,fgsbm,"",nbbm,"nbbm");
@@ -281,8 +288,8 @@ public class DlbServiceImpl extends BaseServiceImpl&lt;Dlb,Integer&gt; implements DlbS @@ -281,8 +288,8 @@ public class DlbServiceImpl extends BaseServiceImpl&lt;Dlb,Integer&gt; implements DlbS
281 } 288 }
282 } 289 }
283 290
284 - List<Jdl> jdlList=jdlRepository.JdlList(rq);  
285 - List<Jdl> jdlList_1=jdlRepository.JdlList_1(rq, gsbm, "-1"); 291 + List<Jdl> jdlList = jdlService.queryJdlByJdlReception(rq, "");
  292 + jdlList.addAll(jdlRepository.JdlList(rq));
286 String sxtj=map2.get("sxtj").toString(); 293 String sxtj=map2.get("sxtj").toString();
287 if(sxtj.equals("0")){ 294 if(sxtj.equals("0")){
288 listpb=listpbs; 295 listpb=listpbs;
@@ -360,41 +367,15 @@ public class DlbServiceImpl extends BaseServiceImpl&lt;Dlb,Integer&gt; implements DlbS @@ -360,41 +367,15 @@ public class DlbServiceImpl extends BaseServiceImpl&lt;Dlb,Integer&gt; implements DlbS
360 //车辆总里程 367 //车辆总里程
361 double zlc =lcMap.get(map_.get("clZbh").toString()); 368 double zlc =lcMap.get(map_.get("clZbh").toString());
362 //车辆总加电量 369 //车辆总加电量
363 - double zjzl = 0.0, zjzl_1 = 0.0;  
364 - for (int j = 0; j < ylxxList.size(); j++) {  
365 - Ylxxb ylxxb = ylxxList.get(j);  
366 - if (map_.get("clZbh").toString().equals(ylxxb.getNbbm())  
367 - && map_.get("company").toString().equals(ylxxb.getGsdm())) {  
368 - zjzl = Arith.add(zjzl, ylxxb.getJzl());  
369 - }  
370 - } 370 + double zjzl = 0.0;
  371 + // 2022年12月20号要求不按车队导入,这之后导入的加注量将覆盖原加注量
371 for (int i = 0; i < jdlList.size(); i++) { 372 for (int i = 0; i < jdlList.size(); i++) {
372 Jdl jdl=jdlList.get(i); 373 Jdl jdl=jdlList.get(i);
373 - if(map_.get("clZbh").toString().equals(jdl.getNbbm())  
374 - &&clFgs.get(map_.get("clZbh").toString()).contains(jdl.getGsBm()+"_"+jdl.getFgsBm())){  
375 - zjzl = Arith.add(zjzl,jdl.getJdl());  
376 - }  
377 - }  
378 - int num = 0; // 2022年12月20号要求不按车队导入,这之后导入的加注量将覆盖原加注量  
379 - for (int i = 0; i < jdlList_1.size(); i++) {  
380 - Jdl jdl=jdlList_1.get(i);  
381 - if(map_.get("clZbh").toString().equals(jdl.getNbbm())  
382 - &&map_.get("company").toString().equals(jdl.getGsBm())){  
383 - zjzl_1 = Arith.add(zjzl_1,jdl.getJdl());  
384 - num++; 374 + if(map_.get("clZbh").toString().equals(jdl.getNbbm())){
  375 + zjzl = Arith.add(zjzl, jdl.getJdl());
385 } 376 }
386 } 377 }
387 - if(num > 0){  
388 - zjzl = zjzl_1;  
389 - }  
390 378
391 -// double clsh=0.0;  
392 -// if(shMap.get(map_.get("clZbh").toString())==null){  
393 -// clsh=0.0;  
394 -// }else{  
395 -// clsh=shMap.get(map_.get("clZbh").toString());  
396 -// }  
397 -// zjzl =Arith.sub(zjzl, clsh);  
398 Double nextJzyl = 0.0; 379 Double nextJzyl = 0.0;
399 for (int i = 0; i < listpb.size(); i++) { 380 for (int i = 0; i < listpb.size(); i++) {
400 Map<String, Object> map = listpb.get(i); 381 Map<String, Object> map = listpb.get(i);
@@ -1076,7 +1057,7 @@ public class DlbServiceImpl extends BaseServiceImpl&lt;Dlb,Integer&gt; implements DlbS @@ -1076,7 +1057,7 @@ public class DlbServiceImpl extends BaseServiceImpl&lt;Dlb,Integer&gt; implements DlbS
1076 Map<String, List<Dlb>> mapList=new HashMap<String,List<Dlb>>(); 1057 Map<String, List<Dlb>> mapList=new HashMap<String,List<Dlb>>();
1077 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); 1058 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
1078 // 保留两位小数 1059 // 保留两位小数
1079 - DecimalFormat df = new DecimalFormat("#.00"); 1060 + DecimalFormat df = new DecimalFormat("#.000");
1080 List<Dlb> dlbList=this.listOrderBy(date,gsdm,fgsdm,"","","nbbm"); 1061 List<Dlb> dlbList=this.listOrderBy(date,gsdm,fgsdm,"","","nbbm");
1081 List<Dlb> dlbList_upd=new ArrayList<Dlb>(); 1062 List<Dlb> dlbList_upd=new ArrayList<Dlb>();
1082 List<Dlb> dlbList_del=new ArrayList<Dlb>(); 1063 List<Dlb> dlbList_del=new ArrayList<Dlb>();
@@ -1132,8 +1113,9 @@ public class DlbServiceImpl extends BaseServiceImpl&lt;Dlb,Integer&gt; implements DlbS @@ -1132,8 +1113,9 @@ public class DlbServiceImpl extends BaseServiceImpl&lt;Dlb,Integer&gt; implements DlbS
1132 shMap.put(cl, Arith.add(sh, dlb.getSh())); 1113 shMap.put(cl, Arith.add(sh, dlb.getSh()));
1133 } 1114 }
1134 } 1115 }
1135 - List<Jdl> jdlList=jdlRepository.JdlList(date);  
1136 - List<Ylxxb> ylxxList = ylxxbRepository.obtainYlxx(date, 0,gsdm); 1116 + List<Jdl> jdlList = jdlService.queryJdlByJdlReception(date, "");
  1117 + jdlList.addAll(jdlRepository.JdlList(date));
  1118 +// List<Ylxxb> ylxxList = ylxxbRepository.obtainYlxx(date, 0,gsdm);
1137 Map<String, Object> newMap_=new HashMap<String,Object>(); 1119 Map<String, Object> newMap_=new HashMap<String,Object>();
1138 Map<String, Object> cMap=new HashMap<String, Object>(); 1120 Map<String, Object> cMap=new HashMap<String, Object>();
1139 List<Map<String, Object>> listpb_=listpbDc; 1121 List<Map<String, Object>> listpb_=listpbDc;
@@ -1148,19 +1130,10 @@ public class DlbServiceImpl extends BaseServiceImpl&lt;Dlb,Integer&gt; implements DlbS @@ -1148,19 +1130,10 @@ public class DlbServiceImpl extends BaseServiceImpl&lt;Dlb,Integer&gt; implements DlbS
1148 double zlc =lcMap.get(map_.get("clZbh").toString()); 1130 double zlc =lcMap.get(map_.get("clZbh").toString());
1149 //车辆总加电量 1131 //车辆总加电量
1150 double zjzl = 0.0; 1132 double zjzl = 0.0;
1151 - for (int j = 0; j < ylxxList.size(); j++) {  
1152 - Ylxxb ylxxb = ylxxList.get(j);  
1153 - if (map_.get("clZbh").toString().equals(ylxxb.getNbbm())  
1154 - && map_.get("company").toString().equals(ylxxb.getGsdm())) {  
1155 - zjzl = Arith.add(zjzl, ylxxb.getJzl());  
1156 - }  
1157 - }  
1158 for (int i = 0; i < jdlList.size(); i++) { 1133 for (int i = 0; i < jdlList.size(); i++) {
1159 Jdl jdl=jdlList.get(i); 1134 Jdl jdl=jdlList.get(i);
1160 - if(map_.get("clZbh").toString().equals(jdl.getNbbm())  
1161 - &&map_.get("company").toString().equals(jdl.getGsBm())  
1162 - &&map_.get("bCompany").toString().equals(jdl.getFgsBm())){  
1163 - zjzl = Arith.add(zjzl,jdl.getJdl()); 1135 + if(map_.get("clZbh").toString().equals(jdl.getNbbm())){
  1136 + zjzl = Arith.add(zjzl, jdl.getJdl());
1164 } 1137 }
1165 } 1138 }
1166 double clsh=0.0; 1139 double clsh=0.0;
src/main/java/com/bsth/service/oil/impl/JdlServiceImpl.java
1 package com.bsth.service.oil.impl; 1 package com.bsth.service.oil.impl;
2 2
  3 +import java.io.BufferedInputStream;
  4 +import java.io.BufferedOutputStream;
3 import java.io.File; 5 import java.io.File;
4 import java.io.FileInputStream; 6 import java.io.FileInputStream;
  7 +import java.io.IOException;
  8 +import java.io.InputStream;
  9 +import java.io.OutputStream;
5 import java.text.DecimalFormat; 10 import java.text.DecimalFormat;
6 import java.text.SimpleDateFormat; 11 import java.text.SimpleDateFormat;
7 import java.util.ArrayList; 12 import java.util.ArrayList;
@@ -11,25 +16,46 @@ import java.util.Iterator; @@ -11,25 +16,46 @@ import java.util.Iterator;
11 import java.util.List; 16 import java.util.List;
12 import java.util.Map; 17 import java.util.Map;
13 18
  19 +import javax.servlet.http.HttpServletResponse;
  20 +
14 import org.apache.poi.hssf.usermodel.HSSFCell; 21 import org.apache.poi.hssf.usermodel.HSSFCell;
  22 +import org.apache.poi.hssf.usermodel.HSSFDateUtil;
15 import org.apache.poi.hssf.usermodel.HSSFRow; 23 import org.apache.poi.hssf.usermodel.HSSFRow;
16 import org.apache.poi.hssf.usermodel.HSSFSheet; 24 import org.apache.poi.hssf.usermodel.HSSFSheet;
17 import org.apache.poi.hssf.usermodel.HSSFWorkbook; 25 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
18 import org.apache.poi.poifs.filesystem.POIFSFileSystem; 26 import org.apache.poi.poifs.filesystem.POIFSFileSystem;
19 import org.springframework.beans.factory.annotation.Autowired; 27 import org.springframework.beans.factory.annotation.Autowired;
  28 +import org.springframework.beans.factory.annotation.Value;
20 import org.springframework.stereotype.Service; 29 import org.springframework.stereotype.Service;
21 30
  31 +import com.bsth.common.ResponseCode;
22 import com.bsth.entity.oil.Jdl; 32 import com.bsth.entity.oil.Jdl;
  33 +import com.bsth.entity.oil.JdlReception;
  34 +import com.bsth.entity.oil.Nylog;
  35 +import com.bsth.entity.sys.SysUser;
  36 +import com.bsth.repository.oil.JdlReceptionRepository;
23 import com.bsth.repository.oil.JdlRepository; 37 import com.bsth.repository.oil.JdlRepository;
  38 +import com.bsth.repository.oil.NylogRepository;
  39 +import com.bsth.security.util.SecurityUtils;
24 import com.bsth.service.impl.BaseServiceImpl; 40 import com.bsth.service.impl.BaseServiceImpl;
25 import com.bsth.service.oil.JdlService; 41 import com.bsth.service.oil.JdlService;
26 import com.bsth.util.ReportUtils; 42 import com.bsth.util.ReportUtils;
  43 +import com.google.common.io.Files;
27 44
28 @Service 45 @Service
29 public class JdlServiceImpl extends BaseServiceImpl<Jdl, Integer> implements JdlService { 46 public class JdlServiceImpl extends BaseServiceImpl<Jdl, Integer> implements JdlService {
30 47
31 @Autowired 48 @Autowired
32 JdlRepository repository; 49 JdlRepository repository;
  50 +
  51 + @Autowired
  52 + JdlReceptionRepository jdlReceptionRepository;
  53 +
  54 + @Autowired
  55 + NylogRepository nylogRepository;
  56 +
  57 + @Value("${electricity.importFile.path}")
  58 + private String elecImportFilePath;
33 59
34 @Override 60 @Override
35 public String importExcel(File file, String gsbm, String gsName, String fgsbm, String fgsName) { 61 public String importExcel(File file, String gsbm, String gsName, String fgsbm, String fgsName) {
@@ -156,5 +182,380 @@ public class JdlServiceImpl extends BaseServiceImpl&lt;Jdl, Integer&gt; implements Jdl @@ -156,5 +182,380 @@ public class JdlServiceImpl extends BaseServiceImpl&lt;Jdl, Integer&gt; implements Jdl
156 } 182 }
157 return modelMap; 183 return modelMap;
158 } 184 }
  185 +
  186 + @Override
  187 + public String importExcel_2412(File file, String gsbm, String gsName, String fgsbm, String fgsName) {
  188 + SimpleDateFormat yearMonthFormat = new SimpleDateFormat("yyyy-MM");
  189 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  190 + SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  191 + SimpleDateFormat SSSformat = new SimpleDateFormat("yyMMddHHmmssSS");
  192 + SimpleDateFormat ddFormat = new SimpleDateFormat("dd");
  193 + DecimalFormat df = new DecimalFormat("######0.00");
  194 + SysUser user = SecurityUtils.getCurrentUser();
  195 + Date currDate = new Date();
  196 + List<String> textList = new ArrayList<String>();
  197 + String batchNo = user.getUserName() + SSSformat.format(currDate);
  198 + String msg = "";
  199 + try {
  200 + POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(file));
  201 + HSSFWorkbook wb = new HSSFWorkbook(fs);
  202 + HSSFSheet sheet = wb.getSheetAt(0);
  203 + // 取得总行数
  204 + int rowNum = sheet.getLastRowNum() + 1;
  205 + // 取得总列数
  206 + int cellNum = sheet.getRow(0).getLastCellNum();
  207 + HSSFRow row = null;
  208 + HSSFCell cell = null;
  209 + for(int i = 3; i < rowNum; i++){
  210 + row = sheet.getRow(i);
  211 + if (row == null){
  212 + continue;
  213 + }
  214 + String text = "";
  215 + for(int j = 0; j < cellNum; j++){
  216 + cell = row.getCell(j);
  217 + if(cell == null){
  218 + text += ",";
  219 + continue;
  220 + }
  221 + if(cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC && HSSFDateUtil.isCellDateFormatted(cell)){
  222 + Date dateCellValue = cell.getDateCellValue();
  223 + text += sd.format(dateCellValue) + ",";
  224 + } else {
  225 + text += String.valueOf(cell) + ",";
  226 + }
  227 + }
  228 + String[] split = (text+";").split(",");
  229 + String str = "";
  230 + for(int j = 0; j < split.length && j < 12; j++){
  231 + str += split[j];
  232 + }
  233 + if(str.trim().length() == 0)
  234 + continue;
  235 + textList.add(text + ";");
  236 + }
  237 + String str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  238 + List<JdlReception> list = new ArrayList<JdlReception>();
  239 + for(int i = 0; i < textList.size(); i++){
  240 + String text = textList.get(i);
  241 + String[] split = text.split(",");
  242 + if(split.length > 4 && split[1] != null && split[1].trim().length() > 0 &&
  243 + split[3] != null && split[3].trim().length() > 0){
  244 + int lie = 1;
  245 + try {
  246 + Integer dd = Integer.valueOf(split[lie++].trim().split("\\.")[0]); // 日期
  247 + String zh = split[lie++].trim(); // 桩号
  248 + String nbbm = split[lie++].trim(); // 车号
  249 + String startTime = split[lie++].trim(); // 开始时间
  250 + String endTime = split[lie++].trim(); // 结束时间
  251 + String sumTime = split[lie++].trim(); // 总计(分钟)
  252 + String startSoc = split[lie++].trim(); // 起始电量SOC%
  253 + String endSoc = split[lie++].trim(); // 结束电量SOC%
  254 + String jdl = split[lie++].trim(); // 充电度数
  255 + String lc = split[lie++].trim(); // 里程度数
  256 + String stopReason = split[lie++].trim(); // 一次不能正常充电记录
  257 +
  258 + sumTime = sumTime.split("\\.")[0];
  259 +
  260 + Date parseStartTime = sd.parse(startTime);
  261 + Date parseEndTime = sd.parse(endTime);
  262 + long sub = ((parseEndTime.getTime() - parseStartTime.getTime()) / (1l*1000*60)) - Long.valueOf(sumTime);
  263 + if(sub > 2 || sub < -2){
  264 + msg += System.lineSeparator() + "文档第"+(i + 4)+"行,充电时间总计分钟数("+sumTime+")误差超过2分钟;";
  265 + }
  266 +
  267 + JdlReception jdlRe = new JdlReception();
  268 + Date date = sd.parse(startTime);
  269 + if(!(dd == Integer.valueOf(ddFormat.format(date)))){
  270 + date.setTime(date.getTime() - 1l*1000*60*60*24);
  271 + }
  272 + jdlRe.setBatchNo(batchNo);
  273 + jdlRe.setDateStr(sdf.format(date));
  274 + jdlRe.setPileId(zh);
  275 + jdlRe.setCarCode(nbbm);
  276 + jdlRe.setStartTime(startTime);
  277 + jdlRe.setEndTime(endTime);
  278 + jdlRe.setSumTime(Integer.valueOf(sumTime));
  279 + jdlRe.setStartSoc(Double.valueOf(startSoc));
  280 + jdlRe.setEndSoc(Double.valueOf(endSoc));
  281 + jdlRe.setChargeCapacity(Double.valueOf(jdl));
  282 + jdlRe.setStopReason(stopReason);
  283 + jdlRe.setCreateBy(user.getUserName());
  284 + jdlRe.setCreateDate(currDate);
  285 + jdlRe.setOrigin(1);
  286 + list.add(jdlRe);
  287 + } catch (Exception e) {
  288 + // TODO: handle exception
  289 + e.printStackTrace();
  290 + msg += System.lineSeparator() + "文档第"+(i + 4)+"行第"+str.charAt(lie)+"列,格式错误或无法识别;";
  291 + }
  292 + }
  293 + }
  294 + wb.close();
  295 + fs.close();
  296 + if(msg.length() > 0){
  297 + return "文件导入失败" + msg;
  298 + } else {
  299 + jdlReceptionRepository.saveAll(list);
  300 + return "文件导入成功," + "导入了" + list.size() + "条充电量。";
  301 + }
  302 + } catch (Exception e) {
  303 + // TODO Auto-generated catch block
  304 + e.printStackTrace();
  305 + return "文件导入失败";
  306 + } finally {
  307 +// file.delete();
  308 + try {
  309 + String yearMonthPath = yearMonthFormat.format(currDate);
  310 + File elecImportFile = new File(elecImportFilePath + File.separator + yearMonthPath);
  311 + if(!elecImportFile.exists()){
  312 + elecImportFile.mkdirs();
  313 + }
  314 + String path = file.getPath();
  315 + System.out.println(path);
  316 + String[] split = file.getName().split("\\.");
  317 + String suffix = split[split.length - 1];
  318 + Files.move(file, new File(elecImportFilePath + File.separator + yearMonthPath + File.separator + batchNo + "." + suffix));
  319 + Nylog nylog=new Nylog();
  320 + nylog.setCreatedate(currDate);
  321 + nylog.setNylx("电");
  322 + nylog.setCzmc("导入");
  323 + nylog.setUserid(user.getUserName());
  324 + nylog.setUsername(user.getName());
  325 + nylog.setCxtj(batchNo);
  326 + nylog.setFwdz(yearMonthPath + File.separator + batchNo + "." + suffix);
  327 + nylogRepository.save(nylog);
  328 + } catch (IOException e) {
  329 + // TODO Auto-generated catch block
  330 + e.printStackTrace();
  331 + }
  332 + }
  333 + }
  334 +
  335 + @Override
  336 + public Map<String, Object> query_2412(Map<String, Object> map) {
  337 + SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
  338 + sdfSimple = new SimpleDateFormat("yyyyMMdd");
  339 + Map<String, Object> modelMap = new HashMap<String, Object>();
  340 + String rq = map.get("rq").toString();
  341 + String nbbm = map.get("nbbm").toString();
  342 + Integer page = Integer.valueOf(map.containsKey("page")?map.get("page").toString():"0");
  343 + List<Jdl> query = new ArrayList<Jdl>();
  344 +
  345 + List<Object[]> querySum = jdlReceptionRepository.querySum(rq, nbbm);
  346 +
  347 + try {
  348 + for(Object[] j : querySum){
  349 + Jdl jdl = new Jdl();
  350 + jdl.setRq(sdfMonth.parse(j[0].toString()));
  351 + jdl.setNbbm(j[1].toString());
  352 + jdl.setJdl(Double.valueOf(j[2].toString()));
  353 + jdl.setJdz("");
  354 + jdl.setRemarks("");
  355 + query.add(jdl);
  356 + }
  357 + } catch (Exception e) {
  358 + // TODO Auto-generated catch block
  359 + e.printStackTrace();
  360 + }
  361 +
  362 + if(!map.containsKey("type")){
  363 +
  364 + int end = (page+1)*10>query.size()?query.size():(page+1)*10;
  365 + modelMap.put("dataList", query.subList(page*10, end));
  366 + modelMap.put("totalPages", query.size()%10>0?query.size()/10+1:query.size()/10);
  367 +
  368 + } else if(map.get("type").toString().equals("export")){
  369 +
  370 + List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
  371 + for(Jdl jdl : query){
  372 + Map<String, Object> m = new HashMap<String, Object>();
  373 + m.put("rq", sdfMonth.format(jdl.getRq()));
  374 + m.put("nbbm", jdl.getNbbm());
  375 + m.put("jdl", jdl.getJdl());
  376 + m.put("jdz", jdl.getJdz());
  377 + m.put("remarks", jdl.getRemarks());
  378 + list.add(m);
  379 + }
  380 +
  381 + List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
  382 + Map<String, Object> m = new HashMap<String, Object>();
  383 + ReportUtils ee = new ReportUtils();
  384 + try {
  385 + listI.add(list.iterator());
  386 + String path = this.getClass().getResource("/").getPath()+"static/pages/forms/";
  387 + ee.excelReplace(listI, new Object[] { m }, path+"mould/export_Jdl.xls",
  388 + path+"export/车辆充电量" + sdfSimple.format(sdfMonth.parse(rq)) + ".xls");
  389 + } catch (Exception e) {
  390 + // TODO: handle exception
  391 + e.printStackTrace();
  392 + }
  393 + }
  394 + return modelMap;
  395 + }
  396 +
  397 + @Override
  398 + public List<JdlReception> queryJdlReception(Map<String, Object> map) {
  399 + String rq = map.get("rq").toString();
  400 + String nbbm = map.get("nbbm").toString();
  401 + List<JdlReception> query = jdlReceptionRepository.query(rq, nbbm);
  402 + return query;
  403 + }
  404 +
  405 + @Override
  406 + public Map<String, Object> queryJdlReceptionBatch(Map<String, Object> map) {
  407 + SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd");
  408 + Map<String, Object> modelMap = new HashMap<String, Object>();
  409 + String rq = map.get("rq").toString();
  410 + Integer page = Integer.valueOf(map.containsKey("page")?map.get("page").toString():"0");
  411 + List<Map<String, Object>> query = new ArrayList<Map<String, Object>>();
  412 +
  413 + List<Object[]> queryBatch = jdlReceptionRepository.queryBatch(rq);
  414 +
  415 + try {
  416 + for(Object[] j : queryBatch){
  417 + Map<String, Object> m = new HashMap<String, Object>();
  418 + m.put("batchNo", j[0]);
  419 + m.put("createBy", j[1]);
  420 + m.put("createDate", j[2]);
  421 + query.add(m);
  422 + }
  423 + } catch (Exception e) {
  424 + // TODO Auto-generated catch block
  425 + e.printStackTrace();
  426 + }
  427 +
  428 + int end = (page+1)*10>query.size()?query.size():(page+1)*10;
  429 + modelMap.put("dataList", query.subList(page*10, end));
  430 + modelMap.put("totalPages", query.size()%10>0?query.size()/10+1:query.size()/10);
  431 +
  432 + return modelMap;
  433 + }
  434 +
  435 + @Override
  436 + public List<JdlReception> queryJdlReceptionBatchData(Map<String, Object> map) {
  437 + String createBy = map.get("createBy").toString();
  438 + String createDate = map.get("createDate").toString();
  439 + List<JdlReception> query = jdlReceptionRepository.queryBatchData(createBy, createDate);
  440 + return query;
  441 + }
  442 +
  443 + @Override
  444 + public Map<String, Object> deleteJdlReceptionBatch(Map<String, Object> map) {
  445 + Map<String, Object> resMap = new HashMap<>();
  446 + try{
  447 + String createBy = map.get("createBy").toString();
  448 + String createDate = map.get("createDate").toString();
  449 + jdlReceptionRepository.deleteBatch(createBy, createDate);
  450 + resMap.put("status", ResponseCode.SUCCESS);
  451 + }catch (Exception e){
  452 + resMap.put("status", ResponseCode.ERROR);
  453 + resMap.put("msg", e.getMessage());
  454 + }
  455 + return resMap;
  456 + }
  457 +
  458 + @Override
  459 + public Map<String, Object> updateJdlReceptionBatch(Map<String, Object> map) {
  460 + Map<String, Object> resMap = new HashMap<>();
  461 + try{
  462 + String[] ids = map.get("ids").toString().length()>0?map.get("ids").toString().split(","):new String[]{};
  463 + String[] dateStr = map.get("dateStr").toString().length()>0?map.get("dateStr").toString().split(","):new String[]{};
  464 + String[] pileId = map.get("pileId").toString().length()>0?map.get("pileId").toString().split(","):new String[]{};
  465 + String[] carCode = map.get("carCode").toString().length()>0?map.get("carCode").toString().split(","):new String[]{};
  466 + String[] startTime = map.get("startTime").toString().length()>0?map.get("startTime").toString().split(","):new String[]{};
  467 + String[] endTime = map.get("endTime").toString().length()>0?map.get("endTime").toString().split(","):new String[]{};
  468 + String[] sumTime = map.get("sumTime").toString().length()>0?map.get("sumTime").toString().split(","):new String[]{};
  469 + String[] startSoc = map.get("startSoc").toString().length()>0?map.get("startSoc").toString().split(","):new String[]{};
  470 + String[] endSoc = map.get("endSoc").toString().length()>0?map.get("endSoc").toString().split(","):new String[]{};
  471 + String[] chargeCapacity = map.get("chargeCapacity").toString().length()>0?map.get("chargeCapacity").toString().split(","):new String[]{};
  472 + String[] stopReason = map.get("stopReason").toString().length()>0?map.get("stopReason").toString().split(","):new String[]{};
  473 + List<JdlReception> list = new ArrayList<JdlReception>();
  474 + for(int i = 0; i < ids.length; i++){
  475 + if(ids[i].length() != 0){
  476 + JdlReception jdlRe = new JdlReception();
  477 + jdlRe.setId(Long.valueOf(ids[i]));
  478 + if(dateStr.length > i)
  479 + jdlRe.setDateStr(dateStr[i]);
  480 + if(pileId.length > i)
  481 + jdlRe.setPileId(pileId[i]);
  482 + if(carCode.length > i)
  483 + jdlRe.setCarCode(carCode[i]);
  484 + if(startTime.length > i)
  485 + jdlRe.setStartTime(startTime[i]);
  486 + if(endTime.length > i)
  487 + jdlRe.setEndTime(endTime[i]);
  488 + if(sumTime.length > i)
  489 + jdlRe.setSumTime(Integer.valueOf(sumTime[i]));
  490 + if(startSoc.length > i)
  491 + jdlRe.setStartSoc(Double.valueOf(startSoc[i]));
  492 + if(endSoc.length > i)
  493 + jdlRe.setEndSoc(Double.valueOf(endSoc[i]));
  494 + if(chargeCapacity.length > i)
  495 + jdlRe.setChargeCapacity(Double.valueOf(chargeCapacity[i]));
  496 + if(stopReason.length > i)
  497 + jdlRe.setStopReason(stopReason[i]);
  498 +
  499 + list.add(jdlRe);
  500 + }
  501 + }
  502 + for(JdlReception jdlRe : list){
  503 + jdlReceptionRepository.update(jdlRe.getId(), jdlRe.getDateStr(), jdlRe.getPileId(), jdlRe.getCarCode(),
  504 + jdlRe.getStartTime(), jdlRe.getEndTime(), jdlRe.getSumTime(), jdlRe.getStartSoc(), jdlRe.getEndSoc(),
  505 + jdlRe.getChargeCapacity(), jdlRe.getStopReason());
  506 + }
  507 + resMap.put("status", ResponseCode.SUCCESS);
  508 + }catch (Exception e){
  509 + resMap.put("status", ResponseCode.ERROR);
  510 + resMap.put("msg", e.getMessage());
  511 + }
  512 + return resMap;
  513 + }
  514 +
  515 + @Override
  516 + public void downloadJdlReceptionImportFile(Map<String, Object> map, HttpServletResponse response) throws IOException {
  517 + String batchNo = map.get("batchNo").toString();
  518 + List<Nylog> list = nylogRepository.selectByCxtj("电", "导入", batchNo);
  519 + if(list.size() > 0){
  520 + Nylog nylog = list.get(0);
  521 + String path = elecImportFilePath + File.separator + nylog.getFwdz();
  522 + String[] split = nylog.getFwdz().split("\\.");
  523 + String fileName = batchNo + "." + split[split.length - 1];
  524 + File file = new File(path);
  525 + InputStream fis = new BufferedInputStream(new FileInputStream(path));
  526 + byte[] buffer = new byte[fis.available()];
  527 + fis.read(buffer);
  528 + fis.close();
  529 + response.reset();
  530 + response.addHeader("Content-Disposition", "attachment;filename=" + new String(fileName.replaceAll(" ", "").getBytes("utf-8"),"iso8859-1"));
  531 + response.addHeader("Content-Length", "" + file.length());
  532 + OutputStream os = new BufferedOutputStream(response.getOutputStream());
  533 + response.setContentType("application/octet-stream");
  534 + os.write(buffer);// 输出文件
  535 + os.flush();
  536 + os.close();
  537 + }
  538 + }
  539 +
  540 + @Override
  541 + public List<Jdl> queryJdlByJdlReception(String rq, String nbbm) {
  542 + List<Jdl> list = new ArrayList<Jdl>();
  543 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  544 + List<JdlReception> query = jdlReceptionRepository.query(rq, nbbm);
  545 + for(JdlReception jr : query){
  546 + try {
  547 + Jdl jdl = new Jdl();
  548 + jdl.setFgsBm("-1");
  549 + jdl.setRq(sdf.parse(jr.getDateStr()));
  550 + jdl.setJdl(jr.getChargeCapacity());
  551 + jdl.setNbbm(jr.getCarCode());
  552 + list.add(jdl);
  553 + } catch (Exception e) {
  554 + // TODO Auto-generated catch block
  555 + e.printStackTrace();
  556 + }
  557 + }
  558 + return list;
  559 + }
159 560
160 } 561 }
src/main/java/com/bsth/service/oil/impl/QlbServiceImpl.java
@@ -91,7 +91,7 @@ public class QlbServiceImpl extends BaseServiceImpl&lt;Qlb,Integer&gt; implements QlbS @@ -91,7 +91,7 @@ public class QlbServiceImpl extends BaseServiceImpl&lt;Qlb,Integer&gt; implements QlbS
91 // String rq="2017-11-02"; 91 // String rq="2017-11-02";
92 String line=""; 92 String line="";
93 //保留两位小数 93 //保留两位小数
94 - DecimalFormat df = new DecimalFormat("#.00"); 94 + DecimalFormat df = new DecimalFormat("#.000");
95 // TODO Auto-generated method stub 95 // TODO Auto-generated method stub
96 Map<String, Object> newMap=new HashMap<String,Object>(); 96 Map<String, Object> newMap=new HashMap<String,Object>();
97 //当天QLB信息 97 //当天QLB信息
@@ -229,7 +229,7 @@ public class QlbServiceImpl extends BaseServiceImpl&lt;Qlb,Integer&gt; implements QlbS @@ -229,7 +229,7 @@ public class QlbServiceImpl extends BaseServiceImpl&lt;Qlb,Integer&gt; implements QlbS
229 } 229 }
230 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 230 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
231 // 保留两位小数 231 // 保留两位小数
232 - DecimalFormat df = new DecimalFormat("#.00"); 232 + DecimalFormat df = new DecimalFormat("#.000");
233 // TODO Auto-generated method stub 233 // TODO Auto-generated method stub
234 // 当天QLB信息 234 // 当天QLB信息
235 List<Qlb> qlList = this.listOrderBy(rq,gsbm,fgsbm,"",nbbm,"nbbm"); 235 List<Qlb> qlList = this.listOrderBy(rq,gsbm,fgsbm,"",nbbm,"nbbm");
@@ -1020,7 +1020,7 @@ public class QlbServiceImpl extends BaseServiceImpl&lt;Qlb,Integer&gt; implements QlbS @@ -1020,7 +1020,7 @@ public class QlbServiceImpl extends BaseServiceImpl&lt;Qlb,Integer&gt; implements QlbS
1020 Map<String, List<Qlb>> mapList=new HashMap<String,List<Qlb>>(); 1020 Map<String, List<Qlb>> mapList=new HashMap<String,List<Qlb>>();
1021 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); 1021 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
1022 // 保留两位小数 1022 // 保留两位小数
1023 - DecimalFormat df = new DecimalFormat("#.00"); 1023 + DecimalFormat df = new DecimalFormat("#.000");
1024 List<Qlb> qlbList=this.listOrderBy(date,gsdm,fgsdm,"","","nbbm"); 1024 List<Qlb> qlbList=this.listOrderBy(date,gsdm,fgsdm,"","","nbbm");
1025 List<Qlb> qlbList_upd=new ArrayList<Qlb>(); 1025 List<Qlb> qlbList_upd=new ArrayList<Qlb>();
1026 List<Qlb> qlbList_del=new ArrayList<Qlb>(); 1026 List<Qlb> qlbList_del=new ArrayList<Qlb>();
src/main/java/com/bsth/service/oil/impl/YlbServiceImpl.java
@@ -120,7 +120,7 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS @@ -120,7 +120,7 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS
120 dBefore = calendar.getTime(); //得到前一天的时间 120 dBefore = calendar.getTime(); //得到前一天的时间
121 String rq=sdf.format(dBefore); 121 String rq=sdf.format(dBefore);
122 //保留两位小数 122 //保留两位小数
123 - DecimalFormat df = new DecimalFormat("#.00"); 123 + DecimalFormat df = new DecimalFormat("#.000");
124 // TODO Auto-generated method stub 124 // TODO Auto-generated method stub
125 Map<String, Object> newMap=new HashMap<String,Object>(); 125 Map<String, Object> newMap=new HashMap<String,Object>();
126 //当天YLB信息 126 //当天YLB信息
@@ -270,7 +270,7 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS @@ -270,7 +270,7 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS
270 } 270 }
271 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 271 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
272 // 保留两位小数 272 // 保留两位小数
273 - DecimalFormat df = new DecimalFormat("#.00"); 273 + DecimalFormat df = new DecimalFormat("#.000");
274 // TODO Auto-generated method stub 274 // TODO Auto-generated method stub
275 // 当天YLB信息 275 // 当天YLB信息
276 List<Ylb> ylList = this.listOrderBy(rq,gsbm,fgsbm,"",nbbm,"nbbm"); 276 List<Ylb> ylList = this.listOrderBy(rq,gsbm,fgsbm,"",nbbm,"nbbm");
@@ -668,7 +668,7 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS @@ -668,7 +668,7 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS
668 } 668 }
669 // jzl = Arith.sub(jzl, zsh); 669 // jzl = Arith.sub(jzl, zsh);
670 // 保留两位小数 670 // 保留两位小数
671 - DecimalFormat df = new DecimalFormat("#.00"); 671 + DecimalFormat df = new DecimalFormat("#.000");
672 Double zyl = 0.0; 672 Double zyl = 0.0;
673 Double nextJzyl = 0.0; 673 Double nextJzyl = 0.0;
674 // 保存已经计算过的车辆,相同车辆编号的车不在计算 674 // 保存已经计算过的车辆,相同车辆编号的车不在计算
@@ -1481,7 +1481,7 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS @@ -1481,7 +1481,7 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS
1481 1481
1482 // repository.obtainYl(sdf.format(rq_eq),ylb.getSsgsdm(),ylb.getFgsdm(),"", 1482 // repository.obtainYl(sdf.format(rq_eq),ylb.getSsgsdm(),ylb.getFgsdm(),"",
1483 // ylb.getNbbm(),"jcsx"); 1483 // ylb.getNbbm(),"jcsx");
1484 - DecimalFormat df = new DecimalFormat("#.00"); 1484 + DecimalFormat df = new DecimalFormat("#.000");
1485 Double zyl = 0.0; 1485 Double zyl = 0.0;
1486 Double nextJzyl = 0.0; 1486 Double nextJzyl = 0.0;
1487 // 车的,进,出油量及耗油 1487 // 车的,进,出油量及耗油
@@ -1984,7 +1984,7 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS @@ -1984,7 +1984,7 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS
1984 zlc = Arith.add(zlc, Double.valueOf(sumList.get(j)[1].toString())); 1984 zlc = Arith.add(zlc, Double.valueOf(sumList.get(j)[1].toString()));
1985 } 1985 }
1986 // 保留两位小数 1986 // 保留两位小数
1987 - DecimalFormat df = new DecimalFormat("#.00"); 1987 + DecimalFormat df = new DecimalFormat("#.000");
1988 Double zyl = 0.0; 1988 Double zyl = 0.0;
1989 Double nextJzyl = 0.0; 1989 Double nextJzyl = 0.0;
1990 for (int j = 0; j < iterator2.size(); j++) { 1990 for (int j = 0; j < iterator2.size(); j++) {
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
1 package com.bsth.service.realcontrol.impl; 1 package com.bsth.service.realcontrol.impl;
2 2
3 -import java.io.*;  
4 -import java.lang.reflect.Field;  
5 -import java.math.BigDecimal;  
6 -import java.net.HttpURLConnection;  
7 -import java.net.MalformedURLException;  
8 -import java.net.URL;  
9 -import java.sql.ResultSet;  
10 -import java.sql.SQLException;  
11 -import java.text.DecimalFormat;  
12 -import java.text.ParseException;  
13 -import java.text.SimpleDateFormat;  
14 -import java.time.LocalDate;  
15 -import java.util.ArrayList;  
16 -import java.util.Calendar;  
17 -import java.util.Collection;  
18 -import java.util.Collections;  
19 -import java.util.Comparator;  
20 -import java.util.Date;  
21 -import java.util.GregorianCalendar;  
22 -import java.util.HashMap;  
23 -import java.util.HashSet;  
24 -import java.util.Iterator;  
25 -import java.util.List;  
26 -import java.util.Map;  
27 -import java.util.Queue;  
28 -import java.util.Set;  
29 -import java.util.concurrent.*;  
30 -import java.util.regex.Pattern;  
31 -  
32 -import com.bsth.data.SystemParamCache;  
33 -import com.bsth.data.zndd.OutEntrance;  
34 -import com.bsth.entity.zndd.LoggerZndd;  
35 -import com.bsth.repository.zndd.LoggerZnddRepository;  
36 -import org.apache.commons.io.IOUtils;  
37 -import org.apache.commons.lang3.StringEscapeUtils;  
38 -import org.apache.commons.lang3.StringUtils;  
39 -import org.joda.time.format.DateTimeFormat;  
40 -import org.joda.time.format.DateTimeFormatter;  
41 -import org.slf4j.Logger;  
42 -import org.slf4j.LoggerFactory;  
43 -import org.springframework.beans.factory.DisposableBean;  
44 -import org.springframework.beans.factory.InitializingBean;  
45 -import org.springframework.beans.factory.annotation.Autowired;  
46 -import org.springframework.jdbc.core.BeanPropertyRowMapper;  
47 -import org.springframework.jdbc.core.JdbcTemplate;  
48 -import org.springframework.jdbc.core.RowMapper;  
49 -import org.springframework.stereotype.Service;  
50 -import org.springframework.transaction.annotation.Transactional;  
51 -  
52 import com.alibaba.fastjson.JSON; 3 import com.alibaba.fastjson.JSON;
53 import com.alibaba.fastjson.JSONArray; 4 import com.alibaba.fastjson.JSONArray;
54 import com.alibaba.fastjson.JSONObject; 5 import com.alibaba.fastjson.JSONObject;
@@ -60,6 +11,7 @@ import com.bsth.controller.realcontrol.dto.LpData; @@ -60,6 +11,7 @@ import com.bsth.controller.realcontrol.dto.LpData;
60 import com.bsth.data.BasicData; 11 import com.bsth.data.BasicData;
61 import com.bsth.data.LineConfigData; 12 import com.bsth.data.LineConfigData;
62 import com.bsth.data.Station2ParkBuffer; 13 import com.bsth.data.Station2ParkBuffer;
  14 +import com.bsth.data.SystemParamCache;
63 import com.bsth.data.schedule.DayOfSchedule; 15 import com.bsth.data.schedule.DayOfSchedule;
64 import com.bsth.data.schedule.SchAttrCalculator; 16 import com.bsth.data.schedule.SchAttrCalculator;
65 import com.bsth.data.schedule.ScheduleComparator; 17 import com.bsth.data.schedule.ScheduleComparator;
@@ -70,6 +22,7 @@ import com.bsth.data.schedule.edit_logs.loggers.FcxxwtLogger; @@ -70,6 +22,7 @@ import com.bsth.data.schedule.edit_logs.loggers.FcxxwtLogger;
70 import com.bsth.data.schedule.edit_logs.service.dto.SchEditInfoDto; 22 import com.bsth.data.schedule.edit_logs.service.dto.SchEditInfoDto;
71 import com.bsth.data.schedule.late_adjust.LateAdjustHandle; 23 import com.bsth.data.schedule.late_adjust.LateAdjustHandle;
72 import com.bsth.data.utils.CustomStringUtils; 24 import com.bsth.data.utils.CustomStringUtils;
  25 +import com.bsth.data.zndd.OutEntrance;
73 import com.bsth.entity.CarDevice; 26 import com.bsth.entity.CarDevice;
74 import com.bsth.entity.Cars; 27 import com.bsth.entity.Cars;
75 import com.bsth.entity.Line; 28 import com.bsth.entity.Line;
@@ -94,6 +47,7 @@ import com.bsth.entity.schedule.SchedulePlanInfo; @@ -94,6 +47,7 @@ import com.bsth.entity.schedule.SchedulePlanInfo;
94 import com.bsth.entity.sys.Dictionary; 47 import com.bsth.entity.sys.Dictionary;
95 import com.bsth.entity.sys.DutyEmployee; 48 import com.bsth.entity.sys.DutyEmployee;
96 import com.bsth.entity.sys.SysUser; 49 import com.bsth.entity.sys.SysUser;
  50 +import com.bsth.entity.zndd.LoggerZndd;
97 import com.bsth.repository.CarDeviceRepository; 51 import com.bsth.repository.CarDeviceRepository;
98 import com.bsth.repository.CarsRepository; 52 import com.bsth.repository.CarsRepository;
99 import com.bsth.repository.LineRepository; 53 import com.bsth.repository.LineRepository;
@@ -109,6 +63,7 @@ import com.bsth.repository.realcontrol.SvgAttributeRepository; @@ -109,6 +63,7 @@ import com.bsth.repository.realcontrol.SvgAttributeRepository;
109 import com.bsth.repository.schedule.CarConfigInfoRepository; 63 import com.bsth.repository.schedule.CarConfigInfoRepository;
110 import com.bsth.repository.schedule.EmployeeConfigInfoRepository; 64 import com.bsth.repository.schedule.EmployeeConfigInfoRepository;
111 import com.bsth.repository.schedule.GuideboardInfoRepository; 65 import com.bsth.repository.schedule.GuideboardInfoRepository;
  66 +import com.bsth.repository.zndd.LoggerZnddRepository;
112 import com.bsth.security.util.SecurityUtils; 67 import com.bsth.security.util.SecurityUtils;
113 import com.bsth.service.LineService; 68 import com.bsth.service.LineService;
114 import com.bsth.service.SectionRouteService; 69 import com.bsth.service.SectionRouteService;
@@ -121,15 +76,7 @@ import com.bsth.service.report.ReportService; @@ -121,15 +76,7 @@ import com.bsth.service.report.ReportService;
121 import com.bsth.service.schedule.SchedulePlanInfoService; 76 import com.bsth.service.schedule.SchedulePlanInfoService;
122 import com.bsth.service.sys.DictionaryService; 77 import com.bsth.service.sys.DictionaryService;
123 import com.bsth.service.sys.DutyEmployeeService; 78 import com.bsth.service.sys.DutyEmployeeService;
124 -import com.bsth.util.Arith;  
125 -import com.bsth.util.ComparableChild;  
126 -import com.bsth.util.ComparableLp;  
127 -import com.bsth.util.ComparableReal;  
128 -import com.bsth.util.DateUtils;  
129 -import com.bsth.util.ReportRelatedUtils;  
130 -import com.bsth.util.ReportUtils;  
131 -import com.bsth.util.TimeUtils;  
132 -import com.bsth.util.CoordinateConverter; 79 +import com.bsth.util.*;
133 import com.bsth.websocket.handler.SendUtils; 80 import com.bsth.websocket.handler.SendUtils;
134 import com.fasterxml.jackson.databind.ObjectMapper; 81 import com.fasterxml.jackson.databind.ObjectMapper;
135 import com.github.stuxuhai.jpinyin.PinyinException; 82 import com.github.stuxuhai.jpinyin.PinyinException;
@@ -137,6 +84,40 @@ import com.github.stuxuhai.jpinyin.PinyinFormat; @@ -137,6 +84,40 @@ import com.github.stuxuhai.jpinyin.PinyinFormat;
137 import com.github.stuxuhai.jpinyin.PinyinHelper; 84 import com.github.stuxuhai.jpinyin.PinyinHelper;
138 import com.google.common.base.Splitter; 85 import com.google.common.base.Splitter;
139 import com.google.common.collect.Lists; 86 import com.google.common.collect.Lists;
  87 +import org.apache.commons.io.IOUtils;
  88 +import org.apache.commons.lang3.StringEscapeUtils;
  89 +import org.apache.commons.lang3.StringUtils;
  90 +import org.joda.time.format.DateTimeFormat;
  91 +import org.joda.time.format.DateTimeFormatter;
  92 +import org.slf4j.Logger;
  93 +import org.slf4j.LoggerFactory;
  94 +import org.springframework.beans.factory.DisposableBean;
  95 +import org.springframework.beans.factory.InitializingBean;
  96 +import org.springframework.beans.factory.annotation.Autowired;
  97 +import org.springframework.jdbc.core.BeanPropertyRowMapper;
  98 +import org.springframework.jdbc.core.JdbcTemplate;
  99 +import org.springframework.jdbc.core.RowMapper;
  100 +import org.springframework.stereotype.Service;
  101 +import org.springframework.transaction.annotation.Transactional;
  102 +
  103 +import java.io.ByteArrayOutputStream;
  104 +import java.io.File;
  105 +import java.io.IOException;
  106 +import java.io.InputStream;
  107 +import java.lang.reflect.Field;
  108 +import java.math.BigDecimal;
  109 +import java.net.HttpURLConnection;
  110 +import java.net.MalformedURLException;
  111 +import java.net.URL;
  112 +import java.sql.ResultSet;
  113 +import java.sql.SQLException;
  114 +import java.text.DecimalFormat;
  115 +import java.text.ParseException;
  116 +import java.text.SimpleDateFormat;
  117 +import java.time.LocalDate;
  118 +import java.util.*;
  119 +import java.util.concurrent.*;
  120 +import java.util.regex.Pattern;
140 121
141 @Service 122 @Service
142 public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInfo, Long> 123 public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInfo, Long>
@@ -2483,6 +2464,10 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -2483,6 +2464,10 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2483 typeMap.put("0x60", "事故报告"); 2464 typeMap.put("0x60", "事故报告");
2484 typeMap.put("0x11", "扣证纠纷"); 2465 typeMap.put("0x11", "扣证纠纷");
2485 typeMap.put("0x12", "报警"); 2466 typeMap.put("0x12", "报警");
  2467 + typeMap.put("0x21", "单车有人伤");
  2468 + typeMap.put("0x22", "单车无人伤");
  2469 + typeMap.put("0x23", "双车有人伤");
  2470 + typeMap.put("0x24", "双车无人伤");
2486 for (Map<String, Object> map1 : listMap) { 2471 for (Map<String, Object> map1 : listMap) {
2487 map1.put("requestText", typeMap.get(map1.get("requestType"))); 2472 map1.put("requestText", typeMap.get(map1.get("requestType")));
2488 } 2473 }
src/main/java/com/bsth/service/zndd/impl/LoggerZnddServiceImpl.java
1 package com.bsth.service.zndd.impl; 1 package com.bsth.service.zndd.impl;
2 2
3 import com.alibaba.fastjson.JSON; 3 import com.alibaba.fastjson.JSON;
  4 +import com.alibaba.fastjson.JSONObject;
4 import com.bsth.common.ResponseCode; 5 import com.bsth.common.ResponseCode;
5 import com.bsth.controller.realcontrol.dto.DfsjChange; 6 import com.bsth.controller.realcontrol.dto.DfsjChange;
6 import com.bsth.data.schedule.DayOfSchedule; 7 import com.bsth.data.schedule.DayOfSchedule;
@@ -154,7 +155,13 @@ public class LoggerZnddServiceImpl extends BaseServiceImpl&lt;LoggerZndd, Integer&gt; @@ -154,7 +155,13 @@ public class LoggerZnddServiceImpl extends BaseServiceImpl&lt;LoggerZndd, Integer&gt;
154 155
155 156
156 public ScheduleRealInfo thissch(Integer ids){ 157 public ScheduleRealInfo thissch(Integer ids){
157 - ScheduleRealInfo sch=dayOfSchedule.get(ids); 158 + ScheduleRealInfo sch2=dayOfSchedule.get(ids);
  159 + ScheduleRealInfo sch= null;
  160 + try {
  161 + sch = sch2.clone();
  162 + } catch (CloneNotSupportedException e) {
  163 + e.printStackTrace();
  164 + }
158 Line line = lineService.findByLineCode(sch.getXlBm()); 165 Line line = lineService.findByLineCode(sch.getXlBm());
159 List<Map<String, Object>> lineList=reportService.lineList(); 166 List<Map<String, Object>> lineList=reportService.lineList();
160 Set<String> lines = new HashSet<>(); 167 Set<String> lines = new HashSet<>();
@@ -217,7 +224,7 @@ public class LoggerZnddServiceImpl extends BaseServiceImpl&lt;LoggerZndd, Integer&gt; @@ -217,7 +224,7 @@ public class LoggerZnddServiceImpl extends BaseServiceImpl&lt;LoggerZndd, Integer&gt;
217 for(String line : lineArray){ 224 for(String line : lineArray){
218 List<ScheduleRealInfo> schList = dayOfSchedule.findByLineCode(line); 225 List<ScheduleRealInfo> schList = dayOfSchedule.findByLineCode(line);
219 for(ScheduleRealInfo sc : schList){ 226 for(ScheduleRealInfo sc : schList){
220 - if (sc.getStatus() == 0){ 227 + if (sc.getStatus() == 0 || sc.getStatus() == 1){
221 xlNames += sc.getXlName()+","; 228 xlNames += sc.getXlName()+",";
222 break; 229 break;
223 } 230 }
src/main/resources/application-prod.properties
1 -server.port=9088  
2 -  
3 -# dubbo\uFFFD\uFFFD\uFFFD\uFFFD\u02B9\uFFFD\u00FF\uFFFD\uFFFD\uFFFDflag  
4 -dubbo.use=false  
5 -  
6 -#JPA  
7 -spring.jpa.hibernate.ddl-auto= none  
8 -spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyHbmImpl  
9 -spring.jpa.hibernate.naming.physical-strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy  
10 -spring.jpa.database= MYSQL  
11 -spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true  
12 -spring.jpa.show-sql= false  
13 -spring.jpa.properties.hibernate.dialect= org.hibernate.spatial.dialect.mysql.MySQL56InnoDBSpatialDialect  
14 -  
15 -#DATABASE  
16 -spring.datasource.driver-class-name= com.mysql.jdbc.Driver  
17 -spring.datasource.url= jdbc:mysql://10.10.150.103:3306/control?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai  
18 -spring.datasource.username= root  
19 -spring.datasource.password= fsodlgjiuigAQF2$9fs9  
20 -spring.datasource.type= com.zaxxer.hikari.HikariDataSource  
21 -  
22 -#DATASOURCE SETTING  
23 -spring.datasource.hikari.minimum-idle= 8  
24 -spring.datasource.hikari.maximum-pool-size= 100  
25 -#spring.datasource.hikari.auto-commit= true  
26 -spring.datasource.hikari.idle-timeout= 60000  
27 -#spring.datasource.hikari.pool-name= HikariPool  
28 -spring.datasource.hikari.max-lifetime= 1800000  
29 -spring.datasource.hikari.connection-timeout= 3000  
30 -spring.datasource.hikari.connection-test-query= SELECT 1  
31 -spring.datasource.hikari.validation-timeout= 3000  
32 -spring.datasource.hikari.register-mbeans=true  
33 -  
34 -sso.enabled= true  
35 -sso.systemcode = SYSUS023  
36 -sso.http.url.login= http://10.10.200.142:9112/login?redirect=%2Findex  
37 -sso.http.url.logout= http://10.10.200.142:9112/login?redirect=%2Findex  
38 -sso.http.url.auth= http://10.10.200.142:9112/prod-api/system/utilitySystem/checkToken  
39 -  
40 -dc.imgurl= /home/control/klimg  
41 -dc.profile= profile 1 +server.port=9088
  2 +
  3 +# dubbo\uFFFD\uFFFD\uFFFD\uFFFD\u02B9\uFFFD\u00FF\uFFFD\uFFFD\uFFFDflag
  4 +dubbo.use=false
  5 +
  6 +#JPA
  7 +spring.jpa.hibernate.ddl-auto= none
  8 +spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyHbmImpl
  9 +spring.jpa.hibernate.naming.physical-strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy
  10 +spring.jpa.database= MYSQL
  11 +spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true
  12 +spring.jpa.show-sql= false
  13 +spring.jpa.properties.hibernate.dialect= org.hibernate.spatial.dialect.mysql.MySQL56InnoDBSpatialDialect
  14 +
  15 +#DATABASE
  16 +spring.datasource.driver-class-name= com.mysql.jdbc.Driver
  17 +spring.datasource.url= jdbc:mysql://10.10.150.103:3306/control?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
  18 +spring.datasource.username= root
  19 +spring.datasource.password= fsodlgjiuigAQF2$9fs9
  20 +spring.datasource.type= com.zaxxer.hikari.HikariDataSource
  21 +
  22 +#DATASOURCE SETTING
  23 +spring.datasource.hikari.minimum-idle= 8
  24 +spring.datasource.hikari.maximum-pool-size= 100
  25 +#spring.datasource.hikari.auto-commit= true
  26 +spring.datasource.hikari.idle-timeout= 60000
  27 +#spring.datasource.hikari.pool-name= HikariPool
  28 +spring.datasource.hikari.max-lifetime= 1800000
  29 +spring.datasource.hikari.connection-timeout= 3000
  30 +spring.datasource.hikari.connection-test-query= SELECT 1
  31 +spring.datasource.hikari.validation-timeout= 3000
  32 +spring.datasource.hikari.register-mbeans=true
  33 +
  34 +sso.enabled= true
  35 +sso.systemcode = SYSUS023
  36 +sso.http.url.login= http://10.10.200.142:9112/login?redirect=%2Findex
  37 +sso.http.url.logout= http://10.10.200.142:9112/login?redirect=%2Findex
  38 +sso.http.url.auth= http://10.10.200.142:9112/prod-api/system/utilitySystem/checkToken
  39 +
  40 +dc.imgurl= /home/control/klimg
  41 +dc.profile= profile
  42 +
  43 +electricity.importFile.path= /home/control/elecImportFile
src/main/resources/application-test.properties
1 -server.port=9088  
2 -  
3 -# dubbo\uFFFD\uFFFD\uFFFD\uFFFD\u02B9\uFFFD\u00FF\uFFFD\uFFFD\uFFFDflag  
4 -dubbo.use=false  
5 -  
6 -#JPA  
7 -spring.jpa.hibernate.ddl-auto= none  
8 -spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyHbmImpl  
9 -spring.jpa.hibernate.naming.physical-strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy  
10 -spring.jpa.database= MYSQL  
11 -spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true  
12 -spring.jpa.show-sql= false  
13 -spring.jpa.properties.hibernate.dialect= org.hibernate.spatial.dialect.mysql.MySQL56InnoDBSpatialDialect  
14 -  
15 -#DATABASE  
16 -spring.datasource.driver-class-name= com.mysql.cj.jdbc.Driver  
17 -spring.datasource.url= jdbc:mysql://10.10.150.101/lg_control?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai  
18 -spring.datasource.username= root  
19 -spring.datasource.password= A123456ab  
20 -spring.datasource.type= com.zaxxer.hikari.HikariDataSource  
21 -  
22 -#DATASOURCE SETTING  
23 -spring.datasource.hikari.minimum-idle= 8  
24 -spring.datasource.hikari.maximum-pool-size= 100  
25 -#spring.datasource.hikari.auto-commit= true  
26 -spring.datasource.hikari.idle-timeout= 60000  
27 -#spring.datasource.hikari.pool-name= HikariPool  
28 -spring.datasource.hikari.max-lifetime= 1800000  
29 -spring.datasource.hikari.connection-timeout= 3000  
30 -spring.datasource.hikari.connection-test-query= SELECT 1  
31 -spring.datasource.hikari.validation-timeout= 3000  
32 -spring.datasource.hikari.register-mbeans=true  
33 -  
34 -sso.enabled= true  
35 -sso.systemcode = SYSUS023  
36 -sso.http.url.login= http://10.10.200.142:9112/login?redirect=%2Findex  
37 -sso.http.url.logout= http://10.10.200.142:9112/login?redirect=%2Findex  
38 -sso.http.url.auth= http://10.10.200.142:9112/prod-api/system/utilitySystem/checkToken  
39 -  
40 -dc.imgurl= E:/klimg  
41 -dc.profile= profile  
42 -  
43 -baidu.ak=AYiBOs3f9qBQFhdKFsaboX6CfObmKwRP  
44 -passengerFlow.url = http://127.0.0.1:9999/images/  
45 \ No newline at end of file 1 \ No newline at end of file
  2 +server.port=9088
  3 +
  4 +# dubbo\uFFFD\uFFFD\uFFFD\uFFFD\u02B9\uFFFD\u00FF\uFFFD\uFFFD\uFFFDflag
  5 +dubbo.use=false
  6 +
  7 +#JPA
  8 +spring.jpa.hibernate.ddl-auto= none
  9 +spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyHbmImpl
  10 +spring.jpa.hibernate.naming.physical-strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy
  11 +spring.jpa.database= MYSQL
  12 +spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true
  13 +spring.jpa.show-sql= false
  14 +spring.jpa.properties.hibernate.dialect= org.hibernate.spatial.dialect.mysql.MySQL56InnoDBSpatialDialect
  15 +
  16 +#DATABASE
  17 +spring.datasource.driver-class-name= com.mysql.cj.jdbc.Driver
  18 +spring.datasource.url= jdbc:mysql://10.10.150.101/lg_control?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai
  19 +spring.datasource.username= root
  20 +spring.datasource.password= A123456ab
  21 +spring.datasource.type= com.zaxxer.hikari.HikariDataSource
  22 +
  23 +#DATASOURCE SETTING
  24 +spring.datasource.hikari.minimum-idle= 8
  25 +spring.datasource.hikari.maximum-pool-size= 100
  26 +#spring.datasource.hikari.auto-commit= true
  27 +spring.datasource.hikari.idle-timeout= 60000
  28 +#spring.datasource.hikari.pool-name= HikariPool
  29 +spring.datasource.hikari.max-lifetime= 1800000
  30 +spring.datasource.hikari.connection-timeout= 3000
  31 +spring.datasource.hikari.connection-test-query= SELECT 1
  32 +spring.datasource.hikari.validation-timeout= 3000
  33 +spring.datasource.hikari.register-mbeans=true
  34 +
  35 +sso.enabled= true
  36 +sso.systemcode = SYSUS023
  37 +sso.http.url.login= http://10.10.200.142:9112/login?redirect=%2Findex
  38 +sso.http.url.logout= http://10.10.200.142:9112/login?redirect=%2Findex
  39 +sso.http.url.auth= http://10.10.200.142:9112/prod-api/system/utilitySystem/checkToken
  40 +
  41 +dc.imgurl= E:/klimg
  42 +dc.profile= profile
  43 +
  44 +baidu.ak=AYiBOs3f9qBQFhdKFsaboX6CfObmKwRP
  45 +passengerFlow.url = http://127.0.0.1:9999/images/
  46 +
  47 +electricity.importFile.path= E:/elecImportFile
src/main/resources/datatools/config-test.properties
@@ -15,13 +15,13 @@ datatools.kvars_dbdname=lg_control @@ -15,13 +15,13 @@ datatools.kvars_dbdname=lg_control
15 15
16 # 3、上传数据配置信息 16 # 3、上传数据配置信息
17 # 上传文件目录配置(根据不同的环境需要修正) 17 # 上传文件目录配置(根据不同的环境需要修正)
18 -datatools.fileupload_dir=/home/bsth_control_u_d_files 18 +datatools.fileupload_dir=/Users/xu/resource/project_code/runtime_temp/bsth_control_u_d_files
19 # ktr转换文件,中配置的错误输出目录(根据不同的环境需要修正) 19 # ktr转换文件,中配置的错误输出目录(根据不同的环境需要修正)
20 -datatools.trans_errordir=/home/bsth_control_u_d_files/erroroutput 20 +datatools.trans_errordir=/Users/xu/resource/project_code/runtime_temp/bsth_control_u_d_files/erroroutput
21 # 临时输出文件目录 21 # 临时输出文件目录
22 -datatools.trans_tempdir=/home/bsth_control_u_d_files/temp 22 +datatools.trans_tempdir=/Users/xu/resource/project_code/runtime_temp/bsth_control_u_d_files/temp
23 # 模版文件目录 23 # 模版文件目录
24 -datatools.trans_templatedir=/home/bsth_control_u_d_files/template 24 +datatools.trans_templatedir=/Users/xu/resource/project_code/runtime_temp/bsth_control_u_d_files/template
25 25
26 ##---------------------------- 导入数据ktr ----------------------------## 26 ##---------------------------- 导入数据ktr ----------------------------##
27 # 车辆信息导入ktr转换 27 # 车辆信息导入ktr转换
@@ -57,7 +57,7 @@ datatools.schedulerule_datainputktr=/datatools/ktrs/scheduleRuleDataInput.ktr @@ -57,7 +57,7 @@ datatools.schedulerule_datainputktr=/datatools/ktrs/scheduleRuleDataInput.ktr
57 57
58 # 4、数据导出配置信息 58 # 4、数据导出配置信息
59 # 导出数据文件目录配置(根据不同的环境需要修正) 59 # 导出数据文件目录配置(根据不同的环境需要修正)
60 -datatools.fileoutput_dir=/home/bsth_control_u_d_files 60 +datatools.fileoutput_dir=/Users/xu/resource/project_code/runtime_temp/bsth_control_u_d_files
61 61
62 ##---------------------------- 导出数据ktr -----------------------------## 62 ##---------------------------- 导出数据ktr -----------------------------##
63 # 车辆信息导出ktr转换 63 # 车辆信息导出ktr转换
src/main/resources/fatso/start.js
@@ -16,7 +16,7 @@ var platform = process.platform; @@ -16,7 +16,7 @@ var platform = process.platform;
16 var iswin = platform == 'win32'; 16 var iswin = platform == 'win32';
17 var sp = platform == 'win32' ? '\\' : '/'; 17 var sp = platform == 'win32' ? '\\' : '/';
18 //不参与的目录 18 //不参与的目录
19 -var excludes = ['scheduleApp', 'trafficManage', 'control', 'permission' + sp + 'authorize_all','permission' + sp + 'user', 'summary', 'history_sch', 'report' + sp + 'oil', 'base' + sp + 'geo_data_edit', 'base' + sp + 'carpark', 'forms', 'mforms', 'report', 'punctual', 'base' + sp + 'timesmodel', 'base' + sp + 'stationroute','zndd_yuan','call'] 19 +var excludes = ['scheduleApp', 'trafficManage', 'control', 'permission' + sp + 'authorize_all','permission' + sp + 'user', 'summary', 'history_sch', 'report' + sp + 'oil', 'base' + sp + 'geo_data_edit', 'base' + sp + 'carpark', 'forms', 'mforms', 'report', 'punctual', 'base' + sp + 'timesmodel', 'base' + sp + 'stationroute','zndd_yuan','call','base' + sp + 'region',]
20 , ep = new EventProxy() 20 , ep = new EventProxy()
21 , pName = 'bsth_control' 21 , pName = 'bsth_control'
22 , path = process.cwd() 22 , path = process.cwd()
src/main/resources/static/assets/bower_components/angular-bootstrap/ui-bootstrap-tpls.min.js
@@ -5,7 +5,7 @@ @@ -5,7 +5,7 @@
5 * Version: 0.14.0 - 2015-10-08 5 * Version: 0.14.0 - 2015-10-08
6 * License: MIT 6 * License: MIT
7 */ 7 */
8 -angular.module("ui.bootstrap",["ui.bootstrap.tpls","ui.bootstrap.collapse","ui.bootstrap.accordion","ui.bootstrap.alert","ui.bootstrap.buttons","ui.bootstrap.carousel","ui.bootstrap.dateparser","ui.bootstrap.position","ui.bootstrap.datepicker","ui.bootstrap.dropdown","ui.bootstrap.stackedMap","ui.bootstrap.modal","ui.bootstrap.pagination","ui.bootstrap.tooltip","ui.bootstrap.popover","ui.bootstrap.progressbar","ui.bootstrap.rating","ui.bootstrap.tabs","ui.bootstrap.timepicker","ui.bootstrap.typeahead"]),angular.module("ui.bootstrap.tpls",["template/accordion/accordion-group.html","template/accordion/accordion.html","template/alert/alert.html","template/carousel/carousel.html","template/carousel/slide.html","template/datepicker/datepicker.html","template/datepicker/day.html","template/datepicker/month.html","template/datepicker/popup.html","template/datepicker/year.html","template/modal/backdrop.html","template/modal/window.html","template/pagination/pager.html","template/pagination/pagination.html","template/tooltip/tooltip-html-popup.html","template/tooltip/tooltip-popup.html","template/tooltip/tooltip-template-popup.html","template/popover/popover-html.html","template/popover/popover-template.html","template/popover/popover.html","template/progressbar/bar.html","template/progressbar/progress.html","template/progressbar/progressbar.html","template/rating/rating.html","template/tabs/tab.html","template/tabs/tabset.html","template/timepicker/timepicker.html","template/typeahead/typeahead-match.html","template/typeahead/typeahead-popup.html"]),angular.module("ui.bootstrap.collapse",[]).directive("uibCollapse",["$animate","$injector",function(a,b){var c=b.has("$animateCss")?b.get("$animateCss"):null;return{link:function(b,d,e){function f(){d.removeClass("collapse").addClass("collapsing").attr("aria-expanded",!0).attr("aria-hidden",!1),c?c(d,{addClass:"in",easing:"ease",to:{height:d[0].scrollHeight+"px"}}).start().done(g):a.addClass(d,"in",{to:{height:d[0].scrollHeight+"px"}}).then(g)}function g(){d.removeClass("collapsing").addClass("collapse").css({height:"auto"})}function h(){return d.hasClass("collapse")||d.hasClass("in")?(d.css({height:d[0].scrollHeight+"px"}).removeClass("collapse").addClass("collapsing").attr("aria-expanded",!1).attr("aria-hidden",!0),void(c?c(d,{removeClass:"in",to:{height:"0"}}).start().done(i):a.removeClass(d,"in",{to:{height:"0"}}).then(i))):i()}function i(){d.css({height:"0"}),d.removeClass("collapsing").addClass("collapse")}b.$watch(e.uibCollapse,function(a){a?h():f()})}}}]),angular.module("ui.bootstrap.collapse").value("$collapseSuppressWarning",!1).directive("collapse",["$animate","$injector","$log","$collapseSuppressWarning",function(a,b,c,d){var e=b.has("$animateCss")?b.get("$animateCss"):null;return{link:function(b,f,g){function h(){f.removeClass("collapse").addClass("collapsing").attr("aria-expanded",!0).attr("aria-hidden",!1),e?e(f,{addClass:"in",easing:"ease",to:{height:f[0].scrollHeight+"px"}}).start().done(i):a.addClass(f,"in",{to:{height:f[0].scrollHeight+"px"}}).then(i)}function i(){f.removeClass("collapsing").addClass("collapse").css({height:"auto"})}function j(){return f.hasClass("collapse")||f.hasClass("in")?(f.css({height:f[0].scrollHeight+"px"}).removeClass("collapse").addClass("collapsing").attr("aria-expanded",!1).attr("aria-hidden",!0),void(e?e(f,{removeClass:"in",to:{height:"0"}}).start().done(k):a.removeClass(f,"in",{to:{height:"0"}}).then(k))):k()}function k(){f.css({height:"0"}),f.removeClass("collapsing").addClass("collapse")}d||c.warn("collapse is now deprecated. Use uib-collapse instead."),b.$watch(g.collapse,function(a){a?j():h()})}}}]),angular.module("ui.bootstrap.accordion",["ui.bootstrap.collapse"]).constant("uibAccordionConfig",{closeOthers:!0}).controller("UibAccordionController",["$scope","$attrs","uibAccordionConfig",function(a,b,c){this.groups=[],this.closeOthers=function(d){var e=angular.isDefined(b.closeOthers)?a.$eval(b.closeOthers):c.closeOthers;e&&angular.forEach(this.groups,function(a){a!==d&&(a.isOpen=!1)})},this.addGroup=function(a){var b=this;this.groups.push(a),a.$on("$destroy",function(c){b.removeGroup(a)})},this.removeGroup=function(a){var b=this.groups.indexOf(a);-1!==b&&this.groups.splice(b,1)}}]).directive("uibAccordion",function(){return{controller:"UibAccordionController",controllerAs:"accordion",transclude:!0,templateUrl:function(a,b){return b.templateUrl||"template/accordion/accordion.html"}}}).directive("uibAccordionGroup",function(){return{require:"^uibAccordion",transclude:!0,replace:!0,templateUrl:function(a,b){return b.templateUrl||"template/accordion/accordion-group.html"},scope:{heading:"@",isOpen:"=?",isDisabled:"=?"},controller:function(){this.setHeading=function(a){this.heading=a}},link:function(a,b,c,d){d.addGroup(a),a.openClass=c.openClass||"panel-open",a.panelClass=c.panelClass,a.$watch("isOpen",function(c){b.toggleClass(a.openClass,!!c),c&&d.closeOthers(a)}),a.toggleOpen=function(b){a.isDisabled||b&&32!==b.which||(a.isOpen=!a.isOpen)}}}}).directive("uibAccordionHeading",function(){return{transclude:!0,template:"",replace:!0,require:"^uibAccordionGroup",link:function(a,b,c,d,e){d.setHeading(e(a,angular.noop))}}}).directive("uibAccordionTransclude",function(){return{require:["?^uibAccordionGroup","?^accordionGroup"],link:function(a,b,c,d){d=d[0]?d[0]:d[1],a.$watch(function(){return d[c.uibAccordionTransclude]},function(a){a&&(b.find("span").html(""),b.find("span").append(a))})}}}),angular.module("ui.bootstrap.accordion").value("$accordionSuppressWarning",!1).controller("AccordionController",["$scope","$attrs","$controller","$log","$accordionSuppressWarning",function(a,b,c,d,e){return e||d.warn("AccordionController is now deprecated. Use UibAccordionController instead."),c("UibAccordionController",{$scope:a,$attrs:b})}]).directive("accordion",["$log","$accordionSuppressWarning",function(a,b){return{restrict:"EA",controller:"AccordionController",controllerAs:"accordion",transclude:!0,replace:!1,templateUrl:function(a,b){return b.templateUrl||"template/accordion/accordion.html"},link:function(){b||a.warn("accordion is now deprecated. Use uib-accordion instead.")}}}]).directive("accordionGroup",["$log","$accordionSuppressWarning",function(a,b){return{require:"^accordion",restrict:"EA",transclude:!0,replace:!0,templateUrl:function(a,b){return b.templateUrl||"template/accordion/accordion-group.html"},scope:{heading:"@",isOpen:"=?",isDisabled:"=?"},controller:function(){this.setHeading=function(a){this.heading=a}},link:function(c,d,e,f){b||a.warn("accordion-group is now deprecated. Use uib-accordion-group instead."),f.addGroup(c),c.openClass=e.openClass||"panel-open",c.panelClass=e.panelClass,c.$watch("isOpen",function(a){d.toggleClass(c.openClass,!!a),a&&f.closeOthers(c)}),c.toggleOpen=function(a){c.isDisabled||a&&32!==a.which||(c.isOpen=!c.isOpen)}}}}]).directive("accordionHeading",["$log","$accordionSuppressWarning",function(a,b){return{restrict:"EA",transclude:!0,template:"",replace:!0,require:"^accordionGroup",link:function(c,d,e,f,g){b||a.warn("accordion-heading is now deprecated. Use uib-accordion-heading instead."),f.setHeading(g(c,angular.noop))}}}]).directive("accordionTransclude",["$log","$accordionSuppressWarning",function(a,b){return{require:"^accordionGroup",link:function(c,d,e,f){b||a.warn("accordion-transclude is now deprecated. Use uib-accordion-transclude instead."),c.$watch(function(){return f[e.accordionTransclude]},function(a){a&&(d.find("span").html(""),d.find("span").append(a))})}}}]),angular.module("ui.bootstrap.alert",[]).controller("UibAlertController",["$scope","$attrs","$timeout",function(a,b,c){a.closeable=!!b.close,angular.isDefined(b.dismissOnTimeout)&&c(function(){a.close()},parseInt(b.dismissOnTimeout,10))}]).directive("uibAlert",function(){return{controller:"UibAlertController",controllerAs:"alert",templateUrl:function(a,b){return b.templateUrl||"template/alert/alert.html"},transclude:!0,replace:!0,scope:{type:"@",close:"&"}}}),angular.module("ui.bootstrap.alert").value("$alertSuppressWarning",!1).controller("AlertController",["$scope","$attrs","$controller","$log","$alertSuppressWarning",function(a,b,c,d,e){return e||d.warn("AlertController is now deprecated. Use UibAlertController instead."),c("UibAlertController",{$scope:a,$attrs:b})}]).directive("alert",["$log","$alertSuppressWarning",function(a,b){return{controller:"AlertController",controllerAs:"alert",templateUrl:function(a,b){return b.templateUrl||"template/alert/alert.html"},transclude:!0,replace:!0,scope:{type:"@",close:"&"},link:function(){b||a.warn("alert is now deprecated. Use uib-alert instead.")}}}]),angular.module("ui.bootstrap.buttons",[]).constant("uibButtonConfig",{activeClass:"active",toggleEvent:"click"}).controller("UibButtonsController",["uibButtonConfig",function(a){this.activeClass=a.activeClass||"active",this.toggleEvent=a.toggleEvent||"click"}]).directive("uibBtnRadio",function(){return{require:["uibBtnRadio","ngModel"],controller:"UibButtonsController",controllerAs:"buttons",link:function(a,b,c,d){var e=d[0],f=d[1];b.find("input").css({display:"none"}),f.$render=function(){b.toggleClass(e.activeClass,angular.equals(f.$modelValue,a.$eval(c.uibBtnRadio)))},b.on(e.toggleEvent,function(){if(!c.disabled){var d=b.hasClass(e.activeClass);(!d||angular.isDefined(c.uncheckable))&&a.$apply(function(){f.$setViewValue(d?null:a.$eval(c.uibBtnRadio)),f.$render()})}})}}}).directive("uibBtnCheckbox",["$document",function(a){return{require:["uibBtnCheckbox","ngModel"],controller:"UibButtonsController",controllerAs:"button",link:function(b,c,d,e){function f(){return h(d.btnCheckboxTrue,!0)}function g(){return h(d.btnCheckboxFalse,!1)}function h(a,c){return angular.isDefined(a)?b.$eval(a):c}var i=e[0],j=e[1];c.find("input").css({display:"none"}),j.$render=function(){c.toggleClass(i.activeClass,angular.equals(j.$modelValue,f()))},c.on(i.toggleEvent,function(){d.disabled||b.$apply(function(){j.$setViewValue(c.hasClass(i.activeClass)?g():f()),j.$render()})}),c.on("keypress",function(e){d.disabled||32!==e.which||a[0].activeElement!==c[0]||b.$apply(function(){j.$setViewValue(c.hasClass(i.activeClass)?g():f()),j.$render()})})}}}]),angular.module("ui.bootstrap.buttons").value("$buttonsSuppressWarning",!1).controller("ButtonsController",["$controller","$log","$buttonsSuppressWarning",function(a,b,c){return c||b.warn("ButtonsController is now deprecated. Use UibButtonsController instead."),a("UibButtonsController")}]).directive("btnRadio",["$log","$buttonsSuppressWarning",function(a,b){return{require:["btnRadio","ngModel"],controller:"ButtonsController",controllerAs:"buttons",link:function(c,d,e,f){b||a.warn("btn-radio is now deprecated. Use uib-btn-radio instead.");var g=f[0],h=f[1];d.find("input").css({display:"none"}),h.$render=function(){d.toggleClass(g.activeClass,angular.equals(h.$modelValue,c.$eval(e.btnRadio)))},d.bind(g.toggleEvent,function(){if(!e.disabled){var a=d.hasClass(g.activeClass);(!a||angular.isDefined(e.uncheckable))&&c.$apply(function(){h.$setViewValue(a?null:c.$eval(e.btnRadio)),h.$render()})}})}}}]).directive("btnCheckbox",["$document","$log","$buttonsSuppressWarning",function(a,b,c){return{require:["btnCheckbox","ngModel"],controller:"ButtonsController",controllerAs:"button",link:function(d,e,f,g){function h(){return j(f.btnCheckboxTrue,!0)}function i(){return j(f.btnCheckboxFalse,!1)}function j(a,b){var c=d.$eval(a);return angular.isDefined(c)?c:b}c||b.warn("btn-checkbox is now deprecated. Use uib-btn-checkbox instead.");var k=g[0],l=g[1];e.find("input").css({display:"none"}),l.$render=function(){e.toggleClass(k.activeClass,angular.equals(l.$modelValue,h()))},e.bind(k.toggleEvent,function(){f.disabled||d.$apply(function(){l.$setViewValue(e.hasClass(k.activeClass)?i():h()),l.$render()})}),e.on("keypress",function(b){f.disabled||32!==b.which||a[0].activeElement!==e[0]||d.$apply(function(){l.$setViewValue(e.hasClass(k.activeClass)?i():h()),l.$render()})})}}}]),angular.module("ui.bootstrap.carousel",[]).controller("UibCarouselController",["$scope","$element","$interval","$animate",function(a,b,c,d){function e(b,c,e){s||(angular.extend(b,{direction:e,active:!0}),angular.extend(m.currentSlide||{},{direction:e,active:!1}),d.enabled()&&!a.noTransition&&!a.$currentTransition&&b.$element&&m.slides.length>1&&(b.$element.data(q,b.direction),m.currentSlide&&m.currentSlide.$element&&m.currentSlide.$element.data(q,b.direction),a.$currentTransition=!0,o?d.on("addClass",b.$element,function(b,c){"close"===c&&(a.$currentTransition=null,d.off("addClass",b))}):b.$element.one("$animate:close",function(){a.$currentTransition=null})),m.currentSlide=b,r=c,g())}function f(a){if(angular.isUndefined(n[a].index))return n[a];var b;n.length;for(b=0;b<n.length;++b)if(n[b].index==a)return n[b]}function g(){h();var b=+a.interval;!isNaN(b)&&b>0&&(k=c(i,b))}function h(){k&&(c.cancel(k),k=null)}function i(){var b=+a.interval;l&&!isNaN(b)&&b>0&&n.length?a.next():a.pause()}function j(b){b.length||(a.$currentTransition=null)}var k,l,m=this,n=m.slides=a.slides=[],o=angular.version.minor>=4,p="uib-noTransition",q="uib-slideDirection",r=-1;m.currentSlide=null;var s=!1;m.select=a.select=function(b,c){var d=a.indexOfSlide(b);void 0===c&&(c=d>m.getCurrentIndex()?"next":"prev"),b&&b!==m.currentSlide&&!a.$currentTransition&&e(b,d,c)},a.$on("$destroy",function(){s=!0}),m.getCurrentIndex=function(){return m.currentSlide&&angular.isDefined(m.currentSlide.index)?+m.currentSlide.index:r},a.indexOfSlide=function(a){return angular.isDefined(a.index)?+a.index:n.indexOf(a)},a.next=function(){var b=(m.getCurrentIndex()+1)%n.length;return 0===b&&a.noWrap()?void a.pause():m.select(f(b),"next")},a.prev=function(){var b=m.getCurrentIndex()-1<0?n.length-1:m.getCurrentIndex()-1;return a.noWrap()&&b===n.length-1?void a.pause():m.select(f(b),"prev")},a.isActive=function(a){return m.currentSlide===a},a.$watch("interval",g),a.$watchCollection("slides",j),a.$on("$destroy",h),a.play=function(){l||(l=!0,g())},a.pause=function(){a.noPause||(l=!1,h())},m.addSlide=function(b,c){b.$element=c,n.push(b),1===n.length||b.active?(m.select(n[n.length-1]),1===n.length&&a.play()):b.active=!1},m.removeSlide=function(a){angular.isDefined(a.index)&&n.sort(function(a,b){return+a.index>+b.index});var b=n.indexOf(a);n.splice(b,1),n.length>0&&a.active?b>=n.length?m.select(n[b-1]):m.select(n[b]):r>b&&r--,0===n.length&&(m.currentSlide=null)},a.$watch("noTransition",function(a){b.data(p,a)})}]).directive("uibCarousel",[function(){return{transclude:!0,replace:!0,controller:"UibCarouselController",controllerAs:"carousel",require:"carousel",templateUrl:function(a,b){return b.templateUrl||"template/carousel/carousel.html"},scope:{interval:"=",noTransition:"=",noPause:"=",noWrap:"&"}}}]).directive("uibSlide",function(){return{require:"^uibCarousel",restrict:"EA",transclude:!0,replace:!0,templateUrl:function(a,b){return b.templateUrl||"template/carousel/slide.html"},scope:{active:"=?",actual:"=?",index:"=?"},link:function(a,b,c,d){d.addSlide(a,b),a.$on("$destroy",function(){d.removeSlide(a)}),a.$watch("active",function(b){b&&d.select(a)})}}}).animation(".item",["$injector","$animate",function(a,b){function c(a,b,c){a.removeClass(b),c&&c()}var d="uib-noTransition",e="uib-slideDirection",f=null;return a.has("$animateCss")&&(f=a.get("$animateCss")),{beforeAddClass:function(a,g,h){if("active"==g&&a.parent()&&a.parent().parent()&&!a.parent().parent().data(d)){var i=!1,j=a.data(e),k="next"==j?"left":"right",l=c.bind(this,a,k+" "+j,h);return a.addClass(j),f?f(a,{addClass:k}).start().done(l):b.addClass(a,k).then(function(){i||l(),h()}),function(){i=!0}}h()},beforeRemoveClass:function(a,g,h){if("active"===g&&a.parent()&&a.parent().parent()&&!a.parent().parent().data(d)){var i=!1,j=a.data(e),k="next"==j?"left":"right",l=c.bind(this,a,k,h);return f?f(a,{addClass:k}).start().done(l):b.addClass(a,k).then(function(){i||l(),h()}),function(){i=!0}}h()}}}]),angular.module("ui.bootstrap.carousel").value("$carouselSuppressWarning",!1).controller("CarouselController",["$scope","$element","$controller","$log","$carouselSuppressWarning",function(a,b,c,d,e){return e||d.warn("CarouselController is now deprecated. Use UibCarouselController instead."),c("UibCarouselController",{$scope:a,$element:b})}]).directive("carousel",["$log","$carouselSuppressWarning",function(a,b){return{transclude:!0,replace:!0,controller:"CarouselController",controllerAs:"carousel",require:"carousel",templateUrl:function(a,b){return b.templateUrl||"template/carousel/carousel.html"},scope:{interval:"=",noTransition:"=",noPause:"=",noWrap:"&"},link:function(){b||a.warn("carousel is now deprecated. Use uib-carousel instead.")}}}]).directive("slide",["$log","$carouselSuppressWarning",function(a,b){return{require:"^carousel",transclude:!0,replace:!0,templateUrl:function(a,b){return b.templateUrl||"template/carousel/slide.html"},scope:{active:"=?",actual:"=?",index:"=?"},link:function(c,d,e,f){b||a.warn("slide is now deprecated. Use uib-slide instead."),f.addSlide(c,d),c.$on("$destroy",function(){f.removeSlide(c)}),c.$watch("active",function(a){a&&f.select(c)})}}}]),angular.module("ui.bootstrap.dateparser",[]).service("uibDateParser",["$log","$locale","orderByFilter",function(a,b,c){function d(a){var b=[],d=a.split("");return angular.forEach(g,function(c,e){var f=a.indexOf(e);if(f>-1){a=a.split(""),d[f]="("+c.regex+")",a[f]="$";for(var g=f+1,h=f+e.length;h>g;g++)d[g]="",a[g]="$";a=a.join(""),b.push({index:f,apply:c.apply})}}),{regex:new RegExp("^"+d.join("")+"$"),map:c(b,"index")}}function e(a,b,c){return 1>c?!1:1===b&&c>28?29===c&&(a%4===0&&a%100!==0||a%400===0):3===b||5===b||8===b||10===b?31>c:!0}var f,g,h=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g;this.init=function(){f=b.id,this.parsers={},g={yyyy:{regex:"\\d{4}",apply:function(a){this.year=+a}},yy:{regex:"\\d{2}",apply:function(a){this.year=+a+2e3}},y:{regex:"\\d{1,4}",apply:function(a){this.year=+a}},MMMM:{regex:b.DATETIME_FORMATS.MONTH.join("|"),apply:function(a){this.month=b.DATETIME_FORMATS.MONTH.indexOf(a)}},MMM:{regex:b.DATETIME_FORMATS.SHORTMONTH.join("|"),apply:function(a){this.month=b.DATETIME_FORMATS.SHORTMONTH.indexOf(a)}},MM:{regex:"0[1-9]|1[0-2]",apply:function(a){this.month=a-1}},M:{regex:"[1-9]|1[0-2]",apply:function(a){this.month=a-1}},dd:{regex:"[0-2][0-9]{1}|3[0-1]{1}",apply:function(a){this.date=+a}},d:{regex:"[1-2]?[0-9]{1}|3[0-1]{1}",apply:function(a){this.date=+a}},EEEE:{regex:b.DATETIME_FORMATS.DAY.join("|")},EEE:{regex:b.DATETIME_FORMATS.SHORTDAY.join("|")},HH:{regex:"(?:0|1)[0-9]|2[0-3]",apply:function(a){this.hours=+a}},hh:{regex:"0[0-9]|1[0-2]",apply:function(a){this.hours=+a}},H:{regex:"1?[0-9]|2[0-3]",apply:function(a){this.hours=+a}},h:{regex:"[0-9]|1[0-2]",apply:function(a){this.hours=+a}},mm:{regex:"[0-5][0-9]",apply:function(a){this.minutes=+a}},m:{regex:"[0-9]|[1-5][0-9]",apply:function(a){this.minutes=+a}},sss:{regex:"[0-9][0-9][0-9]",apply:function(a){this.milliseconds=+a}},ss:{regex:"[0-5][0-9]",apply:function(a){this.seconds=+a}},s:{regex:"[0-9]|[1-5][0-9]",apply:function(a){this.seconds=+a}},a:{regex:b.DATETIME_FORMATS.AMPMS.join("|"),apply:function(a){12===this.hours&&(this.hours=0),"PM"===a&&(this.hours+=12)}}}},this.init(),this.parse=function(c,g,i){if(!angular.isString(c)||!g)return c;g=b.DATETIME_FORMATS[g]||g,g=g.replace(h,"\\$&"),b.id!==f&&this.init(),this.parsers[g]||(this.parsers[g]=d(g));var j=this.parsers[g],k=j.regex,l=j.map,m=c.match(k);if(m&&m.length){var n,o;angular.isDate(i)&&!isNaN(i.getTime())?n={year:i.getFullYear(),month:i.getMonth(),date:i.getDate(),hours:i.getHours(),minutes:i.getMinutes(),seconds:i.getSeconds(),milliseconds:i.getMilliseconds()}:(i&&a.warn("dateparser:","baseDate is not a valid date"),n={year:1900,month:0,date:1,hours:0,minutes:0,seconds:0,milliseconds:0});for(var p=1,q=m.length;q>p;p++){var r=l[p-1];r.apply&&r.apply.call(n,m[p])}return e(n.year,n.month,n.date)&&(o=new Date(n.year,n.month,n.date,n.hours,n.minutes,n.seconds,n.milliseconds||0)),o}}}]),angular.module("ui.bootstrap.dateparser").value("$dateParserSuppressWarning",!1).service("dateParser",["$log","$dateParserSuppressWarning","uibDateParser",function(a,b,c){b||a.warn("dateParser is now deprecated. Use uibDateParser instead."),angular.extend(this,c)}]),angular.module("ui.bootstrap.position",[]).factory("$uibPosition",["$document","$window",function(a,b){function c(a,c){return a.currentStyle?a.currentStyle[c]:b.getComputedStyle?b.getComputedStyle(a)[c]:a.style[c]}function d(a){return"static"===(c(a,"position")||"static")}var e=function(b){for(var c=a[0],e=b.offsetParent||c;e&&e!==c&&d(e);)e=e.offsetParent;return e||c};return{position:function(b){var c=this.offset(b),d={top:0,left:0},f=e(b[0]);f!=a[0]&&(d=this.offset(angular.element(f)),d.top+=f.clientTop-f.scrollTop,d.left+=f.clientLeft-f.scrollLeft);var g=b[0].getBoundingClientRect();return{width:g.width||b.prop("offsetWidth"),height:g.height||b.prop("offsetHeight"),top:c.top-d.top,left:c.left-d.left}},offset:function(c){var d=c[0].getBoundingClientRect();return{width:d.width||c.prop("offsetWidth"),height:d.height||c.prop("offsetHeight"),top:d.top+(b.pageYOffset||a[0].documentElement.scrollTop),left:d.left+(b.pageXOffset||a[0].documentElement.scrollLeft)}},positionElements:function(a,b,c,d){var e,f,g,h,i=c.split("-"),j=i[0],k=i[1]||"center";e=d?this.offset(a):this.position(a),f=b.prop("offsetWidth"),g=b.prop("offsetHeight");var l={center:function(){return e.left+e.width/2-f/2},left:function(){return e.left},right:function(){return e.left+e.width}},m={center:function(){return e.top+e.height/2-g/2},top:function(){return e.top},bottom:function(){return e.top+e.height}};switch(j){case"right":h={top:m[k](),left:l[j]()};break;case"left":h={top:m[k](),left:e.left-f};break;case"bottom":h={top:m[j](),left:l[k]()};break;default:h={top:e.top-g,left:l[k]()}}return h}}}]),angular.module("ui.bootstrap.position").value("$positionSuppressWarning",!1).service("$position",["$log","$positionSuppressWarning","$uibPosition",function(a,b,c){b||a.warn("$position is now deprecated. Use $uibPosition instead."),angular.extend(this,c)}]),angular.module("ui.bootstrap.datepicker",["ui.bootstrap.dateparser","ui.bootstrap.position"]).value("$datepickerSuppressError",!1).constant("uibDatepickerConfig",{formatDay:"dd",formatMonth:"MMMM",formatYear:"yyyy",formatDayHeader:"EEE",formatDayTitle:"MMMM yyyy",formatMonthTitle:"yyyy",datepickerMode:"day",minMode:"day",maxMode:"year",showWeeks:!0,startingDay:0,yearRange:20,minDate:null,maxDate:null,shortcutPropagation:!1}).controller("UibDatepickerController",["$scope","$attrs","$parse","$interpolate","$log","dateFilter","uibDatepickerConfig","$datepickerSuppressError",function(a,b,c,d,e,f,g,h){var i=this,j={$setViewValue:angular.noop};this.modes=["day","month","year"],angular.forEach(["formatDay","formatMonth","formatYear","formatDayHeader","formatDayTitle","formatMonthTitle","showWeeks","startingDay","yearRange","shortcutPropagation"],function(c,e){i[c]=angular.isDefined(b[c])?6>e?d(b[c])(a.$parent):a.$parent.$eval(b[c]):g[c]}),angular.forEach(["minDate","maxDate"],function(d){b[d]?a.$parent.$watch(c(b[d]),function(a){i[d]=a?new Date(a):null,i.refreshView()}):i[d]=g[d]?new Date(g[d]):null}),angular.forEach(["minMode","maxMode"],function(d){b[d]?a.$parent.$watch(c(b[d]),function(c){i[d]=angular.isDefined(c)?c:b[d],a[d]=i[d],("minMode"==d&&i.modes.indexOf(a.datepickerMode)<i.modes.indexOf(i[d])||"maxMode"==d&&i.modes.indexOf(a.datepickerMode)>i.modes.indexOf(i[d]))&&(a.datepickerMode=i[d])}):(i[d]=g[d]||null,a[d]=i[d])}),a.datepickerMode=a.datepickerMode||g.datepickerMode,a.uniqueId="datepicker-"+a.$id+"-"+Math.floor(1e4*Math.random()),angular.isDefined(b.initDate)?(this.activeDate=a.$parent.$eval(b.initDate)||new Date,a.$parent.$watch(b.initDate,function(a){a&&(j.$isEmpty(j.$modelValue)||j.$invalid)&&(i.activeDate=a,i.refreshView())})):this.activeDate=new Date,a.isActive=function(b){return 0===i.compare(b.date,i.activeDate)?(a.activeDateId=b.uid,!0):!1},this.init=function(a){j=a,j.$render=function(){i.render()}},this.render=function(){if(j.$viewValue){var a=new Date(j.$viewValue),b=!isNaN(a);b?this.activeDate=a:h||e.error('Datepicker directive: "ng-model" value must be a Date object, a number of milliseconds since 01.01.1970 or a string representing an RFC2822 or ISO 8601 date.')}this.refreshView()},this.refreshView=function(){if(this.element){this._refreshView();var a=j.$viewValue?new Date(j.$viewValue):null;j.$setValidity("dateDisabled",!a||this.element&&!this.isDisabled(a))}},this.createDateObject=function(a,b){var c=j.$viewValue?new Date(j.$viewValue):null;return{date:a,label:f(a,b),selected:c&&0===this.compare(a,c),disabled:this.isDisabled(a),current:0===this.compare(a,new Date),customClass:this.customClass(a)}},this.isDisabled=function(c){return this.minDate&&this.compare(c,this.minDate)<0||this.maxDate&&this.compare(c,this.maxDate)>0||b.dateDisabled&&a.dateDisabled({date:c,mode:a.datepickerMode})},this.customClass=function(b){return a.customClass({date:b,mode:a.datepickerMode})},this.split=function(a,b){for(var c=[];a.length>0;)c.push(a.splice(0,b));return c},this.fixTimeZone=function(a){var b=a.getHours();a.setHours(23===b?b+2:0)},a.select=function(b){if(a.datepickerMode===i.minMode){var c=j.$viewValue?new Date(j.$viewValue):new Date(0,0,0,0,0,0,0);c.setFullYear(b.getFullYear(),b.getMonth(),b.getDate()),j.$setViewValue(c),j.$render()}else i.activeDate=b,a.datepickerMode=i.modes[i.modes.indexOf(a.datepickerMode)-1]},a.move=function(a){var b=i.activeDate.getFullYear()+a*(i.step.years||0),c=i.activeDate.getMonth()+a*(i.step.months||0);i.activeDate.setFullYear(b,c,1),i.refreshView()},a.toggleMode=function(b){b=b||1,a.datepickerMode===i.maxMode&&1===b||a.datepickerMode===i.minMode&&-1===b||(a.datepickerMode=i.modes[i.modes.indexOf(a.datepickerMode)+b])},a.keys={13:"enter",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down"};var k=function(){i.element[0].focus()};a.$on("uib:datepicker.focus",k),a.keydown=function(b){var c=a.keys[b.which];if(c&&!b.shiftKey&&!b.altKey)if(b.preventDefault(),i.shortcutPropagation||b.stopPropagation(),"enter"===c||"space"===c){if(i.isDisabled(i.activeDate))return;a.select(i.activeDate)}else!b.ctrlKey||"up"!==c&&"down"!==c?(i.handleKeyDown(c,b),i.refreshView()):a.toggleMode("up"===c?1:-1)}}]).controller("UibDaypickerController",["$scope","$element","dateFilter",function(a,b,c){function d(a,b){return 1!==b||a%4!==0||a%100===0&&a%400!==0?f[b]:29}function e(a){var b=new Date(a);b.setDate(b.getDate()+4-(b.getDay()||7));var c=b.getTime();return b.setMonth(0),b.setDate(1),Math.floor(Math.round((c-b)/864e5)/7)+1}var f=[31,28,31,30,31,30,31,31,30,31,30,31];this.step={months:1},this.element=b,this.init=function(b){angular.extend(b,this),a.showWeeks=b.showWeeks,b.refreshView()},this.getDates=function(a,b){for(var c,d=new Array(b),e=new Date(a),f=0;b>f;)c=new Date(e),this.fixTimeZone(c),d[f++]=c,e.setDate(e.getDate()+1);return d},this._refreshView=function(){var b=this.activeDate.getFullYear(),d=this.activeDate.getMonth(),f=new Date(b,d,1),g=this.startingDay-f.getDay(),h=g>0?7-g:-g,i=new Date(f);h>0&&i.setDate(-h+1);for(var j=this.getDates(i,42),k=0;42>k;k++)j[k]=angular.extend(this.createDateObject(j[k],this.formatDay),{secondary:j[k].getMonth()!==d,uid:a.uniqueId+"-"+k});a.labels=new Array(7);for(var l=0;7>l;l++)a.labels[l]={abbr:c(j[l].date,this.formatDayHeader),full:c(j[l].date,"EEEE")};if(a.title=c(this.activeDate,this.formatDayTitle),a.rows=this.split(j,7),a.showWeeks){a.weekNumbers=[];for(var m=(11-this.startingDay)%7,n=a.rows.length,o=0;n>o;o++)a.weekNumbers.push(e(a.rows[o][m].date))}},this.compare=function(a,b){return new Date(a.getFullYear(),a.getMonth(),a.getDate())-new Date(b.getFullYear(),b.getMonth(),b.getDate())},this.handleKeyDown=function(a,b){var c=this.activeDate.getDate();if("left"===a)c-=1;else if("up"===a)c-=7;else if("right"===a)c+=1;else if("down"===a)c+=7;else if("pageup"===a||"pagedown"===a){var e=this.activeDate.getMonth()+("pageup"===a?-1:1);this.activeDate.setMonth(e,1),c=Math.min(d(this.activeDate.getFullYear(),this.activeDate.getMonth()),c)}else"home"===a?c=1:"end"===a&&(c=d(this.activeDate.getFullYear(),this.activeDate.getMonth()));this.activeDate.setDate(c)}}]).controller("UibMonthpickerController",["$scope","$element","dateFilter",function(a,b,c){this.step={years:1},this.element=b,this.init=function(a){angular.extend(a,this),a.refreshView()},this._refreshView=function(){for(var b,d=new Array(12),e=this.activeDate.getFullYear(),f=0;12>f;f++)b=new Date(e,f,1),this.fixTimeZone(b),d[f]=angular.extend(this.createDateObject(b,this.formatMonth),{uid:a.uniqueId+"-"+f});a.title=c(this.activeDate,this.formatMonthTitle),a.rows=this.split(d,3)},this.compare=function(a,b){return new Date(a.getFullYear(),a.getMonth())-new Date(b.getFullYear(),b.getMonth())},this.handleKeyDown=function(a,b){var c=this.activeDate.getMonth();if("left"===a)c-=1;else if("up"===a)c-=3;else if("right"===a)c+=1;else if("down"===a)c+=3;else if("pageup"===a||"pagedown"===a){var d=this.activeDate.getFullYear()+("pageup"===a?-1:1);this.activeDate.setFullYear(d)}else"home"===a?c=0:"end"===a&&(c=11);this.activeDate.setMonth(c)}}]).controller("UibYearpickerController",["$scope","$element","dateFilter",function(a,b,c){function d(a){return parseInt((a-1)/e,10)*e+1}var e;this.element=b,this.yearpickerInit=function(){e=this.yearRange,this.step={years:e}},this._refreshView=function(){for(var b,c=new Array(e),f=0,g=d(this.activeDate.getFullYear());e>f;f++)b=new Date(g+f,0,1),this.fixTimeZone(b),c[f]=angular.extend(this.createDateObject(b,this.formatYear),{uid:a.uniqueId+"-"+f});a.title=[c[0].label,c[e-1].label].join(" - "),a.rows=this.split(c,5)},this.compare=function(a,b){return a.getFullYear()-b.getFullYear()},this.handleKeyDown=function(a,b){var c=this.activeDate.getFullYear();"left"===a?c-=1:"up"===a?c-=5:"right"===a?c+=1:"down"===a?c+=5:"pageup"===a||"pagedown"===a?c+=("pageup"===a?-1:1)*this.step.years:"home"===a?c=d(this.activeDate.getFullYear()):"end"===a&&(c=d(this.activeDate.getFullYear())+e-1),this.activeDate.setFullYear(c)}}]).directive("uibDatepicker",function(){return{replace:!0,templateUrl:function(a,b){return b.templateUrl||"template/datepicker/datepicker.html"},scope:{datepickerMode:"=?",dateDisabled:"&",customClass:"&",shortcutPropagation:"&?"},require:["uibDatepicker","^ngModel"],controller:"UibDatepickerController",controllerAs:"datepicker",link:function(a,b,c,d){var e=d[0],f=d[1];e.init(f)}}}).directive("uibDaypicker",function(){return{replace:!0,templateUrl:"template/datepicker/day.html",require:["^?uibDatepicker","uibDaypicker","^?datepicker"],controller:"UibDaypickerController",link:function(a,b,c,d){var e=d[0]||d[2],f=d[1];f.init(e)}}}).directive("uibMonthpicker",function(){return{replace:!0,templateUrl:"template/datepicker/month.html",require:["^?uibDatepicker","uibMonthpicker","^?datepicker"],controller:"UibMonthpickerController",link:function(a,b,c,d){var e=d[0]||d[2],f=d[1];f.init(e)}}}).directive("uibYearpicker",function(){return{replace:!0,templateUrl:"template/datepicker/year.html",require:["^?uibDatepicker","uibYearpicker","^?datepicker"],controller:"UibYearpickerController",link:function(a,b,c,d){var e=d[0]||d[2];angular.extend(e,d[1]),e.yearpickerInit(),e.refreshView()}}}).constant("uibDatepickerPopupConfig",{datepickerPopup:"yyyy-MM-dd",datepickerPopupTemplateUrl:"template/datepicker/popup.html",datepickerTemplateUrl:"template/datepicker/datepicker.html",html5Types:{date:"yyyy-MM-dd","datetime-local":"yyyy-MM-ddTHH:mm:ss.sss",month:"yyyy-MM"},currentText:"Today",clearText:"Clear",closeText:"Done",closeOnDateSelection:!0,appendToBody:!1,showButtonBar:!0,onOpenFocus:!0}).controller("UibDatepickerPopupController",["$scope","$element","$attrs","$compile","$parse","$document","$rootScope","$uibPosition","dateFilter","uibDateParser","uibDatepickerPopupConfig","$timeout",function(a,b,c,d,e,f,g,h,i,j,k,l){function m(a){return a.replace(/([A-Z])/g,function(a){ 8 +angular.module("ui.bootstrap",["ui.bootstrap.tpls","ui.bootstrap.collapse","ui.bootstrap.accordion","ui.bootstrap.alert","ui.bootstrap.buttons","ui.bootstrap.carousel","ui.bootstrap.dateparser","ui.bootstrap.position","ui.bootstrap.datepicker","ui.bootstrap.dropdown","ui.bootstrap.stackedMap","ui.bootstrap.modal","ui.bootstrap.pagination","ui.bootstrap.tooltip","ui.bootstrap.popover","ui.bootstrap.progressbar","ui.bootstrap.rating","ui.bootstrap.tabs","ui.bootstrap.timepicker","ui.bootstrap.typeahead"]),angular.module("ui.bootstrap.tpls",["template/accordion/accordion-group.html","template/accordion/accordion.html","template/alert/alert.html","template/carousel/carousel.html","template/carousel/slide.html","template/datepicker/datepicker.html","template/datepicker/day.html","template/datepicker/month.html","template/datepicker/popup.html","template/datepicker/year.html","template/modal/backdrop.html","template/modal/window.html","template/pagination/pager.html","template/pagination/pagination.html","template/tooltip/tooltip-html-popup.html","template/tooltip/tooltip-popup.html","template/tooltip/tooltip-template-popup.html","template/popover/popover-html.html","template/popover/popover-template.html","template/popover/popover.html","template/progressbar/bar.html","template/progressbar/progress.html","template/progressbar/progressbar.html","template/rating/rating.html","template/tabs/tab.html","template/tabs/tabset.html","template/timepicker/timepicker.html","template/typeahead/typeahead-match.html","template/typeahead/typeahead-popup.html"]),angular.module("ui.bootstrap.collapse",[]).directive("uibCollapse",["$animate","$injector",function(a,b){var c=b.has("$animateCss")?b.get("$animateCss"):null;return{link:function(b,d,e){function f(){d.removeClass("collapse").addClass("collapsing").attr("aria-expanded",!0).attr("aria-hidden",!1),c?c(d,{addClass:"in",easing:"ease",to:{height:d[0].scrollHeight+"px"}}).start().done(g):a.addClass(d,"in",{to:{height:d[0].scrollHeight+"px"}}).then(g)}function g(){d.removeClass("collapsing").addClass("collapse").css({height:"auto"})}function h(){return d.hasClass("collapse")||d.hasClass("in")?(d.css({height:d[0].scrollHeight+"px"}).removeClass("collapse").addClass("collapsing").attr("aria-expanded",!1).attr("aria-hidden",!0),void(c?c(d,{removeClass:"in",to:{height:"0"}}).start().done(i):a.removeClass(d,"in",{to:{height:"0"}}).then(i))):i()}function i(){d.css({height:"0"}),d.removeClass("collapsing").addClass("collapse")}b.$watch(e.uibCollapse,function(a){a?h():f()})}}}]),angular.module("ui.bootstrap.collapse").value("$collapseSuppressWarning",!1).directive("collapse",["$animate","$injector","$log","$collapseSuppressWarning",function(a,b,c,d){var e=b.has("$animateCss")?b.get("$animateCss"):null;return{link:function(b,f,g){function h(){f.removeClass("collapse").addClass("collapsing").attr("aria-expanded",!0).attr("aria-hidden",!1),e?e(f,{addClass:"in",easing:"ease",to:{height:f[0].scrollHeight+"px"}}).start().done(i):a.addClass(f,"in",{to:{height:f[0].scrollHeight+"px"}}).then(i)}function i(){f.removeClass("collapsing").addClass("collapse").css({height:"auto"})}function j(){return f.hasClass("collapse")||f.hasClass("in")?(f.css({height:f[0].scrollHeight+"px"}).removeClass("collapse").addClass("collapsing").attr("aria-expanded",!1).attr("aria-hidden",!0),void(e?e(f,{removeClass:"in",to:{height:"0"}}).start().done(k):a.removeClass(f,"in",{to:{height:"0"}}).then(k))):k()}function k(){f.css({height:"0"}),f.removeClass("collapsing").addClass("collapse")}d||c.warn("collapse is now deprecated. Use uib-collapse instead."),b.$watch(g.collapse,function(a){a?j():h()})}}}]),angular.module("ui.bootstrap.accordion",["ui.bootstrap.collapse"]).constant("uibAccordionConfig",{closeOthers:!0}).controller("UibAccordionController",["$scope","$attrs","uibAccordionConfig",function(a,b,c){this.groups=[],this.closeOthers=function(d){var e=angular.isDefined(b.closeOthers)?a.$eval(b.closeOthers):c.closeOthers;e&&angular.forEach(this.groups,function(a){a!==d&&(a.isOpen=!1)})},this.addGroup=function(a){var b=this;this.groups.push(a),a.$on("$destroy",function(c){b.removeGroup(a)})},this.removeGroup=function(a){var b=this.groups.indexOf(a);-1!==b&&this.groups.splice(b,1)}}]).directive("uibAccordion",function(){return{controller:"UibAccordionController",controllerAs:"accordion",transclude:!0,templateUrl:function(a,b){return b.templateUrl||"template/accordion/accordion.html"}}}).directive("uibAccordionGroup",function(){return{require:"^uibAccordion",transclude:!0,replace:!0,templateUrl:function(a,b){return b.templateUrl||"template/accordion/accordion-group.html"},scope:{heading:"@",isOpen:"=?",isDisabled:"=?"},controller:function(){this.setHeading=function(a){this.heading=a}},link:function(a,b,c,d){d.addGroup(a),a.openClass=c.openClass||"panel-open",a.panelClass=c.panelClass,a.$watch("isOpen",function(c){b.toggleClass(a.openClass,!!c),c&&d.closeOthers(a)}),a.toggleOpen=function(b){a.isDisabled||b&&32!==b.which||(a.isOpen=!a.isOpen)}}}}).directive("uibAccordionHeading",function(){return{transclude:!0,template:"",replace:!0,require:"^uibAccordionGroup",link:function(a,b,c,d,e){d.setHeading(e(a,angular.noop))}}}).directive("uibAccordionTransclude",function(){return{require:["?^uibAccordionGroup","?^accordionGroup"],link:function(a,b,c,d){d=d[0]?d[0]:d[1],a.$watch(function(){return d[c.uibAccordionTransclude]},function(a){a&&(b.find("span").html(""),b.find("span").append(a))})}}}),angular.module("ui.bootstrap.accordion").value("$accordionSuppressWarning",!1).controller("AccordionController",["$scope","$attrs","$controller","$log","$accordionSuppressWarning",function(a,b,c,d,e){return e||d.warn("AccordionController is now deprecated. Use UibAccordionController instead."),c("UibAccordionController",{$scope:a,$attrs:b})}]).directive("accordion",["$log","$accordionSuppressWarning",function(a,b){return{restrict:"EA",controller:"AccordionController",controllerAs:"accordion",transclude:!0,replace:!1,templateUrl:function(a,b){return b.templateUrl||"template/accordion/accordion.html"},link:function(){b||a.warn("accordion is now deprecated. Use uib-accordion instead.")}}}]).directive("accordionGroup",["$log","$accordionSuppressWarning",function(a,b){return{require:"^accordion",restrict:"EA",transclude:!0,replace:!0,templateUrl:function(a,b){return b.templateUrl||"template/accordion/accordion-group.html"},scope:{heading:"@",isOpen:"=?",isDisabled:"=?"},controller:function(){this.setHeading=function(a){this.heading=a}},link:function(c,d,e,f){b||a.warn("accordion-group is now deprecated. Use uib-accordion-group instead."),f.addGroup(c),c.openClass=e.openClass||"panel-open",c.panelClass=e.panelClass,c.$watch("isOpen",function(a){d.toggleClass(c.openClass,!!a),a&&f.closeOthers(c)}),c.toggleOpen=function(a){c.isDisabled||a&&32!==a.which||(c.isOpen=!c.isOpen)}}}}]).directive("accordionHeading",["$log","$accordionSuppressWarning",function(a,b){return{restrict:"EA",transclude:!0,template:"",replace:!0,require:"^accordionGroup",link:function(c,d,e,f,g){b||a.warn("accordion-heading is now deprecated. Use uib-accordion-heading instead."),f.setHeading(g(c,angular.noop))}}}]).directive("accordionTransclude",["$log","$accordionSuppressWarning",function(a,b){return{require:"^accordionGroup",link:function(c,d,e,f){b||a.warn("accordion-transclude is now deprecated. Use uib-accordion-transclude instead."),c.$watch(function(){return f[e.accordionTransclude]},function(a){a&&(d.find("span").html(""),d.find("span").append(a))})}}}]),angular.module("ui.bootstrap.alert",[]).controller("UibAlertController",["$scope","$attrs","$timeout",function(a,b,c){a.closeable=!!b.close,angular.isDefined(b.dismissOnTimeout)&&c(function(){a.close()},parseInt(b.dismissOnTimeout,10))}]).directive("uibAlert",function(){return{controller:"UibAlertController",controllerAs:"alert",templateUrl:function(a,b){return b.templateUrl||"template/alert/alert.html"},transclude:!0,replace:!0,scope:{type:"@",close:"&"}}}),angular.module("ui.bootstrap.alert").value("$alertSuppressWarning",!1).controller("AlertController",["$scope","$attrs","$controller","$log","$alertSuppressWarning",function(a,b,c,d,e){return e||d.warn("AlertController is now deprecated. Use UibAlertController instead."),c("UibAlertController",{$scope:a,$attrs:b})}]).directive("alert",["$log","$alertSuppressWarning",function(a,b){return{controller:"AlertController",controllerAs:"alert",templateUrl:function(a,b){return b.templateUrl||"template/alert/alert.html"},transclude:!0,replace:!0,scope:{type:"@",close:"&"},link:function(){b||a.warn("alert is now deprecated. Use uib-alert instead.")}}}]),angular.module("ui.bootstrap.buttons",[]).constant("uibButtonConfig",{activeClass:"active",toggleEvent:"click"}).controller("UibButtonsController",["uibButtonConfig",function(a){this.activeClass=a.activeClass||"active",this.toggleEvent=a.toggleEvent||"click"}]).directive("uibBtnRadio",function(){return{require:["uibBtnRadio","ngModel"],controller:"UibButtonsController",controllerAs:"buttons",link:function(a,b,c,d){var e=d[0],f=d[1];b.find("input").css({display:"none"}),f.$render=function(){b.toggleClass(e.activeClass,angular.equals(f.$modelValue,a.$eval(c.uibBtnRadio)))},b.on(e.toggleEvent,function(){if(!c.disabled){var d=b.hasClass(e.activeClass);(!d||angular.isDefined(c.uncheckable))&&a.$apply(function(){f.$setViewValue(d?null:a.$eval(c.uibBtnRadio)),f.$render()})}})}}}).directive("uibBtnCheckbox",["$document",function(a){return{require:["uibBtnCheckbox","ngModel"],controller:"UibButtonsController",controllerAs:"button",link:function(b,c,d,e){function f(){return h(d.btnCheckboxTrue,!0)}function g(){return h(d.btnCheckboxFalse,!1)}function h(a,c){return angular.isDefined(a)?b.$eval(a):c}var i=e[0],j=e[1];c.find("input").css({display:"none"}),j.$render=function(){c.toggleClass(i.activeClass,angular.equals(j.$modelValue,f()))},c.on(i.toggleEvent,function(){d.disabled||b.$apply(function(){j.$setViewValue(c.hasClass(i.activeClass)?g():f()),j.$render()})}),c.on("keypress",function(e){d.disabled||32!==e.which||a[0].activeElement!==c[0]||b.$apply(function(){j.$setViewValue(c.hasClass(i.activeClass)?g():f()),j.$render()})})}}}]),angular.module("ui.bootstrap.buttons").value("$buttonsSuppressWarning",!1).controller("ButtonsController",["$controller","$log","$buttonsSuppressWarning",function(a,b,c){return c||b.warn("ButtonsController is now deprecated. Use UibButtonsController instead."),a("UibButtonsController")}]).directive("btnRadio",["$log","$buttonsSuppressWarning",function(a,b){return{require:["btnRadio","ngModel"],controller:"ButtonsController",controllerAs:"buttons",link:function(c,d,e,f){b||a.warn("btn-radio is now deprecated. Use uib-btn-radio instead.");var g=f[0],h=f[1];d.find("input").css({display:"none"}),h.$render=function(){d.toggleClass(g.activeClass,angular.equals(h.$modelValue,c.$eval(e.btnRadio)))},d.bind(g.toggleEvent,function(){if(!e.disabled){var a=d.hasClass(g.activeClass);(!a||angular.isDefined(e.uncheckable))&&c.$apply(function(){h.$setViewValue(a?null:c.$eval(e.btnRadio)),h.$render()})}})}}}]).directive("btnCheckbox",["$document","$log","$buttonsSuppressWarning",function(a,b,c){return{require:["btnCheckbox","ngModel"],controller:"ButtonsController",controllerAs:"button",link:function(d,e,f,g){function h(){return j(f.btnCheckboxTrue,!0)}function i(){return j(f.btnCheckboxFalse,!1)}function j(a,b){var c=d.$eval(a);return angular.isDefined(c)?c:b}c||b.warn("btn-checkbox is now deprecated. Use uib-btn-checkbox instead.");var k=g[0],l=g[1];e.find("input").css({display:"none"}),l.$render=function(){e.toggleClass(k.activeClass,angular.equals(l.$modelValue,h()))},e.bind(k.toggleEvent,function(){f.disabled||d.$apply(function(){l.$setViewValue(e.hasClass(k.activeClass)?i():h()),l.$render()})}),e.on("keypress",function(b){f.disabled||32!==b.which||a[0].activeElement!==e[0]||d.$apply(function(){l.$setViewValue(e.hasClass(k.activeClass)?i():h()),l.$render()})})}}}]),angular.module("ui.bootstrap.carousel",[]).controller("UibCarouselController",["$scope","$element","$interval","$animate",function(a,b,c,d){function e(b,c,e){s||(angular.extend(b,{direction:e,active:!0}),angular.extend(m.currentSlide||{},{direction:e,active:!1}),d.enabled()&&!a.noTransition&&!a.$currentTransition&&b.$element&&m.slides.length>1&&(b.$element.data(q,b.direction),m.currentSlide&&m.currentSlide.$element&&m.currentSlide.$element.data(q,b.direction),a.$currentTransition=!0,o?d.on("addClass",b.$element,function(b,c){"close"===c&&(a.$currentTransition=null,d.off("addClass",b))}):b.$element.one("$animate:close",function(){a.$currentTransition=null})),m.currentSlide=b,r=c,g())}function f(a){if(angular.isUndefined(n[a].index))return n[a];var b;n.length;for(b=0;b<n.length;++b)if(n[b].index==a)return n[b]}function g(){h();var b=+a.interval;!isNaN(b)&&b>0&&(k=c(i,b))}function h(){k&&(c.cancel(k),k=null)}function i(){var b=+a.interval;l&&!isNaN(b)&&b>0&&n.length?a.next():a.pause()}function j(b){b.length||(a.$currentTransition=null)}var k,l,m=this,n=m.slides=a.slides=[],o=angular.version.minor>=4,p="uib-noTransition",q="uib-slideDirection",r=-1;m.currentSlide=null;var s=!1;m.select=a.select=function(b,c){var d=a.indexOfSlide(b);void 0===c&&(c=d>m.getCurrentIndex()?"next":"prev"),b&&b!==m.currentSlide&&!a.$currentTransition&&e(b,d,c)},a.$on("$destroy",function(){s=!0}),m.getCurrentIndex=function(){return m.currentSlide&&angular.isDefined(m.currentSlide.index)?+m.currentSlide.index:r},a.indexOfSlide=function(a){return angular.isDefined(a.index)?+a.index:n.indexOf(a)},a.next=function(){var b=(m.getCurrentIndex()+1)%n.length;return 0===b&&a.noWrap()?void a.pause():m.select(f(b),"next")},a.prev=function(){var b=m.getCurrentIndex()-1<0?n.length-1:m.getCurrentIndex()-1;return a.noWrap()&&b===n.length-1?void a.pause():m.select(f(b),"prev")},a.isActive=function(a){return m.currentSlide===a},a.$watch("interval",g),a.$watchCollection("slides",j),a.$on("$destroy",h),a.play=function(){l||(l=!0,g())},a.pause=function(){a.noPause||(l=!1,h())},m.addSlide=function(b,c){b.$element=c,n.push(b),1===n.length||b.active?(m.select(n[n.length-1]),1===n.length&&a.play()):b.active=!1},m.removeSlide=function(a){angular.isDefined(a.index)&&n.sort(function(a,b){return+a.index>+b.index});var b=n.indexOf(a);n.splice(b,1),n.length>0&&a.active?b>=n.length?m.select(n[b-1]):m.select(n[b]):r>b&&r--,0===n.length&&(m.currentSlide=null)},a.$watch("noTransition",function(a){b.data(p,a)})}]).directive("uibCarousel",[function(){return{transclude:!0,replace:!0,controller:"UibCarouselController",controllerAs:"carousel",require:"carousel",templateUrl:function(a,b){return b.templateUrl||"template/carousel/carousel.html"},scope:{interval:"=",noTransition:"=",noPause:"=",noWrap:"&"}}}]).directive("uibSlide",function(){return{require:"^uibCarousel",restrict:"EA",transclude:!0,replace:!0,templateUrl:function(a,b){return b.templateUrl||"template/carousel/slide.html"},scope:{active:"=?",actual:"=?",index:"=?"},link:function(a,b,c,d){d.addSlide(a,b),a.$on("$destroy",function(){d.removeSlide(a)}),a.$watch("active",function(b){b&&d.select(a)})}}}).animation(".item",["$injector","$animate",function(a,b){function c(a,b,c){a.removeClass(b),c&&c()}var d="uib-noTransition",e="uib-slideDirection",f=null;return a.has("$animateCss")&&(f=a.get("$animateCss")),{beforeAddClass:function(a,g,h){if("active"==g&&a.parent()&&a.parent().parent()&&!a.parent().parent().data(d)){var i=!1,j=a.data(e),k="next"==j?"left":"right",l=c.bind(this,a,k+" "+j,h);return a.addClass(j),f?f(a,{addClass:k}).start().done(l):b.addClass(a,k).then(function(){i||l(),h()}),function(){i=!0}}h()},beforeRemoveClass:function(a,g,h){if("active"===g&&a.parent()&&a.parent().parent()&&!a.parent().parent().data(d)){var i=!1,j=a.data(e),k="next"==j?"left":"right",l=c.bind(this,a,k,h);return f?f(a,{addClass:k}).start().done(l):b.addClass(a,k).then(function(){i||l(),h()}),function(){i=!0}}h()}}}]),angular.module("ui.bootstrap.carousel").value("$carouselSuppressWarning",!1).controller("CarouselController",["$scope","$element","$controller","$log","$carouselSuppressWarning",function(a,b,c,d,e){return e||d.warn("CarouselController is now deprecated. Use UibCarouselController instead."),c("UibCarouselController",{$scope:a,$element:b})}]).directive("carousel",["$log","$carouselSuppressWarning",function(a,b){return{transclude:!0,replace:!0,controller:"CarouselController",controllerAs:"carousel",require:"carousel",templateUrl:function(a,b){return b.templateUrl||"template/carousel/carousel.html"},scope:{interval:"=",noTransition:"=",noPause:"=",noWrap:"&"},link:function(){b||a.warn("carousel is now deprecated. Use uib-carousel instead.")}}}]).directive("slide",["$log","$carouselSuppressWarning",function(a,b){return{require:"^carousel",transclude:!0,replace:!0,templateUrl:function(a,b){return b.templateUrl||"template/carousel/slide.html"},scope:{active:"=?",actual:"=?",index:"=?"},link:function(c,d,e,f){b||a.warn("slide is now deprecated. Use uib-slide instead."),f.addSlide(c,d),c.$on("$destroy",function(){f.removeSlide(c)}),c.$watch("active",function(a){a&&f.select(c)})}}}]),angular.module("ui.bootstrap.dateparser",[]).service("uibDateParser",["$log","$locale","orderByFilter",function(a,b,c){function d(a){var b=[],d=a.split("");return angular.forEach(g,function(c,e){var f=a.indexOf(e);if(f>-1){a=a.split(""),d[f]="("+c.regex+")",a[f]="$";for(var g=f+1,h=f+e.length;h>g;g++)d[g]="",a[g]="$";a=a.join(""),b.push({index:f,apply:c.apply})}}),{regex:new RegExp("^"+d.join("")+"$"),map:c(b,"index")}}function e(a,b,c){return 1>c?!1:1===b&&c>28?29===c&&(a%4===0&&a%100!==0||a%400===0):3===b||5===b||8===b||10===b?31>c:!0}var f,g,h=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g;this.init=function(){f=b.id,this.parsers={},g={yyyy:{regex:"\\d{4}",apply:function(a){this.year=+a}},yy:{regex:"\\d{2}",apply:function(a){this.year=+a+2e3}},y:{regex:"\\d{1,4}",apply:function(a){this.year=+a}},MMMM:{regex:b.DATETIME_FORMATS.MONTH.join("|"),apply:function(a){this.month=b.DATETIME_FORMATS.MONTH.indexOf(a)}},MMM:{regex:b.DATETIME_FORMATS.SHORTMONTH.join("|"),apply:function(a){this.month=b.DATETIME_FORMATS.SHORTMONTH.indexOf(a)}},MM:{regex:"0[1-9]|1[0-2]",apply:function(a){this.month=a-1}},M:{regex:"[1-9]|1[0-2]",apply:function(a){this.month=a-1}},dd:{regex:"[0-2][0-9]{1}|3[0-1]{1}",apply:function(a){this.date=+a}},d:{regex:"[1-2]?[0-9]{1}|3[0-1]{1}",apply:function(a){this.date=+a}},EEEE:{regex:b.DATETIME_FORMATS.DAY.join("|")},EEE:{regex:b.DATETIME_FORMATS.SHORTDAY.join("|")},HH:{regex:"(?:0|1)[0-9]|2[0-3]",apply:function(a){this.hours=+a}},hh:{regex:"0[0-9]|1[0-2]",apply:function(a){this.hours=+a}},H:{regex:"1?[0-9]|2[0-3]",apply:function(a){this.hours=+a}},h:{regex:"[0-9]|1[0-2]",apply:function(a){this.hours=+a}},mm:{regex:"[0-5][0-9]",apply:function(a){this.minutes=+a}},m:{regex:"[0-9]|[1-5][0-9]",apply:function(a){this.minutes=+a}},sss:{regex:"[0-9][0-9][0-9]",apply:function(a){this.milliseconds=+a}},ss:{regex:"[0-5][0-9]",apply:function(a){this.seconds=+a}},s:{regex:"[0-9]|[1-5][0-9]",apply:function(a){this.seconds=+a}},a:{regex:b.DATETIME_FORMATS.AMPMS.join("|"),apply:function(a){12===this.hours&&(this.hours=0),"PM"===a&&(this.hours+=12)}}}},this.init(),this.parse=function(c,g,i){if(!angular.isString(c)||!g)return c;g=b.DATETIME_FORMATS[g]||g,g=g.replace(h,"\\$&"),b.id!==f&&this.init(),this.parsers[g]||(this.parsers[g]=d(g));var j=this.parsers[g],k=j.regex,l=j.map,m=c.match(k);if(m&&m.length){var n,o;angular.isDate(i)&&!isNaN(i.getTime())?n={year:i.getFullYear(),month:i.getMonth(),date:i.getDate(),hours:i.getHours(),minutes:i.getMinutes(),seconds:i.getSeconds(),milliseconds:i.getMilliseconds()}:(i&&a.warn("dateparser:","baseDate is not a valid date"),n={year:1900,month:0,date:1,hours:0,minutes:0,seconds:0,milliseconds:0});for(var p=1,q=m.length;q>p;p++){var r=l[p-1];r.apply&&r.apply.call(n,m[p])}return e(n.year,n.month,n.date)&&(o=new Date(n.year,n.month,n.date,n.hours,n.minutes,n.seconds,n.milliseconds||0)),o}}}]),angular.module("ui.bootstrap.dateparser").value("$dateParserSuppressWarning",!1).service("dateParser",["$log","$dateParserSuppressWarning","uibDateParser",function(a,b,c){b||a.warn("dateParser is now deprecated. Use uibDateParser instead."),angular.extend(this,c)}]),angular.module("ui.bootstrap.position",[]).factory("$uibPosition",["$document","$window",function(a,b){function c(a,c){return a.currentStyle?a.currentStyle[c]:b.getComputedStyle?b.getComputedStyle(a)[c]:a.style[c]}function d(a){return"static"===(c(a,"position")||"static")}var e=function(b){for(var c=a[0],e=b.offsetParent||c;e&&e!==c&&d(e);)e=e.offsetParent;return e||c};return{position:function(b){var c=this.offset(b),d={top:0,left:0},f=e(b[0]);f!=a[0]&&(d=this.offset(angular.element(f)),d.top+=f.clientTop-f.scrollTop,d.left+=f.clientLeft-f.scrollLeft);var g=b[0].getBoundingClientRect();return{width:g.width||b.prop("offsetWidth"),height:g.height||b.prop("offsetHeight"),top:c.top-d.top,left:c.left-d.left}},offset:function(c){var d=c[0].getBoundingClientRect();return{width:d.width||c.prop("offsetWidth"),height:d.height||c.prop("offsetHeight"),top:d.top+(b.pageYOffset||a[0].documentElement.scrollTop),left:d.left+(b.pageXOffset||a[0].documentElement.scrollLeft)}},positionElements:function(a,b,c,d){var e,f,g,h,i=c.split("-"),j=i[0],k=i[1]||"center";e=d?this.offset(a):this.position(a),f=b.prop("offsetWidth"),g=b.prop("offsetHeight");var l={center:function(){return e.left+e.width/2-f/2},left:function(){return e.left},right:function(){return e.left+e.width}},m={center:function(){return e.top+e.height/2-g/2},top:function(){return e.top},bottom:function(){return e.top+e.height}};switch(j){case"right":h={top:m[k](),left:l[j]()};break;case"left":h={top:m[k](),left:e.left-f};break;case"bottom":h={top:m[j](),left:l[k]()};break;default:h={top:e.top-g,left:l[k]()}}return h}}}]),angular.module("ui.bootstrap.position").value("$positionSuppressWarning",!1).service("$position",["$log","$positionSuppressWarning","$uibPosition",function(a,b,c){b||a.warn("$position is now deprecated. Use $uibPosition instead."),angular.extend(this,c)}]),angular.module("ui.bootstrap.datepicker",["ui.bootstrap.dateparser","ui.bootstrap.position"]).value("$datepickerSuppressError",!1).constant("uibDatepickerConfig",{formatDay:"dd",formatMonth:"MMMM",formatYear:"yyyy",formatDayHeader:"EEE",formatDayTitle:"MMMM yyyy",formatMonthTitle:"yyyy",datepickerMode:"day",minMode:"day",maxMode:"year",showWeeks:!0,startingDay:0,yearRange:20,minDate:null,maxDate:null,shortcutPropagation:!1}).controller("UibDatepickerController",["$scope","$attrs","$parse","$interpolate","$log","dateFilter","uibDatepickerConfig","$datepickerSuppressError",function(a,b,c,d,e,f,g,h){var i=this,j={$setViewValue:angular.noop};this.modes=["day","month","year"],angular.forEach(["formatDay","formatMonth","formatYear","formatDayHeader","formatDayTitle","formatMonthTitle","showWeeks","startingDay","yearRange","shortcutPropagation"],function(c,e){i[c]=angular.isDefined(b[c])?6>e?d(b[c])(a.$parent):a.$parent.$eval(b[c]):g[c]}),angular.forEach(["minDate","maxDate"],function(d){b[d]?a.$parent.$watch(c(b[d]),function(a){i[d]=a?new Date(a):null,i.refreshView()}):i[d]=g[d]?new Date(g[d]):null}),angular.forEach(["minMode","maxMode"],function(d){b[d]?a.$parent.$watch(c(b[d]),function(c){i[d]=angular.isDefined(c)?c:b[d],a[d]=i[d],("minMode"==d&&i.modes.indexOf(a.datepickerMode)<i.modes.indexOf(i[d])||"maxMode"==d&&i.modes.indexOf(a.datepickerMode)>i.modes.indexOf(i[d]))&&(a.datepickerMode=i[d])}):(i[d]=g[d]||null,a[d]=i[d])}),a.datepickerMode=a.datepickerMode||g.datepickerMode,a.uniqueId="datepicker-"+a.$id+"-"+Math.floor(1e4*Math.random()),angular.isDefined(b.initDate)?(this.activeDate=a.$parent.$eval(b.initDate)||new Date,a.$parent.$watch(b.initDate,function(a){a&&(j.$isEmpty(j.$modelValue)||j.$invalid)&&(i.activeDate=a,i.refreshView())})):this.activeDate=new Date,a.isActive=function(b){return 0===i.compare(b.date,i.activeDate)?(a.activeDateId=b.uid,!0):!1},this.init=function(a){j=a,j.$render=function(){i.render()}},this.render=function(){if(j.$viewValue){var a=new Date(j.$viewValue),b=!isNaN(a);b?this.activeDate=a:h||e.error('Datepicker directive: "ng-model" value must be a Date object, a number of milliseconds since 01.01.1970 or a string representing an RFC2822 or ISO 8601 date.')}this.refreshView()},this.refreshView=function(){if(this.element){this._refreshView();var a=j.$viewValue?new Date(j.$viewValue):null;j.$setValidity("dateDisabled",!a||this.element&&!this.isDisabled(a))}},this.createDateObject=function(a,b){var c=j.$viewValue?new Date(j.$viewValue):null;return{date:a,label:f(a,b),selected:c&&0===this.compare(a,c),disabled:this.isDisabled(a),current:0===this.compare(a,new Date),customClass:this.customClass(a)}},this.isDisabled=function(c){return this.minDate&&this.compare(c,this.minDate)<0||this.maxDate&&this.compare(c,this.maxDate)>0||b.dateDisabled&&a.dateDisabled({date:c,mode:a.datepickerMode})},this.customClass=function(b){return a.customClass({date:b,mode:a.datepickerMode})},this.split=function(a,b){for(var c=[];a.length>0;)c.push(a.splice(0,b));return c},this.fixTimeZone=function(a){var b=a.getHours();a.setHours(23===b?b+2:0)},a.select=function(b){if(a.datepickerMode===i.minMode){var c=j.$viewValue?new Date(j.$viewValue):new Date(0,0,0,0,0,0,0);c.setFullYear(b.getFullYear(),b.getMonth(),b.getDate()),j.$setViewValue(c),j.$render()}else i.activeDate=b,a.datepickerMode=i.modes[i.modes.indexOf(a.datepickerMode)-1]},a.move=function(a){var b=i.activeDate.getFullYear()+a*(i.step.years||0),c=i.activeDate.getMonth()+a*(i.step.months||0);i.activeDate.setFullYear(b,c,1),i.refreshView()},a.toggleMode=function(b){b=b||1,a.datepickerMode===i.maxMode&&1===b||a.datepickerMode===i.minMode&&-1===b||(a.datepickerMode=i.modes[i.modes.indexOf(a.datepickerMode)+b])},a.keys={13:"enter",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down"};var k=function(){i.element[0].focus()};a.$on("uib:datepicker.focus",k),a.keydown=function(b){var c=a.keys[b.which];if(c&&!b.shiftKey&&!b.altKey)if(b.preventDefault(),i.shortcutPropagation||b.stopPropagation(),"enter"===c||"space"===c){if(i.isDisabled(i.activeDate))return;a.select(i.activeDate)}else!b.ctrlKey||"up"!==c&&"down"!==c?(i.handleKeyDown(c,b),i.refreshView()):a.toggleMode("up"===c?1:-1)}}]).controller("UibDaypickerController",["$scope","$element","dateFilter",function(a,b,c){function d(a,b){return 1!==b||a%4!==0||a%100===0&&a%400!==0?f[b]:29}function e(a){var b=new Date(a);b.setDate(b.getDate()+4-(b.getDay()||7));var c=b.getTime();return b.setMonth(0),b.setDate(1),Math.floor(Math.round((c-b)/864e5)/7)+1}var f=[31,28,31,30,31,30,31,31,30,31,30,31];this.step={months:1},this.element=b,this.init=function(b){angular.extend(b,this),a.showWeeks=b.showWeeks,b.refreshView()},this.getDates=function(a,b){for(var c,d=new Array(b),e=new Date(a),f=0;b>f;)c=new Date(e),this.fixTimeZone(c),d[f++]=c,e.setDate(e.getDate()+1);return d},this._refreshView=function(){var b=this.activeDate.getFullYear(),d=this.activeDate.getMonth(),f=new Date(b,d,1),g=this.startingDay-f.getDay(),h=g>0?7-g:-g,i=new Date(f);h>0&&i.setDate(-h+1);for(var j=this.getDates(i,42),k=0;42>k;k++)j[k]=angular.extend(this.createDateObject(j[k],this.formatDay),{secondary:j[k].getMonth()!==d,uid:a.uniqueId+"-"+k});a.labels=new Array(7);for(var l=0;7>l;l++)a.labels[l]={abbr:c(j[l].date,this.formatDayHeader),full:c(j[l].date,"EEEE")};if(a.title=c(this.activeDate,this.formatDayTitle),a.rows=this.split(j,7),a.showWeeks){a.weekNumbers=[];for(var m=(11-this.startingDay)%7,n=a.rows.length,o=0;n>o;o++)a.weekNumbers.push(e(a.rows[o][m].date))}},this.compare=function(a,b){return new Date(a.getFullYear(),a.getMonth(),a.getDate())-new Date(b.getFullYear(),b.getMonth(),b.getDate())},this.handleKeyDown=function(a,b){var c=this.activeDate.getDate();if("left"===a)c-=1;else if("up"===a)c-=7;else if("right"===a)c+=1;else if("down"===a)c+=7;else if("pageup"===a||"pagedown"===a){var e=this.activeDate.getMonth()+("pageup"===a?-1:1);this.activeDate.setMonth(e,1),c=Math.min(d(this.activeDate.getFullYear(),this.activeDate.getMonth()),c)}else"home"===a?c=1:"end"===a&&(c=d(this.activeDate.getFullYear(),this.activeDate.getMonth()));this.activeDate.setDate(c)}}]).controller("UibMonthpickerController",["$scope","$element","dateFilter",function(a,b,c){this.step={years:1},this.element=b,this.init=function(a){angular.extend(a,this),a.refreshView()},this._refreshView=function(){for(var b,d=new Array(12),e=this.activeDate.getFullYear(),f=0;12>f;f++)b=new Date(e,f,1),this.fixTimeZone(b),d[f]=angular.extend(this.createDateObject(b,this.formatMonth),{uid:a.uniqueId+"-"+f});a.title=c(this.activeDate,this.formatMonthTitle),a.rows=this.split(d,3)},this.compare=function(a,b){return new Date(a.getFullYear(),a.getMonth())-new Date(b.getFullYear(),b.getMonth())},this.handleKeyDown=function(a,b){var c=this.activeDate.getMonth();if("left"===a)c-=1;else if("up"===a)c-=3;else if("right"===a)c+=1;else if("down"===a)c+=3;else if("pageup"===a||"pagedown"===a){var d=this.activeDate.getFullYear()+("pageup"===a?-1:1);this.activeDate.setFullYear(d)}else"home"===a?c=0:"end"===a&&(c=11);this.activeDate.setMonth(c)}}]).controller("UibYearpickerController",["$scope","$element","dateFilter",function(a,b,c){function d(a){return parseInt((a-1)/e,10)*e+1}var e;this.element=b,this.yearpickerInit=function(){e=this.yearRange,this.step={years:e}},this._refreshView=function(){for(var b,c=new Array(e),f=0,g=d(this.activeDate.getFullYear());e>f;f++)b=new Date(g+f,0,1),this.fixTimeZone(b),c[f]=angular.extend(this.createDateObject(b,this.formatYear),{uid:a.uniqueId+"-"+f});a.title=[c[0].label,c[e-1].label].join(" - "),a.rows=this.split(c,5)},this.compare=function(a,b){return a.getFullYear()-b.getFullYear()},this.handleKeyDown=function(a,b){var c=this.activeDate.getFullYear();"left"===a?c-=1:"up"===a?c-=5:"right"===a?c+=1:"down"===a?c+=5:"pageup"===a||"pagedown"===a?c+=("pageup"===a?-1:1)*this.step.years:"home"===a?c=d(this.activeDate.getFullYear()):"end"===a&&(c=d(this.activeDate.getFullYear())+e-1),this.activeDate.setFullYear(c)}}]).directive("uibDatepicker",function(){return{replace:!0,templateUrl:function(a,b){return b.templateUrl||"template/datepicker/datepicker.html"},scope:{datepickerMode:"=?",dateDisabled:"&",customClass:"&",shortcutPropagation:"&?"},require:["uibDatepicker","^ngModel"],controller:"UibDatepickerController",controllerAs:"datepicker",link:function(a,b,c,d){var e=d[0],f=d[1];e.init(f)}}}).directive("uibDaypicker",function(){return{replace:!0,templateUrl:"template/datepicker/day.html",require:["^?uibDatepicker","uibDaypicker","^?datepicker"],controller:"UibDaypickerController",link:function(a,b,c,d){var e=d[0]||d[2],f=d[1];f.init(e)}}}).directive("uibMonthpicker",function(){return{replace:!0,templateUrl:"template/datepicker/month.html",require:["^?uibDatepicker","uibMonthpicker","^?datepicker"],controller:"UibMonthpickerController",link:function(a,b,c,d){var e=d[0]||d[2],f=d[1];f.init(e)}}}).directive("uibYearpicker",function(){return{replace:!0,templateUrl:"template/datepicker/year.html",require:["^?uibDatepicker","uibYearpicker","^?datepicker"],controller:"UibYearpickerController",link:function(a,b,c,d){var e=d[0]||d[2];angular.extend(e,d[1]),e.yearpickerInit(),e.refreshView()}}}).constant("uibDatepickerPopupConfig",{datepickerPopup:"yyyy-MM-dd",datepickerPopupTemplateUrl:"template/datepicker/popup.html",datepickerTemplateUrl:"template/datepicker/datepicker.html",html5Types:{date:"yyyy-MM-dd","datetime-local":"yyyy-MM-ddTHH:mm:ss.sss",month:"yyyy-MM"},currentText:"今日",clearText:"清除",closeText:"关闭",closeOnDateSelection:!0,appendToBody:!1,showButtonBar:!0,onOpenFocus:!0}).controller("UibDatepickerPopupController",["$scope","$element","$attrs","$compile","$parse","$document","$rootScope","$uibPosition","dateFilter","uibDateParser","uibDatepickerPopupConfig","$timeout",function(a,b,c,d,e,f,g,h,i,j,k,l){function m(a){return a.replace(/([A-Z])/g,function(a){
9 return"-"+a.toLowerCase()})}function n(b){if(angular.isNumber(b)&&(b=new Date(b)),b){if(angular.isDate(b)&&!isNaN(b))return b;if(angular.isString(b)){var c=j.parse(b,r,a.date);return isNaN(c)?void 0:c}return void 0}return null}function o(a,b){var d=a||b;if(!c.ngRequired&&!d)return!0;if(angular.isNumber(d)&&(d=new Date(d)),d){if(angular.isDate(d)&&!isNaN(d))return!0;if(angular.isString(d)){var e=j.parse(d,r);return!isNaN(e)}return!1}return!0}function p(c){var d=A[0],e=b[0].contains(c.target),f=void 0!==d.contains&&d.contains(c.target);!a.isOpen||e||f||a.$apply(function(){a.isOpen=!1})}function q(c){27===c.which&&a.isOpen?(c.preventDefault(),c.stopPropagation(),a.$apply(function(){a.isOpen=!1}),b[0].focus()):40!==c.which||a.isOpen||(c.preventDefault(),c.stopPropagation(),a.$apply(function(){a.isOpen=!0}))}var r,s,t,u,v,w,x,y,z,A,B={},C=!1;a.watchData={},this.init=function(h){if(z=h,s=angular.isDefined(c.closeOnDateSelection)?a.$parent.$eval(c.closeOnDateSelection):k.closeOnDateSelection,t=angular.isDefined(c.datepickerAppendToBody)?a.$parent.$eval(c.datepickerAppendToBody):k.appendToBody,u=angular.isDefined(c.onOpenFocus)?a.$parent.$eval(c.onOpenFocus):k.onOpenFocus,v=angular.isDefined(c.datepickerPopupTemplateUrl)?c.datepickerPopupTemplateUrl:k.datepickerPopupTemplateUrl,w=angular.isDefined(c.datepickerTemplateUrl)?c.datepickerTemplateUrl:k.datepickerTemplateUrl,a.showButtonBar=angular.isDefined(c.showButtonBar)?a.$parent.$eval(c.showButtonBar):k.showButtonBar,k.html5Types[c.type]?(r=k.html5Types[c.type],C=!0):(r=c.datepickerPopup||k.datepickerPopup,c.$observe("uibDatepickerPopup",function(a,b){var c=a||k.datepickerPopup;if(c!==r&&(r=c,z.$modelValue=null,!r))throw new Error("uibDatepickerPopup must have a date format specified.")})),!r)throw new Error("uibDatepickerPopup must have a date format specified.");if(C&&c.datepickerPopup)throw new Error("HTML5 date input types do not support custom formats.");if(x=angular.element("<div uib-datepicker-popup-wrap><div uib-datepicker></div></div>"),x.attr({"ng-model":"date","ng-change":"dateSelection(date)","template-url":v}),y=angular.element(x.children()[0]),y.attr("template-url",w),C&&"month"===c.type&&(y.attr("datepicker-mode",'"month"'),y.attr("min-mode","month")),c.datepickerOptions){var l=a.$parent.$eval(c.datepickerOptions);l&&l.initDate&&(a.initDate=l.initDate,y.attr("init-date","initDate"),delete l.initDate),angular.forEach(l,function(a,b){y.attr(m(b),a)})}angular.forEach(["minMode","maxMode","minDate","maxDate","datepickerMode","initDate","shortcutPropagation"],function(b){if(c[b]){var d=e(c[b]);if(a.$parent.$watch(d,function(c){a.watchData[b]=c,("minDate"===b||"maxDate"===b)&&(B[b]=new Date(c))}),y.attr(m(b),"watchData."+b),"datepickerMode"===b){var f=d.assign;a.$watch("watchData."+b,function(b,c){angular.isFunction(f)&&b!==c&&f(a.$parent,b)})}}}),c.dateDisabled&&y.attr("date-disabled","dateDisabled({ date: date, mode: mode })"),c.showWeeks&&y.attr("show-weeks",c.showWeeks),c.customClass&&y.attr("custom-class","customClass({ date: date, mode: mode })"),C?z.$formatters.push(function(b){return a.date=b,b}):(z.$$parserName="date",z.$validators.date=o,z.$parsers.unshift(n),z.$formatters.push(function(b){return a.date=b,z.$isEmpty(b)?b:i(b,r)})),z.$viewChangeListeners.push(function(){a.date=j.parse(z.$viewValue,r,a.date)}),b.bind("keydown",q),A=d(x)(a),x.remove(),t?f.find("body").append(A):b.after(A),a.$on("$destroy",function(){a.isOpen===!0&&(g.$$phase||a.$apply(function(){a.isOpen=!1})),A.remove(),b.unbind("keydown",q),f.unbind("click",p)})},a.getText=function(b){return a[b+"Text"]||k[b+"Text"]},a.isDisabled=function(b){return"today"===b&&(b=new Date),a.watchData.minDate&&a.compare(b,B.minDate)<0||a.watchData.maxDate&&a.compare(b,B.maxDate)>0},a.compare=function(a,b){return new Date(a.getFullYear(),a.getMonth(),a.getDate())-new Date(b.getFullYear(),b.getMonth(),b.getDate())},a.dateSelection=function(c){angular.isDefined(c)&&(a.date=c);var d=a.date?i(a.date,r):null;b.val(d),z.$setViewValue(d),s&&(a.isOpen=!1,b[0].focus())},a.keydown=function(c){27===c.which&&(a.isOpen=!1,b[0].focus())},a.select=function(b){if("today"===b){var c=new Date;angular.isDate(a.date)?(b=new Date(a.date),b.setFullYear(c.getFullYear(),c.getMonth(),c.getDate())):b=new Date(c.setHours(0,0,0,0))}a.dateSelection(b)},a.close=function(){a.isOpen=!1,b[0].focus()},a.$watch("isOpen",function(c){c?(a.position=t?h.offset(b):h.position(b),a.position.top=a.position.top+b.prop("offsetHeight"),l(function(){u&&a.$broadcast("uib:datepicker.focus"),f.bind("click",p)},0,!1)):f.unbind("click",p)})}]).directive("uibDatepickerPopup",function(){return{require:["ngModel","uibDatepickerPopup"],controller:"UibDatepickerPopupController",scope:{isOpen:"=?",currentText:"@",clearText:"@",closeText:"@",dateDisabled:"&",customClass:"&"},link:function(a,b,c,d){var e=d[0],f=d[1];f.init(e)}}}).directive("uibDatepickerPopupWrap",function(){return{replace:!0,transclude:!0,templateUrl:function(a,b){return b.templateUrl||"template/datepicker/popup.html"}}}),angular.module("ui.bootstrap.datepicker").value("$datepickerSuppressWarning",!1).controller("DatepickerController",["$scope","$attrs","$log","$datepickerSuppressWarning","$controller",function(a,b,c,d,e){return d||c.warn("DatepickerController is now deprecated. Use UibDatepickerController instead."),e("UibDatepickerController",{$scope:a,$attrs:b})}]).directive("datepicker",["$log","$datepickerSuppressWarning",function(a,b){return{replace:!0,templateUrl:function(a,b){return b.templateUrl||"template/datepicker/datepicker.html"},scope:{datepickerMode:"=?",dateDisabled:"&",customClass:"&",shortcutPropagation:"&?"},require:["datepicker","^ngModel"],controller:"DatepickerController",controllerAs:"datepicker",link:function(c,d,e,f){b||a.warn("datepicker is now deprecated. Use uib-datepicker instead.");var g=f[0],h=f[1];g.init(h)}}}]).directive("daypicker",["$log","$datepickerSuppressWarning",function(a,b){return{replace:!0,templateUrl:"template/datepicker/day.html",require:["^datepicker","daypicker"],controller:"UibDaypickerController",link:function(c,d,e,f){b||a.warn("daypicker is now deprecated. Use uib-daypicker instead.");var g=f[0],h=f[1];h.init(g)}}}]).directive("monthpicker",["$log","$datepickerSuppressWarning",function(a,b){return{replace:!0,templateUrl:"template/datepicker/month.html",require:["^datepicker","monthpicker"],controller:"UibMonthpickerController",link:function(c,d,e,f){b||a.warn("monthpicker is now deprecated. Use uib-monthpicker instead.");var g=f[0],h=f[1];h.init(g)}}}]).directive("yearpicker",["$log","$datepickerSuppressWarning",function(a,b){return{replace:!0,templateUrl:"template/datepicker/year.html",require:["^datepicker","yearpicker"],controller:"UibYearpickerController",link:function(c,d,e,f){b||a.warn("yearpicker is now deprecated. Use uib-yearpicker instead.");var g=f[0];angular.extend(g,f[1]),g.yearpickerInit(),g.refreshView()}}}]).directive("datepickerPopup",["$log","$datepickerSuppressWarning",function(a,b){return{require:["ngModel","datepickerPopup"],controller:"UibDatepickerPopupController",scope:{isOpen:"=?",currentText:"@",clearText:"@",closeText:"@",dateDisabled:"&",customClass:"&"},link:function(c,d,e,f){b||a.warn("datepicker-popup is now deprecated. Use uib-datepicker-popup instead.");var g=f[0],h=f[1];h.init(g)}}}]).directive("datepickerPopupWrap",["$log","$datepickerSuppressWarning",function(a,b){return{replace:!0,transclude:!0,templateUrl:function(a,b){return b.templateUrl||"template/datepicker/popup.html"},link:function(){b||a.warn("datepicker-popup-wrap is now deprecated. Use uib-datepicker-popup-wrap instead.")}}}]),angular.module("ui.bootstrap.dropdown",["ui.bootstrap.position"]).constant("uibDropdownConfig",{openClass:"open"}).service("uibDropdownService",["$document","$rootScope",function(a,b){var c=null;this.open=function(b){c||(a.bind("click",d),a.bind("keydown",e)),c&&c!==b&&(c.isOpen=!1),c=b},this.close=function(b){c===b&&(c=null,a.unbind("click",d),a.unbind("keydown",e))};var d=function(a){if(c&&(!a||"disabled"!==c.getAutoClose())){var d=c.getToggleElement();if(!(a&&d&&d[0].contains(a.target))){var e=c.getDropdownElement();a&&"outsideClick"===c.getAutoClose()&&e&&e[0].contains(a.target)||(c.isOpen=!1,b.$$phase||c.$apply())}}},e=function(a){27===a.which?(c.focusToggleElement(),d()):c.isKeynavEnabled()&&/(38|40)/.test(a.which)&&c.isOpen&&(a.preventDefault(),a.stopPropagation(),c.focusDropdownEntry(a.which))}}]).controller("UibDropdownController",["$scope","$element","$attrs","$parse","uibDropdownConfig","uibDropdownService","$animate","$uibPosition","$document","$compile","$templateRequest",function(a,b,c,d,e,f,g,h,i,j,k){var l,m,n=this,o=a.$new(),p=e.openClass,q=angular.noop,r=c.onToggle?d(c.onToggle):angular.noop,s=!1,t=!1;b.addClass("dropdown"),this.init=function(){c.isOpen&&(m=d(c.isOpen),q=m.assign,a.$watch(m,function(a){o.isOpen=!!a})),s=angular.isDefined(c.dropdownAppendToBody),t=angular.isDefined(c.uibKeyboardNav),s&&n.dropdownMenu&&(i.find("body").append(n.dropdownMenu),b.on("$destroy",function(){n.dropdownMenu.remove()}))},this.toggle=function(a){return o.isOpen=arguments.length?!!a:!o.isOpen},this.isOpen=function(){return o.isOpen},o.getToggleElement=function(){return n.toggleElement},o.getAutoClose=function(){return c.autoClose||"always"},o.getElement=function(){return b},o.isKeynavEnabled=function(){return t},o.focusDropdownEntry=function(a){var c=n.dropdownMenu?angular.element(n.dropdownMenu).find("a"):angular.element(b).find("ul").eq(0).find("a");switch(a){case 40:angular.isNumber(n.selectedOption)?n.selectedOption=n.selectedOption===c.length-1?n.selectedOption:n.selectedOption+1:n.selectedOption=0;break;case 38:angular.isNumber(n.selectedOption)?n.selectedOption=0===n.selectedOption?0:n.selectedOption-1:n.selectedOption=c.length-1}c[n.selectedOption].focus()},o.getDropdownElement=function(){return n.dropdownMenu},o.focusToggleElement=function(){n.toggleElement&&n.toggleElement[0].focus()},o.$watch("isOpen",function(c,d){if(s&&n.dropdownMenu){var e=h.positionElements(b,n.dropdownMenu,"bottom-left",!0),i={top:e.top+"px",display:c?"block":"none"},m=n.dropdownMenu.hasClass("dropdown-menu-right");m?(i.left="auto",i.right=window.innerWidth-(e.left+b.prop("offsetWidth"))+"px"):(i.left=e.left+"px",i.right="auto"),n.dropdownMenu.css(i)}if(g[c?"addClass":"removeClass"](b,p).then(function(){angular.isDefined(c)&&c!==d&&r(a,{open:!!c})}),c)n.dropdownMenuTemplateUrl&&k(n.dropdownMenuTemplateUrl).then(function(a){l=o.$new(),j(a.trim())(l,function(a){var b=a;n.dropdownMenu.replaceWith(b),n.dropdownMenu=b})}),o.focusToggleElement(),f.open(o);else{if(n.dropdownMenuTemplateUrl){l&&l.$destroy();var t=angular.element('<ul class="dropdown-menu"></ul>');n.dropdownMenu.replaceWith(t),n.dropdownMenu=t}f.close(o),n.selectedOption=null}angular.isFunction(q)&&q(a,c)}),a.$on("$locationChangeSuccess",function(){"disabled"!==o.getAutoClose()&&(o.isOpen=!1)});var u=a.$on("$destroy",function(){o.$destroy()});o.$on("$destroy",u)}]).directive("uibDropdown",function(){return{controller:"UibDropdownController",link:function(a,b,c,d){d.init()}}}).directive("uibDropdownMenu",function(){return{restrict:"AC",require:"?^uibDropdown",link:function(a,b,c,d){if(d&&!angular.isDefined(c.dropdownNested)){b.addClass("dropdown-menu");var e=c.templateUrl;e&&(d.dropdownMenuTemplateUrl=e),d.dropdownMenu||(d.dropdownMenu=b)}}}}).directive("uibKeyboardNav",function(){return{restrict:"A",require:"?^uibDropdown",link:function(a,b,c,d){b.bind("keydown",function(a){if(-1!==[38,40].indexOf(a.which)){a.preventDefault(),a.stopPropagation();var b=d.dropdownMenu.find("a");switch(a.which){case 40:angular.isNumber(d.selectedOption)?d.selectedOption=d.selectedOption===b.length-1?d.selectedOption:d.selectedOption+1:d.selectedOption=0;break;case 38:angular.isNumber(d.selectedOption)?d.selectedOption=0===d.selectedOption?0:d.selectedOption-1:d.selectedOption=b.length-1}b[d.selectedOption].focus()}})}}}).directive("uibDropdownToggle",function(){return{require:"?^uibDropdown",link:function(a,b,c,d){if(d){b.addClass("dropdown-toggle"),d.toggleElement=b;var e=function(e){e.preventDefault(),b.hasClass("disabled")||c.disabled||a.$apply(function(){d.toggle()})};b.bind("click",e),b.attr({"aria-haspopup":!0,"aria-expanded":!1}),a.$watch(d.isOpen,function(a){b.attr("aria-expanded",!!a)}),a.$on("$destroy",function(){b.unbind("click",e)})}}}}),angular.module("ui.bootstrap.dropdown").value("$dropdownSuppressWarning",!1).service("dropdownService",["$log","$dropdownSuppressWarning","uibDropdownService",function(a,b,c){b||a.warn("dropdownService is now deprecated. Use uibDropdownService instead."),angular.extend(this,c)}]).controller("DropdownController",["$scope","$element","$attrs","$log","$dropdownSuppressWarning","$controller",function(a,b,c,d,e,f){return e||d.warn("DropdownController is now deprecated. Use UibDropdownController instead."),f("UibDropdownController",{$scope:a,$element:b,$attrs:c})}]).directive("dropdown",["$log","$dropdownSuppressWarning",function(a,b){return{controller:"DropdownController",link:function(c,d,e,f){b||a.warn("dropdown is now deprecated. Use uib-dropdown instead."),f.init()}}}]).directive("dropdownMenu",["$log","$dropdownSuppressWarning",function(a,b){return{restrict:"AC",require:"?^dropdown",link:function(c,d,e,f){if(f){b||a.warn("dropdown-menu is now deprecated. Use uib-dropdown-menu instead."),d.addClass("dropdown-menu");var g=e.templateUrl;g&&(f.dropdownMenuTemplateUrl=g),f.dropdownMenu||(f.dropdownMenu=d)}}}}]).directive("keyboardNav",["$log","$dropdownSuppressWarning",function(a,b){return{restrict:"A",require:"?^dropdown",link:function(c,d,e,f){b||a.warn("keyboard-nav is now deprecated. Use uib-keyboard-nav instead."),d.bind("keydown",function(a){if(-1!==[38,40].indexOf(a.which)){a.preventDefault(),a.stopPropagation();var b=f.dropdownMenu.find("a");switch(a.which){case 40:angular.isNumber(f.selectedOption)?f.selectedOption=f.selectedOption===b.length-1?f.selectedOption:f.selectedOption+1:f.selectedOption=0;break;case 38:angular.isNumber(f.selectedOption)?f.selectedOption=0===f.selectedOption?0:f.selectedOption-1:f.selectedOption=b.length-1}b[f.selectedOption].focus()}})}}}]).directive("dropdownToggle",["$log","$dropdownSuppressWarning",function(a,b){return{require:"?^dropdown",link:function(c,d,e,f){if(b||a.warn("dropdown-toggle is now deprecated. Use uib-dropdown-toggle instead."),f){d.addClass("dropdown-toggle"),f.toggleElement=d;var g=function(a){a.preventDefault(),d.hasClass("disabled")||e.disabled||c.$apply(function(){f.toggle()})};d.bind("click",g),d.attr({"aria-haspopup":!0,"aria-expanded":!1}),c.$watch(f.isOpen,function(a){d.attr("aria-expanded",!!a)}),c.$on("$destroy",function(){d.unbind("click",g)})}}}}]),angular.module("ui.bootstrap.stackedMap",[]).factory("$$stackedMap",function(){return{createNew:function(){var a=[];return{add:function(b,c){a.push({key:b,value:c})},get:function(b){for(var c=0;c<a.length;c++)if(b==a[c].key)return a[c]},keys:function(){for(var b=[],c=0;c<a.length;c++)b.push(a[c].key);return b},top:function(){return a[a.length-1]},remove:function(b){for(var c=-1,d=0;d<a.length;d++)if(b==a[d].key){c=d;break}return a.splice(c,1)[0]},removeTop:function(){return a.splice(a.length-1,1)[0]},length:function(){return a.length}}}}}),angular.module("ui.bootstrap.modal",["ui.bootstrap.stackedMap"]).factory("$$multiMap",function(){return{createNew:function(){var a={};return{entries:function(){return Object.keys(a).map(function(b){return{key:b,value:a[b]}})},get:function(b){return a[b]},hasKey:function(b){return!!a[b]},keys:function(){return Object.keys(a)},put:function(b,c){a[b]||(a[b]=[]),a[b].push(c)},remove:function(b,c){var d=a[b];if(d){var e=d.indexOf(c);-1!==e&&d.splice(e,1),d.length||delete a[b]}}}}}}).directive("uibModalBackdrop",["$animate","$injector","$uibModalStack",function(a,b,c){function d(b,d,f){d.addClass("modal-backdrop"),f.modalInClass&&(e?e(d,{addClass:f.modalInClass}).start():a.addClass(d,f.modalInClass),b.$on(c.NOW_CLOSING_EVENT,function(b,c){var g=c();e?e(d,{removeClass:f.modalInClass}).start().then(g):a.removeClass(d,f.modalInClass).then(g)}))}var e=null;return b.has("$animateCss")&&(e=b.get("$animateCss")),{replace:!0,templateUrl:"template/modal/backdrop.html",compile:function(a,b){return a.addClass(b.backdropClass),d}}}]).directive("uibModalWindow",["$uibModalStack","$q","$animate","$injector",function(a,b,c,d){var e=null;return d.has("$animateCss")&&(e=d.get("$animateCss")),{scope:{index:"@"},replace:!0,transclude:!0,templateUrl:function(a,b){return b.templateUrl||"template/modal/window.html"},link:function(d,f,g){f.addClass(g.windowClass||""),f.addClass(g.windowTopClass||""),d.size=g.size,d.close=function(b){var c=a.getTop();c&&c.value.backdrop&&"static"!==c.value.backdrop&&b.target===b.currentTarget&&(b.preventDefault(),b.stopPropagation(),a.dismiss(c.key,"backdrop click"))},f.on("click",d.close),d.$isRendered=!0;var h=b.defer();g.$observe("modalRender",function(a){"true"==a&&h.resolve()}),h.promise.then(function(){var h=null;g.modalInClass&&(h=e?e(f,{addClass:g.modalInClass}).start():c.addClass(f,g.modalInClass),d.$on(a.NOW_CLOSING_EVENT,function(a,b){var d=b();e?e(f,{removeClass:g.modalInClass}).start().then(d):c.removeClass(f,g.modalInClass).then(d)})),b.when(h).then(function(){var a=f[0].querySelectorAll("[autofocus]");a.length?a[0].focus():f[0].focus()});var i=a.getTop();i&&a.modalRendered(i.key)})}}}]).directive("uibModalAnimationClass",[function(){return{compile:function(a,b){b.modalAnimation&&a.addClass(b.uibModalAnimationClass)}}}]).directive("uibModalTransclude",function(){return{link:function(a,b,c,d,e){e(a.$parent,function(a){b.empty(),b.append(a)})}}}).factory("$uibModalStack",["$animate","$timeout","$document","$compile","$rootScope","$q","$injector","$$multiMap","$$stackedMap",function(a,b,c,d,e,f,g,h,i){function j(){for(var a=-1,b=u.keys(),c=0;c<b.length;c++)u.get(b[c]).value.backdrop&&(a=c);return a}function k(a,b){var d=c.find("body").eq(0),e=u.get(a).value;u.remove(a),n(e.modalDomEl,e.modalScope,function(){var b=e.openedClass||t;v.remove(b,a),d.toggleClass(b,v.hasKey(b)),l(!0)}),m(),b&&b.focus?b.focus():d.focus()}function l(a){var b;u.length()>0&&(b=u.top().value,b.modalDomEl.toggleClass(b.windowTopClass||"",a))}function m(){if(q&&-1==j()){var a=r;n(q,r,function(){a=null}),q=void 0,r=void 0}}function n(b,c,d){function e(){e.done||(e.done=!0,p?p(b,{event:"leave"}).start().then(function(){b.remove()}):a.leave(b),c.$destroy(),d&&d())}var g,h=null,i=function(){return g||(g=f.defer(),h=g.promise),function(){g.resolve()}};return c.$broadcast(w.NOW_CLOSING_EVENT,i),f.when(h).then(e)}function o(a,b,c){return!a.value.modalScope.$broadcast("modal.closing",b,c).defaultPrevented}var p=null;g.has("$animateCss")&&(p=g.get("$animateCss"));var q,r,s,t="modal-open",u=i.createNew(),v=h.createNew(),w={NOW_CLOSING_EVENT:"modal.stack.now-closing"},x=0,y="a[href], area[href], input:not([disabled]), button:not([disabled]),select:not([disabled]), textarea:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable=true]";return e.$watch(j,function(a){r&&(r.index=a)}),c.bind("keydown",function(a){if(a.isDefaultPrevented())return a;var b=u.top();if(b&&b.value.keyboard)switch(a.which){case 27:a.preventDefault(),e.$apply(function(){w.dismiss(b.key,"escape key press")});break;case 9:w.loadFocusElementList(b);var c=!1;a.shiftKey?w.isFocusInFirstItem(a)&&(c=w.focusLastFocusableElement()):w.isFocusInLastItem(a)&&(c=w.focusFirstFocusableElement()),c&&(a.preventDefault(),a.stopPropagation())}}),w.open=function(a,b){var f=c[0].activeElement,g=b.openedClass||t;l(!1),u.add(a,{deferred:b.deferred,renderDeferred:b.renderDeferred,modalScope:b.scope,backdrop:b.backdrop,keyboard:b.keyboard,openedClass:b.openedClass,windowTopClass:b.windowTopClass}),v.put(g,a);var h=c.find("body").eq(0),i=j();if(i>=0&&!q){r=e.$new(!0),r.index=i;var k=angular.element('<div uib-modal-backdrop="modal-backdrop"></div>');k.attr("backdrop-class",b.backdropClass),b.animation&&k.attr("modal-animation","true"),q=d(k)(r),h.append(q)}var m=angular.element('<div uib-modal-window="modal-window"></div>');m.attr({"template-url":b.windowTemplateUrl,"window-class":b.windowClass,"window-top-class":b.windowTopClass,size:b.size,index:u.length()-1,animate:"animate"}).html(b.content),b.animation&&m.attr("modal-animation","true");var n=d(m)(b.scope);u.top().value.modalDomEl=n,u.top().value.modalOpener=f,h.append(n),h.addClass(g),w.clearFocusListCache()},w.close=function(a,b){var c=u.get(a);return c&&o(c,b,!0)?(c.value.modalScope.$$uibDestructionScheduled=!0,c.value.deferred.resolve(b),k(a,c.value.modalOpener),!0):!c},w.dismiss=function(a,b){var c=u.get(a);return c&&o(c,b,!1)?(c.value.modalScope.$$uibDestructionScheduled=!0,c.value.deferred.reject(b),k(a,c.value.modalOpener),!0):!c},w.dismissAll=function(a){for(var b=this.getTop();b&&this.dismiss(b.key,a);)b=this.getTop()},w.getTop=function(){return u.top()},w.modalRendered=function(a){var b=u.get(a);b&&b.value.renderDeferred.resolve()},w.focusFirstFocusableElement=function(){return s.length>0?(s[0].focus(),!0):!1},w.focusLastFocusableElement=function(){return s.length>0?(s[s.length-1].focus(),!0):!1},w.isFocusInFirstItem=function(a){return s.length>0?(a.target||a.srcElement)==s[0]:!1},w.isFocusInLastItem=function(a){return s.length>0?(a.target||a.srcElement)==s[s.length-1]:!1},w.clearFocusListCache=function(){s=[],x=0},w.loadFocusElementList=function(a){if((void 0===s||!s.length0)&&a){var b=a.value.modalDomEl;b&&b.length&&(s=b[0].querySelectorAll(y))}},w}]).provider("$uibModal",function(){var a={options:{animation:!0,backdrop:!0,keyboard:!0},$get:["$injector","$rootScope","$q","$templateRequest","$controller","$uibModalStack",function(b,c,d,e,f,g){function h(a){return a.template?d.when(a.template):e(angular.isFunction(a.templateUrl)?a.templateUrl():a.templateUrl)}function i(a){var c=[];return angular.forEach(a,function(a){angular.isFunction(a)||angular.isArray(a)?c.push(d.when(b.invoke(a))):angular.isString(a)?c.push(d.when(b.get(a))):c.push(d.when(a))}),c}var j={},k=null;return j.getPromiseChain=function(){return k},j.open=function(b){var e=d.defer(),j=d.defer(),l=d.defer(),m={result:e.promise,opened:j.promise,rendered:l.promise,close:function(a){return g.close(m,a)},dismiss:function(a){return g.dismiss(m,a)}};if(b=angular.extend({},a.options,b),b.resolve=b.resolve||{},!b.template&&!b.templateUrl)throw new Error("One of template or templateUrl options is required.");var n,o=d.all([h(b)].concat(i(b.resolve)));return n=k=d.all([k]).then(function(){return o},function(){return o}).then(function(a){var d=(b.scope||c).$new();d.$close=m.close,d.$dismiss=m.dismiss,d.$on("$destroy",function(){d.$$uibDestructionScheduled||d.$dismiss("$uibUnscheduledDestruction")});var h,i={},k=1;b.controller&&(i.$scope=d,i.$modalInstance=m,angular.forEach(b.resolve,function(b,c){i[c]=a[k++]}),h=f(b.controller,i),b.controllerAs&&(b.bindToController&&angular.extend(h,d),d[b.controllerAs]=h)),g.open(m,{scope:d,deferred:e,renderDeferred:l,content:a[0],animation:b.animation,backdrop:b.backdrop,keyboard:b.keyboard,backdropClass:b.backdropClass,windowTopClass:b.windowTopClass,windowClass:b.windowClass,windowTemplateUrl:b.windowTemplateUrl,size:b.size,openedClass:b.openedClass}),j.resolve(!0)},function(a){j.reject(a),e.reject(a)})["finally"](function(){k===n&&(k=null)}),m},j}]};return a}),angular.module("ui.bootstrap.modal").value("$modalSuppressWarning",!1).directive("modalBackdrop",["$animate","$injector","$modalStack","$log","$modalSuppressWarning",function(a,b,c,d,e){function f(b,f,h){e||d.warn("modal-backdrop is now deprecated. Use uib-modal-backdrop instead."),f.addClass("modal-backdrop"),h.modalInClass&&(g?g(f,{addClass:h.modalInClass}).start():a.addClass(f,h.modalInClass),b.$on(c.NOW_CLOSING_EVENT,function(b,c){var d=c();g?g(f,{removeClass:h.modalInClass}).start().then(d):a.removeClass(f,h.modalInClass).then(d)}))}var g=null;return b.has("$animateCss")&&(g=b.get("$animateCss")),{replace:!0,templateUrl:"template/modal/backdrop.html",compile:function(a,b){return a.addClass(b.backdropClass),f}}}]).directive("modalWindow",["$modalStack","$q","$animate","$injector","$log","$modalSuppressWarning",function(a,b,c,d,e,f){var g=null;return d.has("$animateCss")&&(g=d.get("$animateCss")),{scope:{index:"@"},replace:!0,transclude:!0,templateUrl:function(a,b){return b.templateUrl||"template/modal/window.html"},link:function(d,h,i){f||e.warn("modal-window is now deprecated. Use uib-modal-window instead."),h.addClass(i.windowClass||""),h.addClass(i.windowTopClass||""),d.size=i.size,d.close=function(b){var c=a.getTop();c&&c.value.backdrop&&"static"!==c.value.backdrop&&b.target===b.currentTarget&&(b.preventDefault(),b.stopPropagation(),a.dismiss(c.key,"backdrop click"))},h.on("click",d.close),d.$isRendered=!0;var j=b.defer();i.$observe("modalRender",function(a){"true"==a&&j.resolve()}),j.promise.then(function(){var e=null;i.modalInClass&&(e=g?g(h,{addClass:i.modalInClass}).start():c.addClass(h,i.modalInClass),d.$on(a.NOW_CLOSING_EVENT,function(a,b){var d=b();g?g(h,{removeClass:i.modalInClass}).start().then(d):c.removeClass(h,i.modalInClass).then(d)})),b.when(e).then(function(){var a=h[0].querySelectorAll("[autofocus]");a.length?a[0].focus():h[0].focus()});var f=a.getTop();f&&a.modalRendered(f.key)})}}}]).directive("modalAnimationClass",["$log","$modalSuppressWarning",function(a,b){return{compile:function(c,d){b||a.warn("modal-animation-class is now deprecated. Use uib-modal-animation-class instead."),d.modalAnimation&&c.addClass(d.modalAnimationClass)}}}]).directive("modalTransclude",["$log","$modalSuppressWarning",function(a,b){return{link:function(c,d,e,f,g){b||a.warn("modal-transclude is now deprecated. Use uib-modal-transclude instead."),g(c.$parent,function(a){d.empty(),d.append(a)})}}}]).service("$modalStack",["$animate","$timeout","$document","$compile","$rootScope","$q","$injector","$$multiMap","$$stackedMap","$uibModalStack","$log","$modalSuppressWarning",function(a,b,c,d,e,f,g,h,i,j,k,l){l||k.warn("$modalStack is now deprecated. Use $uibModalStack instead."),angular.extend(this,j)}]).provider("$modal",["$uibModalProvider",function(a){angular.extend(this,a),this.$get=["$injector","$log","$modalSuppressWarning",function(b,c,d){return d||c.warn("$modal is now deprecated. Use $uibModal instead."),b.invoke(a.$get)}]}]),angular.module("ui.bootstrap.pagination",[]).controller("UibPaginationController",["$scope","$attrs","$parse",function(a,b,c){var d=this,e={$setViewValue:angular.noop},f=b.numPages?c(b.numPages).assign:angular.noop;this.init=function(g,h){e=g,this.config=h,e.$render=function(){d.render()},b.itemsPerPage?a.$parent.$watch(c(b.itemsPerPage),function(b){d.itemsPerPage=parseInt(b,10),a.totalPages=d.calculateTotalPages()}):this.itemsPerPage=h.itemsPerPage,a.$watch("totalItems",function(){a.totalPages=d.calculateTotalPages()}),a.$watch("totalPages",function(b){f(a.$parent,b),a.page>b?a.selectPage(b):e.$render()})},this.calculateTotalPages=function(){var b=this.itemsPerPage<1?1:Math.ceil(a.totalItems/this.itemsPerPage);return Math.max(b||0,1)},this.render=function(){a.page=parseInt(e.$viewValue,10)||1},a.selectPage=function(b,c){c&&c.preventDefault();var d=!a.ngDisabled||!c;d&&a.page!==b&&b>0&&b<=a.totalPages&&(c&&c.target&&c.target.blur(),e.$setViewValue(b),e.$render())},a.getText=function(b){return a[b+"Text"]||d.config[b+"Text"]},a.noPrevious=function(){return 1===a.page},a.noNext=function(){return a.page===a.totalPages}}]).constant("uibPaginationConfig",{itemsPerPage:10,boundaryLinks:!1,directionLinks:!0,firstText:"First",previousText:"Previous",nextText:"Next",lastText:"Last",rotate:!0}).directive("uibPagination",["$parse","uibPaginationConfig",function(a,b){return{restrict:"EA",scope:{totalItems:"=",firstText:"@",previousText:"@",nextText:"@",lastText:"@",ngDisabled:"="},require:["uibPagination","?ngModel"],controller:"UibPaginationController",controllerAs:"pagination",templateUrl:function(a,b){return b.templateUrl||"template/pagination/pagination.html"},replace:!0,link:function(c,d,e,f){function g(a,b,c){return{number:a,text:b,active:c}}function h(a,b){var c=[],d=1,e=b,f=angular.isDefined(k)&&b>k;f&&(l?(d=Math.max(a-Math.floor(k/2),1),e=d+k-1,e>b&&(e=b,d=e-k+1)):(d=(Math.ceil(a/k)-1)*k+1,e=Math.min(d+k-1,b)));for(var h=d;e>=h;h++){var i=g(h,h,h===a);c.push(i)}if(f&&!l){if(d>1){var j=g(d-1,"...",!1);c.unshift(j)}if(b>e){var m=g(e+1,"...",!1);c.push(m)}}return c}var i=f[0],j=f[1];if(j){var k=angular.isDefined(e.maxSize)?c.$parent.$eval(e.maxSize):b.maxSize,l=angular.isDefined(e.rotate)?c.$parent.$eval(e.rotate):b.rotate;c.boundaryLinks=angular.isDefined(e.boundaryLinks)?c.$parent.$eval(e.boundaryLinks):b.boundaryLinks,c.directionLinks=angular.isDefined(e.directionLinks)?c.$parent.$eval(e.directionLinks):b.directionLinks,i.init(j,b),e.maxSize&&c.$parent.$watch(a(e.maxSize),function(a){k=parseInt(a,10),i.render()});var m=i.render;i.render=function(){m(),c.page>0&&c.page<=c.totalPages&&(c.pages=h(c.page,c.totalPages))}}}}}]).constant("uibPagerConfig",{itemsPerPage:10,previousText:"« Previous",nextText:"Next »",align:!0}).directive("uibPager",["uibPagerConfig",function(a){return{restrict:"EA",scope:{totalItems:"=",previousText:"@",nextText:"@",ngDisabled:"="},require:["uibPager","?ngModel"],controller:"UibPaginationController",controllerAs:"pagination",templateUrl:function(a,b){return b.templateUrl||"template/pagination/pager.html"},replace:!0,link:function(b,c,d,e){var f=e[0],g=e[1];g&&(b.align=angular.isDefined(d.align)?b.$parent.$eval(d.align):a.align,f.init(g,a))}}}]),angular.module("ui.bootstrap.pagination").value("$paginationSuppressWarning",!1).controller("PaginationController",["$scope","$attrs","$parse","$controller","$element","$log","$paginationSuppressWarning",function(a,b,c,d,e,f,g){return g||f.warn("PaginationController is now deprecated. Use UibPaginationController instead."),d("UibPaginationController",{$scope:a,$element:e,$attrs:b})}]).directive("pagination",["$parse","uibPaginationConfig","$log","$paginationSuppressWarning",function(a,b,c,d){return{restrict:"EA",scope:{totalItems:"=",firstText:"@",previousText:"@",nextText:"@",lastText:"@",ngDisabled:"="},require:["pagination","?ngModel"],controller:"PaginationController",controllerAs:"pagination",templateUrl:function(a,b){return b.templateUrl||"template/pagination/pagination.html"},replace:!0,link:function(e,f,g,h){function i(a,b,c){return{number:a,text:b,active:c}}function j(a,b){var c=[],d=1,e=b,f=angular.isDefined(m)&&b>m;f&&(n?(d=Math.max(a-Math.floor(m/2),1),e=d+m-1,e>b&&(e=b,d=e-m+1)):(d=(Math.ceil(a/m)-1)*m+1,e=Math.min(d+m-1,b)));for(var g=d;e>=g;g++){var h=i(g,g,g===a);c.push(h)}if(f&&!n){if(d>1){var j=i(d-1,"...",!1);c.unshift(j)}if(b>e){var k=i(e+1,"...",!1);c.push(k)}}return c}d||c.warn("pagination is now deprecated. Use uib-pagination instead.");var k=h[0],l=h[1];if(l){var m=angular.isDefined(g.maxSize)?e.$parent.$eval(g.maxSize):b.maxSize,n=angular.isDefined(g.rotate)?e.$parent.$eval(g.rotate):b.rotate;e.boundaryLinks=angular.isDefined(g.boundaryLinks)?e.$parent.$eval(g.boundaryLinks):b.boundaryLinks,e.directionLinks=angular.isDefined(g.directionLinks)?e.$parent.$eval(g.directionLinks):b.directionLinks,k.init(l,b),g.maxSize&&e.$parent.$watch(a(g.maxSize),function(a){m=parseInt(a,10),k.render()});var o=k.render;k.render=function(){o(),e.page>0&&e.page<=e.totalPages&&(e.pages=j(e.page,e.totalPages))}}}}}]).directive("pager",["uibPagerConfig","$log","$paginationSuppressWarning",function(a,b,c){return{restrict:"EA",scope:{totalItems:"=",previousText:"@",nextText:"@",ngDisabled:"="},require:["pager","?ngModel"],controller:"PaginationController",controllerAs:"pagination",templateUrl:function(a,b){return b.templateUrl||"template/pagination/pager.html"},replace:!0,link:function(d,e,f,g){c||b.warn("pager is now deprecated. Use uib-pager instead.");var h=g[0],i=g[1];i&&(d.align=angular.isDefined(f.align)?d.$parent.$eval(f.align):a.align,h.init(i,a)); 9 return"-"+a.toLowerCase()})}function n(b){if(angular.isNumber(b)&&(b=new Date(b)),b){if(angular.isDate(b)&&!isNaN(b))return b;if(angular.isString(b)){var c=j.parse(b,r,a.date);return isNaN(c)?void 0:c}return void 0}return null}function o(a,b){var d=a||b;if(!c.ngRequired&&!d)return!0;if(angular.isNumber(d)&&(d=new Date(d)),d){if(angular.isDate(d)&&!isNaN(d))return!0;if(angular.isString(d)){var e=j.parse(d,r);return!isNaN(e)}return!1}return!0}function p(c){var d=A[0],e=b[0].contains(c.target),f=void 0!==d.contains&&d.contains(c.target);!a.isOpen||e||f||a.$apply(function(){a.isOpen=!1})}function q(c){27===c.which&&a.isOpen?(c.preventDefault(),c.stopPropagation(),a.$apply(function(){a.isOpen=!1}),b[0].focus()):40!==c.which||a.isOpen||(c.preventDefault(),c.stopPropagation(),a.$apply(function(){a.isOpen=!0}))}var r,s,t,u,v,w,x,y,z,A,B={},C=!1;a.watchData={},this.init=function(h){if(z=h,s=angular.isDefined(c.closeOnDateSelection)?a.$parent.$eval(c.closeOnDateSelection):k.closeOnDateSelection,t=angular.isDefined(c.datepickerAppendToBody)?a.$parent.$eval(c.datepickerAppendToBody):k.appendToBody,u=angular.isDefined(c.onOpenFocus)?a.$parent.$eval(c.onOpenFocus):k.onOpenFocus,v=angular.isDefined(c.datepickerPopupTemplateUrl)?c.datepickerPopupTemplateUrl:k.datepickerPopupTemplateUrl,w=angular.isDefined(c.datepickerTemplateUrl)?c.datepickerTemplateUrl:k.datepickerTemplateUrl,a.showButtonBar=angular.isDefined(c.showButtonBar)?a.$parent.$eval(c.showButtonBar):k.showButtonBar,k.html5Types[c.type]?(r=k.html5Types[c.type],C=!0):(r=c.datepickerPopup||k.datepickerPopup,c.$observe("uibDatepickerPopup",function(a,b){var c=a||k.datepickerPopup;if(c!==r&&(r=c,z.$modelValue=null,!r))throw new Error("uibDatepickerPopup must have a date format specified.")})),!r)throw new Error("uibDatepickerPopup must have a date format specified.");if(C&&c.datepickerPopup)throw new Error("HTML5 date input types do not support custom formats.");if(x=angular.element("<div uib-datepicker-popup-wrap><div uib-datepicker></div></div>"),x.attr({"ng-model":"date","ng-change":"dateSelection(date)","template-url":v}),y=angular.element(x.children()[0]),y.attr("template-url",w),C&&"month"===c.type&&(y.attr("datepicker-mode",'"month"'),y.attr("min-mode","month")),c.datepickerOptions){var l=a.$parent.$eval(c.datepickerOptions);l&&l.initDate&&(a.initDate=l.initDate,y.attr("init-date","initDate"),delete l.initDate),angular.forEach(l,function(a,b){y.attr(m(b),a)})}angular.forEach(["minMode","maxMode","minDate","maxDate","datepickerMode","initDate","shortcutPropagation"],function(b){if(c[b]){var d=e(c[b]);if(a.$parent.$watch(d,function(c){a.watchData[b]=c,("minDate"===b||"maxDate"===b)&&(B[b]=new Date(c))}),y.attr(m(b),"watchData."+b),"datepickerMode"===b){var f=d.assign;a.$watch("watchData."+b,function(b,c){angular.isFunction(f)&&b!==c&&f(a.$parent,b)})}}}),c.dateDisabled&&y.attr("date-disabled","dateDisabled({ date: date, mode: mode })"),c.showWeeks&&y.attr("show-weeks",c.showWeeks),c.customClass&&y.attr("custom-class","customClass({ date: date, mode: mode })"),C?z.$formatters.push(function(b){return a.date=b,b}):(z.$$parserName="date",z.$validators.date=o,z.$parsers.unshift(n),z.$formatters.push(function(b){return a.date=b,z.$isEmpty(b)?b:i(b,r)})),z.$viewChangeListeners.push(function(){a.date=j.parse(z.$viewValue,r,a.date)}),b.bind("keydown",q),A=d(x)(a),x.remove(),t?f.find("body").append(A):b.after(A),a.$on("$destroy",function(){a.isOpen===!0&&(g.$$phase||a.$apply(function(){a.isOpen=!1})),A.remove(),b.unbind("keydown",q),f.unbind("click",p)})},a.getText=function(b){return a[b+"Text"]||k[b+"Text"]},a.isDisabled=function(b){return"today"===b&&(b=new Date),a.watchData.minDate&&a.compare(b,B.minDate)<0||a.watchData.maxDate&&a.compare(b,B.maxDate)>0},a.compare=function(a,b){return new Date(a.getFullYear(),a.getMonth(),a.getDate())-new Date(b.getFullYear(),b.getMonth(),b.getDate())},a.dateSelection=function(c){angular.isDefined(c)&&(a.date=c);var d=a.date?i(a.date,r):null;b.val(d),z.$setViewValue(d),s&&(a.isOpen=!1,b[0].focus())},a.keydown=function(c){27===c.which&&(a.isOpen=!1,b[0].focus())},a.select=function(b){if("today"===b){var c=new Date;angular.isDate(a.date)?(b=new Date(a.date),b.setFullYear(c.getFullYear(),c.getMonth(),c.getDate())):b=new Date(c.setHours(0,0,0,0))}a.dateSelection(b)},a.close=function(){a.isOpen=!1,b[0].focus()},a.$watch("isOpen",function(c){c?(a.position=t?h.offset(b):h.position(b),a.position.top=a.position.top+b.prop("offsetHeight"),l(function(){u&&a.$broadcast("uib:datepicker.focus"),f.bind("click",p)},0,!1)):f.unbind("click",p)})}]).directive("uibDatepickerPopup",function(){return{require:["ngModel","uibDatepickerPopup"],controller:"UibDatepickerPopupController",scope:{isOpen:"=?",currentText:"@",clearText:"@",closeText:"@",dateDisabled:"&",customClass:"&"},link:function(a,b,c,d){var e=d[0],f=d[1];f.init(e)}}}).directive("uibDatepickerPopupWrap",function(){return{replace:!0,transclude:!0,templateUrl:function(a,b){return b.templateUrl||"template/datepicker/popup.html"}}}),angular.module("ui.bootstrap.datepicker").value("$datepickerSuppressWarning",!1).controller("DatepickerController",["$scope","$attrs","$log","$datepickerSuppressWarning","$controller",function(a,b,c,d,e){return d||c.warn("DatepickerController is now deprecated. Use UibDatepickerController instead."),e("UibDatepickerController",{$scope:a,$attrs:b})}]).directive("datepicker",["$log","$datepickerSuppressWarning",function(a,b){return{replace:!0,templateUrl:function(a,b){return b.templateUrl||"template/datepicker/datepicker.html"},scope:{datepickerMode:"=?",dateDisabled:"&",customClass:"&",shortcutPropagation:"&?"},require:["datepicker","^ngModel"],controller:"DatepickerController",controllerAs:"datepicker",link:function(c,d,e,f){b||a.warn("datepicker is now deprecated. Use uib-datepicker instead.");var g=f[0],h=f[1];g.init(h)}}}]).directive("daypicker",["$log","$datepickerSuppressWarning",function(a,b){return{replace:!0,templateUrl:"template/datepicker/day.html",require:["^datepicker","daypicker"],controller:"UibDaypickerController",link:function(c,d,e,f){b||a.warn("daypicker is now deprecated. Use uib-daypicker instead.");var g=f[0],h=f[1];h.init(g)}}}]).directive("monthpicker",["$log","$datepickerSuppressWarning",function(a,b){return{replace:!0,templateUrl:"template/datepicker/month.html",require:["^datepicker","monthpicker"],controller:"UibMonthpickerController",link:function(c,d,e,f){b||a.warn("monthpicker is now deprecated. Use uib-monthpicker instead.");var g=f[0],h=f[1];h.init(g)}}}]).directive("yearpicker",["$log","$datepickerSuppressWarning",function(a,b){return{replace:!0,templateUrl:"template/datepicker/year.html",require:["^datepicker","yearpicker"],controller:"UibYearpickerController",link:function(c,d,e,f){b||a.warn("yearpicker is now deprecated. Use uib-yearpicker instead.");var g=f[0];angular.extend(g,f[1]),g.yearpickerInit(),g.refreshView()}}}]).directive("datepickerPopup",["$log","$datepickerSuppressWarning",function(a,b){return{require:["ngModel","datepickerPopup"],controller:"UibDatepickerPopupController",scope:{isOpen:"=?",currentText:"@",clearText:"@",closeText:"@",dateDisabled:"&",customClass:"&"},link:function(c,d,e,f){b||a.warn("datepicker-popup is now deprecated. Use uib-datepicker-popup instead.");var g=f[0],h=f[1];h.init(g)}}}]).directive("datepickerPopupWrap",["$log","$datepickerSuppressWarning",function(a,b){return{replace:!0,transclude:!0,templateUrl:function(a,b){return b.templateUrl||"template/datepicker/popup.html"},link:function(){b||a.warn("datepicker-popup-wrap is now deprecated. Use uib-datepicker-popup-wrap instead.")}}}]),angular.module("ui.bootstrap.dropdown",["ui.bootstrap.position"]).constant("uibDropdownConfig",{openClass:"open"}).service("uibDropdownService",["$document","$rootScope",function(a,b){var c=null;this.open=function(b){c||(a.bind("click",d),a.bind("keydown",e)),c&&c!==b&&(c.isOpen=!1),c=b},this.close=function(b){c===b&&(c=null,a.unbind("click",d),a.unbind("keydown",e))};var d=function(a){if(c&&(!a||"disabled"!==c.getAutoClose())){var d=c.getToggleElement();if(!(a&&d&&d[0].contains(a.target))){var e=c.getDropdownElement();a&&"outsideClick"===c.getAutoClose()&&e&&e[0].contains(a.target)||(c.isOpen=!1,b.$$phase||c.$apply())}}},e=function(a){27===a.which?(c.focusToggleElement(),d()):c.isKeynavEnabled()&&/(38|40)/.test(a.which)&&c.isOpen&&(a.preventDefault(),a.stopPropagation(),c.focusDropdownEntry(a.which))}}]).controller("UibDropdownController",["$scope","$element","$attrs","$parse","uibDropdownConfig","uibDropdownService","$animate","$uibPosition","$document","$compile","$templateRequest",function(a,b,c,d,e,f,g,h,i,j,k){var l,m,n=this,o=a.$new(),p=e.openClass,q=angular.noop,r=c.onToggle?d(c.onToggle):angular.noop,s=!1,t=!1;b.addClass("dropdown"),this.init=function(){c.isOpen&&(m=d(c.isOpen),q=m.assign,a.$watch(m,function(a){o.isOpen=!!a})),s=angular.isDefined(c.dropdownAppendToBody),t=angular.isDefined(c.uibKeyboardNav),s&&n.dropdownMenu&&(i.find("body").append(n.dropdownMenu),b.on("$destroy",function(){n.dropdownMenu.remove()}))},this.toggle=function(a){return o.isOpen=arguments.length?!!a:!o.isOpen},this.isOpen=function(){return o.isOpen},o.getToggleElement=function(){return n.toggleElement},o.getAutoClose=function(){return c.autoClose||"always"},o.getElement=function(){return b},o.isKeynavEnabled=function(){return t},o.focusDropdownEntry=function(a){var c=n.dropdownMenu?angular.element(n.dropdownMenu).find("a"):angular.element(b).find("ul").eq(0).find("a");switch(a){case 40:angular.isNumber(n.selectedOption)?n.selectedOption=n.selectedOption===c.length-1?n.selectedOption:n.selectedOption+1:n.selectedOption=0;break;case 38:angular.isNumber(n.selectedOption)?n.selectedOption=0===n.selectedOption?0:n.selectedOption-1:n.selectedOption=c.length-1}c[n.selectedOption].focus()},o.getDropdownElement=function(){return n.dropdownMenu},o.focusToggleElement=function(){n.toggleElement&&n.toggleElement[0].focus()},o.$watch("isOpen",function(c,d){if(s&&n.dropdownMenu){var e=h.positionElements(b,n.dropdownMenu,"bottom-left",!0),i={top:e.top+"px",display:c?"block":"none"},m=n.dropdownMenu.hasClass("dropdown-menu-right");m?(i.left="auto",i.right=window.innerWidth-(e.left+b.prop("offsetWidth"))+"px"):(i.left=e.left+"px",i.right="auto"),n.dropdownMenu.css(i)}if(g[c?"addClass":"removeClass"](b,p).then(function(){angular.isDefined(c)&&c!==d&&r(a,{open:!!c})}),c)n.dropdownMenuTemplateUrl&&k(n.dropdownMenuTemplateUrl).then(function(a){l=o.$new(),j(a.trim())(l,function(a){var b=a;n.dropdownMenu.replaceWith(b),n.dropdownMenu=b})}),o.focusToggleElement(),f.open(o);else{if(n.dropdownMenuTemplateUrl){l&&l.$destroy();var t=angular.element('<ul class="dropdown-menu"></ul>');n.dropdownMenu.replaceWith(t),n.dropdownMenu=t}f.close(o),n.selectedOption=null}angular.isFunction(q)&&q(a,c)}),a.$on("$locationChangeSuccess",function(){"disabled"!==o.getAutoClose()&&(o.isOpen=!1)});var u=a.$on("$destroy",function(){o.$destroy()});o.$on("$destroy",u)}]).directive("uibDropdown",function(){return{controller:"UibDropdownController",link:function(a,b,c,d){d.init()}}}).directive("uibDropdownMenu",function(){return{restrict:"AC",require:"?^uibDropdown",link:function(a,b,c,d){if(d&&!angular.isDefined(c.dropdownNested)){b.addClass("dropdown-menu");var e=c.templateUrl;e&&(d.dropdownMenuTemplateUrl=e),d.dropdownMenu||(d.dropdownMenu=b)}}}}).directive("uibKeyboardNav",function(){return{restrict:"A",require:"?^uibDropdown",link:function(a,b,c,d){b.bind("keydown",function(a){if(-1!==[38,40].indexOf(a.which)){a.preventDefault(),a.stopPropagation();var b=d.dropdownMenu.find("a");switch(a.which){case 40:angular.isNumber(d.selectedOption)?d.selectedOption=d.selectedOption===b.length-1?d.selectedOption:d.selectedOption+1:d.selectedOption=0;break;case 38:angular.isNumber(d.selectedOption)?d.selectedOption=0===d.selectedOption?0:d.selectedOption-1:d.selectedOption=b.length-1}b[d.selectedOption].focus()}})}}}).directive("uibDropdownToggle",function(){return{require:"?^uibDropdown",link:function(a,b,c,d){if(d){b.addClass("dropdown-toggle"),d.toggleElement=b;var e=function(e){e.preventDefault(),b.hasClass("disabled")||c.disabled||a.$apply(function(){d.toggle()})};b.bind("click",e),b.attr({"aria-haspopup":!0,"aria-expanded":!1}),a.$watch(d.isOpen,function(a){b.attr("aria-expanded",!!a)}),a.$on("$destroy",function(){b.unbind("click",e)})}}}}),angular.module("ui.bootstrap.dropdown").value("$dropdownSuppressWarning",!1).service("dropdownService",["$log","$dropdownSuppressWarning","uibDropdownService",function(a,b,c){b||a.warn("dropdownService is now deprecated. Use uibDropdownService instead."),angular.extend(this,c)}]).controller("DropdownController",["$scope","$element","$attrs","$log","$dropdownSuppressWarning","$controller",function(a,b,c,d,e,f){return e||d.warn("DropdownController is now deprecated. Use UibDropdownController instead."),f("UibDropdownController",{$scope:a,$element:b,$attrs:c})}]).directive("dropdown",["$log","$dropdownSuppressWarning",function(a,b){return{controller:"DropdownController",link:function(c,d,e,f){b||a.warn("dropdown is now deprecated. Use uib-dropdown instead."),f.init()}}}]).directive("dropdownMenu",["$log","$dropdownSuppressWarning",function(a,b){return{restrict:"AC",require:"?^dropdown",link:function(c,d,e,f){if(f){b||a.warn("dropdown-menu is now deprecated. Use uib-dropdown-menu instead."),d.addClass("dropdown-menu");var g=e.templateUrl;g&&(f.dropdownMenuTemplateUrl=g),f.dropdownMenu||(f.dropdownMenu=d)}}}}]).directive("keyboardNav",["$log","$dropdownSuppressWarning",function(a,b){return{restrict:"A",require:"?^dropdown",link:function(c,d,e,f){b||a.warn("keyboard-nav is now deprecated. Use uib-keyboard-nav instead."),d.bind("keydown",function(a){if(-1!==[38,40].indexOf(a.which)){a.preventDefault(),a.stopPropagation();var b=f.dropdownMenu.find("a");switch(a.which){case 40:angular.isNumber(f.selectedOption)?f.selectedOption=f.selectedOption===b.length-1?f.selectedOption:f.selectedOption+1:f.selectedOption=0;break;case 38:angular.isNumber(f.selectedOption)?f.selectedOption=0===f.selectedOption?0:f.selectedOption-1:f.selectedOption=b.length-1}b[f.selectedOption].focus()}})}}}]).directive("dropdownToggle",["$log","$dropdownSuppressWarning",function(a,b){return{require:"?^dropdown",link:function(c,d,e,f){if(b||a.warn("dropdown-toggle is now deprecated. Use uib-dropdown-toggle instead."),f){d.addClass("dropdown-toggle"),f.toggleElement=d;var g=function(a){a.preventDefault(),d.hasClass("disabled")||e.disabled||c.$apply(function(){f.toggle()})};d.bind("click",g),d.attr({"aria-haspopup":!0,"aria-expanded":!1}),c.$watch(f.isOpen,function(a){d.attr("aria-expanded",!!a)}),c.$on("$destroy",function(){d.unbind("click",g)})}}}}]),angular.module("ui.bootstrap.stackedMap",[]).factory("$$stackedMap",function(){return{createNew:function(){var a=[];return{add:function(b,c){a.push({key:b,value:c})},get:function(b){for(var c=0;c<a.length;c++)if(b==a[c].key)return a[c]},keys:function(){for(var b=[],c=0;c<a.length;c++)b.push(a[c].key);return b},top:function(){return a[a.length-1]},remove:function(b){for(var c=-1,d=0;d<a.length;d++)if(b==a[d].key){c=d;break}return a.splice(c,1)[0]},removeTop:function(){return a.splice(a.length-1,1)[0]},length:function(){return a.length}}}}}),angular.module("ui.bootstrap.modal",["ui.bootstrap.stackedMap"]).factory("$$multiMap",function(){return{createNew:function(){var a={};return{entries:function(){return Object.keys(a).map(function(b){return{key:b,value:a[b]}})},get:function(b){return a[b]},hasKey:function(b){return!!a[b]},keys:function(){return Object.keys(a)},put:function(b,c){a[b]||(a[b]=[]),a[b].push(c)},remove:function(b,c){var d=a[b];if(d){var e=d.indexOf(c);-1!==e&&d.splice(e,1),d.length||delete a[b]}}}}}}).directive("uibModalBackdrop",["$animate","$injector","$uibModalStack",function(a,b,c){function d(b,d,f){d.addClass("modal-backdrop"),f.modalInClass&&(e?e(d,{addClass:f.modalInClass}).start():a.addClass(d,f.modalInClass),b.$on(c.NOW_CLOSING_EVENT,function(b,c){var g=c();e?e(d,{removeClass:f.modalInClass}).start().then(g):a.removeClass(d,f.modalInClass).then(g)}))}var e=null;return b.has("$animateCss")&&(e=b.get("$animateCss")),{replace:!0,templateUrl:"template/modal/backdrop.html",compile:function(a,b){return a.addClass(b.backdropClass),d}}}]).directive("uibModalWindow",["$uibModalStack","$q","$animate","$injector",function(a,b,c,d){var e=null;return d.has("$animateCss")&&(e=d.get("$animateCss")),{scope:{index:"@"},replace:!0,transclude:!0,templateUrl:function(a,b){return b.templateUrl||"template/modal/window.html"},link:function(d,f,g){f.addClass(g.windowClass||""),f.addClass(g.windowTopClass||""),d.size=g.size,d.close=function(b){var c=a.getTop();c&&c.value.backdrop&&"static"!==c.value.backdrop&&b.target===b.currentTarget&&(b.preventDefault(),b.stopPropagation(),a.dismiss(c.key,"backdrop click"))},f.on("click",d.close),d.$isRendered=!0;var h=b.defer();g.$observe("modalRender",function(a){"true"==a&&h.resolve()}),h.promise.then(function(){var h=null;g.modalInClass&&(h=e?e(f,{addClass:g.modalInClass}).start():c.addClass(f,g.modalInClass),d.$on(a.NOW_CLOSING_EVENT,function(a,b){var d=b();e?e(f,{removeClass:g.modalInClass}).start().then(d):c.removeClass(f,g.modalInClass).then(d)})),b.when(h).then(function(){var a=f[0].querySelectorAll("[autofocus]");a.length?a[0].focus():f[0].focus()});var i=a.getTop();i&&a.modalRendered(i.key)})}}}]).directive("uibModalAnimationClass",[function(){return{compile:function(a,b){b.modalAnimation&&a.addClass(b.uibModalAnimationClass)}}}]).directive("uibModalTransclude",function(){return{link:function(a,b,c,d,e){e(a.$parent,function(a){b.empty(),b.append(a)})}}}).factory("$uibModalStack",["$animate","$timeout","$document","$compile","$rootScope","$q","$injector","$$multiMap","$$stackedMap",function(a,b,c,d,e,f,g,h,i){function j(){for(var a=-1,b=u.keys(),c=0;c<b.length;c++)u.get(b[c]).value.backdrop&&(a=c);return a}function k(a,b){var d=c.find("body").eq(0),e=u.get(a).value;u.remove(a),n(e.modalDomEl,e.modalScope,function(){var b=e.openedClass||t;v.remove(b,a),d.toggleClass(b,v.hasKey(b)),l(!0)}),m(),b&&b.focus?b.focus():d.focus()}function l(a){var b;u.length()>0&&(b=u.top().value,b.modalDomEl.toggleClass(b.windowTopClass||"",a))}function m(){if(q&&-1==j()){var a=r;n(q,r,function(){a=null}),q=void 0,r=void 0}}function n(b,c,d){function e(){e.done||(e.done=!0,p?p(b,{event:"leave"}).start().then(function(){b.remove()}):a.leave(b),c.$destroy(),d&&d())}var g,h=null,i=function(){return g||(g=f.defer(),h=g.promise),function(){g.resolve()}};return c.$broadcast(w.NOW_CLOSING_EVENT,i),f.when(h).then(e)}function o(a,b,c){return!a.value.modalScope.$broadcast("modal.closing",b,c).defaultPrevented}var p=null;g.has("$animateCss")&&(p=g.get("$animateCss"));var q,r,s,t="modal-open",u=i.createNew(),v=h.createNew(),w={NOW_CLOSING_EVENT:"modal.stack.now-closing"},x=0,y="a[href], area[href], input:not([disabled]), button:not([disabled]),select:not([disabled]), textarea:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable=true]";return e.$watch(j,function(a){r&&(r.index=a)}),c.bind("keydown",function(a){if(a.isDefaultPrevented())return a;var b=u.top();if(b&&b.value.keyboard)switch(a.which){case 27:a.preventDefault(),e.$apply(function(){w.dismiss(b.key,"escape key press")});break;case 9:w.loadFocusElementList(b);var c=!1;a.shiftKey?w.isFocusInFirstItem(a)&&(c=w.focusLastFocusableElement()):w.isFocusInLastItem(a)&&(c=w.focusFirstFocusableElement()),c&&(a.preventDefault(),a.stopPropagation())}}),w.open=function(a,b){var f=c[0].activeElement,g=b.openedClass||t;l(!1),u.add(a,{deferred:b.deferred,renderDeferred:b.renderDeferred,modalScope:b.scope,backdrop:b.backdrop,keyboard:b.keyboard,openedClass:b.openedClass,windowTopClass:b.windowTopClass}),v.put(g,a);var h=c.find("body").eq(0),i=j();if(i>=0&&!q){r=e.$new(!0),r.index=i;var k=angular.element('<div uib-modal-backdrop="modal-backdrop"></div>');k.attr("backdrop-class",b.backdropClass),b.animation&&k.attr("modal-animation","true"),q=d(k)(r),h.append(q)}var m=angular.element('<div uib-modal-window="modal-window"></div>');m.attr({"template-url":b.windowTemplateUrl,"window-class":b.windowClass,"window-top-class":b.windowTopClass,size:b.size,index:u.length()-1,animate:"animate"}).html(b.content),b.animation&&m.attr("modal-animation","true");var n=d(m)(b.scope);u.top().value.modalDomEl=n,u.top().value.modalOpener=f,h.append(n),h.addClass(g),w.clearFocusListCache()},w.close=function(a,b){var c=u.get(a);return c&&o(c,b,!0)?(c.value.modalScope.$$uibDestructionScheduled=!0,c.value.deferred.resolve(b),k(a,c.value.modalOpener),!0):!c},w.dismiss=function(a,b){var c=u.get(a);return c&&o(c,b,!1)?(c.value.modalScope.$$uibDestructionScheduled=!0,c.value.deferred.reject(b),k(a,c.value.modalOpener),!0):!c},w.dismissAll=function(a){for(var b=this.getTop();b&&this.dismiss(b.key,a);)b=this.getTop()},w.getTop=function(){return u.top()},w.modalRendered=function(a){var b=u.get(a);b&&b.value.renderDeferred.resolve()},w.focusFirstFocusableElement=function(){return s.length>0?(s[0].focus(),!0):!1},w.focusLastFocusableElement=function(){return s.length>0?(s[s.length-1].focus(),!0):!1},w.isFocusInFirstItem=function(a){return s.length>0?(a.target||a.srcElement)==s[0]:!1},w.isFocusInLastItem=function(a){return s.length>0?(a.target||a.srcElement)==s[s.length-1]:!1},w.clearFocusListCache=function(){s=[],x=0},w.loadFocusElementList=function(a){if((void 0===s||!s.length0)&&a){var b=a.value.modalDomEl;b&&b.length&&(s=b[0].querySelectorAll(y))}},w}]).provider("$uibModal",function(){var a={options:{animation:!0,backdrop:!0,keyboard:!0},$get:["$injector","$rootScope","$q","$templateRequest","$controller","$uibModalStack",function(b,c,d,e,f,g){function h(a){return a.template?d.when(a.template):e(angular.isFunction(a.templateUrl)?a.templateUrl():a.templateUrl)}function i(a){var c=[];return angular.forEach(a,function(a){angular.isFunction(a)||angular.isArray(a)?c.push(d.when(b.invoke(a))):angular.isString(a)?c.push(d.when(b.get(a))):c.push(d.when(a))}),c}var j={},k=null;return j.getPromiseChain=function(){return k},j.open=function(b){var e=d.defer(),j=d.defer(),l=d.defer(),m={result:e.promise,opened:j.promise,rendered:l.promise,close:function(a){return g.close(m,a)},dismiss:function(a){return g.dismiss(m,a)}};if(b=angular.extend({},a.options,b),b.resolve=b.resolve||{},!b.template&&!b.templateUrl)throw new Error("One of template or templateUrl options is required.");var n,o=d.all([h(b)].concat(i(b.resolve)));return n=k=d.all([k]).then(function(){return o},function(){return o}).then(function(a){var d=(b.scope||c).$new();d.$close=m.close,d.$dismiss=m.dismiss,d.$on("$destroy",function(){d.$$uibDestructionScheduled||d.$dismiss("$uibUnscheduledDestruction")});var h,i={},k=1;b.controller&&(i.$scope=d,i.$modalInstance=m,angular.forEach(b.resolve,function(b,c){i[c]=a[k++]}),h=f(b.controller,i),b.controllerAs&&(b.bindToController&&angular.extend(h,d),d[b.controllerAs]=h)),g.open(m,{scope:d,deferred:e,renderDeferred:l,content:a[0],animation:b.animation,backdrop:b.backdrop,keyboard:b.keyboard,backdropClass:b.backdropClass,windowTopClass:b.windowTopClass,windowClass:b.windowClass,windowTemplateUrl:b.windowTemplateUrl,size:b.size,openedClass:b.openedClass}),j.resolve(!0)},function(a){j.reject(a),e.reject(a)})["finally"](function(){k===n&&(k=null)}),m},j}]};return a}),angular.module("ui.bootstrap.modal").value("$modalSuppressWarning",!1).directive("modalBackdrop",["$animate","$injector","$modalStack","$log","$modalSuppressWarning",function(a,b,c,d,e){function f(b,f,h){e||d.warn("modal-backdrop is now deprecated. Use uib-modal-backdrop instead."),f.addClass("modal-backdrop"),h.modalInClass&&(g?g(f,{addClass:h.modalInClass}).start():a.addClass(f,h.modalInClass),b.$on(c.NOW_CLOSING_EVENT,function(b,c){var d=c();g?g(f,{removeClass:h.modalInClass}).start().then(d):a.removeClass(f,h.modalInClass).then(d)}))}var g=null;return b.has("$animateCss")&&(g=b.get("$animateCss")),{replace:!0,templateUrl:"template/modal/backdrop.html",compile:function(a,b){return a.addClass(b.backdropClass),f}}}]).directive("modalWindow",["$modalStack","$q","$animate","$injector","$log","$modalSuppressWarning",function(a,b,c,d,e,f){var g=null;return d.has("$animateCss")&&(g=d.get("$animateCss")),{scope:{index:"@"},replace:!0,transclude:!0,templateUrl:function(a,b){return b.templateUrl||"template/modal/window.html"},link:function(d,h,i){f||e.warn("modal-window is now deprecated. Use uib-modal-window instead."),h.addClass(i.windowClass||""),h.addClass(i.windowTopClass||""),d.size=i.size,d.close=function(b){var c=a.getTop();c&&c.value.backdrop&&"static"!==c.value.backdrop&&b.target===b.currentTarget&&(b.preventDefault(),b.stopPropagation(),a.dismiss(c.key,"backdrop click"))},h.on("click",d.close),d.$isRendered=!0;var j=b.defer();i.$observe("modalRender",function(a){"true"==a&&j.resolve()}),j.promise.then(function(){var e=null;i.modalInClass&&(e=g?g(h,{addClass:i.modalInClass}).start():c.addClass(h,i.modalInClass),d.$on(a.NOW_CLOSING_EVENT,function(a,b){var d=b();g?g(h,{removeClass:i.modalInClass}).start().then(d):c.removeClass(h,i.modalInClass).then(d)})),b.when(e).then(function(){var a=h[0].querySelectorAll("[autofocus]");a.length?a[0].focus():h[0].focus()});var f=a.getTop();f&&a.modalRendered(f.key)})}}}]).directive("modalAnimationClass",["$log","$modalSuppressWarning",function(a,b){return{compile:function(c,d){b||a.warn("modal-animation-class is now deprecated. Use uib-modal-animation-class instead."),d.modalAnimation&&c.addClass(d.modalAnimationClass)}}}]).directive("modalTransclude",["$log","$modalSuppressWarning",function(a,b){return{link:function(c,d,e,f,g){b||a.warn("modal-transclude is now deprecated. Use uib-modal-transclude instead."),g(c.$parent,function(a){d.empty(),d.append(a)})}}}]).service("$modalStack",["$animate","$timeout","$document","$compile","$rootScope","$q","$injector","$$multiMap","$$stackedMap","$uibModalStack","$log","$modalSuppressWarning",function(a,b,c,d,e,f,g,h,i,j,k,l){l||k.warn("$modalStack is now deprecated. Use $uibModalStack instead."),angular.extend(this,j)}]).provider("$modal",["$uibModalProvider",function(a){angular.extend(this,a),this.$get=["$injector","$log","$modalSuppressWarning",function(b,c,d){return d||c.warn("$modal is now deprecated. Use $uibModal instead."),b.invoke(a.$get)}]}]),angular.module("ui.bootstrap.pagination",[]).controller("UibPaginationController",["$scope","$attrs","$parse",function(a,b,c){var d=this,e={$setViewValue:angular.noop},f=b.numPages?c(b.numPages).assign:angular.noop;this.init=function(g,h){e=g,this.config=h,e.$render=function(){d.render()},b.itemsPerPage?a.$parent.$watch(c(b.itemsPerPage),function(b){d.itemsPerPage=parseInt(b,10),a.totalPages=d.calculateTotalPages()}):this.itemsPerPage=h.itemsPerPage,a.$watch("totalItems",function(){a.totalPages=d.calculateTotalPages()}),a.$watch("totalPages",function(b){f(a.$parent,b),a.page>b?a.selectPage(b):e.$render()})},this.calculateTotalPages=function(){var b=this.itemsPerPage<1?1:Math.ceil(a.totalItems/this.itemsPerPage);return Math.max(b||0,1)},this.render=function(){a.page=parseInt(e.$viewValue,10)||1},a.selectPage=function(b,c){c&&c.preventDefault();var d=!a.ngDisabled||!c;d&&a.page!==b&&b>0&&b<=a.totalPages&&(c&&c.target&&c.target.blur(),e.$setViewValue(b),e.$render())},a.getText=function(b){return a[b+"Text"]||d.config[b+"Text"]},a.noPrevious=function(){return 1===a.page},a.noNext=function(){return a.page===a.totalPages}}]).constant("uibPaginationConfig",{itemsPerPage:10,boundaryLinks:!1,directionLinks:!0,firstText:"First",previousText:"Previous",nextText:"Next",lastText:"Last",rotate:!0}).directive("uibPagination",["$parse","uibPaginationConfig",function(a,b){return{restrict:"EA",scope:{totalItems:"=",firstText:"@",previousText:"@",nextText:"@",lastText:"@",ngDisabled:"="},require:["uibPagination","?ngModel"],controller:"UibPaginationController",controllerAs:"pagination",templateUrl:function(a,b){return b.templateUrl||"template/pagination/pagination.html"},replace:!0,link:function(c,d,e,f){function g(a,b,c){return{number:a,text:b,active:c}}function h(a,b){var c=[],d=1,e=b,f=angular.isDefined(k)&&b>k;f&&(l?(d=Math.max(a-Math.floor(k/2),1),e=d+k-1,e>b&&(e=b,d=e-k+1)):(d=(Math.ceil(a/k)-1)*k+1,e=Math.min(d+k-1,b)));for(var h=d;e>=h;h++){var i=g(h,h,h===a);c.push(i)}if(f&&!l){if(d>1){var j=g(d-1,"...",!1);c.unshift(j)}if(b>e){var m=g(e+1,"...",!1);c.push(m)}}return c}var i=f[0],j=f[1];if(j){var k=angular.isDefined(e.maxSize)?c.$parent.$eval(e.maxSize):b.maxSize,l=angular.isDefined(e.rotate)?c.$parent.$eval(e.rotate):b.rotate;c.boundaryLinks=angular.isDefined(e.boundaryLinks)?c.$parent.$eval(e.boundaryLinks):b.boundaryLinks,c.directionLinks=angular.isDefined(e.directionLinks)?c.$parent.$eval(e.directionLinks):b.directionLinks,i.init(j,b),e.maxSize&&c.$parent.$watch(a(e.maxSize),function(a){k=parseInt(a,10),i.render()});var m=i.render;i.render=function(){m(),c.page>0&&c.page<=c.totalPages&&(c.pages=h(c.page,c.totalPages))}}}}}]).constant("uibPagerConfig",{itemsPerPage:10,previousText:"« Previous",nextText:"Next »",align:!0}).directive("uibPager",["uibPagerConfig",function(a){return{restrict:"EA",scope:{totalItems:"=",previousText:"@",nextText:"@",ngDisabled:"="},require:["uibPager","?ngModel"],controller:"UibPaginationController",controllerAs:"pagination",templateUrl:function(a,b){return b.templateUrl||"template/pagination/pager.html"},replace:!0,link:function(b,c,d,e){var f=e[0],g=e[1];g&&(b.align=angular.isDefined(d.align)?b.$parent.$eval(d.align):a.align,f.init(g,a))}}}]),angular.module("ui.bootstrap.pagination").value("$paginationSuppressWarning",!1).controller("PaginationController",["$scope","$attrs","$parse","$controller","$element","$log","$paginationSuppressWarning",function(a,b,c,d,e,f,g){return g||f.warn("PaginationController is now deprecated. Use UibPaginationController instead."),d("UibPaginationController",{$scope:a,$element:e,$attrs:b})}]).directive("pagination",["$parse","uibPaginationConfig","$log","$paginationSuppressWarning",function(a,b,c,d){return{restrict:"EA",scope:{totalItems:"=",firstText:"@",previousText:"@",nextText:"@",lastText:"@",ngDisabled:"="},require:["pagination","?ngModel"],controller:"PaginationController",controllerAs:"pagination",templateUrl:function(a,b){return b.templateUrl||"template/pagination/pagination.html"},replace:!0,link:function(e,f,g,h){function i(a,b,c){return{number:a,text:b,active:c}}function j(a,b){var c=[],d=1,e=b,f=angular.isDefined(m)&&b>m;f&&(n?(d=Math.max(a-Math.floor(m/2),1),e=d+m-1,e>b&&(e=b,d=e-m+1)):(d=(Math.ceil(a/m)-1)*m+1,e=Math.min(d+m-1,b)));for(var g=d;e>=g;g++){var h=i(g,g,g===a);c.push(h)}if(f&&!n){if(d>1){var j=i(d-1,"...",!1);c.unshift(j)}if(b>e){var k=i(e+1,"...",!1);c.push(k)}}return c}d||c.warn("pagination is now deprecated. Use uib-pagination instead.");var k=h[0],l=h[1];if(l){var m=angular.isDefined(g.maxSize)?e.$parent.$eval(g.maxSize):b.maxSize,n=angular.isDefined(g.rotate)?e.$parent.$eval(g.rotate):b.rotate;e.boundaryLinks=angular.isDefined(g.boundaryLinks)?e.$parent.$eval(g.boundaryLinks):b.boundaryLinks,e.directionLinks=angular.isDefined(g.directionLinks)?e.$parent.$eval(g.directionLinks):b.directionLinks,k.init(l,b),g.maxSize&&e.$parent.$watch(a(g.maxSize),function(a){m=parseInt(a,10),k.render()});var o=k.render;k.render=function(){o(),e.page>0&&e.page<=e.totalPages&&(e.pages=j(e.page,e.totalPages))}}}}}]).directive("pager",["uibPagerConfig","$log","$paginationSuppressWarning",function(a,b,c){return{restrict:"EA",scope:{totalItems:"=",previousText:"@",nextText:"@",ngDisabled:"="},require:["pager","?ngModel"],controller:"PaginationController",controllerAs:"pagination",templateUrl:function(a,b){return b.templateUrl||"template/pagination/pager.html"},replace:!0,link:function(d,e,f,g){c||b.warn("pager is now deprecated. Use uib-pager instead.");var h=g[0],i=g[1];i&&(d.align=angular.isDefined(f.align)?d.$parent.$eval(f.align):a.align,h.init(i,a));
10 }}}]),angular.module("ui.bootstrap.tooltip",["ui.bootstrap.position","ui.bootstrap.stackedMap"]).provider("$uibTooltip",function(){function a(a){var b=/[A-Z]/g,c="-";return a.replace(b,function(a,b){return(b?c:"")+a.toLowerCase()})}var b={placement:"top",animation:!0,popupDelay:0,popupCloseDelay:500,useContentExp:!1},c={mouseenter:"mouseleave",click:"click",focus:"blur",none:""},d={};this.options=function(a){angular.extend(d,a)},this.setTriggers=function(a){angular.extend(c,a)},this.$get=["$window","$compile","$timeout","$document","$uibPosition","$interpolate","$rootScope","$parse","$$stackedMap",function(e,f,g,h,i,j,k,l,m){var n=m.createNew();return h.on("keypress",function(a){if(27===a.which){var b=n.top();b&&(b.value.close(),n.removeTop(),b=null)}}),function(e,k,m,o){function p(a){var b=(a||o.trigger||m).split(" "),d=b.map(function(a){return c[a]||a});return{show:b,hide:d}}o=angular.extend({},b,d,o);var q=a(e),r=j.startSymbol(),s=j.endSymbol(),t="<div "+q+'-popup title="'+r+"title"+s+'" '+(o.useContentExp?'content-exp="contentExp()" ':'content="'+r+"content"+s+'" ')+'placement="'+r+"placement"+s+'" popup-class="'+r+"popupClass"+s+'" animation="animation" is-open="isOpen"origin-scope="origScope" style="visibility: hidden; display: block;"></div>';return{compile:function(a,b){var c=f(t);return function(a,b,d,f){function j(){H.isOpen?q():m()}function m(){(!G||a.$eval(d[k+"Enable"]))&&(v(),H.popupDelay?C||(C=g(r,H.popupDelay,!1)):r())}function q(){s()}function r(){return C&&(g.cancel(C),C=null),B&&(g.cancel(B),B=null),H.content?(t(),void H.$evalAsync(function(){H.isOpen=!0,J&&angular.isFunction(J.assign)&&J.assign(H.origScope,H.isOpen),M()})):angular.noop}function s(){H&&(H.$evalAsync(function(){H.isOpen=!1,J&&angular.isFunction(J.assign)&&J.assign(H.origScope,H.isOpen)}),g.cancel(C),C=null,g.cancel(D),D=null,H.animation?B||(B=g(u,H.popupCloseDelay)):u())}function t(){z||(A=H.$new(),z=c(A,function(a){E?h.find("body").append(a):b.after(a)}),w())}function u(){x(),B=null,z&&(z.remove(),z=null),A&&(A.$destroy(),A=null)}function v(){H.title=d[k+"Title"],K?H.content=K(a):H.content=d[e],H.popupClass=d[k+"Class"],H.placement=angular.isDefined(d[k+"Placement"])?d[k+"Placement"]:o.placement;var b=parseInt(d[k+"PopupDelay"],10),c=parseInt(d[k+"PopupCloseDelay"],10);H.popupDelay=isNaN(b)?o.popupDelay:b,H.popupCloseDelay=isNaN(c)?o.popupCloseDelay:c}function w(){L.length=0,K?(L.push(a.$watch(K,function(a){H.content=a,!a&&H.isOpen&&s()})),L.push(A.$watch(function(){I||(I=!0,A.$$postDigest(function(){I=!1,H&&H.isOpen&&M()}))}))):L.push(d.$observe(e,function(a){H.content=a,!a&&H.isOpen?s():M()})),L.push(d.$observe(k+"Title",function(a){H.title=a,H.isOpen&&M()})),L.push(d.$observe(k+"Placement",function(a){H.placement=a?a:o.placement,H.isOpen&&M()}))}function x(){L.length&&(angular.forEach(L,function(a){a()}),L.length=0)}function y(){var a=d[k+"Trigger"];N(),F=p(a),"none"!==F.show&&F.show.forEach(function(a,c){a===F.hide[c]?b[0].addEventListener(a,j):a&&(b[0].addEventListener(a,m),F.hide[c].split(" ").forEach(function(a){b[0].addEventListener(a,q)})),b.on("keypress",function(a){27===a.which&&q()})})}var z,A,B,C,D,E=angular.isDefined(o.appendToBody)?o.appendToBody:!1,F=p(void 0),G=angular.isDefined(d[k+"Enable"]),H=a.$new(!0),I=!1,J=angular.isDefined(d[k+"IsOpen"])?l(d[k+"IsOpen"]):!1,K=o.useContentExp?l(d[e]):!1,L=[],M=function(){z&&z.html()&&(D||(D=g(function(){z.css({top:0,left:0});var a=i.positionElements(b,z,H.placement,E);a.top+="px",a.left+="px",a.visibility="visible",z.css(a),D=null},0,!1)))};H.origScope=a,H.isOpen=!1,n.add(H,{close:s}),H.contentExp=function(){return H.content},d.$observe("disabled",function(a){C&&a&&(g.cancel(C),C=null),a&&H.isOpen&&s()}),J&&a.$watch(J,function(a){!a===H.isOpen&&j()});var N=function(){F.show.forEach(function(a){b.unbind(a,m)}),F.hide.forEach(function(a){a.split(" ").forEach(function(a){b[0].removeEventListener(a,q)})})};y();var O=a.$eval(d[k+"Animation"]);H.animation=angular.isDefined(O)?!!O:o.animation;var P=a.$eval(d[k+"AppendToBody"]);E=angular.isDefined(P)?P:E,E&&a.$on("$locationChangeSuccess",function(){H.isOpen&&s()}),a.$on("$destroy",function(){g.cancel(B),g.cancel(C),g.cancel(D),N(),u(),H=null})}}}}}]}).directive("uibTooltipTemplateTransclude",["$animate","$sce","$compile","$templateRequest",function(a,b,c,d){return{link:function(e,f,g){var h,i,j,k=e.$eval(g.tooltipTemplateTranscludeScope),l=0,m=function(){i&&(i.remove(),i=null),h&&(h.$destroy(),h=null),j&&(a.leave(j).then(function(){i=null}),i=j,j=null)};e.$watch(b.parseAsResourceUrl(g.uibTooltipTemplateTransclude),function(b){var g=++l;b?(d(b,!0).then(function(d){if(g===l){var e=k.$new(),i=d,n=c(i)(e,function(b){m(),a.enter(b,f)});h=e,j=n,h.$emit("$includeContentLoaded",b)}},function(){g===l&&(m(),e.$emit("$includeContentError",b))}),e.$emit("$includeContentRequested",b)):m()}),e.$on("$destroy",m)}}}]).directive("uibTooltipClasses",function(){return{restrict:"A",link:function(a,b,c){a.placement&&b.addClass(a.placement),a.popupClass&&b.addClass(a.popupClass),a.animation()&&b.addClass(c.tooltipAnimationClass)}}}).directive("uibTooltipPopup",function(){return{replace:!0,scope:{content:"@",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"template/tooltip/tooltip-popup.html",link:function(a,b){b.addClass("tooltip")}}}).directive("uibTooltip",["$uibTooltip",function(a){return a("uibTooltip","tooltip","mouseenter")}]).directive("uibTooltipTemplatePopup",function(){return{replace:!0,scope:{contentExp:"&",placement:"@",popupClass:"@",animation:"&",isOpen:"&",originScope:"&"},templateUrl:"template/tooltip/tooltip-template-popup.html",link:function(a,b){b.addClass("tooltip")}}}).directive("uibTooltipTemplate",["$uibTooltip",function(a){return a("uibTooltipTemplate","tooltip","mouseenter",{useContentExp:!0})}]).directive("uibTooltipHtmlPopup",function(){return{replace:!0,scope:{contentExp:"&",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"template/tooltip/tooltip-html-popup.html",link:function(a,b){b.addClass("tooltip")}}}).directive("uibTooltipHtml",["$uibTooltip",function(a){return a("uibTooltipHtml","tooltip","mouseenter",{useContentExp:!0})}]),angular.module("ui.bootstrap.tooltip").value("$tooltipSuppressWarning",!1).provider("$tooltip",["$uibTooltipProvider",function(a){angular.extend(this,a),this.$get=["$log","$tooltipSuppressWarning","$injector",function(b,c,d){return c||b.warn("$tooltip is now deprecated. Use $uibTooltip instead."),d.invoke(a.$get)}]}]).directive("tooltipTemplateTransclude",["$animate","$sce","$compile","$templateRequest","$log","$tooltipSuppressWarning",function(a,b,c,d,e,f){return{link:function(g,h,i){f||e.warn("tooltip-template-transclude is now deprecated. Use uib-tooltip-template-transclude instead.");var j,k,l,m=g.$eval(i.tooltipTemplateTranscludeScope),n=0,o=function(){k&&(k.remove(),k=null),j&&(j.$destroy(),j=null),l&&(a.leave(l).then(function(){k=null}),k=l,l=null)};g.$watch(b.parseAsResourceUrl(i.tooltipTemplateTransclude),function(b){var e=++n;b?(d(b,!0).then(function(d){if(e===n){var f=m.$new(),g=d,i=c(g)(f,function(b){o(),a.enter(b,h)});j=f,l=i,j.$emit("$includeContentLoaded",b)}},function(){e===n&&(o(),g.$emit("$includeContentError",b))}),g.$emit("$includeContentRequested",b)):o()}),g.$on("$destroy",o)}}}]).directive("tooltipClasses",["$log","$tooltipSuppressWarning",function(a,b){return{restrict:"A",link:function(c,d,e){b||a.warn("tooltip-classes is now deprecated. Use uib-tooltip-classes instead."),c.placement&&d.addClass(c.placement),c.popupClass&&d.addClass(c.popupClass),c.animation()&&d.addClass(e.tooltipAnimationClass)}}}]).directive("tooltipPopup",["$log","$tooltipSuppressWarning",function(a,b){return{replace:!0,scope:{content:"@",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"template/tooltip/tooltip-popup.html",link:function(c,d){b||a.warn("tooltip-popup is now deprecated. Use uib-tooltip-popup instead."),d.addClass("tooltip")}}}]).directive("tooltip",["$tooltip",function(a){return a("tooltip","tooltip","mouseenter")}]).directive("tooltipTemplatePopup",["$log","$tooltipSuppressWarning",function(a,b){return{replace:!0,scope:{contentExp:"&",placement:"@",popupClass:"@",animation:"&",isOpen:"&",originScope:"&"},templateUrl:"template/tooltip/tooltip-template-popup.html",link:function(c,d){b||a.warn("tooltip-template-popup is now deprecated. Use uib-tooltip-template-popup instead."),d.addClass("tooltip")}}}]).directive("tooltipTemplate",["$tooltip",function(a){return a("tooltipTemplate","tooltip","mouseenter",{useContentExp:!0})}]).directive("tooltipHtmlPopup",["$log","$tooltipSuppressWarning",function(a,b){return{replace:!0,scope:{contentExp:"&",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"template/tooltip/tooltip-html-popup.html",link:function(c,d){b||a.warn("tooltip-html-popup is now deprecated. Use uib-tooltip-html-popup instead."),d.addClass("tooltip")}}}]).directive("tooltipHtml",["$tooltip",function(a){return a("tooltipHtml","tooltip","mouseenter",{useContentExp:!0})}]),angular.module("ui.bootstrap.popover",["ui.bootstrap.tooltip"]).directive("uibPopoverTemplatePopup",function(){return{replace:!0,scope:{title:"@",contentExp:"&",placement:"@",popupClass:"@",animation:"&",isOpen:"&",originScope:"&"},templateUrl:"template/popover/popover-template.html",link:function(a,b){b.addClass("popover")}}}).directive("uibPopoverTemplate",["$uibTooltip",function(a){return a("uibPopoverTemplate","popover","click",{useContentExp:!0})}]).directive("uibPopoverHtmlPopup",function(){return{replace:!0,scope:{contentExp:"&",title:"@",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"template/popover/popover-html.html",link:function(a,b){b.addClass("popover")}}}).directive("uibPopoverHtml",["$uibTooltip",function(a){return a("uibPopoverHtml","popover","click",{useContentExp:!0})}]).directive("uibPopoverPopup",function(){return{replace:!0,scope:{title:"@",content:"@",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"template/popover/popover.html",link:function(a,b){b.addClass("popover")}}}).directive("uibPopover",["$uibTooltip",function(a){return a("uibPopover","popover","click")}]),angular.module("ui.bootstrap.popover").value("$popoverSuppressWarning",!1).directive("popoverTemplatePopup",["$log","$popoverSuppressWarning",function(a,b){return{replace:!0,scope:{title:"@",contentExp:"&",placement:"@",popupClass:"@",animation:"&",isOpen:"&",originScope:"&"},templateUrl:"template/popover/popover-template.html",link:function(c,d){b||a.warn("popover-template-popup is now deprecated. Use uib-popover-template-popup instead."),d.addClass("popover")}}}]).directive("popoverTemplate",["$tooltip",function(a){return a("popoverTemplate","popover","click",{useContentExp:!0})}]).directive("popoverHtmlPopup",["$log","$popoverSuppressWarning",function(a,b){return{replace:!0,scope:{contentExp:"&",title:"@",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"template/popover/popover-html.html",link:function(c,d){b||a.warn("popover-html-popup is now deprecated. Use uib-popover-html-popup instead."),d.addClass("popover")}}}]).directive("popoverHtml",["$tooltip",function(a){return a("popoverHtml","popover","click",{useContentExp:!0})}]).directive("popoverPopup",["$log","$popoverSuppressWarning",function(a,b){return{replace:!0,scope:{title:"@",content:"@",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"template/popover/popover.html",link:function(c,d){b||a.warn("popover-popup is now deprecated. Use uib-popover-popup instead."),d.addClass("popover")}}}]).directive("popover",["$tooltip",function(a){return a("popover","popover","click")}]),angular.module("ui.bootstrap.progressbar",[]).constant("uibProgressConfig",{animate:!0,max:100}).controller("UibProgressController",["$scope","$attrs","uibProgressConfig",function(a,b,c){var d=this,e=angular.isDefined(b.animate)?a.$parent.$eval(b.animate):c.animate;this.bars=[],a.max=angular.isDefined(a.max)?a.max:c.max,this.addBar=function(b,c,f){e||c.css({transition:"none"}),this.bars.push(b),b.max=a.max,b.title=f&&angular.isDefined(f.title)?f.title:"progressbar",b.$watch("value",function(a){b.recalculatePercentage()}),b.recalculatePercentage=function(){b.percent=+(100*b.value/b.max).toFixed(2);var a=d.bars.reduce(function(a,b){return a+b.percent},0);a>100&&(b.percent-=a-100)},b.$on("$destroy",function(){c=null,d.removeBar(b)})},this.removeBar=function(a){this.bars.splice(this.bars.indexOf(a),1)},a.$watch("max",function(b){d.bars.forEach(function(b){b.max=a.max,b.recalculatePercentage()})})}]).directive("uibProgress",function(){return{replace:!0,transclude:!0,controller:"UibProgressController",require:"uibProgress",scope:{max:"=?"},templateUrl:"template/progressbar/progress.html"}}).directive("uibBar",function(){return{replace:!0,transclude:!0,require:"^uibProgress",scope:{value:"=",type:"@"},templateUrl:"template/progressbar/bar.html",link:function(a,b,c,d){d.addBar(a,b,c)}}}).directive("uibProgressbar",function(){return{replace:!0,transclude:!0,controller:"UibProgressController",scope:{value:"=",max:"=?",type:"@"},templateUrl:"template/progressbar/progressbar.html",link:function(a,b,c,d){d.addBar(a,angular.element(b.children()[0]),{title:c.title})}}}),angular.module("ui.bootstrap.progressbar").value("$progressSuppressWarning",!1).controller("ProgressController",["$scope","$attrs","$controller","$log","$progressSuppressWarning",function(a,b,c,d,e){return e||d.warn("ProgressController is now deprecated. Use UibProgressController instead."),c("UibProgressController",{$scope:a,$attrs:b})}]).directive("progress",["$log","$progressSuppressWarning",function(a,b){return{replace:!0,transclude:!0,controller:"ProgressController",require:"progress",scope:{max:"=?",title:"@?"},templateUrl:"template/progressbar/progress.html",link:function(){b||a.warn("progress is now deprecated. Use uib-progress instead.")}}}]).directive("bar",["$log","$progressSuppressWarning",function(a,b){return{replace:!0,transclude:!0,require:"^progress",scope:{value:"=",type:"@"},templateUrl:"template/progressbar/bar.html",link:function(c,d,e,f){b||a.warn("bar is now deprecated. Use uib-bar instead."),f.addBar(c,d)}}}]).directive("progressbar",["$log","$progressSuppressWarning",function(a,b){return{replace:!0,transclude:!0,controller:"ProgressController",scope:{value:"=",max:"=?",type:"@"},templateUrl:"template/progressbar/progressbar.html",link:function(c,d,e,f){b||a.warn("progressbar is now deprecated. Use uib-progressbar instead."),f.addBar(c,angular.element(d.children()[0]),{title:e.title})}}}]),angular.module("ui.bootstrap.rating",[]).constant("uibRatingConfig",{max:5,stateOn:null,stateOff:null,titles:["one","two","three","four","five"]}).controller("UibRatingController",["$scope","$attrs","uibRatingConfig",function(a,b,c){var d={$setViewValue:angular.noop};this.init=function(e){d=e,d.$render=this.render,d.$formatters.push(function(a){return angular.isNumber(a)&&a<<0!==a&&(a=Math.round(a)),a}),this.stateOn=angular.isDefined(b.stateOn)?a.$parent.$eval(b.stateOn):c.stateOn,this.stateOff=angular.isDefined(b.stateOff)?a.$parent.$eval(b.stateOff):c.stateOff;var f=angular.isDefined(b.titles)?a.$parent.$eval(b.titles):c.titles;this.titles=angular.isArray(f)&&f.length>0?f:c.titles;var g=angular.isDefined(b.ratingStates)?a.$parent.$eval(b.ratingStates):new Array(angular.isDefined(b.max)?a.$parent.$eval(b.max):c.max);a.range=this.buildTemplateObjects(g)},this.buildTemplateObjects=function(a){for(var b=0,c=a.length;c>b;b++)a[b]=angular.extend({index:b},{stateOn:this.stateOn,stateOff:this.stateOff,title:this.getTitle(b)},a[b]);return a},this.getTitle=function(a){return a>=this.titles.length?a+1:this.titles[a]},a.rate=function(b){!a.readonly&&b>=0&&b<=a.range.length&&(d.$setViewValue(d.$viewValue===b?0:b),d.$render())},a.enter=function(b){a.readonly||(a.value=b),a.onHover({value:b})},a.reset=function(){a.value=d.$viewValue,a.onLeave()},a.onKeydown=function(b){/(37|38|39|40)/.test(b.which)&&(b.preventDefault(),b.stopPropagation(),a.rate(a.value+(38===b.which||39===b.which?1:-1)))},this.render=function(){a.value=d.$viewValue}}]).directive("uibRating",function(){return{require:["uibRating","ngModel"],scope:{readonly:"=?",onHover:"&",onLeave:"&"},controller:"UibRatingController",templateUrl:"template/rating/rating.html",replace:!0,link:function(a,b,c,d){var e=d[0],f=d[1];e.init(f)}}}),angular.module("ui.bootstrap.rating").value("$ratingSuppressWarning",!1).controller("RatingController",["$scope","$attrs","$controller","$log","$ratingSuppressWarning",function(a,b,c,d,e){return e||d.warn("RatingController is now deprecated. Use UibRatingController instead."),c("UibRatingController",{$scope:a,$attrs:b})}]).directive("rating",["$log","$ratingSuppressWarning",function(a,b){return{require:["rating","ngModel"],scope:{readonly:"=?",onHover:"&",onLeave:"&"},controller:"RatingController",templateUrl:"template/rating/rating.html",replace:!0,link:function(c,d,e,f){b||a.warn("rating is now deprecated. Use uib-rating instead.");var g=f[0],h=f[1];g.init(h)}}}]),angular.module("ui.bootstrap.tabs",[]).controller("UibTabsetController",["$scope",function(a){var b=this,c=b.tabs=a.tabs=[];b.select=function(a){angular.forEach(c,function(b){b.active&&b!==a&&(b.active=!1,b.onDeselect(),a.selectCalled=!1)}),a.active=!0,a.selectCalled||(a.onSelect(),a.selectCalled=!0)},b.addTab=function(a){c.push(a),1===c.length&&a.active!==!1?a.active=!0:a.active?b.select(a):a.active=!1},b.removeTab=function(a){var e=c.indexOf(a);if(a.active&&c.length>1&&!d){var f=e==c.length-1?e-1:e+1;b.select(c[f])}c.splice(e,1)};var d;a.$on("$destroy",function(){d=!0})}]).directive("uibTabset",function(){return{restrict:"EA",transclude:!0,replace:!0,scope:{type:"@"},controller:"UibTabsetController",templateUrl:"template/tabs/tabset.html",link:function(a,b,c){a.vertical=angular.isDefined(c.vertical)?a.$parent.$eval(c.vertical):!1,a.justified=angular.isDefined(c.justified)?a.$parent.$eval(c.justified):!1}}}).directive("uibTab",["$parse",function(a){return{require:"^uibTabset",restrict:"EA",replace:!0,templateUrl:"template/tabs/tab.html",transclude:!0,scope:{active:"=?",heading:"@",onSelect:"&select",onDeselect:"&deselect"},controller:function(){},link:function(b,c,d,e,f){b.$watch("active",function(a){a&&e.select(b)}),b.disabled=!1,d.disable&&b.$parent.$watch(a(d.disable),function(a){b.disabled=!!a}),b.select=function(){b.disabled||(b.active=!0)},e.addTab(b),b.$on("$destroy",function(){e.removeTab(b)}),b.$transcludeFn=f}}}]).directive("uibTabHeadingTransclude",function(){return{restrict:"A",require:["?^uibTab","?^tab"],link:function(a,b){a.$watch("headingElement",function(a){a&&(b.html(""),b.append(a))})}}}).directive("uibTabContentTransclude",function(){function a(a){return a.tagName&&(a.hasAttribute("tab-heading")||a.hasAttribute("data-tab-heading")||a.hasAttribute("x-tab-heading")||a.hasAttribute("uib-tab-heading")||a.hasAttribute("data-uib-tab-heading")||a.hasAttribute("x-uib-tab-heading")||"tab-heading"===a.tagName.toLowerCase()||"data-tab-heading"===a.tagName.toLowerCase()||"x-tab-heading"===a.tagName.toLowerCase()||"uib-tab-heading"===a.tagName.toLowerCase()||"data-uib-tab-heading"===a.tagName.toLowerCase()||"x-uib-tab-heading"===a.tagName.toLowerCase())}return{restrict:"A",require:["?^uibTabset","?^tabset"],link:function(b,c,d){var e=b.$eval(d.uibTabContentTransclude);e.$transcludeFn(e.$parent,function(b){angular.forEach(b,function(b){a(b)?e.headingElement=b:c.append(b)})})}}}),angular.module("ui.bootstrap.tabs").value("$tabsSuppressWarning",!1).controller("TabsetController",["$scope","$controller","$log","$tabsSuppressWarning",function(a,b,c,d){return d||c.warn("TabsetController is now deprecated. Use UibTabsetController instead."),b("UibTabsetController",{$scope:a})}]).directive("tabset",["$log","$tabsSuppressWarning",function(a,b){return{restrict:"EA",transclude:!0,replace:!0,scope:{type:"@"},controller:"TabsetController",templateUrl:"template/tabs/tabset.html",link:function(c,d,e){b||a.warn("tabset is now deprecated. Use uib-tabset instead."),c.vertical=angular.isDefined(e.vertical)?c.$parent.$eval(e.vertical):!1,c.justified=angular.isDefined(e.justified)?c.$parent.$eval(e.justified):!1}}}]).directive("tab",["$parse","$log","$tabsSuppressWarning",function(a,b,c){return{require:"^tabset",restrict:"EA",replace:!0,templateUrl:"template/tabs/tab.html",transclude:!0,scope:{active:"=?",heading:"@",onSelect:"&select",onDeselect:"&deselect"},controller:function(){},link:function(d,e,f,g,h){c||b.warn("tab is now deprecated. Use uib-tab instead."),d.$watch("active",function(a){a&&g.select(d)}),d.disabled=!1,f.disable&&d.$parent.$watch(a(f.disable),function(a){d.disabled=!!a}),d.select=function(){d.disabled||(d.active=!0)},g.addTab(d),d.$on("$destroy",function(){g.removeTab(d)}),d.$transcludeFn=h}}}]).directive("tabHeadingTransclude",["$log","$tabsSuppressWarning",function(a,b){return{restrict:"A",require:"^tab",link:function(c,d){b||a.warn("tab-heading-transclude is now deprecated. Use uib-tab-heading-transclude instead."),c.$watch("headingElement",function(a){a&&(d.html(""),d.append(a))})}}}]).directive("tabContentTransclude",["$log","$tabsSuppressWarning",function(a,b){function c(a){return a.tagName&&(a.hasAttribute("tab-heading")||a.hasAttribute("data-tab-heading")||a.hasAttribute("x-tab-heading")||"tab-heading"===a.tagName.toLowerCase()||"data-tab-heading"===a.tagName.toLowerCase()||"x-tab-heading"===a.tagName.toLowerCase())}return{restrict:"A",require:"^tabset",link:function(d,e,f){b||a.warn("tab-content-transclude is now deprecated. Use uib-tab-content-transclude instead.");var g=d.$eval(f.tabContentTransclude);g.$transcludeFn(g.$parent,function(a){angular.forEach(a,function(a){c(a)?g.headingElement=a:e.append(a)})})}}}]),angular.module("ui.bootstrap.timepicker",[]).constant("uibTimepickerConfig",{hourStep:1,minuteStep:1,showMeridian:!0,meridians:null,readonlyInput:!1,mousewheel:!0,arrowkeys:!0,showSpinners:!0}).controller("UibTimepickerController",["$scope","$attrs","$parse","$log","$locale","uibTimepickerConfig",function(a,b,c,d,e,f){function g(){var b=parseInt(a.hours,10),c=a.showMeridian?b>0&&13>b:b>=0&&24>b;return c?(a.showMeridian&&(12===b&&(b=0),a.meridian===q[1]&&(b+=12)),b):void 0}function h(){var b=parseInt(a.minutes,10);return b>=0&&60>b?b:void 0}function i(a){return angular.isDefined(a)&&a.toString().length<2?"0"+a:a.toString()}function j(a){k(),p.$setViewValue(new Date(o)),l(a)}function k(){p.$setValidity("time",!0),a.invalidHours=!1,a.invalidMinutes=!1}function l(b){var c=o.getHours(),d=o.getMinutes();a.showMeridian&&(c=0===c||12===c?12:c%12),a.hours="h"===b?c:i(c),"m"!==b&&(a.minutes=i(d)),a.meridian=o.getHours()<12?q[0]:q[1]}function m(a,b){var c=new Date(a.getTime()+6e4*b),d=new Date(a);return d.setHours(c.getHours(),c.getMinutes()),d}function n(a){o=m(o,a),j()}var o=new Date,p={$setViewValue:angular.noop},q=angular.isDefined(b.meridians)?a.$parent.$eval(b.meridians):f.meridians||e.DATETIME_FORMATS.AMPMS;this.init=function(c,d){p=c,p.$render=this.render,p.$formatters.unshift(function(a){return a?new Date(a):null});var e=d.eq(0),g=d.eq(1),h=angular.isDefined(b.mousewheel)?a.$parent.$eval(b.mousewheel):f.mousewheel;h&&this.setupMousewheelEvents(e,g);var i=angular.isDefined(b.arrowkeys)?a.$parent.$eval(b.arrowkeys):f.arrowkeys;i&&this.setupArrowkeyEvents(e,g),a.readonlyInput=angular.isDefined(b.readonlyInput)?a.$parent.$eval(b.readonlyInput):f.readonlyInput,this.setupInputEvents(e,g)};var r=f.hourStep;b.hourStep&&a.$parent.$watch(c(b.hourStep),function(a){r=parseInt(a,10)});var s=f.minuteStep;b.minuteStep&&a.$parent.$watch(c(b.minuteStep),function(a){s=parseInt(a,10)});var t;a.$parent.$watch(c(b.min),function(a){var b=new Date(a);t=isNaN(b)?void 0:b});var u;a.$parent.$watch(c(b.max),function(a){var b=new Date(a);u=isNaN(b)?void 0:b}),a.noIncrementHours=function(){var a=m(o,60*r);return a>u||o>a&&t>a},a.noDecrementHours=function(){var a=m(o,60*-r);return t>a||a>o&&a>u},a.noIncrementMinutes=function(){var a=m(o,s);return a>u||o>a&&t>a},a.noDecrementMinutes=function(){var a=m(o,-s);return t>a||a>o&&a>u},a.noToggleMeridian=function(){return o.getHours()<13?m(o,720)>u:m(o,-720)<t},a.showMeridian=f.showMeridian,b.showMeridian&&a.$parent.$watch(c(b.showMeridian),function(b){if(a.showMeridian=!!b,p.$error.time){var c=g(),d=h();angular.isDefined(c)&&angular.isDefined(d)&&(o.setHours(c),j())}else l()}),this.setupMousewheelEvents=function(b,c){var d=function(a){a.originalEvent&&(a=a.originalEvent);var b=a.wheelDelta?a.wheelDelta:-a.deltaY;return a.detail||b>0};b.bind("mousewheel wheel",function(b){a.$apply(d(b)?a.incrementHours():a.decrementHours()),b.preventDefault()}),c.bind("mousewheel wheel",function(b){a.$apply(d(b)?a.incrementMinutes():a.decrementMinutes()),b.preventDefault()})},this.setupArrowkeyEvents=function(b,c){b.bind("keydown",function(b){38===b.which?(b.preventDefault(),a.incrementHours(),a.$apply()):40===b.which&&(b.preventDefault(),a.decrementHours(),a.$apply())}),c.bind("keydown",function(b){38===b.which?(b.preventDefault(),a.incrementMinutes(),a.$apply()):40===b.which&&(b.preventDefault(),a.decrementMinutes(),a.$apply())})},this.setupInputEvents=function(b,c){if(a.readonlyInput)return a.updateHours=angular.noop,void(a.updateMinutes=angular.noop);var d=function(b,c){p.$setViewValue(null),p.$setValidity("time",!1),angular.isDefined(b)&&(a.invalidHours=b),angular.isDefined(c)&&(a.invalidMinutes=c)};a.updateHours=function(){var a=g(),b=h();angular.isDefined(a)&&angular.isDefined(b)?(o.setHours(a),t>o||o>u?d(!0):j("h")):d(!0)},b.bind("blur",function(b){!a.invalidHours&&a.hours<10&&a.$apply(function(){a.hours=i(a.hours)})}),a.updateMinutes=function(){var a=h(),b=g();angular.isDefined(a)&&angular.isDefined(b)?(o.setMinutes(a),t>o||o>u?d(void 0,!0):j("m")):d(void 0,!0)},c.bind("blur",function(b){!a.invalidMinutes&&a.minutes<10&&a.$apply(function(){a.minutes=i(a.minutes)})})},this.render=function(){var b=p.$viewValue;isNaN(b)?(p.$setValidity("time",!1),d.error('Timepicker directive: "ng-model" value must be a Date object, a number of milliseconds since 01.01.1970 or a string representing an RFC2822 or ISO 8601 date.')):(b&&(o=b),t>o||o>u?(p.$setValidity("time",!1),a.invalidHours=!0,a.invalidMinutes=!0):k(),l())},a.showSpinners=angular.isDefined(b.showSpinners)?a.$parent.$eval(b.showSpinners):f.showSpinners,a.incrementHours=function(){a.noIncrementHours()||n(60*r)},a.decrementHours=function(){a.noDecrementHours()||n(60*-r)},a.incrementMinutes=function(){a.noIncrementMinutes()||n(s)},a.decrementMinutes=function(){a.noDecrementMinutes()||n(-s)},a.toggleMeridian=function(){a.noToggleMeridian()||n(720*(o.getHours()<12?1:-1))}}]).directive("uibTimepicker",function(){return{restrict:"EA",require:["uibTimepicker","?^ngModel"],controller:"UibTimepickerController",controllerAs:"timepicker",replace:!0,scope:{},templateUrl:function(a,b){return b.templateUrl||"template/timepicker/timepicker.html"},link:function(a,b,c,d){var e=d[0],f=d[1];f&&e.init(f,b.find("input"))}}}),angular.module("ui.bootstrap.timepicker").value("$timepickerSuppressWarning",!1).controller("TimepickerController",["$scope","$attrs","$controller","$log","$timepickerSuppressWarning",function(a,b,c,d,e){return e||d.warn("TimepickerController is now deprecated. Use UibTimepickerController instead."),c("UibTimepickerController",{$scope:a,$attrs:b})}]).directive("timepicker",["$log","$timepickerSuppressWarning",function(a,b){return{restrict:"EA",require:["timepicker","?^ngModel"],controller:"TimepickerController",controllerAs:"timepicker",replace:!0,scope:{},templateUrl:function(a,b){return b.templateUrl||"template/timepicker/timepicker.html"},link:function(c,d,e,f){b||a.warn("timepicker is now deprecated. Use uib-timepicker instead.");var g=f[0],h=f[1];h&&g.init(h,d.find("input"))}}}]),angular.module("ui.bootstrap.typeahead",["ui.bootstrap.position"]).factory("uibTypeaheadParser",["$parse",function(a){var b=/^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w\d]*))\s+in\s+([\s\S]+?)$/;return{parse:function(c){var d=c.match(b);if(!d)throw new Error('Expected typeahead specification in form of "_modelValue_ (as _label_)? for _item_ in _collection_" but got "'+c+'".');return{itemName:d[3],source:a(d[4]),viewMapper:a(d[2]||d[1]),modelMapper:a(d[1])}}}}]).directive("uibTypeahead",["$compile","$parse","$q","$timeout","$document","$window","$rootScope","$uibPosition","uibTypeaheadParser",function(a,b,c,d,e,f,g,h,i){var j=[9,13,27,38,40],k=200;return{require:["ngModel","^?ngModelOptions"],link:function(l,m,n,o){function p(){L.moveInProgress||(L.moveInProgress=!0,L.$digest()),T&&d.cancel(T),T=d(function(){L.matches.length&&q(),L.moveInProgress=!1},k)}function q(){L.position=D?h.offset(m):h.position(m),L.position.top+=m.prop("offsetHeight")}var r=o[0],s=o[1],t=l.$eval(n.typeaheadMinLength);t||0===t||(t=1);var u,v,w=l.$eval(n.typeaheadWaitMs)||0,x=l.$eval(n.typeaheadEditable)!==!1,y=b(n.typeaheadLoading).assign||angular.noop,z=b(n.typeaheadOnSelect),A=angular.isDefined(n.typeaheadSelectOnBlur)?l.$eval(n.typeaheadSelectOnBlur):!1,B=b(n.typeaheadNoResults).assign||angular.noop,C=n.typeaheadInputFormatter?b(n.typeaheadInputFormatter):void 0,D=n.typeaheadAppendToBody?l.$eval(n.typeaheadAppendToBody):!1,E=n.typeaheadAppendToElementId||!1,F=l.$eval(n.typeaheadFocusFirst)!==!1,G=n.typeaheadSelectOnExact?l.$eval(n.typeaheadSelectOnExact):!1,H=b(n.ngModel),I=b(n.ngModel+"($$$p)"),J=function(a,b){return angular.isFunction(H(l))&&s&&s.$options&&s.$options.getterSetter?I(a,{$$$p:b}):H.assign(a,b)},K=i.parse(n.uibTypeahead),L=l.$new(),M=l.$on("$destroy",function(){L.$destroy()});L.$on("$destroy",M);var N="typeahead-"+L.$id+"-"+Math.floor(1e4*Math.random());m.attr({"aria-autocomplete":"list","aria-expanded":!1,"aria-owns":N});var O=angular.element("<div uib-typeahead-popup></div>");O.attr({id:N,matches:"matches",active:"activeIdx",select:"select(activeIdx)","move-in-progress":"moveInProgress",query:"query",position:"position"}),angular.isDefined(n.typeaheadTemplateUrl)&&O.attr("template-url",n.typeaheadTemplateUrl),angular.isDefined(n.typeaheadPopupTemplateUrl)&&O.attr("popup-template-url",n.typeaheadPopupTemplateUrl);var P=function(){L.matches=[],L.activeIdx=-1,m.attr("aria-expanded",!1)},Q=function(a){return N+"-option-"+a};L.$watch("activeIdx",function(a){0>a?m.removeAttr("aria-activedescendant"):m.attr("aria-activedescendant",Q(a))});var R=function(a,b){return L.matches.length>b&&a?a.toUpperCase()===L.matches[b].label.toUpperCase():!1},S=function(a){var b={$viewValue:a};y(l,!0),B(l,!1),c.when(K.source(l,b)).then(function(c){var d=a===r.$viewValue;if(d&&u)if(c&&c.length>0){L.activeIdx=F?0:-1,B(l,!1),L.matches.length=0;for(var e=0;e<c.length;e++)b[K.itemName]=c[e],L.matches.push({id:Q(e),label:K.viewMapper(L,b),model:c[e]});L.query=a,q(),m.attr("aria-expanded",!0),G&&1===L.matches.length&&R(a,0)&&L.select(0)}else P(),B(l,!0);d&&y(l,!1)},function(){P(),y(l,!1),B(l,!0)})};D&&(angular.element(f).bind("resize",p),e.find("body").bind("scroll",p));var T;L.moveInProgress=!1,P(),L.query=void 0;var U,V=function(a){U=d(function(){S(a)},w)},W=function(){U&&d.cancel(U)};r.$parsers.unshift(function(a){return u=!0,0===t||a&&a.length>=t?w>0?(W(),V(a)):S(a):(y(l,!1),W(),P()),x?a:a?void r.$setValidity("editable",!1):(r.$setValidity("editable",!0),null)}),r.$formatters.push(function(a){var b,c,d={};return x||r.$setValidity("editable",!0),C?(d.$model=a,C(l,d)):(d[K.itemName]=a,b=K.viewMapper(l,d),d[K.itemName]=void 0,c=K.viewMapper(l,d),b!==c?b:a)}),L.select=function(a){var b,c,e={};v=!0,e[K.itemName]=c=L.matches[a].model,b=K.modelMapper(l,e),J(l,b),r.$setValidity("editable",!0),r.$setValidity("parse",!0),z(l,{$item:c,$model:b,$label:K.viewMapper(l,e)}),P(),L.$eval(n.typeaheadFocusOnSelect)!==!1&&d(function(){m[0].focus()},0,!1)},m.bind("keydown",function(a){if(0!==L.matches.length&&-1!==j.indexOf(a.which)){if(-1===L.activeIdx&&(9===a.which||13===a.which))return P(),void L.$digest();a.preventDefault(), 10 }}}]),angular.module("ui.bootstrap.tooltip",["ui.bootstrap.position","ui.bootstrap.stackedMap"]).provider("$uibTooltip",function(){function a(a){var b=/[A-Z]/g,c="-";return a.replace(b,function(a,b){return(b?c:"")+a.toLowerCase()})}var b={placement:"top",animation:!0,popupDelay:0,popupCloseDelay:500,useContentExp:!1},c={mouseenter:"mouseleave",click:"click",focus:"blur",none:""},d={};this.options=function(a){angular.extend(d,a)},this.setTriggers=function(a){angular.extend(c,a)},this.$get=["$window","$compile","$timeout","$document","$uibPosition","$interpolate","$rootScope","$parse","$$stackedMap",function(e,f,g,h,i,j,k,l,m){var n=m.createNew();return h.on("keypress",function(a){if(27===a.which){var b=n.top();b&&(b.value.close(),n.removeTop(),b=null)}}),function(e,k,m,o){function p(a){var b=(a||o.trigger||m).split(" "),d=b.map(function(a){return c[a]||a});return{show:b,hide:d}}o=angular.extend({},b,d,o);var q=a(e),r=j.startSymbol(),s=j.endSymbol(),t="<div "+q+'-popup title="'+r+"title"+s+'" '+(o.useContentExp?'content-exp="contentExp()" ':'content="'+r+"content"+s+'" ')+'placement="'+r+"placement"+s+'" popup-class="'+r+"popupClass"+s+'" animation="animation" is-open="isOpen"origin-scope="origScope" style="visibility: hidden; display: block;"></div>';return{compile:function(a,b){var c=f(t);return function(a,b,d,f){function j(){H.isOpen?q():m()}function m(){(!G||a.$eval(d[k+"Enable"]))&&(v(),H.popupDelay?C||(C=g(r,H.popupDelay,!1)):r())}function q(){s()}function r(){return C&&(g.cancel(C),C=null),B&&(g.cancel(B),B=null),H.content?(t(),void H.$evalAsync(function(){H.isOpen=!0,J&&angular.isFunction(J.assign)&&J.assign(H.origScope,H.isOpen),M()})):angular.noop}function s(){H&&(H.$evalAsync(function(){H.isOpen=!1,J&&angular.isFunction(J.assign)&&J.assign(H.origScope,H.isOpen)}),g.cancel(C),C=null,g.cancel(D),D=null,H.animation?B||(B=g(u,H.popupCloseDelay)):u())}function t(){z||(A=H.$new(),z=c(A,function(a){E?h.find("body").append(a):b.after(a)}),w())}function u(){x(),B=null,z&&(z.remove(),z=null),A&&(A.$destroy(),A=null)}function v(){H.title=d[k+"Title"],K?H.content=K(a):H.content=d[e],H.popupClass=d[k+"Class"],H.placement=angular.isDefined(d[k+"Placement"])?d[k+"Placement"]:o.placement;var b=parseInt(d[k+"PopupDelay"],10),c=parseInt(d[k+"PopupCloseDelay"],10);H.popupDelay=isNaN(b)?o.popupDelay:b,H.popupCloseDelay=isNaN(c)?o.popupCloseDelay:c}function w(){L.length=0,K?(L.push(a.$watch(K,function(a){H.content=a,!a&&H.isOpen&&s()})),L.push(A.$watch(function(){I||(I=!0,A.$$postDigest(function(){I=!1,H&&H.isOpen&&M()}))}))):L.push(d.$observe(e,function(a){H.content=a,!a&&H.isOpen?s():M()})),L.push(d.$observe(k+"Title",function(a){H.title=a,H.isOpen&&M()})),L.push(d.$observe(k+"Placement",function(a){H.placement=a?a:o.placement,H.isOpen&&M()}))}function x(){L.length&&(angular.forEach(L,function(a){a()}),L.length=0)}function y(){var a=d[k+"Trigger"];N(),F=p(a),"none"!==F.show&&F.show.forEach(function(a,c){a===F.hide[c]?b[0].addEventListener(a,j):a&&(b[0].addEventListener(a,m),F.hide[c].split(" ").forEach(function(a){b[0].addEventListener(a,q)})),b.on("keypress",function(a){27===a.which&&q()})})}var z,A,B,C,D,E=angular.isDefined(o.appendToBody)?o.appendToBody:!1,F=p(void 0),G=angular.isDefined(d[k+"Enable"]),H=a.$new(!0),I=!1,J=angular.isDefined(d[k+"IsOpen"])?l(d[k+"IsOpen"]):!1,K=o.useContentExp?l(d[e]):!1,L=[],M=function(){z&&z.html()&&(D||(D=g(function(){z.css({top:0,left:0});var a=i.positionElements(b,z,H.placement,E);a.top+="px",a.left+="px",a.visibility="visible",z.css(a),D=null},0,!1)))};H.origScope=a,H.isOpen=!1,n.add(H,{close:s}),H.contentExp=function(){return H.content},d.$observe("disabled",function(a){C&&a&&(g.cancel(C),C=null),a&&H.isOpen&&s()}),J&&a.$watch(J,function(a){!a===H.isOpen&&j()});var N=function(){F.show.forEach(function(a){b.unbind(a,m)}),F.hide.forEach(function(a){a.split(" ").forEach(function(a){b[0].removeEventListener(a,q)})})};y();var O=a.$eval(d[k+"Animation"]);H.animation=angular.isDefined(O)?!!O:o.animation;var P=a.$eval(d[k+"AppendToBody"]);E=angular.isDefined(P)?P:E,E&&a.$on("$locationChangeSuccess",function(){H.isOpen&&s()}),a.$on("$destroy",function(){g.cancel(B),g.cancel(C),g.cancel(D),N(),u(),H=null})}}}}}]}).directive("uibTooltipTemplateTransclude",["$animate","$sce","$compile","$templateRequest",function(a,b,c,d){return{link:function(e,f,g){var h,i,j,k=e.$eval(g.tooltipTemplateTranscludeScope),l=0,m=function(){i&&(i.remove(),i=null),h&&(h.$destroy(),h=null),j&&(a.leave(j).then(function(){i=null}),i=j,j=null)};e.$watch(b.parseAsResourceUrl(g.uibTooltipTemplateTransclude),function(b){var g=++l;b?(d(b,!0).then(function(d){if(g===l){var e=k.$new(),i=d,n=c(i)(e,function(b){m(),a.enter(b,f)});h=e,j=n,h.$emit("$includeContentLoaded",b)}},function(){g===l&&(m(),e.$emit("$includeContentError",b))}),e.$emit("$includeContentRequested",b)):m()}),e.$on("$destroy",m)}}}]).directive("uibTooltipClasses",function(){return{restrict:"A",link:function(a,b,c){a.placement&&b.addClass(a.placement),a.popupClass&&b.addClass(a.popupClass),a.animation()&&b.addClass(c.tooltipAnimationClass)}}}).directive("uibTooltipPopup",function(){return{replace:!0,scope:{content:"@",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"template/tooltip/tooltip-popup.html",link:function(a,b){b.addClass("tooltip")}}}).directive("uibTooltip",["$uibTooltip",function(a){return a("uibTooltip","tooltip","mouseenter")}]).directive("uibTooltipTemplatePopup",function(){return{replace:!0,scope:{contentExp:"&",placement:"@",popupClass:"@",animation:"&",isOpen:"&",originScope:"&"},templateUrl:"template/tooltip/tooltip-template-popup.html",link:function(a,b){b.addClass("tooltip")}}}).directive("uibTooltipTemplate",["$uibTooltip",function(a){return a("uibTooltipTemplate","tooltip","mouseenter",{useContentExp:!0})}]).directive("uibTooltipHtmlPopup",function(){return{replace:!0,scope:{contentExp:"&",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"template/tooltip/tooltip-html-popup.html",link:function(a,b){b.addClass("tooltip")}}}).directive("uibTooltipHtml",["$uibTooltip",function(a){return a("uibTooltipHtml","tooltip","mouseenter",{useContentExp:!0})}]),angular.module("ui.bootstrap.tooltip").value("$tooltipSuppressWarning",!1).provider("$tooltip",["$uibTooltipProvider",function(a){angular.extend(this,a),this.$get=["$log","$tooltipSuppressWarning","$injector",function(b,c,d){return c||b.warn("$tooltip is now deprecated. Use $uibTooltip instead."),d.invoke(a.$get)}]}]).directive("tooltipTemplateTransclude",["$animate","$sce","$compile","$templateRequest","$log","$tooltipSuppressWarning",function(a,b,c,d,e,f){return{link:function(g,h,i){f||e.warn("tooltip-template-transclude is now deprecated. Use uib-tooltip-template-transclude instead.");var j,k,l,m=g.$eval(i.tooltipTemplateTranscludeScope),n=0,o=function(){k&&(k.remove(),k=null),j&&(j.$destroy(),j=null),l&&(a.leave(l).then(function(){k=null}),k=l,l=null)};g.$watch(b.parseAsResourceUrl(i.tooltipTemplateTransclude),function(b){var e=++n;b?(d(b,!0).then(function(d){if(e===n){var f=m.$new(),g=d,i=c(g)(f,function(b){o(),a.enter(b,h)});j=f,l=i,j.$emit("$includeContentLoaded",b)}},function(){e===n&&(o(),g.$emit("$includeContentError",b))}),g.$emit("$includeContentRequested",b)):o()}),g.$on("$destroy",o)}}}]).directive("tooltipClasses",["$log","$tooltipSuppressWarning",function(a,b){return{restrict:"A",link:function(c,d,e){b||a.warn("tooltip-classes is now deprecated. Use uib-tooltip-classes instead."),c.placement&&d.addClass(c.placement),c.popupClass&&d.addClass(c.popupClass),c.animation()&&d.addClass(e.tooltipAnimationClass)}}}]).directive("tooltipPopup",["$log","$tooltipSuppressWarning",function(a,b){return{replace:!0,scope:{content:"@",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"template/tooltip/tooltip-popup.html",link:function(c,d){b||a.warn("tooltip-popup is now deprecated. Use uib-tooltip-popup instead."),d.addClass("tooltip")}}}]).directive("tooltip",["$tooltip",function(a){return a("tooltip","tooltip","mouseenter")}]).directive("tooltipTemplatePopup",["$log","$tooltipSuppressWarning",function(a,b){return{replace:!0,scope:{contentExp:"&",placement:"@",popupClass:"@",animation:"&",isOpen:"&",originScope:"&"},templateUrl:"template/tooltip/tooltip-template-popup.html",link:function(c,d){b||a.warn("tooltip-template-popup is now deprecated. Use uib-tooltip-template-popup instead."),d.addClass("tooltip")}}}]).directive("tooltipTemplate",["$tooltip",function(a){return a("tooltipTemplate","tooltip","mouseenter",{useContentExp:!0})}]).directive("tooltipHtmlPopup",["$log","$tooltipSuppressWarning",function(a,b){return{replace:!0,scope:{contentExp:"&",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"template/tooltip/tooltip-html-popup.html",link:function(c,d){b||a.warn("tooltip-html-popup is now deprecated. Use uib-tooltip-html-popup instead."),d.addClass("tooltip")}}}]).directive("tooltipHtml",["$tooltip",function(a){return a("tooltipHtml","tooltip","mouseenter",{useContentExp:!0})}]),angular.module("ui.bootstrap.popover",["ui.bootstrap.tooltip"]).directive("uibPopoverTemplatePopup",function(){return{replace:!0,scope:{title:"@",contentExp:"&",placement:"@",popupClass:"@",animation:"&",isOpen:"&",originScope:"&"},templateUrl:"template/popover/popover-template.html",link:function(a,b){b.addClass("popover")}}}).directive("uibPopoverTemplate",["$uibTooltip",function(a){return a("uibPopoverTemplate","popover","click",{useContentExp:!0})}]).directive("uibPopoverHtmlPopup",function(){return{replace:!0,scope:{contentExp:"&",title:"@",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"template/popover/popover-html.html",link:function(a,b){b.addClass("popover")}}}).directive("uibPopoverHtml",["$uibTooltip",function(a){return a("uibPopoverHtml","popover","click",{useContentExp:!0})}]).directive("uibPopoverPopup",function(){return{replace:!0,scope:{title:"@",content:"@",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"template/popover/popover.html",link:function(a,b){b.addClass("popover")}}}).directive("uibPopover",["$uibTooltip",function(a){return a("uibPopover","popover","click")}]),angular.module("ui.bootstrap.popover").value("$popoverSuppressWarning",!1).directive("popoverTemplatePopup",["$log","$popoverSuppressWarning",function(a,b){return{replace:!0,scope:{title:"@",contentExp:"&",placement:"@",popupClass:"@",animation:"&",isOpen:"&",originScope:"&"},templateUrl:"template/popover/popover-template.html",link:function(c,d){b||a.warn("popover-template-popup is now deprecated. Use uib-popover-template-popup instead."),d.addClass("popover")}}}]).directive("popoverTemplate",["$tooltip",function(a){return a("popoverTemplate","popover","click",{useContentExp:!0})}]).directive("popoverHtmlPopup",["$log","$popoverSuppressWarning",function(a,b){return{replace:!0,scope:{contentExp:"&",title:"@",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"template/popover/popover-html.html",link:function(c,d){b||a.warn("popover-html-popup is now deprecated. Use uib-popover-html-popup instead."),d.addClass("popover")}}}]).directive("popoverHtml",["$tooltip",function(a){return a("popoverHtml","popover","click",{useContentExp:!0})}]).directive("popoverPopup",["$log","$popoverSuppressWarning",function(a,b){return{replace:!0,scope:{title:"@",content:"@",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"template/popover/popover.html",link:function(c,d){b||a.warn("popover-popup is now deprecated. Use uib-popover-popup instead."),d.addClass("popover")}}}]).directive("popover",["$tooltip",function(a){return a("popover","popover","click")}]),angular.module("ui.bootstrap.progressbar",[]).constant("uibProgressConfig",{animate:!0,max:100}).controller("UibProgressController",["$scope","$attrs","uibProgressConfig",function(a,b,c){var d=this,e=angular.isDefined(b.animate)?a.$parent.$eval(b.animate):c.animate;this.bars=[],a.max=angular.isDefined(a.max)?a.max:c.max,this.addBar=function(b,c,f){e||c.css({transition:"none"}),this.bars.push(b),b.max=a.max,b.title=f&&angular.isDefined(f.title)?f.title:"progressbar",b.$watch("value",function(a){b.recalculatePercentage()}),b.recalculatePercentage=function(){b.percent=+(100*b.value/b.max).toFixed(2);var a=d.bars.reduce(function(a,b){return a+b.percent},0);a>100&&(b.percent-=a-100)},b.$on("$destroy",function(){c=null,d.removeBar(b)})},this.removeBar=function(a){this.bars.splice(this.bars.indexOf(a),1)},a.$watch("max",function(b){d.bars.forEach(function(b){b.max=a.max,b.recalculatePercentage()})})}]).directive("uibProgress",function(){return{replace:!0,transclude:!0,controller:"UibProgressController",require:"uibProgress",scope:{max:"=?"},templateUrl:"template/progressbar/progress.html"}}).directive("uibBar",function(){return{replace:!0,transclude:!0,require:"^uibProgress",scope:{value:"=",type:"@"},templateUrl:"template/progressbar/bar.html",link:function(a,b,c,d){d.addBar(a,b,c)}}}).directive("uibProgressbar",function(){return{replace:!0,transclude:!0,controller:"UibProgressController",scope:{value:"=",max:"=?",type:"@"},templateUrl:"template/progressbar/progressbar.html",link:function(a,b,c,d){d.addBar(a,angular.element(b.children()[0]),{title:c.title})}}}),angular.module("ui.bootstrap.progressbar").value("$progressSuppressWarning",!1).controller("ProgressController",["$scope","$attrs","$controller","$log","$progressSuppressWarning",function(a,b,c,d,e){return e||d.warn("ProgressController is now deprecated. Use UibProgressController instead."),c("UibProgressController",{$scope:a,$attrs:b})}]).directive("progress",["$log","$progressSuppressWarning",function(a,b){return{replace:!0,transclude:!0,controller:"ProgressController",require:"progress",scope:{max:"=?",title:"@?"},templateUrl:"template/progressbar/progress.html",link:function(){b||a.warn("progress is now deprecated. Use uib-progress instead.")}}}]).directive("bar",["$log","$progressSuppressWarning",function(a,b){return{replace:!0,transclude:!0,require:"^progress",scope:{value:"=",type:"@"},templateUrl:"template/progressbar/bar.html",link:function(c,d,e,f){b||a.warn("bar is now deprecated. Use uib-bar instead."),f.addBar(c,d)}}}]).directive("progressbar",["$log","$progressSuppressWarning",function(a,b){return{replace:!0,transclude:!0,controller:"ProgressController",scope:{value:"=",max:"=?",type:"@"},templateUrl:"template/progressbar/progressbar.html",link:function(c,d,e,f){b||a.warn("progressbar is now deprecated. Use uib-progressbar instead."),f.addBar(c,angular.element(d.children()[0]),{title:e.title})}}}]),angular.module("ui.bootstrap.rating",[]).constant("uibRatingConfig",{max:5,stateOn:null,stateOff:null,titles:["one","two","three","four","five"]}).controller("UibRatingController",["$scope","$attrs","uibRatingConfig",function(a,b,c){var d={$setViewValue:angular.noop};this.init=function(e){d=e,d.$render=this.render,d.$formatters.push(function(a){return angular.isNumber(a)&&a<<0!==a&&(a=Math.round(a)),a}),this.stateOn=angular.isDefined(b.stateOn)?a.$parent.$eval(b.stateOn):c.stateOn,this.stateOff=angular.isDefined(b.stateOff)?a.$parent.$eval(b.stateOff):c.stateOff;var f=angular.isDefined(b.titles)?a.$parent.$eval(b.titles):c.titles;this.titles=angular.isArray(f)&&f.length>0?f:c.titles;var g=angular.isDefined(b.ratingStates)?a.$parent.$eval(b.ratingStates):new Array(angular.isDefined(b.max)?a.$parent.$eval(b.max):c.max);a.range=this.buildTemplateObjects(g)},this.buildTemplateObjects=function(a){for(var b=0,c=a.length;c>b;b++)a[b]=angular.extend({index:b},{stateOn:this.stateOn,stateOff:this.stateOff,title:this.getTitle(b)},a[b]);return a},this.getTitle=function(a){return a>=this.titles.length?a+1:this.titles[a]},a.rate=function(b){!a.readonly&&b>=0&&b<=a.range.length&&(d.$setViewValue(d.$viewValue===b?0:b),d.$render())},a.enter=function(b){a.readonly||(a.value=b),a.onHover({value:b})},a.reset=function(){a.value=d.$viewValue,a.onLeave()},a.onKeydown=function(b){/(37|38|39|40)/.test(b.which)&&(b.preventDefault(),b.stopPropagation(),a.rate(a.value+(38===b.which||39===b.which?1:-1)))},this.render=function(){a.value=d.$viewValue}}]).directive("uibRating",function(){return{require:["uibRating","ngModel"],scope:{readonly:"=?",onHover:"&",onLeave:"&"},controller:"UibRatingController",templateUrl:"template/rating/rating.html",replace:!0,link:function(a,b,c,d){var e=d[0],f=d[1];e.init(f)}}}),angular.module("ui.bootstrap.rating").value("$ratingSuppressWarning",!1).controller("RatingController",["$scope","$attrs","$controller","$log","$ratingSuppressWarning",function(a,b,c,d,e){return e||d.warn("RatingController is now deprecated. Use UibRatingController instead."),c("UibRatingController",{$scope:a,$attrs:b})}]).directive("rating",["$log","$ratingSuppressWarning",function(a,b){return{require:["rating","ngModel"],scope:{readonly:"=?",onHover:"&",onLeave:"&"},controller:"RatingController",templateUrl:"template/rating/rating.html",replace:!0,link:function(c,d,e,f){b||a.warn("rating is now deprecated. Use uib-rating instead.");var g=f[0],h=f[1];g.init(h)}}}]),angular.module("ui.bootstrap.tabs",[]).controller("UibTabsetController",["$scope",function(a){var b=this,c=b.tabs=a.tabs=[];b.select=function(a){angular.forEach(c,function(b){b.active&&b!==a&&(b.active=!1,b.onDeselect(),a.selectCalled=!1)}),a.active=!0,a.selectCalled||(a.onSelect(),a.selectCalled=!0)},b.addTab=function(a){c.push(a),1===c.length&&a.active!==!1?a.active=!0:a.active?b.select(a):a.active=!1},b.removeTab=function(a){var e=c.indexOf(a);if(a.active&&c.length>1&&!d){var f=e==c.length-1?e-1:e+1;b.select(c[f])}c.splice(e,1)};var d;a.$on("$destroy",function(){d=!0})}]).directive("uibTabset",function(){return{restrict:"EA",transclude:!0,replace:!0,scope:{type:"@"},controller:"UibTabsetController",templateUrl:"template/tabs/tabset.html",link:function(a,b,c){a.vertical=angular.isDefined(c.vertical)?a.$parent.$eval(c.vertical):!1,a.justified=angular.isDefined(c.justified)?a.$parent.$eval(c.justified):!1}}}).directive("uibTab",["$parse",function(a){return{require:"^uibTabset",restrict:"EA",replace:!0,templateUrl:"template/tabs/tab.html",transclude:!0,scope:{active:"=?",heading:"@",onSelect:"&select",onDeselect:"&deselect"},controller:function(){},link:function(b,c,d,e,f){b.$watch("active",function(a){a&&e.select(b)}),b.disabled=!1,d.disable&&b.$parent.$watch(a(d.disable),function(a){b.disabled=!!a}),b.select=function(){b.disabled||(b.active=!0)},e.addTab(b),b.$on("$destroy",function(){e.removeTab(b)}),b.$transcludeFn=f}}}]).directive("uibTabHeadingTransclude",function(){return{restrict:"A",require:["?^uibTab","?^tab"],link:function(a,b){a.$watch("headingElement",function(a){a&&(b.html(""),b.append(a))})}}}).directive("uibTabContentTransclude",function(){function a(a){return a.tagName&&(a.hasAttribute("tab-heading")||a.hasAttribute("data-tab-heading")||a.hasAttribute("x-tab-heading")||a.hasAttribute("uib-tab-heading")||a.hasAttribute("data-uib-tab-heading")||a.hasAttribute("x-uib-tab-heading")||"tab-heading"===a.tagName.toLowerCase()||"data-tab-heading"===a.tagName.toLowerCase()||"x-tab-heading"===a.tagName.toLowerCase()||"uib-tab-heading"===a.tagName.toLowerCase()||"data-uib-tab-heading"===a.tagName.toLowerCase()||"x-uib-tab-heading"===a.tagName.toLowerCase())}return{restrict:"A",require:["?^uibTabset","?^tabset"],link:function(b,c,d){var e=b.$eval(d.uibTabContentTransclude);e.$transcludeFn(e.$parent,function(b){angular.forEach(b,function(b){a(b)?e.headingElement=b:c.append(b)})})}}}),angular.module("ui.bootstrap.tabs").value("$tabsSuppressWarning",!1).controller("TabsetController",["$scope","$controller","$log","$tabsSuppressWarning",function(a,b,c,d){return d||c.warn("TabsetController is now deprecated. Use UibTabsetController instead."),b("UibTabsetController",{$scope:a})}]).directive("tabset",["$log","$tabsSuppressWarning",function(a,b){return{restrict:"EA",transclude:!0,replace:!0,scope:{type:"@"},controller:"TabsetController",templateUrl:"template/tabs/tabset.html",link:function(c,d,e){b||a.warn("tabset is now deprecated. Use uib-tabset instead."),c.vertical=angular.isDefined(e.vertical)?c.$parent.$eval(e.vertical):!1,c.justified=angular.isDefined(e.justified)?c.$parent.$eval(e.justified):!1}}}]).directive("tab",["$parse","$log","$tabsSuppressWarning",function(a,b,c){return{require:"^tabset",restrict:"EA",replace:!0,templateUrl:"template/tabs/tab.html",transclude:!0,scope:{active:"=?",heading:"@",onSelect:"&select",onDeselect:"&deselect"},controller:function(){},link:function(d,e,f,g,h){c||b.warn("tab is now deprecated. Use uib-tab instead."),d.$watch("active",function(a){a&&g.select(d)}),d.disabled=!1,f.disable&&d.$parent.$watch(a(f.disable),function(a){d.disabled=!!a}),d.select=function(){d.disabled||(d.active=!0)},g.addTab(d),d.$on("$destroy",function(){g.removeTab(d)}),d.$transcludeFn=h}}}]).directive("tabHeadingTransclude",["$log","$tabsSuppressWarning",function(a,b){return{restrict:"A",require:"^tab",link:function(c,d){b||a.warn("tab-heading-transclude is now deprecated. Use uib-tab-heading-transclude instead."),c.$watch("headingElement",function(a){a&&(d.html(""),d.append(a))})}}}]).directive("tabContentTransclude",["$log","$tabsSuppressWarning",function(a,b){function c(a){return a.tagName&&(a.hasAttribute("tab-heading")||a.hasAttribute("data-tab-heading")||a.hasAttribute("x-tab-heading")||"tab-heading"===a.tagName.toLowerCase()||"data-tab-heading"===a.tagName.toLowerCase()||"x-tab-heading"===a.tagName.toLowerCase())}return{restrict:"A",require:"^tabset",link:function(d,e,f){b||a.warn("tab-content-transclude is now deprecated. Use uib-tab-content-transclude instead.");var g=d.$eval(f.tabContentTransclude);g.$transcludeFn(g.$parent,function(a){angular.forEach(a,function(a){c(a)?g.headingElement=a:e.append(a)})})}}}]),angular.module("ui.bootstrap.timepicker",[]).constant("uibTimepickerConfig",{hourStep:1,minuteStep:1,showMeridian:!0,meridians:null,readonlyInput:!1,mousewheel:!0,arrowkeys:!0,showSpinners:!0}).controller("UibTimepickerController",["$scope","$attrs","$parse","$log","$locale","uibTimepickerConfig",function(a,b,c,d,e,f){function g(){var b=parseInt(a.hours,10),c=a.showMeridian?b>0&&13>b:b>=0&&24>b;return c?(a.showMeridian&&(12===b&&(b=0),a.meridian===q[1]&&(b+=12)),b):void 0}function h(){var b=parseInt(a.minutes,10);return b>=0&&60>b?b:void 0}function i(a){return angular.isDefined(a)&&a.toString().length<2?"0"+a:a.toString()}function j(a){k(),p.$setViewValue(new Date(o)),l(a)}function k(){p.$setValidity("time",!0),a.invalidHours=!1,a.invalidMinutes=!1}function l(b){var c=o.getHours(),d=o.getMinutes();a.showMeridian&&(c=0===c||12===c?12:c%12),a.hours="h"===b?c:i(c),"m"!==b&&(a.minutes=i(d)),a.meridian=o.getHours()<12?q[0]:q[1]}function m(a,b){var c=new Date(a.getTime()+6e4*b),d=new Date(a);return d.setHours(c.getHours(),c.getMinutes()),d}function n(a){o=m(o,a),j()}var o=new Date,p={$setViewValue:angular.noop},q=angular.isDefined(b.meridians)?a.$parent.$eval(b.meridians):f.meridians||e.DATETIME_FORMATS.AMPMS;this.init=function(c,d){p=c,p.$render=this.render,p.$formatters.unshift(function(a){return a?new Date(a):null});var e=d.eq(0),g=d.eq(1),h=angular.isDefined(b.mousewheel)?a.$parent.$eval(b.mousewheel):f.mousewheel;h&&this.setupMousewheelEvents(e,g);var i=angular.isDefined(b.arrowkeys)?a.$parent.$eval(b.arrowkeys):f.arrowkeys;i&&this.setupArrowkeyEvents(e,g),a.readonlyInput=angular.isDefined(b.readonlyInput)?a.$parent.$eval(b.readonlyInput):f.readonlyInput,this.setupInputEvents(e,g)};var r=f.hourStep;b.hourStep&&a.$parent.$watch(c(b.hourStep),function(a){r=parseInt(a,10)});var s=f.minuteStep;b.minuteStep&&a.$parent.$watch(c(b.minuteStep),function(a){s=parseInt(a,10)});var t;a.$parent.$watch(c(b.min),function(a){var b=new Date(a);t=isNaN(b)?void 0:b});var u;a.$parent.$watch(c(b.max),function(a){var b=new Date(a);u=isNaN(b)?void 0:b}),a.noIncrementHours=function(){var a=m(o,60*r);return a>u||o>a&&t>a},a.noDecrementHours=function(){var a=m(o,60*-r);return t>a||a>o&&a>u},a.noIncrementMinutes=function(){var a=m(o,s);return a>u||o>a&&t>a},a.noDecrementMinutes=function(){var a=m(o,-s);return t>a||a>o&&a>u},a.noToggleMeridian=function(){return o.getHours()<13?m(o,720)>u:m(o,-720)<t},a.showMeridian=f.showMeridian,b.showMeridian&&a.$parent.$watch(c(b.showMeridian),function(b){if(a.showMeridian=!!b,p.$error.time){var c=g(),d=h();angular.isDefined(c)&&angular.isDefined(d)&&(o.setHours(c),j())}else l()}),this.setupMousewheelEvents=function(b,c){var d=function(a){a.originalEvent&&(a=a.originalEvent);var b=a.wheelDelta?a.wheelDelta:-a.deltaY;return a.detail||b>0};b.bind("mousewheel wheel",function(b){a.$apply(d(b)?a.incrementHours():a.decrementHours()),b.preventDefault()}),c.bind("mousewheel wheel",function(b){a.$apply(d(b)?a.incrementMinutes():a.decrementMinutes()),b.preventDefault()})},this.setupArrowkeyEvents=function(b,c){b.bind("keydown",function(b){38===b.which?(b.preventDefault(),a.incrementHours(),a.$apply()):40===b.which&&(b.preventDefault(),a.decrementHours(),a.$apply())}),c.bind("keydown",function(b){38===b.which?(b.preventDefault(),a.incrementMinutes(),a.$apply()):40===b.which&&(b.preventDefault(),a.decrementMinutes(),a.$apply())})},this.setupInputEvents=function(b,c){if(a.readonlyInput)return a.updateHours=angular.noop,void(a.updateMinutes=angular.noop);var d=function(b,c){p.$setViewValue(null),p.$setValidity("time",!1),angular.isDefined(b)&&(a.invalidHours=b),angular.isDefined(c)&&(a.invalidMinutes=c)};a.updateHours=function(){var a=g(),b=h();angular.isDefined(a)&&angular.isDefined(b)?(o.setHours(a),t>o||o>u?d(!0):j("h")):d(!0)},b.bind("blur",function(b){!a.invalidHours&&a.hours<10&&a.$apply(function(){a.hours=i(a.hours)})}),a.updateMinutes=function(){var a=h(),b=g();angular.isDefined(a)&&angular.isDefined(b)?(o.setMinutes(a),t>o||o>u?d(void 0,!0):j("m")):d(void 0,!0)},c.bind("blur",function(b){!a.invalidMinutes&&a.minutes<10&&a.$apply(function(){a.minutes=i(a.minutes)})})},this.render=function(){var b=p.$viewValue;isNaN(b)?(p.$setValidity("time",!1),d.error('Timepicker directive: "ng-model" value must be a Date object, a number of milliseconds since 01.01.1970 or a string representing an RFC2822 or ISO 8601 date.')):(b&&(o=b),t>o||o>u?(p.$setValidity("time",!1),a.invalidHours=!0,a.invalidMinutes=!0):k(),l())},a.showSpinners=angular.isDefined(b.showSpinners)?a.$parent.$eval(b.showSpinners):f.showSpinners,a.incrementHours=function(){a.noIncrementHours()||n(60*r)},a.decrementHours=function(){a.noDecrementHours()||n(60*-r)},a.incrementMinutes=function(){a.noIncrementMinutes()||n(s)},a.decrementMinutes=function(){a.noDecrementMinutes()||n(-s)},a.toggleMeridian=function(){a.noToggleMeridian()||n(720*(o.getHours()<12?1:-1))}}]).directive("uibTimepicker",function(){return{restrict:"EA",require:["uibTimepicker","?^ngModel"],controller:"UibTimepickerController",controllerAs:"timepicker",replace:!0,scope:{},templateUrl:function(a,b){return b.templateUrl||"template/timepicker/timepicker.html"},link:function(a,b,c,d){var e=d[0],f=d[1];f&&e.init(f,b.find("input"))}}}),angular.module("ui.bootstrap.timepicker").value("$timepickerSuppressWarning",!1).controller("TimepickerController",["$scope","$attrs","$controller","$log","$timepickerSuppressWarning",function(a,b,c,d,e){return e||d.warn("TimepickerController is now deprecated. Use UibTimepickerController instead."),c("UibTimepickerController",{$scope:a,$attrs:b})}]).directive("timepicker",["$log","$timepickerSuppressWarning",function(a,b){return{restrict:"EA",require:["timepicker","?^ngModel"],controller:"TimepickerController",controllerAs:"timepicker",replace:!0,scope:{},templateUrl:function(a,b){return b.templateUrl||"template/timepicker/timepicker.html"},link:function(c,d,e,f){b||a.warn("timepicker is now deprecated. Use uib-timepicker instead.");var g=f[0],h=f[1];h&&g.init(h,d.find("input"))}}}]),angular.module("ui.bootstrap.typeahead",["ui.bootstrap.position"]).factory("uibTypeaheadParser",["$parse",function(a){var b=/^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w\d]*))\s+in\s+([\s\S]+?)$/;return{parse:function(c){var d=c.match(b);if(!d)throw new Error('Expected typeahead specification in form of "_modelValue_ (as _label_)? for _item_ in _collection_" but got "'+c+'".');return{itemName:d[3],source:a(d[4]),viewMapper:a(d[2]||d[1]),modelMapper:a(d[1])}}}}]).directive("uibTypeahead",["$compile","$parse","$q","$timeout","$document","$window","$rootScope","$uibPosition","uibTypeaheadParser",function(a,b,c,d,e,f,g,h,i){var j=[9,13,27,38,40],k=200;return{require:["ngModel","^?ngModelOptions"],link:function(l,m,n,o){function p(){L.moveInProgress||(L.moveInProgress=!0,L.$digest()),T&&d.cancel(T),T=d(function(){L.matches.length&&q(),L.moveInProgress=!1},k)}function q(){L.position=D?h.offset(m):h.position(m),L.position.top+=m.prop("offsetHeight")}var r=o[0],s=o[1],t=l.$eval(n.typeaheadMinLength);t||0===t||(t=1);var u,v,w=l.$eval(n.typeaheadWaitMs)||0,x=l.$eval(n.typeaheadEditable)!==!1,y=b(n.typeaheadLoading).assign||angular.noop,z=b(n.typeaheadOnSelect),A=angular.isDefined(n.typeaheadSelectOnBlur)?l.$eval(n.typeaheadSelectOnBlur):!1,B=b(n.typeaheadNoResults).assign||angular.noop,C=n.typeaheadInputFormatter?b(n.typeaheadInputFormatter):void 0,D=n.typeaheadAppendToBody?l.$eval(n.typeaheadAppendToBody):!1,E=n.typeaheadAppendToElementId||!1,F=l.$eval(n.typeaheadFocusFirst)!==!1,G=n.typeaheadSelectOnExact?l.$eval(n.typeaheadSelectOnExact):!1,H=b(n.ngModel),I=b(n.ngModel+"($$$p)"),J=function(a,b){return angular.isFunction(H(l))&&s&&s.$options&&s.$options.getterSetter?I(a,{$$$p:b}):H.assign(a,b)},K=i.parse(n.uibTypeahead),L=l.$new(),M=l.$on("$destroy",function(){L.$destroy()});L.$on("$destroy",M);var N="typeahead-"+L.$id+"-"+Math.floor(1e4*Math.random());m.attr({"aria-autocomplete":"list","aria-expanded":!1,"aria-owns":N});var O=angular.element("<div uib-typeahead-popup></div>");O.attr({id:N,matches:"matches",active:"activeIdx",select:"select(activeIdx)","move-in-progress":"moveInProgress",query:"query",position:"position"}),angular.isDefined(n.typeaheadTemplateUrl)&&O.attr("template-url",n.typeaheadTemplateUrl),angular.isDefined(n.typeaheadPopupTemplateUrl)&&O.attr("popup-template-url",n.typeaheadPopupTemplateUrl);var P=function(){L.matches=[],L.activeIdx=-1,m.attr("aria-expanded",!1)},Q=function(a){return N+"-option-"+a};L.$watch("activeIdx",function(a){0>a?m.removeAttr("aria-activedescendant"):m.attr("aria-activedescendant",Q(a))});var R=function(a,b){return L.matches.length>b&&a?a.toUpperCase()===L.matches[b].label.toUpperCase():!1},S=function(a){var b={$viewValue:a};y(l,!0),B(l,!1),c.when(K.source(l,b)).then(function(c){var d=a===r.$viewValue;if(d&&u)if(c&&c.length>0){L.activeIdx=F?0:-1,B(l,!1),L.matches.length=0;for(var e=0;e<c.length;e++)b[K.itemName]=c[e],L.matches.push({id:Q(e),label:K.viewMapper(L,b),model:c[e]});L.query=a,q(),m.attr("aria-expanded",!0),G&&1===L.matches.length&&R(a,0)&&L.select(0)}else P(),B(l,!0);d&&y(l,!1)},function(){P(),y(l,!1),B(l,!0)})};D&&(angular.element(f).bind("resize",p),e.find("body").bind("scroll",p));var T;L.moveInProgress=!1,P(),L.query=void 0;var U,V=function(a){U=d(function(){S(a)},w)},W=function(){U&&d.cancel(U)};r.$parsers.unshift(function(a){return u=!0,0===t||a&&a.length>=t?w>0?(W(),V(a)):S(a):(y(l,!1),W(),P()),x?a:a?void r.$setValidity("editable",!1):(r.$setValidity("editable",!0),null)}),r.$formatters.push(function(a){var b,c,d={};return x||r.$setValidity("editable",!0),C?(d.$model=a,C(l,d)):(d[K.itemName]=a,b=K.viewMapper(l,d),d[K.itemName]=void 0,c=K.viewMapper(l,d),b!==c?b:a)}),L.select=function(a){var b,c,e={};v=!0,e[K.itemName]=c=L.matches[a].model,b=K.modelMapper(l,e),J(l,b),r.$setValidity("editable",!0),r.$setValidity("parse",!0),z(l,{$item:c,$model:b,$label:K.viewMapper(l,e)}),P(),L.$eval(n.typeaheadFocusOnSelect)!==!1&&d(function(){m[0].focus()},0,!1)},m.bind("keydown",function(a){if(0!==L.matches.length&&-1!==j.indexOf(a.which)){if(-1===L.activeIdx&&(9===a.which||13===a.which))return P(),void L.$digest();a.preventDefault(),
11 40===a.which?(L.activeIdx=(L.activeIdx+1)%L.matches.length,L.$digest()):38===a.which?(L.activeIdx=(L.activeIdx>0?L.activeIdx:L.matches.length)-1,L.$digest()):13===a.which||9===a.which?L.$apply(function(){L.select(L.activeIdx)}):27===a.which&&(a.stopPropagation(),P(),L.$digest())}}),m.bind("blur",function(){A&&L.matches.length&&-1!==L.activeIdx&&!v&&(v=!0,L.$apply(function(){L.select(L.activeIdx)})),u=!1,v=!1});var X=function(a){m[0]!==a.target&&3!==a.which&&0!==L.matches.length&&(P(),g.$$phase||L.$digest())};e.bind("click",X),l.$on("$destroy",function(){e.unbind("click",X),(D||E)&&Y.remove(),O.remove()});var Y=a(O)(L);D?e.find("body").append(Y):E!==!1?angular.element(e[0].getElementById(E)).append(Y):m.after(Y)}}}]).directive("uibTypeaheadPopup",function(){return{scope:{matches:"=",query:"=",active:"=",position:"&",moveInProgress:"=",select:"&"},replace:!0,templateUrl:function(a,b){return b.popupTemplateUrl||"template/typeahead/typeahead-popup.html"},link:function(a,b,c){a.templateUrl=c.templateUrl,a.isOpen=function(){return a.matches.length>0},a.isActive=function(b){return a.active==b},a.selectActive=function(b){a.active=b},a.selectMatch=function(b){a.select({activeIdx:b})}}}}).directive("uibTypeaheadMatch",["$templateRequest","$compile","$parse",function(a,b,c){return{scope:{index:"=",match:"=",query:"="},link:function(d,e,f){var g=c(f.templateUrl)(d.$parent)||"template/typeahead/typeahead-match.html";a(g).then(function(a){b(a.trim())(d,function(a){e.replaceWith(a)})})}}}]).filter("uibTypeaheadHighlight",["$sce","$injector","$log",function(a,b,c){function d(a){return a.replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")}function e(a){return/<.*>/g.test(a)}var f;return f=b.has("$sanitize"),function(b,g){return!f&&e(b)&&c.warn("Unsafe use of typeahead please use ngSanitize"),b=g?(""+b).replace(new RegExp(d(g),"gi"),"<strong>$&</strong>"):b,f||(b=a.trustAsHtml(b)),b}}]),angular.module("ui.bootstrap.typeahead").value("$typeaheadSuppressWarning",!1).service("typeaheadParser",["$parse","uibTypeaheadParser","$log","$typeaheadSuppressWarning",function(a,b,c,d){return d||c.warn("typeaheadParser is now deprecated. Use uibTypeaheadParser instead."),b}]).directive("typeahead",["$compile","$parse","$q","$timeout","$document","$window","$rootScope","$uibPosition","typeaheadParser","$log","$typeaheadSuppressWarning",function(a,b,c,d,e,f,g,h,i,j,k){var l=[9,13,27,38,40],m=200;return{require:["ngModel","^?ngModelOptions"],link:function(n,o,p,q){function r(){N.moveInProgress||(N.moveInProgress=!0,N.$digest()),V&&d.cancel(V),V=d(function(){N.matches.length&&s(),N.moveInProgress=!1},m)}function s(){N.position=F?h.offset(o):h.position(o),N.position.top+=o.prop("offsetHeight")}k||j.warn("typeahead is now deprecated. Use uib-typeahead instead.");var t=q[0],u=q[1],v=n.$eval(p.typeaheadMinLength);v||0===v||(v=1);var w,x,y=n.$eval(p.typeaheadWaitMs)||0,z=n.$eval(p.typeaheadEditable)!==!1,A=b(p.typeaheadLoading).assign||angular.noop,B=b(p.typeaheadOnSelect),C=angular.isDefined(p.typeaheadSelectOnBlur)?n.$eval(p.typeaheadSelectOnBlur):!1,D=b(p.typeaheadNoResults).assign||angular.noop,E=p.typeaheadInputFormatter?b(p.typeaheadInputFormatter):void 0,F=p.typeaheadAppendToBody?n.$eval(p.typeaheadAppendToBody):!1,G=p.typeaheadAppendToElementId||!1,H=n.$eval(p.typeaheadFocusFirst)!==!1,I=p.typeaheadSelectOnExact?n.$eval(p.typeaheadSelectOnExact):!1,J=b(p.ngModel),K=b(p.ngModel+"($$$p)"),L=function(a,b){return angular.isFunction(J(n))&&u&&u.$options&&u.$options.getterSetter?K(a,{$$$p:b}):J.assign(a,b)},M=i.parse(p.typeahead),N=n.$new(),O=n.$on("$destroy",function(){N.$destroy()});N.$on("$destroy",O);var P="typeahead-"+N.$id+"-"+Math.floor(1e4*Math.random());o.attr({"aria-autocomplete":"list","aria-expanded":!1,"aria-owns":P});var Q=angular.element("<div typeahead-popup></div>");Q.attr({id:P,matches:"matches",active:"activeIdx",select:"select(activeIdx)","move-in-progress":"moveInProgress",query:"query",position:"position"}),angular.isDefined(p.typeaheadTemplateUrl)&&Q.attr("template-url",p.typeaheadTemplateUrl),angular.isDefined(p.typeaheadPopupTemplateUrl)&&Q.attr("popup-template-url",p.typeaheadPopupTemplateUrl);var R=function(){N.matches=[],N.activeIdx=-1,o.attr("aria-expanded",!1)},S=function(a){return P+"-option-"+a};N.$watch("activeIdx",function(a){0>a?o.removeAttr("aria-activedescendant"):o.attr("aria-activedescendant",S(a))});var T=function(a,b){return N.matches.length>b&&a?a.toUpperCase()===N.matches[b].label.toUpperCase():!1},U=function(a){var b={$viewValue:a};A(n,!0),D(n,!1),c.when(M.source(n,b)).then(function(c){var d=a===t.$viewValue;if(d&&w)if(c&&c.length>0){N.activeIdx=H?0:-1,D(n,!1),N.matches.length=0;for(var e=0;e<c.length;e++)b[M.itemName]=c[e],N.matches.push({id:S(e),label:M.viewMapper(N,b),model:c[e]});N.query=a,s(),o.attr("aria-expanded",!0),I&&1===N.matches.length&&T(a,0)&&N.select(0)}else R(),D(n,!0);d&&A(n,!1)},function(){R(),A(n,!1),D(n,!0)})};F&&(angular.element(f).bind("resize",r),e.find("body").bind("scroll",r));var V;N.moveInProgress=!1,R(),N.query=void 0;var W,X=function(a){W=d(function(){U(a)},y)},Y=function(){W&&d.cancel(W)};t.$parsers.unshift(function(a){return w=!0,0===v||a&&a.length>=v?y>0?(Y(),X(a)):U(a):(A(n,!1),Y(),R()),z?a:a?void t.$setValidity("editable",!1):(t.$setValidity("editable",!0),null)}),t.$formatters.push(function(a){var b,c,d={};return z||t.$setValidity("editable",!0),E?(d.$model=a,E(n,d)):(d[M.itemName]=a,b=M.viewMapper(n,d),d[M.itemName]=void 0,c=M.viewMapper(n,d),b!==c?b:a)}),N.select=function(a){var b,c,e={};x=!0,e[M.itemName]=c=N.matches[a].model,b=M.modelMapper(n,e),L(n,b),t.$setValidity("editable",!0),t.$setValidity("parse",!0),B(n,{$item:c,$model:b,$label:M.viewMapper(n,e)}),R(),N.$eval(p.typeaheadFocusOnSelect)!==!1&&d(function(){o[0].focus()},0,!1)},o.bind("keydown",function(a){if(0!==N.matches.length&&-1!==l.indexOf(a.which)){if(-1===N.activeIdx&&(9===a.which||13===a.which))return R(),void N.$digest();a.preventDefault(),40===a.which?(N.activeIdx=(N.activeIdx+1)%N.matches.length,N.$digest()):38===a.which?(N.activeIdx=(N.activeIdx>0?N.activeIdx:N.matches.length)-1,N.$digest()):13===a.which||9===a.which?N.$apply(function(){N.select(N.activeIdx)}):27===a.which&&(a.stopPropagation(),R(),N.$digest())}}),o.bind("blur",function(){C&&N.matches.length&&-1!==N.activeIdx&&!x&&(x=!0,N.$apply(function(){N.select(N.activeIdx)})),w=!1,x=!1});var Z=function(a){o[0]!==a.target&&3!==a.which&&0!==N.matches.length&&(R(),g.$$phase||N.$digest())};e.bind("click",Z),n.$on("$destroy",function(){e.unbind("click",Z),(F||G)&&$.remove(),Q.remove()});var $=a(Q)(N);F?e.find("body").append($):G!==!1?angular.element(e[0].getElementById(G)).append($):o.after($)}}}]).directive("typeaheadPopup",["$typeaheadSuppressWarning","$log",function(a,b){return{scope:{matches:"=",query:"=",active:"=",position:"&",moveInProgress:"=",select:"&"},replace:!0,templateUrl:function(a,b){return b.popupTemplateUrl||"template/typeahead/typeahead-popup.html"},link:function(c,d,e){a||b.warn("typeahead-popup is now deprecated. Use uib-typeahead-popup instead."),c.templateUrl=e.templateUrl,c.isOpen=function(){return c.matches.length>0},c.isActive=function(a){return c.active==a},c.selectActive=function(a){c.active=a},c.selectMatch=function(a){c.select({activeIdx:a})}}}}]).directive("typeaheadMatch",["$templateRequest","$compile","$parse","$typeaheadSuppressWarning","$log",function(a,b,c,d,e){return{restrict:"EA",scope:{index:"=",match:"=",query:"="},link:function(f,g,h){d||e.warn("typeahead-match is now deprecated. Use uib-typeahead-match instead.");var i=c(h.templateUrl)(f.$parent)||"template/typeahead/typeahead-match.html";a(i).then(function(a){b(a.trim())(f,function(a){g.replaceWith(a)})})}}}]).filter("typeaheadHighlight",["$sce","$injector","$log","$typeaheadSuppressWarning",function(a,b,c,d){function e(a){return a.replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")}function f(a){return/<.*>/g.test(a)}var g;return g=b.has("$sanitize"),function(b,h){return d||c.warn("typeaheadHighlight is now deprecated. Use uibTypeaheadHighlight instead."),!g&&f(b)&&c.warn("Unsafe use of typeahead please use ngSanitize"),b=h?(""+b).replace(new RegExp(e(h),"gi"),"<strong>$&</strong>"):b,g||(b=a.trustAsHtml(b)),b}}]),angular.module("template/accordion/accordion-group.html",[]).run(["$templateCache",function(a){a.put("template/accordion/accordion-group.html",'<div class="panel {{panelClass || \'panel-default\'}}">\n <div class="panel-heading" ng-keypress="toggleOpen($event)">\n <h4 class="panel-title">\n <a href tabindex="0" class="accordion-toggle" ng-click="toggleOpen()" uib-accordion-transclude="heading"><span ng-class="{\'text-muted\': isDisabled}">{{heading}}</span></a>\n </h4>\n </div>\n <div class="panel-collapse collapse" uib-collapse="!isOpen">\n <div class="panel-body" ng-transclude></div>\n </div>\n</div>\n')}]),angular.module("template/accordion/accordion.html",[]).run(["$templateCache",function(a){a.put("template/accordion/accordion.html",'<div class="panel-group" ng-transclude></div>')}]),angular.module("template/alert/alert.html",[]).run(["$templateCache",function(a){a.put("template/alert/alert.html",'<div class="alert" ng-class="[\'alert-\' + (type || \'warning\'), closeable ? \'alert-dismissible\' : null]" role="alert">\n <button ng-show="closeable" type="button" class="close" ng-click="close({$event: $event})">\n <span aria-hidden="true">&times;</span>\n <span class="sr-only">Close</span>\n </button>\n <div ng-transclude></div>\n</div>\n')}]),angular.module("template/carousel/carousel.html",[]).run(["$templateCache",function(a){a.put("template/carousel/carousel.html",'<div ng-mouseenter="pause()" ng-mouseleave="play()" class="carousel" ng-swipe-right="prev()" ng-swipe-left="next()">\n <div class="carousel-inner" ng-transclude></div>\n <a role="button" href class="left carousel-control" ng-click="prev()" ng-show="slides.length > 1">\n <span aria-hidden="true" class="glyphicon glyphicon-chevron-left"></span>\n <span class="sr-only">previous</span>\n </a>\n <a role="button" href class="right carousel-control" ng-click="next()" ng-show="slides.length > 1">\n <span aria-hidden="true" class="glyphicon glyphicon-chevron-right"></span>\n <span class="sr-only">next</span>\n </a>\n <ol class="carousel-indicators" ng-show="slides.length > 1">\n <li ng-repeat="slide in slides | orderBy:indexOfSlide track by $index" ng-class="{ active: isActive(slide) }" ng-click="select(slide)">\n <span class="sr-only">slide {{ $index + 1 }} of {{ slides.length }}<span ng-if="isActive(slide)">, currently active</span></span>\n </li>\n </ol>\n</div>')}]),angular.module("template/carousel/slide.html",[]).run(["$templateCache",function(a){a.put("template/carousel/slide.html",'<div ng-class="{\n \'active\': active\n }" class="item text-center" ng-transclude></div>\n')}]),angular.module("template/datepicker/datepicker.html",[]).run(["$templateCache",function(a){a.put("template/datepicker/datepicker.html",'<div ng-switch="datepickerMode" role="application" ng-keydown="keydown($event)">\n <uib-daypicker ng-switch-when="day" tabindex="0"></uib-daypicker>\n <uib-monthpicker ng-switch-when="month" tabindex="0"></uib-monthpicker>\n <uib-yearpicker ng-switch-when="year" tabindex="0"></uib-yearpicker>\n</div>')}]),angular.module("template/datepicker/day.html",[]).run(["$templateCache",function(a){a.put("template/datepicker/day.html",'<table role="grid" aria-labelledby="{{::uniqueId}}-title" aria-activedescendant="{{activeDateId}}">\n <thead>\n <tr>\n <th><button type="button" class="btn btn-default btn-sm pull-left" ng-click="move(-1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-left"></i></button></th>\n <th colspan="{{::5 + showWeeks}}"><button id="{{::uniqueId}}-title" role="heading" aria-live="assertive" aria-atomic="true" type="button" class="btn btn-default btn-sm" ng-click="toggleMode()" ng-disabled="datepickerMode === maxMode" tabindex="-1" style="width:100%;"><strong>{{title}}</strong></button></th>\n <th><button type="button" class="btn btn-default btn-sm pull-right" ng-click="move(1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-right"></i></button></th>\n </tr>\n <tr>\n <th ng-if="showWeeks" class="text-center"></th>\n <th ng-repeat="label in ::labels track by $index" class="text-center"><small aria-label="{{::label.full}}">{{::label.abbr}}</small></th>\n </tr>\n </thead>\n <tbody>\n <tr ng-repeat="row in rows track by $index">\n <td ng-if="showWeeks" class="text-center h6"><em>{{ weekNumbers[$index] }}</em></td>\n <td ng-repeat="dt in row track by dt.date" class="text-center" role="gridcell" id="{{::dt.uid}}" ng-class="::dt.customClass">\n <button type="button" style="min-width:100%;" class="btn btn-default btn-sm" ng-class="{\'btn-info\': dt.selected, active: isActive(dt)}" ng-click="select(dt.date)" ng-disabled="dt.disabled" tabindex="-1"><span ng-class="::{\'text-muted\': dt.secondary, \'text-info\': dt.current}">{{::dt.label}}</span></button>\n </td>\n </tr>\n </tbody>\n</table>\n')}]),angular.module("template/datepicker/month.html",[]).run(["$templateCache",function(a){a.put("template/datepicker/month.html",'<table role="grid" aria-labelledby="{{::uniqueId}}-title" aria-activedescendant="{{activeDateId}}">\n <thead>\n <tr>\n <th><button type="button" class="btn btn-default btn-sm pull-left" ng-click="move(-1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-left"></i></button></th>\n <th><button id="{{::uniqueId}}-title" role="heading" aria-live="assertive" aria-atomic="true" type="button" class="btn btn-default btn-sm" ng-click="toggleMode()" ng-disabled="datepickerMode === maxMode" tabindex="-1" style="width:100%;"><strong>{{title}}</strong></button></th>\n <th><button type="button" class="btn btn-default btn-sm pull-right" ng-click="move(1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-right"></i></button></th>\n </tr>\n </thead>\n <tbody>\n <tr ng-repeat="row in rows track by $index">\n <td ng-repeat="dt in row track by dt.date" class="text-center" role="gridcell" id="{{::dt.uid}}" ng-class="::dt.customClass">\n <button type="button" style="min-width:100%;" class="btn btn-default" ng-class="{\'btn-info\': dt.selected, active: isActive(dt)}" ng-click="select(dt.date)" ng-disabled="dt.disabled" tabindex="-1"><span ng-class="::{\'text-info\': dt.current}">{{::dt.label}}</span></button>\n </td>\n </tr>\n </tbody>\n</table>\n')}]),angular.module("template/datepicker/popup.html",[]).run(["$templateCache",function(a){a.put("template/datepicker/popup.html",'<ul class="dropdown-menu" dropdown-nested ng-if="isOpen" style="display: block" ng-style="{top: position.top+\'px\', left: position.left+\'px\'}" ng-keydown="keydown($event)" ng-click="$event.stopPropagation()">\n <li ng-transclude></li>\n <li ng-if="showButtonBar" style="padding:10px 9px 2px">\n <span class="btn-group pull-left">\n <button type="button" class="btn btn-sm btn-info" ng-click="select(\'today\')" ng-disabled="isDisabled(\'today\')">{{ getText(\'current\') }}</button>\n <button type="button" class="btn btn-sm btn-danger" ng-click="select(null)">{{ getText(\'clear\') }}</button>\n </span>\n <button type="button" class="btn btn-sm btn-success pull-right" ng-click="close()">{{ getText(\'close\') }}</button>\n </li>\n</ul>\n')}]),angular.module("template/datepicker/year.html",[]).run(["$templateCache",function(a){a.put("template/datepicker/year.html",'<table role="grid" aria-labelledby="{{::uniqueId}}-title" aria-activedescendant="{{activeDateId}}">\n <thead>\n <tr>\n <th><button type="button" class="btn btn-default btn-sm pull-left" ng-click="move(-1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-left"></i></button></th>\n <th colspan="3"><button id="{{::uniqueId}}-title" role="heading" aria-live="assertive" aria-atomic="true" type="button" class="btn btn-default btn-sm" ng-click="toggleMode()" ng-disabled="datepickerMode === maxMode" tabindex="-1" style="width:100%;"><strong>{{title}}</strong></button></th>\n <th><button type="button" class="btn btn-default btn-sm pull-right" ng-click="move(1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-right"></i></button></th>\n </tr>\n </thead>\n <tbody>\n <tr ng-repeat="row in rows track by $index">\n <td ng-repeat="dt in row track by dt.date" class="text-center" role="gridcell" id="{{::dt.uid}}" ng-class="::dt.customClass">\n <button type="button" style="min-width:100%;" class="btn btn-default" ng-class="{\'btn-info\': dt.selected, active: isActive(dt)}" ng-click="select(dt.date)" ng-disabled="dt.disabled" tabindex="-1"><span ng-class="::{\'text-info\': dt.current}">{{::dt.label}}</span></button>\n </td>\n </tr>\n </tbody>\n</table>\n')}]),angular.module("template/modal/backdrop.html",[]).run(["$templateCache",function(a){a.put("template/modal/backdrop.html",'<div uib-modal-animation-class="fade"\n modal-in-class="in"\n ng-style="{\'z-index\': 1040 + (index && 1 || 0) + index*10}"\n></div>\n')}]),angular.module("template/modal/window.html",[]).run(["$templateCache",function(a){a.put("template/modal/window.html",'<div modal-render="{{$isRendered}}" tabindex="-1" role="dialog" class="modal"\n uib-modal-animation-class="fade"\n modal-in-class="in"\n ng-style="{\'z-index\': 1050 + index*10, display: \'block\'}">\n <div class="modal-dialog" ng-class="size ? \'modal-\' + size : \'\'"><div class="modal-content" uib-modal-transclude></div></div>\n</div>\n')}]),angular.module("template/pagination/pager.html",[]).run(["$templateCache",function(a){a.put("template/pagination/pager.html",'<ul class="pager">\n <li ng-class="{disabled: noPrevious()||ngDisabled, previous: align}"><a href ng-click="selectPage(page - 1, $event)">{{::getText(\'previous\')}}</a></li>\n <li ng-class="{disabled: noNext()||ngDisabled, next: align}"><a href ng-click="selectPage(page + 1, $event)">{{::getText(\'next\')}}</a></li>\n</ul>\n')}]),angular.module("template/pagination/pagination.html",[]).run(["$templateCache",function(a){a.put("template/pagination/pagination.html",'<ul class="pagination">\n <li ng-if="::boundaryLinks" ng-class="{disabled: noPrevious()||ngDisabled}" class="pagination-first"><a href ng-click="selectPage(1, $event)">{{::getText(\'first\')}}</a></li>\n <li ng-if="::directionLinks" ng-class="{disabled: noPrevious()||ngDisabled}" class="pagination-prev"><a href ng-click="selectPage(page - 1, $event)">{{::getText(\'previous\')}}</a></li>\n <li ng-repeat="page in pages track by $index" ng-class="{active: page.active,disabled: ngDisabled&&!page.active}" class="pagination-page"><a href ng-click="selectPage(page.number, $event)">{{page.text}}</a></li>\n <li ng-if="::directionLinks" ng-class="{disabled: noNext()||ngDisabled}" class="pagination-next"><a href ng-click="selectPage(page + 1, $event)">{{::getText(\'next\')}}</a></li>\n <li ng-if="::boundaryLinks" ng-class="{disabled: noNext()||ngDisabled}" class="pagination-last"><a href ng-click="selectPage(totalPages, $event)">{{::getText(\'last\')}}</a></li>\n</ul>\n')}]),angular.module("template/tooltip/tooltip-html-popup.html",[]).run(["$templateCache",function(a){a.put("template/tooltip/tooltip-html-popup.html",'<div\n tooltip-animation-class="fade"\n uib-tooltip-classes\n ng-class="{ in: isOpen() }">\n <div class="tooltip-arrow"></div>\n <div class="tooltip-inner" ng-bind-html="contentExp()"></div>\n</div>\n')}]),angular.module("template/tooltip/tooltip-html-unsafe-popup.html",[]).run(["$templateCache",function(a){a.put("template/tooltip/tooltip-html-unsafe-popup.html",'<div class="tooltip"\n tooltip-animation-class="fade"\n tooltip-classes\n ng-class="{ in: isOpen() }">\n <div class="tooltip-arrow"></div>\n <div class="tooltip-inner" bind-html-unsafe="content"></div>\n</div>\n')}]),angular.module("template/tooltip/tooltip-popup.html",[]).run(["$templateCache",function(a){a.put("template/tooltip/tooltip-popup.html",'<div\n tooltip-animation-class="fade"\n uib-tooltip-classes\n ng-class="{ in: isOpen() }">\n <div class="tooltip-arrow"></div>\n <div class="tooltip-inner" ng-bind="content"></div>\n</div>\n')}]),angular.module("template/tooltip/tooltip-template-popup.html",[]).run(["$templateCache",function(a){a.put("template/tooltip/tooltip-template-popup.html",'<div\n tooltip-animation-class="fade"\n uib-tooltip-classes\n ng-class="{ in: isOpen() }">\n <div class="tooltip-arrow"></div>\n <div class="tooltip-inner"\n uib-tooltip-template-transclude="contentExp()"\n tooltip-template-transclude-scope="originScope()"></div>\n</div>\n')}]),angular.module("template/popover/popover-html.html",[]).run(["$templateCache",function(a){a.put("template/popover/popover-html.html",'<div tooltip-animation-class="fade"\n uib-tooltip-classes\n ng-class="{ in: isOpen() }">\n <div class="arrow"></div>\n\n <div class="popover-inner">\n <h3 class="popover-title" ng-bind="title" ng-if="title"></h3>\n <div class="popover-content" ng-bind-html="contentExp()"></div>\n </div>\n</div>\n')}]),angular.module("template/popover/popover-template.html",[]).run(["$templateCache",function(a){a.put("template/popover/popover-template.html",'<div tooltip-animation-class="fade"\n uib-tooltip-classes\n ng-class="{ in: isOpen() }">\n <div class="arrow"></div>\n\n <div class="popover-inner">\n <h3 class="popover-title" ng-bind="title" ng-if="title"></h3>\n <div class="popover-content"\n uib-tooltip-template-transclude="contentExp()"\n tooltip-template-transclude-scope="originScope()"></div>\n </div>\n</div>\n')}]),angular.module("template/popover/popover.html",[]).run(["$templateCache",function(a){a.put("template/popover/popover.html",'<div tooltip-animation-class="fade"\n uib-tooltip-classes\n ng-class="{ in: isOpen() }">\n <div class="arrow"></div>\n\n <div class="popover-inner">\n <h3 class="popover-title" ng-bind="title" ng-if="title"></h3>\n <div class="popover-content" ng-bind="content"></div>\n </div>\n</div>\n')}]),angular.module("template/progressbar/bar.html",[]).run(["$templateCache",function(a){a.put("template/progressbar/bar.html",'<div class="progress-bar" ng-class="type && \'progress-bar-\' + type" role="progressbar" aria-valuenow="{{value}}" aria-valuemin="0" aria-valuemax="{{max}}" ng-style="{width: (percent < 100 ? percent : 100) + \'%\'}" aria-valuetext="{{percent | number:0}}%" aria-labelledby="{{::title}}" style="min-width: 0;" ng-transclude></div>\n')}]),angular.module("template/progressbar/progress.html",[]).run(["$templateCache",function(a){a.put("template/progressbar/progress.html",'<div class="progress" ng-transclude aria-labelledby="{{::title}}"></div>')}]),angular.module("template/progressbar/progressbar.html",[]).run(["$templateCache",function(a){a.put("template/progressbar/progressbar.html",'<div class="progress">\n <div class="progress-bar" ng-class="type && \'progress-bar-\' + type" role="progressbar" aria-valuenow="{{value}}" aria-valuemin="0" aria-valuemax="{{max}}" ng-style="{width: (percent < 100 ? percent : 100) + \'%\'}" aria-valuetext="{{percent | number:0}}%" aria-labelledby="{{::title}}" style="min-width: 0;" ng-transclude></div>\n</div>\n')}]),angular.module("template/rating/rating.html",[]).run(["$templateCache",function(a){a.put("template/rating/rating.html",'<span ng-mouseleave="reset()" ng-keydown="onKeydown($event)" tabindex="0" role="slider" aria-valuemin="0" aria-valuemax="{{range.length}}" aria-valuenow="{{value}}">\n <span ng-repeat-start="r in range track by $index" class="sr-only">({{ $index < value ? \'*\' : \' \' }})</span>\n <i ng-repeat-end ng-mouseenter="enter($index + 1)" ng-click="rate($index + 1)" class="glyphicon" ng-class="$index < value && (r.stateOn || \'glyphicon-star\') || (r.stateOff || \'glyphicon-star-empty\')" ng-attr-title="{{r.title}}" aria-valuetext="{{r.title}}"></i>\n</span>\n')}]),angular.module("template/tabs/tab.html",[]).run(["$templateCache",function(a){a.put("template/tabs/tab.html",'<li ng-class="{active: active, disabled: disabled}">\n <a href ng-click="select()" uib-tab-heading-transclude>{{heading}}</a>\n</li>\n')}]),angular.module("template/tabs/tabset.html",[]).run(["$templateCache",function(a){a.put("template/tabs/tabset.html",'<div>\n <ul class="nav nav-{{type || \'tabs\'}}" ng-class="{\'nav-stacked\': vertical, \'nav-justified\': justified}" ng-transclude></ul>\n <div class="tab-content">\n <div class="tab-pane" \n ng-repeat="tab in tabs" \n ng-class="{active: tab.active}"\n uib-tab-content-transclude="tab">\n </div>\n </div>\n</div>\n')}]),angular.module("template/timepicker/timepicker.html",[]).run(["$templateCache",function(a){a.put("template/timepicker/timepicker.html",'<table>\n <tbody>\n <tr class="text-center" ng-show="::showSpinners">\n <td><a ng-click="incrementHours()" ng-class="{disabled: noIncrementHours()}" class="btn btn-link"><span class="glyphicon glyphicon-chevron-up"></span></a></td>\n <td>&nbsp;</td>\n <td><a ng-click="incrementMinutes()" ng-class="{disabled: noIncrementMinutes()}" class="btn btn-link"><span class="glyphicon glyphicon-chevron-up"></span></a></td>\n <td ng-show="showMeridian"></td>\n </tr>\n <tr>\n <td class="form-group" ng-class="{\'has-error\': invalidHours}">\n <input style="width:50px;" type="text" ng-model="hours" ng-change="updateHours()" class="form-control text-center" ng-readonly="::readonlyInput" maxlength="2">\n </td>\n <td>:</td>\n <td class="form-group" ng-class="{\'has-error\': invalidMinutes}">\n <input style="width:50px;" type="text" ng-model="minutes" ng-change="updateMinutes()" class="form-control text-center" ng-readonly="::readonlyInput" maxlength="2">\n </td>\n <td ng-show="showMeridian"><button type="button" ng-class="{disabled: noToggleMeridian()}" class="btn btn-default text-center" ng-click="toggleMeridian()">{{meridian}}</button></td>\n </tr>\n <tr class="text-center" ng-show="::showSpinners">\n <td><a ng-click="decrementHours()" ng-class="{disabled: noDecrementHours()}" class="btn btn-link"><span class="glyphicon glyphicon-chevron-down"></span></a></td>\n <td>&nbsp;</td>\n <td><a ng-click="decrementMinutes()" ng-class="{disabled: noDecrementMinutes()}" class="btn btn-link"><span class="glyphicon glyphicon-chevron-down"></span></a></td>\n <td ng-show="showMeridian"></td>\n </tr>\n </tbody>\n</table>\n')}]),angular.module("template/typeahead/typeahead-match.html",[]).run(["$templateCache",function(a){a.put("template/typeahead/typeahead-match.html",'<a href tabindex="-1" ng-bind-html="match.label | uibTypeaheadHighlight:query"></a>\n')}]),angular.module("template/typeahead/typeahead-popup.html",[]).run(["$templateCache",function(a){a.put("template/typeahead/typeahead-popup.html",'<ul class="dropdown-menu" ng-show="isOpen() && !moveInProgress" ng-style="{top: position().top+\'px\', left: position().left+\'px\'}" style="display: block;" role="listbox" aria-hidden="{{!isOpen()}}">\n <li ng-repeat="match in matches track by $index" ng-class="{active: isActive($index) }" ng-mouseenter="selectActive($index)" ng-click="selectMatch($index)" role="option" id="{{::match.id}}">\n <div uib-typeahead-match index="$index" match="match" query="query" template-url="templateUrl"></div>\n </li>\n</ul>\n')}]),!angular.$$csp()&&angular.element(document).find("head").prepend('<style type="text/css">.ng-animate.item:not(.left):not(.right){-webkit-transition:0s ease-in-out left;transition:0s ease-in-out left}</style>'); 11 40===a.which?(L.activeIdx=(L.activeIdx+1)%L.matches.length,L.$digest()):38===a.which?(L.activeIdx=(L.activeIdx>0?L.activeIdx:L.matches.length)-1,L.$digest()):13===a.which||9===a.which?L.$apply(function(){L.select(L.activeIdx)}):27===a.which&&(a.stopPropagation(),P(),L.$digest())}}),m.bind("blur",function(){A&&L.matches.length&&-1!==L.activeIdx&&!v&&(v=!0,L.$apply(function(){L.select(L.activeIdx)})),u=!1,v=!1});var X=function(a){m[0]!==a.target&&3!==a.which&&0!==L.matches.length&&(P(),g.$$phase||L.$digest())};e.bind("click",X),l.$on("$destroy",function(){e.unbind("click",X),(D||E)&&Y.remove(),O.remove()});var Y=a(O)(L);D?e.find("body").append(Y):E!==!1?angular.element(e[0].getElementById(E)).append(Y):m.after(Y)}}}]).directive("uibTypeaheadPopup",function(){return{scope:{matches:"=",query:"=",active:"=",position:"&",moveInProgress:"=",select:"&"},replace:!0,templateUrl:function(a,b){return b.popupTemplateUrl||"template/typeahead/typeahead-popup.html"},link:function(a,b,c){a.templateUrl=c.templateUrl,a.isOpen=function(){return a.matches.length>0},a.isActive=function(b){return a.active==b},a.selectActive=function(b){a.active=b},a.selectMatch=function(b){a.select({activeIdx:b})}}}}).directive("uibTypeaheadMatch",["$templateRequest","$compile","$parse",function(a,b,c){return{scope:{index:"=",match:"=",query:"="},link:function(d,e,f){var g=c(f.templateUrl)(d.$parent)||"template/typeahead/typeahead-match.html";a(g).then(function(a){b(a.trim())(d,function(a){e.replaceWith(a)})})}}}]).filter("uibTypeaheadHighlight",["$sce","$injector","$log",function(a,b,c){function d(a){return a.replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")}function e(a){return/<.*>/g.test(a)}var f;return f=b.has("$sanitize"),function(b,g){return!f&&e(b)&&c.warn("Unsafe use of typeahead please use ngSanitize"),b=g?(""+b).replace(new RegExp(d(g),"gi"),"<strong>$&</strong>"):b,f||(b=a.trustAsHtml(b)),b}}]),angular.module("ui.bootstrap.typeahead").value("$typeaheadSuppressWarning",!1).service("typeaheadParser",["$parse","uibTypeaheadParser","$log","$typeaheadSuppressWarning",function(a,b,c,d){return d||c.warn("typeaheadParser is now deprecated. Use uibTypeaheadParser instead."),b}]).directive("typeahead",["$compile","$parse","$q","$timeout","$document","$window","$rootScope","$uibPosition","typeaheadParser","$log","$typeaheadSuppressWarning",function(a,b,c,d,e,f,g,h,i,j,k){var l=[9,13,27,38,40],m=200;return{require:["ngModel","^?ngModelOptions"],link:function(n,o,p,q){function r(){N.moveInProgress||(N.moveInProgress=!0,N.$digest()),V&&d.cancel(V),V=d(function(){N.matches.length&&s(),N.moveInProgress=!1},m)}function s(){N.position=F?h.offset(o):h.position(o),N.position.top+=o.prop("offsetHeight")}k||j.warn("typeahead is now deprecated. Use uib-typeahead instead.");var t=q[0],u=q[1],v=n.$eval(p.typeaheadMinLength);v||0===v||(v=1);var w,x,y=n.$eval(p.typeaheadWaitMs)||0,z=n.$eval(p.typeaheadEditable)!==!1,A=b(p.typeaheadLoading).assign||angular.noop,B=b(p.typeaheadOnSelect),C=angular.isDefined(p.typeaheadSelectOnBlur)?n.$eval(p.typeaheadSelectOnBlur):!1,D=b(p.typeaheadNoResults).assign||angular.noop,E=p.typeaheadInputFormatter?b(p.typeaheadInputFormatter):void 0,F=p.typeaheadAppendToBody?n.$eval(p.typeaheadAppendToBody):!1,G=p.typeaheadAppendToElementId||!1,H=n.$eval(p.typeaheadFocusFirst)!==!1,I=p.typeaheadSelectOnExact?n.$eval(p.typeaheadSelectOnExact):!1,J=b(p.ngModel),K=b(p.ngModel+"($$$p)"),L=function(a,b){return angular.isFunction(J(n))&&u&&u.$options&&u.$options.getterSetter?K(a,{$$$p:b}):J.assign(a,b)},M=i.parse(p.typeahead),N=n.$new(),O=n.$on("$destroy",function(){N.$destroy()});N.$on("$destroy",O);var P="typeahead-"+N.$id+"-"+Math.floor(1e4*Math.random());o.attr({"aria-autocomplete":"list","aria-expanded":!1,"aria-owns":P});var Q=angular.element("<div typeahead-popup></div>");Q.attr({id:P,matches:"matches",active:"activeIdx",select:"select(activeIdx)","move-in-progress":"moveInProgress",query:"query",position:"position"}),angular.isDefined(p.typeaheadTemplateUrl)&&Q.attr("template-url",p.typeaheadTemplateUrl),angular.isDefined(p.typeaheadPopupTemplateUrl)&&Q.attr("popup-template-url",p.typeaheadPopupTemplateUrl);var R=function(){N.matches=[],N.activeIdx=-1,o.attr("aria-expanded",!1)},S=function(a){return P+"-option-"+a};N.$watch("activeIdx",function(a){0>a?o.removeAttr("aria-activedescendant"):o.attr("aria-activedescendant",S(a))});var T=function(a,b){return N.matches.length>b&&a?a.toUpperCase()===N.matches[b].label.toUpperCase():!1},U=function(a){var b={$viewValue:a};A(n,!0),D(n,!1),c.when(M.source(n,b)).then(function(c){var d=a===t.$viewValue;if(d&&w)if(c&&c.length>0){N.activeIdx=H?0:-1,D(n,!1),N.matches.length=0;for(var e=0;e<c.length;e++)b[M.itemName]=c[e],N.matches.push({id:S(e),label:M.viewMapper(N,b),model:c[e]});N.query=a,s(),o.attr("aria-expanded",!0),I&&1===N.matches.length&&T(a,0)&&N.select(0)}else R(),D(n,!0);d&&A(n,!1)},function(){R(),A(n,!1),D(n,!0)})};F&&(angular.element(f).bind("resize",r),e.find("body").bind("scroll",r));var V;N.moveInProgress=!1,R(),N.query=void 0;var W,X=function(a){W=d(function(){U(a)},y)},Y=function(){W&&d.cancel(W)};t.$parsers.unshift(function(a){return w=!0,0===v||a&&a.length>=v?y>0?(Y(),X(a)):U(a):(A(n,!1),Y(),R()),z?a:a?void t.$setValidity("editable",!1):(t.$setValidity("editable",!0),null)}),t.$formatters.push(function(a){var b,c,d={};return z||t.$setValidity("editable",!0),E?(d.$model=a,E(n,d)):(d[M.itemName]=a,b=M.viewMapper(n,d),d[M.itemName]=void 0,c=M.viewMapper(n,d),b!==c?b:a)}),N.select=function(a){var b,c,e={};x=!0,e[M.itemName]=c=N.matches[a].model,b=M.modelMapper(n,e),L(n,b),t.$setValidity("editable",!0),t.$setValidity("parse",!0),B(n,{$item:c,$model:b,$label:M.viewMapper(n,e)}),R(),N.$eval(p.typeaheadFocusOnSelect)!==!1&&d(function(){o[0].focus()},0,!1)},o.bind("keydown",function(a){if(0!==N.matches.length&&-1!==l.indexOf(a.which)){if(-1===N.activeIdx&&(9===a.which||13===a.which))return R(),void N.$digest();a.preventDefault(),40===a.which?(N.activeIdx=(N.activeIdx+1)%N.matches.length,N.$digest()):38===a.which?(N.activeIdx=(N.activeIdx>0?N.activeIdx:N.matches.length)-1,N.$digest()):13===a.which||9===a.which?N.$apply(function(){N.select(N.activeIdx)}):27===a.which&&(a.stopPropagation(),R(),N.$digest())}}),o.bind("blur",function(){C&&N.matches.length&&-1!==N.activeIdx&&!x&&(x=!0,N.$apply(function(){N.select(N.activeIdx)})),w=!1,x=!1});var Z=function(a){o[0]!==a.target&&3!==a.which&&0!==N.matches.length&&(R(),g.$$phase||N.$digest())};e.bind("click",Z),n.$on("$destroy",function(){e.unbind("click",Z),(F||G)&&$.remove(),Q.remove()});var $=a(Q)(N);F?e.find("body").append($):G!==!1?angular.element(e[0].getElementById(G)).append($):o.after($)}}}]).directive("typeaheadPopup",["$typeaheadSuppressWarning","$log",function(a,b){return{scope:{matches:"=",query:"=",active:"=",position:"&",moveInProgress:"=",select:"&"},replace:!0,templateUrl:function(a,b){return b.popupTemplateUrl||"template/typeahead/typeahead-popup.html"},link:function(c,d,e){a||b.warn("typeahead-popup is now deprecated. Use uib-typeahead-popup instead."),c.templateUrl=e.templateUrl,c.isOpen=function(){return c.matches.length>0},c.isActive=function(a){return c.active==a},c.selectActive=function(a){c.active=a},c.selectMatch=function(a){c.select({activeIdx:a})}}}}]).directive("typeaheadMatch",["$templateRequest","$compile","$parse","$typeaheadSuppressWarning","$log",function(a,b,c,d,e){return{restrict:"EA",scope:{index:"=",match:"=",query:"="},link:function(f,g,h){d||e.warn("typeahead-match is now deprecated. Use uib-typeahead-match instead.");var i=c(h.templateUrl)(f.$parent)||"template/typeahead/typeahead-match.html";a(i).then(function(a){b(a.trim())(f,function(a){g.replaceWith(a)})})}}}]).filter("typeaheadHighlight",["$sce","$injector","$log","$typeaheadSuppressWarning",function(a,b,c,d){function e(a){return a.replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")}function f(a){return/<.*>/g.test(a)}var g;return g=b.has("$sanitize"),function(b,h){return d||c.warn("typeaheadHighlight is now deprecated. Use uibTypeaheadHighlight instead."),!g&&f(b)&&c.warn("Unsafe use of typeahead please use ngSanitize"),b=h?(""+b).replace(new RegExp(e(h),"gi"),"<strong>$&</strong>"):b,g||(b=a.trustAsHtml(b)),b}}]),angular.module("template/accordion/accordion-group.html",[]).run(["$templateCache",function(a){a.put("template/accordion/accordion-group.html",'<div class="panel {{panelClass || \'panel-default\'}}">\n <div class="panel-heading" ng-keypress="toggleOpen($event)">\n <h4 class="panel-title">\n <a href tabindex="0" class="accordion-toggle" ng-click="toggleOpen()" uib-accordion-transclude="heading"><span ng-class="{\'text-muted\': isDisabled}">{{heading}}</span></a>\n </h4>\n </div>\n <div class="panel-collapse collapse" uib-collapse="!isOpen">\n <div class="panel-body" ng-transclude></div>\n </div>\n</div>\n')}]),angular.module("template/accordion/accordion.html",[]).run(["$templateCache",function(a){a.put("template/accordion/accordion.html",'<div class="panel-group" ng-transclude></div>')}]),angular.module("template/alert/alert.html",[]).run(["$templateCache",function(a){a.put("template/alert/alert.html",'<div class="alert" ng-class="[\'alert-\' + (type || \'warning\'), closeable ? \'alert-dismissible\' : null]" role="alert">\n <button ng-show="closeable" type="button" class="close" ng-click="close({$event: $event})">\n <span aria-hidden="true">&times;</span>\n <span class="sr-only">Close</span>\n </button>\n <div ng-transclude></div>\n</div>\n')}]),angular.module("template/carousel/carousel.html",[]).run(["$templateCache",function(a){a.put("template/carousel/carousel.html",'<div ng-mouseenter="pause()" ng-mouseleave="play()" class="carousel" ng-swipe-right="prev()" ng-swipe-left="next()">\n <div class="carousel-inner" ng-transclude></div>\n <a role="button" href class="left carousel-control" ng-click="prev()" ng-show="slides.length > 1">\n <span aria-hidden="true" class="glyphicon glyphicon-chevron-left"></span>\n <span class="sr-only">previous</span>\n </a>\n <a role="button" href class="right carousel-control" ng-click="next()" ng-show="slides.length > 1">\n <span aria-hidden="true" class="glyphicon glyphicon-chevron-right"></span>\n <span class="sr-only">next</span>\n </a>\n <ol class="carousel-indicators" ng-show="slides.length > 1">\n <li ng-repeat="slide in slides | orderBy:indexOfSlide track by $index" ng-class="{ active: isActive(slide) }" ng-click="select(slide)">\n <span class="sr-only">slide {{ $index + 1 }} of {{ slides.length }}<span ng-if="isActive(slide)">, currently active</span></span>\n </li>\n </ol>\n</div>')}]),angular.module("template/carousel/slide.html",[]).run(["$templateCache",function(a){a.put("template/carousel/slide.html",'<div ng-class="{\n \'active\': active\n }" class="item text-center" ng-transclude></div>\n')}]),angular.module("template/datepicker/datepicker.html",[]).run(["$templateCache",function(a){a.put("template/datepicker/datepicker.html",'<div ng-switch="datepickerMode" role="application" ng-keydown="keydown($event)">\n <uib-daypicker ng-switch-when="day" tabindex="0"></uib-daypicker>\n <uib-monthpicker ng-switch-when="month" tabindex="0"></uib-monthpicker>\n <uib-yearpicker ng-switch-when="year" tabindex="0"></uib-yearpicker>\n</div>')}]),angular.module("template/datepicker/day.html",[]).run(["$templateCache",function(a){a.put("template/datepicker/day.html",'<table role="grid" aria-labelledby="{{::uniqueId}}-title" aria-activedescendant="{{activeDateId}}">\n <thead>\n <tr>\n <th><button type="button" class="btn btn-default btn-sm pull-left" ng-click="move(-1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-left"></i></button></th>\n <th colspan="{{::5 + showWeeks}}"><button id="{{::uniqueId}}-title" role="heading" aria-live="assertive" aria-atomic="true" type="button" class="btn btn-default btn-sm" ng-click="toggleMode()" ng-disabled="datepickerMode === maxMode" tabindex="-1" style="width:100%;"><strong>{{title}}</strong></button></th>\n <th><button type="button" class="btn btn-default btn-sm pull-right" ng-click="move(1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-right"></i></button></th>\n </tr>\n <tr>\n <th ng-if="showWeeks" class="text-center"></th>\n <th ng-repeat="label in ::labels track by $index" class="text-center"><small aria-label="{{::label.full}}">{{::label.abbr}}</small></th>\n </tr>\n </thead>\n <tbody>\n <tr ng-repeat="row in rows track by $index">\n <td ng-if="showWeeks" class="text-center h6"><em>{{ weekNumbers[$index] }}</em></td>\n <td ng-repeat="dt in row track by dt.date" class="text-center" role="gridcell" id="{{::dt.uid}}" ng-class="::dt.customClass">\n <button type="button" style="min-width:100%;" class="btn btn-default btn-sm" ng-class="{\'btn-info\': dt.selected, active: isActive(dt)}" ng-click="select(dt.date)" ng-disabled="dt.disabled" tabindex="-1"><span ng-class="::{\'text-muted\': dt.secondary, \'text-info\': dt.current}">{{::dt.label}}</span></button>\n </td>\n </tr>\n </tbody>\n</table>\n')}]),angular.module("template/datepicker/month.html",[]).run(["$templateCache",function(a){a.put("template/datepicker/month.html",'<table role="grid" aria-labelledby="{{::uniqueId}}-title" aria-activedescendant="{{activeDateId}}">\n <thead>\n <tr>\n <th><button type="button" class="btn btn-default btn-sm pull-left" ng-click="move(-1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-left"></i></button></th>\n <th><button id="{{::uniqueId}}-title" role="heading" aria-live="assertive" aria-atomic="true" type="button" class="btn btn-default btn-sm" ng-click="toggleMode()" ng-disabled="datepickerMode === maxMode" tabindex="-1" style="width:100%;"><strong>{{title}}</strong></button></th>\n <th><button type="button" class="btn btn-default btn-sm pull-right" ng-click="move(1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-right"></i></button></th>\n </tr>\n </thead>\n <tbody>\n <tr ng-repeat="row in rows track by $index">\n <td ng-repeat="dt in row track by dt.date" class="text-center" role="gridcell" id="{{::dt.uid}}" ng-class="::dt.customClass">\n <button type="button" style="min-width:100%;" class="btn btn-default" ng-class="{\'btn-info\': dt.selected, active: isActive(dt)}" ng-click="select(dt.date)" ng-disabled="dt.disabled" tabindex="-1"><span ng-class="::{\'text-info\': dt.current}">{{::dt.label}}</span></button>\n </td>\n </tr>\n </tbody>\n</table>\n')}]),angular.module("template/datepicker/popup.html",[]).run(["$templateCache",function(a){a.put("template/datepicker/popup.html",'<ul class="dropdown-menu" dropdown-nested ng-if="isOpen" style="display: block" ng-style="{top: position.top+\'px\', left: position.left+\'px\'}" ng-keydown="keydown($event)" ng-click="$event.stopPropagation()">\n <li ng-transclude></li>\n <li ng-if="showButtonBar" style="padding:10px 9px 2px">\n <span class="btn-group pull-left">\n <button type="button" class="btn btn-sm btn-info" ng-click="select(\'today\')" ng-disabled="isDisabled(\'today\')">{{ getText(\'current\') }}</button>\n <button type="button" class="btn btn-sm btn-danger" ng-click="select(null)">{{ getText(\'clear\') }}</button>\n </span>\n <button type="button" class="btn btn-sm btn-success pull-right" ng-click="close()">{{ getText(\'close\') }}</button>\n </li>\n</ul>\n')}]),angular.module("template/datepicker/year.html",[]).run(["$templateCache",function(a){a.put("template/datepicker/year.html",'<table role="grid" aria-labelledby="{{::uniqueId}}-title" aria-activedescendant="{{activeDateId}}">\n <thead>\n <tr>\n <th><button type="button" class="btn btn-default btn-sm pull-left" ng-click="move(-1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-left"></i></button></th>\n <th colspan="3"><button id="{{::uniqueId}}-title" role="heading" aria-live="assertive" aria-atomic="true" type="button" class="btn btn-default btn-sm" ng-click="toggleMode()" ng-disabled="datepickerMode === maxMode" tabindex="-1" style="width:100%;"><strong>{{title}}</strong></button></th>\n <th><button type="button" class="btn btn-default btn-sm pull-right" ng-click="move(1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-right"></i></button></th>\n </tr>\n </thead>\n <tbody>\n <tr ng-repeat="row in rows track by $index">\n <td ng-repeat="dt in row track by dt.date" class="text-center" role="gridcell" id="{{::dt.uid}}" ng-class="::dt.customClass">\n <button type="button" style="min-width:100%;" class="btn btn-default" ng-class="{\'btn-info\': dt.selected, active: isActive(dt)}" ng-click="select(dt.date)" ng-disabled="dt.disabled" tabindex="-1"><span ng-class="::{\'text-info\': dt.current}">{{::dt.label}}</span></button>\n </td>\n </tr>\n </tbody>\n</table>\n')}]),angular.module("template/modal/backdrop.html",[]).run(["$templateCache",function(a){a.put("template/modal/backdrop.html",'<div uib-modal-animation-class="fade"\n modal-in-class="in"\n ng-style="{\'z-index\': 1040 + (index && 1 || 0) + index*10}"\n></div>\n')}]),angular.module("template/modal/window.html",[]).run(["$templateCache",function(a){a.put("template/modal/window.html",'<div modal-render="{{$isRendered}}" tabindex="-1" role="dialog" class="modal"\n uib-modal-animation-class="fade"\n modal-in-class="in"\n ng-style="{\'z-index\': 1050 + index*10, display: \'block\'}">\n <div class="modal-dialog" ng-class="size ? \'modal-\' + size : \'\'"><div class="modal-content" uib-modal-transclude></div></div>\n</div>\n')}]),angular.module("template/pagination/pager.html",[]).run(["$templateCache",function(a){a.put("template/pagination/pager.html",'<ul class="pager">\n <li ng-class="{disabled: noPrevious()||ngDisabled, previous: align}"><a href ng-click="selectPage(page - 1, $event)">{{::getText(\'previous\')}}</a></li>\n <li ng-class="{disabled: noNext()||ngDisabled, next: align}"><a href ng-click="selectPage(page + 1, $event)">{{::getText(\'next\')}}</a></li>\n</ul>\n')}]),angular.module("template/pagination/pagination.html",[]).run(["$templateCache",function(a){a.put("template/pagination/pagination.html",'<ul class="pagination">\n <li ng-if="::boundaryLinks" ng-class="{disabled: noPrevious()||ngDisabled}" class="pagination-first"><a href ng-click="selectPage(1, $event)">{{::getText(\'first\')}}</a></li>\n <li ng-if="::directionLinks" ng-class="{disabled: noPrevious()||ngDisabled}" class="pagination-prev"><a href ng-click="selectPage(page - 1, $event)">{{::getText(\'previous\')}}</a></li>\n <li ng-repeat="page in pages track by $index" ng-class="{active: page.active,disabled: ngDisabled&&!page.active}" class="pagination-page"><a href ng-click="selectPage(page.number, $event)">{{page.text}}</a></li>\n <li ng-if="::directionLinks" ng-class="{disabled: noNext()||ngDisabled}" class="pagination-next"><a href ng-click="selectPage(page + 1, $event)">{{::getText(\'next\')}}</a></li>\n <li ng-if="::boundaryLinks" ng-class="{disabled: noNext()||ngDisabled}" class="pagination-last"><a href ng-click="selectPage(totalPages, $event)">{{::getText(\'last\')}}</a></li>\n</ul>\n')}]),angular.module("template/tooltip/tooltip-html-popup.html",[]).run(["$templateCache",function(a){a.put("template/tooltip/tooltip-html-popup.html",'<div\n tooltip-animation-class="fade"\n uib-tooltip-classes\n ng-class="{ in: isOpen() }">\n <div class="tooltip-arrow"></div>\n <div class="tooltip-inner" ng-bind-html="contentExp()"></div>\n</div>\n')}]),angular.module("template/tooltip/tooltip-html-unsafe-popup.html",[]).run(["$templateCache",function(a){a.put("template/tooltip/tooltip-html-unsafe-popup.html",'<div class="tooltip"\n tooltip-animation-class="fade"\n tooltip-classes\n ng-class="{ in: isOpen() }">\n <div class="tooltip-arrow"></div>\n <div class="tooltip-inner" bind-html-unsafe="content"></div>\n</div>\n')}]),angular.module("template/tooltip/tooltip-popup.html",[]).run(["$templateCache",function(a){a.put("template/tooltip/tooltip-popup.html",'<div\n tooltip-animation-class="fade"\n uib-tooltip-classes\n ng-class="{ in: isOpen() }">\n <div class="tooltip-arrow"></div>\n <div class="tooltip-inner" ng-bind="content"></div>\n</div>\n')}]),angular.module("template/tooltip/tooltip-template-popup.html",[]).run(["$templateCache",function(a){a.put("template/tooltip/tooltip-template-popup.html",'<div\n tooltip-animation-class="fade"\n uib-tooltip-classes\n ng-class="{ in: isOpen() }">\n <div class="tooltip-arrow"></div>\n <div class="tooltip-inner"\n uib-tooltip-template-transclude="contentExp()"\n tooltip-template-transclude-scope="originScope()"></div>\n</div>\n')}]),angular.module("template/popover/popover-html.html",[]).run(["$templateCache",function(a){a.put("template/popover/popover-html.html",'<div tooltip-animation-class="fade"\n uib-tooltip-classes\n ng-class="{ in: isOpen() }">\n <div class="arrow"></div>\n\n <div class="popover-inner">\n <h3 class="popover-title" ng-bind="title" ng-if="title"></h3>\n <div class="popover-content" ng-bind-html="contentExp()"></div>\n </div>\n</div>\n')}]),angular.module("template/popover/popover-template.html",[]).run(["$templateCache",function(a){a.put("template/popover/popover-template.html",'<div tooltip-animation-class="fade"\n uib-tooltip-classes\n ng-class="{ in: isOpen() }">\n <div class="arrow"></div>\n\n <div class="popover-inner">\n <h3 class="popover-title" ng-bind="title" ng-if="title"></h3>\n <div class="popover-content"\n uib-tooltip-template-transclude="contentExp()"\n tooltip-template-transclude-scope="originScope()"></div>\n </div>\n</div>\n')}]),angular.module("template/popover/popover.html",[]).run(["$templateCache",function(a){a.put("template/popover/popover.html",'<div tooltip-animation-class="fade"\n uib-tooltip-classes\n ng-class="{ in: isOpen() }">\n <div class="arrow"></div>\n\n <div class="popover-inner">\n <h3 class="popover-title" ng-bind="title" ng-if="title"></h3>\n <div class="popover-content" ng-bind="content"></div>\n </div>\n</div>\n')}]),angular.module("template/progressbar/bar.html",[]).run(["$templateCache",function(a){a.put("template/progressbar/bar.html",'<div class="progress-bar" ng-class="type && \'progress-bar-\' + type" role="progressbar" aria-valuenow="{{value}}" aria-valuemin="0" aria-valuemax="{{max}}" ng-style="{width: (percent < 100 ? percent : 100) + \'%\'}" aria-valuetext="{{percent | number:0}}%" aria-labelledby="{{::title}}" style="min-width: 0;" ng-transclude></div>\n')}]),angular.module("template/progressbar/progress.html",[]).run(["$templateCache",function(a){a.put("template/progressbar/progress.html",'<div class="progress" ng-transclude aria-labelledby="{{::title}}"></div>')}]),angular.module("template/progressbar/progressbar.html",[]).run(["$templateCache",function(a){a.put("template/progressbar/progressbar.html",'<div class="progress">\n <div class="progress-bar" ng-class="type && \'progress-bar-\' + type" role="progressbar" aria-valuenow="{{value}}" aria-valuemin="0" aria-valuemax="{{max}}" ng-style="{width: (percent < 100 ? percent : 100) + \'%\'}" aria-valuetext="{{percent | number:0}}%" aria-labelledby="{{::title}}" style="min-width: 0;" ng-transclude></div>\n</div>\n')}]),angular.module("template/rating/rating.html",[]).run(["$templateCache",function(a){a.put("template/rating/rating.html",'<span ng-mouseleave="reset()" ng-keydown="onKeydown($event)" tabindex="0" role="slider" aria-valuemin="0" aria-valuemax="{{range.length}}" aria-valuenow="{{value}}">\n <span ng-repeat-start="r in range track by $index" class="sr-only">({{ $index < value ? \'*\' : \' \' }})</span>\n <i ng-repeat-end ng-mouseenter="enter($index + 1)" ng-click="rate($index + 1)" class="glyphicon" ng-class="$index < value && (r.stateOn || \'glyphicon-star\') || (r.stateOff || \'glyphicon-star-empty\')" ng-attr-title="{{r.title}}" aria-valuetext="{{r.title}}"></i>\n</span>\n')}]),angular.module("template/tabs/tab.html",[]).run(["$templateCache",function(a){a.put("template/tabs/tab.html",'<li ng-class="{active: active, disabled: disabled}">\n <a href ng-click="select()" uib-tab-heading-transclude>{{heading}}</a>\n</li>\n')}]),angular.module("template/tabs/tabset.html",[]).run(["$templateCache",function(a){a.put("template/tabs/tabset.html",'<div>\n <ul class="nav nav-{{type || \'tabs\'}}" ng-class="{\'nav-stacked\': vertical, \'nav-justified\': justified}" ng-transclude></ul>\n <div class="tab-content">\n <div class="tab-pane" \n ng-repeat="tab in tabs" \n ng-class="{active: tab.active}"\n uib-tab-content-transclude="tab">\n </div>\n </div>\n</div>\n')}]),angular.module("template/timepicker/timepicker.html",[]).run(["$templateCache",function(a){a.put("template/timepicker/timepicker.html",'<table>\n <tbody>\n <tr class="text-center" ng-show="::showSpinners">\n <td><a ng-click="incrementHours()" ng-class="{disabled: noIncrementHours()}" class="btn btn-link"><span class="glyphicon glyphicon-chevron-up"></span></a></td>\n <td>&nbsp;</td>\n <td><a ng-click="incrementMinutes()" ng-class="{disabled: noIncrementMinutes()}" class="btn btn-link"><span class="glyphicon glyphicon-chevron-up"></span></a></td>\n <td ng-show="showMeridian"></td>\n </tr>\n <tr>\n <td class="form-group" ng-class="{\'has-error\': invalidHours}">\n <input style="width:50px;" type="text" ng-model="hours" ng-change="updateHours()" class="form-control text-center" ng-readonly="::readonlyInput" maxlength="2">\n </td>\n <td>:</td>\n <td class="form-group" ng-class="{\'has-error\': invalidMinutes}">\n <input style="width:50px;" type="text" ng-model="minutes" ng-change="updateMinutes()" class="form-control text-center" ng-readonly="::readonlyInput" maxlength="2">\n </td>\n <td ng-show="showMeridian"><button type="button" ng-class="{disabled: noToggleMeridian()}" class="btn btn-default text-center" ng-click="toggleMeridian()">{{meridian}}</button></td>\n </tr>\n <tr class="text-center" ng-show="::showSpinners">\n <td><a ng-click="decrementHours()" ng-class="{disabled: noDecrementHours()}" class="btn btn-link"><span class="glyphicon glyphicon-chevron-down"></span></a></td>\n <td>&nbsp;</td>\n <td><a ng-click="decrementMinutes()" ng-class="{disabled: noDecrementMinutes()}" class="btn btn-link"><span class="glyphicon glyphicon-chevron-down"></span></a></td>\n <td ng-show="showMeridian"></td>\n </tr>\n </tbody>\n</table>\n')}]),angular.module("template/typeahead/typeahead-match.html",[]).run(["$templateCache",function(a){a.put("template/typeahead/typeahead-match.html",'<a href tabindex="-1" ng-bind-html="match.label | uibTypeaheadHighlight:query"></a>\n')}]),angular.module("template/typeahead/typeahead-popup.html",[]).run(["$templateCache",function(a){a.put("template/typeahead/typeahead-popup.html",'<ul class="dropdown-menu" ng-show="isOpen() && !moveInProgress" ng-style="{top: position().top+\'px\', left: position().left+\'px\'}" style="display: block;" role="listbox" aria-hidden="{{!isOpen()}}">\n <li ng-repeat="match in matches track by $index" ng-class="{active: isActive($index) }" ng-mouseenter="selectActive($index)" ng-click="selectMatch($index)" role="option" id="{{::match.id}}">\n <div uib-typeahead-match index="$index" match="match" query="query" template-url="templateUrl"></div>\n </li>\n</ul>\n')}]),!angular.$$csp()&&angular.element(document).find("head").prepend('<style type="text/css">.ng-animate.item:not(.left):not(.right){-webkit-transition:0s ease-in-out left;transition:0s ease-in-out left}</style>');
12 \ No newline at end of file 12 \ No newline at end of file
src/main/resources/static/pages/base/region/add.html 0 → 100644
  1 +<!-- 片段标题 START -->
  2 +<div class="page-head">
  3 + <div class="page-title">
  4 + <h1>添加公司</h1>
  5 + </div>
  6 +</div>
  7 +<!-- 片段标题 END -->
  8 +
  9 +<!-- 公司信息导航栏组件 START -->
  10 +<ul class="page-breadcrumb breadcrumb">
  11 + <li><a href="/pages/home.html" data-pjax>首页</a> <i class="fa fa-circle"></i></li>
  12 + <li><span class="active">基础信息</span> <i class="fa fa-circle"></i></li>
  13 + <li><a href="/pages/base/company/list.html" data-pjax>区域</a> <i class="fa fa-circle"></i></li>
  14 + <li><span class="active">添加区域</span></li>
  15 +</ul>
  16 +<!-- 公司信息导航栏组件 END -->
  17 +
  18 +<!-- 信息容器组件 START -->
  19 +<div class="portlet light bordered">
  20 +
  21 + <!-- 信息容器组件标题 START -->
  22 + <div class="portlet-title">
  23 + <div class="caption">
  24 + <i class="icon-equalizer font-red-sunglo"></i>
  25 + <span class="caption-subject font-red-sunglo bold uppercase">添加区域</span>
  26 + </div>
  27 + </div>
  28 + <!-- 信息容器组件标题 END -->
  29 +
  30 + <!-- 表单容器组件 START -->
  31 + <div class="portlet-body form">
  32 +
  33 + <!-- comp_add_form FORM START -->
  34 + <form action="/line" class="form-horizontal" id="region_add_form" >
  35 +
  36 + <!-- 表单验证错误提示组件 START -->
  37 + <div class="alert alert-danger display-hide">
  38 + <button class="close" data-close="alert"></button>
  39 + 您的输入有误,请检查下面的输入项
  40 + </div>
  41 + <!-- 表单验证错误提示组件 END -->
  42 +
  43 + <!-- 表单字段内容 START -->
  44 + <div class="form-body">
  45 + <!-- 表单分组组件 form-group START -->
  46 + <div class="form-group">
  47 + <!-- 公司编码 (* 必填项) START -->
  48 + <div class="col-md-9">
  49 + <label class="control-label col-md-5">
  50 + <span class="required"> * </span>区域名称:
  51 + </label>
  52 + <div class="col-md-4">
  53 + <input type="text" class="form-control" name="name" id="name" placeholder="公司编码">
  54 + </div>
  55 + </div>
  56 + <!-- 公司编码 (* 必填项) END -->
  57 + </div>
  58 + <!-- 表单分组组件 form-group END -->
  59 +
  60 + </div>
  61 + <!-- 表单字段内容 END -->
  62 +
  63 + <!-- 表单按钮组件 START -->
  64 + <div class="form-actions">
  65 + <div class="row">
  66 + <div class="col-md-offset-3 col-md-4">
  67 + <button type="submit" class="btn green" id="submintBtn"><i class="fa fa-check"></i> 提交</button>
  68 + <a type="button" class="btn default" href="list.html" data-pjax><i class="fa fa-times"></i> 取消</a>
  69 + </div>
  70 + </div>
  71 + </div>
  72 + <!-- 表单按钮组件 END -->
  73 + </form>
  74 + <!-- comp_add_form FORM END -->
  75 + </div>
  76 + <!-- 表单组件 END -->
  77 +</div>
  78 +<!-- 信息容器组件 END -->
  79 +<!-- 公司信息添加片段JS模块 -->
  80 +<script src="/pages/base/region/js/region_add.js"></script>
0 \ No newline at end of file 81 \ No newline at end of file
src/main/resources/static/pages/base/region/js/region_add.js 0 → 100644
  1 +/**
  2 + * @description TODO(区域信息添加片段JS模块)
  3 + *
  4 + * @author bsth@lq
  5 + *
  6 + * @date 二〇一六年十月十八日 13:31:58
  7 + *
  8 + */
  9 +
  10 +$(function(){
  11 + // 定义表单
  12 + var form = $('#region_add_form');
  13 + // 定义表单异常
  14 + var error = $('.alert-danger',form);
  15 + // 表单验证
  16 + form.validate({
  17 + // 错误提示元素span对象
  18 + errorElement : 'span',
  19 + // 错误提示元素class名称
  20 + errorClass : 'help-block help-block-error',
  21 + // 验证错误获取焦点
  22 + focusInvalid : true,
  23 + // 需要验证的表单元素
  24 + rules : {
  25 +
  26 + // 区域名称
  27 + 'name' : {
  28 + // 必填项
  29 + required : true,
  30 + // 最大长度
  31 + maxlength: 30
  32 + },
  33 + },
  34 + /**
  35 + * 类型:Callback。当未通过验证的表单提交时,可以在该回调函数中处理一些事情。
  36 + *
  37 + * 参数:该回调函数有两个参数:第一个为一个事件对象,第二个为验证器(validator)
  38 + */
  39 + invalidHandler : function(event, validator) {
  40 + // 显示表单未通过提示信息
  41 + error.show();
  42 + // 把提示信息放到指定的位置。
  43 + App.scrollTo(error, -200);
  44 + },
  45 + /**
  46 + * 类型:Callback。
  47 + *
  48 + * 默认:添加errorClass("has-error")到表单元素。将未通过验证的表单元素设置高亮。
  49 + */
  50 + highlight : function(element) {
  51 + // 添加errorClass("has-error")到表单元素
  52 + $(element).closest('.form-group').addClass('has-error');
  53 +
  54 + },
  55 + /**
  56 + * 类型:Callback。
  57 + *
  58 + * 默认:移除errorClass("has-error")。与highlight操作相反
  59 + */
  60 + unhighlight : function(element) {
  61 + // 移除errorClass("has-error")
  62 + $(element).closest('.form-group').removeClass('has-error');
  63 +
  64 + },
  65 + /**
  66 + * 类型:String,Callback。
  67 + *
  68 + * 如果指定它,当验证通过时显示一个消息。
  69 + *
  70 + * 如果是String类型的,则添加该样式到标签中;
  71 + *
  72 + * 如果是一个回调函数,则将标签作为其唯一的参数。
  73 + */
  74 + success : function(label) {
  75 + // 当验证通过时,移除errorClass("has-error")
  76 + label.closest('.form-group').removeClass('has-error');
  77 + },
  78 +
  79 + /**
  80 + * 类型:Callback。
  81 + *
  82 + * 默认:default (native) form submit;当表单通过验证,提交表单。回调函数有个默认参数form
  83 + */
  84 + submitHandler : function(f) {
  85 + // 隐藏错误提示
  86 + error.hide();
  87 + // 表单序列化
  88 + var params = form.serializeJSON();
  89 + // 提交
  90 + // 防止用户多次提交
  91 + $("#submintBtn").addClass("disabled");
  92 + // 添加数据
  93 + $post('/region', params, function(result) {
  94 + // 如果返回结果不为空
  95 + if(result){
  96 + // 返回状态码为"SUCCESS" ,则添加成功;返回状态码为"ERROR" ,则添加失败
  97 + if(result.status=='SUCCESS') {
  98 + // 弹出添加成功提示消息
  99 + layer.msg('添加成功...');
  100 + } else if(result.status=='ERROR') {
  101 + // 弹出添加失败提示消息
  102 + layer.msg('添加失败...');
  103 + }
  104 + }
  105 + // 返回list.html页面
  106 + loadPage('list.html');
  107 + });
  108 + $("#submintBtn").removeClass("disabled");
  109 +
  110 + }
  111 + });
  112 +});
0 \ No newline at end of file 113 \ No newline at end of file
src/main/resources/static/pages/base/region/js/region_list.js 0 → 100644
  1 +/**
  2 + *
  3 + * @JSName : list.js(区域list.html页面js)
  4 + *
  5 + * @Author : bsth@lq
  6 + *
  7 + * @Description : TODO区域.html页面js)
  8 + *
  9 + *
  10 + */
  11 +
  12 +(function(){
  13 + // 关闭左侧栏
  14 + if (!$('body').hasClass('page-sidebar-closed')) {$('.menu-toggler.sidebar-toggler').click();}
  15 +
  16 + /** page : 当前页 initPag : */
  17 + var page = 0,initPag;
  18 + /** 表格数据分页加载 */
  19 + loadTableDate(null,true);
  20 + function getParams() {
  21 + // cells 集合返回表格中所有(列)单元格的一个数组
  22 + var cells = $('tr.filter')[0].cells;
  23 + // 搜索参数集合
  24 + var params = {};
  25 + // 搜索字段名称
  26 + var name;
  27 + // 遍历cells数组
  28 + $.each(cells, function(i, cell){
  29 + // 获取第i列的input或者select集合
  30 + var items = $('input,select', cell);
  31 + // 遍历items集合
  32 + for(var j = 0, item; item = items[j++];){
  33 + // 获取字段名称
  34 + name = $(item).attr('name');
  35 + if(name){
  36 + // 赋取相对应的值
  37 + params[name] = $(item).val();
  38 + }
  39 + }
  40 + });
  41 + if(params.parkName_like=='请选择...')
  42 + params.parkName_like = '';
  43 + else
  44 + params.parkName_like = params.parkName_like.split('_')[0];
  45 + return params;
  46 + }
  47 +
  48 + /**
  49 + * 表格数据分页加载事件
  50 + *
  51 + * ------@param : 查询参数
  52 + *
  53 + * ------@isPon : 是否重新分页
  54 + *
  55 + */
  56 + function loadTableDate(param,isPon){
  57 + // 搜索参数
  58 + var params = {};
  59 + if(param) {
  60 + params = param;
  61 + }
  62 + // 排序(按更新时间)
  63 + params['order'] = 'id';
  64 + // 记录当前页数
  65 + params['page'] = page;
  66 + // 弹出正在加载层
  67 + var i = layer.load(2);
  68 +
  69 + // 异步请求获取表格数据
  70 + $.get('/region',params,function(result){
  71 + // 添加序号
  72 + result.content.page = page;
  73 +
  74 + // 把数据填充到模版中
  75 + var tbodyHtml = template('region_list_table_temp',{list:result.content});
  76 + $('#datatable_region tbody').html(tbodyHtml);
  77 + // 是重新分页且返回数据长度大于0
  78 + if(isPon && result.content.length > 0){
  79 + // 重新分页
  80 + initPag = true;
  81 + // 分页栏
  82 + showPagination(result);
  83 + }
  84 + // 关闭弹出加载层
  85 + layer.close(i);
  86 + });
  87 +
  88 + }
  89 +
  90 + /** 分页栏组件 */
  91 + function showPagination(data){
  92 + // 分页组件
  93 + $('#pagination').jqPaginator({
  94 + // 总页数
  95 + totalPages: data.totalPages,
  96 + // 中间显示页数
  97 + visiblePages: 6,
  98 + // 当前页
  99 + currentPage: page + 1,
  100 + first: '<li class="first"><a href="javascript:void(0);">首页<\/a><\/li>',
  101 + prev: '<li class="prev"><a href="javascript:void(0);">上一页<\/a><\/li>',
  102 + next: '<li class="next"><a href="javascript:void(0);">下一页<\/a><\/li>',
  103 + last: '<li class="last"><a href="javascript:void(0);">尾页<\/a><\/li>',
  104 + page: '<li class="page"><a href="javascript:void(0);">{{page}}<\/a><\/li>',
  105 + onPageChange: function (num, type) {
  106 + if(initPag){
  107 + initPag = false;
  108 + return;
  109 + }
  110 + var pData = getParams();
  111 + page = num - 1;
  112 + loadTableDate(pData, false);
  113 + }
  114 + });
  115 + }
  116 +})();
0 \ No newline at end of file 117 \ No newline at end of file
src/main/resources/static/pages/base/region/list.html 0 → 100644
  1 +<div class="page-head">
  2 + <div class="page-title">
  3 + <h1>区域信息</h1>
  4 + </div>
  5 +</div>
  6 +
  7 +<ul class="page-breadcrumb breadcrumb">
  8 + <li><a href="/pages/home.html" data-pjax>首页</a> <i class="fa fa-circle"></i></li>
  9 + <li><span class="active">基础信息</span> <i class="fa fa-circle"></i></li>
  10 + <li><span class="active">区域信息</span></li>
  11 +</ul>
  12 +
  13 +<div class="row">
  14 + <div class="col-md-12">
  15 + <div class="portlet light porttlet-fit bordered">
  16 + <div class="portlet-title">
  17 + <div class="caption">
  18 + <i class="fa fa-info-circle font-dark"></i>
  19 + <span class="caption-subject font-dark sbold uppercase">区域信息</span>
  20 + </div>
  21 + <div class="actions">
  22 + <div class="btn-group btn-group-devided" data-toggle="buttons">
  23 + <a class="btn btn-circle blue" href="add.html" data-pjax><i class="fa fa-plus"></i> 添加区域</a>
  24 + </div>
  25 + </div>
  26 + </div>
  27 + <div class="portlet-body">
  28 + <div class="table-container" style="margin-top: 10px">
  29 + <table class="table table-striped table-bordered table-hover table-checkable" id="datatable_region">
  30 + <thead>
  31 + <tr role="row" class="heading">
  32 + <th width="3%">序号</th>
  33 + <th width="12%">区域</th>
  34 + <th width="6%">是否撤销</th>
  35 + <th width="10%">操作</th>
  36 + </tr>
  37 + <tr role="row" class="filter">
  38 + <td>#</td>
  39 + <td>#</td>
  40 + <td>#</td>
  41 + <td>
  42 + <button class="btn btn-sm green btn-outline filter-submit margin-bottom" >
  43 + <i class="fa fa-search"></i> 搜索
  44 + </button>
  45 +
  46 + <button class="btn btn-sm red btn-outline filter-cancel">
  47 + <i class="fa fa-times"></i> 重置
  48 + </button>
  49 + </td>
  50 + </tr>
  51 + </thead>
  52 + <tbody></tbody>
  53 + </table>
  54 + <div style="text-align: right;">
  55 + <ul id="pagination" class="pagination"></ul>
  56 + </div>
  57 + </div>
  58 + </div>
  59 + </div>
  60 + </div>
  61 +</div>
  62 +
  63 +<script type="text/html" id="region_list_table_temp">
  64 + {{each list as obj i }}
  65 + <tr>
  66 + <td style="vertical-align: middle;">
  67 + {{(list.page*10)+(i+1)}}
  68 + </td>
  69 + <td>
  70 + {{obj.name}}
  71 + </td>
  72 +
  73 + <td>
  74 + {{if obj.destroy == 1}}
  75 + <span style="font-weight: bold; color: red; padding: 5px; background-color: #FFE4E1; margin: 5px; font-size: 9px;border-radius: 4px;">撤销</span>
  76 + {{else if obj.destroy == 0}}
  77 + <span style="font-weight: bold; color: #07824e; padding: 5px; background-color: #FFE4E1; margin: 5px; font-size: 9px;border-radius: 4px;">运营</span>
  78 + {{/if}}
  79 + </td>
  80 + <td>
  81 + <a href="edit.html?no={{obj.id}}" class="btn default blue-stripe btn-sm" data-pjax> 修改 </a>
  82 + {{if obj.destroy==1}}
  83 + <a class="ct_base_line_delete_link" data-id="{{obj.id}}" data-name="{{obj.name}}"> 删除 </a>
  84 + {{/if}}
  85 + </td>
  86 + </tr>
  87 + {{/each}}
  88 + {{if list.length == 0}}
  89 + <tr>
  90 + <td colspan=10><h6 class="muted">没有找到相关数据</h6></td>
  91 + </tr>
  92 + {{/if}}
  93 +</script>
  94 +<script src="/pages/base/region/js/region_list.js"></script>
0 \ No newline at end of file 95 \ No newline at end of file
src/main/resources/static/pages/base/region_line_car/add.html 0 → 100644
  1 +<!-- 片段标题 START -->
  2 +<div class="page-head">
  3 + <div class="page-title">
  4 + <h1>添加公司</h1>
  5 + </div>
  6 +</div>
  7 +<!-- 片段标题 END -->
  8 +
  9 +<!-- 公司信息导航栏组件 START -->
  10 +<ul class="page-breadcrumb breadcrumb">
  11 + <li><a href="/pages/home.html" data-pjax>首页</a> <i class="fa fa-circle"></i></li>
  12 + <li><span class="active">基础信息</span> <i class="fa fa-circle"></i></li>
  13 + <li><a href="/pages/base/company/list.html" data-pjax>区域</a> <i class="fa fa-circle"></i></li>
  14 + <li><span class="active">添加区域</span></li>
  15 +</ul>
  16 +<!-- 公司信息导航栏组件 END -->
  17 +
  18 +<!-- 信息容器组件 START -->
  19 +<div class="portlet light bordered">
  20 +
  21 + <!-- 信息容器组件标题 START -->
  22 + <div class="portlet-title">
  23 + <div class="caption">
  24 + <i class="icon-equalizer font-red-sunglo"></i>
  25 + <span class="caption-subject font-red-sunglo bold uppercase">添加区域</span>
  26 + </div>
  27 + </div>
  28 + <!-- 信息容器组件标题 END -->
  29 +
  30 + <!-- 表单容器组件 START -->
  31 + <div class="portlet-body form">
  32 +
  33 + <!-- comp_add_form FORM START -->
  34 + <form action="/line" class="form-horizontal" id="region_line_car_add_form" >
  35 +
  36 + <!-- 表单验证错误提示组件 START -->
  37 + <div class="alert alert-danger display-hide">
  38 + <button class="close" data-close="alert"></button>
  39 + 您的输入有误,请检查下面的输入项
  40 + </div>
  41 + <!-- 表单验证错误提示组件 END -->
  42 +
  43 +
  44 + <!-- 表单字段内容 START -->
  45 + <div class="form-body">
  46 + <!-- 表单分组组件 form-group START -->
  47 + <div class="form-group">
  48 + <!-- 公司编码 (* 必填项) START -->
  49 + <div class="col-md-9">
  50 + <label class="control-label col-md-5">
  51 + <span class="required"> * </span>区域名称:
  52 + </label>
  53 + <div class="col-md-4">
  54 + <select name="region" class="form-control" style="width:100%" id="regionSelect"></select>
  55 + </div>
  56 + </div>
  57 + </div>
  58 + </div>
  59 +
  60 + <div class="form-body">
  61 + <div class="form-group">
  62 + <div class="col-md-9">
  63 + <label class="control-label col-md-5">
  64 + <span class="required"> * </span> 线路名称&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :
  65 + </label>
  66 + <div class="col-md-4">
  67 + <select name="line" class="form-control" style="width:100%" id="lineSelect"></select>
  68 + </div>
  69 + </div>
  70 + </div>
  71 + </div>
  72 +
  73 + <div class="form-body">
  74 + <!-- 表单分组组件 form-group START -->
  75 + <div class="form-group">
  76 + <!-- 公司编码 (* 必填项) START -->
  77 + <div class="col-md-9">
  78 + <label class="control-label col-md-5">
  79 + <span class="required"> * </span>车辆:
  80 + </label>
  81 + <div class="col-md-4">
  82 + <select name="car" class="form-control" style="width:100%" id="carSelect"></select>
  83 + </div>
  84 + </div>
  85 + <!-- 公司编码 (* 必填项) END -->
  86 + </div>
  87 + <!-- 表单分组组件 form-group END -->
  88 +
  89 + </div>
  90 + <!-- 表单按钮组件 START -->
  91 + <div class="form-actions">
  92 + <div class="row">
  93 + <div class="col-md-offset-3 col-md-4">
  94 + <button type="submit" class="btn green" id="submintBtn"><i class="fa fa-check"></i> 提交</button>
  95 + <a type="button" class="btn default" href="list.html" data-pjax><i class="fa fa-times"></i> 取消</a>
  96 + </div>
  97 + </div>
  98 + </div>
  99 + <!-- 表单按钮组件 END -->
  100 + </form>
  101 + <!-- comp_add_form FORM END -->
  102 + </div>
  103 + <!-- 表单组件 END -->
  104 +</div>
  105 +<!-- 信息容器组件 END -->
  106 +<!-- 公司信息添加片段JS模块 -->
  107 +<script src="/pages/base/region_line_car/js/region_add.js"></script>
0 \ No newline at end of file 108 \ No newline at end of file
src/main/resources/static/pages/base/region_line_car/js/region_add.js 0 → 100644
  1 +/**
  2 + * @description TODO(区域信息添加片段JS模块)
  3 + *
  4 + * @author bsth@lq
  5 + *
  6 + * @date 二〇一六年十月十八日 13:31:58
  7 + *
  8 + */
  9 +
  10 +$(function(){
  11 + storage = window.localStorage;
  12 +
  13 + // 营运公司Map[key(businessCode)] = 名字
  14 + var companyMap = new Map();
  15 + // 分公司Map[key(upCode+_+businessCode)] = 名字
  16 + var branchMap = new Map();
  17 + initCompanySelect2(function(array) {
  18 + $.each(array, function() {
  19 + companyMap[this.businessCode] = this.businessName;
  20 + // companyMap.put(this.businessCode.toString(), this.businessName);
  21 + if(this.businessCode != null || this.businessCode !=''){
  22 + /** 查询出所属公司下的分公司名称和相应分公司代码 @param:<upCode_eq:公司代码> */
  23 + $get('/business/all', {upCode_eq: this.businessCode}, function(array){
  24 + // 遍历array
  25 + $.each(array, function(i,d){
  26 + branchMap[this.upCode+"_"+this.businessCode] = this.businessName;
  27 + // branchMap.put(this.upCode+"_"+this.businessCode, this.businessName);
  28 + });
  29 + });
  30 + }
  31 + });
  32 + // 公司下拉options属性值
  33 + var options = '<option value="">请选择...</option>';
  34 + // 遍历array
  35 + $.each(array, function(i,d){
  36 + options += '<option value="'+d.businessCode+'">'+d.businessName+'</option>';
  37 + });
  38 + // 初始化公司下拉框并监听值改变事件.
  39 + $('#companySelect').html(options).on('change', setBrancheCompanySelectOptions);
  40 + // 初始化分公司下拉框.
  41 + setBrancheCompanySelectOptions();
  42 + initLineSelect2(array);
  43 +
  44 + });
  45 +
  46 + function initCompanySelect2(cb) {
  47 + // get请求获取公司
  48 + $get('/business/all', {upCode_eq: '88'}, function(gs_d){
  49 + return cb && cb(gs_d);
  50 + });
  51 + }
  52 + function getComp(cb) {
  53 + $.get('/user/companyData',null,function(rs) {
  54 + return cb && cb(rs);
  55 + });
  56 + }
  57 + /** 填充分公司下拉框选择值 */
  58 + function setBrancheCompanySelectOptions(){
  59 + // 获取公司下拉框选择值
  60 + var businessCode = $('#companySelect').val();
  61 + // 分公司下拉框options属性值
  62 + var options = '<option value="">请选择...</option>';
  63 + // 如果公司选择为空则分公司为空 ; 否则查询出所属公司下的分公司名称和相应分公司代码
  64 + if(businessCode == null || businessCode ==''){
  65 + // 填充分公司下拉框options
  66 + $('#brancheCompanySelect').html(options);
  67 + } else {
  68 + /** 查询出所属公司下的分公司名称和相应分公司代码 @param:<upCode_eq:公司代码> */
  69 + $get('/business/all', {upCode_eq: businessCode}, function(array){
  70 + // 遍历array
  71 + $.each(array, function(i,d){
  72 + options += '<option value="'+d.businessCode+'">'+d.businessName+'</option>';
  73 + // 填充分公司下拉框options
  74 + $('#brancheCompanySelect').html(options);
  75 + });
  76 + });
  77 + }
  78 + };
  79 + function initLineSelect2(compD) {
  80 + getComp(function(rs) {
  81 + var params = {};
  82 + if(rs.length>0) {
  83 + var compA = new Array();
  84 + for(var c = 0 ; c<rs.length;c++) {
  85 + var comC = rs[c].companyCode;
  86 + var child = rs[c].children;
  87 + if(child.length>0) {
  88 + for(var d = 0 ;d< child.length;d++) {
  89 + compA.push(comC + '_' + child[d].code);
  90 + }
  91 + }else {
  92 + compA.push(comC);
  93 + }
  94 + }
  95 + params.cgsbm_in = compA.toString();
  96 + }
  97 + // 填充线路拉框选择值
  98 + $get('/line/all', params, function(array){
  99 + var len_ = array.length,paramsD = new Array();
  100 + if(len_>0) {
  101 + $.each(array, function(i, g){
  102 + if(g.name!='' || g.name != null) {
  103 + paramsD.push({'id':g.name + '_' + g.id + '_' + g.lineCode ,'text':g.name + gsdmTogsName(compD,g.company)});
  104 + }
  105 + });
  106 + initPinYinSelect2($('#lineSelect'),paramsD,function(selector) {
  107 + selector.select2("val", storage.xlName_AgursData);
  108 + });
  109 + }
  110 + });
  111 +
  112 +
  113 + // 填充车辆拉框选择值
  114 + $get('/cars/all', params, function(array){
  115 + var len_ = array.length,paramsD = new Array();
  116 + if(len_>0) {
  117 + $.each(array, function(i, g){
  118 + if(g.name!='' || g.name != null) {
  119 +
  120 + paramsD.push({'id':g.insideCode,'text':g.insideCode + gsdmTogsName(compD,g.company)});
  121 + }
  122 + });
  123 + initPinYinSelect2($('#carSelect'),paramsD,function(selector) {
  124 + });
  125 + }
  126 + });
  127 +
  128 +
  129 + // 填充车辆拉框选择值
  130 + $get('/region/all', null, function(array){
  131 + var len_ = array.length,paramsD = new Array();
  132 + if(len_>0) {
  133 + $.each(array, function(i, g){
  134 + paramsD.push({'id':g.id ,'text':g.name});
  135 + });
  136 +
  137 + initPinYinSelect2($('#regionSelect'),paramsD,function(selector) {});
  138 + }
  139 + });
  140 +
  141 +
  142 + });
  143 + };
  144 + function gsdmTogsName(gsD,code) {
  145 + var rsStr = '';
  146 + for(var s = 0 ; s < gsD.length; s++) {
  147 + if(gsD[s].businessCode == code) {
  148 + rsStr = rsStr + '(' + gsD[s].businessName.replace('公司','') + ')';
  149 + break;
  150 + }
  151 + }
  152 + return rsStr;
  153 + }
  154 +
  155 +
  156 + // 定义表单
  157 + var form = $('#region_line_car_add_form');
  158 + // 定义表单异常
  159 + var error = $('.alert-danger',form);
  160 + // 表单验证
  161 + form.validate({
  162 + submitHandler : function(f) {
  163 + // 隐藏错误提示
  164 + error.hide();
  165 + // 表单序列化
  166 + var params = form.serializeJSON();
  167 + debugger
  168 +
  169 + let data = {
  170 + region : params.region
  171 + };
  172 + if (params.line != null){
  173 + let line = params.line.split("_");
  174 + data['line'] =line[1];
  175 + data['lineName'] =line[0];
  176 + }
  177 + if (params.car != null){
  178 + data['clZbh'] =params.car;
  179 + }
  180 +
  181 +
  182 +
  183 +
  184 +
  185 + // 提交
  186 +
  187 + // 防止用户多次提交
  188 + $("#submintBtn").addClass("disabled");
  189 + // 添加数据
  190 + $post('/regionLineCar', data, function(result) {
  191 + // 如果返回结果不为空
  192 + if(result){
  193 + // 返回状态码为"SUCCESS" ,则添加成功;返回状态码为"ERROR" ,则添加失败
  194 + if(result.status=='SUCCESS') {
  195 + // 弹出添加成功提示消息
  196 + layer.msg('添加成功...');
  197 + } else if(result.status=='ERROR') {
  198 + // 弹出添加失败提示消息
  199 + layer.msg('添加失败...');
  200 + }
  201 + }
  202 + // 返回list.html页面
  203 + loadPage('list.html');
  204 + });
  205 + $("#submintBtn").removeClass("disabled");
  206 +
  207 + }
  208 + });
  209 +
  210 +});
  211 +
  212 +
src/main/resources/static/pages/base/region_line_car/js/region_list.js 0 → 100644
  1 +/**
  2 + *
  3 + * @JSName : list.js(区域list.html页面js)
  4 + *
  5 + * @Author : bsth@lq
  6 + *
  7 + * @Description : TODO区域.html页面js)
  8 + *
  9 + *
  10 + */
  11 +
  12 +(function(){
  13 + // 关闭左侧栏
  14 + if (!$('body').hasClass('page-sidebar-closed')) {$('.menu-toggler.sidebar-toggler').click();}
  15 +
  16 + /** page : 当前页 initPag : */
  17 + var page = 0,initPag;
  18 + /** 表格数据分页加载 */
  19 + loadTableDate(null,true);
  20 + function getParams() {
  21 + // cells 集合返回表格中所有(列)单元格的一个数组
  22 + var cells = $('tr.filter')[0].cells;
  23 + // 搜索参数集合
  24 + var params = {};
  25 + // 搜索字段名称
  26 + var name;
  27 + // 遍历cells数组
  28 + $.each(cells, function(i, cell){
  29 + // 获取第i列的input或者select集合
  30 + var items = $('input,select', cell);
  31 + // 遍历items集合
  32 + for(var j = 0, item; item = items[j++];){
  33 + // 获取字段名称
  34 + name = $(item).attr('name');
  35 + if(name){
  36 + // 赋取相对应的值
  37 + params[name] = $(item).val();
  38 + }
  39 + }
  40 + });
  41 + if(params.parkName_like=='请选择...')
  42 + params.parkName_like = '';
  43 + else
  44 + params.parkName_like = params.parkName_like.split('_')[0];
  45 + return params;
  46 + }
  47 +
  48 + /**
  49 + * 表格数据分页加载事件
  50 + *
  51 + * ------@param : 查询参数
  52 + *
  53 + * ------@isPon : 是否重新分页
  54 + *
  55 + */
  56 + function loadTableDate(param,isPon){
  57 + // 搜索参数
  58 + var params = {};
  59 + if(param) {
  60 + params = param;
  61 + }
  62 + // 排序(按更新时间)
  63 + params['order'] = 'id';
  64 + // 记录当前页数
  65 + params['page'] = page;
  66 + // 弹出正在加载层
  67 + var i = layer.load(2);
  68 +
  69 + // 异步请求获取表格数据
  70 + $.get('/regionLineCar',params,function(result){
  71 + // 添加序号
  72 + result.content.page = page;
  73 + $.each(result.content, function(i, obj) {
  74 + obj.createDate = moment(obj.createDate).format("YYYY-MM-DD");
  75 + });
  76 + // 把数据填充到模版中
  77 + var tbodyHtml = template('region_line_car_list_table_temp',{list:result.content});
  78 +
  79 +
  80 + $('#datatable_region tbody').html(tbodyHtml);
  81 + // 是重新分页且返回数据长度大于0
  82 + if(isPon && result.content.length > 0){
  83 + // 重新分页
  84 + initPag = true;
  85 + // 分页栏
  86 + showPagination(result);
  87 + }
  88 + // 关闭弹出加载层
  89 + layer.close(i);
  90 + });
  91 +
  92 + }
  93 +
  94 + /** 分页栏组件 */
  95 + function showPagination(data){
  96 + // 分页组件
  97 + $('#pagination').jqPaginator({
  98 + // 总页数
  99 + totalPages: data.totalPages,
  100 + // 中间显示页数
  101 + visiblePages: 6,
  102 + // 当前页
  103 + currentPage: page + 1,
  104 + first: '<li class="first"><a href="javascript:void(0);">首页<\/a><\/li>',
  105 + prev: '<li class="prev"><a href="javascript:void(0);">上一页<\/a><\/li>',
  106 + next: '<li class="next"><a href="javascript:void(0);">下一页<\/a><\/li>',
  107 + last: '<li class="last"><a href="javascript:void(0);">尾页<\/a><\/li>',
  108 + page: '<li class="page"><a href="javascript:void(0);">{{page}}<\/a><\/li>',
  109 + onPageChange: function (num, type) {
  110 + if(initPag){
  111 + initPag = false;
  112 + return;
  113 + }
  114 + var pData = getParams();
  115 + page = num - 1;
  116 + loadTableDate(pData, false);
  117 + }
  118 + });
  119 + }
  120 +})();
0 \ No newline at end of file 121 \ No newline at end of file