Update to FullCalendar 5; remove Moment from all Vue components.

This commit is contained in:
Buster "Silver Eagle" Neece 2021-09-15 18:48:30 -05:00
parent 46edc2318b
commit 480f0ed8a7
No known key found for this signature in database
GPG Key ID: 6D9E12FF03411F4E
17 changed files with 177 additions and 191 deletions

View File

@ -245,12 +245,6 @@ return [
],
],
'Vue_PublicSchedule' => [
'order' => 10,
'require' => ['moment'],
// Auto-managed by Assets
],
'Vue_PublicWebDJ' => [
'order' => 10,
'files' => [
@ -270,22 +264,4 @@ return [
],
],
],
'Vue_StationsPlaylists' => [
'order' => 10,
'require' => ['moment'],
// Auto-managed by Assets
],
'Vue_StationsPodcasts' => [
'order' => 10,
'require' => ['moment'],
// Auto-managed by Assets
],
'Vue_StationsStreamers' => [
'order' => 10,
'require' => ['moment'],
// Auto-managed by Assets
],
];

View File

@ -11,12 +11,11 @@
"@babel/preset-env": "^7.15.6",
"@fancyapps/fancybox": "^3.5.7",
"@flowjs/flow.js": "^2.14.1",
"@fullcalendar/core": "^4",
"@fullcalendar/daygrid": "^4",
"@fullcalendar/moment": "^4",
"@fullcalendar/moment-timezone": "^4",
"@fullcalendar/timegrid": "^4",
"@fullcalendar/vue": "^4",
"@fullcalendar/core": "^5.9.0",
"@fullcalendar/daygrid": "^5.9.0",
"@fullcalendar/luxon": "^5.9.0",
"@fullcalendar/timegrid": "^5.9.0",
"@fullcalendar/vue": "^5.9.0",
"autosize": "^4.0.2",
"axios": "^0.21.4",
"bootstrap": "^4.6.0",
@ -42,12 +41,13 @@
"gulp-run-command": "0.0.10",
"gulp-sourcemaps": "^2.6.5",
"gulp-uglify": "^3.0.2",
"humanize-duration": "^3.27.0",
"imports-loader": "^3.0.0",
"jquery": "^3.6.0",
"leaflet": "^1.7.1",
"leaflet.fullscreen": "^1.6.0",
"lodash": "^4.17.21",
"luxon": "^2.0.2",
"luxon": "^1.28.0",
"material-icons": "^0.5.5",
"moment": "^2.29.1",
"moment-timezone": "^0.5.33",
@ -2009,66 +2009,67 @@
"resolved": "https://registry.npmjs.org/@flowjs/flow.js/-/flow.js-2.14.1.tgz",
"integrity": "sha512-99DWlPnksOOS8uHfo+bhSjvs8d2MfLTB/22JBDC2ONwz/OCdP+gL/iiM4puMSTE2wH4A2/+J0eMc7pKwusXunw=="
},
"node_modules/@fullcalendar/common": {
"version": "5.9.0",
"resolved": "https://registry.npmjs.org/@fullcalendar/common/-/common-5.9.0.tgz",
"integrity": "sha512-wfUDRg53gzUU7Ng1wqjvvM2ncFx+5PiyCq5k2KjEbMourv7m4Zw6B3xlhpQbfUv3WOnbJgwLLNLFEMcsEJpXBQ==",
"dependencies": {
"tslib": "^2.1.0"
}
},
"node_modules/@fullcalendar/core": {
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/@fullcalendar/core/-/core-4.4.2.tgz",
"integrity": "sha512-vq7KQGuAJ1ieFG5tUqwxwUwmXYtblFOTjHaLAVHo6iEPB52mS7DS45VJfkhaQmX4+5/+BHRpg82G1qkuAINwtg=="
"version": "5.9.0",
"resolved": "https://registry.npmjs.org/@fullcalendar/core/-/core-5.9.0.tgz",
"integrity": "sha512-3+zSm8ykXqM2vEGYp4P/BEoR2TB0W9mN6zBGZ6SY9y0nC+Fc0+ZXJmFlYmrEYSdO4kmREnlxntkp1+o9mu8PIQ==",
"dependencies": {
"@fullcalendar/common": "~5.9.0",
"preact": "^10.0.5",
"tslib": "^2.1.0"
}
},
"node_modules/@fullcalendar/daygrid": {
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/@fullcalendar/daygrid/-/daygrid-4.4.2.tgz",
"integrity": "sha512-axjfMhxEXHShV3r2TZjf+2niJ1C6LdAxkHKmg7mVq4jXtUQHOldU5XsjV0v2lUAt1urJBFi2zajfK8798ukL3Q==",
"peerDependencies": {
"@fullcalendar/core": "~4.4.0"
"version": "5.9.0",
"resolved": "https://registry.npmjs.org/@fullcalendar/daygrid/-/daygrid-5.9.0.tgz",
"integrity": "sha512-yTYjTM+bjTWfq5uUnSMBH4j1il+b0IAAe+q2UcAeky4iggwn9pi+taUtETtlPTQCSBSWaF8TuEZ3+apB0RrjyQ==",
"dependencies": {
"@fullcalendar/common": "~5.9.0",
"tslib": "^2.1.0"
}
},
"node_modules/@fullcalendar/moment": {
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/@fullcalendar/moment/-/moment-4.4.2.tgz",
"integrity": "sha512-PBrjxxDEG3RO+8SOA3a1YA7yoGI3bgnltiGY3ehOtJwFIMsUQDSSr5aMoWyRpz7MXgp2YOQY5rzMEIp2A8eK9w==",
"node_modules/@fullcalendar/luxon": {
"version": "5.9.0",
"resolved": "https://registry.npmjs.org/@fullcalendar/luxon/-/luxon-5.9.0.tgz",
"integrity": "sha512-N2ZMJ7JD1yBt56pumi3CSo9PHf8eVsbfMU+ECvvifyae1Zi2SRQhpV1LnWm92BVg4dPk42Ciz0TB4TaH6um3EA==",
"dependencies": {
"@fullcalendar/common": "~5.9.0",
"tslib": "^2.1.0"
},
"peerDependencies": {
"@fullcalendar/core": "~4.4.0",
"moment": "^2.24.0"
}
},
"node_modules/@fullcalendar/moment-timezone": {
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/@fullcalendar/moment-timezone/-/moment-timezone-4.4.2.tgz",
"integrity": "sha512-8CjGpBdrQqDh60y6BQJScR2OcCNghPrMFNXd5L9PkU6ktfoYJapTyPZNddCXPPFiPJJdEmarU+RxPxgkl/EP9g==",
"peerDependencies": {
"@fullcalendar/core": "~4.4.0",
"moment": "^2.24.0",
"moment-timezone": "^0.5.25"
"luxon": "^1.12.1"
}
},
"node_modules/@fullcalendar/timegrid": {
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/@fullcalendar/timegrid/-/timegrid-4.4.2.tgz",
"integrity": "sha512-M5an7qii8OUmI4ogY47k5pn2j/qUbLp6sa6Vo0gO182HR5pb9YtrEZnoQhnScok+I0BkDkLFzMQoiAMTjBm2PQ==",
"version": "5.9.0",
"resolved": "https://registry.npmjs.org/@fullcalendar/timegrid/-/timegrid-5.9.0.tgz",
"integrity": "sha512-X9JLepHz6hSuiziVkIlgBkx/W/5E4nIqJ6i0LISk3zPFH/Arn0QjQU345ISys8OTwezPUgJvLGrl4Yy4/gRULw==",
"dependencies": {
"@fullcalendar/daygrid": "~4.4.0"
},
"peerDependencies": {
"@fullcalendar/core": "~4.4.0"
"@fullcalendar/common": "~5.9.0",
"@fullcalendar/daygrid": "~5.9.0",
"tslib": "^2.1.0"
}
},
"node_modules/@fullcalendar/vue": {
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/@fullcalendar/vue/-/vue-4.4.2.tgz",
"integrity": "sha512-Iq5l8s0exyUI2vicPDs1Hn6SFLy0gnFAOEINqXixmnn9+U2fHgM++ofal1yKqpU9bAWE4d58Mizu2tlDlc6NyQ==",
"version": "5.9.0",
"resolved": "https://registry.npmjs.org/@fullcalendar/vue/-/vue-5.9.0.tgz",
"integrity": "sha512-P18svkJldj9dz0AZN0PTKzhcXOJJ9Do5T0iI9GNOXu+WqdQJdtBEyl87A+VgWn85CvefWqf5Yc44U4LdW1QjiA==",
"dependencies": {
"@fullcalendar/core": "~4.4.0",
"fast-deep-equal": "^2.0.1"
"@fullcalendar/core": "~5.9.0",
"tslib": "^2.1.0"
},
"peerDependencies": {
"vue": "^2.6.6"
"vue": "^2.6.12"
}
},
"node_modules/@fullcalendar/vue/node_modules/fast-deep-equal": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
"integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk="
},
"node_modules/@gulp-sourcemaps/identity-map": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/@gulp-sourcemaps/identity-map/-/identity-map-1.0.2.tgz",
@ -5773,6 +5774,11 @@
"node": ">=10.17.0"
}
},
"node_modules/humanize-duration": {
"version": "3.27.0",
"resolved": "https://registry.npmjs.org/humanize-duration/-/humanize-duration-3.27.0.tgz",
"integrity": "sha512-qLo/08cNc3Tb0uD7jK0jAcU5cnqCM0n568918E7R2XhMr/+7F37p4EY062W/stg7tmzvknNn9b/1+UhVRzsYrQ=="
},
"node_modules/icss-replace-symbols": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz",
@ -6555,9 +6561,9 @@
}
},
"node_modules/luxon": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/luxon/-/luxon-2.0.2.tgz",
"integrity": "sha512-ZRioYLCgRHrtTORaZX1mx+jtxKtKuI5ZDvHNAmqpUzGqSrR+tL4FVLn/CUGMA3h0+AKD1MAxGI5GnCqR5txNqg==",
"version": "1.28.0",
"resolved": "https://registry.npmjs.org/luxon/-/luxon-1.28.0.tgz",
"integrity": "sha512-TfTiyvZhwBYM/7QdAVDh+7dBTBA29v4ik0Ce9zda3Mnf8on1S5KJI8P2jKFZ8+5C0jhmr0KwJEO/Wdpm0VeWJQ==",
"engines": {
"node": "*"
}
@ -7587,6 +7593,15 @@
"node": ">=0.10.0"
}
},
"node_modules/preact": {
"version": "10.5.14",
"resolved": "https://registry.npmjs.org/preact/-/preact-10.5.14.tgz",
"integrity": "sha512-KojoltCrshZ099ksUZ2OQKfbH66uquFoxHSbnwKbTJHeQNvx42EmC7wQVWNuDt6vC5s3nudRHFtKbpY4ijKlaQ==",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/preact"
}
},
"node_modules/prettier": {
"version": "1.12.1",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-1.12.1.tgz",
@ -11266,51 +11281,59 @@
"resolved": "https://registry.npmjs.org/@flowjs/flow.js/-/flow.js-2.14.1.tgz",
"integrity": "sha512-99DWlPnksOOS8uHfo+bhSjvs8d2MfLTB/22JBDC2ONwz/OCdP+gL/iiM4puMSTE2wH4A2/+J0eMc7pKwusXunw=="
},
"@fullcalendar/common": {
"version": "5.9.0",
"resolved": "https://registry.npmjs.org/@fullcalendar/common/-/common-5.9.0.tgz",
"integrity": "sha512-wfUDRg53gzUU7Ng1wqjvvM2ncFx+5PiyCq5k2KjEbMourv7m4Zw6B3xlhpQbfUv3WOnbJgwLLNLFEMcsEJpXBQ==",
"requires": {
"tslib": "^2.1.0"
}
},
"@fullcalendar/core": {
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/@fullcalendar/core/-/core-4.4.2.tgz",
"integrity": "sha512-vq7KQGuAJ1ieFG5tUqwxwUwmXYtblFOTjHaLAVHo6iEPB52mS7DS45VJfkhaQmX4+5/+BHRpg82G1qkuAINwtg=="
"version": "5.9.0",
"resolved": "https://registry.npmjs.org/@fullcalendar/core/-/core-5.9.0.tgz",
"integrity": "sha512-3+zSm8ykXqM2vEGYp4P/BEoR2TB0W9mN6zBGZ6SY9y0nC+Fc0+ZXJmFlYmrEYSdO4kmREnlxntkp1+o9mu8PIQ==",
"requires": {
"@fullcalendar/common": "~5.9.0",
"preact": "^10.0.5",
"tslib": "^2.1.0"
}
},
"@fullcalendar/daygrid": {
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/@fullcalendar/daygrid/-/daygrid-4.4.2.tgz",
"integrity": "sha512-axjfMhxEXHShV3r2TZjf+2niJ1C6LdAxkHKmg7mVq4jXtUQHOldU5XsjV0v2lUAt1urJBFi2zajfK8798ukL3Q==",
"requires": {}
"version": "5.9.0",
"resolved": "https://registry.npmjs.org/@fullcalendar/daygrid/-/daygrid-5.9.0.tgz",
"integrity": "sha512-yTYjTM+bjTWfq5uUnSMBH4j1il+b0IAAe+q2UcAeky4iggwn9pi+taUtETtlPTQCSBSWaF8TuEZ3+apB0RrjyQ==",
"requires": {
"@fullcalendar/common": "~5.9.0",
"tslib": "^2.1.0"
}
},
"@fullcalendar/moment": {
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/@fullcalendar/moment/-/moment-4.4.2.tgz",
"integrity": "sha512-PBrjxxDEG3RO+8SOA3a1YA7yoGI3bgnltiGY3ehOtJwFIMsUQDSSr5aMoWyRpz7MXgp2YOQY5rzMEIp2A8eK9w==",
"requires": {}
},
"@fullcalendar/moment-timezone": {
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/@fullcalendar/moment-timezone/-/moment-timezone-4.4.2.tgz",
"integrity": "sha512-8CjGpBdrQqDh60y6BQJScR2OcCNghPrMFNXd5L9PkU6ktfoYJapTyPZNddCXPPFiPJJdEmarU+RxPxgkl/EP9g==",
"requires": {}
"@fullcalendar/luxon": {
"version": "5.9.0",
"resolved": "https://registry.npmjs.org/@fullcalendar/luxon/-/luxon-5.9.0.tgz",
"integrity": "sha512-N2ZMJ7JD1yBt56pumi3CSo9PHf8eVsbfMU+ECvvifyae1Zi2SRQhpV1LnWm92BVg4dPk42Ciz0TB4TaH6um3EA==",
"requires": {
"@fullcalendar/common": "~5.9.0",
"tslib": "^2.1.0"
}
},
"@fullcalendar/timegrid": {
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/@fullcalendar/timegrid/-/timegrid-4.4.2.tgz",
"integrity": "sha512-M5an7qii8OUmI4ogY47k5pn2j/qUbLp6sa6Vo0gO182HR5pb9YtrEZnoQhnScok+I0BkDkLFzMQoiAMTjBm2PQ==",
"version": "5.9.0",
"resolved": "https://registry.npmjs.org/@fullcalendar/timegrid/-/timegrid-5.9.0.tgz",
"integrity": "sha512-X9JLepHz6hSuiziVkIlgBkx/W/5E4nIqJ6i0LISk3zPFH/Arn0QjQU345ISys8OTwezPUgJvLGrl4Yy4/gRULw==",
"requires": {
"@fullcalendar/daygrid": "~4.4.0"
"@fullcalendar/common": "~5.9.0",
"@fullcalendar/daygrid": "~5.9.0",
"tslib": "^2.1.0"
}
},
"@fullcalendar/vue": {
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/@fullcalendar/vue/-/vue-4.4.2.tgz",
"integrity": "sha512-Iq5l8s0exyUI2vicPDs1Hn6SFLy0gnFAOEINqXixmnn9+U2fHgM++ofal1yKqpU9bAWE4d58Mizu2tlDlc6NyQ==",
"version": "5.9.0",
"resolved": "https://registry.npmjs.org/@fullcalendar/vue/-/vue-5.9.0.tgz",
"integrity": "sha512-P18svkJldj9dz0AZN0PTKzhcXOJJ9Do5T0iI9GNOXu+WqdQJdtBEyl87A+VgWn85CvefWqf5Yc44U4LdW1QjiA==",
"requires": {
"@fullcalendar/core": "~4.4.0",
"fast-deep-equal": "^2.0.1"
},
"dependencies": {
"fast-deep-equal": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
"integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk="
}
"@fullcalendar/core": "~5.9.0",
"tslib": "^2.1.0"
}
},
"@gulp-sourcemaps/identity-map": {
@ -14256,6 +14279,11 @@
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
"integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw=="
},
"humanize-duration": {
"version": "3.27.0",
"resolved": "https://registry.npmjs.org/humanize-duration/-/humanize-duration-3.27.0.tgz",
"integrity": "sha512-qLo/08cNc3Tb0uD7jK0jAcU5cnqCM0n568918E7R2XhMr/+7F37p4EY062W/stg7tmzvknNn9b/1+UhVRzsYrQ=="
},
"icss-replace-symbols": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz",
@ -14863,9 +14891,9 @@
}
},
"luxon": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/luxon/-/luxon-2.0.2.tgz",
"integrity": "sha512-ZRioYLCgRHrtTORaZX1mx+jtxKtKuI5ZDvHNAmqpUzGqSrR+tL4FVLn/CUGMA3h0+AKD1MAxGI5GnCqR5txNqg=="
"version": "1.28.0",
"resolved": "https://registry.npmjs.org/luxon/-/luxon-1.28.0.tgz",
"integrity": "sha512-TfTiyvZhwBYM/7QdAVDh+7dBTBA29v4ik0Ce9zda3Mnf8on1S5KJI8P2jKFZ8+5C0jhmr0KwJEO/Wdpm0VeWJQ=="
},
"magic-string": {
"version": "0.25.7",
@ -15656,6 +15684,11 @@
"resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
"integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ=="
},
"preact": {
"version": "10.5.14",
"resolved": "https://registry.npmjs.org/preact/-/preact-10.5.14.tgz",
"integrity": "sha512-KojoltCrshZ099ksUZ2OQKfbH66uquFoxHSbnwKbTJHeQNvx42EmC7wQVWNuDt6vC5s3nudRHFtKbpY4ijKlaQ=="
},
"prettier": {
"version": "1.12.1",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-1.12.1.tgz",

View File

@ -14,12 +14,11 @@
"@babel/preset-env": "^7.15.6",
"@fancyapps/fancybox": "^3.5.7",
"@flowjs/flow.js": "^2.14.1",
"@fullcalendar/core": "^4",
"@fullcalendar/daygrid": "^4",
"@fullcalendar/moment": "^4",
"@fullcalendar/moment-timezone": "^4",
"@fullcalendar/timegrid": "^4",
"@fullcalendar/vue": "^4",
"@fullcalendar/core": "^5.9.0",
"@fullcalendar/daygrid": "^5.9.0",
"@fullcalendar/luxon": "^5.9.0",
"@fullcalendar/timegrid": "^5.9.0",
"@fullcalendar/vue": "^5.9.0",
"autosize": "^4.0.2",
"axios": "^0.21.4",
"bootstrap": "^4.6.0",
@ -45,12 +44,13 @@
"gulp-run-command": "0.0.10",
"gulp-sourcemaps": "^2.6.5",
"gulp-uglify": "^3.0.2",
"humanize-duration": "^3.27.0",
"imports-loader": "^3.0.0",
"jquery": "^3.6.0",
"leaflet": "^1.7.1",
"leaflet.fullscreen": "^1.6.0",
"lodash": "^4.17.21",
"luxon": "^2.0.2",
"luxon": "^1.28.0",
"material-icons": "^0.5.5",
"moment": "^2.29.1",
"moment-timezone": "^0.5.33",

View File

@ -1,5 +1,5 @@
.fc {
&.fc-unthemed {
&.fc-theme-standard {
th, td, thead, body, .fc-divider, .fc-row,
.fc-content, .fc-popover, .fc-list-view, .fc-list-heading td {
border-color: $theme-color-4;

View File

@ -1,19 +1,11 @@
.fc {
table {
thead.fc-head td {
border-top-width: 0;
&.fc-theme-standard {
.fc-scrollgrid {
border: 0;
}
th:first-child, td:first-child {
border-left-width: 0;
}
th:last-child, td:last-child {
border-right-width: 0;
}
tbody.fc-body td {
border-bottom-width: 0;
.fc-scrollgrid-section-sticky > * {
background: none;
}
}
}

View File

@ -1,31 +1,39 @@
<template>
<full-calendar ref="calendar" :plugins="plugins" :locales="locales" :time-zone="stationTimeZone"
theme-system="bootstrap4"
:now-indicator="true" default-view="timeGridWeek" default-timed-event-duration="00:20"
:locale="locale" :header="false" :footer="false" height="auto"
:events="scheduleUrl" @eventClick="onEventClick">
</full-calendar>
<full-calendar ref="calendar" :options="calendarOptions" @eventClick="onEventClick"></full-calendar>
</template>
<script>
import '@fullcalendar/core/vdom';
import FullCalendar from '@fullcalendar/vue';
import allLocales from '@fullcalendar/core/locales-all';
import momentPlugin from '@fullcalendar/moment';
import momentTimezonePlugin from '@fullcalendar/moment-timezone';
import luxonPlugin from '@fullcalendar/luxon';
import timeGridPlugin from '@fullcalendar/timegrid';
export default {
name: 'Schedule',
components: { FullCalendar },
components: {FullCalendar},
props: {
scheduleUrl: String,
stationTimeZone: String,
locale: String
},
data () {
data() {
return {
locales: allLocales,
plugins: [momentPlugin, momentTimezonePlugin, timeGridPlugin]
calendarOptions: {
locales: allLocales,
plugins: [luxonPlugin, timeGridPlugin],
initialView: 'timeGridWeek',
timeZone: this.stationTimeZone,
themeSystem: 'bootstrap',
nowIndicator: true,
defaultTimedEventDuration: '00:20',
locale: this.locale,
headerToolbar: false,
footerToolbar: false,
height: 'auto',
events: this.scheduleUrl,
eventClick: this.onEventClick
}
};
},
methods: {
@ -38,9 +46,3 @@ export default {
}
};
</script>
<style lang="scss">
@import '~@fullcalendar/core/main.css';
@import '~@fullcalendar/daygrid/main.css';
@import '~@fullcalendar/timegrid/main.css';
</style>

View File

@ -46,16 +46,5 @@ export default {
locale: String,
stationTimeZone: String
},
mounted () {
moment.relativeTimeThreshold('ss', 1);
moment.relativeTimeRounding(function (value) {
return Math.round(value * 10) / 10;
});
},
methods: {
formatTime (time) {
return moment(time).tz(this.stationTimeZone).format('LT');
}
}
};
</script>

View File

@ -134,6 +134,8 @@ import QueueModal from './Playlists/QueueModal';
import Icon from '~/components/Common/Icon';
import handleAxiosError from '~/functions/handleAxiosError';
import CloneModal from './Playlists/CloneModal';
import {DateTime} from 'luxon';
import humanizeDuration from 'humanize-duration';
export default {
name: 'StationPlaylists',
@ -182,12 +184,6 @@ export default {
return this.$gettext('Import from PLS/M3U');
}
},
mounted () {
moment.relativeTimeThreshold('ss', 1);
moment.relativeTimeRounding(function (value) {
return Math.round(value * 10) / 10;
});
},
methods: {
langToggleButton (record) {
return (record.is_enabled)
@ -195,10 +191,14 @@ export default {
: this.$gettext('Enable');
},
formatTime (time) {
return moment(time).tz(this.stationTimeZone).format('LT');
return DateTime.fromSeconds(time).setZone(this.stationTimeZone).toLocaleString(DateTime.DATETIME_MED);
},
formatLength (length) {
return moment.duration(length, 'seconds').humanize();
return humanizeDuration(length * 1000, {
round: true,
language: App.locale_short,
fallbacks: ['en']
});
},
formatType (record) {
if (!record.is_enabled) {

View File

@ -33,6 +33,7 @@ import BaseEditModal from '~/components/Common/BaseEditModal';
import EpisodeFormBasicInfo from './EpisodeForm/BasicInfo';
import PodcastCommonArtwork from './Common/Artwork';
import EpisodeFormMedia from './EpisodeForm/Media';
import {DateTime} from 'luxon';
export default {
name: 'EditModal',
@ -116,9 +117,9 @@ export default {
let publishTime = '';
if (d.publishAt !== null) {
let publishDateTime = moment.unix(d.publishAt);
publishDate = publishDateTime.format('YYYY-MM-DD');
publishTime = publishDateTime.format('hh:mm');
let publishDateTime = DateTime.fromSeconds(d.publishAt);
publishDate = publishDateTime.toISODate();
publishTime = publishDateTime.toFormat('hh:mm');
}
this.record = d;
@ -136,9 +137,9 @@ export default {
let modifiedForm = this.form;
if (modifiedForm.publish_date.length > 0 && modifiedForm.publish_time.length > 0) {
let publishDateTimeString = modifiedForm.publish_date + ' ' + modifiedForm.publish_time;
let publishDateTime = moment(publishDateTimeString);
let publishDateTime = DateTime.fromFormat(publishDateTimeString, 'YYYY-mm-dd HH:ss');
modifiedForm.publish_at = publishDateTime.unix();
modifiedForm.publish_at = publishDateTime.toSeconds();
}
return {

View File

@ -94,12 +94,6 @@ export default {
return this.$gettext('Schedule View');
}
},
mounted () {
moment.relativeTimeThreshold('ss', 1);
moment.relativeTimeRounding(function (value) {
return Math.round(value * 10) / 10;
});
},
methods: {
relist () {
this.$refs.datatable.refresh();

View File

@ -42,6 +42,7 @@ import InlinePlayer from '~/components/InlinePlayer';
import Icon from '~/components/Common/Icon';
import handleAxiosError from '~/functions/handleAxiosError';
import PlayButton from "~/components/Common/PlayButton";
import {DateTime} from 'luxon';
export default {
name: 'StreamerBroadcastsModal',
@ -61,7 +62,7 @@ export default {
label: this.$gettext('Start Time'),
sortable: false,
formatter: (value, key, item) => {
return moment.unix(value).format('lll');
return DateTime.fromSeconds(value).toLocaleString(DateTime.DATETIME_MED);
}
},
{
@ -72,7 +73,7 @@ export default {
if (value === 0) {
return this.$gettext('Live');
}
return moment.unix(value).format('lll');
return DateTime.fromSeconds(value).toLocaleString(DateTime.DATETIME_MED);
}
},
{

View File

@ -1,5 +1,6 @@
import '~/base.js';
import '~/vendor/bootstrapVue.js';
import '~/vendor/luxon.js';
import Vue
from 'vue';

View File

@ -1,5 +1,6 @@
import '~/base.js';
import '~/vendor/bootstrapVue.js';
import '~/vendor/luxon.js';
import Vue
from 'vue';

View File

@ -1,6 +1,7 @@
import '~/base.js';
import '~/vendor/bootstrapVue.js';
import '~/vendor/fancybox.js';
import '~/vendor/luxon.js';
import Vue
from 'vue';

View File

@ -1,6 +1,7 @@
import '~/base.js';
import '~/vendor/bootstrapVue.js';
import '~/store.js';
import '~/vendor/luxon.js';
import Vue
from 'vue';

View File

@ -3,5 +3,5 @@ import { Settings } from 'luxon';
document.addEventListener('DOMContentLoaded', function () {
Settings.defaultLocale = App.locale_with_dashes;
Settings.defaultZone = 'UTC';
Settings.defaultZoneName = 'UTC';
});

View File

@ -1,6 +0,0 @@
import moment
from 'moment-timezone';
document.addEventListener('DOMContentLoaded', function () {
moment.locale(App.locale_with_dashes);
});