Hyung Geun 2022-03-10 11:02:43 +09:00
commit dd5b3f0589
63 changed files with 49320 additions and 220 deletions

View File

@ -102,12 +102,17 @@ public class AdminController {
searchVO.setSearchStartDate(searchStartDate.minusMonths(1).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); searchVO.setSearchStartDate(searchStartDate.minusMonths(1).format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
model.addAttribute("monthLoginCount", logService.selectLoginCnt(searchVO)); model.addAttribute("monthLoginCount", logService.selectLoginCnt(searchVO));
//일별 지도사용 추이 데이터 //일별 지도사용
UseHistorySearchVO useHistorySearchVO = new UseHistorySearchVO(); UseHistorySearchVO useHistorySearchVO = new UseHistorySearchVO();
useHistorySearchVO.setSearchEndDate(searchVO.getSearchEndDate()); useHistorySearchVO.setSearchEndDate(searchVO.getSearchEndDate());
useHistorySearchVO.setSearchStartDate(searchStartDate.minusDays(14).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); useHistorySearchVO.setSearchStartDate(searchStartDate.minusDays(14).format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
List<UseHistoryChartVO> dataList = useHistoryService.selectDayMapUseData(useHistorySearchVO); List<ChartVO> dayMapUseDataList = useHistoryService.selectDayMapUseData(useHistorySearchVO);
model.addAttribute("dayMapUseDataList", dataList); model.addAttribute("dayMapUseDataList", dayMapUseDataList);
// 지역별 현장수집 데이터 수
List<ChartVO> areaDataList = fieldDataService.selectAreaDataList();
model.addAttribute("areaDataList", areaDataList);
return "admin/dashBoard"; return "admin/dashBoard";
} catch (Exception e) { } catch (Exception e) {
@ -128,18 +133,14 @@ public class AdminController {
@ResponseBody @ResponseBody
public JSONArray dayMapUseData(@ModelAttribute("UseRequestSearchVO") UseHistorySearchVO useHistorySearchVO, Model model) throws Exception { public JSONArray dayMapUseData(@ModelAttribute("UseRequestSearchVO") UseHistorySearchVO useHistorySearchVO, Model model) throws Exception {
try { try {
List<UseHistoryChartVO> dataList = useHistoryService.selectDayMapUseData(useHistorySearchVO); List<ChartVO> dataList = useHistoryService.selectDayMapUseData(useHistorySearchVO);
JSONArray returnAry = new JSONArray(); JSONArray returnAry = new JSONArray();
for(UseHistoryChartVO chartVO: dataList){ for(ChartVO chartVO: dataList){
JSONArray temp = new JSONArray(); JSONArray temp = new JSONArray();
temp.put(chartVO.getDateStr()); temp.put(chartVO.getParam01());
temp.put(chartVO.getUseCnt()); temp.put(chartVO.getValue01());
returnAry.put(temp); returnAry.put(temp);
// JSONObject temp = new JSONObject();
// temp.put("date", chartVO.getDateStr());
// temp.put("useCnt", chartVO.getUseCnt());
// returnAry.put(temp);
} }
System.out.println("결과 배열 수 : "+returnAry.length()); System.out.println("결과 배열 수 : "+returnAry.length());
return returnAry; return returnAry;

View File

@ -2,6 +2,7 @@ package com.mca.map.mapper;
import java.util.List; import java.util.List;
import com.mca.map.vo.ChartVO;
import com.mca.map.vo.FieldDataSearchVO; import com.mca.map.vo.FieldDataSearchVO;
import com.mca.map.vo.FieldDataVO; import com.mca.map.vo.FieldDataVO;
@ -15,4 +16,6 @@ public interface FieldDataMapper {
int selectFieldDataCnt(FieldDataSearchVO fieldDataSearchVO); int selectFieldDataCnt(FieldDataSearchVO fieldDataSearchVO);
FieldDataVO selectFieldData(String id); FieldDataVO selectFieldData(String id);
List<ChartVO> selectAreaDataList();
} }

View File

@ -2,7 +2,7 @@ package com.mca.map.mapper;
import java.util.List; import java.util.List;
import com.mca.map.vo.UseHistoryChartVO; import com.mca.map.vo.ChartVO;
import com.mca.map.vo.UseHistorySearchVO; import com.mca.map.vo.UseHistorySearchVO;
import egovframework.rte.psl.dataaccess.mapper.Mapper; import egovframework.rte.psl.dataaccess.mapper.Mapper;
@ -14,5 +14,5 @@ public interface UseHistoryMapper {
int selectUseHistoryCnt(UseHistorySearchVO useHistorySearchVO); int selectUseHistoryCnt(UseHistorySearchVO useHistorySearchVO);
List<UseHistoryChartVO> selectDayMapUseData(UseHistorySearchVO useHistorySearchVO); List<ChartVO> selectDayMapUseData(UseHistorySearchVO useHistorySearchVO);
} }

View File

@ -5,6 +5,7 @@ import java.util.List;
import javax.annotation.Resource; import javax.annotation.Resource;
import com.mca.map.vo.ChartVO;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.mca.map.mapper.FieldDataMapper; import com.mca.map.mapper.FieldDataMapper;
@ -31,4 +32,8 @@ public class FieldDataService {
// TODO Auto-generated method stub // TODO Auto-generated method stub
return fieldDataMapper.selectFieldData(id); return fieldDataMapper.selectFieldData(id);
} }
public List<ChartVO> selectAreaDataList() {
return fieldDataMapper.selectAreaDataList();
}
} }

View File

@ -4,7 +4,7 @@ import java.util.List;
import javax.annotation.Resource; import javax.annotation.Resource;
import com.mca.map.vo.UseHistoryChartVO; import com.mca.map.vo.ChartVO;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.mca.map.mapper.UseHistoryMapper; import com.mca.map.mapper.UseHistoryMapper;
import com.mca.map.vo.UseHistorySearchVO; import com.mca.map.vo.UseHistorySearchVO;
@ -26,7 +26,7 @@ public class UseHistoryService {
return useHistoryMapper.selectUseHistoryList(useHistorySearchVO); return useHistoryMapper.selectUseHistoryList(useHistorySearchVO);
} }
public List<UseHistoryChartVO> selectDayMapUseData(UseHistorySearchVO useHistorySearchVO) { public List<ChartVO> selectDayMapUseData(UseHistorySearchVO useHistorySearchVO) {
return useHistoryMapper.selectDayMapUseData(useHistorySearchVO); return useHistoryMapper.selectDayMapUseData(useHistorySearchVO);
} }
} }

View File

@ -0,0 +1,41 @@
package com.mca.map.vo;
public class ChartVO {
private String param01;
private String param02;
private Integer value01;
private Integer value02;
public String getParam01() {
return param01;
}
public void setParam01(String param01) {
this.param01 = param01;
}
public String getParam02() {
return param02;
}
public void setParam02(String param02) {
this.param02 = param02;
}
public Integer getValue01() {
return value01;
}
public void setValue01(Integer value01) {
this.value01 = value01;
}
public Integer getValue02() {
return value02;
}
public void setValue02(Integer value02) {
this.value02 = value02;
}
}

View File

@ -1,22 +0,0 @@
package com.mca.map.vo;
public class UseHistoryChartVO {
private String dateStr;
private Integer useCnt;
public String getDateStr() {
return dateStr;
}
public void setDateStr(String dateStr) {
this.dateStr = dateStr;
}
public Integer getUseCnt() {
return useCnt;
}
public void setUseCnt(Integer useCnt) {
this.useCnt = useCnt;
}
}

View File

@ -96,18 +96,25 @@
<select id="selectFieldData" parameterType="String" resultType="fieldDataVO"> <select id="selectFieldData" parameterType="String" resultType="fieldDataVO">
SELECT SELECT
id, id,
userid, userid,
save_date, save_date,
data_path, data_path,
layer_id, layer_id,
field_data, field_data,
region, region,
description, description,
status, status,
err_note err_note
FROM FROM
map_field_data map_field_data
WHERE id = #{id} WHERE id = #{id}
</select> </select>
<select id="selectAreaDataList" resultType="ChartVO">
select substring_index(region, ' ', 1) as param01,
count(*) as value01
from map_field_data
group by param01
</select>
</mapper> </mapper>

View File

@ -50,12 +50,12 @@
</if> </if>
</select> </select>
<select id="selectDayMapUseData" parameterType="useHistorySearchVO" resultType="UseHistoryChartVO" > <select id="selectDayMapUseData" parameterType="useHistorySearchVO" resultType="ChartVO" >
select DATE_FORMAT(log_date ,'%m-%d') as dateStr, select DATE_FORMAT(log_date ,'%m-%d') as param01,
count(*) as useCnt count(*) as value01
from map_use_history from map_use_history
where log_date >= CONCAT(#{searchStartDate}, ' 00:00:00') where log_date >= CONCAT(#{searchStartDate}, ' 00:00:00')
and log_date &lt;= CONCAT(#{searchEndDate}, ' 23:59:59') and log_date &lt;= CONCAT(#{searchEndDate}, ' 23:59:59')
group by dateStr group by param01
</select> </select>
</mapper> </mapper>

View File

@ -14,7 +14,7 @@
<typeAlias alias="useRequestSearchVO" type="com.mca.map.vo.UseRequestSearchVO" /> <typeAlias alias="useRequestSearchVO" type="com.mca.map.vo.UseRequestSearchVO" />
<typeAlias alias="useHistoryVO" type="com.mca.map.vo.UseHistoryVO"/> <typeAlias alias="useHistoryVO" type="com.mca.map.vo.UseHistoryVO"/>
<typeAlias alias="useHistorySearchVO" type="com.mca.map.vo.UseHistorySearchVO" /> <typeAlias alias="useHistorySearchVO" type="com.mca.map.vo.UseHistorySearchVO" />
<typeAlias alias="useHistoryChartVO" type="com.mca.map.vo.UseHistoryChartVO" /> <typeAlias alias="ChartVO" type="com.mca.map.vo.ChartVO" />
<typeAlias alias="fieldDataVO" type="com.mca.map.vo.FieldDataVO"/> <typeAlias alias="fieldDataVO" type="com.mca.map.vo.FieldDataVO"/>
<typeAlias alias="fieldDataSearchVO" type="com.mca.map.vo.FieldDataSearchVO" /> <typeAlias alias="fieldDataSearchVO" type="com.mca.map.vo.FieldDataSearchVO" />

View File

@ -8,14 +8,23 @@
<script type="text/javascript" src="<c:out value="/js/admin/dashBoard.js"/>"></script> <script type="text/javascript" src="<c:out value="/js/admin/dashBoard.js"/>"></script>
<script type="text/javascript"> <script type="text/javascript">
const dayMapUseDataList = []; const dayMapUseDataList = [];
const areaDataList = [];
</script> </script>
<c:forEach var="data" items="${dayMapUseDataList}"> <c:forEach var="data" items="${dayMapUseDataList}">
<script type="text/javascript"> <script type="text/javascript">
dayMapUseDataList.push(['${data.dateStr}',${data.useCnt}]) dayMapUseDataList.push(['${data.param01}',${data.value01}])
</script>
</c:forEach>
<c:forEach var="data" items="${areaDataList}">
<script type="text/javascript">
areaDataList.push(['${data.param01}',${data.value01}])
</script> </script>
</c:forEach> </c:forEach>
<div class="container"> <div class="container">
<div class="row"> <div class="row mt-3">
<div class="col-lg-12">
<h4>대시보드</h4>
</div>
<div class="col-lg-3"> <div class="col-lg-3">
<div class="card my-2"> <div class="card my-2">
<div class="card-body row"> <div class="card-body row">
@ -42,7 +51,7 @@
<div class="card my-2"> <div class="card my-2">
<div class="card-body row"> <div class="card-body row">
<div class="col-auto"> <div class="col-auto">
<img src="/images/icon/icon_003.png" width="60" height="60" alt=""> <img src="/images/icon/icon_04.png" width="60" height="60" alt="">
</div> </div>
<div class="col-auto"> <div class="col-auto">
<a href="/admin/fieldData?status0=1&status1=1&status2=1&status3=1&status4=0" <a href="/admin/fieldData?status0=1&status1=1&status2=1&status3=1&status4=0"
@ -52,28 +61,6 @@
</div> </div>
</div> </div>
</div> </div>
<%--<div class="card my-2">
<div class="card-body row">
<div class="col-auto">
<img src="/images/icon/icon_002.png" width="60" height="60" alt="">
</div>
<div class="col-auto">
<p class="mb-0 text-black-50">-</p>
<h3>0</h3>
</div>
</div>
</div>
<div class="card my-2">
<div class="card-body row">
<div class="col-auto">
<img src="/images/icon/icon_002.png" width="60" height="60" alt="">
</div>
<div class="col-auto">
<p class="mb-0 text-black-50">-</p>
<h3>0</h3>
</div>
</div>
</div>--%>
<div class="card my-2"> <div class="card my-2">
<div class="card-body row"> <div class="card-body row">
<div class="col-auto"> <div class="col-auto">
@ -98,28 +85,36 @@
</div> </div>
</div> </div>
<div class="col-lg-9"> <div class="col-lg-9">
<div class="card my-2"> <div class="row">
<div class="card-body"> <div class="col-12">
<p class="mb-0 text-black-50">지도사용 이력 추이</p> <div class="card my-2">
<div id="mapUseFromDayChart"></div> <div class="card-body">
<p class="mb-0 text-black-50">지도사용 이력 추이</p>
<div id="mapUseFromDayChart"></div>
</div>
</div>
</div> </div>
</div> <div class="col-5">
<%--<div class="card my-2"> <div class="card my-2">
<div class="card-body"> <div class="card-body">
<div class="col-auto"> <div class="col-auto">
<p class="mb-0 text-black-50">-</p> <p class="mb-0 text-black-50">지역별 현장수집 데이터 현황</p>
그래프 <div id="areaDonutChart"></div>
</div>
</div>
</div>
</div>
<div class="col-7">
<div class="card my-2">
<div class="card-body">
<div class="col-auto">
<p class="mb-0 text-black-50">빈자리 메꿀 그래프</p>
<div id="tempLineChart"></div>
</div>
</div>
</div> </div>
</div> </div>
</div> </div>
<div class="card my-2">
<div class="card-body">
<div class="col-auto">
<p class="mb-0 text-black-50">-</p>
그래프
</div>
</div>
</div>--%>
</div> </div>
</div> </div>
</div> </div>

View File

@ -66,7 +66,7 @@
<tr> <tr>
<td><c:out value="${item.idx}"/></td> <td><c:out value="${item.idx}"/></td>
<%-- <td ><a href="/admin/request/ <c:out value='${item.idx}' />"><c:out value="${item.title}"/></a>--%> <%-- <td ><a href="/admin/request/ <c:out value='${item.idx}' />"><c:out value="${item.title}"/></a>--%>
<td class="title-td" data-idx="${item.idx}">${item.title}</td> <td class="clickAbleObj title-td" data-idx="${item.idx}">${item.title}</td>
<td><c:out value="${item.company}"/></td> <td><c:out value="${item.company}"/></td>
<td><c:out value="${item.name}"/></td> <td><c:out value="${item.name}"/></td>
<td class="td_date"><c:out value="${item.r_date}"/></td> <td class="td_date"><c:out value="${item.r_date}"/></td>

View File

@ -69,6 +69,9 @@
</tbody> </tbody>
</table> </table>
<div class="join_top mt-3"> <div class="join_top mt-3">
<p class="search_p1">
<input class="btn btn-secondary" type="button" value="닫기" data-bs-dismiss="modal"/>
</p>
<p class="search_p2"> <p class="search_p2">
<c:choose> <c:choose>
<c:when test="${userVO.auth eq '99'}"> <c:when test="${userVO.auth eq '99'}">

View File

@ -5,31 +5,51 @@
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<script type="text/javascript"> <script type="text/javascript">
$(document).on('click', '#logoutLink', function () { $(document).on('click', '.logoutLink', function () {
$("#logoutForm").submit(); $("#logoutForm").submit();
}) })
</script> </script>
<c:set var="tilesURI" value="${requestScope['javax.servlet.forward.request_uri']}"/> <c:set var="tilesURI" value="${requestScope['javax.servlet.forward.request_uri']}"/>
<c:set var="tilesURIParam" value="${requestScope['javax.servlet.forward.query_string']}"/> <c:set var="tilesURIParam" value="${requestScope['javax.servlet.forward.query_string']}"/>
<form id="logoutForm" action="/j_spring_security_logout" method="POST"> <form id="logoutForm" action="/j_spring_security_logout" method="POST">
<input name="${_csrf.parameterName}" type="hidden" value="${_csrf.token}"/> <input name="${_csrf.parameterName}" type="hidden" value="${_csrf.token}"/>
</form> </form>
<header class="header"> <header class="header row justify-content-between">
<div class="header_title"> <div class="header_title col-auto">
<sec:authorize access="hasRole('ROLE_USER')"> <sec:authorize access="hasRole('ROLE_USER')">
<a href="/map/request">모바일센터 관리시스템</a> <a href="/map/request">모바일센터 관리시스템</a>
</sec:authorize>
<sec:authorize access="hasRole('ROLE_ADMIN')">
<a href="/admin/dashBoard">모바일센터 관리시스템</a>
</sec:authorize>
</div>
<sec:authorize access="hasAnyRole('ROLE_ADMIN','ROLE_USER')">
<div class="header_info">
<a id="logoutLink" href="#">
<i class="bi bi-box-arrow-right"></i> 로그아웃
</a>
</div>
</sec:authorize> </sec:authorize>
<sec:authorize access="hasRole('ROLE_ADMIN')">
<a href="/admin/dashBoard">모바일센터 관리시스템</a>
</sec:authorize>
</div>
<sec:authorize access="hasAnyRole('ROLE_ADMIN','ROLE_USER')">
<div class="header_info col-auto">
<a class="logoutLink d-none d-sm-block" href="#">
<i class="bi bi-box-arrow-right"></i> 로그아웃
</a>
<div class="dropdown text-end d-block d-sm-none">
<a href="#" class="d-block link-dark text-white text-decoration-none dropdown-toggle" id="dropdownUser1" data-bs-toggle="dropdown" aria-expanded="false">
<i class="bi bi-list"></i>
</a>
<ul class="dropdown-menu text-small" aria-labelledby="dropdownUser1" style="">
<sec:authorize access="hasRole('ROLE_USER')">
<li><a class="dropdown-item" href="/map/request">지도사용 요청</a></li>
<li><a class="dropdown-item" href="/map/userInfo">회원정보 수정</a></li>
</sec:authorize>
<sec:authorize access="hasRole('ROLE_ADMIN')">
<li><a class="dropdown-item" href="/admin/dashBoard">대시보드</a></li>
<li><a class="dropdown-item" href="/admin/request">지도사용 요청</a></li>
<li><a class="dropdown-item" href="/admin/history">지도사용 이력</a></li>
<li><a class="dropdown-item" href="/admin/fieldData?status0=1&status1=1&status2=1&status3=1&status4=1">현장수집 데이터</a></li>
<li><a class="dropdown-item" href="/admin/userInfo?auth=99">회원 관리</a></li>
</sec:authorize>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item logoutLink" href="#">로그아웃</a></li>
</ul>
</div>
</div>
</sec:authorize>
</header> </header>

View File

@ -9,7 +9,7 @@
<c:set var="tilesURIParam" value="${requestScope['javax.servlet.forward.query_string']}"/> <c:set var="tilesURIParam" value="${requestScope['javax.servlet.forward.query_string']}"/>
<sec:authorize access="hasRole('ROLE_USER')"> <sec:authorize access="hasRole('ROLE_USER')">
<nav class="common_nav"> <nav class="common_nav d-none d-sm-block">
<div class="header_menu"> <div class="header_menu">
<ul> <ul>
<li class="fs-6 ps-3 ${fn:contains(tilesURI, '/map/request')?"thisOn":""}" <li class="fs-6 ps-3 ${fn:contains(tilesURI, '/map/request')?"thisOn":""}"
@ -25,7 +25,7 @@
</nav> </nav>
</sec:authorize> </sec:authorize>
<sec:authorize access="hasRole('ROLE_ADMIN')"> <sec:authorize access="hasRole('ROLE_ADMIN')">
<nav class="common_nav"> <nav class="common_nav d-none d-sm-block">
<div class="header_menu"> <div class="header_menu">
<ul> <ul>
<li class="fs-6 ps-3 ${fn:contains(tilesURI, '/admin/dashBoard')?"thisOn":""}" <li class="fs-6 ps-3 ${fn:contains(tilesURI, '/admin/dashBoard')?"thisOn":""}"

View File

@ -8,40 +8,40 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="ko"> <html lang="ko">
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="stylesheet" type="text/css" href="<c:url value="/css/jquery-ui.min.css"/>"> <link rel="stylesheet" type="text/css" href="<c:url value="/css/jquery-ui.min.css"/>">
<link rel="stylesheet" type="text/css" href="<c:url value="/css/bootstrap-5.1.3.css"/>"> <link rel="stylesheet" type="text/css" href="<c:url value="/css/bootstrap-5.1.3-dist/css/bootstrap.css"/>">
<link rel="stylesheet" type="text/css" href="<c:url value="/images/bootstrap-icons-1.8.0/bootstrap-icons.css"/>"> <link rel="stylesheet" type="text/css" href="<c:url value="/images/bootstrap-icons-1.8.0/bootstrap-icons.css"/>">
<link href="<c:out value="/css/normalize.css" />" rel="stylesheet"> <link href="<c:out value="/css/normalize.css" />" rel="stylesheet">
<link href="<c:out value="/css/style.css" />" rel="stylesheet"> <link href="<c:out value="/css/style.css" />" rel="stylesheet">
<style> <style>
#wrap { #wrap {
background-image: url("/images/main1.jpg"); background-image: url("/images/main1.jpg");
background-size: cover; background-size: cover;
height: 1080px; height: 1080px;
} }
</style> </style>
<title> <title>
<tiles:insertAttribute name="title" ignore="true"/> <tiles:insertAttribute name="title" ignore="true"/>
</title> </title>
<script src="<c:url value='/js/jquery-3.5.1.min.js' />"></script> <script src="<c:url value='/js/jquery-3.5.1.min.js' />"></script>
<script src="<c:url value='/js/jquery-ui.min.js' />"></script> <script src="<c:url value='/js/jquery-ui.min.js' />"></script>
<script src="<c:url value="/js/bootstrap-5.1.3.min.js"/>"></script> <script src="<c:url value="/js/bootstrap-5.1.3-dist/js/bootstrap.bundle.min.js"/>"></script>
</head> </head>
<body class="overflow-hidden htmlBody"> <body class="overflow-hidden htmlBody">
<div id="wrap"> <div id="wrap">
<tiles:insertAttribute name="center"/> <tiles:insertAttribute name="center"/>
</div> </div>
</body> </body>
<script type="text/javascript"> <script type="text/javascript">
$(document).ready(function () { $(document).ready(function () {
var errMsg = "${errMsg}"; var errMsg = "${errMsg}";
if (errMsg) { if (errMsg) {
alert(errMsg); alert(errMsg);
} }
}); });
</script> </script>
</html> </html>

View File

@ -8,28 +8,28 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="ko"> <html lang="ko">
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="stylesheet" type="text/css" href="<c:url value="/css/jquery-ui.min.css"/>"> <link rel="stylesheet" type="text/css" href="<c:url value="/css/jquery-ui.min.css"/>">
<link rel="stylesheet" type="text/css" href="<c:url value="/css/bootstrap-5.1.3.css"/>"> <link rel="stylesheet" type="text/css" href="<c:url value="/css/bootstrap-5.1.3-dist/css/bootstrap.css"/>">
<link rel="stylesheet" type="text/css" href="<c:url value="/images/bootstrap-icons-1.8.0/bootstrap-icons.css"/>"> <link rel="stylesheet" type="text/css" href="<c:url value="/images/bootstrap-icons-1.8.0/bootstrap-icons.css"/>">
<link href="<c:out value="/css/normalize.css" />" rel="stylesheet"> <link href="<c:out value="/css/normalize.css" />" rel="stylesheet">
<link href="<c:out value="/css/style.css" />" rel="stylesheet"> <link href="<c:out value="/css/style.css" />" rel="stylesheet">
<title> <title>
<tiles:insertAttribute name="title" ignore="true"/> <tiles:insertAttribute name="title" ignore="true"/>
</title> </title>
<script src="<c:url value='/js/jquery-3.5.1.min.js' />"></script> <script src="<c:url value='/js/jquery-3.5.1.min.js' />"></script>
<script src="<c:url value='/js/jquery-ui.min.js' />"></script> <script src="<c:url value='/js/jquery-ui.min.js' />"></script>
<script src="<c:url value="/js/bootstrap-5.1.3.min.js"/>"></script> <script src="<c:url value="/js/bootstrap-5.1.3-dist/js/bootstrap.bundle.min.js"/>"></script>
</head> </head>
<body class="htmlBody"> <body class="htmlBody">
<div id="wrap"> <div id="wrap">
<tiles:insertAttribute name="header"/> <tiles:insertAttribute name="header"/>
<tiles:insertAttribute name="left"/> <tiles:insertAttribute name="left"/>
<section class="section overflow-auto"> <section class="section overflow-auto">
<tiles:insertAttribute name="center"/> <tiles:insertAttribute name="center"/>
</section> </section>
</div> </div>
</body> </body>
</html> </html>

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,485 @@
/*!
* Bootstrap Reboot v5.1.3 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors
* Copyright 2011-2021 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
*/
:root {
--bs-blue: #0d6efd;
--bs-indigo: #6610f2;
--bs-purple: #6f42c1;
--bs-pink: #d63384;
--bs-red: #dc3545;
--bs-orange: #fd7e14;
--bs-yellow: #ffc107;
--bs-green: #198754;
--bs-teal: #20c997;
--bs-cyan: #0dcaf0;
--bs-white: #fff;
--bs-gray: #6c757d;
--bs-gray-dark: #343a40;
--bs-gray-100: #f8f9fa;
--bs-gray-200: #e9ecef;
--bs-gray-300: #dee2e6;
--bs-gray-400: #ced4da;
--bs-gray-500: #adb5bd;
--bs-gray-600: #6c757d;
--bs-gray-700: #495057;
--bs-gray-800: #343a40;
--bs-gray-900: #212529;
--bs-primary: #0d6efd;
--bs-secondary: #6c757d;
--bs-success: #198754;
--bs-info: #0dcaf0;
--bs-warning: #ffc107;
--bs-danger: #dc3545;
--bs-light: #f8f9fa;
--bs-dark: #212529;
--bs-primary-rgb: 13, 110, 253;
--bs-secondary-rgb: 108, 117, 125;
--bs-success-rgb: 25, 135, 84;
--bs-info-rgb: 13, 202, 240;
--bs-warning-rgb: 255, 193, 7;
--bs-danger-rgb: 220, 53, 69;
--bs-light-rgb: 248, 249, 250;
--bs-dark-rgb: 33, 37, 41;
--bs-white-rgb: 255, 255, 255;
--bs-black-rgb: 0, 0, 0;
--bs-body-color-rgb: 33, 37, 41;
--bs-body-bg-rgb: 255, 255, 255;
--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));
--bs-body-font-family: var(--bs-font-sans-serif);
--bs-body-font-size: 1rem;
--bs-body-font-weight: 400;
--bs-body-line-height: 1.5;
--bs-body-color: #212529;
--bs-body-bg: #fff;
}
*,
*::before,
*::after {
box-sizing: border-box;
}
@media (prefers-reduced-motion: no-preference) {
:root {
scroll-behavior: smooth;
}
}
body {
margin: 0;
font-family: var(--bs-body-font-family);
font-size: var(--bs-body-font-size);
font-weight: var(--bs-body-font-weight);
line-height: var(--bs-body-line-height);
color: var(--bs-body-color);
text-align: var(--bs-body-text-align);
background-color: var(--bs-body-bg);
-webkit-text-size-adjust: 100%;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
hr {
margin: 1rem 0;
color: inherit;
background-color: currentColor;
border: 0;
opacity: 0.25;
}
hr:not([size]) {
height: 1px;
}
h6, h5, h4, h3, h2, h1 {
margin-top: 0;
margin-bottom: 0.5rem;
font-weight: 500;
line-height: 1.2;
}
h1 {
font-size: calc(1.375rem + 1.5vw);
}
@media (min-width: 1200px) {
h1 {
font-size: 2.5rem;
}
}
h2 {
font-size: calc(1.325rem + 0.9vw);
}
@media (min-width: 1200px) {
h2 {
font-size: 2rem;
}
}
h3 {
font-size: calc(1.3rem + 0.6vw);
}
@media (min-width: 1200px) {
h3 {
font-size: 1.75rem;
}
}
h4 {
font-size: calc(1.275rem + 0.3vw);
}
@media (min-width: 1200px) {
h4 {
font-size: 1.5rem;
}
}
h5 {
font-size: 1.25rem;
}
h6 {
font-size: 1rem;
}
p {
margin-top: 0;
margin-bottom: 1rem;
}
abbr[title],
abbr[data-bs-original-title] {
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted;
cursor: help;
-webkit-text-decoration-skip-ink: none;
text-decoration-skip-ink: none;
}
address {
margin-bottom: 1rem;
font-style: normal;
line-height: inherit;
}
ol,
ul {
padding-left: 2rem;
}
ol,
ul,
dl {
margin-top: 0;
margin-bottom: 1rem;
}
ol ol,
ul ul,
ol ul,
ul ol {
margin-bottom: 0;
}
dt {
font-weight: 700;
}
dd {
margin-bottom: 0.5rem;
margin-left: 0;
}
blockquote {
margin: 0 0 1rem;
}
b,
strong {
font-weight: bolder;
}
small {
font-size: 0.875em;
}
mark {
padding: 0.2em;
background-color: #fcf8e3;
}
sub,
sup {
position: relative;
font-size: 0.75em;
line-height: 0;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
a {
color: #0d6efd;
text-decoration: underline;
}
a:hover {
color: #0a58ca;
}
a:not([href]):not([class]), a:not([href]):not([class]):hover {
color: inherit;
text-decoration: none;
}
pre,
code,
kbd,
samp {
font-family: var(--bs-font-monospace);
font-size: 1em;
direction: ltr /* rtl:ignore */;
unicode-bidi: bidi-override;
}
pre {
display: block;
margin-top: 0;
margin-bottom: 1rem;
overflow: auto;
font-size: 0.875em;
}
pre code {
font-size: inherit;
color: inherit;
word-break: normal;
}
code {
font-size: 0.875em;
color: #d63384;
word-wrap: break-word;
}
a > code {
color: inherit;
}
kbd {
padding: 0.2rem 0.4rem;
font-size: 0.875em;
color: #fff;
background-color: #212529;
border-radius: 0.2rem;
}
kbd kbd {
padding: 0;
font-size: 1em;
font-weight: 700;
}
figure {
margin: 0 0 1rem;
}
img,
svg {
vertical-align: middle;
}
table {
caption-side: bottom;
border-collapse: collapse;
}
caption {
padding-top: 0.5rem;
padding-bottom: 0.5rem;
color: #6c757d;
text-align: left;
}
th {
text-align: inherit;
text-align: -webkit-match-parent;
}
thead,
tbody,
tfoot,
tr,
td,
th {
border-color: inherit;
border-style: solid;
border-width: 0;
}
label {
display: inline-block;
}
button {
border-radius: 0;
}
button:focus:not(:focus-visible) {
outline: 0;
}
input,
button,
select,
optgroup,
textarea {
margin: 0;
font-family: inherit;
font-size: inherit;
line-height: inherit;
}
button,
select {
text-transform: none;
}
[role=button] {
cursor: pointer;
}
select {
word-wrap: normal;
}
select:disabled {
opacity: 1;
}
[list]::-webkit-calendar-picker-indicator {
display: none;
}
button,
[type=button],
[type=reset],
[type=submit] {
-webkit-appearance: button;
}
button:not(:disabled),
[type=button]:not(:disabled),
[type=reset]:not(:disabled),
[type=submit]:not(:disabled) {
cursor: pointer;
}
::-moz-focus-inner {
padding: 0;
border-style: none;
}
textarea {
resize: vertical;
}
fieldset {
min-width: 0;
padding: 0;
margin: 0;
border: 0;
}
legend {
float: left;
width: 100%;
padding: 0;
margin-bottom: 0.5rem;
font-size: calc(1.275rem + 0.3vw);
line-height: inherit;
}
@media (min-width: 1200px) {
legend {
font-size: 1.5rem;
}
}
legend + * {
clear: left;
}
::-webkit-datetime-edit-fields-wrapper,
::-webkit-datetime-edit-text,
::-webkit-datetime-edit-minute,
::-webkit-datetime-edit-hour-field,
::-webkit-datetime-edit-day-field,
::-webkit-datetime-edit-month-field,
::-webkit-datetime-edit-year-field {
padding: 0;
}
::-webkit-inner-spin-button {
height: auto;
}
[type=search] {
outline-offset: -2px;
-webkit-appearance: textfield;
}
/* rtl:raw:
[type="tel"],
[type="url"],
[type="email"],
[type="number"] {
direction: ltr;
}
*/
::-webkit-search-decoration {
-webkit-appearance: none;
}
::-webkit-color-swatch-wrapper {
padding: 0;
}
::-webkit-file-upload-button {
font: inherit;
}
::file-selector-button {
font: inherit;
}
::-webkit-file-upload-button {
font: inherit;
-webkit-appearance: button;
}
output {
display: inline-block;
}
iframe {
border: 0;
}
summary {
display: list-item;
cursor: pointer;
}
progress {
vertical-align: baseline;
}
[hidden] {
display: none !important;
}
/*# sourceMappingURL=bootstrap-reboot.css.map */

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,482 @@
/*!
* Bootstrap Reboot v5.1.3 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors
* Copyright 2011-2021 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
*/
:root {
--bs-blue: #0d6efd;
--bs-indigo: #6610f2;
--bs-purple: #6f42c1;
--bs-pink: #d63384;
--bs-red: #dc3545;
--bs-orange: #fd7e14;
--bs-yellow: #ffc107;
--bs-green: #198754;
--bs-teal: #20c997;
--bs-cyan: #0dcaf0;
--bs-white: #fff;
--bs-gray: #6c757d;
--bs-gray-dark: #343a40;
--bs-gray-100: #f8f9fa;
--bs-gray-200: #e9ecef;
--bs-gray-300: #dee2e6;
--bs-gray-400: #ced4da;
--bs-gray-500: #adb5bd;
--bs-gray-600: #6c757d;
--bs-gray-700: #495057;
--bs-gray-800: #343a40;
--bs-gray-900: #212529;
--bs-primary: #0d6efd;
--bs-secondary: #6c757d;
--bs-success: #198754;
--bs-info: #0dcaf0;
--bs-warning: #ffc107;
--bs-danger: #dc3545;
--bs-light: #f8f9fa;
--bs-dark: #212529;
--bs-primary-rgb: 13, 110, 253;
--bs-secondary-rgb: 108, 117, 125;
--bs-success-rgb: 25, 135, 84;
--bs-info-rgb: 13, 202, 240;
--bs-warning-rgb: 255, 193, 7;
--bs-danger-rgb: 220, 53, 69;
--bs-light-rgb: 248, 249, 250;
--bs-dark-rgb: 33, 37, 41;
--bs-white-rgb: 255, 255, 255;
--bs-black-rgb: 0, 0, 0;
--bs-body-color-rgb: 33, 37, 41;
--bs-body-bg-rgb: 255, 255, 255;
--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));
--bs-body-font-family: var(--bs-font-sans-serif);
--bs-body-font-size: 1rem;
--bs-body-font-weight: 400;
--bs-body-line-height: 1.5;
--bs-body-color: #212529;
--bs-body-bg: #fff;
}
*,
*::before,
*::after {
box-sizing: border-box;
}
@media (prefers-reduced-motion: no-preference) {
:root {
scroll-behavior: smooth;
}
}
body {
margin: 0;
font-family: var(--bs-body-font-family);
font-size: var(--bs-body-font-size);
font-weight: var(--bs-body-font-weight);
line-height: var(--bs-body-line-height);
color: var(--bs-body-color);
text-align: var(--bs-body-text-align);
background-color: var(--bs-body-bg);
-webkit-text-size-adjust: 100%;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
hr {
margin: 1rem 0;
color: inherit;
background-color: currentColor;
border: 0;
opacity: 0.25;
}
hr:not([size]) {
height: 1px;
}
h6, h5, h4, h3, h2, h1 {
margin-top: 0;
margin-bottom: 0.5rem;
font-weight: 500;
line-height: 1.2;
}
h1 {
font-size: calc(1.375rem + 1.5vw);
}
@media (min-width: 1200px) {
h1 {
font-size: 2.5rem;
}
}
h2 {
font-size: calc(1.325rem + 0.9vw);
}
@media (min-width: 1200px) {
h2 {
font-size: 2rem;
}
}
h3 {
font-size: calc(1.3rem + 0.6vw);
}
@media (min-width: 1200px) {
h3 {
font-size: 1.75rem;
}
}
h4 {
font-size: calc(1.275rem + 0.3vw);
}
@media (min-width: 1200px) {
h4 {
font-size: 1.5rem;
}
}
h5 {
font-size: 1.25rem;
}
h6 {
font-size: 1rem;
}
p {
margin-top: 0;
margin-bottom: 1rem;
}
abbr[title],
abbr[data-bs-original-title] {
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted;
cursor: help;
-webkit-text-decoration-skip-ink: none;
text-decoration-skip-ink: none;
}
address {
margin-bottom: 1rem;
font-style: normal;
line-height: inherit;
}
ol,
ul {
padding-right: 2rem;
}
ol,
ul,
dl {
margin-top: 0;
margin-bottom: 1rem;
}
ol ol,
ul ul,
ol ul,
ul ol {
margin-bottom: 0;
}
dt {
font-weight: 700;
}
dd {
margin-bottom: 0.5rem;
margin-right: 0;
}
blockquote {
margin: 0 0 1rem;
}
b,
strong {
font-weight: bolder;
}
small {
font-size: 0.875em;
}
mark {
padding: 0.2em;
background-color: #fcf8e3;
}
sub,
sup {
position: relative;
font-size: 0.75em;
line-height: 0;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
a {
color: #0d6efd;
text-decoration: underline;
}
a:hover {
color: #0a58ca;
}
a:not([href]):not([class]), a:not([href]):not([class]):hover {
color: inherit;
text-decoration: none;
}
pre,
code,
kbd,
samp {
font-family: var(--bs-font-monospace);
font-size: 1em;
direction: ltr ;
unicode-bidi: bidi-override;
}
pre {
display: block;
margin-top: 0;
margin-bottom: 1rem;
overflow: auto;
font-size: 0.875em;
}
pre code {
font-size: inherit;
color: inherit;
word-break: normal;
}
code {
font-size: 0.875em;
color: #d63384;
word-wrap: break-word;
}
a > code {
color: inherit;
}
kbd {
padding: 0.2rem 0.4rem;
font-size: 0.875em;
color: #fff;
background-color: #212529;
border-radius: 0.2rem;
}
kbd kbd {
padding: 0;
font-size: 1em;
font-weight: 700;
}
figure {
margin: 0 0 1rem;
}
img,
svg {
vertical-align: middle;
}
table {
caption-side: bottom;
border-collapse: collapse;
}
caption {
padding-top: 0.5rem;
padding-bottom: 0.5rem;
color: #6c757d;
text-align: right;
}
th {
text-align: inherit;
text-align: -webkit-match-parent;
}
thead,
tbody,
tfoot,
tr,
td,
th {
border-color: inherit;
border-style: solid;
border-width: 0;
}
label {
display: inline-block;
}
button {
border-radius: 0;
}
button:focus:not(:focus-visible) {
outline: 0;
}
input,
button,
select,
optgroup,
textarea {
margin: 0;
font-family: inherit;
font-size: inherit;
line-height: inherit;
}
button,
select {
text-transform: none;
}
[role=button] {
cursor: pointer;
}
select {
word-wrap: normal;
}
select:disabled {
opacity: 1;
}
[list]::-webkit-calendar-picker-indicator {
display: none;
}
button,
[type=button],
[type=reset],
[type=submit] {
-webkit-appearance: button;
}
button:not(:disabled),
[type=button]:not(:disabled),
[type=reset]:not(:disabled),
[type=submit]:not(:disabled) {
cursor: pointer;
}
::-moz-focus-inner {
padding: 0;
border-style: none;
}
textarea {
resize: vertical;
}
fieldset {
min-width: 0;
padding: 0;
margin: 0;
border: 0;
}
legend {
float: right;
width: 100%;
padding: 0;
margin-bottom: 0.5rem;
font-size: calc(1.275rem + 0.3vw);
line-height: inherit;
}
@media (min-width: 1200px) {
legend {
font-size: 1.5rem;
}
}
legend + * {
clear: right;
}
::-webkit-datetime-edit-fields-wrapper,
::-webkit-datetime-edit-text,
::-webkit-datetime-edit-minute,
::-webkit-datetime-edit-hour-field,
::-webkit-datetime-edit-day-field,
::-webkit-datetime-edit-month-field,
::-webkit-datetime-edit-year-field {
padding: 0;
}
::-webkit-inner-spin-button {
height: auto;
}
[type=search] {
outline-offset: -2px;
-webkit-appearance: textfield;
}
[type="tel"],
[type="url"],
[type="email"],
[type="number"] {
direction: ltr;
}
::-webkit-search-decoration {
-webkit-appearance: none;
}
::-webkit-color-swatch-wrapper {
padding: 0;
}
::-webkit-file-upload-button {
font: inherit;
}
::file-selector-button {
font: inherit;
}
::-webkit-file-upload-button {
font: inherit;
-webkit-appearance: button;
}
output {
display: inline-block;
}
iframe {
border: 0;
}
summary {
display: list-item;
cursor: pointer;
}
progress {
vertical-align: baseline;
}
[hidden] {
display: none !important;
}
/*# sourceMappingURL=bootstrap-reboot.rtl.css.map */

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -2154,11 +2154,6 @@ progress {
margin-bottom: 0.5rem; margin-bottom: 0.5rem;
} }
.col-form-label-warning{
margin-bottom: 0.5rem;
color: #ffc107;
}
.col-form-label { .col-form-label {
padding-top: calc(0.375rem + 1px); padding-top: calc(0.375rem + 1px);
padding-bottom: calc(0.375rem + 1px); padding-bottom: calc(0.375rem + 1px);
@ -2468,7 +2463,6 @@ textarea.form-control-lg {
.form-check .form-check-input { .form-check .form-check-input {
float: left; float: left;
margin-left: -1.5em; margin-left: -1.5em;
display: inline-block;
} }
.form-check-input { .form-check-input {
@ -3977,14 +3971,14 @@ textarea.form-control-lg {
} }
.nav-pills .nav-link { .nav-pills .nav-link {
background: #ffffff; background: none;
border: #34383c; border: 0;
border-radius: 0.25rem; border-radius: 0.25rem;
} }
.nav-pills .nav-link.active, .nav-pills .nav-link.active,
.nav-pills .show > .nav-link { .nav-pills .show > .nav-link {
color: #fff; color: #fff;
background-color: #337ab7; background-color: #0d6efd;
} }
.nav-fill > .nav-link, .nav-fill > .nav-link,
@ -4503,44 +4497,6 @@ textarea.form-control-lg {
border: 1px solid rgba(0, 0, 0, 0.125); border: 1px solid rgba(0, 0, 0, 0.125);
border-radius: 0.25rem; border-radius: 0.25rem;
} }
.card-warning {
position: relative;
display: flex;
flex-direction: column;
min-width: 0;
word-wrap: break-word;
background-color: #eea236;
background-clip: border-box;
border: 1px solid rgba(0, 0, 0, 0.125);
border-radius: 0.25rem;
}
.card-success {
position: relative;
display: flex;
flex-direction: column;
min-width: 0;
word-wrap: break-word;
background-color: #5cb85c;
background-clip: border-box;
border: 1px solid rgba(0, 0, 0, 0.125);
border-radius: 0.25rem;
}
.card-default {
position: relative;
display: flex;
flex-direction: column;
min-width: 0;
word-wrap: break-word;
background-color: #bb2d3b;
background-clip: border-box;
border: 1px solid rgba(0, 0, 0, 0.125);
border-radius: 0.25rem;
}
.card > hr { .card > hr {
margin-right: 0; margin-right: 0;
margin-left: 0; margin-left: 0;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -39,8 +39,6 @@ a {
} }
.header_title { .header_title {
float: left;
width: 50%;
color: #fff; color: #fff;
font-size: 24px; font-size: 24px;
font-weight: bold; font-weight: bold;
@ -55,10 +53,7 @@ a {
} }
.header_info { .header_info {
width: 50%;
height: 100%; height: 100%;
float: left;
text-align: right;
padding: 20px; padding: 20px;
box-sizing: border-box; box-sizing: border-box;
} }
@ -74,6 +69,11 @@ a {
margin-top: 70px; margin-top: 70px;
margin-left: 200px; margin-left: 200px;
} }
@media (max-width: 576px){
.section {
margin-left: 0;
}
}
.loginWrap { .loginWrap {
width: 400px; width: 400px;
@ -716,3 +716,45 @@ a {
input[type=checkbox]:disabled:checked { input[type=checkbox]:disabled:checked {
outline : solid 2px gray; outline : solid 2px gray;
} }
.col-form-label-warning{
margin-bottom: 0.5rem;
color: #ffc107;
}
.card-warning {
position: relative;
display: flex;
flex-direction: column;
min-width: 0;
word-wrap: break-word;
background-color: #eea236;
background-clip: border-box;
border: 1px solid rgba(0, 0, 0, 0.125);
border-radius: 0.25rem;
}
.card-success {
position: relative;
display: flex;
flex-direction: column;
min-width: 0;
word-wrap: break-word;
background-color: #5cb85c;
background-clip: border-box;
border: 1px solid rgba(0, 0, 0, 0.125);
border-radius: 0.25rem;
}
.card-default {
position: relative;
display: flex;
flex-direction: column;
min-width: 0;
word-wrap: break-word;
background-color: #bb2d3b;
background-clip: border-box;
border: 1px solid rgba(0, 0, 0, 0.125);
border-radius: 0.25rem;
}

View File

@ -1,16 +1,30 @@
$(function (){ $(function (){
google.charts.load('current', {packages: ['corechart', 'line']}); google.charts.load('current', {packages: ['bar']});
google.charts.setOnLoadCallback(drawMapUseFromDayChart); google.charts.setOnLoadCallback(drawMapUseFromDayChart);
google.charts.load('current', {packages: ['corechart']});
google.charts.setOnLoadCallback(drawAreaDonutChart);
google.charts.load('current', {packages:['line']});
google.charts.setOnLoadCallback(drawTempChart);
}) })
function drawMapUseFromDayChart() { function drawMapUseFromDayChart() {
var dataHeader = [['날짜', '사용량']]; var dataHeader = [['날짜', '사용량']];
var chartData = google.visualization.arrayToDataTable(dataHeader.concat(dayMapUseDataList)); var chartData = google.visualization.arrayToDataTable(dataHeader.concat(dayMapUseDataList));
var view = new google.visualization.DataView(chartData);
view.setColumns([0, 1,
{ calc: "stringify",
sourceColumn: 1,
type: "string",
role: "annotation" }]);
var options = { var options = {
legend: { position: 'bottom' } bar: {groupWidth: "80%"},
legend: { position: "bottom" },
}; };
var chart = new google.visualization.LineChart(document.getElementById('mapUseFromDayChart')); var chart = new google.charts.Bar(document.getElementById("mapUseFromDayChart"));
chart.draw(chartData, options); chart.draw(view, google.charts.Bar.convertOptions(options));
/*$.ajax({ /*$.ajax({
url: "/admin/dayMapUseData", url: "/admin/dayMapUseData",
type: "GET", type: "GET",
@ -34,4 +48,55 @@ function drawMapUseFromDayChart() {
} }
});*/ });*/
}
function drawAreaDonutChart() {
var dataHeader = [['지역', '수집 건 수']];
var data = google.visualization.arrayToDataTable(dataHeader.concat(areaDataList));
var options = {
pieHole: 0.4,
};
var chart = new google.visualization.PieChart(document.getElementById('areaDonutChart'));
chart.draw(data, options);
}
function drawTempChart() {
var data = new google.visualization.DataTable();
data.addColumn('number', 'param01');
data.addColumn('number', 'value01');
data.addColumn('number', 'value02');
data.addRows([
[1, 37.8, 55.8],
[2, 30.9, 42.5],
[3, 25.4, 37],
[4, 11.7, 18.8],
[5, 11.9, 17.6],
[6, 8.8, 13.6],
[7, 7.6, 12.3],
[8, 12.3, 21.2],
[9, 16.9, 32.9],
[10, 12.8, 23.9],
[11, 5.3, 7.9],
[12, 6.6, 8.4],
[13, 4.8, 6.3],
[14, 4.2, 6.2]
]);
var options = {
// chart: {
// title: '빈자리 메꿀 그래프',
// },
// axes: {
// x: {
// 0: {side: 'top'}
// }
// }
};
var chart = new google.charts.Line(document.getElementById('tempLineChart'));
chart.draw(data, google.charts.Line.convertOptions(options));
} }

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long