Commit 12413b5e6051973b79baaf9ec71b91bfa9cf7eb5

Authored by 潘钊
2 parents ef1b0bb5 16e8bcdf

Merge branch 'master' of 192.168.168.201:panzhaov5/bsth_control

Too many changes to show.

To preserve performance only 17 of 39 files are displayed.

src/main/java/com/bsth/controller/StationController.java
... ... @@ -36,19 +36,28 @@ public class StationController extends BaseController<Station, Integer> {
36 36 @Autowired
37 37 private StationService service;
38 38  
39   - @RequestMapping(value="collection" , method = RequestMethod.POST)
40   - public Map<String, Object> collection(@RequestParam Map<String, Object> map) {
  39 + @RequestMapping(value="collectionSave" , method = RequestMethod.POST)
  40 + public Map<String, Object> collectionSave(@RequestParam Map<String, Object> map) {
41 41  
42   - String strJSON = map.get("json").toString().equals("") ? "" : map.get("json").toString();
  42 + return service.systemSaveStations(map);
43 43  
44   - if(!strJSON.equals("")) {
45   -
46   - JSONArray stationsArray = JSONArray.parseArray(strJSON);
47   -
48   -
49   -
50   - }
  44 + }
  45 +
  46 + @RequestMapping(value="stationSave" , method = RequestMethod.POST)
  47 + public Map<String, Object> stationSave(@RequestParam Map<String, Object> map) {
  48 +
  49 + map.put("createBy", "");
  50 +
  51 + map.put("updateBy", "");
  52 +
  53 + return service.stationSaveMap(map);
  54 +
  55 + }
  56 +
  57 + @RequestMapping(value="getStationCode" , method = RequestMethod.GET)
  58 + public int getStationCode() {
  59 +
  60 + return service.getStationCode();
51 61  
52   - return null;
53 62 }
54 63 }
... ...
src/main/java/com/bsth/controller/StationRouteController.java
1 1 package com.bsth.controller;
2 2  
  3 +import java.util.List;
  4 +import java.util.Map;
  5 +
3 6 import org.springframework.beans.factory.annotation.Autowired;
  7 +import org.springframework.data.domain.Page;
  8 +import org.springframework.data.domain.PageRequest;
  9 +import org.springframework.data.domain.Sort;
  10 +import org.springframework.data.domain.Sort.Direction;
4 11 import org.springframework.web.bind.annotation.RequestMapping;
  12 +import org.springframework.web.bind.annotation.RequestMethod;
  13 +import org.springframework.web.bind.annotation.RequestParam;
5 14 import org.springframework.web.bind.annotation.RestController;
6 15  
7 16 import com.bsth.entity.StationRoute;
... ... @@ -29,13 +38,13 @@ public class StationRouteController extends BaseController&lt;StationRoute, Integer
29 38 @Autowired
30 39 StationRouteService service;
31 40  
32   - /*
33   - public Page<StationRoute> list(Map<String, Object> map,
  41 + @RequestMapping(method = RequestMethod.GET)
  42 + public Page<StationRoute> list(@RequestParam Map<String, Object> map,
34 43 @RequestParam(defaultValue = "0") int page,
35 44 @RequestParam(defaultValue = "5") int size,
36 45 @RequestParam(defaultValue = "id") String order,
37   - @RequestParam(defaultValue = "DESC") String direction) {
38   -
  46 + @RequestParam(defaultValue = "DESC") String direction){
  47 +
39 48 Direction d;
40 49  
41 50 if(null != direction && direction.equals("ASC"))
... ... @@ -44,6 +53,10 @@ public class StationRouteController extends BaseController&lt;StationRoute, Integer
44 53 d = Direction.DESC;
45 54  
46 55 return service.list(map, new PageRequest(page, size, new Sort(d, order)));
47   - }*/
48   -
  56 + }
  57 +
  58 + @RequestMapping(value = "/findStations" , method = RequestMethod.GET)
  59 + public List<Map<String, Object>> findPoints(@RequestParam Map<String, Object> map) {
  60 + return service.findPoints(map);
  61 + }
49 62 }
... ...
src/main/java/com/bsth/entity/Section.java
... ... @@ -55,6 +55,9 @@ public class Section {
55 55 // 路段矢量(空间坐标点集合)--GPS坐标点
56 56 private String gsectionVector;
57 57  
  58 + // 路段矢量(空间坐标点集合)--百度原始坐标坐标点
  59 + private String bsectionVector;
  60 +
58 61 // 路段矢量(空间坐标点集合)--城建坐标点
59 62 private String csectionVector;
60 63  
... ... @@ -164,6 +167,14 @@ public class Section {
164 167 public void setGsectionVector(String gsectionVector) {
165 168 this.gsectionVector = gsectionVector;
166 169 }
  170 +
  171 + public String getBsectionVector() {
  172 + return bsectionVector;
  173 + }
  174 +
  175 + public void setBsectionVector(String bsectionVector) {
  176 + this.bsectionVector = bsectionVector;
  177 + }
167 178  
168 179 public String getCsectionVector() {
169 180 return csectionVector;
... ...
src/main/java/com/bsth/entity/Station.java
... ... @@ -50,10 +50,13 @@ public class Station {
50 50 */
51 51 private String dbType;
52 52  
53   - // 站点地理位置GPS坐标经度
  53 + // 百度经纬度坐标
  54 + private String bJwpoints;
  55 +
  56 + // 站点地理位置WGS坐标经度
54 57 private Float gLonx;
55 58  
56   - // 站点地理位置GPS坐标纬度
  59 + // 站点地理位置WGS坐标纬度
57 60 private Float gLaty;
58 61  
59 62 // 城建坐标 x
... ... @@ -74,9 +77,12 @@ public class Station {
74 77 // 圆形半径
75 78 private Integer radius;
76 79  
77   - // 多边形空间坐标点集合
  80 + // 多边形空间WGS坐标点集合
78 81 private byte[] gPolygonGrid;
79 82  
  83 + // 多边形空间原坐标坐标点集合
  84 + private byte[] bPolygonGrid;
  85 +
80 86 /**
81 87 * 是否撤销
82 88 *
... ... @@ -84,7 +90,7 @@ public class Station {
84 90 *
85 91 * ------ 0:不撤销
86 92 */
87   - private boolean destroy;
  93 + private Integer destroy;
88 94  
89 95 // 版本号
90 96 private Integer versions;
... ... @@ -145,6 +151,14 @@ public class Station {
145 151 public void setDbType(String dbType) {
146 152 this.dbType = dbType;
147 153 }
  154 +
  155 + public String getbJwpoints() {
  156 + return bJwpoints;
  157 + }
  158 +
  159 + public void setbJwpoints(String bJwpoints) {
  160 + this.bJwpoints = bJwpoints;
  161 + }
148 162  
149 163 public Float getgLonx() {
150 164 return gLonx;
... ... @@ -201,12 +215,20 @@ public class Station {
201 215 public void setgPolygonGrid(byte[] gPolygonGrid) {
202 216 this.gPolygonGrid = gPolygonGrid;
203 217 }
  218 +
  219 + public byte[] getbPolygonGrid() {
  220 + return bPolygonGrid;
  221 + }
  222 +
  223 + public void setbPolygonGrid(byte[] bPolygonGrid) {
  224 + this.bPolygonGrid = bPolygonGrid;
  225 + }
204 226  
205   - public boolean isDestroy() {
  227 + public Integer getDestroy() {
206 228 return destroy;
207 229 }
208 230  
209   - public void setDestroy(boolean destroy) {
  231 + public void setDestroy(Integer destroy) {
210 232 this.destroy = destroy;
211 233 }
212 234  
... ...
src/main/java/com/bsth/repository/SectionRepository.java
1 1 package com.bsth.repository;
2 2  
  3 +
  4 +import org.springframework.data.jpa.repository.Modifying;
  5 +import org.springframework.data.jpa.repository.Query;
3 6 import org.springframework.stereotype.Repository;
  7 +import org.springframework.transaction.annotation.Transactional;
4 8  
5 9 import com.bsth.entity.Section;
6 10  
... ... @@ -22,5 +26,40 @@ import com.bsth.entity.Section;
22 26  
23 27 @Repository
24 28 public interface SectionRepository extends BaseRepository<Section, Integer> {
25   -
  29 +
  30 + // 查询最大ID
  31 + @Query(value = "SELECT IFNULL(num,0) as maxId from (SELECT MAX(id) as num FROM bsth_c_section) k"
  32 + , nativeQuery=true)
  33 + public int sectionMaxId();
  34 +
  35 + @Transactional
  36 + @Modifying
  37 + @Query(value="INSERT INTO bsth_c_section "+
  38 +
  39 + "(section_code , section_name , croses_road , end_node, start_node ,"+
  40 +
  41 + "middle_node , gsection_vector, bsection_vector , section_type , csection_vector,"+
  42 +
  43 + "road_coding , section_distance , section_time , db_type, speed_limit ,"+
  44 +
  45 + "descriptions , versions) "+
  46 +
  47 + "VALUES (?1 , ?2 , ?3 , ?4 , ?5 , "+
  48 +
  49 + "?6 , GEOMFROMTEXT(?7) , GEOMFROMTEXT(?8) , ?9 , ?10 ,"+
  50 +
  51 + "?11 , ?12 , ?13 , ?14 , ?15 ,"+
  52 +
  53 + "?16 , ?17 "+
  54 + ")", nativeQuery=true)
  55 + public void systemSave(String sectionCode , String sectionName , String crosesRoad , String endNode , String startNode,
  56 +
  57 + String middleNode,String gsectionVector,String bsectionVector, String sectionType,String csectionVector,
  58 +
  59 + String roadCoding,double sectionDistance,double sectionTime,String dbType,double speedLimit,
  60 +
  61 + String descriptions, int versions);
  62 +
  63 +
  64 +
26 65 }
... ...
src/main/java/com/bsth/repository/SectionRouteRepository.java
1 1 package com.bsth.repository;
2 2  
  3 +import java.util.List;
  4 +
3 5 import org.springframework.stereotype.Repository;
4 6  
5 7 import com.bsth.entity.SectionRoute;
... ... @@ -22,5 +24,6 @@ import com.bsth.entity.SectionRoute;
22 24  
23 25 @Repository
24 26 public interface SectionRouteRepository extends BaseRepository<SectionRoute, Integer> {
25   -
  27 +
  28 +
26 29 }
... ...
src/main/java/com/bsth/repository/StationRepository.java
1 1 package com.bsth.repository;
2 2  
  3 +import org.springframework.data.jpa.repository.Modifying;
  4 +import org.springframework.data.jpa.repository.Query;
3 5 import org.springframework.stereotype.Repository;
  6 +import org.springframework.transaction.annotation.Transactional;
4 7  
5 8 import com.bsth.entity.Station;
6 9  
... ... @@ -22,5 +25,32 @@ import com.bsth.entity.Station;
22 25  
23 26 @Repository
24 27 public interface StationRepository extends BaseRepository<Station, Integer> {
25   -
  28 +
  29 + // CONVERT(substring(astext(BDLONGANDLAT),10,length(astext(BDLONGANDLAT))-11) USING gb2312) as BDLONGANDLAT,
  30 +
  31 + // 查询最大ID
  32 + @Query(value = "SELECT IFNULL(num,0) as maxId from (SELECT MAX(id) as num FROM bsth_c_station) k"
  33 + , nativeQuery=true)
  34 + public int stationMaxId();
  35 +
  36 + // 站点保存
  37 + @Transactional
  38 + @Modifying
  39 + @Query(value="INSERT INTO bsth_c_station (" +
  40 + "station_cod , station_name , road_coding , db_type , b_jwpoints , " +
  41 + "g_lonx , g_laty , x , y , g_polygon_grid,b_polygon_grid " +
  42 + "destroy , radius , shapes_type , versions , descriptions," +
  43 + "create_by,update_by) " +
  44 + "VALUES(" +
  45 + "?1 , ?2 , ?3 , ?4 , ?5," +
  46 + "?6 , ?7 , ?8 , ?9 , GeomFromText(?10),GeomFromText(?11)," +
  47 + "?12 ,?13, ?14, ?15, ?16," +
  48 + "?17,?18)", nativeQuery=true)
  49 + public void stationSave(String stationCode,String stationName,String roadCoding,String dbType,String bJwpoints,
  50 +
  51 + Float gLonx, Float gLaty, Float x,Float y, String gPloygonGrid, String bPloygonGrid,
  52 +
  53 + Integer destroy,Integer radius,String shapesType,Integer versions,String descriptions,Integer createBy,Integer updateBy);
  54 +
  55 +
26 56 }
... ...
src/main/java/com/bsth/repository/StationRouteRepository.java
1 1 package com.bsth.repository;
2 2  
  3 +import java.util.List;
  4 +
  5 +import org.springframework.data.jpa.repository.Query;
3 6 import org.springframework.stereotype.Repository;
4 7  
5 8 import com.bsth.entity.StationRoute;
... ... @@ -22,5 +25,44 @@ import com.bsth.entity.StationRoute;
22 25  
23 26 @Repository
24 27 public interface StationRouteRepository extends BaseRepository<StationRoute, Integer> {
25   -
  28 +
  29 + @Query(value = "SELECT a.id,"+
  30 + "a.line,"+
  31 + "a.station,"+
  32 + "a.station_name,"+
  33 + "a.station_route_code,"+
  34 + "a.line_code,"+
  35 + "a.station_code,"+
  36 + "a.station_mark,"+
  37 + "b.b_jwpoints as 'station.b_jwpoints' ,"+
  38 + "b.g_laty AS 'station.g_laty',"+
  39 + "b.g_lonx AS 'station.g_lonx',"+
  40 + "b.g_polygon_grid AS 'station.g_polygon_grid',"+
  41 + "b.radius AS 'station.radius',"+
  42 + "b.shapes_type AS 'station.shapes_type',"+
  43 + "b.destroy AS 'station.destroy',"+
  44 + "b.versions AS 'station.versions' FROM ("+
  45 + "SELECT "+
  46 + "r.id,"+
  47 + "r.line,"+
  48 + "r.station,"+
  49 + "r.station_name,"+
  50 + "r.station_route_code,"+
  51 + "r.line_code,"+
  52 + "r.station_code,"+
  53 + "r.station_mark,"+
  54 + "r.directions,"+
  55 + "r.distances,"+
  56 + "r.to_time," +
  57 + "r.end_time," +
  58 + "r.descriptions,"+
  59 + "r.create_by,"+
  60 + "r.create_date,"+
  61 + "r.update_by,"+
  62 + "r.first_time,"+
  63 + "r.versions,"+
  64 + "r.out_station_nmber,"+
  65 + "r.update_date FROM bsth_c_stationroute r where r.line = ?1 and r.directions = ?2) a"+
  66 + " LEFT JOIN bsth_c_station b on a.station=b.id", nativeQuery=true)
  67 + List<Object[]> findPoints(int line,int directions);
26 68 }
... ...
src/main/java/com/bsth/service/StationRouteService.java
1 1 package com.bsth.service;
2 2  
  3 +import java.util.List;
  4 +import java.util.Map;
  5 +
3 6 import com.bsth.entity.StationRoute;
4 7  
5 8 /**
... ... @@ -19,4 +22,5 @@ import com.bsth.entity.StationRoute;
19 22 */
20 23 public interface StationRouteService extends BaseService<StationRoute, Integer> {
21 24  
  25 + List<Map<String, Object>> findPoints(Map<String, Object> map);
22 26 }
... ...
src/main/java/com/bsth/service/StationService.java
... ... @@ -23,4 +23,8 @@ public interface StationService extends BaseService&lt;Station, Integer&gt; {
23 23  
24 24 Map<String, Object> systemSaveStations(Map<String, Object> map);
25 25  
  26 + int getStationCode();
  27 +
  28 + Map<String, Object> stationSaveMap(Map<String, Object> map);
  29 +
26 30 }
... ...
src/main/java/com/bsth/service/impl/StationRouteServiceImpl.java
1 1 package com.bsth.service.impl;
2 2  
  3 +import java.util.ArrayList;
  4 +import java.util.HashMap;
  5 +import java.util.List;
  6 +import java.util.Map;
  7 +
  8 +import org.springframework.beans.factory.annotation.Autowired;
3 9 import org.springframework.stereotype.Service;
4 10  
5 11 import com.bsth.entity.StationRoute;
  12 +import com.bsth.repository.StationRouteRepository;
6 13 import com.bsth.service.StationRouteService;
7 14  
8 15 /**
... ... @@ -23,5 +30,97 @@ import com.bsth.service.StationRouteService;
23 30  
24 31 @Service
25 32 public class StationRouteServiceImpl extends BaseServiceImpl<StationRoute, Integer> implements StationRouteService{
  33 +
  34 + @Autowired
  35 + private StationRouteRepository repository;
  36 +
  37 + @Override
  38 + public List<Map<String, Object>> findPoints(Map<String, Object> map) {
  39 +
  40 + String lineStr = map.get("line.id_eq").equals("") ? "0" : map.get("line.id_eq").toString();
  41 +
  42 + String directionsStr = map.get("directions_eq").equals("") ? "0" : map.get("directions_eq").toString();
  43 +
  44 + int line = Integer.parseInt(lineStr);
  45 +
  46 + int directions= Integer.parseInt(directionsStr);
  47 +
  48 + List<Object[]> list = repository.findPoints(line, directions);
  49 +
  50 + List<Map<String,Object>> resultList = new ArrayList<Map<String,Object>>();
  51 +
  52 + List<Map<String, Object>> children = new ArrayList<Map<String,Object>>();
  53 +
  54 + Map<String, Object> listMap = new HashMap<String,Object>();
  55 +
  56 + listMap.put("container", "pjax-container");
  57 +
  58 + listMap.put("enable", true);
  59 +
  60 + listMap.put("groupType", "1");
  61 +
  62 + listMap.put("icon", "");
  63 +
  64 + listMap.put("id", 100);
  65 +
  66 + listMap.put("pId", null);
  67 +
  68 + listMap.put("name", "途径站点");
  69 +
  70 + listMap.put("text", "途径站点");
  71 +
  72 +
  73 +
  74 + if(list.size()>0) {
  75 +
  76 + for(int i = 0 ; i < list.size(); i++) {
  77 +
  78 + Map<String, Object> tempM = new HashMap<String, Object>();
  79 +
  80 + tempM.put("id", list.get(i)[0]);
  81 +
  82 + //tempM.put("id", 2);
  83 +
  84 + tempM.put("line", list.get(i)[1]);
  85 +
  86 + tempM.put("station", list.get(i)[2]);
  87 +
  88 + tempM.put("station_name", list.get(i)[3]);
  89 +
  90 + tempM.put("name", list.get(i)[3]);
  91 +
  92 + tempM.put("text", list.get(i)[3]);
  93 +
  94 + tempM.put("station_route_code", list.get(i)[4]);
  95 +
  96 + tempM.put("station_mark", list.get(i)[7]);
  97 +
  98 + tempM.put("b_jwpoints", list.get(i)[8]);
  99 +
  100 + tempM.put("g_polygon_grid", list.get(i)[11]);
  101 +
  102 + tempM.put("radius", list.get(i)[12]);
  103 +
  104 + tempM.put("shapes_type", list.get(i)[13]);
  105 +
  106 + tempM.put("icon", "fa fa-bus");
  107 +
  108 + tempM.put("pId", 100);
  109 +
  110 + tempM.put("groupType", "2");
  111 +
  112 + tempM.put("enable", true);
  113 +
  114 + children.add(tempM);
  115 + }
  116 +
  117 + }
  118 +
  119 + listMap.put("children", children);
  120 +
  121 + resultList.add(listMap);
  122 +
  123 + return resultList;
  124 + }
26 125  
27 126 }
... ...
src/main/java/com/bsth/service/impl/StationServiceImpl.java
1 1 package com.bsth.service.impl;
2 2  
  3 +import java.util.ArrayList;
3 4 import java.util.HashMap;
  5 +import java.util.List;
4 6 import java.util.Map;
5 7  
  8 +import javax.persistence.criteria.CriteriaBuilder.In;
  9 +
  10 +import org.slf4j.Logger;
  11 +import org.slf4j.LoggerFactory;
  12 +import org.springframework.beans.factory.annotation.Autowired;
6 13 import org.springframework.stereotype.Service;
7 14  
  15 +
  16 +
  17 +import com.alibaba.fastjson.JSONArray;
  18 +import com.alibaba.fastjson.JSONObject;
  19 +import com.bsth.common.ResponseCode;
  20 +import com.bsth.entity.Line;
  21 +import com.bsth.entity.Section;
  22 +import com.bsth.entity.SectionRoute;
8 23 import com.bsth.entity.Station;
  24 +import com.bsth.entity.StationRoute;
  25 +import com.bsth.repository.LineRepository;
  26 +import com.bsth.repository.SectionRepository;
  27 +import com.bsth.repository.SectionRouteRepository;
  28 +import com.bsth.repository.StationRepository;
  29 +import com.bsth.repository.StationRouteRepository;
9 30 import com.bsth.service.StationService;
10 31  
11 32 /**
... ... @@ -26,13 +47,411 @@ import com.bsth.service.StationService;
26 47  
27 48 @Service
28 49 public class StationServiceImpl extends BaseServiceImpl<Station, Integer> implements StationService{
29   -
  50 +
  51 + @Autowired
  52 + private StationRepository repository;
  53 +
  54 + @Autowired
  55 + private StationRouteRepository routeRepository;
  56 +
  57 + @Autowired
  58 + private LineRepository lineRepository;
  59 +
  60 + @Autowired
  61 + private SectionRepository sectionRepository;
  62 +
  63 + @Autowired
  64 + private SectionRouteRepository sectionRouteRepository;
  65 +
  66 + Logger logger = LoggerFactory.getLogger(this.getClass());
  67 +
30 68 @Override
31 69 public Map<String, Object> systemSaveStations(Map<String, Object> map) {
32 70  
33 71 Map<String, Object> resultMap = new HashMap<String,Object>();
34 72  
35   - return null;
  73 + try {
  74 +
  75 + // 站点信息字符传
  76 + String stationJSON = map.get("stationJSON").toString().equals("") ? "" : map.get("stationJSON").toString();
  77 +
  78 + // 路段信息字符串
  79 + String sectionJSON = map.get("sectionJSON").toString().equals("") ? "" : map.get("sectionJSON").toString();
  80 +
  81 + // 方向
  82 + int directions = Integer.parseInt(map.get("directions").toString());
  83 +
  84 + // 是否撤销
  85 + int destroy = map.get("destroy").equals("") ? 0 : Integer.parseInt(map.get("destroy").toString());
  86 +
  87 + // 版本
  88 + int versions = map.get("versions").equals("") ? 0 : Integer.parseInt(map.get("versions").toString());
  89 +
  90 + // 坐标类型
  91 + String dbType = map.get("dbType").equals("") ? "" : map.get("dbType").toString();
  92 +
  93 + // 限速
  94 + String speedLimitStr = map.get("speedLimit").equals("") ? "" : map.get("speedLimit").toString();
  95 +
  96 + // 线路ID
  97 + int lineId = map.get("lineId").toString().equals("") ? 0 : Integer.parseInt(map.get("lineId").toString());
  98 +
  99 + // 线路信息
  100 + Line resultLine = lineRepository.findOne(lineId);
  101 +
  102 + if(!stationJSON.equals("")) {
  103 +
  104 + JSONArray stationsArray = JSONArray.parseArray(stationJSON);
  105 +
  106 + if(stationsArray.size()>0) {
  107 +
  108 + // 站点信息
  109 + List<Station> paramStationList = new ArrayList<Station>();
  110 +
  111 + // 站点路由信息
  112 + List<StationRoute> paramStationRouteList = new ArrayList<StationRoute>();
  113 +
  114 + // 查询最大站点ID
  115 + int stationMaxId = repository.stationMaxId();
  116 +
  117 + for(int i = 0;i <stationsArray.size();i++) {
  118 +
  119 + // 初始化站点对象
  120 + Station arg0 = new Station();
  121 +
  122 + // 站点名称
  123 + String stationName = stationsArray.getJSONObject(i).equals("") ? "" : stationsArray.getJSONObject(i).get("name").toString();
  124 + arg0.setStationName(stationName);
  125 +
  126 + arg0.setDbType(dbType);
  127 +
  128 + // 站点地理位置WGS坐标经度
  129 + String gLonx = JSONObject.parseObject(stationsArray.getJSONObject(i).get("WGSpotion").toString()).get("Lng").toString();
  130 + arg0.setgLonx(Float.parseFloat(gLonx));
  131 +
  132 + // 站点地理位置WGS坐标纬度
  133 + String gLaty = JSONObject.parseObject(stationsArray.getJSONObject(i).get("WGSpotion").toString()).get("Lat").toString();
  134 + arg0.setgLaty(Float.parseFloat(gLaty));
  135 +
  136 + // 半径
  137 + int radius = map.get("radius").equals("") ? 0 : Integer.parseInt(map.get("radius").toString());
  138 + arg0.setRadius(radius);
  139 +
  140 + // 图形类型
  141 + String shapesType = map.get("shapesType").equals("") ? "" : map.get("shapesType").toString();
  142 + arg0.setShapesType(shapesType);
  143 +
  144 + // 站点编码
  145 + arg0.setStationCod(String.valueOf(stationMaxId+1+i));
  146 +
  147 + // 是否想撤销
  148 + arg0.setDestroy(destroy);
  149 +
  150 + // 版本号
  151 + arg0.setVersions(versions);
  152 +
  153 + // 百度经纬度坐标
  154 + String bJwpoints = "";
  155 +
  156 + // 百度坐标经度
  157 + String bLonx = JSONObject.parseObject(stationsArray.getJSONObject(i).get("potion").toString()).get("lng").toString();
  158 +
  159 + // 百度坐标纬度
  160 + String bLatx = JSONObject.parseObject(stationsArray.getJSONObject(i).get("potion").toString()).get("lat").toString();
  161 +
  162 + // 百度经纬度
  163 + bJwpoints = bLonx + " " + bLatx;
  164 + arg0.setbJwpoints(bJwpoints);
  165 +
  166 + paramStationList.add(arg0);
  167 +
  168 + // 站点路由对象
  169 + StationRoute route = new StationRoute();
  170 +
  171 + // 站点名称
  172 + route.setStationName(stationName);
  173 +
  174 + // 站点编码
  175 + route.setStationCode(String.valueOf(stationMaxId+1+i));
  176 +
  177 + // 站点序号
  178 + route.setStationRouteCode(i+1);
  179 +
  180 + // 站点类型
  181 + if(i==0) {
  182 +
  183 + // 起始站
  184 + route.setStationMark("B");
  185 +
  186 + }else if(i==stationsArray.size()-1) {
  187 +
  188 + // 终点站
  189 + route.setStationMark("E");
  190 +
  191 + }else {
  192 +
  193 + // 中途站
  194 + route.setStationMark("Z");
  195 +
  196 + }
  197 +
  198 + // 版本号
  199 + route.setVersions(versions);
  200 +
  201 + // 站点ID
  202 + route.setStation(arg0);
  203 +
  204 + // 方向
  205 + route.setDirections(directions);
  206 +
  207 + // 线路ID
  208 + route.setLine(resultLine);
  209 +
  210 + // 线路编码
  211 + route.setLineCode(resultLine.getLineCode());
  212 +
  213 + paramStationRouteList.add(route);
  214 +
  215 + }
  216 +
  217 + // 插入站点信息
  218 + repository.save(paramStationList);
  219 +
  220 + // 插入站点路由信息
  221 + routeRepository.save(paramStationRouteList);
  222 + }
  223 +
  224 + }
  225 +
  226 + // 如果路段信息JSON字符串不为空
  227 + if(!sectionJSON.equals("")) {
  228 +
  229 + // 转换成JSON数组
  230 + JSONArray sectionsArray = JSONArray.parseArray(sectionJSON);
  231 +
  232 + // 原始线状图形坐标集合
  233 + String sectionsBpoints = "";
  234 +
  235 + // WGS线状图形坐标集合
  236 + String sectionsWJPpoints = "";
  237 +
  238 + // 遍历
  239 + for(int s = 0 ;s<sectionsArray.size();s++) {
  240 +
  241 + String pointsLngStr = sectionsArray.getJSONObject(s).get("lng").toString();
  242 +
  243 + String pointsLatStr = sectionsArray.getJSONObject(s).get("lat").toString();
  244 +
  245 + String WGSLngStr = JSONObject.parseObject(sectionsArray.getJSONObject(s).get("WGSpotion").toString()).get("Lng").toString();
  246 +
  247 + String WGSLatStr = JSONObject.parseObject(sectionsArray.getJSONObject(s).get("WGSpotion").toString()).get("Lat").toString();
  248 +
  249 + if(s==0) {
  250 +
  251 + sectionsBpoints = pointsLngStr + " " + pointsLatStr;
  252 +
  253 + sectionsWJPpoints = WGSLngStr + " " + WGSLatStr;
  254 +
  255 + }else {
  256 +
  257 + sectionsBpoints = sectionsBpoints + "," + pointsLngStr + " " + pointsLatStr;
  258 +
  259 + sectionsWJPpoints = sectionsWJPpoints + "," + WGSLngStr + " " + WGSLatStr;
  260 +
  261 + }
  262 +
  263 +
  264 + }
  265 +
  266 + int sectionMaxId = sectionRepository.sectionMaxId();
  267 +
  268 + String sectionCode = String.valueOf(sectionMaxId+1);
  269 +
  270 + // 路段名称
  271 + String sectionName = resultLine.getName();
  272 +
  273 + // 交出路
  274 + String crosesRoad = "";
  275 +
  276 + // 终止节点
  277 + String endNode = "";
  278 +
  279 + // 开始节点
  280 + String startNode = "";
  281 +
  282 + // 中间节点
  283 + String middleNode = "";
  284 +
  285 + // WGS坐标点集合
  286 + String gsectionVector = "LINESTRING(" + sectionsWJPpoints +")";
  287 +
  288 + // 原坐标点集合
  289 + String bsectionVector = "LINESTRING(" + sectionsBpoints + ")";
  290 +
  291 + // 城建坐标点集合
  292 + String csectionVector = "";
  293 +
  294 + // 路段类型
  295 + String sectionType = "";
  296 +
  297 + // 道路编码
  298 + String roadCoding = "";
  299 +
  300 + // 路段距离
  301 + double sectionDistance = 0;
  302 +
  303 + // 路段时间
  304 + double sectionTime = 0;
  305 +
  306 + // 限速
  307 + double speedLimit = Double.parseDouble(speedLimitStr);
  308 +
  309 + // 说明
  310 + String descriptions = "";
  311 +
  312 + sectionRepository.systemSave(sectionCode, sectionName, crosesRoad, endNode, startNode,
  313 +
  314 + middleNode, gsectionVector, bsectionVector, sectionType, csectionVector,
  315 +
  316 + roadCoding, sectionDistance, sectionTime, dbType, speedLimit,
  317 +
  318 + descriptions, versions);
  319 +
  320 +
  321 + Section section = sectionRepository.findOne(Integer.parseInt(sectionCode));
  322 +
  323 + // 路段路由
  324 + SectionRoute sectionRoute = new SectionRoute();
  325 +
  326 + // 路段序号
  327 + sectionRoute.setSectionrouteCode(1);
  328 +
  329 + // 线路编码
  330 + sectionRoute.setLineCode(resultLine.getLineCode());
  331 +
  332 + // 路段ID
  333 + sectionRoute.setSection(section);
  334 +
  335 + // 线路ID
  336 + sectionRoute.setLine(resultLine);
  337 +
  338 + // 路段编码
  339 + sectionRoute.setSectionCode(section.getSectionCode());
  340 +
  341 + // 版本
  342 + sectionRoute.setVersions(versions);
  343 +
  344 + // 方向
  345 + sectionRoute.setDirections(directions);
  346 +
  347 +
  348 + sectionRouteRepository.save(sectionRoute);
  349 + }
  350 +
  351 + resultMap.put("status", ResponseCode.SUCCESS);
  352 +
  353 + } catch (Exception e) {
  354 +
  355 + resultMap.put("status", ResponseCode.ERROR);
  356 +
  357 + logger.error("save erro.", e);
  358 +
  359 + }
  360 +
  361 + return resultMap;
  362 + }
  363 +
  364 + @Override
  365 + public int getStationCode() {
  366 +
  367 + return repository.stationMaxId();
  368 +
  369 + }
  370 +
  371 + @Override
  372 + public Map<String, Object> stationSaveMap(Map<String, Object> map) {
  373 +
  374 + Map<String, Object> resultMap = new HashMap<String, Object>();
  375 +
  376 + try {
  377 +
  378 + // 站点编码
  379 + String stationCode = map.get("stationCode").equals("") ? "" : map.get("stationCode").toString();
  380 +
  381 + // 站点名称
  382 + String stationName = map.get("stationName").equals("") ? "" : map.get("stationName").toString();
  383 +
  384 + // 道路编码
  385 + String roadCoding = map.get("roadCoding").equals("") ? "" : map.get("roadCoding").toString();
  386 +
  387 + // 原坐标类型
  388 + String dbType = map.get("dbType").equals("") ? "" : map.get("dbType").toString();
  389 +
  390 + // 原坐标点
  391 + String bJwpoints = map.get("bJwpoints").equals("") ? "" : map.get("bJwpoints").toString();
  392 +
  393 + // WGS经度
  394 + Float gLonx = map.get("gLonx").equals("") ? null : Float.parseFloat(map.get("gLonx").toString());
  395 +
  396 + // WGS纬度
  397 + Float gLaty = map.get("gLaty").equals("") ? null : Float.parseFloat(map.get("gLaty").toString());
  398 +
  399 + // 城建坐标经度
  400 + Float x = map.get("x").equals("") ? null : Float.parseFloat(map.get("x").toString());
  401 +
  402 + // 城建坐标纬度
  403 + Float y = map.get("y").equals("") ? null : Float.parseFloat(map.get("y").toString());
  404 +
  405 + // 多边形WGS坐标点集合
  406 + String gPloygonGrid = map.get("gPloygonGrid").equals("") ? "" : map.get("gPloygonGrid").toString();
  407 +
  408 + // 多边形原坐标点集合
  409 + String bPloygonGrid = map.get("bPloygonGrid").equals("") ? "" : map.get("bPloygonGrid").toString();
  410 +
  411 + // 是否撤销
  412 + Integer destroy = map.get("destroy").equals("") ? null : Integer.parseInt(map.get("destroy").toString());
  413 +
  414 + // 圆半径
  415 + Integer radius = map.get("radius").equals("") ? null : Integer.parseInt(map.get("radius").toString());
  416 +
  417 + // 图形类型
  418 + String shapesType = map.get("shapesType").equals("") ? "" : map.get("shapesType").toString();
  419 +
  420 + // 版本
  421 + Integer versions = map.get("versions").equals("") ? null : Integer.parseInt(map.get("versions").toString());
  422 +
  423 + // 说明
  424 + String descriptions = map.get("descriptions").equals("") ? "" : map.get("descriptions").toString();
  425 +
  426 + // 创建人
  427 + Integer createBy = map.get("createBy").equals("") ? null : Integer.parseInt(map.get("createBy").toString());
  428 +
  429 + // 修改人
  430 + Integer updateBy = map.get("updateBy").equals("") ? null : Integer.parseInt(map.get("updateBy").toString());
  431 +
  432 + /*
  433 + repository.stationSave(stationCode, stationName, roadCoding, dbType, bJwpoints,
  434 +
  435 + gLonx, gLaty, x, y, gPloygonGrid,bPloygonGrid, destroy, radius,
  436 +
  437 + shapesType, versions, descriptions, createBy, updateBy);
  438 + */
  439 +
  440 + resultMap.put("status", ResponseCode.SUCCESS);
  441 +
  442 +
  443 + } catch (Exception e) {
  444 +
  445 + resultMap.put("status", ResponseCode.ERROR);
  446 +
  447 + logger.error("save erro.", e);
  448 +
  449 + }
  450 +
  451 +
  452 +
  453 +
  454 + return resultMap;
36 455 }
37 456  
38 457 }
... ...
src/main/resources/application.properties
... ... @@ -9,7 +9,7 @@ spring.jpa.hibernate.naming_strategy= org.hibernate.cfg.ImprovedNamingStrategy
9 9 spring.jpa.database= MYSQL
10 10 spring.jpa.show-sql= true
11 11 spring.datasource.driver-class-name= com.mysql.jdbc.Driver
12   -spring.datasource.url= jdbc:mysql://192.168.168.201:3306/control
  12 +spring.datasource.url= jdbc:mysql://192.168.168.201:3306/test
13 13 spring.datasource.username= root
14 14 spring.datasource.password= 123456
15 15  
... ...
src/main/resources/static/index.html
... ... @@ -35,8 +35,7 @@
35 35 <link href="/metronic_v4.5.4/plugins/bootstrap-datetimepicker-2/css/bootstrap-datetimepicker.min.css" rel="stylesheet" type="text/css" />
36 36  
37 37 <!-- table 表格控件 -->
38   -<link href="/metronic_v4.5.4/plugins/bootstrap-datatables/css/datatables.bootstrap.css" rel="stylesheet" type="text/css" />
39   -<link href="/metronic_v4.5.4/plugins/bootstrap-datatables/css/datatables.css" rel="stylesheet" type="text/css" />
  38 +<link rel="stylesheet" href="http://api.map.baidu.com/library/DrawingManager/1.4/src/DrawingManager_min.css" type="text/css" />
40 39 <style type="text/css">
41 40 .searchForm{
42 41  
... ... @@ -273,13 +272,11 @@ tr.row-active td {
273 272 <!-- 日期控件 -->
274 273 <script src="/metronic_v4.5.4/plugins/bootstrap-datetimepicker-2/js/bootstrap-datetimepicker.min.js" ></script>
275 274 <!-- 表格控件 -->
276   -<script src="/metronic_v4.5.4/scripts/datatable.js" ></script>
277   -<script src="/metronic_v4.5.4/plugins/bootstrap-datatables/datatables.js" ></script>
278   -<script src="/metronic_v4.5.4/plugins/bootstrap-datatables/datatables.bootstrap.js" ></script>
279 275 <!-- 地图相关 -->
280 276 <!-- 百度 -->
281 277 <script src="http://api.map.baidu.com/api?v=2.0&ak=IGGrr4UjwIYzatoCRFKEL8sT" data-exclude=1></script>
282 278 <script src="http://api.map.baidu.com/library/TrafficControl/1.4/src/TrafficControl_min.js" data-exclude=1></script>
  279 +<script type="text/javascript" src="http://api.map.baidu.com/library/DrawingManager/1.4/src/DrawingManager_min.js"></script>
283 280 <!-- 高德 -->
284 281 <script src="http://webapi.amap.com/maps?v=1.3&key=16cb1c5043847e09ef9edafdd77befda" data-exclude=1></script>
285 282  
... ...
src/main/resources/static/metronic_v4.5.4/plugins/bootstrap-datatables/css/datatables.bootstrap.css deleted 100644 → 0
1   -table.dataTable {
2   - clear: both;
3   - margin-top: 6px !important;
4   - margin-bottom: 6px !important;
5   - max-width: none !important;
6   -}
7   -table.dataTable td, table.dataTable th {
8   - -webkit-box-sizing: content-box;
9   - -moz-box-sizing: content-box;
10   - box-sizing: content-box;
11   -}
12   -table.dataTable td.dataTables_empty, table.dataTable th.dataTables_empty {
13   - text-align: center;
14   -}
15   -table.dataTable.nowrap th, table.dataTable.nowrap td {
16   - white-space: nowrap;
17   -}
18   -div.dataTables_wrapper div.dataTables_length label {
19   - font-weight: normal;
20   - text-align: left;
21   - white-space: nowrap;
22   -}
23   -div.dataTables_wrapper div.dataTables_length select {
24   - width: 75px;
25   - display: inline-block;
26   -}
27   -div.dataTables_wrapper div.dataTables_filter {
28   - text-align: right;
29   -}
30   -div.dataTables_wrapper div.dataTables_filter label {
31   - font-weight: normal;
32   - white-space: nowrap;
33   - text-align: left;
34   -}
35   -div.dataTables_wrapper div.dataTables_filter input {
36   - margin-left: 0.5em;
37   - display: inline-block;
38   - width: auto;
39   -}
40   -div.dataTables_wrapper div.dataTables_info {
41   - padding-top: 8px;
42   - white-space: nowrap;
43   -}
44   -div.dataTables_wrapper div.dataTables_paginate {
45   - margin: 0;
46   - white-space: nowrap;
47   - text-align: right;
48   -}
49   -div.dataTables_wrapper div.dataTables_paginate ul.pagination {
50   - margin: 2px 0;
51   - white-space: nowrap;
52   -}
53   -table.dataTable thead>tr>th.sorting_asc, table.dataTable thead>tr>th.sorting_desc, table.dataTable thead>tr>th.sorting, table.dataTable thead>tr>td.sorting_asc, table.dataTable thead>tr>td.sorting_desc, table.dataTable thead>tr>td.sorting {
54   - padding-right: 30px;
55   -}
56   -table.dataTable thead>tr>th:active, table.dataTable thead>tr>td:active {
57   - outline: none;
58   -}
59   -table.dataTable thead .sorting, table.dataTable thead .sorting_asc, table.dataTable thead .sorting_desc, table.dataTable thead .sorting_asc_disabled, table.dataTable thead .sorting_desc_disabled {
60   - cursor: pointer;
61   - position: relative;
62   -}
63   -table.dataTable thead .sorting:after, table.dataTable thead .sorting_asc:after, table.dataTable thead .sorting_desc:after, table.dataTable thead .sorting_asc_disabled:after, table.dataTable thead .sorting_desc_disabled:after {
64   - position: absolute;
65   - bottom: 8px;
66   - right: 8px;
67   - display: block;
68   - font-family: 'Glyphicons Halflings';
69   - opacity: 0.5;
70   -}
71   -table.dataTable thead .sorting:after {
72   - opacity: 0.2;
73   - content: "\e150"}
74   -table.dataTable thead .sorting_asc:after {
75   - content: "\e155"}
76   -table.dataTable thead .sorting_desc:after {
77   - content: "\e156"}
78   -table.dataTable thead .sorting_asc_disabled:after, table.dataTable thead .sorting_desc_disabled:after {
79   - color: #eee;
80   -}
81   -div.dataTables_scrollHead table.dataTable {
82   - margin-bottom: 0 !important;
83   -}
84   -div.dataTables_scrollBody table {
85   - border-top: none;
86   - margin-top: 0 !important;
87   - margin-bottom: 0 !important;
88   -}
89   -div.dataTables_scrollBody table thead .sorting:after, div.dataTables_scrollBody table thead .sorting_asc:after, div.dataTables_scrollBody table thead .sorting_desc:after {
90   - display: none;
91   -}
92   -div.dataTables_scrollBody table tbody tr:first-child th, div.dataTables_scrollBody table tbody tr:first-child td {
93   - border-top: none;
94   -}
95   -div.dataTables_scrollFoot table {
96   - margin-top: 0 !important;
97   - border-top: none;
98   -}
99   -@media screen and (max-width: 767px) {
100   - div.dataTables_wrapper div.dataTables_length, div.dataTables_wrapper div.dataTables_filter, div.dataTables_wrapper div.dataTables_info, div.dataTables_wrapper div.dataTables_paginate {
101   - text-align: center;
102   -}
103   -}table.dataTable.table-condensed>thead>tr>th {
104   - padding-right: 20px;
105   -}
106   -table.dataTable.table-condensed .sorting:after, table.dataTable.table-condensed .sorting_asc:after, table.dataTable.table-condensed .sorting_desc:after {
107   - top: 6px;
108   - right: 6px;
109   -}
110   -table.table-bordered.dataTable {
111   - border-collapse: separate !important;
112   -}
113   -table.table-bordered.dataTable th, table.table-bordered.dataTable td {
114   - border-left-width: 0;
115   -}
116   -table.table-bordered.dataTable th:last-child, table.table-bordered.dataTable th:last-child, table.table-bordered.dataTable td:last-child, table.table-bordered.dataTable td:last-child {
117   - border-right-width: 0;
118   -}
119   -table.table-bordered.dataTable tbody th, table.table-bordered.dataTable tbody td {
120   - border-bottom-width: 0;
121   -}
122   -div.dataTables_scrollHead table.table-bordered {
123   - border-bottom-width: 0;
124   -}
125 0 \ No newline at end of file
src/main/resources/static/metronic_v4.5.4/plugins/bootstrap-datatables/css/datatables.css deleted 100644 → 0
1   -/*
2   - * This combined file was created by the DataTables downloader builder:
3   - * https://datatables.net/download
4   - *
5   - * To rebuild or modify this file with the latest versions of the included
6   - * software please visit:
7   - * https://datatables.net/download/#dt/jszip-2.5.0,pdfmake-0.1.18,dt-1.10.10,af-2.1.0,b-1.1.0,b-colvis-1.1.0,b-flash-1.1.0,b-html5-1.1.0,b-print-1.1.0,cr-1.3.0,fc-3.2.0,fh-3.1.0,r-2.0.0,rr-1.1.0,sc-1.4.0,se-1.1.0
8   - *
9   - * Included libraries:
10   - * JSZip 2.5.0, pdfmake 0.1.18, DataTables 1.10.10, AutoFill 2.1.0, Buttons 1.1.0, Column visibility 1.1.0, Flash export 1.1.0, HTML5 export 1.1.0, Print view 1.1.0, ColReorder 1.3.0, FixedColumns 3.2.0, FixedHeader 3.1.0, Responsive 2.0.0, RowReorder 1.1.0, Scroller 1.4.0, Select 1.1.0
11   - */
12   -
13   -/*
14   - * Table styles
15   - */
16   -table.dataTable {
17   - width: 100%;
18   - margin: 0 auto;
19   - clear: both;
20   - border-collapse: separate;
21   - border-spacing: 0;
22   - /*
23   - * Header and footer styles
24   - */
25   - /*
26   - * Body styles
27   - */
28   -}
29   -table.dataTable thead th,
30   -table.dataTable tfoot th {
31   - font-weight: bold;
32   -}
33   -table.dataTable thead th,
34   -table.dataTable thead td {
35   - padding: 10px 18px;
36   - border-bottom: 1px solid #111;
37   -}
38   -table.dataTable thead th:active,
39   -table.dataTable thead td:active {
40   - outline: none;
41   -}
42   -table.dataTable tfoot th,
43   -table.dataTable tfoot td {
44   - padding: 10px 18px 6px 18px;
45   - border-top: 1px solid #111;
46   -}
47   -table.dataTable thead .sorting,
48   -table.dataTable thead .sorting_asc,
49   -table.dataTable thead .sorting_desc {
50   - cursor: pointer;
51   - *cursor: hand;
52   -}
53   -table.dataTable thead .sorting,
54   -table.dataTable thead .sorting_asc,
55   -table.dataTable thead .sorting_desc,
56   -table.dataTable thead .sorting_asc_disabled,
57   -table.dataTable thead .sorting_desc_disabled {
58   - background-repeat: no-repeat;
59   - background-position: center right;
60   -}
61   -table.dataTable thead .sorting {
62   - background-image: url("DataTables-1.10.10/images/sort_both.png");
63   -}
64   -table.dataTable thead .sorting_asc {
65   - background-image: url("DataTables-1.10.10/images/sort_asc.png");
66   -}
67   -table.dataTable thead .sorting_desc {
68   - background-image: url("DataTables-1.10.10/images/sort_desc.png");
69   -}
70   -table.dataTable thead .sorting_asc_disabled {
71   - background-image: url("DataTables-1.10.10/images/sort_asc_disabled.png");
72   -}
73   -table.dataTable thead .sorting_desc_disabled {
74   - background-image: url("DataTables-1.10.10/images/sort_desc_disabled.png");
75   -}
76   -table.dataTable tbody tr {
77   - background-color: #ffffff;
78   -}
79   -table.dataTable tbody tr.selected {
80   - background-color: #B0BED9;
81   -}
82   -table.dataTable tbody th,
83   -table.dataTable tbody td {
84   - padding: 8px 10px;
85   -}
86   -table.dataTable.row-border tbody th, table.dataTable.row-border tbody td, table.dataTable.display tbody th, table.dataTable.display tbody td {
87   - border-top: 1px solid #ddd;
88   -}
89   -table.dataTable.row-border tbody tr:first-child th,
90   -table.dataTable.row-border tbody tr:first-child td, table.dataTable.display tbody tr:first-child th,
91   -table.dataTable.display tbody tr:first-child td {
92   - border-top: none;
93   -}
94   -table.dataTable.cell-border tbody th, table.dataTable.cell-border tbody td {
95   - border-top: 1px solid #ddd;
96   - border-right: 1px solid #ddd;
97   -}
98   -table.dataTable.cell-border tbody tr th:first-child,
99   -table.dataTable.cell-border tbody tr td:first-child {
100   - border-left: 1px solid #ddd;
101   -}
102   -table.dataTable.cell-border tbody tr:first-child th,
103   -table.dataTable.cell-border tbody tr:first-child td {
104   - border-top: none;
105   -}
106   -table.dataTable.stripe tbody tr.odd, table.dataTable.display tbody tr.odd {
107   - background-color: #f9f9f9;
108   -}
109   -table.dataTable.stripe tbody tr.odd.selected, table.dataTable.display tbody tr.odd.selected {
110   - background-color: #acbad4;
111   -}
112   -table.dataTable.hover tbody tr:hover, table.dataTable.display tbody tr:hover {
113   - background-color: #f6f6f6;
114   -}
115   -table.dataTable.hover tbody tr:hover.selected, table.dataTable.display tbody tr:hover.selected {
116   - background-color: #aab7d1;
117   -}
118   -table.dataTable.order-column tbody tr > .sorting_1,
119   -table.dataTable.order-column tbody tr > .sorting_2,
120   -table.dataTable.order-column tbody tr > .sorting_3, table.dataTable.display tbody tr > .sorting_1,
121   -table.dataTable.display tbody tr > .sorting_2,
122   -table.dataTable.display tbody tr > .sorting_3 {
123   - background-color: #fafafa;
124   -}
125   -table.dataTable.order-column tbody tr.selected > .sorting_1,
126   -table.dataTable.order-column tbody tr.selected > .sorting_2,
127   -table.dataTable.order-column tbody tr.selected > .sorting_3, table.dataTable.display tbody tr.selected > .sorting_1,
128   -table.dataTable.display tbody tr.selected > .sorting_2,
129   -table.dataTable.display tbody tr.selected > .sorting_3 {
130   - background-color: #acbad5;
131   -}
132   -table.dataTable.display tbody tr.odd > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd > .sorting_1 {
133   - background-color: #f1f1f1;
134   -}
135   -table.dataTable.display tbody tr.odd > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd > .sorting_2 {
136   - background-color: #f3f3f3;
137   -}
138   -table.dataTable.display tbody tr.odd > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd > .sorting_3 {
139   - background-color: whitesmoke;
140   -}
141   -table.dataTable.display tbody tr.odd.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_1 {
142   - background-color: #a6b4cd;
143   -}
144   -table.dataTable.display tbody tr.odd.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_2 {
145   - background-color: #a8b5cf;
146   -}
147   -table.dataTable.display tbody tr.odd.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_3 {
148   - background-color: #a9b7d1;
149   -}
150   -table.dataTable.display tbody tr.even > .sorting_1, table.dataTable.order-column.stripe tbody tr.even > .sorting_1 {
151   - background-color: #fafafa;
152   -}
153   -table.dataTable.display tbody tr.even > .sorting_2, table.dataTable.order-column.stripe tbody tr.even > .sorting_2 {
154   - background-color: #fcfcfc;
155   -}
156   -table.dataTable.display tbody tr.even > .sorting_3, table.dataTable.order-column.stripe tbody tr.even > .sorting_3 {
157   - background-color: #fefefe;
158   -}
159   -table.dataTable.display tbody tr.even.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_1 {
160   - background-color: #acbad5;
161   -}
162   -table.dataTable.display tbody tr.even.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_2 {
163   - background-color: #aebcd6;
164   -}
165   -table.dataTable.display tbody tr.even.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_3 {
166   - background-color: #afbdd8;
167   -}
168   -table.dataTable.display tbody tr:hover > .sorting_1, table.dataTable.order-column.hover tbody tr:hover > .sorting_1 {
169   - background-color: #eaeaea;
170   -}
171   -table.dataTable.display tbody tr:hover > .sorting_2, table.dataTable.order-column.hover tbody tr:hover > .sorting_2 {
172   - background-color: #ececec;
173   -}
174   -table.dataTable.display tbody tr:hover > .sorting_3, table.dataTable.order-column.hover tbody tr:hover > .sorting_3 {
175   - background-color: #efefef;
176   -}
177   -table.dataTable.display tbody tr:hover.selected > .sorting_1, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_1 {
178   - background-color: #a2aec7;
179   -}
180   -table.dataTable.display tbody tr:hover.selected > .sorting_2, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_2 {
181   - background-color: #a3b0c9;
182   -}
183   -table.dataTable.display tbody tr:hover.selected > .sorting_3, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_3 {
184   - background-color: #a5b2cb;
185   -}
186   -table.dataTable.no-footer {
187   - border-bottom: 1px solid #111;
188   -}
189   -table.dataTable.nowrap th, table.dataTable.nowrap td {
190   - white-space: nowrap;
191   -}
192   -table.dataTable.compact thead th,
193   -table.dataTable.compact thead td {
194   - padding: 4px 17px 4px 4px;
195   -}
196   -table.dataTable.compact tfoot th,
197   -table.dataTable.compact tfoot td {
198   - padding: 4px;
199   -}
200   -table.dataTable.compact tbody th,
201   -table.dataTable.compact tbody td {
202   - padding: 4px;
203   -}
204   -table.dataTable th.dt-left,
205   -table.dataTable td.dt-left {
206   - text-align: left;
207   -}
208   -table.dataTable th.dt-center,
209   -table.dataTable td.dt-center,
210   -table.dataTable td.dataTables_empty {
211   - text-align: center;
212   -}
213   -table.dataTable th.dt-right,
214   -table.dataTable td.dt-right {
215   - text-align: right;
216   -}
217   -table.dataTable th.dt-justify,
218   -table.dataTable td.dt-justify {
219   - text-align: justify;
220   -}
221   -table.dataTable th.dt-nowrap,
222   -table.dataTable td.dt-nowrap {
223   - white-space: nowrap;
224   -}
225   -table.dataTable thead th.dt-head-left,
226   -table.dataTable thead td.dt-head-left,
227   -table.dataTable tfoot th.dt-head-left,
228   -table.dataTable tfoot td.dt-head-left {
229   - text-align: left;
230   -}
231   -table.dataTable thead th.dt-head-center,
232   -table.dataTable thead td.dt-head-center,
233   -table.dataTable tfoot th.dt-head-center,
234   -table.dataTable tfoot td.dt-head-center {
235   - text-align: center;
236   -}
237   -table.dataTable thead th.dt-head-right,
238   -table.dataTable thead td.dt-head-right,
239   -table.dataTable tfoot th.dt-head-right,
240   -table.dataTable tfoot td.dt-head-right {
241   - text-align: right;
242   -}
243   -table.dataTable thead th.dt-head-justify,
244   -table.dataTable thead td.dt-head-justify,
245   -table.dataTable tfoot th.dt-head-justify,
246   -table.dataTable tfoot td.dt-head-justify {
247   - text-align: justify;
248   -}
249   -table.dataTable thead th.dt-head-nowrap,
250   -table.dataTable thead td.dt-head-nowrap,
251   -table.dataTable tfoot th.dt-head-nowrap,
252   -table.dataTable tfoot td.dt-head-nowrap {
253   - white-space: nowrap;
254   -}
255   -table.dataTable tbody th.dt-body-left,
256   -table.dataTable tbody td.dt-body-left {
257   - text-align: left;
258   -}
259   -table.dataTable tbody th.dt-body-center,
260   -table.dataTable tbody td.dt-body-center {
261   - text-align: center;
262   -}
263   -table.dataTable tbody th.dt-body-right,
264   -table.dataTable tbody td.dt-body-right {
265   - text-align: right;
266   -}
267   -table.dataTable tbody th.dt-body-justify,
268   -table.dataTable tbody td.dt-body-justify {
269   - text-align: justify;
270   -}
271   -table.dataTable tbody th.dt-body-nowrap,
272   -table.dataTable tbody td.dt-body-nowrap {
273   - white-space: nowrap;
274   -}
275   -
276   -table.dataTable,
277   -table.dataTable th,
278   -table.dataTable td {
279   - -webkit-box-sizing: content-box;
280   - -moz-box-sizing: content-box;
281   - box-sizing: content-box;
282   -}
283   -
284   -/*
285   - * Control feature layout
286   - */
287   -.dataTables_wrapper {
288   - position: relative;
289   - clear: both;
290   - *zoom: 1;
291   - zoom: 1;
292   -}
293   -.dataTables_wrapper .dataTables_length {
294   - float: left;
295   -}
296   -.dataTables_wrapper .dataTables_filter {
297   - float: right;
298   - text-align: right;
299   -}
300   -.dataTables_wrapper .dataTables_filter input {
301   - margin-left: 0.5em;
302   -}
303   -.dataTables_wrapper .dataTables_info {
304   - clear: both;
305   - float: left;
306   - padding-top: 0.755em;
307   -}
308   -.dataTables_wrapper .dataTables_paginate {
309   - float: right;
310   - text-align: right;
311   - padding-top: 0.25em;
312   -}
313   -.dataTables_wrapper .dataTables_paginate .paginate_button {
314   - box-sizing: border-box;
315   - display: inline-block;
316   - min-width: 1.5em;
317   - padding: 0.5em 1em;
318   - margin-left: 2px;
319   - text-align: center;
320   - text-decoration: none !important;
321   - cursor: pointer;
322   - *cursor: hand;
323   - color: #333 !important;
324   - border: 1px solid transparent;
325   - border-radius: 2px;
326   -}
327   -.dataTables_wrapper .dataTables_paginate .paginate_button.current, .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover {
328   - color: #333 !important;
329   - border: 1px solid #979797;
330   - background-color: white;
331   - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, white), color-stop(100%, #dcdcdc));
332   - /* Chrome,Safari4+ */
333   - background: -webkit-linear-gradient(top, white 0%, #dcdcdc 100%);
334   - /* Chrome10+,Safari5.1+ */
335   - background: -moz-linear-gradient(top, white 0%, #dcdcdc 100%);
336   - /* FF3.6+ */
337   - background: -ms-linear-gradient(top, white 0%, #dcdcdc 100%);
338   - /* IE10+ */
339   - background: -o-linear-gradient(top, white 0%, #dcdcdc 100%);
340   - /* Opera 11.10+ */
341   - background: linear-gradient(to bottom, white 0%, #dcdcdc 100%);
342   - /* W3C */
343   -}
344   -.dataTables_wrapper .dataTables_paginate .paginate_button.disabled, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active {
345   - cursor: default;
346   - color: #666 !important;
347   - border: 1px solid transparent;
348   - background: transparent;
349   - box-shadow: none;
350   -}
351   -.dataTables_wrapper .dataTables_paginate .paginate_button:hover {
352   - color: white !important;
353   - border: 1px solid #111;
354   - background-color: #585858;
355   - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111));
356   - /* Chrome,Safari4+ */
357   - background: -webkit-linear-gradient(top, #585858 0%, #111 100%);
358   - /* Chrome10+,Safari5.1+ */
359   - background: -moz-linear-gradient(top, #585858 0%, #111 100%);
360   - /* FF3.6+ */
361   - background: -ms-linear-gradient(top, #585858 0%, #111 100%);
362   - /* IE10+ */
363   - background: -o-linear-gradient(top, #585858 0%, #111 100%);
364   - /* Opera 11.10+ */
365   - background: linear-gradient(to bottom, #585858 0%, #111 100%);
366   - /* W3C */
367   -}
368   -.dataTables_wrapper .dataTables_paginate .paginate_button:active {
369   - outline: none;
370   - background-color: #2b2b2b;
371   - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c));
372   - /* Chrome,Safari4+ */
373   - background: -webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);
374   - /* Chrome10+,Safari5.1+ */
375   - background: -moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);
376   - /* FF3.6+ */
377   - background: -ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);
378   - /* IE10+ */
379   - background: -o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);
380   - /* Opera 11.10+ */
381   - background: linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%);
382   - /* W3C */
383   - box-shadow: inset 0 0 3px #111;
384   -}
385   -.dataTables_wrapper .dataTables_paginate .ellipsis {
386   - padding: 0 1em;
387   -}
388   -.dataTables_wrapper .dataTables_processing {
389   - position: absolute;
390   - top: 50%;
391   - left: 50%;
392   - width: 100%;
393   - height: 40px;
394   - margin-left: -50%;
395   - margin-top: -25px;
396   - padding-top: 20px;
397   - text-align: center;
398   - font-size: 1.2em;
399   - background-color: white;
400   - background: -webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255, 255, 255, 0)), color-stop(25%, rgba(255, 255, 255, 0.9)), color-stop(75%, rgba(255, 255, 255, 0.9)), color-stop(100%, rgba(255, 255, 255, 0)));
401   - background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
402   - background: -moz-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
403   - background: -ms-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
404   - background: -o-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
405   - background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
406   -}
407   -.dataTables_wrapper .dataTables_length,
408   -.dataTables_wrapper .dataTables_filter,
409   -.dataTables_wrapper .dataTables_info,
410   -.dataTables_wrapper .dataTables_processing,
411   -.dataTables_wrapper .dataTables_paginate {
412   - color: #333;
413   -}
414   -.dataTables_wrapper .dataTables_scroll {
415   - clear: both;
416   -}
417   -.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody {
418   - *margin-top: -1px;
419   - -webkit-overflow-scrolling: touch;
420   -}
421   -.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody th, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody td {
422   - vertical-align: middle;
423   -}
424   -.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody th > div.dataTables_sizing,
425   -.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody td > div.dataTables_sizing {
426   - height: 0;
427   - overflow: hidden;
428   - margin: 0 !important;
429   - padding: 0 !important;
430   -}
431   -.dataTables_wrapper.no-footer .dataTables_scrollBody {
432   - border-bottom: 1px solid #111;
433   -}
434   -.dataTables_wrapper.no-footer div.dataTables_scrollHead table,
435   -.dataTables_wrapper.no-footer div.dataTables_scrollBody table {
436   - border-bottom: none;
437   -}
438   -.dataTables_wrapper:after {
439   - visibility: hidden;
440   - display: block;
441   - content: "";
442   - clear: both;
443   - height: 0;
444   -}
445   -
446   -@media screen and (max-width: 767px) {
447   - .dataTables_wrapper .dataTables_info,
448   - .dataTables_wrapper .dataTables_paginate {
449   - float: none;
450   - text-align: center;
451   - }
452   - .dataTables_wrapper .dataTables_paginate {
453   - margin-top: 0.5em;
454   - }
455   -}
456   -@media screen and (max-width: 640px) {
457   - .dataTables_wrapper .dataTables_length,
458   - .dataTables_wrapper .dataTables_filter {
459   - float: none;
460   - text-align: center;
461   - }
462   - .dataTables_wrapper .dataTables_filter {
463   - margin-top: 0.5em;
464   - }
465   -}
466   -
467   -
468   -div.dt-autofill-handle{position:absolute;height:8px;width:8px;z-index:102;box-sizing:border-box;border:1px solid #316ad1;background:linear-gradient(to bottom, #abcffb 0%, #4989de 100%)}div.dt-autofill-select{position:absolute;z-index:1001;background-color:#4989de;background-image:repeating-linear-gradient(45deg, transparent, transparent 5px, rgba(255,255,255,0.5) 5px, rgba(255,255,255,0.5) 10px)}div.dt-autofill-select.top,div.dt-autofill-select.bottom{height:3px;margin-top:-1px}div.dt-autofill-select.left,div.dt-autofill-select.right{width:3px;margin-left:-1px}div.dt-autofill-list{position:fixed;top:50%;left:50%;width:500px;margin-left:-250px;background-color:white;border-radius:6px;box-shadow:0 0 5px #555;border:2px solid #444;z-index:11;box-sizing:border-box;padding:1.5em 2em}div.dt-autofill-list ul{display:table;margin:0;padding:0;list-style:none;width:100%}div.dt-autofill-list ul li{display:table-row}div.dt-autofill-list ul li:last-child div.dt-autofill-question,div.dt-autofill-list ul li:last-child div.dt-autofill-button{border-bottom:none}div.dt-autofill-list ul li:hover{background-color:#f6f6f6}div.dt-autofill-list div.dt-autofill-question{display:table-cell;padding:0.5em 0;border-bottom:1px solid #ccc}div.dt-autofill-list div.dt-autofill-question input[type=number]{padding:6px;width:30px;margin:-2px 0}div.dt-autofill-list div.dt-autofill-button{display:table-cell;padding:0.5em 0;border-bottom:1px solid #ccc}div.dt-autofill-list div.dt-autofill-button button{color:white;margin:0;padding:6px 12px;text-align:center;border:1px solid #2e6da4;background-color:#337ab7;border-radius:4px;cursor:pointer;vertical-align:middle}div.dt-autofill-background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.7);background:radial-gradient(ellipse farthest-corner at center, rgba(0,0,0,0.3) 0%, rgba(0,0,0,0.7) 100%);z-index:10}
469   -
470   -
471   -div.dt-button-info {
472   - position: fixed;
473   - top: 50%;
474   - left: 50%;
475   - width: 400px;
476   - margin-top: -100px;
477   - margin-left: -200px;
478   - background-color: white;
479   - border: 2px solid #111;
480   - box-shadow: 3px 3px 8px rgba(0, 0, 0, 0.3);
481   - border-radius: 3px;
482   - text-align: center;
483   - z-index: 21;
484   -}
485   -div.dt-button-info h2 {
486   - padding: 0.5em;
487   - margin: 0;
488   - font-weight: normal;
489   - border-bottom: 1px solid #ddd;
490   - background-color: #f3f3f3;
491   -}
492   -div.dt-button-info > div {
493   - padding: 1em;
494   -}
495   -
496   -button.dt-button,
497   -div.dt-button,
498   -a.dt-button {
499   - position: relative;
500   - display: inline-block;
501   - box-sizing: border-box;
502   - margin-right: 0.333em;
503   - padding: 0.5em 1em;
504   - border: 1px solid #999;
505   - border-radius: 2px;
506   - cursor: pointer;
507   - font-size: 0.88em;
508   - color: black;
509   - white-space: nowrap;
510   - overflow: hidden;
511   - background-color: #e9e9e9;
512   - /* Fallback */
513   - background-image: -webkit-linear-gradient(top, white 0%, #e9e9e9 100%);
514   - /* Chrome 10+, Saf5.1+, iOS 5+ */
515   - background-image: -moz-linear-gradient(top, white 0%, #e9e9e9 100%);
516   - /* FF3.6 */
517   - background-image: -ms-linear-gradient(top, white 0%, #e9e9e9 100%);
518   - /* IE10 */
519   - background-image: -o-linear-gradient(top, white 0%, #e9e9e9 100%);
520   - /* Opera 11.10+ */
521   - background-image: linear-gradient(top, white 0%, #e9e9e9 100%);
522   - filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='white', EndColorStr='#e9e9e9');
523   - -webkit-user-select: none;
524   - -moz-user-select: none;
525   - -ms-user-select: none;
526   - user-select: none;
527   - text-decoration: none;
528   - outline: none;
529   -}
530   -button.dt-button.disabled,
531   -div.dt-button.disabled,
532   -a.dt-button.disabled {
533   - color: #999;
534   - border: 1px solid #d0d0d0;
535   - cursor: default;
536   - background-color: #f9f9f9;
537   - /* Fallback */
538   - background-image: -webkit-linear-gradient(top, #ffffff 0%, #f9f9f9 100%);
539   - /* Chrome 10+, Saf5.1+, iOS 5+ */
540   - background-image: -moz-linear-gradient(top, #ffffff 0%, #f9f9f9 100%);
541   - /* FF3.6 */
542   - background-image: -ms-linear-gradient(top, #ffffff 0%, #f9f9f9 100%);
543   - /* IE10 */
544   - background-image: -o-linear-gradient(top, #ffffff 0%, #f9f9f9 100%);
545   - /* Opera 11.10+ */
546   - background-image: linear-gradient(top, #ffffff 0%, #f9f9f9 100%);
547   - filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='#ffffff', EndColorStr='#f9f9f9');
548   -}
549   -button.dt-button:active:not(.disabled), button.dt-button.active:not(.disabled),
550   -div.dt-button:active:not(.disabled),
551   -div.dt-button.active:not(.disabled),
552   -a.dt-button:active:not(.disabled),
553   -a.dt-button.active:not(.disabled) {
554   - background-color: #e2e2e2;
555   - /* Fallback */
556   - background-image: -webkit-linear-gradient(top, #f3f3f3 0%, #e2e2e2 100%);
557   - /* Chrome 10+, Saf5.1+, iOS 5+ */
558   - background-image: -moz-linear-gradient(top, #f3f3f3 0%, #e2e2e2 100%);
559   - /* FF3.6 */
560   - background-image: -ms-linear-gradient(top, #f3f3f3 0%, #e2e2e2 100%);
561   - /* IE10 */
562   - background-image: -o-linear-gradient(top, #f3f3f3 0%, #e2e2e2 100%);
563   - /* Opera 11.10+ */
564   - background-image: linear-gradient(top, #f3f3f3 0%, #e2e2e2 100%);
565   - filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='#f3f3f3', EndColorStr='#e2e2e2');
566   - box-shadow: inset 1px 1px 3px #999999;
567   -}
568   -button.dt-button:active:not(.disabled):hover:not(.disabled), button.dt-button.active:not(.disabled):hover:not(.disabled),
569   -div.dt-button:active:not(.disabled):hover:not(.disabled),
570   -div.dt-button.active:not(.disabled):hover:not(.disabled),
571   -a.dt-button:active:not(.disabled):hover:not(.disabled),
572   -a.dt-button.active:not(.disabled):hover:not(.disabled) {
573   - box-shadow: inset 1px 1px 3px #999999;
574   - background-color: #cccccc;
575   - /* Fallback */
576   - background-image: -webkit-linear-gradient(top, #eaeaea 0%, #cccccc 100%);
577   - /* Chrome 10+, Saf5.1+, iOS 5+ */
578   - background-image: -moz-linear-gradient(top, #eaeaea 0%, #cccccc 100%);
579   - /* FF3.6 */
580   - background-image: -ms-linear-gradient(top, #eaeaea 0%, #cccccc 100%);
581   - /* IE10 */
582   - background-image: -o-linear-gradient(top, #eaeaea 0%, #cccccc 100%);
583   - /* Opera 11.10+ */
584   - background-image: linear-gradient(top, #eaeaea 0%, #cccccc 100%);
585   - filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='#eaeaea', EndColorStr='#cccccc');
586   -}
587   -button.dt-button:hover,
588   -div.dt-button:hover,
589   -a.dt-button:hover {
590   - text-decoration: none;
591   -}
592   -button.dt-button:hover:not(.disabled),
593   -div.dt-button:hover:not(.disabled),
594   -a.dt-button:hover:not(.disabled) {
595   - border: 1px solid #666;
596   - background-color: #e0e0e0;
597   - /* Fallback */
598   - background-image: -webkit-linear-gradient(top, #f9f9f9 0%, #e0e0e0 100%);
599   - /* Chrome 10+, Saf5.1+, iOS 5+ */
600   - background-image: -moz-linear-gradient(top, #f9f9f9 0%, #e0e0e0 100%);
601   - /* FF3.6 */
602   - background-image: -ms-linear-gradient(top, #f9f9f9 0%, #e0e0e0 100%);
603   - /* IE10 */
604   - background-image: -o-linear-gradient(top, #f9f9f9 0%, #e0e0e0 100%);
605   - /* Opera 11.10+ */
606   - background-image: linear-gradient(top, #f9f9f9 0%, #e0e0e0 100%);
607   - filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='#f9f9f9', EndColorStr='#e0e0e0');
608   -}
609   -button.dt-button:focus:not(.disabled),
610   -div.dt-button:focus:not(.disabled),
611   -a.dt-button:focus:not(.disabled) {
612   - border: 1px solid #426c9e;
613   - text-shadow: 0 1px 0 #c4def1;
614   - outline: none;
615   - background-color: #79ace9;
616   - /* Fallback */
617   - background-image: -webkit-linear-gradient(top, #bddef4 0%, #79ace9 100%);
618   - /* Chrome 10+, Saf5.1+, iOS 5+ */
619   - background-image: -moz-linear-gradient(top, #bddef4 0%, #79ace9 100%);
620   - /* FF3.6 */
621   - background-image: -ms-linear-gradient(top, #bddef4 0%, #79ace9 100%);
622   - /* IE10 */
623   - background-image: -o-linear-gradient(top, #bddef4 0%, #79ace9 100%);
624   - /* Opera 11.10+ */
625   - background-image: linear-gradient(top, #bddef4 0%, #79ace9 100%);
626   - filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='#bddef4', EndColorStr='#79ace9');
627   -}
628   -
629   -.dt-button embed {
630   - outline: none;
631   -}
632   -
633   -div.dt-buttons {
634   - position: relative;
635   - float: left;
636   -}
637   -div.dt-buttons.buttons-right {
638   - float: right;
639   -}
640   -
641   -div.dt-button-collection {
642   - position: absolute;
643   - top: 0;
644   - left: 0;
645   - width: 150px;
646   - margin-top: 3px;
647   - padding: 8px 8px 4px 8px;
648   - border: 1px solid #ccc;
649   - border: 1px solid rgba(0, 0, 0, 0.4);
650   - background-color: white;
651   - overflow: hidden;
652   - z-index: 2002;
653   - border-radius: 5px;
654   - box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3);
655   - z-index: 2002;
656   - -webkit-column-gap: 8px;
657   - -moz-column-gap: 8px;
658   - -ms-column-gap: 8px;
659   - -o-column-gap: 8px;
660   - column-gap: 8px;
661   -}
662   -div.dt-button-collection button.dt-button,
663   -div.dt-button-collection div.dt-button,
664   -div.dt-button-collection a.dt-button {
665   - position: relative;
666   - left: 0;
667   - right: 0;
668   - display: block;
669   - float: none;
670   - margin-bottom: 4px;
671   - margin-right: 0;
672   -}
673   -div.dt-button-collection button.dt-button:active:not(.disabled), div.dt-button-collection button.dt-button.active:not(.disabled),
674   -div.dt-button-collection div.dt-button:active:not(.disabled),
675   -div.dt-button-collection div.dt-button.active:not(.disabled),
676   -div.dt-button-collection a.dt-button:active:not(.disabled),
677   -div.dt-button-collection a.dt-button.active:not(.disabled) {
678   - background-color: #dadada;
679   - /* Fallback */
680   - background-image: -webkit-linear-gradient(top, #f0f0f0 0%, #dadada 100%);
681   - /* Chrome 10+, Saf5.1+, iOS 5+ */
682   - background-image: -moz-linear-gradient(top, #f0f0f0 0%, #dadada 100%);
683   - /* FF3.6 */
684   - background-image: -ms-linear-gradient(top, #f0f0f0 0%, #dadada 100%);
685   - /* IE10 */
686   - background-image: -o-linear-gradient(top, #f0f0f0 0%, #dadada 100%);
687   - /* Opera 11.10+ */
688   - background-image: linear-gradient(top, #f0f0f0 0%, #dadada 100%);
689   - filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='#f0f0f0', EndColorStr='#dadada');
690   - box-shadow: inset 1px 1px 3px #666;
691   -}
692   -div.dt-button-collection.fixed {
693   - position: fixed;
694   - top: 50%;
695   - left: 50%;
696   - margin-left: -75px;
697   - border-radius: 0;
698   -}
699   -div.dt-button-collection.fixed.two-column {
700   - margin-left: -150px;
701   -}
702   -div.dt-button-collection.fixed.three-column {
703   - margin-left: -225px;
704   -}
705   -div.dt-button-collection.fixed.four-column {
706   - margin-left: -300px;
707   -}
708   -div.dt-button-collection > * {
709   - -webkit-column-break-inside: avoid;
710   - break-inside: avoid;
711   -}
712   -div.dt-button-collection.two-column {
713   - width: 300px;
714   - padding-bottom: 1px;
715   - -webkit-column-count: 2;
716   - -moz-column-count: 2;
717   - -ms-column-count: 2;
718   - -o-column-count: 2;
719   - column-count: 2;
720   -}
721   -div.dt-button-collection.three-column {
722   - width: 450px;
723   - padding-bottom: 1px;
724   - -webkit-column-count: 3;
725   - -moz-column-count: 3;
726   - -ms-column-count: 3;
727   - -o-column-count: 3;
728   - column-count: 3;
729   -}
730   -div.dt-button-collection.four-column {
731   - width: 600px;
732   - padding-bottom: 1px;
733   - -webkit-column-count: 4;
734   - -moz-column-count: 4;
735   - -ms-column-count: 4;
736   - -o-column-count: 4;
737   - column-count: 4;
738   -}
739   -
740   -div.dt-button-background {
741   - position: fixed;
742   - top: 0;
743   - left: 0;
744   - width: 100%;
745   - height: 100%;
746   - background: rgba(0, 0, 0, 0.7);
747   - /* Fallback */
748   - background: -ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);
749   - /* IE10 Consumer Preview */
750   - background: -moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);
751   - /* Firefox */
752   - background: -o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);
753   - /* Opera */
754   - background: -webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7)));
755   - /* Webkit (Safari/Chrome 10) */
756   - background: -webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);
757   - /* Webkit (Chrome 11+) */
758   - background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);
759   - /* W3C Markup, IE10 Release Preview */
760   - z-index: 2001;
761   -}
762   -
763   -@media screen and (max-width: 640px) {
764   - div.dt-buttons {
765   - float: none !important;
766   - text-align: center;
767   - }
768   -}
769   -
770   -
771   -table.DTCR_clonedTable {
772   - background-color: rgba(255, 255, 255, 0.7);
773   - z-index: 202;
774   -}
775   -
776   -div.DTCR_pointer {
777   - width: 1px;
778   - background-color: #0259C4;
779   - z-index: 201;
780   -}
781   -
782   -
783   -table.DTFC_Cloned thead,
784   -table.DTFC_Cloned tfoot {
785   - background-color: white;
786   -}
787   -
788   -div.DTFC_Blocker {
789   - background-color: white;
790   -}
791   -
792   -div.DTFC_LeftWrapper table.dataTable,
793   -div.DTFC_RightWrapper table.dataTable {
794   - margin-bottom: 0;
795   - z-index: 2;
796   -}
797   -div.DTFC_LeftWrapper table.dataTable.no-footer,
798   -div.DTFC_RightWrapper table.dataTable.no-footer {
799   - border-bottom: none;
800   -}
801   -
802   -
803   -table.fixedHeader-floating {
804   - position: fixed !important;
805   - background-color: white;
806   -}
807   -
808   -table.fixedHeader-floating.no-footer {
809   - border-bottom-width: 0;
810   -}
811   -
812   -table.fixedHeader-locked {
813   - position: absolute !important;
814   - background-color: white;
815   -}
816   -
817   -@media print {
818   - table.fixedHeader-floating {
819   - display: none;
820   - }
821   -}
822   -
823   -
824   -table.dataTable.dtr-inline.collapsed > tbody > tr > td.child,
825   -table.dataTable.dtr-inline.collapsed > tbody > tr > th.child,
826   -table.dataTable.dtr-inline.collapsed > tbody > tr > td.dataTables_empty {
827   - cursor: default !important;
828   -}
829   -table.dataTable.dtr-inline.collapsed > tbody > tr > td.child:before,
830   -table.dataTable.dtr-inline.collapsed > tbody > tr > th.child:before,
831   -table.dataTable.dtr-inline.collapsed > tbody > tr > td.dataTables_empty:before {
832   - display: none !important;
833   -}
834   -table.dataTable.dtr-inline.collapsed > tbody > tr > td:first-child,
835   -table.dataTable.dtr-inline.collapsed > tbody > tr > th:first-child {
836   - position: relative;
837   - padding-left: 30px;
838   - cursor: pointer;
839   -}
840   -table.dataTable.dtr-inline.collapsed > tbody > tr > td:first-child:before,
841   -table.dataTable.dtr-inline.collapsed > tbody > tr > th:first-child:before {
842   - top: 8px;
843   - left: 4px;
844   - height: 16px;
845   - width: 16px;
846   - display: block;
847   - position: absolute;
848   - color: white;
849   - border: 2px solid white;
850   - border-radius: 16px;
851   - box-shadow: 0 0 3px #444;
852   - box-sizing: content-box;
853   - font-family: 'Courier New', Courier, monospace;
854   - text-indent: 4px;
855   - line-height: 16px;
856   - content: '+';
857   - background-color: #31b131;
858   -}
859   -table.dataTable.dtr-inline.collapsed > tbody > tr.parent > td:first-child:before,
860   -table.dataTable.dtr-inline.collapsed > tbody > tr.parent > th:first-child:before {
861   - content: '-';
862   - background-color: #d33333;
863   -}
864   -table.dataTable.dtr-inline.collapsed > tbody > tr.child td:before {
865   - display: none;
866   -}
867   -table.dataTable.dtr-inline.collapsed.compact > tbody > tr > td:first-child,
868   -table.dataTable.dtr-inline.collapsed.compact > tbody > tr > th:first-child {
869   - padding-left: 27px;
870   -}
871   -table.dataTable.dtr-inline.collapsed.compact > tbody > tr > td:first-child:before,
872   -table.dataTable.dtr-inline.collapsed.compact > tbody > tr > th:first-child:before {
873   - top: 5px;
874   - left: 4px;
875   - height: 14px;
876   - width: 14px;
877   - border-radius: 14px;
878   - line-height: 14px;
879   - text-indent: 3px;
880   -}
881   -table.dataTable.dtr-column > tbody > tr > td.control,
882   -table.dataTable.dtr-column > tbody > tr > th.control {
883   - position: relative;
884   - cursor: pointer;
885   -}
886   -table.dataTable.dtr-column > tbody > tr > td.control:before,
887   -table.dataTable.dtr-column > tbody > tr > th.control:before {
888   - top: 50%;
889   - left: 50%;
890   - height: 16px;
891   - width: 16px;
892   - margin-top: -10px;
893   - margin-left: -10px;
894   - display: block;
895   - position: absolute;
896   - color: white;
897   - border: 2px solid white;
898   - border-radius: 16px;
899   - box-shadow: 0 0 3px #444;
900   - box-sizing: content-box;
901   - font-family: 'Courier New', Courier, monospace;
902   - text-indent: 4px;
903   - line-height: 16px;
904   - content: '+';
905   - background-color: #31b131;
906   -}
907   -table.dataTable.dtr-column > tbody > tr.parent td.control:before,
908   -table.dataTable.dtr-column > tbody > tr.parent th.control:before {
909   - content: '-';
910   - background-color: #d33333;
911   -}
912   -table.dataTable > tbody > tr.child {
913   - padding: 0.5em 1em;
914   -}
915   -table.dataTable > tbody > tr.child:hover {
916   - background: transparent !important;
917   -}
918   -table.dataTable > tbody > tr.child ul {
919   - display: inline-block;
920   - list-style-type: none;
921   - margin: 0;
922   - padding: 0;
923   -}
924   -table.dataTable > tbody > tr.child ul li {
925   - border-bottom: 1px solid #efefef;
926   - padding: 0.5em 0;
927   -}
928   -table.dataTable > tbody > tr.child ul li:first-child {
929   - padding-top: 0;
930   -}
931   -table.dataTable > tbody > tr.child ul li:last-child {
932   - border-bottom: none;
933   -}
934   -table.dataTable > tbody > tr.child span.dtr-title {
935   - display: inline-block;
936   - min-width: 75px;
937   - font-weight: bold;
938   -}
939   -
940   -div.dtr-modal {
941   - position: fixed;
942   - box-sizing: border-box;
943   - top: 0;
944   - left: 0;
945   - height: 100%;
946   - width: 100%;
947   - z-index: 100;
948   - padding: 10em 1em;
949   -}
950   -div.dtr-modal div.dtr-modal-display {
951   - position: absolute;
952   - top: 0;
953   - left: 0;
954   - bottom: 0;
955   - right: 0;
956   - width: 50%;
957   - height: 50%;
958   - overflow: auto;
959   - margin: auto;
960   - z-index: 102;
961   - overflow: auto;
962   - background-color: #f5f5f7;
963   - border: 1px solid black;
964   - border-radius: 0.5em;
965   - box-shadow: 0 12px 30px rgba(0, 0, 0, 0.6);
966   -}
967   -div.dtr-modal div.dtr-modal-content {
968   - position: relative;
969   - padding: 1em;
970   -}
971   -div.dtr-modal div.dtr-modal-close {
972   - position: absolute;
973   - top: 6px;
974   - right: 6px;
975   - width: 22px;
976   - height: 22px;
977   - border: 1px solid #eaeaea;
978   - background-color: #f9f9f9;
979   - text-align: center;
980   - border-radius: 3px;
981   - cursor: pointer;
982   - z-index: 12;
983   -}
984   -div.dtr-modal div.dtr-modal-close:hover {
985   - background-color: #eaeaea;
986   -}
987   -div.dtr-modal div.dtr-modal-background {
988   - position: fixed;
989   - top: 0;
990   - left: 0;
991   - right: 0;
992   - bottom: 0;
993   - z-index: 101;
994   - background: rgba(0, 0, 0, 0.6);
995   -}
996   -
997   -@media screen and (max-width: 767px) {
998   - div.dtr-modal div.dtr-modal-display {
999   - width: 95%;
1000   - }
1001   -}
1002   -
1003   -
1004   -table.dt-rowReorder-float {
1005   - position: absolute !important;
1006   - opacity: 0.8;
1007   - table-layout: static;
1008   - outline: 2px solid #888;
1009   - outline-offset: -2px;
1010   - z-index: 2001;
1011   -}
1012   -
1013   -tr.dt-rowReorder-moving {
1014   - outline: 2px solid #555;
1015   - outline-offset: -2px;
1016   -}
1017   -
1018   -body.dt-rowReorder-noOverflow {
1019   - overflow-x: hidden;
1020   -}
1021   -
1022   -table.dataTable td.reorder {
1023   - text-align: center;
1024   - cursor: move;
1025   -}
1026   -
1027   -
1028   -div.DTS tbody th,
1029   -div.DTS tbody td {
1030   - white-space: nowrap;
1031   -}
1032   -div.DTS tbody tr.even {
1033   - background-color: white;
1034   -}
1035   -div.DTS div.DTS_Loading {
1036   - z-index: 1;
1037   -}
1038   -div.DTS div.dataTables_scrollBody {
1039   - background: repeating-linear-gradient(45deg, #edeeff, #edeeff 10px, white 10px, white 20px);
1040   -}
1041   -div.DTS div.dataTables_scrollBody table {
1042   - z-index: 2;
1043   -}
1044   -div.DTS div.dataTables_paginate {
1045   - display: none;
1046   -}
1047   -
1048   -
1049   -table.dataTable tbody > tr.selected,
1050   -table.dataTable tbody > tr > .selected {
1051   - background-color: #B0BED9;
1052   -}
1053   -table.dataTable.stripe tbody > tr.odd.selected,
1054   -table.dataTable.stripe tbody > tr.odd > .selected, table.dataTable.display tbody > tr.odd.selected,
1055   -table.dataTable.display tbody > tr.odd > .selected {
1056   - background-color: #acbad4;
1057   -}
1058   -table.dataTable.hover tbody > tr.selected:hover,
1059   -table.dataTable.hover tbody > tr > .selected:hover, table.dataTable.display tbody > tr.selected:hover,
1060   -table.dataTable.display tbody > tr > .selected:hover {
1061   - background-color: #aab7d1;
1062   -}
1063   -table.dataTable.order-column tbody > tr.selected > .sorting_1,
1064   -table.dataTable.order-column tbody > tr.selected > .sorting_2,
1065   -table.dataTable.order-column tbody > tr.selected > .sorting_3,
1066   -table.dataTable.order-column tbody > tr > .selected, table.dataTable.display tbody > tr.selected > .sorting_1,
1067   -table.dataTable.display tbody > tr.selected > .sorting_2,
1068   -table.dataTable.display tbody > tr.selected > .sorting_3,
1069   -table.dataTable.display tbody > tr > .selected {
1070   - background-color: #acbad5;
1071   -}
1072   -table.dataTable.display tbody > tr.odd.selected > .sorting_1, table.dataTable.order-column.stripe tbody > tr.odd.selected > .sorting_1 {
1073   - background-color: #a6b4cd;
1074   -}
1075   -table.dataTable.display tbody > tr.odd.selected > .sorting_2, table.dataTable.order-column.stripe tbody > tr.odd.selected > .sorting_2 {
1076   - background-color: #a8b5cf;
1077   -}
1078   -table.dataTable.display tbody > tr.odd.selected > .sorting_3, table.dataTable.order-column.stripe tbody > tr.odd.selected > .sorting_3 {
1079   - background-color: #a9b7d1;
1080   -}
1081   -table.dataTable.display tbody > tr.even.selected > .sorting_1, table.dataTable.order-column.stripe tbody > tr.even.selected > .sorting_1 {
1082   - background-color: #acbad5;
1083   -}
1084   -table.dataTable.display tbody > tr.even.selected > .sorting_2, table.dataTable.order-column.stripe tbody > tr.even.selected > .sorting_2 {
1085   - background-color: #aebcd6;
1086   -}
1087   -table.dataTable.display tbody > tr.even.selected > .sorting_3, table.dataTable.order-column.stripe tbody > tr.even.selected > .sorting_3 {
1088   - background-color: #afbdd8;
1089   -}
1090   -table.dataTable.display tbody > tr.odd > .selected, table.dataTable.order-column.stripe tbody > tr.odd > .selected {
1091   - background-color: #a6b4cd;
1092   -}
1093   -table.dataTable.display tbody > tr.even > .selected, table.dataTable.order-column.stripe tbody > tr.even > .selected {
1094   - background-color: #acbad5;
1095   -}
1096   -table.dataTable.display tbody > tr.selected:hover > .sorting_1, table.dataTable.order-column.hover tbody > tr.selected:hover > .sorting_1 {
1097   - background-color: #a2aec7;
1098   -}
1099   -table.dataTable.display tbody > tr.selected:hover > .sorting_2, table.dataTable.order-column.hover tbody > tr.selected:hover > .sorting_2 {
1100   - background-color: #a3b0c9;
1101   -}
1102   -table.dataTable.display tbody > tr.selected:hover > .sorting_3, table.dataTable.order-column.hover tbody > tr.selected:hover > .sorting_3 {
1103   - background-color: #a5b2cb;
1104   -}
1105   -table.dataTable.display tbody > tr:hover > .selected,
1106   -table.dataTable.display tbody > tr > .selected:hover, table.dataTable.order-column.hover tbody > tr:hover > .selected,
1107   -table.dataTable.order-column.hover tbody > tr > .selected:hover {
1108   - background-color: #a2aec7;
1109   -}
1110   -table.dataTable td.select-checkbox {
1111   - position: relative;
1112   -}
1113   -table.dataTable td.select-checkbox:before, table.dataTable td.select-checkbox:after {
1114   - display: block;
1115   - position: absolute;
1116   - top: 1.2em;
1117   - left: 50%;
1118   - width: 12px;
1119   - height: 12px;
1120   - box-sizing: border-box;
1121   -}
1122   -table.dataTable td.select-checkbox:before {
1123   - content: ' ';
1124   - margin-top: -6px;
1125   - margin-left: -6px;
1126   - border: 1px solid black;
1127   - border-radius: 3px;
1128   -}
1129   -table.dataTable tr.selected td.select-checkbox:after {
1130   - content: '\2714';
1131   - margin-top: -11px;
1132   - margin-left: -4px;
1133   - text-align: center;
1134   - text-shadow: 1px 1px #B0BED9, -1px -1px #B0BED9, 1px -1px #B0BED9, -1px 1px #B0BED9;
1135   -}
1136   -
1137   -div.dataTables_wrapper span.select-info,
1138   -div.dataTables_wrapper span.select-item {
1139   - margin-left: 0.5em;
1140   -}
1141   -
1142   -@media screen and (max-width: 640px) {
1143   - div.dataTables_wrapper span.select-info,
1144   - div.dataTables_wrapper span.select-item {
1145   - margin-left: 0;
1146   - display: block;
1147   - }
1148   -}
1149   -
1150   -
src/main/resources/static/metronic_v4.5.4/plugins/bootstrap-datatables/dataTables.bootstrap.js deleted 100644 → 0
1   -/*! DataTables Bootstrap 3 integration
2   - * ©2011-2014 SpryMedia Ltd - datatables.net/license
3   - */
4   -
5   -/**
6   - * DataTables integration for Bootstrap 3. This requires Bootstrap 3 and
7   - * DataTables 1.10 or newer.
8   - *
9   - * This file sets the defaults and adds options to DataTables to style its
10   - * controls using Bootstrap. See http://datatables.net/manual/styling/bootstrap
11   - * for further information.
12   - */
13   -(function(window, document, undefined){
14   -
15   -var factory = function( $, DataTable ) {
16   -"use strict";
17   -
18   -
19   -/* Set the defaults for DataTables initialisation */
20   -$.extend( true, DataTable.defaults, {
21   - dom:
22   - "<'row'<'col-sm-6'l><'col-sm-6'f>>" +
23   - "<'row'<'col-sm-12'tr>>" +
24   - "<'row'<'col-sm-5'i><'col-sm-7'p>>",
25   - renderer: 'bootstrap'
26   -} );
27   -
28   -
29   -/* Default class modification */
30   -$.extend( DataTable.ext.classes, {
31   - sWrapper: "dataTables_wrapper form-inline dt-bootstrap",
32   - sFilterInput: "form-control input-sm",
33   - sLengthSelect: "form-control input-sm"
34   -} );
35   -
36   -
37   -/* Bootstrap paging button renderer */
38   -DataTable.ext.renderer.pageButton.bootstrap = function ( settings, host, idx, buttons, page, pages ) {
39   - var api = new DataTable.Api( settings );
40   - var classes = settings.oClasses;
41   - var lang = settings.oLanguage.oPaginate;
42   - var btnDisplay, btnClass, counter=0;
43   -
44   - var attach = function( container, buttons ) {
45   - var i, ien, node, button;
46   - var clickHandler = function ( e ) {
47   - e.preventDefault();
48   - if ( !$(e.currentTarget).hasClass('disabled') ) {
49   - api.page( e.data.action ).draw( false );
50   - }
51   - };
52   -
53   - for ( i=0, ien=buttons.length ; i<ien ; i++ ) {
54   - button = buttons[i];
55   -
56   - if ( $.isArray( button ) ) {
57   - attach( container, button );
58   - }
59   - else {
60   - btnDisplay = '';
61   - btnClass = '';
62   -
63   - switch ( button ) {
64   - case 'ellipsis':
65   - btnDisplay = '&hellip;';
66   - btnClass = 'disabled';
67   - break;
68   -
69   - case 'first':
70   - btnDisplay = lang.sFirst;
71   - btnClass = button + (page > 0 ?
72   - '' : ' disabled');
73   - break;
74   -
75   - case 'previous':
76   - btnDisplay = lang.sPrevious;
77   - btnClass = button + (page > 0 ?
78   - '' : ' disabled');
79   - break;
80   -
81   - case 'next':
82   - btnDisplay = lang.sNext;
83   - btnClass = button + (page < pages-1 ?
84   - '' : ' disabled');
85   - break;
86   -
87   - case 'last':
88   - btnDisplay = lang.sLast;
89   - btnClass = button + (page < pages-1 ?
90   - '' : ' disabled');
91   - break;
92   -
93   - default:
94   - btnDisplay = button + 1;
95   - btnClass = page === button ?
96   - 'active' : '';
97   - break;
98   - }
99   -
100   - if ( btnDisplay ) {
101   - node = $('<li>', {
102   - 'class': classes.sPageButton+' '+btnClass,
103   - 'id': idx === 0 && typeof button === 'string' ?
104   - settings.sTableId +'_'+ button :
105   - null
106   - } )
107   - .append( $('<a>', {
108   - 'href': '#',
109   - 'aria-controls': settings.sTableId,
110   - 'data-dt-idx': counter,
111   - 'tabindex': settings.iTabIndex
112   - } )
113   - .html( btnDisplay )
114   - )
115   - .appendTo( container );
116   -
117   - settings.oApi._fnBindAction(
118   - node, {action: button}, clickHandler
119   - );
120   -
121   - counter++;
122   - }
123   - }
124   - }
125   - };
126   -
127   - // IE9 throws an 'unknown error' if document.activeElement is used
128   - // inside an iframe or frame.
129   - var activeEl;
130   -
131   - try {
132   - // Because this approach is destroying and recreating the paging
133   - // elements, focus is lost on the select button which is bad for
134   - // accessibility. So we want to restore focus once the draw has
135   - // completed
136   - activeEl = $(document.activeElement).data('dt-idx');
137   - }
138   - catch (e) {}
139   -
140   - attach(
141   - $(host).empty().html('<ul class="pagination"/>').children('ul'),
142   - buttons
143   - );
144   -
145   - if ( activeEl ) {
146   - $(host).find( '[data-dt-idx='+activeEl+']' ).focus();
147   - }
148   -};
149   -
150   -
151   -/*
152   - * TableTools Bootstrap compatibility
153   - * Required TableTools 2.1+
154   - */
155   -if ( DataTable.TableTools ) {
156   - // Set the classes that TableTools uses to something suitable for Bootstrap
157   - $.extend( true, DataTable.TableTools.classes, {
158   - "container": "DTTT btn-group",
159   - "buttons": {
160   - "normal": "btn btn-default",
161   - "disabled": "disabled"
162   - },
163   - "collection": {
164   - "container": "DTTT_dropdown dropdown-menu",
165   - "buttons": {
166   - "normal": "",
167   - "disabled": "disabled"
168   - }
169   - },
170   - "print": {
171   - "info": "DTTT_print_info"
172   - },
173   - "select": {
174   - "row": "active"
175   - }
176   - } );
177   -
178   - // Have the collection use a bootstrap compatible drop down
179   - $.extend( true, DataTable.TableTools.DEFAULTS.oTags, {
180   - "collection": {
181   - "container": "ul",
182   - "button": "li",
183   - "liner": "a"
184   - }
185   - } );
186   -}
187   -
188   -}; // /factory
189   -
190   -
191   -// Define as an AMD module if possible
192   -if ( typeof define === 'function' && define.amd ) {
193   - define( ['jquery', 'datatables'], factory );
194   -}
195   -else if ( typeof exports === 'object' ) {
196   - // Node/CommonJS
197   - factory( require('jquery'), require('datatables') );
198   -}
199   -else if ( jQuery ) {
200   - // Otherwise simply initialise as normal, stopping multiple evaluation
201   - factory( jQuery, jQuery.fn.dataTable );
202   -}
203   -
204   -
205   -})(window, document);
206   -