selectByExampleWithDept() {
89 | return employeeMapper.selectByExampleWithDept();
90 | }
91 |
92 | }
93 |
--------------------------------------------------------------------------------
/src/main/java/com/jelly/crud/bean/Employee.java:
--------------------------------------------------------------------------------
1 | package com.jelly.crud.bean;
2 |
3 | import javax.validation.constraints.Pattern;
4 |
5 | public class Employee {
6 | private Integer empId;
7 | @Pattern(regexp = "(^[a-zA-Z0-9_-]{4,16}$)|(^[\\u2E80-\\u9FFF]{2,5}$)",message = "用户名为4到16位数字字母或者2-5个汉字")
8 | private String empName;
9 |
10 | private String gender;
11 | @Pattern(regexp = "^([a-z0-9_\\.-]+)@([\\da-z\\.-]+)\\.([a-z\\.]{2,6})$",message = "请输入正确的邮箱")
12 | private String email;
13 |
14 | private Integer dId;
15 |
16 | //希望查询员工的同时部门信息也是查询好的
17 | private Department department;
18 |
19 | public Employee(Integer empId, String empName, String gender, String email, Integer dId) {
20 | this.empId = empId;
21 | this.empName = empName;
22 | this.gender = gender;
23 | this.email = email;
24 | this.dId = dId;
25 | }
26 |
27 | public Employee() {
28 | }
29 |
30 | @Override
31 | public String toString() {
32 | return "Employee{" +
33 | "empId=" + empId +
34 | ", empName='" + empName + '\'' +
35 | ", gender='" + gender + '\'' +
36 | ", email='" + email + '\'' +
37 | ", dId=" + dId +
38 | ", department=" + department +
39 | '}';
40 | }
41 |
42 | public Department getDepartment() {
43 | return department;
44 | }
45 |
46 | public void setDepartment(Department department) {
47 | this.department = department;
48 | }
49 |
50 | public Integer getEmpId() {
51 | return empId;
52 | }
53 |
54 | public void setEmpId(Integer empId) {
55 | this.empId = empId;
56 | }
57 |
58 | public String getEmpName() {
59 | return empName;
60 | }
61 |
62 | public void setEmpName(String empName) {
63 | this.empName = empName == null ? null : empName.trim();
64 | }
65 |
66 | public String getGender() {
67 | return gender;
68 | }
69 |
70 | public void setGender(String gender) {
71 | this.gender = gender == null ? null : gender.trim();
72 | }
73 |
74 | public String getEmail() {
75 | return email;
76 | }
77 |
78 | public void setEmail(String email) {
79 | this.email = email == null ? null : email.trim();
80 | }
81 |
82 | public Integer getdId() {
83 | return dId;
84 | }
85 |
86 | public void setdId(Integer dId) {
87 | this.dId = dId;
88 | }
89 | }
--------------------------------------------------------------------------------
/src/main/webapp/WEB-INF/web.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
10 | contextConfigLocation
11 | classpath:spring/applicationContext.xml
12 |
13 |
14 |
15 |
16 | org.springframework.web.context.ContextLoaderListener
17 |
18 |
19 |
20 |
21 |
22 | dispatcherServlet
23 | org.springframework.web.servlet.DispatcherServlet
24 |
25 | contextConfigLocation
26 | classpath:spring/dispatcherServlet-servlet.xml
27 |
28 | 1
29 |
30 |
31 |
32 |
33 | dispatcherServlet
34 | /
35 |
36 |
37 |
38 |
39 | CharacterEncodingFilter
40 | org.springframework.web.filter.CharacterEncodingFilter
41 |
42 | encoding
43 | utf-8
44 |
45 |
46 | forceRequestEncoding
47 | true
48 |
49 |
50 | forceResponseEncoding
51 | true
52 |
53 |
54 |
55 | CharacterEncodingFilter
56 | /*
57 |
58 |
59 |
60 |
61 | HiddenHttpMethodFilter
62 | org.springframework.web.filter.HiddenHttpMethodFilter
63 |
64 |
65 | HiddenHttpMethodFilter
66 | /*
67 |
68 |
69 | HttpPutFormContentFilter
70 | org.springframework.web.filter.HttpPutFormContentFilter
71 |
72 |
73 | HttpPutFormContentFilter
74 | /*
75 |
76 |
77 |
78 |
--------------------------------------------------------------------------------
/.idea/artifacts/SSM_CRUD_war_exploded.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | $PROJECT_DIR$/target/SSM_CRUD
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/src/main/resources/spring/applicationContext.xml:
--------------------------------------------------------------------------------
1 |
2 |
11 |
12 |
13 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 | # SSM_CRUD
11 |
12 | (Spring+SpringMVC+Mybatis)整合项目练习
13 |
14 | 项目是在IDEA中编写的,使用maven构建依赖,MySQL数据库.前端用bootstrap框架搭建界面
15 |
16 | 使用了mybatis逆向工程生成的bean-dao-mapper。(使用了Example类)
17 |
18 | 界面使用ajax异步访问,将界面静态化,使前、后端脱离。
19 |
20 | 构建了一个通用返回类,用于返回json数据。
21 |
22 | 使用了REST风格传参(注意PUT方法)
23 |
24 | 使用PageHelper插件做分页。
25 |
26 | 实现了前端jquary校验、ajax异步访问校验、后端JSR303校验,三次校验数据(数据库校验未实现)
27 |
28 | 是一个很好的SSM增删改差的练习项目。
29 |
30 |
31 |
32 | ## ssm:SpringMVC+Spring+MyBatis
33 |
34 | ## CRUD: Create(创建)Retrieve(查询)Update(更新)Delete(删除)
35 |
36 |
37 | ps:此项目笔者写了很详细的备注,便于理解,已更新,换为HTML静态页,相关自己的js在
38 |
39 | ```java
40 | /src/webapp/静态主/js/index.crud.js
41 | ```
42 |
43 | 源码下载地址:--> https://github.com/tf2jaguar/SSM_CRUD
44 |
45 | ## 功能点
46 | >1、分页
47 | >2、数据校验 jquery前端校验+JSR303后端校验
48 | >3、 ajax
49 | >4、 Rest风格的URI;使用HTTP协议请求方式的动词,来表示对资源的操作( GET(查询), POST(新增), PUT(修改), DELETE(删除))
50 |
51 |
52 | ## 技术点
53 | >基础框架-ssm( SpringMVC+Spring+MyBatis)
54 | >数据库-MySQL
55 | >前端框架-bootstrap快速搭建简洁美观的界面
56 | >项目的依赖管理-Maven
57 | >分页-pagehelper
58 | >逆向工程-MyBatis Generator
59 |
60 |
61 | ## 基础环境搭建
62 | >1、创建一个maven工程
63 | >2、引入项目依赖的jar包
64 | > spring
65 | > springmvc
66 | > mybatis
67 | > 数据库连接池,驱动包
68 | > 其他( jstl, servlet-api, junit)
69 | >3、引入bootstrap前端框架
70 | >4、编写ssm整合的关键配置文件 web.xml, spring,springmvc,mybatis,使用mybatis的逆向工程生成对应的bean以及mapper
71 | >5、测试mapper
72 |
73 |
74 |
75 |
76 | ## 查询
77 | >1、访问index.jsp页面
78 | >2、 index.jsp页面发送出查询员工列表请求
79 | >3、 EmployeeController来接受请求,查出员工数据
80 | >4、来到list.jsp页面进行展示
81 | >5、 pageHelper分页插件完成分页查询功能
82 | URI: /emp
83 |
84 | ## 查询-ajax
85 | >1、 index.jsp页面直接发送ajax请求进行员工分页数据的查询
86 | >2、服务器将查出的数据,以json字符串的形式返回给浏览器
87 | >3、浏览器收到js字符串。可以使用js对json进行解析,使用js通过dom增删改改变页面。
88 | >4、返回json。实现客户端的无关性
89 |
90 |
91 |
92 | ## 新增
93 |
94 |
95 | ## 新增-逻辑
96 | >1、在index.jsp页面点击”新增”
97 | >2、弹出新增对话框
98 | >3、去数据库查询部门列表,显示在对话框中
99 | >4、用户输入数据,并进行校验jquery前端校验, ajax用户名重复校验,重要数据(后端校验(JSR303),唯一约束);
100 | >5、完成保存
101 |
102 | URI:
103 | /emp/{id} GET 查询员工
104 | /emp POST 保存员工
105 | /emp/{id} PUT 修改员工
106 | /emp/{id} DELETE 删除员工
107 |
108 |
109 | ## 修改
110 |
111 |
112 | ## 修改-逻辑
113 | >1、点击编辑
114 | >2、弹出用户修改的模态框(显示用户信息)
115 | >3、点击更新,完成用户修改
116 |
117 |
118 | ## 删除
119 |
120 |
121 |
122 |
123 | ## 删除-逻辑
124 | >1、单个删除
125 | >>URI:/emp/{id} DELETE
126 |
127 | >2、批量删除
128 |
129 |
--------------------------------------------------------------------------------
/SSM_CRUD.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
--------------------------------------------------------------------------------
/pom.xml:
--------------------------------------------------------------------------------
1 |
3 | 4.0.0
4 | com.jelly
5 | SSM_CRUD
6 | war
7 | 1.0-SNAPSHOT
8 | SSM_CRUD
9 | http://maven.apache.org
10 |
11 |
12 |
13 |
14 |
15 |
16 | com.github.pagehelper
17 | pagehelper
18 | 5.0.0
19 |
20 |
21 |
22 | org.springframework
23 | spring-webmvc
24 | 4.3.7.RELEASE
25 |
26 |
27 |
28 |
29 | com.fasterxml.jackson.core
30 | jackson-databind
31 | 2.9.8
32 |
33 |
34 |
35 |
36 | org.hibernate
37 | hibernate-validator
38 | 5.4.1.Final
39 |
40 |
41 |
42 |
43 |
44 | org.springframework
45 | spring-jdbc
46 | 4.3.7.RELEASE
47 |
48 |
49 |
50 |
51 |
52 | org.springframework
53 | spring-test
54 | 4.3.7.RELEASE
55 | test
56 |
57 |
58 |
59 |
60 | org.springframework
61 | spring-aspects
62 | 4.3.7.RELEASE
63 |
64 |
65 |
66 |
67 |
68 |
69 | org.mybatis
70 | mybatis
71 | 3.4.2
72 |
73 |
74 |
75 |
76 | org.mybatis
77 | mybatis-spring
78 | 1.3.1
79 |
80 |
81 |
82 |
83 |
84 | c3p0
85 | c3p0
86 | 0.9.1
87 |
88 |
89 |
90 | mysql
91 | mysql-connector-java
92 | 5.1.41
93 |
94 |
95 |
96 |
97 |
98 | jstl
99 | jstl
100 | 1.2
101 |
102 |
103 |
104 | javax.servlet
105 | javax.servlet-api
106 | 3.0.1
107 | provided
108 |
109 |
110 |
111 |
112 |
113 | junit
114 | junit
115 | 4.12
116 | test
117 |
118 |
119 |
120 |
121 | SSM_CRUD
122 |
123 |
124 |
--------------------------------------------------------------------------------
/src/main/java/com/jelly/crud/controller/EmployeeController.java:
--------------------------------------------------------------------------------
1 | package com.jelly.crud.controller;
2 |
3 | import com.github.pagehelper.PageHelper;
4 | import com.github.pagehelper.PageInfo;
5 | import com.jelly.crud.bean.Employee;
6 | import com.jelly.crud.service.EmployeeService;
7 | import com.jelly.crud.util.Msg;
8 | import org.springframework.beans.factory.annotation.Autowired;
9 | import org.springframework.stereotype.Controller;
10 | import org.springframework.validation.BindingResult;
11 | import org.springframework.validation.FieldError;
12 | import org.springframework.web.bind.annotation.*;
13 |
14 | import javax.validation.Valid;
15 | import java.util.ArrayList;
16 | import java.util.HashMap;
17 | import java.util.List;
18 | import java.util.Map;
19 |
20 | /**
21 | * 员工的CRUD操作
22 | */
23 | @Controller
24 | public class EmployeeController {
25 |
26 | @Autowired
27 | EmployeeService employeeService;
28 |
29 | /**
30 | * 如果直接发送ajax=PUT形式的请求
31 | * 封装的数据
32 | * Employee
33 | * [empId=1014, empName=null, gender=null, email=null, dId=null]
34 | *
35 | * 问题:
36 | * 请求体中有数据;
37 | * 但是Employee对象封装不上;
38 | * update tbl_emp where emp_id = 1014;
39 | *
40 | * 原因:
41 | * Tomcat:
42 | * 1、将请求体中的数据,封装一个map。
43 | * 2、request.getParameter("empName")就会从这个map中取值。
44 | * 3、SpringMVC封装POJO对象的时候。会把POJO中每个属性的值,request.getParamter("email");
45 | * AJAX发送PUT请求引发的血案:
46 | * PUT请求,请求体中的数据,request.getParameter("empName")拿不到
47 | * Tomcat一看是PUT不会封装请求体中的数据为map,只有POST形式的请求才封装请求体为map
48 | * org.apache.catalina.connector.Request--parseParameters() (3111);
49 | *
50 | * protected String parseBodyMethods = "POST";
51 | * if( !getConnector().isParseBodyMethod(getMethod()) ) {
52 | * success = true;
53 | * return;
54 | * }
55 | *
56 | *
57 | * 解决方案;
58 | * 我们要能支持直接发送PUT之类的请求还要封装请求体中的数据
59 | * 1、配置上HttpPutFormContentFilter;
60 | * 2、他的作用;将请求体中的数据解析包装成一个map。
61 | * 3、request被重新包装,request.getParameter()被重写,就会从自己封装的map中取数据
62 | * 员工更新方法
63 | *
64 | * 根据id更新员工信息
65 | *
66 | * @param id
67 | * @param employee
68 | * @return
69 | */
70 | @ResponseBody
71 | @RequestMapping(value = "/emp/{empId}", method = RequestMethod.PUT)
72 | public Msg updateEmp(@PathVariable("empId") Integer id, Employee employee) {
73 | employeeService.updateByPrimaryKeySelective(employee);
74 | return Msg.success();
75 | }
76 |
77 | /**
78 | * 根据id获取员工信息
79 | *
80 | * @param id
81 | * @return
82 | */
83 | @ResponseBody
84 | @RequestMapping(value = "/emp/{empId}", method = RequestMethod.GET)
85 | public Msg getEmpById(@PathVariable("empId") Integer id) {
86 | Employee employee = employeeService.selectByPrimaryKey(id);
87 | return Msg.success().add("emp", employee);
88 | }
89 |
90 | /**
91 | * 单个员工删除+批量员工删除
92 | *
93 | * @param ids
94 | * @return
95 | */
96 | @ResponseBody
97 | @RequestMapping(value = "/emp/{del_empIds}", method = RequestMethod.DELETE)
98 | public Msg deleteEmp(@PathVariable("del_empIds") String ids) {
99 |
100 | if (ids.contains("-")) {
101 | String[] str_ids = ids.split("-");
102 | List del_ids = new ArrayList();
103 | for (String s : str_ids) {
104 | del_ids.add(Integer.parseInt(s));
105 | }
106 | employeeService.deleteBanch(del_ids);
107 | } else {
108 | employeeService.deleteEmployee(Integer.parseInt(ids));
109 | }
110 | return Msg.success();
111 | }
112 |
113 | /**
114 | * 员工保存
115 | * 1.支持JSR303校验
116 | * 2.导入Hibernate-Validate
117 | *
118 | * @return
119 | */
120 | @ResponseBody
121 | @RequestMapping(value = "/emp", method = RequestMethod.POST)
122 | public Msg saveEmp(@Valid Employee employee, BindingResult result) {
123 | System.out.println("进入 emp 添加");
124 | if (result.hasErrors()) {
125 | //后端校验失败,
126 | //应该返回失败,在模态框中显示校验失败提示信息
127 | Map map = new HashMap<>();
128 | List errors = result.getFieldErrors();
129 | for (FieldError f : errors) {
130 | System.out.println("错误的字段: " + f.getField());
131 | System.out.println("错误信息: " + f.getDefaultMessage());
132 | map.put(f.getField(), f.getDefaultMessage());
133 | }
134 | return Msg.fail().add("JSR303Error", map);
135 | } else {
136 | employeeService.saveEmp(employee);
137 | return Msg.success().add("msg", "添加成功!!");
138 | }
139 | }
140 |
141 | /**
142 | * 检查注册名是否重复
143 | *
144 | * @return
145 | */
146 | @ResponseBody
147 | @RequestMapping("/checkEmpName")
148 | public Msg checkEmpName(@RequestParam("empName") String empName) {
149 | if (employeeService.checkEmpName(empName)) {
150 | return Msg.fail();
151 | } else {
152 | return Msg.success();
153 | }
154 | }
155 |
156 | /**
157 | * 查询员工
158 | * 获取的员工列表,并执行分页查询。
159 | * 默认从第一页查询,每页显示五行数据
160 | *
161 | * @param pn 从第 pn 页查询
162 | * @return
163 | */
164 | @ResponseBody
165 | @RequestMapping("/emps")
166 | public Msg getEmps(@RequestParam(value = "pn", defaultValue = "1") Integer pn) {
167 | // 引入PageHelper分页插件
168 | // 在查询之前只需要调用,传入页码,以及每页的大小
169 | PageHelper.startPage(pn, 5);
170 | // startPage后面紧跟的这个查询就是一个分页查询
171 | List list = employeeService.selectByExampleWithDept();
172 | // 使用pageInfo包装查询后的结果,只需要将pageInfo交给页面就行了。
173 | // 封装了详细的分页信息,包括有我们查询出来的数据,传入连续显示的页数
174 | PageInfo page = new PageInfo(list, 5);
175 | return Msg.success().add("pageInfo", page);
176 | }
177 |
178 | }
179 |
--------------------------------------------------------------------------------
/src/main/resources/mapper/DepartmentMapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 | and ${criterion.condition}
17 |
18 |
19 | and ${criterion.condition} #{criterion.value}
20 |
21 |
22 | and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
23 |
24 |
25 | and ${criterion.condition}
26 |
27 | #{listItem}
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 | and ${criterion.condition}
46 |
47 |
48 | and ${criterion.condition} #{criterion.value}
49 |
50 |
51 | and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
52 |
53 |
54 | and ${criterion.condition}
55 |
56 | #{listItem}
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 | dept_id, dept_name
68 |
69 |
83 |
89 |
90 | delete from tbl_dept
91 | where dept_id = #{deptId,jdbcType=INTEGER}
92 |
93 |
94 | delete from tbl_dept
95 |
96 |
97 |
98 |
99 |
100 | insert into tbl_dept (dept_id, dept_name)
101 | values (#{deptId,jdbcType=INTEGER}, #{deptName,jdbcType=VARCHAR})
102 |
103 |
104 | insert into tbl_dept
105 |
106 |
107 | dept_id,
108 |
109 |
110 | dept_name,
111 |
112 |
113 |
114 |
115 | #{deptId,jdbcType=INTEGER},
116 |
117 |
118 | #{deptName,jdbcType=VARCHAR},
119 |
120 |
121 |
122 |
128 |
129 | update tbl_dept
130 |
131 |
132 | dept_id = #{record.deptId,jdbcType=INTEGER},
133 |
134 |
135 | dept_name = #{record.deptName,jdbcType=VARCHAR},
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 | update tbl_dept
144 | set dept_id = #{record.deptId,jdbcType=INTEGER},
145 | dept_name = #{record.deptName,jdbcType=VARCHAR}
146 |
147 |
148 |
149 |
150 |
151 | update tbl_dept
152 |
153 |
154 | dept_name = #{deptName,jdbcType=VARCHAR},
155 |
156 |
157 | where dept_id = #{deptId,jdbcType=INTEGER}
158 |
159 |
160 | update tbl_dept
161 | set dept_name = #{deptName,jdbcType=VARCHAR}
162 | where dept_id = #{deptId,jdbcType=INTEGER}
163 |
164 |
--------------------------------------------------------------------------------
/src/main/webapp/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | 员工列表
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
71 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
SSM_CRUD
132 |
133 |
134 |
135 |
136 |
137 |
140 |
143 |
144 |
145 |
146 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
--------------------------------------------------------------------------------
/src/main/webapp/index.jsp:
--------------------------------------------------------------------------------
1 | <%@ page language="java" contentType="text/html; charset=UTF-8"
2 | pageEncoding="UTF-8" %>
3 |
4 |
5 |
6 |
7 | 员工列表
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
72 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
SSM_CRUD
133 |
134 |
135 |
136 |
137 |
138 |
141 |
144 |
145 |
146 |
147 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
--------------------------------------------------------------------------------
/src/main/resources/mapper/EmployeeMapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 | and ${criterion.condition}
33 |
34 |
35 | and ${criterion.condition} #{criterion.value}
36 |
37 |
38 | and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
39 |
40 |
41 | and ${criterion.condition}
42 |
43 | #{listItem}
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 | and ${criterion.condition}
62 |
63 |
64 | and ${criterion.condition} #{criterion.value}
65 |
66 |
67 | and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
68 |
69 |
70 | and ${criterion.condition}
71 |
72 | #{listItem}
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 | emp_id, emp_name, gender, email, d_id
84 |
85 |
86 |
87 | e.emp_id, e.emp_name, e.gender, e.email, e.d_id, d.dept_id, d.dept_name
88 |
89 |
90 |
91 |
105 |
106 |
107 |
113 |
114 |
128 |
134 |
135 | delete from tbl_emp
136 | where emp_id = #{empId,jdbcType=INTEGER}
137 |
138 |
139 | delete from tbl_emp
140 |
141 |
142 |
143 |
144 |
145 | insert into tbl_emp (emp_id, emp_name, gender,
146 | email, d_id)
147 | values (#{empId,jdbcType=INTEGER}, #{empName,jdbcType=VARCHAR}, #{gender,jdbcType=CHAR},
148 | #{email,jdbcType=VARCHAR}, #{dId,jdbcType=INTEGER})
149 |
150 |
151 | insert into tbl_emp
152 |
153 |
154 | emp_id,
155 |
156 |
157 | emp_name,
158 |
159 |
160 | gender,
161 |
162 |
163 | email,
164 |
165 |
166 | d_id,
167 |
168 |
169 |
170 |
171 | #{empId,jdbcType=INTEGER},
172 |
173 |
174 | #{empName,jdbcType=VARCHAR},
175 |
176 |
177 | #{gender,jdbcType=CHAR},
178 |
179 |
180 | #{email,jdbcType=VARCHAR},
181 |
182 |
183 | #{dId,jdbcType=INTEGER},
184 |
185 |
186 |
187 |
193 |
194 | update tbl_emp
195 |
196 |
197 | emp_id = #{record.empId,jdbcType=INTEGER},
198 |
199 |
200 | emp_name = #{record.empName,jdbcType=VARCHAR},
201 |
202 |
203 | gender = #{record.gender,jdbcType=CHAR},
204 |
205 |
206 | email = #{record.email,jdbcType=VARCHAR},
207 |
208 |
209 | d_id = #{record.dId,jdbcType=INTEGER},
210 |
211 |
212 |
213 |
214 |
215 |
216 |
217 | update tbl_emp
218 | set emp_id = #{record.empId,jdbcType=INTEGER},
219 | emp_name = #{record.empName,jdbcType=VARCHAR},
220 | gender = #{record.gender,jdbcType=CHAR},
221 | email = #{record.email,jdbcType=VARCHAR},
222 | d_id = #{record.dId,jdbcType=INTEGER}
223 |
224 |
225 |
226 |
227 |
228 | update tbl_emp
229 |
230 |
231 | emp_name = #{empName,jdbcType=VARCHAR},
232 |
233 |
234 | gender = #{gender,jdbcType=CHAR},
235 |
236 |
237 | email = #{email,jdbcType=VARCHAR},
238 |
239 |
240 | d_id = #{dId,jdbcType=INTEGER},
241 |
242 |
243 | where emp_id = #{empId,jdbcType=INTEGER}
244 |
245 |
246 | update tbl_emp
247 | set emp_name = #{empName,jdbcType=VARCHAR},
248 | gender = #{gender,jdbcType=CHAR},
249 | email = #{email,jdbcType=VARCHAR},
250 | d_id = #{dId,jdbcType=INTEGER}
251 | where emp_id = #{empId,jdbcType=INTEGER}
252 |
253 |
--------------------------------------------------------------------------------
/src/main/java/com/jelly/crud/bean/DepartmentExample.java:
--------------------------------------------------------------------------------
1 | package com.jelly.crud.bean;
2 |
3 | import java.util.ArrayList;
4 | import java.util.List;
5 |
6 | public class DepartmentExample {
7 | protected String orderByClause;
8 |
9 | protected boolean distinct;
10 |
11 | protected List oredCriteria;
12 |
13 | public DepartmentExample() {
14 | oredCriteria = new ArrayList();
15 | }
16 |
17 | public void setOrderByClause(String orderByClause) {
18 | this.orderByClause = orderByClause;
19 | }
20 |
21 | public String getOrderByClause() {
22 | return orderByClause;
23 | }
24 |
25 | public void setDistinct(boolean distinct) {
26 | this.distinct = distinct;
27 | }
28 |
29 | public boolean isDistinct() {
30 | return distinct;
31 | }
32 |
33 | public List getOredCriteria() {
34 | return oredCriteria;
35 | }
36 |
37 | public void or(Criteria criteria) {
38 | oredCriteria.add(criteria);
39 | }
40 |
41 | public Criteria or() {
42 | Criteria criteria = createCriteriaInternal();
43 | oredCriteria.add(criteria);
44 | return criteria;
45 | }
46 |
47 | public Criteria createCriteria() {
48 | Criteria criteria = createCriteriaInternal();
49 | if (oredCriteria.size() == 0) {
50 | oredCriteria.add(criteria);
51 | }
52 | return criteria;
53 | }
54 |
55 | protected Criteria createCriteriaInternal() {
56 | Criteria criteria = new Criteria();
57 | return criteria;
58 | }
59 |
60 | public void clear() {
61 | oredCriteria.clear();
62 | orderByClause = null;
63 | distinct = false;
64 | }
65 |
66 | protected abstract static class GeneratedCriteria {
67 | protected List criteria;
68 |
69 | protected GeneratedCriteria() {
70 | super();
71 | criteria = new ArrayList();
72 | }
73 |
74 | public boolean isValid() {
75 | return criteria.size() > 0;
76 | }
77 |
78 | public List getAllCriteria() {
79 | return criteria;
80 | }
81 |
82 | public List getCriteria() {
83 | return criteria;
84 | }
85 |
86 | protected void addCriterion(String condition) {
87 | if (condition == null) {
88 | throw new RuntimeException("Value for condition cannot be null");
89 | }
90 | criteria.add(new Criterion(condition));
91 | }
92 |
93 | protected void addCriterion(String condition, Object value, String property) {
94 | if (value == null) {
95 | throw new RuntimeException("Value for " + property + " cannot be null");
96 | }
97 | criteria.add(new Criterion(condition, value));
98 | }
99 |
100 | protected void addCriterion(String condition, Object value1, Object value2, String property) {
101 | if (value1 == null || value2 == null) {
102 | throw new RuntimeException("Between values for " + property + " cannot be null");
103 | }
104 | criteria.add(new Criterion(condition, value1, value2));
105 | }
106 |
107 | public Criteria andDeptIdIsNull() {
108 | addCriterion("dept_id is null");
109 | return (Criteria) this;
110 | }
111 |
112 | public Criteria andDeptIdIsNotNull() {
113 | addCriterion("dept_id is not null");
114 | return (Criteria) this;
115 | }
116 |
117 | public Criteria andDeptIdEqualTo(Integer value) {
118 | addCriterion("dept_id =", value, "deptId");
119 | return (Criteria) this;
120 | }
121 |
122 | public Criteria andDeptIdNotEqualTo(Integer value) {
123 | addCriterion("dept_id <>", value, "deptId");
124 | return (Criteria) this;
125 | }
126 |
127 | public Criteria andDeptIdGreaterThan(Integer value) {
128 | addCriterion("dept_id >", value, "deptId");
129 | return (Criteria) this;
130 | }
131 |
132 | public Criteria andDeptIdGreaterThanOrEqualTo(Integer value) {
133 | addCriterion("dept_id >=", value, "deptId");
134 | return (Criteria) this;
135 | }
136 |
137 | public Criteria andDeptIdLessThan(Integer value) {
138 | addCriterion("dept_id <", value, "deptId");
139 | return (Criteria) this;
140 | }
141 |
142 | public Criteria andDeptIdLessThanOrEqualTo(Integer value) {
143 | addCriterion("dept_id <=", value, "deptId");
144 | return (Criteria) this;
145 | }
146 |
147 | public Criteria andDeptIdIn(List values) {
148 | addCriterion("dept_id in", values, "deptId");
149 | return (Criteria) this;
150 | }
151 |
152 | public Criteria andDeptIdNotIn(List values) {
153 | addCriterion("dept_id not in", values, "deptId");
154 | return (Criteria) this;
155 | }
156 |
157 | public Criteria andDeptIdBetween(Integer value1, Integer value2) {
158 | addCriterion("dept_id between", value1, value2, "deptId");
159 | return (Criteria) this;
160 | }
161 |
162 | public Criteria andDeptIdNotBetween(Integer value1, Integer value2) {
163 | addCriterion("dept_id not between", value1, value2, "deptId");
164 | return (Criteria) this;
165 | }
166 |
167 | public Criteria andDeptNameIsNull() {
168 | addCriterion("dept_name is null");
169 | return (Criteria) this;
170 | }
171 |
172 | public Criteria andDeptNameIsNotNull() {
173 | addCriterion("dept_name is not null");
174 | return (Criteria) this;
175 | }
176 |
177 | public Criteria andDeptNameEqualTo(String value) {
178 | addCriterion("dept_name =", value, "deptName");
179 | return (Criteria) this;
180 | }
181 |
182 | public Criteria andDeptNameNotEqualTo(String value) {
183 | addCriterion("dept_name <>", value, "deptName");
184 | return (Criteria) this;
185 | }
186 |
187 | public Criteria andDeptNameGreaterThan(String value) {
188 | addCriterion("dept_name >", value, "deptName");
189 | return (Criteria) this;
190 | }
191 |
192 | public Criteria andDeptNameGreaterThanOrEqualTo(String value) {
193 | addCriterion("dept_name >=", value, "deptName");
194 | return (Criteria) this;
195 | }
196 |
197 | public Criteria andDeptNameLessThan(String value) {
198 | addCriterion("dept_name <", value, "deptName");
199 | return (Criteria) this;
200 | }
201 |
202 | public Criteria andDeptNameLessThanOrEqualTo(String value) {
203 | addCriterion("dept_name <=", value, "deptName");
204 | return (Criteria) this;
205 | }
206 |
207 | public Criteria andDeptNameLike(String value) {
208 | addCriterion("dept_name like", value, "deptName");
209 | return (Criteria) this;
210 | }
211 |
212 | public Criteria andDeptNameNotLike(String value) {
213 | addCriterion("dept_name not like", value, "deptName");
214 | return (Criteria) this;
215 | }
216 |
217 | public Criteria andDeptNameIn(List values) {
218 | addCriterion("dept_name in", values, "deptName");
219 | return (Criteria) this;
220 | }
221 |
222 | public Criteria andDeptNameNotIn(List values) {
223 | addCriterion("dept_name not in", values, "deptName");
224 | return (Criteria) this;
225 | }
226 |
227 | public Criteria andDeptNameBetween(String value1, String value2) {
228 | addCriterion("dept_name between", value1, value2, "deptName");
229 | return (Criteria) this;
230 | }
231 |
232 | public Criteria andDeptNameNotBetween(String value1, String value2) {
233 | addCriterion("dept_name not between", value1, value2, "deptName");
234 | return (Criteria) this;
235 | }
236 | }
237 |
238 | public static class Criteria extends GeneratedCriteria {
239 |
240 | protected Criteria() {
241 | super();
242 | }
243 | }
244 |
245 | public static class Criterion {
246 | private String condition;
247 |
248 | private Object value;
249 |
250 | private Object secondValue;
251 |
252 | private boolean noValue;
253 |
254 | private boolean singleValue;
255 |
256 | private boolean betweenValue;
257 |
258 | private boolean listValue;
259 |
260 | private String typeHandler;
261 |
262 | public String getCondition() {
263 | return condition;
264 | }
265 |
266 | public Object getValue() {
267 | return value;
268 | }
269 |
270 | public Object getSecondValue() {
271 | return secondValue;
272 | }
273 |
274 | public boolean isNoValue() {
275 | return noValue;
276 | }
277 |
278 | public boolean isSingleValue() {
279 | return singleValue;
280 | }
281 |
282 | public boolean isBetweenValue() {
283 | return betweenValue;
284 | }
285 |
286 | public boolean isListValue() {
287 | return listValue;
288 | }
289 |
290 | public String getTypeHandler() {
291 | return typeHandler;
292 | }
293 |
294 | protected Criterion(String condition) {
295 | super();
296 | this.condition = condition;
297 | this.typeHandler = null;
298 | this.noValue = true;
299 | }
300 |
301 | protected Criterion(String condition, Object value, String typeHandler) {
302 | super();
303 | this.condition = condition;
304 | this.value = value;
305 | this.typeHandler = typeHandler;
306 | if (value instanceof List>) {
307 | this.listValue = true;
308 | } else {
309 | this.singleValue = true;
310 | }
311 | }
312 |
313 | protected Criterion(String condition, Object value) {
314 | this(condition, value, null);
315 | }
316 |
317 | protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
318 | super();
319 | this.condition = condition;
320 | this.value = value;
321 | this.secondValue = secondValue;
322 | this.typeHandler = typeHandler;
323 | this.betweenValue = true;
324 | }
325 |
326 | protected Criterion(String condition, Object value, Object secondValue) {
327 | this(condition, value, secondValue, null);
328 | }
329 | }
330 | }
--------------------------------------------------------------------------------
/src/main/webapp/static/js/index.crud.js:
--------------------------------------------------------------------------------
1 | //定义两个全局变量 总记录数,当前页
2 | var totalRecord, currentPage;
3 | //界面初始化完成后执行的js
4 | $(function () {
5 | to_page(1);
6 | });
7 |
8 | //ajax异步请求要访问的页面,传入页数
9 | function to_page(pn) {
10 | //解决刷新后checkbox为选中状态
11 | $("#check_all").prop("checked", false);
12 | //发送ajax请求
13 | $.ajax({
14 | url: "emps",
15 | data: "pn=" + pn,
16 | type: "GET",
17 | success: function (result) {
18 | //1、解析并显示员工数据
19 | build_emps_table(result);
20 | //2、解析并显示分页信息
21 | build_page_info(result);
22 | //3、解析显示分页条数据
23 | build_page_nav(result);
24 | }
25 | });
26 |
27 | }
28 |
29 | //构建数据表格
30 | function build_emps_table(result) {
31 | //清空表格
32 | $("#emps_table tbody").empty();
33 | var emps = result.datas.pageInfo.list;
34 | $.each(emps, function (index, item) {
35 | var checkBoxTd = $(" | ");
36 | var empIdTd = $(" | ").append(item.empId);
37 | var empNameTd = $(" | ").append(item.empName);
38 | var genderTd = $(" | ").append(item.gender == 'M' ? "男" : "女");
39 | var emailTd = $(" | ").append(item.email);
40 | var deptNameTd = $(" | ").append(item.department.deptName);
41 | //定义编辑/删除按钮
42 | /*
43 | *
46 | */
47 | var editBtn = $("").addClass("btn btn-info btn-sm edit_btn").append($("").addClass("glyphicon glyphicon-pencil")).append("编辑");
48 | editBtn.attr("edi_id", item.empId);
49 | var deleBtn = $("").addClass("btn btn-danger btn-sm delete_btn").append($("").addClass("glyphicon glyphicon-trash")).append("删除");
50 | deleBtn.attr("del_id", item.empId);
51 | var btnTd = $(" | ").append(editBtn).append(" ").append(deleBtn);
52 |
53 | $("
").append(checkBoxTd)
54 | .append(empIdTd)
55 | .append(empNameTd)
56 | .append(genderTd)
57 | .append(emailTd)
58 | .append(deptNameTd)
59 | .append(btnTd)
60 | .appendTo("#emps_table tbody");
61 | });
62 | }
63 |
64 | //构建分页信息
65 | function build_page_info(result) {
66 | var pageInfo = result.datas.pageInfo;
67 | $("#page_info_area").empty();
68 | $("#page_info_area").append("当前第 " + pageInfo.pageNum + " 页,总计 " + pageInfo.pages + " 页,总 " + pageInfo.total + " 条记录");
69 | totalRecord = pageInfo.total;
70 | currentPage = pageInfo.pageNum;
71 | }
72 |
73 | //构建分页条信息
74 | function build_page_nav(result) {
75 | //每次写入前先清空
76 | $("#page_nav_area").empty();
77 | //构建元素
78 | var nav = $("").attr("aria-label", "Page navigation");
79 | var ul = $("").addClass("pagination");
80 |
81 | var firstPageLi = $("").append($("").append("首页").attr("href", "#"));
82 | var prePageLi = $("").append($("").append("«"));
83 | //判断是否有前一页
84 | if (result.datas.pageInfo.hasPreviousPage) {
85 | firstPageLi.click(function () {
86 | to_page(1);
87 | });
88 | prePageLi.click(function () {
89 | to_page(result.datas.pageInfo.prePage);
90 | });
91 | }
92 | else {
93 | firstPageLi.addClass("disabled");
94 | prePageLi.addClass("disabled");
95 | }
96 |
97 | var nextPageLi = $("").append($("").append("»"));
98 | var lastPageLi = $("").append($("").append("末页").attr("href", "#"))
99 | //判断是否有下一页
100 | if (result.datas.pageInfo.hasNextPage) {
101 | lastPageLi.click(function () {
102 | to_page(result.datas.pageInfo.total + 100);
103 | });
104 | nextPageLi.click(function () {
105 | to_page(result.datas.pageInfo.nextPage);
106 | });
107 | }
108 | else {
109 | nextPageLi.addClass("disabled");
110 | lastPageLi.addClass("disabled");
111 | }
112 | //添加首页和前一页
113 | ul.append(firstPageLi).append(prePageLi);
114 |
115 | //遍历给ul中添加页码提示
116 | $.each(result.datas.pageInfo.navigatepageNums, function (index, item) {
117 | var numLi = $("").append($("").append(item));
118 | if (result.datas.pageInfo.pageNum == item) {
119 | numLi.addClass("active");
120 | }
121 | numLi.click(function () {
122 | to_page(item)
123 | });
124 | ul.append(numLi);
125 | });
126 | //添加下一页和最后一页
127 | ul.append(nextPageLi).append(lastPageLi);
128 | nav.append(ul).appendTo("#page_nav_area");
129 | }
130 |
131 | //清空表单样式及内容
132 | function reset_form(ele) {
133 | $(ele)[0].reset();
134 | //清空表单样式
135 | $(ele).find("*").removeClass("has-error has-success");
136 | $(ele).find(".help-block").text("");
137 | }
138 |
139 | //添加员工模态框调用方法
140 | $("#emp_add_modal_btn").click(function () {
141 | reset_form('#empAddModal form');
142 | getDeps('#empAddModal select');
143 | $('#empAddModal').modal({
144 | backdrop: 'static'
145 | })
146 | });
147 |
148 | //获取部门列表
149 | function getDeps(ele) {
150 | $(ele).empty();
151 | $.ajax({
152 | url: "getDeps",
153 | type: "GET",
154 | success: function (result) {
155 | $.each(result.datas.deps, function (index, item) {
156 | $("").append(item.deptName).attr("value", item.deptId).appendTo(ele);
157 | });
158 | }
159 | });
160 | }
161 |
162 | //显示校验后展示信息
163 | function show_validate_msg(ele, status, msg) {
164 | $(ele).parent().removeClass("has-success has-error");
165 | $(ele).next("span").text("");
166 | if ("success" == status) {
167 | $(ele).parent().addClass("has-success");
168 | } else if ("error" == status) {
169 | $(ele).parent().addClass("has-error");
170 | }
171 | $(ele).next("span").text(msg);
172 |
173 | }
174 |
175 | //校验提交前的数据
176 | //ajax校验用户名是否可用
177 | function valudate_empName(empName) {
178 | $.ajax({
179 | url: "checkEmpName",
180 | data: "empName=" + empName,
181 | type: "POST",
182 | success: function (result) {
183 | if (result.code == 100) {
184 | show_validate_msg("#empName_add_input", "success", "用户名可用");
185 | } else if (result.code == 200) {
186 | show_validate_msg("#empName_add_input", "error", "该用户名已存在,不可用");
187 | }
188 | }
189 | });
190 | }
191 |
192 | //1. 校验用户名是否符合规范,是否在数据库已存在
193 | $("#empName_add_input").focusout(function () {
194 | var empName = $("#empName_add_input").val();
195 | var regName = /(^[a-zA-Z0-9_-]{4,16}$)|(^[\u2E80-\u9FFF]{2,5}$)/;
196 | if (!regName.test(empName)) {
197 | show_validate_msg("#empName_add_input", "error", "用户名为4到16位数字字母或者2-5个汉字");
198 | } else {
199 | show_validate_msg("#empName_add_input", "success", "用户名符合规范");
200 | //进行ajax验证
201 | valudate_empName(empName);
202 | }
203 | });
204 |
205 | //正则校验邮箱
206 | function checkEmail(ele) {
207 | var email = $(ele).val();
208 | var regEmail = /^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/;
209 | if (!regEmail.test(email)) {
210 | show_validate_msg(ele, "error", "请输入正确的邮箱");
211 | } else {
212 | show_validate_msg(ele, "success", "邮箱可用");
213 | }
214 | }
215 |
216 | //2. 校验邮箱是否符合规范
217 | $("#email_add_input").focusout(function () {
218 | checkEmail("#email_add_input");
219 | });
220 |
221 | //添加的员工数据提交服务器
222 | $("#emp_save_btn").click(function () {
223 | //进行提交前的数据检查
224 | //非空验证
225 | if ($("#empName_add_input").val() == "") {
226 | show_validate_msg("#empName_add_input", "error", "请填写姓名!!");
227 | return false;
228 | } else if ($("#email_add_input").val() == "") {
229 | show_validate_msg("#email_add_input", "error", "请填可用的邮箱!!");
230 | return false;
231 | } else if (($("#empName_add_input").parent().hasClass("has-error")) || ($("#email_add_input").parent().hasClass("has-error"))) {
232 | alert("请填写正确的信息!");
233 | return false;
234 | }
235 | //发送ajax,保存数据
236 | $.ajax({
237 | url: "emp",
238 | type: "POST",
239 | data: $("#empAddModal form").serialize(),
240 | success: function (result) {
241 | if (result.code == 100) {//添加成功
242 | //关闭模态框
243 | $('#empAddModal').modal('hide');
244 | //返回最后一页
245 | to_page(totalRecord);
246 | } else {
247 | //显示错误信息
248 | if (undefined != result.datas.JSR303Error.empName) {
249 | show_validate_msg("#empName_add_input", "error", result.datas.JSR303Error.empName);
250 | }
251 | if (undefined != result.datas.JSR303Error.email) {
252 | show_validate_msg("#email_add_input", "error", result.datas.JSR303Error.email);
253 | }
254 | }
255 | }
256 | });
257 |
258 | });
259 |
260 | //删除单个员工
261 | $(document).on("click", ".delete_btn", function () {
262 | var del_empName = $(this).parents("tr").find("td:eq(2)").text();
263 | var del_empIds = $(this).attr("del_id");
264 | if (confirm("确定要删除【" + del_empName + "】么?")) {
265 | //确认,发送ajax请求删除即可
266 | $.ajax({
267 | url: "emp/" + del_empIds,
268 | type: "DELETE",
269 | success: function (result) {
270 | alert(result.msg);
271 | //回到本页
272 | to_page(currentPage);
273 | }
274 | });
275 | }
276 | });
277 |
278 | //完成check的全选全不选功能
279 | $("#check_all").click(function () {
280 | //attr获取checked是undefined;
281 | //我们这些dom原生的属性;attr获取自定义属性的值;
282 | //prop修改和读取dom原生属性的值
283 | $(".check_item").prop("checked", $(this).prop("checked"));
284 | });
285 | $(document).on("click", ".check_item", function () {
286 | var flag = $(".check_item:checked").length == $(".check_item").length;
287 | $("#check_all").prop("checked", flag);
288 | });
289 |
290 | //批量删除员工
291 | $("#emp_del_modal_btn").click(function () {
292 | var del_empNames = "";
293 | var del_empIds = "";
294 | $.each($(".check_item:checked"), function () {
295 | del_empNames += $(this).parents("tr").find("td:eq(2)").text() + ",";
296 | del_empIds += $(this).parents("tr").find("td:eq(1)").text() + "-";
297 | });
298 | //去除多余的,
299 | del_empNames = del_empNames.substring(0, del_empNames.length - 1);
300 | //去除多余的-
301 | del_empIds = del_empIds.substring(0, del_empIds.length - 1);
302 | //发出确认的alert
303 | if(del_empNames==""){
304 | alert("请选择要删除的员工!");
305 | }else if (confirm("确定删除【" + del_empNames + "】么?")) {
306 | //确认删除,发送ajax请求
307 | $.ajax({
308 | url: "emp/" + del_empIds,
309 | type: "DELETE",
310 | success: function (result) {
311 | alert(result.msg);
312 | to_page(currentPage);
313 | }
314 | });
315 | }
316 | });
317 |
318 |
319 | //根据id获取员工信息
320 | function getEmp(empId) {
321 | $.ajax({
322 | url: "emp/" + empId,
323 | type: "Get",
324 | success: function (result) {
325 | // console.log(result);
326 | $("#empName_update_input").text(result.datas.emp.empName);
327 | $("#email_update_input").val(result.datas.emp.email);
328 | $("#empUpdateModal input[name=gender]").val([result.datas.emp.gender]);
329 | $("#empUpdateModal select").val([result.datas.emp.dId]);
330 | }
331 | });
332 | }
333 |
334 | //更新时展示员工数据、调用模态框
335 | $(document).on("click", ".edit_btn", function () {
336 | //清除之前选中的
337 | $(this).parents("tbody").find(".check_item").prop("checked", false);
338 | //标记当前选中的
339 | $(this).parents("tr").find(".check_item").prop("checked", true);
340 | //清空之前的表单
341 | reset_form('#empUpdateModal form');
342 | var empId = $(this).attr("edi_id");
343 | //1、查出部门信息,并显示部门列表
344 | getDeps("#empUpdateModal select");
345 | //2、查出员工信息,显示员工信息
346 | getEmp(empId);
347 |
348 | //3、把员工的id传递给模态框的更新按钮
349 | $("#emp_update_btn").attr("edit-id", empId);
350 | $("#empUpdateModal").modal({
351 | backdrop: "static"
352 | });
353 | })
354 |
355 | //更新数据前的数据校验
356 | $("#email_update_input").focusout(function () {
357 | checkEmail("#email_update_input");
358 | });
359 |
360 | //更新员工数据
361 | $("#emp_update_btn").click(function () {
362 | //先要对提交的数据进行校验,当前只用校验邮箱
363 | if ($("#email_update_input").val() == "") {
364 | show_validate_msg("#email_update_input", "error", "请填可用的邮箱!!");
365 | return false;
366 | } else if ($("#email_update_input").parent().hasClass("has-error")) {
367 | alert("请填写正确的信息!");
368 | return false;
369 | }
370 | $.ajax({
371 | url: "emp/" + $(this).attr("edit-id"),
372 | data: $("#empUpdateModal form").serialize(),
373 | type: "PUT",
374 | success: function (result) {
375 | if (result.code == 100) {//添加成功
376 | //关闭模态框
377 | $('#empUpdateModal').modal('hide');
378 | //返回最后一页
379 | to_page(currentPage);
380 | }
381 | }
382 | });
383 | });
384 |
--------------------------------------------------------------------------------
/src/main/java/com/jelly/crud/bean/EmployeeExample.java:
--------------------------------------------------------------------------------
1 | package com.jelly.crud.bean;
2 |
3 | import java.util.ArrayList;
4 | import java.util.List;
5 |
6 | public class EmployeeExample {
7 | protected String orderByClause;
8 |
9 | protected boolean distinct;
10 |
11 | protected List oredCriteria;
12 |
13 | public EmployeeExample() {
14 | oredCriteria = new ArrayList();
15 | }
16 |
17 | public void setOrderByClause(String orderByClause) {
18 | this.orderByClause = orderByClause;
19 | }
20 |
21 | public String getOrderByClause() {
22 | return orderByClause;
23 | }
24 |
25 | public void setDistinct(boolean distinct) {
26 | this.distinct = distinct;
27 | }
28 |
29 | public boolean isDistinct() {
30 | return distinct;
31 | }
32 |
33 | public List getOredCriteria() {
34 | return oredCriteria;
35 | }
36 |
37 | public void or(Criteria criteria) {
38 | oredCriteria.add(criteria);
39 | }
40 |
41 | public Criteria or() {
42 | Criteria criteria = createCriteriaInternal();
43 | oredCriteria.add(criteria);
44 | return criteria;
45 | }
46 |
47 | public Criteria createCriteria() {
48 | Criteria criteria = createCriteriaInternal();
49 | if (oredCriteria.size() == 0) {
50 | oredCriteria.add(criteria);
51 | }
52 | return criteria;
53 | }
54 |
55 | protected Criteria createCriteriaInternal() {
56 | Criteria criteria = new Criteria();
57 | return criteria;
58 | }
59 |
60 | public void clear() {
61 | oredCriteria.clear();
62 | orderByClause = null;
63 | distinct = false;
64 | }
65 |
66 | protected abstract static class GeneratedCriteria {
67 | protected List criteria;
68 |
69 | protected GeneratedCriteria() {
70 | super();
71 | criteria = new ArrayList();
72 | }
73 |
74 | public boolean isValid() {
75 | return criteria.size() > 0;
76 | }
77 |
78 | public List getAllCriteria() {
79 | return criteria;
80 | }
81 |
82 | public List getCriteria() {
83 | return criteria;
84 | }
85 |
86 | protected void addCriterion(String condition) {
87 | if (condition == null) {
88 | throw new RuntimeException("Value for condition cannot be null");
89 | }
90 | criteria.add(new Criterion(condition));
91 | }
92 |
93 | protected void addCriterion(String condition, Object value, String property) {
94 | if (value == null) {
95 | throw new RuntimeException("Value for " + property + " cannot be null");
96 | }
97 | criteria.add(new Criterion(condition, value));
98 | }
99 |
100 | protected void addCriterion(String condition, Object value1, Object value2, String property) {
101 | if (value1 == null || value2 == null) {
102 | throw new RuntimeException("Between values for " + property + " cannot be null");
103 | }
104 | criteria.add(new Criterion(condition, value1, value2));
105 | }
106 |
107 | public Criteria andEmpIdIsNull() {
108 | addCriterion("emp_id is null");
109 | return (Criteria) this;
110 | }
111 |
112 | public Criteria andEmpIdIsNotNull() {
113 | addCriterion("emp_id is not null");
114 | return (Criteria) this;
115 | }
116 |
117 | public Criteria andEmpIdEqualTo(Integer value) {
118 | addCriterion("emp_id =", value, "empId");
119 | return (Criteria) this;
120 | }
121 |
122 | public Criteria andEmpIdNotEqualTo(Integer value) {
123 | addCriterion("emp_id <>", value, "empId");
124 | return (Criteria) this;
125 | }
126 |
127 | public Criteria andEmpIdGreaterThan(Integer value) {
128 | addCriterion("emp_id >", value, "empId");
129 | return (Criteria) this;
130 | }
131 |
132 | public Criteria andEmpIdGreaterThanOrEqualTo(Integer value) {
133 | addCriterion("emp_id >=", value, "empId");
134 | return (Criteria) this;
135 | }
136 |
137 | public Criteria andEmpIdLessThan(Integer value) {
138 | addCriterion("emp_id <", value, "empId");
139 | return (Criteria) this;
140 | }
141 |
142 | public Criteria andEmpIdLessThanOrEqualTo(Integer value) {
143 | addCriterion("emp_id <=", value, "empId");
144 | return (Criteria) this;
145 | }
146 |
147 | public Criteria andEmpIdIn(List values) {
148 | addCriterion("emp_id in", values, "empId");
149 | return (Criteria) this;
150 | }
151 |
152 | public Criteria andEmpIdNotIn(List values) {
153 | addCriterion("emp_id not in", values, "empId");
154 | return (Criteria) this;
155 | }
156 |
157 | public Criteria andEmpIdBetween(Integer value1, Integer value2) {
158 | addCriterion("emp_id between", value1, value2, "empId");
159 | return (Criteria) this;
160 | }
161 |
162 | public Criteria andEmpIdNotBetween(Integer value1, Integer value2) {
163 | addCriterion("emp_id not between", value1, value2, "empId");
164 | return (Criteria) this;
165 | }
166 |
167 | public Criteria andEmpNameIsNull() {
168 | addCriterion("emp_name is null");
169 | return (Criteria) this;
170 | }
171 |
172 | public Criteria andEmpNameIsNotNull() {
173 | addCriterion("emp_name is not null");
174 | return (Criteria) this;
175 | }
176 |
177 | public Criteria andEmpNameEqualTo(String value) {
178 | addCriterion("emp_name =", value, "empName");
179 | return (Criteria) this;
180 | }
181 |
182 | public Criteria andEmpNameNotEqualTo(String value) {
183 | addCriterion("emp_name <>", value, "empName");
184 | return (Criteria) this;
185 | }
186 |
187 | public Criteria andEmpNameGreaterThan(String value) {
188 | addCriterion("emp_name >", value, "empName");
189 | return (Criteria) this;
190 | }
191 |
192 | public Criteria andEmpNameGreaterThanOrEqualTo(String value) {
193 | addCriterion("emp_name >=", value, "empName");
194 | return (Criteria) this;
195 | }
196 |
197 | public Criteria andEmpNameLessThan(String value) {
198 | addCriterion("emp_name <", value, "empName");
199 | return (Criteria) this;
200 | }
201 |
202 | public Criteria andEmpNameLessThanOrEqualTo(String value) {
203 | addCriterion("emp_name <=", value, "empName");
204 | return (Criteria) this;
205 | }
206 |
207 | public Criteria andEmpNameLike(String value) {
208 | addCriterion("emp_name like", value, "empName");
209 | return (Criteria) this;
210 | }
211 |
212 | public Criteria andEmpNameNotLike(String value) {
213 | addCriterion("emp_name not like", value, "empName");
214 | return (Criteria) this;
215 | }
216 |
217 | public Criteria andEmpNameIn(List values) {
218 | addCriterion("emp_name in", values, "empName");
219 | return (Criteria) this;
220 | }
221 |
222 | public Criteria andEmpNameNotIn(List values) {
223 | addCriterion("emp_name not in", values, "empName");
224 | return (Criteria) this;
225 | }
226 |
227 | public Criteria andEmpNameBetween(String value1, String value2) {
228 | addCriterion("emp_name between", value1, value2, "empName");
229 | return (Criteria) this;
230 | }
231 |
232 | public Criteria andEmpNameNotBetween(String value1, String value2) {
233 | addCriterion("emp_name not between", value1, value2, "empName");
234 | return (Criteria) this;
235 | }
236 |
237 | public Criteria andGederIsNull() {
238 | addCriterion("geder is null");
239 | return (Criteria) this;
240 | }
241 |
242 | public Criteria andGederIsNotNull() {
243 | addCriterion("geder is not null");
244 | return (Criteria) this;
245 | }
246 |
247 | public Criteria andGederEqualTo(String value) {
248 | addCriterion("geder =", value, "geder");
249 | return (Criteria) this;
250 | }
251 |
252 | public Criteria andGederNotEqualTo(String value) {
253 | addCriterion("geder <>", value, "geder");
254 | return (Criteria) this;
255 | }
256 |
257 | public Criteria andGederGreaterThan(String value) {
258 | addCriterion("geder >", value, "geder");
259 | return (Criteria) this;
260 | }
261 |
262 | public Criteria andGederGreaterThanOrEqualTo(String value) {
263 | addCriterion("geder >=", value, "geder");
264 | return (Criteria) this;
265 | }
266 |
267 | public Criteria andGederLessThan(String value) {
268 | addCriterion("geder <", value, "geder");
269 | return (Criteria) this;
270 | }
271 |
272 | public Criteria andGederLessThanOrEqualTo(String value) {
273 | addCriterion("geder <=", value, "geder");
274 | return (Criteria) this;
275 | }
276 |
277 | public Criteria andGederLike(String value) {
278 | addCriterion("geder like", value, "geder");
279 | return (Criteria) this;
280 | }
281 |
282 | public Criteria andGederNotLike(String value) {
283 | addCriterion("geder not like", value, "geder");
284 | return (Criteria) this;
285 | }
286 |
287 | public Criteria andGederIn(List values) {
288 | addCriterion("geder in", values, "geder");
289 | return (Criteria) this;
290 | }
291 |
292 | public Criteria andGederNotIn(List values) {
293 | addCriterion("geder not in", values, "geder");
294 | return (Criteria) this;
295 | }
296 |
297 | public Criteria andGederBetween(String value1, String value2) {
298 | addCriterion("geder between", value1, value2, "geder");
299 | return (Criteria) this;
300 | }
301 |
302 | public Criteria andGederNotBetween(String value1, String value2) {
303 | addCriterion("geder not between", value1, value2, "geder");
304 | return (Criteria) this;
305 | }
306 |
307 | public Criteria andEmailIsNull() {
308 | addCriterion("email is null");
309 | return (Criteria) this;
310 | }
311 |
312 | public Criteria andEmailIsNotNull() {
313 | addCriterion("email is not null");
314 | return (Criteria) this;
315 | }
316 |
317 | public Criteria andEmailEqualTo(String value) {
318 | addCriterion("email =", value, "email");
319 | return (Criteria) this;
320 | }
321 |
322 | public Criteria andEmailNotEqualTo(String value) {
323 | addCriterion("email <>", value, "email");
324 | return (Criteria) this;
325 | }
326 |
327 | public Criteria andEmailGreaterThan(String value) {
328 | addCriterion("email >", value, "email");
329 | return (Criteria) this;
330 | }
331 |
332 | public Criteria andEmailGreaterThanOrEqualTo(String value) {
333 | addCriterion("email >=", value, "email");
334 | return (Criteria) this;
335 | }
336 |
337 | public Criteria andEmailLessThan(String value) {
338 | addCriterion("email <", value, "email");
339 | return (Criteria) this;
340 | }
341 |
342 | public Criteria andEmailLessThanOrEqualTo(String value) {
343 | addCriterion("email <=", value, "email");
344 | return (Criteria) this;
345 | }
346 |
347 | public Criteria andEmailLike(String value) {
348 | addCriterion("email like", value, "email");
349 | return (Criteria) this;
350 | }
351 |
352 | public Criteria andEmailNotLike(String value) {
353 | addCriterion("email not like", value, "email");
354 | return (Criteria) this;
355 | }
356 |
357 | public Criteria andEmailIn(List values) {
358 | addCriterion("email in", values, "email");
359 | return (Criteria) this;
360 | }
361 |
362 | public Criteria andEmailNotIn(List values) {
363 | addCriterion("email not in", values, "email");
364 | return (Criteria) this;
365 | }
366 |
367 | public Criteria andEmailBetween(String value1, String value2) {
368 | addCriterion("email between", value1, value2, "email");
369 | return (Criteria) this;
370 | }
371 |
372 | public Criteria andEmailNotBetween(String value1, String value2) {
373 | addCriterion("email not between", value1, value2, "email");
374 | return (Criteria) this;
375 | }
376 |
377 | public Criteria andDIdIsNull() {
378 | addCriterion("d_id is null");
379 | return (Criteria) this;
380 | }
381 |
382 | public Criteria andDIdIsNotNull() {
383 | addCriterion("d_id is not null");
384 | return (Criteria) this;
385 | }
386 |
387 | public Criteria andDIdEqualTo(Integer value) {
388 | addCriterion("d_id =", value, "dId");
389 | return (Criteria) this;
390 | }
391 |
392 | public Criteria andDIdNotEqualTo(Integer value) {
393 | addCriterion("d_id <>", value, "dId");
394 | return (Criteria) this;
395 | }
396 |
397 | public Criteria andDIdGreaterThan(Integer value) {
398 | addCriterion("d_id >", value, "dId");
399 | return (Criteria) this;
400 | }
401 |
402 | public Criteria andDIdGreaterThanOrEqualTo(Integer value) {
403 | addCriterion("d_id >=", value, "dId");
404 | return (Criteria) this;
405 | }
406 |
407 | public Criteria andDIdLessThan(Integer value) {
408 | addCriterion("d_id <", value, "dId");
409 | return (Criteria) this;
410 | }
411 |
412 | public Criteria andDIdLessThanOrEqualTo(Integer value) {
413 | addCriterion("d_id <=", value, "dId");
414 | return (Criteria) this;
415 | }
416 |
417 | public Criteria andDIdIn(List values) {
418 | addCriterion("d_id in", values, "dId");
419 | return (Criteria) this;
420 | }
421 |
422 | public Criteria andDIdNotIn(List values) {
423 | addCriterion("d_id not in", values, "dId");
424 | return (Criteria) this;
425 | }
426 |
427 | public Criteria andDIdBetween(Integer value1, Integer value2) {
428 | addCriterion("d_id between", value1, value2, "dId");
429 | return (Criteria) this;
430 | }
431 |
432 | public Criteria andDIdNotBetween(Integer value1, Integer value2) {
433 | addCriterion("d_id not between", value1, value2, "dId");
434 | return (Criteria) this;
435 | }
436 | }
437 |
438 | public static class Criteria extends GeneratedCriteria {
439 |
440 | protected Criteria() {
441 | super();
442 | }
443 | }
444 |
445 | public static class Criterion {
446 | private String condition;
447 |
448 | private Object value;
449 |
450 | private Object secondValue;
451 |
452 | private boolean noValue;
453 |
454 | private boolean singleValue;
455 |
456 | private boolean betweenValue;
457 |
458 | private boolean listValue;
459 |
460 | private String typeHandler;
461 |
462 | public String getCondition() {
463 | return condition;
464 | }
465 |
466 | public Object getValue() {
467 | return value;
468 | }
469 |
470 | public Object getSecondValue() {
471 | return secondValue;
472 | }
473 |
474 | public boolean isNoValue() {
475 | return noValue;
476 | }
477 |
478 | public boolean isSingleValue() {
479 | return singleValue;
480 | }
481 |
482 | public boolean isBetweenValue() {
483 | return betweenValue;
484 | }
485 |
486 | public boolean isListValue() {
487 | return listValue;
488 | }
489 |
490 | public String getTypeHandler() {
491 | return typeHandler;
492 | }
493 |
494 | protected Criterion(String condition) {
495 | super();
496 | this.condition = condition;
497 | this.typeHandler = null;
498 | this.noValue = true;
499 | }
500 |
501 | protected Criterion(String condition, Object value, String typeHandler) {
502 | super();
503 | this.condition = condition;
504 | this.value = value;
505 | this.typeHandler = typeHandler;
506 | if (value instanceof List>) {
507 | this.listValue = true;
508 | } else {
509 | this.singleValue = true;
510 | }
511 | }
512 |
513 | protected Criterion(String condition, Object value) {
514 | this(condition, value, null);
515 | }
516 |
517 | protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
518 | super();
519 | this.condition = condition;
520 | this.value = value;
521 | this.secondValue = secondValue;
522 | this.typeHandler = typeHandler;
523 | this.betweenValue = true;
524 | }
525 |
526 | protected Criterion(String condition, Object value, Object secondValue) {
527 | this(condition, value, secondValue, null);
528 | }
529 | }
530 | }
--------------------------------------------------------------------------------
/src/main/webapp/static/bootstrap-3.3.7-dist/css/bootstrap-theme.min.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap v3.3.7 (http://getbootstrap.com)
3 | * Copyright 2011-2016 Twitter, Inc.
4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5 | */.btn-danger,.btn-default,.btn-info,.btn-primary,.btn-success,.btn-warning{text-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-success.active,.btn-success:active,.btn-warning.active,.btn-warning:active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-danger.disabled,.btn-danger[disabled],.btn-default.disabled,.btn-default[disabled],.btn-info.disabled,.btn-info[disabled],.btn-primary.disabled,.btn-primary[disabled],.btn-success.disabled,.btn-success[disabled],.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-danger,fieldset[disabled] .btn-default,fieldset[disabled] .btn-info,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-success,fieldset[disabled] .btn-warning{-webkit-box-shadow:none;box-shadow:none}.btn-danger .badge,.btn-default .badge,.btn-info .badge,.btn-primary .badge,.btn-success .badge,.btn-warning .badge{text-shadow:none}.btn.active,.btn:active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-o-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e0e0e0));background-image:linear-gradient(to bottom,#fff 0,#e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#dbdbdb;border-color:#ccc}.btn-default:focus,.btn-default:hover{background-color:#e0e0e0;background-position:0 -15px}.btn-default.active,.btn-default:active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#e0e0e0;background-image:none}.btn-primary{background-image:-webkit-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-o-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#265a88));background-image:linear-gradient(to bottom,#337ab7 0,#265a88 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#245580}.btn-primary:focus,.btn-primary:hover{background-color:#265a88;background-position:0 -15px}.btn-primary.active,.btn-primary:active{background-color:#265a88;border-color:#245580}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#265a88;background-image:none}.btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#419641));background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:focus,.btn-success:hover{background-color:#419641;background-position:0 -15px}.btn-success.active,.btn-success:active{background-color:#419641;border-color:#3e8f3e}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#419641;background-image:none}.btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#2aabd2));background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:focus,.btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.btn-info.active,.btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#2aabd2;background-image:none}.btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#eb9316));background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:focus,.btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.btn-warning.active,.btn-warning:active{background-color:#eb9316;border-color:#e38d13}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#eb9316;background-image:none}.btn-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c12e2a));background-image:linear-gradient(to bottom,#d9534f 0,#c12e2a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:focus,.btn-danger:hover{background-color:#c12e2a;background-position:0 -15px}.btn-danger.active,.btn-danger:active{background-color:#c12e2a;border-color:#b92c28}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#c12e2a;background-image:none}.img-thumbnail,.thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#2e6da4;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-o-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f8f8f8));background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-o-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dbdbdb),to(#e2e2e2));background-image:linear-gradient(to bottom,#dbdbdb 0,#e2e2e2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-o-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#222));background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-o-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#080808),to(#0f0f0f));background-image:linear-gradient(to bottom,#080808 0,#0f0f0f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0}@media (max-width:767px){.navbar .navbar-nav .open .dropdown-menu>.active>a,.navbar .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}}.alert{text-shadow:0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);background-repeat:repeat-x;border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#b9def0));background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);background-repeat:repeat-x;border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#f8efc0));background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);background-repeat:repeat-x;border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-o-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#e7c3c3));background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);background-repeat:repeat-x;border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#f5f5f5));background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x}.progress-bar{background-image:-webkit-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-o-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#286090));background-image:linear-gradient(to bottom,#337ab7 0,#286090 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);background-repeat:repeat-x}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#449d44));background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);background-repeat:repeat-x}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#31b0d5));background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);background-repeat:repeat-x}.progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#ec971f));background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);background-repeat:repeat-x}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c9302c));background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);background-repeat:repeat-x}.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{text-shadow:0 -1px 0 #286090;background-image:-webkit-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2b669a));background-image:linear-gradient(to bottom,#337ab7 0,#2b669a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);background-repeat:repeat-x;border-color:#2b669a}.list-group-item.active .badge,.list-group-item.active:focus .badge,.list-group-item.active:hover .badge{text-shadow:none}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#d0e9c6));background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);background-repeat:repeat-x}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#c4e3f3));background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);background-repeat:repeat-x}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#faf2cc));background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);background-repeat:repeat-x}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-o-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#ebcccc));background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);background-repeat:repeat-x}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#e8e8e8),to(#f5f5f5));background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x;border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)}
6 | /*# sourceMappingURL=bootstrap-theme.min.css.map */
--------------------------------------------------------------------------------
/src/main/webapp/static/bootstrap-3.3.7-dist/css/bootstrap-theme.min.css.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":["less/theme.less","less/mixins/vendor-prefixes.less","less/mixins/gradients.less","less/mixins/reset-filter.less"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Bootstrap v3.3.7 (http://getbootstrap.com)\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n//\n// Load core variables and mixins\n// --------------------------------------------------\n\n@import \"variables.less\";\n@import \"mixins.less\";\n\n\n//\n// Buttons\n// --------------------------------------------------\n\n// Common styles\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0,0,0,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n // Reset the shadow\n &:active,\n &.active {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n .box-shadow(none);\n }\n\n .badge {\n text-shadow: none;\n }\n}\n\n// Mixin for generating new styles\n.btn-styles(@btn-color: #555) {\n #gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%));\n .reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners; see https://github.com/twbs/bootstrap/issues/10620\n background-repeat: repeat-x;\n border-color: darken(@btn-color, 14%);\n\n &:hover,\n &:focus {\n background-color: darken(@btn-color, 12%);\n background-position: 0 -15px;\n }\n\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n border-color: darken(@btn-color, 14%);\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &,\n &:hover,\n &:focus,\n &.focus,\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n background-image: none;\n }\n }\n}\n\n// Common styles\n.btn {\n // Remove the gradient for the pressed/active state\n &:active,\n &.active {\n background-image: none;\n }\n}\n\n// Apply the mixin to the buttons\n.btn-default { .btn-styles(@btn-default-bg); text-shadow: 0 1px 0 #fff; border-color: #ccc; }\n.btn-primary { .btn-styles(@btn-primary-bg); }\n.btn-success { .btn-styles(@btn-success-bg); }\n.btn-info { .btn-styles(@btn-info-bg); }\n.btn-warning { .btn-styles(@btn-warning-bg); }\n.btn-danger { .btn-styles(@btn-danger-bg); }\n\n\n//\n// Images\n// --------------------------------------------------\n\n.thumbnail,\n.img-thumbnail {\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n\n\n//\n// Dropdowns\n// --------------------------------------------------\n\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%));\n background-color: darken(@dropdown-link-hover-bg, 5%);\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n background-color: darken(@dropdown-link-active-bg, 5%);\n}\n\n\n//\n// Navbar\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n #gradient > .vertical(@start-color: lighten(@navbar-default-bg, 10%); @end-color: @navbar-default-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n border-radius: @navbar-border-radius;\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: darken(@navbar-default-link-active-bg, 5%); @end-color: darken(@navbar-default-link-active-bg, 2%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.075));\n }\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255,255,255,.25);\n}\n\n// Inverted navbar\n.navbar-inverse {\n #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered; see https://github.com/twbs/bootstrap/issues/10257\n border-radius: @navbar-border-radius;\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: @navbar-inverse-link-active-bg; @end-color: lighten(@navbar-inverse-link-active-bg, 2.5%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.25));\n }\n\n .navbar-brand,\n .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0,0,0,.25);\n }\n}\n\n// Undo rounded corners in static and fixed navbars\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n\n// Fix active state of dropdown items in collapsed mode\n@media (max-width: @grid-float-breakpoint-max) {\n .navbar .navbar-nav .open .dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: #fff;\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n }\n }\n}\n\n\n//\n// Alerts\n// --------------------------------------------------\n\n// Common styles\n.alert {\n text-shadow: 0 1px 0 rgba(255,255,255,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05);\n .box-shadow(@shadow);\n}\n\n// Mixin for generating new styles\n.alert-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%));\n border-color: darken(@color, 15%);\n}\n\n// Apply the mixin to the alerts\n.alert-success { .alert-styles(@alert-success-bg); }\n.alert-info { .alert-styles(@alert-info-bg); }\n.alert-warning { .alert-styles(@alert-warning-bg); }\n.alert-danger { .alert-styles(@alert-danger-bg); }\n\n\n//\n// Progress bars\n// --------------------------------------------------\n\n// Give the progress background some depth\n.progress {\n #gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg)\n}\n\n// Mixin for generating new styles\n.progress-bar-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%));\n}\n\n// Apply the mixin to the progress bars\n.progress-bar { .progress-bar-styles(@progress-bar-bg); }\n.progress-bar-success { .progress-bar-styles(@progress-bar-success-bg); }\n.progress-bar-info { .progress-bar-styles(@progress-bar-info-bg); }\n.progress-bar-warning { .progress-bar-styles(@progress-bar-warning-bg); }\n.progress-bar-danger { .progress-bar-styles(@progress-bar-danger-bg); }\n\n// Reset the striped class because our mixins don't do multiple gradients and\n// the above custom styles override the new `.progress-bar-striped` in v3.2.0.\n.progress-bar-striped {\n #gradient > .striped();\n}\n\n\n//\n// List groups\n// --------------------------------------------------\n\n.list-group {\n border-radius: @border-radius-base;\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%);\n #gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%));\n border-color: darken(@list-group-active-border, 7.5%);\n\n .badge {\n text-shadow: none;\n }\n}\n\n\n//\n// Panels\n// --------------------------------------------------\n\n// Common styles\n.panel {\n .box-shadow(0 1px 2px rgba(0,0,0,.05));\n}\n\n// Mixin for generating new styles\n.panel-heading-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%));\n}\n\n// Apply the mixin to the panel headings only\n.panel-default > .panel-heading { .panel-heading-styles(@panel-default-heading-bg); }\n.panel-primary > .panel-heading { .panel-heading-styles(@panel-primary-heading-bg); }\n.panel-success > .panel-heading { .panel-heading-styles(@panel-success-heading-bg); }\n.panel-info > .panel-heading { .panel-heading-styles(@panel-info-heading-bg); }\n.panel-warning > .panel-heading { .panel-heading-styles(@panel-warning-heading-bg); }\n.panel-danger > .panel-heading { .panel-heading-styles(@panel-danger-heading-bg); }\n\n\n//\n// Wells\n// --------------------------------------------------\n\n.well {\n #gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg);\n border-color: darken(@well-bg, 10%);\n @shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They have been removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility) {\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","// Gradients\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n"]}
--------------------------------------------------------------------------------
/src/main/webapp/static/bootstrap-3.3.7-dist/css/bootstrap-theme.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap v3.3.7 (http://getbootstrap.com)
3 | * Copyright 2011-2016 Twitter, Inc.
4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5 | */
6 | .btn-default,
7 | .btn-primary,
8 | .btn-success,
9 | .btn-info,
10 | .btn-warning,
11 | .btn-danger {
12 | text-shadow: 0 -1px 0 rgba(0, 0, 0, .2);
13 | -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
14 | box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
15 | }
16 | .btn-default:active,
17 | .btn-primary:active,
18 | .btn-success:active,
19 | .btn-info:active,
20 | .btn-warning:active,
21 | .btn-danger:active,
22 | .btn-default.active,
23 | .btn-primary.active,
24 | .btn-success.active,
25 | .btn-info.active,
26 | .btn-warning.active,
27 | .btn-danger.active {
28 | -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
29 | box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
30 | }
31 | .btn-default.disabled,
32 | .btn-primary.disabled,
33 | .btn-success.disabled,
34 | .btn-info.disabled,
35 | .btn-warning.disabled,
36 | .btn-danger.disabled,
37 | .btn-default[disabled],
38 | .btn-primary[disabled],
39 | .btn-success[disabled],
40 | .btn-info[disabled],
41 | .btn-warning[disabled],
42 | .btn-danger[disabled],
43 | fieldset[disabled] .btn-default,
44 | fieldset[disabled] .btn-primary,
45 | fieldset[disabled] .btn-success,
46 | fieldset[disabled] .btn-info,
47 | fieldset[disabled] .btn-warning,
48 | fieldset[disabled] .btn-danger {
49 | -webkit-box-shadow: none;
50 | box-shadow: none;
51 | }
52 | .btn-default .badge,
53 | .btn-primary .badge,
54 | .btn-success .badge,
55 | .btn-info .badge,
56 | .btn-warning .badge,
57 | .btn-danger .badge {
58 | text-shadow: none;
59 | }
60 | .btn:active,
61 | .btn.active {
62 | background-image: none;
63 | }
64 | .btn-default {
65 | text-shadow: 0 1px 0 #fff;
66 | background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);
67 | background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);
68 | background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0));
69 | background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);
70 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);
71 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
72 | background-repeat: repeat-x;
73 | border-color: #dbdbdb;
74 | border-color: #ccc;
75 | }
76 | .btn-default:hover,
77 | .btn-default:focus {
78 | background-color: #e0e0e0;
79 | background-position: 0 -15px;
80 | }
81 | .btn-default:active,
82 | .btn-default.active {
83 | background-color: #e0e0e0;
84 | border-color: #dbdbdb;
85 | }
86 | .btn-default.disabled,
87 | .btn-default[disabled],
88 | fieldset[disabled] .btn-default,
89 | .btn-default.disabled:hover,
90 | .btn-default[disabled]:hover,
91 | fieldset[disabled] .btn-default:hover,
92 | .btn-default.disabled:focus,
93 | .btn-default[disabled]:focus,
94 | fieldset[disabled] .btn-default:focus,
95 | .btn-default.disabled.focus,
96 | .btn-default[disabled].focus,
97 | fieldset[disabled] .btn-default.focus,
98 | .btn-default.disabled:active,
99 | .btn-default[disabled]:active,
100 | fieldset[disabled] .btn-default:active,
101 | .btn-default.disabled.active,
102 | .btn-default[disabled].active,
103 | fieldset[disabled] .btn-default.active {
104 | background-color: #e0e0e0;
105 | background-image: none;
106 | }
107 | .btn-primary {
108 | background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);
109 | background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%);
110 | background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#265a88));
111 | background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%);
112 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);
113 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
114 | background-repeat: repeat-x;
115 | border-color: #245580;
116 | }
117 | .btn-primary:hover,
118 | .btn-primary:focus {
119 | background-color: #265a88;
120 | background-position: 0 -15px;
121 | }
122 | .btn-primary:active,
123 | .btn-primary.active {
124 | background-color: #265a88;
125 | border-color: #245580;
126 | }
127 | .btn-primary.disabled,
128 | .btn-primary[disabled],
129 | fieldset[disabled] .btn-primary,
130 | .btn-primary.disabled:hover,
131 | .btn-primary[disabled]:hover,
132 | fieldset[disabled] .btn-primary:hover,
133 | .btn-primary.disabled:focus,
134 | .btn-primary[disabled]:focus,
135 | fieldset[disabled] .btn-primary:focus,
136 | .btn-primary.disabled.focus,
137 | .btn-primary[disabled].focus,
138 | fieldset[disabled] .btn-primary.focus,
139 | .btn-primary.disabled:active,
140 | .btn-primary[disabled]:active,
141 | fieldset[disabled] .btn-primary:active,
142 | .btn-primary.disabled.active,
143 | .btn-primary[disabled].active,
144 | fieldset[disabled] .btn-primary.active {
145 | background-color: #265a88;
146 | background-image: none;
147 | }
148 | .btn-success {
149 | background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);
150 | background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);
151 | background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641));
152 | background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);
153 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);
154 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
155 | background-repeat: repeat-x;
156 | border-color: #3e8f3e;
157 | }
158 | .btn-success:hover,
159 | .btn-success:focus {
160 | background-color: #419641;
161 | background-position: 0 -15px;
162 | }
163 | .btn-success:active,
164 | .btn-success.active {
165 | background-color: #419641;
166 | border-color: #3e8f3e;
167 | }
168 | .btn-success.disabled,
169 | .btn-success[disabled],
170 | fieldset[disabled] .btn-success,
171 | .btn-success.disabled:hover,
172 | .btn-success[disabled]:hover,
173 | fieldset[disabled] .btn-success:hover,
174 | .btn-success.disabled:focus,
175 | .btn-success[disabled]:focus,
176 | fieldset[disabled] .btn-success:focus,
177 | .btn-success.disabled.focus,
178 | .btn-success[disabled].focus,
179 | fieldset[disabled] .btn-success.focus,
180 | .btn-success.disabled:active,
181 | .btn-success[disabled]:active,
182 | fieldset[disabled] .btn-success:active,
183 | .btn-success.disabled.active,
184 | .btn-success[disabled].active,
185 | fieldset[disabled] .btn-success.active {
186 | background-color: #419641;
187 | background-image: none;
188 | }
189 | .btn-info {
190 | background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
191 | background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
192 | background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2));
193 | background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);
194 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);
195 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
196 | background-repeat: repeat-x;
197 | border-color: #28a4c9;
198 | }
199 | .btn-info:hover,
200 | .btn-info:focus {
201 | background-color: #2aabd2;
202 | background-position: 0 -15px;
203 | }
204 | .btn-info:active,
205 | .btn-info.active {
206 | background-color: #2aabd2;
207 | border-color: #28a4c9;
208 | }
209 | .btn-info.disabled,
210 | .btn-info[disabled],
211 | fieldset[disabled] .btn-info,
212 | .btn-info.disabled:hover,
213 | .btn-info[disabled]:hover,
214 | fieldset[disabled] .btn-info:hover,
215 | .btn-info.disabled:focus,
216 | .btn-info[disabled]:focus,
217 | fieldset[disabled] .btn-info:focus,
218 | .btn-info.disabled.focus,
219 | .btn-info[disabled].focus,
220 | fieldset[disabled] .btn-info.focus,
221 | .btn-info.disabled:active,
222 | .btn-info[disabled]:active,
223 | fieldset[disabled] .btn-info:active,
224 | .btn-info.disabled.active,
225 | .btn-info[disabled].active,
226 | fieldset[disabled] .btn-info.active {
227 | background-color: #2aabd2;
228 | background-image: none;
229 | }
230 | .btn-warning {
231 | background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
232 | background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
233 | background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316));
234 | background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);
235 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);
236 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
237 | background-repeat: repeat-x;
238 | border-color: #e38d13;
239 | }
240 | .btn-warning:hover,
241 | .btn-warning:focus {
242 | background-color: #eb9316;
243 | background-position: 0 -15px;
244 | }
245 | .btn-warning:active,
246 | .btn-warning.active {
247 | background-color: #eb9316;
248 | border-color: #e38d13;
249 | }
250 | .btn-warning.disabled,
251 | .btn-warning[disabled],
252 | fieldset[disabled] .btn-warning,
253 | .btn-warning.disabled:hover,
254 | .btn-warning[disabled]:hover,
255 | fieldset[disabled] .btn-warning:hover,
256 | .btn-warning.disabled:focus,
257 | .btn-warning[disabled]:focus,
258 | fieldset[disabled] .btn-warning:focus,
259 | .btn-warning.disabled.focus,
260 | .btn-warning[disabled].focus,
261 | fieldset[disabled] .btn-warning.focus,
262 | .btn-warning.disabled:active,
263 | .btn-warning[disabled]:active,
264 | fieldset[disabled] .btn-warning:active,
265 | .btn-warning.disabled.active,
266 | .btn-warning[disabled].active,
267 | fieldset[disabled] .btn-warning.active {
268 | background-color: #eb9316;
269 | background-image: none;
270 | }
271 | .btn-danger {
272 | background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
273 | background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
274 | background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a));
275 | background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);
276 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);
277 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
278 | background-repeat: repeat-x;
279 | border-color: #b92c28;
280 | }
281 | .btn-danger:hover,
282 | .btn-danger:focus {
283 | background-color: #c12e2a;
284 | background-position: 0 -15px;
285 | }
286 | .btn-danger:active,
287 | .btn-danger.active {
288 | background-color: #c12e2a;
289 | border-color: #b92c28;
290 | }
291 | .btn-danger.disabled,
292 | .btn-danger[disabled],
293 | fieldset[disabled] .btn-danger,
294 | .btn-danger.disabled:hover,
295 | .btn-danger[disabled]:hover,
296 | fieldset[disabled] .btn-danger:hover,
297 | .btn-danger.disabled:focus,
298 | .btn-danger[disabled]:focus,
299 | fieldset[disabled] .btn-danger:focus,
300 | .btn-danger.disabled.focus,
301 | .btn-danger[disabled].focus,
302 | fieldset[disabled] .btn-danger.focus,
303 | .btn-danger.disabled:active,
304 | .btn-danger[disabled]:active,
305 | fieldset[disabled] .btn-danger:active,
306 | .btn-danger.disabled.active,
307 | .btn-danger[disabled].active,
308 | fieldset[disabled] .btn-danger.active {
309 | background-color: #c12e2a;
310 | background-image: none;
311 | }
312 | .thumbnail,
313 | .img-thumbnail {
314 | -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
315 | box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
316 | }
317 | .dropdown-menu > li > a:hover,
318 | .dropdown-menu > li > a:focus {
319 | background-color: #e8e8e8;
320 | background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
321 | background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
322 | background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
323 | background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
324 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
325 | background-repeat: repeat-x;
326 | }
327 | .dropdown-menu > .active > a,
328 | .dropdown-menu > .active > a:hover,
329 | .dropdown-menu > .active > a:focus {
330 | background-color: #2e6da4;
331 | background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
332 | background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
333 | background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
334 | background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
335 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
336 | background-repeat: repeat-x;
337 | }
338 | .navbar-default {
339 | background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%);
340 | background-image: -o-linear-gradient(top, #fff 0%, #f8f8f8 100%);
341 | background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f8f8f8));
342 | background-image: linear-gradient(to bottom, #fff 0%, #f8f8f8 100%);
343 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);
344 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
345 | background-repeat: repeat-x;
346 | border-radius: 4px;
347 | -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
348 | box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
349 | }
350 | .navbar-default .navbar-nav > .open > a,
351 | .navbar-default .navbar-nav > .active > a {
352 | background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
353 | background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
354 | background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2));
355 | background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);
356 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);
357 | background-repeat: repeat-x;
358 | -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
359 | box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
360 | }
361 | .navbar-brand,
362 | .navbar-nav > li > a {
363 | text-shadow: 0 1px 0 rgba(255, 255, 255, .25);
364 | }
365 | .navbar-inverse {
366 | background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);
367 | background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%);
368 | background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222));
369 | background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%);
370 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);
371 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
372 | background-repeat: repeat-x;
373 | border-radius: 4px;
374 | }
375 | .navbar-inverse .navbar-nav > .open > a,
376 | .navbar-inverse .navbar-nav > .active > a {
377 | background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);
378 | background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);
379 | background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f));
380 | background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);
381 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);
382 | background-repeat: repeat-x;
383 | -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
384 | box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
385 | }
386 | .navbar-inverse .navbar-brand,
387 | .navbar-inverse .navbar-nav > li > a {
388 | text-shadow: 0 -1px 0 rgba(0, 0, 0, .25);
389 | }
390 | .navbar-static-top,
391 | .navbar-fixed-top,
392 | .navbar-fixed-bottom {
393 | border-radius: 0;
394 | }
395 | @media (max-width: 767px) {
396 | .navbar .navbar-nav .open .dropdown-menu > .active > a,
397 | .navbar .navbar-nav .open .dropdown-menu > .active > a:hover,
398 | .navbar .navbar-nav .open .dropdown-menu > .active > a:focus {
399 | color: #fff;
400 | background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
401 | background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
402 | background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
403 | background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
404 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
405 | background-repeat: repeat-x;
406 | }
407 | }
408 | .alert {
409 | text-shadow: 0 1px 0 rgba(255, 255, 255, .2);
410 | -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
411 | box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
412 | }
413 | .alert-success {
414 | background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
415 | background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
416 | background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc));
417 | background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);
418 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);
419 | background-repeat: repeat-x;
420 | border-color: #b2dba1;
421 | }
422 | .alert-info {
423 | background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
424 | background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
425 | background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0));
426 | background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);
427 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);
428 | background-repeat: repeat-x;
429 | border-color: #9acfea;
430 | }
431 | .alert-warning {
432 | background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
433 | background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
434 | background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0));
435 | background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);
436 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);
437 | background-repeat: repeat-x;
438 | border-color: #f5e79e;
439 | }
440 | .alert-danger {
441 | background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
442 | background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
443 | background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3));
444 | background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);
445 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);
446 | background-repeat: repeat-x;
447 | border-color: #dca7a7;
448 | }
449 | .progress {
450 | background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
451 | background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
452 | background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5));
453 | background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);
454 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);
455 | background-repeat: repeat-x;
456 | }
457 | .progress-bar {
458 | background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);
459 | background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%);
460 | background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#286090));
461 | background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%);
462 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);
463 | background-repeat: repeat-x;
464 | }
465 | .progress-bar-success {
466 | background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);
467 | background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);
468 | background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44));
469 | background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);
470 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);
471 | background-repeat: repeat-x;
472 | }
473 | .progress-bar-info {
474 | background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
475 | background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
476 | background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5));
477 | background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);
478 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);
479 | background-repeat: repeat-x;
480 | }
481 | .progress-bar-warning {
482 | background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
483 | background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
484 | background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f));
485 | background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);
486 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);
487 | background-repeat: repeat-x;
488 | }
489 | .progress-bar-danger {
490 | background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);
491 | background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);
492 | background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c));
493 | background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);
494 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);
495 | background-repeat: repeat-x;
496 | }
497 | .progress-bar-striped {
498 | background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
499 | background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
500 | background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
501 | }
502 | .list-group {
503 | border-radius: 4px;
504 | -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
505 | box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
506 | }
507 | .list-group-item.active,
508 | .list-group-item.active:hover,
509 | .list-group-item.active:focus {
510 | text-shadow: 0 -1px 0 #286090;
511 | background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);
512 | background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);
513 | background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2b669a));
514 | background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);
515 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);
516 | background-repeat: repeat-x;
517 | border-color: #2b669a;
518 | }
519 | .list-group-item.active .badge,
520 | .list-group-item.active:hover .badge,
521 | .list-group-item.active:focus .badge {
522 | text-shadow: none;
523 | }
524 | .panel {
525 | -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
526 | box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
527 | }
528 | .panel-default > .panel-heading {
529 | background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
530 | background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
531 | background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
532 | background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
533 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
534 | background-repeat: repeat-x;
535 | }
536 | .panel-primary > .panel-heading {
537 | background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
538 | background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
539 | background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
540 | background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
541 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
542 | background-repeat: repeat-x;
543 | }
544 | .panel-success > .panel-heading {
545 | background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
546 | background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
547 | background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6));
548 | background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);
549 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);
550 | background-repeat: repeat-x;
551 | }
552 | .panel-info > .panel-heading {
553 | background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
554 | background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
555 | background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3));
556 | background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);
557 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);
558 | background-repeat: repeat-x;
559 | }
560 | .panel-warning > .panel-heading {
561 | background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
562 | background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
563 | background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc));
564 | background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);
565 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);
566 | background-repeat: repeat-x;
567 | }
568 | .panel-danger > .panel-heading {
569 | background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
570 | background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
571 | background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc));
572 | background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);
573 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);
574 | background-repeat: repeat-x;
575 | }
576 | .well {
577 | background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
578 | background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
579 | background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5));
580 | background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);
581 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);
582 | background-repeat: repeat-x;
583 | border-color: #dcdcdc;
584 | -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
585 | box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
586 | }
587 | /*# sourceMappingURL=bootstrap-theme.css.map */
588 |
--------------------------------------------------------------------------------