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

View File

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

View File

@ -2,7 +2,7 @@ package com.mca.map.mapper;
import java.util.List;
import com.mca.map.vo.UseHistoryChartVO;
import com.mca.map.vo.ChartVO;
import com.mca.map.vo.UseHistorySearchVO;
import egovframework.rte.psl.dataaccess.mapper.Mapper;
@ -14,5 +14,5 @@ public interface UseHistoryMapper {
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 com.mca.map.vo.ChartVO;
import org.springframework.stereotype.Service;
import com.mca.map.mapper.FieldDataMapper;
@ -31,4 +32,8 @@ public class FieldDataService {
// TODO Auto-generated method stub
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 com.mca.map.vo.UseHistoryChartVO;
import com.mca.map.vo.ChartVO;
import org.springframework.stereotype.Service;
import com.mca.map.mapper.UseHistoryMapper;
import com.mca.map.vo.UseHistorySearchVO;
@ -26,7 +26,7 @@ public class UseHistoryService {
return useHistoryMapper.selectUseHistoryList(useHistorySearchVO);
}
public List<UseHistoryChartVO> selectDayMapUseData(UseHistorySearchVO useHistorySearchVO) {
public List<ChartVO> selectDayMapUseData(UseHistorySearchVO 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

@ -110,4 +110,11 @@
map_field_data
WHERE id = #{id}
</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>

View File

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

View File

@ -14,7 +14,7 @@
<typeAlias alias="useRequestSearchVO" type="com.mca.map.vo.UseRequestSearchVO" />
<typeAlias alias="useHistoryVO" type="com.mca.map.vo.UseHistoryVO"/>
<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="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">
const dayMapUseDataList = [];
const areaDataList = [];
</script>
<c:forEach var="data" items="${dayMapUseDataList}">
<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>
</c:forEach>
<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="card my-2">
<div class="card-body row">
@ -42,7 +51,7 @@
<div class="card my-2">
<div class="card-body row">
<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 class="col-auto">
<a href="/admin/fieldData?status0=1&status1=1&status2=1&status3=1&status4=0"
@ -52,28 +61,6 @@
</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-body row">
<div class="col-auto">
@ -98,28 +85,36 @@
</div>
</div>
<div class="col-lg-9">
<div class="row">
<div class="col-12">
<div class="card my-2">
<div class="card-body">
<p class="mb-0 text-black-50">지도사용 이력 추이</p>
<div id="mapUseFromDayChart"></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 class="col-5">
<div class="card my-2">
<div class="card-body">
<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>

View File

@ -66,7 +66,7 @@
<tr>
<td><c:out value="${item.idx}"/></td>
<%-- <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.name}"/></td>
<td class="td_date"><c:out value="${item.r_date}"/></td>

View File

@ -69,6 +69,9 @@
</tbody>
</table>
<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">
<c:choose>
<c:when test="${userVO.auth eq '99'}">

View File

@ -5,7 +5,7 @@
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<script type="text/javascript">
$(document).on('click', '#logoutLink', function () {
$(document).on('click', '.logoutLink', function () {
$("#logoutForm").submit();
})
</script>
@ -16,8 +16,8 @@
<input name="${_csrf.parameterName}" type="hidden" value="${_csrf.token}"/>
</form>
<header class="header">
<div class="header_title">
<header class="header row justify-content-between">
<div class="header_title col-auto">
<sec:authorize access="hasRole('ROLE_USER')">
<a href="/map/request">모바일센터 관리시스템</a>
</sec:authorize>
@ -26,10 +26,30 @@
</sec:authorize>
</div>
<sec:authorize access="hasAnyRole('ROLE_ADMIN','ROLE_USER')">
<div class="header_info">
<a id="logoutLink" href="#">
<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>

View File

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

View File

@ -12,7 +12,7 @@
<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">
<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 href="<c:out value="/css/normalize.css" />" rel="stylesheet">
<link href="<c:out value="/css/style.css" />" rel="stylesheet">
@ -28,7 +28,7 @@
</title>
<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/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>
<body class="overflow-hidden htmlBody">
<div id="wrap">

View File

@ -12,7 +12,7 @@
<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">
<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 href="<c:out value="/css/normalize.css" />" rel="stylesheet">
<link href="<c:out value="/css/style.css" />" rel="stylesheet">
@ -21,7 +21,7 @@
</title>
<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/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>
<body class="htmlBody">
<div id="wrap">

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;
}
.col-form-label-warning{
margin-bottom: 0.5rem;
color: #ffc107;
}
.col-form-label {
padding-top: calc(0.375rem + 1px);
padding-bottom: calc(0.375rem + 1px);
@ -2468,7 +2463,6 @@ textarea.form-control-lg {
.form-check .form-check-input {
float: left;
margin-left: -1.5em;
display: inline-block;
}
.form-check-input {
@ -3977,14 +3971,14 @@ textarea.form-control-lg {
}
.nav-pills .nav-link {
background: #ffffff;
border: #34383c;
background: none;
border: 0;
border-radius: 0.25rem;
}
.nav-pills .nav-link.active,
.nav-pills .show > .nav-link {
color: #fff;
background-color: #337ab7;
background-color: #0d6efd;
}
.nav-fill > .nav-link,
@ -4503,44 +4497,6 @@ textarea.form-control-lg {
border: 1px solid rgba(0, 0, 0, 0.125);
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 {
margin-right: 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 {
float: left;
width: 50%;
color: #fff;
font-size: 24px;
font-weight: bold;
@ -55,10 +53,7 @@ a {
}
.header_info {
width: 50%;
height: 100%;
float: left;
text-align: right;
padding: 20px;
box-sizing: border-box;
}
@ -74,6 +69,11 @@ a {
margin-top: 70px;
margin-left: 200px;
}
@media (max-width: 576px){
.section {
margin-left: 0;
}
}
.loginWrap {
width: 400px;
@ -716,3 +716,45 @@ a {
input[type=checkbox]:disabled:checked {
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 (){
google.charts.load('current', {packages: ['corechart', 'line']});
google.charts.load('current', {packages: ['bar']});
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() {
var dataHeader = [['날짜', '사용량']];
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 = {
legend: { position: 'bottom' }
bar: {groupWidth: "80%"},
legend: { position: "bottom" },
};
var chart = new google.visualization.LineChart(document.getElementById('mapUseFromDayChart'));
chart.draw(chartData, options);
var chart = new google.charts.Bar(document.getElementById("mapUseFromDayChart"));
chart.draw(view, google.charts.Bar.convertOptions(options));
/*$.ajax({
url: "/admin/dayMapUseData",
type: "GET",
@ -35,3 +49,54 @@ 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