Browse Source

Merge branch 'dev' of chenweida/jw2.0 into dev

chenweida 8 years ago
parent
commit
bdcabc3777
100 changed files with 15563 additions and 290 deletions
  1. 4 0
      common/common-rest-model/pom.xml
  2. 22 3
      common/common-rest-model/src/main/java/com/yihu/jw/restmodel/common/EnvelopRestController.java
  3. 26 0
      common/common-rest-model/src/main/java/com/yihu/jw/restmodel/exception/ManageException.java
  4. 144 0
      common/common-rest-model/src/main/java/com/yihu/jw/restmodel/manage/system/ManageUserVO.java
  5. 5 1
      common/common-swagger/src/main/java/com/yihu/jw/config/SwaggerConfig.java
  6. 64 0
      common/common-util/src/main/java/com/yihu/jw/util/security/MD5.java
  7. 0 100
      manage-gateway/pom.xml
  8. 0 18
      manage-gateway/readme.MD
  9. 0 27
      manage-gateway/src/main/java/com/yihu/jw/manage/SvrManageAppliction.java
  10. 0 26
      manage-gateway/src/main/java/com/yihu/jw/manage/config/MvcConfig.java
  11. 0 57
      manage-gateway/src/main/resources/application.yml
  12. 0 8
      manage-gateway/src/main/resources/banner.txt
  13. 0 46
      manage-gateway/src/main/resources/bootstrap.yml
  14. 6 2
      svr-lib-parent-pom/pom.xml
  15. 8 0
      svr/svr-base/src/main/java/com/yihu/jw/base/model/Function.java
  16. 6 0
      svr/svr-base/src/main/java/com/yihu/jw/wx/service/WxAccessTokenService.java
  17. 7 2
      svr/svr-base/src/main/java/com/yihu/jw/wx/service/WxMenuService.java
  18. 7 0
      svr/svr-base/src/main/java/com/yihu/jw/wx/service/WxTemplateService.java
  19. 121 0
      svr/svr-manage/pom.xml
  20. 4 0
      svr/svr-manage/readme.MD
  21. 15 0
      svr/svr-manage/src/main/java/com/yihu/jw/manage/SvrMamageApp.java
  22. 27 0
      svr/svr-manage/src/main/java/com/yihu/jw/manage/cache/login/LoginCache.java
  23. 45 0
      svr/svr-manage/src/main/java/com/yihu/jw/manage/config/MvcConfig.java
  24. 60 0
      svr/svr-manage/src/main/java/com/yihu/jw/manage/controller/login/LoginController.java
  25. 10 0
      svr/svr-manage/src/main/java/com/yihu/jw/manage/controller/system/MenuController.java
  26. 10 0
      svr/svr-manage/src/main/java/com/yihu/jw/manage/controller/system/RoleController.java
  27. 12 0
      svr/svr-manage/src/main/java/com/yihu/jw/manage/dao/login/ManageLoginLogDao.java
  28. 11 0
      svr/svr-manage/src/main/java/com/yihu/jw/manage/dao/system/MenuDao.java
  29. 11 0
      svr/svr-manage/src/main/java/com/yihu/jw/manage/dao/system/RoleDao.java
  30. 11 0
      svr/svr-manage/src/main/java/com/yihu/jw/manage/dao/system/RoleMenuDao.java
  31. 18 0
      svr/svr-manage/src/main/java/com/yihu/jw/manage/dao/system/UserDao.java
  32. 12 0
      svr/svr-manage/src/main/java/com/yihu/jw/manage/dao/system/UserRoleDao.java
  33. 70 0
      svr/svr-manage/src/main/java/com/yihu/jw/manage/interceptors/UserInterceptor.java
  34. 38 0
      svr/svr-manage/src/main/java/com/yihu/jw/manage/model/IdEntity.java
  35. 110 0
      svr/svr-manage/src/main/java/com/yihu/jw/manage/model/login/ManageLoginLog.java
  36. 173 0
      svr/svr-manage/src/main/java/com/yihu/jw/manage/model/system/ManageMenu.java
  37. 151 0
      svr/svr-manage/src/main/java/com/yihu/jw/manage/model/system/ManageRole.java
  38. 56 0
      svr/svr-manage/src/main/java/com/yihu/jw/manage/model/system/ManageRoleMenu.java
  39. 193 0
      svr/svr-manage/src/main/java/com/yihu/jw/manage/model/system/ManageUser.java
  40. 46 0
      svr/svr-manage/src/main/java/com/yihu/jw/manage/model/system/ManageUserRole.java
  41. 32 0
      svr/svr-manage/src/main/java/com/yihu/jw/manage/model/system/MenuItems.java
  42. 106 0
      svr/svr-manage/src/main/java/com/yihu/jw/manage/service/login/LoginService.java
  43. 59 0
      svr/svr-manage/src/main/java/com/yihu/jw/manage/service/system/MenuService.java
  44. 30 0
      svr/svr-manage/src/main/java/com/yihu/jw/manage/service/system/RoleService.java
  45. 26 0
      svr/svr-manage/src/main/java/com/yihu/jw/manage/service/system/UserService.java
  46. 39 0
      svr/svr-manage/src/main/resources/application.yml
  47. 8 0
      svr/svr-manage/src/main/resources/banner.txt
  48. 12 0
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/animate.min.css
  49. 5 0
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/bootstrap.min.css
  50. 358 0
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/demo/webuploader-demo.css
  51. 5 0
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/font-awesome.min.css
  52. BIN
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/patterns/header-profile-skin-1.png
  53. BIN
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/patterns/header-profile-skin-3.png
  54. BIN
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/patterns/header-profile.png
  55. BIN
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/patterns/shattered.png
  56. 251 0
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css
  57. 1 0
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/blueimp/css/blueimp-gallery.min.css
  58. BIN
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/chosen/chosen-sprite.png
  59. 423 0
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/chosen/chosen.css
  60. 168 0
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/clockpicker/clockpicker.css
  61. 77 0
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/codemirror/ambiance.css
  62. 309 0
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/codemirror/codemirror.css
  63. 9 0
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/colorpicker/css/bootstrap-colorpicker.min.css
  64. BIN
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/colorpicker/img/bootstrap-colorpicker/alpha.png
  65. BIN
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/colorpicker/img/bootstrap-colorpicker/hue.png
  66. BIN
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/colorpicker/img/bootstrap-colorpicker/saturation.png
  67. 9 0
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/cropper/cropper.min.css
  68. 231 0
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/dataTables/dataTables.bootstrap.css
  69. 789 0
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/datapicker/datepicker3.css
  70. 155 0
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/dropzone/basic.css
  71. 410 0
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/dropzone/dropzone.css
  72. BIN
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/footable/fonts/footable.woff
  73. 178 0
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/footable/footable.core.css
  74. 589 0
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/fullcalendar/fullcalendar.css
  75. 32 0
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/fullcalendar/fullcalendar.print.css
  76. 59 0
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/iCheck/custom.css
  77. BIN
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/iCheck/green.png
  78. BIN
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/images/sort_asc.png
  79. BIN
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/images/sprite-skin-flat.png
  80. BIN
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/images/spritemap.png
  81. 126 0
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/ionRangeSlider/ion.rangeSlider.css
  82. 89 0
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/ionRangeSlider/ion.rangeSlider.skinFlat.css
  83. 7 0
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/jasny/jasny-bootstrap.min.css
  84. 851 0
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/jqgrid/ui.jqgrid.css_0820
  85. BIN
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/jsTree/32px.png
  86. 1 0
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/jsTree/style.min.css
  87. BIN
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/jsTree/throbber.gif
  88. 1 0
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/markdown/bootstrap-markdown.min.css
  89. 2 0
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/morris/morris-0.4.3.min.css
  90. 165 0
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/nouslider/jquery.nouislider.css
  91. 620 0
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/simditor/simditor.css
  92. 380 0
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/steps/jquery.steps.css
  93. 5970 0
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/summernote/summernote-bs3.css
  94. 446 0
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/summernote/summernote.css
  95. 715 0
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/sweetalert/sweetalert.css
  96. 32 0
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/switchery/switchery.css
  97. 222 0
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/toastr/toastr.min.css
  98. 35 0
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/treeview/bootstrap-treeview.css
  99. 28 0
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/webuploader/webuploader.css
  100. 0 0
      svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/style.min.css

+ 4 - 0
common/common-rest-model/pom.xml

@ -19,6 +19,10 @@
            <groupId>com.yihu.jw</groupId>
            <groupId>com.yihu.jw</groupId>
            <artifactId>common-util</artifactId>
            <artifactId>common-util</artifactId>
        </dependency>
        </dependency>
        <dependency>
            <groupId>com.yihu.jw</groupId>
            <artifactId>common-log</artifactId>
        </dependency>
        <dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <artifactId>jackson-annotations</artifactId>

+ 22 - 3
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/common/EnvelopRestController.java

@ -4,7 +4,11 @@ package com.yihu.jw.restmodel.common;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.jw.restmodel.exception.ApiException;
import com.yihu.jw.restmodel.exception.ApiException;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.util.date.DateUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.util.StringUtils;
import org.springframework.util.StringUtils;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequest;
@ -27,9 +31,20 @@ import java.util.*;
 * @author Sand
 * @author Sand
 */
 */
public class EnvelopRestController {
public class EnvelopRestController {
    private Logger logger = LoggerFactory.getLogger(EnvelopRestController.class);
    @Value("${spring.profiles}")
    private String profile;
    protected final static String ResourceCount = "X-Total-Count";
    protected final static String ResourceCount = "X-Total-Count";
    protected final static String ResourceLink = "Link";
    protected final static String ResourceLink = "Link";
    protected void error(Exception e) {
        logger.error(e.getMessage());
        if (!"prod".equals(profile)) {
            e.printStackTrace();
        }
    }
    /**
    /**
     * 返回一个信封对象。信封对象的返回场景参见 Envelop.
     * 返回一个信封对象。信封对象的返回场景参见 Envelop.
     *
     *
@ -45,15 +60,16 @@ public class EnvelopRestController {
        return envelop;
        return envelop;
    }
    }
    //Json转实体类
    //Json转实体类
    public <T> T toEntity(String json, Class<T> entityCls) {
    public <T> T toEntity(String json, Class<T> entityCls) {
        try {
        try {
            ObjectMapper objectMapper=new ObjectMapper();
            ObjectMapper objectMapper = new ObjectMapper();
            objectMapper.setDateFormat(new SimpleDateFormat(DateUtil.yyyy_MM_dd_HH_mm_ss));
            objectMapper.setDateFormat(new SimpleDateFormat(DateUtil.yyyy_MM_dd_HH_mm_ss));
            T entity = objectMapper.readValue(json, entityCls);
            T entity = objectMapper.readValue(json, entityCls);
            return entity;
            return entity;
        } catch (IOException ex) {
        } catch (IOException ex) {
            throw new ApiException( "Unable to parse json, " + ex.getMessage(),CommonContants.common_error_params_code);
            throw new ApiException("Unable to parse json, " + ex.getMessage(), CommonContants.common_error_params_code);
        }
        }
    }
    }
@ -64,7 +80,7 @@ public class EnvelopRestController {
     * @param sources
     * @param sources
     * @param targets
     * @param targets
     * @param targetCls
     * @param targetCls
     *@param properties  @return
     * @param properties @return
     */
     */
    public <T> List<T> convertToModels(Collection sources, List<T> targets, Class<T> targetCls, String properties) {
    public <T> List<T> convertToModels(Collection sources, List<T> targets, Class<T> targetCls, String properties) {
        if (sources == null) {
        if (sources == null) {
@ -81,6 +97,7 @@ public class EnvelopRestController {
        return targets;
        return targets;
    }
    }
    /**
    /**
     * 计算不在类中的属性。
     * 计算不在类中的属性。
     *
     *
@ -102,6 +119,7 @@ public class EnvelopRestController {
        return arrayList.toArray(new String[arrayList.size()]);
        return arrayList.toArray(new String[arrayList.size()]);
    }
    }
    /**
    /**
     * 客户端调用REST接口时,若返回的是分页结果,则需要在响应头中添加资源的总数量及其他资源的分页导航。
     * 客户端调用REST接口时,若返回的是分页结果,则需要在响应头中添加资源的总数量及其他资源的分页导航。
     * EHR平台使用响应头中的 X-Total-Count 字段记录资源的总数量,link header作为其他资源的分页导航。
     * EHR平台使用响应头中的 X-Total-Count 字段记录资源的总数量,link header作为其他资源的分页导航。
@ -139,6 +157,7 @@ public class EnvelopRestController {
        response.setHeader(ResourceLink, linkMap(map));
        response.setHeader(ResourceLink, linkMap(map));
    }
    }
    private String linkMap(Map<String, String> map) {
    private String linkMap(Map<String, String> map) {
        StringBuffer links = new StringBuffer("");
        StringBuffer links = new StringBuffer("");
        for (String key : map.keySet()) {
        for (String key : map.keySet()) {

+ 26 - 0
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/exception/ManageException.java

@ -0,0 +1,26 @@
package com.yihu.jw.restmodel.exception;
/**
 * Created by chenweida on 2017/6/9.
 * 基卫自己的错误异常
 */
public class ManageException extends Exception{
    public ManageException() {
    }
    public ManageException(String message) {
        super(message);
    }
    public ManageException(String message, Throwable cause) {
        super(message, cause);
    }
    public ManageException(Throwable cause) {
        super(cause);
    }
    public ManageException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
        super(message, cause, enableSuppression, writableStackTrace);
    }
}

+ 144 - 0
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/manage/system/ManageUserVO.java

@ -0,0 +1,144 @@
package com.yihu.jw.restmodel.manage.system;
import java.util.Date;
/**
 * Created by chenweida on 2017/6/9.
 */
public class ManageUserVO {
    private Integer id;
    private String code;
    private String name;
    private String password;//密码  密码是 密码+salt MD5加密
    private String salt;//盐值
    private String loginAccount;//登陆的账号
    private String mobile;
    private Integer status;
    private Date createTime;
    private String createUser;
    private String createUserName;
    private Date updateTime;
    private String updateUser;
    private String updateUserName;
    private String remark;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getSalt() {
        return salt;
    }
    public void setSalt(String salt) {
        this.salt = salt;
    }
    public String getLoginAccount() {
        return loginAccount;
    }
    public void setLoginAccount(String loginAccount) {
        this.loginAccount = loginAccount;
    }
    public String getMobile() {
        return mobile;
    }
    public void setMobile(String mobile) {
        this.mobile = mobile;
    }
    public Integer getStatus() {
        return status;
    }
    public void setStatus(Integer status) {
        this.status = status;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public String getCreateUser() {
        return createUser;
    }
    public void setCreateUser(String createUser) {
        this.createUser = createUser;
    }
    public String getCreateUserName() {
        return createUserName;
    }
    public void setCreateUserName(String createUserName) {
        this.createUserName = createUserName;
    }
    public Date getUpdateTime() {
        return updateTime;
    }
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }
    public String getUpdateUser() {
        return updateUser;
    }
    public void setUpdateUser(String updateUser) {
        this.updateUser = updateUser;
    }
    public String getUpdateUserName() {
        return updateUserName;
    }
    public void setUpdateUserName(String updateUserName) {
        this.updateUserName = updateUserName;
    }
    public String getRemark() {
        return remark;
    }
    public void setRemark(String remark) {
        this.remark = remark;
    }
}

+ 5 - 1
common/common-swagger/src/main/java/com/yihu/jw/config/SwaggerConfig.java

@ -103,7 +103,11 @@ public class SwaggerConfig {
                         regex("/"+ BaseContants.Function.api_common+"/.*")
                         regex("/"+ BaseContants.Function.api_common+"/.*")
                        ,regex("/"+ BaseContants.Saas.api_common+"/.*")
                        ,regex("/"+ BaseContants.Saas.api_common+"/.*")
                        ,regex("/"+ BaseContants.Module.api_common+"/.*")
                        ,regex("/"+ BaseContants.Module.api_common+"/.*")
                        ,regex("/"+ WxContants.Wechat.api_common+"/.*")
                        ,regex("/"+ WxContants.WxTemplate.api_common+"/.*")
                        ,regex("/"+ WxContants.WxGraphicMessage.api_common+"/.*")
                        ,regex("/"+ WxContants.WxMenu.api_common+"/.*")
                        ,regex("/"+ WxContants.WxAccessToken.api_common+"/.*")
                ))
                ))
                .build()
                .build()
                .apiInfo(jwBaseApiInfo());
                .apiInfo(jwBaseApiInfo());

+ 64 - 0
common/common-util/src/main/java/com/yihu/jw/util/security/MD5.java

@ -0,0 +1,64 @@
package com.yihu.jw.util.security;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/*
 * MD5 算法
 */
public class MD5 {
	// 全局数组
	private final static String[] strDigits = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };
	public MD5() {
	}
	// 返回形式为数字跟字符串
	private static String byteToArrayString(byte bByte) {
		int iRet = bByte;
		// System.out.println("iRet="+iRet);
		if (iRet < 0) {
			iRet += 256;
		}
		int iD1 = iRet / 16;
		int iD2 = iRet % 16;
		return strDigits[iD1] + strDigits[iD2];
	}
	// 返回形式只为数字
//	private static String byteToNum(byte bByte) {
//		int iRet = bByte;
//		System.out.println("iRet1=" + iRet);
//		if (iRet < 0) {
//			iRet += 256;
//		}
//		return String.valueOf(iRet);
//	}
	// 转换字节数组为16进制字串
	private static String byteToString(byte[] bByte) {
		StringBuffer sBuffer = new StringBuffer();
		for (int i = 0; i < bByte.length; i++) {
			sBuffer.append(byteToArrayString(bByte[i]));
		}
		return sBuffer.toString();
	}
	public static String GetMD5Code(String strObj) {
		String resultString = null;
		try {
			resultString = new String(strObj);
			MessageDigest md = MessageDigest.getInstance("MD5");
			// md.digest() 该函数返回值为存放哈希值结果的byte数组
			resultString = byteToString(md.digest(strObj.getBytes()));
		} catch (NoSuchAlgorithmException ex) {
			ex.printStackTrace();
		}
		return resultString;
	}
	public static void main(String[] args) {
		System.out.println(GetMD5Code("123456123456"));
	}
}

+ 0 - 100
manage-gateway/pom.xml

@ -1,100 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>com.yihu.jw</groupId>
    <artifactId>svr-lib-parent-pom</artifactId>
    <version>1.0.0</version>
    <relativePath>../svr-lib-parent-pom/pom.xml</relativePath>
  </parent>
  <artifactId>manage-gateway</artifactId>
  <packaging>jar</packaging>
  <version>1.0.0</version>
  <dependencies>
    <dependency>
      <groupId>com.yihu.jw</groupId>
      <artifactId>common-swagger</artifactId>
    </dependency>
    <dependency>
      <groupId>com.yihu.jw</groupId>
      <artifactId>common-rest-model</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-tomcat</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-aop</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-eureka</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-config</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-feign</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-hystrix</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-zuul</artifactId>
    </dependency>
    <!--zipkin支持分布式追踪系统-->
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-sleuth</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-sleuth-zipkin</artifactId>
    </dependency>
    <!--<dependency>-->
    <!--<groupId>org.springframework.cloud</groupId>-->
    <!--<artifactId>spring-cloud-starter-bus-kafka</artifactId>-->
    <!--</dependency>-->
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-annotations</artifactId>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
    </dependency>
  </dependencies>
</project>

+ 0 - 18
manage-gateway/readme.MD

@ -1,18 +0,0 @@
此项目是后台管理系统的的网关项目
    网关调用微服务利用fegin(spring-cloud-starter-feign)
    
查看服务健康需要添加以下支持
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
    
    localhost:8088/health
    
刷新配置
在有需要刷新配置的地方的类加上注解
    @RefreshScope
    访问以下路径刷新配置
    curl -X POST http://localhost:8088/refresh

+ 0 - 27
manage-gateway/src/main/java/com/yihu/jw/manage/SvrManageAppliction.java

@ -1,27 +0,0 @@
package com.yihu.jw.manage;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.feign.EnableFeignClients;
import org.springframework.cloud.netflix.hystrix.EnableHystrix;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
/**
 * Created by chenweida on 2017/5/31.
 */
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class})
//@SpringBootApplication
@EnableDiscoveryClient//服务注册到发现服务
@EnableHystrix //启动断路器
@EnableZuulProxy //启动zuul代理 路由
@EnableFeignClients //声名式的客户端
@EnableCircuitBreaker
public class SvrManageAppliction {
    public static void main(String[] args) {
        SpringApplication.run(SvrManageAppliction.class, args);
    }
}

+ 0 - 26
manage-gateway/src/main/java/com/yihu/jw/manage/config/MvcConfig.java

@ -1,26 +0,0 @@
package com.yihu.jw.manage.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
/**
 * Created by chenweida on 2017/5/31.
 */
@Configuration
public class MvcConfig extends WebMvcConfigurerAdapter {
    /**
     * 支持跨域问题
     * 资料:http://blog.csdn.net/dalangzhonghangxing/article/details/51994812
     * @param registry
     */
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("*")
                .allowCredentials(true)
                .allowedMethods("GET", "POST", "DELETE", "PUT")
                .maxAge(3600);
    }
}

+ 0 - 57
manage-gateway/src/main/resources/application.yml

@ -1,57 +0,0 @@
##如果有配置服务的话,远程服务器和本地服务器配置不一致的情况下,优先远程的为主
spring:
  application:
    name:  manage-gateway  ##注册到发现服务的id 如果id一样 eurika会自动做负载
##开启feign断路器
feign:
  hystrix:
    enabled: true
management:
  security:
    enabled: false  ##关闭 refresh的权限认证
#zuul 默认会代理所有的微服务  路径 /{appliction.name}/**
zuul:
  ignored-services: '*'  ##忽略全部的代理  忽略单个微服务   ignored-services: svr-base 多个逗号分割
  routes:
    svr-base: /base/**  ##svr-base方向代理到/base下多层级的路径
#    svr-base:    这种方式和  svr-base: /base/**  一样  svr-base可以随便写 唯一即可
#      path: /base/**  path是代理后的路径
#      serviceId: svr-base  serviceId是微服务name
#   svr-base: 这种方式和 上面一样 就是serviceId改成具体的url 但是这种配置方法不能利用eurika的负载均衡
#     path: /base/**
#     url: http://localhost:10020/
#svr-base: 这边是微服务ID  配置负载均衡
#  ribbon:
#    listOfService: http://localhost:10020/,http://localhost:10021/
---
spring:
  profiles: jwdev
#  cloud:
#    stream:
#      kafka:
#        binder:
#          brokers: 172.17.110.201
#          defaultBrokerPort: 9092
#          zkNodes: 172.17.110.201
#          defaultZkPort: 2181
#          replicationFactor: 1
---
spring:
  profiles: jwtest
---
spring:
  profiles: jwprod

+ 0 - 8
manage-gateway/src/main/resources/banner.txt

@ -1,8 +0,0 @@
 __  __                                         _____       _
 |  \/  |                                       / ____|     | |
 | \  / | __ _ _ __   __ _  __ _  ___          | |  __  __ _| |_ _____      ____ _ _   _
 | |\/| |/ _` | '_ \ / _` |/ _` |/ _ \         | | |_ |/ _` | __/ _ \ \ /\ / / _` | | | |
 | |  | | (_| | | | | (_| | (_| |  __/         | |__| | (_| | ||  __/\ V  V / (_| | |_| |
 |_|  |_|\__,_|_| |_|\__,_|\__, |\___|          \_____|\__,_|\__\___| \_/\_/ \__,_|\__, |
                            __/ |                                                   __/ |
                           |___/                                                   |___/

+ 0 - 46
manage-gateway/src/main/resources/bootstrap.yml

@ -1,46 +0,0 @@
##优先读取 boostarap配置 然后在读取application。yml的配置
spring:
  #从发现服务里面取配置服务的信息
  cloud:
    config:
      failFast: false ##启动快速失败 即链接不到配置服务就启动失败
      username: jw
      password: jkzl
      discovery:
        enabled: true ##使用发现服务
        service-id: svr-configurations ##配置服务的名字
---
spring:
  profiles: jwdev
eureka:
  client:
    serviceUrl:
      #http://账号:密码@127.0.0.1:8761/eureka/
      defaultZone: http://jw:jkzl@127.0.0.1:8761/eureka/
---
spring:
  profiles: jwtest
eureka:
  client:
    serviceUrl:
      #http://账号:密码@127.0.0.1:8761/eureka/
      defaultZone: http://jw:jkzl@127.0.0.1:8761/eureka/
---
spring:
  profiles: jwprod
eureka:
  client:
    serviceUrl:
      #http://账号:密码@127.0.0.1:8761/eureka/
      defaultZone: http://jw:jkzl@127.0.0.1:8761/eureka/

+ 6 - 2
svr-lib-parent-pom/pom.xml

@ -42,11 +42,10 @@
        <module>../svr/svr-base</module><!--基础微服务-->
        <module>../svr/svr-base</module><!--基础微服务-->
        <module>../svr/svr-quota</module><!--统计微服务-->
        <module>../svr/svr-quota</module><!--统计微服务-->
        <module>../svr/svr-wlyy</module><!--i健康微服务-->
        <module>../svr/svr-wlyy</module><!--i健康微服务-->
        <module>../svr/svr-manage</module><!--基卫后台管理系统-->
        <!--网关-->
        <!--网关-->
        <module>../web-gateway</module><!--web网关-->
        <module>../web-gateway</module><!--web网关-->
        <module>../manage-gateway</module><!--后台管理系统网关-->
    </modules>
    </modules>
    <properties>
    <properties>
@ -361,6 +360,11 @@
                <artifactId>jackson-core</artifactId>
                <artifactId>jackson-core</artifactId>
                <version>${version.jackson}</version>
                <version>${version.jackson}</version>
            </dependency>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.module</groupId>
                <artifactId>jackson-module-jaxb-annotations</artifactId>
                <version>${version.jackson}</version>
            </dependency>
            <dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <artifactId>jackson-databind</artifactId>

+ 8 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/model/Function.java

@ -20,6 +20,7 @@ public class Function extends IdEntity implements java.io.Serializable {
	private String saasId; // saasid
	private String saasId; // saasid
	private String parentCode; //父功能code
	private String parentCode; //父功能code
	private Integer status; //状态 -1 删除 0 禁用 可用
	private Integer status; //状态 -1 删除 0 禁用 可用
	private String url;//功能对应的后台url路径
	private String createUser;
	private String createUser;
	private String createUserName;
	private String createUserName;
	private Date createTime;
	private Date createTime;
@ -176,4 +177,11 @@ public class Function extends IdEntity implements java.io.Serializable {
		this.remark = remark;
		this.remark = remark;
	}
	}
	public String getUrl() {
		return url;
	}
	public void setUrl(String url) {
		this.url = url;
	}
}
}

+ 6 - 0
svr/svr-base/src/main/java/com/yihu/jw/wx/service/WxAccessTokenService.java

@ -10,6 +10,8 @@ import com.yihu.jw.wx.dao.WxAccessTokenDao;
import com.yihu.jw.wx.model.WxAccessToken;
import com.yihu.jw.wx.model.WxAccessToken;
import com.yihu.jw.wx.model.WxWechat;
import com.yihu.jw.wx.model.WxWechat;
import org.json.JSONObject;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import org.springframework.util.StringUtils;
@ -24,6 +26,9 @@ import java.util.UUID;
@Service
@Service
public class WxAccessTokenService extends BaseJpaService<WxAccessToken, WxAccessTokenDao> {
public class WxAccessTokenService extends BaseJpaService<WxAccessToken, WxAccessTokenDao> {
    private Logger logger= LoggerFactory.getLogger(WxAccessTokenService.class);
    @Autowired
    @Autowired
    private WxAccessTokenDao wxAccessTokenDao;
    private WxAccessTokenDao wxAccessTokenDao;
@ -66,6 +71,7 @@ public class WxAccessTokenService extends BaseJpaService<WxAccessToken, WxAccess
            }
            }
            String params = "grant_type=client_credential&appid=" + appId + "&secret=" + appSecret;
            String params = "grant_type=client_credential&appid=" + appId + "&secret=" + appSecret;
            String result = HttpUtil.sendGet(token_url, params);
            String result = HttpUtil.sendGet(token_url, params);
            logger.info("--------------微信返回结果:"+result+"---------------");
            JSONObject json = new JSONObject(result);
            JSONObject json = new JSONObject(result);
            if (json.has("access_token")) {
            if (json.has("access_token")) {
                String token = json.get("access_token").toString();
                String token = json.get("access_token").toString();

+ 7 - 2
svr/svr-base/src/main/java/com/yihu/jw/wx/service/WxMenuService.java

@ -10,6 +10,8 @@ import com.yihu.jw.wx.model.WxAccessToken;
import com.yihu.jw.wx.model.WxMenu;
import com.yihu.jw.wx.model.WxMenu;
import com.yihu.jw.wx.model.WxWechat;
import com.yihu.jw.wx.model.WxWechat;
import org.json.JSONObject;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import org.springframework.util.StringUtils;
@ -25,6 +27,8 @@ import java.util.List;
@Service
@Service
public class WxMenuService extends BaseJpaService<WxMenu, WxMenuDao> {
public class WxMenuService extends BaseJpaService<WxMenu, WxMenuDao> {
    private Logger logger= LoggerFactory.getLogger(WxMenuService.class);
    @Autowired
    @Autowired
    private WxMenuDao wxMenuDao;
    private WxMenuDao wxMenuDao;
@ -35,7 +39,7 @@ public class WxMenuService extends BaseJpaService<WxMenu, WxMenuDao> {
    private WxAccessTokenService wxAccessTokenService;
    private WxAccessTokenService wxAccessTokenService;
    /**
    /**
     * 将菜单保存至数据库(微信未创建)
     * 将菜单保存至数据库
     * @param wxMenu
     * @param wxMenu
     * @return
     * @return
     */
     */
@ -120,18 +124,19 @@ public class WxMenuService extends BaseJpaService<WxMenu, WxMenuDao> {
        if(wechat==null){
        if(wechat==null){
            throw new ApiException(WxContants.Wechat.message_fail_wxWechat_is_no_exist, CommonContants.common_error_params_code);
            throw new ApiException(WxContants.Wechat.message_fail_wxWechat_is_no_exist, CommonContants.common_error_params_code);
        }
        }
        //首先根据wechatCode获取菜单,然后封装成json字符串
        //首先根据wechatCode获取菜单,然后封装成json字符串
        List<WxMenu> menus = wxMenuDao.findByWechatCode(wechatCode);
        List<WxMenu> menus = wxMenuDao.findByWechatCode(wechatCode);
        if(menus==null){
        if(menus==null){
            throw new ApiException(WxContants.WxMenu.message_fail_WxMenu_is_no_exist, CommonContants.common_error_params_code);
            throw new ApiException(WxContants.WxMenu.message_fail_WxMenu_is_no_exist, CommonContants.common_error_params_code);
        }
        }
        String menuJsonString = getMenuToString(menus, wechatCode);
        String menuJsonString = getMenuToString(menus, wechatCode);
        logger.info("-----------------微信菜单json字符串:"+ menuJsonString+"--------------------");
        WxAccessToken wxAccessTokenByCode = wxAccessTokenService.getWxAccessTokenByCode(wechatCode);
        WxAccessToken wxAccessTokenByCode = wxAccessTokenService.getWxAccessTokenByCode(wechatCode);
        String token = wxAccessTokenByCode.getAccessToken();
        String token = wxAccessTokenByCode.getAccessToken();
        // 请求微信接口创建菜单
        // 请求微信接口创建菜单
        String url = " https://api.weixin.qq.com/cgi-bin/menu/create?access_token=" + token;
        String url = " https://api.weixin.qq.com/cgi-bin/menu/create?access_token=" + token;
        String jsonStr = HttpUtil.sendPost(url, menuJsonString);
        String jsonStr = HttpUtil.sendPost(url, menuJsonString);
        logger.info("------------------创建微信菜单,微信返回结果:"+jsonStr+"---------------------");
        JSONObject result = new JSONObject(jsonStr);
        JSONObject result = new JSONObject(jsonStr);
        return result;
        return result;
    }
    }

+ 7 - 0
svr/svr-base/src/main/java/com/yihu/jw/wx/service/WxTemplateService.java

@ -10,6 +10,8 @@ import com.yihu.jw.util.HttpUtil;
import com.yihu.jw.wx.dao.WxTemplateDao;
import com.yihu.jw.wx.dao.WxTemplateDao;
import com.yihu.jw.wx.model.*;
import com.yihu.jw.wx.model.*;
import org.json.JSONObject;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import org.springframework.util.StringUtils;
@ -22,6 +24,8 @@ import java.util.*;
@Service
@Service
public class WxTemplateService extends BaseJpaService<WxTemplate, WxTemplateDao> {
public class WxTemplateService extends BaseJpaService<WxTemplate, WxTemplateDao> {
    private Logger logger= LoggerFactory.getLogger(WxTemplateService.class);
    @Autowired
    @Autowired
    private WxTemplateDao wxTemplateDao;
    private WxTemplateDao wxTemplateDao;
@ -148,11 +152,14 @@ public class WxTemplateService extends BaseJpaService<WxTemplate, WxTemplateDao>
            wechatTemplate.setData(newDataMap);
            wechatTemplate.setData(newDataMap);
            String params = mapper.writeValueAsString(wechatTemplate);
            String params = mapper.writeValueAsString(wechatTemplate);
            logger.info("----------------------模版消息json字符串:"+params+"------------------");
            WxAccessToken wxAccessTokenByCode = wxAccessTokenService.getWxAccessTokenByCode(wechatCode);
            WxAccessToken wxAccessTokenByCode = wxAccessTokenService.getWxAccessTokenByCode(wechatCode);
            String token = wxAccessTokenByCode.getAccessToken();
            String token = wxAccessTokenByCode.getAccessToken();
            String token_url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + token;
            String token_url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + token;
            String result = HttpUtil.sendPost(token_url, params);
            String result = HttpUtil.sendPost(token_url, params);
            logger.info("------------------------发送模板消息,微信返回结果:"+result+"-----------------------");
            JSONObject jsonResult = new JSONObject(result);
            JSONObject jsonResult = new JSONObject(result);
            return jsonResult;
            return jsonResult;
        } catch (Exception e) {
        } catch (Exception e) {

+ 121 - 0
svr/svr-manage/pom.xml

@ -0,0 +1,121 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.yihu.jw</groupId>
        <artifactId>svr-lib-parent-pom</artifactId>
        <version>1.0.0</version>
        <relativePath>../../svr-lib-parent-pom/pom.xml</relativePath>
    </parent>
    <artifactId>svr-manage</artifactId>
    <packaging>war</packaging>
    <version>1.0.0</version>
    <dependencies>
        <dependency>
            <groupId>com.yihu.jw</groupId>
            <artifactId>common-swagger</artifactId>
        </dependency>
        <dependency>
            <groupId>com.yihu.jw</groupId>
            <artifactId>common-rest-model</artifactId>
        </dependency>
        <dependency>
            <groupId>com.yihu.jw</groupId>
            <artifactId>common-util</artifactId>
        </dependency>
        <!-- 使用intellij作为集成开发环境 本地测试时打开 start -->
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <version>8.5.15</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        <!-- 使用intellij作为集成开发环境 本地测试时打开 end -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-servlet</artifactId>
            <version>1.19.1</version>
        </dependency>
        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-core</artifactId>
            <version>1.19.1</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.module</groupId>
            <artifactId>jackson-module-jaxb-annotations</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
        </dependency>
        <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
        </dependency>
        <dependency>
            <groupId>net.sf.json-lib</groupId>
            <artifactId>json-lib</artifactId>
        </dependency>
    </dependencies>
    <build>
        <finalName>svr-manage</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
                <version>3.1</version>
            </plugin>
        </plugins>
    </build>
</project>

+ 4 - 0
svr/svr-manage/readme.MD

@ -0,0 +1,4 @@
登陆页面
localhost:8081/login/login.html
默认用户
admin 123456

+ 15 - 0
svr/svr-manage/src/main/java/com/yihu/jw/manage/SvrMamageApp.java

@ -0,0 +1,15 @@
package com.yihu.jw.manage;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
 * Created by chenweida on 2017/6/8.
 */
@SpringBootApplication
public class SvrMamageApp {
    public static void main(String[] args) {
        SpringApplication.run(SvrMamageApp.class, args);
    }
}

+ 27 - 0
svr/svr-manage/src/main/java/com/yihu/jw/manage/cache/login/LoginCache.java

@ -0,0 +1,27 @@
package com.yihu.jw.manage.cache.login;
import com.yihu.jw.restmodel.manage.system.ManageUserVO;
import java.util.HashMap;
import java.util.Map;
/**
 * Created by chenweida on 2017/6/9.
 * 目前登陆的信息先放在内存中
 * 后续如果做集群管理应该放入redis中,并且需要考虑并发问题
 */
public class LoginCache {
    private static Map<String,ManageUserVO> user =new HashMap<>();
    public static ManageUserVO getCache(String key) {
        return user.get(key);
    }
    public static void addCache(String key,ManageUserVO manageUserVO) {
        user.put(key,manageUserVO);
    }
    public static void cleanUser(String key){
        user.remove(key);
    }
}

+ 45 - 0
svr/svr-manage/src/main/java/com/yihu/jw/manage/config/MvcConfig.java

@ -0,0 +1,45 @@
package com.yihu.jw.manage.config;
import com.yihu.jw.manage.interceptors.UserInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
import org.springframework.web.servlet.config.annotation.*;
/**
 * Created by chenweida on 2017/6/8.
 */
@Configuration
@EnableWebMvc
public class MvcConfig extends WebMvcConfigurerAdapter {
    @Autowired
    private UserInterceptor userInterceptor;
    //会在默认的基础上增加/bootstrap/**映射到classpath:/bootstrap/,
    // 不会影响默认的方式,可以同时使用。
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry
                .addResourceHandler("/**")
                .addResourceLocations("classpath:/webapp/html/");
        registry
                .addResourceHandler("/demo/**")
                .addResourceLocations("classpath:/webapp/hplus/");
        registry
                .addResourceHandler("/common/**")
                .addResourceLocations("classpath:/webapp/common/");
    }
    /**
     * 判断是否登陆的拦截器
     * @param registry
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(userInterceptor).addPathPatterns("/**");
    }
}

+ 60 - 0
svr/svr-manage/src/main/java/com/yihu/jw/manage/controller/login/LoginController.java

@ -0,0 +1,60 @@
package com.yihu.jw.manage.controller.login;
import com.yihu.jw.manage.cache.login.LoginCache;
import com.yihu.jw.manage.model.system.ManageUser;
import com.yihu.jw.manage.service.login.LoginService;
import com.yihu.jw.restmodel.common.Envelop;
import com.yihu.jw.restmodel.common.EnvelopRestController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
/**
 * Created by chenweida on 2017/6/8.
 */
@RestController
public class LoginController extends EnvelopRestController {
    @Autowired
    private LoginService loginService;
    @GetMapping("/login")
    public Envelop login(
            @RequestParam(required = true, name = "username") String username,
            @RequestParam(required = true, name = "password") String password) {
        try {
            ManageUser data = loginService.login(username, password);
            return Envelop.getSuccess("登陆成功", data);
        } catch (Exception e) {
            error(e);
            return Envelop.getError("登陆失败:" + e.getMessage(), -1);
        }
    }
    @GetMapping("/loginout")
    public Envelop loginout(@RequestParam(required = true, name = "userCode") String userCode) {
        try {
            //从缓存清空
            LoginCache.cleanUser(userCode);
            return Envelop.getSuccess("登出成功");
        } catch (Exception e) {
            error(e);
            return Envelop.getError("登出成功:" + e.getMessage(), -1);
        }
    }
    @GetMapping("/index")
    public Envelop index(
            @RequestParam(required = true, name = "userCode") String userCode
    ) {
        try {
            Map<String, List> data = loginService.index(userCode);
            return Envelop.getSuccess("获取信息成功", data);
        } catch (Exception e) {
            return Envelop.getError("获取信息成功:" + e.getMessage(), -1);
        }
    }
}

+ 10 - 0
svr/svr-manage/src/main/java/com/yihu/jw/manage/controller/system/MenuController.java

@ -0,0 +1,10 @@
package com.yihu.jw.manage.controller.system;
import org.springframework.web.bind.annotation.RestController;
/**
 * Created by chenweida on 2017/6/9.
 */
@RestController
public class MenuController {
}

+ 10 - 0
svr/svr-manage/src/main/java/com/yihu/jw/manage/controller/system/RoleController.java

@ -0,0 +1,10 @@
package com.yihu.jw.manage.controller.system;
import org.springframework.web.bind.annotation.RestController;
/**
 * Created by chenweida on 2017/6/9.
 */
@RestController
public class RoleController {
}

+ 12 - 0
svr/svr-manage/src/main/java/com/yihu/jw/manage/dao/login/ManageLoginLogDao.java

@ -0,0 +1,12 @@
package com.yihu.jw.manage.dao.login;
import com.yihu.jw.manage.model.login.ManageLoginLog;
import com.yihu.jw.manage.model.system.ManageMenu;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * Created by chenweida on 2017/6/9.
 */
public interface ManageLoginLogDao  extends PagingAndSortingRepository<ManageLoginLog, Integer>, JpaSpecificationExecutor<ManageLoginLog> {
}

+ 11 - 0
svr/svr-manage/src/main/java/com/yihu/jw/manage/dao/system/MenuDao.java

@ -0,0 +1,11 @@
package com.yihu.jw.manage.dao.system;
import com.yihu.jw.manage.model.system.ManageMenu;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * Created by chenweida on 2017/6/9.
 */
public interface MenuDao extends PagingAndSortingRepository<ManageMenu, Integer>, JpaSpecificationExecutor<ManageMenu> {
}

+ 11 - 0
svr/svr-manage/src/main/java/com/yihu/jw/manage/dao/system/RoleDao.java

@ -0,0 +1,11 @@
package com.yihu.jw.manage.dao.system;
import com.yihu.jw.manage.model.system.ManageRole;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * Created by chenweida on 2017/6/9.
 */
public interface RoleDao extends PagingAndSortingRepository<ManageRole, Integer>, JpaSpecificationExecutor<ManageRole> {
}

+ 11 - 0
svr/svr-manage/src/main/java/com/yihu/jw/manage/dao/system/RoleMenuDao.java

@ -0,0 +1,11 @@
package com.yihu.jw.manage.dao.system;
import com.yihu.jw.manage.model.system.ManageRoleMenu;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * Created by chenweida on 2017/6/9.
 */
public interface RoleMenuDao extends PagingAndSortingRepository<ManageRoleMenu, Integer>, JpaSpecificationExecutor<ManageRoleMenu> {
}

+ 18 - 0
svr/svr-manage/src/main/java/com/yihu/jw/manage/dao/system/UserDao.java

@ -0,0 +1,18 @@
package com.yihu.jw.manage.dao.system;
import com.yihu.jw.manage.model.system.ManageRoleMenu;
import com.yihu.jw.manage.model.system.ManageUser;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * Created by chenweida on 2017/6/9.
 */
public interface UserDao extends PagingAndSortingRepository<ManageUser, Integer>, JpaSpecificationExecutor<ManageUser> {
   @Query("from ManageUser u where u.loginAccount=?1 and u.status=1 ")
    ManageUser findByAccount(String username);
    @Query("from ManageUser u where u.code=?1 and u.status=1 ")
    ManageUser findByCode(String usercode);
}

+ 12 - 0
svr/svr-manage/src/main/java/com/yihu/jw/manage/dao/system/UserRoleDao.java

@ -0,0 +1,12 @@
package com.yihu.jw.manage.dao.system;
import com.yihu.jw.manage.model.system.ManageUser;
import com.yihu.jw.manage.model.system.ManageUserRole;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * Created by chenweida on 2017/6/9.
 */
public interface UserRoleDao extends PagingAndSortingRepository<ManageUserRole, Integer>, JpaSpecificationExecutor<ManageUserRole> {
}

+ 70 - 0
svr/svr-manage/src/main/java/com/yihu/jw/manage/interceptors/UserInterceptor.java

@ -0,0 +1,70 @@
package com.yihu.jw.manage.interceptors;
import com.yihu.jw.manage.model.system.ManageUser;
import com.yihu.jw.manage.service.system.UserService;
import com.yihu.jw.restmodel.common.Envelop;
import com.yihu.jw.restmodel.exception.ManageException;
import net.sf.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.PostConstruct;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
 * Created by chenweida on 2017/6/9.
 */
@Component
public class UserInterceptor implements HandlerInterceptor {
    private static Integer NOT_LOGIN=-1000;
    List<String> unFilters=new ArrayList<>();
    @Autowired
    private UserService userService;
    @PostConstruct
    public void addUnFilterURI(){
        //添加不需要过滤的路径
        unFilters.add("/login");
        unFilters.add("/error");
    }
    @Override
    public boolean preHandle(HttpServletRequest requset, HttpServletResponse response, Object o) throws Exception {
        boolean flag = true;
        try {
            //判断路径是否要过滤
            String uri=requset.getRequestURI();
            if (unFilters.contains(uri)){
                return true;
            }
            String obj= requset.getParameter("userCode");
            if(org.springframework.util.StringUtils.isEmpty(obj)){
                // 未登录
                response.getOutputStream().write(JSONObject.fromObject(Envelop.getError("请登录后再操作!",NOT_LOGIN)).toString().getBytes());
            }
            //判断usercode是否存在
            ManageUser manageUser= userService.findByCode(obj);
            if(manageUser==null){
                // 未登录
                response.getOutputStream().write(JSONObject.fromObject(Envelop.getError("请登录后再操作!",NOT_LOGIN)).toString().getBytes());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return flag;
    }
    @Override
    public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
    }
    @Override
    public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
    }
}

+ 38 - 0
svr/svr-manage/src/main/java/com/yihu/jw/manage/model/IdEntity.java

@ -0,0 +1,38 @@
/*******************************************************************************
 * Copyright (c) 2005, 2014 springside.github.io
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 *******************************************************************************/
package com.yihu.jw.manage.model;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;
import java.io.Serializable;
/**
 * 统一定义id的entity基类.
 * 
 * 基类统一定义id的属性名称、数据类型、列名映射及生成策略.
 * Oracle需要每个Entity独立定义id的SEQUCENCE时,不继承于本类而改为实现一个Idable的接口。
 * 
 * @author calvin
 */
// JPA 基类的标识
@MappedSuperclass
public abstract class IdEntity implements Serializable {
	private static final long serialVersionUID = 3673803562328635206L;
	protected Long id;  // 非业务主键
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
}

+ 110 - 0
svr/svr-manage/src/main/java/com/yihu/jw/manage/model/login/ManageLoginLog.java

@ -0,0 +1,110 @@
package com.yihu.jw.manage.model.login;// default package
import com.yihu.jw.manage.model.IdEntity;
import org.hibernate.annotations.GenericGenerator;
import java.sql.Timestamp;
import java.util.Date;
import javax.persistence.*;
/**
 * ManageLoginLog entity. @author MyEclipse Persistence Tools
 */
@Entity
@Table(name = "manage_login_log")
public class ManageLoginLog implements java.io.Serializable {
	public static Integer type_error=0;
	public static Integer type_success=1;
	// Fields
	private String id;
	private Date loginTime;
	private String loginAccount;
	private String loginUser;
	private String loginUserName;
	private Integer type;
	private String errorMessage;
	// Constructors
	/** default constructor */
	public ManageLoginLog() {
	}
	/** minimal constructor */
	public ManageLoginLog(Timestamp loginTime) {
		this.loginTime = loginTime;
	}
	/** full constructor */
	public ManageLoginLog(Timestamp loginTime, String loginUser,
			String loginUserName, Integer type, String errorMessage) {
		this.loginTime = loginTime;
		this.loginUser = loginUser;
		this.loginUserName = loginUserName;
		this.type = type;
		this.errorMessage = errorMessage;
	}
	@Id
	@GeneratedValue(generator = "uuid")
	@GenericGenerator(name = "uuid", strategy = "uuid")
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	@Column(name = "login_time", nullable = false, length = 0)
	public Date getLoginTime() {
		return this.loginTime;
	}
	public void setLoginTime(Date loginTime) {
		this.loginTime = loginTime;
	}
	@Column(name = "login_user", length = 100)
	public String getLoginUser() {
		return this.loginUser;
	}
	public void setLoginUser(String loginUser) {
		this.loginUser = loginUser;
	}
	@Column(name = "login_user_name", length = 100)
	public String getLoginUserName() {
		return this.loginUserName;
	}
	public void setLoginUserName(String loginUserName) {
		this.loginUserName = loginUserName;
	}
	@Column(name = "type")
	public Integer getType() {
		return this.type;
	}
	public void setType(Integer type) {
		this.type = type;
	}
	@Column(name = "error_message", length = 1000)
	public String getErrorMessage() {
		return this.errorMessage;
	}
	public void setErrorMessage(String errorMessage) {
		this.errorMessage = errorMessage;
	}
	public String getLoginAccount() {
		return loginAccount;
	}
	public void setLoginAccount(String loginAccount) {
		this.loginAccount = loginAccount;
	}
}

+ 173 - 0
svr/svr-manage/src/main/java/com/yihu/jw/manage/model/system/ManageMenu.java

@ -0,0 +1,173 @@
package com.yihu.jw.manage.model.system;// default package
import com.yihu.jw.manage.model.IdEntity;
import java.sql.Timestamp;
import java.util.Date;
import javax.persistence.*;
import static javax.persistence.GenerationType.IDENTITY;
/**
 * ManageMenu entity. @author MyEclipse Persistence Tools
 */
@Entity
@Table(name = "manage_menu")
public class ManageMenu extends IdEntity implements java.io.Serializable {
	// Fields
	private String code;
	private String parentCode;
	private String name;
	private String url;
	private Integer status;
	private Date createTime;
	private String createUser;
	private String createUserName;
	private Date updateTime;
	private String updateUser;
	private String updateUserName;
	private String remark;
	// Constructors
	/** default constructor */
	public ManageMenu() {
	}
	/** minimal constructor */
	public ManageMenu(Date createTime, Date updateTime) {
		this.createTime = createTime;
		this.updateTime = updateTime;
	}
	/** full constructor */
	public ManageMenu(String code, String parentCode, String name, String url,
			Integer status, Date createTime, String createUser,
			String createUserName, Date updateTime, String updateUser,
			String updateUserName, String remark) {
		this.code = code;
		this.parentCode = parentCode;
		this.name = name;
		this.url = url;
		this.status = status;
		this.createTime = createTime;
		this.createUser = createUser;
		this.createUserName = createUserName;
		this.updateTime = updateTime;
		this.updateUser = updateUser;
		this.updateUserName = updateUserName;
		this.remark = remark;
	}
	@Column(name = "code", length = 100)
	public String getCode() {
		return this.code;
	}
	public void setCode(String code) {
		this.code = code;
	}
	@Column(name = "parent_code", length = 100)
	public String getParentCode() {
		return this.parentCode;
	}
	public void setParentCode(String parentCode) {
		this.parentCode = parentCode;
	}
	@Column(name = "name", length = 100)
	public String getName() {
		return this.name;
	}
	public void setName(String name) {
		this.name = name;
	}
	@Column(name = "url", length = 1500)
	public String getUrl() {
		return this.url;
	}
	public void setUrl(String url) {
		this.url = url;
	}
	@Column(name = "status")
	public Integer getStatus() {
		return this.status;
	}
	public void setStatus(Integer status) {
		this.status = status;
	}
	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "create_time", nullable = false, length = 0)
	public Date getCreateTime() {
		return this.createTime;
	}
	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}
	@Column(name = "create_user", length = 100)
	public String getCreateUser() {
		return this.createUser;
	}
	public void setCreateUser(String createUser) {
		this.createUser = createUser;
	}
	@Column(name = "create_user_name", length = 50)
	public String getCreateUserName() {
		return this.createUserName;
	}
	public void setCreateUserName(String createUserName) {
		this.createUserName = createUserName;
	}
	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "update_time", nullable = false, length = 0)
	public Date getUpdateTime() {
		return this.updateTime;
	}
	public void setUpdateTime(Date updateTime) {
		this.updateTime = updateTime;
	}
	@Column(name = "update_user", length = 100)
	public String getUpdateUser() {
		return this.updateUser;
	}
	public void setUpdateUser(String updateUser) {
		this.updateUser = updateUser;
	}
	@Column(name = "update_user_name", length = 50)
	public String getUpdateUserName() {
		return this.updateUserName;
	}
	public void setUpdateUserName(String updateUserName) {
		this.updateUserName = updateUserName;
	}
	@Column(name = "remark", length = 1500)
	public String getRemark() {
		return this.remark;
	}
	public void setRemark(String remark) {
		this.remark = remark;
	}
}

+ 151 - 0
svr/svr-manage/src/main/java/com/yihu/jw/manage/model/system/ManageRole.java

@ -0,0 +1,151 @@
package com.yihu.jw.manage.model.system;// default package
import com.yihu.jw.manage.model.IdEntity;
import java.sql.Timestamp;
import java.util.Date;
import javax.persistence.*;
import static javax.persistence.GenerationType.IDENTITY;
/**
 * ManageRole entity. @author MyEclipse Persistence Tools
 */
@Entity
@Table(name = "manage_role")
public class ManageRole extends IdEntity implements java.io.Serializable {
	// Fields
	private String code;
	private String name;
	private Integer status;
	private Date createTime;
	private String createUser;
	private String createUserName;
	private Date updateTime;
	private String updateUser;
	private String updateUserName;
	private String remark;
	// Constructors
	/** default constructor */
	public ManageRole() {
	}
	/** minimal constructor */
	public ManageRole(Date createTime, Date updateTime) {
		this.createTime = createTime;
		this.updateTime = updateTime;
	}
	/** full constructor */
	public ManageRole(String code, String name, Integer status,
			Date createTime, String createUser, String createUserName,
			Date updateTime, String updateUser, String updateUserName,
			String remark) {
		this.code = code;
		this.name = name;
		this.status = status;
		this.createTime = createTime;
		this.createUser = createUser;
		this.createUserName = createUserName;
		this.updateTime = updateTime;
		this.updateUser = updateUser;
		this.updateUserName = updateUserName;
		this.remark = remark;
	}
	@Column(name = "code", length = 100)
	public String getCode() {
		return this.code;
	}
	public void setCode(String code) {
		this.code = code;
	}
	@Column(name = "name", length = 100)
	public String getName() {
		return this.name;
	}
	public void setName(String name) {
		this.name = name;
	}
	@Column(name = "status")
	public Integer getStatus() {
		return this.status;
	}
	public void setStatus(Integer status) {
		this.status = status;
	}
	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "create_time", nullable = false, length = 0)
	public Date getCreateTime() {
		return this.createTime;
	}
	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}
	@Column(name = "create_user", length = 100)
	public String getCreateUser() {
		return this.createUser;
	}
	public void setCreateUser(String createUser) {
		this.createUser = createUser;
	}
	@Column(name = "create_user_name", length = 50)
	public String getCreateUserName() {
		return this.createUserName;
	}
	public void setCreateUserName(String createUserName) {
		this.createUserName = createUserName;
	}
	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "update_time", nullable = false, length = 0)
	public Date getUpdateTime() {
		return this.updateTime;
	}
	public void setUpdateTime(Date updateTime) {
		this.updateTime = updateTime;
	}
	@Column(name = "update_user", length = 100)
	public String getUpdateUser() {
		return this.updateUser;
	}
	public void setUpdateUser(String updateUser) {
		this.updateUser = updateUser;
	}
	@Column(name = "update_user_name", length = 50)
	public String getUpdateUserName() {
		return this.updateUserName;
	}
	public void setUpdateUserName(String updateUserName) {
		this.updateUserName = updateUserName;
	}
	@Column(name = "remark", length = 1500)
	public String getRemark() {
		return this.remark;
	}
	public void setRemark(String remark) {
		this.remark = remark;
	}
}

+ 56 - 0
svr/svr-manage/src/main/java/com/yihu/jw/manage/model/system/ManageRoleMenu.java

@ -0,0 +1,56 @@
package com.yihu.jw.manage.model.system;// default package
import com.yihu.jw.manage.model.IdEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import static javax.persistence.GenerationType.IDENTITY;
import javax.persistence.Id;
import javax.persistence.Table;
/**
 * ManageRoleMenu entity. @author MyEclipse Persistence Tools
 */
@Entity
@Table(name = "manage_role_menu")
public class ManageRoleMenu  extends IdEntity implements java.io.Serializable {
	// Fields
	private Integer id;
	private String roleCode;
	private String menuCode;
	// Constructors
	/** default constructor */
	public ManageRoleMenu() {
	}
	/** full constructor */
	public ManageRoleMenu(String roleCode, String menuCode) {
		this.roleCode = roleCode;
		this.menuCode = menuCode;
	}
	@Column(name = "role_code", length = 100)
	public String getRoleCode() {
		return this.roleCode;
	}
	public void setRoleCode(String roleCode) {
		this.roleCode = roleCode;
	}
	@Column(name = "menu_code", length = 100)
	public String getMenuCode() {
		return this.menuCode;
	}
	public void setMenuCode(String menuCode) {
		this.menuCode = menuCode;
	}
}

+ 193 - 0
svr/svr-manage/src/main/java/com/yihu/jw/manage/model/system/ManageUser.java

@ -0,0 +1,193 @@
package com.yihu.jw.manage.model.system;// default package
import com.yihu.jw.manage.model.IdEntity;
import java.util.Date;
import javax.persistence.*;
/**
 * ManageUser entity. @author MyEclipse Persistence Tools
 */
@Entity
@Table(name = "manage_user")
public class ManageUser  extends IdEntity implements java.io.Serializable {
	// Fields
	private String code;
	private String name;
	private String password;//密码  密码是 密码+salt MD5加密
	private String salt;//盐值
	private String loginAccount;//登陆的账号
	private String mobile;
	private Integer status;
	private Date createTime;
	private String createUser;
	private String createUserName;
	private Date updateTime;
	private String updateUser;
	private String updateUserName;
	private String remark;
	// Constructors
	/** default constructor */
	public ManageUser() {
	}
	/** minimal constructor */
	public ManageUser(Integer id, Date createTime, Date updateTime) {
		this.createTime = createTime;
		this.updateTime = updateTime;
	}
	/** full constructor */
	public ManageUser(Integer id, String code, String name, String password,
			String salt, String loginAccount, String mobile, Integer status,
			Date createTime, String createUser, String createUserName,
			Date updateTime, String updateUser, String updateUserName,
			String remark) {
		this.code = code;
		this.name = name;
		this.password = password;
		this.salt = salt;
		this.loginAccount = loginAccount;
		this.mobile = mobile;
		this.status = status;
		this.createTime = createTime;
		this.createUser = createUser;
		this.createUserName = createUserName;
		this.updateTime = updateTime;
		this.updateUser = updateUser;
		this.updateUserName = updateUserName;
		this.remark = remark;
	}
	@Column(name = "code", length = 100)
	public String getCode() {
		return this.code;
	}
	public void setCode(String code) {
		this.code = code;
	}
	@Column(name = "name", length = 100)
	public String getName() {
		return this.name;
	}
	public void setName(String name) {
		this.name = name;
	}
	@Column(name = "password", length = 100)
	public String getPassword() {
		return this.password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	@Column(name = "salt", length = 100)
	public String getSalt() {
		return this.salt;
	}
	public void setSalt(String salt) {
		this.salt = salt;
	}
	@Column(name = "login_account", length = 100)
	public String getLoginAccount() {
		return this.loginAccount;
	}
	public void setLoginAccount(String loginAccount) {
		this.loginAccount = loginAccount;
	}
	@Column(name = "mobile", length = 20)
	public String getMobile() {
		return this.mobile;
	}
	public void setMobile(String mobile) {
		this.mobile = mobile;
	}
	@Column(name = "status")
	public Integer getStatus() {
		return this.status;
	}
	public void setStatus(Integer status) {
		this.status = status;
	}
	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "create_time", nullable = false, length = 0)
	public Date getCreateTime() {
		return this.createTime;
	}
	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}
	@Column(name = "create_user", length = 100)
	public String getCreateUser() {
		return this.createUser;
	}
	public void setCreateUser(String createUser) {
		this.createUser = createUser;
	}
	@Column(name = "create_user_name", length = 50)
	public String getCreateUserName() {
		return this.createUserName;
	}
	public void setCreateUserName(String createUserName) {
		this.createUserName = createUserName;
	}
	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "update_time", nullable = false, length = 0)
	public Date getUpdateTime() {
		return this.updateTime;
	}
	public void setUpdateTime(Date updateTime) {
		this.updateTime = updateTime;
	}
	@Column(name = "update_user", length = 100)
	public String getUpdateUser() {
		return this.updateUser;
	}
	public void setUpdateUser(String updateUser) {
		this.updateUser = updateUser;
	}
	@Column(name = "update_user_name", length = 50)
	public String getUpdateUserName() {
		return this.updateUserName;
	}
	public void setUpdateUserName(String updateUserName) {
		this.updateUserName = updateUserName;
	}
	@Column(name = "remark", length = 1500)
	public String getRemark() {
		return this.remark;
	}
	public void setRemark(String remark) {
		this.remark = remark;
	}
}

+ 46 - 0
svr/svr-manage/src/main/java/com/yihu/jw/manage/model/system/ManageUserRole.java

@ -0,0 +1,46 @@
package com.yihu.jw.manage.model.system;// default package
import com.yihu.jw.manage.model.IdEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
/**
 * ManageUserRole entity. @author MyEclipse Persistence Tools
 */
@Entity
@Table(name = "manage_user_role")
public class ManageUserRole  extends IdEntity implements java.io.Serializable {
	// Fields
	private String roleCode;
	private String userCode;
	// Constructors
	/** default constructor */
	public ManageUserRole() {
	}
	@Column(name = "role_code", length = 100)
	public String getRoleCode() {
		return this.roleCode;
	}
	public void setRoleCode(String roleCode) {
		this.roleCode = roleCode;
	}
	@Column(name = "user_code", length = 100)
	public String getUserCode() {
		return this.userCode;
	}
	public void setUserCode(String userCode) {
		this.userCode = userCode;
	}
}

+ 32 - 0
svr/svr-manage/src/main/java/com/yihu/jw/manage/model/system/MenuItems.java

@ -0,0 +1,32 @@
package com.yihu.jw.manage.model.system;
import java.util.List;
/**
 * Created by Administrator on 2017/6/10 0010.
 *
 *  该model用于vue页面展示菜单
 */
public class MenuItems {
    private ManageMenu parentMenu;//父菜单
    private List<ManageMenu> childMenus;//子菜单
    public ManageMenu getParentMenu() {
        return parentMenu;
    }
    public void setParentMenu(ManageMenu parentMenu) {
        this.parentMenu = parentMenu;
    }
    public void setChildMenus(List<ManageMenu> childMenus) {
        this.childMenus = childMenus;
    }
    public List<ManageMenu> getChildMenus() {
        return childMenus;
    }
}

+ 106 - 0
svr/svr-manage/src/main/java/com/yihu/jw/manage/service/login/LoginService.java

@ -0,0 +1,106 @@
package com.yihu.jw.manage.service.login;
import com.yihu.jw.manage.cache.login.LoginCache;
import com.yihu.jw.manage.dao.login.ManageLoginLogDao;
import com.yihu.jw.manage.model.login.ManageLoginLog;
import com.yihu.jw.manage.model.system.ManageMenu;
import com.yihu.jw.manage.model.system.ManageRole;
import com.yihu.jw.manage.model.system.ManageUser;
import com.yihu.jw.manage.model.system.MenuItems;
import com.yihu.jw.manage.service.system.MenuService;
import com.yihu.jw.manage.service.system.RoleService;
import com.yihu.jw.manage.service.system.UserService;
import com.yihu.jw.restmodel.exception.ManageException;
import com.yihu.jw.restmodel.manage.system.ManageUserVO;
import com.yihu.jw.util.security.MD5;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
/**
 * Created by chenweida on 2017/6/8.
 */
@Service
public class LoginService {
    @Autowired
    private UserService userService;
    @Autowired
    private MenuService menuService;
    @Autowired
    private RoleService roleService;
    @Autowired
    private ManageLoginLogDao manageLoginLogDao;
    /**
     * ManageException异常不回滚
     * @param username
     * @param password
     * @return
     * @throws Exception
     */
    @Transactional(noRollbackForClassName = "ManageException")
    public ManageUser login(String username, String password) throws ManageException {
        ManageLoginLog manageLoginLog = new ManageLoginLog();
        manageLoginLog.setLoginAccount(username);
        manageLoginLog.setLoginTime(new Date());
        Map<String, List> data = new HashMap<>();
        //判断是否登陆信息是否正确
        ManageUser user = userService.findByAccount(username);
        if (user == null) {
            //保存登陆信息
            String message = "账号不存在";
            manageLoginLog.setType(ManageLoginLog.type_error);
            manageLoginLog.setErrorMessage(message);
            manageLoginLogDao.save(manageLoginLog);
            throw new ManageException(message);
        }
        if (!user.getPassword().equals(MD5.GetMD5Code(password + user.getSalt()))) {
            //保存登陆信息
            String message = "密码错误";
            manageLoginLog.setLoginUser(user.getCode());
            manageLoginLog.setLoginUserName(user.getName());
            manageLoginLog.setType(ManageLoginLog.type_error);
            manageLoginLog.setErrorMessage(message);
            manageLoginLogDao.save(manageLoginLog);
            throw new ManageException(message);
        }
        //保存登陆信息
        manageLoginLog.setType(ManageLoginLog.type_success);
        manageLoginLog.setLoginUser(user.getCode());
        manageLoginLog.setLoginUserName(user.getName());
        manageLoginLogDao.save(manageLoginLog);
        //添加登陆缓存中
        ManageUserVO manageUserVO=new ManageUserVO();
        BeanUtils.copyProperties(user,manageLoginLog);
        LoginCache.addCache(user.getCode(),manageUserVO);
        return user;
    }
    public Map<String, List> index(String usercode) throws ManageException {
        Map<String, List> data = new HashMap<>();
        //得到角色
        List<ManageRole> roles = roleService.findByUserCode(usercode);
        List<MenuItems> menuItemses = new ArrayList<>();
        //查询所有父菜单
        List<ManageMenu> parentMenus = menuService.findParentMenus(usercode);
        //查询所有子菜单
        if(parentMenus!=null){
            for(ManageMenu parentMenu:parentMenus){
                //通过父菜单查找对应的子菜单
                List<ManageMenu> childMenus = menuService.findChildMenus(usercode,parentMenu.getCode());
                MenuItems menuItem = new MenuItems();
                menuItem.setParentMenu(parentMenu);
                menuItem.setChildMenus(childMenus);
                menuItemses.add(menuItem);
            }
        }
        data.put("role", roles);
        data.put("menus", menuItemses);
        return data;
    }
}

+ 59 - 0
svr/svr-manage/src/main/java/com/yihu/jw/manage/service/system/MenuService.java

@ -0,0 +1,59 @@
package com.yihu.jw.manage.service.system;
import com.yihu.jw.manage.dao.system.MenuDao;
import com.yihu.jw.manage.model.system.ManageMenu;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import java.util.List;
/**
 * Created by chenweida on 2017/6/9.
 */
@Service
public class MenuService {
    @Autowired
    private MenuDao menuDao;
    @Autowired
    private JdbcTemplate jdbcTemplate;
    public List<ManageMenu> findByUserCode(String code) {
        String sql="SELECT DISTINCT " +
                "  m.`code`, " +
                "  m.* " +
                "FROM " +
                "  manage_menu m, " +
                "  manage_role_menu rm " +
                "WHERE " +
                "  m.`code` = rm.menu_code and m.`status`=1 " +
                "AND rm.role_code IN ( " +
                "  SELECT " +
                "    r. CODE " +
                "  FROM " +
                "    manage_role r, " +
                "    manage_user_role ur " +
                "  WHERE " +
                "    r.`code` = ur.role_code " +
                "  AND ur.user_code = ? " +
                "  AND r.`status` = 1 " +
                ")";
        List<ManageMenu> mr = jdbcTemplate.query(sql, new BeanPropertyRowMapper(ManageMenu.class), code);
        return mr;
    }
    public List<ManageMenu> findParentMenus(String usercode) {
        String sql = "SELECT * FROM (SELECT DISTINCT  m.* FROM manage_menu m,manage_role_menu rm WHERE m.code = rm.menu_code and m.status=1 AND rm.role_code IN (SELECT r.CODE FROM manage_role r, manage_user_role ur WHERE r.code = ur.role_code AND ur.user_code = ?   AND r.status = 1 )) A WHERE A.parent_code = 0";
        List<ManageMenu> mr = jdbcTemplate.query(sql, new BeanPropertyRowMapper(ManageMenu.class), usercode);
        return mr;
    }
    public List<ManageMenu> findChildMenus(String usercode, String code) {
        String sql = "SELECT * FROM (SELECT DISTINCT  m.* FROM manage_menu m,manage_role_menu rm WHERE m.code = rm.menu_code and m.status=1 AND rm.role_code IN (SELECT r.CODE FROM manage_role r, manage_user_role ur WHERE r.code = ur.role_code AND ur.user_code = ?   AND r.status = 1 )) A WHERE A.parent_code = ?";
        List<ManageMenu> mr = jdbcTemplate.query(sql, new BeanPropertyRowMapper(ManageMenu.class), usercode,code);
        return mr;
    }
}

+ 30 - 0
svr/svr-manage/src/main/java/com/yihu/jw/manage/service/system/RoleService.java

@ -0,0 +1,30 @@
package com.yihu.jw.manage.service.system;
import com.yihu.jw.manage.dao.system.RoleDao;
import com.yihu.jw.manage.dao.system.RoleMenuDao;
import com.yihu.jw.manage.model.system.ManageRole;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import java.util.List;
/**
 * Created by chenweida on 2017/6/9.
 */
@Service
public class RoleService {
    @Autowired
    private RoleDao roleDao;
    @Autowired
    private RoleMenuDao roleMenuDao;
    @Autowired
    private JdbcTemplate jdbcTemplate;
    public List<ManageRole> findByUserCode(String code) {
        String sql = " select r.* from manage_role r,manage_user_role ur where r.`code`=ur.role_code and ur.user_code=? ";
        List<ManageRole> mr = jdbcTemplate.query(sql, new BeanPropertyRowMapper(ManageRole.class), code);
        return mr;
    }
}

+ 26 - 0
svr/svr-manage/src/main/java/com/yihu/jw/manage/service/system/UserService.java

@ -0,0 +1,26 @@
package com.yihu.jw.manage.service.system;
import com.yihu.jw.manage.dao.system.UserDao;
import com.yihu.jw.manage.dao.system.UserRoleDao;
import com.yihu.jw.manage.model.system.ManageUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
 * Created by chenweida on 2017/6/9.
 */
@Service
public class UserService {
    @Autowired
    private UserDao userDao;
    @Autowired
    private UserRoleDao userRoleDao;
    public ManageUser findByAccount(String username) {
        return userDao.findByAccount(username);
    }
    public ManageUser findByCode(String usercode) {
        return userDao.findByCode(usercode);
    }
}

+ 39 - 0
svr/svr-manage/src/main/resources/application.yml

@ -0,0 +1,39 @@
server:
  port: 8081
spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    max-active: 50
    max-idle: 50 #最大空闲连接
    min-idle: 10 #最小空闲连接
    validation-query-timeout: 20
    log-validation-errors: true
    validation-interval: 60000 #避免过度验证,保证验证不超过这个频率——以毫秒为单位。如果一个连接应该被验证,但上次验证未达到指定间隔,将不再次验证。
    validation-query: SELECT 1 #SQL 查询, 用来验证从连接池取出的连接, 在将连接返回给调用者之前。 如果指定, 则查询必须是一个SQL SELECT 并且必须返回至少一行记录
    test-on-borrow: true #指明是否在从池中取出连接前进行检验, 如果检验失败, 则从池中去除连接并尝试取出另一个。注意: 设置为true 后如果要生效,validationQuery 参数必须设置为非空字符串
    test-on-return: true #指明是否在归还到池中前进行检验 注意: 设置为true 后如果要生效validationQuery 参数必须设置为非空字符串
    idle-timeout: 30000
    connection-test-query: SELECT 1
    num-tests-per-eviction-run: 50 #在每次空闲连接回收器线程(如果有)运行时检查的连接数量,最好和maxActive
    test-while-idle: true #指明连接是否被空闲连接回收器(如果有)进行检验,如果检测失败,则连接将被从池中去除
    min-evictable-idle-time-millis: 3600000 #连接池中连接,在时间段内一直空闲,被逐出连接池的时间(1000*60*60),以毫秒为单位
    time-between-eviction-runs-millis: 300000 #在空闲连接回收器线程运行期间休眠的时间值,以毫秒为单位,一般比minEvictableIdleTimeMillis小
  jpa:
    database-platform: org.hibernate.dialect.MySQL5Dialect
    show-sql: true
  session:
      store-type: HASH_MAP
---
spring:
  profiles: dev
  datasource:
    url: jdbc:mysql://172.19.103.77/jw2?useUnicode:true&characterEncoding=utf-8&autoReconnect=true
    username: root
    password: 123456

+ 8 - 0
svr/svr-manage/src/main/resources/banner.txt

@ -0,0 +1,8 @@
   _____                __  __
  / ____|              |  \/  |
 | (_____   ___ __     | \  / | __ _ _ __   __ _  __ _  ___
  \___ \ \ / / '__|    | |\/| |/ _` | '_ \ / _` |/ _` |/ _ \
  ____) \ V /| |       | |  | | (_| | | | | (_| | (_| |  __/
 |_____/ \_/ |_|       |_|  |_|\__,_|_| |_|\__,_|\__, |\___|
                                                  __/ |
                                                 |___/

File diff suppressed because it is too large
+ 12 - 0
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/animate.min.css


File diff suppressed because it is too large
+ 5 - 0
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/bootstrap.min.css


+ 358 - 0
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/demo/webuploader-demo.css

@ -0,0 +1,358 @@
#container {
    color: #838383;
    font-size: 12px;
}
#uploader .queueList {
    margin: 20px;
    border: 3px dashed #e6e6e6;
}
#uploader .queueList.filled {
    padding: 17px;
    margin: 0;
    border: 3px dashed transparent;
}
#uploader .queueList.webuploader-dnd-over {
    border: 3px dashed #999999;
}
#uploader p {margin: 0;}
.element-invisible {
    position: absolute !important;
    clip: rect(1px 1px 1px 1px); /* IE6, IE7 */
    clip: rect(1px,1px,1px,1px);
}
#uploader .placeholder {
    min-height: 350px;
    padding-top: 178px;
    text-align: center;
    background: url(../../../img/webuploader.png) center 93px no-repeat;
    color: #cccccc;
    font-size: 18px;
    position: relative;
}
#uploader .placeholder .webuploader-pick {
    font-size: 18px;
    background: #00b7ee;
    border-radius: 3px;
    line-height: 44px;
    padding: 0 30px;
    *width: 120px;
    color: #fff;
    display: inline-block;
    margin: 0 auto 20px auto;
    cursor: pointer;
    box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
}
#uploader .placeholder .webuploader-pick-hover {
    background: #00a2d4;
}
#uploader .placeholder .flashTip {
    color: #666666;
    font-size: 12px;
    position: absolute;
    width: 100%;
    text-align: center;
    bottom: 20px;
}
#uploader .placeholder .flashTip a {
    color: #0785d1;
    text-decoration: none;
}
#uploader .placeholder .flashTip a:hover {
    text-decoration: underline;
}
#uploader .filelist {
    list-style: none;
    margin: 0;
    padding: 0;
}
#uploader .filelist:after {
    content: '';
    display: block;
    width: 0;
    height: 0;
    overflow: hidden;
    clear: both;
}
#uploader .filelist li {
    width: 110px;
    height: 110px;
    background: url(../../img/bg.png) no-repeat;
    text-align: center;
    margin: 0 8px 20px 0;
    position: relative;
    display: inline;
    float: left;
    overflow: hidden;
    font-size: 12px;
}
#uploader .filelist li p.log {
    position: relative;
    top: -45px;
}
#uploader .filelist li p.title {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    overflow: hidden;
    white-space: nowrap;
    text-overflow : ellipsis;
    top: 5px;
    text-indent: 5px;
    text-align: left;
}
#uploader .filelist li p.progress {
    position: absolute;
    width: 100%;
    bottom: 0;
    left: 0;
    height: 8px;
    overflow: hidden;
    z-index: 50;
    margin: 0;
    border-radius: 0;
    background: none;
    -webkit-box-shadow: 0 0 0;
}
#uploader .filelist li p.progress span {
    display: none;
    overflow: hidden;
    width: 0;
    height: 100%;
    background: #1483d8 url(../../img/progress.png) repeat-x;
    -webit-transition: width 200ms linear;
    -moz-transition: width 200ms linear;
    -o-transition: width 200ms linear;
    -ms-transition: width 200ms linear;
    transition: width 200ms linear;
    -webkit-animation: progressmove 2s linear infinite;
    -moz-animation: progressmove 2s linear infinite;
    -o-animation: progressmove 2s linear infinite;
    -ms-animation: progressmove 2s linear infinite;
    animation: progressmove 2s linear infinite;
    -webkit-transform: translateZ(0);
}
@-webkit-keyframes progressmove {
    0% {
       background-position: 0 0;
    }
    100% {
       background-position: 17px 0;
    }
}
@-moz-keyframes progressmove {
    0% {
       background-position: 0 0;
    }
    100% {
       background-position: 17px 0;
    }
}
@keyframes progressmove {
    0% {
       background-position: 0 0;
    }
    100% {
       background-position: 17px 0;
    }
}
#uploader .filelist li p.imgWrap {
    position: relative;
    z-index: 2;
    line-height: 110px;
    vertical-align: middle;
    overflow: hidden;
    width: 110px;
    height: 110px;
    -webkit-transform-origin: 50% 50%;
    -moz-transform-origin: 50% 50%;
    -o-transform-origin: 50% 50%;
    -ms-transform-origin: 50% 50%;
    transform-origin: 50% 50%;
    -webit-transition: 200ms ease-out;
    -moz-transition: 200ms ease-out;
    -o-transition: 200ms ease-out;
    -ms-transition: 200ms ease-out;
    transition: 200ms ease-out;
}
#uploader .filelist li img {
    width: 100%;
}
#uploader .filelist li p.error {
    background: #f43838;
    color: #fff;
    position: absolute;
    bottom: 0;
    left: 0;
    height: 28px;
    line-height: 28px;
    width: 100%;
    z-index: 100;
}
#uploader .filelist li .success {
    display: block;
    position: absolute;
    left: 0;
    bottom: 0;
    height: 40px;
    width: 100%;
    z-index: 200;
    background: url(../../img/success.png) no-repeat right bottom;
}
#uploader .filelist div.file-panel {
    position: absolute;
    height: 0;
    filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#80000000', endColorstr='#80000000')\0;
    background: rgba( 0, 0, 0, 0.5 );
    width: 100%;
    top: 0;
    left: 0;
    overflow: hidden;
    z-index: 300;
}
#uploader .filelist div.file-panel span {
    width: 24px;
    height: 24px;
    display: inline;
    float: right;
    text-indent: -9999px;
    overflow: hidden;
    background: url(../../img/icons.png) no-repeat;
    margin: 5px 1px 1px;
    cursor: pointer;
}
#uploader .filelist div.file-panel span.rotateLeft {
    background-position: 0 -24px;
}
#uploader .filelist div.file-panel span.rotateLeft:hover {
    background-position: 0 0;
}
#uploader .filelist div.file-panel span.rotateRight {
    background-position: -24px -24px;
}
#uploader .filelist div.file-panel span.rotateRight:hover {
    background-position: -24px 0;
}
#uploader .filelist div.file-panel span.cancel {
    background-position: -48px -24px;
}
#uploader .filelist div.file-panel span.cancel:hover {
    background-position: -48px 0;
}
#uploader .statusBar {
    height: 63px;
    border-top: 1px solid #dadada;
    padding: 0 20px;
    line-height: 63px;
    vertical-align: middle;
    position: relative;
}
#uploader .statusBar .progress {
    border: 1px solid #1483d8;
    width: 198px;
    background: #fff;
    height: 18px;
    position: relative;
    display: inline-block;
    text-align: center;
    line-height: 20px;
    color: #6dbfff;
    position: relative;
    margin: 0 10px 0 0;
}
#uploader .statusBar .progress span.percentage {
    width: 0;
    height: 100%;
    left: 0;
    top: 0;
    background: #1483d8;
    position: absolute;
}
#uploader .statusBar .progress span.text {
    position: relative;
    z-index: 10;
}
#uploader .statusBar .info {
    display: inline-block;
    font-size: 14px;
    color: #666666;
}
#uploader .statusBar .btns {
    position: absolute;
    top: 10px;
    right: 20px;
    line-height: 40px;
}
#filePicker2 {
    display: inline-block;
    float: left;
}
#uploader .statusBar .btns .webuploader-pick,
#uploader .statusBar .btns .uploadBtn,
#uploader .statusBar .btns .uploadBtn.state-uploading,
#uploader .statusBar .btns .uploadBtn.state-paused {
    background: #ffffff;
    border: 1px solid #cfcfcf;
    color: #565656;
    padding: 0 18px;
    display: inline-block;
    border-radius: 3px;
    margin-left: 10px;
    cursor: pointer;
    font-size: 14px;
    float: left;
}
#uploader .statusBar .btns .webuploader-pick-hover,
#uploader .statusBar .btns .uploadBtn:hover,
#uploader .statusBar .btns .uploadBtn.state-uploading:hover,
#uploader .statusBar .btns .uploadBtn.state-paused:hover {
    background: #f0f0f0;
}
#uploader .statusBar .btns .uploadBtn {
    background: #00b7ee;
    color: #fff;
    border-color: transparent;
}
#uploader .statusBar .btns .uploadBtn:hover {
    background: #00a2d4;
}
#uploader .statusBar .btns .uploadBtn.disabled {
    pointer-events: none;
    opacity: 0.6;
}

File diff suppressed because it is too large
+ 5 - 0
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/font-awesome.min.css


BIN
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/patterns/header-profile-skin-1.png


BIN
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/patterns/header-profile-skin-3.png


BIN
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/patterns/header-profile.png


BIN
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/patterns/shattered.png


+ 251 - 0
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css

@ -0,0 +1,251 @@
.checkbox {
  padding-left: 20px;
}
.checkbox label {
  display: inline-block;
  vertical-align: middle;
  position: relative;
  padding-left: 5px;
}
.checkbox label::before {
  content: "";
  display: inline-block;
  position: absolute;
  width: 17px;
  height: 17px;
  left: 0;
  margin-left: -20px;
  border: 1px solid #cccccc;
  border-radius: 3px;
  background-color: #fff;
  -webkit-transition: border 0.15s ease-in-out, color 0.15s ease-in-out;
  -o-transition: border 0.15s ease-in-out, color 0.15s ease-in-out;
  transition: border 0.15s ease-in-out, color 0.15s ease-in-out;
}
.checkbox label::after {
  display: inline-block;
  position: absolute;
  width: 16px;
  height: 16px;
  left: 0;
  top: 0;
  margin-left: -20px;
  padding-left: 3px;
  padding-top: 1px;
  font-size: 11px;
  color: #555555;
}
.checkbox input[type="checkbox"],
.checkbox input[type="radio"] {
  opacity: 0;
  z-index: 1;
}
.checkbox input[type="checkbox"]:focus + label::before,
.checkbox input[type="radio"]:focus + label::before {
  outline: thin dotted;
  outline: 5px auto -webkit-focus-ring-color;
  outline-offset: -2px;
}
.checkbox input[type="checkbox"]:checked + label::after,
.checkbox input[type="radio"]:checked + label::after {
  font-family: "FontAwesome";
  content: "\f00c";
}
.checkbox input[type="checkbox"]:disabled + label,
.checkbox input[type="radio"]:disabled + label {
  opacity: 0.65;
}
.checkbox input[type="checkbox"]:disabled + label::before,
.checkbox input[type="radio"]:disabled + label::before {
  background-color: #eeeeee;
  cursor: not-allowed;
}
.checkbox.checkbox-circle label::before {
  border-radius: 50%;
}
.checkbox.checkbox-inline {
  margin-top: 0;
}
.checkbox-primary input[type="checkbox"]:checked + label::before,
.checkbox-primary input[type="radio"]:checked + label::before {
  background-color: #337ab7;
  border-color: #337ab7;
}
.checkbox-primary input[type="checkbox"]:checked + label::after,
.checkbox-primary input[type="radio"]:checked + label::after {
  color: #fff;
}
.checkbox-danger input[type="checkbox"]:checked + label::before,
.checkbox-danger input[type="radio"]:checked + label::before {
  background-color: #d9534f;
  border-color: #d9534f;
}
.checkbox-danger input[type="checkbox"]:checked + label::after,
.checkbox-danger input[type="radio"]:checked + label::after {
  color: #fff;
}
.checkbox-info input[type="checkbox"]:checked + label::before,
.checkbox-info input[type="radio"]:checked + label::before {
  background-color: #5bc0de;
  border-color: #5bc0de;
}
.checkbox-info input[type="checkbox"]:checked + label::after,
.checkbox-info input[type="radio"]:checked + label::after {
  color: #fff;
}
.checkbox-warning input[type="checkbox"]:checked + label::before,
.checkbox-warning input[type="radio"]:checked + label::before {
  background-color: #f0ad4e;
  border-color: #f0ad4e;
}
.checkbox-warning input[type="checkbox"]:checked + label::after,
.checkbox-warning input[type="radio"]:checked + label::after {
  color: #fff;
}
.checkbox-success input[type="checkbox"]:checked + label::before,
.checkbox-success input[type="radio"]:checked + label::before {
  background-color: #5cb85c;
  border-color: #5cb85c;
}
.checkbox-success input[type="checkbox"]:checked + label::after,
.checkbox-success input[type="radio"]:checked + label::after {
  color: #fff;
}
.radio {
  padding-left: 20px;
}
.radio label {
  display: inline-block;
  vertical-align: middle;
  position: relative;
  padding-left: 5px;
}
.radio label::before {
  content: "";
  display: inline-block;
  position: absolute;
  width: 17px;
  height: 17px;
  left: 0;
  margin-left: -20px;
  border: 1px solid #cccccc;
  border-radius: 50%;
  background-color: #fff;
  -webkit-transition: border 0.15s ease-in-out;
  -o-transition: border 0.15s ease-in-out;
  transition: border 0.15s ease-in-out;
}
.radio label::after {
  display: inline-block;
  position: absolute;
  content: " ";
  width: 11px;
  height: 11px;
  left: 3px;
  top: 3px;
  margin-left: -20px;
  border-radius: 50%;
  background-color: #555555;
  -webkit-transform: scale(0, 0);
  -ms-transform: scale(0, 0);
  -o-transform: scale(0, 0);
  transform: scale(0, 0);
  -webkit-transition: -webkit-transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33);
  -moz-transition: -moz-transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33);
  -o-transition: -o-transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33);
  transition: transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33);
}
.radio input[type="radio"] {
  opacity: 0;
  z-index: 1;
}
.radio input[type="radio"]:focus + label::before {
  outline: thin dotted;
  outline: 5px auto -webkit-focus-ring-color;
  outline-offset: -2px;
}
.radio input[type="radio"]:checked + label::after {
  -webkit-transform: scale(1, 1);
  -ms-transform: scale(1, 1);
  -o-transform: scale(1, 1);
  transform: scale(1, 1);
}
.radio input[type="radio"]:disabled + label {
  opacity: 0.65;
}
.radio input[type="radio"]:disabled + label::before {
  cursor: not-allowed;
}
.radio.radio-inline {
  margin-top: 0;
}
.radio-primary input[type="radio"] + label::after {
  background-color: #337ab7;
}
.radio-primary input[type="radio"]:checked + label::before {
  border-color: #337ab7;
}
.radio-primary input[type="radio"]:checked + label::after {
  background-color: #337ab7;
}
.radio-danger input[type="radio"] + label::after {
  background-color: #d9534f;
}
.radio-danger input[type="radio"]:checked + label::before {
  border-color: #d9534f;
}
.radio-danger input[type="radio"]:checked + label::after {
  background-color: #d9534f;
}
.radio-info input[type="radio"] + label::after {
  background-color: #5bc0de;
}
.radio-info input[type="radio"]:checked + label::before {
  border-color: #5bc0de;
}
.radio-info input[type="radio"]:checked + label::after {
  background-color: #5bc0de;
}
.radio-warning input[type="radio"] + label::after {
  background-color: #f0ad4e;
}
.radio-warning input[type="radio"]:checked + label::before {
  border-color: #f0ad4e;
}
.radio-warning input[type="radio"]:checked + label::after {
  background-color: #f0ad4e;
}
.radio-success input[type="radio"] + label::after {
  background-color: #5cb85c;
}
.radio-success input[type="radio"]:checked + label::before {
  border-color: #5cb85c;
}
.radio-success input[type="radio"]:checked + label::after {
  background-color: #5cb85c;
}
input[type="checkbox"].styled:checked + label:after,
input[type="radio"].styled:checked + label:after {
  font-family: 'FontAwesome';
  content: "\f00c";
}
input[type="checkbox"] .styled:checked + label::before,
input[type="radio"] .styled:checked + label::before {
  color: #fff;
}
input[type="checkbox"] .styled:checked + label::after,
input[type="radio"] .styled:checked + label::after {
  color: #fff;
}

File diff suppressed because it is too large
+ 1 - 0
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/blueimp/css/blueimp-gallery.min.css


BIN
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/chosen/chosen-sprite.png


+ 423 - 0
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/chosen/chosen.css

@ -0,0 +1,423 @@
/*!
Chosen, a Select Box Enhancer for jQuery and Prototype
by Patrick Filler for Harvest, http://getharvest.com
Version 1.1.0
Full source at https://github.com/harvesthq/chosen
Copyright (c) 2011 Harvest http://getharvest.com
MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md
This file is generated by `grunt build`, do not edit it by hand.
*/
/* @group Base */
.chosen-container {
    position: relative;
    display: inline-block;
    vertical-align: middle;
    font-size: 13px;
    zoom: 1;
    *display: inline;
    -webkit-user-select: none;
    -moz-user-select: none;
    user-select: none;
}
.chosen-container .chosen-drop {
    position: absolute;
    top: 100%;
    left: -9999px;
    z-index: 1010;
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
    width: 100%;
    border: 1px solid #aaa;
    border-top: 0;
    background: #fff;
    box-shadow: 0 4px 5px rgba(0, 0, 0, 0.15);
}
.chosen-container.chosen-with-drop .chosen-drop {
    left: 0;
}
.chosen-container a {
    cursor: pointer;
}
/* @end */
/* @group Single Chosen */
.chosen-container-single .chosen-single {
    position: relative;
    display: block;
    overflow: hidden;
    padding: 0 0 0 8px;
    height: 23px;
    border: 1px solid #aaa;
    border-radius: 5px;
    background-color: #fff;
    background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #ffffff), color-stop(50%, #f6f6f6), color-stop(52%, #eeeeee), color-stop(100%, #f4f4f4));
    background: -webkit-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
    background: -moz-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
    background: -o-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
    background: linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
    background-clip: padding-box;
    box-shadow: 0 0 3px white inset, 0 1px 1px rgba(0, 0, 0, 0.1);
    color: #444;
    text-decoration: none;
    white-space: nowrap;
    line-height: 24px;
}
.chosen-container-single .chosen-default {
    color: #999;
}
.chosen-container-single .chosen-single span {
    display: block;
    overflow: hidden;
    margin-right: 26px;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.chosen-container-single .chosen-single-with-deselect span {
    margin-right: 38px;
}
.chosen-container-single .chosen-single abbr {
    position: absolute;
    top: 6px;
    right: 26px;
    display: block;
    width: 12px;
    height: 12px;
    background: url('chosen-sprite.png') -42px 1px no-repeat;
    font-size: 1px;
}
.chosen-container-single .chosen-single abbr:hover {
    background-position: -42px -10px;
}
.chosen-container-single.chosen-disabled .chosen-single abbr:hover {
    background-position: -42px -10px;
}
.chosen-container-single .chosen-single div {
    position: absolute;
    top: 0;
    right: 0;
    display: block;
    width: 18px;
    height: 100%;
}
.chosen-container-single .chosen-single div b {
    display: block;
    width: 100%;
    height: 100%;
    background: url('chosen-sprite.png') no-repeat 0px 7px;
}
.chosen-container-single .chosen-search {
    position: relative;
    z-index: 1010;
    margin: 0;
    padding: 3px 4px;
    white-space: nowrap;
}
.chosen-container-single .chosen-search input[type="text"] {
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
    margin: 1px 0;
    padding: 4px 20px 4px 5px;
    width: 100%;
    height: auto;
    outline: 0;
    border: 1px solid #aaa;
    background: white url('chosen-sprite.png') no-repeat 100% -20px;
    background: url('chosen-sprite.png') no-repeat 100% -20px;
    font-size: 1em;
    font-family: sans-serif;
    line-height: normal;
    border-radius: 0;
}
.chosen-container-single .chosen-drop {
    margin-top: -1px;
    border-radius: 0 0 4px 4px;
    background-clip: padding-box;
}
.chosen-container-single.chosen-container-single-nosearch .chosen-search {
    position: absolute;
    left: -9999px;
}
/* @end */
/* @group Results */
.chosen-container .chosen-results {
    position: relative;
    overflow-x: hidden;
    overflow-y: auto;
    margin: 0 4px 4px 0;
    padding: 0 0 0 4px;
    max-height: 240px;
    -webkit-overflow-scrolling: touch;
}
.chosen-container .chosen-results li {
    display: none;
    margin: 0;
    padding: 5px 6px;
    list-style: none;
    line-height: 15px;
    -webkit-touch-callout: none;
}
.chosen-container .chosen-results li.active-result {
    display: list-item;
    cursor: pointer;
}
.chosen-container .chosen-results li.disabled-result {
    display: list-item;
    color: #ccc;
    cursor: default;
}
.chosen-container .chosen-results li.highlighted {
    background-color: #3875d7;
    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #3875d7), color-stop(90%, #2a62bc));
    background-image: -webkit-linear-gradient(#3875d7 20%, #2a62bc 90%);
    background-image: -moz-linear-gradient(#3875d7 20%, #2a62bc 90%);
    background-image: -o-linear-gradient(#3875d7 20%, #2a62bc 90%);
    background-image: linear-gradient(#3875d7 20%, #2a62bc 90%);
    color: #fff;
}
.chosen-container .chosen-results li.no-results {
    display: list-item;
    background: #f4f4f4;
}
.chosen-container .chosen-results li.group-result {
    display: list-item;
    font-weight: bold;
    cursor: default;
}
.chosen-container .chosen-results li.group-option {
    padding-left: 15px;
}
.chosen-container .chosen-results li em {
    font-style: normal;
    text-decoration: underline;
}
/* @end */
/* @group Multi Chosen */
.chosen-container-multi .chosen-choices {
    -moz-box-sizing: border-box;
    background-color: #FFFFFF;
    border: 1px solid #CBD5DD;
    border-radius: 2px;
    cursor: text;
    height: auto !important;
    margin: 0;
    min-height: 30px;
    overflow: hidden;
    padding: 2px;
    position: relative;
    width: 100%;
}
.chosen-container-multi .chosen-choices li {
    float: left;
    list-style: none;
}
.chosen-container-multi .chosen-choices li.search-field {
    margin: 0;
    padding: 0;
    white-space: nowrap;
}
.chosen-container-multi .chosen-choices li.search-field input[type="text"] {
    margin: 1px 0;
    padding: 5px;
    height: 25px;
    outline: 0;
    border: 0 !important;
    background: transparent !important;
    box-shadow: none;
    color: #666;
    font-size: 100%;
    font-family: sans-serif;
    line-height: normal;
    border-radius: 0;
}
.chosen-container-multi .chosen-choices li.search-field .default {
    color: #999;
}
.chosen-container-multi .chosen-choices li.search-choice {
    position: relative;
    margin: 3px 0 3px 5px;
    padding: 3px 20px 3px 5px;
    border: 1px solid #aaa;
    border-radius: 3px;
    background-color: #e4e4e4;
    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eeeeee));
    background-image: -webkit-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
    background-image: -moz-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
    background-image: -o-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
    background-image: linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
    background-clip: padding-box;
    box-shadow: 0 0 2px white inset, 0 1px 0 rgba(0, 0, 0, 0.05);
    color: #333;
    line-height: 13px;
    cursor: default;
}
.chosen-container-multi .chosen-choices li.search-choice .search-choice-close {
    position: absolute;
    top: 4px;
    right: 3px;
    display: block;
    width: 12px;
    height: 12px;
    background: url('chosen-sprite.png') -42px 1px no-repeat;
    font-size: 1px;
}
.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover {
    background-position: -42px -10px;
}
.chosen-container-multi .chosen-choices li.search-choice-disabled {
    padding-right: 5px;
    border: 1px solid #ccc;
    background-color: #e4e4e4;
    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eeeeee));
    background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
    background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
    background-image: -o-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
    background-image: linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
    color: #666;
}
.chosen-container-multi .chosen-choices li.search-choice-focus {
    background: #d4d4d4;
}
.chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close {
    background-position: -42px -10px;
}
.chosen-container-multi .chosen-results {
    margin: 0;
    padding: 0;
}
.chosen-container-multi .chosen-drop .result-selected {
    display: list-item;
    color: #ccc;
    cursor: default;
}
/* @end */
/* @group Active  */
.chosen-container-active .chosen-single {
    border: 1px solid #5897fb;
    box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
}
.chosen-container-active.chosen-with-drop .chosen-single {
    border: 1px solid #aaa;
    -moz-border-radius-bottomright: 0;
    border-bottom-right-radius: 0;
    -moz-border-radius-bottomleft: 0;
    border-bottom-left-radius: 0;
}
.chosen-container-active.chosen-with-drop .chosen-single div {
    border-left: none;
    background: transparent;
}
.chosen-container-active.chosen-with-drop .chosen-single div b {
    background-position: -18px 7px;
}
.chosen-container-active .chosen-choices {
    border: 1px solid #5897fb;
    box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
}
.chosen-container-active .chosen-choices li.search-field input[type="text"] {
    color: #111 !important;
}
/* @end */
/* @group Disabled Support */
.chosen-disabled {
    opacity: 0.5 !important;
    cursor: default;
}
.chosen-disabled .chosen-single {
    cursor: default;
}
.chosen-disabled .chosen-choices .search-choice .search-choice-close {
    cursor: default;
}
/* @end */
/* @group Right to Left */
.chosen-rtl {
    text-align: right;
}
.chosen-rtl .chosen-single {
    overflow: visible;
    padding: 0 8px 0 0;
}
.chosen-rtl .chosen-single span {
    margin-right: 0;
    margin-left: 26px;
    direction: rtl;
}
.chosen-rtl .chosen-single-with-deselect span {
    margin-left: 38px;
}
.chosen-rtl .chosen-single div {
    right: auto;
    left: 3px;
}
.chosen-rtl .chosen-single abbr {
    right: auto;
    left: 26px;
}
.chosen-rtl .chosen-choices li {
    float: right;
}
.chosen-rtl .chosen-choices li.search-field input[type="text"] {
    direction: rtl;
}
.chosen-rtl .chosen-choices li.search-choice {
    margin: 3px 5px 3px 0;
    padding: 3px 5px 3px 19px;
}
.chosen-rtl .chosen-choices li.search-choice .search-choice-close {
    right: auto;
    left: 4px;
}
.chosen-rtl.chosen-container-single-nosearch .chosen-search,
.chosen-rtl .chosen-drop {
    left: 9999px;
}
.chosen-rtl.chosen-container-single .chosen-results {
    margin: 0 0 4px 4px;
    padding: 0 4px 0 0;
}
.chosen-rtl .chosen-results li.group-option {
    padding-right: 15px;
    padding-left: 0;
}
.chosen-rtl.chosen-container-active.chosen-with-drop .chosen-single div {
    border-right: none;
}
.chosen-rtl .chosen-search input[type="text"] {
    padding: 4px 5px 4px 20px;
    background: white url('chosen-sprite.png') no-repeat -30px -20px;
    background: url('chosen-sprite.png') no-repeat -30px -20px;
    direction: rtl;
}
.chosen-rtl.chosen-container-single .chosen-single div b {
    background-position: 6px 2px;
}
.chosen-rtl.chosen-container-single.chosen-with-drop .chosen-single div b {
    background-position: -12px 2px;
}
/* @end */
/* @group Retina compatibility */
@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-resolution: 144dpi) {
    .chosen-rtl .chosen-search input[type="text"],
    .chosen-container-single .chosen-single abbr,
    .chosen-container-single .chosen-single div b,
    .chosen-container-single .chosen-search input[type="text"],
    .chosen-container-multi .chosen-choices .search-choice .search-choice-close,
    .chosen-container .chosen-results-scroll-down span,
    .chosen-container .chosen-results-scroll-up span {
        background-image: url('chosen-sprite@2x.png') !important;
        background-size: 52px 37px !important;
        background-repeat: no-repeat !important;
    }
}
/* @end */

+ 168 - 0
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/clockpicker/clockpicker.css

@ -0,0 +1,168 @@
/*!
 * ClockPicker v{package.version} for Bootstrap (http://weareoutman.github.io/clockpicker/)
 * Copyright 2014 Wang Shenwei.
 * Licensed under MIT (https://github.com/weareoutman/clockpicker/blob/gh-pages/LICENSE)
 */
.clockpicker .input-group-addon {
	cursor: pointer;
}
.clockpicker-moving {
	cursor: move;
}
.clockpicker-align-left.popover > .arrow {
	left: 25px;
}
.clockpicker-align-top.popover > .arrow {
	top: 17px;
}
.clockpicker-align-right.popover > .arrow {
	left: auto;
	right: 25px;
}
.clockpicker-align-bottom.popover > .arrow {
	top: auto;
	bottom: 6px;
}
.clockpicker-popover .popover-title {
	background-color: #fff;
	color: #999;
	font-size: 24px;
	font-weight: bold;
	line-height: 30px;
	text-align: center;
}
.clockpicker-popover .popover-title span {
	cursor: pointer;
}
.clockpicker-popover .popover-content {
	background-color: #f8f8f8;
	padding: 12px;
}
.popover-content:last-child {
	border-bottom-left-radius: 5px;
	border-bottom-right-radius: 5px;
}
.clockpicker-plate {
	background-color: #fff;
	border: 1px solid #ccc;
	border-radius: 50%;
	width: 200px;
	height: 200px;
	overflow: visible;
	position: relative;
	/* Disable text selection highlighting. Thanks to Hermanya */
	-webkit-touch-callout: none;
	-webkit-user-select: none;
	-khtml-user-select: none;
	-moz-user-select: none;
	-ms-user-select: none;
	user-select: none;
}
.clockpicker-canvas,
.clockpicker-dial {
	width: 200px;
	height: 200px;
	position: absolute;
	left: -1px;
	top: -1px;
}
.clockpicker-minutes {
	visibility: hidden;
}
.clockpicker-tick {
	border-radius: 50%;
	color: #666;
	line-height: 26px;
	text-align: center;
	width: 26px;
	height: 26px;
	position: absolute;
	cursor: pointer;
}
.clockpicker-tick.active,
.clockpicker-tick:hover {
	background-color: rgb(192, 229, 247);
	background-color: rgba(0, 149, 221, .25);
}
.clockpicker-button {
	background-image: none;
	background-color: #fff;
	border-width: 1px 0 0;
	border-top-left-radius: 0;
	border-top-right-radius: 0;
	margin: 0;
	padding: 10px 0;
}
.clockpicker-button:hover {
	background-image: none;
	background-color: #ebebeb;
}
.clockpicker-button:focus {
	outline: none!important;
}
.clockpicker-dial {
	-webkit-transition: -webkit-transform 350ms, opacity 350ms;
	-moz-transition: -moz-transform 350ms, opacity 350ms;
	-ms-transition: -ms-transform 350ms, opacity 350ms;
	-o-transition: -o-transform 350ms, opacity 350ms;
	transition: transform 350ms, opacity 350ms;
}
.clockpicker-dial-out {
	opacity: 0;
}
.clockpicker-hours.clockpicker-dial-out {
	-webkit-transform: scale(1.2, 1.2);
	-moz-transform: scale(1.2, 1.2);
	-ms-transform: scale(1.2, 1.2);
	-o-transform: scale(1.2, 1.2);
	transform: scale(1.2, 1.2);
}
.clockpicker-minutes.clockpicker-dial-out {
	-webkit-transform: scale(.8, .8);
	-moz-transform: scale(.8, .8);
	-ms-transform: scale(.8, .8);
	-o-transform: scale(.8, .8);
	transform: scale(.8, .8);
}
.clockpicker-canvas {
	-webkit-transition: opacity 175ms;
	-moz-transition: opacity 175ms;
	-ms-transition: opacity 175ms;
	-o-transition: opacity 175ms;
	transition: opacity 175ms;
}
.clockpicker-canvas-out {
	opacity: 0.25;
}
.clockpicker-canvas-bearing,
.clockpicker-canvas-fg {
	stroke: none;
	fill: rgb(0, 149, 221);
}
.clockpicker-canvas-bg {
	stroke: none;
	fill: rgb(192, 229, 247);
}
.clockpicker-canvas-bg-trans {
	fill: rgba(0, 149, 221, .25);
}
.clockpicker-canvas line {
	stroke: rgb(0, 149, 221);
	stroke-width: 1;
	stroke-linecap: round;
	/*shape-rendering: crispEdges;*/
}
.clockpicker-button.am-button {
	margin: 1px;
	padding: 5px;
	border: 1px solid rgba(0, 0, 0, .2);
	border-radius: 4px;
	
}
.clockpicker-button.pm-button {
	margin: 1px 1px 1px 136px;
	padding: 5px;
	border: 1px solid rgba(0, 0, 0, .2);
	border-radius: 4px;
}

File diff suppressed because it is too large
+ 77 - 0
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/codemirror/ambiance.css


+ 309 - 0
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/codemirror/codemirror.css

@ -0,0 +1,309 @@
/* BASICS */
.CodeMirror {
  /* Set height, width, borders, and global font properties here */
  font-family: monospace;
  height: 300px;
}
.CodeMirror-scroll {
  /* Set scrolling behaviour here */
  overflow: auto;
}
/* PADDING */
.CodeMirror-lines {
  padding: 4px 0; /* Vertical padding around content */
}
.CodeMirror pre {
  padding: 0 4px; /* Horizontal padding of content */
}
.CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {
  background-color: white; /* The little square between H and V scrollbars */
}
/* GUTTER */
.CodeMirror-gutters {
  border-right: 1px solid #ddd;
  background-color: #f7f7f7;
  white-space: nowrap;
}
.CodeMirror-linenumbers {}
.CodeMirror-linenumber {
  padding: 0 3px 0 5px;
  min-width: 20px;
  text-align: right;
  color: #999;
  -moz-box-sizing: content-box;
  box-sizing: content-box;
}
.CodeMirror-guttermarker { color: black; }
.CodeMirror-guttermarker-subtle { color: #999; }
/* CURSOR */
.CodeMirror div.CodeMirror-cursor {
  border-left: 1px solid black;
}
/* Shown when moving in bi-directional text */
.CodeMirror div.CodeMirror-secondarycursor {
  border-left: 1px solid silver;
}
.CodeMirror.cm-keymap-fat-cursor div.CodeMirror-cursor {
  width: auto;
  border: 0;
  background: #7e7;
}
.CodeMirror.cm-keymap-fat-cursor div.CodeMirror-cursors {
  z-index: 1;
}
.cm-animate-fat-cursor {
  width: auto;
  border: 0;
  -webkit-animation: blink 1.06s steps(1) infinite;
  -moz-animation: blink 1.06s steps(1) infinite;
  animation: blink 1.06s steps(1) infinite;
}
@-moz-keyframes blink {
  0% { background: #7e7; }
  50% { background: none; }
  100% { background: #7e7; }
}
@-webkit-keyframes blink {
  0% { background: #7e7; }
  50% { background: none; }
  100% { background: #7e7; }
}
@keyframes blink {
  0% { background: #7e7; }
  50% { background: none; }
  100% { background: #7e7; }
}
/* Can style cursor different in overwrite (non-insert) mode */
div.CodeMirror-overwrite div.CodeMirror-cursor {}
.cm-tab { display: inline-block; text-decoration: inherit; }
.CodeMirror-ruler {
  border-left: 1px solid #ccc;
  position: absolute;
}
/* DEFAULT THEME */
.cm-s-default .cm-keyword {color: #708;}
.cm-s-default .cm-atom {color: #219;}
.cm-s-default .cm-number {color: #164;}
.cm-s-default .cm-def {color: #00f;}
.cm-s-default .cm-variable,
.cm-s-default .cm-punctuation,
.cm-s-default .cm-property,
.cm-s-default .cm-operator {}
.cm-s-default .cm-variable-2 {color: #05a;}
.cm-s-default .cm-variable-3 {color: #085;}
.cm-s-default .cm-comment {color: #a50;}
.cm-s-default .cm-string {color: #a11;}
.cm-s-default .cm-string-2 {color: #f50;}
.cm-s-default .cm-meta {color: #555;}
.cm-s-default .cm-qualifier {color: #555;}
.cm-s-default .cm-builtin {color: #30a;}
.cm-s-default .cm-bracket {color: #997;}
.cm-s-default .cm-tag {color: #170;}
.cm-s-default .cm-attribute {color: #00c;}
.cm-s-default .cm-header {color: blue;}
.cm-s-default .cm-quote {color: #090;}
.cm-s-default .cm-hr {color: #999;}
.cm-s-default .cm-link {color: #00c;}
.cm-negative {color: #d44;}
.cm-positive {color: #292;}
.cm-header, .cm-strong {font-weight: bold;}
.cm-em {font-style: italic;}
.cm-link {text-decoration: underline;}
.cm-s-default .cm-error {color: #f00;}
.cm-invalidchar {color: #f00;}
/* Default styles for common addons */
div.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;}
div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;}
.CodeMirror-matchingtag { background: rgba(255, 150, 0, .3); }
.CodeMirror-activeline-background {background: #e8f2ff;}
/* STOP */
/* The rest of this file contains styles related to the mechanics of
   the editor. You probably shouldn't touch them. */
.CodeMirror {
  line-height: 1;
  position: relative;
  overflow: hidden;
  background: white;
  color: black;
}
.CodeMirror-scroll {
  /* 30px is the magic margin used to hide the element's real scrollbars */
  /* See overflow: hidden in .CodeMirror */
  margin-bottom: -30px; margin-right: -30px;
  padding-bottom: 30px;
  height: 100%;
  outline: none; /* Prevent dragging from highlighting the element */
  position: relative;
  -moz-box-sizing: content-box;
  box-sizing: content-box;
}
.CodeMirror-sizer {
  position: relative;
  border-right: 30px solid transparent;
  -moz-box-sizing: content-box;
  box-sizing: content-box;
}
/* The fake, visible scrollbars. Used to force redraw during scrolling
   before actuall scrolling happens, thus preventing shaking and
   flickering artifacts. */
.CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {
  position: absolute;
  z-index: 6;
  display: none;
}
.CodeMirror-vscrollbar {
  right: 0; top: 0;
  overflow-x: hidden;
  overflow-y: scroll;
}
.CodeMirror-hscrollbar {
  bottom: 0; left: 0;
  overflow-y: hidden;
  overflow-x: scroll;
}
.CodeMirror-scrollbar-filler {
  right: 0; bottom: 0;
}
.CodeMirror-gutter-filler {
  left: 0; bottom: 0;
}
.CodeMirror-gutters {
  position: absolute; left: 0; top: 0;
  padding-bottom: 30px;
  z-index: 3;
}
.CodeMirror-gutter {
  white-space: normal;
  height: 100%;
  -moz-box-sizing: content-box;
  box-sizing: content-box;
  padding-bottom: 30px;
  margin-bottom: -32px;
  display: inline-block;
  /* Hack to make IE7 behave */
  *zoom:1;
  *display:inline;
}
.CodeMirror-gutter-elt {
  position: absolute;
  cursor: default;
  z-index: 4;
}
.CodeMirror-lines {
  cursor: text;
  min-height: 1px; /* prevents collapsing before first draw */
}
.CodeMirror pre {
  /* Reset some styles that the rest of the page might have set */
  -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0;
  border-width: 0;
  background: transparent;
  font-family: inherit;
  font-size: inherit;
  margin: 0;
  white-space: pre;
  word-wrap: normal;
  line-height: inherit;
  color: inherit;
  z-index: 2;
  position: relative;
  overflow: visible;
}
.CodeMirror-wrap pre {
  word-wrap: break-word;
  white-space: pre-wrap;
  word-break: normal;
}
.CodeMirror-linebackground {
  position: absolute;
  left: 0; right: 0; top: 0; bottom: 0;
  z-index: 0;
}
.CodeMirror-linewidget {
  position: relative;
  z-index: 2;
  overflow: auto;
}
.CodeMirror-widget {}
.CodeMirror-wrap .CodeMirror-scroll {
  overflow-x: hidden;
}
.CodeMirror-measure {
  position: absolute;
  width: 100%;
  height: 0;
  overflow: hidden;
  visibility: hidden;
}
.CodeMirror-measure pre { position: static; }
.CodeMirror div.CodeMirror-cursor {
  position: absolute;
  border-right: none;
  width: 0;
}
div.CodeMirror-cursors {
  visibility: hidden;
  position: relative;
  z-index: 3;
}
.CodeMirror-focused div.CodeMirror-cursors {
  visibility: visible;
}
.CodeMirror-selected { background: #d9d9d9; }
.CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; }
.CodeMirror-crosshair { cursor: crosshair; }
.cm-searching {
  background: #ffa;
  background: rgba(255, 255, 0, .4);
}
/* IE7 hack to prevent it from returning funny offsetTops on the spans */
.CodeMirror span { *vertical-align: text-bottom; }
/* Used to force a border model for a node */
.cm-force-border { padding-right: .1px; }
@media print {
  /* Hide the cursor when printing */
  .CodeMirror div.CodeMirror-cursors {
    visibility: hidden;
  }
}
/* Help users use markselection to safely style text background */
span.CodeMirror-selectedtext { background: none; }

File diff suppressed because it is too large
+ 9 - 0
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/colorpicker/css/bootstrap-colorpicker.min.css


BIN
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/colorpicker/img/bootstrap-colorpicker/alpha.png


BIN
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/colorpicker/img/bootstrap-colorpicker/hue.png


BIN
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/colorpicker/img/bootstrap-colorpicker/saturation.png


File diff suppressed because it is too large
+ 9 - 0
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/cropper/cropper.min.css


+ 231 - 0
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/dataTables/dataTables.bootstrap.css

@ -0,0 +1,231 @@
div.dataTables_length label {
    float: left;
    text-align: left;
    font-weight: normal;
}
div.dataTables_length select {
    width: 75px;
}
div.dataTables_filter label {
    float: right;
    font-weight: normal;
}
div.dataTables_filter input {
    width: 16em;
}
div.dataTables_info {
    padding-top: 8px;
}
div.dataTables_paginate {
    float: right;
    margin: 0;
}
div.dataTables_paginate ul.pagination {
    margin: 2px 0;
    white-space: nowrap;
}
table.dataTable,
table.dataTable td,
table.dataTable th {
    -webkit-box-sizing: content-box;
    -moz-box-sizing: content-box;
    box-sizing: content-box;
}
table.dataTable {
    clear: both;
    margin-top: 6px !important;
    margin-bottom: 6px !important;
    max-width: none !important;
}
table.dataTable thead .sorting,
table.dataTable thead .sorting_asc,
table.dataTable thead .sorting_desc,
table.dataTable thead .sorting_asc_disabled,
table.dataTable thead .sorting_desc_disabled {
    cursor: pointer;
}
table.dataTable thead .sorting {
    
}
table.dataTable thead .sorting_asc {
    background: url('../images/sort_asc.png') no-repeat center right;
}
table.dataTable thead .sorting_desc {
    background: url('../images/sort_desc.png') no-repeat center right;
}
table.dataTable thead .sorting_asc_disabled {
}
table.dataTable thead .sorting_desc_disabled {
}
table.dataTable th:active {
    outline: none;
}
/* Scrolling */
div.dataTables_scrollHead table {
    margin-bottom: 0 !important;
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
}
div.dataTables_scrollHead table thead tr:last-child th:first-child,
div.dataTables_scrollHead table thead tr:last-child td:first-child {
    border-bottom-left-radius: 0 !important;
    border-bottom-right-radius: 0 !important;
}
div.dataTables_scrollBody table {
    margin-top: 0 !important;
    margin-bottom: 0 !important;
    border-top: none;
}
div.dataTables_scrollBody tbody tr:first-child th,
div.dataTables_scrollBody tbody tr:first-child td {
    border-top: none;
}
div.dataTables_scrollFoot table {
    margin-top: 0 !important;
    border-top: none;
}
/*
 * TableTools styles
 */
.table tbody tr.active td,
.table tbody tr.active th {
    color: white;
    background-color: #08C;
}
.table tbody tr.active:hover td,
.table tbody tr.active:hover th {
    background-color: #0075b0 !important;
}
.table tbody tr.active a {
    color: white;
}
.table-striped tbody tr.active:nth-child(odd) td,
.table-striped tbody tr.active:nth-child(odd) th {
    background-color: #017ebc;
}
table.DTTT_selectable tbody tr {
    cursor: pointer;
}
div.DTTT .btn {
    font-size: 12px;
    color: #333 !important;
}
div.DTTT .btn:hover {
    text-decoration: none !important;
}
ul.DTTT_dropdown.dropdown-menu {
    z-index: 2003;
}
ul.DTTT_dropdown.dropdown-menu a {
    color: #333 !important; /* needed only when demo_page.css is included */
}
ul.DTTT_dropdown.dropdown-menu li {
    position: relative;
}
ul.DTTT_dropdown.dropdown-menu li:hover a {
    color: white !important;
    background-color: #0088cc;
}
div.DTTT_collection_background {
    z-index: 2002;
}
/* TableTools information display */
div.DTTT_print_info.modal {
    height: 150px;
    margin-top: -75px;
    text-align: center;
}
div.DTTT_print_info h6 {
    margin: 1em;
    font-size: 28px;
    font-weight: normal;
    line-height: 28px;
}
div.DTTT_print_info p {
    font-size: 14px;
    line-height: 20px;
}
/*
 * FixedColumns styles
 */
div.DTFC_LeftHeadWrapper table,
div.DTFC_LeftFootWrapper table,
div.DTFC_RightHeadWrapper table,
div.DTFC_RightFootWrapper table,
table.DTFC_Cloned tr.even {
    background-color: white;
}
div.DTFC_RightHeadWrapper table,
div.DTFC_LeftHeadWrapper table {
    margin-bottom: 0 !important;
    border-top-right-radius: 0 !important;
    border-bottom-left-radius: 0 !important;
    border-bottom-right-radius: 0 !important;
}
div.DTFC_RightHeadWrapper table thead tr:last-child th:first-child,
div.DTFC_RightHeadWrapper table thead tr:last-child td:first-child,
div.DTFC_LeftHeadWrapper table thead tr:last-child th:first-child,
div.DTFC_LeftHeadWrapper table thead tr:last-child td:first-child {
    border-bottom-left-radius: 0 !important;
    border-bottom-right-radius: 0 !important;
}
div.DTFC_RightBodyWrapper table,
div.DTFC_LeftBodyWrapper table {
    margin-bottom: 0 !important;
    border-top: none;
}
div.DTFC_RightBodyWrapper tbody tr:first-child th,
div.DTFC_RightBodyWrapper tbody tr:first-child td,
div.DTFC_LeftBodyWrapper tbody tr:first-child th,
div.DTFC_LeftBodyWrapper tbody tr:first-child td {
    border-top: none;
}
div.DTFC_RightFootWrapper table,
div.DTFC_LeftFootWrapper table {
    border-top: none;
}

+ 789 - 0
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/datapicker/datepicker3.css

@ -0,0 +1,789 @@
/*!
 * Datepicker for Bootstrap
 *
 * Copyright 2012 Stefan Petre
 * Improvements by Andrew Rowls
 * Licensed under the Apache License v2.0
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 */
.datepicker {
  padding: 4px;
  border-radius: 4px;
  direction: ltr;
  /*.dow {
		border-top: 1px solid #ddd !important;
	}*/
}
.datepicker-inline {
  width: 220px;
}
.datepicker.datepicker-rtl {
  direction: rtl;
}
.datepicker.datepicker-rtl table tr td span {
  float: right;
}
.datepicker-dropdown {
  top: 0;
  left: 0;
}
.datepicker-dropdown:before {
  content: '';
  display: inline-block;
  border-left: 7px solid transparent;
  border-right: 7px solid transparent;
  border-bottom: 7px solid #ccc;
  border-top: 0;
  border-bottom-color: rgba(0, 0, 0, 0.2);
  position: absolute;
}
.datepicker-dropdown:after {
  content: '';
  display: inline-block;
  border-left: 6px solid transparent;
  border-right: 6px solid transparent;
  border-bottom: 6px solid #fff;
  border-top: 0;
  position: absolute;
}
.datepicker-dropdown.datepicker-orient-left:before {
  left: 6px;
}
.datepicker-dropdown.datepicker-orient-left:after {
  left: 7px;
}
.datepicker-dropdown.datepicker-orient-right:before {
  right: 6px;
}
.datepicker-dropdown.datepicker-orient-right:after {
  right: 7px;
}
.datepicker-dropdown.datepicker-orient-top:before {
  top: -7px;
}
.datepicker-dropdown.datepicker-orient-top:after {
  top: -6px;
}
.datepicker-dropdown.datepicker-orient-bottom:before {
  bottom: -7px;
  border-bottom: 0;
  border-top: 7px solid #999;
}
.datepicker-dropdown.datepicker-orient-bottom:after {
  bottom: -6px;
  border-bottom: 0;
  border-top: 6px solid #fff;
}
.datepicker > div {
  display: none;
}
.datepicker.days div.datepicker-days {
  display: block;
}
.datepicker.months div.datepicker-months {
  display: block;
}
.datepicker.years div.datepicker-years {
  display: block;
}
.datepicker table {
  margin: 0;
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}
.datepicker table tr td,
.datepicker table tr th {
  text-align: center;
  width: 30px;
  height: 30px;
  border-radius: 4px;
  border: none;
}
.table-striped .datepicker table tr td,
.table-striped .datepicker table tr th {
  background-color: transparent;
}
.datepicker table tr td.day:hover,
.datepicker table tr td.day.focused {
  background: #eeeeee;
  cursor: pointer;
}
.datepicker table tr td.old,
.datepicker table tr td.new {
  color: #999999;
}
.datepicker table tr td.disabled,
.datepicker table tr td.disabled:hover {
  background: none;
  color: #999999;
  cursor: default;
}
.datepicker table tr td.today,
.datepicker table tr td.today:hover,
.datepicker table tr td.today.disabled,
.datepicker table tr td.today.disabled:hover {
  color: #000000;
  background-color: #ffdb99;
  border-color: #ffb733;
}
.datepicker table tr td.today:hover,
.datepicker table tr td.today:hover:hover,
.datepicker table tr td.today.disabled:hover,
.datepicker table tr td.today.disabled:hover:hover,
.datepicker table tr td.today:focus,
.datepicker table tr td.today:hover:focus,
.datepicker table tr td.today.disabled:focus,
.datepicker table tr td.today.disabled:hover:focus,
.datepicker table tr td.today:active,
.datepicker table tr td.today:hover:active,
.datepicker table tr td.today.disabled:active,
.datepicker table tr td.today.disabled:hover:active,
.datepicker table tr td.today.active,
.datepicker table tr td.today:hover.active,
.datepicker table tr td.today.disabled.active,
.datepicker table tr td.today.disabled:hover.active,
.open .dropdown-toggle.datepicker table tr td.today,
.open .dropdown-toggle.datepicker table tr td.today:hover,
.open .dropdown-toggle.datepicker table tr td.today.disabled,
.open .dropdown-toggle.datepicker table tr td.today.disabled:hover {
  color: #000000;
  background-color: #ffcd70;
  border-color: #f59e00;
}
.datepicker table tr td.today:active,
.datepicker table tr td.today:hover:active,
.datepicker table tr td.today.disabled:active,
.datepicker table tr td.today.disabled:hover:active,
.datepicker table tr td.today.active,
.datepicker table tr td.today:hover.active,
.datepicker table tr td.today.disabled.active,
.datepicker table tr td.today.disabled:hover.active,
.open .dropdown-toggle.datepicker table tr td.today,
.open .dropdown-toggle.datepicker table tr td.today:hover,
.open .dropdown-toggle.datepicker table tr td.today.disabled,
.open .dropdown-toggle.datepicker table tr td.today.disabled:hover {
  background-image: none;
}
.datepicker table tr td.today.disabled,
.datepicker table tr td.today:hover.disabled,
.datepicker table tr td.today.disabled.disabled,
.datepicker table tr td.today.disabled:hover.disabled,
.datepicker table tr td.today[disabled],
.datepicker table tr td.today:hover[disabled],
.datepicker table tr td.today.disabled[disabled],
.datepicker table tr td.today.disabled:hover[disabled],
fieldset[disabled] .datepicker table tr td.today,
fieldset[disabled] .datepicker table tr td.today:hover,
fieldset[disabled] .datepicker table tr td.today.disabled,
fieldset[disabled] .datepicker table tr td.today.disabled:hover,
.datepicker table tr td.today.disabled:hover,
.datepicker table tr td.today:hover.disabled:hover,
.datepicker table tr td.today.disabled.disabled:hover,
.datepicker table tr td.today.disabled:hover.disabled:hover,
.datepicker table tr td.today[disabled]:hover,
.datepicker table tr td.today:hover[disabled]:hover,
.datepicker table tr td.today.disabled[disabled]:hover,
.datepicker table tr td.today.disabled:hover[disabled]:hover,
fieldset[disabled] .datepicker table tr td.today:hover,
fieldset[disabled] .datepicker table tr td.today:hover:hover,
fieldset[disabled] .datepicker table tr td.today.disabled:hover,
fieldset[disabled] .datepicker table tr td.today.disabled:hover:hover,
.datepicker table tr td.today.disabled:focus,
.datepicker table tr td.today:hover.disabled:focus,
.datepicker table tr td.today.disabled.disabled:focus,
.datepicker table tr td.today.disabled:hover.disabled:focus,
.datepicker table tr td.today[disabled]:focus,
.datepicker table tr td.today:hover[disabled]:focus,
.datepicker table tr td.today.disabled[disabled]:focus,
.datepicker table tr td.today.disabled:hover[disabled]:focus,
fieldset[disabled] .datepicker table tr td.today:focus,
fieldset[disabled] .datepicker table tr td.today:hover:focus,
fieldset[disabled] .datepicker table tr td.today.disabled:focus,
fieldset[disabled] .datepicker table tr td.today.disabled:hover:focus,
.datepicker table tr td.today.disabled:active,
.datepicker table tr td.today:hover.disabled:active,
.datepicker table tr td.today.disabled.disabled:active,
.datepicker table tr td.today.disabled:hover.disabled:active,
.datepicker table tr td.today[disabled]:active,
.datepicker table tr td.today:hover[disabled]:active,
.datepicker table tr td.today.disabled[disabled]:active,
.datepicker table tr td.today.disabled:hover[disabled]:active,
fieldset[disabled] .datepicker table tr td.today:active,
fieldset[disabled] .datepicker table tr td.today:hover:active,
fieldset[disabled] .datepicker table tr td.today.disabled:active,
fieldset[disabled] .datepicker table tr td.today.disabled:hover:active,
.datepicker table tr td.today.disabled.active,
.datepicker table tr td.today:hover.disabled.active,
.datepicker table tr td.today.disabled.disabled.active,
.datepicker table tr td.today.disabled:hover.disabled.active,
.datepicker table tr td.today[disabled].active,
.datepicker table tr td.today:hover[disabled].active,
.datepicker table tr td.today.disabled[disabled].active,
.datepicker table tr td.today.disabled:hover[disabled].active,
fieldset[disabled] .datepicker table tr td.today.active,
fieldset[disabled] .datepicker table tr td.today:hover.active,
fieldset[disabled] .datepicker table tr td.today.disabled.active,
fieldset[disabled] .datepicker table tr td.today.disabled:hover.active {
  background-color: #ffdb99;
  border-color: #ffb733;
}
.datepicker table tr td.today:hover:hover {
  color: #000;
}
.datepicker table tr td.today.active:hover {
  color: #fff;
}
.datepicker table tr td.range,
.datepicker table tr td.range:hover,
.datepicker table tr td.range.disabled,
.datepicker table tr td.range.disabled:hover {
  background: #eeeeee;
  border-radius: 0;
}
.datepicker table tr td.range.today,
.datepicker table tr td.range.today:hover,
.datepicker table tr td.range.today.disabled,
.datepicker table tr td.range.today.disabled:hover {
  color: #000000;
  background-color: #f7ca77;
  border-color: #f1a417;
  border-radius: 0;
}
.datepicker table tr td.range.today:hover,
.datepicker table tr td.range.today:hover:hover,
.datepicker table tr td.range.today.disabled:hover,
.datepicker table tr td.range.today.disabled:hover:hover,
.datepicker table tr td.range.today:focus,
.datepicker table tr td.range.today:hover:focus,
.datepicker table tr td.range.today.disabled:focus,
.datepicker table tr td.range.today.disabled:hover:focus,
.datepicker table tr td.range.today:active,
.datepicker table tr td.range.today:hover:active,
.datepicker table tr td.range.today.disabled:active,
.datepicker table tr td.range.today.disabled:hover:active,
.datepicker table tr td.range.today.active,
.datepicker table tr td.range.today:hover.active,
.datepicker table tr td.range.today.disabled.active,
.datepicker table tr td.range.today.disabled:hover.active,
.open .dropdown-toggle.datepicker table tr td.range.today,
.open .dropdown-toggle.datepicker table tr td.range.today:hover,
.open .dropdown-toggle.datepicker table tr td.range.today.disabled,
.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover {
  color: #000000;
  background-color: #f4bb51;
  border-color: #bf800c;
}
.datepicker table tr td.range.today:active,
.datepicker table tr td.range.today:hover:active,
.datepicker table tr td.range.today.disabled:active,
.datepicker table tr td.range.today.disabled:hover:active,
.datepicker table tr td.range.today.active,
.datepicker table tr td.range.today:hover.active,
.datepicker table tr td.range.today.disabled.active,
.datepicker table tr td.range.today.disabled:hover.active,
.open .dropdown-toggle.datepicker table tr td.range.today,
.open .dropdown-toggle.datepicker table tr td.range.today:hover,
.open .dropdown-toggle.datepicker table tr td.range.today.disabled,
.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover {
  background-image: none;
}
.datepicker table tr td.range.today.disabled,
.datepicker table tr td.range.today:hover.disabled,
.datepicker table tr td.range.today.disabled.disabled,
.datepicker table tr td.range.today.disabled:hover.disabled,
.datepicker table tr td.range.today[disabled],
.datepicker table tr td.range.today:hover[disabled],
.datepicker table tr td.range.today.disabled[disabled],
.datepicker table tr td.range.today.disabled:hover[disabled],
fieldset[disabled] .datepicker table tr td.range.today,
fieldset[disabled] .datepicker table tr td.range.today:hover,
fieldset[disabled] .datepicker table tr td.range.today.disabled,
fieldset[disabled] .datepicker table tr td.range.today.disabled:hover,
.datepicker table tr td.range.today.disabled:hover,
.datepicker table tr td.range.today:hover.disabled:hover,
.datepicker table tr td.range.today.disabled.disabled:hover,
.datepicker table tr td.range.today.disabled:hover.disabled:hover,
.datepicker table tr td.range.today[disabled]:hover,
.datepicker table tr td.range.today:hover[disabled]:hover,
.datepicker table tr td.range.today.disabled[disabled]:hover,
.datepicker table tr td.range.today.disabled:hover[disabled]:hover,
fieldset[disabled] .datepicker table tr td.range.today:hover,
fieldset[disabled] .datepicker table tr td.range.today:hover:hover,
fieldset[disabled] .datepicker table tr td.range.today.disabled:hover,
fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:hover,
.datepicker table tr td.range.today.disabled:focus,
.datepicker table tr td.range.today:hover.disabled:focus,
.datepicker table tr td.range.today.disabled.disabled:focus,
.datepicker table tr td.range.today.disabled:hover.disabled:focus,
.datepicker table tr td.range.today[disabled]:focus,
.datepicker table tr td.range.today:hover[disabled]:focus,
.datepicker table tr td.range.today.disabled[disabled]:focus,
.datepicker table tr td.range.today.disabled:hover[disabled]:focus,
fieldset[disabled] .datepicker table tr td.range.today:focus,
fieldset[disabled] .datepicker table tr td.range.today:hover:focus,
fieldset[disabled] .datepicker table tr td.range.today.disabled:focus,
fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:focus,
.datepicker table tr td.range.today.disabled:active,
.datepicker table tr td.range.today:hover.disabled:active,
.datepicker table tr td.range.today.disabled.disabled:active,
.datepicker table tr td.range.today.disabled:hover.disabled:active,
.datepicker table tr td.range.today[disabled]:active,
.datepicker table tr td.range.today:hover[disabled]:active,
.datepicker table tr td.range.today.disabled[disabled]:active,
.datepicker table tr td.range.today.disabled:hover[disabled]:active,
fieldset[disabled] .datepicker table tr td.range.today:active,
fieldset[disabled] .datepicker table tr td.range.today:hover:active,
fieldset[disabled] .datepicker table tr td.range.today.disabled:active,
fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:active,
.datepicker table tr td.range.today.disabled.active,
.datepicker table tr td.range.today:hover.disabled.active,
.datepicker table tr td.range.today.disabled.disabled.active,
.datepicker table tr td.range.today.disabled:hover.disabled.active,
.datepicker table tr td.range.today[disabled].active,
.datepicker table tr td.range.today:hover[disabled].active,
.datepicker table tr td.range.today.disabled[disabled].active,
.datepicker table tr td.range.today.disabled:hover[disabled].active,
fieldset[disabled] .datepicker table tr td.range.today.active,
fieldset[disabled] .datepicker table tr td.range.today:hover.active,
fieldset[disabled] .datepicker table tr td.range.today.disabled.active,
fieldset[disabled] .datepicker table tr td.range.today.disabled:hover.active {
  background-color: #f7ca77;
  border-color: #f1a417;
}
.datepicker table tr td.selected,
.datepicker table tr td.selected:hover,
.datepicker table tr td.selected.disabled,
.datepicker table tr td.selected.disabled:hover {
  color: #ffffff;
  background-color: #999999;
  border-color: #555555;
  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
}
.datepicker table tr td.selected:hover,
.datepicker table tr td.selected:hover:hover,
.datepicker table tr td.selected.disabled:hover,
.datepicker table tr td.selected.disabled:hover:hover,
.datepicker table tr td.selected:focus,
.datepicker table tr td.selected:hover:focus,
.datepicker table tr td.selected.disabled:focus,
.datepicker table tr td.selected.disabled:hover:focus,
.datepicker table tr td.selected:active,
.datepicker table tr td.selected:hover:active,
.datepicker table tr td.selected.disabled:active,
.datepicker table tr td.selected.disabled:hover:active,
.datepicker table tr td.selected.active,
.datepicker table tr td.selected:hover.active,
.datepicker table tr td.selected.disabled.active,
.datepicker table tr td.selected.disabled:hover.active,
.open .dropdown-toggle.datepicker table tr td.selected,
.open .dropdown-toggle.datepicker table tr td.selected:hover,
.open .dropdown-toggle.datepicker table tr td.selected.disabled,
.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover {
  color: #ffffff;
  background-color: #858585;
  border-color: #373737;
}
.datepicker table tr td.selected:active,
.datepicker table tr td.selected:hover:active,
.datepicker table tr td.selected.disabled:active,
.datepicker table tr td.selected.disabled:hover:active,
.datepicker table tr td.selected.active,
.datepicker table tr td.selected:hover.active,
.datepicker table tr td.selected.disabled.active,
.datepicker table tr td.selected.disabled:hover.active,
.open .dropdown-toggle.datepicker table tr td.selected,
.open .dropdown-toggle.datepicker table tr td.selected:hover,
.open .dropdown-toggle.datepicker table tr td.selected.disabled,
.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover {
  background-image: none;
}
.datepicker table tr td.selected.disabled,
.datepicker table tr td.selected:hover.disabled,
.datepicker table tr td.selected.disabled.disabled,
.datepicker table tr td.selected.disabled:hover.disabled,
.datepicker table tr td.selected[disabled],
.datepicker table tr td.selected:hover[disabled],
.datepicker table tr td.selected.disabled[disabled],
.datepicker table tr td.selected.disabled:hover[disabled],
fieldset[disabled] .datepicker table tr td.selected,
fieldset[disabled] .datepicker table tr td.selected:hover,
fieldset[disabled] .datepicker table tr td.selected.disabled,
fieldset[disabled] .datepicker table tr td.selected.disabled:hover,
.datepicker table tr td.selected.disabled:hover,
.datepicker table tr td.selected:hover.disabled:hover,
.datepicker table tr td.selected.disabled.disabled:hover,
.datepicker table tr td.selected.disabled:hover.disabled:hover,
.datepicker table tr td.selected[disabled]:hover,
.datepicker table tr td.selected:hover[disabled]:hover,
.datepicker table tr td.selected.disabled[disabled]:hover,
.datepicker table tr td.selected.disabled:hover[disabled]:hover,
fieldset[disabled] .datepicker table tr td.selected:hover,
fieldset[disabled] .datepicker table tr td.selected:hover:hover,
fieldset[disabled] .datepicker table tr td.selected.disabled:hover,
fieldset[disabled] .datepicker table tr td.selected.disabled:hover:hover,
.datepicker table tr td.selected.disabled:focus,
.datepicker table tr td.selected:hover.disabled:focus,
.datepicker table tr td.selected.disabled.disabled:focus,
.datepicker table tr td.selected.disabled:hover.disabled:focus,
.datepicker table tr td.selected[disabled]:focus,
.datepicker table tr td.selected:hover[disabled]:focus,
.datepicker table tr td.selected.disabled[disabled]:focus,
.datepicker table tr td.selected.disabled:hover[disabled]:focus,
fieldset[disabled] .datepicker table tr td.selected:focus,
fieldset[disabled] .datepicker table tr td.selected:hover:focus,
fieldset[disabled] .datepicker table tr td.selected.disabled:focus,
fieldset[disabled] .datepicker table tr td.selected.disabled:hover:focus,
.datepicker table tr td.selected.disabled:active,
.datepicker table tr td.selected:hover.disabled:active,
.datepicker table tr td.selected.disabled.disabled:active,
.datepicker table tr td.selected.disabled:hover.disabled:active,
.datepicker table tr td.selected[disabled]:active,
.datepicker table tr td.selected:hover[disabled]:active,
.datepicker table tr td.selected.disabled[disabled]:active,
.datepicker table tr td.selected.disabled:hover[disabled]:active,
fieldset[disabled] .datepicker table tr td.selected:active,
fieldset[disabled] .datepicker table tr td.selected:hover:active,
fieldset[disabled] .datepicker table tr td.selected.disabled:active,
fieldset[disabled] .datepicker table tr td.selected.disabled:hover:active,
.datepicker table tr td.selected.disabled.active,
.datepicker table tr td.selected:hover.disabled.active,
.datepicker table tr td.selected.disabled.disabled.active,
.datepicker table tr td.selected.disabled:hover.disabled.active,
.datepicker table tr td.selected[disabled].active,
.datepicker table tr td.selected:hover[disabled].active,
.datepicker table tr td.selected.disabled[disabled].active,
.datepicker table tr td.selected.disabled:hover[disabled].active,
fieldset[disabled] .datepicker table tr td.selected.active,
fieldset[disabled] .datepicker table tr td.selected:hover.active,
fieldset[disabled] .datepicker table tr td.selected.disabled.active,
fieldset[disabled] .datepicker table tr td.selected.disabled:hover.active {
  background-color: #999999;
  border-color: #555555;
}
.datepicker table tr td.active,
.datepicker table tr td.active:hover,
.datepicker table tr td.active.disabled,
.datepicker table tr td.active.disabled:hover {
  color: #ffffff;
  background-color: #428bca;
  border-color: #357ebd;
  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
}
.datepicker table tr td.active:hover,
.datepicker table tr td.active:hover:hover,
.datepicker table tr td.active.disabled:hover,
.datepicker table tr td.active.disabled:hover:hover,
.datepicker table tr td.active:focus,
.datepicker table tr td.active:hover:focus,
.datepicker table tr td.active.disabled:focus,
.datepicker table tr td.active.disabled:hover:focus,
.datepicker table tr td.active:active,
.datepicker table tr td.active:hover:active,
.datepicker table tr td.active.disabled:active,
.datepicker table tr td.active.disabled:hover:active,
.datepicker table tr td.active.active,
.datepicker table tr td.active:hover.active,
.datepicker table tr td.active.disabled.active,
.datepicker table tr td.active.disabled:hover.active,
.open .dropdown-toggle.datepicker table tr td.active,
.open .dropdown-toggle.datepicker table tr td.active:hover,
.open .dropdown-toggle.datepicker table tr td.active.disabled,
.open .dropdown-toggle.datepicker table tr td.active.disabled:hover {
  color: #ffffff;
  background-color: #3276b1;
  border-color: #285e8e;
}
.datepicker table tr td.active:active,
.datepicker table tr td.active:hover:active,
.datepicker table tr td.active.disabled:active,
.datepicker table tr td.active.disabled:hover:active,
.datepicker table tr td.active.active,
.datepicker table tr td.active:hover.active,
.datepicker table tr td.active.disabled.active,
.datepicker table tr td.active.disabled:hover.active,
.open .dropdown-toggle.datepicker table tr td.active,
.open .dropdown-toggle.datepicker table tr td.active:hover,
.open .dropdown-toggle.datepicker table tr td.active.disabled,
.open .dropdown-toggle.datepicker table tr td.active.disabled:hover {
  background-image: none;
}
.datepicker table tr td.active.disabled,
.datepicker table tr td.active:hover.disabled,
.datepicker table tr td.active.disabled.disabled,
.datepicker table tr td.active.disabled:hover.disabled,
.datepicker table tr td.active[disabled],
.datepicker table tr td.active:hover[disabled],
.datepicker table tr td.active.disabled[disabled],
.datepicker table tr td.active.disabled:hover[disabled],
fieldset[disabled] .datepicker table tr td.active,
fieldset[disabled] .datepicker table tr td.active:hover,
fieldset[disabled] .datepicker table tr td.active.disabled,
fieldset[disabled] .datepicker table tr td.active.disabled:hover,
.datepicker table tr td.active.disabled:hover,
.datepicker table tr td.active:hover.disabled:hover,
.datepicker table tr td.active.disabled.disabled:hover,
.datepicker table tr td.active.disabled:hover.disabled:hover,
.datepicker table tr td.active[disabled]:hover,
.datepicker table tr td.active:hover[disabled]:hover,
.datepicker table tr td.active.disabled[disabled]:hover,
.datepicker table tr td.active.disabled:hover[disabled]:hover,
fieldset[disabled] .datepicker table tr td.active:hover,
fieldset[disabled] .datepicker table tr td.active:hover:hover,
fieldset[disabled] .datepicker table tr td.active.disabled:hover,
fieldset[disabled] .datepicker table tr td.active.disabled:hover:hover,
.datepicker table tr td.active.disabled:focus,
.datepicker table tr td.active:hover.disabled:focus,
.datepicker table tr td.active.disabled.disabled:focus,
.datepicker table tr td.active.disabled:hover.disabled:focus,
.datepicker table tr td.active[disabled]:focus,
.datepicker table tr td.active:hover[disabled]:focus,
.datepicker table tr td.active.disabled[disabled]:focus,
.datepicker table tr td.active.disabled:hover[disabled]:focus,
fieldset[disabled] .datepicker table tr td.active:focus,
fieldset[disabled] .datepicker table tr td.active:hover:focus,
fieldset[disabled] .datepicker table tr td.active.disabled:focus,
fieldset[disabled] .datepicker table tr td.active.disabled:hover:focus,
.datepicker table tr td.active.disabled:active,
.datepicker table tr td.active:hover.disabled:active,
.datepicker table tr td.active.disabled.disabled:active,
.datepicker table tr td.active.disabled:hover.disabled:active,
.datepicker table tr td.active[disabled]:active,
.datepicker table tr td.active:hover[disabled]:active,
.datepicker table tr td.active.disabled[disabled]:active,
.datepicker table tr td.active.disabled:hover[disabled]:active,
fieldset[disabled] .datepicker table tr td.active:active,
fieldset[disabled] .datepicker table tr td.active:hover:active,
fieldset[disabled] .datepicker table tr td.active.disabled:active,
fieldset[disabled] .datepicker table tr td.active.disabled:hover:active,
.datepicker table tr td.active.disabled.active,
.datepicker table tr td.active:hover.disabled.active,
.datepicker table tr td.active.disabled.disabled.active,
.datepicker table tr td.active.disabled:hover.disabled.active,
.datepicker table tr td.active[disabled].active,
.datepicker table tr td.active:hover[disabled].active,
.datepicker table tr td.active.disabled[disabled].active,
.datepicker table tr td.active.disabled:hover[disabled].active,
fieldset[disabled] .datepicker table tr td.active.active,
fieldset[disabled] .datepicker table tr td.active:hover.active,
fieldset[disabled] .datepicker table tr td.active.disabled.active,
fieldset[disabled] .datepicker table tr td.active.disabled:hover.active {
  background-color: #428bca;
  border-color: #357ebd;
}
.datepicker table tr td span {
  display: block;
  width: 23%;
  height: 54px;
  line-height: 54px;
  float: left;
  margin: 1%;
  cursor: pointer;
  border-radius: 4px;
}
.datepicker table tr td span:hover {
  background: #eeeeee;
}
.datepicker table tr td span.disabled,
.datepicker table tr td span.disabled:hover {
  background: none;
  color: #999999;
  cursor: default;
}
.datepicker table tr td span.active,
.datepicker table tr td span.active:hover,
.datepicker table tr td span.active.disabled,
.datepicker table tr td span.active.disabled:hover {
  color: #ffffff;
  background-color: #428bca;
  border-color: #357ebd;
  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
}
.datepicker table tr td span.active:hover,
.datepicker table tr td span.active:hover:hover,
.datepicker table tr td span.active.disabled:hover,
.datepicker table tr td span.active.disabled:hover:hover,
.datepicker table tr td span.active:focus,
.datepicker table tr td span.active:hover:focus,
.datepicker table tr td span.active.disabled:focus,
.datepicker table tr td span.active.disabled:hover:focus,
.datepicker table tr td span.active:active,
.datepicker table tr td span.active:hover:active,
.datepicker table tr td span.active.disabled:active,
.datepicker table tr td span.active.disabled:hover:active,
.datepicker table tr td span.active.active,
.datepicker table tr td span.active:hover.active,
.datepicker table tr td span.active.disabled.active,
.datepicker table tr td span.active.disabled:hover.active,
.open .dropdown-toggle.datepicker table tr td span.active,
.open .dropdown-toggle.datepicker table tr td span.active:hover,
.open .dropdown-toggle.datepicker table tr td span.active.disabled,
.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover {
  color: #ffffff;
  background-color: #3276b1;
  border-color: #285e8e;
}
.datepicker table tr td span.active:active,
.datepicker table tr td span.active:hover:active,
.datepicker table tr td span.active.disabled:active,
.datepicker table tr td span.active.disabled:hover:active,
.datepicker table tr td span.active.active,
.datepicker table tr td span.active:hover.active,
.datepicker table tr td span.active.disabled.active,
.datepicker table tr td span.active.disabled:hover.active,
.open .dropdown-toggle.datepicker table tr td span.active,
.open .dropdown-toggle.datepicker table tr td span.active:hover,
.open .dropdown-toggle.datepicker table tr td span.active.disabled,
.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover {
  background-image: none;
}
.datepicker table tr td span.active.disabled,
.datepicker table tr td span.active:hover.disabled,
.datepicker table tr td span.active.disabled.disabled,
.datepicker table tr td span.active.disabled:hover.disabled,
.datepicker table tr td span.active[disabled],
.datepicker table tr td span.active:hover[disabled],
.datepicker table tr td span.active.disabled[disabled],
.datepicker table tr td span.active.disabled:hover[disabled],
fieldset[disabled] .datepicker table tr td span.active,
fieldset[disabled] .datepicker table tr td span.active:hover,
fieldset[disabled] .datepicker table tr td span.active.disabled,
fieldset[disabled] .datepicker table tr td span.active.disabled:hover,
.datepicker table tr td span.active.disabled:hover,
.datepicker table tr td span.active:hover.disabled:hover,
.datepicker table tr td span.active.disabled.disabled:hover,
.datepicker table tr td span.active.disabled:hover.disabled:hover,
.datepicker table tr td span.active[disabled]:hover,
.datepicker table tr td span.active:hover[disabled]:hover,
.datepicker table tr td span.active.disabled[disabled]:hover,
.datepicker table tr td span.active.disabled:hover[disabled]:hover,
fieldset[disabled] .datepicker table tr td span.active:hover,
fieldset[disabled] .datepicker table tr td span.active:hover:hover,
fieldset[disabled] .datepicker table tr td span.active.disabled:hover,
fieldset[disabled] .datepicker table tr td span.active.disabled:hover:hover,
.datepicker table tr td span.active.disabled:focus,
.datepicker table tr td span.active:hover.disabled:focus,
.datepicker table tr td span.active.disabled.disabled:focus,
.datepicker table tr td span.active.disabled:hover.disabled:focus,
.datepicker table tr td span.active[disabled]:focus,
.datepicker table tr td span.active:hover[disabled]:focus,
.datepicker table tr td span.active.disabled[disabled]:focus,
.datepicker table tr td span.active.disabled:hover[disabled]:focus,
fieldset[disabled] .datepicker table tr td span.active:focus,
fieldset[disabled] .datepicker table tr td span.active:hover:focus,
fieldset[disabled] .datepicker table tr td span.active.disabled:focus,
fieldset[disabled] .datepicker table tr td span.active.disabled:hover:focus,
.datepicker table tr td span.active.disabled:active,
.datepicker table tr td span.active:hover.disabled:active,
.datepicker table tr td span.active.disabled.disabled:active,
.datepicker table tr td span.active.disabled:hover.disabled:active,
.datepicker table tr td span.active[disabled]:active,
.datepicker table tr td span.active:hover[disabled]:active,
.datepicker table tr td span.active.disabled[disabled]:active,
.datepicker table tr td span.active.disabled:hover[disabled]:active,
fieldset[disabled] .datepicker table tr td span.active:active,
fieldset[disabled] .datepicker table tr td span.active:hover:active,
fieldset[disabled] .datepicker table tr td span.active.disabled:active,
fieldset[disabled] .datepicker table tr td span.active.disabled:hover:active,
.datepicker table tr td span.active.disabled.active,
.datepicker table tr td span.active:hover.disabled.active,
.datepicker table tr td span.active.disabled.disabled.active,
.datepicker table tr td span.active.disabled:hover.disabled.active,
.datepicker table tr td span.active[disabled].active,
.datepicker table tr td span.active:hover[disabled].active,
.datepicker table tr td span.active.disabled[disabled].active,
.datepicker table tr td span.active.disabled:hover[disabled].active,
fieldset[disabled] .datepicker table tr td span.active.active,
fieldset[disabled] .datepicker table tr td span.active:hover.active,
fieldset[disabled] .datepicker table tr td span.active.disabled.active,
fieldset[disabled] .datepicker table tr td span.active.disabled:hover.active {
  background-color: #428bca;
  border-color: #357ebd;
}
.datepicker table tr td span.old,
.datepicker table tr td span.new {
  color: #999999;
}
.datepicker th.datepicker-switch {
  width: 145px;
}
.datepicker thead tr:first-child th,
.datepicker tfoot tr th {
  cursor: pointer;
}
.datepicker thead tr:first-child th:hover,
.datepicker tfoot tr th:hover {
  background: #eeeeee;
}
.datepicker .cw {
  font-size: 10px;
  width: 12px;
  padding: 0 2px 0 5px;
  vertical-align: middle;
}
.datepicker thead tr:first-child th.cw {
  cursor: default;
  background-color: transparent;
}
.input-group.date .input-group-addon i {
  cursor: pointer;
  width: 16px;
  height: 16px;
}
.input-daterange input {
  text-align: center;
}
.input-daterange input:first-child {
  border-radius: 3px 0 0 3px;
}
.input-daterange input:last-child {
  border-radius: 0 3px 3px 0;
}
.input-daterange .input-group-addon {
  width: auto;
  min-width: 16px;
  padding: 4px 5px;
  font-weight: normal;
  line-height: 1.428571429;
  text-align: center;
  text-shadow: 0 1px 0 #fff;
  vertical-align: middle;
  background-color: #eeeeee;
  border-width: 1px 0;
  margin-left: -5px;
  margin-right: -5px;
}
.datepicker.dropdown-menu {
  position: absolute;
  top: 100%;
  left: 0;
  z-index: 1000;
  float: left;
  display: none;
  min-width: 160px;
  list-style: none;
  background-color: #ffffff;
  border: 1px solid #ccc;
  border: 1px solid rgba(0, 0, 0, 0.2);
  border-radius: 5px;
  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
  -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
  -webkit-background-clip: padding-box;
  -moz-background-clip: padding;
  background-clip: padding-box;
  *border-right-width: 2px;
  *border-bottom-width: 2px;
  color: #333333;
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 13px;
  line-height: 1.428571429;
}
.datepicker.dropdown-menu th,
.datepicker.dropdown-menu td {
  padding: 4px 5px;
}

+ 155 - 0
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/dropzone/basic.css

@ -0,0 +1,155 @@
/* The MIT License */
.dropzone,
.dropzone *,
.dropzone-previews,
.dropzone-previews * {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
.dropzone {
  position: relative;
  border: 1px solid rgba(0,0,0,0.08);
  background: rgba(0,0,0,0.02);
  padding: 1em;
}
.dropzone.dz-clickable {
  cursor: pointer;
}
.dropzone.dz-clickable .dz-message,
.dropzone.dz-clickable .dz-message span {
  cursor: pointer;
}
.dropzone.dz-clickable * {
  cursor: default;
}
.dropzone .dz-message {
  opacity: 1;
  -ms-filter: none;
  filter: none;
}
.dropzone.dz-drag-hover {
  border-color: rgba(0,0,0,0.15);
  background: rgba(0,0,0,0.04);
}
.dropzone.dz-started .dz-message {
  display: none;
}
.dropzone .dz-preview,
.dropzone-previews .dz-preview {
  background: rgba(255,255,255,0.8);
  position: relative;
  display: inline-block;
  margin: 17px;
  vertical-align: top;
  border: 1px solid #acacac;
  padding: 6px 6px 6px 6px;
}
.dropzone .dz-preview.dz-file-preview [data-dz-thumbnail],
.dropzone-previews .dz-preview.dz-file-preview [data-dz-thumbnail] {
  display: none;
}
.dropzone .dz-preview .dz-details,
.dropzone-previews .dz-preview .dz-details {
  width: 100px;
  height: 100px;
  position: relative;
  background: #ebebeb;
  padding: 5px;
  margin-bottom: 22px;
}
.dropzone .dz-preview .dz-details .dz-filename,
.dropzone-previews .dz-preview .dz-details .dz-filename {
  overflow: hidden;
  height: 100%;
}
.dropzone .dz-preview .dz-details img,
.dropzone-previews .dz-preview .dz-details img {
  position: absolute;
  top: 0;
  left: 0;
  width: 100px;
  height: 100px;
}
.dropzone .dz-preview .dz-details .dz-size,
.dropzone-previews .dz-preview .dz-details .dz-size {
  position: absolute;
  bottom: -28px;
  left: 3px;
  height: 28px;
  line-height: 28px;
}
.dropzone .dz-preview.dz-error .dz-error-mark,
.dropzone-previews .dz-preview.dz-error .dz-error-mark {
  display: block;
}
.dropzone .dz-preview.dz-success .dz-success-mark,
.dropzone-previews .dz-preview.dz-success .dz-success-mark {
  display: block;
}
.dropzone .dz-preview:hover .dz-details img,
.dropzone-previews .dz-preview:hover .dz-details img {
  display: none;
}
.dropzone .dz-preview .dz-success-mark,
.dropzone-previews .dz-preview .dz-success-mark,
.dropzone .dz-preview .dz-error-mark,
.dropzone-previews .dz-preview .dz-error-mark {
  display: none;
  position: absolute;
  width: 40px;
  height: 40px;
  font-size: 30px;
  text-align: center;
  right: -10px;
  top: -10px;
}
.dropzone .dz-preview .dz-success-mark,
.dropzone-previews .dz-preview .dz-success-mark {
  color: #8cc657;
}
.dropzone .dz-preview .dz-error-mark,
.dropzone-previews .dz-preview .dz-error-mark {
  color: #ee162d;
}
.dropzone .dz-preview .dz-progress,
.dropzone-previews .dz-preview .dz-progress {
  position: absolute;
  top: 100px;
  left: 6px;
  right: 6px;
  height: 6px;
  background: #d7d7d7;
  display: none;
}
.dropzone .dz-preview .dz-progress .dz-upload,
.dropzone-previews .dz-preview .dz-progress .dz-upload {
  display: block;
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  width: 0%;
  background-color: #8cc657;
}
.dropzone .dz-preview.dz-processing .dz-progress,
.dropzone-previews .dz-preview.dz-processing .dz-progress {
  display: block;
}
.dropzone .dz-preview .dz-error-message,
.dropzone-previews .dz-preview .dz-error-message {
  display: none;
  position: absolute;
  top: -5px;
  left: -20px;
  background: rgba(245,245,245,0.8);
  padding: 8px 10px;
  color: #800;
  min-width: 140px;
  max-width: 500px;
  z-index: 500;
}
.dropzone .dz-preview:hover.dz-error .dz-error-message,
.dropzone-previews .dz-preview:hover.dz-error .dz-error-message {
  display: block;
}

+ 410 - 0
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/dropzone/dropzone.css

@ -0,0 +1,410 @@
/* The MIT License */
.dropzone,
.dropzone *,
.dropzone-previews,
.dropzone-previews * {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
.dropzone {
  position: relative;
  border: 1px solid rgba(0,0,0,0.08);
  background: rgba(0,0,0,0.02);
  padding: 1em;
}
.dropzone.dz-clickable {
  cursor: pointer;
}
.dropzone.dz-clickable .dz-message,
.dropzone.dz-clickable .dz-message span {
  cursor: pointer;
}
.dropzone.dz-clickable * {
  cursor: default;
}
.dropzone .dz-message {
  opacity: 1;
  -ms-filter: none;
  filter: none;
}
.dropzone.dz-drag-hover {
  border-color: rgba(0,0,0,0.15);
  background: rgba(0,0,0,0.04);
}
.dropzone.dz-started .dz-message {
  display: none;
}
.dropzone .dz-preview,
.dropzone-previews .dz-preview {
  background: rgba(255,255,255,0.8);
  position: relative;
  display: inline-block;
  margin: 17px;
  vertical-align: top;
  border: 1px solid #acacac;
  padding: 6px 6px 6px 6px;
}
.dropzone .dz-preview.dz-file-preview [data-dz-thumbnail],
.dropzone-previews .dz-preview.dz-file-preview [data-dz-thumbnail] {
  display: none;
}
.dropzone .dz-preview .dz-details,
.dropzone-previews .dz-preview .dz-details {
  width: 100px;
  height: 100px;
  position: relative;
  background: #ebebeb;
  padding: 5px;
  margin-bottom: 22px;
}
.dropzone .dz-preview .dz-details .dz-filename,
.dropzone-previews .dz-preview .dz-details .dz-filename {
  overflow: hidden;
  height: 100%;
}
.dropzone .dz-preview .dz-details img,
.dropzone-previews .dz-preview .dz-details img {
  position: absolute;
  top: 0;
  left: 0;
  width: 100px;
  height: 100px;
}
.dropzone .dz-preview .dz-details .dz-size,
.dropzone-previews .dz-preview .dz-details .dz-size {
  position: absolute;
  bottom: -28px;
  left: 3px;
  height: 28px;
  line-height: 28px;
}
.dropzone .dz-preview.dz-error .dz-error-mark,
.dropzone-previews .dz-preview.dz-error .dz-error-mark {
  display: block;
}
.dropzone .dz-preview.dz-success .dz-success-mark,
.dropzone-previews .dz-preview.dz-success .dz-success-mark {
  display: block;
}
.dropzone .dz-preview:hover .dz-details img,
.dropzone-previews .dz-preview:hover .dz-details img {
  display: none;
}
.dropzone .dz-preview .dz-success-mark,
.dropzone-previews .dz-preview .dz-success-mark,
.dropzone .dz-preview .dz-error-mark,
.dropzone-previews .dz-preview .dz-error-mark {
  display: none;
  position: absolute;
  width: 40px;
  height: 40px;
  font-size: 30px;
  text-align: center;
  right: -10px;
  top: -10px;
}
.dropzone .dz-preview .dz-success-mark,
.dropzone-previews .dz-preview .dz-success-mark {
  color: #8cc657;
}
.dropzone .dz-preview .dz-error-mark,
.dropzone-previews .dz-preview .dz-error-mark {
  color: #ee162d;
}
.dropzone .dz-preview .dz-progress,
.dropzone-previews .dz-preview .dz-progress {
  position: absolute;
  top: 100px;
  left: 6px;
  right: 6px;
  height: 6px;
  background: #d7d7d7;
  display: none;
}
.dropzone .dz-preview .dz-progress .dz-upload,
.dropzone-previews .dz-preview .dz-progress .dz-upload {
  display: block;
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  width: 0%;
  background-color: #8cc657;
}
.dropzone .dz-preview.dz-processing .dz-progress,
.dropzone-previews .dz-preview.dz-processing .dz-progress {
  display: block;
}
.dropzone .dz-preview .dz-error-message,
.dropzone-previews .dz-preview .dz-error-message {
  display: none;
  position: absolute;
  top: -5px;
  left: -20px;
  background: rgba(245,245,245,0.8);
  padding: 8px 10px;
  color: #800;
  min-width: 140px;
  max-width: 500px;
  z-index: 500;
}
.dropzone .dz-preview:hover.dz-error .dz-error-message,
.dropzone-previews .dz-preview:hover.dz-error .dz-error-message {
  display: block;
}
.dropzone {
  border: 1px solid rgba(0,0,0,0.03);
  min-height: 360px;
  -webkit-border-radius: 3px;
  border-radius: 3px;
  background: rgba(0,0,0,0.03);
  padding: 23px;
}
.dropzone .dz-default.dz-message {
  opacity: 1;
  -ms-filter: none;
  filter: none;
  -webkit-transition: opacity 0.3s ease-in-out;
  -moz-transition: opacity 0.3s ease-in-out;
  -o-transition: opacity 0.3s ease-in-out;
  -ms-transition: opacity 0.3s ease-in-out;
  transition: opacity 0.3s ease-in-out;
  background-image: url("../images/spritemap.png");
  background-repeat: no-repeat;
  background-position: 0 0;
  position: absolute;
  width: 428px;
  height: 123px;
  margin-left: -214px;
  margin-top: -61.5px;
  top: 50%;
  left: 50%;
}
@media all and (-webkit-min-device-pixel-ratio:1.5),(min--moz-device-pixel-ratio:1.5),(-o-min-device-pixel-ratio:1.5/1),(min-device-pixel-ratio:1.5),(min-resolution:138dpi),(min-resolution:1.5dppx) {
  .dropzone .dz-default.dz-message {
    background-image: url("../images/spritemap@2x.png");
    -webkit-background-size: 428px 406px;
    -moz-background-size: 428px 406px;
    background-size: 428px 406px;
  }
}
.dropzone .dz-default.dz-message span {
  display: none;
}
.dropzone.dz-square .dz-default.dz-message {
  background-position: 0 -123px;
  width: 268px;
  margin-left: -134px;
  height: 174px;
  margin-top: -87px;
}
.dropzone.dz-drag-hover .dz-message {
  opacity: 0.15;
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=15)";
  filter: alpha(opacity=15);
}
.dropzone.dz-started .dz-message {
  display: block;
  opacity: 0;
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
  filter: alpha(opacity=0);
}
.dropzone .dz-preview,
.dropzone-previews .dz-preview {
  -webkit-box-shadow: 1px 1px 4px rgba(0,0,0,0.16);
  box-shadow: 1px 1px 4px rgba(0,0,0,0.16);
  font-size: 14px;
}
.dropzone .dz-preview.dz-image-preview:hover .dz-details img,
.dropzone-previews .dz-preview.dz-image-preview:hover .dz-details img {
  display: block;
  opacity: 0.1;
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=10)";
  filter: alpha(opacity=10);
}
.dropzone .dz-preview.dz-success .dz-success-mark,
.dropzone-previews .dz-preview.dz-success .dz-success-mark {
  opacity: 1;
  -ms-filter: none;
  filter: none;
}
.dropzone .dz-preview.dz-error .dz-error-mark,
.dropzone-previews .dz-preview.dz-error .dz-error-mark {
  opacity: 1;
  -ms-filter: none;
  filter: none;
}
.dropzone .dz-preview.dz-error .dz-progress .dz-upload,
.dropzone-previews .dz-preview.dz-error .dz-progress .dz-upload {
  background: #ee1e2d;
}
.dropzone .dz-preview .dz-error-mark,
.dropzone-previews .dz-preview .dz-error-mark,
.dropzone .dz-preview .dz-success-mark,
.dropzone-previews .dz-preview .dz-success-mark {
  display: block;
  opacity: 0;
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
  filter: alpha(opacity=0);
  -webkit-transition: opacity 0.4s ease-in-out;
  -moz-transition: opacity 0.4s ease-in-out;
  -o-transition: opacity 0.4s ease-in-out;
  -ms-transition: opacity 0.4s ease-in-out;
  transition: opacity 0.4s ease-in-out;
  background-image: url("../images/spritemap.png");
  background-repeat: no-repeat;
}
@media all and (-webkit-min-device-pixel-ratio:1.5),(min--moz-device-pixel-ratio:1.5),(-o-min-device-pixel-ratio:1.5/1),(min-device-pixel-ratio:1.5),(min-resolution:138dpi),(min-resolution:1.5dppx) {
  .dropzone .dz-preview .dz-error-mark,
  .dropzone-previews .dz-preview .dz-error-mark,
  .dropzone .dz-preview .dz-success-mark,
  .dropzone-previews .dz-preview .dz-success-mark {
    background-image: url("../images/spritemap@2x.png");
    -webkit-background-size: 428px 406px;
    -moz-background-size: 428px 406px;
    background-size: 428px 406px;
  }
}
.dropzone .dz-preview .dz-error-mark span,
.dropzone-previews .dz-preview .dz-error-mark span,
.dropzone .dz-preview .dz-success-mark span,
.dropzone-previews .dz-preview .dz-success-mark span {
  display: none;
}
.dropzone .dz-preview .dz-error-mark,
.dropzone-previews .dz-preview .dz-error-mark {
  background-position: -268px -123px;
}
.dropzone .dz-preview .dz-success-mark,
.dropzone-previews .dz-preview .dz-success-mark {
  background-position: -268px -163px;
}
.dropzone .dz-preview .dz-progress .dz-upload,
.dropzone-previews .dz-preview .dz-progress .dz-upload {
  -webkit-animation: loading 0.4s linear infinite;
  -moz-animation: loading 0.4s linear infinite;
  -o-animation: loading 0.4s linear infinite;
  -ms-animation: loading 0.4s linear infinite;
  animation: loading 0.4s linear infinite;
  -webkit-transition: width 0.3s ease-in-out;
  -moz-transition: width 0.3s ease-in-out;
  -o-transition: width 0.3s ease-in-out;
  -ms-transition: width 0.3s ease-in-out;
  transition: width 0.3s ease-in-out;
  -webkit-border-radius: 2px;
  border-radius: 2px;
  position: absolute;
  top: 0;
  left: 0;
  width: 0%;
  height: 100%;
  background-image: url("../images/spritemap.png");
  background-repeat: repeat-x;
  background-position: 0px -400px;
}
@media all and (-webkit-min-device-pixel-ratio:1.5),(min--moz-device-pixel-ratio:1.5),(-o-min-device-pixel-ratio:1.5/1),(min-device-pixel-ratio:1.5),(min-resolution:138dpi),(min-resolution:1.5dppx) {
  .dropzone .dz-preview .dz-progress .dz-upload,
  .dropzone-previews .dz-preview .dz-progress .dz-upload {
    background-image: url("../images/spritemap@2x.png");
    -webkit-background-size: 428px 406px;
    -moz-background-size: 428px 406px;
    background-size: 428px 406px;
  }
}
.dropzone .dz-preview.dz-success .dz-progress,
.dropzone-previews .dz-preview.dz-success .dz-progress {
  display: block;
  opacity: 0;
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
  filter: alpha(opacity=0);
  -webkit-transition: opacity 0.4s ease-in-out;
  -moz-transition: opacity 0.4s ease-in-out;
  -o-transition: opacity 0.4s ease-in-out;
  -ms-transition: opacity 0.4s ease-in-out;
  transition: opacity 0.4s ease-in-out;
}
.dropzone .dz-preview .dz-error-message,
.dropzone-previews .dz-preview .dz-error-message {
  display: block;
  opacity: 0;
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
  filter: alpha(opacity=0);
  -webkit-transition: opacity 0.3s ease-in-out;
  -moz-transition: opacity 0.3s ease-in-out;
  -o-transition: opacity 0.3s ease-in-out;
  -ms-transition: opacity 0.3s ease-in-out;
  transition: opacity 0.3s ease-in-out;
}
.dropzone .dz-preview:hover.dz-error .dz-error-message,
.dropzone-previews .dz-preview:hover.dz-error .dz-error-message {
  opacity: 1;
  -ms-filter: none;
  filter: none;
}
.dropzone a.dz-remove,
.dropzone-previews a.dz-remove {
  background-image: -webkit-linear-gradient(top, #fafafa, #eee);
  background-image: -moz-linear-gradient(top, #fafafa, #eee);
  background-image: -o-linear-gradient(top, #fafafa, #eee);
  background-image: -ms-linear-gradient(top, #fafafa, #eee);
  background-image: linear-gradient(to bottom, #fafafa, #eee);
  -webkit-border-radius: 2px;
  border-radius: 2px;
  border: 1px solid #eee;
  text-decoration: none;
  display: block;
  padding: 4px 5px;
  text-align: center;
  color: #aaa;
  margin-top: 26px;
}
.dropzone a.dz-remove:hover,
.dropzone-previews a.dz-remove:hover {
  color: #666;
}
@-moz-keyframes loading {
  0% {
    background-position: 0 -400px;
  }
  100% {
    background-position: -7px -400px;
  }
}
@-webkit-keyframes loading {
  0% {
    background-position: 0 -400px;
  }
  100% {
    background-position: -7px -400px;
  }
}
@-o-keyframes loading {
  0% {
    background-position: 0 -400px;
  }
  100% {
    background-position: -7px -400px;
  }
}
@-ms-keyframes loading {
  0% {
    background-position: 0 -400px;
  }
  100% {
    background-position: -7px -400px;
  }
}
@keyframes loading {
  0% {
    background-position: 0 -400px;
  }
  100% {
    background-position: -7px -400px;
  }
}

BIN
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/footable/fonts/footable.woff


+ 178 - 0
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/footable/footable.core.css

@ -0,0 +1,178 @@
@font-face {
  font-family: 'footable';
  src: url('fonts/footable.eot');
  src: url('fonts/footable.eot?#iefix') format('embedded-opentype'), url('fonts/footable.woff') format('woff'), url('fonts/footable.ttf') format('truetype'), url('fonts/footable.svg#footable') format('svg');
  font-weight: normal;
  font-style: normal;
}
@media screen and (-webkit-min-device-pixel-ratio: 0) {
  @font-face {
    font-family: 'footable';
    src: url('fonts/footable.svg#footable') format('svg');
    font-weight: normal;
    font-style: normal;
  }
}
.footable {
  width: 100%;
  /** SORTING **/
  /** PAGINATION **/
}
.footable.breakpoint > tbody > tr.footable-detail-show > td {
  border-bottom: none;
}
.footable.breakpoint > tbody > tr.footable-detail-show > td > span.footable-toggle:before {
  content: "\e001";
}
.footable.breakpoint > tbody > tr:hover:not(.footable-row-detail) {
  cursor: pointer;
}
.footable.breakpoint > tbody > tr > td.footable-cell-detail {
  background: #eee;
  border-top: none;
}
.footable.breakpoint > tbody > tr > td > span.footable-toggle {
  display: inline-block;
  font-family: 'footable';
  speak: none;
  font-style: normal;
  font-weight: normal;
  font-variant: normal;
  text-transform: none;
  -webkit-font-smoothing: antialiased;
  padding-right: 5px;
  font-size: 14px;
  color: #888888;
}
.footable.breakpoint > tbody > tr > td > span.footable-toggle:before {
  content: "\e000";
}
.footable.breakpoint.toggle-circle > tbody > tr.footable-detail-show > td > span.footable-toggle:before {
  content: "\e005";
}
.footable.breakpoint.toggle-circle > tbody > tr > td > span.footable-toggle:before {
  content: "\e004";
}
.footable.breakpoint.toggle-circle-filled > tbody > tr.footable-detail-show > td > span.footable-toggle:before {
  content: "\e003";
}
.footable.breakpoint.toggle-circle-filled > tbody > tr > td > span.footable-toggle:before {
  content: "\e002";
}
.footable.breakpoint.toggle-square > tbody > tr.footable-detail-show > td > span.footable-toggle:before {
  content: "\e007";
}
.footable.breakpoint.toggle-square > tbody > tr > td > span.footable-toggle:before {
  content: "\e006";
}
.footable.breakpoint.toggle-square-filled > tbody > tr.footable-detail-show > td > span.footable-toggle:before {
  content: "\e009";
}
.footable.breakpoint.toggle-square-filled > tbody > tr > td > span.footable-toggle:before {
  content: "\e008";
}
.footable.breakpoint.toggle-arrow > tbody > tr.footable-detail-show > td > span.footable-toggle:before {
  content: "\e00f";
}
.footable.breakpoint.toggle-arrow > tbody > tr > td > span.footable-toggle:before {
  content: "\e011";
}
.footable.breakpoint.toggle-arrow-small > tbody > tr.footable-detail-show > td > span.footable-toggle:before {
  content: "\e013";
}
.footable.breakpoint.toggle-arrow-small > tbody > tr > td > span.footable-toggle:before {
  content: "\e015";
}
.footable.breakpoint.toggle-arrow-circle > tbody > tr.footable-detail-show > td > span.footable-toggle:before {
  content: "\e01b";
}
.footable.breakpoint.toggle-arrow-circle > tbody > tr > td > span.footable-toggle:before {
  content: "\e01d";
}
.footable.breakpoint.toggle-arrow-circle-filled > tbody > tr.footable-detail-show > td > span.footable-toggle:before {
  content: "\e00b";
}
.footable.breakpoint.toggle-arrow-circle-filled > tbody > tr > td > span.footable-toggle:before {
  content: "\e00d";
}
.footable.breakpoint.toggle-arrow-tiny > tbody > tr.footable-detail-show > td > span.footable-toggle:before {
  content: "\e01f";
}
.footable.breakpoint.toggle-arrow-tiny > tbody > tr > td > span.footable-toggle:before {
  content: "\e021";
}
.footable.breakpoint.toggle-arrow-alt > tbody > tr.footable-detail-show > td > span.footable-toggle:before {
  content: "\e017";
}
.footable.breakpoint.toggle-arrow-alt > tbody > tr > td > span.footable-toggle:before {
  content: "\e019";
}
.footable.breakpoint.toggle-medium > tbody > tr > td > span.footable-toggle {
  font-size: 18px;
}
.footable.breakpoint.toggle-large > tbody > tr > td > span.footable-toggle {
  font-size: 24px;
}
.footable > thead > tr > th {
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: -moz-none;
  -ms-user-select: none;
  user-select: none;
}
.footable > thead > tr > th.footable-sortable:hover {
  cursor: pointer;
}
.footable > thead > tr > th.footable-sorted > span.footable-sort-indicator:before {
  content: "\e013";
}
.footable > thead > tr > th.footable-sorted-desc > span.footable-sort-indicator:before {
  content: "\e012";
}
.footable > thead > tr > th > span.footable-sort-indicator {
  display: inline-block;
  font-family: 'footable';
  speak: none;
  font-style: normal;
  font-weight: normal;
  font-variant: normal;
  text-transform: none;
  -webkit-font-smoothing: antialiased;
  padding-left: 5px;
}
.footable > thead > tr > th > span.footable-sort-indicator:before {
  content: "\e022";
}
.footable > tfoot .pagination {
  margin: 0;
}
.footable.no-paging .hide-if-no-paging {
  display: none;
}
.footable-row-detail-inner {
  display: table;
}
.footable-row-detail-row {
  display: table-row;
  line-height: 1.5em;
}
.footable-row-detail-group {
  display: block;
  line-height: 2em;
  font-size: 1.2em;
  font-weight: bold;
}
.footable-row-detail-name {
  display: table-cell;
  font-weight: bold;
  padding-right: 0.5em;
}
.footable-row-detail-value {
  display: table-cell;
}
.footable-odd {
  background-color: #f7f7f7;
}

+ 589 - 0
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/fullcalendar/fullcalendar.css

@ -0,0 +1,589 @@
/*!
 * FullCalendar v1.6.4 Stylesheet
 * Docs & License: http://arshaw.com/fullcalendar/
 * (c) 2013 Adam Shaw
 */
.fc {
	direction: ltr;
	text-align: left;
	}
	
.fc table {
	border-collapse: collapse;
	border-spacing: 0;
	}
	
html .fc,
.fc table {
	font-size: 1em;
	}
	
.fc td,
.fc th {
	padding: 0;
	vertical-align: top;
	}
/* Header
------------------------------------------------------------------------*/
.fc-header td {
	white-space: nowrap;
	}
.fc-header-left {
	width: 25%;
	text-align: left;
	}
	
.fc-header-center {
	text-align: center;
	}
	
.fc-header-right {
	width: 25%;
	text-align: right;
	}
	
.fc-header-title {
	display: inline-block;
	vertical-align: top;
	}
	
.fc-header-title h2 {
	margin-top: 0;
	white-space: nowrap;
	}
	
.fc .fc-header-space {
	padding-left: 10px;
	}
	
.fc-header .fc-button {
	margin-bottom: 1em;
	vertical-align: top;
	}
	
/* buttons edges butting together */
.fc-header .fc-button {
	margin-right: -1px;
	}
	
.fc-header .fc-corner-right,  /* non-theme */
.fc-header .ui-corner-right { /* theme */
	margin-right: 0; /* back to normal */
	}
	
/* button layering (for border precedence) */
	
.fc-header .fc-state-hover,
.fc-header .ui-state-hover {
	z-index: 2;
	}
	
.fc-header .fc-state-down {
	z-index: 3;
	}
.fc-header .fc-state-active,
.fc-header .ui-state-active {
	z-index: 4;
	}
	
	
	
/* Content
------------------------------------------------------------------------*/
	
.fc-content {
	clear: both;
	zoom: 1; /* for IE7, gives accurate coordinates for [un]freezeContentHeight */
	}
	
.fc-view {
	width: 100%;
	overflow: hidden;
	}
	
	
/* Cell Styles
------------------------------------------------------------------------*/
.fc-widget-header,    /* <th>, usually */
.fc-widget-content {  /* <td>, usually */
	border: 1px solid #ddd;
	}
	
.fc-state-highlight { /* <td> today cell */ /* TODO: add .fc-today to <th> */
	background: #fcf8e3;
	}
	
.fc-cell-overlay { /* semi-transparent rectangle while dragging */
	background: #bce8f1;
	opacity: .3;
	filter: alpha(opacity=30); /* for IE */
	}
	
/* Buttons
------------------------------------------------------------------------*/
.fc-button {
	position: relative;
	display: inline-block;
	padding: 0 .6em;
	overflow: hidden;
	height: 1.9em;
	line-height: 1.9em;
	white-space: nowrap;
	cursor: pointer;
	}
	
.fc-state-default { /* non-theme */
	border: 1px solid;
	}
.fc-state-default.fc-corner-left { /* non-theme */
	border-top-left-radius: 4px;
	border-bottom-left-radius: 4px;
	}
.fc-state-default.fc-corner-right { /* non-theme */
	border-top-right-radius: 4px;
	border-bottom-right-radius: 4px;
	}
/*
	Our default prev/next buttons use HTML entities like &lsaquo; &rsaquo; &laquo; &raquo;
	and we'll try to make them look good cross-browser.
*/
.fc-text-arrow {
	margin: 0 .1em;
	font-size: 2em;
	font-family: "Courier New", Courier, monospace;
	vertical-align: baseline; /* for IE7 */
	}
.fc-button-prev .fc-text-arrow,
.fc-button-next .fc-text-arrow { /* for &lsaquo; &rsaquo; */
	font-weight: bold;
	}
	
/* icon (for jquery ui) */
	
.fc-button .fc-icon-wrap {
	position: relative;
	float: left;
	top: 50%;
	}
	
.fc-button .ui-icon {
	position: relative;
	float: left;
	margin-top: -50%;
	*margin-top: 0;
	*top: -50%;
	}
	
/*
  button states
  borrowed from twitter bootstrap (http://twitter.github.com/bootstrap/)
*/
.fc-state-default {
	background-color: #f5f5f5;
	background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
	background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
	background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
	background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
	background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
	background-repeat: repeat-x;
	border-color: #e6e6e6 #e6e6e6 #bfbfbf;
	border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
	color: #333;
	text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
	box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
	}
.fc-state-hover,
.fc-state-down,
.fc-state-active,
.fc-state-disabled {
	color: #333333;
	background-color: #e6e6e6;
	}
.fc-state-hover {
	color: #333333;
	text-decoration: none;
	background-position: 0 -15px;
	-webkit-transition: background-position 0.1s linear;
	   -moz-transition: background-position 0.1s linear;
	     -o-transition: background-position 0.1s linear;
	        transition: background-position 0.1s linear;
	}
.fc-state-down,
.fc-state-active {
	background-color: #cccccc;
	background-image: none;
	outline: 0;
	box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
	}
.fc-state-disabled {
	cursor: default;
	background-image: none;
	opacity: 0.65;
	filter: alpha(opacity=65);
	box-shadow: none;
	}
	
/* Global Event Styles
------------------------------------------------------------------------*/
.fc-event-container > * {
	z-index: 8;
	}
.fc-event-container > .ui-draggable-dragging,
.fc-event-container > .ui-resizable-resizing {
	z-index: 9;
	}
	 
.fc-event {
	border: 1px solid #3a87ad; /* default BORDER color */
	background-color: #3a87ad; /* default BACKGROUND color */
	color: #fff;               /* default TEXT color */
	font-size: .85em;
	cursor: default;
	}
a.fc-event {
	text-decoration: none;
	}
	
a.fc-event,
.fc-event-draggable {
	cursor: pointer;
	}
	
.fc-rtl .fc-event {
	text-align: right;
	}
.fc-event-inner {
	width: 100%;
	height: 100%;
	overflow: hidden;
	}
	
.fc-event-time,
.fc-event-title {
	padding: 0 1px;
	}
	
.fc .ui-resizable-handle {
	display: block;
	position: absolute;
	z-index: 99999;
	overflow: hidden; /* hacky spaces (IE6/7) */
	font-size: 300%;  /* */
	line-height: 50%; /* */
	}
	
	
	
/* Horizontal Events
------------------------------------------------------------------------*/
.fc-event-hori {
	border-width: 1px 0;
	margin-bottom: 1px;
	}
.fc-ltr .fc-event-hori.fc-event-start,
.fc-rtl .fc-event-hori.fc-event-end {
	border-left-width: 1px;
	border-top-left-radius: 3px;
	border-bottom-left-radius: 3px;
	}
.fc-ltr .fc-event-hori.fc-event-end,
.fc-rtl .fc-event-hori.fc-event-start {
	border-right-width: 1px;
	border-top-right-radius: 3px;
	border-bottom-right-radius: 3px;
	}
	
/* resizable */
	
.fc-event-hori .ui-resizable-e {
	top: 0           !important; /* importants override pre jquery ui 1.7 styles */
	right: -3px      !important;
	width: 7px       !important;
	height: 100%     !important;
	cursor: e-resize;
	}
	
.fc-event-hori .ui-resizable-w {
	top: 0           !important;
	left: -3px       !important;
	width: 7px       !important;
	height: 100%     !important;
	cursor: w-resize;
	}
	
.fc-event-hori .ui-resizable-handle {
	_padding-bottom: 14px; /* IE6 had 0 height */
	}
	
	
	
/* Reusable Separate-border Table
------------------------------------------------------------*/
table.fc-border-separate {
	border-collapse: separate;
	}
	
.fc-border-separate th,
.fc-border-separate td {
	border-width: 1px 0 0 1px;
	}
	
.fc-border-separate th.fc-last,
.fc-border-separate td.fc-last {
	border-right-width: 1px;
	}
	
.fc-border-separate tr.fc-last th,
.fc-border-separate tr.fc-last td {
	border-bottom-width: 1px;
	}
	
.fc-border-separate tbody tr.fc-first td,
.fc-border-separate tbody tr.fc-first th {
	border-top-width: 0;
	}
	
	
/* Month View, Basic Week View, Basic Day View
------------------------------------------------------------------------*/
.fc-grid th {
	text-align: center;
	}
.fc .fc-week-number {
	width: 22px;
	text-align: center;
	}
.fc .fc-week-number div {
	padding: 0 2px;
	}
	
.fc-grid .fc-day-number {
	float: right;
	padding: 0 2px;
	}
	
.fc-grid .fc-other-month .fc-day-number {
	opacity: 0.3;
	filter: alpha(opacity=30); /* for IE */
	/* opacity with small font can sometimes look too faded
	   might want to set the 'color' property instead
	   making day-numbers bold also fixes the problem */
	}
	
.fc-grid .fc-day-content {
	clear: both;
	padding: 2px 2px 1px; /* distance between events and day edges */
	}
	
/* event styles */
	
.fc-grid .fc-event-time {
	font-weight: bold;
	}
	
/* right-to-left */
	
.fc-rtl .fc-grid .fc-day-number {
	float: left;
	}
	
.fc-rtl .fc-grid .fc-event-time {
	float: right;
	}
	
	
/* Agenda Week View, Agenda Day View
------------------------------------------------------------------------*/
.fc-agenda table {
	border-collapse: separate;
	}
	
.fc-agenda-days th {
	text-align: center;
	}
	
.fc-agenda .fc-agenda-axis {
	width: 50px;
	padding: 0 4px;
	vertical-align: middle;
	text-align: right;
	white-space: nowrap;
	font-weight: normal;
	}
.fc-agenda .fc-week-number {
	font-weight: bold;
	}
	
.fc-agenda .fc-day-content {
	padding: 2px 2px 1px;
	}
	
/* make axis border take precedence */
	
.fc-agenda-days .fc-agenda-axis {
	border-right-width: 1px;
	}
	
.fc-agenda-days .fc-col0 {
	border-left-width: 0;
	}
	
/* all-day area */
	
.fc-agenda-allday th {
	border-width: 0 1px;
	}
	
.fc-agenda-allday .fc-day-content {
	min-height: 34px; /* TODO: doesnt work well in quirksmode */
	_height: 34px;
	}
	
/* divider (between all-day and slots) */
	
.fc-agenda-divider-inner {
	height: 2px;
	overflow: hidden;
	}
	
.fc-widget-header .fc-agenda-divider-inner {
	background: #eee;
	}
	
/* slot rows */
	
.fc-agenda-slots th {
	border-width: 1px 1px 0;
	}
	
.fc-agenda-slots td {
	border-width: 1px 0 0;
	background: none;
	}
	
.fc-agenda-slots td div {
	height: 20px;
	}
	
.fc-agenda-slots tr.fc-slot0 th,
.fc-agenda-slots tr.fc-slot0 td {
	border-top-width: 0;
	}
.fc-agenda-slots tr.fc-minor th,
.fc-agenda-slots tr.fc-minor td {
	border-top-style: dotted;
	}
	
.fc-agenda-slots tr.fc-minor th.ui-widget-header {
	*border-top-style: solid; /* doesn't work with background in IE6/7 */
	}
	
/* Vertical Events
------------------------------------------------------------------------*/
.fc-event-vert {
	border-width: 0 1px;
	}
.fc-event-vert.fc-event-start {
	border-top-width: 1px;
	border-top-left-radius: 3px;
	border-top-right-radius: 3px;
	}
.fc-event-vert.fc-event-end {
	border-bottom-width: 1px;
	border-bottom-left-radius: 3px;
	border-bottom-right-radius: 3px;
	}
	
.fc-event-vert .fc-event-time {
	white-space: nowrap;
	font-size: 10px;
	}
.fc-event-vert .fc-event-inner {
	position: relative;
	z-index: 2;
	}
	
.fc-event-vert .fc-event-bg { /* makes the event lighter w/ a semi-transparent overlay  */
	position: absolute;
	z-index: 1;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	background: #fff;
	opacity: .25;
	filter: alpha(opacity=25);
	}
	
.fc .ui-draggable-dragging .fc-event-bg, /* TODO: something nicer like .fc-opacity */
.fc-select-helper .fc-event-bg {
	display: none\9; /* for IE6/7/8. nested opacity filters while dragging don't work */
	}
	
/* resizable */
	
.fc-event-vert .ui-resizable-s {
	bottom: 0        !important; /* importants override pre jquery ui 1.7 styles */
	width: 100%      !important;
	height: 8px      !important;
	overflow: hidden !important;
	line-height: 8px !important;
	font-size: 11px  !important;
	font-family: monospace;
	text-align: center;
	cursor: s-resize;
	}
	
.fc-agenda .ui-resizable-resizing { /* TODO: better selector */
	_overflow: hidden;
	}
	
	

+ 32 - 0
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/fullcalendar/fullcalendar.print.css

@ -0,0 +1,32 @@
/*!
 * FullCalendar v1.6.4 Print Stylesheet
 * Docs & License: http://arshaw.com/fullcalendar/
 * (c) 2013 Adam Shaw
 */
/*
 * Include this stylesheet on your page to get a more printer-friendly calendar.
 * When including this stylesheet, use the media='print' attribute of the <link> tag.
 * Make sure to include this stylesheet IN ADDITION to the regular fullcalendar.css.
 */
 
 
 /* Events
-----------------------------------------------------*/
 
.fc-event {
	background: #fff !important;
	color: #000 !important;
	}
	
/* for vertical events */
	
.fc-event-bg {
	display: none !important;
	}
	
.fc-event .ui-resizable-handle {
	display: none !important;
	}
	
	

+ 59 - 0
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/iCheck/custom.css

@ -0,0 +1,59 @@
/* iCheck plugin Square skin, green
----------------------------------- */
.icheckbox_square-green,
.iradio_square-green {
    display: inline-block;
    *display: inline;
    vertical-align: middle;
    margin: 0;
    padding: 0;
    width: 22px;
    height: 22px;
    background: url(green.png) no-repeat;
    border: none;
    cursor: pointer;
}
.icheckbox_square-green {
    background-position: 0 0;
}
.icheckbox_square-green.hover {
    background-position: -24px 0;
}
.icheckbox_square-green.checked {
    background-position: -48px 0;
}
.icheckbox_square-green.disabled {
    background-position: -72px 0;
    cursor: default;
}
.icheckbox_square-green.checked.disabled {
    background-position: -96px 0;
}
.iradio_square-green {
    background-position: -120px 0;
}
.iradio_square-green.hover {
    background-position: -144px 0;
}
.iradio_square-green.checked {
    background-position: -168px 0;
}
.iradio_square-green.disabled {
    background-position: -192px 0;
    cursor: default;
}
.iradio_square-green.checked.disabled {
    background-position: -216px 0;
}
/* HiDPI support */
@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
    .icheckbox_square-green,
    .iradio_square-green {
        background-image: url(green@2x.png);
        -webkit-background-size: 240px 24px;
        background-size: 240px 24px;
    }
}

BIN
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/iCheck/green.png


BIN
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/images/sort_asc.png


BIN
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/images/sprite-skin-flat.png


BIN
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/images/spritemap.png


+ 126 - 0
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/ionRangeSlider/ion.rangeSlider.css

@ -0,0 +1,126 @@
/* Ion.RangeSlider
// css version 1.8.5
// by Denis Ineshin | ionden.com
// ===================================================================================================================*/
/* =====================================================================================================================
// RangeSlider */
.irs {
    position: relative; display: block;
}
    .irs-line {
        position: relative; display: block;
        overflow: hidden;
    }
        .irs-line-left, .irs-line-mid, .irs-line-right {
            position: absolute; display: block;
            top: 0;
        }
        .irs-line-left {
            left: 0; width: 10%;
        }
        .irs-line-mid {
            left: 10%; width: 80%;
        }
        .irs-line-right {
            right: 0; width: 10%;
        }
    .irs-diapason {
        position: absolute; display: block;
        left: 0; width: 100%;
    }
    .irs-slider {
        position: absolute; display: block;
        cursor: default;
        z-index: 1;
    }
        .irs-slider.single {
            left: 10px;
        }
            .irs-slider.single:before {
                position: absolute; display: block; content: "";
                top: -30%; left: -30%;
                width: 160%; height: 160%;
                background: rgba(0,0,0,0.0);
            }
        .irs-slider.from {
            left: 100px;
        }
            .irs-slider.from:before {
                position: absolute; display: block; content: "";
                top: -30%; left: -30%;
                width: 130%; height: 160%;
                background: rgba(0,0,0,0.0);
            }
        .irs-slider.to {
            left: 300px;
        }
            .irs-slider.to:before {
                position: absolute; display: block; content: "";
                top: -30%; left: 0;
                width: 130%; height: 160%;
                background: rgba(0,0,0,0.0);
            }
        .irs-slider.last {
            z-index: 2;
        }
    .irs-min {
        position: absolute; display: block;
        left: 0;
        cursor: default;
    }
    .irs-max {
        position: absolute; display: block;
        right: 0;
        cursor: default;
    }
    .irs-from, .irs-to, .irs-single {
        position: absolute; display: block;
        top: 0; left: 0;
        cursor: default;
        white-space: nowrap;
    }
.irs-grid {
    position: absolute; display: none;
    bottom: 0; left: 0;
    width: 100%; height: 20px;
}
.irs-with-grid .irs-grid {
    display: block;
}
    .irs-grid-pol {
        position: absolute;
        top: 0; left: 0;
        width: 1px; height: 8px;
        background: #000;
    }
    .irs-grid-pol.small {
        height: 4px;
    }
    .irs-grid-text {
        position: absolute;
        bottom: 0; left: 0;
        width: 100px;
        white-space: nowrap;
        text-align: center;
        font-size: 9px; line-height: 9px;
        color: #000;
    }
.irs-disable-mask {
    position: absolute; display: block;
    top: 0; left: 0;
    width: 100%; height: 100%;
    cursor: default;
    background: rgba(0,0,0,0.0);
    z-index: 2;
}
.irs-disabled {
    opacity: 0.4;
}

+ 89 - 0
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/ionRangeSlider/ion.rangeSlider.skinFlat.css

@ -0,0 +1,89 @@
/* Ion.RangeSlider, Flat UI Skin
// css version 1.8.5
// by Denis Ineshin | ionden.com
// ===================================================================================================================*/
/* =====================================================================================================================
// Skin details */
.irs-line-mid,
.irs-line-left,
.irs-line-right,
.irs-diapason,
.irs-slider {
    background: url(../images/sprite-skin-flat.png) repeat-x;
}
.irs {
    height: 40px;
}
.irs-with-grid {
    height: 60px;
}
.irs-line {
    height: 12px; top: 25px;
}
    .irs-line-left {
        height: 12px;
        background-position: 0 -30px;
    }
    .irs-line-mid {
        height: 12px;
        background-position: 0 0;
    }
    .irs-line-right {
        height: 12px;
        background-position: 100% -30px;
    }
.irs-diapason {
    height: 12px; top: 25px;
    background-position: 0 -60px;
}
.irs-slider {
    width: 16px; height: 18px;
    top: 22px;
    background-position: 0 -90px;
}
#irs-active-slider, .irs-slider:hover {
    background-position: 0 -120px;
}
.irs-min, .irs-max {
    color: #999;
    font-size: 10px; line-height: 1.333;
    text-shadow: none;
    top: 0; padding: 1px 3px;
    background: #e1e4e9;
    border-radius: 4px;
}
.irs-from, .irs-to, .irs-single {
    color: #fff;
    font-size: 10px; line-height: 1.333;
    text-shadow: none;
    padding: 1px 5px;
    background: #ed5565;
    border-radius: 4px;
}
.irs-from:after, .irs-to:after, .irs-single:after {
    position: absolute; display: block; content: "";
    bottom: -6px; left: 50%;
    width: 0; height: 0;
    margin-left: -3px;
    overflow: hidden;
    border: 3px solid transparent;
    border-top-color: #ed5565;
}
.irs-grid-pol {
    background: #e1e4e9;
}
.irs-grid-text {
    color: #999;
}
.irs-disabled {
}

File diff suppressed because it is too large
+ 7 - 0
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/jasny/jasny-bootstrap.min.css


+ 851 - 0
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/jqgrid/ui.jqgrid.css_0820

@ -0,0 +1,851 @@
/*Grid*/
.ui-jqgrid {
	position: relative; 
	border: 1px solid #ddd;
    overflow: hidden;
}
.ui-jqgrid .ui-jqgrid-view {
	position: relative;
	left:0; 
	top: 0; 
	padding: 0;
}
.ui-jqgrid .ui-common-table {}
/* Caption*/
.ui-jqgrid .ui-jqgrid-titlebar {
	font-weight: normal;
	min-height:37px; 
	padding: 4px 8px; 
	position: relative; 
	margin-right: 2px;
	border-bottom: 1px solid #ddd; //default
}
.ui-jqgrid .ui-jqgrid-caption {
	text-align: left;
}
.ui-jqgrid .ui-jqgrid-title { 
	padding-top: 5px; 
	vertical-align: middle;
}
.ui-jqgrid .ui-jqgrid-titlebar-close { 
	color: inherit; 
	position: absolute;
	top: 50%; 
	margin: -10px 7px 0 0; 
	padding: 1px; 
	cursor:pointer;
}
.ui-jqgrid .ui-jqgrid-titlebar-close span { 
	display: block; 
	margin: 1px; 
}
.ui-jqgrid .ui-jqgrid-titlebar-close:hover {  }
/* Header*/
.ui-jqgrid .ui-jqgrid-hdiv {
	position: relative; 
	margin: 0;
	padding: 0; 
	overflow: hidden;
}
.ui-jqgrid .ui-jqgrid-hbox {
	float: left; 
	padding-right: 20px;
}
.ui-jqgrid .ui-jqgrid-htable { 
	margin-bottom: 0; 
	table-layout: fixed; 
	border-top:none;
}
.ui-jqgrid .ui-jqgrid-htable thead th {
	overflow : hidden; 
	border-bottom : none;
	padding-right: 2px;
}
.ui-jqgrid .ui-jqgrid-htable thead th div {
	overflow: hidden; 
	position:relative;
}
.ui-th-column, .ui-jqgrid .ui-jqgrid-htable th.ui-th-column {
	overflow: hidden;
	white-space: nowrap;
}
.ui-th-column-header, 
.ui-jqgrid .ui-jqgrid-htable th.ui-th-column-header {
	overflow: hidden;
	white-space: nowrap;
}
.ui-th-ltr, .ui-jqgrid .ui-jqgrid-htable th.ui-th-ltr {}
.ui-th-rtl, .ui-jqgrid .ui-jqgrid-htable th.ui-th-rtl {text-align: center; }
.ui-first-th-ltr { }
.ui-first-th-rtl { }
.ui-jqgrid tr.jqg-first-row-header th {
	height:auto; 
	border-top:none; 
	padding-bottom: 0;
	padding-top: 0;
	border-bottom: none; 
	padding-right: 2px;
	text-align: center;
}
.ui-jqgrid tr.jqg-second-row-header th,
.ui-jqgrid tr.jqg-third--row-header th
{
	border-top:none;
	text-align: center;
}
.ui-jqgrid .ui-th-div-ie {
	white-space: nowrap; 
	zoom :1; 
	height:17px;
}
.ui-jqgrid .ui-jqgrid-resize {
	height:20px !important;
	position: relative; 
	cursor :e-resize;
	display: inline;
	overflow: hidden;
}
.ui-jqgrid .ui-grid-ico-sort { 
	margin-left:5px; 
	overflow:hidden;
	position:absolute;
	right: 3px;
	font-size:12px;
}
.ui-jqgrid .ui-icon-asc {
	margin-top:-3px;
}
.ui-jqgrid .ui-icon-desc {
	margin-top:4px;
}
.ui-jqgrid .ui-i-asc {
	margin-top:0;
}
.ui-jqgrid .ui-i-desc {
	margin-top:0;
	margin-right:13px;
}
.ui-jqgrid .ui-single-sort-asc {
	margin-top:0;
}
.ui-jqgrid .ui-single-sort-desc {}
.ui-jqgrid .ui-jqgrid-sortable {
	cursor:pointer;
}
.ui-jqgrid tr.ui-search-toolbar th { }
.ui-jqgrid .ui-search-table td.ui-search-clear { }
.ui-jqgrid tr.ui-search-toolbar td > input { }
.ui-jqgrid tr.ui-search-toolbar select {}
/* Body */ 
.ui-jqgrid .table-bordered,
.ui-jqgrid .table-bordered td,
.ui-jqgrid .table-bordered th.ui-th-ltr
{
	border-left:0px none !important;
}
.ui-jqgrid .table-bordered th.ui-th-rtl
{
	border-right:0px none !important;
}
.ui-jqgrid .table-bordered tr.ui-row-rtl td
{
	border-right:0px none !important;
	border-left: 1px solid #ddd !important;
}
div.tablediv > .table-bordered {
	border-left : 1px solid #ddd !important;
}
.ui-jqgrid  .ui-jqgrid-bdiv table.table-bordered td {
	border-top: 0px none;
}
.ui-jqgrid .ui-jqgrid-bdiv {
	position: relative; 
	margin: 0; 
	padding:0; 
	overflow-x:hidden; 
	text-align:left; 
}
.ui-jqgrid .ui-jqgrid-btable {
	table-layout: fixed; 
	border-left:none ; 
	border-top:none; 
	margin-bottom: 0px
}
.ui-jqgrid tr.jqgrow {  
	outline-style: none; 
}
.ui-jqgrid tr.jqgroup {  
	outline-style: none; 
}
.ui-jqgrid tr.jqgrow td { 
	overflow: hidden; 
	white-space: pre; 
	padding-right: 2px;
}
.ui-jqgrid tr.jqgfirstrow  td {
	height:auto; 
	border-top:none; 
	padding-bottom: 0;
	padding-top: 0;
	border-bottom: none; 
	padding-right: 2px;
}
.ui-jqgrid tr.jqgroup td { }
.ui-jqgrid tr.jqfoot td {}
.ui-jqgrid tr.ui-row-ltr td {}
.ui-jqgrid tr.ui-row-rtl td {}
.ui-jqgrid td.jqgrid-rownum { }
.ui-jqgrid .ui-jqgrid-resize-mark { 
	width:2px; 
	left:0; 
	background-color:#777; 
	cursor: e-resize; 
	cursor: col-resize; 
	position:absolute; 
	top:0; 
	height:100px; 
	overflow:hidden; 
	display:none; 
	border:0 none; 
	z-index: 99999;
}
/* Footer */
.ui-jqgrid .ui-jqgrid-sdiv {
	position: relative; 
	margin: 0;
	padding: 0; 
	overflow: hidden; 
	border-left: 0 none !important; 
	border-top : 0 none !important; 
	border-right : 0 none !important;
}
.ui-jqgrid .ui-jqgrid-ftable {
	table-layout:fixed;
	margin-bottom:0;
}
.ui-jqgrid tr.footrow td {
	font-weight: bold; 
	overflow: hidden; 
	white-space:nowrap; 
	padding-right: 2px;
	border-bottom: 0px none;
}
.ui-jqgrid tr.footrow-ltr td {
	text-align:left;
}
.ui-jqgrid tr.footrow-rtl td {
	text-align:right;
}
/* Pager*/
.ui-jqgrid .ui-jqgrid-pager,
.ui-jqgrid .ui-jqgrid-toppager
{ 
	border-left-width: 0px;
	border-top: 1px solid #ddd;  
	padding : 4px 0px;
	position: relative; 
	height: auto; 
	white-space: nowrap;
	overflow: hidden;
}
.ui-jqgrid .ui-jqgrid-toppager {
	border-top-width :0;
	border-bottom : 1px solid #ddd;
}
.ui-jqgrid .ui-jqgrid-toppager .ui-pager-control, 
.ui-jqgrid .ui-jqgrid-pager .ui-pager-control {
	position: relative;
	border-left: 0;
	border-bottom: 0;
	border-top: 0; 
	height: 30px;
}
.ui-jqgrid .ui-pg-table {
	position: relative; 
	padding: 1px 0; 
	width:auto; 
	margin: 0;
}
.ui-jqgrid .ui-pg-table td {
	font-weight:normal; 
	vertical-align:middle; 
	padding:0px 6px;
}
.ui-jqgrid .ui-pg-button  { 
	height:auto; 
}
.ui-jqgrid .ui-pg-button span { 
	display: block; 
	margin: 2px; 
	float:left;
}
.ui-jqgrid .ui-pg-button:hover {  }
.ui-jqgrid .ui-disabled:hover {}
.ui-jqgrid .ui-pg-input,
.ui-jqgrid .ui-jqgrid-toppager .ui-pg-input { 
	display: inline;
	height:auto;
	width: auto;
	font-size:.9em; 
	margin:0;
	line-height: inherit;
	padding: 0px 5px
}
.ui-jqgrid .ui-pg-selbox, 
.ui-jqgrid .ui-jqgrid-toppager .ui-pg-selbox {
	font-size:.9em; 
	line-height:inherit; 
	display:block; 
	height:22px; 
	margin: 0; 
	padding: 3px 0px 3px 3px; 
	border:none;
}
.ui-jqgrid .ui-separator {
	height: 18px; 
	border : none;
	border-left: 2px solid #ccc ; //default
}
.ui-separator-li {
	height: 2px; 
	border : none;
	border-top: 2px solid #ccc ;  //default
	margin: 0; padding: 0; width:100%
}
.ui-jqgrid .ui-jqgrid-pager .ui-pg-div,
.ui-jqgrid .ui-jqgrid-toppager .ui-pg-div
{
	float:left;
	position:relative; 
}
.ui-jqgrid .ui-jqgrid-pager .ui-pg-button,
.ui-jqgrid .ui-jqgrid-toppager .ui-pg-button
{ 
	cursor:pointer; 
}
.ui-jqgrid .ui-jqgrid-pager .ui-pg-div  span,
.ui-jqgrid .ui-jqgrid-toppager .ui-pg-div  span
{
	float:left;
}
.ui-jqgrid td input, 
.ui-jqgrid td select, 
.ui-jqgrid td textarea { 
	margin: 0;
}
.ui-jqgrid td textarea {
	width:auto;
	height:auto;
}
.ui-jqgrid .ui-jqgrid-pager .ui-pager-table,
.ui-jqgrid .ui-jqgrid-toppager .ui-pager-table
{
	width:100%;
	table-layout:fixed;
	height:100%;
}
.ui-jqgrid .ui-jqgrid-pager .ui-paging-info,
.ui-jqgrid .ui-jqgrid-toppager .ui-paging-info
{ 
	font-weight: normal;
	height:auto; 
	margin-top:3px;
	margin-right:4px;
	display: inline;
}
.ui-jqgrid .ui-jqgrid-pager .ui-paging-pager,
.ui-jqgrid .ui-jqgrid-toppager .ui-paging-pager
{
	table-layout:auto;
	height:100%;
}
.ui-jqgrid .ui-jqgrid-pager .navtable,
.ui-jqgrid .ui-jqgrid-toppager .navtable
{
	float:left;
	table-layout:auto;
	height:100%;
}
/*Subgrid*/
.ui-jqgrid .ui-jqgrid-btable .ui-sgcollapsed span {
	display: block;
}
.ui-jqgrid .ui-subgrid {
	margin:0;
	padding:0; 
	width:100%;
}
.ui-jqgrid .ui-subgrid table {
	table-layout: fixed;
}
.ui-jqgrid .ui-subgrid tr.ui-subtblcell td {}
.ui-jqgrid .ui-subgrid td.subgrid-data {
	border-top:  0 none !important;
}
.ui-jqgrid .ui-subgrid td.subgrid-cell { 
	vertical-align: middle
}
.ui-jqgrid a.ui-sghref {
	text-decoration: none;
	color : #010101; //default
}
.ui-jqgrid .ui-th-subgrid {height:20px;}
.tablediv > .row { margin: 0 0}
/* loading */
.ui-jqgrid .loading {
	position: absolute; 
	top: 45%;
	left: 45%;
	width: auto;
	z-index:101;
	padding: 6px; 
	margin: 5px;
	text-align: center;
	display: none;
	border: 1px solid #ddd;  //default
	font-size: 14px;
	background-color: #d9edf7;
}
.ui-jqgrid .jqgrid-overlay { 
	display:none;
	z-index:100;
}
/* IE * html .jqgrid-overlay {width: expression(this.parentNode.offsetWidth+'px');height: expression(this.parentNode.offsetHeight+'px');} */
* .jqgrid-overlay iframe {
	position:absolute;
	top:0;
	left:0;
	z-index:-1;
}
/* IE width: expression(this.parentNode.offsetWidth+'px');height: expression(this.parentNode.offsetHeight+'px');}*/
/* end loading div */
/* Toolbar */
.ui-jqgrid .ui-userdata {
	padding: 4px 0px; 
	overflow: hidden; 
	min-height: 32px; 
}
.ui-jqgrid .ui-userdata-top {
	border-left-width: 0px;    //default
	border-bottom: 1px solid #ddd;	
}
.ui-jqgrid .ui-userdata-bottom {
	border-left-width: 0px;    //default
	border-top: 1px solid #ddd;	
}
/*Modal Window */
.ui-jqdialog { }
.ui-jqdialog { 
	display: none; 
	width: 500px; 
	position: absolute; 
	//padding: 5px; 
	overflow:visible;
}
.ui-jqdialog .ui-jqdialog-titlebar {
	padding: .1em .1em; 
	min-height: 35px; 
}
.ui-jqdialog .ui-jqdialog-title { 
	margin: .3em 0 .2em;  
	font-weight: bold;
	padding-left :6px;
	padding-right:6px;
} 
.ui-jqdialog .ui-jqdialog-titlebar-close { 
	position: absolute;  
	top: 0%; 
	margin: 3px 5px 0 0; 
	padding: 8px;  
	cursor:pointer;
}
.ui-jqdialog .ui-jqdialog-titlebar-close span {  }
.ui-jqdialog .ui-jqdialog-titlebar-close:hover, 
.ui-jqdialog .ui-jqdialog-titlebar-close:focus { 
	padding: 8px; 
}
.ui-jqdialog-content, .ui-jqdialog .ui-jqdialog-content { 
	border: 0; 
	padding: .3em .2em; 
	background: none; 
	height:auto;
}
.ui-jqdialog .ui-jqconfirm {
	padding: .4em 1em; 
	border-width:3px;
	position:absolute;
	bottom:10px;
	right:10px;
	overflow:visible;
	display:none;
	height:120px;
	width:220px;
	text-align:center;
	background-color: #fff;
	border-radius: 4px;
	-webkit-border-radius: 4px;
	-moz-border-radius: 4px;
}
.ui-jqdialog>.ui-resizable-se { }
.ui-jqgrid>.ui-resizable-se { }
/* end Modal window*/
/* Form edit */
.ui-jqdialog-content .FormGrid { 
	margin: 0 8px 0 8px; 
	overflow:auto;
	position:relative;
}
.ui-jqdialog-content .EditTable { 
	width: 100%; 
	margin-bottom:0; 
}
.ui-jqdialog-content .DelTable { 
	width: 100%; 
	margin-bottom:0;
}
.EditTable td input, 
.EditTable td select, 
.EditTable td textarea { 
	width: 98%; 
	display: inline-block;
}
.EditTable td textarea { 
	width:auto; 
	height:auto;
}
.EditTable .FormData td { 
	height:37px !important;
}
.ui-jqdialog-content td.EditButton {
	text-align: right; 
	padding: 5px 5px 5px 0;
}
.ui-jqdialog-content td.navButton {
	text-align: center; 
	border-left: 0 none;
	border-top: 0 none;
	border-right: 0 none; 
	padding-bottom:5px; 
	padding-top:5px;
}
.ui-jqdialog-content input.FormElement {
	padding: .5em .3em; 
	margin-bottom: 5px
}
.ui-jqdialog-content select.FormElement {
	padding:.3em; 
	margin-bottom: 3px;
}
.ui-jqdialog-content .data-line {
	padding-top:.1em;
	border: 0 none;
}
.ui-jqdialog-content .CaptionTD {
	vertical-align: middle;
	border: 0 none; 
	padding: 2px;
	white-space: nowrap;
}
.ui-jqdialog-content .DataTD {
	padding: 2px; 
	border: 0 none; 
	vertical-align: top;
}
.ui-jqdialog-content .form-view-data {
	white-space:pre
}
.fm-button {  }
.fm-button-icon-left { 
	margin-left: 4px; 
	margin-right: 4px;  
}
.fm-button-icon-right { 
	margin-left: 4px; 
	margin-right: 4px; 
}
.fm-button-icon-left  {  }
.fm-button-icon-right  { }
#nData, #pData { 
	margin-left: 4px; 
	margin-right: 4px; 
}
#sData span, #cData span { 
	margin-left: 5px;
}
/* End Eorm edit */
/*.ui-jqgrid .edit-cell {}*/
.ui-jqgrid .selected-row, 
div.ui-jqgrid .selected-row td {
	font-style : normal;
}
/* inline edit actions button*/
.ui-inline-del, .ui-inline-cancel {
    margin-left: 14px;
}
.ui-jqgrid .inline-edit-cell {}
/* Tree Grid */
.ui-jqgrid .tree-wrap {
	float: left; 
	position: relative;
	height: 18px;
	white-space: nowrap;
	overflow: hidden;
}
.ui-jqgrid .tree-minus {
	position: absolute; 
	height: 18px; 
	width: 18px; 
	overflow: hidden;
}
.ui-jqgrid .tree-plus {
	position: absolute;	
	height: 18px; 
	width: 18px;	
	overflow: hidden;
}
.ui-jqgrid .tree-leaf {
	position: absolute;	
	height: 18px; 
	width: 18px;
	overflow: hidden;
}
.ui-jqgrid .treeclick {
	cursor: pointer;
}
/* moda dialog */
* iframe.jqm {
	position:absolute;
	top:0;
	left:0;
	z-index:-1;
}
/*	 width: expression(this.parentNode.offsetWidth+'px');height: expression(this.parentNode.offsetHeight+'px');}*/
.ui-jqgrid-dnd tr td {
	border-right-width: 1px;
	border-right-color: inherit;
	border-right-style: solid; 
	height:20px
}
/* RTL Support */
.ui-jqgrid .ui-jqgrid-caption-rtl {
	text-align: right;
}
.ui-jqgrid .ui-jqgrid-hbox-rtl {
	float: right; 
	padding-left: 20px;
}
.ui-jqgrid .ui-jqgrid-resize-ltr {
	float: right;
	margin: -2px -2px -2px 0;
	height:100%;
}
.ui-jqgrid .ui-jqgrid-resize-rtl {
	float: left;
	margin: -2px -2px -2px -0px;
}
.ui-jqgrid .ui-sort-rtl {
	
}
.ui-jqgrid .tree-wrap-ltr {
	float: left;
}
.ui-jqgrid .tree-wrap-rtl {
	float: right;
}
.ui-jqgrid .ui-ellipsis {
	-moz-text-overflow:ellipsis;
	text-overflow:ellipsis;
}
/* Toolbar Search Menu. Nav menu */
.ui-search-menu, 
.ui-nav-menu {
	position: absolute; 
	padding: 2px 5px; 
	z-index:99999;
}
.ui-search-menu.ui-menu .ui-menu-item,
.ui-nav-menu.ui-menu .ui-menu-item
{ 
	list-style-image: none; 
	padding-right: 0; 
	padding-left: 0; 
}
.ui-search-menu.ui-menu .ui-menu-item a, 
.ui-nav-menu.ui-menu .ui-menu-item a 
{ 
	display: block; 
}
.ui-search-menu.ui-menu .ui-menu-item a.g-menu-item:hover,
.ui-nav-menu.ui-menu .ui-menu-item a.g-menu-item:hover 
{ 
	margin: -1px; 
	font-weight: normal; 
}
.ui-jqgrid .ui-search-table { 
	padding: 0; 
	border: 0 none; 
	height:20px; 
	width:100%;
}
.ui-jqgrid .ui-search-table .ui-search-oper { 
	width:20px; 
}
a.g-menu-item, a.soptclass, a.clearsearchclass { 
	cursor: pointer; 
} 
.ui-jqgrid .ui-jqgrid-view input,
.ui-jqgrid .ui-jqgrid-view select,
.ui-jqgrid .ui-jqgrid-view textarea,
.ui-jqgrid .ui-jqgrid-view button {
    //font-size: 11px
}
.ui-jqgrid .ui-scroll-popup {
	width: 100px;
}
.ui-search-table select,
.ui-search-table input 
{
	padding: 4px 3px;
}
	
.ui-disabled {
	opacity: .35;
	filter:Alpha(Opacity=35); /* support: IE8 */
	background-image: none;
}
.ui-overlay {
	position: fixed;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	background-color: rgba(0,0,0,0.5);
	opacity: .3;
	filter: Alpha(Opacity=30); /* support: IE8 */
}
 
.ui-jqgrid-pager .ui-pg-table .ui-pg-button:hover,
.ui-jqgrid-toppager .ui-pg-table .ui-pg-button:hover
{
	background-color: #ddd;
}
.ui-jqgrid-corner  {
	 border-radius: 5px
}
.ui-resizable-handle {
	//position: absolute;
	display: block;
	left :97%;
}
.ui-jqdialog .ui-resizable-se {
	width: 12px;
	height: 12px;
	right: -5px;
	bottom: -5px;
	background-position: 16px 16px;
}
.ui-resizable-se {
	cursor: se-resize;
	width: 12px;
	height: 12px;
	right: 1px;
	bottom: 1px;
}
.ui-top-corner {
	border-top-left-radius: 5px;
	border-top-right-radius: 5px;
}
.ui-bottom-corner {
	border-bottom-left-radius: 5px;
	border-bottom-right-radius: 5px;
}
.ui-search-table {
	margin-bottom: 0;
}
.ui-search-table .columns, .ui-search-table .operators {
	padding-right: 5px;
}
.opsel {
	float :left;
	width : 100px;
	margin-right : 5px;
}
.add-group, .add-rule, .delete-group {
	width: 14%;	
	margin-right : 5px;
}
.delete-rule {
	width : 15px;
}
ul.ui-search-menu, ul.ui-nav-menu {
	 list-style-type:  none;
}
ul.ui-search-menu li a, 
ul.ui-nav-menu li a,
.soptclass, 
.clearsearchclass {
	text-decoration: none;
	color : #010101;
}
ul.ui-search-menu li a:hover, ul.ui-nav-menu li a:hover, a.soptclass:hover, a.clearsearchclass:hover {
	background-color: #ddd;
	padding: 1px 1px;
	text-decoration: none;
}
ul.ui-search-menu li, ul.ui-nav-menu li {
	padding : 5px 5px;
}
.ui-menu-item hr {
	margin-bottom: 0px;
	margin-top:0px;
}
.searchFilter .ui-search-table td,
.searchFilter .ui-search-table th
{
	border-top: 0px none !important;
}
.searchFilter .queryresult {
	margin-bottom: 5px;
}
.searchFilter .queryresult tr td{
	border-top: 0px none;
}
.ui-search-label { 
	padding-left: 5px;
}
.frozen-div, .frozen-bdiv {
	background-color: #fff;
}
/*
.ui-jqgrid .ui-jqgrid-caption,
.ui-jqgrid .ui-jqgrid-pager,
.ui-jqgrid .ui-jqgrid-toppager,
.ui-jqgrid .ui-jqgrid-htable thead th,
.ui-jqgrid .ui-userdata-top,
.ui-jqgrid .ui-userdata-bottom,
.ui-jqgrid .ui-jqgrid-hdiv,
.ui-jqdialog .ui-jqdialog-titlebar
{
    background-image: none, linear-gradient(to bottom, #fff 0px, #e0e0e0 100%);
    background-repeat: repeat-x;
    border-color: #ccc;
    text-shadow: 0 1px 0 #fff;
}
*/

BIN
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/jsTree/32px.png


File diff suppressed because it is too large
+ 1 - 0
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/jsTree/style.min.css


BIN
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/jsTree/throbber.gif


File diff suppressed because it is too large
+ 1 - 0
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/markdown/bootstrap-markdown.min.css


+ 2 - 0
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/morris/morris-0.4.3.min.css

@ -0,0 +1,2 @@
.morris-hover{position:absolute;z-index:1000;}.morris-hover.morris-default-style{border-radius:10px;padding:6px;color:#666;background:rgba(255, 255, 255, 0.8);border:solid 2px rgba(230, 230, 230, 0.8);font-family:sans-serif;font-size:12px;text-align:center;}.morris-hover.morris-default-style .morris-hover-row-label{font-weight:bold;margin:0.25em 0;}
.morris-hover.morris-default-style .morris-hover-point{white-space:nowrap;margin:0.1em 0;}

+ 165 - 0
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/nouslider/jquery.nouislider.css

@ -0,0 +1,165 @@
/* Functional styling;
 * These styles are required for noUiSlider to function.
 * You don't need to change these rules to apply your design.
 */
.noUi-target,
.noUi-target * {
-webkit-touch-callout: none;
-webkit-user-select: none;
-ms-touch-action: none;
-ms-user-select: none;
-moz-user-select: none;
-moz-box-sizing: border-box;
	box-sizing: border-box;
}
.noUi-base {
	width: 100%;
	height: 100%;
	position: relative;
}
.noUi-origin {
	position: absolute;
	right: 0;
	top: 0;
	left: 0;
	bottom: 0;
}
.noUi-handle {
	position: relative;
	z-index: 1;
}
.noUi-stacking .noUi-handle {
/* This class is applied to the lower origin when
   its values is > 50%. */
	z-index: 10;
}
.noUi-stacking + .noUi-origin {
/* Fix stacking order in IE7, which incorrectly
   creates a new context for the origins. */
	*z-index: -1;
}
.noUi-state-tap .noUi-origin {
-webkit-transition: left 0.3s, top 0.3s;
	transition: left 0.3s, top 0.3s;
}
.noUi-state-drag * {
	cursor: inherit !important;
}
/* Slider size and handle placement;
 */
.noUi-horizontal {
	height: 18px;
}
.noUi-horizontal .noUi-handle {
	width: 34px;
	height: 28px;
	left: -17px;
	top: -6px;
}
.noUi-horizontal.noUi-extended {
	padding: 0 15px;
}
.noUi-horizontal.noUi-extended .noUi-origin  {
	right: -15px;
}
.noUi-vertical {
	width: 18px;
}
.noUi-vertical .noUi-handle {
	width: 28px;
	height: 34px;
	left: -6px;
	top: -17px;
}
.noUi-vertical.noUi-extended {
	padding: 15px 0;
}
.noUi-vertical.noUi-extended .noUi-origin  {
	bottom: -15px;
}
/* Styling;
 */
.noUi-background {
	background: #FAFAFA;
	box-shadow: inset 0 1px 1px #f0f0f0;
}
.noUi-connect {
	background: #3FB8AF;
	box-shadow: inset 0 0 3px rgba(51,51,51,0.45);
-webkit-transition: background 450ms;
	transition: background 450ms;
}
.noUi-origin {
	border-radius: 2px;
}
.noUi-target {
	border-radius: 4px;
	border: 1px solid #D3D3D3;
	box-shadow: inset 0 1px 1px #F0F0F0, 0 3px 6px -5px #BBB;
}
.noUi-target.noUi-connect {
	box-shadow: inset 0 0 3px rgba(51,51,51,0.45), 0 3px 6px -5px #BBB;
}
/* Handles and cursors;
 */
.noUi-dragable {
	cursor: w-resize;
}
.noUi-vertical .noUi-dragable {
	cursor: n-resize;
}
.noUi-handle {
	border: 1px solid #D9D9D9;
	border-radius: 3px;
	background: #FFF;
	cursor: default;
	box-shadow: inset 0 0 1px #FFF,
				inset 0 1px 7px #EBEBEB,
				0 3px 6px -3px #BBB;
}
.noUi-active {
	box-shadow: inset 0 0 1px #FFF,
				inset 0 1px 7px #DDD,
				0 3px 6px -3px #BBB;
}
/* Handle stripes;
 */
.noUi-handle:before,
.noUi-handle:after {
	content: "";
	display: block;
	position: absolute;
	height: 14px;
	width: 1px;
	background: #E8E7E6;
	left: 14px;
	top: 6px;
}
.noUi-handle:after {
	left: 17px;
}
.noUi-vertical .noUi-handle:before,
.noUi-vertical .noUi-handle:after {
	width: 14px;
	height: 1px;
	left: 6px;
	top: 14px;
}
.noUi-vertical .noUi-handle:after {
	top: 17px;
}
/* Disabled state;
 */
[disabled].noUi-connect,
[disabled] .noUi-connect {
	background: #B8B8B8;
}
[disabled] .noUi-handle {
	cursor: not-allowed;
}

+ 620 - 0
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/simditor/simditor.css

@ -0,0 +1,620 @@
.simditor {
  position: relative;
  border: 1px solid #c9d8db;
}
.simditor .simditor-wrapper {
  position: relative;
  background: #ffffff;
  overflow: hidden;
}
.simditor .simditor-wrapper .simditor-placeholder {
  display: none;
  position: absolute;
  left: 0;
  z-index: 0;
  padding: 22px 15px;
  font-size: 16px;
  font-family: arial, sans-serif;
  line-height: 1.5;
  color: #999999;
  background: transparent;
}
.simditor .simditor-wrapper.toolbar-floating .simditor-toolbar {
  position: fixed;
  top: 0;
  z-index: 10;
  box-shadow: 0 0 6px rgba(0, 0, 0, 0.1);
}
.simditor .simditor-wrapper .simditor-image-loading {
  width: 100%;
  height: 100%;
  background: rgba(0, 0, 0, 0.4);
  position: absolute;
  top: 0;
  left: 0;
  z-index: 2;
}
.simditor .simditor-wrapper .simditor-image-loading span {
  width: 30px;
  height: 30px;
  background: #ffffff url(../../../img/loading-upload.gif) no-repeat center center;
  border-radius: 30px;
  position: absolute;
  top: 50%;
  left: 50%;
  margin: -15px 0 0 -15px;
  box-shadow: 0 0 8px rgba(0, 0, 0, 0.4);
}
.simditor .simditor-wrapper .simditor-image-loading.uploading span {
  background: #ffffff;
  color: #333333;
  font-size: 14px;
  line-height: 30px;
  text-align: center;
}
.simditor .simditor-body {
  padding: 22px 15px 40px;
  min-height: 300px;
  outline: none;
  cursor: text;
  position: relative;
  z-index: 1;
  background: transparent;
}
.simditor .simditor-body a.selected {
  background: #b3d4fd;
}
.simditor .simditor-body a.simditor-mention {
  cursor: pointer;
}
.simditor .simditor-body .simditor-table {
  position: relative;
}
.simditor .simditor-body .simditor-table.resizing {
  cursor: col-resize;
}
.simditor .simditor-body .simditor-table .simditor-resize-handle {
  position: absolute;
  left: 0;
  top: 0;
  width: 10px;
  height: 100%;
  cursor: col-resize;
}
.simditor .simditor-body pre {
  /*min-height: 28px;*/
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  word-wrap: break-word !important;
  white-space: pre-wrap !important;
}
.simditor .simditor-body img {
  cursor: pointer;
}
.simditor .simditor-body img.selected {
  box-shadow: 0 0 0 4px #cccccc;
}
.simditor .simditor-paste-area,
.simditor .simditor-clean-paste-area {
  background: transparent;
  border: none;
  outline: none;
  resize: none;
  padding: 0;
  margin: 0;
}
.simditor .simditor-toolbar {
  border-bottom: 1px solid #eeeeee;
  background: #ffffff;
  width: 100%;
}
.simditor .simditor-toolbar > ul {
  margin: 0;
  padding: 0 0 0 6px;
  list-style: none;
}
.simditor .simditor-toolbar > ul:after {
  content: "";
  display: table;
  clear: both;
}
.simditor .simditor-toolbar > ul > li {
  position: relative;
  float: left;
}
.simditor .simditor-toolbar > ul > li > span.separator {
  display: block;
  float: left;
  background: #cfcfcf;
  width: 1px;
  height: 18px;
  margin: 11px 15px;
}
.simditor .simditor-toolbar > ul > li > .toolbar-item {
  display: block;
  float: left;
  width: 50px;
  height: 40px;
  outline: none;
  color: #333333;
  font-size: 15px;
  line-height: 40px;
  text-align: center;
  text-decoration: none;
}
.simditor .simditor-toolbar > ul > li > .toolbar-item span {
  opacity: 0.6;
}
.simditor .simditor-toolbar > ul > li > .toolbar-item span.fa {
  display: inline;
  line-height: normal;
}
.simditor .simditor-toolbar > ul > li > .toolbar-item:hover span {
  opacity: 1;
}
.simditor .simditor-toolbar > ul > li > .toolbar-item.active {
  background: #eeeeee;
}
.simditor .simditor-toolbar > ul > li > .toolbar-item.active span {
  opacity: 1;
}
.simditor .simditor-toolbar > ul > li > .toolbar-item.disabled {
  cursor: default;
}
.simditor .simditor-toolbar > ul > li > .toolbar-item.disabled span {
  opacity: 0.3;
}
.simditor .simditor-toolbar > ul > li > .toolbar-item.toolbar-item-title span:before {
  content: "T";
  font-size: 19px;
  font-weight: bold;
  font-family: 'Times New Roman';
}
.simditor .simditor-toolbar > ul > li > .toolbar-item.toolbar-item-title.active-h1 span:before {
  content: 'H1';
  font-size: 18px;
}
.simditor .simditor-toolbar > ul > li > .toolbar-item.toolbar-item-title.active-h2 span:before {
  content: 'H2';
  font-size: 18px;
}
.simditor .simditor-toolbar > ul > li > .toolbar-item.toolbar-item-title.active-h3 span:before {
  content: 'H3';
  font-size: 18px;
}
.simditor .simditor-toolbar > ul > li > .toolbar-item.toolbar-item-color {
  font-size: 14px;
  position: relative;
}
.simditor .simditor-toolbar > ul > li > .toolbar-item.toolbar-item-color span:before {
  position: relative;
  top: -2px;
}
.simditor .simditor-toolbar > ul > li > .toolbar-item.toolbar-item-color:after {
  content: '';
  display: block;
  width: 14px;
  height: 4px;
  background: #cccccc;
  position: absolute;
  top: 26px;
  left: 50%;
  margin: 0 0 0 -7px;
}
.simditor .simditor-toolbar > ul > li > .toolbar-item.toolbar-item-color:hover:after {
  background: #999999;
}
.simditor .simditor-toolbar > ul > li > .toolbar-item.toolbar-item-color.disabled:after {
  background: #dfdfdf;
}
.simditor .simditor-toolbar > ul > li.menu-on .toolbar-item {
  position: relative;
  z-index: 21;
  background: #ffffff;
  box-shadow: 0 -3px 3px rgba(0, 0, 0, 0.2);
}
.simditor .simditor-toolbar > ul > li.menu-on .toolbar-item span {
  opacity: 1;
}
.simditor .simditor-toolbar > ul > li.menu-on .toolbar-item.toolbar-item-color:after {
  background: #999999;
}
.simditor .simditor-toolbar > ul > li.menu-on .toolbar-menu {
  display: block;
}
.simditor .simditor-toolbar .toolbar-menu {
  display: none;
  position: absolute;
  top: 40px;
  left: 0;
  z-index: 20;
  background: #ffffff;
  text-align: left;
  box-shadow: 0 0 3px rgba(0, 0, 0, 0.2);
}
.simditor .simditor-toolbar .toolbar-menu ul {
  min-width: 160px;
  list-style: none;
  margin: 0;
  padding: 10px 1px;
}
.simditor .simditor-toolbar .toolbar-menu ul > li .menu-item {
  display: block;
  font-size: 16px;
  line-height: 2em;
  padding: 0 10px;
  text-decoration: none;
  color: #666666;
}
.simditor .simditor-toolbar .toolbar-menu ul > li .menu-item:hover {
  background: #f6f6f6;
}
.simditor .simditor-toolbar .toolbar-menu ul > li .menu-item.menu-item-h1 {
  font-size: 24px;
  color: #333333;
}
.simditor .simditor-toolbar .toolbar-menu ul > li .menu-item.menu-item-h2 {
  font-size: 22px;
  color: #333333;
}
.simditor .simditor-toolbar .toolbar-menu ul > li .menu-item.menu-item-h3 {
  font-size: 20px;
  color: #333333;
}
.simditor .simditor-toolbar .toolbar-menu ul > li .menu-item.menu-item-h4 {
  font-size: 18px;
  color: #333333;
}
.simditor .simditor-toolbar .toolbar-menu ul > li .menu-item.menu-item-h5 {
  font-size: 16px;
  color: #333333;
}
.simditor .simditor-toolbar .toolbar-menu ul > li .separator {
  display: block;
  border-top: 1px solid #cccccc;
  height: 0;
  line-height: 0;
  font-size: 0;
  margin: 6px 0;
}
.simditor .simditor-toolbar .toolbar-menu.toolbar-menu-color {
  width: 96px;
}
.simditor .simditor-toolbar .toolbar-menu.toolbar-menu-color .color-list {
  height: 40px;
  margin: 10px 6px 6px 10px;
  padding: 0;
  min-width: 0;
}
.simditor .simditor-toolbar .toolbar-menu.toolbar-menu-color .color-list li {
  float: left;
  margin: 0 4px 4px 0;
}
.simditor .simditor-toolbar .toolbar-menu.toolbar-menu-color .color-list li .font-color {
  display: block;
  width: 16px;
  height: 16px;
  background: #dfdfdf;
  border-radius: 2px;
}
.simditor .simditor-toolbar .toolbar-menu.toolbar-menu-color .color-list li .font-color:hover {
  opacity: 0.8;
}
.simditor .simditor-toolbar .toolbar-menu.toolbar-menu-color .color-list li .font-color.font-color-default {
  background: #333333;
}
.simditor .simditor-toolbar .toolbar-menu.toolbar-menu-color .color-list li .font-color-1 {
  background: #E33737;
}
.simditor .simditor-toolbar .toolbar-menu.toolbar-menu-color .color-list li .font-color-2 {
  background: #e28b41;
}
.simditor .simditor-toolbar .toolbar-menu.toolbar-menu-color .color-list li .font-color-3 {
  background: #c8a732;
}
.simditor .simditor-toolbar .toolbar-menu.toolbar-menu-color .color-list li .font-color-4 {
  background: #209361;
}
.simditor .simditor-toolbar .toolbar-menu.toolbar-menu-color .color-list li .font-color-5 {
  background: #418caf;
}
.simditor .simditor-toolbar .toolbar-menu.toolbar-menu-color .color-list li .font-color-6 {
  background: #aa8773;
}
.simditor .simditor-toolbar .toolbar-menu.toolbar-menu-color .color-list li .font-color-7 {
  background: #999999;
}
.simditor .simditor-toolbar .toolbar-menu.toolbar-menu-table .menu-create-table {
  background: #ffffff;
}
.simditor .simditor-toolbar .toolbar-menu.toolbar-menu-table .menu-create-table table {
  border: none;
  border-collapse: collapse;
  border-spacing: 0;
  table-layout: fixed;
}
.simditor .simditor-toolbar .toolbar-menu.toolbar-menu-table .menu-create-table table td {
  height: 16px;
  padding: 0;
  border: 2px solid #ffffff;
  background: #f3f3f3;
  cursor: pointer;
}
.simditor .simditor-toolbar .toolbar-menu.toolbar-menu-table .menu-create-table table td:before {
  width: 16px;
  display: block;
  content: "";
}
.simditor .simditor-toolbar .toolbar-menu.toolbar-menu-table .menu-create-table table td.selected {
  background: #cfcfcf;
}
.simditor .simditor-toolbar .toolbar-menu.toolbar-menu-table .menu-edit-table {
  display: none;
}
.simditor .simditor-toolbar .toolbar-menu.toolbar-menu-table .menu-edit-table ul {
  min-width: 240px;
}
.simditor .simditor-toolbar .toolbar-menu.toolbar-menu-image .menu-item-upload-image {
  position: relative;
  overflow: hidden;
}
.simditor .simditor-toolbar .toolbar-menu.toolbar-menu-image .menu-item-upload-image input[type=file] {
  position: absolute;
  right: 0px;
  top: 0px;
  opacity: 0;
  font-size: 100px;
  cursor: pointer;
}
.simditor .simditor-popover {
  display: none;
  padding: 5px 8px 0;
  background: #ffffff;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4);
  border-radius: 2px;
  position: absolute;
  z-index: 2;
}
.simditor .simditor-popover .settings-field {
  margin: 0 0 5px 0;
  font-size: 12px;
  height: 25px;
  line-height: 25px;
}
.simditor .simditor-popover .settings-field label {
  margin: 0 8px 0 0;
  float: left;
}
.simditor .simditor-popover .settings-field input[type=text] {
  float: left;
  width: 200px;
  box-sizing: border-box;
  font-size: 12px;
}
.simditor .simditor-popover .settings-field input[type=text].image-size {
  width: 87px;
}
.simditor .simditor-popover .settings-field .times {
  float: left;
  width: 26px;
  font-size: 12px;
  text-align: center;
}
.simditor .simditor-popover.link-popover .btn-unlink, .simditor .simditor-popover.image-popover .btn-upload, .simditor .simditor-popover.image-popover .btn-restore {
  float: left;
  margin: 0 0 0 8px;
  color: #333333;
  font-size: 14px;
  outline: 0;
}
.simditor .simditor-popover.link-popover .btn-unlink span, .simditor .simditor-popover.image-popover .btn-upload span, .simditor .simditor-popover.image-popover .btn-restore span {
  opacity: 0.6;
}
.simditor .simditor-popover.link-popover .btn-unlink:hover span, .simditor .simditor-popover.image-popover .btn-upload:hover span, .simditor .simditor-popover.image-popover .btn-restore:hover span {
  opacity: 1;
}
.simditor .simditor-popover.image-popover .btn-upload {
  position: relative;
  display: inline-block;
  overflow: hidden;
}
.simditor .simditor-popover.image-popover .btn-upload input[type=file] {
  position: absolute;
  right: 0px;
  top: 0px;
  opacity: 0;
  height: 100%;
  width: 28px;
}
.simditor.simditor-mobile .simditor-toolbar > ul > li > .toolbar-item {
  width: 46px;
}
.simditor.simditor-mobile .simditor-wrapper.toolbar-floating .simditor-toolbar {
  position: absolute;
  top: 0;
  z-index: 10;
  box-shadow: 0 0 6px rgba(0, 0, 0, 0.1);
}
.simditor .simditor-body, .editor-style {
  font-size: 16px;
  font-family: arial, sans-serif;
  line-height: 1.6;
  color: #333;
  outline: none;
  word-wrap: break-word;
}
.simditor .simditor-body > :first-child, .editor-style > :first-child {
  margin-top: 0 !important;
}
.simditor .simditor-body a, .editor-style a {
  color: #4298BA;
  text-decoration: none;
  word-break: break-all;
}
.simditor .simditor-body a:visited, .editor-style a:visited {
  color: #4298BA;
}
.simditor .simditor-body a:hover, .editor-style a:hover {
  color: #0F769F;
}
.simditor .simditor-body a:active, .editor-style a:active {
  color: #9E792E;
}
.simditor .simditor-body a:hover, .simditor .simditor-body a:active, .editor-style a:hover, .editor-style a:active {
  outline: 0;
}
.simditor .simditor-body h1, .simditor .simditor-body h2, .simditor .simditor-body h3, .simditor .simditor-body h4, .simditor .simditor-body h5, .simditor .simditor-body h6, .editor-style h1, .editor-style h2, .editor-style h3, .editor-style h4, .editor-style h5, .editor-style h6 {
  font-weight: normal;
  margin: 40px 0 20px;
  color: #000000;
}
.simditor .simditor-body h1, .editor-style h1 {
  font-size: 24px;
}
.simditor .simditor-body h2, .editor-style h2 {
  font-size: 22px;
}
.simditor .simditor-body h3, .editor-style h3 {
  font-size: 20px;
}
.simditor .simditor-body h4, .editor-style h4 {
  font-size: 18px;
}
.simditor .simditor-body h5, .editor-style h5 {
  font-size: 16px;
}
.simditor .simditor-body h6, .editor-style h6 {
  font-size: 16px;
}
.simditor .simditor-body p, .simditor .simditor-body div, .editor-style p, .editor-style div {
  word-wrap: break-word;
  margin: 0 0 15px 0;
  color: #333;
  word-wrap: break-word;
}
.simditor .simditor-body b, .simditor .simditor-body strong, .editor-style b, .editor-style strong {
  font-weight: bold;
}
.simditor .simditor-body i, .simditor .simditor-body em, .editor-style i, .editor-style em {
  font-style: italic;
}
.simditor .simditor-body u, .editor-style u {
  text-decoration: underline;
}
.simditor .simditor-body strike, .simditor .simditor-body del, .editor-style strike, .editor-style del {
  text-decoration: line-through;
}
.simditor .simditor-body ul, .simditor .simditor-body ol, .editor-style ul, .editor-style ol {
  list-style: disc outside none;
  margin: 15px 0;
  padding: 0 0 0 40px;
  line-height: 1.6;
}
.simditor .simditor-body ul ul, .simditor .simditor-body ul ol, .simditor .simditor-body ol ul, .simditor .simditor-body ol ol, .editor-style ul ul, .editor-style ul ol, .editor-style ol ul, .editor-style ol ol {
  padding-left: 30px;
}
.simditor .simditor-body ul ul, .simditor .simditor-body ol ul, .editor-style ul ul, .editor-style ol ul {
  list-style: circle outside none;
}
.simditor .simditor-body ul ul ul, .simditor .simditor-body ol ul ul, .editor-style ul ul ul, .editor-style ol ul ul {
  list-style: square outside none;
}
.simditor .simditor-body ol, .editor-style ol {
  list-style: decimal;
}
.simditor .simditor-body blockquote, .editor-style blockquote {
  border-left: 6px solid #ddd;
  padding: 5px 0 5px 10px;
  margin: 15px 0 15px 15px;
}
.simditor .simditor-body blockquote > :first-child, .editor-style blockquote > :first-child {
  margin-top: 0;
}
.simditor .simditor-body pre, .editor-style pre {
  padding: 10px 5px 10px 10px;
  margin: 15px 0;
  display: block;
  line-height: 18px;
  background: #F0F0F0;
  border-radius: 3px;
  font-size: 13px;
  font-family: 'monaco', 'Consolas', "Liberation Mono", Courier, monospace;
  overflow-x: auto;
  white-space: nowrap;
}
.simditor .simditor-body code, .editor-style code {
  display: inline-block;
  padding: 0 4px;
  margin: 0 5px;
  background: #eeeeee;
  border-radius: 3px;
  font-size: 13px;
  font-family: 'monaco', 'Consolas', "Liberation Mono", Courier, monospace;
}
.simditor .simditor-body hr, .editor-style hr {
  display: block;
  height: 0px;
  border: 0;
  border-top: 1px solid #ccc;
  margin: 15px 0;
  padding: 0;
}
.simditor .simditor-body table, .editor-style table {
  width: 100%;
  table-layout: fixed;
  border-collapse: collapse;
  border-spacing: 0;
  margin: 15px 0;
}
.simditor .simditor-body table thead, .editor-style table thead {
  background-color: #f9f9f9;
}
.simditor .simditor-body table td, .editor-style table td {
  min-width: 40px;
  height: 30px;
  border: 1px solid #ccc;
  vertical-align: top;
  padding: 2px 4px;
  box-sizing: border-box;
}
.simditor .simditor-body table td.active, .editor-style table td.active {
  background-color: #ffffee;
}
.simditor .simditor-body img, .editor-style img {
  margin: 0 5px;
  vertical-align: middle;
}
.simditor .simditor-body *[data-indent="0"], .editor-style *[data-indent="0"] {
  margin-left: 0px;
}
.simditor .simditor-body *[data-indent="1"], .editor-style *[data-indent="1"] {
  margin-left: 40px;
}
.simditor .simditor-body *[data-indent="2"], .editor-style *[data-indent="2"] {
  margin-left: 80px;
}
.simditor .simditor-body *[data-indent="3"], .editor-style *[data-indent="3"] {
  margin-left: 120px;
}
.simditor .simditor-body *[data-indent="4"], .editor-style *[data-indent="4"] {
  margin-left: 160px;
}
.simditor .simditor-body *[data-indent="5"], .editor-style *[data-indent="5"] {
  margin-left: 200px;
}
.simditor .simditor-body *[data-indent="6"], .editor-style *[data-indent="6"] {
  margin-left: 240px;
}
.simditor .simditor-body *[data-indent="7"], .editor-style *[data-indent="7"] {
  margin-left: 280px;
}
.simditor .simditor-body *[data-indent="8"], .editor-style *[data-indent="8"] {
  margin-left: 320px;
}
.simditor .simditor-body *[data-indent="9"], .editor-style *[data-indent="9"] {
  margin-left: 360px;
}
.simditor .simditor-body *[data-indent="10"], .editor-style *[data-indent="10"] {
  margin-left: 400px;
}

+ 380 - 0
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/steps/jquery.steps.css

@ -0,0 +1,380 @@
/*
    Common
*/
.wizard,
.tabcontrol
{
    display: block;
    width: 100%;
    overflow: hidden;
}
.wizard a,
.tabcontrol a
{
    outline: 0;
}
.wizard ul,
.tabcontrol ul
{
    list-style: none !important;
    padding: 0;
    margin: 0;
}
.wizard ul > li,
.tabcontrol ul > li
{
    display: block;
    padding: 0;
}
/* Accessibility */
.wizard > .steps .current-info,
.tabcontrol > .steps .current-info
{
    position: absolute;
    left: -999em;
}
.wizard > .content > .title,
.tabcontrol > .content > .title
{
    position: absolute;
    left: -999em;
}
/*
    Wizard
*/
.wizard > .steps
{
    position: relative;
    display: block;
    width: 100%;
}
.wizard.vertical > .steps
{
    display: inline;
    float: left;
    width: 30%;
}
.wizard > .steps > ul > li
{
    width: 25%;
}
.wizard > .steps > ul > li,
.wizard > .actions > ul > li
{
    float: left;
}
.wizard.vertical > .steps > ul > li
{
    float: none;
    width: 100%;
}
.wizard > .steps a,
.wizard > .steps a:hover,
.wizard > .steps a:active
{
    display: block;
    width: auto;
    margin: 0 0.5em 0.5em;
    padding: 8px;
    text-decoration: none;
    -webkit-border-radius: 5px;
    -moz-border-radius: 5px;
    border-radius: 5px;
}
.wizard > .steps .disabled a,
.wizard > .steps .disabled a:hover,
.wizard > .steps .disabled a:active
{
    background: #eee;
    color: #aaa;
    cursor: default;
}
.wizard > .steps .current a,
.wizard > .steps .current a:hover,
.wizard > .steps .current a:active
{
    background: #1AB394;
    color: #fff;
    cursor: default;
}
.wizard > .steps .done a,
.wizard > .steps .done a:hover,
.wizard > .steps .done a:active
{
    background: #6fd1bd;
    color: #fff;
}
.wizard > .steps .error a,
.wizard > .steps .error a:hover,
.wizard > .steps .error a:active
{
    background: #ED5565 ;
    color: #fff;
}
.wizard > .content
{
    background: #eee;
    display: block;
    margin: 5px 5px 10px 5px;
    min-height: 120px;
    overflow: hidden;
    position: relative;
    width: auto;
    -webkit-border-radius: 5px;
    -moz-border-radius: 5px;
    border-radius: 5px;
}
.wizard-big.wizard > .content {
    min-height: 320px;
}
.wizard.vertical > .content
{
    display: inline;
    float: left;
    margin: 0 2.5% 0.5em 2.5%;
    width: 65%;
}
.wizard > .content > .body
{
    float: left;
    position: absolute;
    width: 95%;
    height: 95%;
    padding: 2.5%;
}
.wizard > .content > .body ul
{
    list-style: disc !important;
}
.wizard > .content > .body ul > li
{
    display: list-item;
}
.wizard > .content > .body > iframe
{
    border: 0 none;
    width: 100%;
    height: 100%;
}
.wizard > .content > .body input
{
    display: block;
    border: 1px solid #ccc;
}
.wizard > .content > .body input[type="checkbox"]
{
    display: inline-block;
}
.wizard > .content > .body input.error
{
    background: rgb(251, 227, 228);
    border: 1px solid #fbc2c4;
    color: #8a1f11;
}
.wizard > .content > .body label
{
    display: inline-block;
    margin-bottom: 0.5em;
}
.wizard > .content > .body label.error
{
    color: #8a1f11;
    display: inline-block;
    margin-left: 1.5em;
}
.wizard > .actions
{
    position: relative;
    display: block;
    text-align: right;
    width: 100%;
}
.wizard.vertical > .actions
{
    display: inline;
    float: right;
    margin: 0 2.5%;
    width: 95%;
}
.wizard > .actions > ul
{
    display: inline-block;
    text-align: right;
}
.wizard > .actions > ul > li
{
    margin: 0 0.5em;
}
.wizard.vertical > .actions > ul > li
{
    margin: 0 0 0 1em;
}
.wizard > .actions a,
.wizard > .actions a:hover,
.wizard > .actions a:active
{
    background: #1AB394;
    color: #fff;
    display: block;
    padding: 0.5em 1em;
    text-decoration: none;
    -webkit-border-radius: 5px;
    -moz-border-radius: 5px;
    border-radius: 5px;
}
.wizard > .actions .disabled a,
.wizard > .actions .disabled a:hover,
.wizard > .actions .disabled a:active
{
    background: #eee;
    color: #aaa;
}
.wizard > .loading
{
}
.wizard > .loading .spinner
{
}
/*
    Tabcontrol
*/
.tabcontrol > .steps
{
    position: relative;
    display: block;
    width: 100%;
}
.tabcontrol > .steps > ul
{
    position: relative;
    margin: 6px 0 0 0;
    top: 1px;
    z-index: 1;
}
.tabcontrol > .steps > ul > li
{
    float: left;
    margin: 5px 2px 0 0;
    padding: 1px;
    -webkit-border-top-left-radius: 5px;
    -webkit-border-top-right-radius: 5px;
    -moz-border-radius-topleft: 5px;
    -moz-border-radius-topright: 5px;
    border-top-left-radius: 5px;
    border-top-right-radius: 5px;
}
.tabcontrol > .steps > ul > li:hover
{
    background: #edecec;
    border: 1px solid #bbb;
    padding: 0;
}
.tabcontrol > .steps > ul > li.current
{
    background: #fff;
    border: 1px solid #bbb;
    border-bottom: 0 none;
    padding: 0 0 1px 0;
    margin-top: 0;
}
.tabcontrol > .steps > ul > li > a
{
    color: #5f5f5f;
    display: inline-block;
    border: 0 none;
    margin: 0;
    padding: 10px 30px;
    text-decoration: none;
}
.tabcontrol > .steps > ul > li > a:hover
{
    text-decoration: none;
}
.tabcontrol > .steps > ul > li.current > a
{
    padding: 15px 30px 10px 30px;
}
.tabcontrol > .content
{
    position: relative;
    display: inline-block;
    width: 100%;
    height: 35em;
    overflow: hidden;
    border-top: 1px solid #bbb;
    padding-top: 20px;
}
.tabcontrol > .content > .body
{
    float: left;
    position: absolute;
    width: 95%;
    height: 95%;
    padding: 2.5%;
}
.tabcontrol > .content > .body ul
{
    list-style: disc !important;
}
.tabcontrol > .content > .body ul > li
{
    display: list-item;
}

File diff suppressed because it is too large
+ 5970 - 0
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/summernote/summernote-bs3.css


+ 446 - 0
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/summernote/summernote.css

@ -0,0 +1,446 @@
.note-editor {
    height: 300px;
}
.note-editor .note-dropzone {
    position: absolute;
    z-index: 1;
    display: none;
    color: #87cefa;
    background-color: white;
    border: 2px dashed #87cefa;
    opacity: .95;
    pointer-event: none
}
.note-editor .note-dropzone .note-dropzone-message {
    display: table-cell;
    font-size: 28px;
    font-weight: bold;
    text-align: center;
    vertical-align: middle
}
.note-editor .note-dropzone.hover {
    color: #098ddf;
    border: 2px dashed #098ddf
}
.note-editor.dragover .note-dropzone {
    display: table
}
.note-editor.fullscreen {
    position: fixed;
    top: 0;
    left: 0;
    z-index: 1050;
    width: 100%
}
.note-editor.fullscreen .note-editable {
    background-color: white
}
.note-editor.fullscreen .note-resizebar {
    display: none
}
.note-editor.codeview .note-editable {
    display: none
}
.note-editor.codeview .note-codable {
    display: block
}
.note-editor .note-toolbar {
    padding-bottom: 5px;
    padding-left: 10px;
    padding-top: 5px;
    margin: 0;
    background-color: #f5f5f5;
    border-bottom: 1px solid #E7EAEC
}
.note-editor .note-toolbar > .btn-group {
    margin-top: 5px;
    margin-right: 5px;
    margin-left: 0
}
.note-editor .note-toolbar .note-table .dropdown-menu {
    min-width: 0;
    padding: 5px
}
.note-editor .note-toolbar .note-table .dropdown-menu .note-dimension-picker {
    font-size: 18px
}
.note-editor .note-toolbar .note-table .dropdown-menu .note-dimension-picker .note-dimension-picker-mousecatcher {
    position: absolute !important;
    z-index: 3;
    width: 10em;
    height: 10em;
    cursor: pointer
}
.note-editor .note-toolbar .note-table .dropdown-menu .note-dimension-picker .note-dimension-picker-unhighlighted {
    position: relative !important;
    z-index: 1;
    width: 5em;
    height: 5em;
    background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIj4+Pjp6ekKlAqjAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKhmnaJzPAAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC') repeat
}
.note-editor .note-toolbar .note-table .dropdown-menu .note-dimension-picker .note-dimension-picker-highlighted {
    position: absolute !important;
    z-index: 2;
    width: 1em;
    height: 1em;
    background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIjd6vvD2f9LKLW+AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKwNDEVT0AAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC') repeat
}
.note-editor .note-toolbar .note-style h1, .note-editor .note-toolbar .note-style h2, .note-editor .note-toolbar .note-style h3, .note-editor .note-toolbar .note-style h4, .note-editor .note-toolbar .note-style h5, .note-editor .note-toolbar .note-style h6, .note-editor .note-toolbar .note-style blockquote {
    margin: 0
}
.note-editor .note-toolbar .note-color .dropdown-toggle {
    width: 20px;
    padding-left: 5px
}
.note-editor .note-toolbar .note-color .dropdown-menu {
    min-width: 290px
}
.note-editor .note-toolbar .note-color .dropdown-menu .btn-group {
    margin: 0
}
.note-editor .note-toolbar .note-color .dropdown-menu .btn-group:first-child {
    margin: 0 5px
}
.note-editor .note-toolbar .note-color .dropdown-menu .btn-group .note-palette-title {
    margin: 2px 7px;
    font-size: 12px;
    text-align: center;
    border-bottom: 1px solid #eee
}
.note-editor .note-toolbar .note-color .dropdown-menu .btn-group .note-color-reset {
    padding: 0 3px;
    margin: 5px;
    font-size: 12px;
    cursor: pointer;
    -webkit-border-radius: 5px;
    -moz-border-radius: 5px;
    border-radius: 5px
}
.note-editor .note-toolbar .note-color .dropdown-menu .btn-group .note-color-reset:hover {
    background: #eee
}
.note-editor .note-toolbar .note-para .dropdown-menu {
    min-width: 216px;
    padding: 5px
}
.note-editor .note-toolbar .note-para .dropdown-menu > div:first-child {
    margin-right: 5px
}
.note-editor .note-statusbar {
    background-color: #f5f5f5
}
.note-editor .note-statusbar .note-resizebar {
    width: 100%;
    height: 8px;
    cursor: s-resize;
    border-top: 1px solid #a9a9a9
}
.note-editor .note-statusbar .note-resizebar .note-icon-bar {
    width: 20px;
    margin: 1px auto;
    border-top: 1px solid #a9a9a9
}
.note-editor .note-popover .popover {
    max-width: none
}
.note-editor .note-popover .popover .popover-content {
    padding: 5px
}
.note-editor .note-popover .popover .popover-content a {
    display: inline-block;
    max-width: 200px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    vertical-align: middle
}
.note-editor .note-popover .popover .popover-content .btn-group + .btn-group {
    margin-left: 5px
}
.note-editor .note-popover .popover .arrow {
    left: 20px
}
.note-editor .note-handle .note-control-selection {
    position: absolute;
    display: none;
    border: 1px solid black
}
.note-editor .note-handle .note-control-selection > div {
    position: absolute
}
.note-editor .note-handle .note-control-selection .note-control-selection-bg {
    width: 100%;
    height: 100%;
    background-color: black;
    -webkit-opacity: .3;
    -khtml-opacity: .3;
    -moz-opacity: .3;
    opacity: .3;
    -ms-filter: alpha(opacity=30);
    filter: alpha(opacity=30)
}
.note-editor .note-handle .note-control-selection .note-control-handle {
    width: 7px;
    height: 7px;
    border: 1px solid black
}
.note-editor .note-handle .note-control-selection .note-control-holder {
    width: 7px;
    height: 7px;
    border: 1px solid black
}
.note-editor .note-handle .note-control-selection .note-control-sizing {
    width: 7px;
    height: 7px;
    background-color: white;
    border: 1px solid black
}
.note-editor .note-handle .note-control-selection .note-control-nw {
    top: -5px;
    left: -5px;
    border-right: 0;
    border-bottom: 0
}
.note-editor .note-handle .note-control-selection .note-control-ne {
    top: -5px;
    right: -5px;
    border-bottom: 0;
    border-left: none
}
.note-editor .note-handle .note-control-selection .note-control-sw {
    bottom: -5px;
    left: -5px;
    border-top: 0;
    border-right: 0
}
.note-editor .note-handle .note-control-selection .note-control-se {
    right: -5px;
    bottom: -5px;
    cursor: se-resize
}
.note-editor .note-handle .note-control-selection .note-control-selection-info {
    right: 0;
    bottom: 0;
    padding: 5px;
    margin: 5px;
    font-size: 12px;
    color: white;
    background-color: black;
    -webkit-border-radius: 5px;
    -moz-border-radius: 5px;
    border-radius: 5px;
    -webkit-opacity: .7;
    -khtml-opacity: .7;
    -moz-opacity: .7;
    opacity: .7;
    -ms-filter: alpha(opacity=70);
    filter: alpha(opacity=70)
}
.note-editor .note-dialog > div {
    display: none
}
.note-editor .note-dialog .note-image-dialog .note-dropzone {
    min-height: 100px;
    margin-bottom: 10px;
    font-size: 30px;
    line-height: 4;
    color: lightgray;
    text-align: center;
    border: 4px dashed lightgray
}
.note-editor .note-dialog .note-help-dialog {
    font-size: 12px;
    color: #ccc;
    background: transparent;
    background-color: #222 !important;
    border: 0;
    -webkit-opacity: .9;
    -khtml-opacity: .9;
    -moz-opacity: .9;
    opacity: .9;
    -ms-filter: alpha(opacity=90);
    filter: alpha(opacity=90)
}
.note-editor .note-dialog .note-help-dialog .modal-content {
    background: transparent;
    border: 1px solid white;
    -webkit-border-radius: 5px;
    -moz-border-radius: 5px;
    border-radius: 5px;
    -webkit-box-shadow: none;
    -moz-box-shadow: none;
    box-shadow: none
}
.note-editor .note-dialog .note-help-dialog a {
    font-size: 12px;
    color: white
}
.note-editor .note-dialog .note-help-dialog .title {
    padding-bottom: 5px;
    font-size: 14px;
    font-weight: bold;
    color: white;
    border-bottom: white 1px solid
}
.note-editor .note-dialog .note-help-dialog .modal-close {
    font-size: 14px;
    color: #dd0;
    cursor: pointer
}
.note-editor .note-dialog .note-help-dialog .note-shortcut-layout {
    width: 100%
}
.note-editor .note-dialog .note-help-dialog .note-shortcut-layout td {
    vertical-align: top
}
.note-editor .note-dialog .note-help-dialog .note-shortcut {
    margin-top: 8px
}
.note-editor .note-dialog .note-help-dialog .note-shortcut th {
    font-size: 13px;
    color: #dd0;
    text-align: left
}
.note-editor .note-dialog .note-help-dialog .note-shortcut td:first-child {
    min-width: 110px;
    padding-right: 10px;
    font-family: "Courier New";
    color: #dd0;
    text-align: right
}
.note-editor .note-editable {
    padding: 20px;
    overflow: auto;
    outline: 0
}
.note-editor .note-editable[contenteditable="false"] {
    background-color: #e5e5e5
}
.note-editor .note-codable {
    display: none;
    width: 100%;
    padding: 10px;
    margin-bottom: 0;
    font-family: Menlo, Monaco, monospace, sans-serif;
    font-size: 14px;
    color: #ccc;
    background-color: #222;
    border: 0;
    -webkit-border-radius: 0;
    -moz-border-radius: 0;
    border-radius: 0;
    box-shadow: none;
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    -ms-box-sizing: border-box;
    box-sizing: border-box;
    resize: none
}
.note-editor .dropdown-menu {
    min-width: 90px
}
.note-editor .dropdown-menu.right {
    right: 0;
    left: auto
}
.note-editor .dropdown-menu.right::before {
    right: 9px;
    left: auto !important
}
.note-editor .dropdown-menu.right::after {
    right: 10px;
    left: auto !important
}
.note-editor .dropdown-menu li a i {
    color: deepskyblue;
    visibility: hidden
}
.note-editor .dropdown-menu li a.checked i {
    visibility: visible
}
.note-editor .note-fontsize-10 {
    font-size: 10px
}
.note-editor .note-color-palette {
    line-height: 1
}
.note-editor .note-color-palette div .note-color-btn {
    width: 17px;
    height: 17px;
    padding: 0;
    margin: 0;
    border: 1px solid #fff
}
.note-editor .note-color-palette div .note-color-btn:hover {
    border: 1px solid #000
}

+ 715 - 0
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/sweetalert/sweetalert.css

@ -0,0 +1,715 @@
body.stop-scrolling {
  height: 100%;
  overflow: hidden; }
.sweet-overlay {
  background-color: black;
  /* IE8 */
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";
  /* IE8 */
  background-color: rgba(0, 0, 0, 0.4);
  position: fixed;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  display: none;
  z-index: 10000; }
.sweet-alert {
  background-color: white;
  font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
  width: 478px;
  padding: 17px;
  border-radius: 5px;
  text-align: center;
  position: fixed;
  left: 50%;
  top: 50%;
  margin-left: -256px;
  margin-top: -200px;
  overflow: hidden;
  display: none;
  z-index: 99999; }
  @media all and (max-width: 540px) {
    .sweet-alert {
      width: auto;
      margin-left: 0;
      margin-right: 0;
      left: 15px;
      right: 15px; } }
  .sweet-alert h2 {
    color: #575757;
    font-size: 30px;
    text-align: center;
    font-weight: 600;
    text-transform: none;
    position: relative;
    margin: 25px 0;
    padding: 0;
    line-height: 40px;
    display: block; }
  .sweet-alert p {
    color: #797979;
    font-size: 16px;
    text-align: center;
    font-weight: 300;
    position: relative;
    text-align: inherit;
    float: none;
    margin: 0;
    padding: 0;
    line-height: normal; }
  .sweet-alert fieldset {
    border: none;
    position: relative; }
  .sweet-alert .sa-error-container {
    background-color: #f1f1f1;
    margin-left: -17px;
    margin-right: -17px;
    overflow: hidden;
    padding: 0 10px;
    max-height: 0;
    webkit-transition: padding 0.15s, max-height 0.15s;
    transition: padding 0.15s, max-height 0.15s; }
    .sweet-alert .sa-error-container.show {
      padding: 10px 0;
      max-height: 100px;
      webkit-transition: padding 0.2s, max-height 0.2s;
      transition: padding 0.25s, max-height 0.25s; }
    .sweet-alert .sa-error-container .icon {
      display: inline-block;
      width: 24px;
      height: 24px;
      border-radius: 50%;
      background-color: #ea7d7d;
      color: white;
      line-height: 24px;
      text-align: center;
      margin-right: 3px; }
    .sweet-alert .sa-error-container p {
      display: inline-block; }
  .sweet-alert .sa-input-error {
    position: absolute;
    top: 29px;
    right: 26px;
    width: 20px;
    height: 20px;
    opacity: 0;
    -webkit-transform: scale(0.5);
    transform: scale(0.5);
    -webkit-transform-origin: 50% 50%;
    transform-origin: 50% 50%;
    -webkit-transition: all 0.1s;
    transition: all 0.1s; }
    .sweet-alert .sa-input-error::before, .sweet-alert .sa-input-error::after {
      content: "";
      width: 20px;
      height: 6px;
      background-color: #f06e57;
      border-radius: 3px;
      position: absolute;
      top: 50%;
      margin-top: -4px;
      left: 50%;
      margin-left: -9px; }
    .sweet-alert .sa-input-error::before {
      -webkit-transform: rotate(-45deg);
      transform: rotate(-45deg); }
    .sweet-alert .sa-input-error::after {
      -webkit-transform: rotate(45deg);
      transform: rotate(45deg); }
    .sweet-alert .sa-input-error.show {
      opacity: 1;
      -webkit-transform: scale(1);
      transform: scale(1); }
  .sweet-alert input {
    width: 100%;
    box-sizing: border-box;
    border-radius: 3px;
    border: 1px solid #d7d7d7;
    height: 43px;
    margin-top: 10px;
    margin-bottom: 17px;
    font-size: 18px;
    box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.06);
    padding: 0 12px;
    display: none;
    -webkit-transition: all 0.3s;
    transition: all 0.3s; }
    .sweet-alert input:focus {
      outline: none;
      box-shadow: 0px 0px 3px #c4e6f5;
      border: 1px solid #b4dbed; }
      .sweet-alert input:focus::-moz-placeholder {
        transition: opacity 0.3s 0.03s ease;
        opacity: 0.5; }
      .sweet-alert input:focus:-ms-input-placeholder {
        transition: opacity 0.3s 0.03s ease;
        opacity: 0.5; }
      .sweet-alert input:focus::-webkit-input-placeholder {
        transition: opacity 0.3s 0.03s ease;
        opacity: 0.5; }
    .sweet-alert input::-moz-placeholder {
      color: #bdbdbd; }
    .sweet-alert input:-ms-input-placeholder {
      color: #bdbdbd; }
    .sweet-alert input::-webkit-input-placeholder {
      color: #bdbdbd; }
  .sweet-alert.show-input input {
    display: block; }
  .sweet-alert button {
    background-color: #AEDEF4;
    color: white;
    border: none;
    box-shadow: none;
    font-size: 17px;
    font-weight: 500;
    -webkit-border-radius: 4px;
    border-radius: 5px;
    padding: 10px 32px;
    margin: 26px 5px 0 5px;
    cursor: pointer; }
    .sweet-alert button:focus {
      outline: none;
      box-shadow: 0 0 2px rgba(128, 179, 235, 0.5), inset 0 0 0 1px rgba(0, 0, 0, 0.05); }
    .sweet-alert button:hover {
      background-color: #a1d9f2; }
    .sweet-alert button:active {
      background-color: #81ccee; }
    .sweet-alert button.cancel {
      background-color: #D0D0D0; }
      .sweet-alert button.cancel:hover {
        background-color: #c8c8c8; }
      .sweet-alert button.cancel:active {
        background-color: #b6b6b6; }
      .sweet-alert button.cancel:focus {
        box-shadow: rgba(197, 205, 211, 0.8) 0px 0px 2px, rgba(0, 0, 0, 0.0470588) 0px 0px 0px 1px inset !important; }
    .sweet-alert button::-moz-focus-inner {
      border: 0; }
  .sweet-alert[data-has-cancel-button=false] button {
    box-shadow: none !important; }
  .sweet-alert[data-has-confirm-button=false][data-has-cancel-button=false] {
    padding-bottom: 40px; }
  .sweet-alert .sa-icon {
    width: 80px;
    height: 80px;
    border: 4px solid gray;
    -webkit-border-radius: 40px;
    border-radius: 40px;
    border-radius: 50%;
    margin: 20px auto;
    padding: 0;
    position: relative;
    box-sizing: content-box; }
    .sweet-alert .sa-icon.sa-error {
      border-color: #F27474; }
      .sweet-alert .sa-icon.sa-error .sa-x-mark {
        position: relative;
        display: block; }
      .sweet-alert .sa-icon.sa-error .sa-line {
        position: absolute;
        height: 5px;
        width: 47px;
        background-color: #F27474;
        display: block;
        top: 37px;
        border-radius: 2px; }
        .sweet-alert .sa-icon.sa-error .sa-line.sa-left {
          -webkit-transform: rotate(45deg);
          transform: rotate(45deg);
          left: 17px; }
        .sweet-alert .sa-icon.sa-error .sa-line.sa-right {
          -webkit-transform: rotate(-45deg);
          transform: rotate(-45deg);
          right: 16px; }
    .sweet-alert .sa-icon.sa-warning {
      border-color: #F8BB86; }
      .sweet-alert .sa-icon.sa-warning .sa-body {
        position: absolute;
        width: 5px;
        height: 47px;
        left: 50%;
        top: 10px;
        -webkit-border-radius: 2px;
        border-radius: 2px;
        margin-left: -2px;
        background-color: #F8BB86; }
      .sweet-alert .sa-icon.sa-warning .sa-dot {
        position: absolute;
        width: 7px;
        height: 7px;
        -webkit-border-radius: 50%;
        border-radius: 50%;
        margin-left: -3px;
        left: 50%;
        bottom: 10px;
        background-color: #F8BB86; }
    .sweet-alert .sa-icon.sa-info {
      border-color: #C9DAE1; }
      .sweet-alert .sa-icon.sa-info::before {
        content: "";
        position: absolute;
        width: 5px;
        height: 29px;
        left: 50%;
        bottom: 17px;
        border-radius: 2px;
        margin-left: -2px;
        background-color: #C9DAE1; }
      .sweet-alert .sa-icon.sa-info::after {
        content: "";
        position: absolute;
        width: 7px;
        height: 7px;
        border-radius: 50%;
        margin-left: -3px;
        top: 19px;
        background-color: #C9DAE1; }
    .sweet-alert .sa-icon.sa-success {
      border-color: #A5DC86; }
      .sweet-alert .sa-icon.sa-success::before, .sweet-alert .sa-icon.sa-success::after {
        content: '';
        -webkit-border-radius: 40px;
        border-radius: 40px;
        border-radius: 50%;
        position: absolute;
        width: 60px;
        height: 120px;
        background: white;
        -webkit-transform: rotate(45deg);
        transform: rotate(45deg); }
      .sweet-alert .sa-icon.sa-success::before {
        -webkit-border-radius: 120px 0 0 120px;
        border-radius: 120px 0 0 120px;
        top: -7px;
        left: -33px;
        -webkit-transform: rotate(-45deg);
        transform: rotate(-45deg);
        -webkit-transform-origin: 60px 60px;
        transform-origin: 60px 60px; }
      .sweet-alert .sa-icon.sa-success::after {
        -webkit-border-radius: 0 120px 120px 0;
        border-radius: 0 120px 120px 0;
        top: -11px;
        left: 30px;
        -webkit-transform: rotate(-45deg);
        transform: rotate(-45deg);
        -webkit-transform-origin: 0px 60px;
        transform-origin: 0px 60px; }
      .sweet-alert .sa-icon.sa-success .sa-placeholder {
        width: 80px;
        height: 80px;
        border: 4px solid rgba(165, 220, 134, 0.2);
        -webkit-border-radius: 40px;
        border-radius: 40px;
        border-radius: 50%;
        box-sizing: content-box;
        position: absolute;
        left: -4px;
        top: -4px;
        z-index: 2; }
      .sweet-alert .sa-icon.sa-success .sa-fix {
        width: 5px;
        height: 90px;
        background-color: white;
        position: absolute;
        left: 28px;
        top: 8px;
        z-index: 1;
        -webkit-transform: rotate(-45deg);
        transform: rotate(-45deg); }
      .sweet-alert .sa-icon.sa-success .sa-line {
        height: 5px;
        background-color: #A5DC86;
        display: block;
        border-radius: 2px;
        position: absolute;
        z-index: 2; }
        .sweet-alert .sa-icon.sa-success .sa-line.sa-tip {
          width: 25px;
          left: 14px;
          top: 46px;
          -webkit-transform: rotate(45deg);
          transform: rotate(45deg); }
        .sweet-alert .sa-icon.sa-success .sa-line.sa-long {
          width: 47px;
          right: 8px;
          top: 38px;
          -webkit-transform: rotate(-45deg);
          transform: rotate(-45deg); }
    .sweet-alert .sa-icon.sa-custom {
      background-size: contain;
      border-radius: 0;
      border: none;
      background-position: center center;
      background-repeat: no-repeat; }
/*
 * Animations
 */
@-webkit-keyframes showSweetAlert {
  0% {
    transform: scale(0.7);
    -webkit-transform: scale(0.7); }
  45% {
    transform: scale(1.05);
    -webkit-transform: scale(1.05); }
  80% {
    transform: scale(0.95);
    -webkit-transform: scale(0.95); }
  100% {
    transform: scale(1);
    -webkit-transform: scale(1); } }
@keyframes showSweetAlert {
  0% {
    transform: scale(0.7);
    -webkit-transform: scale(0.7); }
  45% {
    transform: scale(1.05);
    -webkit-transform: scale(1.05); }
  80% {
    transform: scale(0.95);
    -webkit-transform: scale(0.95); }
  100% {
    transform: scale(1);
    -webkit-transform: scale(1); } }
@-webkit-keyframes hideSweetAlert {
  0% {
    transform: scale(1);
    -webkit-transform: scale(1); }
  100% {
    transform: scale(0.5);
    -webkit-transform: scale(0.5); } }
@keyframes hideSweetAlert {
  0% {
    transform: scale(1);
    -webkit-transform: scale(1); }
  100% {
    transform: scale(0.5);
    -webkit-transform: scale(0.5); } }
@-webkit-keyframes slideFromTop {
  0% {
    top: 0%; }
  100% {
    top: 50%; } }
@keyframes slideFromTop {
  0% {
    top: 0%; }
  100% {
    top: 50%; } }
@-webkit-keyframes slideToTop {
  0% {
    top: 50%; }
  100% {
    top: 0%; } }
@keyframes slideToTop {
  0% {
    top: 50%; }
  100% {
    top: 0%; } }
@-webkit-keyframes slideFromBottom {
  0% {
    top: 70%; }
  100% {
    top: 50%; } }
@keyframes slideFromBottom {
  0% {
    top: 70%; }
  100% {
    top: 50%; } }
@-webkit-keyframes slideToBottom {
  0% {
    top: 50%; }
  100% {
    top: 70%; } }
@keyframes slideToBottom {
  0% {
    top: 50%; }
  100% {
    top: 70%; } }
.showSweetAlert[data-animation=pop] {
  -webkit-animation: showSweetAlert 0.3s;
  animation: showSweetAlert 0.3s; }
.showSweetAlert[data-animation=none] {
  -webkit-animation: none;
  animation: none; }
.showSweetAlert[data-animation=slide-from-top] {
  -webkit-animation: slideFromTop 0.3s;
  animation: slideFromTop 0.3s; }
.showSweetAlert[data-animation=slide-from-bottom] {
  -webkit-animation: slideFromBottom 0.3s;
  animation: slideFromBottom 0.3s; }
.hideSweetAlert[data-animation=pop] {
  -webkit-animation: hideSweetAlert 0.2s;
  animation: hideSweetAlert 0.2s; }
.hideSweetAlert[data-animation=none] {
  -webkit-animation: none;
  animation: none; }
.hideSweetAlert[data-animation=slide-from-top] {
  -webkit-animation: slideToTop 0.4s;
  animation: slideToTop 0.4s; }
.hideSweetAlert[data-animation=slide-from-bottom] {
  -webkit-animation: slideToBottom 0.3s;
  animation: slideToBottom 0.3s; }
@-webkit-keyframes animateSuccessTip {
  0% {
    width: 0;
    left: 1px;
    top: 19px; }
  54% {
    width: 0;
    left: 1px;
    top: 19px; }
  70% {
    width: 50px;
    left: -8px;
    top: 37px; }
  84% {
    width: 17px;
    left: 21px;
    top: 48px; }
  100% {
    width: 25px;
    left: 14px;
    top: 45px; } }
@keyframes animateSuccessTip {
  0% {
    width: 0;
    left: 1px;
    top: 19px; }
  54% {
    width: 0;
    left: 1px;
    top: 19px; }
  70% {
    width: 50px;
    left: -8px;
    top: 37px; }
  84% {
    width: 17px;
    left: 21px;
    top: 48px; }
  100% {
    width: 25px;
    left: 14px;
    top: 45px; } }
@-webkit-keyframes animateSuccessLong {
  0% {
    width: 0;
    right: 46px;
    top: 54px; }
  65% {
    width: 0;
    right: 46px;
    top: 54px; }
  84% {
    width: 55px;
    right: 0px;
    top: 35px; }
  100% {
    width: 47px;
    right: 8px;
    top: 38px; } }
@keyframes animateSuccessLong {
  0% {
    width: 0;
    right: 46px;
    top: 54px; }
  65% {
    width: 0;
    right: 46px;
    top: 54px; }
  84% {
    width: 55px;
    right: 0px;
    top: 35px; }
  100% {
    width: 47px;
    right: 8px;
    top: 38px; } }
@-webkit-keyframes rotatePlaceholder {
  0% {
    transform: rotate(-45deg);
    -webkit-transform: rotate(-45deg); }
  5% {
    transform: rotate(-45deg);
    -webkit-transform: rotate(-45deg); }
  12% {
    transform: rotate(-405deg);
    -webkit-transform: rotate(-405deg); }
  100% {
    transform: rotate(-405deg);
    -webkit-transform: rotate(-405deg); } }
@keyframes rotatePlaceholder {
  0% {
    transform: rotate(-45deg);
    -webkit-transform: rotate(-45deg); }
  5% {
    transform: rotate(-45deg);
    -webkit-transform: rotate(-45deg); }
  12% {
    transform: rotate(-405deg);
    -webkit-transform: rotate(-405deg); }
  100% {
    transform: rotate(-405deg);
    -webkit-transform: rotate(-405deg); } }
.animateSuccessTip {
  -webkit-animation: animateSuccessTip 0.75s;
  animation: animateSuccessTip 0.75s; }
.animateSuccessLong {
  -webkit-animation: animateSuccessLong 0.75s;
  animation: animateSuccessLong 0.75s; }
.sa-icon.sa-success.animate::after {
  -webkit-animation: rotatePlaceholder 4.25s ease-in;
  animation: rotatePlaceholder 4.25s ease-in; }
@-webkit-keyframes animateErrorIcon {
  0% {
    transform: rotateX(100deg);
    -webkit-transform: rotateX(100deg);
    opacity: 0; }
  100% {
    transform: rotateX(0deg);
    -webkit-transform: rotateX(0deg);
    opacity: 1; } }
@keyframes animateErrorIcon {
  0% {
    transform: rotateX(100deg);
    -webkit-transform: rotateX(100deg);
    opacity: 0; }
  100% {
    transform: rotateX(0deg);
    -webkit-transform: rotateX(0deg);
    opacity: 1; } }
.animateErrorIcon {
  -webkit-animation: animateErrorIcon 0.5s;
  animation: animateErrorIcon 0.5s; }
@-webkit-keyframes animateXMark {
  0% {
    transform: scale(0.4);
    -webkit-transform: scale(0.4);
    margin-top: 26px;
    opacity: 0; }
  50% {
    transform: scale(0.4);
    -webkit-transform: scale(0.4);
    margin-top: 26px;
    opacity: 0; }
  80% {
    transform: scale(1.15);
    -webkit-transform: scale(1.15);
    margin-top: -6px; }
  100% {
    transform: scale(1);
    -webkit-transform: scale(1);
    margin-top: 0;
    opacity: 1; } }
@keyframes animateXMark {
  0% {
    transform: scale(0.4);
    -webkit-transform: scale(0.4);
    margin-top: 26px;
    opacity: 0; }
  50% {
    transform: scale(0.4);
    -webkit-transform: scale(0.4);
    margin-top: 26px;
    opacity: 0; }
  80% {
    transform: scale(1.15);
    -webkit-transform: scale(1.15);
    margin-top: -6px; }
  100% {
    transform: scale(1);
    -webkit-transform: scale(1);
    margin-top: 0;
    opacity: 1; } }
.animateXMark {
  -webkit-animation: animateXMark 0.5s;
  animation: animateXMark 0.5s; }
@-webkit-keyframes pulseWarning {
  0% {
    border-color: #F8D486; }
  100% {
    border-color: #F8BB86; } }
@keyframes pulseWarning {
  0% {
    border-color: #F8D486; }
  100% {
    border-color: #F8BB86; } }
.pulseWarning {
  -webkit-animation: pulseWarning 0.75s infinite alternate;
  animation: pulseWarning 0.75s infinite alternate; }
@-webkit-keyframes pulseWarningIns {
  0% {
    background-color: #F8D486; }
  100% {
    background-color: #F8BB86; } }
@keyframes pulseWarningIns {
  0% {
    background-color: #F8D486; }
  100% {
    background-color: #F8BB86; } }
.pulseWarningIns {
  -webkit-animation: pulseWarningIns 0.75s infinite alternate;
  animation: pulseWarningIns 0.75s infinite alternate; }
/* Internet Explorer 9 has some special quirks that are fixed here */
/* The icons are not animated. */
/* This file is automatically merged into sweet-alert.min.js through Gulp */
/* Error icon */
.sweet-alert .sa-icon.sa-error .sa-line.sa-left {
  -ms-transform: rotate(45deg) \9; }
.sweet-alert .sa-icon.sa-error .sa-line.sa-right {
  -ms-transform: rotate(-45deg) \9; }
/* Success icon */
.sweet-alert .sa-icon.sa-success {
  border-color: transparent\9; }
.sweet-alert .sa-icon.sa-success .sa-line.sa-tip {
  -ms-transform: rotate(45deg) \9; }
.sweet-alert .sa-icon.sa-success .sa-line.sa-long {
  -ms-transform: rotate(-45deg) \9; }

+ 32 - 0
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/switchery/switchery.css

@ -0,0 +1,32 @@
/*
 *
 * Main stylesheet for Switchery.
 * http://abpetkov.github.io/switchery/
 *
 */
.switchery {
    background-color: #fff;
    border: 1px solid #dfdfdf;
    border-radius: 20px;
    cursor: pointer;
    display: inline-block;
    height: 30px;
    position: relative;
    vertical-align: middle;
    width: 50px;
    -webkit-box-sizing: content-box;
    -moz-box-sizing: content-box;
    box-sizing: content-box;
}
.switchery > small {
    background: #fff;
    border-radius: 100%;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
    height: 30px;
    position: absolute;
    top: 0;
    width: 30px;
}

File diff suppressed because it is too large
+ 222 - 0
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/toastr/toastr.min.css


+ 35 - 0
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/treeview/bootstrap-treeview.css

@ -0,0 +1,35 @@
/* =========================================================
 * bootstrap-treeview.css v1.0.0
 * =========================================================
 * Copyright 2013 Jonathan Miles 
 * Project URL : http://www.jondmiles.com/bootstrap-treeview
 *	
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * ========================================================= */
.list-group-item {
	cursor: pointer;
}
/*.list-group-item:hover {
  background-color: #f5f5f5;
}*/
span.indent {
	margin-left: 10px;
	margin-right: 10px;
}
span.icon {
	margin-right: 5px;
}

+ 28 - 0
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/plugins/webuploader/webuploader.css

@ -0,0 +1,28 @@
.webuploader-container {
	position: relative;
}
.webuploader-element-invisible {
	position: absolute !important;
	clip: rect(1px 1px 1px 1px); /* IE6, IE7 */
    clip: rect(1px,1px,1px,1px);
}
.webuploader-pick {
	position: relative;
	display: inline-block;
	cursor: pointer;
	background: #00b7ee;
	padding: 10px 15px;
	color: #fff;
	text-align: center;
	border-radius: 3px;
	overflow: hidden;
}
.webuploader-pick-hover {
	background: #00a2d4;
}
.webuploader-pick-disable {
	opacity: 0.6;
	pointer-events:none;
}

+ 0 - 0
svr/svr-manage/src/main/resources/webapp/common/css/bootstrap/style.min.css


Some files were not shown because too many files changed in this diff