minor refactorings

This commit is contained in:
jjaffeux 2020-04-27 16:37:00 +02:00
parent 90edefff0a
commit d38d3478c6
2 changed files with 19 additions and 21 deletions

View File

@ -38,17 +38,13 @@ export default Component.extend({
this._super(...arguments); this._super(...arguments);
(this.events || []).forEach(event => { (this.events || []).forEach(event => {
const { starts_at, ends_at, post } = event;
this._calendar.addEvent({ this._calendar.addEvent({
title: formatEventName(event), title: formatEventName(event),
start: event.starts_at, start: starts_at,
end: event.ends_at || event.starts_at, end: ends_at || starts_at,
allDay: !isNotFullDayEvent( allDay: !isNotFullDayEvent(moment(starts_at), moment(ends_at)),
moment(event.starts_at), url: Discourse.getURL(`/t/-/${post.topic.id}/${post.post_number}`)
moment(event.ends_at)
),
url: Discourse.getURL(
`/t/-/${event.post.topic.id}/${event.post.post_number}`
)
}); });
}); });
this._calendar.render(); this._calendar.render();

View File

@ -1,6 +1,6 @@
import { Promise } from "rsvp";
import { isPresent } from "@ember/utils"; import { isPresent } from "@ember/utils";
import DiscourseURL from "discourse/lib/url"; import DiscourseURL from "discourse/lib/url";
import { Promise } from "rsvp";
import { cookAsync } from "discourse/lib/text"; import { cookAsync } from "discourse/lib/text";
import { escapeExpression } from "discourse/lib/utilities"; import { escapeExpression } from "discourse/lib/utilities";
import loadScript from "discourse/lib/load-script"; import loadScript from "discourse/lib/load-script";
@ -25,6 +25,14 @@ function stringToHexColor(str) {
return hex; return hex;
} }
function loadFullCalendar() {
return new Promise(resolve =>
loadScript(
"/plugins/discourse-calendar/javascripts/fullcalendar-with-moment-timezone.min.js"
).then(resolve)
);
}
function initializeDiscourseCalendar(api) { function initializeDiscourseCalendar(api) {
let _topicController; let _topicController;
const outletName = Discourse.SiteSettings.calendar_categories_outlet; const outletName = Discourse.SiteSettings.calendar_categories_outlet;
@ -71,9 +79,7 @@ function initializeDiscourseCalendar(api) {
'<div class="calendar"><div class="spinner medium"></div></div>' '<div class="calendar"><div class="spinner medium"></div></div>'
); );
$calendarContainer.html($spinner); $calendarContainer.html($spinner);
loadScript( loadFullCalendar().then(() => {
"/plugins/discourse-calendar/javascripts/fullcalendar-with-moment-timezone.min.js"
).then(() => {
const options = [`postId=${postId}`]; const options = [`postId=${postId}`];
const optionals = ["weekends", "tzPicker", "defaultView"]; const optionals = ["weekends", "tzPicker", "defaultView"];
@ -114,11 +120,9 @@ function initializeDiscourseCalendar(api) {
const $calendar = $op.find(".calendar").first(); const $calendar = $op.find(".calendar").first();
if (post && $calendar.length > 0) { if (post && $calendar.length > 0) {
ajax(`/posts/${post.id}.json`).then(post => { ajax(`/posts/${post.id}.json`).then(post =>
loadScript( loadFullCalendar().then(() => render($calendar, post))
"/plugins/discourse-calendar/javascripts/fullcalendar-with-moment-timezone.min.js" );
).then(() => render($calendar, post));
});
} }
}); });
@ -154,9 +158,7 @@ function initializeDiscourseCalendar(api) {
return; return;
} }
loadScript( loadFullCalendar().then(() => render($calendar, helper.getModel()));
"/plugins/discourse-calendar/javascripts/fullcalendar-with-moment-timezone.min.js"
).then(() => render($calendar, helper.getModel()));
} }
function _buildCalendar($calendar, timeZone) { function _buildCalendar($calendar, timeZone) {