Commit 5d00aa0ed36b00efc753fdc30ea45828e2b96f53

Authored by panzhaov5
1 parent 6ebda363

update...

src/main/java/com/bsth/data/abnormal/scanner/AttendanceAbnormalScanner.java
... ... @@ -25,6 +25,8 @@ public class AttendanceAbnormalScanner {
25 25  
26 26 public void scan(){
27 27 List<ScheduleInOut> list = ScheduleDataBuffer.all_out();
  28 + if(null == list)
  29 + return;
28 30  
29 31 AbnormalEntity ae;
30 32 Long t = System.currentTimeMillis();
... ...
src/main/java/com/bsth/data/abnormal/scanner/InOutAbnormalScanner.java
... ... @@ -25,6 +25,8 @@ public class InOutAbnormalScanner {
25 25  
26 26 public void scan(){
27 27 List<ScheduleInOut> list = ScheduleDataBuffer.all_out();
  28 + if(null == list)
  29 + return;
28 30  
29 31 AbnormalEntity ae;
30 32 Long t = System.currentTimeMillis();
... ...
src/main/java/com/bsth/data/basic/line/LineDataBuffer.java
... ... @@ -2,7 +2,6 @@ package com.bsth.data.basic.line;
2 2  
3 3 import com.alibaba.fastjson.JSON;
4 4 import com.bsth.Application;
5   -import com.bsth.data.basic.person.PersonDataBuffer;
6 5 import com.bsth.data.utils.HttpClientUtils;
7 6 import com.bsth.data.utils.RsRequestUtils;
8 7 import com.bsth.entity.Line;
... ... @@ -32,7 +31,7 @@ public class LineDataBuffer implements CommandLineRunner {
32 31 @Autowired
33 32 LineFixedRefreshThread lineFixedRefreshThread;
34 33  
35   - static Logger logger = LoggerFactory.getLogger(PersonDataBuffer.class);
  34 + static Logger logger = LoggerFactory.getLogger(LineDataBuffer.class);
36 35  
37 36 static {
38 37 dataUrl = ConfigUtil.get("data.base.url") + "/rest/line";
... ...
src/main/java/com/bsth/data/basic/person/PersonDataBuffer.java
1 1 package com.bsth.data.basic.person;
2 2  
3 3 import com.alibaba.fastjson.JSON;
  4 +import com.alibaba.fastjson.JSONArray;
4 5 import com.alibaba.fastjson.JSONObject;
5 6 import com.bsth.Application;
  7 +import com.bsth.common.Constants;
6 8 import com.bsth.common.RemotePostDataException;
7 9 import com.bsth.common.ResponseCode;
8 10 import com.bsth.data.utils.HttpClientUtils;
9 11 import com.bsth.data.utils.RsRequestUtils;
10 12 import com.bsth.entity.Person;
  13 +import com.bsth.redis.RedisUtils;
11 14 import com.bsth.util.ConfigUtil;
12 15 import com.github.stuxuhai.jpinyin.PinyinFormat;
13 16 import com.github.stuxuhai.jpinyin.PinyinHelper;
  17 +import com.google.common.base.Joiner;
14 18 import com.google.common.base.Splitter;
15 19 import org.apache.commons.lang3.StringUtils;
16 20 import org.slf4j.Logger;
... ... @@ -32,10 +36,14 @@ public class PersonDataBuffer implements CommandLineRunner {
32 36 private static List<Person> list;
33 37 private static Map<String, Person> idMaps;
34 38 private static String dataUrl;
  39 + private static String picUrl;
35 40 public static List<String> companys;//有权限的公司编码list
36 41 //private static String companyId;
37 42  
38 43 @Autowired
  44 + RedisUtils redisUtils;
  45 +
  46 + @Autowired
39 47 PersonFixedRefreshThread personFixedRefreshThread;
40 48  
41 49 static Logger logger = LoggerFactory.getLogger(PersonDataBuffer.class);
... ... @@ -44,10 +52,11 @@ public class PersonDataBuffer implements CommandLineRunner {
44 52 list = new ArrayList<>();
45 53 idMaps = new HashMap<>();
46 54 dataUrl = ConfigUtil.get("data.base.url") + "/rest/person";
  55 + picUrl = ConfigUtil.get("data.base.pic.url") + "/person_head_pic";
47 56 companys = Splitter.on(",").splitToList(ConfigUtil.get("tcc.company.id"));
48 57 }
49 58  
50   - public void refresh(){
  59 + public void refresh() {
51 60 //personFixedRefreshThread.start();
52 61 personFixedRefreshThread.run();
53 62 }
... ... @@ -59,19 +68,20 @@ public class PersonDataBuffer implements CommandLineRunner {
59 68  
60 69 /**
61 70 * 直接向远端接口提交人卡数据
  71 + *
62 72 * @param jsonStr
63 73 * @return
64 74 */
65 75 public static Map<String, Object> sendCardsData(String jsonStr) {
66 76 Map<String, Object> rs = new HashMap<>();
67   - try{
  77 + try {
68 78 StringBuilder sb = HttpClientUtils.post(dataUrl + "/setCards" + RsRequestUtils.getParams(), jsonStr);
69   - if(sb.length() > 0)
  79 + if (sb.length() > 0)
70 80 rs = JSONObject.parseObject(sb.toString());
71   - else{
  81 + else {
72 82 rs.put("status", ResponseCode.ERROR);
73 83 }
74   - }catch (Exception e){
  84 + } catch (Exception e) {
75 85 logger.error("", e);
76 86 rs.put("status", ResponseCode.ERROR);
77 87 }
... ... @@ -83,20 +93,20 @@ public class PersonDataBuffer implements CommandLineRunner {
83 93  
84 94 @Override
85 95 public void run() {
86   - try{
  96 + try {
87 97 logger.info("同步人员信息...");
88 98 StringBuilder sb = HttpClientUtils.get(dataUrl + "/all" + RsRequestUtils.getParams());
89 99 List<Person> tempList = new ArrayList<>();
90 100  
91   - if(null != sb){
  101 + if (null != sb) {
92 102 tempList = JSON.parseArray(sb.toString(), Person.class);
93 103 }
94 104 logger.info("同步人员信息完成," + tempList.size());
95 105  
96 106 //按公司编码过滤数据
97 107 Set<Person> subList = new HashSet<>();
98   - for(Person p : tempList){
99   - if(companys.contains(p.getCompanyCode()))
  108 + for (Person p : tempList) {
  109 + if (companys.contains(p.getCompanyCode()))
100 110 subList.add(p);
101 111 }
102 112  
... ... @@ -111,50 +121,85 @@ public class PersonDataBuffer implements CommandLineRunner {
111 121  
112 122 //id对照
113 123 Map<String, Person> idMapsCopy = new HashMap<>();
114   - for(Person p : tempList)
  124 + for (Person p : tempList)
115 125 idMapsCopy.put(p.getJobCode(), p);
116 126  
117   - if(tempList.size() == 0)
  127 + if (tempList.size() == 0)
118 128 return;
119 129  
120 130 //做一下拼音映射
121   - for(Person p : tempList){
122   - p.setFullChars(PinyinHelper.convertToPinyinString(p.getPersonnelName(), "" , PinyinFormat.WITHOUT_TONE).toUpperCase());
  131 + for (Person p : tempList) {
  132 + p.setFullChars(PinyinHelper.convertToPinyinString(p.getPersonnelName(), "", PinyinFormat.WITHOUT_TONE).toUpperCase());
123 133 p.setCamelChars(PinyinHelper.getShortPinyin(p.getPersonnelName()).toUpperCase());
124 134 }
125 135  
  136 + //是否有照片
  137 + addPicField(tempList);
  138 +
126 139 list = tempList;
127 140 idMaps = idMapsCopy;
128 141 logger.info("人员信息过滤," + list.size());
129   - }catch (Exception e){
  142 +
  143 + //写一份数据到 redis
  144 + redisUtils.writePersons(list);
  145 + } catch (Exception e) {
  146 + logger.error("", e);
  147 + }
  148 + }
  149 +
  150 + public void addPicField(List<Person> list) {
  151 + try {
  152 + StringBuilder sb = HttpClientUtils.get(picUrl + "/names/" + Joiner.on(",").join(companys));
  153 + JSONArray array = JSONArray.parseArray(sb.toString());
  154 +
  155 + if(array.size() == 0)
  156 + return;
  157 +
  158 + //做映射
  159 + Map<String, Person> map = new HashMap<>();
  160 + for(Person p : list){
  161 + map.put(p.getJobCode(), p);
  162 + }
  163 +
  164 + Person p;
  165 + String str;
  166 + for (int i = 0, len = array.size(); i < len; i++) {
  167 + str = array.getString(i);
  168 +
  169 + p = map.get(str);
  170 +
  171 + if(null != p)
  172 + p.setPic(true);
  173 + }
  174 + } catch (Exception e) {
130 175 logger.error("", e);
131 176 }
132 177 }
133 178 }
134 179  
135   - public static List<Person> findAll(){
  180 + public static List<Person> findAll() {
136 181 return list;
137 182 }
138 183  
139   - public static Person findOne(String jobCode){
  184 + public static Person findOne(String jobCode) {
140 185 return idMaps.get(jobCode);
141 186 }
142 187  
143   - public static Person findByCard(String pCard){
144   - if(StringUtils.isEmpty(pCard))
  188 + public static Person findByCard(String pCard) {
  189 + if (StringUtils.isEmpty(pCard))
145 190 return null;
146 191  
147   - for(Person p : list){
148   - if(pCard.equals(p.getIdRfid()))
  192 + for (Person p : list) {
  193 + if (pCard.equals(p.getIdRfid()))
149 194 return p;
150 195 }
151 196 return null;
152 197 }
153 198  
154 199 public static Person updateCardInfo(Person np) throws Exception {
155   - Person p =findOne(np.getJobCode());
156   - if(null != p){
157   - try{
  200 + Person p = findOne(np.getJobCode());
  201 + if (null != p) {
  202 + try {
158 203 Map<String, String> bodyMap = new HashMap<>();
159 204 bodyMap.put("company", p.getCompanyCode());
160 205 bodyMap.put("jobCode", np.getJobCode().split("-")[1]);
... ... @@ -166,10 +211,10 @@ public class PersonDataBuffer implements CommandLineRunner {
166 211 StringBuilder sb = HttpClientUtils.post(dataUrl + "/setCards" + RsRequestUtils.getParams(), bodyStr);
167 212 Map<String, Object> rs = JSONObject.parseObject(sb.toString());
168 213  
169   - if(((int)rs.get("success")) != 1){
  214 + if (((int) rs.get("success")) != 1) {
170 215 throw new RemotePostDataException("setCards");
171 216 }
172   - }catch (Exception e){
  217 + } catch (Exception e) {
173 218 logger.error("", e);
174 219 throw e;
175 220 }
... ...
src/main/java/com/bsth/data/in_out/buffer/BerthDataBuffer.java
... ... @@ -170,7 +170,7 @@ public class BerthDataBuffer {
170 170  
171 171 @Override
172 172 public int compare(RegionBerth b1, RegionBerth b2) {
173   - return b1.getOrderNo().compareTo(b2.getOrderNo());
  173 + return Integer.parseInt(b1.getOrderNo()) - Integer.parseInt(b2.getOrderNo());
174 174 }
175 175 }
176 176 }
... ...
src/main/java/com/bsth/data/utils/RsRequestUtils.java
... ... @@ -62,7 +62,6 @@ public class RsRequestUtils {
62 62 String sign = getSHA1(paramMap);
63 63 paramMap.put("sign", sign);
64 64  
65   - //rs = "?password="+password+"&timestamp="+t+"&nonce="+nonce+"&sign="+sign;
66 65 Set<String> ks = paramMap.keySet();
67 66 for(String k : ks){
68 67 rs.append(k + "=" + paramMap.get(k) + "&");
... ... @@ -104,16 +103,16 @@ public class RsRequestUtils {
104 103 MessageDigest md = MessageDigest.getInstance("SHA-1");
105 104 md.update(str.getBytes());
106 105 byte[] digest = md.digest();
107   - StringBuffer hexstr = new StringBuffer();
108   - String shaHex = "";
  106 + StringBuffer hexStr = new StringBuffer();
  107 + String shaHex;
109 108 for (int i = 0; i < digest.length; i++) {
110 109 shaHex = Integer.toHexString(digest[i] & 0xFF);
111 110 if (shaHex.length() < 2) {
112   - hexstr.append(0);
  111 + hexStr.append(0);
113 112 }
114   - hexstr.append(shaHex);
  113 + hexStr.append(shaHex);
115 114 }
116   - return hexstr.toString();
  115 + return hexStr.toString();
117 116 } catch (Exception e) {
118 117 throw e;
119 118 }
... ...
src/main/java/com/bsth/entity/Person.java
... ... @@ -87,6 +87,11 @@ public class Person {
87 87  
88 88 private String remark;
89 89  
  90 + /**
  91 + * 有照片信息
  92 + */
  93 + private boolean isPic;
  94 +
90 95 public String getJobCode() {
91 96 return jobCode;
92 97 }
... ... @@ -249,4 +254,12 @@ public class Person {
249 254 public void setCamelChars(String camelChars) {
250 255 this.camelChars = camelChars;
251 256 }
  257 +
  258 + public boolean isPic() {
  259 + return isPic;
  260 + }
  261 +
  262 + public void setPic(boolean pic) {
  263 + isPic = pic;
  264 + }
252 265 }
... ...
src/main/java/com/bsth/redis/RedisUtils.java 0 → 100644
  1 +package com.bsth.redis;
  2 +
  3 +import com.alibaba.fastjson.JSON;
  4 +import com.bsth.entity.Person;
  5 +import org.apache.commons.lang3.StringUtils;
  6 +import org.springframework.beans.factory.annotation.Autowired;
  7 +import org.springframework.data.redis.core.StringRedisTemplate;
  8 +import org.springframework.stereotype.Component;
  9 +
  10 +import java.util.List;
  11 +
  12 +@Component
  13 +public class RedisUtils {
  14 +
  15 + @Autowired
  16 + private StringRedisTemplate redisTemplate;
  17 +
  18 + /**
  19 + * 将人员信息写入 redis
  20 + *
  21 + * @param list
  22 + */
  23 + public void writePersons(List<Person> list) {
  24 + String redis_key_prefix = "person:card:";
  25 +
  26 + for(Person p : list){
  27 + if(StringUtils.isEmpty(p.getIdRfid()))
  28 + continue;
  29 + redisTemplate.opsForValue().set(redis_key_prefix + p.getIdRfid(), JSON.toJSONString(p));
  30 + }
  31 + }
  32 +}
... ...
src/main/resources/application-dev.properties
... ... @@ -22,3 +22,9 @@ spring.datasource.test-on-connect=true
22 22 spring.datasource.test-on-return=true
23 23 spring.datasource.test-while-idle=true
24 24 spring.datasource.validation-query=select 1
  25 +
  26 +#REDIS
  27 +spring.redis.database=0
  28 +spring.redis.host=127.0.0.1
  29 +spring.redis.password=bsth_control_001
  30 +spring.redis.port=28008
... ...
src/main/resources/application-prod.properties
... ... @@ -21,4 +21,10 @@ spring.datasource.test-on-borrow=true
21 21 spring.datasource.test-on-connect=true
22 22 spring.datasource.test-on-return=true
23 23 spring.datasource.test-while-idle=true
24   -spring.datasource.validation-query=select 1
25 24 \ No newline at end of file
  25 +spring.datasource.validation-query=select 1
  26 +
  27 +#REDIS
  28 +spring.redis.database=0
  29 +spring.redis.host=127.0.0.1
  30 +spring.redis.password=bsth_control_001
  31 +spring.redis.port=28008
26 32 \ No newline at end of file
... ...
src/main/resources/static/assets/css/main.css
... ... @@ -1144,4 +1144,27 @@ table.plan_s_tab_width a._grey{
1144 1144  
1145 1145 .maintain_p_tab_width .ct_grey{
1146 1146 color: grey;
  1147 +}
  1148 +
  1149 +.tippy-tooltip.Light-theme{
  1150 +
  1151 +}
  1152 +
  1153 +.tippy-tooltip {
  1154 + background-color: #eaeaea !important;
  1155 + padding: 0px !important;
  1156 + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.17);
  1157 + border: 1px solid #5a9bd2;
  1158 + border-radius: 0;
  1159 +}
  1160 +
  1161 +.tippy-popper[x-placement^=left] .tippy-arrow {
  1162 + border-left: 7px solid #5a9bd2 !important;
  1163 +}
  1164 +
  1165 +
  1166 +._tip_text{
  1167 + padding: 3px 9px;
  1168 + background: #4f93cf;
  1169 + color: #fff;
1147 1170 }
1148 1171 \ No newline at end of file
... ...
src/main/resources/static/assets/plugins/tippy/tippy.all.min.js 0 → 100644
  1 +(function(t,e){'object'==typeof exports&&'undefined'!=typeof module?module.exports=e():'function'==typeof define&&define.amd?define(e):t.tippy=e()})(this,function(){'use strict';function t(t){return'[object Object]'===Object.prototype.toString.call(t)}function a(e){if(e instanceof Element||t(e))return[e];if(e instanceof NodeList)return[].slice.call(e);if(Array.isArray(e))return e;try{return[].slice.call(document.querySelectorAll(e))}catch(t){return[]}}function o(t,e){var a=Bt.reduce(function(a,i){var o=t.getAttribute('data-tippy-'+i.toLowerCase())||e[i];return'false'===o&&(o=!1),'true'===o&&(o=!0),isFinite(o)&&!isNaN(parseFloat(o))&&(o=parseFloat(o)),'string'==typeof o&&'['===o.trim().charAt(0)&&(o=JSON.parse(o)),a[i]=o,a},{});return _t({},e,a)}function r(t){for(var e=[!1,'webkit'],a=t.charAt(0).toUpperCase()+t.slice(1),o=0;o<e.length;o++){var i=e[o],r=i?''+i+a:t;if('undefined'!=typeof document.body.style[r])return r}return null}function p(t,e,a){var i=a.placement,o=a.distance,p=a.arrow,n=a.arrowType,s=a.arrowTransform,l=a.animateFill,d=a.inertia,c=a.animation,m=a.size,f=a.theme,h=a.html,b=a.zIndex,u=a.interactive,y=a.maxWidth,g=document.createElement('div');g.setAttribute('class','tippy-popper'),g.setAttribute('role','tooltip'),g.setAttribute('id','tippy-'+t),g.style.zIndex=b,g.style.maxWidth=y;var x=document.createElement('div');if(x.setAttribute('class','tippy-tooltip'),x.setAttribute('data-size',m),x.setAttribute('data-animation',c),x.setAttribute('data-state','hidden'),f.split(' ').forEach(function(e){x.classList.add(e+'-theme')}),p){var w=document.createElement('div');w.style[r('transform')]=s,'round'===n?(w.classList.add('tippy-roundarrow'),w.innerHTML='\n <svg width="100%" height="100%" viewBox="0 0 64 20" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;">\n <g transform="matrix(1.04009,0,0,1.45139,-1.26297,-65.9145)">\n <path d="M1.214,59.185C1.214,59.185 12.868,59.992 21.5,51.55C29.887,43.347 33.898,43.308 42.5,51.55C51.352,60.031 62.747,59.185 62.747,59.185L1.214,59.185Z"/>\n </g>\n </svg>'):w.classList.add('tippy-arrow'),x.appendChild(w)}if(l){x.setAttribute('data-animatefill','');var v=document.createElement('div');v.setAttribute('data-state','hidden'),v.classList.add('tippy-backdrop'),x.appendChild(v)}d&&x.setAttribute('data-inertia',''),u&&x.setAttribute('data-interactive','');var k=document.createElement('div');if(k.setAttribute('class','tippy-content'),h){var E;h instanceof Element?(k.appendChild(h),E='#'+h.id||'tippy-html-template'):(k.innerHTML=document.querySelector(h).innerHTML,E=h),g.setAttribute('data-html',''),u&&g.setAttribute('tabindex','-1'),x.setAttribute('data-template-id',E)}else k.innerHTML=e;return x.appendChild(k),g.appendChild(x),g}function n(t,e,a,i){var o=[];return'manual'===t?o:(e.addEventListener(t,a.handleTrigger),o.push({event:t,handler:a.handleTrigger}),'mouseenter'===t&&(Nt.supportsTouch&&i&&(e.addEventListener('touchstart',a.handleTrigger),o.push({event:'touchstart',handler:a.handleTrigger}),e.addEventListener('touchend',a.handleMouseleave),o.push({event:'touchend',handler:a.handleMouseleave})),e.addEventListener('mouseleave',a.handleMouseleave),o.push({event:'mouseleave',handler:a.handleMouseleave})),'focus'===t&&(e.addEventListener('blur',a.handleBlur),o.push({event:'blur',handler:a.handleBlur})),o)}function s(t,e){return e.arrow&&(e.animateFill=!1),e.appendTo&&'function'==typeof e.appendTo&&(e.appendTo=e.appendTo()),'function'==typeof e.html&&(e.html=e.html(t)),e}function l(t){return{tooltip:t.querySelector(It.TOOLTIP),backdrop:t.querySelector(It.BACKDROP),content:t.querySelector(It.CONTENT)}}function d(t){var e=t.getAttribute('title');e&&t.setAttribute('data-original-title',e),t.removeAttribute('title')}function c(t){return t&&'[object Function]'==={}.toString.call(t)}function m(t,e){if(1!==t.nodeType)return[];var a=getComputedStyle(t,null);return e?a[e]:a}function f(t){return'HTML'===t.nodeName?t:t.parentNode||t.host}function h(t){if(!t)return document.body;switch(t.nodeName){case'HTML':case'BODY':return t.ownerDocument.body;case'#document':return t.body;}var e=m(t),a=e.overflow,i=e.overflowX,o=e.overflowY;return /(auto|scroll)/.test(a+o+i)?t:h(f(t))}function b(t){var e=t&&t.offsetParent,a=e&&e.nodeName;return a&&'BODY'!==a&&'HTML'!==a?-1!==['TD','TABLE'].indexOf(e.nodeName)&&'static'===m(e,'position')?b(e):e:t?t.ownerDocument.documentElement:document.documentElement}function u(t){var e=t.nodeName;return'BODY'!==e&&('HTML'===e||b(t.firstElementChild)===t)}function y(t){return null===t.parentNode?t:y(t.parentNode)}function g(t,e){if(!t||!t.nodeType||!e||!e.nodeType)return document.documentElement;var a=t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING,i=a?t:e,o=a?e:t,r=document.createRange();r.setStart(i,0),r.setEnd(o,0);var p=r.commonAncestorContainer;if(t!==p&&e!==p||i.contains(o))return u(p)?p:b(p);var n=y(t);return n.host?g(n.host,e):g(t,y(e).host)}function x(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:'top',a='top'===e?'scrollTop':'scrollLeft',i=t.nodeName;if('BODY'===i||'HTML'===i){var o=t.ownerDocument.documentElement,r=t.ownerDocument.scrollingElement||o;return r[a]}return t[a]}function w(t,e){var a=2<arguments.length&&void 0!==arguments[2]&&arguments[2],i=x(e,'top'),o=x(e,'left'),r=a?-1:1;return t.top+=i*r,t.bottom+=i*r,t.left+=o*r,t.right+=o*r,t}function v(t,e){var a='x'===e?'Left':'Top',i='Left'==a?'Right':'Bottom';return parseFloat(t['border'+a+'Width'],10)+parseFloat(t['border'+i+'Width'],10)}function k(t,e,a,i){return Pt(e['offset'+t],e['scroll'+t],a['client'+t],a['offset'+t],a['scroll'+t],Kt()?a['offset'+t]+i['margin'+('Height'===t?'Top':'Left')]+i['margin'+('Height'===t?'Bottom':'Right')]:0)}function E(){var t=document.body,e=document.documentElement,a=Kt()&&getComputedStyle(e);return{height:k('Height',t,e,a),width:k('Width',t,e,a)}}function T(t){return Qt({},t,{right:t.left+t.width,bottom:t.top+t.height})}function L(t){var e={};if(Kt())try{e=t.getBoundingClientRect();var a=x(t,'top'),i=x(t,'left');e.top+=a,e.left+=i,e.bottom+=a,e.right+=i}catch(t){}else e=t.getBoundingClientRect();var o={left:e.left,top:e.top,width:e.right-e.left,height:e.bottom-e.top},r='HTML'===t.nodeName?E():{},p=r.width||t.clientWidth||o.right-o.left,n=r.height||t.clientHeight||o.bottom-o.top,s=t.offsetWidth-p,l=t.offsetHeight-n;if(s||l){var d=m(t);s-=v(d,'x'),l-=v(d,'y'),o.width-=s,o.height-=l}return T(o)}function O(t,e){var a=Kt(),i='HTML'===e.nodeName,o=L(t),r=L(e),p=h(t),n=m(e),s=parseFloat(n.borderTopWidth,10),l=parseFloat(n.borderLeftWidth,10),d=T({top:o.top-r.top-s,left:o.left-r.left-l,width:o.width,height:o.height});if(d.marginTop=0,d.marginLeft=0,!a&&i){var c=parseFloat(n.marginTop,10),f=parseFloat(n.marginLeft,10);d.top-=s-c,d.bottom-=s-c,d.left-=l-f,d.right-=l-f,d.marginTop=c,d.marginLeft=f}return(a?e.contains(p):e===p&&'BODY'!==p.nodeName)&&(d=w(d,e)),d}function C(t){var e=t.ownerDocument.documentElement,a=O(t,e),i=Pt(e.clientWidth,window.innerWidth||0),o=Pt(e.clientHeight,window.innerHeight||0),r=x(e),p=x(e,'left'),n={top:r-a.top+a.marginTop,left:p-a.left+a.marginLeft,width:i,height:o};return T(n)}function A(t){var e=t.nodeName;return'BODY'===e||'HTML'===e?!1:'fixed'===m(t,'position')||A(f(t))}function S(t,e,a,i){var o={top:0,left:0},r=g(t,e);if('viewport'===i)o=C(r);else{var p;'scrollParent'===i?(p=h(f(e)),'BODY'===p.nodeName&&(p=t.ownerDocument.documentElement)):'window'===i?p=t.ownerDocument.documentElement:p=i;var n=O(p,r);if('HTML'===p.nodeName&&!A(r)){var s=E(),l=s.height,d=s.width;o.top+=n.top-n.marginTop,o.bottom=l+n.top,o.left+=n.left-n.marginLeft,o.right=d+n.left}else o=n}return o.left+=a,o.top+=a,o.right-=a,o.bottom-=a,o}function Y(t){var e=t.width,a=t.height;return e*a}function X(t,e,a,i,o){var r=5<arguments.length&&void 0!==arguments[5]?arguments[5]:0;if(-1===t.indexOf('auto'))return t;var p=S(a,i,r,o),n={top:{width:p.width,height:e.top-p.top},right:{width:p.right-e.right,height:p.height},bottom:{width:p.width,height:p.bottom-e.bottom},left:{width:e.left-p.left,height:p.height}},s=Object.keys(n).map(function(t){return Qt({key:t},n[t],{area:Y(n[t])})}).sort(function(t,e){return e.area-t.area}),l=s.filter(function(t){var e=t.width,i=t.height;return e>=a.clientWidth&&i>=a.clientHeight}),d=0<l.length?l[0].key:s[0].key,c=t.split('-')[1];return d+(c?'-'+c:'')}function P(t,e,a){var i=g(e,a);return O(a,i)}function D(t){var e=getComputedStyle(t),a=parseFloat(e.marginTop)+parseFloat(e.marginBottom),i=parseFloat(e.marginLeft)+parseFloat(e.marginRight),o={width:t.offsetWidth+i,height:t.offsetHeight+a};return o}function N(t){var e={left:'right',right:'left',bottom:'top',top:'bottom'};return t.replace(/left|right|bottom|top/g,function(t){return e[t]})}function I(t,e,a){a=a.split('-')[0];var i=D(t),o={width:i.width,height:i.height},r=-1!==['right','left'].indexOf(a),p=r?'top':'left',n=r?'left':'top',s=r?'height':'width',l=r?'width':'height';return o[p]=e[p]+e[s]/2-i[s]/2,o[n]=a===n?e[n]-i[l]:e[N(n)],o}function R(t,e){return Array.prototype.find?t.find(e):t.filter(e)[0]}function B(t,e,a){if(Array.prototype.findIndex)return t.findIndex(function(t){return t[e]===a});var i=R(t,function(t){return t[e]===a});return t.indexOf(i)}function W(t,e,a){var i=void 0===a?t:t.slice(0,B(t,'name',a));return i.forEach(function(t){t['function']&&console.warn('`modifier.function` is deprecated, use `modifier.fn`!');var a=t['function']||t.fn;t.enabled&&c(a)&&(e.offsets.popper=T(e.offsets.popper),e.offsets.reference=T(e.offsets.reference),e=a(e,t))}),e}function H(){if(!this.state.isDestroyed){var t={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};t.offsets.reference=P(this.state,this.popper,this.reference),t.placement=X(this.options.placement,t.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),t.originalPlacement=t.placement,t.offsets.popper=I(this.popper,t.offsets.reference,t.placement),t.offsets.popper.position='absolute',t=W(this.modifiers,t),this.state.isCreated?this.options.onUpdate(t):(this.state.isCreated=!0,this.options.onCreate(t))}}function _(t,e){return t.some(function(t){var a=t.name,i=t.enabled;return i&&a===e})}function M(t){for(var e=[!1,'ms','Webkit','Moz','O'],a=t.charAt(0).toUpperCase()+t.slice(1),o=0;o<e.length-1;o++){var i=e[o],r=i?''+i+a:t;if('undefined'!=typeof document.body.style[r])return r}return null}function z(){return this.state.isDestroyed=!0,_(this.modifiers,'applyStyle')&&(this.popper.removeAttribute('x-placement'),this.popper.style.left='',this.popper.style.position='',this.popper.style.top='',this.popper.style[M('transform')]=''),this.disableEventListeners(),this.options.removeOnDestroy&&this.popper.parentNode.removeChild(this.popper),this}function U(t){var e=t.ownerDocument;return e?e.defaultView:window}function q(t,e,a,i){var o='BODY'===t.nodeName,r=o?t.ownerDocument.defaultView:t;r.addEventListener(e,a,{passive:!0}),o||q(h(r.parentNode),e,a,i),i.push(r)}function F(t,e,a,i){a.updateBound=i,U(t).addEventListener('resize',a.updateBound,{passive:!0});var o=h(t);return q(o,'scroll',a.updateBound,a.scrollParents),a.scrollElement=o,a.eventsEnabled=!0,a}function j(){this.state.eventsEnabled||(this.state=F(this.reference,this.options,this.state,this.scheduleUpdate))}function K(t,e){return U(t).removeEventListener('resize',e.updateBound),e.scrollParents.forEach(function(t){t.removeEventListener('scroll',e.updateBound)}),e.updateBound=null,e.scrollParents=[],e.scrollElement=null,e.eventsEnabled=!1,e}function V(){this.state.eventsEnabled&&(cancelAnimationFrame(this.scheduleUpdate),this.state=K(this.reference,this.state))}function G(t){return''!==t&&!isNaN(parseFloat(t))&&isFinite(t)}function Z(t,e){Object.keys(e).forEach(function(a){var i='';-1!==['width','height','top','right','bottom','left'].indexOf(a)&&G(e[a])&&(i='px'),t.style[a]=e[a]+i})}function Q(t,e){Object.keys(e).forEach(function(a){var i=e[a];!1===i?t.removeAttribute(a):t.setAttribute(a,e[a])})}function $(t,e,a){var i=R(t,function(t){var a=t.name;return a===e}),o=!!i&&t.some(function(t){return t.name===a&&t.enabled&&t.order<i.order});if(!o){var r='`'+e+'`';console.warn('`'+a+'`'+' modifier is required by '+r+' modifier in order to work, be sure to include it before '+r+'!')}return o}function J(t){return'end'===t?'start':'start'===t?'end':t}function tt(t){var e=1<arguments.length&&void 0!==arguments[1]&&arguments[1],a=Jt.indexOf(t),i=Jt.slice(a+1).concat(Jt.slice(0,a));return e?i.reverse():i}function et(t,e,a,i){var o=t.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),r=+o[1],p=o[2];if(!r)return t;if(0===p.indexOf('%')){var n;switch(p){case'%p':n=a;break;case'%':case'%r':default:n=i;}var s=T(n);return s[e]/100*r}if('vh'===p||'vw'===p){var l;return l='vh'===p?Pt(document.documentElement.clientHeight,window.innerHeight||0):Pt(document.documentElement.clientWidth,window.innerWidth||0),l/100*r}return r}function at(t,e,a,i){var o=[0,0],r=-1!==['right','left'].indexOf(i),p=t.split(/(\+|\-)/).map(function(t){return t.trim()}),n=p.indexOf(R(p,function(t){return-1!==t.search(/,|\s/)}));p[n]&&-1===p[n].indexOf(',')&&console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');var s=/\s*,\s*|\s+/,l=-1===n?[p]:[p.slice(0,n).concat([p[n].split(s)[0]]),[p[n].split(s)[1],p.slice(n+1)]];return l=l.map(function(t,i){var o=(1===i?!r:r)?'height':'width',p=!1;return t.reduce(function(t,e){return''===t[t.length-1]&&-1!==['+','-'].indexOf(e)?(t[t.length-1]=e,p=!0,t):p?(t[t.length-1]+=e,p=!1,t):t.concat(e)},[]).map(function(t){return et(t,o,e,a)})}),l.forEach(function(t,e){t.forEach(function(a,i){G(a)&&(o[e]+=a*('-'===t[i-1]?-1:1))})}),o}function it(t){return t.getAttribute('x-placement').replace(/-.+/,'')}function ot(t,e,a){if(!e.getAttribute('x-placement'))return!0;var i=t.clientX,o=t.clientY,r=a.interactiveBorder,p=a.distance,n=e.getBoundingClientRect(),s=it(e),l=r+p,d={top:n.top-o>r,bottom:o-n.bottom>r,left:n.left-i>r,right:i-n.right>r};return'top'===s?d.top=n.top-o>l:'bottom'===s?d.bottom=o-n.bottom>l:'left'===s?d.left=n.left-i>l:'right'===s?d.right=i-n.right>l:void 0,d.top||d.bottom||d.left||d.right}function rt(t,e,a,i){if(!e.length)return'';var o={scale:function(){return 1===e.length?''+e[0]:a?e[0]+', '+e[1]:e[1]+', '+e[0]}(),translate:function(){return 1===e.length?i?-e[0]+'px':e[0]+'px':a?i?e[0]+'px, '+-e[1]+'px':e[0]+'px, '+e[1]+'px':i?-e[1]+'px, '+e[0]+'px':e[1]+'px, '+e[0]+'px'}()};return o[t]}function pt(t,e){if(!t)return'';return e?t:{X:'Y',Y:'X'}[t]}function nt(t,e,a){var i=it(t),o='top'===i||'bottom'===i,p='right'===i||'bottom'===i,n=function(t){var e=a.match(t);return e?e[1]:''},s=function(t){var e=a.match(t);return e?e[1].split(',').map(parseFloat):[]},l={translate:/translateX?Y?\(([^)]+)\)/,scale:/scaleX?Y?\(([^)]+)\)/},d={translate:{axis:n(/translate([XY])/),numbers:s(l.translate)},scale:{axis:n(/scale([XY])/),numbers:s(l.scale)}},c=a.replace(l.translate,'translate'+pt(d.translate.axis,o)+'('+rt('translate',d.translate.numbers,o,p)+')').replace(l.scale,'scale'+pt(d.scale.axis,o)+'('+rt('scale',d.scale.numbers,o,p)+')');e.style[r('transform')]=c}function st(t){var e=t.getBoundingClientRect();return 0<=e.top&&0<=e.left&&e.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&e.right<=(window.innerWidth||document.documentElement.clientWidth)}function lt(t){return-(t-Rt.distance)+'px'}function dt(t){requestAnimationFrame(function(){setTimeout(t,0)})}function ct(t,a){var i=Element.prototype.closest||function(t){for(var a=this;a;){if(e.call(a,t))return a;a=a.parentElement}};return i.call(t,a)}function mt(t,e){return Array.isArray(t)?t[e]:t}function ft(t,e){t.forEach(function(t){t&&t.setAttribute('data-state',e)})}function ht(t,e){t.forEach(function(t){t&&(t.style[r('transitionDuration')]=e+'ms')})}function bt(t){var e=this;if(wt.call(this),!this.state.visible){if(this.options.wait)return void this.options.wait.call(this.popper,this.show.bind(this),t);var a=Array.isArray(this.options.delay)?this.options.delay[0]:this.options.delay;a?this._internal.showTimeout=setTimeout(function(){e.show()},a):this.show()}}function ut(){var t=this;if(wt.call(this),!!this.state.visible){var e=Array.isArray(this.options.delay)?this.options.delay[1]:this.options.delay;e?this._internal.hideTimeout=setTimeout(function(){t.state.visible&&t.hide()},e):this.hide()}}function yt(){var t=this;return{handleTrigger:function(e){if(!t.state.disabled){var a=Nt.supportsTouch&&Nt.usingTouch&&('mouseenter'===e.type||'focus'===e.type);a&&t.options.touchHold||(t._internal.lastTriggerEvent=e,'click'===e.type&&'persistent'!==t.options.hideOnClick&&t.state.visible?ut.call(t):bt.call(t,e),a&&Nt.iOS&&t.reference.click&&t.reference.click())}},handleMouseleave:function(e){if(!('mouseleave'===e.type&&Nt.supportsTouch&&Nt.usingTouch&&t.options.touchHold)){if(t.options.interactive){var a=ut.bind(t),i=function e(i){var o=ct(i.target,It.REFERENCE),r=ct(i.target,It.POPPER)===t.popper,p=o===t.reference;r||p||ot(i,t.popper,t.options)&&(document.body.removeEventListener('mouseleave',a),document.removeEventListener('mousemove',e),ut.call(t))};return document.body.addEventListener('mouseleave',a),void document.addEventListener('mousemove',i)}ut.call(t)}},handleBlur:function(e){!e.relatedTarget||Nt.usingTouch||ct(e.relatedTarget,It.POPPER)||ut.call(t)}}}function gt(){var t=this,e=this.popper,a=this.reference,i=this.options,o=l(e),p=o.tooltip,n=i.popperOptions,s='round'===i.arrowType?It.ROUND_ARROW:It.ARROW,d=p.querySelector(s),c=_t({placement:i.placement},n||{},{modifiers:_t({},n?n.modifiers:{},{arrow:_t({element:s},n&&n.modifiers?n.modifiers.arrow:{}),flip:_t({enabled:i.flip,padding:i.distance+5,behavior:i.flipBehavior},n&&n.modifiers?n.modifiers.flip:{}),offset:_t({offset:i.offset},n&&n.modifiers?n.modifiers.offset:{})}),onCreate:function(){p.style[it(e)]=lt(i.distance),d&&i.arrowTransform&&nt(e,d,i.arrowTransform)},onUpdate:function(){var t=p.style;t.top='',t.bottom='',t.left='',t.right='',t[it(e)]=lt(i.distance),d&&i.arrowTransform&&nt(e,d,i.arrowTransform)}});return Et.call(this,{target:e,callback:function(){var a=e.style;a[r('transitionDuration')]='0ms',t.popperInstance.update(),dt(function(){a[r('transitionDuration')]=i.updateDuration+'ms'})},options:{childList:!0,subtree:!0,characterData:!0}}),new ee(a,e,c)}function xt(){var t=this,e=this.popper;this.options.appendTo.contains(e)||(this.options.appendTo.appendChild(e),this.popperInstance?(e.style[r('transform')]=null,this.popperInstance.update(),(!this.options.followCursor||Nt.usingTouch)&&this.popperInstance.enableEventListeners()):this.popperInstance=gt.call(this),this.options.followCursor&&!Nt.usingTouch&&(!this._internal.followCursorListener&&vt.call(this),document.addEventListener('mousemove',this._internal.followCursorListener),this.popperInstance.disableEventListeners(),dt(function(){t._internal.followCursorListener(t._internal.lastTriggerEvent)})))}function wt(){clearTimeout(this._internal.showTimeout),clearTimeout(this._internal.hideTimeout)}function vt(){var t=this;this._internal.followCursorListener=function(a){if('focus'!==t._internal.lastTriggerEvent.type){var e,i,o=t.popper,p=t.options.offset,n=it(o),s=St(o.offsetWidth/2),l=St(o.offsetHeight/2),d=5,c=document.documentElement.offsetWidth||document.body.offsetWidth,m=a.pageX,f=a.pageY;'top'===n?(e=m-s+p,i=f-2*l):'bottom'===n?(e=m-s+p,i=f+10):'left'===n?(e=m-2*s,i=f-l+p):'right'===n?(e=m+5,i=f-l+p):void 0;('top'===n||'bottom'===n)&&(m+d+s+p>c&&(e=c-d-2*s),0>m-d-s+p&&(e=d)),o.style[r('transform')]='translate3d('+e+'px, '+i+'px, 0)'}}}function kt(){var t=this,e=function(){t.popper.style[r('transitionDuration')]=t.options.updateDuration+'ms'},a=function(){t.popper.style[r('transitionDuration')]=''};dt(function i(){t.popperInstance&&t.popperInstance.scheduleUpdate(),e(),t.state.visible?requestAnimationFrame(i):a()})}function Et(t){var e=t.target,a=t.callback,i=t.options;if(window.MutationObserver){var o=new MutationObserver(a);o.observe(e,i),this._internal.mutationObservers.push(o)}}function Tt(t,a){if(!t)return a();var e=l(this.popper),i=e.tooltip,o=function(t,e){e&&i[t+'EventListener']('ontransitionend'in window?'transitionend':'webkitTransitionEnd',e)},r=function t(r){r.target===i&&(o('remove',t),a())};o('remove',this._internal.transitionendListener),o('add',r),this._internal.transitionendListener=r}function Lt(t,e){return t.reduce(function(t,a){var i=re,r=s(a,e.performance?e:o(a,e)),c=r.html,m=r.trigger,f=r.touchHold,h=r.dynamicTitle,b=r.createPopperInstanceOnInit,u=a.getAttribute('title');if(!u&&!c)return t;a.setAttribute('data-tippy',''),a.setAttribute('aria-describedby','tippy-'+i),d(a);var y=p(i,u,r),g=new oe({id:i,reference:a,popper:y,options:r});g.popperInstance=b?gt.call(g):null;var x=yt.call(g);return g.listeners=m.trim().split(' ').reduce(function(t,e){return t.concat(n(e,a,x,f))},[]),h&&Et.call(g,{target:a,callback:function(){var t=l(y),e=t.content,i=a.getAttribute('title');i&&(e.innerHTML=i,d(a))},options:{attributes:!0}}),a._tippy=g,y._reference=a,t.push(g),re++,t},[])}function Ot(t){var e=[].slice.call(document.querySelectorAll(It.POPPER));e.forEach(function(e){var a=e._reference._tippy,i=a.options;(!0===i.hideOnClick||-1<i.trigger.indexOf('focus'))&&(!t||e!==t.popper)&&a.hide()})}function Ct(){var t=function(){Nt.usingTouch||(Nt.usingTouch=!0,Nt.iOS&&document.body.classList.add('tippy-touch'),Nt.dynamicInputDetection&&window.performance&&document.addEventListener('mousemove',a),Nt.onUserInputChange('touch'))},a=function(){var t;return function(){var e=performance.now();20>e-t&&(Nt.usingTouch=!1,document.removeEventListener('mousemove',a),!Nt.iOS&&document.body.classList.remove('tippy-touch'),Nt.onUserInputChange('mouse')),t=e}}();document.addEventListener('click',function(t){if(!(t.target instanceof Element))return Ot();var e=ct(t.target,It.REFERENCE),a=ct(t.target,It.POPPER);if(!(a&&a._reference._tippy.options.interactive)){if(e){var i=e._tippy.options;if(!i.multiple&&Nt.usingTouch||!i.multiple&&-1<i.trigger.indexOf('click'))return Ot(e._tippy);if(!0!==i.hideOnClick||-1<i.trigger.indexOf('click'))return}Ot()}}),document.addEventListener('touchstart',t),window.addEventListener('blur',function(){var t=document,a=t.activeElement;a&&a.blur&&e.call(a,It.REFERENCE)&&a.blur()}),!Nt.supportsTouch&&(navigator.maxTouchPoints||navigator.msMaxTouchPoints)&&document.addEventListener('pointerdown',t)}function At(e,i){return Nt.supported&&!Nt._eventListenersBound&&(Ct(),Nt._eventListenersBound=!0),t(e)&&(e.refObj=!0,e.attributes=e.attributes||{},e.setAttribute=function(t,a){e.attributes[t]=a},e.getAttribute=function(t){return e.attributes[t]},e.removeAttribute=function(t){delete e.attributes[t]},e.addEventListener=function(){},e.removeEventListener=function(){},e.classList={classNames:{},add:function(t){return e.classList.classNames[t]=!0},remove:function(t){return delete e.classList.classNames[t],!0},contains:function(t){return!!e.classList.classNames[t]}}),i=_t({},Rt,i),{selector:e,options:i,tooltips:Nt.supported?Lt(a(e),i):[],destroyAll:function(){this.tooltips.forEach(function(t){return t.destroy()})}}}var St=Math.round,Yt=Math.min,Xt=Math.floor,Pt=Math.max,Dt='undefined'!=typeof window,Nt={};Dt&&(Nt.supported='requestAnimationFrame'in window,Nt.supportsTouch='ontouchstart'in window,Nt.usingTouch=!1,Nt.dynamicInputDetection=!0,Nt.iOS=/iPhone|iPad|iPod/.test(navigator.platform)&&!window.MSStream,Nt.onUserInputChange=function(){},Nt._eventListenersBound=!1);for(var It={POPPER:'.tippy-popper',TOOLTIP:'.tippy-tooltip',CONTENT:'.tippy-content',BACKDROP:'.tippy-backdrop',ARROW:'.tippy-arrow',ROUND_ARROW:'.tippy-roundarrow',REFERENCE:'[data-tippy]'},Rt={placement:'top',trigger:'mouseenter focus',animation:'shift-away',html:!1,animateFill:!0,arrow:!1,delay:0,duration:[350,300],interactive:!1,interactiveBorder:2,theme:'dark',size:'regular',distance:10,offset:0,hideOnClick:!0,multiple:!1,followCursor:!1,inertia:!1,updateDuration:350,sticky:!1,appendTo:function(){return document.body},zIndex:9999,touchHold:!1,performance:!1,dynamicTitle:!1,flip:!0,flipBehavior:'flip',arrowType:'sharp',arrowTransform:'',maxWidth:'',popperOptions:{},createPopperInstanceOnInit:!1,onShow:function(){},onShown:function(){},onHide:function(){},onHidden:function(){}},Bt=Nt.supported&&Object.keys(Rt),Wt=function(t,e){if(!(t instanceof e))throw new TypeError('Cannot call a class as a function')},Ht=function(){function t(t,e){for(var a,o=0;o<e.length;o++)a=e[o],a.enumerable=a.enumerable||!1,a.configurable=!0,('value'in a)&&(a.writable=!0),Object.defineProperty(t,a.key,a)}return function(e,a,i){return a&&t(e.prototype,a),i&&t(e,i),e}}(),_t=Object.assign||function(t){for(var e,a=1;a<arguments.length;a++)for(var i in e=arguments[a],e)Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},Mt='undefined'!=typeof window&&'undefined'!=typeof document,zt=['Edge','Trident','Firefox'],Ut=0,qt=0;qt<zt.length;qt+=1)if(Mt&&0<=navigator.userAgent.indexOf(zt[qt])){Ut=1;break}var i,Ft=Mt&&window.Promise,jt=Ft?function(t){var e=!1;return function(){e||(e=!0,window.Promise.resolve().then(function(){e=!1,t()}))}}:function(t){var e=!1;return function(){e||(e=!0,setTimeout(function(){e=!1,t()},Ut))}},Kt=function(){return void 0==i&&(i=-1!==navigator.appVersion.indexOf('MSIE 10')),i},Vt=function(t,e){if(!(t instanceof e))throw new TypeError('Cannot call a class as a function')},Gt=function(){function t(t,e){for(var a,o=0;o<e.length;o++)a=e[o],a.enumerable=a.enumerable||!1,a.configurable=!0,'value'in a&&(a.writable=!0),Object.defineProperty(t,a.key,a)}return function(e,a,i){return a&&t(e.prototype,a),i&&t(e,i),e}}(),Zt=function(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t},Qt=Object.assign||function(t){for(var e,a=1;a<arguments.length;a++)for(var i in e=arguments[a],e)Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},$t=['auto-start','auto','auto-end','top-start','top','top-end','right-start','right','right-end','bottom-end','bottom','bottom-start','left-end','left','left-start'],Jt=$t.slice(3),te={FLIP:'flip',CLOCKWISE:'clockwise',COUNTERCLOCKWISE:'counterclockwise'},ee=function(){function t(e,a){var i=this,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};Vt(this,t),this.scheduleUpdate=function(){return requestAnimationFrame(i.update)},this.update=jt(this.update.bind(this)),this.options=Qt({},t.Defaults,o),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=e&&e.jquery?e[0]:e,this.popper=a&&a.jquery?a[0]:a,this.options.modifiers={},Object.keys(Qt({},t.Defaults.modifiers,o.modifiers)).forEach(function(e){i.options.modifiers[e]=Qt({},t.Defaults.modifiers[e]||{},o.modifiers?o.modifiers[e]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(t){return Qt({name:t},i.options.modifiers[t])}).sort(function(t,e){return t.order-e.order}),this.modifiers.forEach(function(t){t.enabled&&c(t.onLoad)&&t.onLoad(i.reference,i.popper,i.options,t,i.state)}),this.update();var r=this.options.eventsEnabled;r&&this.enableEventListeners(),this.state.eventsEnabled=r}return Gt(t,[{key:'update',value:function(){return H.call(this)}},{key:'destroy',value:function(){return z.call(this)}},{key:'enableEventListeners',value:function(){return j.call(this)}},{key:'disableEventListeners',value:function(){return V.call(this)}}]),t}();ee.Utils=('undefined'==typeof window?global:window).PopperUtils,ee.placements=$t,ee.Defaults={placement:'bottom',eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(t){var e=t.placement,a=e.split('-')[0],i=e.split('-')[1];if(i){var o=t.offsets,r=o.reference,p=o.popper,n=-1!==['bottom','top'].indexOf(a),s=n?'left':'top',l=n?'width':'height',d={start:Zt({},s,r[s]),end:Zt({},s,r[s]+r[l]-p[l])};t.offsets.popper=Qt({},p,d[i])}return t}},offset:{order:200,enabled:!0,fn:function(t,e){var a,i=e.offset,o=t.placement,r=t.offsets,p=r.popper,n=r.reference,s=o.split('-')[0];return a=G(+i)?[+i,0]:at(i,p,n,s),'left'===s?(p.top+=a[0],p.left-=a[1]):'right'===s?(p.top+=a[0],p.left+=a[1]):'top'===s?(p.left+=a[0],p.top-=a[1]):'bottom'===s&&(p.left+=a[0],p.top+=a[1]),t.popper=p,t},offset:0},preventOverflow:{order:300,enabled:!0,fn:function(t,e){var a=e.boundariesElement||b(t.instance.popper);t.instance.reference===a&&(a=b(a));var i=S(t.instance.popper,t.instance.reference,e.padding,a);e.boundaries=i;var o=e.priority,r=t.offsets.popper,p={primary:function(t){var a=r[t];return r[t]<i[t]&&!e.escapeWithReference&&(a=Pt(r[t],i[t])),Zt({},t,a)},secondary:function(t){var a='right'===t?'left':'top',o=r[a];return r[t]>i[t]&&!e.escapeWithReference&&(o=Yt(r[a],i[t]-('right'===t?r.width:r.height))),Zt({},a,o)}};return o.forEach(function(t){var e=-1===['left','top'].indexOf(t)?'secondary':'primary';r=Qt({},r,p[e](t))}),t.offsets.popper=r,t},priority:['left','right','top','bottom'],padding:5,boundariesElement:'scrollParent'},keepTogether:{order:400,enabled:!0,fn:function(t){var e=t.offsets,a=e.popper,i=e.reference,o=t.placement.split('-')[0],r=Xt,p=-1!==['top','bottom'].indexOf(o),n=p?'right':'bottom',s=p?'left':'top',l=p?'width':'height';return a[n]<r(i[s])&&(t.offsets.popper[s]=r(i[s])-a[l]),a[s]>r(i[n])&&(t.offsets.popper[s]=r(i[n])),t}},arrow:{order:500,enabled:!0,fn:function(t,e){var a;if(!$(t.instance.modifiers,'arrow','keepTogether'))return t;var i=e.element;if('string'==typeof i){if(i=t.instance.popper.querySelector(i),!i)return t;}else if(!t.instance.popper.contains(i))return console.warn('WARNING: `arrow.element` must be child of its popper element!'),t;var o=t.placement.split('-')[0],r=t.offsets,p=r.popper,n=r.reference,s=-1!==['left','right'].indexOf(o),l=s?'height':'width',d=s?'Top':'Left',c=d.toLowerCase(),f=s?'left':'top',h=s?'bottom':'right',b=D(i)[l];n[h]-b<p[c]&&(t.offsets.popper[c]-=p[c]-(n[h]-b)),n[c]+b>p[h]&&(t.offsets.popper[c]+=n[c]+b-p[h]),t.offsets.popper=T(t.offsets.popper);var u=n[c]+n[l]/2-b/2,y=m(t.instance.popper),g=parseFloat(y['margin'+d],10),x=parseFloat(y['border'+d+'Width'],10),w=u-t.offsets.popper[c]-g-x;return w=Pt(Yt(p[l]-b,w),0),t.arrowElement=i,t.offsets.arrow=(a={},Zt(a,c,St(w)),Zt(a,f,''),a),t},element:'[x-arrow]'},flip:{order:600,enabled:!0,fn:function(t,e){if(_(t.instance.modifiers,'inner'))return t;if(t.flipped&&t.placement===t.originalPlacement)return t;var a=S(t.instance.popper,t.instance.reference,e.padding,e.boundariesElement),i=t.placement.split('-')[0],o=N(i),r=t.placement.split('-')[1]||'',p=[];switch(e.behavior){case te.FLIP:p=[i,o];break;case te.CLOCKWISE:p=tt(i);break;case te.COUNTERCLOCKWISE:p=tt(i,!0);break;default:p=e.behavior;}return p.forEach(function(n,s){if(i!==n||p.length===s+1)return t;i=t.placement.split('-')[0],o=N(i);var l=t.offsets.popper,d=t.offsets.reference,c=Xt,m='left'===i&&c(l.right)>c(d.left)||'right'===i&&c(l.left)<c(d.right)||'top'===i&&c(l.bottom)>c(d.top)||'bottom'===i&&c(l.top)<c(d.bottom),f=c(l.left)<c(a.left),h=c(l.right)>c(a.right),b=c(l.top)<c(a.top),u=c(l.bottom)>c(a.bottom),y='left'===i&&f||'right'===i&&h||'top'===i&&b||'bottom'===i&&u,g=-1!==['top','bottom'].indexOf(i),x=!!e.flipVariations&&(g&&'start'===r&&f||g&&'end'===r&&h||!g&&'start'===r&&b||!g&&'end'===r&&u);(m||y||x)&&(t.flipped=!0,(m||y)&&(i=p[s+1]),x&&(r=J(r)),t.placement=i+(r?'-'+r:''),t.offsets.popper=Qt({},t.offsets.popper,I(t.instance.popper,t.offsets.reference,t.placement)),t=W(t.instance.modifiers,t,'flip'))}),t},behavior:'flip',padding:5,boundariesElement:'viewport'},inner:{order:700,enabled:!1,fn:function(t){var e=t.placement,a=e.split('-')[0],i=t.offsets,o=i.popper,r=i.reference,p=-1!==['left','right'].indexOf(a),n=-1===['top','left'].indexOf(a);return o[p?'left':'top']=r[a]-(n?o[p?'width':'height']:0),t.placement=N(e),t.offsets.popper=T(o),t}},hide:{order:800,enabled:!0,fn:function(t){if(!$(t.instance.modifiers,'hide','preventOverflow'))return t;var e=t.offsets.reference,a=R(t.instance.modifiers,function(t){return'preventOverflow'===t.name}).boundaries;if(e.bottom<a.top||e.left>a.right||e.top>a.bottom||e.right<a.left){if(!0===t.hide)return t;t.hide=!0,t.attributes['x-out-of-boundaries']=''}else{if(!1===t.hide)return t;t.hide=!1,t.attributes['x-out-of-boundaries']=!1}return t}},computeStyle:{order:850,enabled:!0,fn:function(t,e){var a=e.x,i=e.y,o=t.offsets.popper,r=R(t.instance.modifiers,function(t){return'applyStyle'===t.name}).gpuAcceleration;void 0!==r&&console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');var p,n,s=void 0===r?e.gpuAcceleration:r,l=b(t.instance.popper),d=L(l),c={position:o.position},m={left:Xt(o.left),top:Xt(o.top),bottom:Xt(o.bottom),right:Xt(o.right)},f='bottom'===a?'top':'bottom',h='right'===i?'left':'right',u=M('transform');if(n='bottom'==f?-d.height+m.bottom:m.top,p='right'==h?-d.width+m.right:m.left,s&&u)c[u]='translate3d('+p+'px, '+n+'px, 0)',c[f]=0,c[h]=0,c.willChange='transform';else{var y='bottom'==f?-1:1,g='right'==h?-1:1;c[f]=n*y,c[h]=p*g,c.willChange=f+', '+h}var x={"x-placement":t.placement};return t.attributes=Qt({},x,t.attributes),t.styles=Qt({},c,t.styles),t.arrowStyles=Qt({},t.offsets.arrow,t.arrowStyles),t},gpuAcceleration:!0,x:'bottom',y:'right'},applyStyle:{order:900,enabled:!0,fn:function(t){return Z(t.instance.popper,t.styles),Q(t.instance.popper,t.attributes),t.arrowElement&&Object.keys(t.arrowStyles).length&&Z(t.arrowElement,t.arrowStyles),t},onLoad:function(t,e,a,i,o){var r=P(o,e,t),p=X(a.placement,r,e,t,a.modifiers.flip.boundariesElement,a.modifiers.flip.padding);return e.setAttribute('x-placement',p),Z(e,{position:'absolute'}),a},gpuAcceleration:void 0}}};var ae={};if(Dt){var ie=Element.prototype;ae=ie.matches||ie.matchesSelector||ie.webkitMatchesSelector||ie.mozMatchesSelector||ie.msMatchesSelector||function(t){for(var e=(this.document||this.ownerDocument).querySelectorAll(t),a=e.length;0<=--a&&e.item(a)!==this;);return-1<a}}var e=ae,oe=function(){function t(e){for(var a in Wt(this,t),e)this[a]=e[a];this.state={destroyed:!1,visible:!1,enabled:!0},this._internal={mutationObservers:[]}}return Ht(t,[{key:'enable',value:function(){this.state.enabled=!0}},{key:'disable',value:function(){this.state.enabled=!1}},{key:'show',value:function(t){var e=this;if(!this.state.destroyed&&this.state.enabled){var a=this.popper,i=this.reference,o=this.options,p=l(a),n=p.tooltip,s=p.backdrop,d=p.content;return i.refObj||document.body.contains(i)?void(o.onShow.call(a),t=mt(void 0===t?o.duration:t,0),ht([a,n,s],0),xt.call(this),a.style.visibility='visible',this.state.visible=!0,dt(function(){e.state.visible&&((!o.followCursor||Nt.usingTouch)&&(e.popperInstance.update(),ht([a],o.updateDuration)),ht([n,s,s?d:null],t),s&&getComputedStyle(s)[r('transform')],o.interactive&&i.classList.add('tippy-active'),o.sticky&&kt.call(e),ft([n,s],'visible'),Tt.call(e,t,function(){o.updateDuration||n.classList.add('tippy-notransition'),o.interactive&&a.focus(),o.onShown.call(a)}))})):void this.destroy()}}},{key:'hide',value:function(t){var e=this;if(!this.state.destroyed&&this.state.enabled){var a=this.popper,i=this.reference,o=this.options,r=l(a),p=r.tooltip,n=r.backdrop,s=r.content;o.onHide.call(a),t=mt(void 0===t?o.duration:t,1),o.updateDuration||p.classList.remove('tippy-notransition'),o.interactive&&i.classList.remove('tippy-active'),a.style.visibility='hidden',this.state.visible=!1,ht([p,n,n?s:null],t),ft([p,n],'hidden'),o.interactive&&-1<o.trigger.indexOf('click')&&st(i)&&i.focus(),dt(function(){Tt.call(e,t,function(){e.state.visible||!o.appendTo.contains(a)||(e.popperInstance.disableEventListeners(),document.removeEventListener('mousemove',e._internal.followCursorListener),o.appendTo.removeChild(a),o.onHidden.call(a))})})}}},{key:'destroy',value:function(){var t=this;this.state.destroyed||(this.state.visible&&this.hide(0),this.listeners.forEach(function(e){t.reference.removeEventListener(e.event,e.handler)}),this.reference.setAttribute('title',this.reference.getAttribute('data-original-title')),delete this.reference._tippy,['data-original-title','data-tippy','aria-describedby'].forEach(function(e){t.reference.removeAttribute(e)}),this.popperInstance&&this.popperInstance.destroy(),this._internal.mutationObservers.forEach(function(t){t.disconnect()}),this.state.destroyed=!0)}}]),t}(),re=1;return At.browser=Nt,At.defaults=Rt,function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:'';if(Dt){var e=document.head||document.querySelector('head'),a=document.createElement('style');a.type='text/css',e.insertBefore(a,e.firstChild),a.styleSheet?a.styleSheet.cssText=t:a.appendChild(document.createTextNode(t))}}('.tippy-touch{cursor:pointer!important}.tippy-notransition{-webkit-transition:none!important;transition:none!important}.tippy-popper{max-width:350px;-webkit-perspective:700px;perspective:700px;z-index:9999;outline:0;-webkit-transition-timing-function:cubic-bezier(.165,.84,.44,1);transition-timing-function:cubic-bezier(.165,.84,.44,1);pointer-events:none}.tippy-popper[data-html]{max-width:96%;max-width:calc(100% - 20px)}.tippy-popper[x-placement^=top] .tippy-backdrop{border-radius:40% 40% 0 0}.tippy-popper[x-placement^=top] .tippy-roundarrow{width:23px;height:23px;fill:#333;bottom:-15px;margin:0 6px}.tippy-popper[x-placement^=top] .tippy-roundarrow svg{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.tippy-popper[x-placement^=top] .tippy-arrow{border-top:7px solid #333;border-right:7px solid transparent;border-left:7px solid transparent;bottom:-7px;margin:0 9px}.tippy-popper[x-placement^=top] .tippy-backdrop{-webkit-transform-origin:0 100%;transform-origin:0 100%}.tippy-popper[x-placement^=top] .tippy-backdrop[data-state=visible]{-webkit-transform:scale(5.5) translate(-50%,25%);transform:scale(5.5) translate(-50%,25%);opacity:1}.tippy-popper[x-placement^=top] .tippy-backdrop[data-state=hidden]{-webkit-transform:scale(1) translate(-50%,25%);transform:scale(1) translate(-50%,25%);opacity:0}.tippy-popper[x-placement^=top] [data-animation=shift-toward][data-state=visible]{opacity:1;-webkit-transform:translateY(-10px);transform:translateY(-10px)}.tippy-popper[x-placement^=top] [data-animation=shift-toward][data-state=hidden]{opacity:0;-webkit-transform:translateY(-20px);transform:translateY(-20px)}.tippy-popper[x-placement^=top] [data-animation=perspective]{-webkit-transform-origin:bottom;transform-origin:bottom}.tippy-popper[x-placement^=top] [data-animation=perspective][data-state=visible]{opacity:1;-webkit-transform:translateY(-10px) rotateX(0);transform:translateY(-10px) rotateX(0)}.tippy-popper[x-placement^=top] [data-animation=perspective][data-state=hidden]{opacity:0;-webkit-transform:translateY(0) rotateX(90deg);transform:translateY(0) rotateX(90deg)}.tippy-popper[x-placement^=top] [data-animation=fade][data-state=visible]{opacity:1;-webkit-transform:translateY(-10px);transform:translateY(-10px)}.tippy-popper[x-placement^=top] [data-animation=fade][data-state=hidden]{opacity:0;-webkit-transform:translateY(-10px);transform:translateY(-10px)}.tippy-popper[x-placement^=top] [data-animation=shift-away][data-state=visible]{opacity:1;-webkit-transform:translateY(-10px);transform:translateY(-10px)}.tippy-popper[x-placement^=top] [data-animation=shift-away][data-state=hidden]{opacity:0;-webkit-transform:translateY(0);transform:translateY(0)}.tippy-popper[x-placement^=top] [data-animation=scale][data-state=visible]{opacity:1;-webkit-transform:translateY(-10px) scale(1);transform:translateY(-10px) scale(1)}.tippy-popper[x-placement^=top] [data-animation=scale][data-state=hidden]{opacity:0;-webkit-transform:translateY(0) scale(0);transform:translateY(0) scale(0)}.tippy-popper[x-placement^=bottom] .tippy-backdrop{border-radius:0 0 30% 30%}.tippy-popper[x-placement^=bottom] .tippy-roundarrow{width:23px;height:23px;fill:#333;top:-15px;margin:0 6px}.tippy-popper[x-placement^=bottom] .tippy-roundarrow svg{-webkit-transform:rotate(0);transform:rotate(0)}.tippy-popper[x-placement^=bottom] .tippy-arrow{border-bottom:7px solid #333;border-right:7px solid transparent;border-left:7px solid transparent;top:-7px;margin:0 9px}.tippy-popper[x-placement^=bottom] .tippy-backdrop{-webkit-transform-origin:0 -100%;transform-origin:0 -100%}.tippy-popper[x-placement^=bottom] .tippy-backdrop[data-state=visible]{-webkit-transform:scale(5.5) translate(-50%,-125%);transform:scale(5.5) translate(-50%,-125%);opacity:1}.tippy-popper[x-placement^=bottom] .tippy-backdrop[data-state=hidden]{-webkit-transform:scale(1) translate(-50%,-125%);transform:scale(1) translate(-50%,-125%);opacity:0}.tippy-popper[x-placement^=bottom] [data-animation=shift-toward][data-state=visible]{opacity:1;-webkit-transform:translateY(10px);transform:translateY(10px)}.tippy-popper[x-placement^=bottom] [data-animation=shift-toward][data-state=hidden]{opacity:0;-webkit-transform:translateY(20px);transform:translateY(20px)}.tippy-popper[x-placement^=bottom] [data-animation=perspective]{-webkit-transform-origin:top;transform-origin:top}.tippy-popper[x-placement^=bottom] [data-animation=perspective][data-state=visible]{opacity:1;-webkit-transform:translateY(10px) rotateX(0);transform:translateY(10px) rotateX(0)}.tippy-popper[x-placement^=bottom] [data-animation=perspective][data-state=hidden]{opacity:0;-webkit-transform:translateY(0) rotateX(-90deg);transform:translateY(0) rotateX(-90deg)}.tippy-popper[x-placement^=bottom] [data-animation=fade][data-state=visible]{opacity:1;-webkit-transform:translateY(10px);transform:translateY(10px)}.tippy-popper[x-placement^=bottom] [data-animation=fade][data-state=hidden]{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px)}.tippy-popper[x-placement^=bottom] [data-animation=shift-away][data-state=visible]{opacity:1;-webkit-transform:translateY(10px);transform:translateY(10px)}.tippy-popper[x-placement^=bottom] [data-animation=shift-away][data-state=hidden]{opacity:0;-webkit-transform:translateY(0);transform:translateY(0)}.tippy-popper[x-placement^=bottom] [data-animation=scale][data-state=visible]{opacity:1;-webkit-transform:translateY(10px) scale(1);transform:translateY(10px) scale(1)}.tippy-popper[x-placement^=bottom] [data-animation=scale][data-state=hidden]{opacity:0;-webkit-transform:translateY(0) scale(0);transform:translateY(0) scale(0)}.tippy-popper[x-placement^=left] .tippy-backdrop{border-radius:30% 0 0 30%}.tippy-popper[x-placement^=left] .tippy-roundarrow{width:23px;height:23px;fill:#333;right:-15px;margin:4px 0}.tippy-popper[x-placement^=left] .tippy-roundarrow svg{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.tippy-popper[x-placement^=left] .tippy-arrow{border-left:7px solid #333;border-top:7px solid transparent;border-bottom:7px solid transparent;right:-7px;margin:6px 0}.tippy-popper[x-placement^=left] .tippy-backdrop{-webkit-transform-origin:100% 0;transform-origin:100% 0}.tippy-popper[x-placement^=left] .tippy-backdrop[data-state=visible]{-webkit-transform:scale(5.5) translate(33%,-50%);transform:scale(5.5) translate(33%,-50%);opacity:1}.tippy-popper[x-placement^=left] .tippy-backdrop[data-state=hidden]{-webkit-transform:scale(1.5) translate(33%,-50%);transform:scale(1.5) translate(33%,-50%);opacity:0}.tippy-popper[x-placement^=left] [data-animation=shift-toward][data-state=visible]{opacity:1;-webkit-transform:translateX(-10px);transform:translateX(-10px)}.tippy-popper[x-placement^=left] [data-animation=shift-toward][data-state=hidden]{opacity:0;-webkit-transform:translateX(-20px);transform:translateX(-20px)}.tippy-popper[x-placement^=left] [data-animation=perspective]{-webkit-transform-origin:right;transform-origin:right}.tippy-popper[x-placement^=left] [data-animation=perspective][data-state=visible]{opacity:1;-webkit-transform:translateX(-10px) rotateY(0);transform:translateX(-10px) rotateY(0)}.tippy-popper[x-placement^=left] [data-animation=perspective][data-state=hidden]{opacity:0;-webkit-transform:translateX(0) rotateY(-90deg);transform:translateX(0) rotateY(-90deg)}.tippy-popper[x-placement^=left] [data-animation=fade][data-state=visible]{opacity:1;-webkit-transform:translateX(-10px);transform:translateX(-10px)}.tippy-popper[x-placement^=left] [data-animation=fade][data-state=hidden]{opacity:0;-webkit-transform:translateX(-10px);transform:translateX(-10px)}.tippy-popper[x-placement^=left] [data-animation=shift-away][data-state=visible]{opacity:1;-webkit-transform:translateX(-10px);transform:translateX(-10px)}.tippy-popper[x-placement^=left] [data-animation=shift-away][data-state=hidden]{opacity:0;-webkit-transform:translateX(0);transform:translateX(0)}.tippy-popper[x-placement^=left] [data-animation=scale][data-state=visible]{opacity:1;-webkit-transform:translateX(-10px) scale(1);transform:translateX(-10px) scale(1)}.tippy-popper[x-placement^=left] [data-animation=scale][data-state=hidden]{opacity:0;-webkit-transform:translateX(0) scale(0);transform:translateX(0) scale(0)}.tippy-popper[x-placement^=right] .tippy-backdrop{border-radius:0 30% 30% 0}.tippy-popper[x-placement^=right] .tippy-roundarrow{width:23px;height:23px;fill:#333;left:-15px;margin:4px 0}.tippy-popper[x-placement^=right] .tippy-roundarrow svg{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.tippy-popper[x-placement^=right] .tippy-arrow{border-right:7px solid #333;border-top:7px solid transparent;border-bottom:7px solid transparent;left:-7px;margin:6px 0}.tippy-popper[x-placement^=right] .tippy-backdrop{-webkit-transform-origin:-100% 0;transform-origin:-100% 0}.tippy-popper[x-placement^=right] .tippy-backdrop[data-state=visible]{-webkit-transform:scale(5.5) translate(-133%,-50%);transform:scale(5.5) translate(-133%,-50%);opacity:1}.tippy-popper[x-placement^=right] .tippy-backdrop[data-state=hidden]{-webkit-transform:scale(1.5) translate(-133%,-50%);transform:scale(1.5) translate(-133%,-50%);opacity:0}.tippy-popper[x-placement^=right] [data-animation=shift-toward][data-state=visible]{opacity:1;-webkit-transform:translateX(10px);transform:translateX(10px)}.tippy-popper[x-placement^=right] [data-animation=shift-toward][data-state=hidden]{opacity:0;-webkit-transform:translateX(20px);transform:translateX(20px)}.tippy-popper[x-placement^=right] [data-animation=perspective]{-webkit-transform-origin:left;transform-origin:left}.tippy-popper[x-placement^=right] [data-animation=perspective][data-state=visible]{opacity:1;-webkit-transform:translateX(10px) rotateY(0);transform:translateX(10px) rotateY(0)}.tippy-popper[x-placement^=right] [data-animation=perspective][data-state=hidden]{opacity:0;-webkit-transform:translateX(0) rotateY(90deg);transform:translateX(0) rotateY(90deg)}.tippy-popper[x-placement^=right] [data-animation=fade][data-state=visible]{opacity:1;-webkit-transform:translateX(10px);transform:translateX(10px)}.tippy-popper[x-placement^=right] [data-animation=fade][data-state=hidden]{opacity:0;-webkit-transform:translateX(10px);transform:translateX(10px)}.tippy-popper[x-placement^=right] [data-animation=shift-away][data-state=visible]{opacity:1;-webkit-transform:translateX(10px);transform:translateX(10px)}.tippy-popper[x-placement^=right] [data-animation=shift-away][data-state=hidden]{opacity:0;-webkit-transform:translateX(0);transform:translateX(0)}.tippy-popper[x-placement^=right] [data-animation=scale][data-state=visible]{opacity:1;-webkit-transform:translateX(10px) scale(1);transform:translateX(10px) scale(1)}.tippy-popper[x-placement^=right] [data-animation=scale][data-state=hidden]{opacity:0;-webkit-transform:translateX(0) scale(0);transform:translateX(0) scale(0)}.tippy-tooltip{position:relative;color:#fff;border-radius:4px;font-size:.9rem;padding:.3rem .6rem;text-align:center;will-change:transform;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#333}.tippy-tooltip[data-size=small]{padding:.2rem .4rem;font-size:.75rem}.tippy-tooltip[data-size=large]{padding:.4rem .8rem;font-size:1rem}.tippy-tooltip[data-animatefill]{overflow:hidden;background-color:transparent}.tippy-tooltip[data-animatefill] .tippy-content{-webkit-transition:-webkit-clip-path cubic-bezier(.46,.1,.52,.98);transition:-webkit-clip-path cubic-bezier(.46,.1,.52,.98);transition:clip-path cubic-bezier(.46,.1,.52,.98);transition:clip-path cubic-bezier(.46,.1,.52,.98),-webkit-clip-path cubic-bezier(.46,.1,.52,.98)}.tippy-tooltip[data-interactive]{pointer-events:auto}.tippy-tooltip[data-inertia][data-state=visible]{-webkit-transition-timing-function:cubic-bezier(.53,2,.36,.85);transition-timing-function:cubic-bezier(.53,2,.36,.85)}.tippy-tooltip[data-inertia][data-state=hidden]{-webkit-transition-timing-function:ease;transition-timing-function:ease}.tippy-arrow,.tippy-roundarrow{position:absolute;width:0;height:0}.tippy-backdrop{position:absolute;will-change:transform;background-color:#333;border-radius:50%;width:26%;left:50%;top:50%;z-index:-1;-webkit-transition:all cubic-bezier(.46,.1,.52,.98);transition:all cubic-bezier(.46,.1,.52,.98)}.tippy-backdrop:after{content:"";float:left;padding-top:100%}body:not(.tippy-touch) .tippy-tooltip[data-animatefill][data-state=visible] .tippy-content{-webkit-clip-path:ellipse(100% 100% at 50% 50%);clip-path:ellipse(100% 100% at 50% 50%)}body:not(.tippy-touch) .tippy-tooltip[data-animatefill][data-state=hidden] .tippy-content{-webkit-clip-path:ellipse(5% 50% at 50% 50%);clip-path:ellipse(5% 50% at 50% 50%)}body:not(.tippy-touch) .tippy-popper[x-placement=right] .tippy-tooltip[data-animatefill][data-state=visible] .tippy-content{-webkit-clip-path:ellipse(135% 100% at 0 50%);clip-path:ellipse(135% 100% at 0 50%)}body:not(.tippy-touch) .tippy-popper[x-placement=right] .tippy-tooltip[data-animatefill][data-state=hidden] .tippy-content{-webkit-clip-path:ellipse(25% 100% at 0 50%);clip-path:ellipse(25% 100% at 0 50%)}body:not(.tippy-touch) .tippy-popper[x-placement=left] .tippy-tooltip[data-animatefill][data-state=visible] .tippy-content{-webkit-clip-path:ellipse(135% 100% at 100% 50%);clip-path:ellipse(135% 100% at 100% 50%)}body:not(.tippy-touch) .tippy-popper[x-placement=left] .tippy-tooltip[data-animatefill][data-state=hidden] .tippy-content{-webkit-clip-path:ellipse(25% 100% at 100% 50%);clip-path:ellipse(25% 100% at 100% 50%)}@media (max-width:360px){.tippy-popper{max-width:96%;max-width:calc(100% - 20px)}}'),At});
... ...
src/main/resources/static/assets/plugins/tippy/tippy.css 0 → 100644
  1 +.tippy-touch{cursor:pointer!important}.tippy-notransition{transition:none!important}.tippy-popper{max-width:350px;-webkit-perspective:700px;perspective:700px;z-index:9999;outline:0;transition-timing-function:cubic-bezier(.165,.84,.44,1);pointer-events:none;line-height:1.4}.tippy-popper[data-html]{max-width:96%;max-width:calc(100% - 20px)}.tippy-popper[x-placement^=top] .tippy-backdrop{border-radius:40% 40% 0 0}.tippy-popper[x-placement^=top] .tippy-roundarrow{bottom:-8px;-webkit-transform-origin:50% 0;transform-origin:50% 0}.tippy-popper[x-placement^=top] .tippy-roundarrow svg{position:absolute;left:0;-webkit-transform:rotate(180deg);transform:rotate(180deg)}.tippy-popper[x-placement^=top] .tippy-arrow{border-top:7px solid #333;border-right:7px solid transparent;border-left:7px solid transparent;bottom:-7px;margin:0 6px;-webkit-transform-origin:50% 0;transform-origin:50% 0}.tippy-popper[x-placement^=top] .tippy-backdrop{-webkit-transform-origin:0 90%;transform-origin:0 90%}.tippy-popper[x-placement^=top] .tippy-backdrop[data-state=visible]{-webkit-transform:scale(6) translate(-50%,25%);transform:scale(6) translate(-50%,25%);opacity:1}.tippy-popper[x-placement^=top] .tippy-backdrop[data-state=hidden]{-webkit-transform:scale(1) translate(-50%,25%);transform:scale(1) translate(-50%,25%);opacity:0}.tippy-popper[x-placement^=top] [data-animation=shift-toward][data-state=visible]{opacity:1;-webkit-transform:translateY(-10px);transform:translateY(-10px)}.tippy-popper[x-placement^=top] [data-animation=shift-toward][data-state=hidden]{opacity:0;-webkit-transform:translateY(-20px);transform:translateY(-20px)}.tippy-popper[x-placement^=top] [data-animation=perspective]{-webkit-transform-origin:bottom;transform-origin:bottom}.tippy-popper[x-placement^=top] [data-animation=perspective][data-state=visible]{opacity:1;-webkit-transform:translateY(-10px) rotateX(0);transform:translateY(-10px) rotateX(0)}.tippy-popper[x-placement^=top] [data-animation=perspective][data-state=hidden]{opacity:0;-webkit-transform:translateY(0) rotateX(90deg);transform:translateY(0) rotateX(90deg)}.tippy-popper[x-placement^=top] [data-animation=fade][data-state=visible]{opacity:1;-webkit-transform:translateY(-10px);transform:translateY(-10px)}.tippy-popper[x-placement^=top] [data-animation=fade][data-state=hidden]{opacity:0;-webkit-transform:translateY(-10px);transform:translateY(-10px)}.tippy-popper[x-placement^=top] [data-animation=shift-away][data-state=visible]{opacity:1;-webkit-transform:translateY(-10px);transform:translateY(-10px)}.tippy-popper[x-placement^=top] [data-animation=shift-away][data-state=hidden]{opacity:0;-webkit-transform:translateY(0);transform:translateY(0)}.tippy-popper[x-placement^=top] [data-animation=scale][data-state=visible]{opacity:1;-webkit-transform:translateY(-10px) scale(1);transform:translateY(-10px) scale(1)}.tippy-popper[x-placement^=top] [data-animation=scale][data-state=hidden]{opacity:0;-webkit-transform:translateY(0) scale(0);transform:translateY(0) scale(0)}.tippy-popper[x-placement^=bottom] .tippy-backdrop{border-radius:0 0 30% 30%}.tippy-popper[x-placement^=bottom] .tippy-roundarrow{top:-8px;-webkit-transform-origin:50% 100%;transform-origin:50% 100%}.tippy-popper[x-placement^=bottom] .tippy-roundarrow svg{position:absolute;left:0;-webkit-transform:rotate(0);transform:rotate(0)}.tippy-popper[x-placement^=bottom] .tippy-arrow{border-bottom:7px solid #333;border-right:7px solid transparent;border-left:7px solid transparent;top:-7px;margin:0 6px;-webkit-transform-origin:50% 100%;transform-origin:50% 100%}.tippy-popper[x-placement^=bottom] .tippy-backdrop{-webkit-transform-origin:0 -90%;transform-origin:0 -90%}.tippy-popper[x-placement^=bottom] .tippy-backdrop[data-state=visible]{-webkit-transform:scale(6) translate(-50%,-125%);transform:scale(6) translate(-50%,-125%);opacity:1}.tippy-popper[x-placement^=bottom] .tippy-backdrop[data-state=hidden]{-webkit-transform:scale(1) translate(-50%,-125%);transform:scale(1) translate(-50%,-125%);opacity:0}.tippy-popper[x-placement^=bottom] [data-animation=shift-toward][data-state=visible]{opacity:1;-webkit-transform:translateY(10px);transform:translateY(10px)}.tippy-popper[x-placement^=bottom] [data-animation=shift-toward][data-state=hidden]{opacity:0;-webkit-transform:translateY(20px);transform:translateY(20px)}.tippy-popper[x-placement^=bottom] [data-animation=perspective]{-webkit-transform-origin:top;transform-origin:top}.tippy-popper[x-placement^=bottom] [data-animation=perspective][data-state=visible]{opacity:1;-webkit-transform:translateY(10px) rotateX(0);transform:translateY(10px) rotateX(0)}.tippy-popper[x-placement^=bottom] [data-animation=perspective][data-state=hidden]{opacity:0;-webkit-transform:translateY(0) rotateX(-90deg);transform:translateY(0) rotateX(-90deg)}.tippy-popper[x-placement^=bottom] [data-animation=fade][data-state=visible]{opacity:1;-webkit-transform:translateY(10px);transform:translateY(10px)}.tippy-popper[x-placement^=bottom] [data-animation=fade][data-state=hidden]{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px)}.tippy-popper[x-placement^=bottom] [data-animation=shift-away][data-state=visible]{opacity:1;-webkit-transform:translateY(10px);transform:translateY(10px)}.tippy-popper[x-placement^=bottom] [data-animation=shift-away][data-state=hidden]{opacity:0;-webkit-transform:translateY(0);transform:translateY(0)}.tippy-popper[x-placement^=bottom] [data-animation=scale][data-state=visible]{opacity:1;-webkit-transform:translateY(10px) scale(1);transform:translateY(10px) scale(1)}.tippy-popper[x-placement^=bottom] [data-animation=scale][data-state=hidden]{opacity:0;-webkit-transform:translateY(0) scale(0);transform:translateY(0) scale(0)}.tippy-popper[x-placement^=left] .tippy-backdrop{border-radius:50% 0 0 50%}.tippy-popper[x-placement^=left] .tippy-roundarrow{right:-16px;-webkit-transform-origin:33.33333333% 50%;transform-origin:33.33333333% 50%}.tippy-popper[x-placement^=left] .tippy-roundarrow svg{position:absolute;left:0;-webkit-transform:rotate(90deg);transform:rotate(90deg)}.tippy-popper[x-placement^=left] .tippy-arrow{border-left:7px solid #333;border-top:7px solid transparent;border-bottom:7px solid transparent;right:-7px;margin:3px 0;-webkit-transform-origin:0 50%;transform-origin:0 50%}.tippy-popper[x-placement^=left] .tippy-backdrop{-webkit-transform-origin:100% 0;transform-origin:100% 0}.tippy-popper[x-placement^=left] .tippy-backdrop[data-state=visible]{-webkit-transform:scale(6) translate(40%,-50%);transform:scale(6) translate(40%,-50%);opacity:1}.tippy-popper[x-placement^=left] .tippy-backdrop[data-state=hidden]{-webkit-transform:scale(1.5) translate(40%,-50%);transform:scale(1.5) translate(40%,-50%);opacity:0}.tippy-popper[x-placement^=left] [data-animation=shift-toward][data-state=visible]{opacity:1;-webkit-transform:translateX(-10px);transform:translateX(-10px)}.tippy-popper[x-placement^=left] [data-animation=shift-toward][data-state=hidden]{opacity:0;-webkit-transform:translateX(-20px);transform:translateX(-20px)}.tippy-popper[x-placement^=left] [data-animation=perspective]{-webkit-transform-origin:right;transform-origin:right}.tippy-popper[x-placement^=left] [data-animation=perspective][data-state=visible]{opacity:1;-webkit-transform:translateX(-10px) rotateY(0);transform:translateX(-10px) rotateY(0)}.tippy-popper[x-placement^=left] [data-animation=perspective][data-state=hidden]{opacity:0;-webkit-transform:translateX(0) rotateY(-90deg);transform:translateX(0) rotateY(-90deg)}.tippy-popper[x-placement^=left] [data-animation=fade][data-state=visible]{opacity:1;-webkit-transform:translateX(-10px);transform:translateX(-10px)}.tippy-popper[x-placement^=left] [data-animation=fade][data-state=hidden]{opacity:0;-webkit-transform:translateX(-10px);transform:translateX(-10px)}.tippy-popper[x-placement^=left] [data-animation=shift-away][data-state=visible]{opacity:1;-webkit-transform:translateX(-10px);transform:translateX(-10px)}.tippy-popper[x-placement^=left] [data-animation=shift-away][data-state=hidden]{opacity:0;-webkit-transform:translateX(0);transform:translateX(0)}.tippy-popper[x-placement^=left] [data-animation=scale][data-state=visible]{opacity:1;-webkit-transform:translateX(-10px) scale(1);transform:translateX(-10px) scale(1)}.tippy-popper[x-placement^=left] [data-animation=scale][data-state=hidden]{opacity:0;-webkit-transform:translateX(0) scale(0);transform:translateX(0) scale(0)}.tippy-popper[x-placement^=right] .tippy-backdrop{border-radius:0 50% 50% 0}.tippy-popper[x-placement^=right] .tippy-roundarrow{left:-16px;-webkit-transform-origin:66.66666666% 50%;transform-origin:66.66666666% 50%}.tippy-popper[x-placement^=right] .tippy-roundarrow svg{position:absolute;left:0;-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.tippy-popper[x-placement^=right] .tippy-arrow{border-right:7px solid #333;border-top:7px solid transparent;border-bottom:7px solid transparent;left:-7px;margin:3px 0;-webkit-transform-origin:100% 50%;transform-origin:100% 50%}.tippy-popper[x-placement^=right] .tippy-backdrop{-webkit-transform-origin:-100% 0;transform-origin:-100% 0}.tippy-popper[x-placement^=right] .tippy-backdrop[data-state=visible]{-webkit-transform:scale(6) translate(-140%,-50%);transform:scale(6) translate(-140%,-50%);opacity:1}.tippy-popper[x-placement^=right] .tippy-backdrop[data-state=hidden]{-webkit-transform:scale(1.5) translate(-140%,-50%);transform:scale(1.5) translate(-140%,-50%);opacity:0}.tippy-popper[x-placement^=right] [data-animation=shift-toward][data-state=visible]{opacity:1;-webkit-transform:translateX(10px);transform:translateX(10px)}.tippy-popper[x-placement^=right] [data-animation=shift-toward][data-state=hidden]{opacity:0;-webkit-transform:translateX(20px);transform:translateX(20px)}.tippy-popper[x-placement^=right] [data-animation=perspective]{-webkit-transform-origin:left;transform-origin:left}.tippy-popper[x-placement^=right] [data-animation=perspective][data-state=visible]{opacity:1;-webkit-transform:translateX(10px) rotateY(0);transform:translateX(10px) rotateY(0)}.tippy-popper[x-placement^=right] [data-animation=perspective][data-state=hidden]{opacity:0;-webkit-transform:translateX(0) rotateY(90deg);transform:translateX(0) rotateY(90deg)}.tippy-popper[x-placement^=right] [data-animation=fade][data-state=visible]{opacity:1;-webkit-transform:translateX(10px);transform:translateX(10px)}.tippy-popper[x-placement^=right] [data-animation=fade][data-state=hidden]{opacity:0;-webkit-transform:translateX(10px);transform:translateX(10px)}.tippy-popper[x-placement^=right] [data-animation=shift-away][data-state=visible]{opacity:1;-webkit-transform:translateX(10px);transform:translateX(10px)}.tippy-popper[x-placement^=right] [data-animation=shift-away][data-state=hidden]{opacity:0;-webkit-transform:translateX(0);transform:translateX(0)}.tippy-popper[x-placement^=right] [data-animation=scale][data-state=visible]{opacity:1;-webkit-transform:translateX(10px) scale(1);transform:translateX(10px) scale(1)}.tippy-popper[x-placement^=right] [data-animation=scale][data-state=hidden]{opacity:0;-webkit-transform:translateX(0) scale(0);transform:translateX(0) scale(0)}.tippy-tooltip{position:relative;color:#fff;border-radius:4px;font-size:.9rem;padding:.3rem .6rem;text-align:center;will-change:transform;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#333}.tippy-tooltip[data-size=small]{padding:.2rem .4rem;font-size:.75rem}.tippy-tooltip[data-size=large]{padding:.4rem .8rem;font-size:1rem}.tippy-tooltip[data-animatefill]{overflow:hidden;background-color:transparent}.tippy-tooltip[data-animatefill] .tippy-content{transition:-webkit-clip-path cubic-bezier(.46,.1,.52,.98);transition:clip-path cubic-bezier(.46,.1,.52,.98);transition:clip-path cubic-bezier(.46,.1,.52,.98),-webkit-clip-path cubic-bezier(.46,.1,.52,.98)}.tippy-tooltip[data-interactive],.tippy-tooltip[data-interactive] path{pointer-events:auto}.tippy-tooltip[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.53,2,.36,.85)}.tippy-tooltip[data-inertia][data-state=hidden]{transition-timing-function:ease}.tippy-arrow,.tippy-roundarrow{position:absolute;width:0;height:0}.tippy-roundarrow{width:24px;height:8px;fill:#333;pointer-events:none}.tippy-backdrop{position:absolute;will-change:transform;background-color:#333;border-radius:50%;width:26%;left:50%;top:50%;z-index:-1;transition:all cubic-bezier(.46,.1,.52,.98);-webkit-backface-visibility:hidden;backface-visibility:hidden}.tippy-backdrop:after{content:"";float:left;padding-top:100%}body:not(.tippy-touch) .tippy-tooltip[data-animatefill][data-state=visible] .tippy-content{-webkit-clip-path:ellipse(100% 100% at 50% 50%);clip-path:ellipse(100% 100% at 50% 50%)}body:not(.tippy-touch) .tippy-tooltip[data-animatefill][data-state=hidden] .tippy-content{-webkit-clip-path:ellipse(5% 50% at 50% 50%);clip-path:ellipse(5% 50% at 50% 50%)}body:not(.tippy-touch) .tippy-popper[x-placement=right] .tippy-tooltip[data-animatefill][data-state=visible] .tippy-content{-webkit-clip-path:ellipse(135% 100% at 0 50%);clip-path:ellipse(135% 100% at 0 50%)}body:not(.tippy-touch) .tippy-popper[x-placement=right] .tippy-tooltip[data-animatefill][data-state=hidden] .tippy-content{-webkit-clip-path:ellipse(40% 100% at 0 50%);clip-path:ellipse(40% 100% at 0 50%)}body:not(.tippy-touch) .tippy-popper[x-placement=left] .tippy-tooltip[data-animatefill][data-state=visible] .tippy-content{-webkit-clip-path:ellipse(135% 100% at 100% 50%);clip-path:ellipse(135% 100% at 100% 50%)}body:not(.tippy-touch) .tippy-popper[x-placement=left] .tippy-tooltip[data-animatefill][data-state=hidden] .tippy-content{-webkit-clip-path:ellipse(40% 100% at 100% 50%);clip-path:ellipse(40% 100% at 100% 50%)}@media (max-width:360px){.tippy-popper{max-width:96%;max-width:calc(100% - 20px)}}
0 2 \ No newline at end of file
... ...
src/main/resources/static/index.html
... ... @@ -20,7 +20,6 @@
20 20 <!-- jquery contextMenu style -->
21 21 <link rel="stylesheet" href="/assets/plugins/contextmenu/jquery.contextMenu.min.css" />
22 22 <link href="/assets/plugins/toastr/toastr.min.css" rel="stylesheet">
23   -
24 23 </head>
25 24  
26 25 <body>
... ... @@ -77,6 +76,9 @@
77 76 <!-- moment js -->
78 77 <script src="/assets/plugins/moment/moment.min.js" ></script>
79 78 <script src="/assets/plugins/moment/zh-cn.js" ></script>
  79 +
  80 +<!-- tippy -->
  81 +<script src="/assets/plugins/tippy/tippy.all.min.js" ></script>
80 82 <!-- flatpickr -->
81 83 <script src="/assets/plugins/flatpickr/flatpickr.min.js" ></script>
82 84 <script src="/assets/plugins/flatpickr/l10n/zh.js" ></script>
... ...
src/main/resources/static/pages/attendance/maintain_plan_list.html
1 1 <div id="maintain_plan_list_wrap" style="padding: 25px;height: calc(100% - 50px);">
2 2 <div class="ct_cont" style="height: 100%;">
3   - <div class="uk-alert-warning" uk-alert>
  3 + <div class="uk-alert-primary" uk-alert>
4 4 <a class="uk-alert-close" uk-close></a>
5 5 <p>此处录入的车辆保养计划,会打印在驾驶员签到的出门证上</p>
6 6 </div>
... ...
src/main/resources/static/pages/basic_data/person_card/list.html
... ... @@ -16,23 +16,6 @@
16 16 </label>
17 17 </div>
18 18 <div class="ct_field">
19   - <label>工种:
20   - <select class="uk-select" name="posts">
21   - <option value="">全部</option>
22   - <option value="1">驾驶员</option>
23   - <option value="2">调度员</option>
24   - <option value="3">售票员</option>
25   - <option value="4">站员</option>
26   - <option value="5">管理员</option>
27   - <option value="6">安检员</option>
28   - <option value="7">机务</option>
29   - <option value="8">引导员</option>
30   - <option value="9">乘务员</option>
31   - <option value="10">车队长</option>
32   - </select>
33   - </label>
34   - </div>
35   - <div class="ct_field">
36 19 <label>线路:
37 20 <select class="" name="lineCode">
38 21 </select>
... ... @@ -49,7 +32,7 @@
49 32 </label>
50 33 </div>
51 34 <div class="ct_field">
52   - <label>状态:
  35 + <label>状态:
53 36 <select class="uk-select" name="cardStatus">
54 37 <option value="">全部</option>
55 38 <option value="1">有卡</option>
... ... @@ -58,6 +41,15 @@
58 41 </label>
59 42 </div>
60 43 <div class="ct_field">
  44 + <label>照片状态:
  45 + <select class="uk-select" name="isPic">
  46 + <option value="">全部</option>
  47 + <option value="true">有照片</option>
  48 + <option value="false">没有照片</option>
  49 + </select>
  50 + </label>
  51 + </div>
  52 + <div class="ct_field">
61 53 <button class="uk-button uk-button-primary search"><i uk-icon="icon: search"></i>搜索</button>
62 54 </div>
63 55 <div class="ct_field" style="vertical-align: bottom;">
... ... @@ -75,7 +67,7 @@
75 67 <th>工号/姓名</th>
76 68 <th>ID卡号</th>
77 69 <th>卡标签号</th>
78   - <th>备注</th>
  70 + <th>照片</th>
79 71 <th>操作</th>
80 72 </tr>
81 73 </thead>
... ... @@ -91,18 +83,26 @@
91 83 </div>
92 84 </div>
93 85  
  86 + <div id="template" style="display: none;">
  87 + <div class="_tip_text">正在加载图片...</div>
  88 + </div>
  89 +
94 90 <script id="person_card_list_body-temp" type="text/html">
95 91 {{each list as p i}}
96   - <tr>
97   - <td>{{company_ns[p.companyCode]}}</td>
98   - <td>{{company_ns[p.companyCode+'_'+p.brancheCompanyCode]}}</td>
99   - <td>{{p.lineCode}}/{{p.lineName}}</td>
100   - <td>{{p.jobCode}}/{{p.personnelName}}</td>
101   - <td>{{p.idRfid}}</td>
102   - <td>{{p.tagRfid}}</td>
103   - <td>{{p.remark}}</td>
104   - <td><a class="edit_icon" data-code="{{p.companyCode}}-{{p.jobCode}}" uk-icon="icon: file-edit"></a></td>
105   - </tr>
  92 + <tr>
  93 + <td>{{company_ns[p.companyCode]}}</td>
  94 + <td>{{company_ns[p.companyCode+'_'+p.brancheCompanyCode]}}</td>
  95 + <td>{{p.lineCode}}/{{p.lineName}}</td>
  96 + <td>{{p.jobCode}}/{{p.personnelName}}</td>
  97 + <td>{{p.idRfid}}</td>
  98 + <td>{{p.tagRfid}}</td>
  99 + <td>
  100 + {{if p.pic}}
  101 + <a class="show_pic_link" data-code="{{p.companyCode + '/' + p.jobCode}}">查看照片</a>
  102 + {{/if}}
  103 + </td>
  104 + <td><a class="edit_icon" data-code="{{p.companyCode}}-{{p.jobCode}}" uk-icon="icon: file-edit"></a></td>
  105 + </tr>
106 106 {{/each}}
107 107 </script>
108 108  
... ... @@ -110,36 +110,42 @@
110 110 (function () {
111 111 var wrap = '#person_card_list_wrap', ps = $('.t_body_wrap', wrap);
112 112  
113   - var page=0, pageSize=14;
  113 + var page = 0, pageSize = 14;
114 114 ps.perfectScrollbar();//滚动条
115 115 query();
  116 +
116 117 function query() {
117 118 var data = $('.ct_search_form_wrap>form', wrap).serializeJSON();
118   - data.page=page;
119   - data.size=pageSize;
  119 + data.page = page;
  120 + data.size = pageSize;
120 121 //query
121 122 gb_common.$get('/person/list', data, function (rs) {
122 123 $.each(rs.list, function () {
123   - if(this.jobCode.indexOf('-')!=-1)
  124 + if (this.jobCode.indexOf('-') != -1)
124 125 this.jobCode = this.jobCode.split('-')[1];
125 126 });
126   - var tbodyStr = template('person_card_list_body-temp', {list:rs.list, company_ns: company_code_name});
  127 + var tbodyStr = template('person_card_list_body-temp', {
  128 + list: rs.list,
  129 + company_ns: company_code_name
  130 + });
127 131 $('.ct_person_list_table>tbody', wrap).html(tbodyStr);
128 132  
129 133 //pagination
130   - if (resetPagination){
  134 + if (resetPagination) {
131 135 pagination(rs.pages, rs.currentPage);
132 136 //统计
133   - $('.count_text', wrap).text('共:'+rs['allSize']+' ,有卡:'+rs['have']+',无卡:'+rs['not_have']);
  137 + $('.count_text', wrap).text('共:' + rs['allSize'] + ' ,有卡:' + rs['have'] + ',无卡:' + rs['not_have']);
134 138 }
135 139  
136 140 ps.perfectScrollbar('update');
  141 +
  142 + initTippyImg();
137 143 });
138 144  
139 145 }
140 146  
141 147 var resetPagination = true;
142   - var pagination = function(pages, currentPage) {
  148 + var pagination = function (pages, currentPage) {
143 149 //分页
144 150 $('.pagination-holder', wrap).pagination({
145 151 pages: pages,
... ... @@ -184,6 +190,59 @@
184 190 page = 0;
185 191 query();
186 192 });
  193 +
  194 +
  195 + /**
  196 + * 照片
  197 + */
  198 +
  199 + var initTippyImg = function () {
  200 + var initialText = $('#template', wrap).html();
  201 +
  202 + //console.log('url', url);
  203 +
  204 + var tip = tippy('.show_pic_link', {
  205 + animation: 'shift-toward',
  206 + arrow: true,
  207 + html: wrap + ' #template',
  208 + placement: 'left',
  209 + onShow: function () {
  210 + var url = 'http://114.80.178.12:9003/person_head_pic/' + $(this._reference).data('code');
  211 + var cont = $('.tippy-content', this);
  212 +
  213 + if (tip.loading || cont.html() !== initialText)
  214 + return;
  215 +
  216 + tip.loading = true;
  217 +
  218 +
  219 + fetch(url)
  220 + .then(function (resp) {
  221 + return resp.blob()
  222 + })
  223 + .then(function (blob) {
  224 + var url = URL.createObjectURL(blob);
  225 +
  226 + cont.html('<img width="200" height="200" src="'+url+'">');
  227 + tip.loading = false;
  228 + });
  229 + },
  230 + onHidden: function () {
  231 + $('.tippy-content', this).html(initialText);
  232 + },
  233 + popperOptions: {
  234 + modifiers: {
  235 + preventOverflow: {
  236 + enabled: false
  237 + },
  238 + hide: {
  239 + enabled: false
  240 + }
  241 + }
  242 + }
  243 + });
  244 + };
  245 + //
187 246 })();
188 247 </script>
189 248 </div>
190 249 \ No newline at end of file
... ...