Commit 9647744c3a659103e2a65e0aeb4733009e0a9ba2
Merge branch 'minhang' of http://222.66.0.204:8090/panzhaov5/bsth_control into minhang
# Conflicts: # src/main/resources/static/real_control_v2/mapmonitor/fragments/playback_v2/main.html
Showing
29 changed files
with
1599 additions
and
912 deletions
src/main/java/com/bsth/data/safe_driv/SafeDriv.java
| 1 | -package com.bsth.data.safe_driv; | ||
| 2 | - | ||
| 3 | -/** | ||
| 4 | - * 安全驾驶 | ||
| 5 | - * Created by panzhao on 2017/4/6. | ||
| 6 | - */ | ||
| 7 | -public class SafeDriv { | ||
| 8 | - | ||
| 9 | - /** | ||
| 10 | - * 时间 | ||
| 11 | - * 2017-04-06 08:00:00.0 | ||
| 12 | - */ | ||
| 13 | - private String Startime; | ||
| 14 | - | ||
| 15 | - /** | ||
| 16 | - * 时间戳 | ||
| 17 | - */ | ||
| 18 | - private Long ts; | ||
| 19 | - | ||
| 20 | - /** | ||
| 21 | - * 设备编号 | ||
| 22 | - */ | ||
| 23 | - private String sbbh; | ||
| 24 | - | ||
| 25 | - /** | ||
| 26 | - * 线路名称 | ||
| 27 | - */ | ||
| 28 | - private String xlmc; | ||
| 29 | - | ||
| 30 | - /** | ||
| 31 | - * 车辆自编号 | ||
| 32 | - */ | ||
| 33 | - private String clzbh; | ||
| 34 | - | ||
| 35 | - /** | ||
| 36 | - * 车牌号 | ||
| 37 | - */ | ||
| 38 | - private String cph; | ||
| 39 | - | ||
| 40 | - /** | ||
| 41 | - * 检查属性 | ||
| 42 | - * 双脱手 0 单脱手 1 其他为0都是异常 | ||
| 43 | - */ | ||
| 44 | - private String jctype; | ||
| 45 | - | ||
| 46 | - /** | ||
| 47 | - * 异常种类 | ||
| 48 | - * 手部检测: 1 | ||
| 49 | - * 脸部检测: 5 | ||
| 50 | - * 摄像头检测: 2 | ||
| 51 | - * 安全带检测: 3 | ||
| 52 | - * 袖章检测: 4 | ||
| 53 | - */ | ||
| 54 | - private String yczltype; | ||
| 55 | - | ||
| 56 | - @Override | ||
| 57 | - public int hashCode() { | ||
| 58 | - return ("safe_" + (this.getClzbh() + this.getStartime())).hashCode(); | ||
| 59 | - } | ||
| 60 | - | ||
| 61 | - @Override | ||
| 62 | - public boolean equals(Object obj) { | ||
| 63 | - SafeDriv s2 = (SafeDriv)obj; | ||
| 64 | - return (this.getClzbh() + this.getStartime()).equals(s2.getClzbh() + s2.getStartime()); | ||
| 65 | - } | ||
| 66 | - | ||
| 67 | - public String getStartime() { | ||
| 68 | - return Startime; | ||
| 69 | - } | ||
| 70 | - | ||
| 71 | - public void setStartime(String startime) { | ||
| 72 | - Startime = startime; | ||
| 73 | - } | ||
| 74 | - | ||
| 75 | - public String getSbbh() { | ||
| 76 | - return sbbh; | ||
| 77 | - } | ||
| 78 | - | ||
| 79 | - public void setSbbh(String sbbh) { | ||
| 80 | - this.sbbh = sbbh; | ||
| 81 | - } | ||
| 82 | - | ||
| 83 | - public String getXlmc() { | ||
| 84 | - return xlmc; | ||
| 85 | - } | ||
| 86 | - | ||
| 87 | - public void setXlmc(String xlmc) { | ||
| 88 | - this.xlmc = xlmc; | ||
| 89 | - } | ||
| 90 | - | ||
| 91 | - public String getClzbh() { | ||
| 92 | - return clzbh; | ||
| 93 | - } | ||
| 94 | - | ||
| 95 | - public void setClzbh(String clzbh) { | ||
| 96 | - this.clzbh = clzbh; | ||
| 97 | - } | ||
| 98 | - | ||
| 99 | - public String getCph() { | ||
| 100 | - return cph; | ||
| 101 | - } | ||
| 102 | - | ||
| 103 | - public void setCph(String cph) { | ||
| 104 | - this.cph = cph; | ||
| 105 | - } | ||
| 106 | - | ||
| 107 | - public String getJctype() { | ||
| 108 | - return jctype; | ||
| 109 | - } | ||
| 110 | - | ||
| 111 | - public void setJctype(String jctype) { | ||
| 112 | - this.jctype = jctype; | ||
| 113 | - } | ||
| 114 | - | ||
| 115 | - public String getYczltype() { | ||
| 116 | - return yczltype; | ||
| 117 | - } | ||
| 118 | - | ||
| 119 | - public void setYczltype(String yczltype) { | ||
| 120 | - this.yczltype = yczltype; | ||
| 121 | - } | ||
| 122 | - | ||
| 123 | - public Long getTs() { | ||
| 124 | - return ts; | ||
| 125 | - } | ||
| 126 | - | ||
| 127 | - public void setTs(Long ts) { | ||
| 128 | - this.ts = ts; | ||
| 129 | - } | ||
| 130 | -} | 1 | +package com.bsth.data.safe_driv; |
| 2 | + | ||
| 3 | +/** | ||
| 4 | + * 安全驾驶 | ||
| 5 | + * Created by panzhao on 2017/4/6. | ||
| 6 | + */ | ||
| 7 | +public class SafeDriv { | ||
| 8 | + | ||
| 9 | + /** | ||
| 10 | + * 时间 | ||
| 11 | + * 2017-04-06 08:00:00.0 | ||
| 12 | + */ | ||
| 13 | + private String Startime; | ||
| 14 | + | ||
| 15 | + /** | ||
| 16 | + * 时间戳 | ||
| 17 | + */ | ||
| 18 | + private Long ts; | ||
| 19 | + | ||
| 20 | + /** | ||
| 21 | + * 设备编号 | ||
| 22 | + */ | ||
| 23 | + private String sbbh; | ||
| 24 | + | ||
| 25 | + /** | ||
| 26 | + * 线路名称 | ||
| 27 | + */ | ||
| 28 | + private String xlmc; | ||
| 29 | + | ||
| 30 | + /** | ||
| 31 | + * 车辆自编号 | ||
| 32 | + */ | ||
| 33 | + private String clzbh; | ||
| 34 | + | ||
| 35 | + /** | ||
| 36 | + * 车牌号 | ||
| 37 | + */ | ||
| 38 | + private String cph; | ||
| 39 | + | ||
| 40 | + /** | ||
| 41 | + * 检查属性 | ||
| 42 | + * 双脱手 0 单脱手 1 其他为0都是异常 | ||
| 43 | + */ | ||
| 44 | + private String jctype; | ||
| 45 | + | ||
| 46 | + /** | ||
| 47 | + * 异常种类 | ||
| 48 | + * 手部检测: 1 | ||
| 49 | + * 脸部检测: 5 | ||
| 50 | + * 摄像头检测: 2 | ||
| 51 | + * 安全带检测: 3 | ||
| 52 | + * 袖章检测: 4 | ||
| 53 | + */ | ||
| 54 | + private String yczltype; | ||
| 55 | + | ||
| 56 | + @Override | ||
| 57 | + public int hashCode() { | ||
| 58 | + return ("safe_" + (this.getClzbh() + this.getStartime())).hashCode(); | ||
| 59 | + } | ||
| 60 | + | ||
| 61 | + @Override | ||
| 62 | + public boolean equals(Object obj) { | ||
| 63 | + SafeDriv s2 = (SafeDriv)obj; | ||
| 64 | + return (this.getClzbh() + this.getStartime()).equals(s2.getClzbh() + s2.getStartime()); | ||
| 65 | + } | ||
| 66 | + | ||
| 67 | + public String getStartime() { | ||
| 68 | + return Startime; | ||
| 69 | + } | ||
| 70 | + | ||
| 71 | + public void setStartime(String startime) { | ||
| 72 | + Startime = startime; | ||
| 73 | + } | ||
| 74 | + | ||
| 75 | + public String getSbbh() { | ||
| 76 | + return sbbh; | ||
| 77 | + } | ||
| 78 | + | ||
| 79 | + public void setSbbh(String sbbh) { | ||
| 80 | + this.sbbh = sbbh; | ||
| 81 | + } | ||
| 82 | + | ||
| 83 | + public String getXlmc() { | ||
| 84 | + return xlmc; | ||
| 85 | + } | ||
| 86 | + | ||
| 87 | + public void setXlmc(String xlmc) { | ||
| 88 | + this.xlmc = xlmc; | ||
| 89 | + } | ||
| 90 | + | ||
| 91 | + public String getClzbh() { | ||
| 92 | + return clzbh; | ||
| 93 | + } | ||
| 94 | + | ||
| 95 | + public void setClzbh(String clzbh) { | ||
| 96 | + this.clzbh = clzbh; | ||
| 97 | + } | ||
| 98 | + | ||
| 99 | + public String getCph() { | ||
| 100 | + return cph; | ||
| 101 | + } | ||
| 102 | + | ||
| 103 | + public void setCph(String cph) { | ||
| 104 | + this.cph = cph; | ||
| 105 | + } | ||
| 106 | + | ||
| 107 | + public String getJctype() { | ||
| 108 | + return jctype; | ||
| 109 | + } | ||
| 110 | + | ||
| 111 | + public void setJctype(String jctype) { | ||
| 112 | + this.jctype = jctype; | ||
| 113 | + } | ||
| 114 | + | ||
| 115 | + public String getYczltype() { | ||
| 116 | + return yczltype; | ||
| 117 | + } | ||
| 118 | + | ||
| 119 | + public void setYczltype(String yczltype) { | ||
| 120 | + this.yczltype = yczltype; | ||
| 121 | + } | ||
| 122 | + | ||
| 123 | + public Long getTs() { | ||
| 124 | + return ts; | ||
| 125 | + } | ||
| 126 | + | ||
| 127 | + public void setTs(Long ts) { | ||
| 128 | + this.ts = ts; | ||
| 129 | + } | ||
| 130 | +} |
src/main/java/com/bsth/data/safe_driv/SafeDrivCenter.java
| 1 | -package com.bsth.data.safe_driv; | ||
| 2 | - | ||
| 3 | -import com.bsth.Application; | ||
| 4 | -import com.bsth.websocket.handler.SendUtils; | ||
| 5 | -import org.joda.time.format.DateTimeFormat; | ||
| 6 | -import org.joda.time.format.DateTimeFormatter; | ||
| 7 | -import org.springframework.beans.BeansException; | ||
| 8 | -import org.springframework.beans.factory.annotation.Autowired; | ||
| 9 | -import org.springframework.boot.CommandLineRunner; | ||
| 10 | -import org.springframework.context.ApplicationContext; | ||
| 11 | -import org.springframework.context.ApplicationContextAware; | ||
| 12 | -import org.springframework.stereotype.Component; | ||
| 13 | - | ||
| 14 | -import java.util.HashMap; | ||
| 15 | -import java.util.HashSet; | ||
| 16 | -import java.util.Map; | ||
| 17 | -import java.util.Set; | ||
| 18 | -import java.util.concurrent.TimeUnit; | ||
| 19 | - | ||
| 20 | -/** | ||
| 21 | - * 安全驾驶 | ||
| 22 | - * Created by panzhao on 2017/4/6. | ||
| 23 | - */ | ||
| 24 | -@Component | ||
| 25 | -public class SafeDrivCenter implements CommandLineRunner,ApplicationContextAware { | ||
| 26 | - | ||
| 27 | - private static Set<SafeDriv> data; | ||
| 28 | - | ||
| 29 | - @Autowired | ||
| 30 | - SafeDrivDataLoadThread safeDrivDataLoadThread; | ||
| 31 | - | ||
| 32 | - static SendUtils sendUtils; | ||
| 33 | - | ||
| 34 | - /** | ||
| 35 | - * 车辆自编号 和 最新一条数据对照 | ||
| 36 | - */ | ||
| 37 | - private static Map<String, SafeDriv> safeMap; | ||
| 38 | - | ||
| 39 | - static { | ||
| 40 | - data = new HashSet<>(); | ||
| 41 | - safeMap = new HashMap<>(); | ||
| 42 | - } | ||
| 43 | - | ||
| 44 | - private static DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss.SSS"); | ||
| 45 | - public static void put(SafeDriv sd){ | ||
| 46 | - sd.setTs(fmt.parseMillis(sd.getStartime())); | ||
| 47 | - data.add(sd); | ||
| 48 | - | ||
| 49 | - if(sd.getYczltype().indexOf("A") == -1) | ||
| 50 | - sd.setYczltype("A" + sd.getYczltype()); | ||
| 51 | - | ||
| 52 | - SafeDriv old = safeMap.get(sd.getClzbh()); | ||
| 53 | - if(old == null || sd.getTs() > old.getTs()){ | ||
| 54 | - //通知客户端 | ||
| 55 | - sendUtils.sendSafeDriv(sd); | ||
| 56 | - } | ||
| 57 | - | ||
| 58 | - safeMap.put(sd.getClzbh(), sd); | ||
| 59 | - } | ||
| 60 | - | ||
| 61 | - @Override | ||
| 62 | - public void run(String... strings) throws Exception { | ||
| 63 | - //定时加载安全驾驶数据 | ||
| 64 | - Application.mainServices.scheduleWithFixedDelay(safeDrivDataLoadThread, 60, 5, TimeUnit.SECONDS); | ||
| 65 | - } | ||
| 66 | - | ||
| 67 | - @Override | ||
| 68 | - public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { | ||
| 69 | - sendUtils = applicationContext.getBean(SendUtils.class); | ||
| 70 | - } | ||
| 71 | -} | 1 | +package com.bsth.data.safe_driv; |
| 2 | + | ||
| 3 | +import com.bsth.Application; | ||
| 4 | +import com.bsth.websocket.handler.SendUtils; | ||
| 5 | +import org.joda.time.format.DateTimeFormat; | ||
| 6 | +import org.joda.time.format.DateTimeFormatter; | ||
| 7 | +import org.springframework.beans.BeansException; | ||
| 8 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 9 | +import org.springframework.boot.CommandLineRunner; | ||
| 10 | +import org.springframework.context.ApplicationContext; | ||
| 11 | +import org.springframework.context.ApplicationContextAware; | ||
| 12 | +import org.springframework.stereotype.Component; | ||
| 13 | + | ||
| 14 | +import java.util.HashMap; | ||
| 15 | +import java.util.HashSet; | ||
| 16 | +import java.util.Map; | ||
| 17 | +import java.util.Set; | ||
| 18 | +import java.util.concurrent.TimeUnit; | ||
| 19 | + | ||
| 20 | +/** | ||
| 21 | + * 安全驾驶 | ||
| 22 | + * Created by panzhao on 2017/4/6. | ||
| 23 | + */ | ||
| 24 | +@Component | ||
| 25 | +public class SafeDrivCenter implements CommandLineRunner,ApplicationContextAware { | ||
| 26 | + | ||
| 27 | + private static Set<SafeDriv> data; | ||
| 28 | + | ||
| 29 | + @Autowired | ||
| 30 | + SafeDrivDataLoadThread safeDrivDataLoadThread; | ||
| 31 | + | ||
| 32 | + static SendUtils sendUtils; | ||
| 33 | + | ||
| 34 | + /** | ||
| 35 | + * 车辆自编号 和 最新一条数据对照 | ||
| 36 | + */ | ||
| 37 | + private static Map<String, SafeDriv> safeMap; | ||
| 38 | + | ||
| 39 | + static { | ||
| 40 | + data = new HashSet<>(); | ||
| 41 | + safeMap = new HashMap<>(); | ||
| 42 | + } | ||
| 43 | + | ||
| 44 | + private static DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss.SSS"); | ||
| 45 | + public static void put(SafeDriv sd){ | ||
| 46 | + sd.setTs(fmt.parseMillis(sd.getStartime())); | ||
| 47 | + data.add(sd); | ||
| 48 | + | ||
| 49 | + if(sd.getYczltype().indexOf("A") == -1) | ||
| 50 | + sd.setYczltype("A" + sd.getYczltype()); | ||
| 51 | + | ||
| 52 | + SafeDriv old = safeMap.get(sd.getClzbh()); | ||
| 53 | + if(old == null || sd.getTs() > old.getTs()){ | ||
| 54 | + //通知客户端 | ||
| 55 | + sendUtils.sendSafeDriv(sd); | ||
| 56 | + } | ||
| 57 | + | ||
| 58 | + safeMap.put(sd.getClzbh(), sd); | ||
| 59 | + } | ||
| 60 | + | ||
| 61 | + @Override | ||
| 62 | + public void run(String... strings) throws Exception { | ||
| 63 | + //定时加载安全驾驶数据 | ||
| 64 | + Application.mainServices.scheduleWithFixedDelay(safeDrivDataLoadThread, 60, 5, TimeUnit.SECONDS); | ||
| 65 | + } | ||
| 66 | + | ||
| 67 | + @Override | ||
| 68 | + public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { | ||
| 69 | + sendUtils = applicationContext.getBean(SendUtils.class); | ||
| 70 | + } | ||
| 71 | +} |
src/main/java/com/bsth/data/safe_driv/SafeDrivDataLoadThread.java
| 1 | -package com.bsth.data.safe_driv; | ||
| 2 | - | ||
| 3 | -import com.alibaba.fastjson.JSON; | ||
| 4 | -import org.apache.http.HttpEntity; | ||
| 5 | -import org.apache.http.client.methods.CloseableHttpResponse; | ||
| 6 | -import org.apache.http.client.methods.HttpGet; | ||
| 7 | -import org.apache.http.impl.client.CloseableHttpClient; | ||
| 8 | -import org.apache.http.impl.client.HttpClients; | ||
| 9 | -import org.slf4j.Logger; | ||
| 10 | -import org.slf4j.LoggerFactory; | ||
| 11 | -import org.springframework.stereotype.Component; | ||
| 12 | - | ||
| 13 | -import java.io.BufferedReader; | ||
| 14 | -import java.io.InputStreamReader; | ||
| 15 | -import java.util.List; | ||
| 16 | - | ||
| 17 | -/** | ||
| 18 | - * 安全驾驶数据加载线程 | ||
| 19 | - * Created by panzhao on 2017/4/6. | ||
| 20 | - */ | ||
| 21 | -@Component | ||
| 22 | -public class SafeDrivDataLoadThread extends Thread{ | ||
| 23 | - | ||
| 24 | - private final static String url = "http://180.166.5.82:9988//bsth-safedriving/Crlcxb/realtimeInterface.do"; | ||
| 25 | - | ||
| 26 | - Logger logger = LoggerFactory.getLogger(this.getClass()); | ||
| 27 | - | ||
| 28 | - @Override | ||
| 29 | - public void run() { | ||
| 30 | - List<SafeDriv> list = null; | ||
| 31 | - CloseableHttpClient httpClient = null; | ||
| 32 | - CloseableHttpResponse response = null; | ||
| 33 | - try { | ||
| 34 | - httpClient = HttpClients.createDefault(); | ||
| 35 | - HttpGet get = new HttpGet(url); | ||
| 36 | - | ||
| 37 | - response = httpClient.execute(get); | ||
| 38 | - | ||
| 39 | - HttpEntity entity = response.getEntity(); | ||
| 40 | - if (null != entity) { | ||
| 41 | - BufferedReader br = new BufferedReader(new InputStreamReader(entity.getContent())); | ||
| 42 | - StringBuffer stringBuffer = new StringBuffer(); | ||
| 43 | - String str = ""; | ||
| 44 | - while ((str = br.readLine()) != null) | ||
| 45 | - stringBuffer.append(str); | ||
| 46 | - | ||
| 47 | - | ||
| 48 | - list = JSON.parseArray(stringBuffer.toString(), SafeDriv.class); | ||
| 49 | - /** | ||
| 50 | - * 模拟数据 | ||
| 51 | - | ||
| 52 | - SafeDriv sd1 = new SafeDriv(); | ||
| 53 | - sd1.setYczltype("1"); | ||
| 54 | - sd1.setClzbh("W2B-001"); | ||
| 55 | - sd1.setStartime("2017-04-07 08:00:00.0"); | ||
| 56 | - | ||
| 57 | - SafeDriv sd2 = new SafeDriv(); | ||
| 58 | - sd2.setYczltype("2"); | ||
| 59 | - sd2.setClzbh("W2B-002"); | ||
| 60 | - sd2.setStartime("2017-04-07 08:02:00.0"); | ||
| 61 | - | ||
| 62 | - SafeDriv sd3 = new SafeDriv(); | ||
| 63 | - sd3.setYczltype("3"); | ||
| 64 | - sd3.setClzbh("W2B-003"); | ||
| 65 | - sd3.setStartime("2017-04-07 08:03:00.0"); | ||
| 66 | - | ||
| 67 | - SafeDriv sd4 = new SafeDriv(); | ||
| 68 | - sd4.setYczltype("4"); | ||
| 69 | - sd4.setClzbh("W2B-004"); | ||
| 70 | - sd4.setStartime("2017-04-07 08:04:00.0"); | ||
| 71 | - | ||
| 72 | - SafeDriv sd5 = new SafeDriv(); | ||
| 73 | - sd5.setYczltype("5"); | ||
| 74 | - sd5.setClzbh("W2B-005"); | ||
| 75 | - sd5.setStartime("2017-04-07 08:05:00.0"); | ||
| 76 | - | ||
| 77 | - list.add(sd1); | ||
| 78 | - list.add(sd2); | ||
| 79 | - list.add(sd3); | ||
| 80 | - list.add(sd4); | ||
| 81 | - list.add(sd5); | ||
| 82 | - */ | ||
| 83 | - for(SafeDriv sd : list){ | ||
| 84 | - SafeDrivCenter.put(sd); | ||
| 85 | - } | ||
| 86 | - } | ||
| 87 | - | ||
| 88 | - httpClient.close(); | ||
| 89 | - response.close(); | ||
| 90 | - } catch (Exception e) { | ||
| 91 | - logger.error("", e); | ||
| 92 | - } | ||
| 93 | - } | ||
| 94 | -} | 1 | +package com.bsth.data.safe_driv; |
| 2 | + | ||
| 3 | +import com.alibaba.fastjson.JSON; | ||
| 4 | +import org.apache.http.HttpEntity; | ||
| 5 | +import org.apache.http.client.methods.CloseableHttpResponse; | ||
| 6 | +import org.apache.http.client.methods.HttpGet; | ||
| 7 | +import org.apache.http.impl.client.CloseableHttpClient; | ||
| 8 | +import org.apache.http.impl.client.HttpClients; | ||
| 9 | +import org.slf4j.Logger; | ||
| 10 | +import org.slf4j.LoggerFactory; | ||
| 11 | +import org.springframework.stereotype.Component; | ||
| 12 | + | ||
| 13 | +import java.io.BufferedReader; | ||
| 14 | +import java.io.InputStreamReader; | ||
| 15 | +import java.util.List; | ||
| 16 | + | ||
| 17 | +/** | ||
| 18 | + * 安全驾驶数据加载线程 | ||
| 19 | + * Created by panzhao on 2017/4/6. | ||
| 20 | + */ | ||
| 21 | +@Component | ||
| 22 | +public class SafeDrivDataLoadThread extends Thread{ | ||
| 23 | + | ||
| 24 | + private final static String url = "http://180.166.5.82:9988//bsth-safedriving/Crlcxb/realtimeInterface.do"; | ||
| 25 | + | ||
| 26 | + Logger logger = LoggerFactory.getLogger(this.getClass()); | ||
| 27 | + | ||
| 28 | + @Override | ||
| 29 | + public void run() { | ||
| 30 | + List<SafeDriv> list = null; | ||
| 31 | + CloseableHttpClient httpClient = null; | ||
| 32 | + CloseableHttpResponse response = null; | ||
| 33 | + try { | ||
| 34 | + httpClient = HttpClients.createDefault(); | ||
| 35 | + HttpGet get = new HttpGet(url); | ||
| 36 | + | ||
| 37 | + response = httpClient.execute(get); | ||
| 38 | + | ||
| 39 | + HttpEntity entity = response.getEntity(); | ||
| 40 | + if (null != entity) { | ||
| 41 | + BufferedReader br = new BufferedReader(new InputStreamReader(entity.getContent())); | ||
| 42 | + StringBuffer stringBuffer = new StringBuffer(); | ||
| 43 | + String str = ""; | ||
| 44 | + while ((str = br.readLine()) != null) | ||
| 45 | + stringBuffer.append(str); | ||
| 46 | + | ||
| 47 | + | ||
| 48 | + list = JSON.parseArray(stringBuffer.toString(), SafeDriv.class); | ||
| 49 | + /** | ||
| 50 | + * 模拟数据 | ||
| 51 | + | ||
| 52 | + SafeDriv sd1 = new SafeDriv(); | ||
| 53 | + sd1.setYczltype("1"); | ||
| 54 | + sd1.setClzbh("W2B-001"); | ||
| 55 | + sd1.setStartime("2017-04-07 08:00:00.0"); | ||
| 56 | + | ||
| 57 | + SafeDriv sd2 = new SafeDriv(); | ||
| 58 | + sd2.setYczltype("2"); | ||
| 59 | + sd2.setClzbh("W2B-002"); | ||
| 60 | + sd2.setStartime("2017-04-07 08:02:00.0"); | ||
| 61 | + | ||
| 62 | + SafeDriv sd3 = new SafeDriv(); | ||
| 63 | + sd3.setYczltype("3"); | ||
| 64 | + sd3.setClzbh("W2B-003"); | ||
| 65 | + sd3.setStartime("2017-04-07 08:03:00.0"); | ||
| 66 | + | ||
| 67 | + SafeDriv sd4 = new SafeDriv(); | ||
| 68 | + sd4.setYczltype("4"); | ||
| 69 | + sd4.setClzbh("W2B-004"); | ||
| 70 | + sd4.setStartime("2017-04-07 08:04:00.0"); | ||
| 71 | + | ||
| 72 | + SafeDriv sd5 = new SafeDriv(); | ||
| 73 | + sd5.setYczltype("5"); | ||
| 74 | + sd5.setClzbh("W2B-005"); | ||
| 75 | + sd5.setStartime("2017-04-07 08:05:00.0"); | ||
| 76 | + | ||
| 77 | + list.add(sd1); | ||
| 78 | + list.add(sd2); | ||
| 79 | + list.add(sd3); | ||
| 80 | + list.add(sd4); | ||
| 81 | + list.add(sd5); | ||
| 82 | + */ | ||
| 83 | + for(SafeDriv sd : list){ | ||
| 84 | + SafeDrivCenter.put(sd); | ||
| 85 | + } | ||
| 86 | + } | ||
| 87 | + | ||
| 88 | + httpClient.close(); | ||
| 89 | + response.close(); | ||
| 90 | + } catch (Exception e) { | ||
| 91 | + logger.error("", e); | ||
| 92 | + } | ||
| 93 | + } | ||
| 94 | +} |
src/main/java/com/bsth/entity/schedule/SchedulePlanInfo.java
| @@ -128,6 +128,9 @@ public class SchedulePlanInfo { | @@ -128,6 +128,9 @@ public class SchedulePlanInfo { | ||
| 128 | /** 关联的时刻表名字 */ | 128 | /** 关联的时刻表名字 */ |
| 129 | private String ttInfoName; | 129 | private String ttInfoName; |
| 130 | 130 | ||
| 131 | + /** 时刻表的明细备注 */ | ||
| 132 | + private String remark; | ||
| 133 | + | ||
| 131 | 134 | ||
| 132 | /** 创建人 */ | 135 | /** 创建人 */ |
| 133 | @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY) | 136 | @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY) |
| @@ -269,6 +272,9 @@ public class SchedulePlanInfo { | @@ -269,6 +272,9 @@ public class SchedulePlanInfo { | ||
| 269 | // 使用的时刻表名字 | 272 | // 使用的时刻表名字 |
| 270 | this.ttInfoName = ttInfoDetail.getTtinfo().getName(); | 273 | this.ttInfoName = ttInfoDetail.getTtinfo().getName(); |
| 271 | 274 | ||
| 275 | + // 备注信息 | ||
| 276 | + this.remark = ttInfoDetail.getRemark(); | ||
| 277 | + | ||
| 272 | // 使用车辆配置的停车场信息 | 278 | // 使用车辆配置的停车场信息 |
| 273 | String pzType = carConfigInfo.getPzType(); // 配置类型 | 279 | String pzType = carConfigInfo.getPzType(); // 配置类型 |
| 274 | if (pzType != null && !pzType.equals("BSY")) { | 280 | if (pzType != null && !pzType.equals("BSY")) { |
| @@ -648,4 +654,12 @@ public class SchedulePlanInfo { | @@ -648,4 +654,12 @@ public class SchedulePlanInfo { | ||
| 648 | public void setTtInfoName(String ttInfoName) { | 654 | public void setTtInfoName(String ttInfoName) { |
| 649 | this.ttInfoName = ttInfoName; | 655 | this.ttInfoName = ttInfoName; |
| 650 | } | 656 | } |
| 657 | + | ||
| 658 | + public String getRemark() { | ||
| 659 | + return remark; | ||
| 660 | + } | ||
| 661 | + | ||
| 662 | + public void setRemark(String remark) { | ||
| 663 | + this.remark = remark; | ||
| 664 | + } | ||
| 651 | } | 665 | } |
src/main/java/com/bsth/repository/schedule/SchedulePlanInfoRepository.java
| @@ -35,21 +35,22 @@ public interface SchedulePlanInfoRepository extends BaseRepository<SchedulePlanI | @@ -35,21 +35,22 @@ public interface SchedulePlanInfoRepository extends BaseRepository<SchedulePlanI | ||
| 35 | "info.cl_zbh as clZbh, " + | 35 | "info.cl_zbh as clZbh, " + |
| 36 | "group_concat(info.fcsj order by info.fcno) ccsj, " + | 36 | "group_concat(info.fcsj order by info.fcno) ccsj, " + |
| 37 | "group_concat(info.bc_type order by info.fcno) bctype, " + | 37 | "group_concat(info.bc_type order by info.fcno) bctype, " + |
| 38 | - "group_concat(distinct info.j) jsyId, " + | ||
| 39 | - "group_concat(distinct info.j_gh) jsyGh, " + | ||
| 40 | - "group_concat(distinct info.j_name) jsyName, " + | ||
| 41 | - "group_concat(distinct info.s) spyId, " + | ||
| 42 | - "group_concat(distinct info.s_gh) spyGh, " + | ||
| 43 | - "group_concat(distinct info.s_name) spyName, " + | 38 | + "group_concat(distinct info.j order by info.fcno) jsyId, " + |
| 39 | + "group_concat(distinct info.j_gh order by info.fcno) jsyGh, " + | ||
| 40 | + "group_concat(distinct info.j_name order by info.fcno) jsyName, " + | ||
| 41 | + "group_concat(distinct info.s order by info.fcno) spyId, " + | ||
| 42 | + "group_concat(distinct info.s_gh order by info.fcno) spyGh, " + | ||
| 43 | + "group_concat(distinct info.s_name order by info.fcno) spyName, " + | ||
| 44 | "group_concat(info.fcno order by info.fcno) fcno, " + | 44 | "group_concat(info.fcno order by info.fcno) fcno, " + |
| 45 | "max(info.update_date) as updateDate, " + | 45 | "max(info.update_date) as updateDate, " + |
| 46 | "max(user.user_name) as updateUserName, " + | 46 | "max(user.user_name) as updateUserName, " + |
| 47 | "max(info.tt_info_name) as ttInfoName " + | 47 | "max(info.tt_info_name) as ttInfoName " + |
| 48 | "from bsth_c_s_sp_info info left join bsth_c_sys_user user on info.update_by = user.id " + | 48 | "from bsth_c_s_sp_info info left join bsth_c_sys_user user on info.update_by = user.id " + |
| 49 | + "left join bsth_c_s_gbi gbi on info.lp = gbi.id " + | ||
| 49 | "where info.xl = ?1 and " + | 50 | "where info.xl = ?1 and " + |
| 50 | "info.schedule_date = ?2 " + | 51 | "info.schedule_date = ?2 " + |
| 51 | "group by info.xl_name, info.schedule_date, info.lp, info.lp_name, info.cl, info.cl_zbh " + | 52 | "group by info.xl_name, info.schedule_date, info.lp, info.lp_name, info.cl, info.cl_zbh " + |
| 52 | - "order by info.xl_name, info.schedule_date, info.lp ", nativeQuery = true) | 53 | + "order by info.xl_name, info.schedule_date, gbi.lp_no ", nativeQuery = true) |
| 53 | List<Object[]> findGroupInfo(Integer xlid, Date scheduleDate); | 54 | List<Object[]> findGroupInfo(Integer xlid, Date scheduleDate); |
| 54 | 55 | ||
| 55 | @Modifying | 56 | @Modifying |
src/main/java/com/bsth/service/gps/entity/GpsOutbound.java
| 1 | -package com.bsth.service.gps.entity; | ||
| 2 | - | ||
| 3 | -/** | ||
| 4 | - * 越界异常 --ms数据库格式 | ||
| 5 | - * Created by panzhao on 2017/4/9. | ||
| 6 | - */ | ||
| 7 | -public class GpsOutbound { | ||
| 8 | - | ||
| 9 | - private String vehicle; | ||
| 10 | - | ||
| 11 | - private String line; | ||
| 12 | - | ||
| 13 | - private int up_down; | ||
| 14 | - | ||
| 15 | - private float lon; | ||
| 16 | - | ||
| 17 | - private float lat; | ||
| 18 | - | ||
| 19 | - private long timestamp; | ||
| 20 | - | ||
| 21 | - public String location(){ | ||
| 22 | - return lon + "," + lat; | ||
| 23 | - } | ||
| 24 | - | ||
| 25 | - public String getVehicle() { | ||
| 26 | - return vehicle; | ||
| 27 | - } | ||
| 28 | - | ||
| 29 | - public void setVehicle(String vehicle) { | ||
| 30 | - this.vehicle = vehicle; | ||
| 31 | - } | ||
| 32 | - | ||
| 33 | - public String getLine() { | ||
| 34 | - return line; | ||
| 35 | - } | ||
| 36 | - | ||
| 37 | - public void setLine(String line) { | ||
| 38 | - this.line = line; | ||
| 39 | - } | ||
| 40 | - | ||
| 41 | - public int getUp_down() { | ||
| 42 | - return up_down; | ||
| 43 | - } | ||
| 44 | - | ||
| 45 | - public void setUp_down(int up_down) { | ||
| 46 | - this.up_down = up_down; | ||
| 47 | - } | ||
| 48 | - | ||
| 49 | - public float getLon() { | ||
| 50 | - return lon; | ||
| 51 | - } | ||
| 52 | - | ||
| 53 | - public void setLon(float lon) { | ||
| 54 | - this.lon = lon; | ||
| 55 | - } | ||
| 56 | - | ||
| 57 | - public float getLat() { | ||
| 58 | - return lat; | ||
| 59 | - } | ||
| 60 | - | ||
| 61 | - public void setLat(float lat) { | ||
| 62 | - this.lat = lat; | ||
| 63 | - } | ||
| 64 | - | ||
| 65 | - public long getTimestamp() { | ||
| 66 | - return timestamp; | ||
| 67 | - } | ||
| 68 | - | ||
| 69 | - public void setTimestamp(long timestamp) { | ||
| 70 | - this.timestamp = timestamp; | ||
| 71 | - } | ||
| 72 | -} | 1 | +package com.bsth.service.gps.entity; |
| 2 | + | ||
| 3 | +/** | ||
| 4 | + * 越界异常 --ms数据库格式 | ||
| 5 | + * Created by panzhao on 2017/4/9. | ||
| 6 | + */ | ||
| 7 | +public class GpsOutbound { | ||
| 8 | + | ||
| 9 | + private String vehicle; | ||
| 10 | + | ||
| 11 | + private String line; | ||
| 12 | + | ||
| 13 | + private int up_down; | ||
| 14 | + | ||
| 15 | + private float lon; | ||
| 16 | + | ||
| 17 | + private float lat; | ||
| 18 | + | ||
| 19 | + private long timestamp; | ||
| 20 | + | ||
| 21 | + public String location(){ | ||
| 22 | + return lon + "," + lat; | ||
| 23 | + } | ||
| 24 | + | ||
| 25 | + public String getVehicle() { | ||
| 26 | + return vehicle; | ||
| 27 | + } | ||
| 28 | + | ||
| 29 | + public void setVehicle(String vehicle) { | ||
| 30 | + this.vehicle = vehicle; | ||
| 31 | + } | ||
| 32 | + | ||
| 33 | + public String getLine() { | ||
| 34 | + return line; | ||
| 35 | + } | ||
| 36 | + | ||
| 37 | + public void setLine(String line) { | ||
| 38 | + this.line = line; | ||
| 39 | + } | ||
| 40 | + | ||
| 41 | + public int getUp_down() { | ||
| 42 | + return up_down; | ||
| 43 | + } | ||
| 44 | + | ||
| 45 | + public void setUp_down(int up_down) { | ||
| 46 | + this.up_down = up_down; | ||
| 47 | + } | ||
| 48 | + | ||
| 49 | + public float getLon() { | ||
| 50 | + return lon; | ||
| 51 | + } | ||
| 52 | + | ||
| 53 | + public void setLon(float lon) { | ||
| 54 | + this.lon = lon; | ||
| 55 | + } | ||
| 56 | + | ||
| 57 | + public float getLat() { | ||
| 58 | + return lat; | ||
| 59 | + } | ||
| 60 | + | ||
| 61 | + public void setLat(float lat) { | ||
| 62 | + this.lat = lat; | ||
| 63 | + } | ||
| 64 | + | ||
| 65 | + public long getTimestamp() { | ||
| 66 | + return timestamp; | ||
| 67 | + } | ||
| 68 | + | ||
| 69 | + public void setTimestamp(long timestamp) { | ||
| 70 | + this.timestamp = timestamp; | ||
| 71 | + } | ||
| 72 | +} |
src/main/java/com/bsth/service/gps/entity/GpsOutbound_DTO.java
| 1 | -package com.bsth.service.gps.entity; | ||
| 2 | - | ||
| 3 | -import com.alibaba.fastjson.JSON; | ||
| 4 | -import com.alibaba.fastjson.JSONObject; | ||
| 5 | -import com.bsth.data.BasicData; | ||
| 6 | - | ||
| 7 | -import java.util.*; | ||
| 8 | - | ||
| 9 | -/** | ||
| 10 | - * 越界异常 dto | ||
| 11 | - * Created by panzhao on 2017/4/7. | ||
| 12 | - */ | ||
| 13 | -public class GpsOutbound_DTO { | ||
| 14 | - | ||
| 15 | - public static List<GpsOutbound_DTO> create(List<Map<String, Object>> mapList){ | ||
| 16 | - //默认都是一辆车的数据 | ||
| 17 | - List<GpsOutbound> list = JSONObject.parseArray(JSON.toJSONString(mapList), GpsOutbound.class); | ||
| 18 | - GpsOutbound outbound; | ||
| 19 | - | ||
| 20 | - //排序 | ||
| 21 | - Collections.sort(list, new Comparator<GpsOutbound>() { | ||
| 22 | - @Override | ||
| 23 | - public int compare(GpsOutbound o1, GpsOutbound o2) { | ||
| 24 | - return (int) (o1.getTimestamp() - o2.getTimestamp()); | ||
| 25 | - } | ||
| 26 | - }); | ||
| 27 | - | ||
| 28 | - int space = 1000 * 60; | ||
| 29 | - int size = list.size(); | ||
| 30 | - StringBuffer locations = new StringBuffer(""); | ||
| 31 | - | ||
| 32 | - List<GpsOutbound_DTO> rsList = new ArrayList<>(); | ||
| 33 | - GpsOutbound_DTO dto = null; | ||
| 34 | - | ||
| 35 | - for(int i = 0; i < size; i++){ | ||
| 36 | - outbound = list.get(i); | ||
| 37 | - locations.append(outbound.location() + ";"); | ||
| 38 | - if(dto == null){ | ||
| 39 | - dto = new GpsOutbound_DTO(); | ||
| 40 | - dto.setDeviceId(outbound.getVehicle()); | ||
| 41 | - dto.setNbbm(BasicData.deviceId2NbbmMap.get(outbound.getVehicle())); | ||
| 42 | - dto.setSt(outbound.getTimestamp()); | ||
| 43 | - } | ||
| 44 | - else{ | ||
| 45 | - //越界结束 | ||
| 46 | - if((i < size - 1 && list.get(i + 1).getTimestamp() - outbound.getTimestamp() > space)){ | ||
| 47 | - dto.setEt(outbound.getTimestamp()); | ||
| 48 | - dto.setLocations(locations.toString()); | ||
| 49 | - | ||
| 50 | - rsList.add(dto); | ||
| 51 | - dto = null; | ||
| 52 | - locations = new StringBuffer(""); | ||
| 53 | - continue; | ||
| 54 | - } | ||
| 55 | - | ||
| 56 | - if(i == size - 1) | ||
| 57 | - rsList.add(dto); | ||
| 58 | - } | ||
| 59 | - } | ||
| 60 | - | ||
| 61 | - return rsList; | ||
| 62 | - } | ||
| 63 | - | ||
| 64 | - /** | ||
| 65 | - * 设备号 | ||
| 66 | - */ | ||
| 67 | - private String deviceId; | ||
| 68 | - | ||
| 69 | - /** | ||
| 70 | - * 自编号 | ||
| 71 | - */ | ||
| 72 | - private String nbbm; | ||
| 73 | - | ||
| 74 | - /** | ||
| 75 | - * 越界开始时间 | ||
| 76 | - */ | ||
| 77 | - private long st; | ||
| 78 | - | ||
| 79 | - /** | ||
| 80 | - * 越界结束时间 | ||
| 81 | - */ | ||
| 82 | - private long et; | ||
| 83 | - | ||
| 84 | - /** | ||
| 85 | - * 越界点位集合 | ||
| 86 | - */ | ||
| 87 | - private String locations; | ||
| 88 | - | ||
| 89 | - private String abnormalType = "outbound"; | ||
| 90 | - | ||
| 91 | - public String getDeviceId() { | ||
| 92 | - return deviceId; | ||
| 93 | - } | ||
| 94 | - | ||
| 95 | - public void setDeviceId(String deviceId) { | ||
| 96 | - this.deviceId = deviceId; | ||
| 97 | - } | ||
| 98 | - | ||
| 99 | - public String getNbbm() { | ||
| 100 | - return nbbm; | ||
| 101 | - } | ||
| 102 | - | ||
| 103 | - public void setNbbm(String nbbm) { | ||
| 104 | - this.nbbm = nbbm; | ||
| 105 | - } | ||
| 106 | - | ||
| 107 | - public long getSt() { | ||
| 108 | - return st; | ||
| 109 | - } | ||
| 110 | - | ||
| 111 | - public void setSt(long st) { | ||
| 112 | - this.st = st; | ||
| 113 | - } | ||
| 114 | - | ||
| 115 | - public long getEt() { | ||
| 116 | - return et; | ||
| 117 | - } | ||
| 118 | - | ||
| 119 | - public void setEt(long et) { | ||
| 120 | - this.et = et; | ||
| 121 | - } | ||
| 122 | - | ||
| 123 | - public String getLocations() { | ||
| 124 | - return locations; | ||
| 125 | - } | ||
| 126 | - | ||
| 127 | - public void setLocations(String locations) { | ||
| 128 | - this.locations = locations; | ||
| 129 | - } | ||
| 130 | - | ||
| 131 | - public String getAbnormalType() { | ||
| 132 | - return abnormalType; | ||
| 133 | - } | ||
| 134 | - | ||
| 135 | - public void setAbnormalType(String abnormalType) { | ||
| 136 | - this.abnormalType = abnormalType; | ||
| 137 | - } | ||
| 138 | -} | 1 | +package com.bsth.service.gps.entity; |
| 2 | + | ||
| 3 | +import com.alibaba.fastjson.JSON; | ||
| 4 | +import com.alibaba.fastjson.JSONObject; | ||
| 5 | +import com.bsth.data.BasicData; | ||
| 6 | + | ||
| 7 | +import java.util.*; | ||
| 8 | + | ||
| 9 | +/** | ||
| 10 | + * 越界异常 dto | ||
| 11 | + * Created by panzhao on 2017/4/7. | ||
| 12 | + */ | ||
| 13 | +public class GpsOutbound_DTO { | ||
| 14 | + | ||
| 15 | + public static List<GpsOutbound_DTO> create(List<Map<String, Object>> mapList){ | ||
| 16 | + //默认都是一辆车的数据 | ||
| 17 | + List<GpsOutbound> list = JSONObject.parseArray(JSON.toJSONString(mapList), GpsOutbound.class); | ||
| 18 | + GpsOutbound outbound; | ||
| 19 | + | ||
| 20 | + //排序 | ||
| 21 | + Collections.sort(list, new Comparator<GpsOutbound>() { | ||
| 22 | + @Override | ||
| 23 | + public int compare(GpsOutbound o1, GpsOutbound o2) { | ||
| 24 | + return (int) (o1.getTimestamp() - o2.getTimestamp()); | ||
| 25 | + } | ||
| 26 | + }); | ||
| 27 | + | ||
| 28 | + int space = 1000 * 60; | ||
| 29 | + int size = list.size(); | ||
| 30 | + StringBuffer locations = new StringBuffer(""); | ||
| 31 | + | ||
| 32 | + List<GpsOutbound_DTO> rsList = new ArrayList<>(); | ||
| 33 | + GpsOutbound_DTO dto = null; | ||
| 34 | + | ||
| 35 | + for(int i = 0; i < size; i++){ | ||
| 36 | + outbound = list.get(i); | ||
| 37 | + locations.append(outbound.location() + ";"); | ||
| 38 | + if(dto == null){ | ||
| 39 | + dto = new GpsOutbound_DTO(); | ||
| 40 | + dto.setDeviceId(outbound.getVehicle()); | ||
| 41 | + dto.setNbbm(BasicData.deviceId2NbbmMap.get(outbound.getVehicle())); | ||
| 42 | + dto.setSt(outbound.getTimestamp()); | ||
| 43 | + } | ||
| 44 | + else{ | ||
| 45 | + //越界结束 | ||
| 46 | + if((i < size - 1 && list.get(i + 1).getTimestamp() - outbound.getTimestamp() > space)){ | ||
| 47 | + dto.setEt(outbound.getTimestamp()); | ||
| 48 | + dto.setLocations(locations.toString()); | ||
| 49 | + | ||
| 50 | + rsList.add(dto); | ||
| 51 | + dto = null; | ||
| 52 | + locations = new StringBuffer(""); | ||
| 53 | + continue; | ||
| 54 | + } | ||
| 55 | + | ||
| 56 | + if(i == size - 1) | ||
| 57 | + rsList.add(dto); | ||
| 58 | + } | ||
| 59 | + } | ||
| 60 | + | ||
| 61 | + return rsList; | ||
| 62 | + } | ||
| 63 | + | ||
| 64 | + /** | ||
| 65 | + * 设备号 | ||
| 66 | + */ | ||
| 67 | + private String deviceId; | ||
| 68 | + | ||
| 69 | + /** | ||
| 70 | + * 自编号 | ||
| 71 | + */ | ||
| 72 | + private String nbbm; | ||
| 73 | + | ||
| 74 | + /** | ||
| 75 | + * 越界开始时间 | ||
| 76 | + */ | ||
| 77 | + private long st; | ||
| 78 | + | ||
| 79 | + /** | ||
| 80 | + * 越界结束时间 | ||
| 81 | + */ | ||
| 82 | + private long et; | ||
| 83 | + | ||
| 84 | + /** | ||
| 85 | + * 越界点位集合 | ||
| 86 | + */ | ||
| 87 | + private String locations; | ||
| 88 | + | ||
| 89 | + private String abnormalType = "outbound"; | ||
| 90 | + | ||
| 91 | + public String getDeviceId() { | ||
| 92 | + return deviceId; | ||
| 93 | + } | ||
| 94 | + | ||
| 95 | + public void setDeviceId(String deviceId) { | ||
| 96 | + this.deviceId = deviceId; | ||
| 97 | + } | ||
| 98 | + | ||
| 99 | + public String getNbbm() { | ||
| 100 | + return nbbm; | ||
| 101 | + } | ||
| 102 | + | ||
| 103 | + public void setNbbm(String nbbm) { | ||
| 104 | + this.nbbm = nbbm; | ||
| 105 | + } | ||
| 106 | + | ||
| 107 | + public long getSt() { | ||
| 108 | + return st; | ||
| 109 | + } | ||
| 110 | + | ||
| 111 | + public void setSt(long st) { | ||
| 112 | + this.st = st; | ||
| 113 | + } | ||
| 114 | + | ||
| 115 | + public long getEt() { | ||
| 116 | + return et; | ||
| 117 | + } | ||
| 118 | + | ||
| 119 | + public void setEt(long et) { | ||
| 120 | + this.et = et; | ||
| 121 | + } | ||
| 122 | + | ||
| 123 | + public String getLocations() { | ||
| 124 | + return locations; | ||
| 125 | + } | ||
| 126 | + | ||
| 127 | + public void setLocations(String locations) { | ||
| 128 | + this.locations = locations; | ||
| 129 | + } | ||
| 130 | + | ||
| 131 | + public String getAbnormalType() { | ||
| 132 | + return abnormalType; | ||
| 133 | + } | ||
| 134 | + | ||
| 135 | + public void setAbnormalType(String abnormalType) { | ||
| 136 | + this.abnormalType = abnormalType; | ||
| 137 | + } | ||
| 138 | +} |
src/main/java/com/bsth/service/gps/entity/GpsSpeed.java
| 1 | -package com.bsth.service.gps.entity; | ||
| 2 | - | ||
| 3 | -/** | ||
| 4 | - * 超速异常 -ms数据库格式 | ||
| 5 | - * Created by panzhao on 2017/4/7. | ||
| 6 | - */ | ||
| 7 | -public class GpsSpeed { | ||
| 8 | - | ||
| 9 | - private String vehicle; | ||
| 10 | - | ||
| 11 | - private String line; | ||
| 12 | - | ||
| 13 | - private int up_down; | ||
| 14 | - | ||
| 15 | - private float lon; | ||
| 16 | - | ||
| 17 | - private float lat; | ||
| 18 | - | ||
| 19 | - private float speed; | ||
| 20 | - | ||
| 21 | - private long timestamp; | ||
| 22 | - | ||
| 23 | - public String getVehicle() { | ||
| 24 | - return vehicle; | ||
| 25 | - } | ||
| 26 | - | ||
| 27 | - public void setVehicle(String vehicle) { | ||
| 28 | - this.vehicle = vehicle; | ||
| 29 | - } | ||
| 30 | - | ||
| 31 | - public String getLine() { | ||
| 32 | - return line; | ||
| 33 | - } | ||
| 34 | - | ||
| 35 | - public void setLine(String line) { | ||
| 36 | - this.line = line; | ||
| 37 | - } | ||
| 38 | - | ||
| 39 | - public int getUp_down() { | ||
| 40 | - return up_down; | ||
| 41 | - } | ||
| 42 | - | ||
| 43 | - public void setUp_down(int up_down) { | ||
| 44 | - this.up_down = up_down; | ||
| 45 | - } | ||
| 46 | - | ||
| 47 | - public float getLon() { | ||
| 48 | - return lon; | ||
| 49 | - } | ||
| 50 | - | ||
| 51 | - public void setLon(float lon) { | ||
| 52 | - this.lon = lon; | ||
| 53 | - } | ||
| 54 | - | ||
| 55 | - public float getLat() { | ||
| 56 | - return lat; | ||
| 57 | - } | ||
| 58 | - | ||
| 59 | - public void setLat(float lat) { | ||
| 60 | - this.lat = lat; | ||
| 61 | - } | ||
| 62 | - | ||
| 63 | - public float getSpeed() { | ||
| 64 | - return speed; | ||
| 65 | - } | ||
| 66 | - | ||
| 67 | - public void setSpeed(float speed) { | ||
| 68 | - this.speed = speed; | ||
| 69 | - } | ||
| 70 | - | ||
| 71 | - public long getTimestamp() { | ||
| 72 | - return timestamp; | ||
| 73 | - } | ||
| 74 | - | ||
| 75 | - public void setTimestamp(long timestamp) { | ||
| 76 | - this.timestamp = timestamp; | ||
| 77 | - } | ||
| 78 | -} | 1 | +package com.bsth.service.gps.entity; |
| 2 | + | ||
| 3 | +/** | ||
| 4 | + * 超速异常 -ms数据库格式 | ||
| 5 | + * Created by panzhao on 2017/4/7. | ||
| 6 | + */ | ||
| 7 | +public class GpsSpeed { | ||
| 8 | + | ||
| 9 | + private String vehicle; | ||
| 10 | + | ||
| 11 | + private String line; | ||
| 12 | + | ||
| 13 | + private int up_down; | ||
| 14 | + | ||
| 15 | + private float lon; | ||
| 16 | + | ||
| 17 | + private float lat; | ||
| 18 | + | ||
| 19 | + private float speed; | ||
| 20 | + | ||
| 21 | + private long timestamp; | ||
| 22 | + | ||
| 23 | + public String getVehicle() { | ||
| 24 | + return vehicle; | ||
| 25 | + } | ||
| 26 | + | ||
| 27 | + public void setVehicle(String vehicle) { | ||
| 28 | + this.vehicle = vehicle; | ||
| 29 | + } | ||
| 30 | + | ||
| 31 | + public String getLine() { | ||
| 32 | + return line; | ||
| 33 | + } | ||
| 34 | + | ||
| 35 | + public void setLine(String line) { | ||
| 36 | + this.line = line; | ||
| 37 | + } | ||
| 38 | + | ||
| 39 | + public int getUp_down() { | ||
| 40 | + return up_down; | ||
| 41 | + } | ||
| 42 | + | ||
| 43 | + public void setUp_down(int up_down) { | ||
| 44 | + this.up_down = up_down; | ||
| 45 | + } | ||
| 46 | + | ||
| 47 | + public float getLon() { | ||
| 48 | + return lon; | ||
| 49 | + } | ||
| 50 | + | ||
| 51 | + public void setLon(float lon) { | ||
| 52 | + this.lon = lon; | ||
| 53 | + } | ||
| 54 | + | ||
| 55 | + public float getLat() { | ||
| 56 | + return lat; | ||
| 57 | + } | ||
| 58 | + | ||
| 59 | + public void setLat(float lat) { | ||
| 60 | + this.lat = lat; | ||
| 61 | + } | ||
| 62 | + | ||
| 63 | + public float getSpeed() { | ||
| 64 | + return speed; | ||
| 65 | + } | ||
| 66 | + | ||
| 67 | + public void setSpeed(float speed) { | ||
| 68 | + this.speed = speed; | ||
| 69 | + } | ||
| 70 | + | ||
| 71 | + public long getTimestamp() { | ||
| 72 | + return timestamp; | ||
| 73 | + } | ||
| 74 | + | ||
| 75 | + public void setTimestamp(long timestamp) { | ||
| 76 | + this.timestamp = timestamp; | ||
| 77 | + } | ||
| 78 | +} |
src/main/java/com/bsth/service/gps/entity/GpsSpeed_DTO.java
| 1 | -package com.bsth.service.gps.entity; | ||
| 2 | - | ||
| 3 | -import com.alibaba.fastjson.JSON; | ||
| 4 | -import com.alibaba.fastjson.JSONObject; | ||
| 5 | -import com.bsth.data.BasicData; | ||
| 6 | - | ||
| 7 | -import java.util.*; | ||
| 8 | - | ||
| 9 | -/** | ||
| 10 | - * 超速异常 dto | ||
| 11 | - * Created by panzhao on 2017/4/7. | ||
| 12 | - */ | ||
| 13 | -public class GpsSpeed_DTO { | ||
| 14 | - | ||
| 15 | - public static List<GpsSpeed_DTO> create(List<Map<String, Object>> mapList){ | ||
| 16 | - //默认都是一辆车的数据 | ||
| 17 | - List<GpsSpeed> list = JSONObject.parseArray(JSON.toJSONString(mapList), GpsSpeed.class); | ||
| 18 | - GpsSpeed gs; | ||
| 19 | - //排序 | ||
| 20 | - Collections.sort(list, new Comparator<GpsSpeed>() { | ||
| 21 | - @Override | ||
| 22 | - public int compare(GpsSpeed o1, GpsSpeed o2) { | ||
| 23 | - return (int) (o1.getTimestamp() - o2.getTimestamp()); | ||
| 24 | - } | ||
| 25 | - }); | ||
| 26 | - | ||
| 27 | - int space = 1000 * 60; | ||
| 28 | - int size = list.size(); | ||
| 29 | - | ||
| 30 | - List<GpsSpeed_DTO> rsList = new ArrayList<>(); | ||
| 31 | - GpsSpeed_DTO dto = null; | ||
| 32 | - | ||
| 33 | - for(int i = 0; i < size; i++){ | ||
| 34 | - gs = list.get(i); | ||
| 35 | - if(dto == null){ | ||
| 36 | - dto = new GpsSpeed_DTO(); | ||
| 37 | - dto.setDeviceId(gs.getVehicle()); | ||
| 38 | - dto.setNbbm(BasicData.deviceId2NbbmMap.get(gs.getVehicle())); | ||
| 39 | - dto.setSt(gs.getTimestamp()); | ||
| 40 | - dto.setSpeed(gs.getSpeed()); | ||
| 41 | - } | ||
| 42 | - else{ | ||
| 43 | - //超速结束 | ||
| 44 | - if((i < size - 1 && list.get(i + 1).getTimestamp() - gs.getTimestamp() > space)){ | ||
| 45 | - dto.setEt(gs.getTimestamp()); | ||
| 46 | - rsList.add(dto); | ||
| 47 | - dto = null; | ||
| 48 | - continue; | ||
| 49 | - } | ||
| 50 | - | ||
| 51 | - //记录最大速度 | ||
| 52 | - if(gs.getSpeed() > dto.getSpeed()) | ||
| 53 | - dto.setSpeed(gs.getSpeed()); | ||
| 54 | - | ||
| 55 | - if(i == size - 1) | ||
| 56 | - rsList.add(dto); | ||
| 57 | - } | ||
| 58 | - } | ||
| 59 | - return rsList; | ||
| 60 | - } | ||
| 61 | - | ||
| 62 | - /** | ||
| 63 | - * 设备号 | ||
| 64 | - */ | ||
| 65 | - private String deviceId; | ||
| 66 | - | ||
| 67 | - /** | ||
| 68 | - * 自编号 | ||
| 69 | - */ | ||
| 70 | - private String nbbm; | ||
| 71 | - | ||
| 72 | - /** | ||
| 73 | - * 超速开始时间 | ||
| 74 | - */ | ||
| 75 | - private long st; | ||
| 76 | - | ||
| 77 | - /** | ||
| 78 | - * 超速结束时间 | ||
| 79 | - */ | ||
| 80 | - private long et; | ||
| 81 | - | ||
| 82 | - /** | ||
| 83 | - * 速度 | ||
| 84 | - */ | ||
| 85 | - private float speed; | ||
| 86 | - | ||
| 87 | - private String abnormalType = "speed"; | ||
| 88 | - | ||
| 89 | - public String getDeviceId() { | ||
| 90 | - return deviceId; | ||
| 91 | - } | ||
| 92 | - | ||
| 93 | - public void setDeviceId(String deviceId) { | ||
| 94 | - this.deviceId = deviceId; | ||
| 95 | - } | ||
| 96 | - | ||
| 97 | - public String getNbbm() { | ||
| 98 | - return nbbm; | ||
| 99 | - } | ||
| 100 | - | ||
| 101 | - public void setNbbm(String nbbm) { | ||
| 102 | - this.nbbm = nbbm; | ||
| 103 | - } | ||
| 104 | - | ||
| 105 | - public long getSt() { | ||
| 106 | - return st; | ||
| 107 | - } | ||
| 108 | - | ||
| 109 | - public void setSt(long st) { | ||
| 110 | - this.st = st; | ||
| 111 | - } | ||
| 112 | - | ||
| 113 | - public long getEt() { | ||
| 114 | - return et; | ||
| 115 | - } | ||
| 116 | - | ||
| 117 | - public void setEt(long et) { | ||
| 118 | - this.et = et; | ||
| 119 | - } | ||
| 120 | - | ||
| 121 | - public float getSpeed() { | ||
| 122 | - return speed; | ||
| 123 | - } | ||
| 124 | - | ||
| 125 | - public void setSpeed(float speed) { | ||
| 126 | - this.speed = speed; | ||
| 127 | - } | ||
| 128 | - | ||
| 129 | - public String getAbnormalType() { | ||
| 130 | - return abnormalType; | ||
| 131 | - } | ||
| 132 | - | ||
| 133 | - public void setAbnormalType(String abnormalType) { | ||
| 134 | - this.abnormalType = abnormalType; | ||
| 135 | - } | ||
| 136 | -} | 1 | +package com.bsth.service.gps.entity; |
| 2 | + | ||
| 3 | +import com.alibaba.fastjson.JSON; | ||
| 4 | +import com.alibaba.fastjson.JSONObject; | ||
| 5 | +import com.bsth.data.BasicData; | ||
| 6 | + | ||
| 7 | +import java.util.*; | ||
| 8 | + | ||
| 9 | +/** | ||
| 10 | + * 超速异常 dto | ||
| 11 | + * Created by panzhao on 2017/4/7. | ||
| 12 | + */ | ||
| 13 | +public class GpsSpeed_DTO { | ||
| 14 | + | ||
| 15 | + public static List<GpsSpeed_DTO> create(List<Map<String, Object>> mapList){ | ||
| 16 | + //默认都是一辆车的数据 | ||
| 17 | + List<GpsSpeed> list = JSONObject.parseArray(JSON.toJSONString(mapList), GpsSpeed.class); | ||
| 18 | + GpsSpeed gs; | ||
| 19 | + //排序 | ||
| 20 | + Collections.sort(list, new Comparator<GpsSpeed>() { | ||
| 21 | + @Override | ||
| 22 | + public int compare(GpsSpeed o1, GpsSpeed o2) { | ||
| 23 | + return (int) (o1.getTimestamp() - o2.getTimestamp()); | ||
| 24 | + } | ||
| 25 | + }); | ||
| 26 | + | ||
| 27 | + int space = 1000 * 60; | ||
| 28 | + int size = list.size(); | ||
| 29 | + | ||
| 30 | + List<GpsSpeed_DTO> rsList = new ArrayList<>(); | ||
| 31 | + GpsSpeed_DTO dto = null; | ||
| 32 | + | ||
| 33 | + for(int i = 0; i < size; i++){ | ||
| 34 | + gs = list.get(i); | ||
| 35 | + if(dto == null){ | ||
| 36 | + dto = new GpsSpeed_DTO(); | ||
| 37 | + dto.setDeviceId(gs.getVehicle()); | ||
| 38 | + dto.setNbbm(BasicData.deviceId2NbbmMap.get(gs.getVehicle())); | ||
| 39 | + dto.setSt(gs.getTimestamp()); | ||
| 40 | + dto.setSpeed(gs.getSpeed()); | ||
| 41 | + } | ||
| 42 | + else{ | ||
| 43 | + //超速结束 | ||
| 44 | + if((i < size - 1 && list.get(i + 1).getTimestamp() - gs.getTimestamp() > space)){ | ||
| 45 | + dto.setEt(gs.getTimestamp()); | ||
| 46 | + rsList.add(dto); | ||
| 47 | + dto = null; | ||
| 48 | + continue; | ||
| 49 | + } | ||
| 50 | + | ||
| 51 | + //记录最大速度 | ||
| 52 | + if(gs.getSpeed() > dto.getSpeed()) | ||
| 53 | + dto.setSpeed(gs.getSpeed()); | ||
| 54 | + | ||
| 55 | + if(i == size - 1) | ||
| 56 | + rsList.add(dto); | ||
| 57 | + } | ||
| 58 | + } | ||
| 59 | + return rsList; | ||
| 60 | + } | ||
| 61 | + | ||
| 62 | + /** | ||
| 63 | + * 设备号 | ||
| 64 | + */ | ||
| 65 | + private String deviceId; | ||
| 66 | + | ||
| 67 | + /** | ||
| 68 | + * 自编号 | ||
| 69 | + */ | ||
| 70 | + private String nbbm; | ||
| 71 | + | ||
| 72 | + /** | ||
| 73 | + * 超速开始时间 | ||
| 74 | + */ | ||
| 75 | + private long st; | ||
| 76 | + | ||
| 77 | + /** | ||
| 78 | + * 超速结束时间 | ||
| 79 | + */ | ||
| 80 | + private long et; | ||
| 81 | + | ||
| 82 | + /** | ||
| 83 | + * 速度 | ||
| 84 | + */ | ||
| 85 | + private float speed; | ||
| 86 | + | ||
| 87 | + private String abnormalType = "speed"; | ||
| 88 | + | ||
| 89 | + public String getDeviceId() { | ||
| 90 | + return deviceId; | ||
| 91 | + } | ||
| 92 | + | ||
| 93 | + public void setDeviceId(String deviceId) { | ||
| 94 | + this.deviceId = deviceId; | ||
| 95 | + } | ||
| 96 | + | ||
| 97 | + public String getNbbm() { | ||
| 98 | + return nbbm; | ||
| 99 | + } | ||
| 100 | + | ||
| 101 | + public void setNbbm(String nbbm) { | ||
| 102 | + this.nbbm = nbbm; | ||
| 103 | + } | ||
| 104 | + | ||
| 105 | + public long getSt() { | ||
| 106 | + return st; | ||
| 107 | + } | ||
| 108 | + | ||
| 109 | + public void setSt(long st) { | ||
| 110 | + this.st = st; | ||
| 111 | + } | ||
| 112 | + | ||
| 113 | + public long getEt() { | ||
| 114 | + return et; | ||
| 115 | + } | ||
| 116 | + | ||
| 117 | + public void setEt(long et) { | ||
| 118 | + this.et = et; | ||
| 119 | + } | ||
| 120 | + | ||
| 121 | + public float getSpeed() { | ||
| 122 | + return speed; | ||
| 123 | + } | ||
| 124 | + | ||
| 125 | + public void setSpeed(float speed) { | ||
| 126 | + this.speed = speed; | ||
| 127 | + } | ||
| 128 | + | ||
| 129 | + public String getAbnormalType() { | ||
| 130 | + return abnormalType; | ||
| 131 | + } | ||
| 132 | + | ||
| 133 | + public void setAbnormalType(String abnormalType) { | ||
| 134 | + this.abnormalType = abnormalType; | ||
| 135 | + } | ||
| 136 | +} |
src/main/java/com/bsth/service/oil/impl/YlbServiceImpl.java
| @@ -135,9 +135,11 @@ public class YlbServiceImpl extends BaseServiceImpl<Ylb,Integer> implements YlbS | @@ -135,9 +135,11 @@ public class YlbServiceImpl extends BaseServiceImpl<Ylb,Integer> implements YlbS | ||
| 135 | Ylb ylb=ylListBe.get(i); | 135 | Ylb ylb=ylListBe.get(i); |
| 136 | if(map.get("clZbh").toString().equals(ylb.getNbbm())){ | 136 | if(map.get("clZbh").toString().equals(ylb.getNbbm())){ |
| 137 | if(ylb.getJzyl()!=null){ | 137 | if(ylb.getJzyl()!=null){ |
| 138 | - t.setCzyl(ylb.getJzyl()); | ||
| 139 | - fage=false; | ||
| 140 | - break; | 138 | + if(ylb.getJzyl()>0){ |
| 139 | + t.setCzyl(ylb.getJzyl()); | ||
| 140 | + fage=false; | ||
| 141 | + break; | ||
| 142 | + } | ||
| 141 | } | 143 | } |
| 142 | 144 | ||
| 143 | } | 145 | } |
| @@ -270,7 +272,7 @@ public class YlbServiceImpl extends BaseServiceImpl<Ylb,Integer> implements YlbS | @@ -270,7 +272,7 @@ public class YlbServiceImpl extends BaseServiceImpl<Ylb,Integer> implements YlbS | ||
| 270 | for (int i = 0; i < ylListBe.size(); i++) { | 272 | for (int i = 0; i < ylListBe.size(); i++) { |
| 271 | Ylb ylb = ylListBe.get(i); | 273 | Ylb ylb = ylListBe.get(i); |
| 272 | if (map.get("clZbh").toString().equals(ylb.getNbbm())) { | 274 | if (map.get("clZbh").toString().equals(ylb.getNbbm())) { |
| 273 | - if(ylb.getJzyl()>=0){ | 275 | + if(ylb.getJzyl()>0){ |
| 274 | t.setCzyl(ylb.getJzyl()); | 276 | t.setCzyl(ylb.getJzyl()); |
| 275 | fage = false; | 277 | fage = false; |
| 276 | break; | 278 | break; |
| @@ -282,16 +284,18 @@ public class YlbServiceImpl extends BaseServiceImpl<Ylb,Integer> implements YlbS | @@ -282,16 +284,18 @@ public class YlbServiceImpl extends BaseServiceImpl<Ylb,Integer> implements YlbS | ||
| 282 | for (int y = 0; y < clyList.size(); y++) { | 284 | for (int y = 0; y < clyList.size(); y++) { |
| 283 | Cyl cyl = clyList.get(y); | 285 | Cyl cyl = clyList.get(y); |
| 284 | if (map.get("clZbh").toString().equals(cyl.getNbbm())) { | 286 | if (map.get("clZbh").toString().equals(cyl.getNbbm())) { |
| 285 | - if(cyl.getCyl()>=0){ | ||
| 286 | - t.setCzyl(cyl.getCyl()); | ||
| 287 | - fage = false; | ||
| 288 | - break; | ||
| 289 | - }else { | ||
| 290 | - if(cyl.getCxrl()!=null){ | ||
| 291 | - if(cyl.getCxrl()>0){ | ||
| 292 | - t.setCzyl(cyl.getCxrl()); | ||
| 293 | - fage = false; | ||
| 294 | - break; | 287 | + if(cyl!=null){ |
| 288 | + if(cyl.getCyl()>=0){ | ||
| 289 | + t.setCzyl(cyl.getCyl()); | ||
| 290 | + fage = false; | ||
| 291 | + break; | ||
| 292 | + }else { | ||
| 293 | + if(cyl.getCxrl()!=null){ | ||
| 294 | + if(cyl.getCxrl()>0){ | ||
| 295 | + t.setCzyl(cyl.getCxrl()); | ||
| 296 | + fage = false; | ||
| 297 | + break; | ||
| 298 | + } | ||
| 295 | } | 299 | } |
| 296 | } | 300 | } |
| 297 | } | 301 | } |
src/main/resources/static/pages/base/timesmodel/countadd.html
0 → 100644
| 1 | +<!-- 统计数据 --> | ||
| 2 | +<div class="modal fade" id="countadd_mobal" tabindex="-1" role="basic" aria-hidden="true"> | ||
| 3 | + <div class="modal-dialog" style="margin-left: 400px;"> | ||
| 4 | + <div class="modal-content" style="width: 700px;"> | ||
| 5 | + <div class="modal-header"> | ||
| 6 | + <button type="button" class="close" data-dismiss="modal" aria-hidden="true"></button> | ||
| 7 | + <h4 class="modal-title">统计数据 </h4> | ||
| 8 | + </div> | ||
| 9 | + <div class="modal-body"> | ||
| 10 | + <div class="portlet-body"> | ||
| 11 | + <div class="table-container" style="margin-top: 10px"> | ||
| 12 | + <table class="table table-striped table-bordered table-hover table-checkable" id="datatable_countadd"> | ||
| 13 | + <thead> | ||
| 14 | + <tr role="row" class="heading"> | ||
| 15 | + <th width="1%">序号</th> | ||
| 16 | + <th width="45%">统计项目</th> | ||
| 17 | + <th width="15%">统计数值</th> | ||
| 18 | + </tr> | ||
| 19 | + </thead> | ||
| 20 | + <tbody></tbody> | ||
| 21 | + </table> | ||
| 22 | + </div> | ||
| 23 | + </div> | ||
| 24 | + </div> | ||
| 25 | + <div class="modal-footer"> | ||
| 26 | + <button type="button" class="btn default" data-dismiss="modal">关闭</button> | ||
| 27 | + </div> | ||
| 28 | + </div> | ||
| 29 | + </div> | ||
| 30 | +</div> | ||
| 31 | +<script type="text/html" id="countAdd_temp"> | ||
| 32 | +{{each list as obj i }} | ||
| 33 | + <tr role="row" class="filter"> | ||
| 34 | + <td>{{i+1}}</td> | ||
| 35 | + <td> | ||
| 36 | + {{obj.name}} | ||
| 37 | + </td> | ||
| 38 | + <td style="vertical-align:middle; text-align:center;"> | ||
| 39 | + {{if obj.name == '综合评估'}} | ||
| 40 | + <div id="star"></div> | ||
| 41 | + {{else}} | ||
| 42 | + {{obj.value}} | ||
| 43 | + {{/if}} | ||
| 44 | + </td> | ||
| 45 | + </tr> | ||
| 46 | +{{/each}} | ||
| 47 | +{{if list.length == 0}} | ||
| 48 | + <tr> | ||
| 49 | + <td colspan=3><h6 class="muted">没有找到相关数据</h6></td> | ||
| 50 | + </tr> | ||
| 51 | +{{/if}} | ||
| 52 | +</script> | ||
| 53 | +<script type="text/javascript"> | ||
| 54 | +$('#countadd_mobal').on('countAddMobal.show', function(e,countDate){ | ||
| 55 | + // 加载延迟200毫秒显示mobal | ||
| 56 | + setTimeout(function(){$('#countadd_mobal').modal({show : true,backdrop: 'static', keyboard: false});},200); | ||
| 57 | + // 当模态框对用户可见时触发(将等待 CSS 过渡效果完成)。 | ||
| 58 | + $('#countadd_mobal').on('show.bs.modal', function () { | ||
| 59 | + // 把数据填充到模版中 | ||
| 60 | + var tbodyHtml = template('countAdd_temp',{list:countDate}); | ||
| 61 | + // 把渲染好的模版html文本追加到表格中 | ||
| 62 | + $('#datatable_countadd tbody').html(tbodyHtml); | ||
| 63 | + $('#star').raty({ readOnly: true,score: 4.5 }); | ||
| 64 | + }); | ||
| 65 | +}); | ||
| 66 | +</script> | ||
| 0 | \ No newline at end of file | 67 | \ No newline at end of file |
src/main/resources/static/pages/base/timesmodel/gantt.html
| @@ -19,19 +19,15 @@ | @@ -19,19 +19,15 @@ | ||
| 19 | 19 | ||
| 20 | <!-- row 组件START --> | 20 | <!-- row 组件START --> |
| 21 | <div class="row"> | 21 | <div class="row"> |
| 22 | - | ||
| 23 | <!-- col-md-12 组件START --> | 22 | <!-- col-md-12 组件START --> |
| 24 | <div class="col-md-12"> | 23 | <div class="col-md-12"> |
| 25 | - | ||
| 26 | <!-- portlet 组件START --> | 24 | <!-- portlet 组件START --> |
| 27 | <div class="portlet light porttlet-fit bordered"> | 25 | <div class="portlet light porttlet-fit bordered"> |
| 28 | - | ||
| 29 | <!-- portlet-title组件START --> | 26 | <!-- portlet-title组件START --> |
| 30 | <div class="portlet-title"> | 27 | <div class="portlet-title"> |
| 31 | - | ||
| 32 | <!-- caption 组件START --> | 28 | <!-- caption 组件START --> |
| 33 | <div class="caption"> | 29 | <div class="caption"> |
| 34 | - <i class="fa fa-database font-dark"></i> | 30 | + <i class="fa fa-bar-chart font-dark"></i> |
| 35 | <span class="caption-subject font-dark sbold uppercase">时刻表明细模型</span> | 31 | <span class="caption-subject font-dark sbold uppercase">时刻表明细模型</span> |
| 36 | </div> | 32 | </div> |
| 37 | <!-- caption 组件END --> | 33 | <!-- caption 组件END --> |
| @@ -40,6 +36,9 @@ | @@ -40,6 +36,9 @@ | ||
| 40 | </div> | 36 | </div> |
| 41 | <!-- actions 组件START --> | 37 | <!-- actions 组件START --> |
| 42 | <div class="actions"> | 38 | <div class="actions"> |
| 39 | + <div class="btn-group btn-group-devided countbtn" data-toggle="buttons"> | ||
| 40 | + <a class="btn btn-circle blue countAdd" href="javascript:;" data-pjax><i class="fa fa-database"></i> 统计数据</a> | ||
| 41 | + </div> | ||
| 43 | <div class="btn-group btn-group-devided checkbtn" data-toggle="buttons"> | 42 | <div class="btn-group btn-group-devided checkbtn" data-toggle="buttons"> |
| 44 | <a class="btn btn-circle blue checkAdd" href="javascript:;" data-pjax><i class="fa fa-check"></i> 保存数据</a> | 43 | <a class="btn btn-circle blue checkAdd" href="javascript:;" data-pjax><i class="fa fa-check"></i> 保存数据</a> |
| 45 | </div> | 44 | </div> |
| @@ -107,6 +106,7 @@ | @@ -107,6 +106,7 @@ | ||
| 107 | <!-- col-md-12 组件END --> | 106 | <!-- col-md-12 组件END --> |
| 108 | </div> | 107 | </div> |
| 109 | <!-- row 组件END --> | 108 | <!-- row 组件END --> |
| 109 | +<script src="/pages/base/timesmodel/js/raty/lib/jquery.raty.js"></script> | ||
| 110 | <script src="/pages/base/timesmodel/js/ContextJS/js/context.js"></script> | 110 | <script src="/pages/base/timesmodel/js/ContextJS/js/context.js"></script> |
| 111 | <script src="/pages/base/timesmodel/js/base-fun.js"></script> | 111 | <script src="/pages/base/timesmodel/js/base-fun.js"></script> |
| 112 | <script src="/pages/base/timesmodel/js/d3.relationshipgraph.js"></script> | 112 | <script src="/pages/base/timesmodel/js/d3.relationshipgraph.js"></script> |
src/main/resources/static/pages/base/timesmodel/js/d3.relationshipgraph.js
| @@ -201,7 +201,7 @@ $('.reladplus').on('click',function() { | @@ -201,7 +201,7 @@ $('.reladplus').on('click',function() { | ||
| 201 | /************************************************************************************************************************************************/ | 201 | /************************************************************************************************************************************************/ |
| 202 | 202 | ||
| 203 | /** | 203 | /** |
| 204 | - * @description : (TODO) 均匀发车事件. | 204 | + * @description : (TODO) 监听均匀发车事件. |
| 205 | * | 205 | * |
| 206 | * @stutas : OK. | 206 | * @stutas : OK. |
| 207 | * | 207 | * |
| @@ -229,8 +229,9 @@ $('.updownread').on('click',function() { | @@ -229,8 +229,9 @@ $('.updownread').on('click',function() { | ||
| 229 | /************************************************************************************************************************************************/ | 229 | /************************************************************************************************************************************************/ |
| 230 | 230 | ||
| 231 | /** | 231 | /** |
| 232 | - * 调整班次点击事件 | ||
| 233 | - * | 232 | + * @description : (TODO) 调整班次点击事件 |
| 233 | + * | ||
| 234 | + * @status OK. | ||
| 234 | ************************************************************************************************************************************************/ | 235 | ************************************************************************************************************************************************/ |
| 235 | $('.aboutread').on('click',function() { | 236 | $('.aboutread').on('click',function() { |
| 236 | // 判断选择框是否存在. | 237 | // 判断选择框是否存在. |
| @@ -255,7 +256,7 @@ $('.aboutread').on('click',function() { | @@ -255,7 +256,7 @@ $('.aboutread').on('click',function() { | ||
| 255 | /************************************************************************************************************************************************/ | 256 | /************************************************************************************************************************************************/ |
| 256 | 257 | ||
| 257 | /** | 258 | /** |
| 258 | - * @description : (TODO) 保存数据. | 259 | + * @description : (TODO) 监听保存数据事件. |
| 259 | * | 260 | * |
| 260 | * @status OK. | 261 | * @status OK. |
| 261 | ************************************************************************************************************************************************/ | 262 | ************************************************************************************************************************************************/ |
| @@ -282,6 +283,112 @@ $('.aboutread').on('click',function() { | @@ -282,6 +283,112 @@ $('.aboutread').on('click',function() { | ||
| 282 | /************************************************************************************************************************************************/ | 283 | /************************************************************************************************************************************************/ |
| 283 | 284 | ||
| 284 | /** | 285 | /** |
| 286 | + * @description : (TODO) 监听统计数据事件. | ||
| 287 | + * | ||
| 288 | + * @status OK. | ||
| 289 | + ************************************************************************************************************************************************/ | ||
| 290 | + $('.countAdd').on('click',function() { | ||
| 291 | + var list = $_GlobalGraph.getDataArray(); | ||
| 292 | + var countBc = 0,// 总班次 | ||
| 293 | + serviceBc = 0,// 营运班次 | ||
| 294 | + jcbc = 0, // 进场总班次. | ||
| 295 | + ccbc = 0, // 出场总班次. | ||
| 296 | + cfbc = 0,// 吃饭总班次. | ||
| 297 | + zwlbbc = 0,// 早晚例保总班次. | ||
| 298 | + countGs = 0.0,// 总工时 | ||
| 299 | + servicesj = 0,// 营运班次总时间 | ||
| 300 | + jcsj = 0.0,// 进场总时间. | ||
| 301 | + ccsj = 0.0 // 出场总时间. | ||
| 302 | + cfsj = 0.0, // 吃饭总时间. | ||
| 303 | + zwlbsj = 0.0, // 早晚例保总时间. | ||
| 304 | + ksBc = 0,// 空驶班次 | ||
| 305 | + serviceLc = 0.0 ,// 营运里程 | ||
| 306 | + ksLc = 0.0 ,// 空驶里程 | ||
| 307 | + avgTzjx = 0.0,// 平均停站间隙 | ||
| 308 | + gfServiceBc = 0,// 高峰营运班次 | ||
| 309 | + dgServiceBc = 0,// 低谷营运班次 | ||
| 310 | + gfAvgTzjx = 0.0,// 高峰平均停站间隙 | ||
| 311 | + dgAvgTzjx = 0.0;// 低谷平均停站间隙 | ||
| 312 | + for(var i = 0;i<list.length;i++) { | ||
| 313 | + if(list[i].bcsj>0) { | ||
| 314 | + countBc = countBc + 1; | ||
| 315 | + countGs = countGs + list[i].STOPTIME + list[i].bcsj; | ||
| 316 | + var nowDate = BaseFun.getDateTime(list[i].fcsj); | ||
| 317 | + if((BaseFun.isgfsjd($_GlobalGraph.configuration.dataMap.zgfsjd[0].st,$_GlobalGraph.configuration.dataMap.zgfsjd[0].ed,nowDate) || | ||
| 318 | + BaseFun.isgfsjd($_GlobalGraph.configuration.dataMap.wgfsjd[0].st,$_GlobalGraph.configuration.dataMap.wgfsjd[0].ed,nowDate)) && | ||
| 319 | + (list[i].bcType == $_GlobalGraph.configuration.dataMap.bcTypeArr.normal || | ||
| 320 | + list[i].bcType == $_GlobalGraph.configuration.dataMap.bcTypeArr.region || | ||
| 321 | + list[i].bcType == $_GlobalGraph.configuration.dataMap.bcTypeArr.major)) { | ||
| 322 | + gfServiceBc = gfServiceBc + 1; | ||
| 323 | + gfAvgTzjx = gfAvgTzjx + list[i].STOPTIME; | ||
| 324 | + } else if((!BaseFun.isgfsjd($_GlobalGraph.configuration.dataMap.zgfsjd[0].st,$_GlobalGraph.configuration.dataMap.zgfsjd[0].ed,nowDate) || | ||
| 325 | + !BaseFun.isgfsjd($_GlobalGraph.configuration.dataMap.wgfsjd[0].st,$_GlobalGraph.configuration.dataMap.wgfsjd[0].ed,nowDate)) && | ||
| 326 | + (list[i].bcType == $_GlobalGraph.configuration.dataMap.bcTypeArr.normal || | ||
| 327 | + list[i].bcType == $_GlobalGraph.configuration.dataMap.bcTypeArr.region || | ||
| 328 | + list[i].bcType == $_GlobalGraph.configuration.dataMap.bcTypeArr.major)){ | ||
| 329 | + dgServiceBc = dgServiceBc + 1; | ||
| 330 | + dgAvgTzjx = dgAvgTzjx + list[i].STOPTIME; | ||
| 331 | + } | ||
| 332 | + if(list[i].bcType == $_GlobalGraph.configuration.dataMap.bcTypeArr.normal || | ||
| 333 | + list[i].bcType == $_GlobalGraph.configuration.dataMap.bcTypeArr.region || | ||
| 334 | + list[i].bcType == $_GlobalGraph.configuration.dataMap.bcTypeArr.major) { | ||
| 335 | + serviceBc = serviceBc + 1; | ||
| 336 | + serviceLc = serviceLc + list[i].jhlc; | ||
| 337 | + servicesj = servicesj + list[i].bcsj; | ||
| 338 | + avgTzjx = avgTzjx + list[i].STOPTIME; | ||
| 339 | + }else if(list[i].bcType == $_GlobalGraph.configuration.dataMap.bcTypeArr.venting) { | ||
| 340 | + ksBc = ksBc +1; | ||
| 341 | + ksLc = ksLc + list[i].jhlc; | ||
| 342 | + }else if(list[i].bcType == $_GlobalGraph.configuration.dataMap.bcTypeArr.in_) { | ||
| 343 | + jcbc = jcbc +1; | ||
| 344 | + jcsj = jcsj + list[i].bcsj; | ||
| 345 | + }else if(list[i].bcType == $_GlobalGraph.configuration.dataMap.bcTypeArr.out) { | ||
| 346 | + ccbc = ccbc +1; | ||
| 347 | + ccsj = ccsj + list[i].bcsj; | ||
| 348 | + }else if(list[i].bcType == $_GlobalGraph.configuration.dataMap.bcTypeArr.cf) { | ||
| 349 | + cfbc = cfbc +1; | ||
| 350 | + cfsj = cfsj + list[i].bcsj; | ||
| 351 | + }else if(list[i].bcType == $_GlobalGraph.configuration.dataMap.bcTypeArr.bd || | ||
| 352 | + list[i].bcType == $_GlobalGraph.configuration.dataMap.bcTypeArr.lc ) { | ||
| 353 | + zwlbbc = zwlbbc +1; | ||
| 354 | + zwlbsj = zwlbsj + list[i].bcsj; | ||
| 355 | + } | ||
| 356 | + } | ||
| 357 | + } | ||
| 358 | + dgAvgTzjx = dgAvgTzjx/dgServiceBc; | ||
| 359 | + gfAvgTzjx = gfAvgTzjx/gfServiceBc; | ||
| 360 | + avgTzjx = avgTzjx/dgServiceBc; | ||
| 361 | + var countDate = [{'name':'总班次(包括进出场、吃饭时间、早晚例保、营运且班次时间大于零的班次)','value':countBc}, | ||
| 362 | + {'name':'进场总班次(包括进场且班次时间大于零的班次)','value':jcbc}, | ||
| 363 | + {'name':'出场总班次(包括进场且班次时间大于零的班次)','value':ccbc}, | ||
| 364 | + {'name':'吃饭总班次(包括吃饭且班次时间大于零的班次)','value':cfbc}, | ||
| 365 | + {'name':'早晚例保总班次(包括早晚例保且时间大于零的班次)','value':zwlbbc}, | ||
| 366 | + {'name':'营运总班次(包括正常、区间、放大站且班次时间大于零班次)','value':serviceBc}, | ||
| 367 | + {'name':'进场总时间(包括进场班次且班次时间大于零)','value':parseFloat((jcsj/60).toFixed(2)) + ' 小时'}, | ||
| 368 | + {'name':'出场总时间(包括进场班次且班次时间大于零)','value':parseFloat((ccsj/60).toFixed(2)) + ' 小时'}, | ||
| 369 | + {'name':'吃饭总时间(包括吃饭班次且班次时间大于零)','value':parseFloat((cfsj/60).toFixed(2)) + ' 小时'}, | ||
| 370 | + {'name':'早晚例保总时间(包括早晚例保班次且时间大于零的)','value':parseFloat((zwlbsj/60).toFixed(2)) + ' 小时'}, | ||
| 371 | + {'name':'营运班次总时间(包括正常、区间、放大站且班次时间大于零)','value':parseFloat((servicesj/60).toFixed(2)) + ' 小时'}, | ||
| 372 | + {'name':'总工时(包括进出场、吃饭时间、早晚例保、营运班次时间)','value': parseFloat((countGs/60).toFixed(2)) + ' 小时'}, | ||
| 373 | + {'name':'空驶班次(包括直放班次)','value':ksBc}, | ||
| 374 | + {'name':'营运里程(包括正常、区间、放大站里程)','value':serviceLc + ' 公里'}, | ||
| 375 | + {'name':'空驶里程(包括直放里程)','value':ksLc + ' 公里'}, | ||
| 376 | + {'name':'平均停站时间(营运班次停站时间总和/营运总班次)','value':parseInt(avgTzjx) + ' 分钟' }, | ||
| 377 | + {'name':'高峰营运班次(包括早晚高峰时段的正常、区间、放大站班次)','value':gfServiceBc}, | ||
| 378 | + {'name':'低谷营运班次(包括低谷时段的正常、区间、放大站班次)','value':dgServiceBc}, | ||
| 379 | + {'name':'高峰平均停站间隙(高峰营运班次停站时间总和/高峰营运班次总和)','value':parseInt(gfAvgTzjx) + ' 分钟'}, | ||
| 380 | + {'name':'低谷平均停站间隙(低谷营运班次停站时间总和/低谷营运班次总和)','value':parseInt(dgAvgTzjx) + ' 分钟'}, | ||
| 381 | + {'name':'综合评估','value':3}]; | ||
| 382 | + // 弹出层mobal页面 | ||
| 383 | + $.get('/pages/base/timesmodel/countadd.html', function(m){ | ||
| 384 | + $(pjaxContainer).append(m); | ||
| 385 | + // 规定被选元素要触发的事件。可以使自定义事件(使用 bind() 函数来附加),或者任何标准事件。 | ||
| 386 | + $('#countadd_mobal').trigger('countAddMobal.show',[countDate]); | ||
| 387 | + }); | ||
| 388 | + }); | ||
| 389 | +/************************************************************************************************************************************************/ | ||
| 390 | + | ||
| 391 | +/** | ||
| 285 | * @description : (TODO)获取路牌对应的班次数(这里的班次不包括早晚例保班次、吃饭时间) | 392 | * @description : (TODO)获取路牌对应的班次数(这里的班次不包括早晚例保班次、吃饭时间) |
| 286 | * | 393 | * |
| 287 | * @params : [a1--班次数组;a2--路牌数组] | 394 | * @params : [a1--班次数组;a2--路牌数组] |
src/main/resources/static/pages/base/timesmodel/js/raty/lib/img/cancel-off.png
0 → 100644
649 Bytes
src/main/resources/static/pages/base/timesmodel/js/raty/lib/img/cancel-on.png
0 → 100644
715 Bytes
src/main/resources/static/pages/base/timesmodel/js/raty/lib/img/star-half.png
0 → 100644
667 Bytes
src/main/resources/static/pages/base/timesmodel/js/raty/lib/img/star-off.png
0 → 100644
652 Bytes
src/main/resources/static/pages/base/timesmodel/js/raty/lib/img/star-on.png
0 → 100644
631 Bytes
src/main/resources/static/pages/base/timesmodel/js/raty/lib/jquery.raty.js
0 → 100644
| 1 | +/*! | ||
| 2 | + * jQuery Raty - A Star Rating Plugin | ||
| 3 | + * ------------------------------------------------------------------ | ||
| 4 | + * | ||
| 5 | + * jQuery Raty is a plugin that generates a customizable star rating. | ||
| 6 | + * | ||
| 7 | + * Licensed under The MIT License | ||
| 8 | + * | ||
| 9 | + * @version 2.5.2 | ||
| 10 | + * @since 2010.06.11 | ||
| 11 | + * @author Washington Botelho | ||
| 12 | + * @documentation wbotelhos.com/raty | ||
| 13 | + * | ||
| 14 | + * ------------------------------------------------------------------ | ||
| 15 | + * | ||
| 16 | + * <div id="star"></div> | ||
| 17 | + * | ||
| 18 | + * $('#star').raty(); | ||
| 19 | + * | ||
| 20 | + */ | ||
| 21 | + | ||
| 22 | +;(function($) { | ||
| 23 | + | ||
| 24 | + var methods = { | ||
| 25 | + init: function(settings) { | ||
| 26 | + return this.each(function() { | ||
| 27 | + methods.destroy.call(this); | ||
| 28 | + | ||
| 29 | + this.opt = $.extend(true, {}, $.fn.raty.defaults, settings); | ||
| 30 | + | ||
| 31 | + var that = $(this), | ||
| 32 | + inits = ['number', 'readOnly', 'score', 'scoreName']; | ||
| 33 | + | ||
| 34 | + methods._callback.call(this, inits); | ||
| 35 | + | ||
| 36 | + if (this.opt.precision) { | ||
| 37 | + methods._adjustPrecision.call(this); | ||
| 38 | + } | ||
| 39 | + | ||
| 40 | + this.opt.number = methods._between(this.opt.number, 0, this.opt.numberMax) | ||
| 41 | + | ||
| 42 | + this.opt.path = this.opt.path || ''; | ||
| 43 | + | ||
| 44 | + if (this.opt.path && this.opt.path.slice(this.opt.path.length - 1, this.opt.path.length) !== '/') { | ||
| 45 | + this.opt.path += '/'; | ||
| 46 | + } | ||
| 47 | + | ||
| 48 | + this.stars = methods._createStars.call(this); | ||
| 49 | + this.score = methods._createScore.call(this); | ||
| 50 | + | ||
| 51 | + methods._apply.call(this, this.opt.score); | ||
| 52 | + | ||
| 53 | + var space = this.opt.space ? 4 : 0, | ||
| 54 | + width = this.opt.width || (this.opt.number * this.opt.size + this.opt.number * space); | ||
| 55 | + | ||
| 56 | + if (this.opt.cancel) { | ||
| 57 | + this.cancel = methods._createCancel.call(this); | ||
| 58 | + | ||
| 59 | + width += (this.opt.size + space); | ||
| 60 | + } | ||
| 61 | + | ||
| 62 | + if (this.opt.readOnly) { | ||
| 63 | + methods._lock.call(this); | ||
| 64 | + } else { | ||
| 65 | + that.css('cursor', 'pointer'); | ||
| 66 | + methods._binds.call(this); | ||
| 67 | + } | ||
| 68 | + | ||
| 69 | + if (this.opt.width !== false) { | ||
| 70 | + that.css('width', width); | ||
| 71 | + } | ||
| 72 | + | ||
| 73 | + methods._target.call(this, this.opt.score); | ||
| 74 | + | ||
| 75 | + that.data({ 'settings': this.opt, 'raty': true }); | ||
| 76 | + }); | ||
| 77 | + }, _adjustPrecision: function() { | ||
| 78 | + this.opt.targetType = 'score'; | ||
| 79 | + this.opt.half = true; | ||
| 80 | + }, _apply: function(score) { | ||
| 81 | + if (score && score > 0) { | ||
| 82 | + score = methods._between(score, 0, this.opt.number); | ||
| 83 | + this.score.val(score); | ||
| 84 | + } | ||
| 85 | + | ||
| 86 | + methods._fill.call(this, score); | ||
| 87 | + | ||
| 88 | + if (score) { | ||
| 89 | + methods._roundStars.call(this, score); | ||
| 90 | + } | ||
| 91 | + }, _between: function(value, min, max) { | ||
| 92 | + return Math.min(Math.max(parseFloat(value), min), max); | ||
| 93 | + }, _binds: function() { | ||
| 94 | + if (this.cancel) { | ||
| 95 | + methods._bindCancel.call(this); | ||
| 96 | + } | ||
| 97 | + | ||
| 98 | + methods._bindClick.call(this); | ||
| 99 | + methods._bindOut.call(this); | ||
| 100 | + methods._bindOver.call(this); | ||
| 101 | + }, _bindCancel: function() { | ||
| 102 | + methods._bindClickCancel.call(this); | ||
| 103 | + methods._bindOutCancel.call(this); | ||
| 104 | + methods._bindOverCancel.call(this); | ||
| 105 | + }, _bindClick: function() { | ||
| 106 | + var self = this, | ||
| 107 | + that = $(self); | ||
| 108 | + | ||
| 109 | + self.stars.on('click.raty', function(evt) { | ||
| 110 | + self.score.val((self.opt.half || self.opt.precision) ? that.data('score') : this.alt); | ||
| 111 | + | ||
| 112 | + if (self.opt.click) { | ||
| 113 | + self.opt.click.call(self, parseFloat(self.score.val()), evt); | ||
| 114 | + } | ||
| 115 | + }); | ||
| 116 | + }, _bindClickCancel: function() { | ||
| 117 | + var self = this; | ||
| 118 | + | ||
| 119 | + self.cancel.on('click.raty', function(evt) { | ||
| 120 | + self.score.removeAttr('value'); | ||
| 121 | + | ||
| 122 | + if (self.opt.click) { | ||
| 123 | + self.opt.click.call(self, null, evt); | ||
| 124 | + } | ||
| 125 | + }); | ||
| 126 | + }, _bindOut: function() { | ||
| 127 | + var self = this; | ||
| 128 | + | ||
| 129 | + $(this).on('mouseleave.raty', function(evt) { | ||
| 130 | + var score = parseFloat(self.score.val()) || undefined; | ||
| 131 | + | ||
| 132 | + methods._apply.call(self, score); | ||
| 133 | + methods._target.call(self, score, evt); | ||
| 134 | + | ||
| 135 | + if (self.opt.mouseout) { | ||
| 136 | + self.opt.mouseout.call(self, score, evt); | ||
| 137 | + } | ||
| 138 | + }); | ||
| 139 | + }, _bindOutCancel: function() { | ||
| 140 | + var self = this; | ||
| 141 | + | ||
| 142 | + self.cancel.on('mouseleave.raty', function(evt) { | ||
| 143 | + $(this).attr('src', self.opt.path + self.opt.cancelOff); | ||
| 144 | + | ||
| 145 | + if (self.opt.mouseout) { | ||
| 146 | + self.opt.mouseout.call(self, self.score.val() || null, evt); | ||
| 147 | + } | ||
| 148 | + }); | ||
| 149 | + }, _bindOverCancel: function() { | ||
| 150 | + var self = this; | ||
| 151 | + | ||
| 152 | + self.cancel.on('mouseover.raty', function(evt) { | ||
| 153 | + $(this).attr('src', self.opt.path + self.opt.cancelOn); | ||
| 154 | + | ||
| 155 | + self.stars.attr('src', self.opt.path + self.opt.starOff); | ||
| 156 | + | ||
| 157 | + methods._target.call(self, null, evt); | ||
| 158 | + | ||
| 159 | + if (self.opt.mouseover) { | ||
| 160 | + self.opt.mouseover.call(self, null); | ||
| 161 | + } | ||
| 162 | + }); | ||
| 163 | + }, _bindOver: function() { | ||
| 164 | + var self = this, | ||
| 165 | + that = $(self), | ||
| 166 | + action = self.opt.half ? 'mousemove.raty' : 'mouseover.raty'; | ||
| 167 | + | ||
| 168 | + self.stars.on(action, function(evt) { | ||
| 169 | + var score = parseInt(this.alt, 10); | ||
| 170 | + | ||
| 171 | + if (self.opt.half) { | ||
| 172 | + var position = parseFloat((evt.pageX - $(this).offset().left) / self.opt.size), | ||
| 173 | + plus = (position > .5) ? 1 : .5; | ||
| 174 | + | ||
| 175 | + score = score - 1 + plus; | ||
| 176 | + | ||
| 177 | + methods._fill.call(self, score); | ||
| 178 | + | ||
| 179 | + if (self.opt.precision) { | ||
| 180 | + score = score - plus + position; | ||
| 181 | + } | ||
| 182 | + | ||
| 183 | + methods._roundStars.call(self, score); | ||
| 184 | + | ||
| 185 | + that.data('score', score); | ||
| 186 | + } else { | ||
| 187 | + methods._fill.call(self, score); | ||
| 188 | + } | ||
| 189 | + | ||
| 190 | + methods._target.call(self, score, evt); | ||
| 191 | + | ||
| 192 | + if (self.opt.mouseover) { | ||
| 193 | + self.opt.mouseover.call(self, score, evt); | ||
| 194 | + } | ||
| 195 | + }); | ||
| 196 | + }, _callback: function(options) { | ||
| 197 | + for (i in options) { | ||
| 198 | + if (typeof this.opt[options[i]] === 'function') { | ||
| 199 | + this.opt[options[i]] = this.opt[options[i]].call(this); | ||
| 200 | + } | ||
| 201 | + } | ||
| 202 | + }, _createCancel: function() { | ||
| 203 | + var that = $(this), | ||
| 204 | + icon = this.opt.path + this.opt.cancelOff, | ||
| 205 | + cancel = $('<img />', { src: icon, alt: 'x', title: this.opt.cancelHint, 'class': 'raty-cancel' }); | ||
| 206 | + | ||
| 207 | + if (this.opt.cancelPlace == 'left') { | ||
| 208 | + that.prepend(' ').prepend(cancel); | ||
| 209 | + } else { | ||
| 210 | + that.append(' ').append(cancel); | ||
| 211 | + } | ||
| 212 | + | ||
| 213 | + return cancel; | ||
| 214 | + }, _createScore: function() { | ||
| 215 | + return $('<input />', { type: 'hidden', name: this.opt.scoreName }).appendTo(this); | ||
| 216 | + }, _createStars: function() { | ||
| 217 | + var that = $(this); | ||
| 218 | + | ||
| 219 | + for (var i = 1; i <= this.opt.number; i++) { | ||
| 220 | + var title = methods._getHint.call(this, i), | ||
| 221 | + icon = (this.opt.score && this.opt.score >= i) ? 'starOn' : 'starOff'; | ||
| 222 | + | ||
| 223 | + icon = this.opt.path + this.opt[icon]; | ||
| 224 | + | ||
| 225 | + $('<img />', { src : icon, alt: i, title: title }).appendTo(this); | ||
| 226 | + | ||
| 227 | + if (this.opt.space) { | ||
| 228 | + that.append((i < this.opt.number) ? ' ' : ''); | ||
| 229 | + } | ||
| 230 | + } | ||
| 231 | + | ||
| 232 | + return that.children('img'); | ||
| 233 | + }, _error: function(message) { | ||
| 234 | + $(this).html(message); | ||
| 235 | + | ||
| 236 | + $.error(message); | ||
| 237 | + }, _fill: function(score) { | ||
| 238 | + var self = this, | ||
| 239 | + hash = 0; | ||
| 240 | + | ||
| 241 | + for (var i = 1; i <= self.stars.length; i++) { | ||
| 242 | + var star = self.stars.eq(i - 1), | ||
| 243 | + select = self.opt.single ? (i == score) : (i <= score); | ||
| 244 | + | ||
| 245 | + if (self.opt.iconRange && self.opt.iconRange.length > hash) { | ||
| 246 | + var irange = self.opt.iconRange[hash], | ||
| 247 | + on = irange.on || self.opt.starOn, | ||
| 248 | + off = irange.off || self.opt.starOff, | ||
| 249 | + icon = select ? on : off; | ||
| 250 | + | ||
| 251 | + if (i <= irange.range) { | ||
| 252 | + star.attr('src', self.opt.path + icon); | ||
| 253 | + } | ||
| 254 | + | ||
| 255 | + if (i == irange.range) { | ||
| 256 | + hash++; | ||
| 257 | + } | ||
| 258 | + } else { | ||
| 259 | + var icon = select ? 'starOn' : 'starOff'; | ||
| 260 | + | ||
| 261 | + star.attr('src', this.opt.path + this.opt[icon]); | ||
| 262 | + } | ||
| 263 | + } | ||
| 264 | + }, _getHint: function(score) { | ||
| 265 | + var hint = this.opt.hints[score - 1]; | ||
| 266 | + return (hint === '') ? '' : (hint || score); | ||
| 267 | + }, _lock: function() { | ||
| 268 | + var score = parseInt(this.score.val(), 10), // TODO: 3.1 >> [['1'], ['2'], ['3', '.1', '.2']] | ||
| 269 | + hint = score ? methods._getHint.call(this, score) : this.opt.noRatedMsg; | ||
| 270 | + | ||
| 271 | + $(this).data('readonly', true).css('cursor', '').attr('title', hint); | ||
| 272 | + | ||
| 273 | + this.score.attr('readonly', 'readonly'); | ||
| 274 | + this.stars.attr('title', hint); | ||
| 275 | + | ||
| 276 | + if (this.cancel) { | ||
| 277 | + this.cancel.hide(); | ||
| 278 | + } | ||
| 279 | + }, _roundStars: function(score) { | ||
| 280 | + var rest = (score - Math.floor(score)).toFixed(2); | ||
| 281 | + | ||
| 282 | + if (rest > this.opt.round.down) { | ||
| 283 | + var icon = 'starOn'; // Up: [x.76 .. x.99] | ||
| 284 | + | ||
| 285 | + if (this.opt.halfShow && rest < this.opt.round.up) { // Half: [x.26 .. x.75] | ||
| 286 | + icon = 'starHalf'; | ||
| 287 | + } else if (rest < this.opt.round.full) { // Down: [x.00 .. x.5] | ||
| 288 | + icon = 'starOff'; | ||
| 289 | + } | ||
| 290 | + | ||
| 291 | + this.stars.eq(Math.ceil(score) - 1).attr('src', this.opt.path + this.opt[icon]); | ||
| 292 | + } // Full down: [x.00 .. x.25] | ||
| 293 | + }, _target: function(score, evt) { | ||
| 294 | + if (this.opt.target) { | ||
| 295 | + var target = $(this.opt.target); | ||
| 296 | + | ||
| 297 | + if (target.length === 0) { | ||
| 298 | + methods._error.call(this, 'Target selector invalid or missing!'); | ||
| 299 | + } | ||
| 300 | + | ||
| 301 | + if (this.opt.targetFormat.indexOf('{score}') < 0) { | ||
| 302 | + methods._error.call(this, 'Template "{score}" missing!'); | ||
| 303 | + } | ||
| 304 | + | ||
| 305 | + var mouseover = evt && evt.type == 'mouseover'; | ||
| 306 | + | ||
| 307 | + if (score === undefined) { | ||
| 308 | + score = this.opt.targetText; | ||
| 309 | + } else if (score === null) { | ||
| 310 | + score = mouseover ? this.opt.cancelHint : this.opt.targetText; | ||
| 311 | + } else { | ||
| 312 | + if (this.opt.targetType == 'hint') { | ||
| 313 | + score = methods._getHint.call(this, Math.ceil(score)); | ||
| 314 | + } else if (this.opt.precision) { | ||
| 315 | + score = parseFloat(score).toFixed(1); | ||
| 316 | + } | ||
| 317 | + | ||
| 318 | + if (!mouseover && !this.opt.targetKeep) { | ||
| 319 | + score = this.opt.targetText; | ||
| 320 | + } | ||
| 321 | + } | ||
| 322 | + | ||
| 323 | + if (score) { | ||
| 324 | + score = this.opt.targetFormat.toString().replace('{score}', score); | ||
| 325 | + } | ||
| 326 | + | ||
| 327 | + if (target.is(':input')) { | ||
| 328 | + target.val(score); | ||
| 329 | + } else { | ||
| 330 | + target.html(score); | ||
| 331 | + } | ||
| 332 | + } | ||
| 333 | + }, _unlock: function() { | ||
| 334 | + $(this).data('readonly', false).css('cursor', 'pointer').removeAttr('title'); | ||
| 335 | + | ||
| 336 | + this.score.removeAttr('readonly', 'readonly'); | ||
| 337 | + | ||
| 338 | + for (var i = 0; i < this.opt.number; i++) { | ||
| 339 | + this.stars.eq(i).attr('title', methods._getHint.call(this, i + 1)); | ||
| 340 | + } | ||
| 341 | + | ||
| 342 | + if (this.cancel) { | ||
| 343 | + this.cancel.css('display', ''); | ||
| 344 | + } | ||
| 345 | + }, cancel: function(click) { | ||
| 346 | + return this.each(function() { | ||
| 347 | + if ($(this).data('readonly') !== true) { | ||
| 348 | + methods[click ? 'click' : 'score'].call(this, null); | ||
| 349 | + this.score.removeAttr('value'); | ||
| 350 | + } | ||
| 351 | + }); | ||
| 352 | + }, click: function(score) { | ||
| 353 | + return $(this).each(function() { | ||
| 354 | + if ($(this).data('readonly') !== true) { | ||
| 355 | + methods._apply.call(this, score); | ||
| 356 | + | ||
| 357 | + if (!this.opt.click) { | ||
| 358 | + methods._error.call(this, 'You must add the "click: function(score, evt) { }" callback.'); | ||
| 359 | + } | ||
| 360 | + | ||
| 361 | + this.opt.click.call(this, score, { type: 'click' }); | ||
| 362 | + | ||
| 363 | + methods._target.call(this, score); | ||
| 364 | + } | ||
| 365 | + }); | ||
| 366 | + }, destroy: function() { | ||
| 367 | + return $(this).each(function() { | ||
| 368 | + var that = $(this), | ||
| 369 | + raw = that.data('raw'); | ||
| 370 | + | ||
| 371 | + if (raw) { | ||
| 372 | + that.off('.raty').empty().css({ cursor: raw.style.cursor, width: raw.style.width }).removeData('readonly'); | ||
| 373 | + } else { | ||
| 374 | + that.data('raw', that.clone()[0]); | ||
| 375 | + } | ||
| 376 | + }); | ||
| 377 | + }, getScore: function() { | ||
| 378 | + var score = [], | ||
| 379 | + value ; | ||
| 380 | + | ||
| 381 | + $(this).each(function() { | ||
| 382 | + value = this.score.val(); | ||
| 383 | + | ||
| 384 | + score.push(value ? parseFloat(value) : undefined); | ||
| 385 | + }); | ||
| 386 | + | ||
| 387 | + return (score.length > 1) ? score : score[0]; | ||
| 388 | + }, readOnly: function(readonly) { | ||
| 389 | + return this.each(function() { | ||
| 390 | + var that = $(this); | ||
| 391 | + | ||
| 392 | + if (that.data('readonly') !== readonly) { | ||
| 393 | + if (readonly) { | ||
| 394 | + that.off('.raty').children('img').off('.raty'); | ||
| 395 | + | ||
| 396 | + methods._lock.call(this); | ||
| 397 | + } else { | ||
| 398 | + methods._binds.call(this); | ||
| 399 | + methods._unlock.call(this); | ||
| 400 | + } | ||
| 401 | + | ||
| 402 | + that.data('readonly', readonly); | ||
| 403 | + } | ||
| 404 | + }); | ||
| 405 | + }, reload: function() { | ||
| 406 | + return methods.set.call(this, {}); | ||
| 407 | + }, score: function() { | ||
| 408 | + return arguments.length ? methods.setScore.apply(this, arguments) : methods.getScore.call(this); | ||
| 409 | + }, set: function(settings) { | ||
| 410 | + return this.each(function() { | ||
| 411 | + var that = $(this), | ||
| 412 | + actual = that.data('settings'), | ||
| 413 | + news = $.extend({}, actual, settings); | ||
| 414 | + | ||
| 415 | + that.raty(news); | ||
| 416 | + }); | ||
| 417 | + }, setScore: function(score) { | ||
| 418 | + return $(this).each(function() { | ||
| 419 | + if ($(this).data('readonly') !== true) { | ||
| 420 | + methods._apply.call(this, score); | ||
| 421 | + methods._target.call(this, score); | ||
| 422 | + } | ||
| 423 | + }); | ||
| 424 | + } | ||
| 425 | + }; | ||
| 426 | + | ||
| 427 | + $.fn.raty = function(method) { | ||
| 428 | + if (methods[method]) { | ||
| 429 | + return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); | ||
| 430 | + } else if (typeof method === 'object' || !method) { | ||
| 431 | + return methods.init.apply(this, arguments); | ||
| 432 | + } else { | ||
| 433 | + $.error('Method ' + method + ' does not exist!'); | ||
| 434 | + } | ||
| 435 | + }; | ||
| 436 | + | ||
| 437 | + $.fn.raty.defaults = { | ||
| 438 | + cancel : false, | ||
| 439 | + cancelHint : 'Cancel this rating!', | ||
| 440 | + cancelOff : 'cancel-off.png', | ||
| 441 | + cancelOn : 'cancel-on.png', | ||
| 442 | + cancelPlace : 'left', | ||
| 443 | + click : undefined, | ||
| 444 | + half : false, | ||
| 445 | + halfShow : true, | ||
| 446 | + hints : ['bad', 'poor', 'regular', 'good', 'gorgeous'], | ||
| 447 | + iconRange : undefined, | ||
| 448 | + mouseout : undefined, | ||
| 449 | + mouseover : undefined, | ||
| 450 | + noRatedMsg : 'Not rated yet!', | ||
| 451 | + number : 5, | ||
| 452 | + numberMax : 20, | ||
| 453 | + path : 'js/raty/lib/img/', | ||
| 454 | + precision : false, | ||
| 455 | + readOnly : false, | ||
| 456 | + round : { down: .25, full: .6, up: .76 }, | ||
| 457 | + score : undefined, | ||
| 458 | + scoreName : 'score', | ||
| 459 | + single : false, | ||
| 460 | + size : 16, | ||
| 461 | + space : true, | ||
| 462 | + starHalf : 'star-half.png', | ||
| 463 | + starOff : 'star-off.png', | ||
| 464 | + starOn : 'star-on.png', | ||
| 465 | + target : undefined, | ||
| 466 | + targetFormat : '{score}', | ||
| 467 | + targetKeep : false, | ||
| 468 | + targetText : '', | ||
| 469 | + targetType : 'hint', | ||
| 470 | + width : undefined | ||
| 471 | + }; | ||
| 472 | + | ||
| 473 | +})(jQuery); |
src/main/resources/static/pages/base/timesmodel/js/raty/lib/jquery.raty.min.js
0 → 100644
| 1 | +/*! | ||
| 2 | + * jQuery Raty - A Star Rating Plugin | ||
| 3 | + * | ||
| 4 | + * Licensed under The MIT License | ||
| 5 | + * | ||
| 6 | + * @version 2.5.2 | ||
| 7 | + * @author Washington Botelho | ||
| 8 | + * @documentation wbotelhos.com/raty | ||
| 9 | + * | ||
| 10 | + */ | ||
| 11 | + | ||
| 12 | +;(function(b){var a={init:function(c){return this.each(function(){a.destroy.call(this);this.opt=b.extend(true,{},b.fn.raty.defaults,c);var e=b(this),g=["number","readOnly","score","scoreName"];a._callback.call(this,g);if(this.opt.precision){a._adjustPrecision.call(this);}this.opt.number=a._between(this.opt.number,0,this.opt.numberMax);this.opt.path=this.opt.path||"";if(this.opt.path&&this.opt.path.slice(this.opt.path.length-1,this.opt.path.length)!=="/"){this.opt.path+="/";}this.stars=a._createStars.call(this);this.score=a._createScore.call(this);a._apply.call(this,this.opt.score);var f=this.opt.space?4:0,d=this.opt.width||(this.opt.number*this.opt.size+this.opt.number*f);if(this.opt.cancel){this.cancel=a._createCancel.call(this);d+=(this.opt.size+f);}if(this.opt.readOnly){a._lock.call(this);}else{e.css("cursor","pointer");a._binds.call(this);}if(this.opt.width!==false){e.css("width",d);}a._target.call(this,this.opt.score);e.data({settings:this.opt,raty:true});});},_adjustPrecision:function(){this.opt.targetType="score";this.opt.half=true;},_apply:function(c){if(c&&c>0){c=a._between(c,0,this.opt.number);this.score.val(c);}a._fill.call(this,c);if(c){a._roundStars.call(this,c);}},_between:function(e,d,c){return Math.min(Math.max(parseFloat(e),d),c);},_binds:function(){if(this.cancel){a._bindCancel.call(this);}a._bindClick.call(this);a._bindOut.call(this);a._bindOver.call(this);},_bindCancel:function(){a._bindClickCancel.call(this);a._bindOutCancel.call(this);a._bindOverCancel.call(this);},_bindClick:function(){var c=this,d=b(c);c.stars.on("click.raty",function(e){c.score.val((c.opt.half||c.opt.precision)?d.data("score"):this.alt);if(c.opt.click){c.opt.click.call(c,parseFloat(c.score.val()),e);}});},_bindClickCancel:function(){var c=this;c.cancel.on("click.raty",function(d){c.score.removeAttr("value");if(c.opt.click){c.opt.click.call(c,null,d);}});},_bindOut:function(){var c=this;b(this).on("mouseleave.raty",function(d){var e=parseFloat(c.score.val())||undefined;a._apply.call(c,e);a._target.call(c,e,d);if(c.opt.mouseout){c.opt.mouseout.call(c,e,d);}});},_bindOutCancel:function(){var c=this;c.cancel.on("mouseleave.raty",function(d){b(this).attr("src",c.opt.path+c.opt.cancelOff);if(c.opt.mouseout){c.opt.mouseout.call(c,c.score.val()||null,d);}});},_bindOverCancel:function(){var c=this;c.cancel.on("mouseover.raty",function(d){b(this).attr("src",c.opt.path+c.opt.cancelOn);c.stars.attr("src",c.opt.path+c.opt.starOff);a._target.call(c,null,d);if(c.opt.mouseover){c.opt.mouseover.call(c,null);}});},_bindOver:function(){var c=this,d=b(c),e=c.opt.half?"mousemove.raty":"mouseover.raty";c.stars.on(e,function(g){var h=parseInt(this.alt,10);if(c.opt.half){var f=parseFloat((g.pageX-b(this).offset().left)/c.opt.size),j=(f>0.5)?1:0.5;h=h-1+j;a._fill.call(c,h);if(c.opt.precision){h=h-j+f;}a._roundStars.call(c,h);d.data("score",h);}else{a._fill.call(c,h);}a._target.call(c,h,g);if(c.opt.mouseover){c.opt.mouseover.call(c,h,g);}});},_callback:function(c){for(i in c){if(typeof this.opt[c[i]]==="function"){this.opt[c[i]]=this.opt[c[i]].call(this);}}},_createCancel:function(){var e=b(this),c=this.opt.path+this.opt.cancelOff,d=b("<img />",{src:c,alt:"x",title:this.opt.cancelHint,"class":"raty-cancel"});if(this.opt.cancelPlace=="left"){e.prepend(" ").prepend(d);}else{e.append(" ").append(d);}return d;},_createScore:function(){return b("<input />",{type:"hidden",name:this.opt.scoreName}).appendTo(this);},_createStars:function(){var e=b(this);for(var c=1;c<=this.opt.number;c++){var f=a._getHint.call(this,c),d=(this.opt.score&&this.opt.score>=c)?"starOn":"starOff";d=this.opt.path+this.opt[d];b("<img />",{src:d,alt:c,title:f}).appendTo(this);if(this.opt.space){e.append((c<this.opt.number)?" ":"");}}return e.children("img");},_error:function(c){b(this).html(c);b.error(c);},_fill:function(d){var m=this,e=0;for(var f=1;f<=m.stars.length;f++){var g=m.stars.eq(f-1),l=m.opt.single?(f==d):(f<=d);if(m.opt.iconRange&&m.opt.iconRange.length>e){var j=m.opt.iconRange[e],h=j.on||m.opt.starOn,c=j.off||m.opt.starOff,k=l?h:c;if(f<=j.range){g.attr("src",m.opt.path+k);}if(f==j.range){e++;}}else{var k=l?"starOn":"starOff";g.attr("src",this.opt.path+this.opt[k]);}}},_getHint:function(d){var c=this.opt.hints[d-1];return(c==="")?"":(c||d);},_lock:function(){var d=parseInt(this.score.val(),10),c=d?a._getHint.call(this,d):this.opt.noRatedMsg;b(this).data("readonly",true).css("cursor","").attr("title",c);this.score.attr("readonly","readonly");this.stars.attr("title",c);if(this.cancel){this.cancel.hide();}},_roundStars:function(e){var d=(e-Math.floor(e)).toFixed(2);if(d>this.opt.round.down){var c="starOn";if(this.opt.halfShow&&d<this.opt.round.up){c="starHalf";}else{if(d<this.opt.round.full){c="starOff";}}this.stars.eq(Math.ceil(e)-1).attr("src",this.opt.path+this.opt[c]);}},_target:function(f,d){if(this.opt.target){var e=b(this.opt.target);if(e.length===0){a._error.call(this,"Target selector invalid or missing!");}if(this.opt.targetFormat.indexOf("{score}")<0){a._error.call(this,'Template "{score}" missing!');}var c=d&&d.type=="mouseover";if(f===undefined){f=this.opt.targetText;}else{if(f===null){f=c?this.opt.cancelHint:this.opt.targetText;}else{if(this.opt.targetType=="hint"){f=a._getHint.call(this,Math.ceil(f));}else{if(this.opt.precision){f=parseFloat(f).toFixed(1);}}if(!c&&!this.opt.targetKeep){f=this.opt.targetText;}}}if(f){f=this.opt.targetFormat.toString().replace("{score}",f);}if(e.is(":input")){e.val(f);}else{e.html(f);}}},_unlock:function(){b(this).data("readonly",false).css("cursor","pointer").removeAttr("title");this.score.removeAttr("readonly","readonly");for(var c=0;c<this.opt.number;c++){this.stars.eq(c).attr("title",a._getHint.call(this,c+1));}if(this.cancel){this.cancel.css("display","");}},cancel:function(c){return this.each(function(){if(b(this).data("readonly")!==true){a[c?"click":"score"].call(this,null);this.score.removeAttr("value");}});},click:function(c){return b(this).each(function(){if(b(this).data("readonly")!==true){a._apply.call(this,c);if(!this.opt.click){a._error.call(this,'You must add the "click: function(score, evt) { }" callback.');}this.opt.click.call(this,c,{type:"click"});a._target.call(this,c);}});},destroy:function(){return b(this).each(function(){var d=b(this),c=d.data("raw");if(c){d.off(".raty").empty().css({cursor:c.style.cursor,width:c.style.width}).removeData("readonly");}else{d.data("raw",d.clone()[0]);}});},getScore:function(){var d=[],c;b(this).each(function(){c=this.score.val();d.push(c?parseFloat(c):undefined);});return(d.length>1)?d:d[0];},readOnly:function(c){return this.each(function(){var d=b(this);if(d.data("readonly")!==c){if(c){d.off(".raty").children("img").off(".raty");a._lock.call(this);}else{a._binds.call(this);a._unlock.call(this);}d.data("readonly",c);}});},reload:function(){return a.set.call(this,{});},score:function(){return arguments.length?a.setScore.apply(this,arguments):a.getScore.call(this);},set:function(c){return this.each(function(){var e=b(this),f=e.data("settings"),d=b.extend({},f,c);e.raty(d);});},setScore:function(c){return b(this).each(function(){if(b(this).data("readonly")!==true){a._apply.call(this,c);a._target.call(this,c);}});}};b.fn.raty=function(c){if(a[c]){return a[c].apply(this,Array.prototype.slice.call(arguments,1));}else{if(typeof c==="object"||!c){return a.init.apply(this,arguments);}else{b.error("Method "+c+" does not exist!");}}};b.fn.raty.defaults={cancel:false,cancelHint:"Cancel this rating!",cancelOff:"cancel-off.png",cancelOn:"cancel-on.png",cancelPlace:"left",click:undefined,half:false,halfShow:true,hints:["bad","poor","regular","good","gorgeous"],iconRange:undefined,mouseout:undefined,mouseover:undefined,noRatedMsg:"Not rated yet!",number:5,numberMax:20,path:"",precision:false,readOnly:false,round:{down:0.25,full:0.6,up:0.76},score:undefined,scoreName:"score",single:false,size:16,space:true,starHalf:"star-half.png",starOff:"star-off.png",starOn:"star-on.png",target:undefined,targetFormat:"{score}",targetKeep:false,targetText:"",targetType:"hint",width:undefined};})(jQuery); |
src/main/resources/static/pages/forms/mould/list.xls
No preview for this file type
src/main/resources/static/pages/forms/mould/listDl.xls
No preview for this file type
src/main/resources/static/pages/scheduleApp/module/common/dts2/ttinfotable/saTimeTable.js
| @@ -97,8 +97,8 @@ angular.module('ScheduleApp').factory( | @@ -97,8 +97,8 @@ angular.module('ScheduleApp').factory( | ||
| 97 | } | 97 | } |
| 98 | } | 98 | } |
| 99 | } else { | 99 | } else { |
| 100 | - this.isValidInfo = true; | ||
| 101 | - return true; | 100 | + this.isValidInfo = false; |
| 101 | + return false; | ||
| 102 | } | 102 | } |
| 103 | }; | 103 | }; |
| 104 | 104 |
src/main/resources/static/pages/scheduleApp/module/common/dts2/ttinfotable/saTimeTableTemplate.html
| @@ -324,7 +324,7 @@ | @@ -324,7 +324,7 @@ | ||
| 324 | ng-dblclick="$saTimeTableCtrl.$$cell_dbclick(rowIndex, colIndex, cell)" | 324 | ng-dblclick="$saTimeTableCtrl.$$cell_dbclick(rowIndex, colIndex, cell)" |
| 325 | ng-class="{ | 325 | ng-class="{ |
| 326 | lpName: !cell.ttdid, | 326 | lpName: !cell.ttdid, |
| 327 | - error: cell.invalidFlag, | 327 | + error: cell.isValidInfo, |
| 328 | active: cell.sel, | 328 | active: cell.sel, |
| 329 | region: cell.bc_type == 'region', | 329 | region: cell.bc_type == 'region', |
| 330 | isfb: cell.isfb | 330 | isfb: cell.isfb |
src/main/resources/static/pages/scheduleApp/module/common/prj-common-directive.js
| @@ -3795,8 +3795,8 @@ angular.module('ScheduleApp').factory( | @@ -3795,8 +3795,8 @@ angular.module('ScheduleApp').factory( | ||
| 3795 | } | 3795 | } |
| 3796 | } | 3796 | } |
| 3797 | } else { | 3797 | } else { |
| 3798 | - this.isValidInfo = true; | ||
| 3799 | - return true; | 3798 | + this.isValidInfo = false; |
| 3799 | + return false; | ||
| 3800 | } | 3800 | } |
| 3801 | }; | 3801 | }; |
| 3802 | 3802 |
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/info/list_info.html
| @@ -14,8 +14,9 @@ | @@ -14,8 +14,9 @@ | ||
| 14 | <th style="width: 80px;">班次类型</th> | 14 | <th style="width: 80px;">班次类型</th> |
| 15 | <th style="width: 80px;">上下行</th> | 15 | <th style="width: 80px;">上下行</th> |
| 16 | <th style="width: 80px;">发车时间</th> | 16 | <th style="width: 80px;">发车时间</th> |
| 17 | - <th style="width: 100px;">起点站</th> | ||
| 18 | - <th style="width: 100px;">终点站</th> | 17 | + <th style="width: 80px;">起点站</th> |
| 18 | + <th style="width: 80px;">终点站</th> | ||
| 19 | + <th style="width: 60px">备注</th> | ||
| 19 | <th style="width: 100%">时刻表</th> | 20 | <th style="width: 100%">时刻表</th> |
| 20 | <th style="width: 90px;">修改人</th> | 21 | <th style="width: 90px;">修改人</th> |
| 21 | <th style="width: 90px;">修改时间</th> | 22 | <th style="width: 90px;">修改时间</th> |
| @@ -110,6 +111,15 @@ | @@ -110,6 +111,15 @@ | ||
| 110 | <a href="#" | 111 | <a href="#" |
| 111 | tooltip-animation="false" | 112 | tooltip-animation="false" |
| 112 | tooltip-placement="top" | 113 | tooltip-placement="top" |
| 114 | + uib-tooltip="{{info.remark}}" | ||
| 115 | + tooltip-class="headClass"> | ||
| 116 | + {{info.remark}} | ||
| 117 | + </a> | ||
| 118 | + </td> | ||
| 119 | + <td> | ||
| 120 | + <a href="#" | ||
| 121 | + tooltip-animation="false" | ||
| 122 | + tooltip-placement="top" | ||
| 113 | uib-tooltip="{{info.ttInfoName}}" | 123 | uib-tooltip="{{info.ttInfoName}}" |
| 114 | tooltip-class="headClass"> | 124 | tooltip-class="headClass"> |
| 115 | {{info.ttInfoName}} | 125 | {{info.ttInfoName}} |
src/main/resources/static/real_control_v2/js/modal_extend.js
| 1 | -//modal hide remove dom | ||
| 2 | -$(document).on('hide.uk.modal', '.uk-modal', function () { | ||
| 3 | - $(this).remove(); | ||
| 4 | -}); | ||
| 5 | - | ||
| 6 | -$(document).on('show.uk.modal', '.uk-modal.ct_move_modal', function () { | ||
| 7 | - if($('.uk-modal-dialog', this).hasClass('uk-modal-dialog-blank')) | ||
| 8 | - return; | ||
| 9 | - | ||
| 10 | - /* //临时放过轨迹回放 | ||
| 11 | - if($(this).attr('id')=='map-playback-modal') | ||
| 12 | - return;*/ | ||
| 13 | - | ||
| 14 | - //计算居中位置 | ||
| 15 | - var win = $('body'); | ||
| 16 | - var Y = (win.width() - $('.uk-modal-dialog', this).width()) / 2 - 10; | ||
| 17 | - $('.uk-modal-dialog', this).css('top', '50px').css('left', Y + 'px'); | ||
| 18 | -}); | ||
| 19 | - | ||
| 20 | -var show_modal = function (id, dom) { | ||
| 21 | - $(document.body).append(dom); | ||
| 22 | - return UIkit.modal(id, { | ||
| 23 | - bgclose: false, modal: false | ||
| 24 | - }).show(); | ||
| 25 | -}; | ||
| 26 | - | ||
| 27 | -var open_modal = function (pageUrl, data, opt) { | ||
| 28 | - $.get(pageUrl, function (dom) { | ||
| 29 | - open_modal_dom(dom, data, opt); | ||
| 30 | - }); | ||
| 31 | -}; | ||
| 32 | - | ||
| 33 | -var open_modal_dom = function (dom, data, opt) { | ||
| 34 | - if (!$(dom).hasClass('uk-modal')) { | ||
| 35 | - alert('无效的dom片段!'); | ||
| 36 | - return; | ||
| 37 | - } | ||
| 38 | - var id = '#' + $(dom).attr('id'); | ||
| 39 | - | ||
| 40 | - $(document.body).append(dom); | ||
| 41 | - UIkit.modal(id, opt).show(); | ||
| 42 | - //move | ||
| 43 | - if($(id).hasClass('ct_move_modal')) | ||
| 44 | - modal_move($('.uk-modal-header',id)); | ||
| 45 | - | ||
| 46 | - if (data) | ||
| 47 | - $(id).trigger('init', data); | ||
| 48 | -}; | ||
| 49 | - | ||
| 50 | -var modal_move = function (m_header) { | ||
| 51 | - var _moveFlag; | ||
| 52 | - var _moveObj; | ||
| 53 | - var _offset; | ||
| 54 | - var dict= {}; | ||
| 55 | - var win = $('body'); | ||
| 56 | - | ||
| 57 | - $(m_header).on('mousedown', function (e) { | ||
| 58 | - console.log('mousedown'); | ||
| 59 | - e.preventDefault(); | ||
| 60 | - _moveFlag = true; | ||
| 61 | - _moveObj = $(this).parent(); | ||
| 62 | - _offset = [ | ||
| 63 | - e.clientX - parseFloat(_moveObj.css('left')) - 1, | ||
| 64 | - e.clientY - parseFloat(_moveObj.css('top')) - 1 | ||
| 65 | - ]; | ||
| 66 | - }); | ||
| 67 | - | ||
| 68 | - $(m_header).parents('.uk-modal').mousemove(function (e) { | ||
| 69 | - if(!_moveFlag || !_moveObj) | ||
| 70 | - return; | ||
| 71 | - | ||
| 72 | - var X = e.clientX - _offset[0] | ||
| 73 | - ,Y = e.clientY - _offset[1]; | ||
| 74 | - | ||
| 75 | - dict.stX = win.scrollLeft(); | ||
| 76 | - dict.stY = win.scrollTop(); | ||
| 77 | - | ||
| 78 | - //控制元素不被拖出窗口外 | ||
| 79 | - var setRig = win.width() - _moveObj.outerWidth() + dict.stX | ||
| 80 | - ,setBot = win.height() - _moveObj.outerHeight() + dict.stY; | ||
| 81 | - X < dict.stX && (X = dict.stX); | ||
| 82 | - X > setRig && (X = setRig); | ||
| 83 | - Y < dict.stY && (Y = dict.stY); | ||
| 84 | - Y > setBot && (Y = setBot); | ||
| 85 | - | ||
| 86 | - _moveObj.css({ | ||
| 87 | - left: X | ||
| 88 | - ,top: Y | ||
| 89 | - }); | ||
| 90 | - }); | ||
| 91 | - $(window).on('mouseup', function () { | ||
| 92 | - _moveFlag = false; | ||
| 93 | - _moveObj = null; | ||
| 94 | - }); | 1 | +//modal hide remove dom |
| 2 | +$(document).on('hide.uk.modal', '.uk-modal', function () { | ||
| 3 | + $(this).remove(); | ||
| 4 | +}); | ||
| 5 | + | ||
| 6 | +$(document).on('show.uk.modal', '.uk-modal.ct_move_modal', function () { | ||
| 7 | + if($('.uk-modal-dialog', this).hasClass('uk-modal-dialog-blank')) | ||
| 8 | + return; | ||
| 9 | + | ||
| 10 | + /* //临时放过轨迹回放 | ||
| 11 | + if($(this).attr('id')=='map-playback-modal') | ||
| 12 | + return;*/ | ||
| 13 | + | ||
| 14 | + //计算居中位置 | ||
| 15 | + var win = $('body'); | ||
| 16 | + var Y = (win.width() - $('.uk-modal-dialog', this).width()) / 2 - 10; | ||
| 17 | + $('.uk-modal-dialog', this).css('top', '50px').css('left', Y + 'px'); | ||
| 18 | +}); | ||
| 19 | + | ||
| 20 | +var show_modal = function (id, dom) { | ||
| 21 | + $(document.body).append(dom); | ||
| 22 | + return UIkit.modal(id, { | ||
| 23 | + bgclose: false, modal: false | ||
| 24 | + }).show(); | ||
| 25 | +}; | ||
| 26 | + | ||
| 27 | +var open_modal = function (pageUrl, data, opt) { | ||
| 28 | + $.get(pageUrl, function (dom) { | ||
| 29 | + open_modal_dom(dom, data, opt); | ||
| 30 | + }); | ||
| 31 | +}; | ||
| 32 | + | ||
| 33 | +var open_modal_dom = function (dom, data, opt) { | ||
| 34 | + if (!$(dom).hasClass('uk-modal')) { | ||
| 35 | + alert('无效的dom片段!'); | ||
| 36 | + return; | ||
| 37 | + } | ||
| 38 | + var id = '#' + $(dom).attr('id'); | ||
| 39 | + | ||
| 40 | + $(document.body).append(dom); | ||
| 41 | + UIkit.modal(id, opt).show(); | ||
| 42 | + //move | ||
| 43 | + if($(id).hasClass('ct_move_modal')) | ||
| 44 | + modal_move($('.uk-modal-header',id)); | ||
| 45 | + | ||
| 46 | + if (data) | ||
| 47 | + $(id).trigger('init', data); | ||
| 48 | +}; | ||
| 49 | + | ||
| 50 | +var modal_move = function (m_header) { | ||
| 51 | + var _moveFlag; | ||
| 52 | + var _moveObj; | ||
| 53 | + var _offset; | ||
| 54 | + var dict= {}; | ||
| 55 | + var win = $('body'); | ||
| 56 | + | ||
| 57 | + $(m_header).on('mousedown', function (e) { | ||
| 58 | + console.log('mousedown'); | ||
| 59 | + e.preventDefault(); | ||
| 60 | + _moveFlag = true; | ||
| 61 | + _moveObj = $(this).parent(); | ||
| 62 | + _offset = [ | ||
| 63 | + e.clientX - parseFloat(_moveObj.css('left')) - 1, | ||
| 64 | + e.clientY - parseFloat(_moveObj.css('top')) - 1 | ||
| 65 | + ]; | ||
| 66 | + }); | ||
| 67 | + | ||
| 68 | + $(m_header).parents('.uk-modal').mousemove(function (e) { | ||
| 69 | + if(!_moveFlag || !_moveObj) | ||
| 70 | + return; | ||
| 71 | + | ||
| 72 | + var X = e.clientX - _offset[0] | ||
| 73 | + ,Y = e.clientY - _offset[1]; | ||
| 74 | + | ||
| 75 | + dict.stX = win.scrollLeft(); | ||
| 76 | + dict.stY = win.scrollTop(); | ||
| 77 | + | ||
| 78 | + //控制元素不被拖出窗口外 | ||
| 79 | + var setRig = win.width() - _moveObj.outerWidth() + dict.stX | ||
| 80 | + ,setBot = win.height() - _moveObj.outerHeight() + dict.stY; | ||
| 81 | + X < dict.stX && (X = dict.stX); | ||
| 82 | + X > setRig && (X = setRig); | ||
| 83 | + Y < dict.stY && (Y = dict.stY); | ||
| 84 | + Y > setBot && (Y = setBot); | ||
| 85 | + | ||
| 86 | + _moveObj.css({ | ||
| 87 | + left: X | ||
| 88 | + ,top: Y | ||
| 89 | + }); | ||
| 90 | + }); | ||
| 91 | + $(window).on('mouseup', function () { | ||
| 92 | + _moveFlag = false; | ||
| 93 | + _moveObj = null; | ||
| 94 | + }); | ||
| 95 | }; | 95 | }; |
| 96 | \ No newline at end of file | 96 | \ No newline at end of file |
src/main/resources/static/real_control_v2/js/safe_driv/safeDriv.js
| 1 | -/** | ||
| 2 | - * 安全驾驶相关 | ||
| 3 | - */ | ||
| 4 | -var gb_safe_driv = (function () { | ||
| 5 | - | ||
| 6 | - var codes = { | ||
| 7 | - 'A1': '手部违规', | ||
| 8 | - 'A2': '摄像头偏离', | ||
| 9 | - 'A3': '安全带', | ||
| 10 | - 'A4': '未戴袖章', | ||
| 11 | - 'A5': '眨眼/疲劳驾驶', | ||
| 12 | - 'A6': '打哈欠/打瞌睡', | ||
| 13 | - 'A7': '与人交谈' | ||
| 14 | - }; | ||
| 15 | - | ||
| 16 | - var $wrap = $('.safe_driv_pop_wrap'); | ||
| 17 | - var max = 5; | ||
| 18 | - | ||
| 19 | - var pop = function (sd) { | ||
| 20 | - //只有admin用户能收到 | ||
| 21 | - var user = gb_northToolbar.user(); | ||
| 22 | - if(!user || user.userName.indexOf('admin') == -1) | ||
| 23 | - return; | ||
| 24 | - | ||
| 25 | - var htmlStr = '<div class="safe_driv_pop uk-animation-slide-bottom">'+ | ||
| 26 | - ' <span class="title"><i class="uk-icon-times-circle"></i>安全驾驶 '+moment(sd.ts).format('HH:mm')+'</span>'+ | ||
| 27 | - ' <span class="text"> '+sd.clzbh+' 违规驾驶('+codes[sd.yczltype]+')</span><span class="desc">请至安全驾驶监管平台查看图像信息</span>'+ | ||
| 28 | - '</div>'; | ||
| 29 | - | ||
| 30 | - var items = $wrap.find('.safe_driv_pop'), len = items.length; | ||
| 31 | - if(len >= max) | ||
| 32 | - $wrap.find('.safe_driv_pop:lt('+(len - max)+')').remove(); | ||
| 33 | - | ||
| 34 | - $wrap.append(htmlStr); | ||
| 35 | - }; | ||
| 36 | - | ||
| 37 | - $wrap.on('click', '.safe_driv_pop', function () { | ||
| 38 | - $(this).remove(); | ||
| 39 | - }); | ||
| 40 | - | ||
| 41 | - return { | ||
| 42 | - pop: pop | ||
| 43 | - } | 1 | +/** |
| 2 | + * 安全驾驶相关 | ||
| 3 | + */ | ||
| 4 | +var gb_safe_driv = (function () { | ||
| 5 | + | ||
| 6 | + var codes = { | ||
| 7 | + 'A1': '手部违规', | ||
| 8 | + 'A2': '摄像头偏离', | ||
| 9 | + 'A3': '安全带', | ||
| 10 | + 'A4': '未戴袖章', | ||
| 11 | + 'A5': '眨眼/疲劳驾驶', | ||
| 12 | + 'A6': '打哈欠/打瞌睡', | ||
| 13 | + 'A7': '与人交谈' | ||
| 14 | + }; | ||
| 15 | + | ||
| 16 | + var $wrap = $('.safe_driv_pop_wrap'); | ||
| 17 | + var max = 5; | ||
| 18 | + | ||
| 19 | + var pop = function (sd) { | ||
| 20 | + //只有admin用户能收到 | ||
| 21 | + var user = gb_northToolbar.user(); | ||
| 22 | + if(!user || user.userName.indexOf('admin') == -1) | ||
| 23 | + return; | ||
| 24 | + | ||
| 25 | + var htmlStr = '<div class="safe_driv_pop uk-animation-slide-bottom">'+ | ||
| 26 | + ' <span class="title"><i class="uk-icon-times-circle"></i>安全驾驶 '+moment(sd.ts).format('HH:mm')+'</span>'+ | ||
| 27 | + ' <span class="text"> '+sd.clzbh+' 违规驾驶('+codes[sd.yczltype]+')</span><span class="desc">请至安全驾驶监管平台查看图像信息</span>'+ | ||
| 28 | + '</div>'; | ||
| 29 | + | ||
| 30 | + var items = $wrap.find('.safe_driv_pop'), len = items.length; | ||
| 31 | + if(len >= max) | ||
| 32 | + $wrap.find('.safe_driv_pop:lt('+(len - max)+')').remove(); | ||
| 33 | + | ||
| 34 | + $wrap.append(htmlStr); | ||
| 35 | + }; | ||
| 36 | + | ||
| 37 | + $wrap.on('click', '.safe_driv_pop', function () { | ||
| 38 | + $(this).remove(); | ||
| 39 | + }); | ||
| 40 | + | ||
| 41 | + return { | ||
| 42 | + pop: pop | ||
| 43 | + } | ||
| 44 | })(); | 44 | })(); |
| 45 | \ No newline at end of file | 45 | \ No newline at end of file |
src/main/resources/static/real_control_v2/mapmonitor/fragments/playback_v2/main.html
| @@ -235,18 +235,18 @@ | @@ -235,18 +235,18 @@ | ||
| 235 | 235 | ||
| 236 | <script id="abnormal_table_cont_temp" type="text/html"> | 236 | <script id="abnormal_table_cont_temp" type="text/html"> |
| 237 | {{each array as item i}} | 237 | {{each array as item i}} |
| 238 | - <dl> | ||
| 239 | - <dd> | ||
| 240 | - {{if item.abnormalType == 'speed'}} | ||
| 241 | - 超速({{item.speed}}) | ||
| 242 | - {{else if item.abnormalType == 'outbound'}} | ||
| 243 | - 越界 | ||
| 244 | - {{/if}} | ||
| 245 | - </dd> | ||
| 246 | - <dd>{{item.st_str}}</dd> | ||
| 247 | - <dd>{{item.et_str}}</dd> | ||
| 248 | - <dd></dd> | ||
| 249 | - </dl> | 238 | + <dl> |
| 239 | + <dd> | ||
| 240 | + {{if item.abnormalType == 'speed'}} | ||
| 241 | + 超速({{item.speed}}) | ||
| 242 | + {{else if item.abnormalType == 'outbound'}} | ||
| 243 | + 越界 | ||
| 244 | + {{/if}} | ||
| 245 | + </dd> | ||
| 246 | + <dd>{{item.st_str}}</dd> | ||
| 247 | + <dd>{{item.et_str}}</dd> | ||
| 248 | + <dd></dd> | ||
| 249 | + </dl> | ||
| 250 | {{/each}} | 250 | {{/each}} |
| 251 | </script> | 251 | </script> |
| 252 | <script> | 252 | <script> |
| @@ -335,11 +335,11 @@ | @@ -335,11 +335,11 @@ | ||
| 335 | 335 | ||
| 336 | 336 | ||
| 337 | /*$('[name=nbbm]', f).val('W0A-018'); | 337 | /*$('[name=nbbm]', f).val('W0A-018'); |
| 338 | - $('[name=sDate]', f).val('2017-04-06'); | ||
| 339 | - $('[name=sTime]', f).val('04:49'); | 338 | + $('[name=sDate]', f).val('2017-04-06'); |
| 339 | + $('[name=sTime]', f).val('04:49'); | ||
| 340 | 340 | ||
| 341 | - $('[name=eDate]', f).val('2017-04-06'); | ||
| 342 | - $('[name=eTime]', f).val('09:49');*/ | 341 | + $('[name=eDate]', f).val('2017-04-06'); |
| 342 | + $('[name=eTime]', f).val('09:49');*/ | ||
| 343 | //搜索事件 | 343 | //搜索事件 |
| 344 | $('button[type=submit]', f).on('click', search); | 344 | $('button[type=submit]', f).on('click', search); |
| 345 | }; | 345 | }; |
| @@ -506,7 +506,7 @@ | @@ -506,7 +506,7 @@ | ||
| 506 | if (gps['inout_stop'] == 0) { | 506 | if (gps['inout_stop'] == 0) { |
| 507 | //连续进站信号,取第一个 | 507 | //连续进站信号,取第一个 |
| 508 | if(prev && prev['out_ts'] == null | 508 | if(prev && prev['out_ts'] == null |
| 509 | - && prev['stopName'] == gps['inout_stop_info'].stopName){ | 509 | + && prev['stopName'] == gps['inout_stop_info'].stopName){ |
| 510 | return true; | 510 | return true; |
| 511 | } | 511 | } |
| 512 | data.push(createIn(gps)); | 512 | data.push(createIn(gps)); |
| @@ -603,8 +603,8 @@ | @@ -603,8 +603,8 @@ | ||
| 603 | } | 603 | } |
| 604 | //格式化时间 | 604 | //格式化时间 |
| 605 | $.each(array, function () { | 605 | $.each(array, function () { |
| 606 | - if(this.st) | ||
| 607 | - this.st_str = moment(this.st).format('HH:mm.ss'); | 606 | + if(this.st) |
| 607 | + this.st_str = moment(this.st).format('HH:mm.ss'); | ||
| 608 | if(this.et) | 608 | if(this.et) |
| 609 | this.et_str = moment(this.et).format('HH:mm.ss'); | 609 | this.et_str = moment(this.et).format('HH:mm.ss'); |
| 610 | }); | 610 | }); |