mirror of
https://github.com/DreamExposure/DisCal-Discord-Bot.git
synced 2026-03-11 07:29:15 -05:00
Fix numerous issues on the way to getting calendar embed working
Add inline source mapping for debugging Fix web calendar's json conversion being incorrect Start work on getting the calendar styled correctly
This commit is contained in:
@@ -22,7 +22,7 @@ export class DashboardGuildRunner implements TaskCallback {
|
||||
this.apiUrl = apiUrl;
|
||||
this.userId = userId;
|
||||
|
||||
this.guildId = parseInt(window.location.pathname.split("/")[2]);
|
||||
this.guildId = parseInt(window.location.pathname.split("/")[3]);
|
||||
}
|
||||
|
||||
startDashboardGuildPage() {
|
||||
|
||||
@@ -10,10 +10,28 @@ export class EmbedCalendarRunner {
|
||||
|
||||
init(key: string, url: string) {
|
||||
this.embedCalendar.init(key, url);
|
||||
|
||||
/**loop through stuff and assign onclick to the functions here since we can't do it in html
|
||||
*due to how the code is compiled and minified, making it impossible to call these functions
|
||||
**/
|
||||
document.getElementById("previous-month")!.onclick = function () {
|
||||
this.previousMonth();
|
||||
}.bind(this);
|
||||
document.getElementById("next-month")!.onclick = function () {
|
||||
this.nextMonth();
|
||||
}.bind(this);
|
||||
|
||||
let dateDisplays = document.getElementsByClassName("cal-date");
|
||||
for (let i = 0; i < dateDisplays.length; i++) {
|
||||
let e = (<HTMLElement>dateDisplays[i]);
|
||||
e.onclick = function () {
|
||||
this.selectDate(e.id);
|
||||
}.bind(this);
|
||||
}
|
||||
}
|
||||
|
||||
//Handle user input for the calendar....
|
||||
previousEmbedMonth() {
|
||||
previousMonth() {
|
||||
this.embedCalendar.selectedDate.setMonth(this.embedCalendar.selectedDate.getMonth() - 1);
|
||||
this.embedCalendar.selectedDate.setDate(1);
|
||||
|
||||
@@ -22,7 +40,7 @@ export class EmbedCalendarRunner {
|
||||
this.embedCalendar.getEventsForMonth();
|
||||
}
|
||||
|
||||
nextEmbedMonth() {
|
||||
nextMonth() {
|
||||
this.embedCalendar.selectedDate.setMonth(this.embedCalendar.selectedDate.getMonth() + 1);
|
||||
this.embedCalendar.selectedDate.setDate(1);
|
||||
|
||||
@@ -31,7 +49,7 @@ export class EmbedCalendarRunner {
|
||||
this.embedCalendar.getEventsForMonth();
|
||||
}
|
||||
|
||||
selectEmbedDate(clickedId: string) {
|
||||
selectDate(clickedId: string) {
|
||||
let e = document.getElementById(clickedId)!;
|
||||
let dateString = e.innerHTML.split("[")[0];
|
||||
if (dateString !== "") {
|
||||
|
||||
@@ -7,20 +7,17 @@ function loadDashboardGuildPage(apiKey: string, apiUrl: string, userId: string)
|
||||
}
|
||||
|
||||
function loadEmbedCalendar(embedKey: string, apiUrl: string) {
|
||||
|
||||
let embedRunner = new EmbedCalendarRunner();
|
||||
embedRunner.init(embedKey, apiUrl);
|
||||
}
|
||||
|
||||
document.onload = function () {
|
||||
const body = document.getElementById("page-top");
|
||||
if (body!.dataset.embed_key != null) {
|
||||
loadEmbedCalendar(<string>body!.dataset.embed_key, <string>body!.dataset.api_url);
|
||||
} else if (body!.dataset.api_key != null) {
|
||||
loadDashboardGuildPage(<string>body!.dataset.api_key,
|
||||
<string>body!.dataset.api_url, <string>body!.dataset.user_id)
|
||||
}
|
||||
};
|
||||
const body = document.getElementById("page-top");
|
||||
if (body!.dataset.embedKey != null) {
|
||||
loadEmbedCalendar(<string>body!.dataset.embedKey, <string>body!.dataset.apiUrl);
|
||||
} else if (body!.dataset.apiKey != null) {
|
||||
loadDashboardGuildPage(<string>body!.dataset.apiKey,
|
||||
<string>body!.dataset.apiUrl, <string>body!.dataset.userId)
|
||||
}
|
||||
|
||||
(function ($) {
|
||||
// Toggle the side navigation
|
||||
|
||||
@@ -26,14 +26,14 @@ export class EmbedCalendar implements TaskCallback {
|
||||
private calendarData: WebCalendar;
|
||||
|
||||
constructor() {
|
||||
this.guildId = parseInt(window.location.pathname.split("/")[2]);
|
||||
this.calNumber = parseInt(window.location.pathname.split("/")[3]);
|
||||
this.todaysDate = new Date();
|
||||
this.selectedDate = new Date();
|
||||
this.displays = [];
|
||||
this.apiKey = "";
|
||||
this.apiUrl = "";
|
||||
}
|
||||
this.guildId = parseInt(window.location.pathname.split("/")[3]);
|
||||
this.calNumber = parseInt(window.location.pathname.split("/")[4]);
|
||||
this.todaysDate = new Date();
|
||||
this.selectedDate = new Date();
|
||||
this.displays = [];
|
||||
this.apiKey = "";
|
||||
this.apiUrl = "";
|
||||
}
|
||||
|
||||
init(key: string, url: string) {
|
||||
this.apiKey = key;
|
||||
@@ -45,14 +45,16 @@ export class EmbedCalendar implements TaskCallback {
|
||||
"If you keep receiving this error, please contact the developers");
|
||||
|
||||
} else {
|
||||
//Request calendar information
|
||||
let calReq = new CalendarGetRequest(this.guildId, this.calNumber, this);
|
||||
calReq.provideApiDetails(this.apiKey, this.apiUrl);
|
||||
//Request calendar information
|
||||
let calReq = new CalendarGetRequest(this.guildId, this.calNumber, this);
|
||||
calReq.provideApiDetails(this.apiKey, this.apiUrl);
|
||||
|
||||
//Execute the calls
|
||||
calReq.execute();
|
||||
this.getEventsForMonth();
|
||||
}
|
||||
//Execute the calls
|
||||
this.setMonth(this.selectedDate);
|
||||
|
||||
calReq.execute();
|
||||
this.getEventsForMonth();
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -1,57 +1,57 @@
|
||||
export class WebCalendar {
|
||||
private _id: number;
|
||||
private _address: string;
|
||||
private _link: string;
|
||||
private _name: string;
|
||||
private _description: string;
|
||||
private _timezone: string;
|
||||
private _isExternal: boolean;
|
||||
private _id: string;
|
||||
private _address: string;
|
||||
private _number: number;
|
||||
private _external: boolean;
|
||||
private _summary: string;
|
||||
private _description: string;
|
||||
private _timezone: string;
|
||||
|
||||
constructor() {
|
||||
}
|
||||
constructor() {
|
||||
}
|
||||
|
||||
//Getter/setter pairs
|
||||
get id() {
|
||||
return this._id;
|
||||
}
|
||||
//Getter/setter pairs
|
||||
get id() {
|
||||
return this._id;
|
||||
}
|
||||
|
||||
set id(id) {
|
||||
this._id = id;
|
||||
}
|
||||
}
|
||||
|
||||
get address() {
|
||||
return this._address;
|
||||
}
|
||||
get address() {
|
||||
return this._address;
|
||||
}
|
||||
|
||||
set address(address) {
|
||||
this._address = address;
|
||||
}
|
||||
set address(address) {
|
||||
this._address = address;
|
||||
}
|
||||
|
||||
get link() {
|
||||
return this._link;
|
||||
}
|
||||
get number() {
|
||||
return this._number;
|
||||
}
|
||||
|
||||
set link(link) {
|
||||
this._link = link;
|
||||
}
|
||||
set number(num) {
|
||||
this._number = num;
|
||||
}
|
||||
|
||||
get name() {
|
||||
return this._name;
|
||||
}
|
||||
get summary() {
|
||||
return this._summary;
|
||||
}
|
||||
|
||||
set name(name) {
|
||||
this._name = name;
|
||||
}
|
||||
set summary(summary) {
|
||||
this._summary = summary;
|
||||
}
|
||||
|
||||
get description() {
|
||||
return this._description;
|
||||
}
|
||||
get description() {
|
||||
return this._description;
|
||||
}
|
||||
|
||||
set description(description) {
|
||||
this._description = description;
|
||||
}
|
||||
set description(description) {
|
||||
this._description = description;
|
||||
}
|
||||
|
||||
get timezone() {
|
||||
get timezone() {
|
||||
return this._timezone;
|
||||
}
|
||||
|
||||
@@ -60,23 +60,24 @@ export class WebCalendar {
|
||||
}
|
||||
|
||||
get isExternal() {
|
||||
return this._isExternal;
|
||||
return this._external;
|
||||
}
|
||||
|
||||
set isExternal(external) {
|
||||
this._isExternal = external;
|
||||
this._external = external;
|
||||
}
|
||||
|
||||
//Json conversions
|
||||
toJson() {
|
||||
let json: any = {
|
||||
"id": this.id,
|
||||
"address": this.address,
|
||||
"link": this.link,
|
||||
"name": this.name,
|
||||
"timezone": this.timezone,
|
||||
"external": this.isExternal
|
||||
};
|
||||
"calendar_address": this.address,
|
||||
"calendar_id": this.id,
|
||||
"calendar_number": this.number,
|
||||
"external": this.isExternal,
|
||||
"summary": this.summary,
|
||||
"description": this.description,
|
||||
"timezone": this.timezone
|
||||
};
|
||||
|
||||
if (this.description != null) {
|
||||
json.description = this.description;
|
||||
@@ -86,16 +87,14 @@ export class WebCalendar {
|
||||
}
|
||||
|
||||
fromJson(json: any) {
|
||||
this.id = json.id;
|
||||
this.address = json.address;
|
||||
this.link = json.link;
|
||||
this.name = json.name;
|
||||
if (json.hasOwnProperty("description")) {
|
||||
this.description = json.description;
|
||||
}
|
||||
this.timezone = json.timezone;
|
||||
this.isExternal = json.external;
|
||||
this.address = json.calendar_address;
|
||||
this.id = json.calendar_id;
|
||||
this.number = json.calendar_number;
|
||||
this.isExternal = json.external;
|
||||
this.summary = json.summary;
|
||||
this.description = json.description;
|
||||
this.timezone = json.timezone;
|
||||
|
||||
return this;
|
||||
}
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@@ -1,49 +0,0 @@
|
||||
(function ($) {
|
||||
"use strict"; // Start of use strict
|
||||
|
||||
// Toggle the side navigation
|
||||
$("#sidebarToggle, #sidebarToggleTop").on('click', function (e) {
|
||||
$("body").toggleClass("sidebar-toggled");
|
||||
$(".sidebar").toggleClass("toggled");
|
||||
if ($(".sidebar").hasClass("toggled")) {
|
||||
$('.sidebar .collapse').collapse('hide');
|
||||
}
|
||||
});
|
||||
|
||||
// Close any open menu accordions when window is resized below 768px
|
||||
$(window).resize(function () {
|
||||
if ($(window).width() < 768) {
|
||||
$('.sidebar .collapse').collapse('hide');
|
||||
}
|
||||
});
|
||||
|
||||
// Prevent the content wrapper from scrolling when the fixed side navigation hovered over
|
||||
$('body.fixed-nav .sidebar').on('mousewheel DOMMouseScroll wheel', function (e) {
|
||||
if ($(window).width() > 768) {
|
||||
const e0 = e.originalEvent,
|
||||
delta = e0.wheelDelta || -e0.detail;
|
||||
this.scrollTop += (delta < 0 ? 1 : -1) * 30;
|
||||
e.preventDefault();
|
||||
}
|
||||
});
|
||||
|
||||
// Scroll to top button appear
|
||||
$(document).on('scroll', function () {
|
||||
const scrollDistance = $(this).scrollTop();
|
||||
if (scrollDistance > 100) {
|
||||
$('.scroll-to-top').fadeIn();
|
||||
} else {
|
||||
$('.scroll-to-top').fadeOut();
|
||||
}
|
||||
});
|
||||
|
||||
// Smooth scrolling using jQuery easing
|
||||
$(document).on('click', 'a.scroll-to-top', function (e) {
|
||||
const $anchor = $(this);
|
||||
$('html, body').stop().animate({
|
||||
scrollTop: ($($anchor.attr('href')).offset().top)
|
||||
}, 1000, 'easeInOutExpo');
|
||||
e.preventDefault();
|
||||
});
|
||||
|
||||
})(jQuery); // End of use strict
|
||||
@@ -8,18 +8,18 @@ export class ElementUtil {
|
||||
}
|
||||
|
||||
static showCalendarContainer() {
|
||||
document.getElementById("calendar-container")!.setAttribute("hidden", "show");
|
||||
document.getElementById("calendar-container")!.hidden = false;
|
||||
}
|
||||
|
||||
static hideCalendarContainer() {
|
||||
document.getElementById("calendar-container")!.setAttribute("hidden", "hidden");
|
||||
document.getElementById("calendar-container")!.hidden = true;
|
||||
}
|
||||
|
||||
static showEventsContainer() {
|
||||
document.getElementById("events-container")!.setAttribute("hidden", "show");
|
||||
document.getElementById("events-container")!.hidden = true;
|
||||
}
|
||||
|
||||
static hideEventsContainer() {
|
||||
document.getElementById("events-container")!.setAttribute("hidden", "hidden");
|
||||
document.getElementById("events-container")!.hidden = true;
|
||||
}
|
||||
}
|
||||
|
||||
10
web/src/main/less/_calendar.scss
Normal file
10
web/src/main/less/_calendar.scss
Normal file
@@ -0,0 +1,10 @@
|
||||
@import "variables";
|
||||
|
||||
.cal-date {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
|
||||
.cal-date:hover {
|
||||
background-color: $discal-red;
|
||||
}
|
||||
@@ -17,6 +17,7 @@
|
||||
@import "footer";
|
||||
@import "loader";
|
||||
@import "snackbar";
|
||||
@import "calendar";
|
||||
|
||||
// Import Bootstrap
|
||||
//noinspection CssUnknownTarget
|
||||
|
||||
@@ -1344,133 +1344,133 @@ form.user .btn-user {
|
||||
|
||||
@-webkit-keyframes noise-anim {
|
||||
0% {
|
||||
clip: rect(13px, 9999px, 18px, 0);
|
||||
clip: rect(50px, 9999px, 6px, 0);
|
||||
}
|
||||
5% {
|
||||
clip: rect(85px, 9999px, 77px, 0);
|
||||
clip: rect(35px, 9999px, 70px, 0);
|
||||
}
|
||||
10% {
|
||||
clip: rect(26px, 9999px, 11px, 0);
|
||||
clip: rect(55px, 9999px, 91px, 0);
|
||||
}
|
||||
15% {
|
||||
clip: rect(35px, 9999px, 50px, 0);
|
||||
clip: rect(48px, 9999px, 63px, 0);
|
||||
}
|
||||
20% {
|
||||
clip: rect(61px, 9999px, 9px, 0);
|
||||
clip: rect(91px, 9999px, 71px, 0);
|
||||
}
|
||||
25% {
|
||||
clip: rect(40px, 9999px, 9px, 0);
|
||||
clip: rect(97px, 9999px, 58px, 0);
|
||||
}
|
||||
30% {
|
||||
clip: rect(35px, 9999px, 92px, 0);
|
||||
clip: rect(16px, 9999px, 18px, 0);
|
||||
}
|
||||
35% {
|
||||
clip: rect(21px, 9999px, 80px, 0);
|
||||
clip: rect(47px, 9999px, 17px, 0);
|
||||
}
|
||||
40% {
|
||||
clip: rect(31px, 9999px, 47px, 0);
|
||||
clip: rect(59px, 9999px, 21px, 0);
|
||||
}
|
||||
45% {
|
||||
clip: rect(66px, 9999px, 66px, 0);
|
||||
clip: rect(60px, 9999px, 93px, 0);
|
||||
}
|
||||
50% {
|
||||
clip: rect(62px, 9999px, 89px, 0);
|
||||
clip: rect(53px, 9999px, 89px, 0);
|
||||
}
|
||||
55% {
|
||||
clip: rect(33px, 9999px, 60px, 0);
|
||||
clip: rect(97px, 9999px, 44px, 0);
|
||||
}
|
||||
60% {
|
||||
clip: rect(91px, 9999px, 20px, 0);
|
||||
clip: rect(5px, 9999px, 84px, 0);
|
||||
}
|
||||
65% {
|
||||
clip: rect(68px, 9999px, 67px, 0);
|
||||
clip: rect(92px, 9999px, 90px, 0);
|
||||
}
|
||||
70% {
|
||||
clip: rect(99px, 9999px, 27px, 0);
|
||||
clip: rect(66px, 9999px, 72px, 0);
|
||||
}
|
||||
75% {
|
||||
clip: rect(80px, 9999px, 76px, 0);
|
||||
clip: rect(78px, 9999px, 46px, 0);
|
||||
}
|
||||
80% {
|
||||
clip: rect(77px, 9999px, 10px, 0);
|
||||
clip: rect(7px, 9999px, 77px, 0);
|
||||
}
|
||||
85% {
|
||||
clip: rect(56px, 9999px, 9px, 0);
|
||||
clip: rect(58px, 9999px, 3px, 0);
|
||||
}
|
||||
90% {
|
||||
clip: rect(28px, 9999px, 20px, 0);
|
||||
clip: rect(62px, 9999px, 55px, 0);
|
||||
}
|
||||
95% {
|
||||
clip: rect(96px, 9999px, 28px, 0);
|
||||
clip: rect(54px, 9999px, 27px, 0);
|
||||
}
|
||||
100% {
|
||||
clip: rect(66px, 9999px, 47px, 0);
|
||||
clip: rect(34px, 9999px, 45px, 0);
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes noise-anim {
|
||||
0% {
|
||||
clip: rect(13px, 9999px, 18px, 0);
|
||||
clip: rect(50px, 9999px, 6px, 0);
|
||||
}
|
||||
5% {
|
||||
clip: rect(85px, 9999px, 77px, 0);
|
||||
clip: rect(35px, 9999px, 70px, 0);
|
||||
}
|
||||
10% {
|
||||
clip: rect(26px, 9999px, 11px, 0);
|
||||
clip: rect(55px, 9999px, 91px, 0);
|
||||
}
|
||||
15% {
|
||||
clip: rect(35px, 9999px, 50px, 0);
|
||||
clip: rect(48px, 9999px, 63px, 0);
|
||||
}
|
||||
20% {
|
||||
clip: rect(61px, 9999px, 9px, 0);
|
||||
clip: rect(91px, 9999px, 71px, 0);
|
||||
}
|
||||
25% {
|
||||
clip: rect(40px, 9999px, 9px, 0);
|
||||
clip: rect(97px, 9999px, 58px, 0);
|
||||
}
|
||||
30% {
|
||||
clip: rect(35px, 9999px, 92px, 0);
|
||||
clip: rect(16px, 9999px, 18px, 0);
|
||||
}
|
||||
35% {
|
||||
clip: rect(21px, 9999px, 80px, 0);
|
||||
clip: rect(47px, 9999px, 17px, 0);
|
||||
}
|
||||
40% {
|
||||
clip: rect(31px, 9999px, 47px, 0);
|
||||
clip: rect(59px, 9999px, 21px, 0);
|
||||
}
|
||||
45% {
|
||||
clip: rect(66px, 9999px, 66px, 0);
|
||||
clip: rect(60px, 9999px, 93px, 0);
|
||||
}
|
||||
50% {
|
||||
clip: rect(62px, 9999px, 89px, 0);
|
||||
clip: rect(53px, 9999px, 89px, 0);
|
||||
}
|
||||
55% {
|
||||
clip: rect(33px, 9999px, 60px, 0);
|
||||
clip: rect(97px, 9999px, 44px, 0);
|
||||
}
|
||||
60% {
|
||||
clip: rect(91px, 9999px, 20px, 0);
|
||||
clip: rect(5px, 9999px, 84px, 0);
|
||||
}
|
||||
65% {
|
||||
clip: rect(68px, 9999px, 67px, 0);
|
||||
clip: rect(92px, 9999px, 90px, 0);
|
||||
}
|
||||
70% {
|
||||
clip: rect(99px, 9999px, 27px, 0);
|
||||
clip: rect(66px, 9999px, 72px, 0);
|
||||
}
|
||||
75% {
|
||||
clip: rect(80px, 9999px, 76px, 0);
|
||||
clip: rect(78px, 9999px, 46px, 0);
|
||||
}
|
||||
80% {
|
||||
clip: rect(77px, 9999px, 10px, 0);
|
||||
clip: rect(7px, 9999px, 77px, 0);
|
||||
}
|
||||
85% {
|
||||
clip: rect(56px, 9999px, 9px, 0);
|
||||
clip: rect(58px, 9999px, 3px, 0);
|
||||
}
|
||||
90% {
|
||||
clip: rect(28px, 9999px, 20px, 0);
|
||||
clip: rect(62px, 9999px, 55px, 0);
|
||||
}
|
||||
95% {
|
||||
clip: rect(96px, 9999px, 28px, 0);
|
||||
clip: rect(54px, 9999px, 27px, 0);
|
||||
}
|
||||
100% {
|
||||
clip: rect(66px, 9999px, 47px, 0);
|
||||
clip: rect(34px, 9999px, 45px, 0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1489,133 +1489,133 @@ form.user .btn-user {
|
||||
|
||||
@-webkit-keyframes noise-anim-2 {
|
||||
0% {
|
||||
clip: rect(97px, 9999px, 72px, 0);
|
||||
clip: rect(84px, 9999px, 44px, 0);
|
||||
}
|
||||
5% {
|
||||
clip: rect(46px, 9999px, 35px, 0);
|
||||
clip: rect(66px, 9999px, 61px, 0);
|
||||
}
|
||||
10% {
|
||||
clip: rect(27px, 9999px, 50px, 0);
|
||||
clip: rect(53px, 9999px, 4px, 0);
|
||||
}
|
||||
15% {
|
||||
clip: rect(53px, 9999px, 96px, 0);
|
||||
clip: rect(77px, 9999px, 27px, 0);
|
||||
}
|
||||
20% {
|
||||
clip: rect(90px, 9999px, 66px, 0);
|
||||
clip: rect(20px, 9999px, 92px, 0);
|
||||
}
|
||||
25% {
|
||||
clip: rect(84px, 9999px, 3px, 0);
|
||||
clip: rect(71px, 9999px, 47px, 0);
|
||||
}
|
||||
30% {
|
||||
clip: rect(72px, 9999px, 15px, 0);
|
||||
clip: rect(25px, 9999px, 41px, 0);
|
||||
}
|
||||
35% {
|
||||
clip: rect(89px, 9999px, 27px, 0);
|
||||
clip: rect(81px, 9999px, 42px, 0);
|
||||
}
|
||||
40% {
|
||||
clip: rect(75px, 9999px, 13px, 0);
|
||||
clip: rect(13px, 9999px, 24px, 0);
|
||||
}
|
||||
45% {
|
||||
clip: rect(60px, 9999px, 51px, 0);
|
||||
clip: rect(33px, 9999px, 45px, 0);
|
||||
}
|
||||
50% {
|
||||
clip: rect(47px, 9999px, 52px, 0);
|
||||
clip: rect(65px, 9999px, 63px, 0);
|
||||
}
|
||||
55% {
|
||||
clip: rect(6px, 9999px, 81px, 0);
|
||||
clip: rect(87px, 9999px, 55px, 0);
|
||||
}
|
||||
60% {
|
||||
clip: rect(52px, 9999px, 40px, 0);
|
||||
clip: rect(46px, 9999px, 21px, 0);
|
||||
}
|
||||
65% {
|
||||
clip: rect(10px, 9999px, 49px, 0);
|
||||
clip: rect(63px, 9999px, 57px, 0);
|
||||
}
|
||||
70% {
|
||||
clip: rect(31px, 9999px, 51px, 0);
|
||||
clip: rect(66px, 9999px, 90px, 0);
|
||||
}
|
||||
75% {
|
||||
clip: rect(43px, 9999px, 58px, 0);
|
||||
clip: rect(45px, 9999px, 50px, 0);
|
||||
}
|
||||
80% {
|
||||
clip: rect(8px, 9999px, 66px, 0);
|
||||
clip: rect(48px, 9999px, 47px, 0);
|
||||
}
|
||||
85% {
|
||||
clip: rect(76px, 9999px, 72px, 0);
|
||||
clip: rect(56px, 9999px, 9px, 0);
|
||||
}
|
||||
90% {
|
||||
clip: rect(7px, 9999px, 73px, 0);
|
||||
clip: rect(51px, 9999px, 79px, 0);
|
||||
}
|
||||
95% {
|
||||
clip: rect(99px, 9999px, 70px, 0);
|
||||
clip: rect(48px, 9999px, 13px, 0);
|
||||
}
|
||||
100% {
|
||||
clip: rect(41px, 9999px, 94px, 0);
|
||||
clip: rect(96px, 9999px, 23px, 0);
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes noise-anim-2 {
|
||||
0% {
|
||||
clip: rect(97px, 9999px, 72px, 0);
|
||||
clip: rect(84px, 9999px, 44px, 0);
|
||||
}
|
||||
5% {
|
||||
clip: rect(46px, 9999px, 35px, 0);
|
||||
clip: rect(66px, 9999px, 61px, 0);
|
||||
}
|
||||
10% {
|
||||
clip: rect(27px, 9999px, 50px, 0);
|
||||
clip: rect(53px, 9999px, 4px, 0);
|
||||
}
|
||||
15% {
|
||||
clip: rect(53px, 9999px, 96px, 0);
|
||||
clip: rect(77px, 9999px, 27px, 0);
|
||||
}
|
||||
20% {
|
||||
clip: rect(90px, 9999px, 66px, 0);
|
||||
clip: rect(20px, 9999px, 92px, 0);
|
||||
}
|
||||
25% {
|
||||
clip: rect(84px, 9999px, 3px, 0);
|
||||
clip: rect(71px, 9999px, 47px, 0);
|
||||
}
|
||||
30% {
|
||||
clip: rect(72px, 9999px, 15px, 0);
|
||||
clip: rect(25px, 9999px, 41px, 0);
|
||||
}
|
||||
35% {
|
||||
clip: rect(89px, 9999px, 27px, 0);
|
||||
clip: rect(81px, 9999px, 42px, 0);
|
||||
}
|
||||
40% {
|
||||
clip: rect(75px, 9999px, 13px, 0);
|
||||
clip: rect(13px, 9999px, 24px, 0);
|
||||
}
|
||||
45% {
|
||||
clip: rect(60px, 9999px, 51px, 0);
|
||||
clip: rect(33px, 9999px, 45px, 0);
|
||||
}
|
||||
50% {
|
||||
clip: rect(47px, 9999px, 52px, 0);
|
||||
clip: rect(65px, 9999px, 63px, 0);
|
||||
}
|
||||
55% {
|
||||
clip: rect(6px, 9999px, 81px, 0);
|
||||
clip: rect(87px, 9999px, 55px, 0);
|
||||
}
|
||||
60% {
|
||||
clip: rect(52px, 9999px, 40px, 0);
|
||||
clip: rect(46px, 9999px, 21px, 0);
|
||||
}
|
||||
65% {
|
||||
clip: rect(10px, 9999px, 49px, 0);
|
||||
clip: rect(63px, 9999px, 57px, 0);
|
||||
}
|
||||
70% {
|
||||
clip: rect(31px, 9999px, 51px, 0);
|
||||
clip: rect(66px, 9999px, 90px, 0);
|
||||
}
|
||||
75% {
|
||||
clip: rect(43px, 9999px, 58px, 0);
|
||||
clip: rect(45px, 9999px, 50px, 0);
|
||||
}
|
||||
80% {
|
||||
clip: rect(8px, 9999px, 66px, 0);
|
||||
clip: rect(48px, 9999px, 47px, 0);
|
||||
}
|
||||
85% {
|
||||
clip: rect(76px, 9999px, 72px, 0);
|
||||
clip: rect(56px, 9999px, 9px, 0);
|
||||
}
|
||||
90% {
|
||||
clip: rect(7px, 9999px, 73px, 0);
|
||||
clip: rect(51px, 9999px, 79px, 0);
|
||||
}
|
||||
95% {
|
||||
clip: rect(99px, 9999px, 70px, 0);
|
||||
clip: rect(48px, 9999px, 13px, 0);
|
||||
}
|
||||
100% {
|
||||
clip: rect(41px, 9999px, 94px, 0);
|
||||
clip: rect(96px, 9999px, 23px, 0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1747,6 +1747,15 @@ body.sidebar-toggled footer.sticky-footer {
|
||||
}
|
||||
}
|
||||
|
||||
.cal-date {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
|
||||
.cal-date:hover {
|
||||
background-color: #ef0813;
|
||||
}
|
||||
|
||||
/*!
|
||||
* Bootstrap v4.3.1 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2019 The Bootstrap Authors
|
||||
@@ -11177,6 +11186,22 @@ button.bg-brand-discord:focus {
|
||||
padding-top: 100%;
|
||||
}
|
||||
|
||||
.embed-responsive-21by9::before {
|
||||
padding-top: 42.85714%;
|
||||
}
|
||||
|
||||
.embed-responsive-16by9::before {
|
||||
padding-top: 56.25%;
|
||||
}
|
||||
|
||||
.embed-responsive-4by3::before {
|
||||
padding-top: 75%;
|
||||
}
|
||||
|
||||
.embed-responsive-1by1::before {
|
||||
padding-top: 100%;
|
||||
}
|
||||
|
||||
.flex-row {
|
||||
-webkit-box-orient: horizontal !important;
|
||||
-webkit-box-direction: normal !important;
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -48,7 +48,7 @@
|
||||
|
||||
</head>
|
||||
|
||||
<body id="page-top" th:data-api_key="${key}" th:data-api_url="${api_url}" th:data-user_id="${id}">
|
||||
<body id="page-top" th:data-api-key="${key}" th:data-api-url="${api_url}" th:data-user-id="${id}">
|
||||
|
||||
<!-- Page Wrapper -->
|
||||
<div id="wrapper">
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
|
||||
</head>
|
||||
|
||||
<body id="page-top" th:data-embed_key="${embed_key}" th:data-api_url="${api_url}">
|
||||
<body id="page-top" th:data-embed-key="${embed_key}" th:data-api-url="${api_url}">
|
||||
|
||||
<!-- Page Wrapper -->
|
||||
<div id="wrapper">
|
||||
@@ -230,13 +230,13 @@
|
||||
border="#bcbcbc" cellpadding="4" cellspacing="0">
|
||||
<tbody>
|
||||
<tr style="height: 50px;">
|
||||
<th class="nav" onclick="previousEmbedMonth()"><</th>
|
||||
<th id="previous-month" class="nav"><</th>
|
||||
<th></th>
|
||||
<th></th>
|
||||
<th id="month-display"></th>
|
||||
<th></th>
|
||||
<th></th>
|
||||
<th class="nav" onclick="nextEmbedMonth()">></th>
|
||||
<th id="next-month" class="nav">></th>
|
||||
</tr>
|
||||
<tr style="height: 40px;">
|
||||
<th>Sunday</th>
|
||||
@@ -247,60 +247,60 @@
|
||||
<th>Friday</th>
|
||||
<th>Saturday</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td onclick="selectEmbedDate(this.id)" id="r1c1"></td>
|
||||
<td onclick="selectEmbedDate(this.id)" id="r1c2"></td>
|
||||
<td onclick="selectEmbedDate(this.id)" id="r1c3"></td>
|
||||
<td onclick="selectEmbedDate(this.id)" id="r1c4"></td>
|
||||
<td onclick="selectEmbedDate(this.id)" id="r1c5"></td>
|
||||
<td onclick="selectEmbedDate(this.id)" id="r1c6"></td>
|
||||
<td onclick="selectEmbedDate(this.id)" id="r1c7"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td onclick="selectEmbedDate(this.id)" id="r2c1"></td>
|
||||
<td onclick="selectEmbedDate(this.id)" id="r2c2"></td>
|
||||
<td onclick="selectEmbedDate(this.id)" id="r2c3"></td>
|
||||
<td onclick="selectEmbedDate(this.id)" id="r2c4"></td>
|
||||
<td onclick="selectEmbedDate(this.id)" id="r2c5"></td>
|
||||
<td onclick="selectEmbedDate(this.id)" id="r2c6"></td>
|
||||
<td onclick="selectEmbedDate(this.id)" id="r2c7"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td onclick="selectEmbedDate(this.id)" id="r3c1"></td>
|
||||
<td onclick="selectEmbedDate(this.id)" id="r3c2"></td>
|
||||
<td onclick="selectEmbedDate(this.id)" id="r3c3"></td>
|
||||
<td onclick="selectEmbedDate(this.id)" id="r3c4"></td>
|
||||
<td onclick="selectEmbedDate(this.id)" id="r3c5"></td>
|
||||
<td onclick="selectEmbedDate(this.id)" id="r3c6"></td>
|
||||
<td onclick="selectEmbedDate(this.id)" id="r3c7"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td onclick="selectEmbedDate(this.id)" id="r4c1"></td>
|
||||
<td onclick="selectEmbedDate(this.id)" id="r4c2"></td>
|
||||
<td onclick="selectEmbedDate(this.id)" id="r4c3"></td>
|
||||
<td onclick="selectEmbedDate(this.id)" id="r4c4"></td>
|
||||
<td onclick="selectEmbedDate(this.id)" id="r4c5"></td>
|
||||
<td onclick="selectEmbedDate(this.id)" id="r4c6"></td>
|
||||
<td onclick="selectEmbedDate(this.id)" id="r4c7"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td onclick="selectEmbedDate(this.id)" id="r5c1"></td>
|
||||
<td onclick="selectEmbedDate(this.id)" id="r5c2"></td>
|
||||
<td onclick="selectEmbedDate(this.id)" id="r5c3"></td>
|
||||
<td onclick="selectEmbedDate(this.id)" id="r5c4"></td>
|
||||
<td onclick="selectEmbedDate(this.id)" id="r5c5"></td>
|
||||
<td onclick="selectEmbedDate(this.id)" id="r5c6"></td>
|
||||
<td onclick="selectEmbedDate(this.id)" id="r5c7"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td onclick="selectEmbedDate(this.id)" id="r6c1"></td>
|
||||
<td onclick="selectEmbedDate(this.id)" id="r6c2"></td>
|
||||
<td onclick="selectEmbedDate(this.id)" id="r6c3"></td>
|
||||
<td onclick="selectEmbedDate(this.id)" id="r6c4"></td>
|
||||
<td onclick="selectEmbedDate(this.id)" id="r6c5"></td>
|
||||
<td onclick="selectEmbedDate(this.id)" id="r6c6"></td>
|
||||
<td onclick="selectEmbedDate(this.id)" id="r6c7"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="cal-date" id="r1c1"></td>
|
||||
<td class="cal-date" id="r1c2"></td>
|
||||
<td class="cal-date" id="r1c3"></td>
|
||||
<td class="cal-date" id="r1c4"></td>
|
||||
<td class="cal-date" id="r1c5"></td>
|
||||
<td class="cal-date" id="r1c6"></td>
|
||||
<td class="cal-date" id="r1c7"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="cal-date" id="r2c1"></td>
|
||||
<td class="cal-date" id="r2c2"></td>
|
||||
<td class="cal-date" id="r2c3"></td>
|
||||
<td class="cal-date" id="r2c4"></td>
|
||||
<td class="cal-date" id="r2c5"></td>
|
||||
<td class="cal-date" id="r2c6"></td>
|
||||
<td class="cal-date" id="r2c7"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="cal-date" id="r3c1"></td>
|
||||
<td class="cal-date" id="r3c2"></td>
|
||||
<td class="cal-date" id="r3c3"></td>
|
||||
<td class="cal-date" id="r3c4"></td>
|
||||
<td class="cal-date" id="r3c5"></td>
|
||||
<td class="cal-date" id="r3c6"></td>
|
||||
<td class="cal-date" id="r3c7"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="cal-date" id="r4c1"></td>
|
||||
<td class="cal-date" id="r4c2"></td>
|
||||
<td class="cal-date" id="r4c3"></td>
|
||||
<td class="cal-date" id="r4c4"></td>
|
||||
<td class="cal-date" id="r4c5"></td>
|
||||
<td class="cal-date" id="r4c6"></td>
|
||||
<td class="cal-date" id="r4c7"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="cal-date" id="r5c1"></td>
|
||||
<td class="cal-date" id="r5c2"></td>
|
||||
<td class="cal-date" id="r5c3"></td>
|
||||
<td class="cal-date" id="r5c4"></td>
|
||||
<td class="cal-date" id="r5c5"></td>
|
||||
<td class="cal-date" id="r5c6"></td>
|
||||
<td class="cal-date" id="r5c7"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="cal-date" id="r6c1"></td>
|
||||
<td class="cal-date" id="r6c2"></td>
|
||||
<td class="cal-date" id="r6c3"></td>
|
||||
<td class="cal-date" id="r6c4"></td>
|
||||
<td class="cal-date" id="r6c5"></td>
|
||||
<td class="cal-date" id="r6c6"></td>
|
||||
<td class="cal-date" id="r6c7"></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ const path = require('path');
|
||||
module.exports = {
|
||||
mode: "production",
|
||||
entry: './web/src/main/javascript/index.ts',
|
||||
devtool: "inline-source-map",
|
||||
module: {
|
||||
rules: [{
|
||||
test: /\.tsx?$/,
|
||||
|
||||
Reference in New Issue
Block a user