From 20c881530fb78ebcdb89373fab0b0cdf63798105 Mon Sep 17 00:00:00 2001 From: kuhan Date: Thu, 29 Dec 2022 18:47:04 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B3=A0=EA=B0=9D=EC=B6=94=EA=B0=80=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ns/mobile/website/biz/dto/BaseDto.java | 59 +---- .../mobile/website/biz/dto/FileUploadDto.java | 39 --- .../ns/mobile/website/biz/dto/MenuDto.java | 41 +++ .../mobile/website/biz/dto/PhoneColorDto.java | 43 ---- .../website/biz/dto/PhoneDetailDto.java | 41 --- .../ns/mobile/website/biz/dto/PhoneDto.java | 52 ---- .../mobile/website/biz/dto/PhonePriceDto.java | 54 ---- .../mobile/website/biz/dto/SellUserDto.java | 76 ------ .../mobile/website/biz/entity/BaseEntity.java | 20 -- .../mobile/website/biz/entity/FileUpload.java | 23 -- .../biz/entity/{PhoneColor.java => Menu.java} | 19 +- .../ns/mobile/website/biz/entity/Phone.java | 29 --- .../website/biz/entity/PhoneDetail.java | 21 -- .../mobile/website/biz/entity/PhonePrice.java | 23 -- .../mobile/website/biz/entity/SellUser.java | 34 --- .../website/biz/model/UploadFileModel.java | 43 ---- .../biz/repository/FileUploadRepository.java | 23 -- ...lorRepository.java => MenuRepository.java} | 6 +- .../biz/repository/PhoneDetailRepository.java | 13 - .../biz/repository/PhonePriceRepository.java | 15 -- .../biz/repository/PhoneRepository.java | 16 -- .../biz/repository/SellUserRepository.java | 40 --- .../website/biz/service/FileService.java | 105 -------- .../website/biz/service/MenuService.java | 10 + .../website/biz/service/PhoneService.java | 13 - .../website/biz/service/SellService.java | 16 -- .../biz/service/impl/MenuServiceImpl.java | 35 +++ .../biz/service/impl/PhoneServiceImpl.java | 80 ------ .../biz/service/impl/SellServiceImpl.java | 97 ------- .../mobile/website/common/util/ExcelUtil.java | 110 +------- .../web/controller/home/GuestController.java | 51 ++++ .../web/controller/home/HomeController.java | 11 +- .../home/api/ApiHomeController.java | 141 +++++----- .../web/interceptor/FrontInterceptor.java | 13 + src/main/resources/application-local.yml | 2 +- .../static/res/front/js/biz/home/detail.js | 242 ------------------ .../static/res/front/js/biz/home/index.js | 4 +- .../js/biz/home/{sell/list.js => sample.js} | 28 +- .../static/res/front/js/biz/home/sell/add.js | 102 -------- .../res/front/js/lib/bootstrap.bundle.min.js | 1 - src/main/webapp/WEB-INF/view/guest/add.jsp | 179 +++++++++++++ src/main/webapp/WEB-INF/view/home/sample.jsp | 40 +++ .../WEB-INF/view/include/inc_body_sidebar.jsp | 16 +- .../view/include/sample/inc_body_footer.jsp | 9 + .../view/include/sample/inc_body_header.jsp | 27 ++ .../view/include/sample/inc_body_sidebar.jsp | 16 ++ .../WEB-INF/view/include/sample/inc_head.jsp | 19 ++ src/main/webapp/WEB-INF/view/index.jsp | 17 -- 48 files changed, 551 insertions(+), 1563 deletions(-) delete mode 100644 src/main/java/com/ns/mobile/website/biz/dto/FileUploadDto.java create mode 100644 src/main/java/com/ns/mobile/website/biz/dto/MenuDto.java delete mode 100644 src/main/java/com/ns/mobile/website/biz/dto/PhoneColorDto.java delete mode 100644 src/main/java/com/ns/mobile/website/biz/dto/PhoneDetailDto.java delete mode 100644 src/main/java/com/ns/mobile/website/biz/dto/PhoneDto.java delete mode 100644 src/main/java/com/ns/mobile/website/biz/dto/PhonePriceDto.java delete mode 100644 src/main/java/com/ns/mobile/website/biz/dto/SellUserDto.java delete mode 100644 src/main/java/com/ns/mobile/website/biz/entity/FileUpload.java rename src/main/java/com/ns/mobile/website/biz/entity/{PhoneColor.java => Menu.java} (57%) delete mode 100644 src/main/java/com/ns/mobile/website/biz/entity/Phone.java delete mode 100644 src/main/java/com/ns/mobile/website/biz/entity/PhoneDetail.java delete mode 100644 src/main/java/com/ns/mobile/website/biz/entity/PhonePrice.java delete mode 100644 src/main/java/com/ns/mobile/website/biz/entity/SellUser.java delete mode 100644 src/main/java/com/ns/mobile/website/biz/model/UploadFileModel.java delete mode 100644 src/main/java/com/ns/mobile/website/biz/repository/FileUploadRepository.java rename src/main/java/com/ns/mobile/website/biz/repository/{PhoneColorRepository.java => MenuRepository.java} (50%) delete mode 100644 src/main/java/com/ns/mobile/website/biz/repository/PhoneDetailRepository.java delete mode 100644 src/main/java/com/ns/mobile/website/biz/repository/PhonePriceRepository.java delete mode 100644 src/main/java/com/ns/mobile/website/biz/repository/PhoneRepository.java delete mode 100644 src/main/java/com/ns/mobile/website/biz/repository/SellUserRepository.java delete mode 100644 src/main/java/com/ns/mobile/website/biz/service/FileService.java create mode 100644 src/main/java/com/ns/mobile/website/biz/service/MenuService.java delete mode 100644 src/main/java/com/ns/mobile/website/biz/service/PhoneService.java delete mode 100644 src/main/java/com/ns/mobile/website/biz/service/SellService.java create mode 100644 src/main/java/com/ns/mobile/website/biz/service/impl/MenuServiceImpl.java delete mode 100644 src/main/java/com/ns/mobile/website/biz/service/impl/PhoneServiceImpl.java delete mode 100644 src/main/java/com/ns/mobile/website/biz/service/impl/SellServiceImpl.java create mode 100644 src/main/java/com/ns/mobile/website/web/controller/home/GuestController.java delete mode 100644 src/main/resources/static/res/front/js/biz/home/detail.js rename src/main/resources/static/res/front/js/biz/home/{sell/list.js => sample.js} (52%) delete mode 100644 src/main/resources/static/res/front/js/biz/home/sell/add.js create mode 100644 src/main/webapp/WEB-INF/view/guest/add.jsp create mode 100644 src/main/webapp/WEB-INF/view/home/sample.jsp create mode 100644 src/main/webapp/WEB-INF/view/include/sample/inc_body_footer.jsp create mode 100644 src/main/webapp/WEB-INF/view/include/sample/inc_body_header.jsp create mode 100644 src/main/webapp/WEB-INF/view/include/sample/inc_body_sidebar.jsp create mode 100644 src/main/webapp/WEB-INF/view/include/sample/inc_head.jsp delete mode 100644 src/main/webapp/WEB-INF/view/index.jsp diff --git a/src/main/java/com/ns/mobile/website/biz/dto/BaseDto.java b/src/main/java/com/ns/mobile/website/biz/dto/BaseDto.java index 3900a6f..ed6a6bb 100644 --- a/src/main/java/com/ns/mobile/website/biz/dto/BaseDto.java +++ b/src/main/java/com/ns/mobile/website/biz/dto/BaseDto.java @@ -17,67 +17,14 @@ import java.time.LocalDateTime; @AllArgsConstructor @NoArgsConstructor public abstract class BaseDto { - - protected String sqlSelectType; - protected String sqlUpdateType; - @CreatedDate - private LocalDateTime regDt; - - @LastModifiedDate - private LocalDateTime udtDt; - - private LocalDateTime delDt; - - private long regUid; - private String regName; - private long udtUid; - private String udtName; - private long delUid; - private String delName; + private long id; private boolean delYn; public void base(BaseEntity base) { - this.regDt = base.getRegDt(); - this.regUid = base.getRegUid(); - this.udtDt = base.getUdtDt(); - this.udtUid = base.getUdtUid(); - this.delDt = base.getDelDt(); - this.delUid = base.getUdtUid(); + this.id = base.getId(); this.delYn = base.isDelYn(); } - public String getRegDtText() { - return DateUtils.toDateString(regDt); - } - - public String getRegDtTimeText() { - return DateUtils.toDateString(regDt, DateUtils.FORMAT_DEFAULT); - } - - public String getUdtDtText() { - return DateUtils.toDateString(udtDt); - } - - public String getUdtDtTimeText() { - return DateUtils.toDateString(udtDt, DateUtils.FORMAT_DEFAULT); - } - - public String getDelDtKorText() { - if(delDt!= null) { - return DateUtils.toDateString(delDt, DateUtils.FORMAT_YYYYMMDD_KOR); - } - else { - return DateUtils.toDateString(LocalDateTime.now(), DateUtils.FORMAT_YYYYMMDD_KOR); - } - } - - public String getDelDtNextWeekText() { - if(delDt!= null) { - return DateUtils.toDateString(delDt.plusDays(7), DateUtils.FORMAT_YYYYMMDD_KOR); - } - else { - return DateUtils.toDateString(LocalDateTime.now(), DateUtils.FORMAT_YYYYMMDD_KOR); - } - } + } \ No newline at end of file diff --git a/src/main/java/com/ns/mobile/website/biz/dto/FileUploadDto.java b/src/main/java/com/ns/mobile/website/biz/dto/FileUploadDto.java deleted file mode 100644 index f26caf3..0000000 --- a/src/main/java/com/ns/mobile/website/biz/dto/FileUploadDto.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.ns.mobile.website.biz.dto; - -import com.ns.mobile.website.biz.entity.FileUpload; -import com.ns.mobile.website.biz.entity.Phone; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; -import lombok.experimental.SuperBuilder; - -@EqualsAndHashCode(callSuper = true) -@SuperBuilder -@Data -@AllArgsConstructor -@NoArgsConstructor -public class FileUploadDto extends BaseDto{ - - long id; - String saveFileName; - String originalFileName; - String fileExtension; - String localPath; - - public static FileUploadDto of(FileUpload fileUpload) { - - FileUploadDto fileUploadDto = FileUploadDto.builder() - .id(fileUpload.getId()) - .saveFileName(fileUpload.getSaveFileName()) - .originalFileName(fileUpload.getOriginalFileName()) - .fileExtension(fileUpload.getFileExtension()) - .localPath(fileUpload.getLocalPath()) - .build(); - fileUploadDto.base(fileUpload); - - return fileUploadDto; - } - -} diff --git a/src/main/java/com/ns/mobile/website/biz/dto/MenuDto.java b/src/main/java/com/ns/mobile/website/biz/dto/MenuDto.java new file mode 100644 index 0000000..abc9e83 --- /dev/null +++ b/src/main/java/com/ns/mobile/website/biz/dto/MenuDto.java @@ -0,0 +1,41 @@ +package com.ns.mobile.website.biz.dto; + +import com.ns.mobile.website.biz.entity.Menu; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +@EqualsAndHashCode(callSuper = true) +@SuperBuilder +@Data +@AllArgsConstructor +@NoArgsConstructor +public class MenuDto extends BaseDto{ + + String name; + String url; + String auth; + String upprId; + String activeUrl; + int sort; + String menuIcon; + + public static MenuDto of(Menu menu) { + + MenuDto menuDto = MenuDto.builder() + .name(menu.getName()) + .url(menu.getUrl()) + .auth(menu.getAuth()) + .upprId(menu.getUpprId()) + .activeUrl(menu.getActiveUrl()) + .sort(menu.getSort()) + .menuIcon(menu.getMenuIcon()) + .build(); + menuDto.base(menu); + + return menuDto; + } +} diff --git a/src/main/java/com/ns/mobile/website/biz/dto/PhoneColorDto.java b/src/main/java/com/ns/mobile/website/biz/dto/PhoneColorDto.java deleted file mode 100644 index 47468c7..0000000 --- a/src/main/java/com/ns/mobile/website/biz/dto/PhoneColorDto.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.ns.mobile.website.biz.dto; - -import com.ns.mobile.website.biz.entity.PhoneColor; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; -import lombok.experimental.SuperBuilder; - -@EqualsAndHashCode(callSuper = true) -@SuperBuilder -@Data -@AllArgsConstructor -@NoArgsConstructor -public class PhoneColorDto extends BaseDto{ - long id; - long phoneId; - int sort; - String color; - String colorKr; - String colorEn; - String frontImg; - String sideImg; - String backImg; - - public static PhoneColorDto of(PhoneColor phoneColor) { - - PhoneColorDto phoneColorDto = PhoneColorDto.builder() - .id(phoneColor.getId()) - .phoneId(phoneColor.getPhoneId()) - .color(phoneColor.getColor()) - .colorKr(phoneColor.getColorKr()) - .colorEn(phoneColor.getColorEn()) - .frontImg(phoneColor.getFrontImg()) - .sideImg(phoneColor.getSideImg()) - .backImg(phoneColor.getBackImg()) - .build(); - phoneColorDto.base(phoneColor); - - return phoneColorDto; - } -} diff --git a/src/main/java/com/ns/mobile/website/biz/dto/PhoneDetailDto.java b/src/main/java/com/ns/mobile/website/biz/dto/PhoneDetailDto.java deleted file mode 100644 index 8c1b88a..0000000 --- a/src/main/java/com/ns/mobile/website/biz/dto/PhoneDetailDto.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.ns.mobile.website.biz.dto; - -import java.util.List; - -import com.ns.mobile.website.biz.entity.PhoneDetail; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; -import lombok.experimental.SuperBuilder; - -@EqualsAndHashCode(callSuper = true) -@SuperBuilder -@Data -@AllArgsConstructor -@NoArgsConstructor -public class PhoneDetailDto extends BaseDto{ - long id; - PhoneDto phoneDto; - List phoneColorDtoList; - List phonePriceDtoList; - long phoneId; - String detailPcImg; - String detailMobileImg; - - - public static PhoneDetailDto of(PhoneDetail phoneDetail) { - - PhoneDetailDto phoneDetailDto = PhoneDetailDto.builder() - .id(phoneDetail.getId()) - .phoneId(phoneDetail.getPhoneId()) - .detailPcImg(phoneDetail.getDetailPcImg()) - .detailMobileImg(phoneDetail.getDetailMobileImg()) - .build(); - - phoneDetailDto.base(phoneDetail); - - return phoneDetailDto; - } -} diff --git a/src/main/java/com/ns/mobile/website/biz/dto/PhoneDto.java b/src/main/java/com/ns/mobile/website/biz/dto/PhoneDto.java deleted file mode 100644 index c951d38..0000000 --- a/src/main/java/com/ns/mobile/website/biz/dto/PhoneDto.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.ns.mobile.website.biz.dto; - -import com.ns.mobile.website.biz.entity.Phone; -import com.ns.mobile.website.common.util.NumberUtils; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; -import lombok.experimental.SuperBuilder; - -@EqualsAndHashCode(callSuper = true) -@SuperBuilder -@Data -@AllArgsConstructor -@NoArgsConstructor -public class PhoneDto extends BaseDto{ - long id; - String title; - String titleEn; - String subTitle; - String producer; - String phoneType; - String titleImg; - boolean mdPick; - boolean hot; - boolean kt; - boolean skt; - boolean lgu; - PhonePriceDto phonePriceDto; - - public static PhoneDto of(Phone phone) { - - PhoneDto phoneDto = PhoneDto.builder() - .id(phone.getId()) - .title(phone.getTitle()) - .titleEn(phone.getTitleEn()) - .subTitle(phone.getSubTitle()) - .producer(phone.getProducer()) - .phoneType(phone.getPhoneType()) - .titleImg(phone.getTitleImg()) - .mdPick(phone.isMdPick()) - .hot(phone.isHot()) - .kt(phone.isKt()) - .skt(phone.isSkt()) - .lgu(phone.isLgu()) - .build(); - phoneDto.base(phone); - - return phoneDto; - } -} diff --git a/src/main/java/com/ns/mobile/website/biz/dto/PhonePriceDto.java b/src/main/java/com/ns/mobile/website/biz/dto/PhonePriceDto.java deleted file mode 100644 index 19bc34f..0000000 --- a/src/main/java/com/ns/mobile/website/biz/dto/PhonePriceDto.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.ns.mobile.website.biz.dto; - -import com.ns.mobile.website.biz.entity.PhonePrice; -import com.ns.mobile.website.common.util.NumberUtils; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; -import lombok.experimental.SuperBuilder; - -@EqualsAndHashCode(callSuper = true) -@SuperBuilder -@Data -@AllArgsConstructor -@NoArgsConstructor -public class PhonePriceDto extends BaseDto{ - long id; - long phoneId; - int storage; - long releasePrice; - long yogum; - long dcYogum; - long dcDanmal; - - public String getReleasePriceTerminalAndCommunicationToComma() { - return NumberUtils.toComma((releasePrice/24)+(66750)); - } - public String getReleasePriceTerminalToComma() { - return NumberUtils.toComma(releasePrice/24); - } - public String getReleasePriceToComma() { - return NumberUtils.toComma(releasePrice); - } - public String getStorageString() { - return Integer.toString(storage) + "GB"; - } - - public static PhonePriceDto of(PhonePrice phonePrice) { - - PhonePriceDto phonePriceDto = PhonePriceDto.builder() - .id(phonePrice.getId()) - .phoneId(phonePrice.getPhoneId()) - .storage(phonePrice.getStorage()) - .releasePrice(phonePrice.getReleasePrice()) - .yogum(phonePrice.getYogum()) - .dcYogum(phonePrice.getDcYogum()) - .dcDanmal(phonePrice.getDcDanmal()) - .build(); - phonePriceDto.base(phonePrice); - - return phonePriceDto; - } -} diff --git a/src/main/java/com/ns/mobile/website/biz/dto/SellUserDto.java b/src/main/java/com/ns/mobile/website/biz/dto/SellUserDto.java deleted file mode 100644 index e9dc744..0000000 --- a/src/main/java/com/ns/mobile/website/biz/dto/SellUserDto.java +++ /dev/null @@ -1,76 +0,0 @@ -package com.ns.mobile.website.biz.dto; - -import java.time.LocalDateTime; - -import com.ns.mobile.website.biz.entity.Phone; -import com.ns.mobile.website.biz.entity.SellUser; -import com.ns.mobile.website.common.util.DateUtils; -import com.ns.mobile.website.common.util.NumberUtils; -import com.ns.mobile.website.common.util.PhoneUtils; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; -import lombok.experimental.SuperBuilder; - -@EqualsAndHashCode(callSuper = true) -@SuperBuilder -@Data -@AllArgsConstructor -@NoArgsConstructor -public class SellUserDto extends BaseDto{ - - long id; - LocalDateTime openingDate; - String account; - String newsAgency; - String name; - String socialSecurityNumber; - String phoneNumber; - String customerType; - String legalRepresentativeName; - String legalRepresentativePhoneNumber; - int installmentMonth; - String petName; - String serialNumber; - String subscription; - long fileId; - - public static SellUserDto of(SellUser sellUser) { - - SellUserDto sellUserDto = SellUserDto.builder() - .id(sellUser.getId()) - .openingDate(sellUser.getOpeningDate()) - .account(sellUser.getAccount()) - .newsAgency(sellUser.getNewsAgency()) - .name(sellUser.getName()) - .socialSecurityNumber(sellUser.getSocialSecurityNumber()) - .phoneNumber(sellUser.getPhoneNumber()) - .customerType(sellUser.getCustomerType()) - .legalRepresentativeName(sellUser.getLegalRepresentativeName()) - .legalRepresentativePhoneNumber(sellUser.getLegalRepresentativePhoneNumber()) - .installmentMonth(sellUser.getInstallmentMonth()) - .petName(sellUser.getPetName()) - .serialNumber(sellUser.getSerialNumber()) - .subscription(sellUser.getSubscription()) - .fileId(sellUser.getFileId()) - .build(); - - sellUserDto.base(sellUser); - - return sellUserDto; - } - - public String getOpeningDateKor() { - return DateUtils.toDateString(openingDate, DateUtils.FORMAT_YYYYMMDD_KOR); - } - - public String getPhoneNumberText() { - return PhoneUtils.toString(phoneNumber); - } - - public String getLegalRepresentativePhoneNumberText() { - return PhoneUtils.toString(legalRepresentativePhoneNumber); - } -} diff --git a/src/main/java/com/ns/mobile/website/biz/entity/BaseEntity.java b/src/main/java/com/ns/mobile/website/biz/entity/BaseEntity.java index 0c24a6a..3ef3b8c 100644 --- a/src/main/java/com/ns/mobile/website/biz/entity/BaseEntity.java +++ b/src/main/java/com/ns/mobile/website/biz/entity/BaseEntity.java @@ -20,26 +20,6 @@ public abstract class BaseEntity { @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; - @CreationTimestamp - @Column - private LocalDateTime regDt; - - @UpdateTimestamp - @Column - private LocalDateTime udtDt; - - @Column - private LocalDateTime delDt; - - @Column - private long regUid; - - @Column - private long udtUid; - - @Column - private long delUid; - @Column private boolean delYn; diff --git a/src/main/java/com/ns/mobile/website/biz/entity/FileUpload.java b/src/main/java/com/ns/mobile/website/biz/entity/FileUpload.java deleted file mode 100644 index d39b00b..0000000 --- a/src/main/java/com/ns/mobile/website/biz/entity/FileUpload.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.ns.mobile.website.biz.entity; - -import javax.persistence.Entity; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.experimental.SuperBuilder; - -@Data -@Entity -@SuperBuilder -@NoArgsConstructor -@AllArgsConstructor -public class FileUpload extends BaseEntity { - - long id; - String saveFileName; - String originalFileName; - String fileExtension; - String localPath; - -} diff --git a/src/main/java/com/ns/mobile/website/biz/entity/PhoneColor.java b/src/main/java/com/ns/mobile/website/biz/entity/Menu.java similarity index 57% rename from src/main/java/com/ns/mobile/website/biz/entity/PhoneColor.java rename to src/main/java/com/ns/mobile/website/biz/entity/Menu.java index 699c6a3..87295e5 100644 --- a/src/main/java/com/ns/mobile/website/biz/entity/PhoneColor.java +++ b/src/main/java/com/ns/mobile/website/biz/entity/Menu.java @@ -12,15 +12,14 @@ import lombok.experimental.SuperBuilder; @SuperBuilder @NoArgsConstructor @AllArgsConstructor -public class PhoneColor extends BaseEntity{ - long id; - long phoneId; - int sort; - String color; - String colorKr; - String colorEn; - String frontImg; - String sideImg; - String backImg; +public class Menu extends BaseEntity{ + + private String name; + private String url; + private String auth; + private String upprId; + private String activeUrl; + private int sort; + private String menuIcon; } diff --git a/src/main/java/com/ns/mobile/website/biz/entity/Phone.java b/src/main/java/com/ns/mobile/website/biz/entity/Phone.java deleted file mode 100644 index ae18185..0000000 --- a/src/main/java/com/ns/mobile/website/biz/entity/Phone.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.ns.mobile.website.biz.entity; - -import javax.persistence.Entity; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.experimental.SuperBuilder; - -@Data -@Entity -@SuperBuilder -@NoArgsConstructor -@AllArgsConstructor -public class Phone extends BaseEntity{ - long id; - String title; - String titleEn; - String subTitle; - String producer; - String phoneType; - String titleImg; - boolean mdPick; - boolean hot; - boolean kt; - boolean skt; - boolean lgu; - -} diff --git a/src/main/java/com/ns/mobile/website/biz/entity/PhoneDetail.java b/src/main/java/com/ns/mobile/website/biz/entity/PhoneDetail.java deleted file mode 100644 index fd93745..0000000 --- a/src/main/java/com/ns/mobile/website/biz/entity/PhoneDetail.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.ns.mobile.website.biz.entity; - -import javax.persistence.Entity; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.experimental.SuperBuilder; - -@Data -@Entity -@SuperBuilder -@NoArgsConstructor -@AllArgsConstructor -public class PhoneDetail extends BaseEntity{ - long id; - long phoneId; - String detailPcImg; - String detailMobileImg; - -} diff --git a/src/main/java/com/ns/mobile/website/biz/entity/PhonePrice.java b/src/main/java/com/ns/mobile/website/biz/entity/PhonePrice.java deleted file mode 100644 index 3012a23..0000000 --- a/src/main/java/com/ns/mobile/website/biz/entity/PhonePrice.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.ns.mobile.website.biz.entity; - -import javax.persistence.Entity; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.experimental.SuperBuilder; - -@Data -@Entity -@SuperBuilder -@NoArgsConstructor -@AllArgsConstructor -public class PhonePrice extends BaseEntity{ - long id; - long phoneId; - int storage; - long releasePrice; - long yogum; - long dcYogum; - long dcDanmal; -} diff --git a/src/main/java/com/ns/mobile/website/biz/entity/SellUser.java b/src/main/java/com/ns/mobile/website/biz/entity/SellUser.java deleted file mode 100644 index 6f6a4e3..0000000 --- a/src/main/java/com/ns/mobile/website/biz/entity/SellUser.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.ns.mobile.website.biz.entity; - -import java.time.LocalDateTime; - -import javax.persistence.Entity; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.experimental.SuperBuilder; - -@Data -@Entity -@SuperBuilder -@NoArgsConstructor -@AllArgsConstructor -public class SellUser extends BaseEntity{ - long id; - LocalDateTime openingDate; - String account; - String newsAgency; - String name; - String socialSecurityNumber; - String phoneNumber; - String customerType; - String legalRepresentativeName; - String legalRepresentativePhoneNumber; - int installmentMonth; - String petName; - String serialNumber; - String subscription; - long fileId; - -} diff --git a/src/main/java/com/ns/mobile/website/biz/model/UploadFileModel.java b/src/main/java/com/ns/mobile/website/biz/model/UploadFileModel.java deleted file mode 100644 index 62f6851..0000000 --- a/src/main/java/com/ns/mobile/website/biz/model/UploadFileModel.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.ns.mobile.website.biz.model; - -import com.ns.mobile.website.biz.entity.FileUpload; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - - -@Data -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class UploadFileModel { - - long id; - long length; - String originalFileName; - String fileExtension; - String saveFileName; - String uploadUrl; - String localPath; - String uuid; - - boolean result; - String message; - - public static UploadFileModel fail(String message) { - return UploadFileModel.builder().result(false).message(message).build(); - } - - public static FileUpload of(UploadFileModel uploadFileModel) { - - return FileUpload.builder() - .originalFileName(uploadFileModel.getOriginalFileName()) - .fileExtension(uploadFileModel.getFileExtension()) - .saveFileName(uploadFileModel.getSaveFileName()) - .localPath(uploadFileModel.getLocalPath()) - .build(); - } - -} diff --git a/src/main/java/com/ns/mobile/website/biz/repository/FileUploadRepository.java b/src/main/java/com/ns/mobile/website/biz/repository/FileUploadRepository.java deleted file mode 100644 index 797362a..0000000 --- a/src/main/java/com/ns/mobile/website/biz/repository/FileUploadRepository.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.ns.mobile.website.biz.repository; - -import java.util.List; -import java.util.Optional; - -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.Modifying; -import org.springframework.data.jpa.repository.Query; -import org.springframework.stereotype.Repository; -import org.springframework.transaction.annotation.Transactional; - -import com.ns.mobile.website.biz.dto.FileUploadDto; -import com.ns.mobile.website.biz.entity.FileUpload; - -@Repository -public interface FileUploadRepository extends JpaRepository { - Optional> findByDelYn(boolean delYn); - List findByDelYnOrderByIdDesc(boolean delYn); - @Transactional - @Modifying - @Query(value = "UPDATE file_upload SET del_yn = 1 WHERE id = :id", nativeQuery = true) - int updateDelYn(Long id); -} diff --git a/src/main/java/com/ns/mobile/website/biz/repository/PhoneColorRepository.java b/src/main/java/com/ns/mobile/website/biz/repository/MenuRepository.java similarity index 50% rename from src/main/java/com/ns/mobile/website/biz/repository/PhoneColorRepository.java rename to src/main/java/com/ns/mobile/website/biz/repository/MenuRepository.java index 7b1ed59..d1896b1 100644 --- a/src/main/java/com/ns/mobile/website/biz/repository/PhoneColorRepository.java +++ b/src/main/java/com/ns/mobile/website/biz/repository/MenuRepository.java @@ -6,9 +6,9 @@ import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; -import com.ns.mobile.website.biz.entity.PhoneColor; +import com.ns.mobile.website.biz.entity.Menu; @Repository -public interface PhoneColorRepository extends JpaRepository { - Optional> findByPhoneIdAndDelYnOrderBySort(long phoneId, boolean delYn); +public interface MenuRepository extends JpaRepository { + Optional> findByDelYnOrderBySort(boolean delYn); } diff --git a/src/main/java/com/ns/mobile/website/biz/repository/PhoneDetailRepository.java b/src/main/java/com/ns/mobile/website/biz/repository/PhoneDetailRepository.java deleted file mode 100644 index e563f38..0000000 --- a/src/main/java/com/ns/mobile/website/biz/repository/PhoneDetailRepository.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.ns.mobile.website.biz.repository; - -import java.util.Optional; - -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import com.ns.mobile.website.biz.entity.PhoneDetail; - -@Repository -public interface PhoneDetailRepository extends JpaRepository { - Optional findByPhoneIdAndDelYn(long phoneId, boolean delYn); -} diff --git a/src/main/java/com/ns/mobile/website/biz/repository/PhonePriceRepository.java b/src/main/java/com/ns/mobile/website/biz/repository/PhonePriceRepository.java deleted file mode 100644 index cd96432..0000000 --- a/src/main/java/com/ns/mobile/website/biz/repository/PhonePriceRepository.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.ns.mobile.website.biz.repository; - -import java.util.List; -import java.util.Optional; - -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import com.ns.mobile.website.biz.entity.PhonePrice; - -@Repository -public interface PhonePriceRepository extends JpaRepository { - Optional> findByPhoneIdAndDelYn(long phoneId, boolean delYn); - Optional findTop1ByPhoneIdAndDelYnOrderByReleasePrice(long phoneId, boolean delYn); -} diff --git a/src/main/java/com/ns/mobile/website/biz/repository/PhoneRepository.java b/src/main/java/com/ns/mobile/website/biz/repository/PhoneRepository.java deleted file mode 100644 index 5537c57..0000000 --- a/src/main/java/com/ns/mobile/website/biz/repository/PhoneRepository.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.ns.mobile.website.biz.repository; - -import java.util.List; -import java.util.Optional; - -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import com.ns.mobile.website.biz.entity.Phone; - -@Repository -public interface PhoneRepository extends JpaRepository { - Optional findByIdAndDelYn(long id, boolean delYn); - Optional> findByDelYn(boolean delYn); - Optional> findByProducerAndDelYn(String producer, boolean delYn); -} diff --git a/src/main/java/com/ns/mobile/website/biz/repository/SellUserRepository.java b/src/main/java/com/ns/mobile/website/biz/repository/SellUserRepository.java deleted file mode 100644 index fc7adc8..0000000 --- a/src/main/java/com/ns/mobile/website/biz/repository/SellUserRepository.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.ns.mobile.website.biz.repository; - -import java.util.List; -import java.util.Optional; - -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.Modifying; -import org.springframework.data.jpa.repository.Query; -import org.springframework.stereotype.Repository; -import org.springframework.transaction.annotation.Transactional; - -import com.ns.mobile.website.biz.entity.SellUser; - -@Repository -public interface SellUserRepository extends JpaRepository { - Optional> findByDelYn(boolean delYn); - Optional> findByAccountContainsAndDelYn(String account, boolean delYn); - Optional> findByNewsAgencyContainsAndDelYn(String newsAgency, boolean delYn); - Optional> findByNameContainsAndDelYn(String name, boolean delYn); - Optional> findByPhoneNumberContainsAndDelYn(String phoneNumber, boolean delYn); - Optional> findByCustomerTypeContainsAndDelYn(String customerType, boolean delYn); - Optional> findByPetNameContainsAndDelYn(String petName, boolean delYn); - Optional> findBySerialNumberContainsAndDelYn(String serialNumber, boolean delYn); - - @Query(value = "select * from sell_user " - + "where (account like concat('%',:account,'%') " - + "or news_agency like concat('%',:newsAgency,'%') " - + "or name like concat('%',:name,'%') " - + "or phone_number like concat('%',:phoneNumber,'%') " - + "or customer_type like concat('%',:customerType,'%') " - + "or pet_name like concat('%',:petName,'%') " - + "or serial_number like concat('%',:serialNumber,'%')) " - + "and del_yn = :delYn", nativeQuery = true) - Optional> findByAccountContainsOrNewsAgencyContainsOrNameContainsOrPhoneNumberContainsOrCustomerTypeContainsOrPetNameContainsOrSerialNumberContainsAndDelYn(String account, String newsAgency, String name, String phoneNumber, String customerType, String petName, String serialNumber, boolean delYn); - - @Transactional - @Modifying - @Query(value = "UPDATE sell_user SET del_yn = 1 WHERE file_id = :id", nativeQuery = true) - int updateDelYn(Long id); -} diff --git a/src/main/java/com/ns/mobile/website/biz/service/FileService.java b/src/main/java/com/ns/mobile/website/biz/service/FileService.java deleted file mode 100644 index 8056a7f..0000000 --- a/src/main/java/com/ns/mobile/website/biz/service/FileService.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.ns.mobile.website.biz.service; - -import java.io.File; -import java.io.FileOutputStream; - -import org.springframework.stereotype.Service; -import org.springframework.util.FileCopyUtils; -import org.springframework.web.multipart.MultipartFile; - -import com.ns.mobile.website.biz.entity.FileUpload; -import com.ns.mobile.website.biz.model.UploadFileModel; -import com.ns.mobile.website.biz.properties.FileUrlProperties; -import com.ns.mobile.website.common.util.DateUtils; -import com.ns.mobile.website.common.util.FileUtils; -import com.ns.mobile.website.common.util.StringUtils; - -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; - -@RequiredArgsConstructor -@Slf4j -@Service -public class FileService { - - private final FileUrlProperties fileUrlProperties; - - public UploadFileModel upload(MultipartFile file) { - - if (file == null) { - return UploadFileModel.fail("파일 정보가 존재하지 않습니다."); - } - - UploadFileModel uploadFileModel = null; - - try { - uploadFileModel = this._upload(file); - if (uploadFileModel == null || uploadFileModel.getSaveFileName().isEmpty()) { - return UploadFileModel.fail("파일 정보가 존재하지 않습니다."); - } - - } catch (Exception e) { - return UploadFileModel.fail(e.getMessage()); - } - - String uuid = StringUtils.getUuid(); - uploadFileModel.setUuid(uuid); - - FileUpload hireUploadFile = UploadFileModel.of(uploadFileModel); - - uploadFileModel.setResult(true); - uploadFileModel.setId(hireUploadFile.getId()); - - return uploadFileModel; - } - - private String getSaveLocalPath(String baseUploadLocation, String saveFilename) { - String currentYear = DateUtils.getCurrentYear(); - String currentMonth = DateUtils.getCurrentMonth(); - - return String.format("%s/%s/%s/%s", baseUploadLocation, currentYear, currentMonth, saveFilename); - } - - private String getUploadPath(String uploadPath, String saveFilename) { - String currentYear = DateUtils.getCurrentYear(); - String currentMonth = DateUtils.getCurrentMonth(); - - return String.format("%s/%s/%s/%s", uploadPath, currentYear, currentMonth, saveFilename); - } - - private UploadFileModel _upload(MultipartFile multipartFile) { - - try { - FileUtils.createUploadPath(fileUrlProperties.getBaseUploadLocation()); - - long length = multipartFile.getSize(); - String originalFilename = multipartFile.getOriginalFilename(); - String fileExtension = FileUtils.getFileExtension(originalFilename).toLowerCase(); - String saveFilename = String.format("%s.%s", StringUtils.getUuid(), fileExtension); - String localPath = getSaveLocalPath(fileUrlProperties.getBaseUploadLocation(), saveFilename); - String uploadUrl = getUploadPath(fileUrlProperties.getUploadPath(), saveFilename); - - File file = new File(localPath); - FileCopyUtils.copy(multipartFile.getInputStream(), new FileOutputStream(file)); - - file.setExecutable(true, false); - file.setReadable(true, false); - file.setWritable(true, false); - - return UploadFileModel.builder() - .length(length) - .originalFileName(originalFilename) - .fileExtension(fileExtension) - .saveFileName(saveFilename) - .uploadUrl(uploadUrl) - .localPath(localPath) - .build(); - - } catch (Exception e) { - log.error("error", e); - } - - return null; - } - -} diff --git a/src/main/java/com/ns/mobile/website/biz/service/MenuService.java b/src/main/java/com/ns/mobile/website/biz/service/MenuService.java new file mode 100644 index 0000000..a5e460a --- /dev/null +++ b/src/main/java/com/ns/mobile/website/biz/service/MenuService.java @@ -0,0 +1,10 @@ +package com.ns.mobile.website.biz.service; + +import java.util.List; + +import com.ns.mobile.website.biz.dto.MenuDto; + +public interface MenuService { + + public List getMenu(); +} diff --git a/src/main/java/com/ns/mobile/website/biz/service/PhoneService.java b/src/main/java/com/ns/mobile/website/biz/service/PhoneService.java deleted file mode 100644 index 5d5250c..0000000 --- a/src/main/java/com/ns/mobile/website/biz/service/PhoneService.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.ns.mobile.website.biz.service; - -import java.util.List; - -import com.ns.mobile.website.biz.dto.PhoneDetailDto; -import com.ns.mobile.website.biz.dto.PhoneDto; -import com.ns.mobile.website.biz.entity.Phone; - -public interface PhoneService { - List selectList(Phone parameter); - - PhoneDetailDto select(Phone parameter); -} diff --git a/src/main/java/com/ns/mobile/website/biz/service/SellService.java b/src/main/java/com/ns/mobile/website/biz/service/SellService.java deleted file mode 100644 index f7cfbf4..0000000 --- a/src/main/java/com/ns/mobile/website/biz/service/SellService.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.ns.mobile.website.biz.service; - -import java.util.List; - -import com.ns.mobile.website.biz.dto.FileUploadDto; -import com.ns.mobile.website.biz.dto.SellUserDto; -import com.ns.mobile.website.biz.entity.FileUpload; -import com.ns.mobile.website.biz.entity.SellUser; -import com.ns.mobile.website.biz.model.SearchData; - -public interface SellService { - List selectList(SearchData parameter); - List selectAddList(SearchData parameter); - boolean saveList(FileUpload fileUpload, List list); - boolean delFileUpload(FileUpload fileUpload); -} diff --git a/src/main/java/com/ns/mobile/website/biz/service/impl/MenuServiceImpl.java b/src/main/java/com/ns/mobile/website/biz/service/impl/MenuServiceImpl.java new file mode 100644 index 0000000..1f21da6 --- /dev/null +++ b/src/main/java/com/ns/mobile/website/biz/service/impl/MenuServiceImpl.java @@ -0,0 +1,35 @@ +package com.ns.mobile.website.biz.service.impl; + +import java.util.ArrayList; +import java.util.List; + +import org.springframework.stereotype.Service; + +import com.ns.mobile.website.biz.dto.MenuDto; +import com.ns.mobile.website.biz.entity.Menu; +import com.ns.mobile.website.biz.exception.BizApiException; +import com.ns.mobile.website.biz.repository.MenuRepository; +import com.ns.mobile.website.biz.service.MenuService; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@RequiredArgsConstructor +@Service +public class MenuServiceImpl implements MenuService{ + + private final MenuRepository menuRepository; + + @Override + public List getMenu() { + List menuList = menuRepository.findByDelYnOrderBySort(false).orElseThrow(() -> new BizApiException("메뉴 조회가 실패하였습니다.")); + List result = new ArrayList(); + menuList.forEach(e -> { + result.add(MenuDto.of(e)); + }); + return result; + } + + +} diff --git a/src/main/java/com/ns/mobile/website/biz/service/impl/PhoneServiceImpl.java b/src/main/java/com/ns/mobile/website/biz/service/impl/PhoneServiceImpl.java deleted file mode 100644 index 42d7c11..0000000 --- a/src/main/java/com/ns/mobile/website/biz/service/impl/PhoneServiceImpl.java +++ /dev/null @@ -1,80 +0,0 @@ -package com.ns.mobile.website.biz.service.impl; - -import java.util.ArrayList; -import java.util.List; - -import org.springframework.stereotype.Service; - -import com.ns.mobile.website.biz.dto.PhoneColorDto; -import com.ns.mobile.website.biz.dto.PhoneDetailDto; -import com.ns.mobile.website.biz.dto.PhoneDto; -import com.ns.mobile.website.biz.dto.PhonePriceDto; -import com.ns.mobile.website.biz.entity.Phone; -import com.ns.mobile.website.biz.entity.PhoneColor; -import com.ns.mobile.website.biz.entity.PhoneDetail; -import com.ns.mobile.website.biz.entity.PhonePrice; -import com.ns.mobile.website.biz.exception.BizException; -import com.ns.mobile.website.biz.repository.PhoneColorRepository; -import com.ns.mobile.website.biz.repository.PhoneDetailRepository; -import com.ns.mobile.website.biz.repository.PhonePriceRepository; -import com.ns.mobile.website.biz.repository.PhoneRepository; -import com.ns.mobile.website.biz.service.PhoneService; - -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import util.SU; - -@Slf4j -@RequiredArgsConstructor -@Service -public class PhoneServiceImpl implements PhoneService{ - - private final PhoneRepository phoneRepository; - private final PhoneDetailRepository phoneDetailRepository; - private final PhoneColorRepository phoneColorRepository; - private final PhonePriceRepository phonePriceRepository; - @Override - public List selectList(Phone parameter) { - List phoneList = null; - if(SU.emt(parameter.getProducer())) { - phoneList = phoneRepository.findByDelYn(false).orElseThrow(()-> new BizException("")); - }else { - phoneList = phoneRepository.findByProducerAndDelYn(parameter.getProducer(),false).orElseThrow(()-> new BizException("")); - } - List resultList = new ArrayList(); - for(Phone e : phoneList) { - PhoneDto temp = PhoneDto.of(e); - temp.setPhonePriceDto(PhonePriceDto.of(phonePriceRepository.findTop1ByPhoneIdAndDelYnOrderByReleasePrice(e.getId(), false).orElseThrow(()-> new BizException("")))); - resultList.add(temp); - } - return resultList; - } - - @Override - public PhoneDetailDto select(Phone parameter) { - Phone phone = phoneRepository.findByIdAndDelYn(parameter.getId(), false).orElseThrow(()-> new BizException("")); - PhoneDto phoneDto = PhoneDto.of(phone); - - List phonePriceList = phonePriceRepository.findByPhoneIdAndDelYn(phone.getId(), false).orElseThrow(()-> new BizException("")); - List phonPriceDtoList = new ArrayList(); - for(PhonePrice e : phonePriceList) { - phonPriceDtoList.add(PhonePriceDto.of(e)); - } - - List phoneColorList = phoneColorRepository.findByPhoneIdAndDelYnOrderBySort(phone.getId(), false).orElseThrow(()-> new BizException("")); - List phonColorDtoList = new ArrayList(); - for(PhoneColor e : phoneColorList) { - phonColorDtoList.add(PhoneColorDto.of(e)); - } - - PhoneDetail phoneDetail = phoneDetailRepository.findByPhoneIdAndDelYn(phone.getId(), false).orElseThrow(()-> new BizException("")); - PhoneDetailDto result = PhoneDetailDto.of(phoneDetail); - - result.setPhoneDto(phoneDto); - result.setPhonePriceDtoList(phonPriceDtoList); - result.setPhoneColorDtoList(phonColorDtoList); - - return result; - } - -} diff --git a/src/main/java/com/ns/mobile/website/biz/service/impl/SellServiceImpl.java b/src/main/java/com/ns/mobile/website/biz/service/impl/SellServiceImpl.java deleted file mode 100644 index 3670004..0000000 --- a/src/main/java/com/ns/mobile/website/biz/service/impl/SellServiceImpl.java +++ /dev/null @@ -1,97 +0,0 @@ -package com.ns.mobile.website.biz.service.impl; - -import java.util.ArrayList; -import java.util.List; - -import javax.transaction.Transactional; - -import org.springframework.data.domain.Sort; -import org.springframework.stereotype.Service; - -import com.ns.mobile.website.biz.dto.FileUploadDto; -import com.ns.mobile.website.biz.dto.SellUserDto; -import com.ns.mobile.website.biz.entity.FileUpload; -import com.ns.mobile.website.biz.entity.SellUser; -import com.ns.mobile.website.biz.exception.BizApiException; -import com.ns.mobile.website.biz.model.SearchData; -import com.ns.mobile.website.biz.repository.FileUploadRepository; -import com.ns.mobile.website.biz.repository.SellUserRepository; -import com.ns.mobile.website.biz.service.SellService; - -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import util.SU; - -@Slf4j -@RequiredArgsConstructor -@Service -public class SellServiceImpl implements SellService{ - - private final SellUserRepository sellUserRepository; - private final FileUploadRepository fileUploadRepository; - @Override - public List selectList(SearchData parameter) { - List sellUserList; - if(SU.eq("account",parameter.getType())) { - sellUserList = sellUserRepository.findByAccountContainsAndDelYn(parameter.getText(), false).orElseThrow(() -> new BizApiException("없는 거래처명입니다.")); - }else if(SU.eq("newsAgency",parameter.getType())){ - sellUserList = sellUserRepository.findByNewsAgencyContainsAndDelYn(parameter.getText(), false).orElseThrow(() -> new BizApiException("없는 통신사명입니다")); - }else if(SU.eq("name",parameter.getType())){ - sellUserList = sellUserRepository.findByNameContainsAndDelYn(parameter.getText(), false).orElseThrow(() -> new BizApiException("없는 명의자 입니다")); - }else if(SU.eq("phoneNumber",parameter.getType())){ - sellUserList = sellUserRepository.findByPhoneNumberContainsAndDelYn(parameter.getText(), false).orElseThrow(() -> new BizApiException("없는 개통번호입니다")); - }else if(SU.eq("customerType",parameter.getType())){ - sellUserList = sellUserRepository.findByCustomerTypeContainsAndDelYn(parameter.getText(), false).orElseThrow(() -> new BizApiException("없는 고객종류입니다")); - }else if(SU.eq("petName",parameter.getType())){ - sellUserList = sellUserRepository.findByPetNameContainsAndDelYn(parameter.getText(), false).orElseThrow(() -> new BizApiException("없는 펫네임입니다")); - }else if(SU.eq("serialNumber",parameter.getType())){ - sellUserList = sellUserRepository.findBySerialNumberContainsAndDelYn(parameter.getText(), false).orElseThrow(() -> new BizApiException("없는 시리얼번호입니다")); - }else { - sellUserList = sellUserRepository.findByAccountContainsOrNewsAgencyContainsOrNameContainsOrPhoneNumberContainsOrCustomerTypeContainsOrPetNameContainsOrSerialNumberContainsAndDelYn(parameter.getText(),parameter.getText(),parameter.getText(),parameter.getText(),parameter.getText(),parameter.getText(),parameter.getText(), false).orElseThrow(() -> new BizApiException("없는 시리얼번호입니다")); - } - - List resultList = new ArrayList(); - for(SellUser e : sellUserList) { - SellUserDto temp = SellUserDto.of(e); - resultList.add(temp); - } - return resultList; - } - - @Override - public List selectAddList(SearchData parameter) { - List resultList = fileUploadRepository.findByDelYnOrderByIdDesc(false); - - return resultList; - } - - @Transactional - @Override - public boolean saveList(FileUpload fileUpload, List list) { - try { - fileUpload = fileUploadRepository.saveAndFlush(fileUpload); - for(SellUser e : list) { - e.setFileId(fileUpload.getId()); - } - sellUserRepository.saveAll(list); - }catch(Exception e) { - log.error(e.getMessage()); - return false; - } - return true; - } - - @Override - public boolean delFileUpload(FileUpload fileUpload) { - try { - fileUploadRepository.updateDelYn(fileUpload.getId()); - sellUserRepository.updateDelYn(fileUpload.getId()); - }catch(Exception e) { - log.error(e.getMessage()); - return false; - } - return true; - } - - -} diff --git a/src/main/java/com/ns/mobile/website/common/util/ExcelUtil.java b/src/main/java/com/ns/mobile/website/common/util/ExcelUtil.java index 7b0507f..d00e622 100644 --- a/src/main/java/com/ns/mobile/website/common/util/ExcelUtil.java +++ b/src/main/java/com/ns/mobile/website/common/util/ExcelUtil.java @@ -2,11 +2,6 @@ package com.ns.mobile.website.common.util; import java.io.File; import java.io.IOException; -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.ZoneId; -import java.util.ArrayList; -import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.List; @@ -15,17 +10,11 @@ import java.util.Map; import javax.servlet.http.HttpServletResponse; import org.apache.poi.ss.usermodel.Cell; -import org.apache.poi.ss.usermodel.CellType; -import org.apache.poi.ss.usermodel.DateUtil; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.WorkbookFactory; import org.apache.poi.xssf.streaming.SXSSFWorkbook; -import org.apache.poi.xssf.usermodel.XSSFWorkbookType; - -import com.ns.mobile.website.biz.entity.SellUser; -import com.ns.mobile.website.biz.repository.FileUploadRepository; import lombok.extern.slf4j.Slf4j; @@ -107,104 +96,7 @@ public class ExcelUtil { } return account; } - - public static List excelToSellList(String filePath, Map account) { - - //String localFilename = "/Users/parkkyutae/Downloads/회원목록_20201102140936.xlsx"; - File file = new File(filePath); - boolean stop = false; - List sellUserList = new ArrayList(); - try { - Workbook workbook = WorkbookFactory.create(file); - Sheet sheet = workbook.getSheetAt(2); - - Iterator rowItr = sheet.iterator(); - - while(rowItr.hasNext()) { - SellUser sellUser = new SellUser(); - Row row = rowItr.next(); - if(row.getRowNum() < 2) { - continue; - } - - Iterator cellItr = row.cellIterator(); - while(cellItr.hasNext()) { - Cell cell = cellItr.next(); - int index = cell.getColumnIndex(); - switch(index) { - case 5: - if(cell.getDateCellValue() == null) { - stop = true; - break; - } - sellUser.setOpeningDate((LocalDateTime)cell.getDateCellValue().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime()); - break; - case 6: - sellUser.setAccount((String) getCellValue(cell)); - break; - case 7: - sellUser.setNewsAgency(account.get(sellUser.getAccount())); - break; - case 8: - sellUser.setName((String) getCellValue(cell)); - break; - case 9: - if(cell.getCellType() == CellType.NUMERIC) - sellUser.setSocialSecurityNumber(String.format("%06d",(int)cell.getNumericCellValue())); - else - sellUser.setSocialSecurityNumber((String) cell.getStringCellValue()); - break; - case 10: - if(cell.getCellType() == CellType.NUMERIC) - sellUser.setPhoneNumber(String.format("%011d",(int)cell.getNumericCellValue())); - else - sellUser.setPhoneNumber(((String) cell.getStringCellValue()).replace("-", "")); - break; - case 11: - if(cell.getCellType() == CellType.NUMERIC) - sellUser.setCustomerType(String.format("%d",(int)cell.getNumericCellValue())); - else - sellUser.setCustomerType((String) cell.getStringCellValue()); - break; - case 12: - sellUser.setLegalRepresentativeName((String) cell.getStringCellValue()); - break; - case 13: - if(cell.getCellType() == CellType.NUMERIC) - sellUser.setLegalRepresentativePhoneNumber(String.format("%011d",(int)cell.getNumericCellValue())); - else - sellUser.setLegalRepresentativePhoneNumber(((String) cell.getStringCellValue()).replace("-", "")); - break; - case 14: - sellUser.setInstallmentMonth(((Double)cell.getNumericCellValue()).intValue()); - break; - case 15: - sellUser.setPetName((String) cell.getStringCellValue()); - break; - case 16: - if(cell.getCellType() == CellType.NUMERIC) - sellUser.setSerialNumber(String.format("%d",(int)cell.getNumericCellValue())); - else - sellUser.setSerialNumber((String) cell.getStringCellValue()); - break; - case 17: - sellUser.setSubscription((String) cell.getStringCellValue()); - break; - } - } - if(stop) - break; - sellUserList.add(sellUser); - } - - } catch (Exception e) { - String message = "[엑셀파일 로드 - Data ] 처리 중 DB오류가 발생하였습니다."; - log.error(message + " >> ", e); - } - - return sellUserList; - } - + private static Object getCellValue(Cell cell) { switch(cell.getCellType()) { case STRING: diff --git a/src/main/java/com/ns/mobile/website/web/controller/home/GuestController.java b/src/main/java/com/ns/mobile/website/web/controller/home/GuestController.java new file mode 100644 index 0000000..22fc102 --- /dev/null +++ b/src/main/java/com/ns/mobile/website/web/controller/home/GuestController.java @@ -0,0 +1,51 @@ +package com.ns.mobile.website.web.controller.home; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; + +import com.ns.mobile.website.web.auth.PublicAccess; +import com.ns.mobile.website.web.controller.BaseController; +import com.ns.mobile.website.web.properties.LaneduProperties; + +import lombok.RequiredArgsConstructor; + +@RequiredArgsConstructor +@Controller +public class GuestController extends BaseController { + + private final LaneduProperties laneduProperties; + + @PublicAccess + @RequestMapping(value = {"guest/add"}) + String home(Model model, HttpServletRequest request, HttpSession session + ) { + model.addAttribute("version", laneduProperties.getVersion()); + + return "guest/add"; + } + + +} + + + + + + + + + + + + + + + + + + + diff --git a/src/main/java/com/ns/mobile/website/web/controller/home/HomeController.java b/src/main/java/com/ns/mobile/website/web/controller/home/HomeController.java index 18f364c..c0f5ba2 100644 --- a/src/main/java/com/ns/mobile/website/web/controller/home/HomeController.java +++ b/src/main/java/com/ns/mobile/website/web/controller/home/HomeController.java @@ -5,10 +5,8 @@ import javax.servlet.http.HttpSession; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; -import com.ns.mobile.website.biz.service.PhoneService; import com.ns.mobile.website.web.auth.PublicAccess; import com.ns.mobile.website.web.controller.BaseController; import com.ns.mobile.website.web.properties.LaneduProperties; @@ -21,6 +19,14 @@ public class HomeController extends BaseController { private final LaneduProperties laneduProperties; + @PublicAccess + @RequestMapping(value = {"sample"}) + String sample(Model model, HttpServletRequest request, HttpSession session + ) { + model.addAttribute("version", laneduProperties.getVersion()); + + return "home/sample"; + } @PublicAccess @RequestMapping(value = {"home"}) @@ -31,6 +37,7 @@ public class HomeController extends BaseController { return "home/index"; } + } diff --git a/src/main/java/com/ns/mobile/website/web/controller/home/api/ApiHomeController.java b/src/main/java/com/ns/mobile/website/web/controller/home/api/ApiHomeController.java index 4a29d3e..659ddf1 100644 --- a/src/main/java/com/ns/mobile/website/web/controller/home/api/ApiHomeController.java +++ b/src/main/java/com/ns/mobile/website/web/controller/home/api/ApiHomeController.java @@ -1,34 +1,7 @@ package com.ns.mobile.website.web.controller.home.api; -import java.util.List; -import java.util.Map; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpSession; - -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.multipart.MultipartFile; -import com.ns.mobile.website.biz.dto.FileUploadDto; -import com.ns.mobile.website.biz.dto.PhoneDetailDto; -import com.ns.mobile.website.biz.dto.PhoneDto; -import com.ns.mobile.website.biz.dto.SellUserDto; -import com.ns.mobile.website.biz.entity.FileUpload; -import com.ns.mobile.website.biz.entity.Phone; -import com.ns.mobile.website.biz.entity.SellUser; -import com.ns.mobile.website.biz.model.ResponseData; -import com.ns.mobile.website.biz.model.ResponseResult; -import com.ns.mobile.website.biz.model.SearchData; -import com.ns.mobile.website.biz.model.UploadFileModel; -import com.ns.mobile.website.biz.service.FileService; -import com.ns.mobile.website.biz.service.PhoneService; -import com.ns.mobile.website.biz.service.SellService; -import com.ns.mobile.website.common.util.ExcelUtil; -import com.ns.mobile.website.web.auth.PublicAccess; import com.ns.mobile.website.web.controller.BaseController; import lombok.RequiredArgsConstructor; @@ -39,61 +12,61 @@ import lombok.extern.slf4j.Slf4j; @RestController public class ApiHomeController extends BaseController { - private final PhoneService phoneService; - private final SellService sellService; - private final FileService fileService; - - @PublicAccess - @PostMapping("/api/phone/list.api") - public ResponseEntity list(@RequestBody Phone parameter,HttpServletRequest request, HttpSession session){ - List result = phoneService.selectList(parameter); - return ResponseResult.success(result); - } - - @PublicAccess - @PostMapping("/api/phone/detail.api") - public ResponseEntity detail(@RequestBody Phone parameter,HttpServletRequest request, HttpSession session){ - PhoneDetailDto result = phoneService.select(parameter); - return ResponseResult.success(result); - } - - @PublicAccess - @PostMapping("/api/sell/list.api") - public ResponseEntity sellList(@RequestBody SearchData parameter,HttpServletRequest request, HttpSession session){ - List result = sellService.selectList(parameter); - return ResponseResult.success(result); - } - - @PublicAccess - @PostMapping("/api/sell/add/list.api") - public ResponseEntity addList(@RequestBody SearchData parameter,HttpServletRequest request, HttpSession session){ - List result = sellService.selectAddList(parameter); - return ResponseResult.success(result); - } - @PublicAccess - @PostMapping("/api/sell/del/upload.api") - public ResponseData delFileUpload(@RequestBody FileUpload parameter,HttpServletRequest request, HttpSession session){ - if(!sellService.delFileUpload(parameter)) { - return ResponseData.fail("실패"); - } - return ResponseData.success(); - } - - @ResponseBody - @PublicAccess - @PostMapping(value = {"/api/sell/add.api"}) - public ResponseData apiAttachExcelFile(MultipartFile attachFile) { - - UploadFileModel uploadFile = fileService.upload(attachFile); - if (!uploadFile.isResult()) { - return ResponseData.fail(uploadFile.getMessage()); - } - Map account = ExcelUtil.excelToAccountList(uploadFile.getLocalPath()); - List excelDataList = ExcelUtil.excelToSellList(uploadFile.getLocalPath(), account); - FileUpload fileUpload = UploadFileModel.of(uploadFile); - if(!sellService.saveList(fileUpload, excelDataList)) { - return ResponseData.fail("실패"); - } - return ResponseData.success(excelDataList); - } +// private final PhoneService phoneService; +// private final SellService sellService; +// private final FileService fileService; +// +// @PublicAccess +// @PostMapping("/api/phone/list.api") +// public ResponseEntity list(@RequestBody Phone parameter,HttpServletRequest request, HttpSession session){ +// List result = phoneService.selectList(parameter); +// return ResponseResult.success(result); +// } +// +// @PublicAccess +// @PostMapping("/api/phone/detail.api") +// public ResponseEntity detail(@RequestBody Phone parameter,HttpServletRequest request, HttpSession session){ +// PhoneDetailDto result = phoneService.select(parameter); +// return ResponseResult.success(result); +// } +// +// @PublicAccess +// @PostMapping("/api/sell/list.api") +// public ResponseEntity sellList(@RequestBody SearchData parameter,HttpServletRequest request, HttpSession session){ +// List result = sellService.selectList(parameter); +// return ResponseResult.success(result); +// } +// +// @PublicAccess +// @PostMapping("/api/sell/add/list.api") +// public ResponseEntity addList(@RequestBody SearchData parameter,HttpServletRequest request, HttpSession session){ +// List result = sellService.selectAddList(parameter); +// return ResponseResult.success(result); +// } +// @PublicAccess +// @PostMapping("/api/sell/del/upload.api") +// public ResponseData delFileUpload(@RequestBody FileUpload parameter,HttpServletRequest request, HttpSession session){ +// if(!sellService.delFileUpload(parameter)) { +// return ResponseData.fail("실패"); +// } +// return ResponseData.success(); +// } +// +// @ResponseBody +// @PublicAccess +// @PostMapping(value = {"/api/sell/add.api"}) +// public ResponseData apiAttachExcelFile(MultipartFile attachFile) { +// +// UploadFileModel uploadFile = fileService.upload(attachFile); +// if (!uploadFile.isResult()) { +// return ResponseData.fail(uploadFile.getMessage()); +// } +// Map account = ExcelUtil.excelToAccountList(uploadFile.getLocalPath()); +// List excelDataList = ExcelUtil.excelToSellList(uploadFile.getLocalPath(), account); +// FileUpload fileUpload = UploadFileModel.of(uploadFile); +// if(!sellService.saveList(fileUpload, excelDataList)) { +// return ResponseData.fail("실패"); +// } +// return ResponseData.success(excelDataList); +// } } diff --git a/src/main/java/com/ns/mobile/website/web/interceptor/FrontInterceptor.java b/src/main/java/com/ns/mobile/website/web/interceptor/FrontInterceptor.java index 2c8ce77..0113d3f 100644 --- a/src/main/java/com/ns/mobile/website/web/interceptor/FrontInterceptor.java +++ b/src/main/java/com/ns/mobile/website/web/interceptor/FrontInterceptor.java @@ -1,6 +1,7 @@ package com.ns.mobile.website.web.interceptor; import java.lang.reflect.Method; +import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -9,7 +10,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.env.Environment; import org.springframework.web.servlet.HandlerInterceptor; +import com.ns.mobile.website.biz.dto.MenuDto; import com.ns.mobile.website.biz.exception.NotLoginException; +import com.ns.mobile.website.biz.service.MenuService; import com.ns.mobile.website.common.util.AnnotationUtils; import com.ns.mobile.website.common.util.DateUtils; import com.ns.mobile.website.common.util.InterceptorUtils; @@ -23,6 +26,9 @@ public class FrontInterceptor implements HandlerInterceptor { @Autowired private Environment environment; + + @Autowired + private MenuService menuService; private String currentProfile() { String[] profiles = environment.getActiveProfiles(); @@ -65,8 +71,15 @@ public class FrontInterceptor implements HandlerInterceptor { if (!checkLogin(request, response, handler)) { throw new NotLoginException(); } + + setMenuList(request, response); return true; } + + private void setMenuList(HttpServletRequest request, HttpServletResponse response) { + List menuList = menuService.getMenu(); + request.setAttribute("menuList", menuList); + } } diff --git a/src/main/resources/application-local.yml b/src/main/resources/application-local.yml index 33adb85..8715cf4 100644 --- a/src/main/resources/application-local.yml +++ b/src/main/resources/application-local.yml @@ -1,7 +1,7 @@ spring: datasource: driver-class-name: org.mariadb.jdbc.Driver - url: jdbc:mariadb://119.70.122.80:13306/phonessayo?autoReconnect=true&useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Seoul + url: jdbc:mariadb://119.70.122.80:13306/erp?autoReconnect=true&useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Seoul username: kuhan password: Gnfkqhsh1! diff --git a/src/main/resources/static/res/front/js/biz/home/detail.js b/src/main/resources/static/res/front/js/biz/home/detail.js deleted file mode 100644 index cdac6da..0000000 --- a/src/main/resources/static/res/front/js/biz/home/detail.js +++ /dev/null @@ -1,242 +0,0 @@ -let appVue = new Vue({ - mixins: [MIXIN, PAGING], - el: '#vueApp', - data: { - siteId:'', - detail:{ - id: 0 - }, - phone:{}, - color:[{frontImg: '',backImg:'',sideImg:''}], - price:[{releasePrice: 0}], - selectPrice:{} - }, - mounted: function () { - this.init(); - }, - computed: {}, - methods: { - init: function () { - let $this = this; - $this.detail.id = $("#phoneId").val(); - $this.siteId = $("#siteId").val(); - $this.bindDetail(); - }, - bindDetail: function () { - let $this = this; - - let parameter = $this.detail; - nscompany.mobile.api.phone.detail(parameter, function (success, message, data) { - if (!success) { - alert(message); - return false; - } - $this.phone = data.phoneDto; - $this.color = data.phoneColorDtoList; - $this.price = data.phonePriceDtoList; - $this.selectPrice = data.phonePriceDtoList[0]; - $this.detail = data; - console.log(data); - }); - }, - onClickColor: function(e) { - $this = e.currentTarget; - innit2(); - // 슬라이드, 이벤트 타켓 가져오기 - console.log("클릭이벤트 실행"); - jQuery('.colors .circle').removeClass('active'); - jQuery($this).find('.circle').addClass('active'); - - var color_name = jQuery($this).find('p').text(); - jQuery('[name="model_color"]').val(color_name); - - // 슬라이드 이미지 교체 - var url = jQuery($this).attr('data-imgurl'); - var color_length = jQuery($this).attr('data-colorcnt'); - - - var top_slider = jQuery('#pd_Slider').find('.swiper-slide'); - var bot_slider = jQuery('#pd_thumbs').find('.swiper-slide'); - var idx1 = 0; - var idx2 = 0; - - for (var i = 1; i <= 3; i++) { - var attr_name = "data-img"+i; - var file_name = jQuery($this).attr(attr_name); - var img_url = url+file_name; - top_slider.eq(idx1).children('img').attr('src',img_url); - ++idx1; - } - - for (var i = 1; i <= 3; i++) { - var attr_name = "data-img"+i; - var file_name = jQuery($this).attr(attr_name); - var img_url = url+file_name; - bot_slider.eq(idx2).children('img').attr('src',img_url); - ++idx2; - } - - var stock_el = jQuery($this).find('span:first'); - console.log(stock_el); - var loop = +stock_el.attr('data-stockcnt'); - var stock_arr =[]; - console.log(stock_el); - // 값 가져오기 - for (var i = 1; i <= loop; i++) { - var data_name = "data-stock"+i; - var data_val = stock_el.attr(data_name); - if(data_val == "") { - stock_arr.push(false); - console.log("실행"); - } else { - stock_arr.push(true); - console.log("실행"); - } - } - - //select 업데이트하기 - var options = jQuery('#size_select option'); - console.log(stock_arr); - - for (var i = 1; i <= stock_arr.length; i++) { - console.log("selcte판매상태 루프"); - if(stock_arr[i-1] == true) {// 판매 - options.eq(i).prop('disabled',false); - options.eq(i).text(options.eq(i).attr('data-size')); - } else {// 품절 - options.eq(i).prop('disabled',true); - options.eq(i).text(options.eq(i).attr('data-size')+"(품절)"); - } - } - - selectState(true); - console.log("컬러별 재고 업데이트! 완료"); - $("#size_select").val(""); - - jQuery('#size_select').change(function() { - var index = $("#size_select option").index($("#size_select option:selected")); - - if(index == 0)index = 1; - appVue.selectPrice = appVue.price[index-1]; - - jQuery('[name="model_size"]').val(jQuery($this).find('option:selected').text()); - }); - jQuery('#size_select').change(get_discount_compare_values); - - - } // even eid - }//method end -}); - - var isView = false; - jQuery('.nav>ul>li').mouseenter(function() { - jQuery('.sub-menu').removeClass('view'); - jQuery(this).find('.sub-menu').addClass('view'); - isView = true; - }).mouseleave(function(event) { - jQuery(this).find('.sub-menu').removeClass('view'); - }); - - - var sub_count = jQuery('.sub-menu').length; - for (var i = 0; i < sub_count; i++) { - var children = jQuery('.sub-menu').eq(i).children().length; - var height = 38 * children; - jQuery('.sub-menu').eq(i).css('height', height); - jQuery('.nav>ul>li').eq(i).children('a').removeAttr('href'); - } - - var galleryThumbs = new Swiper('.gallery-thumbs', { - spaceBetween: 10, - slidesPerView: 3, - freeMode: true, - watchSlidesVisibility: true, - watchSlidesProgress: true, - }); - var galleryTop = new Swiper('.gallery-top', { - spaceBetween: 10, - navigation: { - nextEl: '.swiper-button-next', - prevEl: '.swiper-button-prev', - }, - thumbs: { - swiper: galleryThumbs, - }, - }); - - var isMobile_fix = false; - if (jQuery(window).innerWidth() <= 576) { - jQuery(window).scroll(function() { - var top = jQuery(this).scrollTop(); - console.log(top); - if (top >= 0 && isMobile_fix == false) { - isMobile_fix = true; - jQuery('header').addClass('scroll'); - jQuery('header').addClass('mobile') - jQuery('.usermenu-container').addClass('absol'); - jQuery('.usermenu-container').addClass('mobile'); - // console.log("스크롤함"); - } else if (top <= 0) { - isMobile_fix = false; - jQuery('header').removeClass('scroll'); - jQuery('header').removeClass('mobile') - jQuery('.usermenu-container').removeClass('absol'); - jQuery('.usermenu-container').removeClass('mobile'); - // console.log("맨위로 올라옴"); - } - }); - } - - jQuery(document).ready(function() { - jQuery(".phone_gogo_btn").on("click", function() { - var myNum = jQuery('.phone_gogo').val(); - if (myNum.length >= 6) { - jQuery.get("http://luckyphone.kr/wp-admin/admin-ajax.php", { - 'action': 'phone_action', - 'phone' : myNum - }, function(data) { - /*console.log(data);*/ - if (data) { - alert("인증번호가 전송 되었습니다."); - jQuery(".phone_hidden").val(data); - console.log(data); - } else { - alert("실패 하였습니다."); - console.log(data); - } - }); - } else { - alert("연락처를 적어주세요"); - } - }); - }); - - jQuery(document).ready(function() { - jQuery(".button_div input").on("click", function() { - var phone_hidden = jQuery(".phone_hidden").val(); - var phone_gogo = jQuery(".phone_gogo").val(); - var phone_hidden_length = phone_hidden.length; - var user_val = jQuery("#recive_num").val(); - console.log(phone_hidden_length); - - if(phone_hidden_length > 0 && phone_hidden == user_val){ - // return true; - alert("가입완료"); - return true; - }else{ - alert("인증번호를 확인 해주세요."); - return false; - } - - }); - }); - - // tabl script - jQuery('.tab-nav li').on('click',function(e){ - var idx = jQuery(this).attr('data-idx'); - jQuery('.tab-nav li button').removeClass('under-btn active'); - jQuery('.tab-nav li').eq(idx).children('button').addClass('under-btn active'); - console.log(idx); - jQuery('.tab-content').removeClass('active'); - jQuery('.tab-content').eq(idx).addClass('active'); - }); diff --git a/src/main/resources/static/res/front/js/biz/home/index.js b/src/main/resources/static/res/front/js/biz/home/index.js index 4c1c753..7362fa7 100644 --- a/src/main/resources/static/res/front/js/biz/home/index.js +++ b/src/main/resources/static/res/front/js/biz/home/index.js @@ -23,14 +23,14 @@ let appVue = new Vue({ let $this = this; let parameter = $this.detail; - nscompany.mobile.api.phone.list(parameter, function (success, message, data) { + /* nscompany.mobile.api.phone.list(parameter, function (success, message, data) { if (!success) { alert(message); return false; } $this.phoneList = data; - }); + });*/ }, producerChange: function (event){ let $this = this; diff --git a/src/main/resources/static/res/front/js/biz/home/sell/list.js b/src/main/resources/static/res/front/js/biz/home/sample.js similarity index 52% rename from src/main/resources/static/res/front/js/biz/home/sell/list.js rename to src/main/resources/static/res/front/js/biz/home/sample.js index a6cf148..4c1c753 100644 --- a/src/main/resources/static/res/front/js/biz/home/sell/list.js +++ b/src/main/resources/static/res/front/js/biz/home/sample.js @@ -2,11 +2,12 @@ let appVue = new Vue({ mixins: [MIXIN, PAGING], el: '#vueApp', data: { - sellUser:[], - search:{ - type:'', - text:'' - } + siteId:'', + phoneList:[], + detail:{ + producer: '', + priceType: 'terminal' + } }, mounted: function () { this.init(); @@ -15,22 +16,25 @@ let appVue = new Vue({ methods: { init: function () { let $this = this; - + $this.siteId = $("#siteId").val(); $this.bindDetail(); }, bindDetail: function () { let $this = this; - let parameter = $this.search; - nscompany.mobile.api.phone.sellList(parameter, function (success, message, data) { + let parameter = $this.detail; + nscompany.mobile.api.phone.list(parameter, function (success, message, data) { if (!success) { alert(message); return false; } - $this.sellUser = data; - console.log(data); + + $this.phoneList = data; }); + }, + producerChange: function (event){ + let $this = this; + $this.bindDetail(); } } -}); - +}); \ No newline at end of file diff --git a/src/main/resources/static/res/front/js/biz/home/sell/add.js b/src/main/resources/static/res/front/js/biz/home/sell/add.js deleted file mode 100644 index 7dc9f01..0000000 --- a/src/main/resources/static/res/front/js/biz/home/sell/add.js +++ /dev/null @@ -1,102 +0,0 @@ -let appVue = new Vue({ - mixins: [MIXIN, PAGING], - el: '#vueApp', - data: { - selectedFilename: '', - excelFile: null, - uploadExcelData: [], - uploadList:[] - }, - mounted: function () { - this.init(); - }, - computed: {}, - methods: { - init: function () { - let $this = this; - $this.bindList(); - }, - bindList: function () { - let $this = this; - - let parameter = {}; - nscompany.mobile.api.phone.addList(parameter, function (success, message, data) { - if (!success) { - alert(message); - return false; - } - $this.uploadList = data; - console.log(data); - }); - }, - actionFileUpload: function (file) { - let $this = this; - - let extension = (file.name.substring(file.name.lastIndexOf('.') + 1) || '').toLowerCase(); - - let formData = new FormData(); - formData.append('attachFile', file); - axios.post('/api/sell/add.api', formData).then(function (response) { - console.log(response); - response.data = response.data || {}; - response.data.body = response.data.body || []; - let jsonData = response.data.body; - - console.log('############### - FILE'); - console.log(jsonData); - - $this.uploadExcelData = jsonData; - - alert(file.name + " 등록이 완료되었습니다."); - location.reload(); - }).catch(function (error) { - console.log('error: ' + error.toString()); - alert('error: ' + error.toString()); - }); - }, - onChangeFileInput: function (fileUploadId) { - let $this = this; - - let value = document.getElementById(fileUploadId).value || ''; - if (value === '') { - return false; - } - - let file = document.getElementById(fileUploadId).files[0]; - //$this.actionFileUpload(file); - $this.excelFile = file; - $this.selectedFilename = $this.excelFile.name; - - console.log('##################### - 1'); - console.log($this.excelFile); - - }, - onClickExcelSave: function () { - let $this = this; - - if ($this.excelFile == null) { - alert(' 파일을 선택해 주세요. '); - return false; - } - - let $popup = $('#fileLayer'); - - $this.uploadExcelData = []; - $this.actionFileUpload($this.excelFile); - }, - deleteClick: function(id,name) { - let $this = this; - - let parameter = {id:id}; - nscompany.mobile.api.phone.delUpload(parameter, function (success, message, data) { - if (!success) { - alert(message); - return false; - } - alert(name + " 삭제 되었습니다."); - location.reload(); - }); - } - }//method end -}); - diff --git a/src/main/resources/static/res/front/js/lib/bootstrap.bundle.min.js b/src/main/resources/static/res/front/js/lib/bootstrap.bundle.min.js index 1d13886..f156d67 100644 --- a/src/main/resources/static/res/front/js/lib/bootstrap.bundle.min.js +++ b/src/main/resources/static/res/front/js/lib/bootstrap.bundle.min.js @@ -4,4 +4,3 @@ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) */ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e()}(this,(function(){"use strict";const t="transitionend",e=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i=`#${i.split("#")[1]}`),e=i&&"#"!==i?i.trim():null}return e},i=t=>{const i=e(t);return i&&document.querySelector(i)?i:null},n=t=>{const i=e(t);return i?document.querySelector(i):null},s=e=>{e.dispatchEvent(new Event(t))},o=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),r=t=>o(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(t):null,a=t=>{if(!o(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),i=t.closest("details:not([open])");if(!i)return e;if(i!==t){const e=t.closest("summary");if(e&&e.parentNode!==i)return!1;if(null===e)return!1}return e},l=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),c=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?c(t.parentNode):null},h=()=>{},d=t=>{t.offsetHeight},u=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,f=[],p=()=>"rtl"===document.documentElement.dir,g=t=>{var e;e=()=>{const e=u();if(e){const i=t.NAME,n=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=n,t.jQueryInterface)}},"loading"===document.readyState?(f.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of f)t()})),f.push(e)):e()},m=t=>{"function"==typeof t&&t()},_=(e,i,n=!0)=>{if(!n)return void m(e);const o=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(i);return n||s?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(i)+5;let r=!1;const a=({target:n})=>{n===i&&(r=!0,i.removeEventListener(t,a),m(e))};i.addEventListener(t,a),setTimeout((()=>{r||s(i)}),o)},b=(t,e,i,n)=>{const s=t.length;let o=t.indexOf(e);return-1===o?!i&&n?t[s-1]:t[0]:(o+=i?1:-1,n&&(o=(o+s)%s),t[Math.max(0,Math.min(o,s-1))])},v=/[^.]*(?=\..*)\.|.*/,y=/\..*/,w=/::\d+$/,A={};let E=1;const T={mouseenter:"mouseover",mouseleave:"mouseout"},C=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function O(t,e){return e&&`${e}::${E++}`||t.uidEvent||E++}function x(t){const e=O(t);return t.uidEvent=e,A[e]=A[e]||{},A[e]}function k(t,e,i=null){return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===i))}function L(t,e,i){const n="string"==typeof e,s=n?i:e||i;let o=N(t);return C.has(o)||(o=t),[n,s,o]}function D(t,e,i,n,s){if("string"!=typeof e||!t)return;let[o,r,a]=L(e,i,n);if(e in T){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};r=t(r)}const l=x(t),c=l[a]||(l[a]={}),h=k(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=O(r,e.replace(v,"")),u=o?function(t,e,i){return function n(s){const o=t.querySelectorAll(e);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(const a of o)if(a===r)return j(s,{delegateTarget:r}),n.oneOff&&P.off(t,s.type,e,i),i.apply(r,[s])}}(t,i,r):function(t,e){return function i(n){return j(n,{delegateTarget:t}),i.oneOff&&P.off(t,n.type,e),e.apply(t,[n])}}(t,r);u.delegationSelector=o?i:null,u.callable=r,u.oneOff=s,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function S(t,e,i,n,s){const o=k(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function I(t,e,i,n){const s=e[i]||{};for(const o of Object.keys(s))if(o.includes(n)){const n=s[o];S(t,e,i,n.callable,n.delegationSelector)}}function N(t){return t=t.replace(y,""),T[t]||t}const P={on(t,e,i,n){D(t,e,i,n,!1)},one(t,e,i,n){D(t,e,i,n,!0)},off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=L(e,i,n),a=r!==e,l=x(t),c=l[r]||{},h=e.startsWith(".");if(void 0===o){if(h)for(const i of Object.keys(l))I(t,l,i,e.slice(1));for(const i of Object.keys(c)){const n=i.replace(w,"");if(!a||e.includes(n)){const e=c[i];S(t,l,r,e.callable,e.delegationSelector)}}}else{if(!Object.keys(c).length)return;S(t,l,r,o,s?i:null)}},trigger(t,e,i){if("string"!=typeof e||!t)return null;const n=u();let s=null,o=!0,r=!0,a=!1;e!==N(e)&&n&&(s=n.Event(e,i),n(t).trigger(s),o=!s.isPropagationStopped(),r=!s.isImmediatePropagationStopped(),a=s.isDefaultPrevented());let l=new Event(e,{bubbles:o,cancelable:!0});return l=j(l,i),a&&l.preventDefault(),r&&t.dispatchEvent(l),l.defaultPrevented&&s&&s.preventDefault(),l}};function j(t,e){for(const[i,n]of Object.entries(e||{}))try{t[i]=n}catch(e){Object.defineProperty(t,i,{configurable:!0,get:()=>n})}return t}const M=new Map,H={set(t,e,i){M.has(t)||M.set(t,new Map);const n=M.get(t);n.has(e)||0===n.size?n.set(e,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`)},get:(t,e)=>M.has(t)&&M.get(t).get(e)||null,remove(t,e){if(!M.has(t))return;const i=M.get(t);i.delete(e),0===i.size&&M.delete(t)}};function $(t){if("true"===t)return!0;if("false"===t)return!1;if(t===Number(t).toString())return Number(t);if(""===t||"null"===t)return null;if("string"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch(e){return t}}function W(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const B={setDataAttribute(t,e,i){t.setAttribute(`data-bs-${W(e)}`,i)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${W(e)}`)},getDataAttributes(t){if(!t)return{};const e={},i=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const n of i){let i=n.replace(/^bs/,"");i=i.charAt(0).toLowerCase()+i.slice(1,i.length),e[i]=$(t.dataset[n])}return e},getDataAttribute:(t,e)=>$(t.getAttribute(`data-bs-${W(e)}`))};class F{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const i=o(e)?B.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof i?i:{},...o(e)?B.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(const n of Object.keys(e)){const s=e[n],r=t[n],a=o(r)?"element":null==(i=r)?`${i}`:Object.prototype.toString.call(i).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(s).test(a))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${a}" but expected type "${s}".`)}var i}}class z extends F{constructor(t,e){super(),(t=r(t))&&(this._element=t,this._config=this._getConfig(e),H.set(this._element,this.constructor.DATA_KEY,this))}dispose(){H.remove(this._element,this.constructor.DATA_KEY),P.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e,i=!0){_(t,e,i)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return H.get(r(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.2.2"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const q=(t,e="hide")=>{const i=`click.dismiss${t.EVENT_KEY}`,s=t.NAME;P.on(document,i,`[data-bs-dismiss="${s}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),l(this))return;const o=n(this)||this.closest(`.${s}`);t.getOrCreateInstance(o)[e]()}))};class R extends z{static get NAME(){return"alert"}close(){if(P.trigger(this._element,"close.bs.alert").defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback((()=>this._destroyElement()),this._element,t)}_destroyElement(){this._element.remove(),P.trigger(this._element,"closed.bs.alert"),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=R.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}q(R,"close"),g(R);const V='[data-bs-toggle="button"]';class K extends z{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=K.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}P.on(document,"click.bs.button.data-api",V,(t=>{t.preventDefault();const e=t.target.closest(V);K.getOrCreateInstance(e).toggle()})),g(K);const Q={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const i=[];let n=t.parentNode.closest(e);for(;n;)i.push(n),n=n.parentNode.closest(e);return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(",");return this.find(e,t).filter((t=>!l(t)&&a(t)))}},X={endCallback:null,leftCallback:null,rightCallback:null},Y={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class U extends F{constructor(t,e){super(),this._element=t,t&&U.isSupported()&&(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return X}static get DefaultType(){return Y}static get NAME(){return"swipe"}dispose(){P.off(this._element,".bs.swipe")}_start(t){this._supportPointerEvents?this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX):this._deltaX=t.touches[0].clientX}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),m(this._config.endCallback)}_move(t){this._deltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this._deltaX}_handleSwipe(){const t=Math.abs(this._deltaX);if(t<=40)return;const e=t/this._deltaX;this._deltaX=0,e&&m(e>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(P.on(this._element,"pointerdown.bs.swipe",(t=>this._start(t))),P.on(this._element,"pointerup.bs.swipe",(t=>this._end(t))),this._element.classList.add("pointer-event")):(P.on(this._element,"touchstart.bs.swipe",(t=>this._start(t))),P.on(this._element,"touchmove.bs.swipe",(t=>this._move(t))),P.on(this._element,"touchend.bs.swipe",(t=>this._end(t))))}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&("pen"===t.pointerType||"touch"===t.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const G="next",J="prev",Z="left",tt="right",et="slid.bs.carousel",it="carousel",nt="active",st={ArrowLeft:tt,ArrowRight:Z},ot={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},rt={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class at extends z{constructor(t,e){super(t,e),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=Q.findOne(".carousel-indicators",this._element),this._addEventListeners(),this._config.ride===it&&this.cycle()}static get Default(){return ot}static get DefaultType(){return rt}static get NAME(){return"carousel"}next(){this._slide(G)}nextWhenVisible(){!document.hidden&&a(this._element)&&this.next()}prev(){this._slide(J)}pause(){this._isSliding&&s(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval((()=>this.nextWhenVisible()),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?P.one(this._element,et,(()=>this.cycle())):this.cycle())}to(t){const e=this._getItems();if(t>e.length-1||t<0)return;if(this._isSliding)return void P.one(this._element,et,(()=>this.to(t)));const i=this._getItemIndex(this._getActive());if(i===t)return;const n=t>i?G:J;this._slide(n,e[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&P.on(this._element,"keydown.bs.carousel",(t=>this._keydown(t))),"hover"===this._config.pause&&(P.on(this._element,"mouseenter.bs.carousel",(()=>this.pause())),P.on(this._element,"mouseleave.bs.carousel",(()=>this._maybeEnableCycle()))),this._config.touch&&U.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const t of Q.find(".carousel-item img",this._element))P.on(t,"dragstart.bs.carousel",(t=>t.preventDefault()));const t={leftCallback:()=>this._slide(this._directionToOrder(Z)),rightCallback:()=>this._slide(this._directionToOrder(tt)),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((()=>this._maybeEnableCycle()),500+this._config.interval))}};this._swipeHelper=new U(this._element,t)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=st[t.key];e&&(t.preventDefault(),this._slide(this._directionToOrder(e)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){if(!this._indicatorsElement)return;const e=Q.findOne(".active",this._indicatorsElement);e.classList.remove(nt),e.removeAttribute("aria-current");const i=Q.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);i&&(i.classList.add(nt),i.setAttribute("aria-current","true"))}_updateInterval(){const t=this._activeElement||this._getActive();if(!t)return;const e=Number.parseInt(t.getAttribute("data-bs-interval"),10);this._config.interval=e||this._config.defaultInterval}_slide(t,e=null){if(this._isSliding)return;const i=this._getActive(),n=t===G,s=e||b(this._getItems(),i,n,this._config.wrap);if(s===i)return;const o=this._getItemIndex(s),r=e=>P.trigger(this._element,e,{relatedTarget:s,direction:this._orderToDirection(t),from:this._getItemIndex(i),to:o});if(r("slide.bs.carousel").defaultPrevented)return;if(!i||!s)return;const a=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=s;const l=n?"carousel-item-start":"carousel-item-end",c=n?"carousel-item-next":"carousel-item-prev";s.classList.add(c),d(s),i.classList.add(l),s.classList.add(l),this._queueCallback((()=>{s.classList.remove(l,c),s.classList.add(nt),i.classList.remove(nt,c,l),this._isSliding=!1,r(et)}),i,this._isAnimated()),a&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return Q.findOne(".active.carousel-item",this._element)}_getItems(){return Q.find(".carousel-item",this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return p()?t===Z?J:G:t===Z?G:J}_orderToDirection(t){return p()?t===J?Z:tt:t===J?tt:Z}static jQueryInterface(t){return this.each((function(){const e=at.getOrCreateInstance(this,t);if("number"!=typeof t){if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}else e.to(t)}))}}P.on(document,"click.bs.carousel.data-api","[data-bs-slide], [data-bs-slide-to]",(function(t){const e=n(this);if(!e||!e.classList.contains(it))return;t.preventDefault();const i=at.getOrCreateInstance(e),s=this.getAttribute("data-bs-slide-to");return s?(i.to(s),void i._maybeEnableCycle()):"next"===B.getDataAttribute(this,"slide")?(i.next(),void i._maybeEnableCycle()):(i.prev(),void i._maybeEnableCycle())})),P.on(window,"load.bs.carousel.data-api",(()=>{const t=Q.find('[data-bs-ride="carousel"]');for(const e of t)at.getOrCreateInstance(e)})),g(at);const lt="show",ct="collapse",ht="collapsing",dt='[data-bs-toggle="collapse"]',ut={parent:null,toggle:!0},ft={parent:"(null|element)",toggle:"boolean"};class pt extends z{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const n=Q.find(dt);for(const t of n){const e=i(t),n=Q.find(e).filter((t=>t===this._element));null!==e&&n.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return ut}static get DefaultType(){return ft}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>pt.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(P.trigger(this._element,"show.bs.collapse").defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(ct),this._element.classList.add(ht),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const i=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(ht),this._element.classList.add(ct,lt),this._element.style[e]="",P.trigger(this._element,"shown.bs.collapse")}),this._element,!0),this._element.style[e]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(P.trigger(this._element,"hide.bs.collapse").defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,d(this._element),this._element.classList.add(ht),this._element.classList.remove(ct,lt);for(const t of this._triggerArray){const e=n(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0,this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(ht),this._element.classList.add(ct),P.trigger(this._element,"hidden.bs.collapse")}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(lt)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=r(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(dt);for(const e of t){const t=n(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=Q.find(":scope .collapse .collapse",this._config.parent);return Q.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const i of t)i.classList.toggle("collapsed",!e),i.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const i=pt.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}}))}}P.on(document,"click.bs.collapse.data-api",dt,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();const e=i(this),n=Q.find(e);for(const t of n)pt.getOrCreateInstance(t,{toggle:!1}).toggle()})),g(pt);var gt="top",mt="bottom",_t="right",bt="left",vt="auto",yt=[gt,mt,_t,bt],wt="start",At="end",Et="clippingParents",Tt="viewport",Ct="popper",Ot="reference",xt=yt.reduce((function(t,e){return t.concat([e+"-"+wt,e+"-"+At])}),[]),kt=[].concat(yt,[vt]).reduce((function(t,e){return t.concat([e,e+"-"+wt,e+"-"+At])}),[]),Lt="beforeRead",Dt="read",St="afterRead",It="beforeMain",Nt="main",Pt="afterMain",jt="beforeWrite",Mt="write",Ht="afterWrite",$t=[Lt,Dt,St,It,Nt,Pt,jt,Mt,Ht];function Wt(t){return t?(t.nodeName||"").toLowerCase():null}function Bt(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function Ft(t){return t instanceof Bt(t).Element||t instanceof Element}function zt(t){return t instanceof Bt(t).HTMLElement||t instanceof HTMLElement}function qt(t){return"undefined"!=typeof ShadowRoot&&(t instanceof Bt(t).ShadowRoot||t instanceof ShadowRoot)}const Rt={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var i=e.styles[t]||{},n=e.attributes[t]||{},s=e.elements[t];zt(s)&&Wt(s)&&(Object.assign(s.style,i),Object.keys(n).forEach((function(t){var e=n[t];!1===e?s.removeAttribute(t):s.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,i={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach((function(t){var n=e.elements[t],s=e.attributes[t]||{},o=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:i[t]).reduce((function(t,e){return t[e]="",t}),{});zt(n)&&Wt(n)&&(Object.assign(n.style,o),Object.keys(s).forEach((function(t){n.removeAttribute(t)})))}))}},requires:["computeStyles"]};function Vt(t){return t.split("-")[0]}var Kt=Math.max,Qt=Math.min,Xt=Math.round;function Yt(){var t=navigator.userAgentData;return null!=t&&t.brands?t.brands.map((function(t){return t.brand+"/"+t.version})).join(" "):navigator.userAgent}function Ut(){return!/^((?!chrome|android).)*safari/i.test(Yt())}function Gt(t,e,i){void 0===e&&(e=!1),void 0===i&&(i=!1);var n=t.getBoundingClientRect(),s=1,o=1;e&&zt(t)&&(s=t.offsetWidth>0&&Xt(n.width)/t.offsetWidth||1,o=t.offsetHeight>0&&Xt(n.height)/t.offsetHeight||1);var r=(Ft(t)?Bt(t):window).visualViewport,a=!Ut()&&i,l=(n.left+(a&&r?r.offsetLeft:0))/s,c=(n.top+(a&&r?r.offsetTop:0))/o,h=n.width/s,d=n.height/o;return{width:h,height:d,top:c,right:l+h,bottom:c+d,left:l,x:l,y:c}}function Jt(t){var e=Gt(t),i=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:n}}function Zt(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&&qt(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function te(t){return Bt(t).getComputedStyle(t)}function ee(t){return["table","td","th"].indexOf(Wt(t))>=0}function ie(t){return((Ft(t)?t.ownerDocument:t.document)||window.document).documentElement}function ne(t){return"html"===Wt(t)?t:t.assignedSlot||t.parentNode||(qt(t)?t.host:null)||ie(t)}function se(t){return zt(t)&&"fixed"!==te(t).position?t.offsetParent:null}function oe(t){for(var e=Bt(t),i=se(t);i&&ee(i)&&"static"===te(i).position;)i=se(i);return i&&("html"===Wt(i)||"body"===Wt(i)&&"static"===te(i).position)?e:i||function(t){var e=/firefox/i.test(Yt());if(/Trident/i.test(Yt())&&zt(t)&&"fixed"===te(t).position)return null;var i=ne(t);for(qt(i)&&(i=i.host);zt(i)&&["html","body"].indexOf(Wt(i))<0;){var n=te(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||e&&"filter"===n.willChange||e&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(t)||e}function re(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function ae(t,e,i){return Kt(t,Qt(e,i))}function le(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function ce(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}const he={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,i=t.state,n=t.name,s=t.options,o=i.elements.arrow,r=i.modifiersData.popperOffsets,a=Vt(i.placement),l=re(a),c=[bt,_t].indexOf(a)>=0?"height":"width";if(o&&r){var h=function(t,e){return le("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:ce(t,yt))}(s.padding,i),d=Jt(o),u="y"===l?gt:bt,f="y"===l?mt:_t,p=i.rects.reference[c]+i.rects.reference[l]-r[l]-i.rects.popper[c],g=r[l]-i.rects.reference[l],m=oe(o),_=m?"y"===l?m.clientHeight||0:m.clientWidth||0:0,b=p/2-g/2,v=h[u],y=_-d[c]-h[f],w=_/2-d[c]/2+b,A=ae(v,w,y),E=l;i.modifiersData[n]=((e={})[E]=A,e.centerOffset=A-w,e)}},effect:function(t){var e=t.state,i=t.options.element,n=void 0===i?"[data-popper-arrow]":i;null!=n&&("string"!=typeof n||(n=e.elements.popper.querySelector(n)))&&Zt(e.elements.popper,n)&&(e.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function de(t){return t.split("-")[1]}var ue={top:"auto",right:"auto",bottom:"auto",left:"auto"};function fe(t){var e,i=t.popper,n=t.popperRect,s=t.placement,o=t.variation,r=t.offsets,a=t.position,l=t.gpuAcceleration,c=t.adaptive,h=t.roundOffsets,d=t.isFixed,u=r.x,f=void 0===u?0:u,p=r.y,g=void 0===p?0:p,m="function"==typeof h?h({x:f,y:g}):{x:f,y:g};f=m.x,g=m.y;var _=r.hasOwnProperty("x"),b=r.hasOwnProperty("y"),v=bt,y=gt,w=window;if(c){var A=oe(i),E="clientHeight",T="clientWidth";A===Bt(i)&&"static"!==te(A=ie(i)).position&&"absolute"===a&&(E="scrollHeight",T="scrollWidth"),(s===gt||(s===bt||s===_t)&&o===At)&&(y=mt,g-=(d&&A===w&&w.visualViewport?w.visualViewport.height:A[E])-n.height,g*=l?1:-1),s!==bt&&(s!==gt&&s!==mt||o!==At)||(v=_t,f-=(d&&A===w&&w.visualViewport?w.visualViewport.width:A[T])-n.width,f*=l?1:-1)}var C,O=Object.assign({position:a},c&&ue),x=!0===h?function(t){var e=t.x,i=t.y,n=window.devicePixelRatio||1;return{x:Xt(e*n)/n||0,y:Xt(i*n)/n||0}}({x:f,y:g}):{x:f,y:g};return f=x.x,g=x.y,l?Object.assign({},O,((C={})[y]=b?"0":"",C[v]=_?"0":"",C.transform=(w.devicePixelRatio||1)<=1?"translate("+f+"px, "+g+"px)":"translate3d("+f+"px, "+g+"px, 0)",C)):Object.assign({},O,((e={})[y]=b?g+"px":"",e[v]=_?f+"px":"",e.transform="",e))}const pe={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,i=t.options,n=i.gpuAcceleration,s=void 0===n||n,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:Vt(e.placement),variation:de(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,fe(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:r,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,fe(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}};var ge={passive:!0};const me={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,i=t.instance,n=t.options,s=n.scroll,o=void 0===s||s,r=n.resize,a=void 0===r||r,l=Bt(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",i.update,ge)})),a&&l.addEventListener("resize",i.update,ge),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",i.update,ge)})),a&&l.removeEventListener("resize",i.update,ge)}},data:{}};var _e={left:"right",right:"left",bottom:"top",top:"bottom"};function be(t){return t.replace(/left|right|bottom|top/g,(function(t){return _e[t]}))}var ve={start:"end",end:"start"};function ye(t){return t.replace(/start|end/g,(function(t){return ve[t]}))}function we(t){var e=Bt(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function Ae(t){return Gt(ie(t)).left+we(t).scrollLeft}function Ee(t){var e=te(t),i=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function Te(t){return["html","body","#document"].indexOf(Wt(t))>=0?t.ownerDocument.body:zt(t)&&Ee(t)?t:Te(ne(t))}function Ce(t,e){var i;void 0===e&&(e=[]);var n=Te(t),s=n===(null==(i=t.ownerDocument)?void 0:i.body),o=Bt(n),r=s?[o].concat(o.visualViewport||[],Ee(n)?n:[]):n,a=e.concat(r);return s?a:a.concat(Ce(ne(r)))}function Oe(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function xe(t,e,i){return e===Tt?Oe(function(t,e){var i=Bt(t),n=ie(t),s=i.visualViewport,o=n.clientWidth,r=n.clientHeight,a=0,l=0;if(s){o=s.width,r=s.height;var c=Ut();(c||!c&&"fixed"===e)&&(a=s.offsetLeft,l=s.offsetTop)}return{width:o,height:r,x:a+Ae(t),y:l}}(t,i)):Ft(e)?function(t,e){var i=Gt(t,!1,"fixed"===e);return i.top=i.top+t.clientTop,i.left=i.left+t.clientLeft,i.bottom=i.top+t.clientHeight,i.right=i.left+t.clientWidth,i.width=t.clientWidth,i.height=t.clientHeight,i.x=i.left,i.y=i.top,i}(e,i):Oe(function(t){var e,i=ie(t),n=we(t),s=null==(e=t.ownerDocument)?void 0:e.body,o=Kt(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=Kt(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+Ae(t),l=-n.scrollTop;return"rtl"===te(s||i).direction&&(a+=Kt(i.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(ie(t)))}function ke(t){var e,i=t.reference,n=t.element,s=t.placement,o=s?Vt(s):null,r=s?de(s):null,a=i.x+i.width/2-n.width/2,l=i.y+i.height/2-n.height/2;switch(o){case gt:e={x:a,y:i.y-n.height};break;case mt:e={x:a,y:i.y+i.height};break;case _t:e={x:i.x+i.width,y:l};break;case bt:e={x:i.x-n.width,y:l};break;default:e={x:i.x,y:i.y}}var c=o?re(o):null;if(null!=c){var h="y"===c?"height":"width";switch(r){case wt:e[c]=e[c]-(i[h]/2-n[h]/2);break;case At:e[c]=e[c]+(i[h]/2-n[h]/2)}}return e}function Le(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=void 0===n?t.placement:n,o=i.strategy,r=void 0===o?t.strategy:o,a=i.boundary,l=void 0===a?Et:a,c=i.rootBoundary,h=void 0===c?Tt:c,d=i.elementContext,u=void 0===d?Ct:d,f=i.altBoundary,p=void 0!==f&&f,g=i.padding,m=void 0===g?0:g,_=le("number"!=typeof m?m:ce(m,yt)),b=u===Ct?Ot:Ct,v=t.rects.popper,y=t.elements[p?b:u],w=function(t,e,i,n){var s="clippingParents"===e?function(t){var e=Ce(ne(t)),i=["absolute","fixed"].indexOf(te(t).position)>=0&&zt(t)?oe(t):t;return Ft(i)?e.filter((function(t){return Ft(t)&&Zt(t,i)&&"body"!==Wt(t)})):[]}(t):[].concat(e),o=[].concat(s,[i]),r=o[0],a=o.reduce((function(e,i){var s=xe(t,i,n);return e.top=Kt(s.top,e.top),e.right=Qt(s.right,e.right),e.bottom=Qt(s.bottom,e.bottom),e.left=Kt(s.left,e.left),e}),xe(t,r,n));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}(Ft(y)?y:y.contextElement||ie(t.elements.popper),l,h,r),A=Gt(t.elements.reference),E=ke({reference:A,element:v,strategy:"absolute",placement:s}),T=Oe(Object.assign({},v,E)),C=u===Ct?T:A,O={top:w.top-C.top+_.top,bottom:C.bottom-w.bottom+_.bottom,left:w.left-C.left+_.left,right:C.right-w.right+_.right},x=t.modifiersData.offset;if(u===Ct&&x){var k=x[s];Object.keys(O).forEach((function(t){var e=[_t,mt].indexOf(t)>=0?1:-1,i=[gt,mt].indexOf(t)>=0?"y":"x";O[t]+=k[i]*e}))}return O}function De(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,a=i.flipVariations,l=i.allowedAutoPlacements,c=void 0===l?kt:l,h=de(n),d=h?a?xt:xt.filter((function(t){return de(t)===h})):yt,u=d.filter((function(t){return c.indexOf(t)>=0}));0===u.length&&(u=d);var f=u.reduce((function(e,i){return e[i]=Le(t,{placement:i,boundary:s,rootBoundary:o,padding:r})[Vt(i)],e}),{});return Object.keys(f).sort((function(t,e){return f[t]-f[e]}))}const Se={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name;if(!e.modifiersData[n]._skip){for(var s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0===r||r,l=i.fallbackPlacements,c=i.padding,h=i.boundary,d=i.rootBoundary,u=i.altBoundary,f=i.flipVariations,p=void 0===f||f,g=i.allowedAutoPlacements,m=e.options.placement,_=Vt(m),b=l||(_!==m&&p?function(t){if(Vt(t)===vt)return[];var e=be(t);return[ye(t),e,ye(e)]}(m):[be(m)]),v=[m].concat(b).reduce((function(t,i){return t.concat(Vt(i)===vt?De(e,{placement:i,boundary:h,rootBoundary:d,padding:c,flipVariations:p,allowedAutoPlacements:g}):i)}),[]),y=e.rects.reference,w=e.rects.popper,A=new Map,E=!0,T=v[0],C=0;C=0,D=L?"width":"height",S=Le(e,{placement:O,boundary:h,rootBoundary:d,altBoundary:u,padding:c}),I=L?k?_t:bt:k?mt:gt;y[D]>w[D]&&(I=be(I));var N=be(I),P=[];if(o&&P.push(S[x]<=0),a&&P.push(S[I]<=0,S[N]<=0),P.every((function(t){return t}))){T=O,E=!1;break}A.set(O,P)}if(E)for(var j=function(t){var e=v.find((function(e){var i=A.get(e);if(i)return i.slice(0,t).every((function(t){return t}))}));if(e)return T=e,"break"},M=p?3:1;M>0&&"break"!==j(M);M--);e.placement!==T&&(e.modifiersData[n]._skip=!0,e.placement=T,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function Ie(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function Ne(t){return[gt,_t,mt,bt].some((function(e){return t[e]>=0}))}const Pe={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,i=t.name,n=e.rects.reference,s=e.rects.popper,o=e.modifiersData.preventOverflow,r=Le(e,{elementContext:"reference"}),a=Le(e,{altBoundary:!0}),l=Ie(r,n),c=Ie(a,s,o),h=Ne(l),d=Ne(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:d},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":d})}},je={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.offset,o=void 0===s?[0,0]:s,r=kt.reduce((function(t,i){return t[i]=function(t,e,i){var n=Vt(t),s=[bt,gt].indexOf(n)>=0?-1:1,o="function"==typeof i?i(Object.assign({},e,{placement:t})):i,r=o[0],a=o[1];return r=r||0,a=(a||0)*s,[bt,_t].indexOf(n)>=0?{x:a,y:r}:{x:r,y:a}}(i,e.rects,o),t}),{}),a=r[e.placement],l=a.x,c=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[n]=r}},Me={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=ke({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}},He={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0!==r&&r,l=i.boundary,c=i.rootBoundary,h=i.altBoundary,d=i.padding,u=i.tether,f=void 0===u||u,p=i.tetherOffset,g=void 0===p?0:p,m=Le(e,{boundary:l,rootBoundary:c,padding:d,altBoundary:h}),_=Vt(e.placement),b=de(e.placement),v=!b,y=re(_),w="x"===y?"y":"x",A=e.modifiersData.popperOffsets,E=e.rects.reference,T=e.rects.popper,C="function"==typeof g?g(Object.assign({},e.rects,{placement:e.placement})):g,O="number"==typeof C?{mainAxis:C,altAxis:C}:Object.assign({mainAxis:0,altAxis:0},C),x=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,k={x:0,y:0};if(A){if(o){var L,D="y"===y?gt:bt,S="y"===y?mt:_t,I="y"===y?"height":"width",N=A[y],P=N+m[D],j=N-m[S],M=f?-T[I]/2:0,H=b===wt?E[I]:T[I],$=b===wt?-T[I]:-E[I],W=e.elements.arrow,B=f&&W?Jt(W):{width:0,height:0},F=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},z=F[D],q=F[S],R=ae(0,E[I],B[I]),V=v?E[I]/2-M-R-z-O.mainAxis:H-R-z-O.mainAxis,K=v?-E[I]/2+M+R+q+O.mainAxis:$+R+q+O.mainAxis,Q=e.elements.arrow&&oe(e.elements.arrow),X=Q?"y"===y?Q.clientTop||0:Q.clientLeft||0:0,Y=null!=(L=null==x?void 0:x[y])?L:0,U=N+K-Y,G=ae(f?Qt(P,N+V-Y-X):P,N,f?Kt(j,U):j);A[y]=G,k[y]=G-N}if(a){var J,Z="x"===y?gt:bt,tt="x"===y?mt:_t,et=A[w],it="y"===w?"height":"width",nt=et+m[Z],st=et-m[tt],ot=-1!==[gt,bt].indexOf(_),rt=null!=(J=null==x?void 0:x[w])?J:0,at=ot?nt:et-E[it]-T[it]-rt+O.altAxis,lt=ot?et+E[it]+T[it]-rt-O.altAxis:st,ct=f&&ot?function(t,e,i){var n=ae(t,e,i);return n>i?i:n}(at,et,lt):ae(f?at:nt,et,f?lt:st);A[w]=ct,k[w]=ct-et}e.modifiersData[n]=k}},requiresIfExists:["offset"]};function $e(t,e,i){void 0===i&&(i=!1);var n,s,o=zt(e),r=zt(e)&&function(t){var e=t.getBoundingClientRect(),i=Xt(e.width)/t.offsetWidth||1,n=Xt(e.height)/t.offsetHeight||1;return 1!==i||1!==n}(e),a=ie(e),l=Gt(t,r,i),c={scrollLeft:0,scrollTop:0},h={x:0,y:0};return(o||!o&&!i)&&(("body"!==Wt(e)||Ee(a))&&(c=(n=e)!==Bt(n)&&zt(n)?{scrollLeft:(s=n).scrollLeft,scrollTop:s.scrollTop}:we(n)),zt(e)?((h=Gt(e,!0)).x+=e.clientLeft,h.y+=e.clientTop):a&&(h.x=Ae(a))),{x:l.left+c.scrollLeft-h.x,y:l.top+c.scrollTop-h.y,width:l.width,height:l.height}}function We(t){var e=new Map,i=new Set,n=[];function s(t){i.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!i.has(t)){var n=e.get(t);n&&s(n)}})),n.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){i.has(t.name)||s(t)})),n}var Be={placement:"bottom",modifiers:[],strategy:"absolute"};function Fe(){for(var t=arguments.length,e=new Array(t),i=0;iNumber.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||"static"===this._config.display)&&(B.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,..."function"==typeof this._config.popperConfig?this._config.popperConfig(t):this._config.popperConfig}}_selectMenuItem({key:t,target:e}){const i=Q.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter((t=>a(t)));i.length&&b(i,e,t===Ye,!i.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=hi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}static clearMenus(t){if(2===t.button||"keyup"===t.type&&"Tab"!==t.key)return;const e=Q.find(ti);for(const i of e){const e=hi.getInstance(i);if(!e||!1===e._config.autoClose)continue;const n=t.composedPath(),s=n.includes(e._menu);if(n.includes(e._element)||"inside"===e._config.autoClose&&!s||"outside"===e._config.autoClose&&s)continue;if(e._menu.contains(t.target)&&("keyup"===t.type&&"Tab"===t.key||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;const o={relatedTarget:e._element};"click"===t.type&&(o.clickEvent=t),e._completeHide(o)}}static dataApiKeydownHandler(t){const e=/input|textarea/i.test(t.target.tagName),i="Escape"===t.key,n=[Xe,Ye].includes(t.key);if(!n&&!i)return;if(e&&!i)return;t.preventDefault();const s=this.matches(Ze)?this:Q.prev(this,Ze)[0]||Q.next(this,Ze)[0]||Q.findOne(Ze,t.delegateTarget.parentNode),o=hi.getOrCreateInstance(s);if(n)return t.stopPropagation(),o.show(),void o._selectMenuItem(t);o._isShown()&&(t.stopPropagation(),o.hide(),s.focus())}}P.on(document,Ge,Ze,hi.dataApiKeydownHandler),P.on(document,Ge,ei,hi.dataApiKeydownHandler),P.on(document,Ue,hi.clearMenus),P.on(document,"keyup.bs.dropdown.data-api",hi.clearMenus),P.on(document,Ue,Ze,(function(t){t.preventDefault(),hi.getOrCreateInstance(this).toggle()})),g(hi);const di=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",ui=".sticky-top",fi="padding-right",pi="margin-right";class gi{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,fi,(e=>e+t)),this._setElementAttributes(di,fi,(e=>e+t)),this._setElementAttributes(ui,pi,(e=>e-t))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,fi),this._resetElementAttributes(di,fi),this._resetElementAttributes(ui,pi)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const n=this.getWidth();this._applyManipulationCallback(t,(t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+n)return;this._saveInitialAttribute(t,e);const s=window.getComputedStyle(t).getPropertyValue(e);t.style.setProperty(e,`${i(Number.parseFloat(s))}px`)}))}_saveInitialAttribute(t,e){const i=t.style.getPropertyValue(e);i&&B.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=>{const i=B.getDataAttribute(t,e);null!==i?(B.removeDataAttribute(t,e),t.style.setProperty(e,i)):t.style.removeProperty(e)}))}_applyManipulationCallback(t,e){if(o(t))e(t);else for(const i of Q.find(t,this._element))e(i)}}const mi="show",_i="mousedown.bs.backdrop",bi={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},vi={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class yi extends F{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return bi}static get DefaultType(){return vi}static get NAME(){return"backdrop"}show(t){if(!this._config.isVisible)return void m(t);this._append();const e=this._getElement();this._config.isAnimated&&d(e),e.classList.add(mi),this._emulateAnimation((()=>{m(t)}))}hide(t){this._config.isVisible?(this._getElement().classList.remove(mi),this._emulateAnimation((()=>{this.dispose(),m(t)}))):m(t)}dispose(){this._isAppended&&(P.off(this._element,_i),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_configAfterMerge(t){return t.rootElement=r(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),P.on(t,_i,(()=>{m(this._config.clickCallback)})),this._isAppended=!0}_emulateAnimation(t){_(t,this._getElement(),this._config.isAnimated)}}const wi=".bs.focustrap",Ai="backward",Ei={autofocus:!0,trapElement:null},Ti={autofocus:"boolean",trapElement:"element"};class Ci extends F{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return Ei}static get DefaultType(){return Ti}static get NAME(){return"focustrap"}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),P.off(document,wi),P.on(document,"focusin.bs.focustrap",(t=>this._handleFocusin(t))),P.on(document,"keydown.tab.bs.focustrap",(t=>this._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,P.off(document,wi))}_handleFocusin(t){const{trapElement:e}=this._config;if(t.target===document||t.target===e||e.contains(t.target))return;const i=Q.focusableChildren(e);0===i.length?e.focus():this._lastTabNavDirection===Ai?i[i.length-1].focus():i[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?Ai:"forward")}}const Oi="hidden.bs.modal",xi="show.bs.modal",ki="modal-open",Li="show",Di="modal-static",Si={backdrop:!0,focus:!0,keyboard:!0},Ii={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class Ni extends z{constructor(t,e){super(t,e),this._dialog=Q.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new gi,this._addEventListeners()}static get Default(){return Si}static get DefaultType(){return Ii}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||P.trigger(this._element,xi,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(ki),this._adjustDialog(),this._backdrop.show((()=>this._showElement(t))))}hide(){this._isShown&&!this._isTransitioning&&(P.trigger(this._element,"hide.bs.modal").defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(Li),this._queueCallback((()=>this._hideModal()),this._element,this._isAnimated())))}dispose(){for(const t of[window,this._dialog])P.off(t,".bs.modal");this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new yi({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new Ci({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const e=Q.findOne(".modal-body",this._dialog);e&&(e.scrollTop=0),d(this._element),this._element.classList.add(Li),this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,P.trigger(this._element,"shown.bs.modal",{relatedTarget:t})}),this._dialog,this._isAnimated())}_addEventListeners(){P.on(this._element,"keydown.dismiss.bs.modal",(t=>{if("Escape"===t.key)return this._config.keyboard?(t.preventDefault(),void this.hide()):void this._triggerBackdropTransition()})),P.on(window,"resize.bs.modal",(()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()})),P.on(this._element,"mousedown.dismiss.bs.modal",(t=>{P.one(this._element,"click.dismiss.bs.modal",(e=>{this._element===t.target&&this._element===e.target&&("static"!==this._config.backdrop?this._config.backdrop&&this.hide():this._triggerBackdropTransition())}))}))}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide((()=>{document.body.classList.remove(ki),this._resetAdjustments(),this._scrollBar.reset(),P.trigger(this._element,Oi)}))}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(P.trigger(this._element,"hidePrevented.bs.modal").defaultPrevented)return;const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._element.style.overflowY;"hidden"===e||this._element.classList.contains(Di)||(t||(this._element.style.overflowY="hidden"),this._element.classList.add(Di),this._queueCallback((()=>{this._element.classList.remove(Di),this._queueCallback((()=>{this._element.style.overflowY=e}),this._dialog)}),this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;if(i&&!t){const t=p()?"paddingLeft":"paddingRight";this._element.style[t]=`${e}px`}if(!i&&t){const t=p()?"paddingRight":"paddingLeft";this._element.style[t]=`${e}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=Ni.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}P.on(document,"click.bs.modal.data-api",'[data-bs-toggle="modal"]',(function(t){const e=n(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),P.one(e,xi,(t=>{t.defaultPrevented||P.one(e,Oi,(()=>{a(this)&&this.focus()}))}));const i=Q.findOne(".modal.show");i&&Ni.getInstance(i).hide(),Ni.getOrCreateInstance(e).toggle(this)})),q(Ni),g(Ni);const Pi="show",ji="showing",Mi="hiding",Hi=".offcanvas.show",$i="hidePrevented.bs.offcanvas",Wi="hidden.bs.offcanvas",Bi={backdrop:!0,keyboard:!0,scroll:!1},Fi={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class zi extends z{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return Bi}static get DefaultType(){return Fi}static get NAME(){return"offcanvas"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||P.trigger(this._element,"show.bs.offcanvas",{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||(new gi).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(ji),this._queueCallback((()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add(Pi),this._element.classList.remove(ji),P.trigger(this._element,"shown.bs.offcanvas",{relatedTarget:t})}),this._element,!0))}hide(){this._isShown&&(P.trigger(this._element,"hide.bs.offcanvas").defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add(Mi),this._backdrop.hide(),this._queueCallback((()=>{this._element.classList.remove(Pi,Mi),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new gi).reset(),P.trigger(this._element,Wi)}),this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=Boolean(this._config.backdrop);return new yi({className:"offcanvas-backdrop",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?()=>{"static"!==this._config.backdrop?this.hide():P.trigger(this._element,$i)}:null})}_initializeFocusTrap(){return new Ci({trapElement:this._element})}_addEventListeners(){P.on(this._element,"keydown.dismiss.bs.offcanvas",(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():P.trigger(this._element,$i))}))}static jQueryInterface(t){return this.each((function(){const e=zi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}P.on(document,"click.bs.offcanvas.data-api",'[data-bs-toggle="offcanvas"]',(function(t){const e=n(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),l(this))return;P.one(e,Wi,(()=>{a(this)&&this.focus()}));const i=Q.findOne(Hi);i&&i!==e&&zi.getInstance(i).hide(),zi.getOrCreateInstance(e).toggle(this)})),P.on(window,"load.bs.offcanvas.data-api",(()=>{for(const t of Q.find(Hi))zi.getOrCreateInstance(t).show()})),P.on(window,"resize.bs.offcanvas",(()=>{for(const t of Q.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(t).position&&zi.getOrCreateInstance(t).hide()})),q(zi),g(zi);const qi=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Ri=/^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i,Vi=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i,Ki=(t,e)=>{const i=t.nodeName.toLowerCase();return e.includes(i)?!qi.has(i)||Boolean(Ri.test(t.nodeValue)||Vi.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(i)))},Qi={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},Xi={allowList:Qi,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},Yi={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Ui={entry:"(string|element|function|null)",selector:"(string|element)"};class Gi extends F{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return Xi}static get DefaultType(){return Yi}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,i]of Object.entries(this._config.content))this._setContent(t,i,e);const e=t.children[0],i=this._resolvePossibleFunction(this._config.extraClass);return i&&e.classList.add(...i.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,i]of Object.entries(t))super._typeCheckConfig({selector:e,entry:i},Ui)}_setContent(t,e,i){const n=Q.findOne(i,t);n&&((e=this._resolvePossibleFunction(e))?o(e)?this._putElementInTemplate(r(e),n):this._config.html?n.innerHTML=this._maybeSanitize(e):n.textContent=e:n.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,i){if(!t.length)return t;if(i&&"function"==typeof i)return i(t);const n=(new window.DOMParser).parseFromString(t,"text/html"),s=[].concat(...n.body.querySelectorAll("*"));for(const t of s){const i=t.nodeName.toLowerCase();if(!Object.keys(e).includes(i)){t.remove();continue}const n=[].concat(...t.attributes),s=[].concat(e["*"]||[],e[i]||[]);for(const e of n)Ki(e,s)||t.removeAttribute(e.nodeName)}return n.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return"function"==typeof t?t(this):t}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const Ji=new Set(["sanitize","allowList","sanitizeFn"]),Zi="fade",tn="show",en=".modal",nn="hide.bs.modal",sn="hover",on="focus",rn={AUTO:"auto",TOP:"top",RIGHT:p()?"left":"right",BOTTOM:"bottom",LEFT:p()?"right":"left"},an={allowList:Qi,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,0],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},ln={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class cn extends z{constructor(t,e){if(void 0===Ke)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,e),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return an}static get DefaultType(){return ln}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),P.off(this._element.closest(en),nn,this._hideModalHandler),this.tip&&this.tip.remove(),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=P.trigger(this._element,this.constructor.eventName("show")),e=(c(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this.tip&&(this.tip.remove(),this.tip=null);const i=this._getTipElement();this._element.setAttribute("aria-describedby",i.getAttribute("id"));const{container:n}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(n.append(i),P.trigger(this._element,this.constructor.eventName("inserted"))),this._popper?this._popper.update():this._popper=this._createPopper(i),i.classList.add(tn),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))P.on(t,"mouseover",h);this._queueCallback((()=>{P.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(!this._isShown())return;if(P.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented)return;const t=this._getTipElement();if(t.classList.remove(tn),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))P.off(t,"mouseover",h);this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,this._isHovered=null,this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||t.remove(),this._element.removeAttribute("aria-describedby"),P.trigger(this._element,this.constructor.eventName("hidden")),this._disposePopper())}),this.tip,this._isAnimated())}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(Zi,tn),e.classList.add(`bs-${this.constructor.NAME}-auto`);const i=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",i),this._isAnimated()&&e.classList.add(Zi),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Gi({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{".tooltip-inner":this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(Zi)}_isShown(){return this.tip&&this.tip.classList.contains(tn)}_createPopper(t){const e="function"==typeof this._config.placement?this._config.placement.call(this,t,this._element):this._config.placement,i=rn[e.toUpperCase()];return Ve(this._element,t,this._getPopperConfig(i))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return"function"==typeof t?t.call(this._element):t}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return{...e,..."function"==typeof this._config.popperConfig?this._config.popperConfig(e):this._config.popperConfig}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)P.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===sn?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),i=e===sn?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");P.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?on:sn]=!0,e._enter()})),P.on(this._element,i,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?on:sn]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},P.on(this._element.closest(en),nn,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=B.getDataAttributes(this._element);for(const t of Object.keys(e))Ji.has(t)&&delete e[t];return t={...e,..."object"==typeof t&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:r(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const e in this._config)this.constructor.Default[e]!==this._config[e]&&(t[e]=this._config[e]);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null)}static jQueryInterface(t){return this.each((function(){const e=cn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}g(cn);const hn={...cn.Default,content:"",offset:[0,8],placement:"right",template:'',trigger:"click"},dn={...cn.DefaultType,content:"(null|string|element|function)"};class un extends cn{static get Default(){return hn}static get DefaultType(){return dn}static get NAME(){return"popover"}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{".popover-header":this._getTitle(),".popover-body":this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(t){return this.each((function(){const e=un.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}g(un);const fn="click.bs.scrollspy",pn="active",gn="[href]",mn={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},_n={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class bn extends z{constructor(t,e){super(t,e),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return mn}static get DefaultType(){return _n}static get NAME(){return"scrollspy"}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const t of this._observableSections.values())this._observer.observe(t)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(t){return t.target=r(t.target)||document.body,t.rootMargin=t.offset?`${t.offset}px 0px -30%`:t.rootMargin,"string"==typeof t.threshold&&(t.threshold=t.threshold.split(",").map((t=>Number.parseFloat(t)))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(P.off(this._config.target,fn),P.on(this._config.target,fn,gn,(t=>{const e=this._observableSections.get(t.target.hash);if(e){t.preventDefault();const i=this._rootElement||window,n=e.offsetTop-this._element.offsetTop;if(i.scrollTo)return void i.scrollTo({top:n,behavior:"smooth"});i.scrollTop=n}})))}_getNewObserver(){const t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver((t=>this._observerCallback(t)),t)}_observerCallback(t){const e=t=>this._targetLinks.get(`#${t.target.id}`),i=t=>{this._previousScrollData.visibleEntryTop=t.target.offsetTop,this._process(e(t))},n=(this._rootElement||document.documentElement).scrollTop,s=n>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=n;for(const o of t){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(e(o));continue}const t=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(s&&t){if(i(o),!n)return}else s||t||i(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=Q.find(gn,this._config.target);for(const e of t){if(!e.hash||l(e))continue;const t=Q.findOne(e.hash,this._element);a(t)&&(this._targetLinks.set(e.hash,e),this._observableSections.set(e.hash,t))}}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(pn),this._activateParents(t),P.trigger(this._element,"activate.bs.scrollspy",{relatedTarget:t}))}_activateParents(t){if(t.classList.contains("dropdown-item"))Q.findOne(".dropdown-toggle",t.closest(".dropdown")).classList.add(pn);else for(const e of Q.parents(t,".nav, .list-group"))for(const t of Q.prev(e,".nav-link, .nav-item > .nav-link, .list-group-item"))t.classList.add(pn)}_clearActiveClass(t){t.classList.remove(pn);const e=Q.find("[href].active",t);for(const t of e)t.classList.remove(pn)}static jQueryInterface(t){return this.each((function(){const e=bn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}P.on(window,"load.bs.scrollspy.data-api",(()=>{for(const t of Q.find('[data-bs-spy="scroll"]'))bn.getOrCreateInstance(t)})),g(bn);const vn="ArrowLeft",yn="ArrowRight",wn="ArrowUp",An="ArrowDown",En="active",Tn="fade",Cn="show",On='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',xn=`.nav-link:not(.dropdown-toggle), .list-group-item:not(.dropdown-toggle), [role="tab"]:not(.dropdown-toggle), ${On}`;class kn extends z{constructor(t){super(t),this._parent=this._element.closest('.list-group, .nav, [role="tablist"]'),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),P.on(this._element,"keydown.bs.tab",(t=>this._keydown(t))))}static get NAME(){return"tab"}show(){const t=this._element;if(this._elemIsActive(t))return;const e=this._getActiveElem(),i=e?P.trigger(e,"hide.bs.tab",{relatedTarget:t}):null;P.trigger(t,"show.bs.tab",{relatedTarget:e}).defaultPrevented||i&&i.defaultPrevented||(this._deactivate(e,t),this._activate(t,e))}_activate(t,e){t&&(t.classList.add(En),this._activate(n(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),P.trigger(t,"shown.bs.tab",{relatedTarget:e})):t.classList.add(Cn)}),t,t.classList.contains(Tn)))}_deactivate(t,e){t&&(t.classList.remove(En),t.blur(),this._deactivate(n(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),P.trigger(t,"hidden.bs.tab",{relatedTarget:e})):t.classList.remove(Cn)}),t,t.classList.contains(Tn)))}_keydown(t){if(![vn,yn,wn,An].includes(t.key))return;t.stopPropagation(),t.preventDefault();const e=[yn,An].includes(t.key),i=b(this._getChildren().filter((t=>!l(t))),t.target,e,!0);i&&(i.focus({preventScroll:!0}),kn.getOrCreateInstance(i).show())}_getChildren(){return Q.find(xn,this._parent)}_getActiveElem(){return this._getChildren().find((t=>this._elemIsActive(t)))||null}_setInitialAttributes(t,e){this._setAttributeIfNotExists(t,"role","tablist");for(const t of e)this._setInitialAttributesOnChild(t)}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);const e=this._elemIsActive(t),i=this._getOuterElement(t);t.setAttribute("aria-selected",e),i!==t&&this._setAttributeIfNotExists(i,"role","presentation"),e||t.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(t,"role","tab"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){const e=n(t);e&&(this._setAttributeIfNotExists(e,"role","tabpanel"),t.id&&this._setAttributeIfNotExists(e,"aria-labelledby",`#${t.id}`))}_toggleDropDown(t,e){const i=this._getOuterElement(t);if(!i.classList.contains("dropdown"))return;const n=(t,n)=>{const s=Q.findOne(t,i);s&&s.classList.toggle(n,e)};n(".dropdown-toggle",En),n(".dropdown-menu",Cn),i.setAttribute("aria-expanded",e)}_setAttributeIfNotExists(t,e,i){t.hasAttribute(e)||t.setAttribute(e,i)}_elemIsActive(t){return t.classList.contains(En)}_getInnerElement(t){return t.matches(xn)?t:Q.findOne(xn,t)}_getOuterElement(t){return t.closest(".nav-item, .list-group-item")||t}static jQueryInterface(t){return this.each((function(){const e=kn.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}P.on(document,"click.bs.tab",On,(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),l(this)||kn.getOrCreateInstance(this).show()})),P.on(window,"load.bs.tab",(()=>{for(const t of Q.find('.active[data-bs-toggle="tab"], .active[data-bs-toggle="pill"], .active[data-bs-toggle="list"]'))kn.getOrCreateInstance(t)})),g(kn);const Ln="hide",Dn="show",Sn="showing",In={animation:"boolean",autohide:"boolean",delay:"number"},Nn={animation:!0,autohide:!0,delay:5e3};class Pn extends z{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return Nn}static get DefaultType(){return In}static get NAME(){return"toast"}show(){P.trigger(this._element,"show.bs.toast").defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove(Ln),d(this._element),this._element.classList.add(Dn,Sn),this._queueCallback((()=>{this._element.classList.remove(Sn),P.trigger(this._element,"shown.bs.toast"),this._maybeScheduleHide()}),this._element,this._config.animation))}hide(){this.isShown()&&(P.trigger(this._element,"hide.bs.toast").defaultPrevented||(this._element.classList.add(Sn),this._queueCallback((()=>{this._element.classList.add(Ln),this._element.classList.remove(Sn,Dn),P.trigger(this._element,"hidden.bs.toast")}),this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(Dn),super.dispose()}isShown(){return this._element.classList.contains(Dn)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=>{this.hide()}),this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){P.on(this._element,"mouseover.bs.toast",(t=>this._onInteraction(t,!0))),P.on(this._element,"mouseout.bs.toast",(t=>this._onInteraction(t,!1))),P.on(this._element,"focusin.bs.toast",(t=>this._onInteraction(t,!0))),P.on(this._element,"focusout.bs.toast",(t=>this._onInteraction(t,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=Pn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}return q(Pn),g(Pn),{Alert:R,Button:K,Carousel:at,Collapse:pt,Dropdown:hi,Modal:Ni,Offcanvas:zi,Popover:un,ScrollSpy:bn,Tab:kn,Toast:Pn,Tooltip:cn}})); -//# sourceMappingURL=bootstrap.bundle.min.js.map \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/guest/add.jsp b/src/main/webapp/WEB-INF/view/guest/add.jsp new file mode 100644 index 0000000..27127bc --- /dev/null +++ b/src/main/webapp/WEB-INF/view/guest/add.jsp @@ -0,0 +1,179 @@ +<%@ page contentType="text/html;charset=UTF-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> + + + + + + + +
+ + + + + +
+ + + + +
+

고객정보 등록

+ +
거래처 정보
+
+
+ +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
고객정보 등록
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+
+
+ +
개통정보
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+
+
+ +
리베이트
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+
+
+
+
+ +
+ + + + diff --git a/src/main/webapp/WEB-INF/view/home/sample.jsp b/src/main/webapp/WEB-INF/view/home/sample.jsp new file mode 100644 index 0000000..c9ae0e2 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/home/sample.jsp @@ -0,0 +1,40 @@ +<%@ page contentType="text/html;charset=UTF-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> + + + + + + + +
+ + + + + +
+ + + + +
+

Simple Sidebar

+

The starting state of the menu will appear collapsed on smaller screens, and will appear non-collapsed on larger screens. When toggled using the button below, the menu will change.

+

+ Make sure to keep all page content within the + #page-content-wrapper + . The top navbar is optional, and just for demonstration. Just create an element with the + #sidebarToggle + ID which will toggle the menu when clicked. +

+
+
+ +
+ + + + diff --git a/src/main/webapp/WEB-INF/view/include/inc_body_sidebar.jsp b/src/main/webapp/WEB-INF/view/include/inc_body_sidebar.jsp index 5599f9a..02a5e0a 100644 --- a/src/main/webapp/WEB-INF/view/include/inc_body_sidebar.jsp +++ b/src/main/webapp/WEB-INF/view/include/inc_body_sidebar.jsp @@ -6,11 +6,15 @@ \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/include/sample/inc_body_footer.jsp b/src/main/webapp/WEB-INF/view/include/sample/inc_body_footer.jsp new file mode 100644 index 0000000..cb3014d --- /dev/null +++ b/src/main/webapp/WEB-INF/view/include/sample/inc_body_footer.jsp @@ -0,0 +1,9 @@ +<%@ page contentType="text/html;charset=UTF-8" %> +<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> + +
+
+
Copyright© 2023 kuhan. All rights reserved.
+
+
diff --git a/src/main/webapp/WEB-INF/view/include/sample/inc_body_header.jsp b/src/main/webapp/WEB-INF/view/include/sample/inc_body_header.jsp new file mode 100644 index 0000000..4193e80 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/include/sample/inc_body_header.jsp @@ -0,0 +1,27 @@ +<%@ page contentType="text/html;charset=UTF-8" %> +<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> + + + diff --git a/src/main/webapp/WEB-INF/view/include/sample/inc_body_sidebar.jsp b/src/main/webapp/WEB-INF/view/include/sample/inc_body_sidebar.jsp new file mode 100644 index 0000000..5599f9a --- /dev/null +++ b/src/main/webapp/WEB-INF/view/include/sample/inc_body_sidebar.jsp @@ -0,0 +1,16 @@ +<%@ page contentType="text/html;charset=UTF-8" %> +<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/include/sample/inc_head.jsp b/src/main/webapp/WEB-INF/view/include/sample/inc_head.jsp new file mode 100644 index 0000000..d87d4d2 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/include/sample/inc_head.jsp @@ -0,0 +1,19 @@ +<%@ page contentType="text/html;charset=UTF-8" %> +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> + + + +샘플 + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/index.jsp b/src/main/webapp/WEB-INF/view/index.jsp deleted file mode 100644 index e79640e..0000000 --- a/src/main/webapp/WEB-INF/view/index.jsp +++ /dev/null @@ -1,17 +0,0 @@ -<%@ page contentType="text/html;charset=UTF-8" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> - - - - <%-- - --%> - - - - -

INDEX

- -<%-- - --%> - -