Commit c7cde0cf5b74c2868ce53c01af10d5b8ca5093a5

Authored by 徐烜
1 parent 4f0d16f3

Update

Too many changes to show.

To preserve performance only 19 of 545 files are displayed.

src/main/java/com/bsth/controller/schedule/TTInfoController.java deleted 100644 → 0
1   -package com.bsth.controller.schedule;
2   -
3   -import com.bsth.controller.BaseController2;
4   -import com.bsth.entity.schedule.TTInfo;
5   -import com.bsth.repository.schedule.TTInfoDetailRepository;
6   -import com.bsth.repository.schedule.TTInfoRepository;
7   -import com.bsth.service.schedule.utils.DataToolsProperties;
8   -import org.springframework.beans.factory.annotation.Autowired;
9   -import org.springframework.boot.context.properties.EnableConfigurationProperties;
10   -import org.springframework.data.domain.Page;
11   -import org.springframework.web.bind.annotation.*;
12   -
13   -import java.util.Map;
14   -
15   -/**
16   - * Created by xu on 16/5/12.
17   - */
18   -@RestController
19   -@RequestMapping("tic")
20   -@EnableConfigurationProperties(DataToolsProperties.class)
21   -public class TTInfoController extends BaseController2<TTInfo, Long> {
22   - @Autowired
23   - private DataToolsProperties dataToolsProperties;
24   - @Autowired
25   - private TTInfoRepository ttInfoRepository;
26   - @Autowired
27   - private TTInfoDetailRepository ttInfoDetailRepository;
28   -
29   - @Override
30   - protected String getDataImportKtrClasspath() {
31   - return dataToolsProperties.getTtinfoDatainputktr();
32   - }
33   -
34   - @Override
35   - public TTInfo findById(@PathVariable("id") Long aLong) {
36   - return ttInfoRepository.findOneExtend(aLong);
37   - }
38   -
39   - /**
40   - * 验证。
41   - * @param map
42   - * @return
43   - */
44   - @RequestMapping(value = "/validate/equale", method = RequestMethod.GET)
45   - public Map<String, Object> validateData(@RequestParam Map<String, Object> map) {
46   - // 一般比较自编号是否重复
47   - return baseService.validateEquale(map);
48   - }
49   -
50   - @Override
51   - public Page<TTInfo> list(@RequestParam Map<String, Object> map, @RequestParam(defaultValue = "0") int page, @RequestParam(defaultValue = "10") int size, @RequestParam(defaultValue = "id") String order, @RequestParam(defaultValue = "DESC") String direction) {
52   - // 如果有isCancel键值,将其值变成boolean
53   - if (map.get("isCancel_eq") != null)
54   - map.put("isCancel_eq", new Boolean(map.get("isCancel_eq").toString()));
55   -
56   - return super.list(map, page, size, order, direction);
57   - }
58   -}
src/main/java/com/bsth/controller/schedule/core/TTInfoController.java 0 → 100644
  1 +package com.bsth.controller.schedule.core;
  2 +
  3 +import com.bsth.common.ResponseCode;
  4 +import com.bsth.controller.schedule.BController;
  5 +import com.bsth.entity.schedule.TTInfo;
  6 +import com.bsth.service.schedule.ScheduleException;
  7 +import com.bsth.service.schedule.TTInfoService;
  8 +import org.springframework.beans.factory.annotation.Autowired;
  9 +import org.springframework.web.bind.annotation.RequestMapping;
  10 +import org.springframework.web.bind.annotation.RequestMethod;
  11 +import org.springframework.web.bind.annotation.RequestParam;
  12 +import org.springframework.web.bind.annotation.RestController;
  13 +
  14 +import java.util.HashMap;
  15 +import java.util.Map;
  16 +
  17 +/**
  18 + * Created by xu on 16/12/20.
  19 + */
  20 +@RestController(value = "tTInfoController_ec")
  21 +@RequestMapping(value = "tic_ec")
  22 +public class TTInfoController extends BController<TTInfo, Long> {
  23 + @Autowired
  24 + private TTInfoService ttInfoService;
  25 +
  26 + @RequestMapping(value = "/validate_name", method = RequestMethod.GET)
  27 + public Map<String, Object> validate_name(@RequestParam Map<String, Object> param) {
  28 + Map<String, Object> rtn = new HashMap<>();
  29 + try {
  30 + // 名字重复验证
  31 + TTInfo ttInfo = new TTInfo(
  32 + param.get("id_eq"),
  33 + param.get("xl.id_eq"),
  34 + param.get("name_eq"),
  35 + param.get("rule_days_eq"),
  36 + param.get("special_days_eq")
  37 + );
  38 + ttInfoService.validate_name(ttInfo);
  39 + rtn.put("status", ResponseCode.SUCCESS);
  40 + } catch (ScheduleException exp) {
  41 + rtn.put("status", ResponseCode.ERROR);
  42 + rtn.put("msg", exp.getMessage());
  43 + }
  44 +
  45 + return rtn;
  46 + }
  47 +
  48 + @RequestMapping(value = "/validate_n_d", method = RequestMethod.GET)
  49 + public Map<String, Object> validate_n_d(@RequestParam Map<String, Object> param) {
  50 + Map<String, Object> rtn = new HashMap<>();
  51 + try {
  52 + // 常规有效日重复验证
  53 + TTInfo ttInfo = new TTInfo(
  54 + param.get("id_eq"),
  55 + param.get("xl.id_eq"),
  56 + param.get("name_eq"),
  57 + param.get("rule_days_eq"),
  58 + param.get("special_days_eq")
  59 + );
  60 + ttInfoService.validate_n_d(ttInfo);
  61 + rtn.put("status", ResponseCode.SUCCESS);
  62 + } catch (ScheduleException exp) {
  63 + rtn.put("status", ResponseCode.ERROR);
  64 + rtn.put("msg", exp.getMessage());
  65 + }
  66 + return rtn;
  67 + }
  68 +
  69 + @RequestMapping(value = "/validate_s_d", method = RequestMethod.GET)
  70 + public Map<String, Object> validate_s_d(@RequestParam Map<String, Object> param) {
  71 + Map<String, Object> rtn = new HashMap<>();
  72 + try {
  73 + // 特殊有效日重复判定
  74 + TTInfo ttInfo = new TTInfo(
  75 + param.get("id_eq"),
  76 + param.get("xl.id_eq"),
  77 + param.get("name_eq"),
  78 + param.get("rule_days_eq"),
  79 + param.get("special_days_eq")
  80 + );
  81 + ttInfoService.validate_s_d(ttInfo);
  82 + rtn.put("status", ResponseCode.SUCCESS);
  83 + } catch (ScheduleException exp) {
  84 + rtn.put("status", ResponseCode.ERROR);
  85 + rtn.put("msg", exp.getMessage());
  86 + }
  87 + return rtn;
  88 + }
  89 +
  90 +}
  91 +
  92 +//
  93 +//@Autowired
  94 +//private DataToolsProperties dataToolsProperties;
  95 +//@Autowired
  96 +//private TTInfoRepository ttInfoRepository;
  97 +//@Autowired
  98 +//private TTInfoDetailRepository ttInfoDetailRepository;
  99 +//
  100 +// @Override
  101 +// protected String getDataImportKtrClasspath() {
  102 +// return dataToolsProperties.getTtinfoDatainputktr();
  103 +// }
  104 +//
  105 +// @Override
  106 +// public TTInfo findById(@PathVariable("id") Long aLong) {
  107 +// return ttInfoRepository.findOneExtend(aLong);
  108 +// }
  109 +//
  110 +// /**
  111 +// * 验证。
  112 +// * @param map
  113 +// * @return
  114 +// */
  115 +// @RequestMapping(value = "/validate/equale", method = RequestMethod.GET)
  116 +// public Map<String, Object> validateData(@RequestParam Map<String, Object> map) {
  117 +// // 一般比较自编号是否重复
  118 +// return baseService.validateEquale(map);
  119 +// }
  120 +//
  121 +// @Override
  122 +// public Page<TTInfo> list(@RequestParam Map<String, Object> map, @RequestParam(defaultValue = "0") int page, @RequestParam(defaultValue = "10") int size, @RequestParam(defaultValue = "id") String order, @RequestParam(defaultValue = "DESC") String direction) {
  123 +// // 如果有isCancel键值,将其值变成boolean
  124 +// if (map.get("isCancel_eq") != null)
  125 +// map.put("isCancel_eq", new Boolean(map.get("isCancel_eq").toString()));
  126 +//
  127 +// return super.list(map, page, size, order, direction);
  128 +// }
0 129 \ No newline at end of file
... ...
src/main/java/com/bsth/entity/schedule/TTInfo.java
1 1 package com.bsth.entity.schedule;
2 2  
3 3 import com.bsth.entity.Line;
4   -import com.bsth.entity.sys.SysUser;
5 4  
6 5 import javax.persistence.*;
7 6 import java.util.Date;
... ... @@ -18,7 +17,7 @@ import java.util.Date;
18 17 @NamedAttributeNode("updateBy")
19 18 })
20 19 })
21   -public class TTInfo {
  20 +public class TTInfo extends BEntity {
22 21  
23 22 /** 主键Id */
24 23 @Id
... ... @@ -50,9 +49,9 @@ public class TTInfo {
50 49  
51 50 // TODO:还有很多判定条件,这里先不放
52 51  
53   - /** 路牌数 */
  52 + /** 路牌数(这两个字段暂时不用) */
54 53 private int lpCount;
55   - /** 圈数 */
  54 + /** 圈数(这两个字段暂时不倒) */
56 55 private int loopCount;
57 56  
58 57 // TODO:原系统里的分别在,圈后圈进场,意思不知道,再议
... ... @@ -62,19 +61,25 @@ public class TTInfo {
62 61 /** 特殊有效日期(格式:2001-01-01,多个用逗号隔开) */
63 62 private String special_days;
64 63  
65   - /** 操作人员关联 */
66   - @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
67   - private SysUser createBy;
68   - /** 更新人员关联 */
69   - @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
70   - private SysUser updateBy;
71   - // 创建日期
72   - @Column(updatable = false, name = "create_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
73   - private Date createDate;
74   - // 修改日期
75   - @Column(name = "update_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP")
76   - private Date updateDate;
77   -
  64 + public TTInfo() {}
  65 + public TTInfo(Object id, Object xlid, Object name, Object nds, Object sds) {
  66 + if (id != null) {
  67 + this.id = Long.parseLong(id.toString());
  68 + }
  69 + if (xlid != null) {
  70 + this.xl = new Line();
  71 + this.xl.setId(Integer.valueOf(xlid.toString()));
  72 + }
  73 + if (name != null) {
  74 + this.name = String.valueOf(name);
  75 + }
  76 + if (nds != null) {
  77 + this.rule_days = String.valueOf(nds);
  78 + }
  79 + if (sds != null) {
  80 + this.special_days = String.valueOf(sds);
  81 + }
  82 + }
78 83  
79 84 public Long getId() {
80 85 return id;
... ... @@ -164,38 +169,6 @@ public class TTInfo {
164 169 this.special_days = special_days;
165 170 }
166 171  
167   - public SysUser getCreateBy() {
168   - return createBy;
169   - }
170   -
171   - public void setCreateBy(SysUser createBy) {
172   - this.createBy = createBy;
173   - }
174   -
175   - public SysUser getUpdateBy() {
176   - return updateBy;
177   - }
178   -
179   - public void setUpdateBy(SysUser updateBy) {
180   - this.updateBy = updateBy;
181   - }
182   -
183   - public Date getCreateDate() {
184   - return createDate;
185   - }
186   -
187   - public void setCreateDate(Date createDate) {
188   - this.createDate = createDate;
189   - }
190   -
191   - public Date getUpdateDate() {
192   - return updateDate;
193   - }
194   -
195   - public void setUpdateDate(Date updateDate) {
196   - this.updateDate = updateDate;
197   - }
198   -
199 172 public Boolean getIsCancel() {
200 173 return isCancel;
201 174 }
... ...
src/main/java/com/bsth/entity/schedule/TTInfoDetail.java
... ... @@ -3,10 +3,8 @@ package com.bsth.entity.schedule;
3 3 import com.bsth.entity.CarPark;
4 4 import com.bsth.entity.Line;
5 5 import com.bsth.entity.Station;
6   -import com.bsth.entity.sys.SysUser;
7 6  
8 7 import javax.persistence.*;
9   -import java.util.Date;
10 8  
11 9 /**
12 10 * 时刻表明细
... ... @@ -23,7 +21,7 @@ import java.util.Date;
23 21 @NamedAttributeNode("tcc")
24 22 })
25 23 })
26   -public class TTInfoDetail {
  24 +public class TTInfoDetail extends BEntity {
27 25  
28 26 /** 主健Id */
29 27 @Id
... ... @@ -85,20 +83,6 @@ public class TTInfoDetail {
85 83 /** 备注 */
86 84 private String remark;
87 85  
88   - /** 创建人 */
89   - @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
90   - private SysUser createBy;
91   - /** 修改人 */
92   - @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
93   - private SysUser updateBy;
94   -
95   - /** 创建日期 */
96   - @Column(updatable = false, name = "create_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
97   - private Date createDate;
98   - /** 修改日期 */
99   - @Column(name = "update_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP")
100   - private Date updateDate;
101   -
102 86 public Long getId() {
103 87 return id;
104 88 }
... ... @@ -235,38 +219,6 @@ public class TTInfoDetail {
235 219 this.remark = remark;
236 220 }
237 221  
238   - public SysUser getCreateBy() {
239   - return createBy;
240   - }
241   -
242   - public void setCreateBy(SysUser createBy) {
243   - this.createBy = createBy;
244   - }
245   -
246   - public SysUser getUpdateBy() {
247   - return updateBy;
248   - }
249   -
250   - public void setUpdateBy(SysUser updateBy) {
251   - this.updateBy = updateBy;
252   - }
253   -
254   - public Date getCreateDate() {
255   - return createDate;
256   - }
257   -
258   - public void setCreateDate(Date createDate) {
259   - this.createDate = createDate;
260   - }
261   -
262   - public Date getUpdateDate() {
263   - return updateDate;
264   - }
265   -
266   - public void setUpdateDate(Date updateDate) {
267   - this.updateDate = updateDate;
268   - }
269   -
270 222 public CarPark getTcc() {
271 223 return tcc;
272 224 }
... ...
src/main/java/com/bsth/service/schedule/CarConfigInfoService.java
... ... @@ -6,6 +6,6 @@ import com.bsth.entity.schedule.CarConfigInfo;
6 6 * Created by xu on 16/5/9.
7 7 */
8 8 public interface CarConfigInfoService extends BService<CarConfigInfo, Long> {
9   - public void validate_cars(CarConfigInfo carConfigInfo) throws ScheduleException;
10   - public void toggleCancel(Long id) throws ScheduleException;
  9 + void validate_cars(CarConfigInfo carConfigInfo) throws ScheduleException;
  10 + void toggleCancel(Long id) throws ScheduleException;
11 11 }
... ...
src/main/java/com/bsth/service/schedule/TTInfoService.java
1 1 package com.bsth.service.schedule;
2 2  
3 3 import com.bsth.entity.schedule.TTInfo;
4   -import com.bsth.service.BaseService;
5 4  
6 5 /**
7 6 * Created by xu on 16/5/12.
8 7 */
9   -public interface TTInfoService extends BaseService<TTInfo, Long> {
  8 +public interface TTInfoService extends BService<TTInfo, Long> {
  9 + void validate_name(TTInfo ttInfo) throws ScheduleException;
  10 + void validate_n_d(TTInfo ttInfo) throws ScheduleException;
  11 + void validate_s_d(TTInfo ttInfo) throws ScheduleException;
  12 + void toggleCancel(Long id) throws ScheduleException;
  13 +
10 14 }
... ...
src/main/java/com/bsth/service/schedule/TTInfoServiceImpl.java deleted 100644 → 0
1   -package com.bsth.service.schedule;
2   -
3   -import com.bsth.common.ResponseCode;
4   -import com.bsth.entity.schedule.TTInfo;
5   -import com.bsth.repository.schedule.TTInfoRepository;
6   -import com.bsth.service.impl.BaseServiceImpl;
7   -import org.springframework.beans.factory.annotation.Autowired;
8   -import org.springframework.stereotype.Service;
9   -
10   -import javax.transaction.Transactional;
11   -import java.util.HashMap;
12   -import java.util.Map;
13   -
14   -/**
15   - * Created by xu on 16/5/12.
16   - */
17   -@Service
18   -@Transactional
19   -public class TTInfoServiceImpl extends BaseServiceImpl<TTInfo, Long> implements TTInfoService {
20   - @Autowired
21   - private TTInfoRepository ttInfoRepository;
22   -
23   - @Transactional
24   - @Override
25   - public Map<String, Object> delete(Long aLong) {
26   - // 获取待作废的数据
27   - TTInfo ttInfo = ttInfoRepository.findOne(aLong);
28   -
29   - toogleIsCancel(ttInfo);
30   -
31   - Map<String, Object> map = new HashMap<>();
32   - map.put("status", ResponseCode.SUCCESS);
33   -
34   - return map;
35   - }
36   -
37   -
38   -
39   - private void toogleIsCancel(TTInfo ttInfo) {
40   - boolean isCancel = ttInfo.getIsCancel();
41   - if (isCancel) {
42   - ttInfo.setIsCancel(false);
43   - } else {
44   - ttInfo.setIsCancel(true);
45   - }
46   - }
47   -}
src/main/java/com/bsth/service/schedule/impl/TTInfoServiceImpl.java 0 → 100644
  1 +package com.bsth.service.schedule.impl;
  2 +
  3 +import com.bsth.entity.schedule.TTInfo;
  4 +import com.bsth.service.schedule.ScheduleException;
  5 +import com.bsth.service.schedule.TTInfoService;
  6 +import org.apache.commons.lang3.StringUtils;
  7 +import org.springframework.stereotype.Service;
  8 +import org.springframework.transaction.annotation.Transactional;
  9 +import org.springframework.util.CollectionUtils;
  10 +
  11 +import java.util.HashMap;
  12 +import java.util.List;
  13 +import java.util.Map;
  14 +
  15 +/**
  16 + * Created by xu on 16/12/20.
  17 + */
  18 +@Service
  19 +public class TTInfoServiceImpl extends BServiceImpl<TTInfo, Long> implements TTInfoService {
  20 +
  21 + @Override
  22 + public void validate_name(TTInfo ttInfo) throws ScheduleException {
  23 + // 名字重复验证
  24 + Map<String, Object> param = new HashMap<>();
  25 + if (ttInfo.getId() != null) {
  26 + param.put("id_ne", ttInfo.getId());
  27 + }
  28 + param.put("xl.id_eq", ttInfo.getXl().getId());
  29 + param.put("name_eq", ttInfo.getName());
  30 +
  31 + if (!CollectionUtils.isEmpty(list(param))) {
  32 + throw new ScheduleException("名字重复");
  33 + }
  34 + }
  35 +
  36 + @Override
  37 + public void validate_n_d(TTInfo ttInfo) throws ScheduleException {
  38 + // 常规有效日重复验证
  39 + // 找出所有未作废,已启用的时刻表,验证
  40 + Map<String, Object> param = new HashMap<>();
  41 + if (ttInfo.getId() != null) {
  42 + param.put("id_ne", ttInfo.getId());
  43 + }
  44 + param.put("xl.id_eq", ttInfo.getXl().getId());
  45 + param.put("isCancel_eq", false);
  46 + param.put("isEnableDisTemplate_eq", true);
  47 + List<TTInfo> ttInfos = list(param);
  48 + if (StringUtils.isEmpty(ttInfo.getRule_days())) {
  49 + throw new ScheduleException("常规有效日为空");
  50 + } else {
  51 + String[] nds = ttInfo.getRule_days().split(",");
  52 + for (TTInfo t : ttInfos) {
  53 + String[] nds_e = t.getRule_days().split(",");
  54 + for (int i = 0; i < 7; i++) {
  55 + if ("0".equals(nds[i])) {
  56 + //
  57 + } else {
  58 + if (nds[i].equals(nds_e[i])) {
  59 + throw new ScheduleException("当前常规有效日期已经使用");
  60 + }
  61 + }
  62 + }
  63 + }
  64 + }
  65 + }
  66 +
  67 + @Override
  68 + public void validate_s_d(TTInfo ttInfo) throws ScheduleException {
  69 + // 特殊有效日重复验证
  70 + // 找出所有未作废,已启用的时刻表,验证
  71 + Map<String, Object> param = new HashMap<>();
  72 + if (ttInfo.getId() != null) {
  73 + param.put("id_ne", ttInfo.getId());
  74 + }
  75 +
  76 + param.put("xl.id_eq", ttInfo.getXl().getId());
  77 + param.put("isCancel_eq", false);
  78 + param.put("isEnableDisTemplate_eq", true);
  79 + List<TTInfo> ttInfos = list(param);
  80 + if (StringUtils.isEmpty(ttInfo.getSpecial_days())) {
  81 + //
  82 + } else {
  83 + String[] sds = ttInfo.getSpecial_days().split(",");
  84 + for (TTInfo t : ttInfos) {
  85 + if (StringUtils.isEmpty(t.getSpecial_days())) {
  86 + //
  87 + } else {
  88 + for (String sd : sds) {
  89 + if (t.getSpecial_days().indexOf(sd) != -1) {
  90 + throw new ScheduleException("当前特殊日期已经使用");
  91 + }
  92 + }
  93 + }
  94 + }
  95 + }
  96 + }
  97 +
  98 +
  99 + @Transactional
  100 + @Override
  101 + public void delete(Long aLong) throws ScheduleException {
  102 + toggleCancel(aLong);
  103 + }
  104 +
  105 + @Transactional
  106 + @Override
  107 + public void toggleCancel(Long id) throws ScheduleException {
  108 + TTInfo ttInfo = findById(id);
  109 + if (ttInfo.getIsCancel()) {
  110 + ttInfo.setIsCancel(false);
  111 + } else {
  112 + ttInfo.setIsCancel(true);
  113 + }
  114 + }
  115 +}
... ...
src/main/resources/static/assets/bower_components/handsontable/.bower.json 0 → 100644
  1 +{
  2 + "name": "handsontable",
  3 + "description": "Spreadsheet-like data grid editor that provides copy/paste functionality compatible with Excel/Google Docs",
  4 + "version": "0.24.3",
  5 + "main": [
  6 + "./dist/handsontable.js",
  7 + "./dist/handsontable.css"
  8 + ],
  9 + "homepage": "http://handsontable.com/",
  10 + "repository": {
  11 + "type": "git",
  12 + "url": "https://github.com/handsontable/handsontable.git"
  13 + },
  14 + "authors": [
  15 + "Handsoncode",
  16 + "Handsoncode <hello@handsontable.com>"
  17 + ],
  18 + "keywords": [
  19 + "data",
  20 + "grid",
  21 + "table",
  22 + "editor",
  23 + "grid-editor",
  24 + "data-grid",
  25 + "data-table",
  26 + "spreadsheet",
  27 + "excel",
  28 + "tabular-data",
  29 + "edit-cell",
  30 + "editable-table",
  31 + "data-spreadsheet"
  32 + ],
  33 + "ignore": [
  34 + "**/.*",
  35 + "components",
  36 + "demo",
  37 + "node_modules",
  38 + "src",
  39 + "test"
  40 + ],
  41 + "dependencies": {
  42 + "zeroclipboard": "^2.2.0",
  43 + "moment": "^2.9.0",
  44 + "pikaday": "^1.3.2"
  45 + },
  46 + "devDependencies": {
  47 + "chroma-js": "~0.5.6"
  48 + },
  49 + "_release": "0.24.3",
  50 + "_resolution": {
  51 + "type": "version",
  52 + "tag": "0.24.3",
  53 + "commit": "eb19e2e0a364f0f535380238ddb10a2dd4fc150a"
  54 + },
  55 + "_source": "https://github.com/handsontable/handsontable.git",
  56 + "_target": "~0.24.0",
  57 + "_originalSource": "handsontable"
  58 +}
0 59 \ No newline at end of file
... ...
src/main/resources/static/assets/bower_components/handsontable/CHANGELOG.md 0 → 100644
  1 +All releases are described at https://github.com/handsontable/handsontable/releases
... ...
src/main/resources/static/assets/bower_components/handsontable/CNAME 0 → 100644
  1 +handsontable.com
... ...
src/main/resources/static/assets/bower_components/handsontable/CONTRIBUTING.md 0 → 100644
  1 +# Contributing to Handsontable
  2 +
  3 +Your contributions to the project are very welcome. If you would like to fix a bug or propose a new feature, you can submit a Pull Request.
  4 +
  5 +To help us merge your Pull Request, please make sure you follow these points:
  6 +
  7 +1. Please make your fix on a separate branch. This makes merging much easier.
  8 +2. Do not edit files in `dist/` directory (e.g: `handsontable.js`, `handsontable.css`, `handsontable.full.js`, `handsontable.full.css`). Instead, try to edit files inside the `src/` directory and then use `grunt` to make a build. More information about this on wiki page [Building](https://github.com/handsontable/handsontable/wiki/Building).
  9 +3. **Very important:** For any change that you make, **please try to also add a test case(s)** in `tests/jasmine/spec/` or `src/3rdparty/walkontable/test/jasmine/spec/`. This helps us understand the issue and make sure that it will stay fixed forever. See [Testing](https://github.com/handsontable/handsontable/wiki/Testing)
  10 +4. **Very important:** Please review our [coding style](https://github.com/handsontable/handsontable/wiki/Coding-style) for instructions on how to maintain a fork and submit patches.
  11 +5. Describe the problem in the Pull Request description (of course you would do it, why do I mention that?)
  12 +
  13 +Thank you for your commitment!
  14 +
  15 +## Team rules
  16 +
  17 +The Handsontable team utilizes Git-Flow. See [How we use Git-Flow](https://github.com/handsontable/handsontable/wiki/How-we-use-Git-Flow)
... ...
src/main/resources/static/assets/bower_components/handsontable/Gruntfile.js 0 → 100644
  1 +/**
  2 + * This file is used to build Handsontable from `src/*`
  3 + *
  4 + * Installation:
  5 + * 1. Install Grunt CLI (`npm install -g grunt-cli`)
  6 + * 1. Install Grunt 0.4.0 and other dependencies (`npm install`)
  7 + *
  8 + * Build:
  9 + * Execute `grunt` from root directory of this directory (where Gruntfile.js is)
  10 + * To execute automatically after each change, execute `grunt --force default watch`
  11 + * To execute build followed by the test run, execute `grunt test`
  12 + *
  13 + * Result:
  14 + * building Handsontable will create files:
  15 + * - dist/handsontable.js
  16 + * - dist/handsontable.css
  17 + * - dist/handsontable.full.js
  18 + * - dist/handsontable.full.css
  19 + * - dist/handsontable.full.min.js
  20 + * - dist/handsontable.full.min.css
  21 + *
  22 + * See http://gruntjs.com/getting-started for more information about Grunt
  23 + */
  24 +var browsers = [
  25 + {
  26 + browserName: 'firefox',
  27 + platform: 'Windows 7'
  28 + },
  29 + {
  30 + browserName: 'chrome',
  31 + platform: 'Windows 7'
  32 + },
  33 + {
  34 + browserName: 'opera',
  35 + platform: 'Windows 7'
  36 + },
  37 + //{
  38 + // browserName: 'internet explorer',
  39 + // version: '8',
  40 + // platform: 'Windows 7'
  41 + //},
  42 + //{
  43 + // browserName: 'internet explorer',
  44 + // version: '9',
  45 + // platform: 'Windows 7'
  46 + //},
  47 + {
  48 + browserName: 'internet explorer',
  49 + version: '10',
  50 + platform: 'Windows 8'
  51 + }
  52 +];
  53 +
  54 +module.exports = function(grunt) {
  55 +
  56 + require('time-grunt')(grunt);
  57 + require('load-grunt-tasks')(grunt);
  58 +
  59 + grunt.initConfig({
  60 + pkg: grunt.file.readJSON('package.json'),
  61 + gitinfo: {},
  62 +
  63 + meta: {
  64 + src: [
  65 + 'src/*.js',
  66 + 'src/editors/*.js',
  67 + 'src/plugins/**/!(*.spec).js',
  68 + 'src/renderers/*.js',
  69 + 'src/validators/*.js',
  70 + 'src/shims/*.js',
  71 + 'src/3rdparty/*.js'
  72 + ],
  73 + walkontable: [
  74 + 'src/3rdparty/walkontable/src/**/*.js'
  75 + ],
  76 + vendor: [
  77 + 'lib/numeral/numeral.js'
  78 + ]
  79 + },
  80 +
  81 + watch: {
  82 + options: {
  83 + livereload: true // works with Chrome LiveReload extension. See: https://github.com/gruntjs/grunt-contrib-watch
  84 + },
  85 + files: [
  86 + 'src/**/*(*.js|*.css|*.html)',
  87 + '!src/3rdparty/walkontable/test/**/*',
  88 + 'lib/**/*(*.js|*.css)'
  89 + ],
  90 + tasks: ['build-dev']
  91 + },
  92 +
  93 + jasmine: {
  94 + options: {
  95 + page: {
  96 + viewportSize: {
  97 + width: 1200,
  98 + height: 1000
  99 + }
  100 + },
  101 + },
  102 + handsontableStandalone: {
  103 + src: [
  104 + 'dist/handsontable.js',
  105 + 'demo/js/numeral.de-de.js',
  106 + 'demo/js/backbone/lodash.underscore.js',
  107 + 'demo/js/backbone/backbone.js',
  108 + 'demo/js/backbone/backbone-relational/backbone-relational.js',
  109 + 'demo/js/jquery-ui/js/jquery-ui.custom.js',
  110 + 'plugins/removeRow/handsontable.removeRow.js'
  111 + ],
  112 + options: {
  113 + specs: [
  114 + 'test/jasmine/spec/*Spec.js',
  115 + 'test/jasmine/spec/!(mobile)*/*Spec.js',
  116 + 'src/plugins/*/test/*.spec.js',
  117 + 'plugins/*/test/*.spec.js',
  118 + 'test/jasmine/spec/MemoryLeakTest.js'
  119 + ],
  120 + styles: [
  121 + 'test/jasmine/css/SpecRunner.css',
  122 + 'dist/handsontable.min.css',
  123 + 'plugins/removeRow/handsontable.removeRow.css',
  124 + 'demo/js/jquery-ui/css/ui-bootstrap/jquery-ui.custom.css',
  125 + 'demo/js/pikaday/css/pikaday.css'
  126 + ],
  127 + vendor: [
  128 + 'demo/js/jquery.min.js',
  129 + 'lib/numeral/numeral.js',
  130 + 'demo/js/moment/moment.js',
  131 + 'demo/js/pikaday/pikaday.js',
  132 + 'demo/js/ZeroClipboard.js',
  133 + 'test/jasmine/lib/jasmine-extensions.js'
  134 + ],
  135 + helpers: [
  136 + 'test/jasmine/spec/SpecHelper.js',
  137 + 'test/jasmine/lib/nodeShim.js',
  138 + 'test/jasmine/spec/test-init.js'
  139 + ],
  140 + outfile: 'test/jasmine/SpecRunner.html',
  141 + template: 'test/jasmine/templates/SpecRunner.tmpl',
  142 + keepRunner: true
  143 + }
  144 + },
  145 + handsontableFull: {
  146 + src: [
  147 + 'dist/handsontable.full.min.js',
  148 + 'demo/js/numeral.de-de.js',
  149 + 'demo/js/backbone/lodash.underscore.js',
  150 + 'demo/js/backbone/backbone.js',
  151 + 'demo/js/backbone/backbone-relational/backbone-relational.js',
  152 + 'demo/js/jquery-ui/js/jquery-ui.custom.js',
  153 + 'plugins/removeRow/handsontable.removeRow.js'
  154 + ],
  155 + options: {
  156 + specs: [
  157 + 'test/jasmine/spec/*Spec.js',
  158 + 'test/jasmine/spec/!(mobile)*/*Spec.js',
  159 + 'src/plugins/*/test/*.spec.js',
  160 + 'plugins/*/test/*.spec.js',
  161 + 'test/jasmine/spec/MemoryLeakTest.js'
  162 + ],
  163 + styles: [
  164 + 'test/jasmine/css/SpecRunner.css',
  165 + 'dist/handsontable.min.css',
  166 + 'plugins/removeRow/handsontable.removeRow.css',
  167 + 'demo/js/jquery-ui/css/ui-bootstrap/jquery-ui.custom.css',
  168 + 'demo/js/pikaday/css/pikaday.css'
  169 + ],
  170 + vendor: [
  171 + 'demo/js/jquery.min.js',
  172 + 'demo/js/moment/moment.js',
  173 + 'test/jasmine/lib/jasmine-extensions.js'
  174 + ],
  175 + helpers: [
  176 + 'test/jasmine/spec/SpecHelper.js',
  177 + 'test/jasmine/lib/nodeShim.js',
  178 + 'test/jasmine/spec/test-init.js'
  179 + ],
  180 + outfile: 'test/jasmine/SpecRunner.html',
  181 + template: 'test/jasmine/templates/SpecRunner.tmpl',
  182 + keepRunner: true
  183 + }
  184 + },
  185 + walkontable: {
  186 + src: [
  187 + 'dist/handsontable.min.js'
  188 + ],
  189 + options: {
  190 + specs: [
  191 + 'src/3rdparty/walkontable/test/jasmine/spec/**/*.spec.js'
  192 + ],
  193 + styles: [
  194 + 'src/3rdparty/walkontable/css/walkontable.css'
  195 + ],
  196 + vendor: [
  197 + 'demo/js/jquery.min.js',
  198 + 'lib/numeral/numeral.js',
  199 + 'demo/js/moment/moment.js',
  200 + 'demo/js/pikaday/pikaday.js',
  201 + 'demo/js/ZeroClipboard.js',
  202 + 'demo/js/numeral.de-de.js'
  203 + ],
  204 + helpers: [
  205 + 'src/3rdparty/walkontable/test/jasmine/SpecHelper.js',
  206 + 'test/jasmine/lib/nodeShim.js',
  207 + 'src/3rdparty/walkontable/test/jasmine/test-init.js'
  208 +
  209 + ],
  210 + outfile: 'src/3rdparty/walkontable/test/jasmine/SpecRunner.html',
  211 + template: 'test/jasmine/templates/SpecRunner.tmpl',
  212 + keepRunner: true
  213 + }
  214 + },
  215 + mobile: {
  216 + src: [
  217 + 'dist/handsontable.min.js',
  218 + 'demo/js/numeral.de-de.js',
  219 + 'demo/js/backbone/lodash.underscore.js',
  220 + 'demo/js/backbone/backbone.js',
  221 + 'demo/js/backbone/backbone-relational/backbone-relational.js',
  222 + 'demo/js/jquery-ui/js/jquery-ui.custom.js',
  223 + 'plugins/removeRow/handsontable.removeRow.js'
  224 + ],
  225 + options: {
  226 + specs: [
  227 + 'test/jasmine/spec/mobile/*Spec.js',
  228 + 'src/plugins/*/test/mobile/*.spec.js'
  229 + ],
  230 + styles: [
  231 + 'test/jasmine/css/SpecRunner.css',
  232 + 'dist/handsontable.min.css',
  233 + 'plugins/removeRow/handsontable.removeRow.css',
  234 + 'demo/js/jquery-ui/css/ui-bootstrap/jquery-ui.custom.css',
  235 + 'demo/js/pikaday/css/pikaday.css'
  236 + ],
  237 + vendor: [
  238 + 'demo/js/jquery.min.js',
  239 + 'lib/numeral/numeral.js',
  240 + 'demo/js/ZeroClipboard.js',
  241 + 'demo/js/moment/moment.js',
  242 + 'demo/js/pikaday/pikaday.js',
  243 + 'test/jasmine/lib/jasmine-extensions.js'
  244 + ],
  245 + helpers: [
  246 + 'test/jasmine/spec/SpecHelper.js',
  247 + 'test/jasmine/spec/MobileSpecHelper.js',
  248 + 'test/jasmine/lib/nodeShim.js',
  249 + 'test/jasmine/spec/test-init.js'
  250 + ],
  251 + outfile: 'test/jasmine/MobileSpecRunner.html',
  252 + template: 'test/jasmine/templates/SpecRunner.tmpl',
  253 + keepRunner: true
  254 + }
  255 + }
  256 + },
  257 +
  258 + connect: {
  259 + server: {
  260 + options: {
  261 + port: 8080,
  262 + base: '.',
  263 + keepalive: true
  264 + }
  265 + },
  266 + sauce: {
  267 + options: {
  268 + port: 9999,
  269 + base: '.',
  270 + keepalive: false
  271 + }
  272 + }
  273 + },
  274 + 'saucelabs-jasmine': {
  275 + handsontable: {
  276 + options: {
  277 + urls: ['http://localhost:9999/test/jasmine/SpecRunner.html'],
  278 + build: '<%= pkg.version %>-<%= gitinfo.local.branch.current.name %>',
  279 + concurrency: 3,
  280 + browsers: browsers,
  281 + testname: 'Development test (Handsontable)'
  282 + }
  283 + },
  284 + walkontable: {
  285 + options: {
  286 + urls: ['http://localhost:9999/src/3rdparty/walkontable/test/jasmine/SpecRunner.html'],
  287 + build: '<%= pkg.version %>-<%= gitinfo.local.branch.current.name %>',
  288 + concurrency: 3,
  289 + browsers: browsers,
  290 + testname: 'Development test (Walkontable)'
  291 + }
  292 + }
  293 + },
  294 +
  295 + jshint: {
  296 + options: {
  297 + jshintrc: true
  298 + },
  299 + handsontable: '<%= meta.src %>',
  300 + walkontable: '<%= meta.walkontable %>'
  301 + },
  302 +
  303 + jscs: {
  304 + handsontable: {
  305 + files: {
  306 + src: ['<%= meta.src %>', '!src/shims/classes.js']
  307 + }
  308 + },
  309 + walkontable: {
  310 + files: {
  311 + src: ['<%= meta.walkontable %>', '!src/shims/classes.js']
  312 + }
  313 + },
  314 + options: {
  315 + config: '.jscsrc',
  316 + esnext: true,
  317 + verbose: true
  318 + }
  319 + },
  320 +
  321 + hotBuilder: {
  322 + handsontable: {
  323 + files: {
  324 + dist: 'package.json'
  325 + }
  326 + },
  327 + handsontableDev: {
  328 + files: {
  329 + dist: 'package.json'
  330 + },
  331 + options: {
  332 + devMode: true
  333 + }
  334 + },
  335 + handsontableCustom: {
  336 + files: {
  337 + dist: 'package.json'
  338 + },
  339 + options: {
  340 + disableUI: false
  341 + }
  342 + },
  343 + options: {
  344 + minify: true
  345 + }
  346 + }
  347 + });
  348 +
  349 + // Default task.
  350 + grunt.registerTask('default', ['jscs', 'jshint', 'gitinfo', 'build']);
  351 + grunt.registerTask('build', ['hotBuilder:handsontable']);
  352 + grunt.registerTask('build-dev', ['hotBuilder:handsontableDev']);
  353 + grunt.registerTask('build-custom', ['hotBuilder:handsontableCustom']);
  354 + grunt.registerTask('test', ['default', 'jasmine:handsontableStandalone', 'jasmine:handsontableFull', 'jasmine:walkontable', 'jasmine:mobile:build']);
  355 + grunt.registerTask('test:handsontable', ['default', 'jasmine:handsontableStandalone']);
  356 + grunt.registerTask('test:handsontableStandalone', ['test:handsontable']);
  357 + grunt.registerTask('test:handsontableFull', ['default', 'jasmine:handsontableFull']);
  358 + grunt.registerTask('test:walkontable', ['default', 'jasmine:walkontable']);
  359 + grunt.registerTask('test:mobile', ['default', 'jasmine:mobile:build']);
  360 + grunt.registerTask('sauce', ['default', 'connect:sauce', 'saucelabs-jasmine:walkontable', 'saucelabs-jasmine:handsontable']);
  361 + grunt.registerTask('sauce:handsontable', ['default', 'connect:sauce', 'saucelabs-jasmine:handsontable']);
  362 + grunt.registerTask('sauce:walkontable', ['default', 'connect:sauce', 'saucelabs-jasmine:walkontable']);
  363 +
  364 + grunt.registerTask('test-handsontable-standalone', ['default', 'jasmine:handsontableStandalone']);
  365 + grunt.registerTask('test-handsontable-full', ['default', 'jasmine:handsontableFull']);
  366 + grunt.registerTask('test-handsontable', ['test-handsontable-standalone']);
  367 +
  368 + grunt.loadTasks('tasks');
  369 + grunt.loadNpmTasks('hot-builder');
  370 + grunt.loadNpmTasks('grunt-jscs');
  371 +};
... ...
src/main/resources/static/assets/bower_components/handsontable/LICENSE 0 → 100644
  1 +(The MIT License)
  2 +
  3 +Copyright (c) 2012-2014 Marcin Warpechowski
  4 +Copyright (c) 2015 Handsoncode sp. z o.o. <hello@handsoncode.net>
  5 +
  6 +Permission is hereby granted, free of charge, to any person obtaining
  7 +a copy of this software and associated documentation files (the
  8 +'Software'), to deal in the Software without restriction, including
  9 +without limitation the rights to use, copy, modify, merge, publish,
  10 +distribute, sublicense, and/or sell copies of the Software, and to
  11 +permit persons to whom the Software is furnished to do so, subject to
  12 +the following conditions:
  13 +
  14 +The above copyright notice and this permission notice shall be
  15 +included in all copies or substantial portions of the Software.
  16 +
  17 +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
  18 +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  19 +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
  20 +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
  21 +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
  22 +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  23 +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
... ...
src/main/resources/static/assets/bower_components/handsontable/README.md 0 → 100644
  1 +# Handsontable [![Build Status](https://travis-ci.org/handsontable/handsontable.png?branch=master)](https://travis-ci.org/handsontable/handsontable)
  2 +
  3 +Handsontable is a data grid component with an Excel-like appearance. Built in JavaScript, it integrates with any data source and comes with [features](http://docs.handsontable.com/0.17.0/tutorial-features.html) like data validation, sorting, grouping, data binding or column ordering. Actively supported by the Handsoncode team and the GitHub community.
  4 +
  5 +Check out the demos at http://handsontable.com/examples.html or fork the example on
  6 +[JSFiddle](http://jsfiddle.net/js_ziggle/hU6Kz/3228/) to see Handsontable in action.
  7 +
  8 +- - -
  9 +
  10 +### Quick start
  11 +
  12 +1. A recommended way to install Handsontable is through [Bower](http://bower.io/search/?q=handsontable) package manager using the following command:
  13 +
  14 + `bower install handsontable --save`
  15 +
  16 + Alternatively, you can [download it in a ZIP file](https://github.com/handsontable/handsontable/archive/master.zip).
  17 +
  18 +2. After Handsontable is downloaded, embed the code into your project. All the files that you need are in the `dist\` directory:
  19 +
  20 + ```html
  21 + <script src="dist/handsontable.full.js"></script>
  22 + <link rel="stylesheet" media="screen" href="dist/handsontable.full.css">
  23 + ```
  24 +
  25 +3. Then, create a new `Handsontable` object, passing a reference to an empty div as a first argument. After that, load some data if you wish:
  26 +
  27 + ```html
  28 + <div id="example"></div>
  29 +
  30 + <script>
  31 + var data = [
  32 + ["", "Kia", "Nissan", "Toyota", "Honda"],
  33 + ["2008", 10, 11, 12, 13],
  34 + ["2009", 20, 11, 14, 13],
  35 + ["2010", 30, 15, 12, 13]
  36 + ];
  37 +
  38 + var container = document.getElementById('example');
  39 + var hot = new Handsontable(container,
  40 + {
  41 + data: data
  42 + });
  43 + </script>
  44 + ```
  45 +
  46 +### API Reference
  47 +
  48 +- [Core methods](http://docs.handsontable.com/Core.html)
  49 +- [Options](http://docs.handsontable.com/Options.html)
  50 +- [Hooks](http://docs.handsontable.com/Hooks.html)
  51 +
  52 +## AMD support
  53 +
  54 +If you use a modular script loader than Handsontable is not bound to the global object and will fit nicely in your build process. You can require Handsontable just like any other module.
  55 +
  56 +```javascript
  57 +require(['handsontable'], function(Handsontable) {
  58 + var hot = new Handsontable(document.getElementById('example'), {
  59 + data: [[1, 2, 3, 4], [1, 2, 3, 4]]
  60 + });
  61 +});
  62 +```
  63 +
  64 +## CommonJS module support
  65 +
  66 +If you use a CommonJS compatible environment you can use the require function to import Handsontable.
  67 +
  68 +
  69 +```javascript
  70 +var handsontable = require('handsontable');
  71 +```
  72 +
  73 +To bundle handsontable with [Browserify](http://browserify.org) you must specify the module names of all required modules by Handsontable:
  74 +
  75 +`browserify main.js -o bundle.js -r moment -r pikaday -r zeroclipboard`
  76 +
  77 +### Troubleshooting
  78 +
  79 +Please follow this guidelines when reporting bugs and feature requests:
  80 +
  81 +1. Use [GitHub Issues](https://github.com/handsontable/handsontable/issues) board to report bugs and feature requests (not our email address)
  82 +2. Please **always** write steps to reproduce the error. That way we can focus on fixing the bug, not scratching our heads trying to reproduce it.
  83 +3. If possible, please add a JSFiddle link that shows the problem (start by forking [this fiddle](http://jsfiddle.net/js_ziggle/hU6Kz/3228/)). It saves us much time.
  84 +4. If you can't reproduce it on JSFiddle, please add a screenshot that shows the problem. JSFiddle is much more appreciated because it lets us start fixing straight away.
  85 +
  86 +Thanks for understanding!
  87 +
  88 +### Compatibility
  89 +
  90 +Handsontable is compatible with IE 9+, Firefox, Chrome, Safari and Opera.
  91 +
  92 +### Want to help?
  93 +
  94 +Please see [CONTRIBUTING.md](CONTRIBUTING.md)
  95 +
  96 +### Changelog
  97 +
  98 +To see the list of recent changes, see [Releases section](https://github.com/handsontable/handsontable/releases).
  99 +
  100 +### License
  101 +
  102 +The MIT License (see the [LICENSE](https://github.com/handsontable/handsontable/blob/master/LICENSE) file for the full text)
  103 +
  104 +### Contact
  105 +
  106 +You can contact us at hello@handsontable.com.
... ...
src/main/resources/static/assets/bower_components/handsontable/bower.json 0 → 100644
  1 +{
  2 + "name": "handsontable",
  3 + "description": "Spreadsheet-like data grid editor that provides copy/paste functionality compatible with Excel/Google Docs",
  4 + "version": "0.24.3",
  5 + "main": ["./dist/handsontable.js", "./dist/handsontable.css"],
  6 + "homepage": "http://handsontable.com/",
  7 + "repository": {
  8 + "type": "git",
  9 + "url": "https://github.com/handsontable/handsontable.git"
  10 + },
  11 + "authors": [
  12 + "Handsoncode", "Handsoncode <hello@handsontable.com>"
  13 + ],
  14 + "keywords": [
  15 + "data",
  16 + "grid",
  17 + "table",
  18 + "editor",
  19 + "grid-editor",
  20 + "data-grid",
  21 + "data-table",
  22 + "spreadsheet",
  23 + "excel",
  24 + "tabular-data",
  25 + "edit-cell",
  26 + "editable-table",
  27 + "data-spreadsheet"
  28 + ],
  29 + "ignore": [
  30 + "**/.*",
  31 + "components",
  32 + "demo",
  33 + "node_modules",
  34 + "src",
  35 + "test"
  36 + ],
  37 + "dependencies": {
  38 + "zeroclipboard": "^2.2.0",
  39 + "moment": "^2.9.0",
  40 + "pikaday": "^1.3.2"
  41 + },
  42 + "devDependencies": {
  43 + "chroma-js": "~0.5.6"
  44 + }
  45 +}
... ...
src/main/resources/static/assets/bower_components/handsontable/dist/README.md 0 → 100644
  1 +# Handsontable distributions
  2 +
  3 +## Full distribution (recommended)
  4 +
  5 +The full distribution allows you to use Handsontable by just including 2 files:
  6 +```html
  7 +<script src="dist/handsontable.full.js"></script>
  8 +<link rel="stylesheet" media="screen" href="dist/handsontable.full.css">
  9 +```
  10 +(It may also require Pikaday and moment.js, if you're using the Datepicker for date input)
  11 +
  12 +**handsontable.full.js** and **handsontable.full.css** are compiled with ___all___ the needed dependencies.
  13 +
  14 +Using this has the same effect as loading all the dependencies from the Bare distribution (see below).
  15 +
  16 +## Bare distribution
  17 +
  18 +If you are a "Bob the Builder" kind of hacker, you will need to load Handsontable JS, CSS and their dependencies:
  19 +```html
  20 +<!-- Required dependencies (as external scripts) -->
  21 +<script src="lib/pikaday/pikaday.js"></script>
  22 +<script src="lib/moment/moment.js"></script>
  23 +<script src="lib/zeroclipboard/ZeroClipboard.js"></script>
  24 +<!-- Handsontable bare files -->
  25 +<script src="dist/handsontable.js"></script>
  26 +<link rel="stylesheet" media="screen" href="dist/handsontable.css">
  27 +```
  28 +
  29 +**handsontable.js** and **handsontable.css** are compiled ___without___ the needed dependencies.
  30 +
  31 +## Custom distribution
  32 +
  33 +If you want to build your own custom Handsontable package distribution check out our [tool](https://github.com/handsontable/hot-builder) designed for this.
... ...
src/main/resources/static/assets/bower_components/handsontable/dist/handsontable.css 0 → 100644
  1 +/*!
  2 +(The MIT License)
  3 +
  4 +Copyright (c) 2012-2014 Marcin Warpechowski
  5 +Copyright (c) 2015 Handsoncode sp. z o.o. <hello@handsoncode.net>
  6 +
  7 +Permission is hereby granted, free of charge, to any person obtaining
  8 +a copy of this software and associated documentation files (the
  9 +'Software'), to deal in the Software without restriction, including
  10 +without limitation the rights to use, copy, modify, merge, publish,
  11 +distribute, sublicense, and/or sell copies of the Software, and to
  12 +permit persons to whom the Software is furnished to do so, subject to
  13 +the following conditions:
  14 +
  15 +The above copyright notice and this permission notice shall be
  16 +included in all copies or substantial portions of the Software.
  17 +
  18 +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
  19 +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  20 +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
  21 +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
  22 +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
  23 +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  24 +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  25 +
  26 +*/
  27 +.handsontable {
  28 + position: relative;
  29 +}
  30 +
  31 +.handsontable .hide{
  32 + display: none;
  33 +}
  34 +.handsontable .relative {
  35 + position: relative;
  36 +}
  37 +
  38 +.handsontable.htAutoSize {
  39 + visibility: hidden;
  40 + left: -99000px;
  41 + position: absolute;
  42 + top: -99000px;
  43 +}
  44 +
  45 +.handsontable .wtHider {
  46 + width: 0;
  47 +}
  48 +
  49 +.handsontable .wtSpreader {
  50 + position: relative;
  51 + width: 0; /*must be 0, otherwise blank space appears in scroll demo after scrolling max to the right */
  52 + height: auto;
  53 +}
  54 +
  55 +.handsontable table,
  56 +.handsontable tbody,
  57 +.handsontable thead,
  58 +.handsontable td,
  59 +.handsontable th,
  60 +.handsontable input,
  61 +.handsontable textarea,
  62 +.handsontable div {
  63 + box-sizing: content-box;
  64 + -webkit-box-sizing: content-box;
  65 + -moz-box-sizing: content-box;
  66 +}
  67 +
  68 +.handsontable input,
  69 +.handsontable textarea {
  70 + min-height: initial;
  71 +}
  72 +
  73 +.handsontable table.htCore {
  74 + border-collapse: separate;
  75 + /*it must be separate, otherwise there are offset miscalculations in WebKit: http://stackoverflow.com/questions/2655987/border-collapse-differences-in-ff-and-webkit*/
  76 + /*this actually only changes appearance of user selection - does not make text unselectable
  77 + -webkit-user-select: none;
  78 + -khtml-user-select: none;
  79 + -moz-user-select: none;
  80 + -o-user-select: none;
  81 + -ms-user-select: none;
  82 + /*user-select: none; /*no browser supports unprefixed version*/
  83 + border-spacing: 0;
  84 + margin: 0;
  85 + border-width: 0;
  86 + table-layout: fixed;
  87 + width: 0;
  88 + outline-width: 0;
  89 + /* reset bootstrap table style. for more info see: https://github.com/handsontable/handsontable/issues/224 */
  90 + max-width: none;
  91 + max-height: none;
  92 +}
  93 +
  94 +.handsontable col {
  95 + width: 50px;
  96 +}
  97 +
  98 +.handsontable col.rowHeader {
  99 + width: 50px;
  100 +}
  101 +
  102 +.handsontable th,
  103 +.handsontable td {
  104 + border-top-width: 0;
  105 + border-left-width: 0;
  106 + border-right: 1px solid #CCC;
  107 + border-bottom: 1px solid #CCC;
  108 + height: 22px;
  109 + empty-cells: show;
  110 + line-height: 21px;
  111 + padding: 0 4px 0 4px;
  112 + /* top, bottom padding different than 0 is handled poorly by FF with HTML5 doctype */
  113 + background-color: #FFF;
  114 + vertical-align: top;
  115 + overflow: hidden;
  116 + outline-width: 0;
  117 + white-space: pre-line;
  118 + /* preserve new line character in cell */
  119 +}
  120 +
  121 +.handsontable td.htInvalid {
  122 + background-color: #ff4c42 !important; /*gives priority over td.area selection background*/
  123 +}
  124 +
  125 +.handsontable td.htNoWrap {
  126 + white-space: nowrap;
  127 +}
  128 +
  129 +.handsontable th:last-child {
  130 + /*Foundation framework fix*/
  131 + border-right: 1px solid #CCC;
  132 + border-bottom: 1px solid #CCC;
  133 +}
  134 +
  135 +.handsontable tr:first-child th.htNoFrame,
  136 +.handsontable th:first-child.htNoFrame,
  137 +.handsontable th.htNoFrame {
  138 + border-left-width: 0;
  139 + background-color: white;
  140 + border-color: #FFF;
  141 +}
  142 +
  143 +.handsontable th:first-child,
  144 +.handsontable td:first-of-type,
  145 +.handsontable .htNoFrame + th,
  146 +.handsontable .htNoFrame + td {
  147 + border-left: 1px solid #CCC;
  148 +}
  149 +
  150 +.handsontable.htRowHeaders thead tr th:nth-child(2) {
  151 + border-left: 1px solid #CCC;
  152 +}
  153 +
  154 +.handsontable tr:first-child th,
  155 +.handsontable tr:first-child td {
  156 + border-top: 1px solid #CCC;
  157 +}
  158 +
  159 +.ht_master:not(.innerBorderLeft) ~ .handsontable tbody tr th,
  160 +.ht_master:not(.innerBorderLeft) ~ .handsontable:not(.ht_clone_top) thead tr th:first-child
  161 +{
  162 + border-right-width: 0;
  163 +}
  164 +
  165 +.ht_master:not(.innerBorderTop) thead tr:last-child th,
  166 +.ht_master:not(.innerBorderTop) ~ .handsontable thead tr:last-child th,
  167 +.ht_master:not(.innerBorderTop) thead tr.lastChild th,
  168 +.ht_master:not(.innerBorderTop) ~ .handsontable thead tr.lastChild th {
  169 + border-bottom-width: 0;
  170 +}
  171 +
  172 +.handsontable th {
  173 + background-color: #EEE;
  174 + color: #222;
  175 + text-align: center;
  176 + font-weight: normal;
  177 + white-space: nowrap;
  178 +}
  179 +
  180 +.handsontable thead th {
  181 + padding: 0;
  182 +}
  183 +
  184 +.handsontable th.active {
  185 + background-color: #CCC;
  186 +}
  187 +
  188 +.handsontable thead th .relative {
  189 + padding: 2px 4px;
  190 +}
  191 +
  192 +/* plugins */
  193 +
  194 +.handsontable .manualColumnMover {
  195 + position: fixed;
  196 + left: 0;
  197 + top: 0;
  198 + background-color: transparent;
  199 + width: 5px;
  200 + height: 25px;
  201 + z-index: 999;
  202 + cursor: move;
  203 +}
  204 +
  205 +.handsontable .manualRowMover {
  206 + position: fixed;
  207 + left: -4px;
  208 + top: 0;
  209 + background-color: transparent;
  210 + height: 5px;
  211 + width: 50px;
  212 + z-index: 999;
  213 + cursor: move;
  214 +}
  215 +
  216 +.handsontable .manualColumnMoverGuide,
  217 +.handsontable .manualRowMoverGuide {
  218 + position: fixed;
  219 + left: 0;
  220 + top: 0;
  221 + background-color: #CCC;
  222 + width: 25px;
  223 + height: 25px;
  224 + opacity: 0.7;
  225 + display: none;
  226 +}
  227 +
  228 +.handsontable .manualColumnMoverGuide.active,
  229 +.handsontable .manualRowMoverGuide.active {
  230 + display: block;
  231 +}
  232 +
  233 +.handsontable .manualColumnMover:hover,
  234 +.handsontable .manualColumnMover.active,
  235 +.handsontable .manualRowMover:hover,
  236 +.handsontable .manualRowMover.active{
  237 + background-color: #88F;
  238 +}
  239 +
  240 +/* row + column resizer*/
  241 +
  242 +.handsontable .manualColumnResizer {
  243 + position: fixed;
  244 + top: 0;
  245 + cursor: col-resize;
  246 + z-index: 110;
  247 + width: 5px;
  248 + height: 25px;
  249 +}
  250 +
  251 +.handsontable .manualRowResizer {
  252 + position: fixed;
  253 + left: 0;
  254 + cursor: row-resize;
  255 + z-index: 110;
  256 + height: 5px;
  257 + width: 50px;
  258 +}
  259 +
  260 +.handsontable .manualColumnResizer:hover,
  261 +.handsontable .manualColumnResizer.active,
  262 +.handsontable .manualRowResizer:hover,
  263 +.handsontable .manualRowResizer.active {
  264 + background-color: #AAB;
  265 +}
  266 +
  267 +.handsontable .manualColumnResizerGuide {
  268 + position: fixed;
  269 + right: 0;
  270 + top: 0;
  271 + background-color: #AAB;
  272 + display: none;
  273 + width: 0;
  274 + border-right: 1px dashed #777;
  275 + margin-left: 5px;
  276 +}
  277 +
  278 +.handsontable .manualRowResizerGuide {
  279 + position: fixed;
  280 + left: 0;
  281 + bottom: 0;
  282 + background-color: #AAB;
  283 + display: none;
  284 + height: 0;
  285 + border-bottom: 1px dashed #777;
  286 + margin-top: 5px;
  287 +}
  288 +
  289 +.handsontable .manualColumnResizerGuide.active,
  290 +.handsontable .manualRowResizerGuide.active {
  291 + display: block;
  292 +}
  293 +
  294 +.handsontable .columnSorting {
  295 + position: relative;
  296 +}
  297 +
  298 +.handsontable .columnSorting:hover {
  299 + text-decoration: underline;
  300 + cursor: pointer;
  301 +}
  302 +
  303 +.handsontable .columnSorting.ascending::after {
  304 + content: '\25B2';
  305 + color: #5f5f5f;
  306 + position: absolute;
  307 + right: -15px;
  308 +}
  309 +
  310 +.handsontable .columnSorting.descending::after {
  311 + content: '\25BC';
  312 + color: #5f5f5f;
  313 + position: absolute;
  314 + right: -15px;
  315 +}
  316 +
  317 +.handsontable th.beforeHiddenColumn {
  318 + position: relative;
  319 +}
  320 +
  321 +.handsontable th.beforeHiddenColumn::after,
  322 +.handsontable th.afterHiddenColumn::before {
  323 + content: '\25C0';
  324 + color: #bbb;
  325 + position: absolute;
  326 + right: 1px;
  327 + top: 2px;
  328 + font-size: 5pt;
  329 +}
  330 +
  331 +.handsontable th.afterHiddenColumn {
  332 + position: relative;
  333 +}
  334 +
  335 +.handsontable th.afterHiddenColumn::before {
  336 + left: 1px;
  337 + top: 2px;
  338 + right: auto;
  339 + content: '\25B6';
  340 +}
  341 +
  342 +.handsontable td.afterHiddenColumn.firstVisible {
  343 + border-left: 1px solid #CCC;
  344 +}
  345 +
  346 +.handsontable thead th.hiddenHeader {
  347 + display: none;
  348 +}
  349 +
  350 +/* border line */
  351 +
  352 +.handsontable .wtBorder {
  353 + position: absolute;
  354 + font-size: 0;
  355 +}
  356 +.handsontable .wtBorder.hidden{
  357 + display:none !important;
  358 +}
  359 +
  360 +.handsontable td.area {
  361 + background: -moz-linear-gradient(top, rgba(181,209,255,0.34) 0%, rgba(181,209,255,0.34) 100%); /* FF3.6+ */
  362 + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(181,209,255,0.34)), color-stop(100%,rgba(181,209,255,0.34))); /* Chrome,Safari4+ */
  363 + background: -webkit-linear-gradient(top, rgba(181,209,255,0.34) 0%,rgba(181,209,255,0.34) 100%); /* Chrome10+,Safari5.1+ */
  364 + background: -o-linear-gradient(top, rgba(181,209,255,0.34) 0%,rgba(181,209,255,0.34) 100%); /* Opera 11.10+ */
  365 + background: -ms-linear-gradient(top, rgba(181,209,255,0.34) 0%,rgba(181,209,255,0.34) 100%); /* IE10+ */
  366 + background: linear-gradient(to bottom, rgba(181,209,255,0.34) 0%,rgba(181,209,255,0.34) 100%); /* W3C */
  367 + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#57b5d1ff', endColorstr='#57b5d1ff',GradientType=0 ); /* IE6-9 */
  368 + background-color: #fff;
  369 +}
  370 +
  371 +/* fill handle */
  372 +
  373 +.handsontable .wtBorder.corner {
  374 + font-size: 0;
  375 + cursor: crosshair;
  376 +}
  377 +
  378 +.handsontable .htBorder.htFillBorder {
  379 + background: red;
  380 + width: 1px;
  381 + height: 1px;
  382 +}
  383 +
  384 +.handsontableInput {
  385 + border:none;
  386 + outline-width: 0;
  387 + margin: 0 ;
  388 + padding: 1px 5px 0 5px;
  389 + font-family: inherit;
  390 + line-height: 21px;
  391 + font-size: inherit;
  392 + box-shadow: 0 0 0 2px #5292F7 inset;
  393 + resize: none;
  394 + /*below are needed to overwrite stuff added by jQuery UI Bootstrap theme*/
  395 + display: inline-block;
  396 + color: #000;
  397 + border-radius: 0;
  398 + background-color: #FFF;
  399 + /*overwrite styles potentionally made by a framework*/
  400 +}
  401 +
  402 +.handsontableInputHolder {
  403 + position: absolute;
  404 + top: 0;
  405 + left: 0;
  406 + z-index: 100;
  407 +}
  408 +
  409 +.htSelectEditor {
  410 + -webkit-appearance: menulist-button !important;
  411 + position: absolute;
  412 + width: auto;
  413 +}
  414 +
  415 +/*
  416 +TextRenderer readOnly cell
  417 +*/
  418 +
  419 +.handsontable .htDimmed {
  420 + color: #777;
  421 +}
  422 +
  423 +.handsontable .htSubmenu {
  424 + position: relative;
  425 +}
  426 +
  427 +.handsontable .htSubmenu :after{
  428 + content: '▶';
  429 + color: #777;
  430 + position: absolute;
  431 + right: 5px;
  432 +}
  433 +
  434 +
  435 +/*
  436 +TextRenderer horizontal alignment
  437 +*/
  438 +.handsontable .htLeft{
  439 + text-align: left;
  440 +}
  441 +.handsontable .htCenter{
  442 + text-align: center;
  443 +}
  444 +.handsontable .htRight{
  445 + text-align: right;
  446 +}
  447 +.handsontable .htJustify{
  448 + text-align: justify;
  449 +}
  450 +/*
  451 +TextRenderer vertical alignment
  452 +*/
  453 +.handsontable .htTop{
  454 + vertical-align: top;
  455 +}
  456 +.handsontable .htMiddle{
  457 + vertical-align: middle;
  458 +}
  459 +.handsontable .htBottom{
  460 + vertical-align: bottom;
  461 +}
  462 +
  463 +/*
  464 +TextRenderer placeholder value
  465 +*/
  466 +
  467 +.handsontable .htPlaceholder {
  468 + color: #999;
  469 +}
  470 +
  471 +/*
  472 +AutocompleteRenderer down arrow
  473 +*/
  474 +
  475 +.handsontable .htAutocompleteArrow {
  476 + float: right;
  477 + font-size: 10px;
  478 + color: #EEE;
  479 + cursor: default;
  480 + width: 16px;
  481 + text-align: center;
  482 +}
  483 +
  484 +.handsontable td .htAutocompleteArrow:hover {
  485 + color: #777;
  486 +}
  487 +
  488 +.handsontable td.area .htAutocompleteArrow {
  489 + color: #d3d3d3;
  490 +}
  491 +
  492 +/*
  493 +CheckboxRenderer
  494 +*/
  495 +
  496 +.handsontable .htCheckboxRendererInput.noValue {
  497 + opacity: 0.5;
  498 +}
  499 +.handsontable .htCheckboxRendererLabel {
  500 + cursor: pointer;
  501 + display: inline-block;
  502 + width: 100%;
  503 +}
  504 +
  505 +/*
  506 +NumericRenderer
  507 +*/
  508 +
  509 +.handsontable .htNumeric {
  510 + text-align: right;
  511 +}
  512 +
  513 +/*
  514 +Comment For Cell
  515 +*/
  516 +.htCommentCell{
  517 + position: relative;
  518 +}
  519 +.htCommentCell:after{
  520 + content: '';
  521 + position: absolute;
  522 + top: 0;
  523 + right: 0;
  524 + border-left: 6px solid transparent;
  525 + border-top: 6px solid red;
  526 +}
  527 +
  528 +@-webkit-keyframes opacity-hide {
  529 + from {
  530 + opacity: 1;
  531 + }
  532 + to {
  533 + opacity: 0;
  534 + /*display: none;*/
  535 + }
  536 +}
  537 +@keyframes opacity-hide {
  538 + from {
  539 + /*display: block;*/
  540 + opacity: 1;
  541 + }
  542 + to {
  543 + opacity: 0;
  544 + /*display: none;*/
  545 + }
  546 +}
  547 +
  548 +@-webkit-keyframes opacity-show {
  549 + from {
  550 + opacity: 0;
  551 + /*display: none;*/
  552 + }
  553 + to {
  554 + opacity: 1;
  555 + /*display: block;*/
  556 + }
  557 +}
  558 +@keyframes opacity-show {
  559 + from {
  560 + opacity: 0;
  561 + /*display: none;*/
  562 + }
  563 + to {
  564 + opacity: 1;
  565 + /*display: block;*/
  566 + }
  567 +}
  568 +
  569 +/**
  570 + * Handsontable in Handsontable
  571 + */
  572 +
  573 +.handsontable .handsontable.ht_clone_top .wtHider {
  574 + padding: 0 0 5px 0;
  575 +}
  576 +
  577 +/* removing shadows, TODO: remove the commented code and this comment */
  578 +/*.handsontable .handsontable:not(.ht_master) table {*/
  579 + /*-webkit-box-shadow: 1px 2px 5px rgba(0, 0, 0, 0.4);*/
  580 + /*box-shadow: 1px 2px 5px rgba(0, 0, 0, 0.4);*/
  581 +/*}*/
  582 +
  583 +/**
  584 +* Autocomplete Editor
  585 +*/
  586 +.handsontable .autocompleteEditor.handsontable {
  587 + padding-right: 17px;
  588 +}
  589 +.handsontable .autocompleteEditor.handsontable.htMacScroll {
  590 + padding-right: 15px;
  591 +}
  592 +
  593 +
  594 +/**
  595 + * Handsontable listbox theme
  596 + */
  597 +
  598 +.handsontable.listbox {
  599 + margin: 0;
  600 +}
  601 +
  602 +.handsontable.listbox .ht_master table {
  603 + border: 1px solid #ccc;
  604 + border-collapse: separate;
  605 + background: white;
  606 +}
  607 +
  608 +.handsontable.listbox th,
  609 +.handsontable.listbox tr:first-child th,
  610 +.handsontable.listbox tr:last-child th,
  611 +.handsontable.listbox tr:first-child td,
  612 +.handsontable.listbox td {
  613 + border-color: transparent;
  614 +}
  615 +
  616 +.handsontable.listbox th,
  617 +.handsontable.listbox td {
  618 + white-space: nowrap;
  619 + text-overflow: ellipsis;
  620 +}
  621 +
  622 +.handsontable.listbox td.htDimmed {
  623 + cursor: default;
  624 + color: inherit;
  625 + font-style: inherit;
  626 +}
  627 +
  628 +.handsontable.listbox .wtBorder {
  629 + visibility: hidden;
  630 +}
  631 +
  632 +.handsontable.listbox tr td.current,
  633 +.handsontable.listbox tr:hover td {
  634 + background: #eee;
  635 +}
  636 +
  637 +.ht_clone_top {
  638 + z-index: 101;
  639 +}
  640 +
  641 +.ht_clone_left {
  642 + z-index: 102;
  643 +}
  644 +
  645 +.ht_clone_top_left_corner,
  646 +.ht_clone_bottom_left_corner {
  647 + z-index: 103;
  648 +}
  649 +
  650 +.ht_clone_debug {
  651 + z-index: 103;
  652 +}
  653 +
  654 +.handsontable td.htSearchResult {
  655 + background: #fcedd9;
  656 + color: #583707;
  657 +}
  658 +
  659 +/*
  660 +Cell borders
  661 +*/
  662 +.htBordered{
  663 + /*box-sizing: border-box !important;*/
  664 + border-width: 1px;
  665 +}
  666 +.htBordered.htTopBorderSolid {
  667 + border-top-style: solid;
  668 + border-top-color: #000;
  669 +}
  670 +.htBordered.htRightBorderSolid {
  671 + border-right-style: solid;
  672 + border-right-color: #000;
  673 +}
  674 +.htBordered.htBottomBorderSolid {
  675 + border-bottom-style: solid;
  676 + border-bottom-color: #000;
  677 +}
  678 +.htBordered.htLeftBorderSolid {
  679 + border-left-style: solid;
  680 + border-left-color: #000;
  681 +}
  682 +
  683 +.htCommentTextArea{
  684 + -moz-box-shadow: 1px 1px 2px #bbb;
  685 + -webkit-box-shadow: 1px 1px 2px #bbb;
  686 + background-color: #FFFACD;
  687 + border: 1px solid #999;
  688 + box-shadow: 1px 1px 2px #bbb;
  689 + font-family: 'Arial';
  690 +}
  691 +
  692 +.handsontable tbody tr th:nth-last-child(2) {
  693 + border-right: 1px solid #CCC;
  694 +}
  695 +
  696 +.handsontable thead tr:nth-last-child(2) th.htGroupIndicatorContainer {
  697 + border-bottom: 1px solid #CCC;
  698 + padding-bottom: 5px;
  699 +}
  700 +
  701 +
  702 +.ht_clone_top_left_corner thead tr th:nth-last-child(2) {
  703 + border-right: 1px solid #CCC;
  704 +}
  705 +
  706 +.htCollapseButton {
  707 + width: 10px;
  708 + height: 10px;
  709 + line-height: 10px;
  710 + text-align: center;
  711 + border-radius: 5px;
  712 + border: 1px solid #f3f3f3;
  713 + -webkit-box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.4);
  714 + box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.4);
  715 + cursor: pointer;
  716 + margin-bottom: 3px;
  717 + position: relative;
  718 +}
  719 +
  720 +.htCollapseButton:after {
  721 + content: "";
  722 + height: 300%;
  723 + width: 1px;
  724 + display: block;
  725 + background: #ccc;
  726 + margin-left: 4px;
  727 + position: absolute;
  728 + /*top: -300%;*/
  729 + bottom: 10px;
  730 +}
  731 +
  732 +
  733 +thead .htCollapseButton {
  734 + right: 5px;
  735 + position: absolute;
  736 + top: 5px;
  737 + background: #fff;
  738 +}
  739 +
  740 +thead .htCollapseButton:after {
  741 + height: 1px;
  742 + width: 700%;
  743 + right: 10px;
  744 + top: 4px;
  745 +}
  746 +
  747 +.handsontable tr th .htExpandButton {
  748 + position: absolute;
  749 + width: 10px;
  750 + height: 10px;
  751 + line-height: 10px;
  752 + text-align: center;
  753 + border-radius: 5px;
  754 + border: 1px solid #f3f3f3;
  755 + -webkit-box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.4);
  756 + box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.4);
  757 + cursor: pointer;
  758 + top: 0;
  759 + display: none;
  760 +}
  761 +
  762 +.handsontable thead tr th .htExpandButton {
  763 + /*left: 5px;*/
  764 + top: 5px;
  765 +}
  766 +
  767 +.handsontable tr th .htExpandButton.clickable {
  768 + display: block;
  769 +}
  770 +
  771 +.collapsibleIndicator {
  772 + position: absolute;
  773 + top: 50%;
  774 + transform: translate(0% ,-50%);
  775 + right: 5px;
  776 + border: 1px solid #A6A6A6;
  777 + line-height: 10px;
  778 + color: #222;
  779 + border-radius: 10px;
  780 + font-size: 10px;
  781 + width: 10px;
  782 + height: 10px;
  783 + cursor: pointer;
  784 + -webkit-box-shadow: 0px 0px 0px 6px rgba(238,238,238,1);
  785 + -moz-box-shadow: 0px 0px 0px 6px rgba(238,238,238,1);
  786 + box-shadow: 0px 0px 0px 6px rgba(238,238,238,1);
  787 + background: #eee;
  788 +}
  789 +
  790 +.handsontable col.hidden {
  791 + width: 0 !important;
  792 +}
  793 +
  794 +.handsontable table tr th.lightRightBorder {
  795 + border-right: 1px solid #E6E6E6;
  796 +}
  797 +
  798 +.handsontable tr.hidden,
  799 +.handsontable tr.hidden td,
  800 +.handsontable tr.hidden th {
  801 + display: none;
  802 +}
  803 +
  804 +.ht_master,
  805 +.ht_clone_left,
  806 +.ht_clone_top,
  807 +.ht_clone_bottom {
  808 + overflow: hidden;
  809 +}
  810 +
  811 +.ht_master .wtHolder {
  812 + overflow: auto;
  813 +}
  814 +
  815 +.ht_clone_left .wtHolder {
  816 + overflow-x: hidden;
  817 + overflow-y: auto;
  818 +}
  819 +
  820 +.ht_clone_top .wtHolder,
  821 +.ht_clone_bottom .wtHolder {
  822 + overflow-x: auto;
  823 + overflow-y: hidden;
  824 +}
  825 +
  826 +
  827 +/*WalkontableDebugOverlay*/
  828 +
  829 +.wtDebugHidden {
  830 + display: none;
  831 +}
  832 +
  833 +.wtDebugVisible {
  834 + display: block;
  835 + -webkit-animation-duration: 0.5s;
  836 + -webkit-animation-name: wtFadeInFromNone;
  837 + animation-duration: 0.5s;
  838 + animation-name: wtFadeInFromNone;
  839 +}
  840 +
  841 +@keyframes wtFadeInFromNone {
  842 + 0% {
  843 + display: none;
  844 + opacity: 0;
  845 + }
  846 +
  847 + 1% {
  848 + display: block;
  849 + opacity: 0;
  850 + }
  851 +
  852 + 100% {
  853 + display: block;
  854 + opacity: 1;
  855 + }
  856 +}
  857 +
  858 +@-webkit-keyframes wtFadeInFromNone {
  859 + 0% {
  860 + display: none;
  861 + opacity: 0;
  862 + }
  863 +
  864 + 1% {
  865 + display: block;
  866 + opacity: 0;
  867 + }
  868 +
  869 + 100% {
  870 + display: block;
  871 + opacity: 1;
  872 + }
  873 +}
  874 +/*
  875 +
  876 + Handsontable Mobile Text Editor stylesheet
  877 +
  878 + */
  879 +
  880 +.handsontable.mobile,
  881 +.handsontable.mobile .wtHolder {
  882 + -webkit-touch-callout:none;
  883 + -webkit-user-select:none;
  884 + -khtml-user-select:none;
  885 + -moz-user-select:none;
  886 + -ms-user-select:none;
  887 + user-select:none;
  888 + -webkit-tap-highlight-color:rgba(0,0,0,0);
  889 + -webkit-overflow-scrolling: touch;
  890 +}
  891 +
  892 +.htMobileEditorContainer {
  893 + display: none;
  894 + position: absolute;
  895 + top: 0;
  896 + width: 70%;
  897 + height: 54pt;
  898 + background: #f8f8f8;
  899 + border-radius: 20px;
  900 + border: 1px solid #ebebeb;
  901 + z-index: 999;
  902 + box-sizing: border-box;
  903 + -webkit-box-sizing: border-box;
  904 + -webkit-text-size-adjust: none;
  905 +}
  906 +
  907 +.topLeftSelectionHandle:not(.ht_master .topLeftSelectionHandle),
  908 +.topLeftSelectionHandle-HitArea:not(.ht_master .topLeftSelectionHandle-HitArea) {
  909 + z-index: 9999;
  910 +}
  911 +
  912 +/* Initial left/top coordinates - overwritten when actual position is set */
  913 +.topLeftSelectionHandle,
  914 +.topLeftSelectionHandle-HitArea,
  915 +.bottomRightSelectionHandle,
  916 +.bottomRightSelectionHandle-HitArea {
  917 + left: -10000px;
  918 + top: -10000px;
  919 +}
  920 +
  921 +.htMobileEditorContainer.active {
  922 + display: block;
  923 +}
  924 +
  925 +.htMobileEditorContainer .inputs {
  926 + position: absolute;
  927 + right: 210pt;
  928 + bottom: 10pt;
  929 + top: 10pt;
  930 + left: 14px;
  931 + height: 34pt;
  932 +}
  933 +
  934 +.htMobileEditorContainer .inputs textarea {
  935 + font-size: 13pt;
  936 + border: 1px solid #a1a1a1;
  937 + -webkit-appearance: none;
  938 + -webkit-box-shadow: none;
  939 + -moz-box-shadow: none;
  940 + box-shadow: none;
  941 + position: absolute;
  942 + left: 14px;
  943 + right: 14px;
  944 + top: 0;
  945 + bottom: 0;
  946 + padding: 7pt;
  947 +}
  948 +
  949 +.htMobileEditorContainer .cellPointer {
  950 + position: absolute;
  951 + top: -13pt;
  952 + height: 0;
  953 + width: 0;
  954 + left: 30px;
  955 +
  956 + border-left: 13pt solid transparent;
  957 + border-right: 13pt solid transparent;
  958 + border-bottom: 13pt solid #ebebeb;
  959 +}
  960 +
  961 +.htMobileEditorContainer .cellPointer.hidden {
  962 + display: none;
  963 +}
  964 +
  965 +.htMobileEditorContainer .cellPointer:before {
  966 + content: '';
  967 + display: block;
  968 + position: absolute;
  969 + top: 2px;
  970 + height: 0;
  971 + width: 0;
  972 + left: -13pt;
  973 +
  974 + border-left: 13pt solid transparent;
  975 + border-right: 13pt solid transparent;
  976 + border-bottom: 13pt solid #f8f8f8;
  977 +}
  978 +
  979 +.htMobileEditorContainer .moveHandle {
  980 + position: absolute;
  981 + top: 10pt;
  982 + left: 5px;
  983 + width: 30px;
  984 + bottom: 0px;
  985 + cursor: move;
  986 + z-index: 9999;
  987 +}
  988 +
  989 +.htMobileEditorContainer .moveHandle:after {
  990 + content: "..\a..\a..\a..";
  991 + white-space: pre;
  992 + line-height: 10px;
  993 + font-size: 20pt;
  994 + display: inline-block;
  995 + margin-top: -8px;
  996 + color: #ebebeb;
  997 +}
  998 +
  999 +.htMobileEditorContainer .positionControls {
  1000 + width: 205pt;
  1001 + position: absolute;
  1002 + right: 5pt;
  1003 + top: 0;
  1004 + bottom: 0;
  1005 +}
  1006 +
  1007 +.htMobileEditorContainer .positionControls > div {
  1008 + width: 50pt;
  1009 + height: 100%;
  1010 + float: left;
  1011 +}
  1012 +
  1013 +.htMobileEditorContainer .positionControls > div:after {
  1014 + content: " ";
  1015 + display: block;
  1016 + width: 15pt;
  1017 + height: 15pt;
  1018 + text-align: center;
  1019 + line-height: 50pt;
  1020 +}
  1021 +
  1022 +.htMobileEditorContainer .leftButton:after,
  1023 +.htMobileEditorContainer .rightButton:after,
  1024 +.htMobileEditorContainer .upButton:after,
  1025 +.htMobileEditorContainer .downButton:after {
  1026 + transform-origin: 5pt 5pt;
  1027 + -webkit-transform-origin: 5pt 5pt;
  1028 + margin: 21pt 0 0 21pt;
  1029 +}
  1030 +
  1031 +.htMobileEditorContainer .leftButton:after {
  1032 + border-top: 2px solid #288ffe;
  1033 + border-left: 2px solid #288ffe;
  1034 + -webkit-transform: rotate(-45deg);
  1035 + /*margin-top: 17pt;*/
  1036 + /*margin-left: 20pt;*/
  1037 +}
  1038 +.htMobileEditorContainer .leftButton:active:after {
  1039 + border-color: #cfcfcf;
  1040 +}
  1041 +
  1042 +.htMobileEditorContainer .rightButton:after {
  1043 + border-top: 2px solid #288ffe;
  1044 + border-left: 2px solid #288ffe;
  1045 + -webkit-transform: rotate(135deg);
  1046 + /*margin-top: 17pt;*/
  1047 + /*margin-left: 10pt;*/
  1048 +}
  1049 +.htMobileEditorContainer .rightButton:active:after {
  1050 + border-color: #cfcfcf;
  1051 +}
  1052 +
  1053 +.htMobileEditorContainer .upButton:after {
  1054 + /*border-top: 2px solid #cfcfcf;*/
  1055 + border-top: 2px solid #288ffe;
  1056 + border-left: 2px solid #288ffe;
  1057 + -webkit-transform: rotate(45deg);
  1058 + /*margin-top: 22pt;*/
  1059 + /*margin-left: 15pt;*/
  1060 +}
  1061 +.htMobileEditorContainer .upButton:active:after {
  1062 + border-color: #cfcfcf;
  1063 +}
  1064 +
  1065 +.htMobileEditorContainer .downButton:after {
  1066 + border-top: 2px solid #288ffe;
  1067 + border-left: 2px solid #288ffe;
  1068 + -webkit-transform: rotate(225deg);
  1069 + /*margin-top: 15pt;*/
  1070 + /*margin-left: 15pt;*/
  1071 +}
  1072 +.htMobileEditorContainer .downButton:active:after {
  1073 + border-color: #cfcfcf;
  1074 +}
  1075 +
  1076 +.handsontable.hide-tween {
  1077 + -webkit-animation: opacity-hide 0.3s;
  1078 + animation: opacity-hide 0.3s;
  1079 + animation-fill-mode: forwards;
  1080 + -webkit-animation-fill-mode: forwards;
  1081 +}
  1082 +
  1083 +.handsontable.show-tween {
  1084 + -webkit-animation: opacity-show 0.3s;
  1085 + animation: opacity-show 0.3s;
  1086 + animation-fill-mode: forwards;
  1087 + -webkit-animation-fill-mode: forwards;
  1088 +}
  1089 +/*!
  1090 + * Handsontable ContextMenu
  1091 + */
  1092 +
  1093 +.htContextMenu {
  1094 + display: none;
  1095 + position: absolute;
  1096 + z-index: 1060; /* needs to be higher than 1050 - z-index for Twitter Bootstrap modal (#1569) */
  1097 +}
  1098 +
  1099 +.htContextMenu .ht_clone_top,
  1100 +.htContextMenu .ht_clone_left,
  1101 +.htContextMenu .ht_clone_corner,
  1102 +.htContextMenu .ht_clone_debug {
  1103 + display: none;
  1104 +}
  1105 +
  1106 +.htContextMenu table.htCore {
  1107 + border: 1px solid #bbb;
  1108 + border-bottom-width: 2px;
  1109 + border-right-width: 2px;
  1110 +}
  1111 +
  1112 +.htContextMenu .wtBorder {
  1113 + visibility: hidden;
  1114 +}
  1115 +
  1116 +.htContextMenu table tbody tr td {
  1117 + background: white;
  1118 + border-width: 0;
  1119 + padding: 4px 6px 0 6px;
  1120 + cursor: pointer;
  1121 + overflow: hidden;
  1122 + white-space: nowrap;
  1123 + text-overflow: ellipsis;
  1124 +}
  1125 +
  1126 +.htContextMenu table tbody tr td:first-child {
  1127 + border: 0;
  1128 +}
  1129 +
  1130 +.htContextMenu table tbody tr td.htDimmed {
  1131 + font-style: normal;
  1132 + color: #323232;
  1133 +}
  1134 +
  1135 +.htContextMenu table tbody tr td.current,
  1136 +.htContextMenu table tbody tr td.zeroclipboard-is-hover {
  1137 + background: #e9e9e9;
  1138 +}
  1139 +
  1140 +.htContextMenu table tbody tr td.htSeparator {
  1141 + border-top: 1px solid #bbb;
  1142 + height: 0;
  1143 + padding: 0;
  1144 + cursor: default;
  1145 +}
  1146 +
  1147 +.htContextMenu table tbody tr td.htDisabled {
  1148 + color: #999;
  1149 +}
  1150 +
  1151 +.htContextMenu table tbody tr td.htDisabled:hover {
  1152 + background: #fff;
  1153 + color: #999;
  1154 + cursor: default;
  1155 +}
  1156 +
  1157 +.htContextMenu table tbody tr.htHidden {
  1158 + display: none;
  1159 +}
  1160 +
  1161 +.htContextMenu table tbody tr td .htItemWrapper {
  1162 + margin-left: 10px;
  1163 + margin-right: 6px;
  1164 +}
  1165 +
  1166 +.htContextMenu table tbody tr td div span.selected {
  1167 + margin-top: -2px;
  1168 + position: absolute;
  1169 + left: 4px;
  1170 +}
  1171 +
  1172 +.htContextMenu .ht_master .wtHolder {
  1173 + overflow: hidden;
  1174 +}
... ...
src/main/resources/static/assets/bower_components/handsontable/dist/handsontable.full.css 0 → 100644
  1 +/*!
  2 +(The MIT License)
  3 +
  4 +Copyright (c) 2012-2014 Marcin Warpechowski
  5 +Copyright (c) 2015 Handsoncode sp. z o.o. <hello@handsoncode.net>
  6 +
  7 +Permission is hereby granted, free of charge, to any person obtaining
  8 +a copy of this software and associated documentation files (the
  9 +'Software'), to deal in the Software without restriction, including
  10 +without limitation the rights to use, copy, modify, merge, publish,
  11 +distribute, sublicense, and/or sell copies of the Software, and to
  12 +permit persons to whom the Software is furnished to do so, subject to
  13 +the following conditions:
  14 +
  15 +The above copyright notice and this permission notice shall be
  16 +included in all copies or substantial portions of the Software.
  17 +
  18 +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
  19 +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  20 +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
  21 +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
  22 +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
  23 +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  24 +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  25 +
  26 +*/
  27 +.handsontable {
  28 + position: relative;
  29 +}
  30 +
  31 +.handsontable .hide{
  32 + display: none;
  33 +}
  34 +.handsontable .relative {
  35 + position: relative;
  36 +}
  37 +
  38 +.handsontable.htAutoSize {
  39 + visibility: hidden;
  40 + left: -99000px;
  41 + position: absolute;
  42 + top: -99000px;
  43 +}
  44 +
  45 +.handsontable .wtHider {
  46 + width: 0;
  47 +}
  48 +
  49 +.handsontable .wtSpreader {
  50 + position: relative;
  51 + width: 0; /*must be 0, otherwise blank space appears in scroll demo after scrolling max to the right */
  52 + height: auto;
  53 +}
  54 +
  55 +.handsontable table,
  56 +.handsontable tbody,
  57 +.handsontable thead,
  58 +.handsontable td,
  59 +.handsontable th,
  60 +.handsontable input,
  61 +.handsontable textarea,
  62 +.handsontable div {
  63 + box-sizing: content-box;
  64 + -webkit-box-sizing: content-box;
  65 + -moz-box-sizing: content-box;
  66 +}
  67 +
  68 +.handsontable input,
  69 +.handsontable textarea {
  70 + min-height: initial;
  71 +}
  72 +
  73 +.handsontable table.htCore {
  74 + border-collapse: separate;
  75 + /*it must be separate, otherwise there are offset miscalculations in WebKit: http://stackoverflow.com/questions/2655987/border-collapse-differences-in-ff-and-webkit*/
  76 + /*this actually only changes appearance of user selection - does not make text unselectable
  77 + -webkit-user-select: none;
  78 + -khtml-user-select: none;
  79 + -moz-user-select: none;
  80 + -o-user-select: none;
  81 + -ms-user-select: none;
  82 + /*user-select: none; /*no browser supports unprefixed version*/
  83 + border-spacing: 0;
  84 + margin: 0;
  85 + border-width: 0;
  86 + table-layout: fixed;
  87 + width: 0;
  88 + outline-width: 0;
  89 + /* reset bootstrap table style. for more info see: https://github.com/handsontable/handsontable/issues/224 */
  90 + max-width: none;
  91 + max-height: none;
  92 +}
  93 +
  94 +.handsontable col {
  95 + width: 50px;
  96 +}
  97 +
  98 +.handsontable col.rowHeader {
  99 + width: 50px;
  100 +}
  101 +
  102 +.handsontable th,
  103 +.handsontable td {
  104 + border-top-width: 0;
  105 + border-left-width: 0;
  106 + border-right: 1px solid #CCC;
  107 + border-bottom: 1px solid #CCC;
  108 + height: 22px;
  109 + empty-cells: show;
  110 + line-height: 21px;
  111 + padding: 0 4px 0 4px;
  112 + /* top, bottom padding different than 0 is handled poorly by FF with HTML5 doctype */
  113 + background-color: #FFF;
  114 + vertical-align: top;
  115 + overflow: hidden;
  116 + outline-width: 0;
  117 + white-space: pre-line;
  118 + /* preserve new line character in cell */
  119 +}
  120 +
  121 +.handsontable td.htInvalid {
  122 + background-color: #ff4c42 !important; /*gives priority over td.area selection background*/
  123 +}
  124 +
  125 +.handsontable td.htNoWrap {
  126 + white-space: nowrap;
  127 +}
  128 +
  129 +.handsontable th:last-child {
  130 + /*Foundation framework fix*/
  131 + border-right: 1px solid #CCC;
  132 + border-bottom: 1px solid #CCC;
  133 +}
  134 +
  135 +.handsontable tr:first-child th.htNoFrame,
  136 +.handsontable th:first-child.htNoFrame,
  137 +.handsontable th.htNoFrame {
  138 + border-left-width: 0;
  139 + background-color: white;
  140 + border-color: #FFF;
  141 +}
  142 +
  143 +.handsontable th:first-child,
  144 +.handsontable td:first-of-type,
  145 +.handsontable .htNoFrame + th,
  146 +.handsontable .htNoFrame + td {
  147 + border-left: 1px solid #CCC;
  148 +}
  149 +
  150 +.handsontable.htRowHeaders thead tr th:nth-child(2) {
  151 + border-left: 1px solid #CCC;
  152 +}
  153 +
  154 +.handsontable tr:first-child th,
  155 +.handsontable tr:first-child td {
  156 + border-top: 1px solid #CCC;
  157 +}
  158 +
  159 +.ht_master:not(.innerBorderLeft) ~ .handsontable tbody tr th,
  160 +.ht_master:not(.innerBorderLeft) ~ .handsontable:not(.ht_clone_top) thead tr th:first-child
  161 +{
  162 + border-right-width: 0;
  163 +}
  164 +
  165 +.ht_master:not(.innerBorderTop) thead tr:last-child th,
  166 +.ht_master:not(.innerBorderTop) ~ .handsontable thead tr:last-child th,
  167 +.ht_master:not(.innerBorderTop) thead tr.lastChild th,
  168 +.ht_master:not(.innerBorderTop) ~ .handsontable thead tr.lastChild th {
  169 + border-bottom-width: 0;
  170 +}
  171 +
  172 +.handsontable th {
  173 + background-color: #EEE;
  174 + color: #222;
  175 + text-align: center;
  176 + font-weight: normal;
  177 + white-space: nowrap;
  178 +}
  179 +
  180 +.handsontable thead th {
  181 + padding: 0;
  182 +}
  183 +
  184 +.handsontable th.active {
  185 + background-color: #CCC;
  186 +}
  187 +
  188 +.handsontable thead th .relative {
  189 + padding: 2px 4px;
  190 +}
  191 +
  192 +/* plugins */
  193 +
  194 +.handsontable .manualColumnMover {
  195 + position: fixed;
  196 + left: 0;
  197 + top: 0;
  198 + background-color: transparent;
  199 + width: 5px;
  200 + height: 25px;
  201 + z-index: 999;
  202 + cursor: move;
  203 +}
  204 +
  205 +.handsontable .manualRowMover {
  206 + position: fixed;
  207 + left: -4px;
  208 + top: 0;
  209 + background-color: transparent;
  210 + height: 5px;
  211 + width: 50px;
  212 + z-index: 999;
  213 + cursor: move;
  214 +}
  215 +
  216 +.handsontable .manualColumnMoverGuide,
  217 +.handsontable .manualRowMoverGuide {
  218 + position: fixed;
  219 + left: 0;
  220 + top: 0;
  221 + background-color: #CCC;
  222 + width: 25px;
  223 + height: 25px;
  224 + opacity: 0.7;
  225 + display: none;
  226 +}
  227 +
  228 +.handsontable .manualColumnMoverGuide.active,
  229 +.handsontable .manualRowMoverGuide.active {
  230 + display: block;
  231 +}
  232 +
  233 +.handsontable .manualColumnMover:hover,
  234 +.handsontable .manualColumnMover.active,
  235 +.handsontable .manualRowMover:hover,
  236 +.handsontable .manualRowMover.active{
  237 + background-color: #88F;
  238 +}
  239 +
  240 +/* row + column resizer*/
  241 +
  242 +.handsontable .manualColumnResizer {
  243 + position: fixed;
  244 + top: 0;
  245 + cursor: col-resize;
  246 + z-index: 110;
  247 + width: 5px;
  248 + height: 25px;
  249 +}
  250 +
  251 +.handsontable .manualRowResizer {
  252 + position: fixed;
  253 + left: 0;
  254 + cursor: row-resize;
  255 + z-index: 110;
  256 + height: 5px;
  257 + width: 50px;
  258 +}
  259 +
  260 +.handsontable .manualColumnResizer:hover,
  261 +.handsontable .manualColumnResizer.active,
  262 +.handsontable .manualRowResizer:hover,
  263 +.handsontable .manualRowResizer.active {
  264 + background-color: #AAB;
  265 +}
  266 +
  267 +.handsontable .manualColumnResizerGuide {
  268 + position: fixed;
  269 + right: 0;
  270 + top: 0;
  271 + background-color: #AAB;
  272 + display: none;
  273 + width: 0;
  274 + border-right: 1px dashed #777;
  275 + margin-left: 5px;
  276 +}
  277 +
  278 +.handsontable .manualRowResizerGuide {
  279 + position: fixed;
  280 + left: 0;
  281 + bottom: 0;
  282 + background-color: #AAB;
  283 + display: none;
  284 + height: 0;
  285 + border-bottom: 1px dashed #777;
  286 + margin-top: 5px;
  287 +}
  288 +
  289 +.handsontable .manualColumnResizerGuide.active,
  290 +.handsontable .manualRowResizerGuide.active {
  291 + display: block;
  292 +}
  293 +
  294 +.handsontable .columnSorting {
  295 + position: relative;
  296 +}
  297 +
  298 +.handsontable .columnSorting:hover {
  299 + text-decoration: underline;
  300 + cursor: pointer;
  301 +}
  302 +
  303 +.handsontable .columnSorting.ascending::after {
  304 + content: '\25B2';
  305 + color: #5f5f5f;
  306 + position: absolute;
  307 + right: -15px;
  308 +}
  309 +
  310 +.handsontable .columnSorting.descending::after {
  311 + content: '\25BC';
  312 + color: #5f5f5f;
  313 + position: absolute;
  314 + right: -15px;
  315 +}
  316 +
  317 +.handsontable th.beforeHiddenColumn {
  318 + position: relative;
  319 +}
  320 +
  321 +.handsontable th.beforeHiddenColumn::after,
  322 +.handsontable th.afterHiddenColumn::before {
  323 + content: '\25C0';
  324 + color: #bbb;
  325 + position: absolute;
  326 + right: 1px;
  327 + top: 2px;
  328 + font-size: 5pt;
  329 +}
  330 +
  331 +.handsontable th.afterHiddenColumn {
  332 + position: relative;
  333 +}
  334 +
  335 +.handsontable th.afterHiddenColumn::before {
  336 + left: 1px;
  337 + top: 2px;
  338 + right: auto;
  339 + content: '\25B6';
  340 +}
  341 +
  342 +.handsontable td.afterHiddenColumn.firstVisible {
  343 + border-left: 1px solid #CCC;
  344 +}
  345 +
  346 +.handsontable thead th.hiddenHeader {
  347 + display: none;
  348 +}
  349 +
  350 +/* border line */
  351 +
  352 +.handsontable .wtBorder {
  353 + position: absolute;
  354 + font-size: 0;
  355 +}
  356 +.handsontable .wtBorder.hidden{
  357 + display:none !important;
  358 +}
  359 +
  360 +.handsontable td.area {
  361 + background: -moz-linear-gradient(top, rgba(181,209,255,0.34) 0%, rgba(181,209,255,0.34) 100%); /* FF3.6+ */
  362 + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(181,209,255,0.34)), color-stop(100%,rgba(181,209,255,0.34))); /* Chrome,Safari4+ */
  363 + background: -webkit-linear-gradient(top, rgba(181,209,255,0.34) 0%,rgba(181,209,255,0.34) 100%); /* Chrome10+,Safari5.1+ */
  364 + background: -o-linear-gradient(top, rgba(181,209,255,0.34) 0%,rgba(181,209,255,0.34) 100%); /* Opera 11.10+ */
  365 + background: -ms-linear-gradient(top, rgba(181,209,255,0.34) 0%,rgba(181,209,255,0.34) 100%); /* IE10+ */
  366 + background: linear-gradient(to bottom, rgba(181,209,255,0.34) 0%,rgba(181,209,255,0.34) 100%); /* W3C */
  367 + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#57b5d1ff', endColorstr='#57b5d1ff',GradientType=0 ); /* IE6-9 */
  368 + background-color: #fff;
  369 +}
  370 +
  371 +/* fill handle */
  372 +
  373 +.handsontable .wtBorder.corner {
  374 + font-size: 0;
  375 + cursor: crosshair;
  376 +}
  377 +
  378 +.handsontable .htBorder.htFillBorder {
  379 + background: red;
  380 + width: 1px;
  381 + height: 1px;
  382 +}
  383 +
  384 +.handsontableInput {
  385 + border:none;
  386 + outline-width: 0;
  387 + margin: 0 ;
  388 + padding: 1px 5px 0 5px;
  389 + font-family: inherit;
  390 + line-height: 21px;
  391 + font-size: inherit;
  392 + box-shadow: 0 0 0 2px #5292F7 inset;
  393 + resize: none;
  394 + /*below are needed to overwrite stuff added by jQuery UI Bootstrap theme*/
  395 + display: inline-block;
  396 + color: #000;
  397 + border-radius: 0;
  398 + background-color: #FFF;
  399 + /*overwrite styles potentionally made by a framework*/
  400 +}
  401 +
  402 +.handsontableInputHolder {
  403 + position: absolute;
  404 + top: 0;
  405 + left: 0;
  406 + z-index: 100;
  407 +}
  408 +
  409 +.htSelectEditor {
  410 + -webkit-appearance: menulist-button !important;
  411 + position: absolute;
  412 + width: auto;
  413 +}
  414 +
  415 +/*
  416 +TextRenderer readOnly cell
  417 +*/
  418 +
  419 +.handsontable .htDimmed {
  420 + color: #777;
  421 +}
  422 +
  423 +.handsontable .htSubmenu {
  424 + position: relative;
  425 +}
  426 +
  427 +.handsontable .htSubmenu :after{
  428 + content: '▶';
  429 + color: #777;
  430 + position: absolute;
  431 + right: 5px;
  432 +}
  433 +
  434 +
  435 +/*
  436 +TextRenderer horizontal alignment
  437 +*/
  438 +.handsontable .htLeft{
  439 + text-align: left;
  440 +}
  441 +.handsontable .htCenter{
  442 + text-align: center;
  443 +}
  444 +.handsontable .htRight{
  445 + text-align: right;
  446 +}
  447 +.handsontable .htJustify{
  448 + text-align: justify;
  449 +}
  450 +/*
  451 +TextRenderer vertical alignment
  452 +*/
  453 +.handsontable .htTop{
  454 + vertical-align: top;
  455 +}
  456 +.handsontable .htMiddle{
  457 + vertical-align: middle;
  458 +}
  459 +.handsontable .htBottom{
  460 + vertical-align: bottom;
  461 +}
  462 +
  463 +/*
  464 +TextRenderer placeholder value
  465 +*/
  466 +
  467 +.handsontable .htPlaceholder {
  468 + color: #999;
  469 +}
  470 +
  471 +/*
  472 +AutocompleteRenderer down arrow
  473 +*/
  474 +
  475 +.handsontable .htAutocompleteArrow {
  476 + float: right;
  477 + font-size: 10px;
  478 + color: #EEE;
  479 + cursor: default;
  480 + width: 16px;
  481 + text-align: center;
  482 +}
  483 +
  484 +.handsontable td .htAutocompleteArrow:hover {
  485 + color: #777;
  486 +}
  487 +
  488 +.handsontable td.area .htAutocompleteArrow {
  489 + color: #d3d3d3;
  490 +}
  491 +
  492 +/*
  493 +CheckboxRenderer
  494 +*/
  495 +
  496 +.handsontable .htCheckboxRendererInput.noValue {
  497 + opacity: 0.5;
  498 +}
  499 +.handsontable .htCheckboxRendererLabel {
  500 + cursor: pointer;
  501 + display: inline-block;
  502 + width: 100%;
  503 +}
  504 +
  505 +/*
  506 +NumericRenderer
  507 +*/
  508 +
  509 +.handsontable .htNumeric {
  510 + text-align: right;
  511 +}
  512 +
  513 +/*
  514 +Comment For Cell
  515 +*/
  516 +.htCommentCell{
  517 + position: relative;
  518 +}
  519 +.htCommentCell:after{
  520 + content: '';
  521 + position: absolute;
  522 + top: 0;
  523 + right: 0;
  524 + border-left: 6px solid transparent;
  525 + border-top: 6px solid red;
  526 +}
  527 +
  528 +@-webkit-keyframes opacity-hide {
  529 + from {
  530 + opacity: 1;
  531 + }
  532 + to {
  533 + opacity: 0;
  534 + /*display: none;*/
  535 + }
  536 +}
  537 +@keyframes opacity-hide {
  538 + from {
  539 + /*display: block;*/
  540 + opacity: 1;
  541 + }
  542 + to {
  543 + opacity: 0;
  544 + /*display: none;*/
  545 + }
  546 +}
  547 +
  548 +@-webkit-keyframes opacity-show {
  549 + from {
  550 + opacity: 0;
  551 + /*display: none;*/
  552 + }
  553 + to {
  554 + opacity: 1;
  555 + /*display: block;*/
  556 + }
  557 +}
  558 +@keyframes opacity-show {
  559 + from {
  560 + opacity: 0;
  561 + /*display: none;*/
  562 + }
  563 + to {
  564 + opacity: 1;
  565 + /*display: block;*/
  566 + }
  567 +}
  568 +
  569 +/**
  570 + * Handsontable in Handsontable
  571 + */
  572 +
  573 +.handsontable .handsontable.ht_clone_top .wtHider {
  574 + padding: 0 0 5px 0;
  575 +}
  576 +
  577 +/* removing shadows, TODO: remove the commented code and this comment */
  578 +/*.handsontable .handsontable:not(.ht_master) table {*/
  579 + /*-webkit-box-shadow: 1px 2px 5px rgba(0, 0, 0, 0.4);*/
  580 + /*box-shadow: 1px 2px 5px rgba(0, 0, 0, 0.4);*/
  581 +/*}*/
  582 +
  583 +/**
  584 +* Autocomplete Editor
  585 +*/
  586 +.handsontable .autocompleteEditor.handsontable {
  587 + padding-right: 17px;
  588 +}
  589 +.handsontable .autocompleteEditor.handsontable.htMacScroll {
  590 + padding-right: 15px;
  591 +}
  592 +
  593 +
  594 +/**
  595 + * Handsontable listbox theme
  596 + */
  597 +
  598 +.handsontable.listbox {
  599 + margin: 0;
  600 +}
  601 +
  602 +.handsontable.listbox .ht_master table {
  603 + border: 1px solid #ccc;
  604 + border-collapse: separate;
  605 + background: white;
  606 +}
  607 +
  608 +.handsontable.listbox th,
  609 +.handsontable.listbox tr:first-child th,
  610 +.handsontable.listbox tr:last-child th,
  611 +.handsontable.listbox tr:first-child td,
  612 +.handsontable.listbox td {
  613 + border-color: transparent;
  614 +}
  615 +
  616 +.handsontable.listbox th,
  617 +.handsontable.listbox td {
  618 + white-space: nowrap;
  619 + text-overflow: ellipsis;
  620 +}
  621 +
  622 +.handsontable.listbox td.htDimmed {
  623 + cursor: default;
  624 + color: inherit;
  625 + font-style: inherit;
  626 +}
  627 +
  628 +.handsontable.listbox .wtBorder {
  629 + visibility: hidden;
  630 +}
  631 +
  632 +.handsontable.listbox tr td.current,
  633 +.handsontable.listbox tr:hover td {
  634 + background: #eee;
  635 +}
  636 +
  637 +.ht_clone_top {
  638 + z-index: 101;
  639 +}
  640 +
  641 +.ht_clone_left {
  642 + z-index: 102;
  643 +}
  644 +
  645 +.ht_clone_top_left_corner,
  646 +.ht_clone_bottom_left_corner {
  647 + z-index: 103;
  648 +}
  649 +
  650 +.ht_clone_debug {
  651 + z-index: 103;
  652 +}
  653 +
  654 +.handsontable td.htSearchResult {
  655 + background: #fcedd9;
  656 + color: #583707;
  657 +}
  658 +
  659 +/*
  660 +Cell borders
  661 +*/
  662 +.htBordered{
  663 + /*box-sizing: border-box !important;*/
  664 + border-width: 1px;
  665 +}
  666 +.htBordered.htTopBorderSolid {
  667 + border-top-style: solid;
  668 + border-top-color: #000;
  669 +}
  670 +.htBordered.htRightBorderSolid {
  671 + border-right-style: solid;
  672 + border-right-color: #000;
  673 +}
  674 +.htBordered.htBottomBorderSolid {
  675 + border-bottom-style: solid;
  676 + border-bottom-color: #000;
  677 +}
  678 +.htBordered.htLeftBorderSolid {
  679 + border-left-style: solid;
  680 + border-left-color: #000;
  681 +}
  682 +
  683 +.htCommentTextArea{
  684 + -moz-box-shadow: 1px 1px 2px #bbb;
  685 + -webkit-box-shadow: 1px 1px 2px #bbb;
  686 + background-color: #FFFACD;
  687 + border: 1px solid #999;
  688 + box-shadow: 1px 1px 2px #bbb;
  689 + font-family: 'Arial';
  690 +}
  691 +
  692 +.handsontable tbody tr th:nth-last-child(2) {
  693 + border-right: 1px solid #CCC;
  694 +}
  695 +
  696 +.handsontable thead tr:nth-last-child(2) th.htGroupIndicatorContainer {
  697 + border-bottom: 1px solid #CCC;
  698 + padding-bottom: 5px;
  699 +}
  700 +
  701 +
  702 +.ht_clone_top_left_corner thead tr th:nth-last-child(2) {
  703 + border-right: 1px solid #CCC;
  704 +}
  705 +
  706 +.htCollapseButton {
  707 + width: 10px;
  708 + height: 10px;
  709 + line-height: 10px;
  710 + text-align: center;
  711 + border-radius: 5px;
  712 + border: 1px solid #f3f3f3;
  713 + -webkit-box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.4);
  714 + box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.4);
  715 + cursor: pointer;
  716 + margin-bottom: 3px;
  717 + position: relative;
  718 +}
  719 +
  720 +.htCollapseButton:after {
  721 + content: "";
  722 + height: 300%;
  723 + width: 1px;
  724 + display: block;
  725 + background: #ccc;
  726 + margin-left: 4px;
  727 + position: absolute;
  728 + /*top: -300%;*/
  729 + bottom: 10px;
  730 +}
  731 +
  732 +
  733 +thead .htCollapseButton {
  734 + right: 5px;
  735 + position: absolute;
  736 + top: 5px;
  737 + background: #fff;
  738 +}
  739 +
  740 +thead .htCollapseButton:after {
  741 + height: 1px;
  742 + width: 700%;
  743 + right: 10px;
  744 + top: 4px;
  745 +}
  746 +
  747 +.handsontable tr th .htExpandButton {
  748 + position: absolute;
  749 + width: 10px;
  750 + height: 10px;
  751 + line-height: 10px;
  752 + text-align: center;
  753 + border-radius: 5px;
  754 + border: 1px solid #f3f3f3;
  755 + -webkit-box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.4);
  756 + box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.4);
  757 + cursor: pointer;
  758 + top: 0;
  759 + display: none;
  760 +}
  761 +
  762 +.handsontable thead tr th .htExpandButton {
  763 + /*left: 5px;*/
  764 + top: 5px;
  765 +}
  766 +
  767 +.handsontable tr th .htExpandButton.clickable {
  768 + display: block;
  769 +}
  770 +
  771 +.collapsibleIndicator {
  772 + position: absolute;
  773 + top: 50%;
  774 + transform: translate(0% ,-50%);
  775 + right: 5px;
  776 + border: 1px solid #A6A6A6;
  777 + line-height: 10px;
  778 + color: #222;
  779 + border-radius: 10px;
  780 + font-size: 10px;
  781 + width: 10px;
  782 + height: 10px;
  783 + cursor: pointer;
  784 + -webkit-box-shadow: 0px 0px 0px 6px rgba(238,238,238,1);
  785 + -moz-box-shadow: 0px 0px 0px 6px rgba(238,238,238,1);
  786 + box-shadow: 0px 0px 0px 6px rgba(238,238,238,1);
  787 + background: #eee;
  788 +}
  789 +
  790 +.handsontable col.hidden {
  791 + width: 0 !important;
  792 +}
  793 +
  794 +.handsontable table tr th.lightRightBorder {
  795 + border-right: 1px solid #E6E6E6;
  796 +}
  797 +
  798 +.handsontable tr.hidden,
  799 +.handsontable tr.hidden td,
  800 +.handsontable tr.hidden th {
  801 + display: none;
  802 +}
  803 +
  804 +.ht_master,
  805 +.ht_clone_left,
  806 +.ht_clone_top,
  807 +.ht_clone_bottom {
  808 + overflow: hidden;
  809 +}
  810 +
  811 +.ht_master .wtHolder {
  812 + overflow: auto;
  813 +}
  814 +
  815 +.ht_clone_left .wtHolder {
  816 + overflow-x: hidden;
  817 + overflow-y: auto;
  818 +}
  819 +
  820 +.ht_clone_top .wtHolder,
  821 +.ht_clone_bottom .wtHolder {
  822 + overflow-x: auto;
  823 + overflow-y: hidden;
  824 +}
  825 +
  826 +
  827 +/*WalkontableDebugOverlay*/
  828 +
  829 +.wtDebugHidden {
  830 + display: none;
  831 +}
  832 +
  833 +.wtDebugVisible {
  834 + display: block;
  835 + -webkit-animation-duration: 0.5s;
  836 + -webkit-animation-name: wtFadeInFromNone;
  837 + animation-duration: 0.5s;
  838 + animation-name: wtFadeInFromNone;
  839 +}
  840 +
  841 +@keyframes wtFadeInFromNone {
  842 + 0% {
  843 + display: none;
  844 + opacity: 0;
  845 + }
  846 +
  847 + 1% {
  848 + display: block;
  849 + opacity: 0;
  850 + }
  851 +
  852 + 100% {
  853 + display: block;
  854 + opacity: 1;
  855 + }
  856 +}
  857 +
  858 +@-webkit-keyframes wtFadeInFromNone {
  859 + 0% {
  860 + display: none;
  861 + opacity: 0;
  862 + }
  863 +
  864 + 1% {
  865 + display: block;
  866 + opacity: 0;
  867 + }
  868 +
  869 + 100% {
  870 + display: block;
  871 + opacity: 1;
  872 + }
  873 +}
  874 +/*
  875 +
  876 + Handsontable Mobile Text Editor stylesheet
  877 +
  878 + */
  879 +
  880 +.handsontable.mobile,
  881 +.handsontable.mobile .wtHolder {
  882 + -webkit-touch-callout:none;
  883 + -webkit-user-select:none;
  884 + -khtml-user-select:none;
  885 + -moz-user-select:none;
  886 + -ms-user-select:none;
  887 + user-select:none;
  888 + -webkit-tap-highlight-color:rgba(0,0,0,0);
  889 + -webkit-overflow-scrolling: touch;
  890 +}
  891 +
  892 +.htMobileEditorContainer {
  893 + display: none;
  894 + position: absolute;
  895 + top: 0;
  896 + width: 70%;
  897 + height: 54pt;
  898 + background: #f8f8f8;
  899 + border-radius: 20px;
  900 + border: 1px solid #ebebeb;
  901 + z-index: 999;
  902 + box-sizing: border-box;
  903 + -webkit-box-sizing: border-box;
  904 + -webkit-text-size-adjust: none;
  905 +}
  906 +
  907 +.topLeftSelectionHandle:not(.ht_master .topLeftSelectionHandle),
  908 +.topLeftSelectionHandle-HitArea:not(.ht_master .topLeftSelectionHandle-HitArea) {
  909 + z-index: 9999;
  910 +}
  911 +
  912 +/* Initial left/top coordinates - overwritten when actual position is set */
  913 +.topLeftSelectionHandle,
  914 +.topLeftSelectionHandle-HitArea,
  915 +.bottomRightSelectionHandle,
  916 +.bottomRightSelectionHandle-HitArea {
  917 + left: -10000px;
  918 + top: -10000px;
  919 +}
  920 +
  921 +.htMobileEditorContainer.active {
  922 + display: block;
  923 +}
  924 +
  925 +.htMobileEditorContainer .inputs {
  926 + position: absolute;
  927 + right: 210pt;
  928 + bottom: 10pt;
  929 + top: 10pt;
  930 + left: 14px;
  931 + height: 34pt;
  932 +}
  933 +
  934 +.htMobileEditorContainer .inputs textarea {
  935 + font-size: 13pt;
  936 + border: 1px solid #a1a1a1;
  937 + -webkit-appearance: none;
  938 + -webkit-box-shadow: none;
  939 + -moz-box-shadow: none;
  940 + box-shadow: none;
  941 + position: absolute;
  942 + left: 14px;
  943 + right: 14px;
  944 + top: 0;
  945 + bottom: 0;
  946 + padding: 7pt;
  947 +}
  948 +
  949 +.htMobileEditorContainer .cellPointer {
  950 + position: absolute;
  951 + top: -13pt;
  952 + height: 0;
  953 + width: 0;
  954 + left: 30px;
  955 +
  956 + border-left: 13pt solid transparent;
  957 + border-right: 13pt solid transparent;
  958 + border-bottom: 13pt solid #ebebeb;
  959 +}
  960 +
  961 +.htMobileEditorContainer .cellPointer.hidden {
  962 + display: none;
  963 +}
  964 +
  965 +.htMobileEditorContainer .cellPointer:before {
  966 + content: '';
  967 + display: block;
  968 + position: absolute;
  969 + top: 2px;
  970 + height: 0;
  971 + width: 0;
  972 + left: -13pt;
  973 +
  974 + border-left: 13pt solid transparent;
  975 + border-right: 13pt solid transparent;
  976 + border-bottom: 13pt solid #f8f8f8;
  977 +}
  978 +
  979 +.htMobileEditorContainer .moveHandle {
  980 + position: absolute;
  981 + top: 10pt;
  982 + left: 5px;
  983 + width: 30px;
  984 + bottom: 0px;
  985 + cursor: move;
  986 + z-index: 9999;
  987 +}
  988 +
  989 +.htMobileEditorContainer .moveHandle:after {
  990 + content: "..\a..\a..\a..";
  991 + white-space: pre;
  992 + line-height: 10px;
  993 + font-size: 20pt;
  994 + display: inline-block;
  995 + margin-top: -8px;
  996 + color: #ebebeb;
  997 +}
  998 +
  999 +.htMobileEditorContainer .positionControls {
  1000 + width: 205pt;
  1001 + position: absolute;
  1002 + right: 5pt;
  1003 + top: 0;
  1004 + bottom: 0;
  1005 +}
  1006 +
  1007 +.htMobileEditorContainer .positionControls > div {
  1008 + width: 50pt;
  1009 + height: 100%;
  1010 + float: left;
  1011 +}
  1012 +
  1013 +.htMobileEditorContainer .positionControls > div:after {
  1014 + content: " ";
  1015 + display: block;
  1016 + width: 15pt;
  1017 + height: 15pt;
  1018 + text-align: center;
  1019 + line-height: 50pt;
  1020 +}
  1021 +
  1022 +.htMobileEditorContainer .leftButton:after,
  1023 +.htMobileEditorContainer .rightButton:after,
  1024 +.htMobileEditorContainer .upButton:after,
  1025 +.htMobileEditorContainer .downButton:after {
  1026 + transform-origin: 5pt 5pt;
  1027 + -webkit-transform-origin: 5pt 5pt;
  1028 + margin: 21pt 0 0 21pt;
  1029 +}
  1030 +
  1031 +.htMobileEditorContainer .leftButton:after {
  1032 + border-top: 2px solid #288ffe;
  1033 + border-left: 2px solid #288ffe;
  1034 + -webkit-transform: rotate(-45deg);
  1035 + /*margin-top: 17pt;*/
  1036 + /*margin-left: 20pt;*/
  1037 +}
  1038 +.htMobileEditorContainer .leftButton:active:after {
  1039 + border-color: #cfcfcf;
  1040 +}
  1041 +
  1042 +.htMobileEditorContainer .rightButton:after {
  1043 + border-top: 2px solid #288ffe;
  1044 + border-left: 2px solid #288ffe;
  1045 + -webkit-transform: rotate(135deg);
  1046 + /*margin-top: 17pt;*/
  1047 + /*margin-left: 10pt;*/
  1048 +}
  1049 +.htMobileEditorContainer .rightButton:active:after {
  1050 + border-color: #cfcfcf;
  1051 +}
  1052 +
  1053 +.htMobileEditorContainer .upButton:after {
  1054 + /*border-top: 2px solid #cfcfcf;*/
  1055 + border-top: 2px solid #288ffe;
  1056 + border-left: 2px solid #288ffe;
  1057 + -webkit-transform: rotate(45deg);
  1058 + /*margin-top: 22pt;*/
  1059 + /*margin-left: 15pt;*/
  1060 +}
  1061 +.htMobileEditorContainer .upButton:active:after {
  1062 + border-color: #cfcfcf;
  1063 +}
  1064 +
  1065 +.htMobileEditorContainer .downButton:after {
  1066 + border-top: 2px solid #288ffe;
  1067 + border-left: 2px solid #288ffe;
  1068 + -webkit-transform: rotate(225deg);
  1069 + /*margin-top: 15pt;*/
  1070 + /*margin-left: 15pt;*/
  1071 +}
  1072 +.htMobileEditorContainer .downButton:active:after {
  1073 + border-color: #cfcfcf;
  1074 +}
  1075 +
  1076 +.handsontable.hide-tween {
  1077 + -webkit-animation: opacity-hide 0.3s;
  1078 + animation: opacity-hide 0.3s;
  1079 + animation-fill-mode: forwards;
  1080 + -webkit-animation-fill-mode: forwards;
  1081 +}
  1082 +
  1083 +.handsontable.show-tween {
  1084 + -webkit-animation: opacity-show 0.3s;
  1085 + animation: opacity-show 0.3s;
  1086 + animation-fill-mode: forwards;
  1087 + -webkit-animation-fill-mode: forwards;
  1088 +}
  1089 +/*!
  1090 + * Handsontable ContextMenu
  1091 + */
  1092 +
  1093 +.htContextMenu {
  1094 + display: none;
  1095 + position: absolute;
  1096 + z-index: 1060; /* needs to be higher than 1050 - z-index for Twitter Bootstrap modal (#1569) */
  1097 +}
  1098 +
  1099 +.htContextMenu .ht_clone_top,
  1100 +.htContextMenu .ht_clone_left,
  1101 +.htContextMenu .ht_clone_corner,
  1102 +.htContextMenu .ht_clone_debug {
  1103 + display: none;
  1104 +}
  1105 +
  1106 +.htContextMenu table.htCore {
  1107 + border: 1px solid #bbb;
  1108 + border-bottom-width: 2px;
  1109 + border-right-width: 2px;
  1110 +}
  1111 +
  1112 +.htContextMenu .wtBorder {
  1113 + visibility: hidden;
  1114 +}
  1115 +
  1116 +.htContextMenu table tbody tr td {
  1117 + background: white;
  1118 + border-width: 0;
  1119 + padding: 4px 6px 0 6px;
  1120 + cursor: pointer;
  1121 + overflow: hidden;
  1122 + white-space: nowrap;
  1123 + text-overflow: ellipsis;
  1124 +}
  1125 +
  1126 +.htContextMenu table tbody tr td:first-child {
  1127 + border: 0;
  1128 +}
  1129 +
  1130 +.htContextMenu table tbody tr td.htDimmed {
  1131 + font-style: normal;
  1132 + color: #323232;
  1133 +}
  1134 +
  1135 +.htContextMenu table tbody tr td.current,
  1136 +.htContextMenu table tbody tr td.zeroclipboard-is-hover {
  1137 + background: #e9e9e9;
  1138 +}
  1139 +
  1140 +.htContextMenu table tbody tr td.htSeparator {
  1141 + border-top: 1px solid #bbb;
  1142 + height: 0;
  1143 + padding: 0;
  1144 + cursor: default;
  1145 +}
  1146 +
  1147 +.htContextMenu table tbody tr td.htDisabled {
  1148 + color: #999;
  1149 +}
  1150 +
  1151 +.htContextMenu table tbody tr td.htDisabled:hover {
  1152 + background: #fff;
  1153 + color: #999;
  1154 + cursor: default;
  1155 +}
  1156 +
  1157 +.htContextMenu table tbody tr.htHidden {
  1158 + display: none;
  1159 +}
  1160 +
  1161 +.htContextMenu table tbody tr td .htItemWrapper {
  1162 + margin-left: 10px;
  1163 + margin-right: 6px;
  1164 +}
  1165 +
  1166 +.htContextMenu table tbody tr td div span.selected {
  1167 + margin-top: -2px;
  1168 + position: absolute;
  1169 + left: 4px;
  1170 +}
  1171 +
  1172 +.htContextMenu .ht_master .wtHolder {
  1173 + overflow: hidden;
  1174 +}
  1175 +@charset "UTF-8";
  1176 +
  1177 +/*!
  1178 + * Pikaday
  1179 + * Copyright © 2014 David Bushell | BSD & MIT license | http://dbushell.com/
  1180 + */
  1181 +
  1182 +.pika-single {
  1183 + z-index: 9999;
  1184 + display: block;
  1185 + position: relative;
  1186 + color: #333;
  1187 + background: #fff;
  1188 + border: 1px solid #ccc;
  1189 + border-bottom-color: #bbb;
  1190 + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  1191 +}
  1192 +
  1193 +/*
  1194 +clear child float (pika-lendar), using the famous micro clearfix hack
  1195 +http://nicolasgallagher.com/micro-clearfix-hack/
  1196 +*/
  1197 +.pika-single:before,
  1198 +.pika-single:after {
  1199 + content: " ";
  1200 + display: table;
  1201 +}
  1202 +.pika-single:after { clear: both }
  1203 +.pika-single { *zoom: 1 }
  1204 +
  1205 +.pika-single.is-hidden {
  1206 + display: none;
  1207 +}
  1208 +
  1209 +.pika-single.is-bound {
  1210 + position: absolute;
  1211 + box-shadow: 0 5px 15px -5px rgba(0,0,0,.5);
  1212 +}
  1213 +
  1214 +.pika-lendar {
  1215 + float: left;
  1216 + width: 240px;
  1217 + margin: 8px;
  1218 +}
  1219 +
  1220 +.pika-title {
  1221 + position: relative;
  1222 + text-align: center;
  1223 +}
  1224 +
  1225 +.pika-label {
  1226 + display: inline-block;
  1227 + *display: inline;
  1228 + position: relative;
  1229 + z-index: 9999;
  1230 + overflow: hidden;
  1231 + margin: 0;
  1232 + padding: 5px 3px;
  1233 + font-size: 14px;
  1234 + line-height: 20px;
  1235 + font-weight: bold;
  1236 + background-color: #fff;
  1237 +}
  1238 +.pika-title select {
  1239 + cursor: pointer;
  1240 + position: absolute;
  1241 + z-index: 9998;
  1242 + margin: 0;
  1243 + left: 0;
  1244 + top: 5px;
  1245 + filter: alpha(opacity=0);
  1246 + opacity: 0;
  1247 +}
  1248 +
  1249 +.pika-prev,
  1250 +.pika-next {
  1251 + display: block;
  1252 + cursor: pointer;
  1253 + position: relative;
  1254 + outline: none;
  1255 + border: 0;
  1256 + padding: 0;
  1257 + width: 20px;
  1258 + height: 30px;
  1259 + /* hide text using text-indent trick, using width value (it's enough) */
  1260 + text-indent: 20px;
  1261 + white-space: nowrap;
  1262 + overflow: hidden;
  1263 + background-color: transparent;
  1264 + background-position: center center;
  1265 + background-repeat: no-repeat;
  1266 + background-size: 75% 75%;
  1267 + opacity: .5;
  1268 + *position: absolute;
  1269 + *top: 0;
  1270 +}
  1271 +
  1272 +.pika-prev:hover,
  1273 +.pika-next:hover {
  1274 + opacity: 1;
  1275 +}
  1276 +
  1277 +.pika-prev,
  1278 +.is-rtl .pika-next {
  1279 + float: left;
  1280 + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAUklEQVR42u3VMQoAIBADQf8Pgj+OD9hG2CtONJB2ymQkKe0HbwAP0xucDiQWARITIDEBEnMgMQ8S8+AqBIl6kKgHiXqQqAeJepBo/z38J/U0uAHlaBkBl9I4GwAAAABJRU5ErkJggg==');
  1281 + *left: 0;
  1282 +}
  1283 +
  1284 +.pika-next,
  1285 +.is-rtl .pika-prev {
  1286 + float: right;
  1287 + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAU0lEQVR42u3VOwoAMAgE0dwfAnNjU26bYkBCFGwfiL9VVWoO+BJ4Gf3gtsEKKoFBNTCoCAYVwaAiGNQGMUHMkjGbgjk2mIONuXo0nC8XnCf1JXgArVIZAQh5TKYAAAAASUVORK5CYII=');
  1288 + *right: 0;
  1289 +}
  1290 +
  1291 +.pika-prev.is-disabled,
  1292 +.pika-next.is-disabled {
  1293 + cursor: default;
  1294 + opacity: .2;
  1295 +}
  1296 +
  1297 +.pika-select {
  1298 + display: inline-block;
  1299 + *display: inline;
  1300 +}
  1301 +
  1302 +.pika-table {
  1303 + width: 100%;
  1304 + border-collapse: collapse;
  1305 + border-spacing: 0;
  1306 + border: 0;
  1307 +}
  1308 +
  1309 +.pika-table th,
  1310 +.pika-table td {
  1311 + width: 14.285714285714286%;
  1312 + padding: 0;
  1313 +}
  1314 +
  1315 +.pika-table th {
  1316 + color: #999;
  1317 + font-size: 12px;
  1318 + line-height: 25px;
  1319 + font-weight: bold;
  1320 + text-align: center;
  1321 +}
  1322 +
  1323 +.pika-button {
  1324 + cursor: pointer;
  1325 + display: block;
  1326 + box-sizing: border-box;
  1327 + -moz-box-sizing: border-box;
  1328 + outline: none;
  1329 + border: 0;
  1330 + margin: 0;
  1331 + width: 100%;
  1332 + padding: 5px;
  1333 + color: #666;
  1334 + font-size: 12px;
  1335 + line-height: 15px;
  1336 + text-align: right;
  1337 + background: #f5f5f5;
  1338 +}
  1339 +
  1340 +.pika-week {
  1341 + font-size: 11px;
  1342 + color: #999;
  1343 +}
  1344 +
  1345 +.is-today .pika-button {
  1346 + color: #33aaff;
  1347 + font-weight: bold;
  1348 +}
  1349 +
  1350 +.is-selected .pika-button {
  1351 + color: #fff;
  1352 + font-weight: bold;
  1353 + background: #33aaff;
  1354 + box-shadow: inset 0 1px 3px #178fe5;
  1355 + border-radius: 3px;
  1356 +}
  1357 +
  1358 +.is-inrange .pika-button {
  1359 + background: #D5E9F7;
  1360 +}
  1361 +
  1362 +.is-startrange .pika-button {
  1363 + color: #fff;
  1364 + background: #6CB31D;
  1365 + box-shadow: none;
  1366 + border-radius: 3px;
  1367 +}
  1368 +
  1369 +.is-endrange .pika-button {
  1370 + color: #fff;
  1371 + background: #33aaff;
  1372 + box-shadow: none;
  1373 + border-radius: 3px;
  1374 +}
  1375 +
  1376 +.is-disabled .pika-button {
  1377 + pointer-events: none;
  1378 + cursor: default;
  1379 + color: #999;
  1380 + opacity: .3;
  1381 +}
  1382 +
  1383 +.pika-button:hover {
  1384 + color: #fff;
  1385 + background: #ff8000;
  1386 + box-shadow: none;
  1387 + border-radius: 3px;
  1388 +}
  1389 +
  1390 +/* styling for abbr */
  1391 +.pika-table abbr {
  1392 + border-bottom: none;
  1393 + cursor: help;
  1394 +}
  1395 +
... ...