Repository: Zoutao6/examination_system- Branch: master Commit: 1596c8ddbd03 Files: 156 Total size: 692.2 KB Directory structure: gitextract_8iu6na0l/ ├── .classpath ├── .project ├── .settings/ │ ├── .jsdtscope │ ├── org.eclipse.jdt.core.prefs │ ├── org.eclipse.m2e.core.prefs │ ├── org.eclipse.wst.common.component │ ├── org.eclipse.wst.common.project.facet.core.xml │ ├── org.eclipse.wst.jsdt.ui.superType.container │ ├── org.eclipse.wst.jsdt.ui.superType.name │ └── org.eclipse.wst.validation.prefs ├── README.md ├── pom.xml ├── sql/ │ └── examination_system.sql ├── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── system/ │ │ │ ├── controller/ │ │ │ │ ├── AdminController.java │ │ │ │ ├── LoginController.java │ │ │ │ ├── RestPasswordController.java │ │ │ │ ├── StudentController.java │ │ │ │ ├── TeacherController.java │ │ │ │ └── converter/ │ │ │ │ └── CustomDateConverter.java │ │ │ ├── exception/ │ │ │ │ ├── CustomException.java │ │ │ │ └── CustomExceptionResolver.java │ │ │ ├── mapper/ │ │ │ │ ├── CollegeMapper.java │ │ │ │ ├── CollegeMapper.xml │ │ │ │ ├── CourseMapper.java │ │ │ │ ├── CourseMapper.xml │ │ │ │ ├── CourseMapperCustom.java │ │ │ │ ├── CourseMapperCustom.xml │ │ │ │ ├── RoleMapper.java │ │ │ │ ├── RoleMapper.xml │ │ │ │ ├── SelectedcourseMapper.java │ │ │ │ ├── SelectedcourseMapper.xml │ │ │ │ ├── StudentMapper.java │ │ │ │ ├── StudentMapper.xml │ │ │ │ ├── StudentMapperCustom.java │ │ │ │ ├── StudentMapperCustom.xml │ │ │ │ ├── TeacherMapper.java │ │ │ │ ├── TeacherMapper.xml │ │ │ │ ├── TeacherMapperCustom.java │ │ │ │ ├── TeacherMapperCustom.xml │ │ │ │ ├── UserloginMapper.java │ │ │ │ ├── UserloginMapper.xml │ │ │ │ ├── UserloginMapperCustom.java │ │ │ │ └── UserloginMapperCustom.xml │ │ │ ├── po/ │ │ │ │ ├── College.java │ │ │ │ ├── CollegeCustom.java │ │ │ │ ├── CollegeExample.java │ │ │ │ ├── Course.java │ │ │ │ ├── CourseCustom.java │ │ │ │ ├── CourseExample.java │ │ │ │ ├── PagingVO.java │ │ │ │ ├── Role.java │ │ │ │ ├── RoleExample.java │ │ │ │ ├── SelectedCourseCustom.java │ │ │ │ ├── Selectedcourse.java │ │ │ │ ├── SelectedcourseExample.java │ │ │ │ ├── Student.java │ │ │ │ ├── StudentCustom.java │ │ │ │ ├── StudentExample.java │ │ │ │ ├── Teacher.java │ │ │ │ ├── TeacherCustom.java │ │ │ │ ├── TeacherExample.java │ │ │ │ ├── Userlogin.java │ │ │ │ ├── UserloginCustom.java │ │ │ │ └── UserloginExample.java │ │ │ ├── realm/ │ │ │ │ └── LoginRealm.java │ │ │ └── service/ │ │ │ ├── CollegeService.java │ │ │ ├── CourseService.java │ │ │ ├── RoleService.java │ │ │ ├── SelectedCourseService.java │ │ │ ├── StudentService.java │ │ │ ├── TeacherService.java │ │ │ ├── UserloginService.java │ │ │ └── impl/ │ │ │ ├── CollegeServiceImpl.java │ │ │ ├── CourseServiceImpl.java │ │ │ ├── RoleServiceImpl.java │ │ │ ├── SelectedCourseServiceImpl.java │ │ │ ├── StudentServiceImpl.java │ │ │ ├── TeacherServiceImpl.java │ │ │ └── UserloginServiceImpl.java │ │ ├── resources/ │ │ │ ├── log4j.properties │ │ │ ├── mybatis/ │ │ │ │ └── mybatis.cfg.xml │ │ │ ├── mysql.properties │ │ │ └── spring/ │ │ │ ├── applicationContext-dao.xml │ │ │ ├── applicationContext-service.xml │ │ │ ├── applicationContext-shiro.xml │ │ │ ├── applicationContext-trsaction.xml │ │ │ └── springmvc.xml │ │ └── webapp/ │ │ ├── WEB-INF/ │ │ │ ├── classes/ │ │ │ │ └── spring/ │ │ │ │ ├── applicationContext-dao.xml │ │ │ │ ├── applicationContext-service.xml │ │ │ │ ├── applicationContext-shiro.xml │ │ │ │ └── applicationContext-trsaction.xml │ │ │ ├── jsp/ │ │ │ │ ├── admin/ │ │ │ │ │ ├── addCourse.jsp │ │ │ │ │ ├── addStudent.jsp │ │ │ │ │ ├── addTeacher.jsp │ │ │ │ │ ├── editCourse.jsp │ │ │ │ │ ├── editStudent.jsp │ │ │ │ │ ├── editTeacher.jsp │ │ │ │ │ ├── menu.jsp │ │ │ │ │ ├── passwordRest.jsp │ │ │ │ │ ├── showCourse.jsp │ │ │ │ │ ├── showStudent.jsp │ │ │ │ │ ├── showTeacher.jsp │ │ │ │ │ ├── top.jsp │ │ │ │ │ └── userPasswordRest.jsp │ │ │ │ ├── error.jsp │ │ │ │ ├── student/ │ │ │ │ │ ├── menu.jsp │ │ │ │ │ ├── overCourse.jsp │ │ │ │ │ ├── passwordRest.jsp │ │ │ │ │ ├── selectCourse.jsp │ │ │ │ │ ├── showCourse.jsp │ │ │ │ │ └── top.jsp │ │ │ │ ├── success.jsp │ │ │ │ └── teacher/ │ │ │ │ ├── mark.jsp │ │ │ │ ├── menu.jsp │ │ │ │ ├── passwordRest.jsp │ │ │ │ ├── showCourse.jsp │ │ │ │ ├── showGrade.jsp │ │ │ │ └── top.jsp │ │ │ └── web.xml │ │ ├── css/ │ │ │ ├── bootstrap-theme.css │ │ │ └── bootstrap.css │ │ ├── js/ │ │ │ ├── bootstrap.js │ │ │ └── npm.js │ │ └── login.jsp │ └── test/ │ └── test/ │ └── com/ │ └── system/ │ ├── mapper/ │ │ ├── CourseMapperCustomTest.java │ │ ├── StudentMapperCustomTest.java │ │ ├── StudentMapperTest.java │ │ ├── TeacherMapperCustomTest.java │ │ └── UserloginMapperCustomTest.java │ └── service/ │ └── impl/ │ ├── CourseServiceImplTest.java │ ├── SelectedCourseServiceImplTest.java │ ├── StudentServiceImplTest.java │ ├── TeacherServiceImplTest.java │ └── UserloginServiceImplTest.java └── target/ ├── classes/ │ ├── com/ │ │ └── system/ │ │ └── mapper/ │ │ ├── CollegeMapper.xml │ │ ├── CourseMapper.xml │ │ ├── CourseMapperCustom.xml │ │ ├── RoleMapper.xml │ │ ├── SelectedcourseMapper.xml │ │ ├── StudentMapper.xml │ │ ├── StudentMapperCustom.xml │ │ ├── TeacherMapper.xml │ │ ├── TeacherMapperCustom.xml │ │ ├── UserloginMapper.xml │ │ └── UserloginMapperCustom.xml │ ├── log4j.properties │ ├── mybatis/ │ │ └── mybatis.cfg.xml │ ├── mysql.properties │ └── spring/ │ ├── applicationContext-dao.xml │ ├── applicationContext-service.xml │ ├── applicationContext-shiro.xml │ ├── applicationContext-trsaction.xml │ └── springmvc.xml └── m2e-wtp/ └── web-resources/ └── META-INF/ ├── MANIFEST.MF └── maven/ └── com.jacey/ └── Examination_System/ ├── pom.properties └── pom.xml ================================================ FILE CONTENTS ================================================ ================================================ FILE: .classpath ================================================ ================================================ FILE: .project ================================================ Examination_System org.eclipse.jdt.core.javabuilder org.eclipse.wst.common.project.facet.core.builder org.eclipse.wst.validation.validationbuilder org.eclipse.m2e.core.maven2Builder org.eclipse.jem.workbench.JavaEMFNature org.eclipse.wst.common.modulecore.ModuleCoreNature org.eclipse.jdt.core.javanature org.eclipse.m2e.core.maven2Nature org.eclipse.wst.common.project.facet.core.nature org.eclipse.wst.jsdt.core.jsNature ================================================ FILE: .settings/.jsdtscope ================================================ ================================================ FILE: .settings/org.eclipse.jdt.core.prefs ================================================ eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve org.eclipse.jdt.core.compiler.compliance=1.8 org.eclipse.jdt.core.compiler.debug.lineNumber=generate org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.sourceFile=generate org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning org.eclipse.jdt.core.compiler.source=1.8 ================================================ FILE: .settings/org.eclipse.m2e.core.prefs ================================================ activeProfiles= eclipse.preferences.version=1 resolveWorkspaceProjects=true version=1 ================================================ FILE: .settings/org.eclipse.wst.common.component ================================================ ================================================ FILE: .settings/org.eclipse.wst.common.project.facet.core.xml ================================================ ================================================ FILE: .settings/org.eclipse.wst.jsdt.ui.superType.container ================================================ org.eclipse.wst.jsdt.launching.baseBrowserLibrary ================================================ FILE: .settings/org.eclipse.wst.jsdt.ui.superType.name ================================================ Window ================================================ FILE: .settings/org.eclipse.wst.validation.prefs ================================================ disabled=06target eclipse.preferences.version=1 ================================================ FILE: README.md ================================================ # examination_system 教务管理系统 这是个基于SSM+Bootstrap的教务查询系统,是一个教务查询系统. 做了关于数据库的增删改查练习。 用来熟悉SSM的整合开发。 ## 使用技术 IOC容器:Spring Web框架:SpringMVC ORM框架:Mybatis 数据源:C3P0 日志:log4j 前端框架:Bootstrap 运行环境 jdk8+tomcat8+mysql+Eclipse+maven 项目技术: spring+spring mvc+mybatis+bootstrap+jquery 前人栽树后人乘凉,最开始系统是IDEA开发,目前该版本修改为了eclipse版本,增加和删除了某些功能。 欢迎下载。 ## 具体页面: 登录页: ![Alt text](https://github.com/IsZouTao/examination_system-/raw/master/images/1.png) 管理员页:管理员账户:admin+123 ![替代文字] (https://github.com/IsZouTao/examination_system-/raw/master/images/2.png) 学生页:学生登录:10001 + 123 ![Alt text](https://github.com/IsZouTao/examination_system-/raw/master/images/3.png) 老师页:教师登录:1001+123 ![Alt text](https://github.com/IsZouTao/examination_system-/raw/master/images/4.png) 一些功能: ![Alt text](https://github.com/IsZouTao/examination_system-/raw/master/images/5.png) ================================================ FILE: pom.xml ================================================ 4.0.0 com.jacey Examination_System war 1.0-SNAPSHOT Examination_System Maven Webapp http://maven.apache.org junit junit 4.12 test javax.servlet javax.servlet-api 3.1.0 provided javax.servlet jsp-api 2.0 provided org.apache.shiro shiro-core 1.2.3 org.apache.shiro shiro-web 1.2.3 org.apache.shiro shiro-spring 1.2.3 org.springframework spring-context 4.3.8.RELEASE org.springframework spring-web 4.3.8.RELEASE org.springframework spring-webmvc 4.3.7.RELEASE org.springframework spring-tx 4.3.8.RELEASE org.springframework spring-aop 4.3.9.RELEASE org.aspectj aspectjweaver 1.8.10 org.springframework spring-jdbc 4.2.5.RELEASE javax.servlet jstl 1.2 log4j log4j 1.2.17 org.mybatis mybatis 3.4.1 org.mybatis.generator mybatis-generator-core 1.3.5 org.mybatis mybatis-spring 1.3.0 org.hibernate hibernate-validator 5.4.1.Final com.mchange c3p0 0.9.5.2 mysql mysql-connector-java 5.1.41 org.jetbrains annotations-java5 RELEASE Examination_System org.apache.maven.plugins maven-compiler-plugin 3.1 1.8 1.8 ================================================ FILE: sql/examination_system.sql ================================================ /* Navicat MySQL Data Transfer Source Server : MySQL Source Server Version : 50716 Source Host : localhost:3306 Source Database : examination_system Target Server Type : MYSQL Target Server Version : 50716 File Encoding : 65001 Date: 2017-07-08 00:03:38 */ SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for college -- ---------------------------- DROP TABLE IF EXISTS `college`; CREATE TABLE `college` ( `collegeID` int(11) NOT NULL, `collegeName` varchar(200) NOT NULL COMMENT '课程名', PRIMARY KEY (`collegeID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of college -- ---------------------------- INSERT INTO `college` VALUES ('1', '计算机系'); INSERT INTO `college` VALUES ('2', '设计系'); INSERT INTO `college` VALUES ('3', '财经系'); -- ---------------------------- -- Table structure for course -- ---------------------------- DROP TABLE IF EXISTS `course`; CREATE TABLE `course` ( `courseID` int(11) NOT NULL, `courseName` varchar(200) NOT NULL COMMENT '课程名称', `teacherID` int(11) NOT NULL, `courseTime` varchar(200) DEFAULT NULL COMMENT '开课时间', `classRoom` varchar(200) DEFAULT NULL COMMENT '开课地点', `courseWeek` int(200) DEFAULT NULL COMMENT '学时', `courseType` varchar(20) DEFAULT NULL COMMENT '课程类型', `collegeID` int(11) NOT NULL COMMENT '所属院系', `score` int(11) NOT NULL COMMENT '学分', PRIMARY KEY (`courseID`), KEY `collegeID` (`collegeID`), KEY `teacherID` (`teacherID`), CONSTRAINT `course_ibfk_1` FOREIGN KEY (`collegeID`) REFERENCES `college` (`collegeID`), CONSTRAINT `course_ibfk_2` FOREIGN KEY (`teacherID`) REFERENCES `teacher` (`userID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of course -- ---------------------------- INSERT INTO `course` VALUES ('1', 'C语言程序设计', '1001', '周二', '科401', '18', '必修课', '1', '3'); INSERT INTO `course` VALUES ('2', 'Python爬虫技巧', '1001', '周四', 'X402', '18', '必修课', '1', '3'); INSERT INTO `course` VALUES ('3', '数据结构', '1001', '周四', '科401', '18', '必修课', '1', '2'); INSERT INTO `course` VALUES ('4', 'Java程序设计', '1002', '周五', '科401', '18', '必修课', '1', '2'); INSERT INTO `course` VALUES ('5', '英语', '1002', '周四', 'X302', '18', '必修课', '2', '2'); INSERT INTO `course` VALUES ('6', '服装设计', '1003', '周一', '科401', '18', '选修课', '2', '2'); -- ---------------------------- -- Table structure for role -- ---------------------------- DROP TABLE IF EXISTS `role`; CREATE TABLE `role` ( `roleID` int(11) NOT NULL, `roleName` varchar(20) NOT NULL, `permissions` varchar(255) DEFAULT NULL COMMENT '权限', PRIMARY KEY (`roleID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of role -- ---------------------------- INSERT INTO `role` VALUES ('0', 'admin', null); INSERT INTO `role` VALUES ('1', 'teacher', null); INSERT INTO `role` VALUES ('2', 'student', null); -- ---------------------------- -- Table structure for selectedcourse -- ---------------------------- DROP TABLE IF EXISTS `selectedcourse`; CREATE TABLE `selectedcourse` ( `courseID` int(11) NOT NULL, `studentID` int(11) NOT NULL, `mark` int(11) DEFAULT NULL COMMENT '成绩', KEY `courseID` (`courseID`), KEY `studentID` (`studentID`), CONSTRAINT `selectedcourse_ibfk_1` FOREIGN KEY (`courseID`) REFERENCES `course` (`courseID`), CONSTRAINT `selectedcourse_ibfk_2` FOREIGN KEY (`studentID`) REFERENCES `student` (`userID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of selectedcourse -- ---------------------------- INSERT INTO `selectedcourse` VALUES ('2', '10001', '12'); INSERT INTO `selectedcourse` VALUES ('1', '10001', '95'); INSERT INTO `selectedcourse` VALUES ('1', '10002', '66'); INSERT INTO `selectedcourse` VALUES ('1', '10003', null); INSERT INTO `selectedcourse` VALUES ('2', '10003', '99'); INSERT INTO `selectedcourse` VALUES ('5', '10001', null); INSERT INTO `selectedcourse` VALUES ('3', '10001', null); -- ---------------------------- -- Table structure for student -- ---------------------------- DROP TABLE IF EXISTS `student`; CREATE TABLE `student` ( `userID` int(11) NOT NULL AUTO_INCREMENT, `userName` varchar(200) NOT NULL, `sex` varchar(20) DEFAULT NULL, `birthYear` date DEFAULT NULL COMMENT '出生日期', `grade` date DEFAULT NULL COMMENT '入学时间', `collegeID` int(11) NOT NULL COMMENT '院系id', PRIMARY KEY (`userID`), KEY `collegeID` (`collegeID`), CONSTRAINT `student_ibfk_1` FOREIGN KEY (`collegeID`) REFERENCES `college` (`collegeID`) ) ENGINE=InnoDB AUTO_INCREMENT=10007 DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of student -- ---------------------------- INSERT INTO `student` VALUES ('10001', '小黄', '男', '1996-09-02', '2015-09-02', '1'); INSERT INTO `student` VALUES ('10002', '小米', '女', '1995-09-14', '2015-09-02', '3'); INSERT INTO `student` VALUES ('10003', '小陈', '女', '1996-09-02', '2015-09-02', '2'); INSERT INTO `student` VALUES ('10004', '小华', '男', '1996-09-02', '2015-09-02', '2'); INSERT INTO `student` VALUES ('10005', '小左', '女', '1996-09-02', '2015-09-02', '2'); INSERT INTO `student` VALUES ('10006', '小拉', '女', '1996-09-02', '2015-09-02', '1'); -- ---------------------------- -- Table structure for teacher -- ---------------------------- DROP TABLE IF EXISTS `teacher`; CREATE TABLE `teacher` ( `userID` int(11) NOT NULL AUTO_INCREMENT, `userName` varchar(200) NOT NULL, `sex` varchar(20) DEFAULT NULL, `birthYear` date NOT NULL, `degree` varchar(20) DEFAULT NULL COMMENT '学历', `title` varchar(255) DEFAULT NULL COMMENT '职称', `grade` date DEFAULT NULL COMMENT '入职时间', `collegeID` int(11) NOT NULL COMMENT '院系', PRIMARY KEY (`userID`), KEY `collegeID` (`collegeID`), CONSTRAINT `teacher_ibfk_1` FOREIGN KEY (`collegeID`) REFERENCES `college` (`collegeID`) ) ENGINE=InnoDB AUTO_INCREMENT=1004 DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of teacher -- ---------------------------- INSERT INTO `teacher` VALUES ('1001', '刘老师', '女', '1990-03-08', '硕士', '副教授', '2015-09-02', '2'); INSERT INTO `teacher` VALUES ('1002', '张老师', '男', '1996-09-02', '本科', '普通教师', '2015-09-02', '1'); INSERT INTO `teacher` VALUES ('1003', '软老师', '男', '1996-09-02', '硕士', '助教', '2017-07-07', '1'); -- ---------------------------- -- Table structure for userlogin -- ---------------------------- DROP TABLE IF EXISTS `userlogin`; CREATE TABLE `userlogin` ( `userID` int(11) NOT NULL AUTO_INCREMENT, `userName` varchar(200) NOT NULL, `password` varchar(200) NOT NULL, `role` int(11) NOT NULL DEFAULT '2' COMMENT '角色权限', PRIMARY KEY (`userID`), KEY `role` (`role`), CONSTRAINT `userlogin_ibfk_1` FOREIGN KEY (`role`) REFERENCES `role` (`roleID`) ) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of userlogin -- ---------------------------- INSERT INTO `userlogin` VALUES ('1', 'admin', '123', '0'); INSERT INTO `userlogin` VALUES ('8', '10001', '123', '2'); INSERT INTO `userlogin` VALUES ('9', '10002', '123', '2'); INSERT INTO `userlogin` VALUES ('10', '10003', '123', '2'); INSERT INTO `userlogin` VALUES ('11', '10005', '123', '2'); INSERT INTO `userlogin` VALUES ('12', '10004', '123', '2'); INSERT INTO `userlogin` VALUES ('13', '10006', '123', '2'); INSERT INTO `userlogin` VALUES ('14', '1001', '123', '1'); INSERT INTO `userlogin` VALUES ('15', '1002', '123', '1'); INSERT INTO `userlogin` VALUES ('16', '1003', '123', '1'); SET FOREIGN_KEY_CHECKS=1; ================================================ FILE: src/main/java/com/system/controller/AdminController.java ================================================ package com.system.controller; import com.system.exception.CustomException; import com.system.po.*; import com.system.service.*; import org.apache.shiro.SecurityUtils; import org.apache.shiro.subject.Subject; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import javax.annotation.Resource; import java.util.List; /** * Created by Jacey on 2017/6/30. */ @Controller @RequestMapping("/admin") public class AdminController { @Resource(name = "studentServiceImpl") private StudentService studentService; @Resource(name = "teacherServiceImpl") private TeacherService teacherService; @Resource(name = "courseServiceImpl") private CourseService courseService; @Resource(name = "collegeServiceImpl") private CollegeService collegeService; @Resource(name = "userloginServiceImpl") private UserloginService userloginService; /*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<学生操作>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/ // 学生信息显示 @RequestMapping("/showStudent") public String showStudent(Model model, Integer page) throws Exception { List list = null; //页码对象 PagingVO pagingVO = new PagingVO(); //设置总页数 pagingVO.setTotalCount(studentService.getCountStudent()); if (page == null || page == 0) { pagingVO.setToPageNo(1); list = studentService.findByPaging(1); } else { pagingVO.setToPageNo(page); list = studentService.findByPaging(page); } model.addAttribute("studentList", list); model.addAttribute("pagingVO", pagingVO); return "admin/showStudent"; } // 添加学生信息页面显示 @RequestMapping(value = "/addStudent", method = {RequestMethod.GET}) public String addStudentUI(Model model) throws Exception { List list = collegeService.finAll(); model.addAttribute("collegeList", list); return "admin/addStudent"; } // 添加学生信息操作 @RequestMapping(value = "/addStudent", method = {RequestMethod.POST}) public String addStudent(StudentCustom studentCustom, Model model) throws Exception { Boolean result = studentService.save(studentCustom); if (!result) { model.addAttribute("message", "学号重复"); return "error"; } //添加成功后,也添加到登录表 Userlogin userlogin = new Userlogin(); userlogin.setUsername(studentCustom.getUserid().toString()); userlogin.setPassword("123"); userlogin.setRole(2); userloginService.save(userlogin); //重定向 return "redirect:/admin/showStudent"; } // 修改学生信息页面显示 @RequestMapping(value = "/editStudent", method = {RequestMethod.GET}) public String editStudentUI(Integer id, Model model) throws Exception { if (id == null) { //加入没有带学生id就进来的话就返回学生显示页面 return "redirect:/admin/showStudent"; } StudentCustom studentCustom = studentService.findById(id); if (studentCustom == null) { throw new CustomException("未找到该名学生"); } List list = collegeService.finAll(); model.addAttribute("collegeList", list); model.addAttribute("student", studentCustom); return "admin/editStudent"; } // 修改学生信息处理 @RequestMapping(value = "/editStudent", method = {RequestMethod.POST}) public String editStudent(StudentCustom studentCustom) throws Exception { studentService.updataById(studentCustom.getUserid(), studentCustom); //重定向 return "redirect:/admin/showStudent"; } // 删除学生 @RequestMapping(value = "/removeStudent", method = {RequestMethod.GET} ) private String removeStudent(Integer id) throws Exception { if (id == null) { //加入没有带学生id就进来的话就返回学生显示页面 return "admin/showStudent"; } studentService.removeById(id); userloginService.removeByName(id.toString()); return "redirect:/admin/showStudent"; } // 搜索学生 @RequestMapping(value = "selectStudent", method = {RequestMethod.POST}) private String selectStudent(String findByName, Model model) throws Exception { List list = studentService.findByName(findByName); model.addAttribute("studentList", list); return "admin/showStudent"; } /*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<教师操作>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/ // 教师页面显示 @RequestMapping("/showTeacher") public String showTeacher(Model model, Integer page) throws Exception { List list = null; //页码对象 PagingVO pagingVO = new PagingVO(); //设置总页数 pagingVO.setTotalCount(teacherService.getCountTeacher()); if (page == null || page == 0) { pagingVO.setToPageNo(1); list = teacherService.findByPaging(1); } else { pagingVO.setToPageNo(page); list = teacherService.findByPaging(page); } model.addAttribute("teacherList", list); model.addAttribute("pagingVO", pagingVO); return "admin/showTeacher"; } // 添加教师信息 @RequestMapping(value = "/addTeacher", method = {RequestMethod.GET}) public String addTeacherUI(Model model) throws Exception { List list = collegeService.finAll(); model.addAttribute("collegeList", list); return "admin/addTeacher"; } // 添加教师信息处理 @RequestMapping(value = "/addTeacher", method = {RequestMethod.POST}) public String addTeacher(TeacherCustom teacherCustom, Model model) throws Exception { Boolean result = teacherService.save(teacherCustom); if (!result) { model.addAttribute("message", "工号重复"); return "error"; } //添加成功后,也添加到登录表 Userlogin userlogin = new Userlogin(); userlogin.setUsername(teacherCustom.getUserid().toString()); userlogin.setPassword("123"); userlogin.setRole(1); userloginService.save(userlogin); //重定向 return "redirect:/admin/showTeacher"; } // 修改教师信息页面显示 @RequestMapping(value = "/editTeacher", method = {RequestMethod.GET}) public String editTeacherUI(Integer id, Model model) throws Exception { if (id == null) { return "redirect:/admin/showTeacher"; } TeacherCustom teacherCustom = teacherService.findById(id); if (teacherCustom == null) { throw new CustomException("未找到该名学生"); } List list = collegeService.finAll(); model.addAttribute("collegeList", list); model.addAttribute("teacher", teacherCustom); return "admin/editTeacher"; } // 修改教师信息页面处理 @RequestMapping(value = "/editTeacher", method = {RequestMethod.POST}) public String editTeacher(TeacherCustom teacherCustom) throws Exception { teacherService.updateById(teacherCustom.getUserid(), teacherCustom); //重定向 return "redirect:/admin/showTeacher"; } //删除教师 @RequestMapping("/removeTeacher") public String removeTeacher(Integer id) throws Exception { if (id == null) { //加入没有带教师id就进来的话就返回教师显示页面 return "admin/showTeacher"; } teacherService.removeById(id); userloginService.removeByName(id.toString()); return "redirect:/admin/showTeacher"; } //搜索教师 @RequestMapping(value = "selectTeacher", method = {RequestMethod.POST}) private String selectTeacher(String findByName, Model model) throws Exception { List list = teacherService.findByName(findByName); model.addAttribute("teacherList", list); return "admin/showTeacher"; } /*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<课程操作>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/ // 课程信息显示 @RequestMapping("/showCourse") public String showCourse(Model model, Integer page) throws Exception { List list = null; //页码对象 PagingVO pagingVO = new PagingVO(); //设置总页数 pagingVO.setTotalCount(courseService.getCountCouse()); if (page == null || page == 0) { pagingVO.setToPageNo(1); list = courseService.findByPaging(1); } else { pagingVO.setToPageNo(page); list = courseService.findByPaging(page); } model.addAttribute("courseList", list); model.addAttribute("pagingVO", pagingVO); return "admin/showCourse"; } //添加课程 @RequestMapping(value = "/addCourse", method = {RequestMethod.GET}) public String addCourseUI(Model model) throws Exception { List list = teacherService.findAll(); List collegeList = collegeService.finAll(); model.addAttribute("collegeList", collegeList); model.addAttribute("teacherList", list); return "admin/addCourse"; } // 添加课程信息处理 @RequestMapping(value = "/addCourse", method = {RequestMethod.POST}) public String addCourse(CourseCustom courseCustom, Model model) throws Exception { Boolean result = courseService.save(courseCustom); if (!result) { model.addAttribute("message", "课程号重复"); return "error"; } //重定向 return "redirect:/admin/showCourse"; } // 修改教师信息页面显示 @RequestMapping(value = "/editCourse", method = {RequestMethod.GET}) public String editCourseUI(Integer id, Model model) throws Exception { if (id == null) { return "redirect:/admin/showCourse"; } CourseCustom courseCustom = courseService.findById(id); if (courseCustom == null) { throw new CustomException("未找到该课程"); } List list = teacherService.findAll(); List collegeList = collegeService.finAll(); model.addAttribute("teacherList", list); model.addAttribute("collegeList", collegeList); model.addAttribute("course", courseCustom); return "admin/editCourse"; } // 修改教师信息页面处理 @RequestMapping(value = "/editCourse", method = {RequestMethod.POST}) public String editCourse(CourseCustom courseCustom) throws Exception { courseService.upadteById(courseCustom.getCourseid(), courseCustom); //重定向 return "redirect:/admin/showCourse"; } // 删除课程信息 @RequestMapping("/removeCourse") public String removeCourse(Integer id) throws Exception { if (id == null) { //加入没有带教师id就进来的话就返回教师显示页面 return "admin/showCourse"; } courseService.removeById(id); return "redirect:/admin/showCourse"; } //搜索课程 @RequestMapping(value = "selectCourse", method = {RequestMethod.POST}) private String selectCourse(String findByName, Model model) throws Exception { List list = courseService.findByName(findByName); model.addAttribute("courseList", list); return "admin/showCourse"; } /*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<其他操作>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/ // 普通用户账号密码重置 @RequestMapping("/userPasswordRest") public String userPasswordRestUI() throws Exception { return "admin/userPasswordRest"; } // 普通用户账号密码重置处理 @RequestMapping(value = "/userPasswordRest", method = {RequestMethod.POST}) public String userPasswordRest(Userlogin userlogin) throws Exception { Userlogin u = userloginService.findByName(userlogin.getUsername()); if (u != null) { if (u.getRole() == 0) { throw new CustomException("该账户为管理员账户,没法修改"); } u.setPassword(userlogin.getPassword()); userloginService.updateByName(userlogin.getUsername(), u); } else { throw new CustomException("没找到该用户"); } return "admin/userPasswordRest"; } // 本账户密码重置 @RequestMapping("/passwordRest") public String passwordRestUI() throws Exception { return "admin/passwordRest"; } } ================================================ FILE: src/main/java/com/system/controller/LoginController.java ================================================ package com.system.controller; import com.system.po.Userlogin; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.UsernamePasswordToken; import org.apache.shiro.subject.Subject; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; /** * Created by Jacey on 2017/6/30. */ @Controller public class LoginController { //登录跳转 @RequestMapping(value = "/login", method = {RequestMethod.GET}) public String loginUI() throws Exception { return "../../login"; } //登录表单处理 @RequestMapping(value = "/login", method = {RequestMethod.POST}) public String login(Userlogin userlogin) throws Exception { //Shiro实现登录 UsernamePasswordToken token = new UsernamePasswordToken(userlogin.getUsername(), userlogin.getPassword()); Subject subject = SecurityUtils.getSubject(); //如果获取不到用户名就是登录失败,但登录失败的话,会直接抛出异常 subject.login(token); if (subject.hasRole("admin")) { return "redirect:/admin/showStudent"; } else if (subject.hasRole("teacher")) { return "redirect:/teacher/showCourse"; } else if (subject.hasRole("student")) { return "redirect:/student/showCourse"; } return "/login"; } } ================================================ FILE: src/main/java/com/system/controller/RestPasswordController.java ================================================ package com.system.controller; import com.system.exception.CustomException; import com.system.po.Userlogin; import com.system.service.UserloginService; import org.apache.shiro.SecurityUtils; import org.apache.shiro.subject.Subject; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import javax.annotation.Resource; /** * Created by Jacey on 2017/7/6. */ @Controller public class RestPasswordController { @Resource(name = "userloginServiceImpl") private UserloginService userloginService; // 本账户密码重置 @RequestMapping(value = "/passwordRest", method = {RequestMethod.POST}) public String passwordRest(String oldPassword, String password1) throws Exception { Subject subject = SecurityUtils.getSubject(); String username = (String) subject.getPrincipal(); Userlogin userlogin = userloginService.findByName(username); if (!oldPassword.equals(userlogin.getPassword())) { throw new CustomException("旧密码不正确"); } else { userlogin.setPassword(password1); userloginService.updateByName(username, userlogin); } return "redirect:/logout"; } } ================================================ FILE: src/main/java/com/system/controller/StudentController.java ================================================ package com.system.controller; import com.system.exception.CustomException; import com.system.po.*; import com.system.service.CourseService; import com.system.service.SelectedCourseService; import com.system.service.StudentService; import org.apache.shiro.SecurityUtils; import org.apache.shiro.subject.Subject; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import javax.annotation.Resource; import java.util.List; /** * Created by Jacey on 2017/7/5. */ @Controller @RequestMapping(value = "/student") public class StudentController { @Resource(name = "courseServiceImpl") private CourseService courseService; @Resource(name = "studentServiceImpl") private StudentService studentService; @Resource(name = "selectedCourseServiceImpl") private SelectedCourseService selectedCourseService; @RequestMapping(value = "/showCourse") public String stuCourseShow(Model model, Integer page) throws Exception { List list = null; //页码对象 PagingVO pagingVO = new PagingVO(); //设置总页数 pagingVO.setTotalCount(courseService.getCountCouse()); if (page == null || page == 0) { pagingVO.setToPageNo(1); list = courseService.findByPaging(1); } else { pagingVO.setToPageNo(page); list = courseService.findByPaging(page); } model.addAttribute("courseList", list); model.addAttribute("pagingVO", pagingVO); return "student/showCourse"; } // 选课操作 @RequestMapping(value = "/stuSelectedCourse") public String stuSelectedCourse(int id) throws Exception { //获取当前用户名 Subject subject = SecurityUtils.getSubject(); String username = (String) subject.getPrincipal(); SelectedCourseCustom selectedCourseCustom = new SelectedCourseCustom(); selectedCourseCustom.setCourseid(id); selectedCourseCustom.setStudentid(Integer.parseInt(username)); SelectedCourseCustom s = selectedCourseService.findOne(selectedCourseCustom); if (s == null) { selectedCourseService.save(selectedCourseCustom); } else { throw new CustomException("该门课程你已经选了,不能再选"); } return "redirect:/student/selectedCourse"; } // 退课操作 @RequestMapping(value = "/outCourse") public String outCourse(int id) throws Exception { Subject subject = SecurityUtils.getSubject(); String username = (String) subject.getPrincipal(); SelectedCourseCustom selectedCourseCustom = new SelectedCourseCustom(); selectedCourseCustom.setCourseid(id); selectedCourseCustom.setStudentid(Integer.parseInt(username)); selectedCourseService.remove(selectedCourseCustom); return "redirect:/student/selectedCourse"; } // 已选课程 @RequestMapping(value = "/selectedCourse") public String selectedCourse(Model model) throws Exception { //获取当前用户名 Subject subject = SecurityUtils.getSubject(); StudentCustom studentCustom = studentService.findStudentAndSelectCourseListByName((String) subject.getPrincipal()); List list = studentCustom.getSelectedCourseList(); model.addAttribute("selectedCourseList", list); return "student/selectCourse"; } // 已修课程 @RequestMapping(value = "/overCourse") public String overCourse(Model model) throws Exception { //获取当前用户名 Subject subject = SecurityUtils.getSubject(); StudentCustom studentCustom = studentService.findStudentAndSelectCourseListByName((String) subject.getPrincipal()); List list = studentCustom.getSelectedCourseList(); model.addAttribute("selectedCourseList", list); return "student/overCourse"; } //修改密码 @RequestMapping(value = "/passwordRest") public String passwordRest() throws Exception { return "student/passwordRest"; } } ================================================ FILE: src/main/java/com/system/controller/TeacherController.java ================================================ package com.system.controller; import com.system.exception.CustomException; import com.system.po.*; import com.system.service.CourseService; import com.system.service.SelectedCourseService; import com.system.service.StudentService; import com.system.service.TeacherService; import org.apache.shiro.SecurityUtils; import org.apache.shiro.subject.Subject; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import javax.annotation.Resource; import java.util.List; /** * Created by Jacey on 2017/7/6. */ @Controller @RequestMapping(value = "/teacher") public class TeacherController { @Resource(name = "teacherServiceImpl") private TeacherService teacherService; @Resource(name = "courseServiceImpl") private CourseService courseService; @Resource(name = "selectedCourseServiceImpl") private SelectedCourseService selectedCourseService; // 显示我的课程 @RequestMapping(value = "/showCourse") public String stuCourseShow(Model model) throws Exception { Subject subject = SecurityUtils.getSubject(); String username = (String) subject.getPrincipal(); List list = courseService.findByTeacherID(Integer.parseInt(username)); model.addAttribute("courseList", list); return "teacher/showCourse"; } // 显示成绩 @RequestMapping(value = "/gradeCourse") public String gradeCourse(Integer id, Model model) throws Exception { if (id == null) { return ""; } List list = selectedCourseService.findByCourseID(id); model.addAttribute("selectedCourseList", list); return "teacher/showGrade"; } // 打分 @RequestMapping(value = "/mark", method = {RequestMethod.GET}) public String markUI(SelectedCourseCustom scc, Model model) throws Exception { SelectedCourseCustom selectedCourseCustom = selectedCourseService.findOne(scc); model.addAttribute("selectedCourse", selectedCourseCustom); return "teacher/mark"; } // 打分 @RequestMapping(value = "/mark", method = {RequestMethod.POST}) public String mark(SelectedCourseCustom scc) throws Exception { selectedCourseService.updataOne(scc); return "redirect:/teacher/gradeCourse?id="+scc.getCourseid(); } //修改密码 @RequestMapping(value = "/passwordRest") public String passwordRest() throws Exception { return "teacher/passwordRest"; } } ================================================ FILE: src/main/java/com/system/controller/converter/CustomDateConverter.java ================================================ package com.system.controller.converter; import org.springframework.core.convert.converter.Converter; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; /** * 参数绑定 字符串日期转换器 */ public class CustomDateConverter implements Converter { public Date convert(String s) { //实现 将日期串转成日期类型(格式是yyyy-MM-dd) SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); try { //转成直接返回 return simpleDateFormat.parse(s); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } //如果参数绑定失败返回null return null; } } ================================================ FILE: src/main/java/com/system/exception/CustomException.java ================================================ package com.system.exception; /** * 系统自定义异常类,针对预期异常,需要在程序中抛出此类的异常 */ public class CustomException extends Exception { //异常信息 public String message; public CustomException(String message) { super(message); this.message=message; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } } ================================================ FILE: src/main/java/com/system/exception/CustomExceptionResolver.java ================================================ package com.system.exception; import org.apache.shiro.authc.IncorrectCredentialsException; import org.apache.shiro.authc.UnknownAccountException; import org.springframework.web.servlet.HandlerExceptionResolver; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * 全局异常处理器 * springmvc提供一个HandlerExceptionResolver接口 * 只要实现该接口,并配置到spring 容器里,该类就能 * 成为默认全局异常处理类 * * 全局异常处理器只有一个,配置多个也没用。 */ public class CustomExceptionResolver implements HandlerExceptionResolver { public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) { ModelAndView modelAndView = new ModelAndView(); CustomException customException; if (e instanceof CustomException) { customException = (CustomException)e; } else if (e instanceof UnknownAccountException) { //用户名错误异常 modelAndView.addObject("message", "没有该用户"); modelAndView.setViewName("error"); return modelAndView; } else if (e instanceof IncorrectCredentialsException) { //用户名错误异常 modelAndView.addObject("message", "密码错误"); modelAndView.setViewName("error"); return modelAndView; } else { customException = new CustomException("未知错误"); } //错误信息 String message = customException.getMessage(); //错误信息传递和错误页面跳转 modelAndView.addObject("message", message); modelAndView.setViewName("error"); return modelAndView; } } ================================================ FILE: src/main/java/com/system/mapper/CollegeMapper.java ================================================ package com.system.mapper; import com.system.po.College; import com.system.po.CollegeExample; import org.apache.ibatis.annotations.Param; import java.util.List; public interface CollegeMapper { int countByExample(CollegeExample example); int deleteByExample(CollegeExample example); int deleteByPrimaryKey(Integer collegeid); int insert(College record); int insertSelective(College record); List selectByExample(CollegeExample example); College selectByPrimaryKey(Integer collegeid); int updateByExampleSelective(@Param("record") College record, @Param("example") CollegeExample example); int updateByExample(@Param("record") College record, @Param("example") CollegeExample example); int updateByPrimaryKeySelective(College record); int updateByPrimaryKey(College record); } ================================================ FILE: src/main/java/com/system/mapper/CollegeMapper.xml ================================================ and ${criterion.condition} and ${criterion.condition} #{criterion.value} and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} and ${criterion.condition} #{listItem} and ${criterion.condition} and ${criterion.condition} #{criterion.value} and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} and ${criterion.condition} #{listItem} collegeID, collegeName delete from college where collegeID = #{collegeid,jdbcType=INTEGER} delete from college insert into college (collegeID, collegeName) values (#{collegeid,jdbcType=INTEGER}, #{collegename,jdbcType=VARCHAR}) insert into college collegeID, collegeName, #{collegeid,jdbcType=INTEGER}, #{collegename,jdbcType=VARCHAR}, update college collegeID = #{record.collegeid,jdbcType=INTEGER}, collegeName = #{record.collegename,jdbcType=VARCHAR}, update college set collegeID = #{record.collegeid,jdbcType=INTEGER}, collegeName = #{record.collegename,jdbcType=VARCHAR} update college collegeName = #{collegename,jdbcType=VARCHAR}, where collegeID = #{collegeid,jdbcType=INTEGER} update college set collegeName = #{collegename,jdbcType=VARCHAR} where collegeID = #{collegeid,jdbcType=INTEGER} ================================================ FILE: src/main/java/com/system/mapper/CourseMapper.java ================================================ package com.system.mapper; import com.system.po.Course; import com.system.po.CourseExample; import org.apache.ibatis.annotations.Param; import java.util.List; public interface CourseMapper { int countByExample(CourseExample example); int deleteByExample(CourseExample example); int deleteByPrimaryKey(Integer courseid); int insert(Course record); int insertSelective(Course record); List selectByExample(CourseExample example); Course selectByPrimaryKey(Integer courseid); int updateByExampleSelective(@Param("record") Course record, @Param("example") CourseExample example); int updateByExample(@Param("record") Course record, @Param("example") CourseExample example); int updateByPrimaryKeySelective(Course record); int updateByPrimaryKey(Course record); } ================================================ FILE: src/main/java/com/system/mapper/CourseMapper.xml ================================================ and ${criterion.condition} and ${criterion.condition} #{criterion.value} and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} and ${criterion.condition} #{listItem} and ${criterion.condition} and ${criterion.condition} #{criterion.value} and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} and ${criterion.condition} #{listItem} courseID, courseName, teacherID, courseTime, classRoom, courseWeek, courseType, collegeID, score delete from course where courseID = #{courseid,jdbcType=INTEGER} delete from course insert into course (courseID, courseName, teacherID, courseTime, classRoom, courseWeek, courseType, collegeID, score ) values (#{courseid,jdbcType=INTEGER}, #{coursename,jdbcType=VARCHAR}, #{teacherid,jdbcType=INTEGER}, #{coursetime,jdbcType=VARCHAR}, #{classroom,jdbcType=VARCHAR}, #{courseweek,jdbcType=INTEGER}, #{coursetype,jdbcType=VARCHAR}, #{collegeid,jdbcType=INTEGER}, #{score,jdbcType=INTEGER} ) insert into course courseID, courseName, teacherID, courseTime, classRoom, courseWeek, courseType, collegeID, score, #{courseid,jdbcType=INTEGER}, #{coursename,jdbcType=VARCHAR}, #{teacherid,jdbcType=INTEGER}, #{coursetime,jdbcType=VARCHAR}, #{classroom,jdbcType=VARCHAR}, #{courseweek,jdbcType=INTEGER}, #{coursetype,jdbcType=VARCHAR}, #{collegeid,jdbcType=INTEGER}, #{score,jdbcType=INTEGER}, update course courseID = #{record.courseid,jdbcType=INTEGER}, courseName = #{record.coursename,jdbcType=VARCHAR}, teacherID = #{record.teacherid,jdbcType=INTEGER}, courseTime = #{record.coursetime,jdbcType=VARCHAR}, classRoom = #{record.classroom,jdbcType=VARCHAR}, courseWeek = #{record.courseweek,jdbcType=INTEGER}, courseType = #{record.coursetype,jdbcType=VARCHAR}, collegeID = #{record.collegeid,jdbcType=INTEGER}, score = #{record.score,jdbcType=INTEGER}, update course set courseID = #{record.courseid,jdbcType=INTEGER}, courseName = #{record.coursename,jdbcType=VARCHAR}, teacherID = #{record.teacherid,jdbcType=INTEGER}, courseTime = #{record.coursetime,jdbcType=VARCHAR}, classRoom = #{record.classroom,jdbcType=VARCHAR}, courseWeek = #{record.courseweek,jdbcType=INTEGER}, courseType = #{record.coursetype,jdbcType=VARCHAR}, collegeID = #{record.collegeid,jdbcType=INTEGER}, score = #{record.score,jdbcType=INTEGER} update course courseName = #{coursename,jdbcType=VARCHAR}, teacherID = #{teacherid,jdbcType=INTEGER}, courseTime = #{coursetime,jdbcType=VARCHAR}, classRoom = #{classroom,jdbcType=VARCHAR}, courseWeek = #{courseweek,jdbcType=INTEGER}, courseType = #{coursetype,jdbcType=VARCHAR}, collegeID = #{collegeid,jdbcType=INTEGER}, score = #{score,jdbcType=INTEGER}, where courseID = #{courseid,jdbcType=INTEGER} update course set courseName = #{coursename,jdbcType=VARCHAR}, teacherID = #{teacherid,jdbcType=INTEGER}, courseTime = #{coursetime,jdbcType=VARCHAR}, classRoom = #{classroom,jdbcType=VARCHAR}, courseWeek = #{courseweek,jdbcType=INTEGER}, courseType = #{coursetype,jdbcType=VARCHAR}, collegeID = #{collegeid,jdbcType=INTEGER}, score = #{score,jdbcType=INTEGER} where courseID = #{courseid,jdbcType=INTEGER} ================================================ FILE: src/main/java/com/system/mapper/CourseMapperCustom.java ================================================ package com.system.mapper; import com.system.po.CourseCustom; import com.system.po.PagingVO; import java.util.List; /** * Created by Jacey on 2017/6/29. */ public interface CourseMapperCustom { //分页查询学生信息 List findByPaging(PagingVO pagingVO) throws Exception; } ================================================ FILE: src/main/java/com/system/mapper/CourseMapperCustom.xml ================================================ ================================================ FILE: src/main/java/com/system/mapper/RoleMapper.java ================================================ package com.system.mapper; import com.system.po.Role; import com.system.po.RoleExample; import org.apache.ibatis.annotations.Param; import java.util.List; public interface RoleMapper { int countByExample(RoleExample example); int deleteByExample(RoleExample example); int deleteByPrimaryKey(Integer roleid); int insert(Role record); int insertSelective(Role record); List selectByExample(RoleExample example); Role selectByPrimaryKey(Integer roleid); int updateByExampleSelective(@Param("record") Role record, @Param("example") RoleExample example); int updateByExample(@Param("record") Role record, @Param("example") RoleExample example); int updateByPrimaryKeySelective(Role record); int updateByPrimaryKey(Role record); } ================================================ FILE: src/main/java/com/system/mapper/RoleMapper.xml ================================================ and ${criterion.condition} and ${criterion.condition} #{criterion.value} and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} and ${criterion.condition} #{listItem} and ${criterion.condition} and ${criterion.condition} #{criterion.value} and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} and ${criterion.condition} #{listItem} roleID, roleName, permissions delete from role where roleID = #{roleid,jdbcType=INTEGER} delete from role insert into role (roleID, roleName, permissions ) values (#{roleid,jdbcType=INTEGER}, #{rolename,jdbcType=VARCHAR}, #{permissions,jdbcType=VARCHAR} ) insert into role roleID, roleName, permissions, #{roleid,jdbcType=INTEGER}, #{rolename,jdbcType=VARCHAR}, #{permissions,jdbcType=VARCHAR}, update role roleID = #{record.roleid,jdbcType=INTEGER}, roleName = #{record.rolename,jdbcType=VARCHAR}, permissions = #{record.permissions,jdbcType=VARCHAR}, update role set roleID = #{record.roleid,jdbcType=INTEGER}, roleName = #{record.rolename,jdbcType=VARCHAR}, permissions = #{record.permissions,jdbcType=VARCHAR} update role roleName = #{rolename,jdbcType=VARCHAR}, permissions = #{permissions,jdbcType=VARCHAR}, where roleID = #{roleid,jdbcType=INTEGER} update role set roleName = #{rolename,jdbcType=VARCHAR}, permissions = #{permissions,jdbcType=VARCHAR} where roleID = #{roleid,jdbcType=INTEGER} ================================================ FILE: src/main/java/com/system/mapper/SelectedcourseMapper.java ================================================ package com.system.mapper; import com.system.po.Selectedcourse; import com.system.po.SelectedcourseExample; import org.apache.ibatis.annotations.Param; import java.util.List; public interface SelectedcourseMapper { int countByExample(SelectedcourseExample example); int deleteByExample(SelectedcourseExample example); int insert(Selectedcourse record); int insertSelective(Selectedcourse record); List selectByExample(SelectedcourseExample example); int updateByExampleSelective(@Param("record") Selectedcourse record, @Param("example") SelectedcourseExample example); int updateByExample(@Param("record") Selectedcourse record, @Param("example") SelectedcourseExample example); } ================================================ FILE: src/main/java/com/system/mapper/SelectedcourseMapper.xml ================================================ and ${criterion.condition} and ${criterion.condition} #{criterion.value} and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} and ${criterion.condition} #{listItem} and ${criterion.condition} and ${criterion.condition} #{criterion.value} and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} and ${criterion.condition} #{listItem} courseID, studentID, mark delete from selectedcourse insert into selectedcourse (courseID, studentID, mark ) values (#{courseid,jdbcType=INTEGER}, #{studentid,jdbcType=INTEGER}, #{mark,jdbcType=INTEGER} ) insert into selectedcourse courseID, studentID, mark, #{courseid,jdbcType=INTEGER}, #{studentid,jdbcType=INTEGER}, #{mark,jdbcType=INTEGER}, update selectedcourse courseID = #{record.courseid,jdbcType=INTEGER}, studentID = #{record.studentid,jdbcType=INTEGER}, mark = #{record.mark,jdbcType=INTEGER}, update selectedcourse set courseID = #{record.courseid,jdbcType=INTEGER}, studentID = #{record.studentid,jdbcType=INTEGER}, mark = #{record.mark,jdbcType=INTEGER} ================================================ FILE: src/main/java/com/system/mapper/StudentMapper.java ================================================ package com.system.mapper; import com.system.po.Student; import com.system.po.StudentExample; import org.apache.ibatis.annotations.Param; import java.util.List; public interface StudentMapper { int countByExample(StudentExample example); int deleteByExample(StudentExample example); int deleteByPrimaryKey(Integer userid); int insert(Student record); int insertSelective(Student record); List selectByExample(StudentExample example); Student selectByPrimaryKey(Integer userid); int updateByExampleSelective(@Param("record") Student record, @Param("example") StudentExample example); int updateByExample(@Param("record") Student record, @Param("example") StudentExample example); int updateByPrimaryKeySelective(Student record); int updateByPrimaryKey(Student record); } ================================================ FILE: src/main/java/com/system/mapper/StudentMapper.xml ================================================ and ${criterion.condition} and ${criterion.condition} #{criterion.value} and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} and ${criterion.condition} #{listItem} and ${criterion.condition} and ${criterion.condition} #{criterion.value} and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} and ${criterion.condition} #{listItem} userID, userName, sex, birthYear, grade, collegeID delete from student where userID = #{userid,jdbcType=INTEGER} delete from student insert into student (userID, userName, sex, birthYear, grade, collegeID ) values (#{userid,jdbcType=INTEGER}, #{username,jdbcType=VARCHAR}, #{sex,jdbcType=VARCHAR}, #{birthyear,jdbcType=DATE}, #{grade,jdbcType=DATE}, #{collegeid,jdbcType=INTEGER} ) insert into student userID, userName, sex, birthYear, grade, collegeID, #{userid,jdbcType=INTEGER}, #{username,jdbcType=VARCHAR}, #{sex,jdbcType=VARCHAR}, #{birthyear,jdbcType=DATE}, #{grade,jdbcType=DATE}, #{collegeid,jdbcType=INTEGER}, update student userID = #{record.userid,jdbcType=INTEGER}, userName = #{record.username,jdbcType=VARCHAR}, sex = #{record.sex,jdbcType=VARCHAR}, birthYear = #{record.birthyear,jdbcType=DATE}, grade = #{record.grade,jdbcType=DATE}, collegeID = #{record.collegeid,jdbcType=INTEGER}, update student set userID = #{record.userid,jdbcType=INTEGER}, userName = #{record.username,jdbcType=VARCHAR}, sex = #{record.sex,jdbcType=VARCHAR}, birthYear = #{record.birthyear,jdbcType=DATE}, grade = #{record.grade,jdbcType=DATE}, collegeID = #{record.collegeid,jdbcType=INTEGER} update student userName = #{username,jdbcType=VARCHAR}, sex = #{sex,jdbcType=VARCHAR}, birthYear = #{birthyear,jdbcType=DATE}, grade = #{grade,jdbcType=DATE}, collegeID = #{collegeid,jdbcType=INTEGER}, where userID = #{userid,jdbcType=INTEGER} update student set userName = #{username,jdbcType=VARCHAR}, sex = #{sex,jdbcType=VARCHAR}, birthYear = #{birthyear,jdbcType=DATE}, grade = #{grade,jdbcType=DATE}, collegeID = #{collegeid,jdbcType=INTEGER} where userID = #{userid,jdbcType=INTEGER} ================================================ FILE: src/main/java/com/system/mapper/StudentMapperCustom.java ================================================ package com.system.mapper; import com.system.po.PagingVO; import com.system.po.StudentCustom; import java.util.List; /** * Created by Jacey on 2017/6/28. */ public interface StudentMapperCustom { //分页查询学生信息 List findByPaging(PagingVO pagingVO) throws Exception; //查询学生信息,和其选课信息 StudentCustom findStudentAndSelectCourseListById(Integer id) throws Exception; } ================================================ FILE: src/main/java/com/system/mapper/StudentMapperCustom.xml ================================================ ================================================ FILE: src/main/java/com/system/mapper/TeacherMapper.java ================================================ package com.system.mapper; import com.system.po.Teacher; import com.system.po.TeacherExample; import org.apache.ibatis.annotations.Param; import java.util.List; public interface TeacherMapper { int countByExample(TeacherExample example); int deleteByExample(TeacherExample example); int deleteByPrimaryKey(Integer userid); int insert(Teacher record); int insertSelective(Teacher record); List selectByExample(TeacherExample example); Teacher selectByPrimaryKey(Integer userid); int updateByExampleSelective(@Param("record") Teacher record, @Param("example") TeacherExample example); int updateByExample(@Param("record") Teacher record, @Param("example") TeacherExample example); int updateByPrimaryKeySelective(Teacher record); int updateByPrimaryKey(Teacher record); } ================================================ FILE: src/main/java/com/system/mapper/TeacherMapper.xml ================================================ and ${criterion.condition} and ${criterion.condition} #{criterion.value} and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} and ${criterion.condition} #{listItem} and ${criterion.condition} and ${criterion.condition} #{criterion.value} and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} and ${criterion.condition} #{listItem} userID, userName, sex, birthYear, degree, title, grade, collegeID delete from teacher where userID = #{userid,jdbcType=INTEGER} delete from teacher insert into teacher (userID, userName, sex, birthYear, degree, title, grade, collegeID) values (#{userid,jdbcType=INTEGER}, #{username,jdbcType=VARCHAR}, #{sex,jdbcType=VARCHAR}, #{birthyear,jdbcType=DATE}, #{degree,jdbcType=VARCHAR}, #{title,jdbcType=VARCHAR}, #{grade,jdbcType=DATE}, #{collegeid,jdbcType=INTEGER}) insert into teacher userID, userName, sex, birthYear, degree, title, grade, collegeID, #{userid,jdbcType=INTEGER}, #{username,jdbcType=VARCHAR}, #{sex,jdbcType=VARCHAR}, #{birthyear,jdbcType=DATE}, #{degree,jdbcType=VARCHAR}, #{title,jdbcType=VARCHAR}, #{grade,jdbcType=DATE}, #{collegeid,jdbcType=INTEGER}, update teacher userID = #{record.userid,jdbcType=INTEGER}, userName = #{record.username,jdbcType=VARCHAR}, sex = #{record.sex,jdbcType=VARCHAR}, birthYear = #{record.birthyear,jdbcType=DATE}, degree = #{record.degree,jdbcType=VARCHAR}, title = #{record.title,jdbcType=VARCHAR}, grade = #{record.grade,jdbcType=DATE}, collegeID = #{record.collegeid,jdbcType=INTEGER}, update teacher set userID = #{record.userid,jdbcType=INTEGER}, userName = #{record.username,jdbcType=VARCHAR}, sex = #{record.sex,jdbcType=VARCHAR}, birthYear = #{record.birthyear,jdbcType=DATE}, degree = #{record.degree,jdbcType=VARCHAR}, title = #{record.title,jdbcType=VARCHAR}, grade = #{record.grade,jdbcType=DATE}, collegeID = #{record.collegeid,jdbcType=INTEGER} update teacher userName = #{username,jdbcType=VARCHAR}, sex = #{sex,jdbcType=VARCHAR}, birthYear = #{birthyear,jdbcType=DATE}, degree = #{degree,jdbcType=VARCHAR}, title = #{title,jdbcType=VARCHAR}, grade = #{grade,jdbcType=DATE}, collegeID = #{collegeid,jdbcType=INTEGER}, where userID = #{userid,jdbcType=INTEGER} update teacher set userName = #{username,jdbcType=VARCHAR}, sex = #{sex,jdbcType=VARCHAR}, birthYear = #{birthyear,jdbcType=DATE}, degree = #{degree,jdbcType=VARCHAR}, title = #{title,jdbcType=VARCHAR}, grade = #{grade,jdbcType=DATE}, collegeID = #{collegeid,jdbcType=INTEGER} where userID = #{userid,jdbcType=INTEGER} ================================================ FILE: src/main/java/com/system/mapper/TeacherMapperCustom.java ================================================ package com.system.mapper; import com.system.po.PagingVO; import com.system.po.TeacherCustom; import java.util.List; /** * Created by Jacey on 2017/6/29. */ public interface TeacherMapperCustom { //分页查询老师信息 List findByPaging(PagingVO pagingVO) throws Exception; //获取 } ================================================ FILE: src/main/java/com/system/mapper/TeacherMapperCustom.xml ================================================ ================================================ FILE: src/main/java/com/system/mapper/UserloginMapper.java ================================================ package com.system.mapper; import com.system.po.Userlogin; import com.system.po.UserloginExample; import org.apache.ibatis.annotations.Param; import java.util.List; public interface UserloginMapper { int countByExample(UserloginExample example); int deleteByExample(UserloginExample example); int deleteByPrimaryKey(Integer userid); int insert(Userlogin record); int insertSelective(Userlogin record); List selectByExample(UserloginExample example); Userlogin selectByPrimaryKey(Integer userid); int updateByExampleSelective(@Param("record") Userlogin record, @Param("example") UserloginExample example); int updateByExample(@Param("record") Userlogin record, @Param("example") UserloginExample example); int updateByPrimaryKeySelective(Userlogin record); int updateByPrimaryKey(Userlogin record); } ================================================ FILE: src/main/java/com/system/mapper/UserloginMapper.xml ================================================ and ${criterion.condition} and ${criterion.condition} #{criterion.value} and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} and ${criterion.condition} #{listItem} and ${criterion.condition} and ${criterion.condition} #{criterion.value} and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} and ${criterion.condition} #{listItem} userID, userName, password, role delete from userlogin where userID = #{userid,jdbcType=INTEGER} delete from userlogin insert into userlogin (userID, userName, password, role) values (#{userid,jdbcType=INTEGER}, #{username,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}, #{role,jdbcType=INTEGER}) insert into userlogin userID, userName, password, role, #{userid,jdbcType=INTEGER}, #{username,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}, #{role,jdbcType=INTEGER}, update userlogin userID = #{record.userid,jdbcType=INTEGER}, userName = #{record.username,jdbcType=VARCHAR}, password = #{record.password,jdbcType=VARCHAR}, role = #{record.role,jdbcType=INTEGER}, update userlogin set userID = #{record.userid,jdbcType=INTEGER}, userName = #{record.username,jdbcType=VARCHAR}, password = #{record.password,jdbcType=VARCHAR}, role = #{record.role,jdbcType=INTEGER} update userlogin userName = #{username,jdbcType=VARCHAR}, password = #{password,jdbcType=VARCHAR}, role = #{role,jdbcType=INTEGER}, where userID = #{userid,jdbcType=INTEGER} update userlogin set userName = #{username,jdbcType=VARCHAR}, password = #{password,jdbcType=VARCHAR}, role = #{role,jdbcType=INTEGER} where userID = #{userid,jdbcType=INTEGER} ================================================ FILE: src/main/java/com/system/mapper/UserloginMapperCustom.java ================================================ package com.system.mapper; import com.system.po.UserloginCustom; /** * UserloginMapper扩展类 */ public interface UserloginMapperCustom { UserloginCustom findOneByName(String name) throws Exception; } ================================================ FILE: src/main/java/com/system/mapper/UserloginMapperCustom.xml ================================================ ================================================ FILE: src/main/java/com/system/po/College.java ================================================ package com.system.po; public class College { private Integer collegeid; private String collegename; public Integer getCollegeid() { return collegeid; } public void setCollegeid(Integer collegeid) { this.collegeid = collegeid; } public String getCollegename() { return collegename; } public void setCollegename(String collegename) { this.collegename = collegename == null ? null : collegename.trim(); } } ================================================ FILE: src/main/java/com/system/po/CollegeCustom.java ================================================ package com.system.po; /** * College扩展类 */ public class CollegeCustom extends College { } ================================================ FILE: src/main/java/com/system/po/CollegeExample.java ================================================ package com.system.po; import java.util.ArrayList; import java.util.List; public class CollegeExample { protected String orderByClause; protected boolean distinct; protected List oredCriteria; public CollegeExample() { oredCriteria = new ArrayList(); } public void setOrderByClause(String orderByClause) { this.orderByClause = orderByClause; } public String getOrderByClause() { return orderByClause; } public void setDistinct(boolean distinct) { this.distinct = distinct; } public boolean isDistinct() { return distinct; } public List getOredCriteria() { return oredCriteria; } public void or(Criteria criteria) { oredCriteria.add(criteria); } public Criteria or() { Criteria criteria = createCriteriaInternal(); oredCriteria.add(criteria); return criteria; } public Criteria createCriteria() { Criteria criteria = createCriteriaInternal(); if (oredCriteria.size() == 0) { oredCriteria.add(criteria); } return criteria; } protected Criteria createCriteriaInternal() { Criteria criteria = new Criteria(); return criteria; } public void clear() { oredCriteria.clear(); orderByClause = null; distinct = false; } protected abstract static class GeneratedCriteria { protected List criteria; protected GeneratedCriteria() { super(); criteria = new ArrayList(); } public boolean isValid() { return criteria.size() > 0; } public List getAllCriteria() { return criteria; } public List getCriteria() { return criteria; } protected void addCriterion(String condition) { if (condition == null) { throw new RuntimeException("Value for condition cannot be null"); } criteria.add(new Criterion(condition)); } protected void addCriterion(String condition, Object value, String property) { if (value == null) { throw new RuntimeException("Value for " + property + " cannot be null"); } criteria.add(new Criterion(condition, value)); } protected void addCriterion(String condition, Object value1, Object value2, String property) { if (value1 == null || value2 == null) { throw new RuntimeException("Between values for " + property + " cannot be null"); } criteria.add(new Criterion(condition, value1, value2)); } public Criteria andCollegeidIsNull() { addCriterion("collegeID is null"); return (Criteria) this; } public Criteria andCollegeidIsNotNull() { addCriterion("collegeID is not null"); return (Criteria) this; } public Criteria andCollegeidEqualTo(Integer value) { addCriterion("collegeID =", value, "collegeid"); return (Criteria) this; } public Criteria andCollegeidNotEqualTo(Integer value) { addCriterion("collegeID <>", value, "collegeid"); return (Criteria) this; } public Criteria andCollegeidGreaterThan(Integer value) { addCriterion("collegeID >", value, "collegeid"); return (Criteria) this; } public Criteria andCollegeidGreaterThanOrEqualTo(Integer value) { addCriterion("collegeID >=", value, "collegeid"); return (Criteria) this; } public Criteria andCollegeidLessThan(Integer value) { addCriterion("collegeID <", value, "collegeid"); return (Criteria) this; } public Criteria andCollegeidLessThanOrEqualTo(Integer value) { addCriterion("collegeID <=", value, "collegeid"); return (Criteria) this; } public Criteria andCollegeidIn(List values) { addCriterion("collegeID in", values, "collegeid"); return (Criteria) this; } public Criteria andCollegeidNotIn(List values) { addCriterion("collegeID not in", values, "collegeid"); return (Criteria) this; } public Criteria andCollegeidBetween(Integer value1, Integer value2) { addCriterion("collegeID between", value1, value2, "collegeid"); return (Criteria) this; } public Criteria andCollegeidNotBetween(Integer value1, Integer value2) { addCriterion("collegeID not between", value1, value2, "collegeid"); return (Criteria) this; } public Criteria andCollegenameIsNull() { addCriterion("collegeName is null"); return (Criteria) this; } public Criteria andCollegenameIsNotNull() { addCriterion("collegeName is not null"); return (Criteria) this; } public Criteria andCollegenameEqualTo(String value) { addCriterion("collegeName =", value, "collegename"); return (Criteria) this; } public Criteria andCollegenameNotEqualTo(String value) { addCriterion("collegeName <>", value, "collegename"); return (Criteria) this; } public Criteria andCollegenameGreaterThan(String value) { addCriterion("collegeName >", value, "collegename"); return (Criteria) this; } public Criteria andCollegenameGreaterThanOrEqualTo(String value) { addCriterion("collegeName >=", value, "collegename"); return (Criteria) this; } public Criteria andCollegenameLessThan(String value) { addCriterion("collegeName <", value, "collegename"); return (Criteria) this; } public Criteria andCollegenameLessThanOrEqualTo(String value) { addCriterion("collegeName <=", value, "collegename"); return (Criteria) this; } public Criteria andCollegenameLike(String value) { addCriterion("collegeName like", value, "collegename"); return (Criteria) this; } public Criteria andCollegenameNotLike(String value) { addCriterion("collegeName not like", value, "collegename"); return (Criteria) this; } public Criteria andCollegenameIn(List values) { addCriterion("collegeName in", values, "collegename"); return (Criteria) this; } public Criteria andCollegenameNotIn(List values) { addCriterion("collegeName not in", values, "collegename"); return (Criteria) this; } public Criteria andCollegenameBetween(String value1, String value2) { addCriterion("collegeName between", value1, value2, "collegename"); return (Criteria) this; } public Criteria andCollegenameNotBetween(String value1, String value2) { addCriterion("collegeName not between", value1, value2, "collegename"); return (Criteria) this; } } public static class Criteria extends GeneratedCriteria { protected Criteria() { super(); } } public static class Criterion { private String condition; private Object value; private Object secondValue; private boolean noValue; private boolean singleValue; private boolean betweenValue; private boolean listValue; private String typeHandler; public String getCondition() { return condition; } public Object getValue() { return value; } public Object getSecondValue() { return secondValue; } public boolean isNoValue() { return noValue; } public boolean isSingleValue() { return singleValue; } public boolean isBetweenValue() { return betweenValue; } public boolean isListValue() { return listValue; } public String getTypeHandler() { return typeHandler; } protected Criterion(String condition) { super(); this.condition = condition; this.typeHandler = null; this.noValue = true; } protected Criterion(String condition, Object value, String typeHandler) { super(); this.condition = condition; this.value = value; this.typeHandler = typeHandler; if (value instanceof List) { this.listValue = true; } else { this.singleValue = true; } } protected Criterion(String condition, Object value) { this(condition, value, null); } protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { super(); this.condition = condition; this.value = value; this.secondValue = secondValue; this.typeHandler = typeHandler; this.betweenValue = true; } protected Criterion(String condition, Object value, Object secondValue) { this(condition, value, secondValue, null); } } } ================================================ FILE: src/main/java/com/system/po/Course.java ================================================ package com.system.po; public class Course { private Integer courseid; private String coursename; private Integer teacherid; private String coursetime; private String classroom; private Integer courseweek; private String coursetype; private Integer collegeid; private Integer score; public Integer getCourseid() { return courseid; } public void setCourseid(Integer courseid) { this.courseid = courseid; } public String getCoursename() { return coursename; } public void setCoursename(String coursename) { this.coursename = coursename == null ? null : coursename.trim(); } public Integer getTeacherid() { return teacherid; } public void setTeacherid(Integer teacherid) { this.teacherid = teacherid; } public String getCoursetime() { return coursetime; } public void setCoursetime(String coursetime) { this.coursetime = coursetime == null ? null : coursetime.trim(); } public String getClassroom() { return classroom; } public void setClassroom(String classroom) { this.classroom = classroom == null ? null : classroom.trim(); } public Integer getCourseweek() { return courseweek; } public void setCourseweek(Integer courseweek) { this.courseweek = courseweek; } public String getCoursetype() { return coursetype; } public void setCoursetype(String coursetype) { this.coursetype = coursetype == null ? null : coursetype.trim(); } public Integer getCollegeid() { return collegeid; } public void setCollegeid(Integer collegeid) { this.collegeid = collegeid; } public Integer getScore() { return score; } public void setScore(Integer score) { this.score = score; } } ================================================ FILE: src/main/java/com/system/po/CourseCustom.java ================================================ package com.system.po; /** * Course扩展类 课程 */ public class CourseCustom extends Course { //所属院系名 private String collegeName; public void setcollegeName(String collegeName) { this.collegeName = collegeName; } public String getcollegeName() { return collegeName; } } ================================================ FILE: src/main/java/com/system/po/CourseExample.java ================================================ package com.system.po; import java.util.ArrayList; import java.util.List; public class CourseExample { protected String orderByClause; protected boolean distinct; protected List oredCriteria; public CourseExample() { oredCriteria = new ArrayList(); } public void setOrderByClause(String orderByClause) { this.orderByClause = orderByClause; } public String getOrderByClause() { return orderByClause; } public void setDistinct(boolean distinct) { this.distinct = distinct; } public boolean isDistinct() { return distinct; } public List getOredCriteria() { return oredCriteria; } public void or(Criteria criteria) { oredCriteria.add(criteria); } public Criteria or() { Criteria criteria = createCriteriaInternal(); oredCriteria.add(criteria); return criteria; } public Criteria createCriteria() { Criteria criteria = createCriteriaInternal(); if (oredCriteria.size() == 0) { oredCriteria.add(criteria); } return criteria; } protected Criteria createCriteriaInternal() { Criteria criteria = new Criteria(); return criteria; } public void clear() { oredCriteria.clear(); orderByClause = null; distinct = false; } protected abstract static class GeneratedCriteria { protected List criteria; protected GeneratedCriteria() { super(); criteria = new ArrayList(); } public boolean isValid() { return criteria.size() > 0; } public List getAllCriteria() { return criteria; } public List getCriteria() { return criteria; } protected void addCriterion(String condition) { if (condition == null) { throw new RuntimeException("Value for condition cannot be null"); } criteria.add(new Criterion(condition)); } protected void addCriterion(String condition, Object value, String property) { if (value == null) { throw new RuntimeException("Value for " + property + " cannot be null"); } criteria.add(new Criterion(condition, value)); } protected void addCriterion(String condition, Object value1, Object value2, String property) { if (value1 == null || value2 == null) { throw new RuntimeException("Between values for " + property + " cannot be null"); } criteria.add(new Criterion(condition, value1, value2)); } public Criteria andCourseidIsNull() { addCriterion("courseID is null"); return (Criteria) this; } public Criteria andCourseidIsNotNull() { addCriterion("courseID is not null"); return (Criteria) this; } public Criteria andCourseidEqualTo(Integer value) { addCriterion("courseID =", value, "courseid"); return (Criteria) this; } public Criteria andCourseidNotEqualTo(Integer value) { addCriterion("courseID <>", value, "courseid"); return (Criteria) this; } public Criteria andCourseidGreaterThan(Integer value) { addCriterion("courseID >", value, "courseid"); return (Criteria) this; } public Criteria andCourseidGreaterThanOrEqualTo(Integer value) { addCriterion("courseID >=", value, "courseid"); return (Criteria) this; } public Criteria andCourseidLessThan(Integer value) { addCriterion("courseID <", value, "courseid"); return (Criteria) this; } public Criteria andCourseidLessThanOrEqualTo(Integer value) { addCriterion("courseID <=", value, "courseid"); return (Criteria) this; } public Criteria andCourseidIn(List values) { addCriterion("courseID in", values, "courseid"); return (Criteria) this; } public Criteria andCourseidNotIn(List values) { addCriterion("courseID not in", values, "courseid"); return (Criteria) this; } public Criteria andCourseidBetween(Integer value1, Integer value2) { addCriterion("courseID between", value1, value2, "courseid"); return (Criteria) this; } public Criteria andCourseidNotBetween(Integer value1, Integer value2) { addCriterion("courseID not between", value1, value2, "courseid"); return (Criteria) this; } public Criteria andCoursenameIsNull() { addCriterion("courseName is null"); return (Criteria) this; } public Criteria andCoursenameIsNotNull() { addCriterion("courseName is not null"); return (Criteria) this; } public Criteria andCoursenameEqualTo(String value) { addCriterion("courseName =", value, "coursename"); return (Criteria) this; } public Criteria andCoursenameNotEqualTo(String value) { addCriterion("courseName <>", value, "coursename"); return (Criteria) this; } public Criteria andCoursenameGreaterThan(String value) { addCriterion("courseName >", value, "coursename"); return (Criteria) this; } public Criteria andCoursenameGreaterThanOrEqualTo(String value) { addCriterion("courseName >=", value, "coursename"); return (Criteria) this; } public Criteria andCoursenameLessThan(String value) { addCriterion("courseName <", value, "coursename"); return (Criteria) this; } public Criteria andCoursenameLessThanOrEqualTo(String value) { addCriterion("courseName <=", value, "coursename"); return (Criteria) this; } public Criteria andCoursenameLike(String value) { addCriterion("courseName like", value, "coursename"); return (Criteria) this; } public Criteria andCoursenameNotLike(String value) { addCriterion("courseName not like", value, "coursename"); return (Criteria) this; } public Criteria andCoursenameIn(List values) { addCriterion("courseName in", values, "coursename"); return (Criteria) this; } public Criteria andCoursenameNotIn(List values) { addCriterion("courseName not in", values, "coursename"); return (Criteria) this; } public Criteria andCoursenameBetween(String value1, String value2) { addCriterion("courseName between", value1, value2, "coursename"); return (Criteria) this; } public Criteria andCoursenameNotBetween(String value1, String value2) { addCriterion("courseName not between", value1, value2, "coursename"); return (Criteria) this; } public Criteria andTeacheridIsNull() { addCriterion("teacherID is null"); return (Criteria) this; } public Criteria andTeacheridIsNotNull() { addCriterion("teacherID is not null"); return (Criteria) this; } public Criteria andTeacheridEqualTo(Integer value) { addCriterion("teacherID =", value, "teacherid"); return (Criteria) this; } public Criteria andTeacheridNotEqualTo(Integer value) { addCriterion("teacherID <>", value, "teacherid"); return (Criteria) this; } public Criteria andTeacheridGreaterThan(Integer value) { addCriterion("teacherID >", value, "teacherid"); return (Criteria) this; } public Criteria andTeacheridGreaterThanOrEqualTo(Integer value) { addCriterion("teacherID >=", value, "teacherid"); return (Criteria) this; } public Criteria andTeacheridLessThan(Integer value) { addCriterion("teacherID <", value, "teacherid"); return (Criteria) this; } public Criteria andTeacheridLessThanOrEqualTo(Integer value) { addCriterion("teacherID <=", value, "teacherid"); return (Criteria) this; } public Criteria andTeacheridIn(List values) { addCriterion("teacherID in", values, "teacherid"); return (Criteria) this; } public Criteria andTeacheridNotIn(List values) { addCriterion("teacherID not in", values, "teacherid"); return (Criteria) this; } public Criteria andTeacheridBetween(Integer value1, Integer value2) { addCriterion("teacherID between", value1, value2, "teacherid"); return (Criteria) this; } public Criteria andTeacheridNotBetween(Integer value1, Integer value2) { addCriterion("teacherID not between", value1, value2, "teacherid"); return (Criteria) this; } public Criteria andCoursetimeIsNull() { addCriterion("courseTime is null"); return (Criteria) this; } public Criteria andCoursetimeIsNotNull() { addCriterion("courseTime is not null"); return (Criteria) this; } public Criteria andCoursetimeEqualTo(String value) { addCriterion("courseTime =", value, "coursetime"); return (Criteria) this; } public Criteria andCoursetimeNotEqualTo(String value) { addCriterion("courseTime <>", value, "coursetime"); return (Criteria) this; } public Criteria andCoursetimeGreaterThan(String value) { addCriterion("courseTime >", value, "coursetime"); return (Criteria) this; } public Criteria andCoursetimeGreaterThanOrEqualTo(String value) { addCriterion("courseTime >=", value, "coursetime"); return (Criteria) this; } public Criteria andCoursetimeLessThan(String value) { addCriterion("courseTime <", value, "coursetime"); return (Criteria) this; } public Criteria andCoursetimeLessThanOrEqualTo(String value) { addCriterion("courseTime <=", value, "coursetime"); return (Criteria) this; } public Criteria andCoursetimeLike(String value) { addCriterion("courseTime like", value, "coursetime"); return (Criteria) this; } public Criteria andCoursetimeNotLike(String value) { addCriterion("courseTime not like", value, "coursetime"); return (Criteria) this; } public Criteria andCoursetimeIn(List values) { addCriterion("courseTime in", values, "coursetime"); return (Criteria) this; } public Criteria andCoursetimeNotIn(List values) { addCriterion("courseTime not in", values, "coursetime"); return (Criteria) this; } public Criteria andCoursetimeBetween(String value1, String value2) { addCriterion("courseTime between", value1, value2, "coursetime"); return (Criteria) this; } public Criteria andCoursetimeNotBetween(String value1, String value2) { addCriterion("courseTime not between", value1, value2, "coursetime"); return (Criteria) this; } public Criteria andClassroomIsNull() { addCriterion("classRoom is null"); return (Criteria) this; } public Criteria andClassroomIsNotNull() { addCriterion("classRoom is not null"); return (Criteria) this; } public Criteria andClassroomEqualTo(String value) { addCriterion("classRoom =", value, "classroom"); return (Criteria) this; } public Criteria andClassroomNotEqualTo(String value) { addCriterion("classRoom <>", value, "classroom"); return (Criteria) this; } public Criteria andClassroomGreaterThan(String value) { addCriterion("classRoom >", value, "classroom"); return (Criteria) this; } public Criteria andClassroomGreaterThanOrEqualTo(String value) { addCriterion("classRoom >=", value, "classroom"); return (Criteria) this; } public Criteria andClassroomLessThan(String value) { addCriterion("classRoom <", value, "classroom"); return (Criteria) this; } public Criteria andClassroomLessThanOrEqualTo(String value) { addCriterion("classRoom <=", value, "classroom"); return (Criteria) this; } public Criteria andClassroomLike(String value) { addCriterion("classRoom like", value, "classroom"); return (Criteria) this; } public Criteria andClassroomNotLike(String value) { addCriterion("classRoom not like", value, "classroom"); return (Criteria) this; } public Criteria andClassroomIn(List values) { addCriterion("classRoom in", values, "classroom"); return (Criteria) this; } public Criteria andClassroomNotIn(List values) { addCriterion("classRoom not in", values, "classroom"); return (Criteria) this; } public Criteria andClassroomBetween(String value1, String value2) { addCriterion("classRoom between", value1, value2, "classroom"); return (Criteria) this; } public Criteria andClassroomNotBetween(String value1, String value2) { addCriterion("classRoom not between", value1, value2, "classroom"); return (Criteria) this; } public Criteria andCourseweekIsNull() { addCriterion("courseWeek is null"); return (Criteria) this; } public Criteria andCourseweekIsNotNull() { addCriterion("courseWeek is not null"); return (Criteria) this; } public Criteria andCourseweekEqualTo(Integer value) { addCriterion("courseWeek =", value, "courseweek"); return (Criteria) this; } public Criteria andCourseweekNotEqualTo(Integer value) { addCriterion("courseWeek <>", value, "courseweek"); return (Criteria) this; } public Criteria andCourseweekGreaterThan(Integer value) { addCriterion("courseWeek >", value, "courseweek"); return (Criteria) this; } public Criteria andCourseweekGreaterThanOrEqualTo(Integer value) { addCriterion("courseWeek >=", value, "courseweek"); return (Criteria) this; } public Criteria andCourseweekLessThan(Integer value) { addCriterion("courseWeek <", value, "courseweek"); return (Criteria) this; } public Criteria andCourseweekLessThanOrEqualTo(Integer value) { addCriterion("courseWeek <=", value, "courseweek"); return (Criteria) this; } public Criteria andCourseweekIn(List values) { addCriterion("courseWeek in", values, "courseweek"); return (Criteria) this; } public Criteria andCourseweekNotIn(List values) { addCriterion("courseWeek not in", values, "courseweek"); return (Criteria) this; } public Criteria andCourseweekBetween(Integer value1, Integer value2) { addCriterion("courseWeek between", value1, value2, "courseweek"); return (Criteria) this; } public Criteria andCourseweekNotBetween(Integer value1, Integer value2) { addCriterion("courseWeek not between", value1, value2, "courseweek"); return (Criteria) this; } public Criteria andCoursetypeIsNull() { addCriterion("courseType is null"); return (Criteria) this; } public Criteria andCoursetypeIsNotNull() { addCriterion("courseType is not null"); return (Criteria) this; } public Criteria andCoursetypeEqualTo(String value) { addCriterion("courseType =", value, "coursetype"); return (Criteria) this; } public Criteria andCoursetypeNotEqualTo(String value) { addCriterion("courseType <>", value, "coursetype"); return (Criteria) this; } public Criteria andCoursetypeGreaterThan(String value) { addCriterion("courseType >", value, "coursetype"); return (Criteria) this; } public Criteria andCoursetypeGreaterThanOrEqualTo(String value) { addCriterion("courseType >=", value, "coursetype"); return (Criteria) this; } public Criteria andCoursetypeLessThan(String value) { addCriterion("courseType <", value, "coursetype"); return (Criteria) this; } public Criteria andCoursetypeLessThanOrEqualTo(String value) { addCriterion("courseType <=", value, "coursetype"); return (Criteria) this; } public Criteria andCoursetypeLike(String value) { addCriterion("courseType like", value, "coursetype"); return (Criteria) this; } public Criteria andCoursetypeNotLike(String value) { addCriterion("courseType not like", value, "coursetype"); return (Criteria) this; } public Criteria andCoursetypeIn(List values) { addCriterion("courseType in", values, "coursetype"); return (Criteria) this; } public Criteria andCoursetypeNotIn(List values) { addCriterion("courseType not in", values, "coursetype"); return (Criteria) this; } public Criteria andCoursetypeBetween(String value1, String value2) { addCriterion("courseType between", value1, value2, "coursetype"); return (Criteria) this; } public Criteria andCoursetypeNotBetween(String value1, String value2) { addCriterion("courseType not between", value1, value2, "coursetype"); return (Criteria) this; } public Criteria andCollegeidIsNull() { addCriterion("collegeID is null"); return (Criteria) this; } public Criteria andCollegeidIsNotNull() { addCriterion("collegeID is not null"); return (Criteria) this; } public Criteria andCollegeidEqualTo(Integer value) { addCriterion("collegeID =", value, "collegeid"); return (Criteria) this; } public Criteria andCollegeidNotEqualTo(Integer value) { addCriterion("collegeID <>", value, "collegeid"); return (Criteria) this; } public Criteria andCollegeidGreaterThan(Integer value) { addCriterion("collegeID >", value, "collegeid"); return (Criteria) this; } public Criteria andCollegeidGreaterThanOrEqualTo(Integer value) { addCriterion("collegeID >=", value, "collegeid"); return (Criteria) this; } public Criteria andCollegeidLessThan(Integer value) { addCriterion("collegeID <", value, "collegeid"); return (Criteria) this; } public Criteria andCollegeidLessThanOrEqualTo(Integer value) { addCriterion("collegeID <=", value, "collegeid"); return (Criteria) this; } public Criteria andCollegeidIn(List values) { addCriterion("collegeID in", values, "collegeid"); return (Criteria) this; } public Criteria andCollegeidNotIn(List values) { addCriterion("collegeID not in", values, "collegeid"); return (Criteria) this; } public Criteria andCollegeidBetween(Integer value1, Integer value2) { addCriterion("collegeID between", value1, value2, "collegeid"); return (Criteria) this; } public Criteria andCollegeidNotBetween(Integer value1, Integer value2) { addCriterion("collegeID not between", value1, value2, "collegeid"); return (Criteria) this; } public Criteria andScoreIsNull() { addCriterion("score is null"); return (Criteria) this; } public Criteria andScoreIsNotNull() { addCriterion("score is not null"); return (Criteria) this; } public Criteria andScoreEqualTo(Integer value) { addCriterion("score =", value, "score"); return (Criteria) this; } public Criteria andScoreNotEqualTo(Integer value) { addCriterion("score <>", value, "score"); return (Criteria) this; } public Criteria andScoreGreaterThan(Integer value) { addCriterion("score >", value, "score"); return (Criteria) this; } public Criteria andScoreGreaterThanOrEqualTo(Integer value) { addCriterion("score >=", value, "score"); return (Criteria) this; } public Criteria andScoreLessThan(Integer value) { addCriterion("score <", value, "score"); return (Criteria) this; } public Criteria andScoreLessThanOrEqualTo(Integer value) { addCriterion("score <=", value, "score"); return (Criteria) this; } public Criteria andScoreIn(List values) { addCriterion("score in", values, "score"); return (Criteria) this; } public Criteria andScoreNotIn(List values) { addCriterion("score not in", values, "score"); return (Criteria) this; } public Criteria andScoreBetween(Integer value1, Integer value2) { addCriterion("score between", value1, value2, "score"); return (Criteria) this; } public Criteria andScoreNotBetween(Integer value1, Integer value2) { addCriterion("score not between", value1, value2, "score"); return (Criteria) this; } } public static class Criteria extends GeneratedCriteria { protected Criteria() { super(); } } public static class Criterion { private String condition; private Object value; private Object secondValue; private boolean noValue; private boolean singleValue; private boolean betweenValue; private boolean listValue; private String typeHandler; public String getCondition() { return condition; } public Object getValue() { return value; } public Object getSecondValue() { return secondValue; } public boolean isNoValue() { return noValue; } public boolean isSingleValue() { return singleValue; } public boolean isBetweenValue() { return betweenValue; } public boolean isListValue() { return listValue; } public String getTypeHandler() { return typeHandler; } protected Criterion(String condition) { super(); this.condition = condition; this.typeHandler = null; this.noValue = true; } protected Criterion(String condition, Object value, String typeHandler) { super(); this.condition = condition; this.value = value; this.typeHandler = typeHandler; if (value instanceof List) { this.listValue = true; } else { this.singleValue = true; } } protected Criterion(String condition, Object value) { this(condition, value, null); } protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { super(); this.condition = condition; this.value = value; this.secondValue = secondValue; this.typeHandler = typeHandler; this.betweenValue = true; } protected Criterion(String condition, Object value, Object secondValue) { this(condition, value, secondValue, null); } } } ================================================ FILE: src/main/java/com/system/po/PagingVO.java ================================================ package com.system.po; /** * 分页信息 pojo类 */ public class PagingVO { //当前页码,默认第一页 private int curentPageNo = 1; //总页数 private int totalCount; //页面容量 private int pageSize=5; //上一页 private int upPageNo; //下一页 private int nextPageNo; //要前往的页码,默认0 private int toPageNo = 0; public void setToPageNo(Integer toPageNo) { //新一页 this.toPageNo = (toPageNo-1) * pageSize ; //设置跳转后当前的页码 setCurentPageNo(toPageNo); } public Integer getTopageNo() { return toPageNo; } public int getCurentPageNo() { return curentPageNo; } //设置当前页码 public void setCurentPageNo(int curentPageNo) { if (curentPageNo != 1) { this.upPageNo = curentPageNo - 1; } this.nextPageNo = curentPageNo + 1; this.curentPageNo = curentPageNo; } public int getTotalCount() { return totalCount; } public void setTotalCount(int totalCount) { if (totalCount%pageSize > 0) { this.totalCount = (totalCount/pageSize)+1; } else { this.totalCount = totalCount/pageSize; } } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public int getUpPageNo() { return upPageNo; } public void setUpPageNo(int upPageNo) { this.upPageNo = upPageNo; } public int getNextPageNo() { return nextPageNo; } public void setNextPageNo(int nextPageNo) { this.nextPageNo = nextPageNo; } } ================================================ FILE: src/main/java/com/system/po/Role.java ================================================ package com.system.po; public class Role { private Integer roleid; private String rolename; private String permissions; public Integer getRoleid() { return roleid; } public void setRoleid(Integer roleid) { this.roleid = roleid; } public String getRolename() { return rolename; } public void setRolename(String rolename) { this.rolename = rolename == null ? null : rolename.trim(); } public String getPermissions() { return permissions; } public void setPermissions(String permissions) { this.permissions = permissions == null ? null : permissions.trim(); } } ================================================ FILE: src/main/java/com/system/po/RoleExample.java ================================================ package com.system.po; import java.util.ArrayList; import java.util.List; public class RoleExample { protected String orderByClause; protected boolean distinct; protected List oredCriteria; public RoleExample() { oredCriteria = new ArrayList(); } public void setOrderByClause(String orderByClause) { this.orderByClause = orderByClause; } public String getOrderByClause() { return orderByClause; } public void setDistinct(boolean distinct) { this.distinct = distinct; } public boolean isDistinct() { return distinct; } public List getOredCriteria() { return oredCriteria; } public void or(Criteria criteria) { oredCriteria.add(criteria); } public Criteria or() { Criteria criteria = createCriteriaInternal(); oredCriteria.add(criteria); return criteria; } public Criteria createCriteria() { Criteria criteria = createCriteriaInternal(); if (oredCriteria.size() == 0) { oredCriteria.add(criteria); } return criteria; } protected Criteria createCriteriaInternal() { Criteria criteria = new Criteria(); return criteria; } public void clear() { oredCriteria.clear(); orderByClause = null; distinct = false; } protected abstract static class GeneratedCriteria { protected List criteria; protected GeneratedCriteria() { super(); criteria = new ArrayList(); } public boolean isValid() { return criteria.size() > 0; } public List getAllCriteria() { return criteria; } public List getCriteria() { return criteria; } protected void addCriterion(String condition) { if (condition == null) { throw new RuntimeException("Value for condition cannot be null"); } criteria.add(new Criterion(condition)); } protected void addCriterion(String condition, Object value, String property) { if (value == null) { throw new RuntimeException("Value for " + property + " cannot be null"); } criteria.add(new Criterion(condition, value)); } protected void addCriterion(String condition, Object value1, Object value2, String property) { if (value1 == null || value2 == null) { throw new RuntimeException("Between values for " + property + " cannot be null"); } criteria.add(new Criterion(condition, value1, value2)); } public Criteria andRoleidIsNull() { addCriterion("roleID is null"); return (Criteria) this; } public Criteria andRoleidIsNotNull() { addCriterion("roleID is not null"); return (Criteria) this; } public Criteria andRoleidEqualTo(Integer value) { addCriterion("roleID =", value, "roleid"); return (Criteria) this; } public Criteria andRoleidNotEqualTo(Integer value) { addCriterion("roleID <>", value, "roleid"); return (Criteria) this; } public Criteria andRoleidGreaterThan(Integer value) { addCriterion("roleID >", value, "roleid"); return (Criteria) this; } public Criteria andRoleidGreaterThanOrEqualTo(Integer value) { addCriterion("roleID >=", value, "roleid"); return (Criteria) this; } public Criteria andRoleidLessThan(Integer value) { addCriterion("roleID <", value, "roleid"); return (Criteria) this; } public Criteria andRoleidLessThanOrEqualTo(Integer value) { addCriterion("roleID <=", value, "roleid"); return (Criteria) this; } public Criteria andRoleidIn(List values) { addCriterion("roleID in", values, "roleid"); return (Criteria) this; } public Criteria andRoleidNotIn(List values) { addCriterion("roleID not in", values, "roleid"); return (Criteria) this; } public Criteria andRoleidBetween(Integer value1, Integer value2) { addCriterion("roleID between", value1, value2, "roleid"); return (Criteria) this; } public Criteria andRoleidNotBetween(Integer value1, Integer value2) { addCriterion("roleID not between", value1, value2, "roleid"); return (Criteria) this; } public Criteria andRolenameIsNull() { addCriterion("roleName is null"); return (Criteria) this; } public Criteria andRolenameIsNotNull() { addCriterion("roleName is not null"); return (Criteria) this; } public Criteria andRolenameEqualTo(String value) { addCriterion("roleName =", value, "rolename"); return (Criteria) this; } public Criteria andRolenameNotEqualTo(String value) { addCriterion("roleName <>", value, "rolename"); return (Criteria) this; } public Criteria andRolenameGreaterThan(String value) { addCriterion("roleName >", value, "rolename"); return (Criteria) this; } public Criteria andRolenameGreaterThanOrEqualTo(String value) { addCriterion("roleName >=", value, "rolename"); return (Criteria) this; } public Criteria andRolenameLessThan(String value) { addCriterion("roleName <", value, "rolename"); return (Criteria) this; } public Criteria andRolenameLessThanOrEqualTo(String value) { addCriterion("roleName <=", value, "rolename"); return (Criteria) this; } public Criteria andRolenameLike(String value) { addCriterion("roleName like", value, "rolename"); return (Criteria) this; } public Criteria andRolenameNotLike(String value) { addCriterion("roleName not like", value, "rolename"); return (Criteria) this; } public Criteria andRolenameIn(List values) { addCriterion("roleName in", values, "rolename"); return (Criteria) this; } public Criteria andRolenameNotIn(List values) { addCriterion("roleName not in", values, "rolename"); return (Criteria) this; } public Criteria andRolenameBetween(String value1, String value2) { addCriterion("roleName between", value1, value2, "rolename"); return (Criteria) this; } public Criteria andRolenameNotBetween(String value1, String value2) { addCriterion("roleName not between", value1, value2, "rolename"); return (Criteria) this; } public Criteria andPermissionsIsNull() { addCriterion("permissions is null"); return (Criteria) this; } public Criteria andPermissionsIsNotNull() { addCriterion("permissions is not null"); return (Criteria) this; } public Criteria andPermissionsEqualTo(String value) { addCriterion("permissions =", value, "permissions"); return (Criteria) this; } public Criteria andPermissionsNotEqualTo(String value) { addCriterion("permissions <>", value, "permissions"); return (Criteria) this; } public Criteria andPermissionsGreaterThan(String value) { addCriterion("permissions >", value, "permissions"); return (Criteria) this; } public Criteria andPermissionsGreaterThanOrEqualTo(String value) { addCriterion("permissions >=", value, "permissions"); return (Criteria) this; } public Criteria andPermissionsLessThan(String value) { addCriterion("permissions <", value, "permissions"); return (Criteria) this; } public Criteria andPermissionsLessThanOrEqualTo(String value) { addCriterion("permissions <=", value, "permissions"); return (Criteria) this; } public Criteria andPermissionsLike(String value) { addCriterion("permissions like", value, "permissions"); return (Criteria) this; } public Criteria andPermissionsNotLike(String value) { addCriterion("permissions not like", value, "permissions"); return (Criteria) this; } public Criteria andPermissionsIn(List values) { addCriterion("permissions in", values, "permissions"); return (Criteria) this; } public Criteria andPermissionsNotIn(List values) { addCriterion("permissions not in", values, "permissions"); return (Criteria) this; } public Criteria andPermissionsBetween(String value1, String value2) { addCriterion("permissions between", value1, value2, "permissions"); return (Criteria) this; } public Criteria andPermissionsNotBetween(String value1, String value2) { addCriterion("permissions not between", value1, value2, "permissions"); return (Criteria) this; } } public static class Criteria extends GeneratedCriteria { protected Criteria() { super(); } } public static class Criterion { private String condition; private Object value; private Object secondValue; private boolean noValue; private boolean singleValue; private boolean betweenValue; private boolean listValue; private String typeHandler; public String getCondition() { return condition; } public Object getValue() { return value; } public Object getSecondValue() { return secondValue; } public boolean isNoValue() { return noValue; } public boolean isSingleValue() { return singleValue; } public boolean isBetweenValue() { return betweenValue; } public boolean isListValue() { return listValue; } public String getTypeHandler() { return typeHandler; } protected Criterion(String condition) { super(); this.condition = condition; this.typeHandler = null; this.noValue = true; } protected Criterion(String condition, Object value, String typeHandler) { super(); this.condition = condition; this.value = value; this.typeHandler = typeHandler; if (value instanceof List) { this.listValue = true; } else { this.singleValue = true; } } protected Criterion(String condition, Object value) { this(condition, value, null); } protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { super(); this.condition = condition; this.value = value; this.secondValue = secondValue; this.typeHandler = typeHandler; this.betweenValue = true; } protected Criterion(String condition, Object value, Object secondValue) { this(condition, value, secondValue, null); } } } ================================================ FILE: src/main/java/com/system/po/SelectedCourseCustom.java ================================================ package com.system.po; /** * Created by Jacey on 2017/6/29. */ public class SelectedCourseCustom extends Selectedcourse { //新增Student 对象字段 private StudentCustom studentCustom; //扩展课程信息对象 private CourseCustom courseCustom; //判断该学生是否已经完成该课程 private Boolean over = false; public Boolean getOver() { return over; } public void setOver(Boolean over) { this.over = over; } public StudentCustom getStudentCustom() { return studentCustom; } public void setStudentCustom(StudentCustom studentCustom) { this.studentCustom = studentCustom; } public CourseCustom getCouseCustom() { return courseCustom; } public void setCouseCustom(CourseCustom couseCustom) { this.courseCustom = couseCustom; } } ================================================ FILE: src/main/java/com/system/po/Selectedcourse.java ================================================ package com.system.po; public class Selectedcourse { private Integer courseid; private Integer studentid; private Integer mark; public Integer getCourseid() { return courseid; } public void setCourseid(Integer courseid) { this.courseid = courseid; } public Integer getStudentid() { return studentid; } public void setStudentid(Integer studentid) { this.studentid = studentid; } public Integer getMark() { return mark; } public void setMark(Integer mark) { this.mark = mark; } } ================================================ FILE: src/main/java/com/system/po/SelectedcourseExample.java ================================================ package com.system.po; import java.util.ArrayList; import java.util.List; public class SelectedcourseExample { protected String orderByClause; protected boolean distinct; protected List oredCriteria; public SelectedcourseExample() { oredCriteria = new ArrayList(); } public void setOrderByClause(String orderByClause) { this.orderByClause = orderByClause; } public String getOrderByClause() { return orderByClause; } public void setDistinct(boolean distinct) { this.distinct = distinct; } public boolean isDistinct() { return distinct; } public List getOredCriteria() { return oredCriteria; } public void or(Criteria criteria) { oredCriteria.add(criteria); } public Criteria or() { Criteria criteria = createCriteriaInternal(); oredCriteria.add(criteria); return criteria; } public Criteria createCriteria() { Criteria criteria = createCriteriaInternal(); if (oredCriteria.size() == 0) { oredCriteria.add(criteria); } return criteria; } protected Criteria createCriteriaInternal() { Criteria criteria = new Criteria(); return criteria; } public void clear() { oredCriteria.clear(); orderByClause = null; distinct = false; } protected abstract static class GeneratedCriteria { protected List criteria; protected GeneratedCriteria() { super(); criteria = new ArrayList(); } public boolean isValid() { return criteria.size() > 0; } public List getAllCriteria() { return criteria; } public List getCriteria() { return criteria; } protected void addCriterion(String condition) { if (condition == null) { throw new RuntimeException("Value for condition cannot be null"); } criteria.add(new Criterion(condition)); } protected void addCriterion(String condition, Object value, String property) { if (value == null) { throw new RuntimeException("Value for " + property + " cannot be null"); } criteria.add(new Criterion(condition, value)); } protected void addCriterion(String condition, Object value1, Object value2, String property) { if (value1 == null || value2 == null) { throw new RuntimeException("Between values for " + property + " cannot be null"); } criteria.add(new Criterion(condition, value1, value2)); } public Criteria andCourseidIsNull() { addCriterion("courseID is null"); return (Criteria) this; } public Criteria andCourseidIsNotNull() { addCriterion("courseID is not null"); return (Criteria) this; } public Criteria andCourseidEqualTo(Integer value) { addCriterion("courseID =", value, "courseid"); return (Criteria) this; } public Criteria andCourseidNotEqualTo(Integer value) { addCriterion("courseID <>", value, "courseid"); return (Criteria) this; } public Criteria andCourseidGreaterThan(Integer value) { addCriterion("courseID >", value, "courseid"); return (Criteria) this; } public Criteria andCourseidGreaterThanOrEqualTo(Integer value) { addCriterion("courseID >=", value, "courseid"); return (Criteria) this; } public Criteria andCourseidLessThan(Integer value) { addCriterion("courseID <", value, "courseid"); return (Criteria) this; } public Criteria andCourseidLessThanOrEqualTo(Integer value) { addCriterion("courseID <=", value, "courseid"); return (Criteria) this; } public Criteria andCourseidIn(List values) { addCriterion("courseID in", values, "courseid"); return (Criteria) this; } public Criteria andCourseidNotIn(List values) { addCriterion("courseID not in", values, "courseid"); return (Criteria) this; } public Criteria andCourseidBetween(Integer value1, Integer value2) { addCriterion("courseID between", value1, value2, "courseid"); return (Criteria) this; } public Criteria andCourseidNotBetween(Integer value1, Integer value2) { addCriterion("courseID not between", value1, value2, "courseid"); return (Criteria) this; } public Criteria andStudentidIsNull() { addCriterion("studentID is null"); return (Criteria) this; } public Criteria andStudentidIsNotNull() { addCriterion("studentID is not null"); return (Criteria) this; } public Criteria andStudentidEqualTo(Integer value) { addCriterion("studentID =", value, "studentid"); return (Criteria) this; } public Criteria andStudentidNotEqualTo(Integer value) { addCriterion("studentID <>", value, "studentid"); return (Criteria) this; } public Criteria andStudentidGreaterThan(Integer value) { addCriterion("studentID >", value, "studentid"); return (Criteria) this; } public Criteria andStudentidGreaterThanOrEqualTo(Integer value) { addCriterion("studentID >=", value, "studentid"); return (Criteria) this; } public Criteria andStudentidLessThan(Integer value) { addCriterion("studentID <", value, "studentid"); return (Criteria) this; } public Criteria andStudentidLessThanOrEqualTo(Integer value) { addCriterion("studentID <=", value, "studentid"); return (Criteria) this; } public Criteria andStudentidIn(List values) { addCriterion("studentID in", values, "studentid"); return (Criteria) this; } public Criteria andStudentidNotIn(List values) { addCriterion("studentID not in", values, "studentid"); return (Criteria) this; } public Criteria andStudentidBetween(Integer value1, Integer value2) { addCriterion("studentID between", value1, value2, "studentid"); return (Criteria) this; } public Criteria andStudentidNotBetween(Integer value1, Integer value2) { addCriterion("studentID not between", value1, value2, "studentid"); return (Criteria) this; } public Criteria andMarkIsNull() { addCriterion("mark is null"); return (Criteria) this; } public Criteria andMarkIsNotNull() { addCriterion("mark is not null"); return (Criteria) this; } public Criteria andMarkEqualTo(Integer value) { addCriterion("mark =", value, "mark"); return (Criteria) this; } public Criteria andMarkNotEqualTo(Integer value) { addCriterion("mark <>", value, "mark"); return (Criteria) this; } public Criteria andMarkGreaterThan(Integer value) { addCriterion("mark >", value, "mark"); return (Criteria) this; } public Criteria andMarkGreaterThanOrEqualTo(Integer value) { addCriterion("mark >=", value, "mark"); return (Criteria) this; } public Criteria andMarkLessThan(Integer value) { addCriterion("mark <", value, "mark"); return (Criteria) this; } public Criteria andMarkLessThanOrEqualTo(Integer value) { addCriterion("mark <=", value, "mark"); return (Criteria) this; } public Criteria andMarkIn(List values) { addCriterion("mark in", values, "mark"); return (Criteria) this; } public Criteria andMarkNotIn(List values) { addCriterion("mark not in", values, "mark"); return (Criteria) this; } public Criteria andMarkBetween(Integer value1, Integer value2) { addCriterion("mark between", value1, value2, "mark"); return (Criteria) this; } public Criteria andMarkNotBetween(Integer value1, Integer value2) { addCriterion("mark not between", value1, value2, "mark"); return (Criteria) this; } } public static class Criteria extends GeneratedCriteria { protected Criteria() { super(); } } public static class Criterion { private String condition; private Object value; private Object secondValue; private boolean noValue; private boolean singleValue; private boolean betweenValue; private boolean listValue; private String typeHandler; public String getCondition() { return condition; } public Object getValue() { return value; } public Object getSecondValue() { return secondValue; } public boolean isNoValue() { return noValue; } public boolean isSingleValue() { return singleValue; } public boolean isBetweenValue() { return betweenValue; } public boolean isListValue() { return listValue; } public String getTypeHandler() { return typeHandler; } protected Criterion(String condition) { super(); this.condition = condition; this.typeHandler = null; this.noValue = true; } protected Criterion(String condition, Object value, String typeHandler) { super(); this.condition = condition; this.value = value; this.typeHandler = typeHandler; if (value instanceof List) { this.listValue = true; } else { this.singleValue = true; } } protected Criterion(String condition, Object value) { this(condition, value, null); } protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { super(); this.condition = condition; this.value = value; this.secondValue = secondValue; this.typeHandler = typeHandler; this.betweenValue = true; } protected Criterion(String condition, Object value, Object secondValue) { this(condition, value, secondValue, null); } } } ================================================ FILE: src/main/java/com/system/po/Student.java ================================================ package com.system.po; import java.util.Date; public class Student { private Integer userid; private String username; private String sex; private Date birthyear; private Date grade; private Integer collegeid; public Integer getUserid() { return userid; } public void setUserid(Integer userid) { this.userid = userid; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username == null ? null : username.trim(); } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex == null ? null : sex.trim(); } public Date getBirthyear() { return birthyear; } public void setBirthyear(Date birthyear) { this.birthyear = birthyear; } public Date getGrade() { return grade; } public void setGrade(Date grade) { this.grade = grade; } public Integer getCollegeid() { return collegeid; } public void setCollegeid(Integer collegeid) { this.collegeid = collegeid; } } ================================================ FILE: src/main/java/com/system/po/StudentCustom.java ================================================ package com.system.po; import java.util.List; /** * Student的扩展类 */ public class StudentCustom extends Student { //所属院系名 private String collegeName; //选课列表 private List selectedCourseList; public void setcollegeName(String collegeName) { this.collegeName = collegeName; } public String getcollegeName() { return collegeName; } public void setSelectedCourseList(List selectedCourseList) { this.selectedCourseList = selectedCourseList; } public List getSelectedCourseList() { return selectedCourseList; } } ================================================ FILE: src/main/java/com/system/po/StudentExample.java ================================================ package com.system.po; import java.util.ArrayList; import java.util.Date; import java.util.Iterator; import java.util.List; public class StudentExample { protected String orderByClause; protected boolean distinct; protected List oredCriteria; public StudentExample() { oredCriteria = new ArrayList(); } public void setOrderByClause(String orderByClause) { this.orderByClause = orderByClause; } public String getOrderByClause() { return orderByClause; } public void setDistinct(boolean distinct) { this.distinct = distinct; } public boolean isDistinct() { return distinct; } public List getOredCriteria() { return oredCriteria; } public void or(Criteria criteria) { oredCriteria.add(criteria); } public Criteria or() { Criteria criteria = createCriteriaInternal(); oredCriteria.add(criteria); return criteria; } public Criteria createCriteria() { Criteria criteria = createCriteriaInternal(); if (oredCriteria.size() == 0) { oredCriteria.add(criteria); } return criteria; } protected Criteria createCriteriaInternal() { Criteria criteria = new Criteria(); return criteria; } public void clear() { oredCriteria.clear(); orderByClause = null; distinct = false; } protected abstract static class GeneratedCriteria { protected List criteria; protected GeneratedCriteria() { super(); criteria = new ArrayList(); } public boolean isValid() { return criteria.size() > 0; } public List getAllCriteria() { return criteria; } public List getCriteria() { return criteria; } protected void addCriterion(String condition) { if (condition == null) { throw new RuntimeException("Value for condition cannot be null"); } criteria.add(new Criterion(condition)); } protected void addCriterion(String condition, Object value, String property) { if (value == null) { throw new RuntimeException("Value for " + property + " cannot be null"); } criteria.add(new Criterion(condition, value)); } protected void addCriterion(String condition, Object value1, Object value2, String property) { if (value1 == null || value2 == null) { throw new RuntimeException("Between values for " + property + " cannot be null"); } criteria.add(new Criterion(condition, value1, value2)); } protected void addCriterionForJDBCDate(String condition, Date value, String property) { if (value == null) { throw new RuntimeException("Value for " + property + " cannot be null"); } addCriterion(condition, new java.sql.Date(value.getTime()), property); } protected void addCriterionForJDBCDate(String condition, List values, String property) { if (values == null || values.size() == 0) { throw new RuntimeException("Value list for " + property + " cannot be null or empty"); } List dateList = new ArrayList(); Iterator iter = values.iterator(); while (iter.hasNext()) { dateList.add(new java.sql.Date(iter.next().getTime())); } addCriterion(condition, dateList, property); } protected void addCriterionForJDBCDate(String condition, Date value1, Date value2, String property) { if (value1 == null || value2 == null) { throw new RuntimeException("Between values for " + property + " cannot be null"); } addCriterion(condition, new java.sql.Date(value1.getTime()), new java.sql.Date(value2.getTime()), property); } public Criteria andUseridIsNull() { addCriterion("userID is null"); return (Criteria) this; } public Criteria andUseridIsNotNull() { addCriterion("userID is not null"); return (Criteria) this; } public Criteria andUseridEqualTo(Integer value) { addCriterion("userID =", value, "userid"); return (Criteria) this; } public Criteria andUseridNotEqualTo(Integer value) { addCriterion("userID <>", value, "userid"); return (Criteria) this; } public Criteria andUseridGreaterThan(Integer value) { addCriterion("userID >", value, "userid"); return (Criteria) this; } public Criteria andUseridGreaterThanOrEqualTo(Integer value) { addCriterion("userID >=", value, "userid"); return (Criteria) this; } public Criteria andUseridLessThan(Integer value) { addCriterion("userID <", value, "userid"); return (Criteria) this; } public Criteria andUseridLessThanOrEqualTo(Integer value) { addCriterion("userID <=", value, "userid"); return (Criteria) this; } public Criteria andUseridIn(List values) { addCriterion("userID in", values, "userid"); return (Criteria) this; } public Criteria andUseridNotIn(List values) { addCriterion("userID not in", values, "userid"); return (Criteria) this; } public Criteria andUseridBetween(Integer value1, Integer value2) { addCriterion("userID between", value1, value2, "userid"); return (Criteria) this; } public Criteria andUseridNotBetween(Integer value1, Integer value2) { addCriterion("userID not between", value1, value2, "userid"); return (Criteria) this; } public Criteria andUsernameIsNull() { addCriterion("userName is null"); return (Criteria) this; } public Criteria andUsernameIsNotNull() { addCriterion("userName is not null"); return (Criteria) this; } public Criteria andUsernameEqualTo(String value) { addCriterion("userName =", value, "username"); return (Criteria) this; } public Criteria andUsernameNotEqualTo(String value) { addCriterion("userName <>", value, "username"); return (Criteria) this; } public Criteria andUsernameGreaterThan(String value) { addCriterion("userName >", value, "username"); return (Criteria) this; } public Criteria andUsernameGreaterThanOrEqualTo(String value) { addCriterion("userName >=", value, "username"); return (Criteria) this; } public Criteria andUsernameLessThan(String value) { addCriterion("userName <", value, "username"); return (Criteria) this; } public Criteria andUsernameLessThanOrEqualTo(String value) { addCriterion("userName <=", value, "username"); return (Criteria) this; } public Criteria andUsernameLike(String value) { addCriterion("userName like", value, "username"); return (Criteria) this; } public Criteria andUsernameNotLike(String value) { addCriterion("userName not like", value, "username"); return (Criteria) this; } public Criteria andUsernameIn(List values) { addCriterion("userName in", values, "username"); return (Criteria) this; } public Criteria andUsernameNotIn(List values) { addCriterion("userName not in", values, "username"); return (Criteria) this; } public Criteria andUsernameBetween(String value1, String value2) { addCriterion("userName between", value1, value2, "username"); return (Criteria) this; } public Criteria andUsernameNotBetween(String value1, String value2) { addCriterion("userName not between", value1, value2, "username"); return (Criteria) this; } public Criteria andSexIsNull() { addCriterion("sex is null"); return (Criteria) this; } public Criteria andSexIsNotNull() { addCriterion("sex is not null"); return (Criteria) this; } public Criteria andSexEqualTo(String value) { addCriterion("sex =", value, "sex"); return (Criteria) this; } public Criteria andSexNotEqualTo(String value) { addCriterion("sex <>", value, "sex"); return (Criteria) this; } public Criteria andSexGreaterThan(String value) { addCriterion("sex >", value, "sex"); return (Criteria) this; } public Criteria andSexGreaterThanOrEqualTo(String value) { addCriterion("sex >=", value, "sex"); return (Criteria) this; } public Criteria andSexLessThan(String value) { addCriterion("sex <", value, "sex"); return (Criteria) this; } public Criteria andSexLessThanOrEqualTo(String value) { addCriterion("sex <=", value, "sex"); return (Criteria) this; } public Criteria andSexLike(String value) { addCriterion("sex like", value, "sex"); return (Criteria) this; } public Criteria andSexNotLike(String value) { addCriterion("sex not like", value, "sex"); return (Criteria) this; } public Criteria andSexIn(List values) { addCriterion("sex in", values, "sex"); return (Criteria) this; } public Criteria andSexNotIn(List values) { addCriterion("sex not in", values, "sex"); return (Criteria) this; } public Criteria andSexBetween(String value1, String value2) { addCriterion("sex between", value1, value2, "sex"); return (Criteria) this; } public Criteria andSexNotBetween(String value1, String value2) { addCriterion("sex not between", value1, value2, "sex"); return (Criteria) this; } public Criteria andBirthyearIsNull() { addCriterion("birthYear is null"); return (Criteria) this; } public Criteria andBirthyearIsNotNull() { addCriterion("birthYear is not null"); return (Criteria) this; } public Criteria andBirthyearEqualTo(Date value) { addCriterionForJDBCDate("birthYear =", value, "birthyear"); return (Criteria) this; } public Criteria andBirthyearNotEqualTo(Date value) { addCriterionForJDBCDate("birthYear <>", value, "birthyear"); return (Criteria) this; } public Criteria andBirthyearGreaterThan(Date value) { addCriterionForJDBCDate("birthYear >", value, "birthyear"); return (Criteria) this; } public Criteria andBirthyearGreaterThanOrEqualTo(Date value) { addCriterionForJDBCDate("birthYear >=", value, "birthyear"); return (Criteria) this; } public Criteria andBirthyearLessThan(Date value) { addCriterionForJDBCDate("birthYear <", value, "birthyear"); return (Criteria) this; } public Criteria andBirthyearLessThanOrEqualTo(Date value) { addCriterionForJDBCDate("birthYear <=", value, "birthyear"); return (Criteria) this; } public Criteria andBirthyearIn(List values) { addCriterionForJDBCDate("birthYear in", values, "birthyear"); return (Criteria) this; } public Criteria andBirthyearNotIn(List values) { addCriterionForJDBCDate("birthYear not in", values, "birthyear"); return (Criteria) this; } public Criteria andBirthyearBetween(Date value1, Date value2) { addCriterionForJDBCDate("birthYear between", value1, value2, "birthyear"); return (Criteria) this; } public Criteria andBirthyearNotBetween(Date value1, Date value2) { addCriterionForJDBCDate("birthYear not between", value1, value2, "birthyear"); return (Criteria) this; } public Criteria andGradeIsNull() { addCriterion("grade is null"); return (Criteria) this; } public Criteria andGradeIsNotNull() { addCriterion("grade is not null"); return (Criteria) this; } public Criteria andGradeEqualTo(Date value) { addCriterionForJDBCDate("grade =", value, "grade"); return (Criteria) this; } public Criteria andGradeNotEqualTo(Date value) { addCriterionForJDBCDate("grade <>", value, "grade"); return (Criteria) this; } public Criteria andGradeGreaterThan(Date value) { addCriterionForJDBCDate("grade >", value, "grade"); return (Criteria) this; } public Criteria andGradeGreaterThanOrEqualTo(Date value) { addCriterionForJDBCDate("grade >=", value, "grade"); return (Criteria) this; } public Criteria andGradeLessThan(Date value) { addCriterionForJDBCDate("grade <", value, "grade"); return (Criteria) this; } public Criteria andGradeLessThanOrEqualTo(Date value) { addCriterionForJDBCDate("grade <=", value, "grade"); return (Criteria) this; } public Criteria andGradeIn(List values) { addCriterionForJDBCDate("grade in", values, "grade"); return (Criteria) this; } public Criteria andGradeNotIn(List values) { addCriterionForJDBCDate("grade not in", values, "grade"); return (Criteria) this; } public Criteria andGradeBetween(Date value1, Date value2) { addCriterionForJDBCDate("grade between", value1, value2, "grade"); return (Criteria) this; } public Criteria andGradeNotBetween(Date value1, Date value2) { addCriterionForJDBCDate("grade not between", value1, value2, "grade"); return (Criteria) this; } public Criteria andCollegeidIsNull() { addCriterion("collegeID is null"); return (Criteria) this; } public Criteria andCollegeidIsNotNull() { addCriterion("collegeID is not null"); return (Criteria) this; } public Criteria andCollegeidEqualTo(Integer value) { addCriterion("collegeID =", value, "collegeid"); return (Criteria) this; } public Criteria andCollegeidNotEqualTo(Integer value) { addCriterion("collegeID <>", value, "collegeid"); return (Criteria) this; } public Criteria andCollegeidGreaterThan(Integer value) { addCriterion("collegeID >", value, "collegeid"); return (Criteria) this; } public Criteria andCollegeidGreaterThanOrEqualTo(Integer value) { addCriterion("collegeID >=", value, "collegeid"); return (Criteria) this; } public Criteria andCollegeidLessThan(Integer value) { addCriterion("collegeID <", value, "collegeid"); return (Criteria) this; } public Criteria andCollegeidLessThanOrEqualTo(Integer value) { addCriterion("collegeID <=", value, "collegeid"); return (Criteria) this; } public Criteria andCollegeidIn(List values) { addCriterion("collegeID in", values, "collegeid"); return (Criteria) this; } public Criteria andCollegeidNotIn(List values) { addCriterion("collegeID not in", values, "collegeid"); return (Criteria) this; } public Criteria andCollegeidBetween(Integer value1, Integer value2) { addCriterion("collegeID between", value1, value2, "collegeid"); return (Criteria) this; } public Criteria andCollegeidNotBetween(Integer value1, Integer value2) { addCriterion("collegeID not between", value1, value2, "collegeid"); return (Criteria) this; } } public static class Criteria extends GeneratedCriteria { protected Criteria() { super(); } } public static class Criterion { private String condition; private Object value; private Object secondValue; private boolean noValue; private boolean singleValue; private boolean betweenValue; private boolean listValue; private String typeHandler; public String getCondition() { return condition; } public Object getValue() { return value; } public Object getSecondValue() { return secondValue; } public boolean isNoValue() { return noValue; } public boolean isSingleValue() { return singleValue; } public boolean isBetweenValue() { return betweenValue; } public boolean isListValue() { return listValue; } public String getTypeHandler() { return typeHandler; } protected Criterion(String condition) { super(); this.condition = condition; this.typeHandler = null; this.noValue = true; } protected Criterion(String condition, Object value, String typeHandler) { super(); this.condition = condition; this.value = value; this.typeHandler = typeHandler; if (value instanceof List) { this.listValue = true; } else { this.singleValue = true; } } protected Criterion(String condition, Object value) { this(condition, value, null); } protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { super(); this.condition = condition; this.value = value; this.secondValue = secondValue; this.typeHandler = typeHandler; this.betweenValue = true; } protected Criterion(String condition, Object value, Object secondValue) { this(condition, value, secondValue, null); } } } ================================================ FILE: src/main/java/com/system/po/Teacher.java ================================================ package com.system.po; import java.util.Date; public class Teacher { private Integer userid; private String username; private String sex; private Date birthyear; private String degree; private String title; private Date grade; private Integer collegeid; public Integer getUserid() { return userid; } public void setUserid(Integer userid) { this.userid = userid; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username == null ? null : username.trim(); } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex == null ? null : sex.trim(); } public Date getBirthyear() { return birthyear; } public void setBirthyear(Date birthyear) { this.birthyear = birthyear; } public String getDegree() { return degree; } public void setDegree(String degree) { this.degree = degree == null ? null : degree.trim(); } public String getTitle() { return title; } public void setTitle(String title) { this.title = title == null ? null : title.trim(); } public Date getGrade() { return grade; } public void setGrade(Date grade) { this.grade = grade; } public Integer getCollegeid() { return collegeid; } public void setCollegeid(Integer collegeid) { this.collegeid = collegeid; } } ================================================ FILE: src/main/java/com/system/po/TeacherCustom.java ================================================ package com.system.po; /** * teacher扩展类 */ public class TeacherCustom extends Teacher { //所属院系名 private String collegeName; public void setcollegeName(String collegeName) { this.collegeName = collegeName; } public String getcollegeName() { return collegeName; } } ================================================ FILE: src/main/java/com/system/po/TeacherExample.java ================================================ package com.system.po; import java.util.ArrayList; import java.util.Date; import java.util.Iterator; import java.util.List; public class TeacherExample { protected String orderByClause; protected boolean distinct; protected List oredCriteria; public TeacherExample() { oredCriteria = new ArrayList(); } public void setOrderByClause(String orderByClause) { this.orderByClause = orderByClause; } public String getOrderByClause() { return orderByClause; } public void setDistinct(boolean distinct) { this.distinct = distinct; } public boolean isDistinct() { return distinct; } public List getOredCriteria() { return oredCriteria; } public void or(Criteria criteria) { oredCriteria.add(criteria); } public Criteria or() { Criteria criteria = createCriteriaInternal(); oredCriteria.add(criteria); return criteria; } public Criteria createCriteria() { Criteria criteria = createCriteriaInternal(); if (oredCriteria.size() == 0) { oredCriteria.add(criteria); } return criteria; } protected Criteria createCriteriaInternal() { Criteria criteria = new Criteria(); return criteria; } public void clear() { oredCriteria.clear(); orderByClause = null; distinct = false; } protected abstract static class GeneratedCriteria { protected List criteria; protected GeneratedCriteria() { super(); criteria = new ArrayList(); } public boolean isValid() { return criteria.size() > 0; } public List getAllCriteria() { return criteria; } public List getCriteria() { return criteria; } protected void addCriterion(String condition) { if (condition == null) { throw new RuntimeException("Value for condition cannot be null"); } criteria.add(new Criterion(condition)); } protected void addCriterion(String condition, Object value, String property) { if (value == null) { throw new RuntimeException("Value for " + property + " cannot be null"); } criteria.add(new Criterion(condition, value)); } protected void addCriterion(String condition, Object value1, Object value2, String property) { if (value1 == null || value2 == null) { throw new RuntimeException("Between values for " + property + " cannot be null"); } criteria.add(new Criterion(condition, value1, value2)); } protected void addCriterionForJDBCDate(String condition, Date value, String property) { if (value == null) { throw new RuntimeException("Value for " + property + " cannot be null"); } addCriterion(condition, new java.sql.Date(value.getTime()), property); } protected void addCriterionForJDBCDate(String condition, List values, String property) { if (values == null || values.size() == 0) { throw new RuntimeException("Value list for " + property + " cannot be null or empty"); } List dateList = new ArrayList(); Iterator iter = values.iterator(); while (iter.hasNext()) { dateList.add(new java.sql.Date(iter.next().getTime())); } addCriterion(condition, dateList, property); } protected void addCriterionForJDBCDate(String condition, Date value1, Date value2, String property) { if (value1 == null || value2 == null) { throw new RuntimeException("Between values for " + property + " cannot be null"); } addCriterion(condition, new java.sql.Date(value1.getTime()), new java.sql.Date(value2.getTime()), property); } public Criteria andUseridIsNull() { addCriterion("userID is null"); return (Criteria) this; } public Criteria andUseridIsNotNull() { addCriterion("userID is not null"); return (Criteria) this; } public Criteria andUseridEqualTo(Integer value) { addCriterion("userID =", value, "userid"); return (Criteria) this; } public Criteria andUseridNotEqualTo(Integer value) { addCriterion("userID <>", value, "userid"); return (Criteria) this; } public Criteria andUseridGreaterThan(Integer value) { addCriterion("userID >", value, "userid"); return (Criteria) this; } public Criteria andUseridGreaterThanOrEqualTo(Integer value) { addCriterion("userID >=", value, "userid"); return (Criteria) this; } public Criteria andUseridLessThan(Integer value) { addCriterion("userID <", value, "userid"); return (Criteria) this; } public Criteria andUseridLessThanOrEqualTo(Integer value) { addCriterion("userID <=", value, "userid"); return (Criteria) this; } public Criteria andUseridIn(List values) { addCriterion("userID in", values, "userid"); return (Criteria) this; } public Criteria andUseridNotIn(List values) { addCriterion("userID not in", values, "userid"); return (Criteria) this; } public Criteria andUseridBetween(Integer value1, Integer value2) { addCriterion("userID between", value1, value2, "userid"); return (Criteria) this; } public Criteria andUseridNotBetween(Integer value1, Integer value2) { addCriterion("userID not between", value1, value2, "userid"); return (Criteria) this; } public Criteria andUsernameIsNull() { addCriterion("userName is null"); return (Criteria) this; } public Criteria andUsernameIsNotNull() { addCriterion("userName is not null"); return (Criteria) this; } public Criteria andUsernameEqualTo(String value) { addCriterion("userName =", value, "username"); return (Criteria) this; } public Criteria andUsernameNotEqualTo(String value) { addCriterion("userName <>", value, "username"); return (Criteria) this; } public Criteria andUsernameGreaterThan(String value) { addCriterion("userName >", value, "username"); return (Criteria) this; } public Criteria andUsernameGreaterThanOrEqualTo(String value) { addCriterion("userName >=", value, "username"); return (Criteria) this; } public Criteria andUsernameLessThan(String value) { addCriterion("userName <", value, "username"); return (Criteria) this; } public Criteria andUsernameLessThanOrEqualTo(String value) { addCriterion("userName <=", value, "username"); return (Criteria) this; } public Criteria andUsernameLike(String value) { addCriterion("userName like", value, "username"); return (Criteria) this; } public Criteria andUsernameNotLike(String value) { addCriterion("userName not like", value, "username"); return (Criteria) this; } public Criteria andUsernameIn(List values) { addCriterion("userName in", values, "username"); return (Criteria) this; } public Criteria andUsernameNotIn(List values) { addCriterion("userName not in", values, "username"); return (Criteria) this; } public Criteria andUsernameBetween(String value1, String value2) { addCriterion("userName between", value1, value2, "username"); return (Criteria) this; } public Criteria andUsernameNotBetween(String value1, String value2) { addCriterion("userName not between", value1, value2, "username"); return (Criteria) this; } public Criteria andSexIsNull() { addCriterion("sex is null"); return (Criteria) this; } public Criteria andSexIsNotNull() { addCriterion("sex is not null"); return (Criteria) this; } public Criteria andSexEqualTo(String value) { addCriterion("sex =", value, "sex"); return (Criteria) this; } public Criteria andSexNotEqualTo(String value) { addCriterion("sex <>", value, "sex"); return (Criteria) this; } public Criteria andSexGreaterThan(String value) { addCriterion("sex >", value, "sex"); return (Criteria) this; } public Criteria andSexGreaterThanOrEqualTo(String value) { addCriterion("sex >=", value, "sex"); return (Criteria) this; } public Criteria andSexLessThan(String value) { addCriterion("sex <", value, "sex"); return (Criteria) this; } public Criteria andSexLessThanOrEqualTo(String value) { addCriterion("sex <=", value, "sex"); return (Criteria) this; } public Criteria andSexLike(String value) { addCriterion("sex like", value, "sex"); return (Criteria) this; } public Criteria andSexNotLike(String value) { addCriterion("sex not like", value, "sex"); return (Criteria) this; } public Criteria andSexIn(List values) { addCriterion("sex in", values, "sex"); return (Criteria) this; } public Criteria andSexNotIn(List values) { addCriterion("sex not in", values, "sex"); return (Criteria) this; } public Criteria andSexBetween(String value1, String value2) { addCriterion("sex between", value1, value2, "sex"); return (Criteria) this; } public Criteria andSexNotBetween(String value1, String value2) { addCriterion("sex not between", value1, value2, "sex"); return (Criteria) this; } public Criteria andBirthyearIsNull() { addCriterion("birthYear is null"); return (Criteria) this; } public Criteria andBirthyearIsNotNull() { addCriterion("birthYear is not null"); return (Criteria) this; } public Criteria andBirthyearEqualTo(Date value) { addCriterionForJDBCDate("birthYear =", value, "birthyear"); return (Criteria) this; } public Criteria andBirthyearNotEqualTo(Date value) { addCriterionForJDBCDate("birthYear <>", value, "birthyear"); return (Criteria) this; } public Criteria andBirthyearGreaterThan(Date value) { addCriterionForJDBCDate("birthYear >", value, "birthyear"); return (Criteria) this; } public Criteria andBirthyearGreaterThanOrEqualTo(Date value) { addCriterionForJDBCDate("birthYear >=", value, "birthyear"); return (Criteria) this; } public Criteria andBirthyearLessThan(Date value) { addCriterionForJDBCDate("birthYear <", value, "birthyear"); return (Criteria) this; } public Criteria andBirthyearLessThanOrEqualTo(Date value) { addCriterionForJDBCDate("birthYear <=", value, "birthyear"); return (Criteria) this; } public Criteria andBirthyearIn(List values) { addCriterionForJDBCDate("birthYear in", values, "birthyear"); return (Criteria) this; } public Criteria andBirthyearNotIn(List values) { addCriterionForJDBCDate("birthYear not in", values, "birthyear"); return (Criteria) this; } public Criteria andBirthyearBetween(Date value1, Date value2) { addCriterionForJDBCDate("birthYear between", value1, value2, "birthyear"); return (Criteria) this; } public Criteria andBirthyearNotBetween(Date value1, Date value2) { addCriterionForJDBCDate("birthYear not between", value1, value2, "birthyear"); return (Criteria) this; } public Criteria andDegreeIsNull() { addCriterion("degree is null"); return (Criteria) this; } public Criteria andDegreeIsNotNull() { addCriterion("degree is not null"); return (Criteria) this; } public Criteria andDegreeEqualTo(String value) { addCriterion("degree =", value, "degree"); return (Criteria) this; } public Criteria andDegreeNotEqualTo(String value) { addCriterion("degree <>", value, "degree"); return (Criteria) this; } public Criteria andDegreeGreaterThan(String value) { addCriterion("degree >", value, "degree"); return (Criteria) this; } public Criteria andDegreeGreaterThanOrEqualTo(String value) { addCriterion("degree >=", value, "degree"); return (Criteria) this; } public Criteria andDegreeLessThan(String value) { addCriterion("degree <", value, "degree"); return (Criteria) this; } public Criteria andDegreeLessThanOrEqualTo(String value) { addCriterion("degree <=", value, "degree"); return (Criteria) this; } public Criteria andDegreeLike(String value) { addCriterion("degree like", value, "degree"); return (Criteria) this; } public Criteria andDegreeNotLike(String value) { addCriterion("degree not like", value, "degree"); return (Criteria) this; } public Criteria andDegreeIn(List values) { addCriterion("degree in", values, "degree"); return (Criteria) this; } public Criteria andDegreeNotIn(List values) { addCriterion("degree not in", values, "degree"); return (Criteria) this; } public Criteria andDegreeBetween(String value1, String value2) { addCriterion("degree between", value1, value2, "degree"); return (Criteria) this; } public Criteria andDegreeNotBetween(String value1, String value2) { addCriterion("degree not between", value1, value2, "degree"); return (Criteria) this; } public Criteria andTitleIsNull() { addCriterion("title is null"); return (Criteria) this; } public Criteria andTitleIsNotNull() { addCriterion("title is not null"); return (Criteria) this; } public Criteria andTitleEqualTo(String value) { addCriterion("title =", value, "title"); return (Criteria) this; } public Criteria andTitleNotEqualTo(String value) { addCriterion("title <>", value, "title"); return (Criteria) this; } public Criteria andTitleGreaterThan(String value) { addCriterion("title >", value, "title"); return (Criteria) this; } public Criteria andTitleGreaterThanOrEqualTo(String value) { addCriterion("title >=", value, "title"); return (Criteria) this; } public Criteria andTitleLessThan(String value) { addCriterion("title <", value, "title"); return (Criteria) this; } public Criteria andTitleLessThanOrEqualTo(String value) { addCriterion("title <=", value, "title"); return (Criteria) this; } public Criteria andTitleLike(String value) { addCriterion("title like", value, "title"); return (Criteria) this; } public Criteria andTitleNotLike(String value) { addCriterion("title not like", value, "title"); return (Criteria) this; } public Criteria andTitleIn(List values) { addCriterion("title in", values, "title"); return (Criteria) this; } public Criteria andTitleNotIn(List values) { addCriterion("title not in", values, "title"); return (Criteria) this; } public Criteria andTitleBetween(String value1, String value2) { addCriterion("title between", value1, value2, "title"); return (Criteria) this; } public Criteria andTitleNotBetween(String value1, String value2) { addCriterion("title not between", value1, value2, "title"); return (Criteria) this; } public Criteria andGradeIsNull() { addCriterion("grade is null"); return (Criteria) this; } public Criteria andGradeIsNotNull() { addCriterion("grade is not null"); return (Criteria) this; } public Criteria andGradeEqualTo(Date value) { addCriterionForJDBCDate("grade =", value, "grade"); return (Criteria) this; } public Criteria andGradeNotEqualTo(Date value) { addCriterionForJDBCDate("grade <>", value, "grade"); return (Criteria) this; } public Criteria andGradeGreaterThan(Date value) { addCriterionForJDBCDate("grade >", value, "grade"); return (Criteria) this; } public Criteria andGradeGreaterThanOrEqualTo(Date value) { addCriterionForJDBCDate("grade >=", value, "grade"); return (Criteria) this; } public Criteria andGradeLessThan(Date value) { addCriterionForJDBCDate("grade <", value, "grade"); return (Criteria) this; } public Criteria andGradeLessThanOrEqualTo(Date value) { addCriterionForJDBCDate("grade <=", value, "grade"); return (Criteria) this; } public Criteria andGradeIn(List values) { addCriterionForJDBCDate("grade in", values, "grade"); return (Criteria) this; } public Criteria andGradeNotIn(List values) { addCriterionForJDBCDate("grade not in", values, "grade"); return (Criteria) this; } public Criteria andGradeBetween(Date value1, Date value2) { addCriterionForJDBCDate("grade between", value1, value2, "grade"); return (Criteria) this; } public Criteria andGradeNotBetween(Date value1, Date value2) { addCriterionForJDBCDate("grade not between", value1, value2, "grade"); return (Criteria) this; } public Criteria andCollegeidIsNull() { addCriterion("collegeID is null"); return (Criteria) this; } public Criteria andCollegeidIsNotNull() { addCriterion("collegeID is not null"); return (Criteria) this; } public Criteria andCollegeidEqualTo(Integer value) { addCriterion("collegeID =", value, "collegeid"); return (Criteria) this; } public Criteria andCollegeidNotEqualTo(Integer value) { addCriterion("collegeID <>", value, "collegeid"); return (Criteria) this; } public Criteria andCollegeidGreaterThan(Integer value) { addCriterion("collegeID >", value, "collegeid"); return (Criteria) this; } public Criteria andCollegeidGreaterThanOrEqualTo(Integer value) { addCriterion("collegeID >=", value, "collegeid"); return (Criteria) this; } public Criteria andCollegeidLessThan(Integer value) { addCriterion("collegeID <", value, "collegeid"); return (Criteria) this; } public Criteria andCollegeidLessThanOrEqualTo(Integer value) { addCriterion("collegeID <=", value, "collegeid"); return (Criteria) this; } public Criteria andCollegeidIn(List values) { addCriterion("collegeID in", values, "collegeid"); return (Criteria) this; } public Criteria andCollegeidNotIn(List values) { addCriterion("collegeID not in", values, "collegeid"); return (Criteria) this; } public Criteria andCollegeidBetween(Integer value1, Integer value2) { addCriterion("collegeID between", value1, value2, "collegeid"); return (Criteria) this; } public Criteria andCollegeidNotBetween(Integer value1, Integer value2) { addCriterion("collegeID not between", value1, value2, "collegeid"); return (Criteria) this; } } public static class Criteria extends GeneratedCriteria { protected Criteria() { super(); } } public static class Criterion { private String condition; private Object value; private Object secondValue; private boolean noValue; private boolean singleValue; private boolean betweenValue; private boolean listValue; private String typeHandler; public String getCondition() { return condition; } public Object getValue() { return value; } public Object getSecondValue() { return secondValue; } public boolean isNoValue() { return noValue; } public boolean isSingleValue() { return singleValue; } public boolean isBetweenValue() { return betweenValue; } public boolean isListValue() { return listValue; } public String getTypeHandler() { return typeHandler; } protected Criterion(String condition) { super(); this.condition = condition; this.typeHandler = null; this.noValue = true; } protected Criterion(String condition, Object value, String typeHandler) { super(); this.condition = condition; this.value = value; this.typeHandler = typeHandler; if (value instanceof List) { this.listValue = true; } else { this.singleValue = true; } } protected Criterion(String condition, Object value) { this(condition, value, null); } protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { super(); this.condition = condition; this.value = value; this.secondValue = secondValue; this.typeHandler = typeHandler; this.betweenValue = true; } protected Criterion(String condition, Object value, Object secondValue) { this(condition, value, secondValue, null); } } } ================================================ FILE: src/main/java/com/system/po/Userlogin.java ================================================ package com.system.po; public class Userlogin { private Integer userid; private String username; private String password; private Integer role; public Integer getUserid() { return userid; } public void setUserid(Integer userid) { this.userid = userid; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username == null ? null : username.trim(); } public String getPassword() { return password; } public void setPassword(String password) { this.password = password == null ? null : password.trim(); } public Integer getRole() { return role; } public void setRole(Integer role) { this.role = role; } } ================================================ FILE: src/main/java/com/system/po/UserloginCustom.java ================================================ package com.system.po; /** * Userlogin扩展类 */ public class UserloginCustom extends Userlogin { private Role role_ob; public void setRole(Role role) { this.role_ob = role_ob; } public Role getRole_ob() { return role_ob; } } ================================================ FILE: src/main/java/com/system/po/UserloginExample.java ================================================ package com.system.po; import java.util.ArrayList; import java.util.List; public class UserloginExample { protected String orderByClause; protected boolean distinct; protected List oredCriteria; public UserloginExample() { oredCriteria = new ArrayList(); } public void setOrderByClause(String orderByClause) { this.orderByClause = orderByClause; } public String getOrderByClause() { return orderByClause; } public void setDistinct(boolean distinct) { this.distinct = distinct; } public boolean isDistinct() { return distinct; } public List getOredCriteria() { return oredCriteria; } public void or(Criteria criteria) { oredCriteria.add(criteria); } public Criteria or() { Criteria criteria = createCriteriaInternal(); oredCriteria.add(criteria); return criteria; } public Criteria createCriteria() { Criteria criteria = createCriteriaInternal(); if (oredCriteria.size() == 0) { oredCriteria.add(criteria); } return criteria; } protected Criteria createCriteriaInternal() { Criteria criteria = new Criteria(); return criteria; } public void clear() { oredCriteria.clear(); orderByClause = null; distinct = false; } protected abstract static class GeneratedCriteria { protected List criteria; protected GeneratedCriteria() { super(); criteria = new ArrayList(); } public boolean isValid() { return criteria.size() > 0; } public List getAllCriteria() { return criteria; } public List getCriteria() { return criteria; } protected void addCriterion(String condition) { if (condition == null) { throw new RuntimeException("Value for condition cannot be null"); } criteria.add(new Criterion(condition)); } protected void addCriterion(String condition, Object value, String property) { if (value == null) { throw new RuntimeException("Value for " + property + " cannot be null"); } criteria.add(new Criterion(condition, value)); } protected void addCriterion(String condition, Object value1, Object value2, String property) { if (value1 == null || value2 == null) { throw new RuntimeException("Between values for " + property + " cannot be null"); } criteria.add(new Criterion(condition, value1, value2)); } public Criteria andUseridIsNull() { addCriterion("userID is null"); return (Criteria) this; } public Criteria andUseridIsNotNull() { addCriterion("userID is not null"); return (Criteria) this; } public Criteria andUseridEqualTo(Integer value) { addCriterion("userID =", value, "userid"); return (Criteria) this; } public Criteria andUseridNotEqualTo(Integer value) { addCriterion("userID <>", value, "userid"); return (Criteria) this; } public Criteria andUseridGreaterThan(Integer value) { addCriterion("userID >", value, "userid"); return (Criteria) this; } public Criteria andUseridGreaterThanOrEqualTo(Integer value) { addCriterion("userID >=", value, "userid"); return (Criteria) this; } public Criteria andUseridLessThan(Integer value) { addCriterion("userID <", value, "userid"); return (Criteria) this; } public Criteria andUseridLessThanOrEqualTo(Integer value) { addCriterion("userID <=", value, "userid"); return (Criteria) this; } public Criteria andUseridIn(List values) { addCriterion("userID in", values, "userid"); return (Criteria) this; } public Criteria andUseridNotIn(List values) { addCriterion("userID not in", values, "userid"); return (Criteria) this; } public Criteria andUseridBetween(Integer value1, Integer value2) { addCriterion("userID between", value1, value2, "userid"); return (Criteria) this; } public Criteria andUseridNotBetween(Integer value1, Integer value2) { addCriterion("userID not between", value1, value2, "userid"); return (Criteria) this; } public Criteria andUsernameIsNull() { addCriterion("userName is null"); return (Criteria) this; } public Criteria andUsernameIsNotNull() { addCriterion("userName is not null"); return (Criteria) this; } public Criteria andUsernameEqualTo(String value) { addCriterion("userName =", value, "username"); return (Criteria) this; } public Criteria andUsernameNotEqualTo(String value) { addCriterion("userName <>", value, "username"); return (Criteria) this; } public Criteria andUsernameGreaterThan(String value) { addCriterion("userName >", value, "username"); return (Criteria) this; } public Criteria andUsernameGreaterThanOrEqualTo(String value) { addCriterion("userName >=", value, "username"); return (Criteria) this; } public Criteria andUsernameLessThan(String value) { addCriterion("userName <", value, "username"); return (Criteria) this; } public Criteria andUsernameLessThanOrEqualTo(String value) { addCriterion("userName <=", value, "username"); return (Criteria) this; } public Criteria andUsernameLike(String value) { addCriterion("userName like", value, "username"); return (Criteria) this; } public Criteria andUsernameNotLike(String value) { addCriterion("userName not like", value, "username"); return (Criteria) this; } public Criteria andUsernameIn(List values) { addCriterion("userName in", values, "username"); return (Criteria) this; } public Criteria andUsernameNotIn(List values) { addCriterion("userName not in", values, "username"); return (Criteria) this; } public Criteria andUsernameBetween(String value1, String value2) { addCriterion("userName between", value1, value2, "username"); return (Criteria) this; } public Criteria andUsernameNotBetween(String value1, String value2) { addCriterion("userName not between", value1, value2, "username"); return (Criteria) this; } public Criteria andPasswordIsNull() { addCriterion("password is null"); return (Criteria) this; } public Criteria andPasswordIsNotNull() { addCriterion("password is not null"); return (Criteria) this; } public Criteria andPasswordEqualTo(String value) { addCriterion("password =", value, "password"); return (Criteria) this; } public Criteria andPasswordNotEqualTo(String value) { addCriterion("password <>", value, "password"); return (Criteria) this; } public Criteria andPasswordGreaterThan(String value) { addCriterion("password >", value, "password"); return (Criteria) this; } public Criteria andPasswordGreaterThanOrEqualTo(String value) { addCriterion("password >=", value, "password"); return (Criteria) this; } public Criteria andPasswordLessThan(String value) { addCriterion("password <", value, "password"); return (Criteria) this; } public Criteria andPasswordLessThanOrEqualTo(String value) { addCriterion("password <=", value, "password"); return (Criteria) this; } public Criteria andPasswordLike(String value) { addCriterion("password like", value, "password"); return (Criteria) this; } public Criteria andPasswordNotLike(String value) { addCriterion("password not like", value, "password"); return (Criteria) this; } public Criteria andPasswordIn(List values) { addCriterion("password in", values, "password"); return (Criteria) this; } public Criteria andPasswordNotIn(List values) { addCriterion("password not in", values, "password"); return (Criteria) this; } public Criteria andPasswordBetween(String value1, String value2) { addCriterion("password between", value1, value2, "password"); return (Criteria) this; } public Criteria andPasswordNotBetween(String value1, String value2) { addCriterion("password not between", value1, value2, "password"); return (Criteria) this; } public Criteria andRoleIsNull() { addCriterion("role is null"); return (Criteria) this; } public Criteria andRoleIsNotNull() { addCriterion("role is not null"); return (Criteria) this; } public Criteria andRoleEqualTo(Integer value) { addCriterion("role =", value, "role"); return (Criteria) this; } public Criteria andRoleNotEqualTo(Integer value) { addCriterion("role <>", value, "role"); return (Criteria) this; } public Criteria andRoleGreaterThan(Integer value) { addCriterion("role >", value, "role"); return (Criteria) this; } public Criteria andRoleGreaterThanOrEqualTo(Integer value) { addCriterion("role >=", value, "role"); return (Criteria) this; } public Criteria andRoleLessThan(Integer value) { addCriterion("role <", value, "role"); return (Criteria) this; } public Criteria andRoleLessThanOrEqualTo(Integer value) { addCriterion("role <=", value, "role"); return (Criteria) this; } public Criteria andRoleIn(List values) { addCriterion("role in", values, "role"); return (Criteria) this; } public Criteria andRoleNotIn(List values) { addCriterion("role not in", values, "role"); return (Criteria) this; } public Criteria andRoleBetween(Integer value1, Integer value2) { addCriterion("role between", value1, value2, "role"); return (Criteria) this; } public Criteria andRoleNotBetween(Integer value1, Integer value2) { addCriterion("role not between", value1, value2, "role"); return (Criteria) this; } } public static class Criteria extends GeneratedCriteria { protected Criteria() { super(); } } public static class Criterion { private String condition; private Object value; private Object secondValue; private boolean noValue; private boolean singleValue; private boolean betweenValue; private boolean listValue; private String typeHandler; public String getCondition() { return condition; } public Object getValue() { return value; } public Object getSecondValue() { return secondValue; } public boolean isNoValue() { return noValue; } public boolean isSingleValue() { return singleValue; } public boolean isBetweenValue() { return betweenValue; } public boolean isListValue() { return listValue; } public String getTypeHandler() { return typeHandler; } protected Criterion(String condition) { super(); this.condition = condition; this.typeHandler = null; this.noValue = true; } protected Criterion(String condition, Object value, String typeHandler) { super(); this.condition = condition; this.value = value; this.typeHandler = typeHandler; if (value instanceof List) { this.listValue = true; } else { this.singleValue = true; } } protected Criterion(String condition, Object value) { this(condition, value, null); } protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { super(); this.condition = condition; this.value = value; this.secondValue = secondValue; this.typeHandler = typeHandler; this.betweenValue = true; } protected Criterion(String condition, Object value, Object secondValue) { this(condition, value, secondValue, null); } } } ================================================ FILE: src/main/java/com/system/realm/LoginRealm.java ================================================ package com.system.realm; import com.system.mapper.UserloginMapper; import com.system.po.Role; import com.system.po.Userlogin; import com.system.service.RoleService; import com.system.service.UserloginService; import org.apache.shiro.authc.*; import org.apache.shiro.authz.AuthorizationInfo; import org.apache.shiro.authz.SimpleAuthorizationInfo; import org.apache.shiro.realm.AuthorizingRealm; import org.apache.shiro.subject.PrincipalCollection; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.HashSet; import java.util.Set; /** * Created by Jacey on 2017/6/30. */ @Component public class LoginRealm extends AuthorizingRealm{ @Resource(name = "userloginServiceImpl") private UserloginService userloginService; @Resource(name = "roleServiceImpl") private RoleService roleService; /** * 获取身份信息,我们可以在这个方法中,从数据库获取该用户的权限和角色信息 * 当调用权限验证时,就会调用此方法 */ protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) { String username = (String) getAvailablePrincipal(principalCollection); Role role = null; try { Userlogin userlogin = userloginService.findByName(username); //获取角色对象 role = roleService.findByid(userlogin.getRole()); } catch (Exception e) { e.printStackTrace(); } //通过用户名从数据库获取权限/角色信息 SimpleAuthorizationInfo info = new SimpleAuthorizationInfo(); Set r = new HashSet(); if (role != null) { r.add(role.getRolename()); info.setRoles(r); } return info; } /** * 在这个方法中,进行身份验证 * login时调用 */ protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException { //用户名 String username = (String) token.getPrincipal(); //密码 String password = new String((char[])token.getCredentials()); Userlogin userlogin = null; try { userlogin = userloginService.findByName(username); } catch (Exception e) { e.printStackTrace(); } if (userlogin == null) { //没有该用户名 throw new UnknownAccountException(); } else if (!password.equals(userlogin.getPassword())) { //密码错误 throw new IncorrectCredentialsException(); } //身份验证通过,返回一个身份信息 AuthenticationInfo aInfo = new SimpleAuthenticationInfo(username,password,getName()); return aInfo; } } ================================================ FILE: src/main/java/com/system/service/CollegeService.java ================================================ package com.system.service; import com.system.po.College; import java.util.List; /** * Created by Jacey on 2017/6/30. */ public interface CollegeService { List finAll() throws Exception; } ================================================ FILE: src/main/java/com/system/service/CourseService.java ================================================ package com.system.service; import com.system.po.CourseCustom; import java.util.List; /** * CourseService课程信息. */ public interface CourseService { //根据id更新课程信息 void upadteById(Integer id, CourseCustom courseCustom) throws Exception; //根据id删除课程信息 Boolean removeById(Integer id) throws Exception; //获取分页查询课程信息 List findByPaging(Integer toPageNo) throws Exception; //插入课程信息 Boolean save(CourseCustom couseCustom) throws Exception; //获取课程总数 int getCountCouse() throws Exception; //根据id查询 CourseCustom findById(Integer id) throws Exception; //根据名字查询 List findByName(String name) throws Exception; //根据教师id查找课程 List findByTeacherID(Integer id) throws Exception; } ================================================ FILE: src/main/java/com/system/service/RoleService.java ================================================ package com.system.service; import com.system.po.Role; /** * Role 权限表Service层 */ public interface RoleService { Role findByid(Integer id) throws Exception; } ================================================ FILE: src/main/java/com/system/service/SelectedCourseService.java ================================================ package com.system.service; import com.system.po.SelectedCourseCustom; import com.system.po.StudentCustom; import java.util.List; /** * 选课表servic层 */ public interface SelectedCourseService { //根据课程ID查询课程 List findByCourseID(Integer id) throws Exception; //根据课程id分页查询课程 List findByCourseIDPaging(Integer page, Integer id) throws Exception; //获取该课程学生数 Integer countByCourseID(Integer id) throws Exception; //查询指定学生成绩 SelectedCourseCustom findOne(SelectedCourseCustom selectedCourseCustom) throws Exception; //打分 void updataOne(SelectedCourseCustom selectedCourseCustom) throws Exception; //选课 void save(SelectedCourseCustom selectedCourseCustom) throws Exception; //根据学生id查找课程 List findByStudentID(Integer id) throws Exception; //退课 void remove(SelectedCourseCustom selectedCourseCustom) throws Exception; } ================================================ FILE: src/main/java/com/system/service/StudentService.java ================================================ package com.system.service; import com.system.po.StudentCustom; import java.util.List; /** * Student学生Service层 */ public interface StudentService { //根据id个更新学生信息 void updataById(Integer id, StudentCustom studentCustom) throws Exception; //根据id删除学生信息 void removeById(Integer id) throws Exception; //获取分页查询学生信息 List findByPaging(Integer toPageNo) throws Exception; //保存学生信息 Boolean save(StudentCustom studentCustoms) throws Exception; //获取学生总数 int getCountStudent() throws Exception; //根据id获取学生信息 StudentCustom findById(Integer id) throws Exception; //根据名字模糊查询 List findByName(String name) throws Exception; // 一对多查询,查询该学生的选课信息 StudentCustom findStudentAndSelectCourseListByName(String name) throws Exception; } ================================================ FILE: src/main/java/com/system/service/TeacherService.java ================================================ package com.system.service; import com.system.mapper.TeacherMapper; import com.system.po.TeacherCustom; import org.springframework.beans.factory.annotation.Autowired; import java.util.List; /** * Teacher老师Service层 */ public interface TeacherService { //根据id更新老师信息 void updateById(Integer id, TeacherCustom teacherCustom) throws Exception; //根据id删除老师信息 void removeById(Integer id) throws Exception; //获取分页查询老师信息 List findByPaging(Integer toPageNo) throws Exception; //保存老师信息 Boolean save(TeacherCustom teacherCustom) throws Exception; //获取老师总数 int getCountTeacher() throws Exception; //根据id查询 TeacherCustom findById(Integer id) throws Exception; //根据名字查询 List findByName(String name) throws Exception; //获取全部教师 List findAll() throws Exception; } ================================================ FILE: src/main/java/com/system/service/UserloginService.java ================================================ package com.system.service; import com.system.po.Userlogin; /** * * */ public interface UserloginService { //根据名字查找用户 Userlogin findByName(String name) throws Exception; //保存用户登录信息 void save(Userlogin userlogin) throws Exception; //根据姓名删除 void removeByName(String name) throws Exception; //根据用户名更新 void updateByName(String name, Userlogin userlogin); } ================================================ FILE: src/main/java/com/system/service/impl/CollegeServiceImpl.java ================================================ package com.system.service.impl; import com.system.mapper.CollegeMapper; import com.system.po.College; import com.system.po.CollegeExample; import com.system.service.CollegeService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; /** * Created by Jacey on 2017/6/30. */ @Service public class CollegeServiceImpl implements CollegeService { @Autowired private CollegeMapper collegeMapper; public List finAll() throws Exception { CollegeExample collegeExample = new CollegeExample(); CollegeExample.Criteria criteria = collegeExample.createCriteria(); criteria.andCollegeidIsNotNull(); return collegeMapper.selectByExample(collegeExample); } } ================================================ FILE: src/main/java/com/system/service/impl/CourseServiceImpl.java ================================================ package com.system.service.impl; import com.system.mapper.CollegeMapper; import com.system.mapper.CourseMapper; import com.system.mapper.CourseMapperCustom; import com.system.mapper.SelectedcourseMapper; import com.system.po.*; import com.system.service.CourseService; import org.apache.commons.beanutils.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; /** * Created by Jacey on 2017/6/29. */ @Service public class CourseServiceImpl implements CourseService { @Autowired private CourseMapper courseMapper; @Autowired private CourseMapperCustom courseMapperCustom; @Autowired private CollegeMapper collegeMapper; @Autowired private SelectedcourseMapper selectedcourseMapper; public void upadteById(Integer id, CourseCustom courseCustom) throws Exception { courseMapper.updateByPrimaryKey(courseCustom); } public Boolean removeById(Integer id) throws Exception { //自定义查询条件 SelectedcourseExample example = new SelectedcourseExample(); SelectedcourseExample.Criteria criteria = example.createCriteria(); criteria.andCourseidEqualTo(id); List list = selectedcourseMapper.selectByExample(example); if (list.size() == 0) { courseMapper.deleteByPrimaryKey(id); return true; } return false; } public List findByPaging(Integer toPageNo) throws Exception { PagingVO pagingVO = new PagingVO(); pagingVO.setToPageNo(toPageNo); List list = courseMapperCustom.findByPaging(pagingVO); return list; } public Boolean save(CourseCustom couseCustom) throws Exception { Course course = courseMapper.selectByPrimaryKey(couseCustom.getCourseid()); if (course == null) { courseMapper.insert(couseCustom); return true; } return false; } public int getCountCouse() throws Exception { //自定义查询对象 CourseExample courseExample = new CourseExample(); //通过criteria构造查询条件 CourseExample.Criteria criteria = courseExample.createCriteria(); criteria.andCoursenameIsNotNull(); return courseMapper.countByExample(courseExample); } public CourseCustom findById(Integer id) throws Exception { Course course = courseMapper.selectByPrimaryKey(id); CourseCustom courseCustom = null; if (course != null) { courseCustom = new CourseCustom(); BeanUtils.copyProperties(courseCustom, course); } return courseCustom; } public List findByName(String name) throws Exception { CourseExample courseExample = new CourseExample(); //自定义查询条件 CourseExample.Criteria criteria = courseExample.createCriteria(); criteria.andCoursenameLike("%" + name + "%"); List list = courseMapper.selectByExample(courseExample); List courseCustomList = null; if (list != null) { courseCustomList = new ArrayList(); for (Course c : list) { CourseCustom courseCustom = new CourseCustom(); //类拷贝 org.springframework.beans.BeanUtils.copyProperties(c, courseCustom); //获取课程名 College college = collegeMapper.selectByPrimaryKey(c.getCollegeid()); courseCustom.setcollegeName(college.getCollegename()); courseCustomList.add(courseCustom); } } return courseCustomList; } public List findByTeacherID(Integer id) throws Exception { CourseExample courseExample = new CourseExample(); //自定义查询条件 CourseExample.Criteria criteria = courseExample.createCriteria(); //根据教师id查课程 criteria.andTeacheridEqualTo(id); List list = courseMapper.selectByExample(courseExample); List courseCustomList = null; if (list.size() > 0) { courseCustomList = new ArrayList(); for (Course c : list) { CourseCustom courseCustom = new CourseCustom(); //类拷贝 BeanUtils.copyProperties(courseCustom, c); //获取课程名 College college = collegeMapper.selectByPrimaryKey(c.getCollegeid()); courseCustom.setcollegeName(college.getCollegename()); courseCustomList.add(courseCustom); } } return courseCustomList; } } ================================================ FILE: src/main/java/com/system/service/impl/RoleServiceImpl.java ================================================ package com.system.service.impl; import com.system.mapper.RoleMapper; import com.system.po.Role; import com.system.service.RoleService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** * Created by Jacey on 2017/6/29. */ @Service public class RoleServiceImpl implements RoleService { @Autowired private RoleMapper roleMapper; public Role findByid(Integer id) throws Exception { return roleMapper.selectByPrimaryKey(id); } } ================================================ FILE: src/main/java/com/system/service/impl/SelectedCourseServiceImpl.java ================================================ package com.system.service.impl; import com.system.mapper.SelectedcourseMapper; import com.system.mapper.StudentMapper; import com.system.po.*; import com.system.service.CourseService; import com.system.service.SelectedCourseService; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; /** * Created by Jacey on 2017/6/29. */ @Service public class SelectedCourseServiceImpl implements SelectedCourseService { @Autowired private SelectedcourseMapper selectedcourseMapper; @Autowired private StudentMapper studentMapper; // @Resource(name = "courseServiceImpl") // private CourseService courseService; public List findByCourseID(Integer id) throws Exception { SelectedcourseExample example = new SelectedcourseExample(); SelectedcourseExample.Criteria criteria = example.createCriteria(); criteria.andCourseidEqualTo(id); List list = selectedcourseMapper.selectByExample(example); List secList = new ArrayList(); for (Selectedcourse s: list) { SelectedCourseCustom sec = new SelectedCourseCustom(); BeanUtils.copyProperties(s, sec); //判断是否完成类该课程 if (sec.getMark() != null) { sec.setOver(true); } Student student = studentMapper.selectByPrimaryKey(sec.getStudentid()); StudentCustom studentCustom = new StudentCustom(); BeanUtils.copyProperties(student, studentCustom); sec.setStudentCustom(studentCustom); secList.add(sec); } return secList; } public List findByCourseIDPaging(Integer page, Integer id) throws Exception { return null; } //获取该课程学生数 public Integer countByCourseID(Integer id) throws Exception { SelectedcourseExample example = new SelectedcourseExample(); SelectedcourseExample.Criteria criteria = example.createCriteria(); criteria.andCourseidEqualTo(id); return selectedcourseMapper.countByExample(example); } //查询指定学生成绩 public SelectedCourseCustom findOne(SelectedCourseCustom selectedCourseCustom) throws Exception { SelectedcourseExample example = new SelectedcourseExample(); SelectedcourseExample.Criteria criteria = example.createCriteria(); criteria.andCourseidEqualTo(selectedCourseCustom.getCourseid()); criteria.andStudentidEqualTo(selectedCourseCustom.getStudentid()); List list = selectedcourseMapper.selectByExample(example); if (list.size() > 0) { SelectedCourseCustom sc = new SelectedCourseCustom(); BeanUtils.copyProperties(list.get(0), sc); Student student = studentMapper.selectByPrimaryKey(selectedCourseCustom.getStudentid()); StudentCustom studentCustom = new StudentCustom(); BeanUtils.copyProperties(student, studentCustom); sc.setStudentCustom(studentCustom); return sc; } return null; } public void updataOne(SelectedCourseCustom selectedCourseCustom) throws Exception { SelectedcourseExample example = new SelectedcourseExample(); SelectedcourseExample.Criteria criteria = example.createCriteria(); criteria.andCourseidEqualTo(selectedCourseCustom.getCourseid()); criteria.andStudentidEqualTo(selectedCourseCustom.getStudentid()); selectedcourseMapper.updateByExample(selectedCourseCustom, example); } public void save(SelectedCourseCustom selectedCourseCustom) throws Exception { selectedcourseMapper.insert(selectedCourseCustom); } public List findByStudentID(Integer id) throws Exception { return null; } public void remove(SelectedCourseCustom selectedCourseCustom) throws Exception { SelectedcourseExample example = new SelectedcourseExample(); SelectedcourseExample.Criteria criteria = example.createCriteria(); criteria.andCourseidEqualTo(selectedCourseCustom.getCourseid()); criteria.andStudentidEqualTo(selectedCourseCustom.getStudentid()); selectedcourseMapper.deleteByExample(example); } } ================================================ FILE: src/main/java/com/system/service/impl/StudentServiceImpl.java ================================================ package com.system.service.impl; import com.system.mapper.CollegeMapper; import com.system.mapper.StudentMapper; import com.system.mapper.StudentMapperCustom; import com.system.po.*; import com.system.service.StudentService; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; /** * Student */ @Service public class StudentServiceImpl implements StudentService { //使用spring 自动注入 @Autowired private StudentMapperCustom studentMapperCustom; @Autowired private StudentMapper studentMapper; @Autowired private CollegeMapper collegeMapper; public void updataById(Integer id, StudentCustom studentCustom) throws Exception { studentMapper.updateByPrimaryKey(studentCustom); } public void removeById(Integer id) throws Exception { studentMapper.deleteByPrimaryKey(id); } public List findByPaging(Integer toPageNo) throws Exception { PagingVO pagingVO = new PagingVO(); pagingVO.setToPageNo(toPageNo); List list = studentMapperCustom.findByPaging(pagingVO); return list; } public Boolean save(StudentCustom studentCustoms) throws Exception { Student stu = studentMapper.selectByPrimaryKey(studentCustoms.getUserid()); if (stu == null) { studentMapper.insert(studentCustoms); return true; } return false; } //返回学生总数 public int getCountStudent() throws Exception { //自定义查询对象 StudentExample studentExample = new StudentExample(); //通过criteria构造查询条件 StudentExample.Criteria criteria = studentExample.createCriteria(); criteria.andUseridIsNotNull(); return studentMapper.countByExample(studentExample); } public StudentCustom findById(Integer id) throws Exception { Student student = studentMapper.selectByPrimaryKey(id); StudentCustom studentCustom = null; if (student != null) { studentCustom = new StudentCustom(); //类拷贝 BeanUtils.copyProperties(student, studentCustom); } return studentCustom; } //模糊查询 public List findByName(String name) throws Exception { StudentExample studentExample = new StudentExample(); //自定义查询条件 StudentExample.Criteria criteria = studentExample.createCriteria(); criteria.andUsernameLike("%" + name + "%"); List list = studentMapper.selectByExample(studentExample); List studentCustomList = null; if (list != null) { studentCustomList = new ArrayList(); for (Student s : list) { StudentCustom studentCustom = new StudentCustom(); //类拷贝 BeanUtils.copyProperties(s, studentCustom); //获取课程名 College college = collegeMapper.selectByPrimaryKey(s.getCollegeid()); studentCustom.setcollegeName(college.getCollegename()); studentCustomList.add(studentCustom); } } return studentCustomList; } public StudentCustom findStudentAndSelectCourseListByName(String name) throws Exception { StudentCustom studentCustom = studentMapperCustom.findStudentAndSelectCourseListById(Integer.parseInt(name)); List list = studentCustom.getSelectedCourseList(); // 判断该课程是否修完 for (SelectedCourseCustom s : list) { if (s.getMark() != null) { s.setOver(true); } } return studentCustom; } } ================================================ FILE: src/main/java/com/system/service/impl/TeacherServiceImpl.java ================================================ package com.system.service.impl; import com.system.exception.CustomException; import com.system.mapper.CollegeMapper; import com.system.mapper.CourseMapper; import com.system.mapper.TeacherMapper; import com.system.mapper.TeacherMapperCustom; import com.system.po.*; import com.system.service.TeacherService; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; /** * Created by Jacey on 2017/6/29. */ @Service public class TeacherServiceImpl implements TeacherService { @Autowired private TeacherMapper teacherMapper; @Autowired private TeacherMapperCustom teacherMapperCustom; @Autowired private CollegeMapper collegeMapper; @Autowired private CourseMapper courseMapper; public void updateById(Integer id, TeacherCustom teacherCustom) throws Exception { teacherMapper.updateByPrimaryKey(teacherCustom); } public void removeById(Integer id) throws Exception { CourseExample courseExample = new CourseExample(); CourseExample.Criteria criteria = courseExample.createCriteria(); criteria.andTeacheridEqualTo(id); List list = courseMapper.selectByExample(courseExample); if (list.size() != 0) { throw new CustomException("请先删除该名老师所教授的课程"); } teacherMapper.deleteByPrimaryKey(id); } public List findByPaging(Integer toPageNo) throws Exception { PagingVO pagingVO = new PagingVO(); pagingVO.setToPageNo(toPageNo); List list = teacherMapperCustom.findByPaging(pagingVO); return list; } public Boolean save(TeacherCustom teacherCustom) throws Exception { Teacher tea = teacherMapper.selectByPrimaryKey(teacherCustom.getUserid()); if (tea == null) { teacherMapper.insert(teacherCustom); return true; } return false; } public int getCountTeacher() throws Exception { //自定义查询对象 TeacherExample teacherExample = new TeacherExample(); //通过criteria构造查询条件 TeacherExample.Criteria criteria = teacherExample.createCriteria(); criteria.andUseridIsNotNull(); return teacherMapper.countByExample(teacherExample); } public TeacherCustom findById(Integer id) throws Exception { Teacher teacher = teacherMapper.selectByPrimaryKey(id); TeacherCustom teacherCustom = null; if (teacher != null) { teacherCustom = new TeacherCustom(); BeanUtils.copyProperties(teacher, teacherCustom); } return teacherCustom; } public List findByName(String name) throws Exception { TeacherExample teacherExample = new TeacherExample(); //自定义查询条件 TeacherExample.Criteria criteria = teacherExample.createCriteria(); criteria.andUsernameLike("%" + name + "%"); List list = teacherMapper.selectByExample(teacherExample); List teacherCustomList = null; if (list != null) { teacherCustomList = new ArrayList(); for (Teacher t : list) { TeacherCustom teacherCustom = new TeacherCustom(); //类拷贝 BeanUtils.copyProperties(t, teacherCustom); //获取课程名 College college = collegeMapper.selectByPrimaryKey(t.getCollegeid()); teacherCustom.setcollegeName(college.getCollegename()); teacherCustomList.add(teacherCustom); } } return teacherCustomList; } public List findAll() throws Exception { TeacherExample teacherExample = new TeacherExample(); TeacherExample.Criteria criteria = teacherExample.createCriteria(); criteria.andUsernameIsNotNull(); List list = teacherMapper.selectByExample(teacherExample); List teacherCustomsList = null; if (list != null) { teacherCustomsList = new ArrayList(); for (Teacher t: list) { TeacherCustom teacherCustom = new TeacherCustom(); BeanUtils.copyProperties(t, teacherCustom); teacherCustomsList.add(teacherCustom); } } return teacherCustomsList; } } ================================================ FILE: src/main/java/com/system/service/impl/UserloginServiceImpl.java ================================================ package com.system.service.impl; import com.system.mapper.UserloginMapper; import com.system.po.Userlogin; import com.system.po.UserloginExample; import com.system.service.UserloginService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; /** * Created by Jacey on 2017/6/29. */ @Service public class UserloginServiceImpl implements UserloginService { @Autowired private UserloginMapper userloginMapper; public Userlogin findByName(String name) throws Exception { UserloginExample userloginExample = new UserloginExample(); UserloginExample.Criteria criteria = userloginExample.createCriteria(); criteria.andUsernameEqualTo(name); List list = userloginMapper.selectByExample(userloginExample); return list.get(0); } public void save(Userlogin userlogin) throws Exception { userloginMapper.insert(userlogin); } public void removeByName(String name) throws Exception { UserloginExample userloginExample = new UserloginExample(); UserloginExample.Criteria criteria = userloginExample.createCriteria(); criteria.andUsernameEqualTo(name); userloginMapper.deleteByExample(userloginExample); } public void updateByName(String name, Userlogin userlogin) { UserloginExample userloginExample = new UserloginExample(); UserloginExample.Criteria criteria = userloginExample.createCriteria(); criteria.andUsernameEqualTo(name); userloginMapper.updateByExample(userlogin, userloginExample); } } ================================================ FILE: src/main/resources/log4j.properties ================================================ ### direct log messages to stdout ### log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.err log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n ### direct messages to file mylog.log ### log4j.appender.file=org.apache.log4j.FileAppender log4j.appender.file.File=c:\mylog.log log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n ### set log levels - for more verbose logging change 'info' to 'debug' ### log4j.rootLogger=info, stdout ================================================ FILE: src/main/resources/mybatis/mybatis.cfg.xml ================================================ ================================================ FILE: src/main/resources/mysql.properties ================================================ jdbc.driver = com.mysql.jdbc.Driver jdbc.url = jdbc:mysql://localhost:3306/examination_system jdbc.username = root jdbc.password = root ================================================ FILE: src/main/resources/spring/applicationContext-dao.xml ================================================ ================================================ FILE: src/main/resources/spring/applicationContext-service.xml ================================================ ================================================ FILE: src/main/resources/spring/applicationContext-shiro.xml ================================================ #这里相当于ini配置文件中的[urls] #url=拦截器[参数],拦截器 # /techer/** = authc, perms[document:read] # 如果用户没有该角色,然后访问该 路径 会报 401错误 /admin/** = authc, roles[admin] /techer/** = authc, roles[teacher] /student/** = authc, roles[student] # 当访问login时,不用进行认证(anon表示匿名) /login = anon /logout = logout # 配置静态资源可以匿名访问 /css/** = anon /js/** = anon /images/** = anon /fonts/** = anon # 除了上面额 /login 可以匿名访问,其他路径都需要登录访问 # 如果没登录,就访问其他路径会跳转到 /login 登录 /** = authc ================================================ FILE: src/main/resources/spring/applicationContext-trsaction.xml ================================================ ================================================ FILE: src/main/resources/spring/springmvc.xml ================================================ ================================================ FILE: src/main/webapp/WEB-INF/classes/spring/applicationContext-dao.xml ================================================ ================================================ FILE: src/main/webapp/WEB-INF/classes/spring/applicationContext-service.xml ================================================ ================================================ FILE: src/main/webapp/WEB-INF/classes/spring/applicationContext-shiro.xml ================================================ #这里相当于ini配置文件中的[urls] #url=拦截器[参数],拦截器 # /techer/** = authc, perms[document:read] # 如果用户没有该角色,然后访问该 路径 会报 401错误 /admin/** = authc, roles[admin] /techer/** = authc, roles[teacher] /student/** = authc, roles[student] # 当访问login时,不用进行认证(anon表示匿名) /login = anon /logout = logout # 配置静态资源可以匿名访问 /css/** = anon /js/** = anon /images/** = anon /fonts/** = anon # 除了上面额 /login 可以匿名访问,其他路径都需要登录访问 # 如果没登录,就访问其他路径会跳转到 /login 登录 /** = authc ================================================ FILE: src/main/webapp/WEB-INF/classes/spring/applicationContext-trsaction.xml ================================================ ================================================ FILE: src/main/webapp/WEB-INF/jsp/admin/addCourse.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

添加课程信息

================================================ FILE: src/main/webapp/WEB-INF/jsp/admin/addStudent.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

添加学生信息

value="${student.userid}" >
value="${student.username}" >
================================================ FILE: src/main/webapp/WEB-INF/jsp/admin/addTeacher.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

添加教师信息

================================================ FILE: src/main/webapp/WEB-INF/jsp/admin/editCourse.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

修改课程信息

================================================ FILE: src/main/webapp/WEB-INF/jsp/admin/editStudent.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>

修改学生信息

value="${student.userid}" >
" name="birthyear"/>
" name="grade"/>
================================================ FILE: src/main/webapp/WEB-INF/jsp/admin/editTeacher.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>

修改教师信息

" name="birthyear"/>
" name="grade"/>
================================================ FILE: src/main/webapp/WEB-INF/jsp/admin/menu.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %> ================================================ FILE: src/main/webapp/WEB-INF/jsp/admin/passwordRest.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %>

重置密码

================================================ FILE: src/main/webapp/WEB-INF/jsp/admin/showCourse.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> 课程信息显示 <%----%>

课程名单管理

搜索
课程号 课程名称 授课老师编号 上课时间 上课地点 周数 课程类型 学分 操作
${item.courseid} ${item.coursename} ${item.teacherid} ${item.coursetime} ${item.classroom} ${item.courseweek} ${item.coursetype} ${item.score}
================================================ FILE: src/main/webapp/WEB-INF/jsp/admin/showStudent.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> 学生信息显示 <%----%>

学生名单管理

搜索
学号 姓名 性别 出生年份 入学时间 学院 操作
${item.userid} ${item.username} ${item.sex} ${item.collegeName}
================================================ FILE: src/main/webapp/WEB-INF/jsp/admin/showTeacher.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> 教师信息显示 <%----%>

教师名单管理

搜索
教师编号 姓名 性别 出生年份 学历 职称 入职年份 学院 操作
${item.userid} ${item.username} ${item.sex} ${item.degree} ${item.title} ${item.collegeName}
================================================ FILE: src/main/webapp/WEB-INF/jsp/admin/top.jsp ================================================ <%-- Created by IntelliJ IDEA. User: Jacey Date: 2017/6/30 Time: 9:30 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%--shiro标签--%> <%@taglib prefix="shiro" uri="http://shiro.apache.org/tags" %> ================================================ FILE: src/main/webapp/WEB-INF/jsp/admin/userPasswordRest.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %>

重置其他用户密码

================================================ FILE: src/main/webapp/WEB-INF/jsp/error.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%--开启el表达式--%> <%@ page isELIgnored="false"%> 错误提示

${message}

返回上一页 ================================================ FILE: src/main/webapp/WEB-INF/jsp/student/menu.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %> ================================================ FILE: src/main/webapp/WEB-INF/jsp/student/overCourse.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> 课程信息显示 <%----%>

已修课程

<%--输出已修完的课程--%>
课程号 课程名称 授课老师编号 上课时间 上课地点 周数 课程类型 学分 成绩
${item.couseCustom.courseid} ${item.couseCustom.coursename} ${item.couseCustom.teacherid} ${item.couseCustom.coursetime} ${item.couseCustom.classroom} ${item.couseCustom.courseweek} ${item.couseCustom.coursetype} ${item.couseCustom.score} ${item.mark}
================================================ FILE: src/main/webapp/WEB-INF/jsp/student/passwordRest.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %>

修改密码

================================================ FILE: src/main/webapp/WEB-INF/jsp/student/selectCourse.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> 课程信息显示 <%----%>

已选课程

<%--输出还没修完的课程--%>
课程号 课程名称 授课老师编号 上课时间 上课地点 周数 课程类型 学分 操作
${item.couseCustom.courseid} ${item.couseCustom.coursename} ${item.couseCustom.teacherid} ${item.couseCustom.coursetime} ${item.couseCustom.classroom} ${item.couseCustom.courseweek} ${item.couseCustom.coursetype} ${item.couseCustom.score}
================================================ FILE: src/main/webapp/WEB-INF/jsp/student/showCourse.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> 课程信息显示 <%----%>

课程列表

搜索
课程号 课程名称 授课老师编号 上课时间 上课地点 周数 课程类型 学分 操作
${item.courseid} ${item.coursename} ${item.teacherid} ${item.coursetime} ${item.classroom} ${item.courseweek} ${item.coursetype} ${item.score}
================================================ FILE: src/main/webapp/WEB-INF/jsp/student/top.jsp ================================================ <%-- Created by IntelliJ IDEA. User: Jacey Date: 2017/6/30 Time: 9:30 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%--shiro标签--%> <%@taglib prefix="shiro" uri="http://shiro.apache.org/tags" %> ================================================ FILE: src/main/webapp/WEB-INF/jsp/success.jsp ================================================ <%-- Created by IntelliJ IDEA. User: Jacey Date: 2017/6/11 Time: 20:23 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> 成功页面

操作成功

================================================ FILE: src/main/webapp/WEB-INF/jsp/teacher/mark.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %>

学生打分

================================================ FILE: src/main/webapp/WEB-INF/jsp/teacher/menu.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %> ================================================ FILE: src/main/webapp/WEB-INF/jsp/teacher/passwordRest.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %>

修改密码

================================================ FILE: src/main/webapp/WEB-INF/jsp/teacher/showCourse.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> 课程信息显示 <%----%>

我教授的课程

搜索
课程号 课程名称 授课老师编号 上课时间 上课地点 周数 课程类型 学分 操作
${item.courseid} ${item.coursename} ${item.teacherid} ${item.coursetime} ${item.classroom} ${item.courseweek} ${item.coursetype} ${item.score}
================================================ FILE: src/main/webapp/WEB-INF/jsp/teacher/showGrade.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> 课程信息显示 <%----%>

已选该课程学生名单

学号 姓名 分数 操作
${item.studentCustom.userid} ${item.studentCustom.username} 未打分 ${item.mark} 已打分
================================================ FILE: src/main/webapp/WEB-INF/jsp/teacher/top.jsp ================================================ <%-- Created by IntelliJ IDEA. User: Jacey Date: 2017/6/30 Time: 9:30 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%--shiro标签--%> <%@taglib prefix="shiro" uri="http://shiro.apache.org/tags" %> ================================================ FILE: src/main/webapp/WEB-INF/web.xml ================================================ contextConfigLocation /WEB-INF/classes/spring/applicationContext-*.xml org.springframework.web.context.ContextLoaderListener springmvc org.springframework.web.servlet.DispatcherServlet contextConfigLocation classpath:spring/springmvc.xml springmvc / CharacterEncodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding utf-8 CharacterEncodingFilter /* shiroFilter org.springframework.web.filter.DelegatingFilterProxy targetFilterLifecycle true shiroFilter /* login.jsp ================================================ FILE: src/main/webapp/css/bootstrap-theme.css ================================================ /*! * Bootstrap v3.3.7 (http://getbootstrap.com) * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) */ .btn-default, .btn-primary, .btn-success, .btn-info, .btn-warning, .btn-danger { 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-default:active, .btn-primary:active, .btn-success:active, .btn-info:active, .btn-warning:active, .btn-danger:active, .btn-default.active, .btn-primary.active, .btn-success.active, .btn-info.active, .btn-warning.active, .btn-danger.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-default.disabled, .btn-primary.disabled, .btn-success.disabled, .btn-info.disabled, .btn-warning.disabled, .btn-danger.disabled, .btn-default[disabled], .btn-primary[disabled], .btn-success[disabled], .btn-info[disabled], .btn-warning[disabled], .btn-danger[disabled], fieldset[disabled] .btn-default, fieldset[disabled] .btn-primary, fieldset[disabled] .btn-success, fieldset[disabled] .btn-info, fieldset[disabled] .btn-warning, fieldset[disabled] .btn-danger { -webkit-box-shadow: none; box-shadow: none; } .btn-default .badge, .btn-primary .badge, .btn-success .badge, .btn-info .badge, .btn-warning .badge, .btn-danger .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:hover, .btn-default:focus { 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], fieldset[disabled] .btn-default, .btn-default.disabled:hover, .btn-default[disabled]:hover, fieldset[disabled] .btn-default:hover, .btn-default.disabled:focus, .btn-default[disabled]:focus, fieldset[disabled] .btn-default:focus, .btn-default.disabled.focus, .btn-default[disabled].focus, fieldset[disabled] .btn-default.focus, .btn-default.disabled:active, .btn-default[disabled]:active, fieldset[disabled] .btn-default:active, .btn-default.disabled.active, .btn-default[disabled].active, fieldset[disabled] .btn-default.active { 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:hover, .btn-primary:focus { 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], fieldset[disabled] .btn-primary, .btn-primary.disabled:hover, .btn-primary[disabled]:hover, fieldset[disabled] .btn-primary:hover, .btn-primary.disabled:focus, .btn-primary[disabled]:focus, fieldset[disabled] .btn-primary:focus, .btn-primary.disabled.focus, .btn-primary[disabled].focus, fieldset[disabled] .btn-primary.focus, .btn-primary.disabled:active, .btn-primary[disabled]:active, fieldset[disabled] .btn-primary:active, .btn-primary.disabled.active, .btn-primary[disabled].active, fieldset[disabled] .btn-primary.active { 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:hover, .btn-success:focus { 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], fieldset[disabled] .btn-success, .btn-success.disabled:hover, .btn-success[disabled]:hover, fieldset[disabled] .btn-success:hover, .btn-success.disabled:focus, .btn-success[disabled]:focus, fieldset[disabled] .btn-success:focus, .btn-success.disabled.focus, .btn-success[disabled].focus, fieldset[disabled] .btn-success.focus, .btn-success.disabled:active, .btn-success[disabled]:active, fieldset[disabled] .btn-success:active, .btn-success.disabled.active, .btn-success[disabled].active, fieldset[disabled] .btn-success.active { 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:hover, .btn-info:focus { 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], fieldset[disabled] .btn-info, .btn-info.disabled:hover, .btn-info[disabled]:hover, fieldset[disabled] .btn-info:hover, .btn-info.disabled:focus, .btn-info[disabled]:focus, fieldset[disabled] .btn-info:focus, .btn-info.disabled.focus, .btn-info[disabled].focus, fieldset[disabled] .btn-info.focus, .btn-info.disabled:active, .btn-info[disabled]:active, fieldset[disabled] .btn-info:active, .btn-info.disabled.active, .btn-info[disabled].active, fieldset[disabled] .btn-info.active { 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:hover, .btn-warning:focus { 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], fieldset[disabled] .btn-warning, .btn-warning.disabled:hover, .btn-warning[disabled]:hover, fieldset[disabled] .btn-warning:hover, .btn-warning.disabled:focus, .btn-warning[disabled]:focus, fieldset[disabled] .btn-warning:focus, .btn-warning.disabled.focus, .btn-warning[disabled].focus, fieldset[disabled] .btn-warning.focus, .btn-warning.disabled:active, .btn-warning[disabled]:active, fieldset[disabled] .btn-warning:active, .btn-warning.disabled.active, .btn-warning[disabled].active, fieldset[disabled] .btn-warning.active { 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:hover, .btn-danger:focus { 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], fieldset[disabled] .btn-danger, .btn-danger.disabled:hover, .btn-danger[disabled]:hover, fieldset[disabled] .btn-danger:hover, .btn-danger.disabled:focus, .btn-danger[disabled]:focus, fieldset[disabled] .btn-danger:focus, .btn-danger.disabled.focus, .btn-danger[disabled].focus, fieldset[disabled] .btn-danger.focus, .btn-danger.disabled:active, .btn-danger[disabled]:active, fieldset[disabled] .btn-danger:active, .btn-danger.disabled.active, .btn-danger[disabled].active, fieldset[disabled] .btn-danger.active { background-color: #c12e2a; background-image: none; } .thumbnail, .img-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:hover, .dropdown-menu > li > a:focus { 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:hover, .dropdown-menu > .active > a:focus { 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 > .open > a, .navbar-default .navbar-nav > .active > 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 > .open > a, .navbar-inverse .navbar-nav > .active > 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-static-top, .navbar-fixed-top, .navbar-fixed-bottom { border-radius: 0; } @media (max-width: 767px) { .navbar .navbar-nav .open .dropdown-menu > .active > a, .navbar .navbar-nav .open .dropdown-menu > .active > a:hover, .navbar .navbar-nav .open .dropdown-menu > .active > a:focus { 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:hover, .list-group-item.active:focus { 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:hover .badge, .list-group-item.active:focus .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); } /*# sourceMappingURL=bootstrap-theme.css.map */ ================================================ FILE: src/main/webapp/css/bootstrap.css ================================================ /*! * Bootstrap v3.3.7 (http://getbootstrap.com) * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) */ /*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ html { font-family: sans-serif; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; } body { margin: 0; } article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section, summary { display: block; } audio, canvas, progress, video { display: inline-block; vertical-align: baseline; } audio:not([controls]) { display: none; height: 0; } [hidden], template { display: none; } a { background-color: transparent; } a:active, a:hover { outline: 0; } abbr[title] { border-bottom: 1px dotted; } b, strong { font-weight: bold; } dfn { font-style: italic; } h1 { margin: .67em 0; font-size: 2em; } mark { color: #000; background: #ff0; } small { font-size: 80%; } sub, sup { position: relative; font-size: 75%; line-height: 0; vertical-align: baseline; } sup { top: -.5em; } sub { bottom: -.25em; } img { border: 0; } svg:not(:root) { overflow: hidden; } figure { margin: 1em 40px; } hr { height: 0; -webkit-box-sizing: content-box; -moz-box-sizing: content-box; box-sizing: content-box; } pre { overflow: auto; } code, kbd, pre, samp { font-family: monospace, monospace; font-size: 1em; } button, input, optgroup, select, textarea { margin: 0; font: inherit; color: inherit; } button { overflow: visible; } button, select { text-transform: none; } button, html input[type="button"], input[type="reset"], input[type="submit"] { -webkit-appearance: button; cursor: pointer; } button[disabled], html input[disabled] { cursor: default; } button::-moz-focus-inner, input::-moz-focus-inner { padding: 0; border: 0; } input { line-height: normal; } input[type="checkbox"], input[type="radio"] { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; padding: 0; } input[type="number"]::-webkit-inner-spin-button, input[type="number"]::-webkit-outer-spin-button { height: auto; } input[type="search"] { -webkit-box-sizing: content-box; -moz-box-sizing: content-box; box-sizing: content-box; -webkit-appearance: textfield; } input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; } fieldset { padding: .35em .625em .75em; margin: 0 2px; border: 1px solid #c0c0c0; } legend { padding: 0; border: 0; } textarea { overflow: auto; } optgroup { font-weight: bold; } table { border-spacing: 0; border-collapse: collapse; } td, th { padding: 0; } /*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ @media print { *, *:before, *:after { color: #000 !important; text-shadow: none !important; background: transparent !important; -webkit-box-shadow: none !important; box-shadow: none !important; } a, a:visited { text-decoration: underline; } a[href]:after { content: " (" attr(href) ")"; } abbr[title]:after { content: " (" attr(title) ")"; } a[href^="#"]:after, a[href^="javascript:"]:after { content: ""; } pre, blockquote { border: 1px solid #999; page-break-inside: avoid; } thead { display: table-header-group; } tr, img { page-break-inside: avoid; } img { max-width: 100% !important; } p, h2, h3 { orphans: 3; widows: 3; } h2, h3 { page-break-after: avoid; } .navbar { display: none; } .btn > .caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px solid #000; } .table { border-collapse: collapse !important; } .table td, .table th { background-color: #fff !important; } .table-bordered th, .table-bordered td { border: 1px solid #ddd !important; } } @font-face { font-family: 'Glyphicons Halflings'; src: url('../fonts/glyphicons-halflings-regular.eot'); src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg'); } .glyphicon { position: relative; top: 1px; display: inline-block; font-family: 'Glyphicons Halflings'; font-style: normal; font-weight: normal; line-height: 1; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .glyphicon-asterisk:before { content: "\002a"; } .glyphicon-plus:before { content: "\002b"; } .glyphicon-euro:before, .glyphicon-eur:before { content: "\20ac"; } .glyphicon-minus:before { content: "\2212"; } .glyphicon-cloud:before { content: "\2601"; } .glyphicon-envelope:before { content: "\2709"; } .glyphicon-pencil:before { content: "\270f"; } .glyphicon-glass:before { content: "\e001"; } .glyphicon-music:before { content: "\e002"; } .glyphicon-search:before { content: "\e003"; } .glyphicon-heart:before { content: "\e005"; } .glyphicon-star:before { content: "\e006"; } .glyphicon-star-empty:before { content: "\e007"; } .glyphicon-user:before { content: "\e008"; } .glyphicon-film:before { content: "\e009"; } .glyphicon-th-large:before { content: "\e010"; } .glyphicon-th:before { content: "\e011"; } .glyphicon-th-list:before { content: "\e012"; } .glyphicon-ok:before { content: "\e013"; } .glyphicon-remove:before { content: "\e014"; } .glyphicon-zoom-in:before { content: "\e015"; } .glyphicon-zoom-out:before { content: "\e016"; } .glyphicon-off:before { content: "\e017"; } .glyphicon-signal:before { content: "\e018"; } .glyphicon-cog:before { content: "\e019"; } .glyphicon-trash:before { content: "\e020"; } .glyphicon-home:before { content: "\e021"; } .glyphicon-file:before { content: "\e022"; } .glyphicon-time:before { content: "\e023"; } .glyphicon-road:before { content: "\e024"; } .glyphicon-download-alt:before { content: "\e025"; } .glyphicon-download:before { content: "\e026"; } .glyphicon-upload:before { content: "\e027"; } .glyphicon-inbox:before { content: "\e028"; } .glyphicon-play-circle:before { content: "\e029"; } .glyphicon-repeat:before { content: "\e030"; } .glyphicon-refresh:before { content: "\e031"; } .glyphicon-list-alt:before { content: "\e032"; } .glyphicon-lock:before { content: "\e033"; } .glyphicon-flag:before { content: "\e034"; } .glyphicon-headphones:before { content: "\e035"; } .glyphicon-volume-off:before { content: "\e036"; } .glyphicon-volume-down:before { content: "\e037"; } .glyphicon-volume-up:before { content: "\e038"; } .glyphicon-qrcode:before { content: "\e039"; } .glyphicon-barcode:before { content: "\e040"; } .glyphicon-tag:before { content: "\e041"; } .glyphicon-tags:before { content: "\e042"; } .glyphicon-book:before { content: "\e043"; } .glyphicon-bookmark:before { content: "\e044"; } .glyphicon-print:before { content: "\e045"; } .glyphicon-camera:before { content: "\e046"; } .glyphicon-font:before { content: "\e047"; } .glyphicon-bold:before { content: "\e048"; } .glyphicon-italic:before { content: "\e049"; } .glyphicon-text-height:before { content: "\e050"; } .glyphicon-text-width:before { content: "\e051"; } .glyphicon-align-left:before { content: "\e052"; } .glyphicon-align-center:before { content: "\e053"; } .glyphicon-align-right:before { content: "\e054"; } .glyphicon-align-justify:before { content: "\e055"; } .glyphicon-list:before { content: "\e056"; } .glyphicon-indent-left:before { content: "\e057"; } .glyphicon-indent-right:before { content: "\e058"; } .glyphicon-facetime-video:before { content: "\e059"; } .glyphicon-picture:before { content: "\e060"; } .glyphicon-map-marker:before { content: "\e062"; } .glyphicon-adjust:before { content: "\e063"; } .glyphicon-tint:before { content: "\e064"; } .glyphicon-edit:before { content: "\e065"; } .glyphicon-share:before { content: "\e066"; } .glyphicon-check:before { content: "\e067"; } .glyphicon-move:before { content: "\e068"; } .glyphicon-step-backward:before { content: "\e069"; } .glyphicon-fast-backward:before { content: "\e070"; } .glyphicon-backward:before { content: "\e071"; } .glyphicon-play:before { content: "\e072"; } .glyphicon-pause:before { content: "\e073"; } .glyphicon-stop:before { content: "\e074"; } .glyphicon-forward:before { content: "\e075"; } .glyphicon-fast-forward:before { content: "\e076"; } .glyphicon-step-forward:before { content: "\e077"; } .glyphicon-eject:before { content: "\e078"; } .glyphicon-chevron-left:before { content: "\e079"; } .glyphicon-chevron-right:before { content: "\e080"; } .glyphicon-plus-sign:before { content: "\e081"; } .glyphicon-minus-sign:before { content: "\e082"; } .glyphicon-remove-sign:before { content: "\e083"; } .glyphicon-ok-sign:before { content: "\e084"; } .glyphicon-question-sign:before { content: "\e085"; } .glyphicon-info-sign:before { content: "\e086"; } .glyphicon-screenshot:before { content: "\e087"; } .glyphicon-remove-circle:before { content: "\e088"; } .glyphicon-ok-circle:before { content: "\e089"; } .glyphicon-ban-circle:before { content: "\e090"; } .glyphicon-arrow-left:before { content: "\e091"; } .glyphicon-arrow-right:before { content: "\e092"; } .glyphicon-arrow-up:before { content: "\e093"; } .glyphicon-arrow-down:before { content: "\e094"; } .glyphicon-share-alt:before { content: "\e095"; } .glyphicon-resize-full:before { content: "\e096"; } .glyphicon-resize-small:before { content: "\e097"; } .glyphicon-exclamation-sign:before { content: "\e101"; } .glyphicon-gift:before { content: "\e102"; } .glyphicon-leaf:before { content: "\e103"; } .glyphicon-fire:before { content: "\e104"; } .glyphicon-eye-open:before { content: "\e105"; } .glyphicon-eye-close:before { content: "\e106"; } .glyphicon-warning-sign:before { content: "\e107"; } .glyphicon-plane:before { content: "\e108"; } .glyphicon-calendar:before { content: "\e109"; } .glyphicon-random:before { content: "\e110"; } .glyphicon-comment:before { content: "\e111"; } .glyphicon-magnet:before { content: "\e112"; } .glyphicon-chevron-up:before { content: "\e113"; } .glyphicon-chevron-down:before { content: "\e114"; } .glyphicon-retweet:before { content: "\e115"; } .glyphicon-shopping-cart:before { content: "\e116"; } .glyphicon-folder-close:before { content: "\e117"; } .glyphicon-folder-open:before { content: "\e118"; } .glyphicon-resize-vertical:before { content: "\e119"; } .glyphicon-resize-horizontal:before { content: "\e120"; } .glyphicon-hdd:before { content: "\e121"; } .glyphicon-bullhorn:before { content: "\e122"; } .glyphicon-bell:before { content: "\e123"; } .glyphicon-certificate:before { content: "\e124"; } .glyphicon-thumbs-up:before { content: "\e125"; } .glyphicon-thumbs-down:before { content: "\e126"; } .glyphicon-hand-right:before { content: "\e127"; } .glyphicon-hand-left:before { content: "\e128"; } .glyphicon-hand-up:before { content: "\e129"; } .glyphicon-hand-down:before { content: "\e130"; } .glyphicon-circle-arrow-right:before { content: "\e131"; } .glyphicon-circle-arrow-left:before { content: "\e132"; } .glyphicon-circle-arrow-up:before { content: "\e133"; } .glyphicon-circle-arrow-down:before { content: "\e134"; } .glyphicon-globe:before { content: "\e135"; } .glyphicon-wrench:before { content: "\e136"; } .glyphicon-tasks:before { content: "\e137"; } .glyphicon-filter:before { content: "\e138"; } .glyphicon-briefcase:before { content: "\e139"; } .glyphicon-fullscreen:before { content: "\e140"; } .glyphicon-dashboard:before { content: "\e141"; } .glyphicon-paperclip:before { content: "\e142"; } .glyphicon-heart-empty:before { content: "\e143"; } .glyphicon-link:before { content: "\e144"; } .glyphicon-phone:before { content: "\e145"; } .glyphicon-pushpin:before { content: "\e146"; } .glyphicon-usd:before { content: "\e148"; } .glyphicon-gbp:before { content: "\e149"; } .glyphicon-sort:before { content: "\e150"; } .glyphicon-sort-by-alphabet:before { content: "\e151"; } .glyphicon-sort-by-alphabet-alt:before { content: "\e152"; } .glyphicon-sort-by-order:before { content: "\e153"; } .glyphicon-sort-by-order-alt:before { content: "\e154"; } .glyphicon-sort-by-attributes:before { content: "\e155"; } .glyphicon-sort-by-attributes-alt:before { content: "\e156"; } .glyphicon-unchecked:before { content: "\e157"; } .glyphicon-expand:before { content: "\e158"; } .glyphicon-collapse-down:before { content: "\e159"; } .glyphicon-collapse-up:before { content: "\e160"; } .glyphicon-log-in:before { content: "\e161"; } .glyphicon-flash:before { content: "\e162"; } .glyphicon-log-out:before { content: "\e163"; } .glyphicon-new-window:before { content: "\e164"; } .glyphicon-record:before { content: "\e165"; } .glyphicon-save:before { content: "\e166"; } .glyphicon-open:before { content: "\e167"; } .glyphicon-saved:before { content: "\e168"; } .glyphicon-import:before { content: "\e169"; } .glyphicon-export:before { content: "\e170"; } .glyphicon-send:before { content: "\e171"; } .glyphicon-floppy-disk:before { content: "\e172"; } .glyphicon-floppy-saved:before { content: "\e173"; } .glyphicon-floppy-remove:before { content: "\e174"; } .glyphicon-floppy-save:before { content: "\e175"; } .glyphicon-floppy-open:before { content: "\e176"; } .glyphicon-credit-card:before { content: "\e177"; } .glyphicon-transfer:before { content: "\e178"; } .glyphicon-cutlery:before { content: "\e179"; } .glyphicon-header:before { content: "\e180"; } .glyphicon-compressed:before { content: "\e181"; } .glyphicon-earphone:before { content: "\e182"; } .glyphicon-phone-alt:before { content: "\e183"; } .glyphicon-tower:before { content: "\e184"; } .glyphicon-stats:before { content: "\e185"; } .glyphicon-sd-video:before { content: "\e186"; } .glyphicon-hd-video:before { content: "\e187"; } .glyphicon-subtitles:before { content: "\e188"; } .glyphicon-sound-stereo:before { content: "\e189"; } .glyphicon-sound-dolby:before { content: "\e190"; } .glyphicon-sound-5-1:before { content: "\e191"; } .glyphicon-sound-6-1:before { content: "\e192"; } .glyphicon-sound-7-1:before { content: "\e193"; } .glyphicon-copyright-mark:before { content: "\e194"; } .glyphicon-registration-mark:before { content: "\e195"; } .glyphicon-cloud-download:before { content: "\e197"; } .glyphicon-cloud-upload:before { content: "\e198"; } .glyphicon-tree-conifer:before { content: "\e199"; } .glyphicon-tree-deciduous:before { content: "\e200"; } .glyphicon-cd:before { content: "\e201"; } .glyphicon-save-file:before { content: "\e202"; } .glyphicon-open-file:before { content: "\e203"; } .glyphicon-level-up:before { content: "\e204"; } .glyphicon-copy:before { content: "\e205"; } .glyphicon-paste:before { content: "\e206"; } .glyphicon-alert:before { content: "\e209"; } .glyphicon-equalizer:before { content: "\e210"; } .glyphicon-king:before { content: "\e211"; } .glyphicon-queen:before { content: "\e212"; } .glyphicon-pawn:before { content: "\e213"; } .glyphicon-bishop:before { content: "\e214"; } .glyphicon-knight:before { content: "\e215"; } .glyphicon-baby-formula:before { content: "\e216"; } .glyphicon-tent:before { content: "\26fa"; } .glyphicon-blackboard:before { content: "\e218"; } .glyphicon-bed:before { content: "\e219"; } .glyphicon-apple:before { content: "\f8ff"; } .glyphicon-erase:before { content: "\e221"; } .glyphicon-hourglass:before { content: "\231b"; } .glyphicon-lamp:before { content: "\e223"; } .glyphicon-duplicate:before { content: "\e224"; } .glyphicon-piggy-bank:before { content: "\e225"; } .glyphicon-scissors:before { content: "\e226"; } .glyphicon-bitcoin:before { content: "\e227"; } .glyphicon-btc:before { content: "\e227"; } .glyphicon-xbt:before { content: "\e227"; } .glyphicon-yen:before { content: "\00a5"; } .glyphicon-jpy:before { content: "\00a5"; } .glyphicon-ruble:before { content: "\20bd"; } .glyphicon-rub:before { content: "\20bd"; } .glyphicon-scale:before { content: "\e230"; } .glyphicon-ice-lolly:before { content: "\e231"; } .glyphicon-ice-lolly-tasted:before { content: "\e232"; } .glyphicon-education:before { content: "\e233"; } .glyphicon-option-horizontal:before { content: "\e234"; } .glyphicon-option-vertical:before { content: "\e235"; } .glyphicon-menu-hamburger:before { content: "\e236"; } .glyphicon-modal-window:before { content: "\e237"; } .glyphicon-oil:before { content: "\e238"; } .glyphicon-grain:before { content: "\e239"; } .glyphicon-sunglasses:before { content: "\e240"; } .glyphicon-text-size:before { content: "\e241"; } .glyphicon-text-color:before { content: "\e242"; } .glyphicon-text-background:before { content: "\e243"; } .glyphicon-object-align-top:before { content: "\e244"; } .glyphicon-object-align-bottom:before { content: "\e245"; } .glyphicon-object-align-horizontal:before { content: "\e246"; } .glyphicon-object-align-left:before { content: "\e247"; } .glyphicon-object-align-vertical:before { content: "\e248"; } .glyphicon-object-align-right:before { content: "\e249"; } .glyphicon-triangle-right:before { content: "\e250"; } .glyphicon-triangle-left:before { content: "\e251"; } .glyphicon-triangle-bottom:before { content: "\e252"; } .glyphicon-triangle-top:before { content: "\e253"; } .glyphicon-console:before { content: "\e254"; } .glyphicon-superscript:before { content: "\e255"; } .glyphicon-subscript:before { content: "\e256"; } .glyphicon-menu-left:before { content: "\e257"; } .glyphicon-menu-right:before { content: "\e258"; } .glyphicon-menu-down:before { content: "\e259"; } .glyphicon-menu-up:before { content: "\e260"; } * { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } *:before, *:after { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } html { font-size: 10px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } body { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; line-height: 1.42857143; color: #333; background-color: #fff; } input, button, select, textarea { font-family: inherit; font-size: inherit; line-height: inherit; } a { color: #337ab7; text-decoration: none; } a:hover, a:focus { color: #23527c; text-decoration: underline; } a:focus { outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } figure { margin: 0; } img { vertical-align: middle; } .img-responsive, .thumbnail > img, .thumbnail a > img, .carousel-inner > .item > img, .carousel-inner > .item > a > img { display: block; max-width: 100%; height: auto; } .img-rounded { border-radius: 6px; } .img-thumbnail { display: inline-block; max-width: 100%; height: auto; padding: 4px; line-height: 1.42857143; background-color: #fff; border: 1px solid #ddd; border-radius: 4px; -webkit-transition: all .2s ease-in-out; -o-transition: all .2s ease-in-out; transition: all .2s ease-in-out; } .img-circle { border-radius: 50%; } hr { margin-top: 20px; margin-bottom: 20px; border: 0; border-top: 1px solid #eee; } .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); border: 0; } .sr-only-focusable:active, .sr-only-focusable:focus { position: static; width: auto; height: auto; margin: 0; overflow: visible; clip: auto; } [role="button"] { cursor: pointer; } h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 { font-family: inherit; font-weight: 500; line-height: 1.1; color: inherit; } h1 small, h2 small, h3 small, h4 small, h5 small, h6 small, .h1 small, .h2 small, .h3 small, .h4 small, .h5 small, .h6 small, h1 .small, h2 .small, h3 .small, h4 .small, h5 .small, h6 .small, .h1 .small, .h2 .small, .h3 .small, .h4 .small, .h5 .small, .h6 .small { font-weight: normal; line-height: 1; color: #777; } h1, .h1, h2, .h2, h3, .h3 { margin-top: 20px; margin-bottom: 10px; } h1 small, .h1 small, h2 small, .h2 small, h3 small, .h3 small, h1 .small, .h1 .small, h2 .small, .h2 .small, h3 .small, .h3 .small { font-size: 65%; } h4, .h4, h5, .h5, h6, .h6 { margin-top: 10px; margin-bottom: 10px; } h4 small, .h4 small, h5 small, .h5 small, h6 small, .h6 small, h4 .small, .h4 .small, h5 .small, .h5 .small, h6 .small, .h6 .small { font-size: 75%; } h1, .h1 { font-size: 36px; } h2, .h2 { font-size: 30px; } h3, .h3 { font-size: 24px; } h4, .h4 { font-size: 18px; } h5, .h5 { font-size: 14px; } h6, .h6 { font-size: 12px; } p { margin: 0 0 10px; } .lead { margin-bottom: 20px; font-size: 16px; font-weight: 300; line-height: 1.4; } @media (min-width: 768px) { .lead { font-size: 21px; } } small, .small { font-size: 85%; } mark, .mark { padding: .2em; background-color: #fcf8e3; } .text-left { text-align: left; } .text-right { text-align: right; } .text-center { text-align: center; } .text-justify { text-align: justify; } .text-nowrap { white-space: nowrap; } .text-lowercase { text-transform: lowercase; } .text-uppercase { text-transform: uppercase; } .text-capitalize { text-transform: capitalize; } .text-muted { color: #777; } .text-primary { color: #337ab7; } a.text-primary:hover, a.text-primary:focus { color: #286090; } .text-success { color: #3c763d; } a.text-success:hover, a.text-success:focus { color: #2b542c; } .text-info { color: #31708f; } a.text-info:hover, a.text-info:focus { color: #245269; } .text-warning { color: #8a6d3b; } a.text-warning:hover, a.text-warning:focus { color: #66512c; } .text-danger { color: #a94442; } a.text-danger:hover, a.text-danger:focus { color: #843534; } .bg-primary { color: #fff; background-color: #337ab7; } a.bg-primary:hover, a.bg-primary:focus { background-color: #286090; } .bg-success { background-color: #dff0d8; } a.bg-success:hover, a.bg-success:focus { background-color: #c1e2b3; } .bg-info { background-color: #d9edf7; } a.bg-info:hover, a.bg-info:focus { background-color: #afd9ee; } .bg-warning { background-color: #fcf8e3; } a.bg-warning:hover, a.bg-warning:focus { background-color: #f7ecb5; } .bg-danger { background-color: #f2dede; } a.bg-danger:hover, a.bg-danger:focus { background-color: #e4b9b9; } .page-header { padding-bottom: 9px; margin: 40px 0 20px; border-bottom: 1px solid #eee; } ul, ol { margin-top: 0; margin-bottom: 10px; } ul ul, ol ul, ul ol, ol ol { margin-bottom: 0; } .list-unstyled { padding-left: 0; list-style: none; } .list-inline { padding-left: 0; margin-left: -5px; list-style: none; } .list-inline > li { display: inline-block; padding-right: 5px; padding-left: 5px; } dl { margin-top: 0; margin-bottom: 20px; } dt, dd { line-height: 1.42857143; } dt { font-weight: bold; } dd { margin-left: 0; } @media (min-width: 768px) { .dl-horizontal dt { float: left; width: 160px; overflow: hidden; clear: left; text-align: right; text-overflow: ellipsis; white-space: nowrap; } .dl-horizontal dd { margin-left: 180px; } } abbr[title], abbr[data-original-title] { cursor: help; border-bottom: 1px dotted #777; } .initialism { font-size: 90%; text-transform: uppercase; } blockquote { padding: 10px 20px; margin: 0 0 20px; font-size: 17.5px; border-left: 5px solid #eee; } blockquote p:last-child, blockquote ul:last-child, blockquote ol:last-child { margin-bottom: 0; } blockquote footer, blockquote small, blockquote .small { display: block; font-size: 80%; line-height: 1.42857143; color: #777; } blockquote footer:before, blockquote small:before, blockquote .small:before { content: '\2014 \00A0'; } .blockquote-reverse, blockquote.pull-right { padding-right: 15px; padding-left: 0; text-align: right; border-right: 5px solid #eee; border-left: 0; } .blockquote-reverse footer:before, blockquote.pull-right footer:before, .blockquote-reverse small:before, blockquote.pull-right small:before, .blockquote-reverse .small:before, blockquote.pull-right .small:before { content: ''; } .blockquote-reverse footer:after, blockquote.pull-right footer:after, .blockquote-reverse small:after, blockquote.pull-right small:after, .blockquote-reverse .small:after, blockquote.pull-right .small:after { content: '\00A0 \2014'; } address { margin-bottom: 20px; font-style: normal; line-height: 1.42857143; } code, kbd, pre, samp { font-family: Menlo, Monaco, Consolas, "Courier New", monospace; } code { padding: 2px 4px; font-size: 90%; color: #c7254e; background-color: #f9f2f4; border-radius: 4px; } kbd { padding: 2px 4px; font-size: 90%; color: #fff; background-color: #333; border-radius: 3px; -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); } kbd kbd { padding: 0; font-size: 100%; font-weight: bold; -webkit-box-shadow: none; box-shadow: none; } pre { display: block; padding: 9.5px; margin: 0 0 10px; font-size: 13px; line-height: 1.42857143; color: #333; word-break: break-all; word-wrap: break-word; background-color: #f5f5f5; border: 1px solid #ccc; border-radius: 4px; } pre code { padding: 0; font-size: inherit; color: inherit; white-space: pre-wrap; background-color: transparent; border-radius: 0; } .pre-scrollable { max-height: 340px; overflow-y: scroll; } .container { padding-right: 15px; padding-left: 15px; margin-right: auto; margin-left: auto; } @media (min-width: 768px) { .container { width: 750px; } } @media (min-width: 992px) { .container { width: 970px; } } @media (min-width: 1200px) { .container { width: 1170px; } } .container-fluid { padding-right: 15px; padding-left: 15px; margin-right: auto; margin-left: auto; } .row { margin-right: -15px; margin-left: -15px; } .col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { position: relative; min-height: 1px; padding-right: 15px; padding-left: 15px; } .col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { float: left; } .col-xs-12 { width: 100%; } .col-xs-11 { width: 91.66666667%; } .col-xs-10 { width: 83.33333333%; } .col-xs-9 { width: 75%; } .col-xs-8 { width: 66.66666667%; } .col-xs-7 { width: 58.33333333%; } .col-xs-6 { width: 50%; } .col-xs-5 { width: 41.66666667%; } .col-xs-4 { width: 33.33333333%; } .col-xs-3 { width: 25%; } .col-xs-2 { width: 16.66666667%; } .col-xs-1 { width: 8.33333333%; } .col-xs-pull-12 { right: 100%; } .col-xs-pull-11 { right: 91.66666667%; } .col-xs-pull-10 { right: 83.33333333%; } .col-xs-pull-9 { right: 75%; } .col-xs-pull-8 { right: 66.66666667%; } .col-xs-pull-7 { right: 58.33333333%; } .col-xs-pull-6 { right: 50%; } .col-xs-pull-5 { right: 41.66666667%; } .col-xs-pull-4 { right: 33.33333333%; } .col-xs-pull-3 { right: 25%; } .col-xs-pull-2 { right: 16.66666667%; } .col-xs-pull-1 { right: 8.33333333%; } .col-xs-pull-0 { right: auto; } .col-xs-push-12 { left: 100%; } .col-xs-push-11 { left: 91.66666667%; } .col-xs-push-10 { left: 83.33333333%; } .col-xs-push-9 { left: 75%; } .col-xs-push-8 { left: 66.66666667%; } .col-xs-push-7 { left: 58.33333333%; } .col-xs-push-6 { left: 50%; } .col-xs-push-5 { left: 41.66666667%; } .col-xs-push-4 { left: 33.33333333%; } .col-xs-push-3 { left: 25%; } .col-xs-push-2 { left: 16.66666667%; } .col-xs-push-1 { left: 8.33333333%; } .col-xs-push-0 { left: auto; } .col-xs-offset-12 { margin-left: 100%; } .col-xs-offset-11 { margin-left: 91.66666667%; } .col-xs-offset-10 { margin-left: 83.33333333%; } .col-xs-offset-9 { margin-left: 75%; } .col-xs-offset-8 { margin-left: 66.66666667%; } .col-xs-offset-7 { margin-left: 58.33333333%; } .col-xs-offset-6 { margin-left: 50%; } .col-xs-offset-5 { margin-left: 41.66666667%; } .col-xs-offset-4 { margin-left: 33.33333333%; } .col-xs-offset-3 { margin-left: 25%; } .col-xs-offset-2 { margin-left: 16.66666667%; } .col-xs-offset-1 { margin-left: 8.33333333%; } .col-xs-offset-0 { margin-left: 0; } @media (min-width: 768px) { .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { float: left; } .col-sm-12 { width: 100%; } .col-sm-11 { width: 91.66666667%; } .col-sm-10 { width: 83.33333333%; } .col-sm-9 { width: 75%; } .col-sm-8 { width: 66.66666667%; } .col-sm-7 { width: 58.33333333%; } .col-sm-6 { width: 50%; } .col-sm-5 { width: 41.66666667%; } .col-sm-4 { width: 33.33333333%; } .col-sm-3 { width: 25%; } .col-sm-2 { width: 16.66666667%; } .col-sm-1 { width: 8.33333333%; } .col-sm-pull-12 { right: 100%; } .col-sm-pull-11 { right: 91.66666667%; } .col-sm-pull-10 { right: 83.33333333%; } .col-sm-pull-9 { right: 75%; } .col-sm-pull-8 { right: 66.66666667%; } .col-sm-pull-7 { right: 58.33333333%; } .col-sm-pull-6 { right: 50%; } .col-sm-pull-5 { right: 41.66666667%; } .col-sm-pull-4 { right: 33.33333333%; } .col-sm-pull-3 { right: 25%; } .col-sm-pull-2 { right: 16.66666667%; } .col-sm-pull-1 { right: 8.33333333%; } .col-sm-pull-0 { right: auto; } .col-sm-push-12 { left: 100%; } .col-sm-push-11 { left: 91.66666667%; } .col-sm-push-10 { left: 83.33333333%; } .col-sm-push-9 { left: 75%; } .col-sm-push-8 { left: 66.66666667%; } .col-sm-push-7 { left: 58.33333333%; } .col-sm-push-6 { left: 50%; } .col-sm-push-5 { left: 41.66666667%; } .col-sm-push-4 { left: 33.33333333%; } .col-sm-push-3 { left: 25%; } .col-sm-push-2 { left: 16.66666667%; } .col-sm-push-1 { left: 8.33333333%; } .col-sm-push-0 { left: auto; } .col-sm-offset-12 { margin-left: 100%; } .col-sm-offset-11 { margin-left: 91.66666667%; } .col-sm-offset-10 { margin-left: 83.33333333%; } .col-sm-offset-9 { margin-left: 75%; } .col-sm-offset-8 { margin-left: 66.66666667%; } .col-sm-offset-7 { margin-left: 58.33333333%; } .col-sm-offset-6 { margin-left: 50%; } .col-sm-offset-5 { margin-left: 41.66666667%; } .col-sm-offset-4 { margin-left: 33.33333333%; } .col-sm-offset-3 { margin-left: 25%; } .col-sm-offset-2 { margin-left: 16.66666667%; } .col-sm-offset-1 { margin-left: 8.33333333%; } .col-sm-offset-0 { margin-left: 0; } } @media (min-width: 992px) { .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { float: left; } .col-md-12 { width: 100%; } .col-md-11 { width: 91.66666667%; } .col-md-10 { width: 83.33333333%; } .col-md-9 { width: 75%; } .col-md-8 { width: 66.66666667%; } .col-md-7 { width: 58.33333333%; } .col-md-6 { width: 50%; } .col-md-5 { width: 41.66666667%; } .col-md-4 { width: 33.33333333%; } .col-md-3 { width: 25%; } .col-md-2 { width: 16.66666667%; } .col-md-1 { width: 8.33333333%; } .col-md-pull-12 { right: 100%; } .col-md-pull-11 { right: 91.66666667%; } .col-md-pull-10 { right: 83.33333333%; } .col-md-pull-9 { right: 75%; } .col-md-pull-8 { right: 66.66666667%; } .col-md-pull-7 { right: 58.33333333%; } .col-md-pull-6 { right: 50%; } .col-md-pull-5 { right: 41.66666667%; } .col-md-pull-4 { right: 33.33333333%; } .col-md-pull-3 { right: 25%; } .col-md-pull-2 { right: 16.66666667%; } .col-md-pull-1 { right: 8.33333333%; } .col-md-pull-0 { right: auto; } .col-md-push-12 { left: 100%; } .col-md-push-11 { left: 91.66666667%; } .col-md-push-10 { left: 83.33333333%; } .col-md-push-9 { left: 75%; } .col-md-push-8 { left: 66.66666667%; } .col-md-push-7 { left: 58.33333333%; } .col-md-push-6 { left: 50%; } .col-md-push-5 { left: 41.66666667%; } .col-md-push-4 { left: 33.33333333%; } .col-md-push-3 { left: 25%; } .col-md-push-2 { left: 16.66666667%; } .col-md-push-1 { left: 8.33333333%; } .col-md-push-0 { left: auto; } .col-md-offset-12 { margin-left: 100%; } .col-md-offset-11 { margin-left: 91.66666667%; } .col-md-offset-10 { margin-left: 83.33333333%; } .col-md-offset-9 { margin-left: 75%; } .col-md-offset-8 { margin-left: 66.66666667%; } .col-md-offset-7 { margin-left: 58.33333333%; } .col-md-offset-6 { margin-left: 50%; } .col-md-offset-5 { margin-left: 41.66666667%; } .col-md-offset-4 { margin-left: 33.33333333%; } .col-md-offset-3 { margin-left: 25%; } .col-md-offset-2 { margin-left: 16.66666667%; } .col-md-offset-1 { margin-left: 8.33333333%; } .col-md-offset-0 { margin-left: 0; } } @media (min-width: 1200px) { .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { float: left; } .col-lg-12 { width: 100%; } .col-lg-11 { width: 91.66666667%; } .col-lg-10 { width: 83.33333333%; } .col-lg-9 { width: 75%; } .col-lg-8 { width: 66.66666667%; } .col-lg-7 { width: 58.33333333%; } .col-lg-6 { width: 50%; } .col-lg-5 { width: 41.66666667%; } .col-lg-4 { width: 33.33333333%; } .col-lg-3 { width: 25%; } .col-lg-2 { width: 16.66666667%; } .col-lg-1 { width: 8.33333333%; } .col-lg-pull-12 { right: 100%; } .col-lg-pull-11 { right: 91.66666667%; } .col-lg-pull-10 { right: 83.33333333%; } .col-lg-pull-9 { right: 75%; } .col-lg-pull-8 { right: 66.66666667%; } .col-lg-pull-7 { right: 58.33333333%; } .col-lg-pull-6 { right: 50%; } .col-lg-pull-5 { right: 41.66666667%; } .col-lg-pull-4 { right: 33.33333333%; } .col-lg-pull-3 { right: 25%; } .col-lg-pull-2 { right: 16.66666667%; } .col-lg-pull-1 { right: 8.33333333%; } .col-lg-pull-0 { right: auto; } .col-lg-push-12 { left: 100%; } .col-lg-push-11 { left: 91.66666667%; } .col-lg-push-10 { left: 83.33333333%; } .col-lg-push-9 { left: 75%; } .col-lg-push-8 { left: 66.66666667%; } .col-lg-push-7 { left: 58.33333333%; } .col-lg-push-6 { left: 50%; } .col-lg-push-5 { left: 41.66666667%; } .col-lg-push-4 { left: 33.33333333%; } .col-lg-push-3 { left: 25%; } .col-lg-push-2 { left: 16.66666667%; } .col-lg-push-1 { left: 8.33333333%; } .col-lg-push-0 { left: auto; } .col-lg-offset-12 { margin-left: 100%; } .col-lg-offset-11 { margin-left: 91.66666667%; } .col-lg-offset-10 { margin-left: 83.33333333%; } .col-lg-offset-9 { margin-left: 75%; } .col-lg-offset-8 { margin-left: 66.66666667%; } .col-lg-offset-7 { margin-left: 58.33333333%; } .col-lg-offset-6 { margin-left: 50%; } .col-lg-offset-5 { margin-left: 41.66666667%; } .col-lg-offset-4 { margin-left: 33.33333333%; } .col-lg-offset-3 { margin-left: 25%; } .col-lg-offset-2 { margin-left: 16.66666667%; } .col-lg-offset-1 { margin-left: 8.33333333%; } .col-lg-offset-0 { margin-left: 0; } } table { background-color: transparent; } caption { padding-top: 8px; padding-bottom: 8px; color: #777; text-align: left; } th { text-align: left; } .table { width: 100%; max-width: 100%; margin-bottom: 20px; } .table > thead > tr > th, .table > tbody > tr > th, .table > tfoot > tr > th, .table > thead > tr > td, .table > tbody > tr > td, .table > tfoot > tr > td { padding: 8px; line-height: 1.42857143; vertical-align: top; border-top: 1px solid #ddd; } .table > thead > tr > th { vertical-align: bottom; border-bottom: 2px solid #ddd; } .table > caption + thead > tr:first-child > th, .table > colgroup + thead > tr:first-child > th, .table > thead:first-child > tr:first-child > th, .table > caption + thead > tr:first-child > td, .table > colgroup + thead > tr:first-child > td, .table > thead:first-child > tr:first-child > td { border-top: 0; } .table > tbody + tbody { border-top: 2px solid #ddd; } .table .table { background-color: #fff; } .table-condensed > thead > tr > th, .table-condensed > tbody > tr > th, .table-condensed > tfoot > tr > th, .table-condensed > thead > tr > td, .table-condensed > tbody > tr > td, .table-condensed > tfoot > tr > td { padding: 5px; } .table-bordered { border: 1px solid #ddd; } .table-bordered > thead > tr > th, .table-bordered > tbody > tr > th, .table-bordered > tfoot > tr > th, .table-bordered > thead > tr > td, .table-bordered > tbody > tr > td, .table-bordered > tfoot > tr > td { border: 1px solid #ddd; } .table-bordered > thead > tr > th, .table-bordered > thead > tr > td { border-bottom-width: 2px; } .table-striped > tbody > tr:nth-of-type(odd) { background-color: #f9f9f9; } .table-hover > tbody > tr:hover { background-color: #f5f5f5; } table col[class*="col-"] { position: static; display: table-column; float: none; } table td[class*="col-"], table th[class*="col-"] { position: static; display: table-cell; float: none; } .table > thead > tr > td.active, .table > tbody > tr > td.active, .table > tfoot > tr > td.active, .table > thead > tr > th.active, .table > tbody > tr > th.active, .table > tfoot > tr > th.active, .table > thead > tr.active > td, .table > tbody > tr.active > td, .table > tfoot > tr.active > td, .table > thead > tr.active > th, .table > tbody > tr.active > th, .table > tfoot > tr.active > th { background-color: #f5f5f5; } .table-hover > tbody > tr > td.active:hover, .table-hover > tbody > tr > th.active:hover, .table-hover > tbody > tr.active:hover > td, .table-hover > tbody > tr:hover > .active, .table-hover > tbody > tr.active:hover > th { background-color: #e8e8e8; } .table > thead > tr > td.success, .table > tbody > tr > td.success, .table > tfoot > tr > td.success, .table > thead > tr > th.success, .table > tbody > tr > th.success, .table > tfoot > tr > th.success, .table > thead > tr.success > td, .table > tbody > tr.success > td, .table > tfoot > tr.success > td, .table > thead > tr.success > th, .table > tbody > tr.success > th, .table > tfoot > tr.success > th { background-color: #dff0d8; } .table-hover > tbody > tr > td.success:hover, .table-hover > tbody > tr > th.success:hover, .table-hover > tbody > tr.success:hover > td, .table-hover > tbody > tr:hover > .success, .table-hover > tbody > tr.success:hover > th { background-color: #d0e9c6; } .table > thead > tr > td.info, .table > tbody > tr > td.info, .table > tfoot > tr > td.info, .table > thead > tr > th.info, .table > tbody > tr > th.info, .table > tfoot > tr > th.info, .table > thead > tr.info > td, .table > tbody > tr.info > td, .table > tfoot > tr.info > td, .table > thead > tr.info > th, .table > tbody > tr.info > th, .table > tfoot > tr.info > th { background-color: #d9edf7; } .table-hover > tbody > tr > td.info:hover, .table-hover > tbody > tr > th.info:hover, .table-hover > tbody > tr.info:hover > td, .table-hover > tbody > tr:hover > .info, .table-hover > tbody > tr.info:hover > th { background-color: #c4e3f3; } .table > thead > tr > td.warning, .table > tbody > tr > td.warning, .table > tfoot > tr > td.warning, .table > thead > tr > th.warning, .table > tbody > tr > th.warning, .table > tfoot > tr > th.warning, .table > thead > tr.warning > td, .table > tbody > tr.warning > td, .table > tfoot > tr.warning > td, .table > thead > tr.warning > th, .table > tbody > tr.warning > th, .table > tfoot > tr.warning > th { background-color: #fcf8e3; } .table-hover > tbody > tr > td.warning:hover, .table-hover > tbody > tr > th.warning:hover, .table-hover > tbody > tr.warning:hover > td, .table-hover > tbody > tr:hover > .warning, .table-hover > tbody > tr.warning:hover > th { background-color: #faf2cc; } .table > thead > tr > td.danger, .table > tbody > tr > td.danger, .table > tfoot > tr > td.danger, .table > thead > tr > th.danger, .table > tbody > tr > th.danger, .table > tfoot > tr > th.danger, .table > thead > tr.danger > td, .table > tbody > tr.danger > td, .table > tfoot > tr.danger > td, .table > thead > tr.danger > th, .table > tbody > tr.danger > th, .table > tfoot > tr.danger > th { background-color: #f2dede; } .table-hover > tbody > tr > td.danger:hover, .table-hover > tbody > tr > th.danger:hover, .table-hover > tbody > tr.danger:hover > td, .table-hover > tbody > tr:hover > .danger, .table-hover > tbody > tr.danger:hover > th { background-color: #ebcccc; } .table-responsive { min-height: .01%; overflow-x: auto; } @media screen and (max-width: 767px) { .table-responsive { width: 100%; margin-bottom: 15px; overflow-y: hidden; -ms-overflow-style: -ms-autohiding-scrollbar; border: 1px solid #ddd; } .table-responsive > .table { margin-bottom: 0; } .table-responsive > .table > thead > tr > th, .table-responsive > .table > tbody > tr > th, .table-responsive > .table > tfoot > tr > th, .table-responsive > .table > thead > tr > td, .table-responsive > .table > tbody > tr > td, .table-responsive > .table > tfoot > tr > td { white-space: nowrap; } .table-responsive > .table-bordered { border: 0; } .table-responsive > .table-bordered > thead > tr > th:first-child, .table-responsive > .table-bordered > tbody > tr > th:first-child, .table-responsive > .table-bordered > tfoot > tr > th:first-child, .table-responsive > .table-bordered > thead > tr > td:first-child, .table-responsive > .table-bordered > tbody > tr > td:first-child, .table-responsive > .table-bordered > tfoot > tr > td:first-child { border-left: 0; } .table-responsive > .table-bordered > thead > tr > th:last-child, .table-responsive > .table-bordered > tbody > tr > th:last-child, .table-responsive > .table-bordered > tfoot > tr > th:last-child, .table-responsive > .table-bordered > thead > tr > td:last-child, .table-responsive > .table-bordered > tbody > tr > td:last-child, .table-responsive > .table-bordered > tfoot > tr > td:last-child { border-right: 0; } .table-responsive > .table-bordered > tbody > tr:last-child > th, .table-responsive > .table-bordered > tfoot > tr:last-child > th, .table-responsive > .table-bordered > tbody > tr:last-child > td, .table-responsive > .table-bordered > tfoot > tr:last-child > td { border-bottom: 0; } } fieldset { min-width: 0; padding: 0; margin: 0; border: 0; } legend { display: block; width: 100%; padding: 0; margin-bottom: 20px; font-size: 21px; line-height: inherit; color: #333; border: 0; border-bottom: 1px solid #e5e5e5; } label { display: inline-block; max-width: 100%; margin-bottom: 5px; font-weight: bold; } input[type="search"] { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } input[type="radio"], input[type="checkbox"] { margin: 4px 0 0; margin-top: 1px \9; line-height: normal; } input[type="file"] { display: block; } input[type="range"] { display: block; width: 100%; } select[multiple], select[size] { height: auto; } input[type="file"]:focus, input[type="radio"]:focus, input[type="checkbox"]:focus { outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } output { display: block; padding-top: 7px; font-size: 14px; line-height: 1.42857143; color: #555; } .form-control { display: block; width: 100%; height: 34px; padding: 6px 12px; font-size: 14px; line-height: 1.42857143; color: #555; background-color: #fff; background-image: none; border: 1px solid #ccc; border-radius: 4px; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; } .form-control:focus { border-color: #66afe9; outline: 0; -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); } .form-control::-moz-placeholder { color: #999; opacity: 1; } .form-control:-ms-input-placeholder { color: #999; } .form-control::-webkit-input-placeholder { color: #999; } .form-control::-ms-expand { background-color: transparent; border: 0; } .form-control[disabled], .form-control[readonly], fieldset[disabled] .form-control { background-color: #eee; opacity: 1; } .form-control[disabled], fieldset[disabled] .form-control { cursor: not-allowed; } textarea.form-control { height: auto; } input[type="search"] { -webkit-appearance: none; } @media screen and (-webkit-min-device-pixel-ratio: 0) { input[type="date"].form-control, input[type="time"].form-control, input[type="datetime-local"].form-control, input[type="month"].form-control { line-height: 34px; } input[type="date"].input-sm, input[type="time"].input-sm, input[type="datetime-local"].input-sm, input[type="month"].input-sm, .input-group-sm input[type="date"], .input-group-sm input[type="time"], .input-group-sm input[type="datetime-local"], .input-group-sm input[type="month"] { line-height: 30px; } input[type="date"].input-lg, input[type="time"].input-lg, input[type="datetime-local"].input-lg, input[type="month"].input-lg, .input-group-lg input[type="date"], .input-group-lg input[type="time"], .input-group-lg input[type="datetime-local"], .input-group-lg input[type="month"] { line-height: 46px; } } .form-group { margin-bottom: 15px; } .radio, .checkbox { position: relative; display: block; margin-top: 10px; margin-bottom: 10px; } .radio label, .checkbox label { min-height: 20px; padding-left: 20px; margin-bottom: 0; font-weight: normal; cursor: pointer; } .radio input[type="radio"], .radio-inline input[type="radio"], .checkbox input[type="checkbox"], .checkbox-inline input[type="checkbox"] { position: absolute; margin-top: 4px \9; margin-left: -20px; } .radio + .radio, .checkbox + .checkbox { margin-top: -5px; } .radio-inline, .checkbox-inline { position: relative; display: inline-block; padding-left: 20px; margin-bottom: 0; font-weight: normal; vertical-align: middle; cursor: pointer; } .radio-inline + .radio-inline, .checkbox-inline + .checkbox-inline { margin-top: 0; margin-left: 10px; } input[type="radio"][disabled], input[type="checkbox"][disabled], input[type="radio"].disabled, input[type="checkbox"].disabled, fieldset[disabled] input[type="radio"], fieldset[disabled] input[type="checkbox"] { cursor: not-allowed; } .radio-inline.disabled, .checkbox-inline.disabled, fieldset[disabled] .radio-inline, fieldset[disabled] .checkbox-inline { cursor: not-allowed; } .radio.disabled label, .checkbox.disabled label, fieldset[disabled] .radio label, fieldset[disabled] .checkbox label { cursor: not-allowed; } .form-control-static { min-height: 34px; padding-top: 7px; padding-bottom: 7px; margin-bottom: 0; } .form-control-static.input-lg, .form-control-static.input-sm { padding-right: 0; padding-left: 0; } .input-sm { height: 30px; padding: 5px 10px; font-size: 12px; line-height: 1.5; border-radius: 3px; } select.input-sm { height: 30px; line-height: 30px; } textarea.input-sm, select[multiple].input-sm { height: auto; } .form-group-sm .form-control { height: 30px; padding: 5px 10px; font-size: 12px; line-height: 1.5; border-radius: 3px; } .form-group-sm select.form-control { height: 30px; line-height: 30px; } .form-group-sm textarea.form-control, .form-group-sm select[multiple].form-control { height: auto; } .form-group-sm .form-control-static { height: 30px; min-height: 32px; padding: 6px 10px; font-size: 12px; line-height: 1.5; } .input-lg { height: 46px; padding: 10px 16px; font-size: 18px; line-height: 1.3333333; border-radius: 6px; } select.input-lg { height: 46px; line-height: 46px; } textarea.input-lg, select[multiple].input-lg { height: auto; } .form-group-lg .form-control { height: 46px; padding: 10px 16px; font-size: 18px; line-height: 1.3333333; border-radius: 6px; } .form-group-lg select.form-control { height: 46px; line-height: 46px; } .form-group-lg textarea.form-control, .form-group-lg select[multiple].form-control { height: auto; } .form-group-lg .form-control-static { height: 46px; min-height: 38px; padding: 11px 16px; font-size: 18px; line-height: 1.3333333; } .has-feedback { position: relative; } .has-feedback .form-control { padding-right: 42.5px; } .form-control-feedback { position: absolute; top: 0; right: 0; z-index: 2; display: block; width: 34px; height: 34px; line-height: 34px; text-align: center; pointer-events: none; } .input-lg + .form-control-feedback, .input-group-lg + .form-control-feedback, .form-group-lg .form-control + .form-control-feedback { width: 46px; height: 46px; line-height: 46px; } .input-sm + .form-control-feedback, .input-group-sm + .form-control-feedback, .form-group-sm .form-control + .form-control-feedback { width: 30px; height: 30px; line-height: 30px; } .has-success .help-block, .has-success .control-label, .has-success .radio, .has-success .checkbox, .has-success .radio-inline, .has-success .checkbox-inline, .has-success.radio label, .has-success.checkbox label, .has-success.radio-inline label, .has-success.checkbox-inline label { color: #3c763d; } .has-success .form-control { border-color: #3c763d; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); } .has-success .form-control:focus { border-color: #2b542c; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; } .has-success .input-group-addon { color: #3c763d; background-color: #dff0d8; border-color: #3c763d; } .has-success .form-control-feedback { color: #3c763d; } .has-warning .help-block, .has-warning .control-label, .has-warning .radio, .has-warning .checkbox, .has-warning .radio-inline, .has-warning .checkbox-inline, .has-warning.radio label, .has-warning.checkbox label, .has-warning.radio-inline label, .has-warning.checkbox-inline label { color: #8a6d3b; } .has-warning .form-control { border-color: #8a6d3b; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); } .has-warning .form-control:focus { border-color: #66512c; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; } .has-warning .input-group-addon { color: #8a6d3b; background-color: #fcf8e3; border-color: #8a6d3b; } .has-warning .form-control-feedback { color: #8a6d3b; } .has-error .help-block, .has-error .control-label, .has-error .radio, .has-error .checkbox, .has-error .radio-inline, .has-error .checkbox-inline, .has-error.radio label, .has-error.checkbox label, .has-error.radio-inline label, .has-error.checkbox-inline label { color: #a94442; } .has-error .form-control { border-color: #a94442; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); } .has-error .form-control:focus { border-color: #843534; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; } .has-error .input-group-addon { color: #a94442; background-color: #f2dede; border-color: #a94442; } .has-error .form-control-feedback { color: #a94442; } .has-feedback label ~ .form-control-feedback { top: 25px; } .has-feedback label.sr-only ~ .form-control-feedback { top: 0; } .help-block { display: block; margin-top: 5px; margin-bottom: 10px; color: #737373; } @media (min-width: 768px) { .form-inline .form-group { display: inline-block; margin-bottom: 0; vertical-align: middle; } .form-inline .form-control { display: inline-block; width: auto; vertical-align: middle; } .form-inline .form-control-static { display: inline-block; } .form-inline .input-group { display: inline-table; vertical-align: middle; } .form-inline .input-group .input-group-addon, .form-inline .input-group .input-group-btn, .form-inline .input-group .form-control { width: auto; } .form-inline .input-group > .form-control { width: 100%; } .form-inline .control-label { margin-bottom: 0; vertical-align: middle; } .form-inline .radio, .form-inline .checkbox { display: inline-block; margin-top: 0; margin-bottom: 0; vertical-align: middle; } .form-inline .radio label, .form-inline .checkbox label { padding-left: 0; } .form-inline .radio input[type="radio"], .form-inline .checkbox input[type="checkbox"] { position: relative; margin-left: 0; } .form-inline .has-feedback .form-control-feedback { top: 0; } } .form-horizontal .radio, .form-horizontal .checkbox, .form-horizontal .radio-inline, .form-horizontal .checkbox-inline { padding-top: 7px; margin-top: 0; margin-bottom: 0; } .form-horizontal .radio, .form-horizontal .checkbox { min-height: 27px; } .form-horizontal .form-group { margin-right: -15px; margin-left: -15px; } @media (min-width: 768px) { .form-horizontal .control-label { padding-top: 7px; margin-bottom: 0; text-align: right; } } .form-horizontal .has-feedback .form-control-feedback { right: 15px; } @media (min-width: 768px) { .form-horizontal .form-group-lg .control-label { padding-top: 11px; font-size: 18px; } } @media (min-width: 768px) { .form-horizontal .form-group-sm .control-label { padding-top: 6px; font-size: 12px; } } .btn { display: inline-block; padding: 6px 12px; margin-bottom: 0; font-size: 14px; font-weight: normal; line-height: 1.42857143; text-align: center; white-space: nowrap; vertical-align: middle; -ms-touch-action: manipulation; touch-action: manipulation; cursor: pointer; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; background-image: none; border: 1px solid transparent; border-radius: 4px; } .btn:focus, .btn:active:focus, .btn.active:focus, .btn.focus, .btn:active.focus, .btn.active.focus { outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } .btn:hover, .btn:focus, .btn.focus { color: #333; text-decoration: none; } .btn:active, .btn.active { background-image: none; outline: 0; -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); } .btn.disabled, .btn[disabled], fieldset[disabled] .btn { cursor: not-allowed; filter: alpha(opacity=65); -webkit-box-shadow: none; box-shadow: none; opacity: .65; } a.btn.disabled, fieldset[disabled] a.btn { pointer-events: none; } .btn-default { color: #333; background-color: #fff; border-color: #ccc; } .btn-default:focus, .btn-default.focus { color: #333; background-color: #e6e6e6; border-color: #8c8c8c; } .btn-default:hover { color: #333; background-color: #e6e6e6; border-color: #adadad; } .btn-default:active, .btn-default.active, .open > .dropdown-toggle.btn-default { color: #333; background-color: #e6e6e6; border-color: #adadad; } .btn-default:active:hover, .btn-default.active:hover, .open > .dropdown-toggle.btn-default:hover, .btn-default:active:focus, .btn-default.active:focus, .open > .dropdown-toggle.btn-default:focus, .btn-default:active.focus, .btn-default.active.focus, .open > .dropdown-toggle.btn-default.focus { color: #333; background-color: #d4d4d4; border-color: #8c8c8c; } .btn-default:active, .btn-default.active, .open > .dropdown-toggle.btn-default { background-image: none; } .btn-default.disabled:hover, .btn-default[disabled]:hover, fieldset[disabled] .btn-default:hover, .btn-default.disabled:focus, .btn-default[disabled]:focus, fieldset[disabled] .btn-default:focus, .btn-default.disabled.focus, .btn-default[disabled].focus, fieldset[disabled] .btn-default.focus { background-color: #fff; border-color: #ccc; } .btn-default .badge { color: #fff; background-color: #333; } .btn-primary { color: #fff; background-color: #337ab7; border-color: #2e6da4; } .btn-primary:focus, .btn-primary.focus { color: #fff; background-color: #286090; border-color: #122b40; } .btn-primary:hover { color: #fff; background-color: #286090; border-color: #204d74; } .btn-primary:active, .btn-primary.active, .open > .dropdown-toggle.btn-primary { color: #fff; background-color: #286090; border-color: #204d74; } .btn-primary:active:hover, .btn-primary.active:hover, .open > .dropdown-toggle.btn-primary:hover, .btn-primary:active:focus, .btn-primary.active:focus, .open > .dropdown-toggle.btn-primary:focus, .btn-primary:active.focus, .btn-primary.active.focus, .open > .dropdown-toggle.btn-primary.focus { color: #fff; background-color: #204d74; border-color: #122b40; } .btn-primary:active, .btn-primary.active, .open > .dropdown-toggle.btn-primary { background-image: none; } .btn-primary.disabled:hover, .btn-primary[disabled]:hover, fieldset[disabled] .btn-primary:hover, .btn-primary.disabled:focus, .btn-primary[disabled]:focus, fieldset[disabled] .btn-primary:focus, .btn-primary.disabled.focus, .btn-primary[disabled].focus, fieldset[disabled] .btn-primary.focus { background-color: #337ab7; border-color: #2e6da4; } .btn-primary .badge { color: #337ab7; background-color: #fff; } .btn-success { color: #fff; background-color: #5cb85c; border-color: #4cae4c; } .btn-success:focus, .btn-success.focus { color: #fff; background-color: #449d44; border-color: #255625; } .btn-success:hover { color: #fff; background-color: #449d44; border-color: #398439; } .btn-success:active, .btn-success.active, .open > .dropdown-toggle.btn-success { color: #fff; background-color: #449d44; border-color: #398439; } .btn-success:active:hover, .btn-success.active:hover, .open > .dropdown-toggle.btn-success:hover, .btn-success:active:focus, .btn-success.active:focus, .open > .dropdown-toggle.btn-success:focus, .btn-success:active.focus, .btn-success.active.focus, .open > .dropdown-toggle.btn-success.focus { color: #fff; background-color: #398439; border-color: #255625; } .btn-success:active, .btn-success.active, .open > .dropdown-toggle.btn-success { background-image: none; } .btn-success.disabled:hover, .btn-success[disabled]:hover, fieldset[disabled] .btn-success:hover, .btn-success.disabled:focus, .btn-success[disabled]:focus, fieldset[disabled] .btn-success:focus, .btn-success.disabled.focus, .btn-success[disabled].focus, fieldset[disabled] .btn-success.focus { background-color: #5cb85c; border-color: #4cae4c; } .btn-success .badge { color: #5cb85c; background-color: #fff; } .btn-info { color: #fff; background-color: #5bc0de; border-color: #46b8da; } .btn-info:focus, .btn-info.focus { color: #fff; background-color: #31b0d5; border-color: #1b6d85; } .btn-info:hover { color: #fff; background-color: #31b0d5; border-color: #269abc; } .btn-info:active, .btn-info.active, .open > .dropdown-toggle.btn-info { color: #fff; background-color: #31b0d5; border-color: #269abc; } .btn-info:active:hover, .btn-info.active:hover, .open > .dropdown-toggle.btn-info:hover, .btn-info:active:focus, .btn-info.active:focus, .open > .dropdown-toggle.btn-info:focus, .btn-info:active.focus, .btn-info.active.focus, .open > .dropdown-toggle.btn-info.focus { color: #fff; background-color: #269abc; border-color: #1b6d85; } .btn-info:active, .btn-info.active, .open > .dropdown-toggle.btn-info { background-image: none; } .btn-info.disabled:hover, .btn-info[disabled]:hover, fieldset[disabled] .btn-info:hover, .btn-info.disabled:focus, .btn-info[disabled]:focus, fieldset[disabled] .btn-info:focus, .btn-info.disabled.focus, .btn-info[disabled].focus, fieldset[disabled] .btn-info.focus { background-color: #5bc0de; border-color: #46b8da; } .btn-info .badge { color: #5bc0de; background-color: #fff; } .btn-warning { color: #fff; background-color: #f0ad4e; border-color: #eea236; } .btn-warning:focus, .btn-warning.focus { color: #fff; background-color: #ec971f; border-color: #985f0d; } .btn-warning:hover { color: #fff; background-color: #ec971f; border-color: #d58512; } .btn-warning:active, .btn-warning.active, .open > .dropdown-toggle.btn-warning { color: #fff; background-color: #ec971f; border-color: #d58512; } .btn-warning:active:hover, .btn-warning.active:hover, .open > .dropdown-toggle.btn-warning:hover, .btn-warning:active:focus, .btn-warning.active:focus, .open > .dropdown-toggle.btn-warning:focus, .btn-warning:active.focus, .btn-warning.active.focus, .open > .dropdown-toggle.btn-warning.focus { color: #fff; background-color: #d58512; border-color: #985f0d; } .btn-warning:active, .btn-warning.active, .open > .dropdown-toggle.btn-warning { background-image: none; } .btn-warning.disabled:hover, .btn-warning[disabled]:hover, fieldset[disabled] .btn-warning:hover, .btn-warning.disabled:focus, .btn-warning[disabled]:focus, fieldset[disabled] .btn-warning:focus, .btn-warning.disabled.focus, .btn-warning[disabled].focus, fieldset[disabled] .btn-warning.focus { background-color: #f0ad4e; border-color: #eea236; } .btn-warning .badge { color: #f0ad4e; background-color: #fff; } .btn-danger { color: #fff; background-color: #d9534f; border-color: #d43f3a; } .btn-danger:focus, .btn-danger.focus { color: #fff; background-color: #c9302c; border-color: #761c19; } .btn-danger:hover { color: #fff; background-color: #c9302c; border-color: #ac2925; } .btn-danger:active, .btn-danger.active, .open > .dropdown-toggle.btn-danger { color: #fff; background-color: #c9302c; border-color: #ac2925; } .btn-danger:active:hover, .btn-danger.active:hover, .open > .dropdown-toggle.btn-danger:hover, .btn-danger:active:focus, .btn-danger.active:focus, .open > .dropdown-toggle.btn-danger:focus, .btn-danger:active.focus, .btn-danger.active.focus, .open > .dropdown-toggle.btn-danger.focus { color: #fff; background-color: #ac2925; border-color: #761c19; } .btn-danger:active, .btn-danger.active, .open > .dropdown-toggle.btn-danger { background-image: none; } .btn-danger.disabled:hover, .btn-danger[disabled]:hover, fieldset[disabled] .btn-danger:hover, .btn-danger.disabled:focus, .btn-danger[disabled]:focus, fieldset[disabled] .btn-danger:focus, .btn-danger.disabled.focus, .btn-danger[disabled].focus, fieldset[disabled] .btn-danger.focus { background-color: #d9534f; border-color: #d43f3a; } .btn-danger .badge { color: #d9534f; background-color: #fff; } .btn-link { font-weight: normal; color: #337ab7; border-radius: 0; } .btn-link, .btn-link:active, .btn-link.active, .btn-link[disabled], fieldset[disabled] .btn-link { background-color: transparent; -webkit-box-shadow: none; box-shadow: none; } .btn-link, .btn-link:hover, .btn-link:focus, .btn-link:active { border-color: transparent; } .btn-link:hover, .btn-link:focus { color: #23527c; text-decoration: underline; background-color: transparent; } .btn-link[disabled]:hover, fieldset[disabled] .btn-link:hover, .btn-link[disabled]:focus, fieldset[disabled] .btn-link:focus { color: #777; text-decoration: none; } .btn-lg, .btn-group-lg > .btn { padding: 10px 16px; font-size: 18px; line-height: 1.3333333; border-radius: 6px; } .btn-sm, .btn-group-sm > .btn { padding: 5px 10px; font-size: 12px; line-height: 1.5; border-radius: 3px; } .btn-xs, .btn-group-xs > .btn { padding: 1px 5px; font-size: 12px; line-height: 1.5; border-radius: 3px; } .btn-block { display: block; width: 100%; } .btn-block + .btn-block { margin-top: 5px; } input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="button"].btn-block { width: 100%; } .fade { opacity: 0; -webkit-transition: opacity .15s linear; -o-transition: opacity .15s linear; transition: opacity .15s linear; } .fade.in { opacity: 1; } .collapse { display: none; } .collapse.in { display: block; } tr.collapse.in { display: table-row; } tbody.collapse.in { display: table-row-group; } .collapsing { position: relative; height: 0; overflow: hidden; -webkit-transition-timing-function: ease; -o-transition-timing-function: ease; transition-timing-function: ease; -webkit-transition-duration: .35s; -o-transition-duration: .35s; transition-duration: .35s; -webkit-transition-property: height, visibility; -o-transition-property: height, visibility; transition-property: height, visibility; } .caret { display: inline-block; width: 0; height: 0; margin-left: 2px; vertical-align: middle; border-top: 4px dashed; border-top: 4px solid \9; border-right: 4px solid transparent; border-left: 4px solid transparent; } .dropup, .dropdown { position: relative; } .dropdown-toggle:focus { outline: 0; } .dropdown-menu { position: absolute; top: 100%; left: 0; z-index: 1000; display: none; float: left; min-width: 160px; padding: 5px 0; margin: 2px 0 0; font-size: 14px; text-align: left; list-style: none; background-color: #fff; -webkit-background-clip: padding-box; background-clip: padding-box; border: 1px solid #ccc; border: 1px solid rgba(0, 0, 0, .15); border-radius: 4px; -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175); box-shadow: 0 6px 12px rgba(0, 0, 0, .175); } .dropdown-menu.pull-right { right: 0; left: auto; } .dropdown-menu .divider { height: 1px; margin: 9px 0; overflow: hidden; background-color: #e5e5e5; } .dropdown-menu > li > a { display: block; padding: 3px 20px; clear: both; font-weight: normal; line-height: 1.42857143; color: #333; white-space: nowrap; } .dropdown-menu > li > a:hover, .dropdown-menu > li > a:focus { color: #262626; text-decoration: none; background-color: #f5f5f5; } .dropdown-menu > .active > a, .dropdown-menu > .active > a:hover, .dropdown-menu > .active > a:focus { color: #fff; text-decoration: none; background-color: #337ab7; outline: 0; } .dropdown-menu > .disabled > a, .dropdown-menu > .disabled > a:hover, .dropdown-menu > .disabled > a:focus { color: #777; } .dropdown-menu > .disabled > a:hover, .dropdown-menu > .disabled > a:focus { text-decoration: none; cursor: not-allowed; background-color: transparent; background-image: none; filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); } .open > .dropdown-menu { display: block; } .open > a { outline: 0; } .dropdown-menu-right { right: 0; left: auto; } .dropdown-menu-left { right: auto; left: 0; } .dropdown-header { display: block; padding: 3px 20px; font-size: 12px; line-height: 1.42857143; color: #777; white-space: nowrap; } .dropdown-backdrop { position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: 990; } .pull-right > .dropdown-menu { right: 0; left: auto; } .dropup .caret, .navbar-fixed-bottom .dropdown .caret { content: ""; border-top: 0; border-bottom: 4px dashed; border-bottom: 4px solid \9; } .dropup .dropdown-menu, .navbar-fixed-bottom .dropdown .dropdown-menu { top: auto; bottom: 100%; margin-bottom: 2px; } @media (min-width: 768px) { .navbar-right .dropdown-menu { right: 0; left: auto; } .navbar-right .dropdown-menu-left { right: auto; left: 0; } } .btn-group, .btn-group-vertical { position: relative; display: inline-block; vertical-align: middle; } .btn-group > .btn, .btn-group-vertical > .btn { position: relative; float: left; } .btn-group > .btn:hover, .btn-group-vertical > .btn:hover, .btn-group > .btn:focus, .btn-group-vertical > .btn:focus, .btn-group > .btn:active, .btn-group-vertical > .btn:active, .btn-group > .btn.active, .btn-group-vertical > .btn.active { z-index: 2; } .btn-group .btn + .btn, .btn-group .btn + .btn-group, .btn-group .btn-group + .btn, .btn-group .btn-group + .btn-group { margin-left: -1px; } .btn-toolbar { margin-left: -5px; } .btn-toolbar .btn, .btn-toolbar .btn-group, .btn-toolbar .input-group { float: left; } .btn-toolbar > .btn, .btn-toolbar > .btn-group, .btn-toolbar > .input-group { margin-left: 5px; } .btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { border-radius: 0; } .btn-group > .btn:first-child { margin-left: 0; } .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { border-top-right-radius: 0; border-bottom-right-radius: 0; } .btn-group > .btn:last-child:not(:first-child), .btn-group > .dropdown-toggle:not(:first-child) { border-top-left-radius: 0; border-bottom-left-radius: 0; } .btn-group > .btn-group { float: left; } .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { border-radius: 0; } .btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child, .btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { border-top-right-radius: 0; border-bottom-right-radius: 0; } .btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { border-top-left-radius: 0; border-bottom-left-radius: 0; } .btn-group .dropdown-toggle:active, .btn-group.open .dropdown-toggle { outline: 0; } .btn-group > .btn + .dropdown-toggle { padding-right: 8px; padding-left: 8px; } .btn-group > .btn-lg + .dropdown-toggle { padding-right: 12px; padding-left: 12px; } .btn-group.open .dropdown-toggle { -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); } .btn-group.open .dropdown-toggle.btn-link { -webkit-box-shadow: none; box-shadow: none; } .btn .caret { margin-left: 0; } .btn-lg .caret { border-width: 5px 5px 0; border-bottom-width: 0; } .dropup .btn-lg .caret { border-width: 0 5px 5px; } .btn-group-vertical > .btn, .btn-group-vertical > .btn-group, .btn-group-vertical > .btn-group > .btn { display: block; float: none; width: 100%; max-width: 100%; } .btn-group-vertical > .btn-group > .btn { float: none; } .btn-group-vertical > .btn + .btn, .btn-group-vertical > .btn + .btn-group, .btn-group-vertical > .btn-group + .btn, .btn-group-vertical > .btn-group + .btn-group { margin-top: -1px; margin-left: 0; } .btn-group-vertical > .btn:not(:first-child):not(:last-child) { border-radius: 0; } .btn-group-vertical > .btn:first-child:not(:last-child) { border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 0; border-bottom-left-radius: 0; } .btn-group-vertical > .btn:last-child:not(:first-child) { border-top-left-radius: 0; border-top-right-radius: 0; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; } .btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { border-radius: 0; } .btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, .btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { border-bottom-right-radius: 0; border-bottom-left-radius: 0; } .btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { border-top-left-radius: 0; border-top-right-radius: 0; } .btn-group-justified { display: table; width: 100%; table-layout: fixed; border-collapse: separate; } .btn-group-justified > .btn, .btn-group-justified > .btn-group { display: table-cell; float: none; width: 1%; } .btn-group-justified > .btn-group .btn { width: 100%; } .btn-group-justified > .btn-group .dropdown-menu { left: auto; } [data-toggle="buttons"] > .btn input[type="radio"], [data-toggle="buttons"] > .btn-group > .btn input[type="radio"], [data-toggle="buttons"] > .btn input[type="checkbox"], [data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { position: absolute; clip: rect(0, 0, 0, 0); pointer-events: none; } .input-group { position: relative; display: table; border-collapse: separate; } .input-group[class*="col-"] { float: none; padding-right: 0; padding-left: 0; } .input-group .form-control { position: relative; z-index: 2; float: left; width: 100%; margin-bottom: 0; } .input-group .form-control:focus { z-index: 3; } .input-group-lg > .form-control, .input-group-lg > .input-group-addon, .input-group-lg > .input-group-btn > .btn { height: 46px; padding: 10px 16px; font-size: 18px; line-height: 1.3333333; border-radius: 6px; } select.input-group-lg > .form-control, select.input-group-lg > .input-group-addon, select.input-group-lg > .input-group-btn > .btn { height: 46px; line-height: 46px; } textarea.input-group-lg > .form-control, textarea.input-group-lg > .input-group-addon, textarea.input-group-lg > .input-group-btn > .btn, select[multiple].input-group-lg > .form-control, select[multiple].input-group-lg > .input-group-addon, select[multiple].input-group-lg > .input-group-btn > .btn { height: auto; } .input-group-sm > .form-control, .input-group-sm > .input-group-addon, .input-group-sm > .input-group-btn > .btn { height: 30px; padding: 5px 10px; font-size: 12px; line-height: 1.5; border-radius: 3px; } select.input-group-sm > .form-control, select.input-group-sm > .input-group-addon, select.input-group-sm > .input-group-btn > .btn { height: 30px; line-height: 30px; } textarea.input-group-sm > .form-control, textarea.input-group-sm > .input-group-addon, textarea.input-group-sm > .input-group-btn > .btn, select[multiple].input-group-sm > .form-control, select[multiple].input-group-sm > .input-group-addon, select[multiple].input-group-sm > .input-group-btn > .btn { height: auto; } .input-group-addon, .input-group-btn, .input-group .form-control { display: table-cell; } .input-group-addon:not(:first-child):not(:last-child), .input-group-btn:not(:first-child):not(:last-child), .input-group .form-control:not(:first-child):not(:last-child) { border-radius: 0; } .input-group-addon, .input-group-btn { width: 1%; white-space: nowrap; vertical-align: middle; } .input-group-addon { padding: 6px 12px; font-size: 14px; font-weight: normal; line-height: 1; color: #555; text-align: center; background-color: #eee; border: 1px solid #ccc; border-radius: 4px; } .input-group-addon.input-sm { padding: 5px 10px; font-size: 12px; border-radius: 3px; } .input-group-addon.input-lg { padding: 10px 16px; font-size: 18px; border-radius: 6px; } .input-group-addon input[type="radio"], .input-group-addon input[type="checkbox"] { margin-top: 0; } .input-group .form-control:first-child, .input-group-addon:first-child, .input-group-btn:first-child > .btn, .input-group-btn:first-child > .btn-group > .btn, .input-group-btn:first-child > .dropdown-toggle, .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), .input-group-btn:last-child > .btn-group:not(:last-child) > .btn { border-top-right-radius: 0; border-bottom-right-radius: 0; } .input-group-addon:first-child { border-right: 0; } .input-group .form-control:last-child, .input-group-addon:last-child, .input-group-btn:last-child > .btn, .input-group-btn:last-child > .btn-group > .btn, .input-group-btn:last-child > .dropdown-toggle, .input-group-btn:first-child > .btn:not(:first-child), .input-group-btn:first-child > .btn-group:not(:first-child) > .btn { border-top-left-radius: 0; border-bottom-left-radius: 0; } .input-group-addon:last-child { border-left: 0; } .input-group-btn { position: relative; font-size: 0; white-space: nowrap; } .input-group-btn > .btn { position: relative; } .input-group-btn > .btn + .btn { margin-left: -1px; } .input-group-btn > .btn:hover, .input-group-btn > .btn:focus, .input-group-btn > .btn:active { z-index: 2; } .input-group-btn:first-child > .btn, .input-group-btn:first-child > .btn-group { margin-right: -1px; } .input-group-btn:last-child > .btn, .input-group-btn:last-child > .btn-group { z-index: 2; margin-left: -1px; } .nav { padding-left: 0; margin-bottom: 0; list-style: none; } .nav > li { position: relative; display: block; } .nav > li > a { position: relative; display: block; padding: 10px 15px; } .nav > li > a:hover, .nav > li > a:focus { text-decoration: none; background-color: #eee; } .nav > li.disabled > a { color: #777; } .nav > li.disabled > a:hover, .nav > li.disabled > a:focus { color: #777; text-decoration: none; cursor: not-allowed; background-color: transparent; } .nav .open > a, .nav .open > a:hover, .nav .open > a:focus { background-color: #eee; border-color: #337ab7; } .nav .nav-divider { height: 1px; margin: 9px 0; overflow: hidden; background-color: #e5e5e5; } .nav > li > a > img { max-width: none; } .nav-tabs { border-bottom: 1px solid #ddd; } .nav-tabs > li { float: left; margin-bottom: -1px; } .nav-tabs > li > a { margin-right: 2px; line-height: 1.42857143; border: 1px solid transparent; border-radius: 4px 4px 0 0; } .nav-tabs > li > a:hover { border-color: #eee #eee #ddd; } .nav-tabs > li.active > a, .nav-tabs > li.active > a:hover, .nav-tabs > li.active > a:focus { color: #555; cursor: default; background-color: #fff; border: 1px solid #ddd; border-bottom-color: transparent; } .nav-tabs.nav-justified { width: 100%; border-bottom: 0; } .nav-tabs.nav-justified > li { float: none; } .nav-tabs.nav-justified > li > a { margin-bottom: 5px; text-align: center; } .nav-tabs.nav-justified > .dropdown .dropdown-menu { top: auto; left: auto; } @media (min-width: 768px) { .nav-tabs.nav-justified > li { display: table-cell; width: 1%; } .nav-tabs.nav-justified > li > a { margin-bottom: 0; } } .nav-tabs.nav-justified > li > a { margin-right: 0; border-radius: 4px; } .nav-tabs.nav-justified > .active > a, .nav-tabs.nav-justified > .active > a:hover, .nav-tabs.nav-justified > .active > a:focus { border: 1px solid #ddd; } @media (min-width: 768px) { .nav-tabs.nav-justified > li > a { border-bottom: 1px solid #ddd; border-radius: 4px 4px 0 0; } .nav-tabs.nav-justified > .active > a, .nav-tabs.nav-justified > .active > a:hover, .nav-tabs.nav-justified > .active > a:focus { border-bottom-color: #fff; } } .nav-pills > li { float: left; } .nav-pills > li > a { border-radius: 4px; } .nav-pills > li + li { margin-left: 2px; } .nav-pills > li.active > a, .nav-pills > li.active > a:hover, .nav-pills > li.active > a:focus { color: #fff; background-color: #337ab7; } .nav-stacked > li { float: none; } .nav-stacked > li + li { margin-top: 2px; margin-left: 0; } .nav-justified { width: 100%; } .nav-justified > li { float: none; } .nav-justified > li > a { margin-bottom: 5px; text-align: center; } .nav-justified > .dropdown .dropdown-menu { top: auto; left: auto; } @media (min-width: 768px) { .nav-justified > li { display: table-cell; width: 1%; } .nav-justified > li > a { margin-bottom: 0; } } .nav-tabs-justified { border-bottom: 0; } .nav-tabs-justified > li > a { margin-right: 0; border-radius: 4px; } .nav-tabs-justified > .active > a, .nav-tabs-justified > .active > a:hover, .nav-tabs-justified > .active > a:focus { border: 1px solid #ddd; } @media (min-width: 768px) { .nav-tabs-justified > li > a { border-bottom: 1px solid #ddd; border-radius: 4px 4px 0 0; } .nav-tabs-justified > .active > a, .nav-tabs-justified > .active > a:hover, .nav-tabs-justified > .active > a:focus { border-bottom-color: #fff; } } .tab-content > .tab-pane { display: none; } .tab-content > .active { display: block; } .nav-tabs .dropdown-menu { margin-top: -1px; border-top-left-radius: 0; border-top-right-radius: 0; } .navbar { position: relative; min-height: 50px; margin-bottom: 20px; border: 1px solid transparent; } @media (min-width: 768px) { .navbar { border-radius: 4px; } } @media (min-width: 768px) { .navbar-header { float: left; } } .navbar-collapse { padding-right: 15px; padding-left: 15px; overflow-x: visible; -webkit-overflow-scrolling: touch; border-top: 1px solid transparent; -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); } .navbar-collapse.in { overflow-y: auto; } @media (min-width: 768px) { .navbar-collapse { width: auto; border-top: 0; -webkit-box-shadow: none; box-shadow: none; } .navbar-collapse.collapse { display: block !important; height: auto !important; padding-bottom: 0; overflow: visible !important; } .navbar-collapse.in { overflow-y: visible; } .navbar-fixed-top .navbar-collapse, .navbar-static-top .navbar-collapse, .navbar-fixed-bottom .navbar-collapse { padding-right: 0; padding-left: 0; } } .navbar-fixed-top .navbar-collapse, .navbar-fixed-bottom .navbar-collapse { max-height: 340px; } @media (max-device-width: 480px) and (orientation: landscape) { .navbar-fixed-top .navbar-collapse, .navbar-fixed-bottom .navbar-collapse { max-height: 200px; } } .container > .navbar-header, .container-fluid > .navbar-header, .container > .navbar-collapse, .container-fluid > .navbar-collapse { margin-right: -15px; margin-left: -15px; } @media (min-width: 768px) { .container > .navbar-header, .container-fluid > .navbar-header, .container > .navbar-collapse, .container-fluid > .navbar-collapse { margin-right: 0; margin-left: 0; } } .navbar-static-top { z-index: 1000; border-width: 0 0 1px; } @media (min-width: 768px) { .navbar-static-top { border-radius: 0; } } .navbar-fixed-top, .navbar-fixed-bottom { position: fixed; right: 0; left: 0; z-index: 1030; } @media (min-width: 768px) { .navbar-fixed-top, .navbar-fixed-bottom { border-radius: 0; } } .navbar-fixed-top { top: 0; border-width: 0 0 1px; } .navbar-fixed-bottom { bottom: 0; margin-bottom: 0; border-width: 1px 0 0; } .navbar-brand { float: left; height: 50px; padding: 15px 15px; font-size: 18px; line-height: 20px; } .navbar-brand:hover, .navbar-brand:focus { text-decoration: none; } .navbar-brand > img { display: block; } @media (min-width: 768px) { .navbar > .container .navbar-brand, .navbar > .container-fluid .navbar-brand { margin-left: -15px; } } .navbar-toggle { position: relative; float: right; padding: 9px 10px; margin-top: 8px; margin-right: 15px; margin-bottom: 8px; background-color: transparent; background-image: none; border: 1px solid transparent; border-radius: 4px; } .navbar-toggle:focus { outline: 0; } .navbar-toggle .icon-bar { display: block; width: 22px; height: 2px; border-radius: 1px; } .navbar-toggle .icon-bar + .icon-bar { margin-top: 4px; } @media (min-width: 768px) { .navbar-toggle { display: none; } } .navbar-nav { margin: 7.5px -15px; } .navbar-nav > li > a { padding-top: 10px; padding-bottom: 10px; line-height: 20px; } @media (max-width: 767px) { .navbar-nav .open .dropdown-menu { position: static; float: none; width: auto; margin-top: 0; background-color: transparent; border: 0; -webkit-box-shadow: none; box-shadow: none; } .navbar-nav .open .dropdown-menu > li > a, .navbar-nav .open .dropdown-menu .dropdown-header { padding: 5px 15px 5px 25px; } .navbar-nav .open .dropdown-menu > li > a { line-height: 20px; } .navbar-nav .open .dropdown-menu > li > a:hover, .navbar-nav .open .dropdown-menu > li > a:focus { background-image: none; } } @media (min-width: 768px) { .navbar-nav { float: left; margin: 0; } .navbar-nav > li { float: left; } .navbar-nav > li > a { padding-top: 15px; padding-bottom: 15px; } } .navbar-form { padding: 10px 15px; margin-top: 8px; margin-right: -15px; margin-bottom: 8px; margin-left: -15px; border-top: 1px solid transparent; border-bottom: 1px solid transparent; -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); } @media (min-width: 768px) { .navbar-form .form-group { display: inline-block; margin-bottom: 0; vertical-align: middle; } .navbar-form .form-control { display: inline-block; width: auto; vertical-align: middle; } .navbar-form .form-control-static { display: inline-block; } .navbar-form .input-group { display: inline-table; vertical-align: middle; } .navbar-form .input-group .input-group-addon, .navbar-form .input-group .input-group-btn, .navbar-form .input-group .form-control { width: auto; } .navbar-form .input-group > .form-control { width: 100%; } .navbar-form .control-label { margin-bottom: 0; vertical-align: middle; } .navbar-form .radio, .navbar-form .checkbox { display: inline-block; margin-top: 0; margin-bottom: 0; vertical-align: middle; } .navbar-form .radio label, .navbar-form .checkbox label { padding-left: 0; } .navbar-form .radio input[type="radio"], .navbar-form .checkbox input[type="checkbox"] { position: relative; margin-left: 0; } .navbar-form .has-feedback .form-control-feedback { top: 0; } } @media (max-width: 767px) { .navbar-form .form-group { margin-bottom: 5px; } .navbar-form .form-group:last-child { margin-bottom: 0; } } @media (min-width: 768px) { .navbar-form { width: auto; padding-top: 0; padding-bottom: 0; margin-right: 0; margin-left: 0; border: 0; -webkit-box-shadow: none; box-shadow: none; } } .navbar-nav > li > .dropdown-menu { margin-top: 0; border-top-left-radius: 0; border-top-right-radius: 0; } .navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { margin-bottom: 0; border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 0; border-bottom-left-radius: 0; } .navbar-btn { margin-top: 8px; margin-bottom: 8px; } .navbar-btn.btn-sm { margin-top: 10px; margin-bottom: 10px; } .navbar-btn.btn-xs { margin-top: 14px; margin-bottom: 14px; } .navbar-text { margin-top: 15px; margin-bottom: 15px; } @media (min-width: 768px) { .navbar-text { float: left; margin-right: 15px; margin-left: 15px; } } @media (min-width: 768px) { .navbar-left { float: left !important; } .navbar-right { float: right !important; margin-right: -15px; } .navbar-right ~ .navbar-right { margin-right: 0; } } .navbar-default { background-color: #f8f8f8; border-color: #e7e7e7; } .navbar-default .navbar-brand { color: #777; } .navbar-default .navbar-brand:hover, .navbar-default .navbar-brand:focus { color: #5e5e5e; background-color: transparent; } .navbar-default .navbar-text { color: #777; } .navbar-default .navbar-nav > li > a { color: #777; } .navbar-default .navbar-nav > li > a:hover, .navbar-default .navbar-nav > li > a:focus { color: #333; background-color: transparent; } .navbar-default .navbar-nav > .active > a, .navbar-default .navbar-nav > .active > a:hover, .navbar-default .navbar-nav > .active > a:focus { color: #555; background-color: #e7e7e7; } .navbar-default .navbar-nav > .disabled > a, .navbar-default .navbar-nav > .disabled > a:hover, .navbar-default .navbar-nav > .disabled > a:focus { color: #ccc; background-color: transparent; } .navbar-default .navbar-toggle { border-color: #ddd; } .navbar-default .navbar-toggle:hover, .navbar-default .navbar-toggle:focus { background-color: #ddd; } .navbar-default .navbar-toggle .icon-bar { background-color: #888; } .navbar-default .navbar-collapse, .navbar-default .navbar-form { border-color: #e7e7e7; } .navbar-default .navbar-nav > .open > a, .navbar-default .navbar-nav > .open > a:hover, .navbar-default .navbar-nav > .open > a:focus { color: #555; background-color: #e7e7e7; } @media (max-width: 767px) { .navbar-default .navbar-nav .open .dropdown-menu > li > a { color: #777; } .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { color: #333; background-color: transparent; } .navbar-default .navbar-nav .open .dropdown-menu > .active > a, .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { color: #555; background-color: #e7e7e7; } .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { color: #ccc; background-color: transparent; } } .navbar-default .navbar-link { color: #777; } .navbar-default .navbar-link:hover { color: #333; } .navbar-default .btn-link { color: #777; } .navbar-default .btn-link:hover, .navbar-default .btn-link:focus { color: #333; } .navbar-default .btn-link[disabled]:hover, fieldset[disabled] .navbar-default .btn-link:hover, .navbar-default .btn-link[disabled]:focus, fieldset[disabled] .navbar-default .btn-link:focus { color: #ccc; } .navbar-inverse { background-color: #222; border-color: #080808; } .navbar-inverse .navbar-brand { color: #9d9d9d; } .navbar-inverse .navbar-brand:hover, .navbar-inverse .navbar-brand:focus { color: #fff; background-color: transparent; } .navbar-inverse .navbar-text { color: #9d9d9d; } .navbar-inverse .navbar-nav > li > a { color: #9d9d9d; } .navbar-inverse .navbar-nav > li > a:hover, .navbar-inverse .navbar-nav > li > a:focus { color: #fff; background-color: transparent; } .navbar-inverse .navbar-nav > .active > a, .navbar-inverse .navbar-nav > .active > a:hover, .navbar-inverse .navbar-nav > .active > a:focus { color: #fff; background-color: #080808; } .navbar-inverse .navbar-nav > .disabled > a, .navbar-inverse .navbar-nav > .disabled > a:hover, .navbar-inverse .navbar-nav > .disabled > a:focus { color: #444; background-color: transparent; } .navbar-inverse .navbar-toggle { border-color: #333; } .navbar-inverse .navbar-toggle:hover, .navbar-inverse .navbar-toggle:focus { background-color: #333; } .navbar-inverse .navbar-toggle .icon-bar { background-color: #fff; } .navbar-inverse .navbar-collapse, .navbar-inverse .navbar-form { border-color: #101010; } .navbar-inverse .navbar-nav > .open > a, .navbar-inverse .navbar-nav > .open > a:hover, .navbar-inverse .navbar-nav > .open > a:focus { color: #fff; background-color: #080808; } @media (max-width: 767px) { .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { border-color: #080808; } .navbar-inverse .navbar-nav .open .dropdown-menu .divider { background-color: #080808; } .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { color: #9d9d9d; } .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { color: #fff; background-color: transparent; } .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { color: #fff; background-color: #080808; } .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { color: #444; background-color: transparent; } } .navbar-inverse .navbar-link { color: #9d9d9d; } .navbar-inverse .navbar-link:hover { color: #fff; } .navbar-inverse .btn-link { color: #9d9d9d; } .navbar-inverse .btn-link:hover, .navbar-inverse .btn-link:focus { color: #fff; } .navbar-inverse .btn-link[disabled]:hover, fieldset[disabled] .navbar-inverse .btn-link:hover, .navbar-inverse .btn-link[disabled]:focus, fieldset[disabled] .navbar-inverse .btn-link:focus { color: #444; } .breadcrumb { padding: 8px 15px; margin-bottom: 20px; list-style: none; background-color: #f5f5f5; border-radius: 4px; } .breadcrumb > li { display: inline-block; } .breadcrumb > li + li:before { padding: 0 5px; color: #ccc; content: "/\00a0"; } .breadcrumb > .active { color: #777; } .pagination { display: inline-block; padding-left: 0; margin: 20px 0; border-radius: 4px; } .pagination > li { display: inline; } .pagination > li > a, .pagination > li > span { position: relative; float: left; padding: 6px 12px; margin-left: -1px; line-height: 1.42857143; color: #337ab7; text-decoration: none; background-color: #fff; border: 1px solid #ddd; } .pagination > li:first-child > a, .pagination > li:first-child > span { margin-left: 0; border-top-left-radius: 4px; border-bottom-left-radius: 4px; } .pagination > li:last-child > a, .pagination > li:last-child > span { border-top-right-radius: 4px; border-bottom-right-radius: 4px; } .pagination > li > a:hover, .pagination > li > span:hover, .pagination > li > a:focus, .pagination > li > span:focus { z-index: 2; color: #23527c; background-color: #eee; border-color: #ddd; } .pagination > .active > a, .pagination > .active > span, .pagination > .active > a:hover, .pagination > .active > span:hover, .pagination > .active > a:focus, .pagination > .active > span:focus { z-index: 3; color: #fff; cursor: default; background-color: #337ab7; border-color: #337ab7; } .pagination > .disabled > span, .pagination > .disabled > span:hover, .pagination > .disabled > span:focus, .pagination > .disabled > a, .pagination > .disabled > a:hover, .pagination > .disabled > a:focus { color: #777; cursor: not-allowed; background-color: #fff; border-color: #ddd; } .pagination-lg > li > a, .pagination-lg > li > span { padding: 10px 16px; font-size: 18px; line-height: 1.3333333; } .pagination-lg > li:first-child > a, .pagination-lg > li:first-child > span { border-top-left-radius: 6px; border-bottom-left-radius: 6px; } .pagination-lg > li:last-child > a, .pagination-lg > li:last-child > span { border-top-right-radius: 6px; border-bottom-right-radius: 6px; } .pagination-sm > li > a, .pagination-sm > li > span { padding: 5px 10px; font-size: 12px; line-height: 1.5; } .pagination-sm > li:first-child > a, .pagination-sm > li:first-child > span { border-top-left-radius: 3px; border-bottom-left-radius: 3px; } .pagination-sm > li:last-child > a, .pagination-sm > li:last-child > span { border-top-right-radius: 3px; border-bottom-right-radius: 3px; } .pager { padding-left: 0; margin: 20px 0; text-align: center; list-style: none; } .pager li { display: inline; } .pager li > a, .pager li > span { display: inline-block; padding: 5px 14px; background-color: #fff; border: 1px solid #ddd; border-radius: 15px; } .pager li > a:hover, .pager li > a:focus { text-decoration: none; background-color: #eee; } .pager .next > a, .pager .next > span { float: right; } .pager .previous > a, .pager .previous > span { float: left; } .pager .disabled > a, .pager .disabled > a:hover, .pager .disabled > a:focus, .pager .disabled > span { color: #777; cursor: not-allowed; background-color: #fff; } .label { display: inline; padding: .2em .6em .3em; font-size: 75%; font-weight: bold; line-height: 1; color: #fff; text-align: center; white-space: nowrap; vertical-align: baseline; border-radius: .25em; } a.label:hover, a.label:focus { color: #fff; text-decoration: none; cursor: pointer; } .label:empty { display: none; } .btn .label { position: relative; top: -1px; } .label-default { background-color: #777; } .label-default[href]:hover, .label-default[href]:focus { background-color: #5e5e5e; } .label-primary { background-color: #337ab7; } .label-primary[href]:hover, .label-primary[href]:focus { background-color: #286090; } .label-success { background-color: #5cb85c; } .label-success[href]:hover, .label-success[href]:focus { background-color: #449d44; } .label-info { background-color: #5bc0de; } .label-info[href]:hover, .label-info[href]:focus { background-color: #31b0d5; } .label-warning { background-color: #f0ad4e; } .label-warning[href]:hover, .label-warning[href]:focus { background-color: #ec971f; } .label-danger { background-color: #d9534f; } .label-danger[href]:hover, .label-danger[href]:focus { background-color: #c9302c; } .badge { display: inline-block; min-width: 10px; padding: 3px 7px; font-size: 12px; font-weight: bold; line-height: 1; color: #fff; text-align: center; white-space: nowrap; vertical-align: middle; background-color: #777; border-radius: 10px; } .badge:empty { display: none; } .btn .badge { position: relative; top: -1px; } .btn-xs .badge, .btn-group-xs > .btn .badge { top: 0; padding: 1px 5px; } a.badge:hover, a.badge:focus { color: #fff; text-decoration: none; cursor: pointer; } .list-group-item.active > .badge, .nav-pills > .active > a > .badge { color: #337ab7; background-color: #fff; } .list-group-item > .badge { float: right; } .list-group-item > .badge + .badge { margin-right: 5px; } .nav-pills > li > a > .badge { margin-left: 3px; } .jumbotron { padding-top: 30px; padding-bottom: 30px; margin-bottom: 30px; color: inherit; background-color: #eee; } .jumbotron h1, .jumbotron .h1 { color: inherit; } .jumbotron p { margin-bottom: 15px; font-size: 21px; font-weight: 200; } .jumbotron > hr { border-top-color: #d5d5d5; } .container .jumbotron, .container-fluid .jumbotron { padding-right: 15px; padding-left: 15px; border-radius: 6px; } .jumbotron .container { max-width: 100%; } @media screen and (min-width: 768px) { .jumbotron { padding-top: 48px; padding-bottom: 48px; } .container .jumbotron, .container-fluid .jumbotron { padding-right: 60px; padding-left: 60px; } .jumbotron h1, .jumbotron .h1 { font-size: 63px; } } .thumbnail { display: block; padding: 4px; margin-bottom: 20px; line-height: 1.42857143; background-color: #fff; border: 1px solid #ddd; border-radius: 4px; -webkit-transition: border .2s ease-in-out; -o-transition: border .2s ease-in-out; transition: border .2s ease-in-out; } .thumbnail > img, .thumbnail a > img { margin-right: auto; margin-left: auto; } a.thumbnail:hover, a.thumbnail:focus, a.thumbnail.active { border-color: #337ab7; } .thumbnail .caption { padding: 9px; color: #333; } .alert { padding: 15px; margin-bottom: 20px; border: 1px solid transparent; border-radius: 4px; } .alert h4 { margin-top: 0; color: inherit; } .alert .alert-link { font-weight: bold; } .alert > p, .alert > ul { margin-bottom: 0; } .alert > p + p { margin-top: 5px; } .alert-dismissable, .alert-dismissible { padding-right: 35px; } .alert-dismissable .close, .alert-dismissible .close { position: relative; top: -2px; right: -21px; color: inherit; } .alert-success { color: #3c763d; background-color: #dff0d8; border-color: #d6e9c6; } .alert-success hr { border-top-color: #c9e2b3; } .alert-success .alert-link { color: #2b542c; } .alert-info { color: #31708f; background-color: #d9edf7; border-color: #bce8f1; } .alert-info hr { border-top-color: #a6e1ec; } .alert-info .alert-link { color: #245269; } .alert-warning { color: #8a6d3b; background-color: #fcf8e3; border-color: #faebcc; } .alert-warning hr { border-top-color: #f7e1b5; } .alert-warning .alert-link { color: #66512c; } .alert-danger { color: #a94442; background-color: #f2dede; border-color: #ebccd1; } .alert-danger hr { border-top-color: #e4b9c0; } .alert-danger .alert-link { color: #843534; } @-webkit-keyframes progress-bar-stripes { from { background-position: 40px 0; } to { background-position: 0 0; } } @-o-keyframes progress-bar-stripes { from { background-position: 40px 0; } to { background-position: 0 0; } } @keyframes progress-bar-stripes { from { background-position: 40px 0; } to { background-position: 0 0; } } .progress { height: 20px; margin-bottom: 20px; overflow: hidden; background-color: #f5f5f5; border-radius: 4px; -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); } .progress-bar { float: left; width: 0; height: 100%; font-size: 12px; line-height: 20px; color: #fff; text-align: center; background-color: #337ab7; -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); -webkit-transition: width .6s ease; -o-transition: width .6s ease; transition: width .6s ease; } .progress-striped .progress-bar, .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); -webkit-background-size: 40px 40px; background-size: 40px 40px; } .progress.active .progress-bar, .progress-bar.active { -webkit-animation: progress-bar-stripes 2s linear infinite; -o-animation: progress-bar-stripes 2s linear infinite; animation: progress-bar-stripes 2s linear infinite; } .progress-bar-success { background-color: #5cb85c; } .progress-striped .progress-bar-success { 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); } .progress-bar-info { background-color: #5bc0de; } .progress-striped .progress-bar-info { 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); } .progress-bar-warning { background-color: #f0ad4e; } .progress-striped .progress-bar-warning { 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); } .progress-bar-danger { background-color: #d9534f; } .progress-striped .progress-bar-danger { 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); } .media { margin-top: 15px; } .media:first-child { margin-top: 0; } .media, .media-body { overflow: hidden; zoom: 1; } .media-body { width: 10000px; } .media-object { display: block; } .media-object.img-thumbnail { max-width: none; } .media-right, .media > .pull-right { padding-left: 10px; } .media-left, .media > .pull-left { padding-right: 10px; } .media-left, .media-right, .media-body { display: table-cell; vertical-align: top; } .media-middle { vertical-align: middle; } .media-bottom { vertical-align: bottom; } .media-heading { margin-top: 0; margin-bottom: 5px; } .media-list { padding-left: 0; list-style: none; } .list-group { padding-left: 0; margin-bottom: 20px; } .list-group-item { position: relative; display: block; padding: 10px 15px; margin-bottom: -1px; background-color: #fff; border: 1px solid #ddd; } .list-group-item:first-child { border-top-left-radius: 4px; border-top-right-radius: 4px; } .list-group-item:last-child { margin-bottom: 0; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; } a.list-group-item, button.list-group-item { color: #555; } a.list-group-item .list-group-item-heading, button.list-group-item .list-group-item-heading { color: #333; } a.list-group-item:hover, button.list-group-item:hover, a.list-group-item:focus, button.list-group-item:focus { color: #555; text-decoration: none; background-color: #f5f5f5; } button.list-group-item { width: 100%; text-align: left; } .list-group-item.disabled, .list-group-item.disabled:hover, .list-group-item.disabled:focus { color: #777; cursor: not-allowed; background-color: #eee; } .list-group-item.disabled .list-group-item-heading, .list-group-item.disabled:hover .list-group-item-heading, .list-group-item.disabled:focus .list-group-item-heading { color: inherit; } .list-group-item.disabled .list-group-item-text, .list-group-item.disabled:hover .list-group-item-text, .list-group-item.disabled:focus .list-group-item-text { color: #777; } .list-group-item.active, .list-group-item.active:hover, .list-group-item.active:focus { z-index: 2; color: #fff; background-color: #337ab7; border-color: #337ab7; } .list-group-item.active .list-group-item-heading, .list-group-item.active:hover .list-group-item-heading, .list-group-item.active:focus .list-group-item-heading, .list-group-item.active .list-group-item-heading > small, .list-group-item.active:hover .list-group-item-heading > small, .list-group-item.active:focus .list-group-item-heading > small, .list-group-item.active .list-group-item-heading > .small, .list-group-item.active:hover .list-group-item-heading > .small, .list-group-item.active:focus .list-group-item-heading > .small { color: inherit; } .list-group-item.active .list-group-item-text, .list-group-item.active:hover .list-group-item-text, .list-group-item.active:focus .list-group-item-text { color: #c7ddef; } .list-group-item-success { color: #3c763d; background-color: #dff0d8; } a.list-group-item-success, button.list-group-item-success { color: #3c763d; } a.list-group-item-success .list-group-item-heading, button.list-group-item-success .list-group-item-heading { color: inherit; } a.list-group-item-success:hover, button.list-group-item-success:hover, a.list-group-item-success:focus, button.list-group-item-success:focus { color: #3c763d; background-color: #d0e9c6; } a.list-group-item-success.active, button.list-group-item-success.active, a.list-group-item-success.active:hover, button.list-group-item-success.active:hover, a.list-group-item-success.active:focus, button.list-group-item-success.active:focus { color: #fff; background-color: #3c763d; border-color: #3c763d; } .list-group-item-info { color: #31708f; background-color: #d9edf7; } a.list-group-item-info, button.list-group-item-info { color: #31708f; } a.list-group-item-info .list-group-item-heading, button.list-group-item-info .list-group-item-heading { color: inherit; } a.list-group-item-info:hover, button.list-group-item-info:hover, a.list-group-item-info:focus, button.list-group-item-info:focus { color: #31708f; background-color: #c4e3f3; } a.list-group-item-info.active, button.list-group-item-info.active, a.list-group-item-info.active:hover, button.list-group-item-info.active:hover, a.list-group-item-info.active:focus, button.list-group-item-info.active:focus { color: #fff; background-color: #31708f; border-color: #31708f; } .list-group-item-warning { color: #8a6d3b; background-color: #fcf8e3; } a.list-group-item-warning, button.list-group-item-warning { color: #8a6d3b; } a.list-group-item-warning .list-group-item-heading, button.list-group-item-warning .list-group-item-heading { color: inherit; } a.list-group-item-warning:hover, button.list-group-item-warning:hover, a.list-group-item-warning:focus, button.list-group-item-warning:focus { color: #8a6d3b; background-color: #faf2cc; } a.list-group-item-warning.active, button.list-group-item-warning.active, a.list-group-item-warning.active:hover, button.list-group-item-warning.active:hover, a.list-group-item-warning.active:focus, button.list-group-item-warning.active:focus { color: #fff; background-color: #8a6d3b; border-color: #8a6d3b; } .list-group-item-danger { color: #a94442; background-color: #f2dede; } a.list-group-item-danger, button.list-group-item-danger { color: #a94442; } a.list-group-item-danger .list-group-item-heading, button.list-group-item-danger .list-group-item-heading { color: inherit; } a.list-group-item-danger:hover, button.list-group-item-danger:hover, a.list-group-item-danger:focus, button.list-group-item-danger:focus { color: #a94442; background-color: #ebcccc; } a.list-group-item-danger.active, button.list-group-item-danger.active, a.list-group-item-danger.active:hover, button.list-group-item-danger.active:hover, a.list-group-item-danger.active:focus, button.list-group-item-danger.active:focus { color: #fff; background-color: #a94442; border-color: #a94442; } .list-group-item-heading { margin-top: 0; margin-bottom: 5px; } .list-group-item-text { margin-bottom: 0; line-height: 1.3; } .panel { margin-bottom: 20px; background-color: #fff; border: 1px solid transparent; border-radius: 4px; -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05); box-shadow: 0 1px 1px rgba(0, 0, 0, .05); } .panel-body { padding: 15px; } .panel-heading { padding: 10px 15px; border-bottom: 1px solid transparent; border-top-left-radius: 3px; border-top-right-radius: 3px; } .panel-heading > .dropdown .dropdown-toggle { color: inherit; } .panel-title { margin-top: 0; margin-bottom: 0; font-size: 16px; color: inherit; } .panel-title > a, .panel-title > small, .panel-title > .small, .panel-title > small > a, .panel-title > .small > a { color: inherit; } .panel-footer { padding: 10px 15px; background-color: #f5f5f5; border-top: 1px solid #ddd; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; } .panel > .list-group, .panel > .panel-collapse > .list-group { margin-bottom: 0; } .panel > .list-group .list-group-item, .panel > .panel-collapse > .list-group .list-group-item { border-width: 1px 0; border-radius: 0; } .panel > .list-group:first-child .list-group-item:first-child, .panel > .panel-collapse > .list-group:first-child .list-group-item:first-child { border-top: 0; border-top-left-radius: 3px; border-top-right-radius: 3px; } .panel > .list-group:last-child .list-group-item:last-child, .panel > .panel-collapse > .list-group:last-child .list-group-item:last-child { border-bottom: 0; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; } .panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child { border-top-left-radius: 0; border-top-right-radius: 0; } .panel-heading + .list-group .list-group-item:first-child { border-top-width: 0; } .list-group + .panel-footer { border-top-width: 0; } .panel > .table, .panel > .table-responsive > .table, .panel > .panel-collapse > .table { margin-bottom: 0; } .panel > .table caption, .panel > .table-responsive > .table caption, .panel > .panel-collapse > .table caption { padding-right: 15px; padding-left: 15px; } .panel > .table:first-child, .panel > .table-responsive:first-child > .table:first-child { border-top-left-radius: 3px; border-top-right-radius: 3px; } .panel > .table:first-child > thead:first-child > tr:first-child, .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child, .panel > .table:first-child > tbody:first-child > tr:first-child, .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { border-top-left-radius: 3px; border-top-right-radius: 3px; } .panel > .table:first-child > thead:first-child > tr:first-child td:first-child, .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, .panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, .panel > .table:first-child > thead:first-child > tr:first-child th:first-child, .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, .panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { border-top-left-radius: 3px; } .panel > .table:first-child > thead:first-child > tr:first-child td:last-child, .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, .panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, .panel > .table:first-child > thead:first-child > tr:first-child th:last-child, .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, .panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { border-top-right-radius: 3px; } .panel > .table:last-child, .panel > .table-responsive:last-child > .table:last-child { border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; } .panel > .table:last-child > tbody:last-child > tr:last-child, .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, .panel > .table:last-child > tfoot:last-child > tr:last-child, .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; } .panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, .panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, .panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, .panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { border-bottom-left-radius: 3px; } .panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, .panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, .panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, .panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { border-bottom-right-radius: 3px; } .panel > .panel-body + .table, .panel > .panel-body + .table-responsive, .panel > .table + .panel-body, .panel > .table-responsive + .panel-body { border-top: 1px solid #ddd; } .panel > .table > tbody:first-child > tr:first-child th, .panel > .table > tbody:first-child > tr:first-child td { border-top: 0; } .panel > .table-bordered, .panel > .table-responsive > .table-bordered { border: 0; } .panel > .table-bordered > thead > tr > th:first-child, .panel > .table-responsive > .table-bordered > thead > tr > th:first-child, .panel > .table-bordered > tbody > tr > th:first-child, .panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, .panel > .table-bordered > tfoot > tr > th:first-child, .panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, .panel > .table-bordered > thead > tr > td:first-child, .panel > .table-responsive > .table-bordered > thead > tr > td:first-child, .panel > .table-bordered > tbody > tr > td:first-child, .panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, .panel > .table-bordered > tfoot > tr > td:first-child, .panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { border-left: 0; } .panel > .table-bordered > thead > tr > th:last-child, .panel > .table-responsive > .table-bordered > thead > tr > th:last-child, .panel > .table-bordered > tbody > tr > th:last-child, .panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, .panel > .table-bordered > tfoot > tr > th:last-child, .panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, .panel > .table-bordered > thead > tr > td:last-child, .panel > .table-responsive > .table-bordered > thead > tr > td:last-child, .panel > .table-bordered > tbody > tr > td:last-child, .panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, .panel > .table-bordered > tfoot > tr > td:last-child, .panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { border-right: 0; } .panel > .table-bordered > thead > tr:first-child > td, .panel > .table-responsive > .table-bordered > thead > tr:first-child > td, .panel > .table-bordered > tbody > tr:first-child > td, .panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, .panel > .table-bordered > thead > tr:first-child > th, .panel > .table-responsive > .table-bordered > thead > tr:first-child > th, .panel > .table-bordered > tbody > tr:first-child > th, .panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { border-bottom: 0; } .panel > .table-bordered > tbody > tr:last-child > td, .panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, .panel > .table-bordered > tfoot > tr:last-child > td, .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, .panel > .table-bordered > tbody > tr:last-child > th, .panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, .panel > .table-bordered > tfoot > tr:last-child > th, .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { border-bottom: 0; } .panel > .table-responsive { margin-bottom: 0; border: 0; } .panel-group { margin-bottom: 20px; } .panel-group .panel { margin-bottom: 0; border-radius: 4px; } .panel-group .panel + .panel { margin-top: 5px; } .panel-group .panel-heading { border-bottom: 0; } .panel-group .panel-heading + .panel-collapse > .panel-body, .panel-group .panel-heading + .panel-collapse > .list-group { border-top: 1px solid #ddd; } .panel-group .panel-footer { border-top: 0; } .panel-group .panel-footer + .panel-collapse .panel-body { border-bottom: 1px solid #ddd; } .panel-default { border-color: #ddd; } .panel-default > .panel-heading { color: #333; background-color: #f5f5f5; border-color: #ddd; } .panel-default > .panel-heading + .panel-collapse > .panel-body { border-top-color: #ddd; } .panel-default > .panel-heading .badge { color: #f5f5f5; background-color: #333; } .panel-default > .panel-footer + .panel-collapse > .panel-body { border-bottom-color: #ddd; } .panel-primary { border-color: #337ab7; } .panel-primary > .panel-heading { color: #fff; background-color: #337ab7; border-color: #337ab7; } .panel-primary > .panel-heading + .panel-collapse > .panel-body { border-top-color: #337ab7; } .panel-primary > .panel-heading .badge { color: #337ab7; background-color: #fff; } .panel-primary > .panel-footer + .panel-collapse > .panel-body { border-bottom-color: #337ab7; } .panel-success { border-color: #d6e9c6; } .panel-success > .panel-heading { color: #3c763d; background-color: #dff0d8; border-color: #d6e9c6; } .panel-success > .panel-heading + .panel-collapse > .panel-body { border-top-color: #d6e9c6; } .panel-success > .panel-heading .badge { color: #dff0d8; background-color: #3c763d; } .panel-success > .panel-footer + .panel-collapse > .panel-body { border-bottom-color: #d6e9c6; } .panel-info { border-color: #bce8f1; } .panel-info > .panel-heading { color: #31708f; background-color: #d9edf7; border-color: #bce8f1; } .panel-info > .panel-heading + .panel-collapse > .panel-body { border-top-color: #bce8f1; } .panel-info > .panel-heading .badge { color: #d9edf7; background-color: #31708f; } .panel-info > .panel-footer + .panel-collapse > .panel-body { border-bottom-color: #bce8f1; } .panel-warning { border-color: #faebcc; } .panel-warning > .panel-heading { color: #8a6d3b; background-color: #fcf8e3; border-color: #faebcc; } .panel-warning > .panel-heading + .panel-collapse > .panel-body { border-top-color: #faebcc; } .panel-warning > .panel-heading .badge { color: #fcf8e3; background-color: #8a6d3b; } .panel-warning > .panel-footer + .panel-collapse > .panel-body { border-bottom-color: #faebcc; } .panel-danger { border-color: #ebccd1; } .panel-danger > .panel-heading { color: #a94442; background-color: #f2dede; border-color: #ebccd1; } .panel-danger > .panel-heading + .panel-collapse > .panel-body { border-top-color: #ebccd1; } .panel-danger > .panel-heading .badge { color: #f2dede; background-color: #a94442; } .panel-danger > .panel-footer + .panel-collapse > .panel-body { border-bottom-color: #ebccd1; } .embed-responsive { position: relative; display: block; height: 0; padding: 0; overflow: hidden; } .embed-responsive .embed-responsive-item, .embed-responsive iframe, .embed-responsive embed, .embed-responsive object, .embed-responsive video { position: absolute; top: 0; bottom: 0; left: 0; width: 100%; height: 100%; border: 0; } .embed-responsive-16by9 { padding-bottom: 56.25%; } .embed-responsive-4by3 { padding-bottom: 75%; } .well { min-height: 20px; padding: 19px; margin-bottom: 20px; background-color: #f5f5f5; border: 1px solid #e3e3e3; border-radius: 4px; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); } .well blockquote { border-color: #ddd; border-color: rgba(0, 0, 0, .15); } .well-lg { padding: 24px; border-radius: 6px; } .well-sm { padding: 9px; border-radius: 3px; } .close { float: right; font-size: 21px; font-weight: bold; line-height: 1; color: #000; text-shadow: 0 1px 0 #fff; filter: alpha(opacity=20); opacity: .2; } .close:hover, .close:focus { color: #000; text-decoration: none; cursor: pointer; filter: alpha(opacity=50); opacity: .5; } button.close { -webkit-appearance: none; padding: 0; cursor: pointer; background: transparent; border: 0; } .modal-open { overflow: hidden; } .modal { position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: 1050; display: none; overflow: hidden; -webkit-overflow-scrolling: touch; outline: 0; } .modal.fade .modal-dialog { -webkit-transition: -webkit-transform .3s ease-out; -o-transition: -o-transform .3s ease-out; transition: transform .3s ease-out; -webkit-transform: translate(0, -25%); -ms-transform: translate(0, -25%); -o-transform: translate(0, -25%); transform: translate(0, -25%); } .modal.in .modal-dialog { -webkit-transform: translate(0, 0); -ms-transform: translate(0, 0); -o-transform: translate(0, 0); transform: translate(0, 0); } .modal-open .modal { overflow-x: hidden; overflow-y: auto; } .modal-dialog { position: relative; width: auto; margin: 10px; } .modal-content { position: relative; background-color: #fff; -webkit-background-clip: padding-box; background-clip: padding-box; border: 1px solid #999; border: 1px solid rgba(0, 0, 0, .2); border-radius: 6px; outline: 0; -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5); box-shadow: 0 3px 9px rgba(0, 0, 0, .5); } .modal-backdrop { position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: 1040; background-color: #000; } .modal-backdrop.fade { filter: alpha(opacity=0); opacity: 0; } .modal-backdrop.in { filter: alpha(opacity=50); opacity: .5; } .modal-header { padding: 15px; border-bottom: 1px solid #e5e5e5; } .modal-header .close { margin-top: -2px; } .modal-title { margin: 0; line-height: 1.42857143; } .modal-body { position: relative; padding: 15px; } .modal-footer { padding: 15px; text-align: right; border-top: 1px solid #e5e5e5; } .modal-footer .btn + .btn { margin-bottom: 0; margin-left: 5px; } .modal-footer .btn-group .btn + .btn { margin-left: -1px; } .modal-footer .btn-block + .btn-block { margin-left: 0; } .modal-scrollbar-measure { position: absolute; top: -9999px; width: 50px; height: 50px; overflow: scroll; } @media (min-width: 768px) { .modal-dialog { width: 600px; margin: 30px auto; } .modal-content { -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5); box-shadow: 0 5px 15px rgba(0, 0, 0, .5); } .modal-sm { width: 300px; } } @media (min-width: 992px) { .modal-lg { width: 900px; } } .tooltip { position: absolute; z-index: 1070; display: block; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 12px; font-style: normal; font-weight: normal; line-height: 1.42857143; text-align: left; text-align: start; text-decoration: none; text-shadow: none; text-transform: none; letter-spacing: normal; word-break: normal; word-spacing: normal; word-wrap: normal; white-space: normal; filter: alpha(opacity=0); opacity: 0; line-break: auto; } .tooltip.in { filter: alpha(opacity=90); opacity: .9; } .tooltip.top { padding: 5px 0; margin-top: -3px; } .tooltip.right { padding: 0 5px; margin-left: 3px; } .tooltip.bottom { padding: 5px 0; margin-top: 3px; } .tooltip.left { padding: 0 5px; margin-left: -3px; } .tooltip-inner { max-width: 200px; padding: 3px 8px; color: #fff; text-align: center; background-color: #000; border-radius: 4px; } .tooltip-arrow { position: absolute; width: 0; height: 0; border-color: transparent; border-style: solid; } .tooltip.top .tooltip-arrow { bottom: 0; left: 50%; margin-left: -5px; border-width: 5px 5px 0; border-top-color: #000; } .tooltip.top-left .tooltip-arrow { right: 5px; bottom: 0; margin-bottom: -5px; border-width: 5px 5px 0; border-top-color: #000; } .tooltip.top-right .tooltip-arrow { bottom: 0; left: 5px; margin-bottom: -5px; border-width: 5px 5px 0; border-top-color: #000; } .tooltip.right .tooltip-arrow { top: 50%; left: 0; margin-top: -5px; border-width: 5px 5px 5px 0; border-right-color: #000; } .tooltip.left .tooltip-arrow { top: 50%; right: 0; margin-top: -5px; border-width: 5px 0 5px 5px; border-left-color: #000; } .tooltip.bottom .tooltip-arrow { top: 0; left: 50%; margin-left: -5px; border-width: 0 5px 5px; border-bottom-color: #000; } .tooltip.bottom-left .tooltip-arrow { top: 0; right: 5px; margin-top: -5px; border-width: 0 5px 5px; border-bottom-color: #000; } .tooltip.bottom-right .tooltip-arrow { top: 0; left: 5px; margin-top: -5px; border-width: 0 5px 5px; border-bottom-color: #000; } .popover { position: absolute; top: 0; left: 0; z-index: 1060; display: none; max-width: 276px; padding: 1px; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; font-style: normal; font-weight: normal; line-height: 1.42857143; text-align: left; text-align: start; text-decoration: none; text-shadow: none; text-transform: none; letter-spacing: normal; word-break: normal; word-spacing: normal; word-wrap: normal; white-space: normal; background-color: #fff; -webkit-background-clip: padding-box; background-clip: padding-box; border: 1px solid #ccc; border: 1px solid rgba(0, 0, 0, .2); border-radius: 6px; -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2); box-shadow: 0 5px 10px rgba(0, 0, 0, .2); line-break: auto; } .popover.top { margin-top: -10px; } .popover.right { margin-left: 10px; } .popover.bottom { margin-top: 10px; } .popover.left { margin-left: -10px; } .popover-title { padding: 8px 14px; margin: 0; font-size: 14px; background-color: #f7f7f7; border-bottom: 1px solid #ebebeb; border-radius: 5px 5px 0 0; } .popover-content { padding: 9px 14px; } .popover > .arrow, .popover > .arrow:after { position: absolute; display: block; width: 0; height: 0; border-color: transparent; border-style: solid; } .popover > .arrow { border-width: 11px; } .popover > .arrow:after { content: ""; border-width: 10px; } .popover.top > .arrow { bottom: -11px; left: 50%; margin-left: -11px; border-top-color: #999; border-top-color: rgba(0, 0, 0, .25); border-bottom-width: 0; } .popover.top > .arrow:after { bottom: 1px; margin-left: -10px; content: " "; border-top-color: #fff; border-bottom-width: 0; } .popover.right > .arrow { top: 50%; left: -11px; margin-top: -11px; border-right-color: #999; border-right-color: rgba(0, 0, 0, .25); border-left-width: 0; } .popover.right > .arrow:after { bottom: -10px; left: 1px; content: " "; border-right-color: #fff; border-left-width: 0; } .popover.bottom > .arrow { top: -11px; left: 50%; margin-left: -11px; border-top-width: 0; border-bottom-color: #999; border-bottom-color: rgba(0, 0, 0, .25); } .popover.bottom > .arrow:after { top: 1px; margin-left: -10px; content: " "; border-top-width: 0; border-bottom-color: #fff; } .popover.left > .arrow { top: 50%; right: -11px; margin-top: -11px; border-right-width: 0; border-left-color: #999; border-left-color: rgba(0, 0, 0, .25); } .popover.left > .arrow:after { right: 1px; bottom: -10px; content: " "; border-right-width: 0; border-left-color: #fff; } .carousel { position: relative; } .carousel-inner { position: relative; width: 100%; overflow: hidden; } .carousel-inner > .item { position: relative; display: none; -webkit-transition: .6s ease-in-out left; -o-transition: .6s ease-in-out left; transition: .6s ease-in-out left; } .carousel-inner > .item > img, .carousel-inner > .item > a > img { line-height: 1; } @media all and (transform-3d), (-webkit-transform-3d) { .carousel-inner > .item { -webkit-transition: -webkit-transform .6s ease-in-out; -o-transition: -o-transform .6s ease-in-out; transition: transform .6s ease-in-out; -webkit-backface-visibility: hidden; backface-visibility: hidden; -webkit-perspective: 1000px; perspective: 1000px; } .carousel-inner > .item.next, .carousel-inner > .item.active.right { left: 0; -webkit-transform: translate3d(100%, 0, 0); transform: translate3d(100%, 0, 0); } .carousel-inner > .item.prev, .carousel-inner > .item.active.left { left: 0; -webkit-transform: translate3d(-100%, 0, 0); transform: translate3d(-100%, 0, 0); } .carousel-inner > .item.next.left, .carousel-inner > .item.prev.right, .carousel-inner > .item.active { left: 0; -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } } .carousel-inner > .active, .carousel-inner > .next, .carousel-inner > .prev { display: block; } .carousel-inner > .active { left: 0; } .carousel-inner > .next, .carousel-inner > .prev { position: absolute; top: 0; width: 100%; } .carousel-inner > .next { left: 100%; } .carousel-inner > .prev { left: -100%; } .carousel-inner > .next.left, .carousel-inner > .prev.right { left: 0; } .carousel-inner > .active.left { left: -100%; } .carousel-inner > .active.right { left: 100%; } .carousel-control { position: absolute; top: 0; bottom: 0; left: 0; width: 15%; font-size: 20px; color: #fff; text-align: center; text-shadow: 0 1px 2px rgba(0, 0, 0, .6); background-color: rgba(0, 0, 0, 0); filter: alpha(opacity=50); opacity: .5; } .carousel-control.left { background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); background-image: -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001))); background-image: linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); background-repeat: repeat-x; } .carousel-control.right { right: 0; left: auto; background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); background-image: -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5))); background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); background-repeat: repeat-x; } .carousel-control:hover, .carousel-control:focus { color: #fff; text-decoration: none; filter: alpha(opacity=90); outline: 0; opacity: .9; } .carousel-control .icon-prev, .carousel-control .icon-next, .carousel-control .glyphicon-chevron-left, .carousel-control .glyphicon-chevron-right { position: absolute; top: 50%; z-index: 5; display: inline-block; margin-top: -10px; } .carousel-control .icon-prev, .carousel-control .glyphicon-chevron-left { left: 50%; margin-left: -10px; } .carousel-control .icon-next, .carousel-control .glyphicon-chevron-right { right: 50%; margin-right: -10px; } .carousel-control .icon-prev, .carousel-control .icon-next { width: 20px; height: 20px; font-family: serif; line-height: 1; } .carousel-control .icon-prev:before { content: '\2039'; } .carousel-control .icon-next:before { content: '\203a'; } .carousel-indicators { position: absolute; bottom: 10px; left: 50%; z-index: 15; width: 60%; padding-left: 0; margin-left: -30%; text-align: center; list-style: none; } .carousel-indicators li { display: inline-block; width: 10px; height: 10px; margin: 1px; text-indent: -999px; cursor: pointer; background-color: #000 \9; background-color: rgba(0, 0, 0, 0); border: 1px solid #fff; border-radius: 10px; } .carousel-indicators .active { width: 12px; height: 12px; margin: 0; background-color: #fff; } .carousel-caption { position: absolute; right: 15%; bottom: 20px; left: 15%; z-index: 10; padding-top: 20px; padding-bottom: 20px; color: #fff; text-align: center; text-shadow: 0 1px 2px rgba(0, 0, 0, .6); } .carousel-caption .btn { text-shadow: none; } @media screen and (min-width: 768px) { .carousel-control .glyphicon-chevron-left, .carousel-control .glyphicon-chevron-right, .carousel-control .icon-prev, .carousel-control .icon-next { width: 30px; height: 30px; margin-top: -10px; font-size: 30px; } .carousel-control .glyphicon-chevron-left, .carousel-control .icon-prev { margin-left: -10px; } .carousel-control .glyphicon-chevron-right, .carousel-control .icon-next { margin-right: -10px; } .carousel-caption { right: 20%; left: 20%; padding-bottom: 30px; } .carousel-indicators { bottom: 20px; } } .clearfix:before, .clearfix:after, .dl-horizontal dd:before, .dl-horizontal dd:after, .container:before, .container:after, .container-fluid:before, .container-fluid:after, .row:before, .row:after, .form-horizontal .form-group:before, .form-horizontal .form-group:after, .btn-toolbar:before, .btn-toolbar:after, .btn-group-vertical > .btn-group:before, .btn-group-vertical > .btn-group:after, .nav:before, .nav:after, .navbar:before, .navbar:after, .navbar-header:before, .navbar-header:after, .navbar-collapse:before, .navbar-collapse:after, .pager:before, .pager:after, .panel-body:before, .panel-body:after, .modal-header:before, .modal-header:after, .modal-footer:before, .modal-footer:after { display: table; content: " "; } .clearfix:after, .dl-horizontal dd:after, .container:after, .container-fluid:after, .row:after, .form-horizontal .form-group:after, .btn-toolbar:after, .btn-group-vertical > .btn-group:after, .nav:after, .navbar:after, .navbar-header:after, .navbar-collapse:after, .pager:after, .panel-body:after, .modal-header:after, .modal-footer:after { clear: both; } .center-block { display: block; margin-right: auto; margin-left: auto; } .pull-right { float: right !important; } .pull-left { float: left !important; } .hide { display: none !important; } .show { display: block !important; } .invisible { visibility: hidden; } .text-hide { font: 0/0 a; color: transparent; text-shadow: none; background-color: transparent; border: 0; } .hidden { display: none !important; } .affix { position: fixed; } @-ms-viewport { width: device-width; } .visible-xs, .visible-sm, .visible-md, .visible-lg { display: none !important; } .visible-xs-block, .visible-xs-inline, .visible-xs-inline-block, .visible-sm-block, .visible-sm-inline, .visible-sm-inline-block, .visible-md-block, .visible-md-inline, .visible-md-inline-block, .visible-lg-block, .visible-lg-inline, .visible-lg-inline-block { display: none !important; } @media (max-width: 767px) { .visible-xs { display: block !important; } table.visible-xs { display: table !important; } tr.visible-xs { display: table-row !important; } th.visible-xs, td.visible-xs { display: table-cell !important; } } @media (max-width: 767px) { .visible-xs-block { display: block !important; } } @media (max-width: 767px) { .visible-xs-inline { display: inline !important; } } @media (max-width: 767px) { .visible-xs-inline-block { display: inline-block !important; } } @media (min-width: 768px) and (max-width: 991px) { .visible-sm { display: block !important; } table.visible-sm { display: table !important; } tr.visible-sm { display: table-row !important; } th.visible-sm, td.visible-sm { display: table-cell !important; } } @media (min-width: 768px) and (max-width: 991px) { .visible-sm-block { display: block !important; } } @media (min-width: 768px) and (max-width: 991px) { .visible-sm-inline { display: inline !important; } } @media (min-width: 768px) and (max-width: 991px) { .visible-sm-inline-block { display: inline-block !important; } } @media (min-width: 992px) and (max-width: 1199px) { .visible-md { display: block !important; } table.visible-md { display: table !important; } tr.visible-md { display: table-row !important; } th.visible-md, td.visible-md { display: table-cell !important; } } @media (min-width: 992px) and (max-width: 1199px) { .visible-md-block { display: block !important; } } @media (min-width: 992px) and (max-width: 1199px) { .visible-md-inline { display: inline !important; } } @media (min-width: 992px) and (max-width: 1199px) { .visible-md-inline-block { display: inline-block !important; } } @media (min-width: 1200px) { .visible-lg { display: block !important; } table.visible-lg { display: table !important; } tr.visible-lg { display: table-row !important; } th.visible-lg, td.visible-lg { display: table-cell !important; } } @media (min-width: 1200px) { .visible-lg-block { display: block !important; } } @media (min-width: 1200px) { .visible-lg-inline { display: inline !important; } } @media (min-width: 1200px) { .visible-lg-inline-block { display: inline-block !important; } } @media (max-width: 767px) { .hidden-xs { display: none !important; } } @media (min-width: 768px) and (max-width: 991px) { .hidden-sm { display: none !important; } } @media (min-width: 992px) and (max-width: 1199px) { .hidden-md { display: none !important; } } @media (min-width: 1200px) { .hidden-lg { display: none !important; } } .visible-print { display: none !important; } @media print { .visible-print { display: block !important; } table.visible-print { display: table !important; } tr.visible-print { display: table-row !important; } th.visible-print, td.visible-print { display: table-cell !important; } } .visible-print-block { display: none !important; } @media print { .visible-print-block { display: block !important; } } .visible-print-inline { display: none !important; } @media print { .visible-print-inline { display: inline !important; } } .visible-print-inline-block { display: none !important; } @media print { .visible-print-inline-block { display: inline-block !important; } } @media print { .hidden-print { display: none !important; } } /*# sourceMappingURL=bootstrap.css.map */ ================================================ FILE: src/main/webapp/js/bootstrap.js ================================================ /*! * Bootstrap v3.3.7 (http://getbootstrap.com) * Copyright 2011-2016 Twitter, Inc. * Licensed under the MIT license */ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript requires jQuery') } +function ($) { 'use strict'; var version = $.fn.jquery.split(' ')[0].split('.') if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 3)) { throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4') } }(jQuery); /* ======================================================================== * Bootstrap: transition.js v3.3.7 * http://getbootstrap.com/javascript/#transitions * ======================================================================== * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) // ============================================================ function transitionEnd() { var el = document.createElement('bootstrap') var transEndEventNames = { WebkitTransition : 'webkitTransitionEnd', MozTransition : 'transitionend', OTransition : 'oTransitionEnd otransitionend', transition : 'transitionend' } for (var name in transEndEventNames) { if (el.style[name] !== undefined) { return { end: transEndEventNames[name] } } } return false // explicit for ie8 ( ._.) } // http://blog.alexmaccaw.com/css-transitions $.fn.emulateTransitionEnd = function (duration) { var called = false var $el = this $(this).one('bsTransitionEnd', function () { called = true }) var callback = function () { if (!called) $($el).trigger($.support.transition.end) } setTimeout(callback, duration) return this } $(function () { $.support.transition = transitionEnd() if (!$.support.transition) return $.event.special.bsTransitionEnd = { bindType: $.support.transition.end, delegateType: $.support.transition.end, handle: function (e) { if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments) } } }) }(jQuery); /* ======================================================================== * Bootstrap: alert.js v3.3.7 * http://getbootstrap.com/javascript/#alerts * ======================================================================== * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // ALERT CLASS DEFINITION // ====================== var dismiss = '[data-dismiss="alert"]' var Alert = function (el) { $(el).on('click', dismiss, this.close) } Alert.VERSION = '3.3.7' Alert.TRANSITION_DURATION = 150 Alert.prototype.close = function (e) { var $this = $(this) var selector = $this.attr('data-target') if (!selector) { selector = $this.attr('href') selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 } var $parent = $(selector === '#' ? [] : selector) if (e) e.preventDefault() if (!$parent.length) { $parent = $this.closest('.alert') } $parent.trigger(e = $.Event('close.bs.alert')) if (e.isDefaultPrevented()) return $parent.removeClass('in') function removeElement() { // detach from parent, fire event then clean up data $parent.detach().trigger('closed.bs.alert').remove() } $.support.transition && $parent.hasClass('fade') ? $parent .one('bsTransitionEnd', removeElement) .emulateTransitionEnd(Alert.TRANSITION_DURATION) : removeElement() } // ALERT PLUGIN DEFINITION // ======================= function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.alert') if (!data) $this.data('bs.alert', (data = new Alert(this))) if (typeof option == 'string') data[option].call($this) }) } var old = $.fn.alert $.fn.alert = Plugin $.fn.alert.Constructor = Alert // ALERT NO CONFLICT // ================= $.fn.alert.noConflict = function () { $.fn.alert = old return this } // ALERT DATA-API // ============== $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) }(jQuery); /* ======================================================================== * Bootstrap: button.js v3.3.7 * http://getbootstrap.com/javascript/#buttons * ======================================================================== * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // BUTTON PUBLIC CLASS DEFINITION // ============================== var Button = function (element, options) { this.$element = $(element) this.options = $.extend({}, Button.DEFAULTS, options) this.isLoading = false } Button.VERSION = '3.3.7' Button.DEFAULTS = { loadingText: 'loading...' } Button.prototype.setState = function (state) { var d = 'disabled' var $el = this.$element var val = $el.is('input') ? 'val' : 'html' var data = $el.data() state += 'Text' if (data.resetText == null) $el.data('resetText', $el[val]()) // push to event loop to allow forms to submit setTimeout($.proxy(function () { $el[val](data[state] == null ? this.options[state] : data[state]) if (state == 'loadingText') { this.isLoading = true $el.addClass(d).attr(d, d).prop(d, true) } else if (this.isLoading) { this.isLoading = false $el.removeClass(d).removeAttr(d).prop(d, false) } }, this), 0) } Button.prototype.toggle = function () { var changed = true var $parent = this.$element.closest('[data-toggle="buttons"]') if ($parent.length) { var $input = this.$element.find('input') if ($input.prop('type') == 'radio') { if ($input.prop('checked')) changed = false $parent.find('.active').removeClass('active') this.$element.addClass('active') } else if ($input.prop('type') == 'checkbox') { if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false this.$element.toggleClass('active') } $input.prop('checked', this.$element.hasClass('active')) if (changed) $input.trigger('change') } else { this.$element.attr('aria-pressed', !this.$element.hasClass('active')) this.$element.toggleClass('active') } } // BUTTON PLUGIN DEFINITION // ======================== function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.button') var options = typeof option == 'object' && option if (!data) $this.data('bs.button', (data = new Button(this, options))) if (option == 'toggle') data.toggle() else if (option) data.setState(option) }) } var old = $.fn.button $.fn.button = Plugin $.fn.button.Constructor = Button // BUTTON NO CONFLICT // ================== $.fn.button.noConflict = function () { $.fn.button = old return this } // BUTTON DATA-API // =============== $(document) .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) { var $btn = $(e.target).closest('.btn') Plugin.call($btn, 'toggle') if (!($(e.target).is('input[type="radio"], input[type="checkbox"]'))) { // Prevent double click on radios, and the double selections (so cancellation) on checkboxes e.preventDefault() // The target component still receive the focus if ($btn.is('input,button')) $btn.trigger('focus') else $btn.find('input:visible,button:visible').first().trigger('focus') } }) .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) { $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type)) }) }(jQuery); /* ======================================================================== * Bootstrap: carousel.js v3.3.7 * http://getbootstrap.com/javascript/#carousel * ======================================================================== * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // CAROUSEL CLASS DEFINITION // ========================= var Carousel = function (element, options) { this.$element = $(element) this.$indicators = this.$element.find('.carousel-indicators') this.options = options this.paused = null this.sliding = null this.interval = null this.$active = null this.$items = null this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this)) this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element .on('mouseenter.bs.carousel', $.proxy(this.pause, this)) .on('mouseleave.bs.carousel', $.proxy(this.cycle, this)) } Carousel.VERSION = '3.3.7' Carousel.TRANSITION_DURATION = 600 Carousel.DEFAULTS = { interval: 5000, pause: 'hover', wrap: true, keyboard: true } Carousel.prototype.keydown = function (e) { if (/input|textarea/i.test(e.target.tagName)) return switch (e.which) { case 37: this.prev(); break case 39: this.next(); break default: return } e.preventDefault() } Carousel.prototype.cycle = function (e) { e || (this.paused = false) this.interval && clearInterval(this.interval) this.options.interval && !this.paused && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) return this } Carousel.prototype.getItemIndex = function (item) { this.$items = item.parent().children('.item') return this.$items.index(item || this.$active) } Carousel.prototype.getItemForDirection = function (direction, active) { var activeIndex = this.getItemIndex(active) var willWrap = (direction == 'prev' && activeIndex === 0) || (direction == 'next' && activeIndex == (this.$items.length - 1)) if (willWrap && !this.options.wrap) return active var delta = direction == 'prev' ? -1 : 1 var itemIndex = (activeIndex + delta) % this.$items.length return this.$items.eq(itemIndex) } Carousel.prototype.to = function (pos) { var that = this var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active')) if (pos > (this.$items.length - 1) || pos < 0) return if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid" if (activeIndex == pos) return this.pause().cycle() return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos)) } Carousel.prototype.pause = function (e) { e || (this.paused = true) if (this.$element.find('.next, .prev').length && $.support.transition) { this.$element.trigger($.support.transition.end) this.cycle(true) } this.interval = clearInterval(this.interval) return this } Carousel.prototype.next = function () { if (this.sliding) return return this.slide('next') } Carousel.prototype.prev = function () { if (this.sliding) return return this.slide('prev') } Carousel.prototype.slide = function (type, next) { var $active = this.$element.find('.item.active') var $next = next || this.getItemForDirection(type, $active) var isCycling = this.interval var direction = type == 'next' ? 'left' : 'right' var that = this if ($next.hasClass('active')) return (this.sliding = false) var relatedTarget = $next[0] var slideEvent = $.Event('slide.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) this.$element.trigger(slideEvent) if (slideEvent.isDefaultPrevented()) return this.sliding = true isCycling && this.pause() if (this.$indicators.length) { this.$indicators.find('.active').removeClass('active') var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)]) $nextIndicator && $nextIndicator.addClass('active') } var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid" if ($.support.transition && this.$element.hasClass('slide')) { $next.addClass(type) $next[0].offsetWidth // force reflow $active.addClass(direction) $next.addClass(direction) $active .one('bsTransitionEnd', function () { $next.removeClass([type, direction].join(' ')).addClass('active') $active.removeClass(['active', direction].join(' ')) that.sliding = false setTimeout(function () { that.$element.trigger(slidEvent) }, 0) }) .emulateTransitionEnd(Carousel.TRANSITION_DURATION) } else { $active.removeClass('active') $next.addClass('active') this.sliding = false this.$element.trigger(slidEvent) } isCycling && this.cycle() return this } // CAROUSEL PLUGIN DEFINITION // ========================== function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.carousel') var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) var action = typeof option == 'string' ? option : options.slide if (!data) $this.data('bs.carousel', (data = new Carousel(this, options))) if (typeof option == 'number') data.to(option) else if (action) data[action]() else if (options.interval) data.pause().cycle() }) } var old = $.fn.carousel $.fn.carousel = Plugin $.fn.carousel.Constructor = Carousel // CAROUSEL NO CONFLICT // ==================== $.fn.carousel.noConflict = function () { $.fn.carousel = old return this } // CAROUSEL DATA-API // ================= var clickHandler = function (e) { var href var $this = $(this) var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7 if (!$target.hasClass('carousel')) return var options = $.extend({}, $target.data(), $this.data()) var slideIndex = $this.attr('data-slide-to') if (slideIndex) options.interval = false Plugin.call($target, options) if (slideIndex) { $target.data('bs.carousel').to(slideIndex) } e.preventDefault() } $(document) .on('click.bs.carousel.data-api', '[data-slide]', clickHandler) .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler) $(window).on('load', function () { $('[data-ride="carousel"]').each(function () { var $carousel = $(this) Plugin.call($carousel, $carousel.data()) }) }) }(jQuery); /* ======================================================================== * Bootstrap: collapse.js v3.3.7 * http://getbootstrap.com/javascript/#collapse * ======================================================================== * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ /* jshint latedef: false */ +function ($) { 'use strict'; // COLLAPSE PUBLIC CLASS DEFINITION // ================================ var Collapse = function (element, options) { this.$element = $(element) this.options = $.extend({}, Collapse.DEFAULTS, options) this.$trigger = $('[data-toggle="collapse"][href="#' + element.id + '"],' + '[data-toggle="collapse"][data-target="#' + element.id + '"]') this.transitioning = null if (this.options.parent) { this.$parent = this.getParent() } else { this.addAriaAndCollapsedClass(this.$element, this.$trigger) } if (this.options.toggle) this.toggle() } Collapse.VERSION = '3.3.7' Collapse.TRANSITION_DURATION = 350 Collapse.DEFAULTS = { toggle: true } Collapse.prototype.dimension = function () { var hasWidth = this.$element.hasClass('width') return hasWidth ? 'width' : 'height' } Collapse.prototype.show = function () { if (this.transitioning || this.$element.hasClass('in')) return var activesData var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing') if (actives && actives.length) { activesData = actives.data('bs.collapse') if (activesData && activesData.transitioning) return } var startEvent = $.Event('show.bs.collapse') this.$element.trigger(startEvent) if (startEvent.isDefaultPrevented()) return if (actives && actives.length) { Plugin.call(actives, 'hide') activesData || actives.data('bs.collapse', null) } var dimension = this.dimension() this.$element .removeClass('collapse') .addClass('collapsing')[dimension](0) .attr('aria-expanded', true) this.$trigger .removeClass('collapsed') .attr('aria-expanded', true) this.transitioning = 1 var complete = function () { this.$element .removeClass('collapsing') .addClass('collapse in')[dimension]('') this.transitioning = 0 this.$element .trigger('shown.bs.collapse') } if (!$.support.transition) return complete.call(this) var scrollSize = $.camelCase(['scroll', dimension].join('-')) this.$element .one('bsTransitionEnd', $.proxy(complete, this)) .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize]) } Collapse.prototype.hide = function () { if (this.transitioning || !this.$element.hasClass('in')) return var startEvent = $.Event('hide.bs.collapse') this.$element.trigger(startEvent) if (startEvent.isDefaultPrevented()) return var dimension = this.dimension() this.$element[dimension](this.$element[dimension]())[0].offsetHeight this.$element .addClass('collapsing') .removeClass('collapse in') .attr('aria-expanded', false) this.$trigger .addClass('collapsed') .attr('aria-expanded', false) this.transitioning = 1 var complete = function () { this.transitioning = 0 this.$element .removeClass('collapsing') .addClass('collapse') .trigger('hidden.bs.collapse') } if (!$.support.transition) return complete.call(this) this.$element [dimension](0) .one('bsTransitionEnd', $.proxy(complete, this)) .emulateTransitionEnd(Collapse.TRANSITION_DURATION) } Collapse.prototype.toggle = function () { this[this.$element.hasClass('in') ? 'hide' : 'show']() } Collapse.prototype.getParent = function () { return $(this.options.parent) .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]') .each($.proxy(function (i, element) { var $element = $(element) this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element) }, this)) .end() } Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) { var isOpen = $element.hasClass('in') $element.attr('aria-expanded', isOpen) $trigger .toggleClass('collapsed', !isOpen) .attr('aria-expanded', isOpen) } function getTargetFromTrigger($trigger) { var href var target = $trigger.attr('data-target') || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7 return $(target) } // COLLAPSE PLUGIN DEFINITION // ========================== function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.collapse') var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) if (typeof option == 'string') data[option]() }) } var old = $.fn.collapse $.fn.collapse = Plugin $.fn.collapse.Constructor = Collapse // COLLAPSE NO CONFLICT // ==================== $.fn.collapse.noConflict = function () { $.fn.collapse = old return this } // COLLAPSE DATA-API // ================= $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) { var $this = $(this) if (!$this.attr('data-target')) e.preventDefault() var $target = getTargetFromTrigger($this) var data = $target.data('bs.collapse') var option = data ? 'toggle' : $this.data() Plugin.call($target, option) }) }(jQuery); /* ======================================================================== * Bootstrap: dropdown.js v3.3.7 * http://getbootstrap.com/javascript/#dropdowns * ======================================================================== * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // DROPDOWN CLASS DEFINITION // ========================= var backdrop = '.dropdown-backdrop' var toggle = '[data-toggle="dropdown"]' var Dropdown = function (element) { $(element).on('click.bs.dropdown', this.toggle) } Dropdown.VERSION = '3.3.7' function getParent($this) { var selector = $this.attr('data-target') if (!selector) { selector = $this.attr('href') selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 } var $parent = selector && $(selector) return $parent && $parent.length ? $parent : $this.parent() } function clearMenus(e) { if (e && e.which === 3) return $(backdrop).remove() $(toggle).each(function () { var $this = $(this) var $parent = getParent($this) var relatedTarget = { relatedTarget: this } if (!$parent.hasClass('open')) return if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget)) if (e.isDefaultPrevented()) return $this.attr('aria-expanded', 'false') $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget)) }) } Dropdown.prototype.toggle = function (e) { var $this = $(this) if ($this.is('.disabled, :disabled')) return var $parent = getParent($this) var isActive = $parent.hasClass('open') clearMenus() if (!isActive) { if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { // if mobile we use a backdrop because click events don't delegate $(document.createElement('div')) .addClass('dropdown-backdrop') .insertAfter($(this)) .on('click', clearMenus) } var relatedTarget = { relatedTarget: this } $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget)) if (e.isDefaultPrevented()) return $this .trigger('focus') .attr('aria-expanded', 'true') $parent .toggleClass('open') .trigger($.Event('shown.bs.dropdown', relatedTarget)) } return false } Dropdown.prototype.keydown = function (e) { if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return var $this = $(this) e.preventDefault() e.stopPropagation() if ($this.is('.disabled, :disabled')) return var $parent = getParent($this) var isActive = $parent.hasClass('open') if (!isActive && e.which != 27 || isActive && e.which == 27) { if (e.which == 27) $parent.find(toggle).trigger('focus') return $this.trigger('click') } var desc = ' li:not(.disabled):visible a' var $items = $parent.find('.dropdown-menu' + desc) if (!$items.length) return var index = $items.index(e.target) if (e.which == 38 && index > 0) index-- // up if (e.which == 40 && index < $items.length - 1) index++ // down if (!~index) index = 0 $items.eq(index).trigger('focus') } // DROPDOWN PLUGIN DEFINITION // ========================== function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.dropdown') if (!data) $this.data('bs.dropdown', (data = new Dropdown(this))) if (typeof option == 'string') data[option].call($this) }) } var old = $.fn.dropdown $.fn.dropdown = Plugin $.fn.dropdown.Constructor = Dropdown // DROPDOWN NO CONFLICT // ==================== $.fn.dropdown.noConflict = function () { $.fn.dropdown = old return this } // APPLY TO STANDARD DROPDOWN ELEMENTS // =================================== $(document) .on('click.bs.dropdown.data-api', clearMenus) .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle) .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown) .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown) }(jQuery); /* ======================================================================== * Bootstrap: modal.js v3.3.7 * http://getbootstrap.com/javascript/#modals * ======================================================================== * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // MODAL CLASS DEFINITION // ====================== var Modal = function (element, options) { this.options = options this.$body = $(document.body) this.$element = $(element) this.$dialog = this.$element.find('.modal-dialog') this.$backdrop = null this.isShown = null this.originalBodyPad = null this.scrollbarWidth = 0 this.ignoreBackdropClick = false if (this.options.remote) { this.$element .find('.modal-content') .load(this.options.remote, $.proxy(function () { this.$element.trigger('loaded.bs.modal') }, this)) } } Modal.VERSION = '3.3.7' Modal.TRANSITION_DURATION = 300 Modal.BACKDROP_TRANSITION_DURATION = 150 Modal.DEFAULTS = { backdrop: true, keyboard: true, show: true } Modal.prototype.toggle = function (_relatedTarget) { return this.isShown ? this.hide() : this.show(_relatedTarget) } Modal.prototype.show = function (_relatedTarget) { var that = this var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget }) this.$element.trigger(e) if (this.isShown || e.isDefaultPrevented()) return this.isShown = true this.checkScrollbar() this.setScrollbar() this.$body.addClass('modal-open') this.escape() this.resize() this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this)) this.$dialog.on('mousedown.dismiss.bs.modal', function () { that.$element.one('mouseup.dismiss.bs.modal', function (e) { if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true }) }) this.backdrop(function () { var transition = $.support.transition && that.$element.hasClass('fade') if (!that.$element.parent().length) { that.$element.appendTo(that.$body) // don't move modals dom position } that.$element .show() .scrollTop(0) that.adjustDialog() if (transition) { that.$element[0].offsetWidth // force reflow } that.$element.addClass('in') that.enforceFocus() var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget }) transition ? that.$dialog // wait for modal to slide in .one('bsTransitionEnd', function () { that.$element.trigger('focus').trigger(e) }) .emulateTransitionEnd(Modal.TRANSITION_DURATION) : that.$element.trigger('focus').trigger(e) }) } Modal.prototype.hide = function (e) { if (e) e.preventDefault() e = $.Event('hide.bs.modal') this.$element.trigger(e) if (!this.isShown || e.isDefaultPrevented()) return this.isShown = false this.escape() this.resize() $(document).off('focusin.bs.modal') this.$element .removeClass('in') .off('click.dismiss.bs.modal') .off('mouseup.dismiss.bs.modal') this.$dialog.off('mousedown.dismiss.bs.modal') $.support.transition && this.$element.hasClass('fade') ? this.$element .one('bsTransitionEnd', $.proxy(this.hideModal, this)) .emulateTransitionEnd(Modal.TRANSITION_DURATION) : this.hideModal() } Modal.prototype.enforceFocus = function () { $(document) .off('focusin.bs.modal') // guard against infinite focus loop .on('focusin.bs.modal', $.proxy(function (e) { if (document !== e.target && this.$element[0] !== e.target && !this.$element.has(e.target).length) { this.$element.trigger('focus') } }, this)) } Modal.prototype.escape = function () { if (this.isShown && this.options.keyboard) { this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) { e.which == 27 && this.hide() }, this)) } else if (!this.isShown) { this.$element.off('keydown.dismiss.bs.modal') } } Modal.prototype.resize = function () { if (this.isShown) { $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this)) } else { $(window).off('resize.bs.modal') } } Modal.prototype.hideModal = function () { var that = this this.$element.hide() this.backdrop(function () { that.$body.removeClass('modal-open') that.resetAdjustments() that.resetScrollbar() that.$element.trigger('hidden.bs.modal') }) } Modal.prototype.removeBackdrop = function () { this.$backdrop && this.$backdrop.remove() this.$backdrop = null } Modal.prototype.backdrop = function (callback) { var that = this var animate = this.$element.hasClass('fade') ? 'fade' : '' if (this.isShown && this.options.backdrop) { var doAnimate = $.support.transition && animate this.$backdrop = $(document.createElement('div')) .addClass('modal-backdrop ' + animate) .appendTo(this.$body) this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) { if (this.ignoreBackdropClick) { this.ignoreBackdropClick = false return } if (e.target !== e.currentTarget) return this.options.backdrop == 'static' ? this.$element[0].focus() : this.hide() }, this)) if (doAnimate) this.$backdrop[0].offsetWidth // force reflow this.$backdrop.addClass('in') if (!callback) return doAnimate ? this.$backdrop .one('bsTransitionEnd', callback) .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : callback() } else if (!this.isShown && this.$backdrop) { this.$backdrop.removeClass('in') var callbackRemove = function () { that.removeBackdrop() callback && callback() } $.support.transition && this.$element.hasClass('fade') ? this.$backdrop .one('bsTransitionEnd', callbackRemove) .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : callbackRemove() } else if (callback) { callback() } } // these following methods are used to handle overflowing modals Modal.prototype.handleUpdate = function () { this.adjustDialog() } Modal.prototype.adjustDialog = function () { var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight this.$element.css({ paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '', paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : '' }) } Modal.prototype.resetAdjustments = function () { this.$element.css({ paddingLeft: '', paddingRight: '' }) } Modal.prototype.checkScrollbar = function () { var fullWindowWidth = window.innerWidth if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8 var documentElementRect = document.documentElement.getBoundingClientRect() fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left) } this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth this.scrollbarWidth = this.measureScrollbar() } Modal.prototype.setScrollbar = function () { var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10) this.originalBodyPad = document.body.style.paddingRight || '' if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth) } Modal.prototype.resetScrollbar = function () { this.$body.css('padding-right', this.originalBodyPad) } Modal.prototype.measureScrollbar = function () { // thx walsh var scrollDiv = document.createElement('div') scrollDiv.className = 'modal-scrollbar-measure' this.$body.append(scrollDiv) var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth this.$body[0].removeChild(scrollDiv) return scrollbarWidth } // MODAL PLUGIN DEFINITION // ======================= function Plugin(option, _relatedTarget) { return this.each(function () { var $this = $(this) var data = $this.data('bs.modal') var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option) if (!data) $this.data('bs.modal', (data = new Modal(this, options))) if (typeof option == 'string') data[option](_relatedTarget) else if (options.show) data.show(_relatedTarget) }) } var old = $.fn.modal $.fn.modal = Plugin $.fn.modal.Constructor = Modal // MODAL NO CONFLICT // ================= $.fn.modal.noConflict = function () { $.fn.modal = old return this } // MODAL DATA-API // ============== $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) { var $this = $(this) var href = $this.attr('href') var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7 var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data()) if ($this.is('a')) e.preventDefault() $target.one('show.bs.modal', function (showEvent) { if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown $target.one('hidden.bs.modal', function () { $this.is(':visible') && $this.trigger('focus') }) }) Plugin.call($target, option, this) }) }(jQuery); /* ======================================================================== * Bootstrap: tooltip.js v3.3.7 * http://getbootstrap.com/javascript/#tooltip * Inspired by the original jQuery.tipsy by Jason Frame * ======================================================================== * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // TOOLTIP PUBLIC CLASS DEFINITION // =============================== var Tooltip = function (element, options) { this.type = null this.options = null this.enabled = null this.timeout = null this.hoverState = null this.$element = null this.inState = null this.init('tooltip', element, options) } Tooltip.VERSION = '3.3.7' Tooltip.TRANSITION_DURATION = 150 Tooltip.DEFAULTS = { animation: true, placement: 'top', selector: false, template: '', trigger: 'hover focus', title: '', delay: 0, html: false, container: false, viewport: { selector: 'body', padding: 0 } } Tooltip.prototype.init = function (type, element, options) { this.enabled = true this.type = type this.$element = $(element) this.options = this.getOptions(options) this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport)) this.inState = { click: false, hover: false, focus: false } if (this.$element[0] instanceof document.constructor && !this.options.selector) { throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!') } var triggers = this.options.trigger.split(' ') for (var i = triggers.length; i--;) { var trigger = triggers[i] if (trigger == 'click') { this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this)) } else if (trigger != 'manual') { var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin' var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout' this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this)) this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this)) } } this.options.selector ? (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) : this.fixTitle() } Tooltip.prototype.getDefaults = function () { return Tooltip.DEFAULTS } Tooltip.prototype.getOptions = function (options) { options = $.extend({}, this.getDefaults(), this.$element.data(), options) if (options.delay && typeof options.delay == 'number') { options.delay = { show: options.delay, hide: options.delay } } return options } Tooltip.prototype.getDelegateOptions = function () { var options = {} var defaults = this.getDefaults() this._options && $.each(this._options, function (key, value) { if (defaults[key] != value) options[key] = value }) return options } Tooltip.prototype.enter = function (obj) { var self = obj instanceof this.constructor ? obj : $(obj.currentTarget).data('bs.' + this.type) if (!self) { self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) $(obj.currentTarget).data('bs.' + this.type, self) } if (obj instanceof $.Event) { self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true } if (self.tip().hasClass('in') || self.hoverState == 'in') { self.hoverState = 'in' return } clearTimeout(self.timeout) self.hoverState = 'in' if (!self.options.delay || !self.options.delay.show) return self.show() self.timeout = setTimeout(function () { if (self.hoverState == 'in') self.show() }, self.options.delay.show) } Tooltip.prototype.isInStateTrue = function () { for (var key in this.inState) { if (this.inState[key]) return true } return false } Tooltip.prototype.leave = function (obj) { var self = obj instanceof this.constructor ? obj : $(obj.currentTarget).data('bs.' + this.type) if (!self) { self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) $(obj.currentTarget).data('bs.' + this.type, self) } if (obj instanceof $.Event) { self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false } if (self.isInStateTrue()) return clearTimeout(self.timeout) self.hoverState = 'out' if (!self.options.delay || !self.options.delay.hide) return self.hide() self.timeout = setTimeout(function () { if (self.hoverState == 'out') self.hide() }, self.options.delay.hide) } Tooltip.prototype.show = function () { var e = $.Event('show.bs.' + this.type) if (this.hasContent() && this.enabled) { this.$element.trigger(e) var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0]) if (e.isDefaultPrevented() || !inDom) return var that = this var $tip = this.tip() var tipId = this.getUID(this.type) this.setContent() $tip.attr('id', tipId) this.$element.attr('aria-describedby', tipId) if (this.options.animation) $tip.addClass('fade') var placement = typeof this.options.placement == 'function' ? this.options.placement.call(this, $tip[0], this.$element[0]) : this.options.placement var autoToken = /\s?auto?\s?/i var autoPlace = autoToken.test(placement) if (autoPlace) placement = placement.replace(autoToken, '') || 'top' $tip .detach() .css({ top: 0, left: 0, display: 'block' }) .addClass(placement) .data('bs.' + this.type, this) this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element) this.$element.trigger('inserted.bs.' + this.type) var pos = this.getPosition() var actualWidth = $tip[0].offsetWidth var actualHeight = $tip[0].offsetHeight if (autoPlace) { var orgPlacement = placement var viewportDim = this.getPosition(this.$viewport) placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' : placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' : placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' : placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' : placement $tip .removeClass(orgPlacement) .addClass(placement) } var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight) this.applyPlacement(calculatedOffset, placement) var complete = function () { var prevHoverState = that.hoverState that.$element.trigger('shown.bs.' + that.type) that.hoverState = null if (prevHoverState == 'out') that.leave(that) } $.support.transition && this.$tip.hasClass('fade') ? $tip .one('bsTransitionEnd', complete) .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : complete() } } Tooltip.prototype.applyPlacement = function (offset, placement) { var $tip = this.tip() var width = $tip[0].offsetWidth var height = $tip[0].offsetHeight // manually read margins because getBoundingClientRect includes difference var marginTop = parseInt($tip.css('margin-top'), 10) var marginLeft = parseInt($tip.css('margin-left'), 10) // we must check for NaN for ie 8/9 if (isNaN(marginTop)) marginTop = 0 if (isNaN(marginLeft)) marginLeft = 0 offset.top += marginTop offset.left += marginLeft // $.fn.offset doesn't round pixel values // so we use setOffset directly with our own function B-0 $.offset.setOffset($tip[0], $.extend({ using: function (props) { $tip.css({ top: Math.round(props.top), left: Math.round(props.left) }) } }, offset), 0) $tip.addClass('in') // check to see if placing tip in new offset caused the tip to resize itself var actualWidth = $tip[0].offsetWidth var actualHeight = $tip[0].offsetHeight if (placement == 'top' && actualHeight != height) { offset.top = offset.top + height - actualHeight } var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight) if (delta.left) offset.left += delta.left else offset.top += delta.top var isVertical = /top|bottom/.test(placement) var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight' $tip.offset(offset) this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical) } Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) { this.arrow() .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%') .css(isVertical ? 'top' : 'left', '') } Tooltip.prototype.setContent = function () { var $tip = this.tip() var title = this.getTitle() $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title) $tip.removeClass('fade in top bottom left right') } Tooltip.prototype.hide = function (callback) { var that = this var $tip = $(this.$tip) var e = $.Event('hide.bs.' + this.type) function complete() { if (that.hoverState != 'in') $tip.detach() if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary. that.$element .removeAttr('aria-describedby') .trigger('hidden.bs.' + that.type) } callback && callback() } this.$element.trigger(e) if (e.isDefaultPrevented()) return $tip.removeClass('in') $.support.transition && $tip.hasClass('fade') ? $tip .one('bsTransitionEnd', complete) .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : complete() this.hoverState = null return this } Tooltip.prototype.fixTitle = function () { var $e = this.$element if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') { $e.attr('data-original-title', $e.attr('title') || '').attr('title', '') } } Tooltip.prototype.hasContent = function () { return this.getTitle() } Tooltip.prototype.getPosition = function ($element) { $element = $element || this.$element var el = $element[0] var isBody = el.tagName == 'BODY' var elRect = el.getBoundingClientRect() if (elRect.width == null) { // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093 elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top }) } var isSvg = window.SVGElement && el instanceof window.SVGElement // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3. // See https://github.com/twbs/bootstrap/issues/20280 var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset()) var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() } var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null return $.extend({}, elRect, scroll, outerDims, elOffset) } Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) { return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } : placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } : placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } : /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width } } Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) { var delta = { top: 0, left: 0 } if (!this.$viewport) return delta var viewportPadding = this.options.viewport && this.options.viewport.padding || 0 var viewportDimensions = this.getPosition(this.$viewport) if (/right|left/.test(placement)) { var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight if (topEdgeOffset < viewportDimensions.top) { // top overflow delta.top = viewportDimensions.top - topEdgeOffset } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset } } else { var leftEdgeOffset = pos.left - viewportPadding var rightEdgeOffset = pos.left + viewportPadding + actualWidth if (leftEdgeOffset < viewportDimensions.left) { // left overflow delta.left = viewportDimensions.left - leftEdgeOffset } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset } } return delta } Tooltip.prototype.getTitle = function () { var title var $e = this.$element var o = this.options title = $e.attr('data-original-title') || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title) return title } Tooltip.prototype.getUID = function (prefix) { do prefix += ~~(Math.random() * 1000000) while (document.getElementById(prefix)) return prefix } Tooltip.prototype.tip = function () { if (!this.$tip) { this.$tip = $(this.options.template) if (this.$tip.length != 1) { throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!') } } return this.$tip } Tooltip.prototype.arrow = function () { return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow')) } Tooltip.prototype.enable = function () { this.enabled = true } Tooltip.prototype.disable = function () { this.enabled = false } Tooltip.prototype.toggleEnabled = function () { this.enabled = !this.enabled } Tooltip.prototype.toggle = function (e) { var self = this if (e) { self = $(e.currentTarget).data('bs.' + this.type) if (!self) { self = new this.constructor(e.currentTarget, this.getDelegateOptions()) $(e.currentTarget).data('bs.' + this.type, self) } } if (e) { self.inState.click = !self.inState.click if (self.isInStateTrue()) self.enter(self) else self.leave(self) } else { self.tip().hasClass('in') ? self.leave(self) : self.enter(self) } } Tooltip.prototype.destroy = function () { var that = this clearTimeout(this.timeout) this.hide(function () { that.$element.off('.' + that.type).removeData('bs.' + that.type) if (that.$tip) { that.$tip.detach() } that.$tip = null that.$arrow = null that.$viewport = null that.$element = null }) } // TOOLTIP PLUGIN DEFINITION // ========================= function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.tooltip') var options = typeof option == 'object' && option if (!data && /destroy|hide/.test(option)) return if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options))) if (typeof option == 'string') data[option]() }) } var old = $.fn.tooltip $.fn.tooltip = Plugin $.fn.tooltip.Constructor = Tooltip // TOOLTIP NO CONFLICT // =================== $.fn.tooltip.noConflict = function () { $.fn.tooltip = old return this } }(jQuery); /* ======================================================================== * Bootstrap: popover.js v3.3.7 * http://getbootstrap.com/javascript/#popovers * ======================================================================== * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // POPOVER PUBLIC CLASS DEFINITION // =============================== var Popover = function (element, options) { this.init('popover', element, options) } if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js') Popover.VERSION = '3.3.7' Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, { placement: 'right', trigger: 'click', content: '', template: '' }) // NOTE: POPOVER EXTENDS tooltip.js // ================================ Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype) Popover.prototype.constructor = Popover Popover.prototype.getDefaults = function () { return Popover.DEFAULTS } Popover.prototype.setContent = function () { var $tip = this.tip() var title = this.getTitle() var content = this.getContent() $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title) $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text' ](content) $tip.removeClass('fade top bottom left right in') // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do // this manually by checking the contents. if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide() } Popover.prototype.hasContent = function () { return this.getTitle() || this.getContent() } Popover.prototype.getContent = function () { var $e = this.$element var o = this.options return $e.attr('data-content') || (typeof o.content == 'function' ? o.content.call($e[0]) : o.content) } Popover.prototype.arrow = function () { return (this.$arrow = this.$arrow || this.tip().find('.arrow')) } // POPOVER PLUGIN DEFINITION // ========================= function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.popover') var options = typeof option == 'object' && option if (!data && /destroy|hide/.test(option)) return if (!data) $this.data('bs.popover', (data = new Popover(this, options))) if (typeof option == 'string') data[option]() }) } var old = $.fn.popover $.fn.popover = Plugin $.fn.popover.Constructor = Popover // POPOVER NO CONFLICT // =================== $.fn.popover.noConflict = function () { $.fn.popover = old return this } }(jQuery); /* ======================================================================== * Bootstrap: scrollspy.js v3.3.7 * http://getbootstrap.com/javascript/#scrollspy * ======================================================================== * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // SCROLLSPY CLASS DEFINITION // ========================== function ScrollSpy(element, options) { this.$body = $(document.body) this.$scrollElement = $(element).is(document.body) ? $(window) : $(element) this.options = $.extend({}, ScrollSpy.DEFAULTS, options) this.selector = (this.options.target || '') + ' .nav li > a' this.offsets = [] this.targets = [] this.activeTarget = null this.scrollHeight = 0 this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this)) this.refresh() this.process() } ScrollSpy.VERSION = '3.3.7' ScrollSpy.DEFAULTS = { offset: 10 } ScrollSpy.prototype.getScrollHeight = function () { return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight) } ScrollSpy.prototype.refresh = function () { var that = this var offsetMethod = 'offset' var offsetBase = 0 this.offsets = [] this.targets = [] this.scrollHeight = this.getScrollHeight() if (!$.isWindow(this.$scrollElement[0])) { offsetMethod = 'position' offsetBase = this.$scrollElement.scrollTop() } this.$body .find(this.selector) .map(function () { var $el = $(this) var href = $el.data('target') || $el.attr('href') var $href = /^#./.test(href) && $(href) return ($href && $href.length && $href.is(':visible') && [[$href[offsetMethod]().top + offsetBase, href]]) || null }) .sort(function (a, b) { return a[0] - b[0] }) .each(function () { that.offsets.push(this[0]) that.targets.push(this[1]) }) } ScrollSpy.prototype.process = function () { var scrollTop = this.$scrollElement.scrollTop() + this.options.offset var scrollHeight = this.getScrollHeight() var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height() var offsets = this.offsets var targets = this.targets var activeTarget = this.activeTarget var i if (this.scrollHeight != scrollHeight) { this.refresh() } if (scrollTop >= maxScroll) { return activeTarget != (i = targets[targets.length - 1]) && this.activate(i) } if (activeTarget && scrollTop < offsets[0]) { this.activeTarget = null return this.clear() } for (i = offsets.length; i--;) { activeTarget != targets[i] && scrollTop >= offsets[i] && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1]) && this.activate(targets[i]) } } ScrollSpy.prototype.activate = function (target) { this.activeTarget = target this.clear() var selector = this.selector + '[data-target="' + target + '"],' + this.selector + '[href="' + target + '"]' var active = $(selector) .parents('li') .addClass('active') if (active.parent('.dropdown-menu').length) { active = active .closest('li.dropdown') .addClass('active') } active.trigger('activate.bs.scrollspy') } ScrollSpy.prototype.clear = function () { $(this.selector) .parentsUntil(this.options.target, '.active') .removeClass('active') } // SCROLLSPY PLUGIN DEFINITION // =========================== function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.scrollspy') var options = typeof option == 'object' && option if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options))) if (typeof option == 'string') data[option]() }) } var old = $.fn.scrollspy $.fn.scrollspy = Plugin $.fn.scrollspy.Constructor = ScrollSpy // SCROLLSPY NO CONFLICT // ===================== $.fn.scrollspy.noConflict = function () { $.fn.scrollspy = old return this } // SCROLLSPY DATA-API // ================== $(window).on('load.bs.scrollspy.data-api', function () { $('[data-spy="scroll"]').each(function () { var $spy = $(this) Plugin.call($spy, $spy.data()) }) }) }(jQuery); /* ======================================================================== * Bootstrap: tab.js v3.3.7 * http://getbootstrap.com/javascript/#tabs * ======================================================================== * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // TAB CLASS DEFINITION // ==================== var Tab = function (element) { // jscs:disable requireDollarBeforejQueryAssignment this.element = $(element) // jscs:enable requireDollarBeforejQueryAssignment } Tab.VERSION = '3.3.7' Tab.TRANSITION_DURATION = 150 Tab.prototype.show = function () { var $this = this.element var $ul = $this.closest('ul:not(.dropdown-menu)') var selector = $this.data('target') if (!selector) { selector = $this.attr('href') selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 } if ($this.parent('li').hasClass('active')) return var $previous = $ul.find('.active:last a') var hideEvent = $.Event('hide.bs.tab', { relatedTarget: $this[0] }) var showEvent = $.Event('show.bs.tab', { relatedTarget: $previous[0] }) $previous.trigger(hideEvent) $this.trigger(showEvent) if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return var $target = $(selector) this.activate($this.closest('li'), $ul) this.activate($target, $target.parent(), function () { $previous.trigger({ type: 'hidden.bs.tab', relatedTarget: $this[0] }) $this.trigger({ type: 'shown.bs.tab', relatedTarget: $previous[0] }) }) } Tab.prototype.activate = function (element, container, callback) { var $active = container.find('> .active') var transition = callback && $.support.transition && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length) function next() { $active .removeClass('active') .find('> .dropdown-menu > .active') .removeClass('active') .end() .find('[data-toggle="tab"]') .attr('aria-expanded', false) element .addClass('active') .find('[data-toggle="tab"]') .attr('aria-expanded', true) if (transition) { element[0].offsetWidth // reflow for transition element.addClass('in') } else { element.removeClass('fade') } if (element.parent('.dropdown-menu').length) { element .closest('li.dropdown') .addClass('active') .end() .find('[data-toggle="tab"]') .attr('aria-expanded', true) } callback && callback() } $active.length && transition ? $active .one('bsTransitionEnd', next) .emulateTransitionEnd(Tab.TRANSITION_DURATION) : next() $active.removeClass('in') } // TAB PLUGIN DEFINITION // ===================== function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.tab') if (!data) $this.data('bs.tab', (data = new Tab(this))) if (typeof option == 'string') data[option]() }) } var old = $.fn.tab $.fn.tab = Plugin $.fn.tab.Constructor = Tab // TAB NO CONFLICT // =============== $.fn.tab.noConflict = function () { $.fn.tab = old return this } // TAB DATA-API // ============ var clickHandler = function (e) { e.preventDefault() Plugin.call($(this), 'show') } $(document) .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler) .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler) }(jQuery); /* ======================================================================== * Bootstrap: affix.js v3.3.7 * http://getbootstrap.com/javascript/#affix * ======================================================================== * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // AFFIX CLASS DEFINITION // ====================== var Affix = function (element, options) { this.options = $.extend({}, Affix.DEFAULTS, options) this.$target = $(this.options.target) .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this)) .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this)) this.$element = $(element) this.affixed = null this.unpin = null this.pinnedOffset = null this.checkPosition() } Affix.VERSION = '3.3.7' Affix.RESET = 'affix affix-top affix-bottom' Affix.DEFAULTS = { offset: 0, target: window } Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) { var scrollTop = this.$target.scrollTop() var position = this.$element.offset() var targetHeight = this.$target.height() if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false if (this.affixed == 'bottom') { if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom' return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom' } var initializing = this.affixed == null var colliderTop = initializing ? scrollTop : position.top var colliderHeight = initializing ? targetHeight : height if (offsetTop != null && scrollTop <= offsetTop) return 'top' if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom' return false } Affix.prototype.getPinnedOffset = function () { if (this.pinnedOffset) return this.pinnedOffset this.$element.removeClass(Affix.RESET).addClass('affix') var scrollTop = this.$target.scrollTop() var position = this.$element.offset() return (this.pinnedOffset = position.top - scrollTop) } Affix.prototype.checkPositionWithEventLoop = function () { setTimeout($.proxy(this.checkPosition, this), 1) } Affix.prototype.checkPosition = function () { if (!this.$element.is(':visible')) return var height = this.$element.height() var offset = this.options.offset var offsetTop = offset.top var offsetBottom = offset.bottom var scrollHeight = Math.max($(document).height(), $(document.body).height()) if (typeof offset != 'object') offsetBottom = offsetTop = offset if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element) if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element) var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom) if (this.affixed != affix) { if (this.unpin != null) this.$element.css('top', '') var affixType = 'affix' + (affix ? '-' + affix : '') var e = $.Event(affixType + '.bs.affix') this.$element.trigger(e) if (e.isDefaultPrevented()) return this.affixed = affix this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null this.$element .removeClass(Affix.RESET) .addClass(affixType) .trigger(affixType.replace('affix', 'affixed') + '.bs.affix') } if (affix == 'bottom') { this.$element.offset({ top: scrollHeight - height - offsetBottom }) } } // AFFIX PLUGIN DEFINITION // ======================= function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.affix') var options = typeof option == 'object' && option if (!data) $this.data('bs.affix', (data = new Affix(this, options))) if (typeof option == 'string') data[option]() }) } var old = $.fn.affix $.fn.affix = Plugin $.fn.affix.Constructor = Affix // AFFIX NO CONFLICT // ================= $.fn.affix.noConflict = function () { $.fn.affix = old return this } // AFFIX DATA-API // ============== $(window).on('load', function () { $('[data-spy="affix"]').each(function () { var $spy = $(this) var data = $spy.data() data.offset = data.offset || {} if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom if (data.offsetTop != null) data.offset.top = data.offsetTop Plugin.call($spy, data) }) }) }(jQuery); ================================================ FILE: src/main/webapp/js/npm.js ================================================ // This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment. require('../../js/transition.js') require('../../js/alert.js') require('../../js/button.js') require('../../js/carousel.js') require('../../js/collapse.js') require('../../js/dropdown.js') require('../../js/modal.js') require('../../js/tooltip.js') require('../../js/popover.js') require('../../js/scrollspy.js') require('../../js/tab.js') require('../../js/affix.js') ================================================ FILE: src/main/webapp/login.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--
--%> <%--
--%> <%--
--%> <%----%> <%----%> <%----%> <%--
--%> <%--
--%> <%--
--%>
================================================ FILE: src/test/test/com/system/mapper/CourseMapperCustomTest.java ================================================ package com.system.mapper; import com.system.po.CourseCustom; import com.system.po.PagingVO; import com.system.po.TeacherCustom; import org.junit.Before; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import java.util.List; import static org.junit.Assert.*; /** * Created by Jacey on 2017/6/29. */ public class CourseMapperCustomTest { private ApplicationContext applicationContext; @Before public void setUp() throws Exception { applicationContext = new ClassPathXmlApplicationContext("spring/applicationContext-dao.xml"); } @Test public void findByPaging() throws Exception { CourseMapperCustom courseMapperCustom = (CourseMapperCustom) applicationContext.getBean("courseMapperCustom"); PagingVO pagingVO = new PagingVO(); pagingVO.setToPageNo(1); List list = courseMapperCustom.findByPaging(pagingVO); System.out.println(); } } ================================================ FILE: src/test/test/com/system/mapper/StudentMapperCustomTest.java ================================================ package com.system.mapper; import com.system.po.PagingVO; import com.system.po.Student; import com.system.po.StudentCustom; import org.junit.Before; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import java.util.List; import static org.junit.Assert.*; /** * Created by Jacey on 2017/6/28. */ public class StudentMapperCustomTest { private ApplicationContext applicationContext; @Before public void setUp() throws Exception { applicationContext = new ClassPathXmlApplicationContext("spring/applicationContext-dao.xml"); } @Test public void findByPaging() throws Exception { StudentMapperCustom studentMapperCustom = (StudentMapperCustom) applicationContext.getBean("studentMapperCustom"); StudentMapper studentMapper = (StudentMapper) applicationContext.getBean("studentMapper"); PagingVO pagingVO = new PagingVO(); pagingVO.setToPageNo(1); List list = studentMapperCustom.findByPaging(pagingVO); // Student student = studentMapper.selectByPrimaryKey(10001); System.out.println(); } @Test public void findStudentAndSelectCourseListByName() throws Exception { StudentMapperCustom studentMapperCustom = (StudentMapperCustom) applicationContext.getBean("studentMapperCustom"); StudentCustom studentCustom = studentMapperCustom.findStudentAndSelectCourseListById(10001); System.out.println(); } } ================================================ FILE: src/test/test/com/system/mapper/StudentMapperTest.java ================================================ package com.system.mapper; import com.system.po.Student; import com.system.po.StudentExample; import org.junit.Before; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import java.util.List; import static org.junit.Assert.*; /** * * */ public class StudentMapperTest { private ApplicationContext applicationContext; @Before public void setUp() throws Exception { applicationContext = new ClassPathXmlApplicationContext("spring/applicationContext-dao.xml"); } @Test public void selectByExample() throws Exception { StudentMapper studentMapper = (StudentMapper) applicationContext.getBean("studentMapper"); //自定义条件查询对象 StudentExample studentExample = new StudentExample(); StudentExample.Criteria criteria = studentExample.createCriteria(); //自定义查询条件 criteria.andUsernameLike("%小%"); List list = studentMapper.selectByExample(studentExample); System.out.println(); } } ================================================ FILE: src/test/test/com/system/mapper/TeacherMapperCustomTest.java ================================================ package com.system.mapper; import com.system.po.PagingVO; import com.system.po.StudentCustom; import com.system.po.TeacherCustom; import org.junit.Before; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import java.util.List; import static org.junit.Assert.*; /** * Created by Jacey on 2017/6/29. */ public class TeacherMapperCustomTest { private ApplicationContext applicationContext; @Before public void setUp() throws Exception { applicationContext = new ClassPathXmlApplicationContext("spring/applicationContext-dao.xml"); } @Test public void findByPaging() throws Exception { TeacherMapperCustom teacherMapperCustom = (TeacherMapperCustom) applicationContext.getBean("teacherMapperCustom"); PagingVO pagingVO = new PagingVO(); pagingVO.setToPageNo(1); List list = teacherMapperCustom.findByPaging(pagingVO); System.out.println(); } } ================================================ FILE: src/test/test/com/system/mapper/UserloginMapperCustomTest.java ================================================ package com.system.mapper; import com.system.po.UserloginCustom; import org.junit.Before; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; /** * Created by Jacey on 2017/6/28. */ public class UserloginMapperCustomTest { private ApplicationContext applicationContext; @Before public void setUp() throws Exception { applicationContext = new ClassPathXmlApplicationContext("spring/applicationContext.xml"); } @Test public void testFindOne() throws Exception { UserloginMapperCustom userloginMapperCustom = (UserloginMapperCustom) applicationContext.getBean("userloginMapperCustom"); } } ================================================ FILE: src/test/test/com/system/service/impl/CourseServiceImplTest.java ================================================ package com.system.service.impl; import com.system.po.CourseCustom; import com.system.service.CourseService; import com.system.service.StudentService; import org.junit.Before; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import static org.junit.Assert.*; /** * Created by Jacey on 2017/7/5. */ public class CourseServiceImplTest { private ApplicationContext applicationContext; @Before public void setUp() throws Exception { applicationContext = new ClassPathXmlApplicationContext(new String[]{"spring/applicationContext-dao.xml", "spring/applicationContext-service.xml"}); } @Test public void findById() throws Exception { CourseService courseService = (CourseService) applicationContext.getBean("courseServiceImpl"); CourseCustom courseCustom = courseService.findById(1); System.out.println(); } @Test public void findByTeacherID() throws Exception { CourseService courseService = (CourseService) applicationContext.getBean("courseServiceImpl"); courseService.findByTeacherID(1001); } } ================================================ FILE: src/test/test/com/system/service/impl/SelectedCourseServiceImplTest.java ================================================ package com.system.service.impl; import com.system.po.SelectedCourseCustom; import com.system.service.CourseService; import com.system.service.SelectedCourseService; import org.junit.Before; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import java.util.List; import static org.junit.Assert.*; /** * Created by Jacey on 2017/7/6. */ public class SelectedCourseServiceImplTest { private ApplicationContext applicationContext; @Before public void setUp() throws Exception { applicationContext = new ClassPathXmlApplicationContext(new String[]{"spring/applicationContext-dao.xml", "spring/applicationContext-service.xml"}); } @Test public void findByCourseID() throws Exception { SelectedCourseService service = (SelectedCourseService) applicationContext.getBean("selectedCourseServiceImpl"); List list = service.findByCourseID(1); System.out.println(); } } ================================================ FILE: src/test/test/com/system/service/impl/StudentServiceImplTest.java ================================================ package com.system.service.impl; import com.system.po.PagingVO; import com.system.po.Student; import com.system.po.StudentCustom; import com.system.service.StudentService; import org.junit.Before; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import static org.junit.Assert.*; /** * Created by Jacey on 2017/6/29. */ public class StudentServiceImplTest { private ApplicationContext applicationContext; @Before public void setUp() throws Exception { applicationContext = new ClassPathXmlApplicationContext(new String[]{"spring/applicationContext-dao.xml", "spring/applicationContext-service.xml"}); } @Test public void updataById() throws Exception { StudentService studentService = (StudentService) applicationContext.getBean("studentService"); StudentCustom studentCustom = new StudentCustom(); studentCustom.setUserid(10004); studentCustom.setUsername("小拉"); // studentCustom.setBirthyear(new Date(1996, 9, 2)); //指定时间格式 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-M-d"); // 指定一个日期 Date date = dateFormat.parse("1990-09-06"); studentCustom.setBirthyear(date); studentCustom.setCollegeid(1); studentCustom.setSex("男"); studentCustom.setGrade(new Date()); studentService.updataById(10004, studentCustom); } @Test public void removeById() throws Exception { StudentService studentService = (StudentService) applicationContext.getBean("studentService"); studentService.removeById(10004); } @Test public void findByPaging() throws Exception { StudentService studentService = (StudentService) applicationContext.getBean("studentService"); List list = studentService.findByPaging(1); System.out.println(); } @Test public void save() throws Exception { StudentCustom studentCustom = new StudentCustom(); studentCustom.setUserid(10004); studentCustom.setUsername("小花"); // studentCustom.setBirthyear(new Date(1996, 9, 2)); //指定时间格式 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-M-d"); // 指定一个日期 Date date = dateFormat.parse("1996-09-02"); studentCustom.setBirthyear(date); studentCustom.setCollegeid(1); studentCustom.setSex("男"); studentCustom.setGrade(new Date()); StudentService studentService = (StudentService) applicationContext.getBean("studentService"); studentService.save(studentCustom); } @Test public void getCountStudent() throws Exception { StudentService studentService = (StudentService) applicationContext.getBean("studentService"); int i = studentService.getCountStudent(); System.out.println(); } @Test public void findById() throws Exception { StudentService studentService = (StudentService) applicationContext.getBean("studentService"); Student student = studentService.findById(10001); System.out.println(); } @Test public void findByName() throws Exception { StudentService studentService = (StudentService) applicationContext.getBean("studentService"); List list = studentService.findByName("小"); System.out.println(); } } ================================================ FILE: src/test/test/com/system/service/impl/TeacherServiceImplTest.java ================================================ package com.system.service.impl; import com.system.po.Teacher; import com.system.po.TeacherCustom; import com.system.service.TeacherService; import org.junit.Before; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import static org.junit.Assert.*; /** * Created by Jacey on 2017/6/29. */ public class TeacherServiceImplTest { private ApplicationContext applicationContext; TeacherService teacherService; @Before public void setUp() throws Exception { applicationContext = new ClassPathXmlApplicationContext(new String[]{"spring/applicationContext-dao.xml", "spring/applicationContext-service.xml"}); teacherService = (TeacherService) applicationContext.getBean("teacherServiceImpl"); } @Test public void updateById() throws Exception { TeacherCustom teacherCustom = new TeacherCustom(); teacherCustom.setUserid(1003); teacherCustom.setUsername("软老师"); //指定时间格式 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-M-d"); // 指定一个日期 Date date = dateFormat.parse("1996-09-02"); teacherCustom.setBirthyear(date); teacherCustom.setCollegeid(1); teacherCustom.setSex("男"); teacherCustom.setGrade(new Date()); teacherCustom.setTitle("助教"); teacherCustom.setDegree("硕士"); teacherService.updateById(1003, teacherCustom); } @Test public void removeById() throws Exception { teacherService.removeById(1003); } @Test public void findByPaging() throws Exception { List list = teacherService.findByPaging(1); System.out.println(); } @Test public void save() throws Exception { TeacherCustom teacherCustom = new TeacherCustom(); teacherCustom.setUserid(1003); teacherCustom.setUsername("软老师"); //指定时间格式 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-M-d"); // 指定一个日期 Date date = dateFormat.parse("1996-09-02"); teacherCustom.setBirthyear(date); teacherCustom.setCollegeid(1); teacherCustom.setSex("男"); teacherCustom.setGrade(new Date()); teacherCustom.setTitle("助教"); teacherService.save(teacherCustom); } @Test public void getCountTeacher() throws Exception { int i = teacherService.getCountTeacher(); System.out.println(i); } @Test public void findById() throws Exception { TeacherCustom teacherCustom = teacherService.findById(1001); System.out.println(); } @Test public void findByName() throws Exception { List list = teacherService.findByName("老师"); System.out.println(); } @Test public void findAll() throws Exception { List list = teacherService.findAll(); System.out.println(); } } ================================================ FILE: src/test/test/com/system/service/impl/UserloginServiceImplTest.java ================================================ package com.system.service.impl; import com.system.po.Userlogin; import com.system.service.TeacherService; import com.system.service.UserloginService; import org.junit.Before; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import static org.junit.Assert.*; /** * Created by Jacey on 2017/6/30. */ public class UserloginServiceImplTest { private ApplicationContext applicationContext; UserloginService userloginService; @Before public void setUp() throws Exception { applicationContext = new ClassPathXmlApplicationContext(new String[]{"spring/applicationContext-dao.xml", "spring/applicationContext-service.xml"}); userloginService = (UserloginService) applicationContext.getBean("userloginServiceImpl"); } @Test public void findByName() throws Exception { Userlogin u = userloginService.findByName("123"); System.out.println(); } } ================================================ FILE: target/classes/com/system/mapper/CollegeMapper.xml ================================================ and ${criterion.condition} and ${criterion.condition} #{criterion.value} and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} and ${criterion.condition} #{listItem} and ${criterion.condition} and ${criterion.condition} #{criterion.value} and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} and ${criterion.condition} #{listItem} collegeID, collegeName delete from college where collegeID = #{collegeid,jdbcType=INTEGER} delete from college insert into college (collegeID, collegeName) values (#{collegeid,jdbcType=INTEGER}, #{collegename,jdbcType=VARCHAR}) insert into college collegeID, collegeName, #{collegeid,jdbcType=INTEGER}, #{collegename,jdbcType=VARCHAR}, update college collegeID = #{record.collegeid,jdbcType=INTEGER}, collegeName = #{record.collegename,jdbcType=VARCHAR}, update college set collegeID = #{record.collegeid,jdbcType=INTEGER}, collegeName = #{record.collegename,jdbcType=VARCHAR} update college collegeName = #{collegename,jdbcType=VARCHAR}, where collegeID = #{collegeid,jdbcType=INTEGER} update college set collegeName = #{collegename,jdbcType=VARCHAR} where collegeID = #{collegeid,jdbcType=INTEGER} ================================================ FILE: target/classes/com/system/mapper/CourseMapper.xml ================================================ and ${criterion.condition} and ${criterion.condition} #{criterion.value} and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} and ${criterion.condition} #{listItem} and ${criterion.condition} and ${criterion.condition} #{criterion.value} and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} and ${criterion.condition} #{listItem} courseID, courseName, teacherID, courseTime, classRoom, courseWeek, courseType, collegeID, score delete from course where courseID = #{courseid,jdbcType=INTEGER} delete from course insert into course (courseID, courseName, teacherID, courseTime, classRoom, courseWeek, courseType, collegeID, score ) values (#{courseid,jdbcType=INTEGER}, #{coursename,jdbcType=VARCHAR}, #{teacherid,jdbcType=INTEGER}, #{coursetime,jdbcType=VARCHAR}, #{classroom,jdbcType=VARCHAR}, #{courseweek,jdbcType=INTEGER}, #{coursetype,jdbcType=VARCHAR}, #{collegeid,jdbcType=INTEGER}, #{score,jdbcType=INTEGER} ) insert into course courseID, courseName, teacherID, courseTime, classRoom, courseWeek, courseType, collegeID, score, #{courseid,jdbcType=INTEGER}, #{coursename,jdbcType=VARCHAR}, #{teacherid,jdbcType=INTEGER}, #{coursetime,jdbcType=VARCHAR}, #{classroom,jdbcType=VARCHAR}, #{courseweek,jdbcType=INTEGER}, #{coursetype,jdbcType=VARCHAR}, #{collegeid,jdbcType=INTEGER}, #{score,jdbcType=INTEGER}, update course courseID = #{record.courseid,jdbcType=INTEGER}, courseName = #{record.coursename,jdbcType=VARCHAR}, teacherID = #{record.teacherid,jdbcType=INTEGER}, courseTime = #{record.coursetime,jdbcType=VARCHAR}, classRoom = #{record.classroom,jdbcType=VARCHAR}, courseWeek = #{record.courseweek,jdbcType=INTEGER}, courseType = #{record.coursetype,jdbcType=VARCHAR}, collegeID = #{record.collegeid,jdbcType=INTEGER}, score = #{record.score,jdbcType=INTEGER}, update course set courseID = #{record.courseid,jdbcType=INTEGER}, courseName = #{record.coursename,jdbcType=VARCHAR}, teacherID = #{record.teacherid,jdbcType=INTEGER}, courseTime = #{record.coursetime,jdbcType=VARCHAR}, classRoom = #{record.classroom,jdbcType=VARCHAR}, courseWeek = #{record.courseweek,jdbcType=INTEGER}, courseType = #{record.coursetype,jdbcType=VARCHAR}, collegeID = #{record.collegeid,jdbcType=INTEGER}, score = #{record.score,jdbcType=INTEGER} update course courseName = #{coursename,jdbcType=VARCHAR}, teacherID = #{teacherid,jdbcType=INTEGER}, courseTime = #{coursetime,jdbcType=VARCHAR}, classRoom = #{classroom,jdbcType=VARCHAR}, courseWeek = #{courseweek,jdbcType=INTEGER}, courseType = #{coursetype,jdbcType=VARCHAR}, collegeID = #{collegeid,jdbcType=INTEGER}, score = #{score,jdbcType=INTEGER}, where courseID = #{courseid,jdbcType=INTEGER} update course set courseName = #{coursename,jdbcType=VARCHAR}, teacherID = #{teacherid,jdbcType=INTEGER}, courseTime = #{coursetime,jdbcType=VARCHAR}, classRoom = #{classroom,jdbcType=VARCHAR}, courseWeek = #{courseweek,jdbcType=INTEGER}, courseType = #{coursetype,jdbcType=VARCHAR}, collegeID = #{collegeid,jdbcType=INTEGER}, score = #{score,jdbcType=INTEGER} where courseID = #{courseid,jdbcType=INTEGER} ================================================ FILE: target/classes/com/system/mapper/CourseMapperCustom.xml ================================================ ================================================ FILE: target/classes/com/system/mapper/RoleMapper.xml ================================================ and ${criterion.condition} and ${criterion.condition} #{criterion.value} and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} and ${criterion.condition} #{listItem} and ${criterion.condition} and ${criterion.condition} #{criterion.value} and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} and ${criterion.condition} #{listItem} roleID, roleName, permissions delete from role where roleID = #{roleid,jdbcType=INTEGER} delete from role insert into role (roleID, roleName, permissions ) values (#{roleid,jdbcType=INTEGER}, #{rolename,jdbcType=VARCHAR}, #{permissions,jdbcType=VARCHAR} ) insert into role roleID, roleName, permissions, #{roleid,jdbcType=INTEGER}, #{rolename,jdbcType=VARCHAR}, #{permissions,jdbcType=VARCHAR}, update role roleID = #{record.roleid,jdbcType=INTEGER}, roleName = #{record.rolename,jdbcType=VARCHAR}, permissions = #{record.permissions,jdbcType=VARCHAR}, update role set roleID = #{record.roleid,jdbcType=INTEGER}, roleName = #{record.rolename,jdbcType=VARCHAR}, permissions = #{record.permissions,jdbcType=VARCHAR} update role roleName = #{rolename,jdbcType=VARCHAR}, permissions = #{permissions,jdbcType=VARCHAR}, where roleID = #{roleid,jdbcType=INTEGER} update role set roleName = #{rolename,jdbcType=VARCHAR}, permissions = #{permissions,jdbcType=VARCHAR} where roleID = #{roleid,jdbcType=INTEGER} ================================================ FILE: target/classes/com/system/mapper/SelectedcourseMapper.xml ================================================ and ${criterion.condition} and ${criterion.condition} #{criterion.value} and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} and ${criterion.condition} #{listItem} and ${criterion.condition} and ${criterion.condition} #{criterion.value} and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} and ${criterion.condition} #{listItem} courseID, studentID, mark delete from selectedcourse insert into selectedcourse (courseID, studentID, mark ) values (#{courseid,jdbcType=INTEGER}, #{studentid,jdbcType=INTEGER}, #{mark,jdbcType=INTEGER} ) insert into selectedcourse courseID, studentID, mark, #{courseid,jdbcType=INTEGER}, #{studentid,jdbcType=INTEGER}, #{mark,jdbcType=INTEGER}, update selectedcourse courseID = #{record.courseid,jdbcType=INTEGER}, studentID = #{record.studentid,jdbcType=INTEGER}, mark = #{record.mark,jdbcType=INTEGER}, update selectedcourse set courseID = #{record.courseid,jdbcType=INTEGER}, studentID = #{record.studentid,jdbcType=INTEGER}, mark = #{record.mark,jdbcType=INTEGER} ================================================ FILE: target/classes/com/system/mapper/StudentMapper.xml ================================================ and ${criterion.condition} and ${criterion.condition} #{criterion.value} and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} and ${criterion.condition} #{listItem} and ${criterion.condition} and ${criterion.condition} #{criterion.value} and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} and ${criterion.condition} #{listItem} userID, userName, sex, birthYear, grade, collegeID delete from student where userID = #{userid,jdbcType=INTEGER} delete from student insert into student (userID, userName, sex, birthYear, grade, collegeID ) values (#{userid,jdbcType=INTEGER}, #{username,jdbcType=VARCHAR}, #{sex,jdbcType=VARCHAR}, #{birthyear,jdbcType=DATE}, #{grade,jdbcType=DATE}, #{collegeid,jdbcType=INTEGER} ) insert into student userID, userName, sex, birthYear, grade, collegeID, #{userid,jdbcType=INTEGER}, #{username,jdbcType=VARCHAR}, #{sex,jdbcType=VARCHAR}, #{birthyear,jdbcType=DATE}, #{grade,jdbcType=DATE}, #{collegeid,jdbcType=INTEGER}, update student userID = #{record.userid,jdbcType=INTEGER}, userName = #{record.username,jdbcType=VARCHAR}, sex = #{record.sex,jdbcType=VARCHAR}, birthYear = #{record.birthyear,jdbcType=DATE}, grade = #{record.grade,jdbcType=DATE}, collegeID = #{record.collegeid,jdbcType=INTEGER}, update student set userID = #{record.userid,jdbcType=INTEGER}, userName = #{record.username,jdbcType=VARCHAR}, sex = #{record.sex,jdbcType=VARCHAR}, birthYear = #{record.birthyear,jdbcType=DATE}, grade = #{record.grade,jdbcType=DATE}, collegeID = #{record.collegeid,jdbcType=INTEGER} update student userName = #{username,jdbcType=VARCHAR}, sex = #{sex,jdbcType=VARCHAR}, birthYear = #{birthyear,jdbcType=DATE}, grade = #{grade,jdbcType=DATE}, collegeID = #{collegeid,jdbcType=INTEGER}, where userID = #{userid,jdbcType=INTEGER} update student set userName = #{username,jdbcType=VARCHAR}, sex = #{sex,jdbcType=VARCHAR}, birthYear = #{birthyear,jdbcType=DATE}, grade = #{grade,jdbcType=DATE}, collegeID = #{collegeid,jdbcType=INTEGER} where userID = #{userid,jdbcType=INTEGER} ================================================ FILE: target/classes/com/system/mapper/StudentMapperCustom.xml ================================================ ================================================ FILE: target/classes/com/system/mapper/TeacherMapper.xml ================================================ and ${criterion.condition} and ${criterion.condition} #{criterion.value} and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} and ${criterion.condition} #{listItem} and ${criterion.condition} and ${criterion.condition} #{criterion.value} and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} and ${criterion.condition} #{listItem} userID, userName, sex, birthYear, degree, title, grade, collegeID delete from teacher where userID = #{userid,jdbcType=INTEGER} delete from teacher insert into teacher (userID, userName, sex, birthYear, degree, title, grade, collegeID) values (#{userid,jdbcType=INTEGER}, #{username,jdbcType=VARCHAR}, #{sex,jdbcType=VARCHAR}, #{birthyear,jdbcType=DATE}, #{degree,jdbcType=VARCHAR}, #{title,jdbcType=VARCHAR}, #{grade,jdbcType=DATE}, #{collegeid,jdbcType=INTEGER}) insert into teacher userID, userName, sex, birthYear, degree, title, grade, collegeID, #{userid,jdbcType=INTEGER}, #{username,jdbcType=VARCHAR}, #{sex,jdbcType=VARCHAR}, #{birthyear,jdbcType=DATE}, #{degree,jdbcType=VARCHAR}, #{title,jdbcType=VARCHAR}, #{grade,jdbcType=DATE}, #{collegeid,jdbcType=INTEGER}, update teacher userID = #{record.userid,jdbcType=INTEGER}, userName = #{record.username,jdbcType=VARCHAR}, sex = #{record.sex,jdbcType=VARCHAR}, birthYear = #{record.birthyear,jdbcType=DATE}, degree = #{record.degree,jdbcType=VARCHAR}, title = #{record.title,jdbcType=VARCHAR}, grade = #{record.grade,jdbcType=DATE}, collegeID = #{record.collegeid,jdbcType=INTEGER}, update teacher set userID = #{record.userid,jdbcType=INTEGER}, userName = #{record.username,jdbcType=VARCHAR}, sex = #{record.sex,jdbcType=VARCHAR}, birthYear = #{record.birthyear,jdbcType=DATE}, degree = #{record.degree,jdbcType=VARCHAR}, title = #{record.title,jdbcType=VARCHAR}, grade = #{record.grade,jdbcType=DATE}, collegeID = #{record.collegeid,jdbcType=INTEGER} update teacher userName = #{username,jdbcType=VARCHAR}, sex = #{sex,jdbcType=VARCHAR}, birthYear = #{birthyear,jdbcType=DATE}, degree = #{degree,jdbcType=VARCHAR}, title = #{title,jdbcType=VARCHAR}, grade = #{grade,jdbcType=DATE}, collegeID = #{collegeid,jdbcType=INTEGER}, where userID = #{userid,jdbcType=INTEGER} update teacher set userName = #{username,jdbcType=VARCHAR}, sex = #{sex,jdbcType=VARCHAR}, birthYear = #{birthyear,jdbcType=DATE}, degree = #{degree,jdbcType=VARCHAR}, title = #{title,jdbcType=VARCHAR}, grade = #{grade,jdbcType=DATE}, collegeID = #{collegeid,jdbcType=INTEGER} where userID = #{userid,jdbcType=INTEGER} ================================================ FILE: target/classes/com/system/mapper/TeacherMapperCustom.xml ================================================ ================================================ FILE: target/classes/com/system/mapper/UserloginMapper.xml ================================================ and ${criterion.condition} and ${criterion.condition} #{criterion.value} and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} and ${criterion.condition} #{listItem} and ${criterion.condition} and ${criterion.condition} #{criterion.value} and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} and ${criterion.condition} #{listItem} userID, userName, password, role delete from userlogin where userID = #{userid,jdbcType=INTEGER} delete from userlogin insert into userlogin (userID, userName, password, role) values (#{userid,jdbcType=INTEGER}, #{username,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}, #{role,jdbcType=INTEGER}) insert into userlogin userID, userName, password, role, #{userid,jdbcType=INTEGER}, #{username,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}, #{role,jdbcType=INTEGER}, update userlogin userID = #{record.userid,jdbcType=INTEGER}, userName = #{record.username,jdbcType=VARCHAR}, password = #{record.password,jdbcType=VARCHAR}, role = #{record.role,jdbcType=INTEGER}, update userlogin set userID = #{record.userid,jdbcType=INTEGER}, userName = #{record.username,jdbcType=VARCHAR}, password = #{record.password,jdbcType=VARCHAR}, role = #{record.role,jdbcType=INTEGER} update userlogin userName = #{username,jdbcType=VARCHAR}, password = #{password,jdbcType=VARCHAR}, role = #{role,jdbcType=INTEGER}, where userID = #{userid,jdbcType=INTEGER} update userlogin set userName = #{username,jdbcType=VARCHAR}, password = #{password,jdbcType=VARCHAR}, role = #{role,jdbcType=INTEGER} where userID = #{userid,jdbcType=INTEGER} ================================================ FILE: target/classes/com/system/mapper/UserloginMapperCustom.xml ================================================ ================================================ FILE: target/classes/log4j.properties ================================================ ### direct log messages to stdout ### log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.err log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n ### direct messages to file mylog.log ### log4j.appender.file=org.apache.log4j.FileAppender log4j.appender.file.File=c:\mylog.log log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n ### set log levels - for more verbose logging change 'info' to 'debug' ### log4j.rootLogger=info, stdout ================================================ FILE: target/classes/mybatis/mybatis.cfg.xml ================================================ ================================================ FILE: target/classes/mysql.properties ================================================ jdbc.driver = com.mysql.jdbc.Driver jdbc.url = jdbc:mysql://localhost:3306/examination_system jdbc.username = root jdbc.password = root ================================================ FILE: target/classes/spring/applicationContext-dao.xml ================================================ ================================================ FILE: target/classes/spring/applicationContext-service.xml ================================================ ================================================ FILE: target/classes/spring/applicationContext-shiro.xml ================================================ #这里相当于ini配置文件中的[urls] #url=拦截器[参数],拦截器 # /techer/** = authc, perms[document:read] # 如果用户没有该角色,然后访问该 路径 会报 401错误 /admin/** = authc, roles[admin] /techer/** = authc, roles[teacher] /student/** = authc, roles[student] # 当访问login时,不用进行认证(anon表示匿名) /login = anon /logout = logout # 配置静态资源可以匿名访问 /css/** = anon /js/** = anon /images/** = anon /fonts/** = anon # 除了上面额 /login 可以匿名访问,其他路径都需要登录访问 # 如果没登录,就访问其他路径会跳转到 /login 登录 /** = authc ================================================ FILE: target/classes/spring/applicationContext-trsaction.xml ================================================ ================================================ FILE: target/classes/spring/springmvc.xml ================================================ ================================================ FILE: target/m2e-wtp/web-resources/META-INF/MANIFEST.MF ================================================ Manifest-Version: 1.0 Built-By: Administrator Build-Jdk: 1.8.0_77 Created-By: Maven Integration for Eclipse ================================================ FILE: target/m2e-wtp/web-resources/META-INF/maven/com.jacey/Examination_System/pom.properties ================================================ #Generated by Maven Integration for Eclipse #Mon Mar 19 17:05:22 CST 2018 version=1.0-SNAPSHOT groupId=com.jacey m2e.projectName=Examination_System m2e.projectLocation=F\:\\Web\u9879\u76EE_\u5B9E\u6218+\u6A21\u677F\\\u5DF2\u5B8C\u6210\u9879\u76EE\\26ssm\u5B66\u6821\u6559\u52A1\u67E5\u8BE2\u7CFB\u7EDF\\eclipse\u6D4B\u8BD5\\eclipse\\Examination_System\\Examination_System artifactId=Examination_System ================================================ FILE: target/m2e-wtp/web-resources/META-INF/maven/com.jacey/Examination_System/pom.xml ================================================ 4.0.0 com.jacey Examination_System war 1.0-SNAPSHOT Examination_System Maven Webapp http://maven.apache.org junit junit 4.12 test javax.servlet javax.servlet-api 3.1.0 provided javax.servlet jsp-api 2.0 provided org.apache.shiro shiro-core 1.2.3 org.apache.shiro shiro-web 1.2.3 org.apache.shiro shiro-spring 1.2.3 org.springframework spring-context 4.3.8.RELEASE org.springframework spring-web 4.3.8.RELEASE org.springframework spring-webmvc 4.3.7.RELEASE org.springframework spring-tx 4.3.8.RELEASE org.springframework spring-aop 4.3.9.RELEASE org.aspectj aspectjweaver 1.8.10 org.springframework spring-jdbc 4.2.5.RELEASE javax.servlet jstl 1.2 log4j log4j 1.2.17 org.mybatis mybatis 3.4.1 org.mybatis.generator mybatis-generator-core 1.3.5 org.mybatis mybatis-spring 1.3.0 org.hibernate hibernate-validator 5.4.1.Final com.mchange c3p0 0.9.5.2 mysql mysql-connector-java 5.1.41 org.jetbrains annotations-java5 RELEASE Examination_System org.apache.maven.plugins maven-compiler-plugin 3.1 1.8 1.8