diff --git a/src/web/admin/admin_extension_list.html b/src/web/admin/admin_extension_list.html
index 79416d4..56af87d 100644
--- a/src/web/admin/admin_extension_list.html
+++ b/src/web/admin/admin_extension_list.html
@@ -171,11 +171,23 @@
// console.log("day : " + availableDateArray[2]);
var endDate = new Date(availableDateArray[0], availableDateArray[1] - 1, availableDateArray[2]);
// console.log("endDate : " + endDate);
+ /*
var newDate = new Date(endDate.setFullYear(endDate.getFullYear() + 1));
// console.log("newDate : " + newDate);
// var newAvailableDate = newDate.toISOString().substring(0, 10);
var newAvailableDate = newDate.getFullYear() + "-" + ("0"+(newDate.getMonth()+1)).slice(-2) + "-" + ("0" + newDate.getDate()).slice(-2);
// console.log("newAvailableDate : " + newAvailableDate);
+ */
+ var today = new Date();
+ var endDay = new Date(endDate);
+ var diffDay = (endDay.getTime() - today.getTime()) / (1000 * 60 * 60 * 24);
+ var newDate = null;
+ if(diffDay < 0) // end date is over
+ newDate = new Date(today.setFullYear(today.getFullYear() + 1));
+ else
+ newDate = new Date(endDay.setFullYear(endDay.getFullYear() + 1));
+ newAvailableDate = newDate.getFullYear() + "-" + ("0"+(newDate.getMonth()+1)).slice(-2) + "-" + ("0" + newDate.getDate()).slice(-2);
+ console.log("newAvailableDate : " + newAvailableDate);
// console.log(maestroExtensionID);
// console.log(maestroID);
diff --git a/src/web/js/maestro_availabel_date.js b/src/web/js/maestro_availabel_date.js
new file mode 100644
index 0000000..2b18282
--- /dev/null
+++ b/src/web/js/maestro_availabel_date.js
@@ -0,0 +1,78 @@
+function MaestroAvailableDate() {
+ this.today = new Date();
+
+ this.endDate = null;
+ this.endDay = null;
+}
+
+
+MaestroAvailableDate.prototype.setEndDate = function(endDate) {
+ this.endDate = endDate;
+ this.endDay = new Date(this.endDate);
+}
+
+MaestroAvailableDate.prototype.setEndDateTime = function(endDateTime) {
+ var endDateArray = endDateTime.split(" ");
+ this.setEndDate(endDateArray[0]); // "YY-MM_DD"
+}
+
+MaestroAvailableDate.prototype.getDiffDay = function() {
+ var diffDay = (this.endDay.getTime() - this.today.getTime()) / (1000 * 60 * 60 * 24);
+ return Math.ceil(diffDay);
+}
+
+MaestroAvailableDate.prototype.getNewAvailableDate = function(diffDay) {
+ var newDate = null;
+ if(diffDay < 0) // end date is over
+ newDate = new Date(new Date().setFullYear(this.today.getFullYear() + 1));
+ else
+ newDate = new Date(new Date().setFullYear(this.endDay.getFullYear() + 1));
+
+ var year2Digits = newDate.getFullYear();
+ var month2Digits = ("0"+(newDate.getMonth()+1)).slice(-2);
+ var day2Digits = ("0" + newDate.getDate()).slice(-2);
+
+ return year2Digits+ "-" + month2Digits + "-" + day2Digits;
+}
+
+MaestroAvailableDate.prototype.showMaestroExtensionMessage = function(maestroName) {
+ var diffDay = this.getDiffDay();
+
+ if(diffDay > 30)
+ return;
+
+ $("#maestro_extension").removeClass("d-none");
+
+ var message = "";
+ if(diffDay > 0)
+ message = "" + maestroName + " 계정의 유효기간이 얼마 남지 않았습니다.
1년 더 사용을 원하신다면 우측의 [유효기간 연장] 버튼을 눌러주세요.";
+ else
+ message = "" + maestroName + " 계정의 유효기간이 지났습니다. 등록된 학생들의 정보는 유지되지만, 로그인이 제한됩니다.
유효기간 연장을 하시면 다시 로그인하고 사용할 수 있게 됩니다.";
+
+ $("#maestro_extension_message").html(message);
+}
+
+
+MaestroAvailableDate.prototype.showEndDate = function() {
+ var diffDay = this.getDiffDay();
+
+ var newAvailableDate = this.getNewAvailableDate(diffDay);
+
+ $("#end_day").html(this.endDate);
+
+ if(diffDay < 0) {
+ $("#maestro_count_down_date").html("유효 기간 : ~ " + this.endDate + " (" + Math.abs(diffDay) + "일 경과) ");
+
+ $("#countdown_day").addClass("bg-danger font-weight-bold text-light");
+ }
+ else {
+ $("#maestro_count_down_date").html("유효 기간 : ~ " + this.endDate + " (남은 기간 : " + diffDay + "일)");
+
+ if(diffDay < 10)
+ $("#countdown_day").addClass("bg-danger text-light");
+ else if(diffDay < 30)
+ $("#countdown_day").addClass("text-danger");
+ else
+ $("#countdown_day").addClass("text-primary");
+ }
+}
\ No newline at end of file
diff --git a/src/web/maestro/extension.html b/src/web/maestro/extension.html
index a323aac..1d05546 100644
--- a/src/web/maestro/extension.html
+++ b/src/web/maestro/extension.html
@@ -46,6 +46,7 @@
+
diff --git a/src/web/maestro/main_menu.html b/src/web/maestro/main_menu.html
index 2d77989..2c95e0a 100644
--- a/src/web/maestro/main_menu.html
+++ b/src/web/maestro/main_menu.html
@@ -38,6 +38,7 @@
+
diff --git a/src/web/maestro/setup.html b/src/web/maestro/setup.html
index bcca9c2..08a75d5 100644
--- a/src/web/maestro/setup.html
+++ b/src/web/maestro/setup.html
@@ -45,6 +45,7 @@
+
diff --git a/src/web/maestro/upgrade.html b/src/web/maestro/upgrade.html
index 960abdf..ec10d9d 100644
--- a/src/web/maestro/upgrade.html
+++ b/src/web/maestro/upgrade.html
@@ -45,6 +45,7 @@
+
diff --git a/src/web/module/maestro_extension.html b/src/web/module/maestro_extension.html
index 9fa6814..43e6db2 100644
--- a/src/web/module/maestro_extension.html
+++ b/src/web/module/maestro_extension.html
@@ -1,5 +1,7 @@