diff --git a/src/main/resources/css/fims-login.css b/src/main/resources/css/fims-login.css
deleted file mode 100644
index 3e6ba385..00000000
--- a/src/main/resources/css/fims-login.css
+++ /dev/null
@@ -1,233 +0,0 @@
-@charset "utf-8";
-
-.login_bg {
- background-color: white;
- height: 100%;
-}
-.header_wrap .logo img{
- margin: 30px 0 0 45px;
- display: inline-block;
- width: 205px;
-}
-.login_text {
- text-align: center;
- max-width: 560px;
- margin: 10px auto 0;
-}
-.login_text .l1 {
- font-size: 70px;
- color: #4d5769;
- margin-top: 60px;
- font-family: 'Public Sans';
-}
-.login_text .l2 {
- font-size: 18px;
- color: #959595;
- margin-top: 10px;
- font-family: 'Public Sans';
-}
-.login_text .l2 span{
- color: #006fbe;
- font-weight: bold;
-}
-.login_text .input_wrap {
- position: relative;
- margin-top: 40px;
- padding-right: 0px;
-}
-.login_text .input_wrap .typeText,
-.login_text .input_wrap .typePassword {
- display: inline-block;
- padding: 0 0 0 30px;
- height: 54px;
- box-sizing: border-box;
- border: 2px solid #828282;
- background: #fff;
- font-size: 20px;
- font-family: 'Public Sans';
-}
-.login_text .input_wrap input::placeholder {
- color: rgba(205, 206, 206, 1);
-}
-.login_text .input_wrap input::-webkit-input-placeholder {
- color: rgba(205, 206, 206, 1);
-}
-.login_text .input_wrap input:-ms-input-placeholder {
- color: rgba(205, 206, 206, 1);
-}
-
-.login_text .input_wrap .typeButton {
- position: absolute;
- top: 0;
- right: 0;
- width: 145px;
- height: 100px;
- color: #fff;
- font-size: 17px;
- background: #006fbe;
- border: 1px solid #d9d9d9;
- box-sizing: border-box;
-}
-.login_text .input_wrap2 {
- text-align: right;
- margin-top: 6px;
- font-size: 13px;
-}
-.login_text .input_wrap2 label {
- margin-right: 30px;
-}
-.login_text .input_wrap2 a{
- display: inline-block;
- font-size: 14px;
- font-family: 'Public Sans';
- font-weight: 700;
- color: #959595;
-}
-.login_text .input_wrap2 a:hover {
- text-decoration: underline;
-}
-.login_text .text_img img {
- width : 160px; /* 2021.09.24 박소영 수정 as-is: width300px; */
-}
-.login_text .main_img img {
- width : 541px;
- margin-top: 30px;
-}
-.login_bg a.line {
- border-left: 2px solid #959595;
- margin-left: 5px;
- padding-left: 5px;
- position: relative;
-}
-.login_bg a.line:before {
- content: '';
- display: inline-block;
- width: 2px;
- height: 10px;
- position: absolute;
- left: -18px;
- top: 2px;
-}
-.login_text .btn_wrap {
- margin: 35px auto 40px;
-}
-.login_text .btn_wrap a{
- display: inline-block;
- border: 1px solid #d9d9d9;
- box-sizing: border-box;
- background-color: #fff;
- font-size: 17px;
- height: 58px;
- line-height: 58px;
- width: 278px;
-}
-.login_text .btn_wrap a:hover {
- background-color: #00a7ac;
- border-color: #00a7ac;
- color: #fff;
-}
-.login_text .btn_wrap .typeButton {
- display: inline-block;
- top: 0;
- right: 0;
- width: 80%;
- height: 66px;
- color: #fff;
- font-size: 28px;
- background: #004988;
- border: 1px solid #d9d9d9;
- box-sizing: border-box;
- border-radius: 32px;
- font-family: 'Public Sans';
- cursor: pointer;
-}
-/*2021.09.24 박소영 새로추가*/
-.login_text .btn_wrap .typeButton:hover{
- background: #0369c1;
- transition: all 0.3s;
-}
-
-.login_bg .footer_wrap {
- background-color: #fff;
- padding-top: 5px;
- border-top: 1px solid #e5e5e4;
-}
-.login_bg .footer_inner {
- max-width: 560px;
- margin: 0 auto;
- position: relative;
-}
-.login_bg .footer_inner strong {
- position: absolute;
- font-size: 15px;
-}
-.login_bg .login_info {
- background-color: #4d5769;
- padding-top: 18px;
- box-sizing: border-box;
- height: 60px;
-}
-.login_bg .login_info strong {
- color: #fff;
- line-height: 25px;
-}
-.login_bg .login_info .notice_slider{
- padding-left: 130px;
- height: 25px;
-}
-.login_bg .login_info .notice_slider .bx-wrapper{
- background: none;
- border: none;
- box-shadow: none;
- margin-bottom: 0;
-}
-.login_bg .login_info ul li {
- color: #fff;
- position: relative;
- padding-right: 100px;
- box-sizing: border-box;
- height: 25px;
- line-height: 25px;
- font-size: 13px;
-}
-.login_bg .login_info ul li a {
- color: #fff;
- font-size: 13px;
-}
-.login_bg .login_info ul li span {
- position: absolute;
- right: 0;
-}
-.login_bg .login_info2 {
- padding-top: 35px;
- padding-bottom: 60px;
-}
-.login_bg .login_info2 strong{
- color: #2d2d2d;
-}
-.login_bg .login_info2 p {
- padding-left: 130px;
- font-size: 13px;
- line-height: 20px;
- margin-bottom: 15px;
-}
-.login_bg .login_info2 p span {
- color: #008ef0;
-}
-.login_bg .login_info2 .info_link {
- margin-top: 30px;
-}
-.login_bg .login_info2 .info_link a {
- color: #2d2d2d;
- padding-left: 25px;
- background-repeat: no-repeat;
- background-position: 0 0;
- line-height: 18px;
- font-weight: bold;
- display: inline-block;
-}
-
-.form-select.no-max-w {
- max-width: none;
-}
-
diff --git a/src/main/resources/css/fims.css b/src/main/resources/css/fims.css
deleted file mode 100644
index a475f5d7..00000000
--- a/src/main/resources/css/fims.css
+++ /dev/null
@@ -1,555 +0,0 @@
-@charset "UTF-8";
-
-:root{
- --bs-font-sans-serif: "Noto Sans Korean", "Public Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
-}
-
-.btn {
- --bs-btn-font-family: "Noto Sans Korean";
-}
-
-kbd {
- background-color: #eee;
- border-radius: 3px;
- border: 1px solid #b4b4b4;
- box-shadow:
- 0 1px 1px rgba(0, 0, 0, 0.2),
- 0 2px 0 0 rgba(255, 255, 255, 0.7) inset;
- color: #333;
- display: inline-block;
- font-weight: 700;
- line-height: 1;
- padding: 2px 4px;
- white-space: nowrap;
-}
-
-.bg-top-checkbox {
- background-color: #d9dee3;
-}
-
-/* 필수 항목 캡션 */
-label.required:after,
-.form-label.required:after,
-.col-form-label.required:after {
- content: '*';
- color: red;
-}
-
-table.compress-cell-w > :not(caption) > * > * {
- padding-left: 7px !important;
- padding-right: 7px !important;
-}
-table.compress-cell-h > :not(caption) > * > * {
- padding-top: 4px !important;
- padding-bottom: 4px !important;
-}
-
-table.compress-cell > :not(caption) > * > * {
- padding-left: 7px !important;
- padding-right: 7px !important;
- padding-top: 4px !important;
- padding-bottom: 4px !important;
-}
-
-
-.border-default {
- border : black solid 1px !important;
-}
-
-
-select {
- --pdf-red : rgb(255,0,0);
- --pdf-green : rgb(0,255,0);
- --pdf-blue : rgb(0,0,255);
- --pdf-yellow : rgb(255,255,0);
- --pdf-orange : rgb(255,128,0);
- --pdf-yellow-green : rgb(128,255,0);
- --pdf-cyan : rgb(0,255,255);
- --pdf-green-cyan : rgb(0,255,128);
- --pdf-cyan-blue : rgb(0,128,255);
- --pdf-magenta : rgb(255,0,255);
- --pdf-violet : rgb(128,0,255);
- --pdf-deep-pink : rgb(255,0,128);
- --pdf-white : rgb(255,255,255);
- --pdf-light-grey : rgb(192,192,192);
- --pdf-grey : rgb(160,160,160);
- --pdf-dark-grey : rgb(96,96,96);
- --pdf-black : rgb(0,0,0);
-}
-
-.task-theme-pvs { background : rgba(66,76,157,0.4) !important; }
-.task-theme-bpv { background : rgba(117,123,74,0.4) !important; }
-.task-theme-eca { background : rgba(173,215,115,0.4) !important; }
-.task-theme-dpv { background : rgba(238,199,177,0.4) !important; }
-.task-theme-pes { background : rgba(239,122,115,0.4) !important }
-.task-theme-dvs { background : rgba(162,225,221,0.4) !important }
-
-.fieldset-legend .fieldset-legend-content {
- padding: 1.5rem;
- font-size: .875rem;
- background-color: #fff;
- border: 1px solid #bcc5cd;
- position: relative
-}
-
-.fieldset-legend .fieldset-legend-content::before {
- content: attr(data-label);
- display: block;
- position: absolute;
- top: -8px;
- left: 12px;
- font-size : 15px!important;
- font-weight: 600;
- text-transform: uppercase;
- background-color: inherit;
- color: #a1acb8;
- padding: 0 5px
-}
-
-.wrapper-dashboard {
- display: flex;
- flex-flow: row wrap;
- justify-content:center;
- max-width:1400px;
- padding: 0px;
-}
-
-.wrapper-dashboard .card {
- font-weight: bold;
- padding : 7px;
- margin : 7px;
- flex-grow: 1;
- flex-shrink: 1;
-}
-.wrapper-dashboard .card-header {
- margin: 0;
- padding: 3px;
-}
-.wrapper-dashboard .card-body {
- margin: 0;
- padding: 3px;
- padding-bottom: 20px;
-}
-.wrapper-dashboard .card-footer {
- border-top: 1px solid #d9dee3;
- padding: 3px;
-}
-
-.dashboard-total {
- min-width : 300px;
- max-width : 400px;
- max-height : 150px;
-}
-
-.dashboard-chart {
- min-width : 500px;
- max-width : 650px;
-}
-
-@keyframes skeleton-loading-fill {
- 0% { fill: #f2f2f2; }
- 25% { fill: #c1c1c1; }
- 50% { fill: #a1a1a1; }
- 75% { fill: #c1c1c1; }
- 100% { fill: #f2f2f2; }
-}
-
-@keyframes skeleton-loading-color {
- 0% { color: #f2f2f2; }
- 25% { color: #c1c1c1; }
- 50% { color: #a1a1a1; }
- 75% { color: #c1c1c1; }
- 100% { color: #f2f2f2; }
-}
-
-svg.skeleton {
- fill: rgba(0, 0, 0, 1);
-}
-
-svg.skeleton, path.skeleton {
- animation: skeleton-loading-fill 1s infinite;
-}
-
-span.skeleton {
- animation: skeleton-loading-color 1s infinite;
-}
-
-@keyframes highlight {
- 0% { background-color: #ffff99; }
- 100% { background-color: #ffffff; }
-}
-
-.highlight-once {
- animation: highlight 0.4s;
-}
-
-
-.wrapper-list {
- min-height: 760px;
- overflow-y: auto;
- padding: 10px;
-}
-
-.wrapper-pop {
- padding: 5px 20px 5px 20px;
-}
-
-
-
-/** 버튼 */
-.btn-red {
- --bs-btn-color: #fff;
- --bs-btn-bg:#e60012;
-
- --bs-btn-hover-color: #fff;
- --bs-btn-hover-bg:#e60012;
-}
-
-.btn-green {
- --bs-btn-color: #fff;
- --bs-btn-bg: #107c41;
-
- --bs-btn-hover-color: #fff;
- --bs-btn-hover-bg:#107c41;
-}
-
-.btn-blue {
- --bs-btn-color : #fff;
- --bs-btn-bg : #1a71ff;
-
- --bs-btn-hover-color: #fff;
- --bs-btn-hover-bg:#1a71ff;
-}
-
-.btn-lightgray {
- --bs-btn-color:#474747;
- --bs-btn-bg: #eee;
-
- --bs-btn-hover-color: #474747;
- --bs-btn-hover-bg:#eee;
-}
-
-.btn-darkgray {
- --bs-btn-color: #fff;
- --bs-btn-bg: #676767;
-
- --bs-btn-hover-color: #fff;
- --bs-btn-hover-bg:#676767;
-}
-
-.btn-square {
- aspect-ratio: 1 / 1 !important;
-}
-
-
-.btn-pagination {
- border:1px solid #e1e1e1;
- line-height: 0px;
- border-radius: 7px;
- background:#F5F5F5;
- --bs-btn-disabled-bg: #F5F5F5;
-}
-
-/** 길이,높이 설정 */
-.w-form-select {
- width: max-content !important;
- min-width: 6.25rem !important;
- max-width: 16.25rem !important;
-}
-
-.w-form-date {
- width: 7.5rem !important;
-}
-
-.w-automin {
- min-width: auto !important;
-}
-
-
-
-
-.min-w-px-50 {
- min-width: 50px;
-}
-
-.min-w-px-300 {
- min-width: 300px;
-}
-
-.min-w-px-320 {
- min-width: 320px;
-}
-
-.min-w-px-350 {
- min-width: 350px;
-}
-
-.min-w-px-380 {
- min-width: 380px;
-}
-
-.min-w-px-400 {
- min-width: 400px;
-}
-
-.min-w-px-550 {
- min-width: 550px;
-}
-
-.min-w-px-700 {
- min-width: 700px;
-}
-
-.min-w-px-1400 {
- min-width: 1400px;
-}
-
-
-.mw-px-50 {
- max-width: 50px;
-}
-
-.mw-px-100 {
- max-width: 100px;
-}
-
-.mw-px-150 {
- max-width: 150px;
-}
-
-.mw-px-250 {
- max-width: 250px;
-}
-
-.mw-px-300 {
- max-width: 300px;
-}
-
-.mw-px-1000 {
- max-width: 1000px;
-}
-
-.mw-px-1100 {
- max-width: 1100px;
-}
-
-.mw-px-1200 {
- max-width: 1200px;
-}
-
-.mh-px-100 {
- max-height: 100px;
-}
-
-.mh-px-150 {
- max-height: 150px;
-}
-
-.mh-px-200 {
- max-height: 200px;
-}
-
-.mh-px-250 {
- max-height: 250px;
-}
-
-.mh-px-300 {
- max-height: 300px;
-}
-
-.mh-px-350 {
- max-height: 350px;
-}
-
-.mh-px-400 {
- max-height: 400px;
-}
-
-.mh-px-450 {
- max-height: 450px;
-}
-
-.mh-px-500 {
- max-height: 500px;
-}
-
-.mh-px-550 {
- max-height: 550px;
-}
-
-.mh-px-580 {
- max-height: 580px;
-}
-
-.mh-px-600 {
- max-height: 600px;
-}
-
-.mh-px-650 {
- max-height: 650px;
-}
-
-.mh-px-700 {
- max-height: 700px;
-}
-
-.mh-px-750 {
- max-height: 750px;
-}
-
-.mh-px-800 {
- max-height: 800px;
-}
-
-
-.min-w-max-c {
- min-width: max-content;
-}
-
-
-/* 배경색, 외곽선 */
-.traffic {
-
-}
-.cleanparking {
- --program-border : 1px solid #B5B9BB;
- --program-border-shadow : 0 0 0 1px inset #FCFFFF;
-
- --program-bg : #E3E6E8;
- --program-title-bg : #EEC575;
- --program-btn-bg : #F0F0F0;
- --program-popup-bg : #E2E6E9;
-}
-
-.cleanparking.green {
- --program-title-bg : #ADD773;
-}
-
-.border-program {
- box-shadow: var(--program-border-shadow) !important;
- border : var(--program-border) !important;
-}
-
-.bg-program {
- background-color: var(--program-bg) !important;
-}
-
-.bg-program-btn {
- background-color: var(--program-btn-bg) !important;
-}
-
-.bg-program-popup {
- background-color: var(--program-popup-bg)!important;
-}
-
-.bg-program-title {
- background-color: var(--program-title-bg) !important;
-}
-
-
-
-.no-bgi {
- background-image: none !important;
-}
-
-select.no-bgi {
- padding-inline-end: calc(0.9375rem - var(--bs-border-width));
-}
-
-/* pdf출력 설정 */
-select.option-style-select[data-option-style='FILL_STROKE']{ font-weight: bold; }
-
-select.option-style-select > option[value='FILL_STROKE']{ font-weight: bold; }
-
-select.option-style-select[data-option-style='gulimche']{ font-family: gulimche; }
-select.option-style-select[data-option-style='gulim']{ font-family: gulim; }
-select.option-style-select[data-option-style='batangche']{ font-family: batangche; }
-select.option-style-select[data-option-style='batang']{ font-family: batang; }
-select.option-style-select[data-option-style='dotumche']{ font-family: dotumche; }
-select.option-style-select[data-option-style='dotum']{ font-family: dotum; }
-select.option-style-select[data-option-style='gungsuhche']{ font-family: gungsuhche; }
-select.option-style-select[data-option-style='gungsuh']{ font-family: gungsuh; }
-
-select.option-style-select > option[value='gulimche']{ font-family: gulimche; }
-select.option-style-select > option[value='gulim']{ font-family: gulim; }
-select.option-style-select > option[value='batangche']{ font-family: batangche; }
-select.option-style-select > option[value='batang']{ font-family: batang; }
-select.option-style-select > option[value='dotumche']{ font-family: dotumche; }
-select.option-style-select > option[value='dotum']{ font-family: dotum; }
-select.option-style-select > option[value='gungsuhche']{ font-family: gungsuhche; }
-select.option-style-select > option[value='gungsuh']{ font-family: gungsuh; }
-
-select.option-style-select[data-option-style='RED']{ color: var(--pdf-red);background-color: var(--pdf-red); }
-select.option-style-select[data-option-style='GREEN']{ color: var(--pdf-green);background-color: var(--pdf-green); }
-select.option-style-select[data-option-style='BLUE']{ color: var(--pdf-blue);background-color: var(--pdf-blue); }
-select.option-style-select[data-option-style='YELLOW']{ color: var(--pdf-yellow);background-color: var(--pdf-yellow); }
-select.option-style-select[data-option-style='ORANGE']{ color: var(--pdf-orange);background-color: var(--pdf-orange); }
-select.option-style-select[data-option-style='YELLOW_GREEN']{ color: var(--pdf-yellow-green);background-color: var(--pdf-yellow-green); }
-select.option-style-select[data-option-style='CYAN']{ color: var(--pdf-cyan);background-color: var(--pdf-cyan); }
-select.option-style-select[data-option-style='GREEN_CYAN']{ color: var(--pdf-green-cyan);background-color: var(--pdf-green-cyan); }
-select.option-style-select[data-option-style='CYAN_BLUE']{ color: var(--pdf-cyan-blue);background-color: var(--pdf-cyan-blue); }
-select.option-style-select[data-option-style='MAGENTA']{ color: var(--pdf-magenta);background-color: var(--pdf-magenta); }
-select.option-style-select[data-option-style='VIOLET']{ color: var(--pdf-violet);background-color: var(--pdf-violet); }
-select.option-style-select[data-option-style='DEEP_PINK']{ color: var(--pdf-deep-pink);background-color: var(--pdf-deep-pink); }
-select.option-style-select[data-option-style='WHITE']{ color: var(--pdf-white);background-color: var(--pdf-white); }
-select.option-style-select[data-option-style='LIGHT_GREY']{ color: var(--pdf-light-grey);background-color: var(--pdf-light-grey); }
-select.option-style-select[data-option-style='GREY']{ color: var(--pdf-grey);background-color: var(--pdf-grey); }
-select.option-style-select[data-option-style='DARK_GREY']{ color: var(--pdf-dark-grey);background-color: var(--pdf-dark-grey); }
-select.option-style-select[data-option-style='BLACK']{ color: var(--pdf-black);background-color: var(--pdf-black); }
-
-select.option-style-select > option[value='RED']{ color: var(--pdf-red);background-color: var(--pdf-red); }
-select.option-style-select > option[value='GREEN']{ color: var(--pdf-green);background-color: var(--pdf-green); }
-select.option-style-select > option[value='BLUE']{ color: var(--pdf-blue);background-color: var(--pdf-blue); }
-select.option-style-select > option[value='YELLOW']{ color: var(--pdf-yellow);background-color: var(--pdf-yellow); }
-select.option-style-select > option[value='ORANGE']{ color: var(--pdf-orange);background-color: var(--pdf-orange); }
-select.option-style-select > option[value='YELLOW_GREEN']{ color: var(--pdf-yellow-green);background-color: var(--pdf-yellow-green); }
-select.option-style-select > option[value='CYAN']{ color: var(--pdf-cyan);background-color: var(--pdf-cyan); }
-select.option-style-select > option[value='GREEN_CYAN']{ color: var(--pdf-green-cyan);background-color: var(--pdf-green-cyan); }
-select.option-style-select > option[value='CYAN_BLUE']{ color: var(--pdf-cyan-blue);background-color: var(--pdf-cyan-blue); }
-select.option-style-select > option[value='MAGENTA']{ color: var(--pdf-magenta);background-color: var(--pdf-magenta); }
-select.option-style-select > option[value='VIOLET']{ color: var(--pdf-violet);background-color: var(--pdf-violet); }
-select.option-style-select > option[value='DEEP_PINK']{ color: var(--pdf-deep-pink);background-color: var(--pdf-deep-pink); }
-select.option-style-select > option[value='WHITE']{ color: var(--pdf-white);background-color: var(--pdf-white); }
-select.option-style-select > option[value='LIGHT_GREY']{ color: var(--pdf-light-grey);background-color: var(--pdf-light-grey); }
-select.option-style-select > option[value='GREY']{ color: var(--pdf-grey);background-color: var(--pdf-grey); }
-select.option-style-select > option[value='DARK_GREY']{ color: var(--pdf-dark-grey);background-color: var(--pdf-dark-grey); }
-select.option-style-select > option[value='BLACK']{ color: var(--pdf-black);background-color: var(--pdf-black); }
-
-
-.modal-body-min {
- min-height:10em;
- min-width:30%;
-}
-
-
-.border-separator-y {
- border-top:1px solid #dfdfdf;
- border-bottom:1px solid #dfdfdf;
-}
-
-.border-separator-t {
- border-top:1px solid #dfdfdf;
-}
-
-.border-separator-b {
- border-bottom:1px solid #dfdfdf;
-}
-
-.fit-contain {
- object-fit: contain;
-}
-
-body:not(.root-privacy-on) td.privacy-cell span:nth-child(1){
- display:block;
-}
-
-body:not(.root-privacy-on) td.privacy-cell span:nth-child(2){
- display:none;
-}
-
-body.root-privacy-on td.privacy-cell span:nth-child(1){
- display:none;
-}
-body.root-privacy-on td.privacy-cell span:nth-child(2){
- display:block;
-}
\ No newline at end of file
diff --git a/src/main/resources/fonts/notoSansKr/NotoSans-Black.eot b/src/main/resources/fonts/notoSansKr/NotoSans-Black.eot
deleted file mode 100644
index 7c274d92..00000000
Binary files a/src/main/resources/fonts/notoSansKr/NotoSans-Black.eot and /dev/null differ
diff --git a/src/main/resources/fonts/notoSansKr/NotoSans-Black.otf b/src/main/resources/fonts/notoSansKr/NotoSans-Black.otf
deleted file mode 100644
index ee8f9db8..00000000
Binary files a/src/main/resources/fonts/notoSansKr/NotoSans-Black.otf and /dev/null differ
diff --git a/src/main/resources/fonts/notoSansKr/NotoSans-Black.woff b/src/main/resources/fonts/notoSansKr/NotoSans-Black.woff
deleted file mode 100644
index 0cb85829..00000000
Binary files a/src/main/resources/fonts/notoSansKr/NotoSans-Black.woff and /dev/null differ
diff --git a/src/main/resources/fonts/notoSansKr/NotoSans-Black.woff2 b/src/main/resources/fonts/notoSansKr/NotoSans-Black.woff2
deleted file mode 100644
index 288a5841..00000000
Binary files a/src/main/resources/fonts/notoSansKr/NotoSans-Black.woff2 and /dev/null differ
diff --git a/src/main/resources/fonts/notoSansKr/NotoSans-Bold.eot b/src/main/resources/fonts/notoSansKr/NotoSans-Bold.eot
deleted file mode 100644
index a3a402a4..00000000
Binary files a/src/main/resources/fonts/notoSansKr/NotoSans-Bold.eot and /dev/null differ
diff --git a/src/main/resources/fonts/notoSansKr/NotoSans-Bold.otf b/src/main/resources/fonts/notoSansKr/NotoSans-Bold.otf
deleted file mode 100644
index 936a25d5..00000000
Binary files a/src/main/resources/fonts/notoSansKr/NotoSans-Bold.otf and /dev/null differ
diff --git a/src/main/resources/fonts/notoSansKr/NotoSans-Bold.woff b/src/main/resources/fonts/notoSansKr/NotoSans-Bold.woff
deleted file mode 100644
index 5c994eec..00000000
Binary files a/src/main/resources/fonts/notoSansKr/NotoSans-Bold.woff and /dev/null differ
diff --git a/src/main/resources/fonts/notoSansKr/NotoSans-Bold.woff2 b/src/main/resources/fonts/notoSansKr/NotoSans-Bold.woff2
deleted file mode 100644
index 8075f86c..00000000
Binary files a/src/main/resources/fonts/notoSansKr/NotoSans-Bold.woff2 and /dev/null differ
diff --git a/src/main/resources/fonts/notoSansKr/NotoSans-DemiLight.eot b/src/main/resources/fonts/notoSansKr/NotoSans-DemiLight.eot
deleted file mode 100644
index 6087c592..00000000
Binary files a/src/main/resources/fonts/notoSansKr/NotoSans-DemiLight.eot and /dev/null differ
diff --git a/src/main/resources/fonts/notoSansKr/NotoSans-DemiLight.otf b/src/main/resources/fonts/notoSansKr/NotoSans-DemiLight.otf
deleted file mode 100644
index 97321713..00000000
Binary files a/src/main/resources/fonts/notoSansKr/NotoSans-DemiLight.otf and /dev/null differ
diff --git a/src/main/resources/fonts/notoSansKr/NotoSans-DemiLight.woff b/src/main/resources/fonts/notoSansKr/NotoSans-DemiLight.woff
deleted file mode 100644
index 117f89f2..00000000
Binary files a/src/main/resources/fonts/notoSansKr/NotoSans-DemiLight.woff and /dev/null differ
diff --git a/src/main/resources/fonts/notoSansKr/NotoSans-DemiLight.woff2 b/src/main/resources/fonts/notoSansKr/NotoSans-DemiLight.woff2
deleted file mode 100644
index 5cd6b2cc..00000000
Binary files a/src/main/resources/fonts/notoSansKr/NotoSans-DemiLight.woff2 and /dev/null differ
diff --git a/src/main/resources/fonts/notoSansKr/NotoSans-Light.eot b/src/main/resources/fonts/notoSansKr/NotoSans-Light.eot
deleted file mode 100644
index 35e63faa..00000000
Binary files a/src/main/resources/fonts/notoSansKr/NotoSans-Light.eot and /dev/null differ
diff --git a/src/main/resources/fonts/notoSansKr/NotoSans-Light.otf b/src/main/resources/fonts/notoSansKr/NotoSans-Light.otf
deleted file mode 100644
index ecd67fad..00000000
Binary files a/src/main/resources/fonts/notoSansKr/NotoSans-Light.otf and /dev/null differ
diff --git a/src/main/resources/fonts/notoSansKr/NotoSans-Light.woff b/src/main/resources/fonts/notoSansKr/NotoSans-Light.woff
deleted file mode 100644
index 6608beca..00000000
Binary files a/src/main/resources/fonts/notoSansKr/NotoSans-Light.woff and /dev/null differ
diff --git a/src/main/resources/fonts/notoSansKr/NotoSans-Light.woff2 b/src/main/resources/fonts/notoSansKr/NotoSans-Light.woff2
deleted file mode 100644
index ff4d53d6..00000000
Binary files a/src/main/resources/fonts/notoSansKr/NotoSans-Light.woff2 and /dev/null differ
diff --git a/src/main/resources/fonts/notoSansKr/NotoSans-Medium.eot b/src/main/resources/fonts/notoSansKr/NotoSans-Medium.eot
deleted file mode 100644
index 37b4540e..00000000
Binary files a/src/main/resources/fonts/notoSansKr/NotoSans-Medium.eot and /dev/null differ
diff --git a/src/main/resources/fonts/notoSansKr/NotoSans-Medium.otf b/src/main/resources/fonts/notoSansKr/NotoSans-Medium.otf
deleted file mode 100644
index 15c2009a..00000000
Binary files a/src/main/resources/fonts/notoSansKr/NotoSans-Medium.otf and /dev/null differ
diff --git a/src/main/resources/fonts/notoSansKr/NotoSans-Medium.woff b/src/main/resources/fonts/notoSansKr/NotoSans-Medium.woff
deleted file mode 100644
index 81b841aa..00000000
Binary files a/src/main/resources/fonts/notoSansKr/NotoSans-Medium.woff and /dev/null differ
diff --git a/src/main/resources/fonts/notoSansKr/NotoSans-Medium.woff2 b/src/main/resources/fonts/notoSansKr/NotoSans-Medium.woff2
deleted file mode 100644
index c452c23a..00000000
Binary files a/src/main/resources/fonts/notoSansKr/NotoSans-Medium.woff2 and /dev/null differ
diff --git a/src/main/resources/fonts/notoSansKr/NotoSans-Regular.eot b/src/main/resources/fonts/notoSansKr/NotoSans-Regular.eot
deleted file mode 100644
index 8c6e3776..00000000
Binary files a/src/main/resources/fonts/notoSansKr/NotoSans-Regular.eot and /dev/null differ
diff --git a/src/main/resources/fonts/notoSansKr/NotoSans-Regular.otf b/src/main/resources/fonts/notoSansKr/NotoSans-Regular.otf
deleted file mode 100644
index ce916b31..00000000
Binary files a/src/main/resources/fonts/notoSansKr/NotoSans-Regular.otf and /dev/null differ
diff --git a/src/main/resources/fonts/notoSansKr/NotoSans-Regular.woff b/src/main/resources/fonts/notoSansKr/NotoSans-Regular.woff
deleted file mode 100644
index 4c409263..00000000
Binary files a/src/main/resources/fonts/notoSansKr/NotoSans-Regular.woff and /dev/null differ
diff --git a/src/main/resources/fonts/notoSansKr/NotoSans-Regular.woff2 b/src/main/resources/fonts/notoSansKr/NotoSans-Regular.woff2
deleted file mode 100644
index 838b3ce7..00000000
Binary files a/src/main/resources/fonts/notoSansKr/NotoSans-Regular.woff2 and /dev/null differ
diff --git a/src/main/resources/fonts/notoSansKr/NotoSans-Thin.eot b/src/main/resources/fonts/notoSansKr/NotoSans-Thin.eot
deleted file mode 100644
index 7060a94a..00000000
Binary files a/src/main/resources/fonts/notoSansKr/NotoSans-Thin.eot and /dev/null differ
diff --git a/src/main/resources/fonts/notoSansKr/NotoSans-Thin.otf b/src/main/resources/fonts/notoSansKr/NotoSans-Thin.otf
deleted file mode 100644
index 5cbef9b1..00000000
Binary files a/src/main/resources/fonts/notoSansKr/NotoSans-Thin.otf and /dev/null differ
diff --git a/src/main/resources/fonts/notoSansKr/NotoSans-Thin.woff b/src/main/resources/fonts/notoSansKr/NotoSans-Thin.woff
deleted file mode 100644
index ef6a254f..00000000
Binary files a/src/main/resources/fonts/notoSansKr/NotoSans-Thin.woff and /dev/null differ
diff --git a/src/main/resources/fonts/notoSansKr/NotoSans-Thin.woff2 b/src/main/resources/fonts/notoSansKr/NotoSans-Thin.woff2
deleted file mode 100644
index 672ba55b..00000000
Binary files a/src/main/resources/fonts/notoSansKr/NotoSans-Thin.woff2 and /dev/null differ
diff --git a/src/main/resources/fonts/notoSansKr/fontface.css b/src/main/resources/fonts/notoSansKr/fontface.css
deleted file mode 100644
index 001c0833..00000000
--- a/src/main/resources/fonts/notoSansKr/fontface.css
+++ /dev/null
@@ -1,93 +0,0 @@
-@charset "UTF-8";
-
-/** Thin < Light < DemiLight < Regular < Medium < Black < Bold */
-
-@font-face {
- font-family: "Noto Sans Korean";
- font-weight: 100;
- font-style: normal;
- src: url("../notoSansKr/NotoSans-Thin.eot?") format("eot"),
- url("../notoSansKr/NotoSans-Thin.otf") format("opentype"),
- url("../notoSansKr/NotoSans-Thin.woff") format("woff"),
- url("../notoSansKr/NotoSans-Thin.woff2") format("woff2");
-}
-
-@font-face {
- font-family: "Noto Sans Korean";
- font-weight: 200;
- font-style: normal;
- src: url("../notoSansKr/NotoSans-Thin.eot?") format("eot"),
- url("../notoSansKr/NotoSans-Thin.otf") format("opentype"),
- url("../notoSansKr/NotoSans-Thin.woff") format("woff"),
- url("../notoSansKr/NotoSans-Thin.woff2") format("woff2");
-}
-
-@font-face {
- font-family: "Noto Sans Korean";
- font-weight: 300;
- font-style: normal;
- src: url("../notoSansKr/NotoSans-Light.eot?") format("eot"),
- url("../notoSansKr/NotoSans-Light.otf") format("opentype"),
- url("../notoSansKr/NotoSans-Light.woff") format("woff"),
- url("../notoSansKr/NotoSans-Light.woff2") format("woff2");
-}
-
-@font-face {
- font-family: "Noto Sans Korean";
- font-weight: 400;
- font-style: normal;
- src: url("../notoSansKr/NotoSans-DemiLight.eot?") format("eot"),
- url("../notoSansKr/NotoSans-DemiLight.otf") format("opentype"),
- url("../notoSansKr/NotoSans-DemiLight.woff") format("woff"),
- url("../notoSansKr/NotoSans-DemiLight.woff2") format("woff2");
-}
-
-@font-face {
- font-family: "Noto Sans Korean";
- font-weight: 500;
- font-style: normal;
- src: url("../notoSansKr/NotoSans-Regular.eot?") format("eot"),
- url("../notoSansKr/NotoSans-Regular.otf") format("opentype"),
- url("../notoSansKr/NotoSans-Regular.woff") format("woff"),
- url("../notoSansKr/NotoSans-Regular.woff2") format("woff2");
-}
-
-@font-face {
- font-family: "Noto Sans Korean";
- font-weight: 600;
- font-style: normal;
- src: url("../notoSansKr/NotoSans-Medium.eot?") format("eot"),
- url("../notoSansKr/NotoSans-Medium.otf") format("opentype"),
- url("../notoSansKr/NotoSans-Medium.woff") format("woff"),
- url("../notoSansKr/NotoSans-Medium.woff2") format("woff2");
-}
-
-@font-face {
- font-family: "Noto Sans Korean";
- font-weight: 700;
- font-style: normal;
- src: url("../notoSansKr/NotoSans-Medium.eot?") format("eot"),
- url("../notoSansKr/NotoSans-Medium.otf") format("opentype"),
- url("../notoSansKr/NotoSans-Medium.woff") format("woff"),
- url("../notoSansKr/NotoSans-Medium.woff2") format("woff2");
-}
-
-@font-face {
- font-family: "Noto Sans Korean";
- font-weight: 800;
- font-style: normal;
- src: url("../notoSansKr/NotoSans-Black.eot?") format("eot"),
- url("../notoSansKr/NotoSans-Black.otf") format("opentype"),
- url("../notoSansKr/NotoSans-Black.woff") format("woff"),
- url("../notoSansKr/NotoSans-Black.woff2") format("woff2");
-}
-
-@font-face {
- font-family: "Noto Sans Korean";
- font-weight: 900;
- font-style: normal;
- src: url("../notoSansKr/NotoSans-Black.eot?") format("eot"),
- url("../notoSansKr/NotoSans-Black.otf") format("opentype"),
- url("../notoSansKr/NotoSans-Black.woff") format("woff"),
- url("../notoSansKr/NotoSans-Black.woff2") format("woff2");
-}
\ No newline at end of file
diff --git a/src/main/resources/fonts/xit-icon.css b/src/main/resources/fonts/xit-icon.css
deleted file mode 100644
index 3767cfb3..00000000
--- a/src/main/resources/fonts/xit-icon.css
+++ /dev/null
@@ -1,102 +0,0 @@
-@charset "UTF-8";
-
-.xit-twenty::before {
- content: url("./xit-icon/7seg20m.svg");
-}
-.xit-fifty::before {
- content: url("./xit-icon/7seg50m.svg");
-}
-
-.xit-korea-post::before {
- content: url("./xit-icon/korea-post.svg");
-}
-
-.xit-org::before {
- content: url("./xit-icon/org.svg");
-}
-
-.xit-sa::before {
- content: url("./xit-icon/sa.svg");
-}
-
-.svg-cctv-fixed:before {
- --bs-origin : url("../../file/modifySvg/고정형cctv.svg");
- --bs-active : url("../../file/modifySvg/고정형cctv.svg?modify=active");
- --bs-alert : url("../../file/modifySvg/고정형cctv.svg?modify=alert");
-}
-
-.svg-cctv-drive:before {
- --bs-origin : url("../../file/modifySvg/이동형cctv.svg");
- --bs-active : url("../../file/modifySvg/이동형cctv.svg?modify=active");
- --bs-alert : url("../../file/modifySvg/이동형cctv.svg?modify=alert");
-}
-
-.svg-crackdown-road:before {
- --bs-origin : url("../../file/modifySvg/도보단속.svg");
- --bs-active : url("../../file/modifySvg/도보단속.svg?modify=active");
- --bs-alert : url("../../../../file/modifySvg/도보단속.svg?modify=alert");
-}
-
-.svg-crackdown-minwon:before {
- --bs-origin : url("../../file/modifySvg/민원(즉시단속).svg");
- --bs-active : url("../../file/modifySvg/민원(즉시단속).svg?modify=active");
- --bs-alert : url("../../file/modifySvg/민원(즉시단속).svg?modify=alert");
-}
-
-.svg-target-lvy:before {
- --bs-origin : url("../../file/modifySvg/등록대상.svg");
- --bs-active : url("../../file/modifySvg/등록대상.svg?modify=active");
- --bs-alert : url("../../file/modifySvg/등록대상.svg?modify=alert");
-}
-
-.svg-target-transfer:before {
- --bs-origin : url("../../file/modifySvg/이첩대상.svg");
- --bs-active : url("../../file/modifySvg/이첩대상.svg?modify=active");
- --bs-alert : url("../../file/modifySvg/이첩대상.svg?modify=alert");
-}
-
-.svg-sendstat-guide:before {
- --bs-origin : url("../../file/modifySvg/계도장 발송현황.svg");
- --bs-active : url("../../file/modifySvg/계도장 발송현황.svg?modify=active");
- --bs-alert : url("../../file/modifySvg/계도장 발송현황.svg?modify=alert");
-}
-
-.svg-sendstat-before:before {
- --bs-origin : url("../../file/modifySvg/사전통보 발송현황.svg");
- --bs-active : url("../../file/modifySvg/사전통보 발송현황.svg?modify=active");
- --bs-alert : url("../../file/modifySvg/사전통보 발송현황.svg?modify=alert");
-}
-
-.svg-sendstat-nop:before {
- --bs-origin : url("../../file/modifySvg/고지서 발송현황.svg");
- --bs-active : url("../../file/modifySvg/고지서 발송현황.svg?modify=active");
- --bs-alert : url("../../file/modifySvg/고지서 발송현황.svg?modify=alert");
-}
-
-.svg-opn-rcp:before {
- --bs-origin : url("../../file/modifySvg/접수.svg");
- --bs-active : url("../../file/modifySvg/접수.svg?modify=active");
- --bs-alert : url("../../file/modifySvg/접수.svg?modify=alert");
-}
-
-.svg-opn-decision:before {
- --bs-origin : url("../../file/modifySvg/수용_미수용.svg");
- --bs-active : url("../../file/modifySvg/수용_미수용.svg?modify=active");
- --bs-alert : url("../../file/modifySvg/수용_미수용.svg?modify=alert");
-}
-
-.svg-opn-selfdrop:before {
- --bs-origin : url("../../file/modifySvg/자진취하.svg");
- --bs-active : url("../../file/modifySvg/자진취하.svg?modify=active");
- --bs-alert : url("../../file/modifySvg/자진취하.svg?modify=alert");
-}
-
-[class^=svg-]:before {
- content : var(--bs-origin);
-}
-[class^=svg-].active-svg:before {
- content : var(--bs-active);
-}
-[class^=svg-].alert-svg:before {
- content : var(--bs-alert);
-}
\ No newline at end of file
diff --git a/src/main/resources/fonts/xit-icon/7seg20m.svg b/src/main/resources/fonts/xit-icon/7seg20m.svg
deleted file mode 100644
index 2df729bb..00000000
--- a/src/main/resources/fonts/xit-icon/7seg20m.svg
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/src/main/resources/fonts/xit-icon/7seg50m.svg b/src/main/resources/fonts/xit-icon/7seg50m.svg
deleted file mode 100644
index cd312d2c..00000000
--- a/src/main/resources/fonts/xit-icon/7seg50m.svg
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/src/main/resources/fonts/xit-icon/korea-post.svg b/src/main/resources/fonts/xit-icon/korea-post.svg
deleted file mode 100644
index 7e8d2894..00000000
--- a/src/main/resources/fonts/xit-icon/korea-post.svg
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
diff --git a/src/main/resources/fonts/xit-icon/org.svg b/src/main/resources/fonts/xit-icon/org.svg
deleted file mode 100644
index f7e4e117..00000000
--- a/src/main/resources/fonts/xit-icon/org.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/main/resources/fonts/xit-icon/sa.svg b/src/main/resources/fonts/xit-icon/sa.svg
deleted file mode 100644
index 3a072535..00000000
--- a/src/main/resources/fonts/xit-icon/sa.svg
+++ /dev/null
@@ -1,935 +0,0 @@
-
\ No newline at end of file
diff --git a/src/main/resources/html/inputRsnDialog.html b/src/main/resources/html/inputRsnDialog.html
deleted file mode 100644
index 9c3f5d7e..00000000
--- a/src/main/resources/html/inputRsnDialog.html
+++ /dev/null
@@ -1,13 +0,0 @@
-
\ No newline at end of file
diff --git a/src/main/resources/html/searchAddr.html b/src/main/resources/html/searchAddr.html
deleted file mode 100644
index bba47504..00000000
--- a/src/main/resources/html/searchAddr.html
+++ /dev/null
@@ -1,251 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/src/main/resources/img/login/loginDeco_02.png b/src/main/resources/img/login/loginDeco_02.png
deleted file mode 100644
index bf82eada..00000000
Binary files a/src/main/resources/img/login/loginDeco_02.png and /dev/null differ
diff --git a/src/main/resources/img/login/mainLogo_01.png b/src/main/resources/img/login/mainLogo_01.png
deleted file mode 100644
index ef6c39b0..00000000
Binary files a/src/main/resources/img/login/mainLogo_01.png and /dev/null differ
diff --git a/src/main/resources/img/login/mainLogo_02.png b/src/main/resources/img/login/mainLogo_02.png
deleted file mode 100644
index 69b27527..00000000
Binary files a/src/main/resources/img/login/mainLogo_02.png and /dev/null differ
diff --git a/src/main/resources/img/user-circle-solid-24.svg b/src/main/resources/img/user-circle-solid-24.svg
deleted file mode 100644
index 84d3257e..00000000
--- a/src/main/resources/img/user-circle-solid-24.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/main/resources/js/fims/cmmn/customElements.js b/src/main/resources/js/fims/cmmn/customElements.js
deleted file mode 100644
index c4cec040..00000000
--- a/src/main/resources/js/fims/cmmn/customElements.js
+++ /dev/null
@@ -1,301 +0,0 @@
-/**************************************************************************
-* doctx 탐지
-**************************************************************************/
-Element.prototype.detectDoctx = function(){
-
- let parent = this.parentElement;
-
- if(parent == null){
- return null;
- }
-
- if(parent.hasAttribute("data-doctx")){
- return parent.getAttribute("data-doctx");
- }
-
- return parent.detectDoctx();
-}
-
-/**************************************************************************
-* 페이징 표시하는 SPAN
-**************************************************************************/
-class PagingInfoSpan extends HTMLSpanElement {
- constructor() {
- super();
- }
-
- help(){
- PagingInfoSpan.help();
- }
- static help(){
- console.log("클래스명 = PagingInfoSpan");
- console.log("is속성 = paging-info");
- console.log("PagingInfoSpan 페이징 정보를 표시하는 SPAN태그이다.");
- }
-
- connectedCallback(){
- if(this.isConnected){
- let nm = this.getAttribute("name");
- let prefix = nm.substr(0,nm.indexOf("PagingInfo"))
-
- let doctx = this.getAttribute("data-ref-doctx");
- if(doctx == null){
- doctx = this.detectDoctx();
- }
- if(doctx != null){
- this.setAttribute("data-ref-doctx", doctx);
- this.id = prefix+"--"+doctx+"PagingInfo";
- }
- }
- }
-}
-
-customElements.define("paging-info", PagingInfoSpan, { extends: "span" });
-
-
-/**************************************************************************
-* name으로 참조하는 label
-**************************************************************************/
-class NameLabel extends HTMLLabelElement {
- constructor() {
- super();
- }
-
- help(){
- NameLabel.help();
- }
- static help(){
- console.log("클래스명 = NameLabel");
- console.log("is속성 = name-label");
- console.log("id가 아닌 name으로 참조하는 LABEL태그이다.");
- }
-
- connectedCallback(){
- if(this.isConnected){
-
- let doctx = this.getAttribute("data-ref-doctx");
- if(doctx == null){
- doctx = this.detectDoctx();
- }
- if(doctx != null){
- this.setAttribute("data-ref-doctx", doctx);
- if(this.getAttribute("for") != null && this.getAttribute("for").indexOf("--") == -1){
- this.htmlFor = this.getAttribute("for")+"--"+doctx;
- }
- }
- }
- }
-}
-
-customElements.define("name-label", NameLabel, { extends: "label" });
-
-/**************************************************************************
-* name과 doctx로 id를 생성하는 SELECT
-**************************************************************************/
-class IdSelect extends HTMLSelectElement {
- constructor() {
- super();
- }
-
- help(){
- IdSelect.help();
- }
- static help(){
- console.log("클래스명 = IdSelect");
- console.log("is속성 = id-select");
- console.log("name과 doctx로 자신의 id를 생성하는 SELECT태그이다.");
- }
-
- connectedCallback(){
- if(this.isConnected){
- let doctx = this.getAttribute("data-ref-doctx");
- if(doctx == null){
- doctx = this.detectDoctx();
- }
- if(doctx != null){
- this.setAttribute("data-ref-doctx", doctx);
- this.id = this.getAttribute("name")+"--"+doctx;
- }
- }
- }
-}
-
-customElements.define("id-select", IdSelect, { extends: "select" });
-
-/**************************************************************************
-* name과 doctx로 id를 생성하는 TEXTAREA
-**************************************************************************/
-class IdTextArea extends HTMLTextAreaElement {
- constructor() {
- super();
- }
-
- help(){
- IdTextArea.help();
- }
- static help(){
- console.log("클래스명 = IdTextArea");
- console.log("is속성 = id-textArea");
- console.log("name과 doctx로 자신의 id를 생성하는 TEXTAREA태그이다.");
- }
-
- connectedCallback(){
- if(this.isConnected){
- let doctx = this.getAttribute("data-ref-doctx");
- if(doctx == null){
- doctx = this.detectDoctx();
- }
- if(doctx != null){
- this.setAttribute("data-ref-doctx", doctx);
- this.id = this.getAttribute("name")+"--"+doctx;
- }
- }
- }
-}
-
-customElements.define("id-textarea", IdTextArea, { extends: "textarea" });
-
-/**************************************************************************
-* name과 doctx로 id를 생성하는 INPUT
-**************************************************************************/
-class IdInput extends HTMLInputElement {
- constructor() {
- super();
- }
-
- help(){
- IdInput.help();
- }
- static help(){
- console.log("클래스명 = IdInput");
- console.log("is속성 = id-input");
- console.log("name과 doctx로 자신의 id를 생성하는 INPUT태그이다.");
- }
-
- connectedCallback(){
- if(this.isConnected){
- let doctx = this.getAttribute("data-ref-doctx");
- if(doctx == null){
- doctx = this.detectDoctx();
- }
- if(doctx != null){
- this.setAttribute("data-ref-doctx", doctx);
- this.id = this.getAttribute("name")+"--"+doctx;
- if(this.hasAttribute("list") && this.getAttribute("list").indexOf("--") == -1){
- this.setAttribute("list",this.getAttribute("list")+"--"+doctx);
- }
- }
- }
- }
-}
-
-customElements.define("id-input", IdInput, { extends: "input" });
-
-/**************************************************************************
-* name과 doctx로 id를 생성하는 DATALIST
-**************************************************************************/
-class IdDataList extends HTMLDataListElement {
- constructor() {
- super();
- }
-
- help(){
- IdDataList.help();
- }
- static help(){
- console.log("클래스명 = IdDataList");
- console.log("is속성 = id-datalist");
- console.log("name과 doctx로 자신의 id를 생성하는 DATALIST태그이다.");
- }
-
-
- connectedCallback(){
- if(this.isConnected){
- let doctx = this.getAttribute("data-ref-doctx");
- if(doctx == null){
- doctx = this.detectDoctx();
- }
- if(doctx != null){
- this.setAttribute("data-ref-doctx", doctx);
- this.id = this.getAttribute("name")+"--"+doctx;
- }
- }
- }
-}
-
-customElements.define("id-datalist", IdDataList, { extends: "datalist" });
-
-
-
-/**************************************************************************
-* 중괄호 자동 추가 템플릿
-**************************************************************************/
-class CurlyBrackets extends HTMLTemplateElement {
- constructor() {
- super();
-
- let curlyBracketsOpen = String.fromCharCode(123); //중괄호시작
-
- let thisCon = this.content;
-
- let trs = thisCon.querySelectorAll("tr");
-
- trs.forEach(function(node) {
- let key = node.getAttribute("data-key");
- if(key != null && key != "" && key.indexOf(curlyBracketsOpen) == -1){
- node.setAttribute("data-key","{"+key+"}");
- }
- let index = node.getAttribute("data-index");
- if(index != null && index != "" && index.indexOf(curlyBracketsOpen) == -1){
- node.setAttribute("data-index","{"+index+"}");
- }
- });
-
- let tds = thisCon.querySelectorAll("td");
- tds.forEach(function(node) {
- if(node.getAttribute("onclick") != null && node.getAttribute("onclick") == ""){
- node.setAttribute("onclick","{onclick}");
- }
-
- if(node.getAttribute("ondblclick") != null && node.getAttribute("ondblclick") == ""){
- node.setAttribute("ondblclick","{ondblclick}");
- }
-
- if(node.childElementCount == 0){
- if(node.textContent.trim() != "" && node.textContent.indexOf(curlyBracketsOpen) == -1){
- node.textContent = "{"+node.textContent.trim()+"}";
- }
- }
- });
-
- let tdCheckboxes = thisCon.querySelectorAll("td>input[type='checkbox']");
- tdCheckboxes.forEach(function(node) {
- if(node.getAttribute("value") != null && node.getAttribute("value") != "" && node.getAttribute("value") != "on"){
- node.setAttribute("value","{"+node.getAttribute("value")+"}");
- }
- if(node.getAttribute("onchange") != null && node.getAttribute("onchange") == ""){
- node.setAttribute("onchange","{onchange}");
- }
- });
-
- let tdRadios = thisCon.querySelectorAll("td>input[type='radio']");
- tdRadios.forEach(function(node) {
- if(node.getAttribute("value") != null && node.getAttribute("value") != "" && node.getAttribute("value") != "on"){
- node.setAttribute("value","{"+node.getAttribute("value")+"}");
- }
- if(node.getAttribute("onchange") != null && node.getAttribute("onchange") == ""){
- node.setAttribute("onchange","{onchange}");
- }
- });
- }
-
- help(){
- CurlyBrackets.help();
- }
- static help(){
- console.log("클래스명 = CurlyBrackets");
- console.log("is속성 = curly-brackets");
- console.log("그리드 렌더링시 중괄호가 빠진 부분을 자동으로 추가하는 TEMPLATE태그이다.");
- }
-}
-customElements.define("curly-brackets", CurlyBrackets, { extends: "template" });
diff --git a/src/main/resources/js/fims/cmmn/fims-base.js b/src/main/resources/js/fims/cmmn/fims-base.js
deleted file mode 100644
index 2966b4a4..00000000
--- a/src/main/resources/js/fims/cmmn/fims-base.js
+++ /dev/null
@@ -1,519 +0,0 @@
-if(window.help !== undefined){
- help.prototype.list.push("FimsFormFields 클래스 : FormFields클래스를 상속받은 FIMS프로젝트 내에서 사용하는 FormFields클래스");
- help.prototype.list.push("pageObject 객체 : HTML화면별 스크립트 모음");
- help.prototype.list.push("DoctxFinder 클래스 : DomQuery를 상속받은 클래스. pageObject객체의 내부 요소는 해당 클래스의 인스턴스이다.");
-}
-
-/**************************************************************************
-* FimsFormFields
-**************************************************************************/
-class FimsFormFields extends FormFields {
-
- help(){
- FimsFormFields.help();
- }
-
- static help(){
- console.log("FimsFormFields 클래스 : FormFields클래스를 상속받은 FIMS프로젝트 내에서 사용하는 FormFields클래스");
- }
-
- /**
- * form 에 json data set
- * element tag에 data-fmt-type 으로 데이타 format이 지정된 경우 해당 포맷으로 출력
- * @param {object} formObj document.querySelector('form')
- * @param {object} jsonData json type data
- */
- set(ctrl,obj){
-
- document.querySelectorAll(this.children).forEach(input => {
-
- let prop = input.getAttribute("data-map")
- || input.name
- || input.id;
- if (!prop) return;
-
- let dataItem = obj instanceof DataItem,
- value = dataItem ? obj.getValue(prop) : obj[prop];
-
- if ("radio" == input.type) {
- if (value && value == input.value)
- input.checked = true;
- } else if("checkbox" == input.type) {
- if (value && value == input.value)
- input.checked = ("Y" === value);
- } else if(input.tagName == "SELECT") {
- for(let option of input.options) {
- if(option.value == value){
- option.selected = true;
- } else {
- option.selected = false;
- }
- }
- } else {
- if(value == null){
- value = "";
- }
- // element data-fmt-type에 정의된 format 적용
- // dt - yyyy-mm-dd HH:mm:ss, day - yyyy-mm-dd, time - HH:mm:ss, number - #,###
- if(input.dataset.fmtType){
- const fmtType = input.dataset.fmtType;
- switch (fmtType) {
- case 'dt' :
- value = datetimeFormat.parse(value);
- value = datetimeFormat.format(value);
- break;
- case 'day' :
- value = dateFormat.parse(value);
- value = dateFormat.format(value);
- break;
- case 'time' :
- value = timeFormat.parse(value);
- value = timeFormat.format(value);
- break;
- case 'number' :
- value = numberFormat.parse(value);
- value = numberFormat.format(value);
- break;
- default:
- break;
- }
- }
- if(input.name){
- if($(input).hasClass('form-date')){
- $(input).datepicker("setDate", value);
- } else {
- input.value = value;
- }
-
- //보안모드 마스킹 항목
- if(input.tagName === 'INPUT' && input.id && input.classList.contains("privacy")){
- let maskVal = value.replace(/./g, "*");
- document.getElementById("mask-"+input.id).value = maskVal;
- }
- }
-
- }
- });
-
-
- }
-
- get() {
- let obj = {};
- document.querySelectorAll(this.children).forEach(input => {
- if(input.tagName == "INPUT" || input.tagName == "SELECT" || input.tagName == "TEXTAREA"){
- let property = input.name || input.id;
- let value = input.value;
- if("radio" == input.type) {
- if(input.checked)
- obj[property] = value;
- } else if("checkbox" == input.type) {
- if(input.checked){
- if(obj[property]){
- obj[property] += ","+value;
- } else {
- obj[property] = value;
- }
- }
- } else {
- if(input.dataset.fmtType){
- const fmtType = input.dataset.fmtType;
- switch (fmtType) {
- case 'dt' :
- value = value.replaceAll("-","").replaceAll(":","").replaceAll(" ","");
- break;
- case 'day' :
- value = value.replaceAll("-","");
- break;
- case 'time' :
- value = value.replaceAll(":","");
- break;
- case 'number' :
- value = value.replaceAll(",","");
- break;
- default:
- break;
-
- }
- }
- obj[property] = value;
- }
- }
- });
- return obj;
- }
-}
-
-function newFimsFormFields(conf){
- return new FimsFormFields(conf);
-}
-
-/**************************************************************************
-* data-doctx,name 어트리뷰트로 찾기
-**************************************************************************/
-function newDoctxFinder(doctx){
- let finder = new DoctxFinder(doctx);
- return finder;
-}
-
-class DoctxFinder extends DomQuery {
- constructor(doctx) {
- super();
- this.setContainers("[data-doctx='"+doctx+"']");
- this.doctx = doctx;
- }
-
- help(){
- console.log("현재 doctx = "+this.doctx);
- DoctxFinder.help();
- }
- static help(){
- console.log("클래스명 = DoctxFinder");
- console.log("newDoctxFinder(doctx명)로 인스턴스를 생성할 수 있다.");
- console.log("클래스 메서드 목록");
- console.log("selectorn(요소이름) : 문자열 [data-doctx='설정된doctx'] [name='요소이름'] 을 반환한다.");
- console.log("findn(요소이름) : data-doctx속성이 설정된doctx인 요소 내에서 name속성이 요소이름인 HTML요소를 반환한다.");
- console.log("$findn(요소이름) : data-doctx속성이 설정된doctx인 요소 내에서 name속성이 요소이름인 제이쿼리 객체를 반환한다.");
- console.log("selfElement() : data-doctx속성이 설정된doctx인 HTML요소를 반환한다.");
- console.log("selfDlgId() : data-doctx속성이 설정된doctx인 HTML요소를 갖는 모달창의 id를 반환한다.");
- console.log("refDlgId(모달창이름) : data-ref-doctx속성이 설정된doctx이고 name속성이 모달창이름인 모달창의 id를 반환한다.");
- }
-
- selectorn(name){
- return this.selector("[name='"+name+"']");
- }
- findn(name){
- return this.find("[name='"+name+"']");
- }
- $findn(name){
- return $(document.querySelector("[data-doctx='"+this.doctx+"']")).find("[name='"+name+"']");
- }
-
- selfElement(){
- return document.querySelector("[data-doctx='"+this.doctx+"']");
- }
- selfDlgId(){
- if($(this.selfElement()).parents(".modal").length > 0){
- return $(this.selfElement()).parents(".modal")[0].id;
- } else {
- return "";
- }
- }
- refDlgId(dlgName){
- if($(".modal[data-ref-doctx='"+this.doctx+"'][name='"+dlgName+"']").length > 0){
- return $(".modal[data-ref-doctx='"+this.doctx+"'][name='"+dlgName+"']")[0].id;
- } else {
- return "";
- }
- }
-
-}
-
-
-/**************************************************************************
-* jquery.fn 커스텀 - UI요소 값 세팅
-**************************************************************************/
-$.fn.set = function(value) {
- return this.each(function(){
- if($(this).hasClass('form-date')){
- if(value != null && value.length == 8 && value.indexOf("-") == -1){
- value = value.substring(0,4) + "-" + value.substring(4,6) + "-" + value.substring(6,8);
- }
- $(this).datepicker("setDate", value);
- } else if($(this).hasClass('option-style-select')){
- $(this).val(value);
- this.changeUI();
- } else if(this.type == "checkbox" || this.type == "radio"){
- if(this.value == value){
- $(this).prop("checked", true);
- } else {
- $(this).prop("checked", false);
- }
- } else {
- if(this.dataset.fmtType == "number"){
- $(this).val(numberFormat.format(value));
- } else {
- $(this).val(value);
- }
- }
- });
-}
-
-/**************************************************************************
-* Dataset 관련 적용 기능
-**************************************************************************/
-const Apply = {
- fromDatasetControl : {
- load : async function(control, pageNum){
- return new Promise((resolve, reject) => {
- control.query.pageNum = pageNum;
- if (!control.query.pageNum){
- control.query.pageNum = 1;
- }
- ajax.get({
- url:control.urls.load,
- data:control.query,
- success:(resp) => {
- resolve(resp);
- }
- });
- });
- },
- reload : async function(control){
- return new Promise((resolve, reject) => {
- var orgnQuery = Object.assign({}, control.query);
- control.query.fetchSize = control.defaultFetchSize * control.query.pageNum;
- control.query.pageNum = 1;
-
- ajax.get({
- url:control.urls.load,
- data:control.query,
- success:(resp) => {
- control.query.pageNum = orgnQuery.pageNum;
- control.query.fetchSize = orgnQuery.fetchSize;
- resolve(resp);
- }
- });
- });
- }
- },
- fromDataset : {
- gridCheckbox : function(dataset, tbody, colIndex, checkedArr){
-
- var keys = checkedArr.map(item => dataset.getKey(item));
-
- $(tbody).find("tr").each(function() {
- var cb = $(this).find("td").eq(colIndex).find(":checkbox");
- cb.prop("checked", keys.includes(cb.val()));
- });
-
- },
- gridButton : function(dataset, button, checkedArr){
- var keys = checkedArr.map(item => dataset.getKey(item));
- $(button).prop("disabled", keys.length < 1);
- },
- currentRow : function(dataset, dataItem, tbody){
- if(!dataItem){
- return;
- }
- $(tbody).setCurrentRow(dataset.getKey(dataItem));
- },
- paging : function(dataset, resp, navUl, navSpan){
-
- let id = navSpan.id;
- let pf = id.substr(0,id.indexOf("PagingInfo"));
-
- $(navUl).setPagingInfo({
- list : dataset,
- prefix : pf,
- totalSize : resp["Total"]
- });
-
- },
- getTbody : function(dataset, found, notFound, replacer){
- var empty = dataset.empty;
- var trs = empty ? notFound : dataset.inStrings(found, replacer);
- return trs.join();
- },
- getTodoCurrent : function(dataset, beforeCurrent, columnName){
-
- let di = null;
- if(beforeCurrent == null){
- return null;
- }
- if(dataset.empty){
- return null;
- }
-
- let filtered = dataset.getDataset("item").filter(item => item.data[columnName] == beforeCurrent.primaryKey);
- if(filtered.length > 0){
- di = filtered[0];
- return di;
- }
-
- let otherInfo;
- if(beforeCurrent.arrayIndex > (dataset.length - 1)){
- di = dataset.getDataset("item")[dataset.length - 1];
- } else {
- di = dataset.getDataset("item")[beforeCurrent.arrayIndex];
- }
-
- return di;
- }
- },
- toDataset : {
- current : function(dataset, dataKey){
- dataset.setCurrent(dataKey, false);
- },
- selection : function(dataset, checkbox, bool){
-
- var parentEl = $(checkbox).parent()[0];
- var isTH = parentEl.tagName == "TH" ? true : false;
-
- if(isTH) {
- var dataItems = dataset.getDataset("item");
-
- for(var i=0; i < dataItems.length; i++){
- dataItems[i].select(bool);
- }
- } else {
- var dataItem = dataset.getData(checkbox.value, "item");
- dataItem.select(bool);
- }
- },
- set : function(dataset, resp){
- dataset._byKeys = {};
- dataset._current = null;
- resp = resp || {};
- var data = dataset._getDataItems(resp,{});
-
- dataset._items = data.items;
- dataset._byKeys = data.byKeys;
- },
- add : function(dataset, resp){
- if (dataset.empty){
- this.set(dataset, resp);
- return;
- }
- var state = dataset.state;
- resp = resp || {};
- var data = dataset._getDataItems(resp,{});
- dataset._items = this._items.concat(data.items);
- dataset._byKeys = {
- ...this._byKeys,
- ...data.byKeys
- };
- }
- }
-
-};
-
-/**************************************************************************
-* 그리드 관련 기능
-**************************************************************************/
-const GRID = {
- fromResp : {
- setPagingInfo : function(respList, respPaging, navUl, navSpan){
- let pagination = {};
-
- let id = navSpan.id;
- pagination.prefix = id.substr(0,id.indexOf("PagingInfo"));
-
- let dl = 0;
- if(respList != null) {
- dl = respList.length;
- }
-
- let s = 0;
- let ts = 0;
- if(respPaging && respPaging.start) {
- s = respPaging.start;
- }
- if(respPaging && respPaging.totalSize) {
- ts = respPaging.totalSize;
- }
- pagination.totalSize = ts;
- pagination.dataLength = s + dl;
-
- $(navUl).setPagingInfo(pagination);
- }
- },
- setCurrentRow : function(evTarget){
- if(evTarget instanceof HTMLTableCellElement){
- let tr = evTarget.parentElement;
- let tbody = tr.parentElement;
-
- for (let sibling of tdElement.parentNode.children) {
- sibling.classList.remove('current-row');
- }
- tr.classList.add('current-row');
- } else if(evTarget instanceof HTMLTableRowElement){
- let tr = evTarget;
- let tbody = tr.parentElement;
-
- for (let sibling of tdElement.parentNode.children) {
- sibling.classList.remove('current-row');
- }
- tr.classList.add('current-row');
- }
- },
- checkbox : {
- sync : function(checkboxElement, bool){
- var parentEl = $(checkboxElement).parent()[0];
- var isTH = parentEl.tagName == "TH" ? true : false;
- var tr = $(checkboxElement).parents("tr");
- var siblingTag = isTH ? "TH" : "TD";
- var siblings = tr.find(siblingTag);
- var checkboxColIndex = siblings.index(parentEl);
-
- var table = $(checkboxElement).parents("table");
- var thead = table.find("thead");
- var tbody = table.find("tbody");
- var trs = tbody.find("tr");
-
- if(isTH) {
-
- trs.each(function(){
- $(this).find("td").eq(checkboxColIndex).find(":checkbox").prop("checked", bool);
- });
-
- } else {
- var allChecked = false;
- var cbLength = 0;
- var checkedLength = 0;
-
- trs.each(function(){
- var cb = $(this).find("td").eq(checkboxColIndex).find(":checkbox");
- if(cb.length > 0){
- cbLength++;
- if(cb.is(":checked")){
- checkedLength++;
- };
- }
- });
-
- if(cbLength == checkedLength){
- allChecked = true;
- }
-
- if(allChecked){
- thead.find(":checkbox").prop("checked", true);
- } else {
- thead.find(":checkbox").prop("checked", false);
- }
-
- }
- },
- countChecked : function(checkboxElement){
-
- var parentEl = $(checkboxElement).parent()[0];
- var tr = $(checkboxElement).parents("tr").eq(0);
- var table = $(checkboxElement).parents("table").eq(0);
-
- var checkboxColIndex = null;
- if(parentEl.tagName == "TH"){
- var siblings = tr.find("TH");
- checkboxColIndex = siblings.index(parentEl);
- } else if(parentEl.tagName == "TD"){
- var siblings = tr.find("TD");
- checkboxColIndex = siblings.index(parentEl);
- } else {
- return null;
- }
-
- var tbody = table.find("tbody");
- var trs = tbody.find("tr");
-
- var count = 0;
- trs.each(function(){
- var cb = $(this).find("td").eq(checkboxColIndex).find(":checkbox");
- if(cb.length > 0){
- if(cb.is(":checked")) {
- count++;
- }
- }
- });
- return count;
- }
- }
-};
diff --git a/src/main/resources/js/fims/cmmn/fims-componentization.js b/src/main/resources/js/fims/cmmn/fims-componentization.js
deleted file mode 100644
index 426279f0..00000000
--- a/src/main/resources/js/fims/cmmn/fims-componentization.js
+++ /dev/null
@@ -1,230 +0,0 @@
-if(window.help !== undefined){
- help.prototype.list.push("FimsComponentization 클래스 : 특정 HTML요소에 기능을 추가할 수 있다.");
-}
-
-class FimsComponentization {
-
- static help(){
- console.log("fnMakeSpinnerSelect(셀렉트박스,이전버튼,다음버튼) : 특정 셀렉트박스를 버튼클릭으로 옵션 선택 가능한 셀렉트박스로 만든다.");
- console.log("fnMakeOptionStyleSelect(셀렉트박스) : 특정 셀렉트박스를 선택된 옵션의 스타일이 적용된 셀렉트박스로 만든다.");
- console.log("fnMakeRowSpinner(테이블row,up버튼,down버튼,스크롤컨테이너,validator) : 특정 테이블을 행 위치 이동이 가능한 테이블로 만든다.");
- console.log("fnMakeSingleImageViewer(img태그,fileInput태그,파일경로속성명,파일이름속성명) : 특정 이미지 태그를 단일 업로드 이미지 뷰어로 만든다.");
- }
-
- /**************************************************************************
- * 특정 셀렉트박스를 버튼클릭으로 옵션 선택 가능한 셀렉트박스로 만든다.
- **************************************************************************/
- static fnMakeSpinnerSelect(selectEl, prevBtnEl, nextBtnEl){
-
- $(selectEl).on("animationend", function(){
- $(selectEl).removeClass("highlight-once");
- });
- $(prevBtnEl).on("click", function(){
- var selected = $(selectEl).find("option:selected");
- var prev = selected.prev();
- if(prev.length >= 1){
- $(selectEl).val(prev.val());
- } else {
- $(selectEl).addClass("highlight-once");
- }
- });
- $(nextBtnEl).on("click", function(){
- var selected = $(selectEl).find("option:selected");
- var next = selected.next();
- if(next.length >= 1){
- $(selectEl).val(next.val());
- } else {
- $(selectEl).addClass("highlight-once");
- }
- });
- }
-
- /**************************************************************************
- * 특정 셀렉트박스를 선택된 옵션의 스타일이 적용된 셀렉트박스로 만든다.
- **************************************************************************/
- static fnMakeOptionStyleSelect(selectEl){
- $(selectEl).addClass("option-style-select");
-
- selectEl.changeUI = function(){
-
- var selected = $(this).find("option:selected");
-
- if(selected.length <= 0){
- selectEl.dataset.optionStyle = "";
- selectEl.title = "";
- return;
- }
-
- selectEl.dataset.optionStyle = selected.val();
- selectEl.title = selected[0].title;
- };
-
- $(selectEl).on("change", function(){
- selectEl.changeUI();
- });
-
- selectEl.changeUI();
- }
-
- /**************************************************************************
- * 특정 테이블을 행 위치 이동 가능한 테이블로 만든다.
- **************************************************************************/
- static fnMakeRowSpinner(tableRowEl, upBtnEl, downBtnEl, scrollEl, validFunc){
-
- if(validFunc != undefined && validFunc != null){
- tableRowEl.validForComponent = validFunc;
- } else {
- tableRowEl.validForComponent = function(eventInfo){
- return true;
- };
- }
-
- $(upBtnEl).on("click", function(){
- var tbody = $(tableRowEl).parent();
-
- var theadHeight = $(scrollEl).find("thead").outerHeight();
- var scrollElStart = $(scrollEl).offset().top + theadHeight;
- var scrollElHeight = $(scrollEl).height() - theadHeight - VERTICAL_SCROLL_HEIGHT;
- var scrollMiddle = scrollElStart + (scrollElHeight/2);
-
- if($(tableRowEl).index() == 0){
- return;
- }
-
- var beforeIndex = $(tableRowEl).index() - 1;
- var beforeTr = $(tbody).find("tr").eq(beforeIndex);
-
-
- var eventInfo = {
- clickedButtonType : "up",
- currentRow : tableRowEl,
- siblingRow : beforeTr
- };
- if(!tableRowEl.validForComponent(eventInfo)){
- return;
- }
-
-
- var rowStart = beforeTr.offset().top;
- var rowHeight = beforeTr.outerHeight();
- var rowMiddle = rowStart+(rowHeight/2);
-
- beforeTr.before(tableRowEl);
-
- if(rowMiddle < scrollMiddle){
- var move = scrollMiddle - rowMiddle;
- $(scrollEl).scrollTop($(scrollEl).scrollTop() - move);
- }
-
- $(tbody).find("tr").removeClass("current-row");
- $(tableRowEl).addClass("current-row");
- });
-
- $(downBtnEl).on("click", function(){
- var tbody = $(tableRowEl).parent();
-
- var theadHeight = $(scrollEl).find("thead").outerHeight();
- var scrollElStart = $(scrollEl).offset().top + theadHeight;
- var scrollElHeight = $(scrollEl).height() - theadHeight - VERTICAL_SCROLL_HEIGHT;
- var scrollMiddle = scrollElStart + (scrollElHeight/2);
-
- if($(tableRowEl).index() == ($(tbody).children().length) - 1){
- return;
- }
-
- var afterIndex = $(tableRowEl).index() + 1;
- var afterTr = $(tbody).find("tr").eq(afterIndex);
-
-
- var eventInfo = {
- clickedButtonType : "down",
- currentRow : tableRowEl,
- siblingRow : afterTr
- };
- if(!tableRowEl.validForComponent(eventInfo)){
- return;
- }
-
-
- var rowStart = afterTr.offset().top;
- var rowHeight = afterTr.outerHeight();
- var rowMiddle = rowStart+(rowHeight/2);
-
- afterTr.after(tableRowEl);
-
- if(rowMiddle > scrollMiddle){
- var move = rowMiddle - scrollMiddle;
- $(scrollEl).scrollTop($(scrollEl).scrollTop() + move);
- }
-
- $(tbody).find("tr").removeClass("current-row");
- $(tableRowEl).addClass("current-row");
- });
-
-
- }
-
- /**************************************************************************
- * 특정 이미지 태그를 단일 업로드 이미지 뷰어로 만든다.
- **************************************************************************/
- static fnMakeSingleImageViewer(imgEl, fileInputEl, dataAttributeForFilePath, dataAttributeForFileName){
-
- $(imgEl).on("click", function(){
- $(fileInputEl).click();
- });
-
- $(fileInputEl).on("change", function(){
-
- if(this.files != null && this.files.length > 0){
- $(imgEl).attr("alt", this.files[0].name);
- $(imgEl).attr("src", (window.URL || window.webkitURL).createObjectURL(this.files[0]));
-
- } else {
-
- var orgnName = $(imgEl).attr("data-"+dataAttributeForFileName);
- var orgnPath = $(imgEl).attr("data-"+dataAttributeForFilePath);
-
- if(orgnPath != undefined && orgnPath != null && orgnPath != ""){
- $(imgEl).attr("alt", orgnName);
- $(imgEl).attr("src", orgnPath);
- } else {
- $(imgEl).attr("alt", "파일이 없습니다.");
- $(imgEl).attr("src", "/webjars/applib/img/no-image.svg");
- }
-
- }
-
- });
- }
-
- static getBrowserName() {
- var agent = navigator.userAgent.toUpperCase();
- if (agent.indexOf('TRIDENT') >= 0) {
- return 'IE';
- } else if (agent.indexOf('FIREFOX') >= 0) {
- return 'FIREFOX';
- } else if (agent.indexOf('EDG') >= 0) {
- return 'EDGE';
- } else if (agent.indexOf('CHROME') >= 0) {
- return 'CHROME';
- } else if (agent.indexOf('SAFARI') >= 0) {
- return 'SAFARI';
- } else {
- return '';
- }
- }
-}
-
-const BROWSER_NAME = FimsComponentization.getBrowserName();
-var VERTICAL_SCROLL_HEIGHT = 14;
-switch(BROWSER_NAME){
- case "EDGE" :
- VERTICAL_SCROLL_HEIGHT = 14;
- break;
- case "FIREFOX" :
- VERTICAL_SCROLL_HEIGHT = 15;
- break;
- case "CHROME" :
- VERTICAL_SCROLL_HEIGHT = 15;
- break;
-}
\ No newline at end of file
diff --git a/src/main/resources/js/fims/cmmn/fims-support.js b/src/main/resources/js/fims/cmmn/fims-support.js
deleted file mode 100644
index 1f1ad78d..00000000
--- a/src/main/resources/js/fims/cmmn/fims-support.js
+++ /dev/null
@@ -1,555 +0,0 @@
-if(window.help !== undefined){
- help.prototype.list.push("FimsSupport 클래스 : FIMS프로젝트 내에서 공통적으로 사용할 수 있는 기능 지원");
- help.prototype.list.push("FimsPagingSupport 클래스 : 스크롤 페이징 정보 표시 지원");
-}
-
-/**************************************************************************
-* FimsSupport
-**************************************************************************/
-class FimsSupport {
-
- static help(){
- console.log("메소드 목록");
- console.log("fnMenualDownload() : 메뉴얼 다운로드");
- console.log("mappingButtonAndMenu(버튼id, 메뉴이름) : 버튼과 메뉴를 매핑한다.");
- console.log("fnDownsizeToggle(th객체) : 테이블 컬럼 축소 여부 변경");
- console.log("fnDownsizeCheck(html테이블객체) : 테이블 렌더링 후 축소 처리할 컬럼 확인");
- console.log("countCrdnByVhrno(차량번호, 업무구분코드, 시군구코드) : 차량번호로 단속 건수 조회");
- console.log("countCvlcptDscsnByVhrno(차량번호, 업무구분코드, 시군구코드) : 차량번호로 민원상담 건수 조회");
- console.log("getVhclInfo(시군구코드, 차량번호, 기준일자) : 시군구코드, 차량번호, 기준일자로 차적 조회");
- console.log("getVhclDisabledParkingInfo(차량번호) : 장애인 차량여부 조회");
- console.log("searchFromGridTitle(키워드영문명, 키워드한글명, 메인옵션, 추가옵션) : 그리드의 특정 열 값을 키워드로 자료 조회");
- console.log("renderForTask(렌더링영역객체, 업무class속성명) : 업무구분별 화면 렌더링");
- console.log("registShortcutKey() : 단축키 등록");
- console.log("getActiveRootTabArea() : 현재 활성화된 최상위 탭 영역을 반환한다.");
- console.log("fnJsonToFormData(json,배열이름) : son객체 안의 jsonArray를 FormData형식의 키로 치환한다.");
- console.log("fnJsonArrayToFormData(json배열,배열이름) : jsonArray를 FormData형식의 키를 갖는 json으로 치환한다.");
- console.log("getCellDefsForPrivacyCell(TD태그의 제이쿼리 객체) : 엑셀다운로드시 개인정보 포함된 셀의 컬럼명을 추출하는 함수");
- console.log("openPDF(blob객체,새 창 이름) : PDF파일 미리보기 창 열기");
- console.log("fnProgress(sse키, progress팝업화면 내용, progress응답시 처리 메소드) : 프로그레스바 표시");
- }
-
- /**************************************************************************
- * 메뉴얼 다운로드
- **************************************************************************/
- static fnMenualDownload(){
- var filenameInHeader = "";
-
- fetch(wctx.url("/file/downloadMenual.do"))
- .then((response) => {
- var header = response.headers.get('Content-Disposition');
- console.log(header);
- var parts = header.split(';');
- filenameInHeader = parts[1].split('=')[1];
- if(filenameInHeader.startsWith("\"") && filenameInHeader.endsWith("\"")){
- filenameInHeader = filenameInHeader.substring(1,filenameInHeader.length-1);
- }
- filenameInHeader = decodeURIComponent(filenameInHeader);
- return response.blob();
- })
- .then((blob) => {
-
- var URL = window.URL || window.webkitURL;
- var downloadUrl = URL.createObjectURL(blob);
-
- var a = document.createElement("a");
- a.href = downloadUrl;
- a.download = filenameInHeader;
- document.body.appendChild(a);
- a.click();
- document.body.removeChild(a);
-
- });
-
- }
-
- /**************************************************************************
- * 버튼과 메뉴를 매핑한다.
- **************************************************************************/
- static mappingButtonAndMenu(buttonId, menuNm){
- $("#"+buttonId).on( "click", function() {
- $("#menus").find("div[data-i18n='"+menuNm+"']").parent("a").trigger("click");
- });
- }
-
- /**************************************************************************
- * 테이블 컬럼 축소 여부 변경
- **************************************************************************/
- static fnDownsizeToggle(thObj) {
-
- $(thObj).toggleClass("downsize");
-
- var thIndex = $(thObj).index();
-
- var setValue = "";
- if($(thObj).hasClass("downsize")){
- setValue = "160px";
- }
-
- var tbody = $(thObj).parent("tr").parent("thead").next("tbody");
- if(tbody.length < 1){
- return;
- }
-
- var trs = tbody.find("tr");
-
- if(trs.length < 1){
- return;
- }
-
- if(trs.length == 1 && trs.find("td").length <= 1){
- return;
- }
-
- trs.each(function(){
- $(this).find("td:eq("+thIndex+")").css("max-width",setValue);
- });
-
- }
-
- /**************************************************************************
- * 테이블 렌더링 후 축소 처리할 컬럼 확인
- **************************************************************************/
- static fnDownsizeCheck(tableObj) {
- $(tableObj).find("thead tr th").each(function(){
- var thIndex = $(this).index();
- if($(this).hasClass("downsize")){
- var trs = $(this).parent("tr").parent("thead").next("tbody").find("tr");
- trs.each(function(){
- $(this).find("td:eq("+thIndex+")").css("max-width","160px");
- });
- }
- });
- }
-
- /**************************************************************************
- * 차량번호로 단속 건수 조회
- **************************************************************************/
- static async countCrdnByVhrno(vhrno, taskSeCd, sggCd){
- return new Promise((resolve, reject) => {
- json.get({
- url: wctx.url("/"+taskSeCd+"/crdn/crdn06/010/nocs.do"),
- data: {
- vhrno : vhrno,
- taskSeCd : taskSeCd,
- sggCd : sggCd
- },
- success: function(resp, textStatus, jqXHR) {
- resolve(resp);
- },
- error: function(jqXHR, textStatus, error) {
- }
- });
- });
- }
-
- /**************************************************************************
- * 차량번호로 민원상담 건수 조회
- **************************************************************************/
- static async countCvlcptDscsnByVhrno(vhrno, taskSeCd, sggCd){
- return new Promise((resolve, reject) => {
- json.get({
- url: wctx.url("/"+taskSeCd+"/sprt/sprt04/010/nocs.do"),
- data: {
- vhrno : vhrno,
- taskSeCd : taskSeCd,
- sggCd : sggCd
- },
- success: function(resp, textStatus, jqXHR) {
- resolve(resp);
- },
- error: function(jqXHR, textStatus, error) {
- }
- });
- });
- }
-
- /**************************************************************************
- * 시군구코드, 차량번호, 기준일자로 차적 조회
- **************************************************************************/
- static async getVhclInfo(sggCd, vhrno, levy_stdde){
- return new Promise((resolve, reject) => {
- json.post({
- url: wctx.url("/payer/vehicle.do"),
- data: {
- sggCd : sggCd,
- vhrno : vhrno,
- levy_stdde : levy_stdde
- },
- success: function(resp, textStatus, jqXHR) {
- resolve(resp);
- },
- error: function(jqXHR, textStatus, error) {
- }
- });
- });
- };
-
- /**************************************************************************
- * 장애인 차량여부 조회
- **************************************************************************/
- static async getVhclDisabledParkingInfo(vhrno){
- return new Promise((resolve, reject) => {
- json.get({
- url: wctx.url("/intf/disabledParking/parkingInfo"),
- data: {
- vehicleNo : vhrno
- },
- success: function(resp, textStatus, jqXHR) {
- resolve(resp);
- },
- error: function(jqXHR, textStatus, error) {
- }
- });
- });
- }
-
- /**************************************************************************
- * 그리드의 특정 열 값을 키워드로 자료 조회
- **************************************************************************/
- static searchFromGridTitle(byValue, byOutputValue, mainOption, subOption){
- var tr = event.target.parentElement;
-
- if($(tr).attr("data-search-target") == null || $(tr).attr("data-search-target") == ""){
-
- var trDataset = tr.dataset;
-
- var byElementId = trDataset.by;
- var byOutputElementId = trDataset.byOutput;
- var mainOptionElementId = trDataset.mainOption;
- var subOptionElementId = trDataset.subOption;
-
- document.getElementById(byElementId).value = StringSupport.snakeToCamel(byValue);
- document.getElementById(byOutputElementId).value = byOutputValue;
-
- document.getElementById(mainOptionElementId).value = mainOption;
- document.getElementById(subOptionElementId).value = subOption;
- } else {
-
- let byEl = $($(tr).attr("data-search-target")).find("[name='by']")[0];
- let byOutputEl = $($(tr).attr("data-search-target")).find("[name='byOutput']")[0];
- let mainOptionEl = $($(tr).attr("data-search-target")).find("[name='mainOption']")[0];
- let subOptionEl = $($(tr).attr("data-search-target")).find("[name='subOption']")[0];
-
- byEl.value = StringSupport.snakeToCamel(byValue);
- byOutputEl.value = byOutputValue;
- mainOptionEl.value = mainOption;
- subOptionEl.value = subOption;
- }
-
- }
-
- /**************************************************************************
- * 업무구분별 화면 렌더링
- **************************************************************************/
- static renderForTask(areaId, taskClass){
- var slotAreas;
- if(typeof areaId == "string"){
- slotAreas = $("#"+areaId).find("[slot]");
- } else {
- slotAreas = $(areaId).find("[slot]");
- }
-
- slotAreas.each(function(){
- if($(this).hasClass("if-empty-col0")){
- if(!isEmpty($(this).attr("data-original-col-size"))){
- let colSize = $(this).attr("data-original-col-size");
- $(this).removeClass("col-0");
- $(this).addClass(colSize);
- $(this).attr("data-original-col-size","");
- }
- }
- });
-
- slotAreas.each(function(){
- var tempHtml = "";
- $(this).find("template").each(function(){
- tempHtml += this.cloneNode(true).outerHTML;
- });
-
- var taskTemplate = $(this).find("template."+taskClass);
- if(taskTemplate.length < 1){
- this.innerHTML = tempHtml;
- return;
- }
-
- var inHtml = $(taskTemplate[0].content).find("slot")[0].innerHTML;
- this.innerHTML = tempHtml + inHtml;
-
- });
-
- slotAreas.each(function(){
- if($(this).hasClass("if-empty-col0")){
- if($(this).children().not("template").length == 0){
- let colSize = "";
- for(let col of BOOTSTRAP_COLS){
- if($(this).hasClass(col)){
- colSize = col;
- break;
- }
- }
-
- $(this).attr("data-original-col-size", colSize);
- $(this).removeClass(colSize);
- $(this).addClass("col-0");
- }
- }
- });
- }
-
- /**************************************************************************
- * 단축키 등록
- **************************************************************************/
- static registShortcutKey(){
- document.addEventListener('keydown', (event) => {
-
- var RESERVED_FUNCTION_KEYS = ["F1","F2","F3","F4","F6","F7","F8","F9","F10","F11","PageDown","PageUp"];
- var KEYS_FOR_GLOBAL = ["F9","F10","F11"];
-
- if(RESERVED_FUNCTION_KEYS.includes(event.key)){
-
- event.preventDefault();
-
- var activeBasckdropYn = FimsSupport.isActiveBackdrop();
-
- var curArea = FimsSupport.getCurrentAreaForShortcutKey();
-
- if(KEYS_FOR_GLOBAL.includes(event.key)){ //전역 기능
-
- if(event.key == "F9"){
- if($("#securityMode--top").is(":checked")){
- $("#securityMode--top").prop("checked", false);
- fn_securityModeToggle(false);
- } else {
- $("#securityMode--top").prop("checked", true);
- fn_securityModeToggle(true);
- }
-
- }
-
- if(event.key == "F10"){
- if($("#photoMask--top").is(":checked")){
- $("#photoMask--top").prop("checked", false);
- fn_photoMask(false);
- } else {
- $("#photoMask--top").prop("checked", true);
- fn_photoMask(true);
- }
-
- }
-
- if(!activeBasckdropYn){
- //TODO : do something
- }
-
- } else { //페이지별,다이얼로그별 버튼
-
- if(curArea != null){
-
- var targetButton = $(curArea).find("button.btn-"+event.key);
-
- if(targetButton.length == 1){
- targetButton.click();
- } else {
- if(targetButton.length > 1){
- debug('단축키 버튼 중복 : ' + targetButton.length + "개");
- }
- }
-
- }
-
- }
-
- return false;
- }
- });
- }
-
- //단축키 기능이 사용될 영역을 반환한다.
- static getCurrentAreaForShortcutKey(){
-
- if(FimsSupport.isActiveBackdrop()){
- return AppSupport.getLastOpenDialog();
- } else {
- return FimsSupport.getActiveRootTabArea();
- }
-
- return null;
- }
-
- //현재 활성화된 최상위 탭 영역을 반환한다.
- static getActiveRootTabArea(){
- return $("#main-tab-content").children(".active")[0];
- }
-
-
- //백드롭 영역 활성화 여부를 반환한다.
- static isActiveBackdrop(){
-
- if($("div.modal-backdrop").length < 1){
- return false;
- }
-
- var isActiveYn = false;
- $("div.modal-backdrop").each(function(){
- if($(this).hasClass("show")){
- isActiveYn = true;
- };
- });
-
- return isActiveYn;
- }
-
-
- /**
- * json객체 안의 jsonArray를 FormData형식의 키로 치환한다.
- * @return FormData형식의 키를 갖는 json
- */
- static fnJsonToFormData(originalJson, arrayName){
- if(originalJson[arrayName] == undefined){
- return originalJson;
- } else {
- var newObj = {};
-
- var array = originalJson[arrayName];
- for(var i=0; i"+progressContent+"",
- css: { backgroundColor: "lightgrey", padding : "10px" }
- });
- };
-
- eventSource.onerror = function(e) {
- $.unblockUI();
- };
-
- eventSource.onmessage = function(e) {
- if (e.data == 'FIN'){
- eventSource.close();
- $.unblockUI();
- } else {
- progressEvent(e.data);
- }
- };
- }
-}
-
-const SSE_SUBSCRIBE_URL = wctx.url("/subscribe.do");
-
-const BOOTSTRAP_COLS = [
- "col-1","col-2","col-3","col-4","col-5","col-6","col-7","col-8","col-9","col-10","col-11","col-12",
- "col-sm-1","col-sm-2","col-sm-3","col-sm-4","col-sm-5","col-sm-6","col-sm-7","col-sm-8","col-sm-9","col-sm-10","col-sm-11","col-sm-12",
- "col-md-1","col-md-2","col-md-3","col-md-4","col-md-5","col-md-6","col-md-7","col-md-8","col-md-9","col-md-10","col-md-11","col-md-12",
- "col-lg-1","col-lg-2","col-lg-3","col-lg-4","col-lg-5","col-lg-6","col-lg-7","col-lg-8","col-lg-9","col-lg-10","col-lg-11","col-lg-12",
- "col-xl-1","col-xl-2","col-xl-3","col-xl-4","col-xl-5","col-xl-6","col-xl-7","col-xl-8","col-xl-9","col-xl-10","col-xl-11","col-xl-12",
- "col-xxl-1","col-xxl-2","col-xxl-3","col-xxl-4","col-xxl-5","col-xxl-6","col-xxl-7","col-xxl-8","col-xxl-9","col-xxl-10","col-xxl-11","col-xxl-12"
-];
-
-
-/**************************************************************************
-* FimsPagingSupport
-**************************************************************************/
-class FimsPagingSupport extends PagingSupport {
- constructor(conf) {
- if(conf.ctrl == null){
- conf.ctrl = new DatasetControl({});
- }
- super(conf);
-
- if(conf.doq != null){
- this._doq = conf.doq;
- }
- }
-
- setPagingInfo(option) {
-
- let pagination = {};
- let List;
- let Paging;
- if(this.prefix == null || this.prefix == ""){
- let c = this.linkContainer;
- pagination.prefix = c.substr(7, c.length-15);
- List = "List";
- Paging = "Paging";
- } else {
- pagination.prefix = this.prefix;
- List = pagination.prefix+"List";
- Paging = pagination.prefix+"Paging";
- }
-
- let dl = 0;
- if(option && option[List]) {
- dl = option[List].length;
- }
-
- let s = 0;
- let ts = 0;
- if(option && option[Paging] && option[Paging].start) {
- s = option[Paging].start;
- }
- if(option && option[Paging] && option[Paging].totalSize) {
- ts = option[Paging].totalSize;
- }
- pagination.totalSize = ts;
- pagination.dataLength = s + dl;
-
- $(this.doq.selector(this.linkContainer)).setPagingInfo(pagination);
- }
-}
-
-function newFimsPagingSupport(conf){
- return new FimsPagingSupport(conf);
-}
\ No newline at end of file
diff --git a/src/main/resources/js/fims/ogdp/ogdp01010.js b/src/main/resources/js/fims/ogdp/ogdp01010.js
deleted file mode 100644
index e69de29b..00000000
diff --git a/src/main/resources/js/fims/ogdp/ogdp02010.js b/src/main/resources/js/fims/ogdp/ogdp02010.js
deleted file mode 100644
index 0606aa54..00000000
--- a/src/main/resources/js/fims/ogdp/ogdp02010.js
+++ /dev/null
@@ -1,16 +0,0 @@
-function newOgdp02020Control(page, doctx = ""){
- page.ctrl = new DatasetControl({
- dataGetter : obj => obj["List"],
- appendData:true,
- keys : ["DEPT_CD"],
- urls : {
- load : wctx.url("/ogdp/getDeptStngList.do"),
- getInfo : wctx.url("/ogdp/getDeptStngInfo.do")
- },
- formats: {
- REG_DT : datetimeFormat,
- MDFCN_DT : datetimeFormat
- }
- });
- return page.ctrl;
-}
\ No newline at end of file
diff --git a/src/main/resources/js/fims/ogdp/ogdp02020.js b/src/main/resources/js/fims/ogdp/ogdp02020.js
deleted file mode 100644
index ab54128e..00000000
--- a/src/main/resources/js/fims/ogdp/ogdp02020.js
+++ /dev/null
@@ -1,13 +0,0 @@
-function newOgdp02010Control(page, doctx = ""){
- page.ctrl = new DatasetControl({
- dataGetter : obj => obj["List"], appendData : true,
- keymapper : info => info ? info.DEPT_CD : "",
- urls : {
- update : wctx.url("/ogdp/updateDeptStng.do")
- },
- formats: {
-
- }
- });
- return page.ctrl;
-}
\ No newline at end of file