|
@@ -1,6 +1,8 @@
|
|
|
Sidebar = null;
|
|
|
|
|
|
const defaultView = 'home';
|
|
|
+const MCB = '.materialCheckBox';
|
|
|
+const CKCLS = 'is-checked';
|
|
|
|
|
|
const viewTitles = {
|
|
|
filter: 'filter-cards',
|
|
@@ -280,44 +282,71 @@ Template.membersWidget.events({
|
|
|
});
|
|
|
|
|
|
BlazeComponent.extendComponent({
|
|
|
+ boardId() {
|
|
|
+ return Session.get('currentBoard') || Integrations.Const.GLOBAL_WEBHOOK_ID;
|
|
|
+ },
|
|
|
integrations() {
|
|
|
- const boardId = Session.get('currentBoard');
|
|
|
+ const boardId = this.boardId();
|
|
|
return Integrations.find({ boardId: `${boardId}` }).fetch();
|
|
|
},
|
|
|
-
|
|
|
- integration(id) {
|
|
|
- const boardId = Session.get('currentBoard');
|
|
|
- return Integrations.findOne({ _id: id, boardId: `${boardId}` });
|
|
|
+ types() {
|
|
|
+ return Integrations.Const.WEBHOOK_TYPES;
|
|
|
+ },
|
|
|
+ integration(cond) {
|
|
|
+ const boardId = this.boardId();
|
|
|
+ const condition = { boardId, ...cond };
|
|
|
+ for (const k in condition) {
|
|
|
+ if (!condition[k]) delete condition[k];
|
|
|
+ }
|
|
|
+ return Integrations.findOne(condition);
|
|
|
+ },
|
|
|
+ onCreated() {
|
|
|
+ this.disabled = new ReactiveVar(false);
|
|
|
},
|
|
|
-
|
|
|
events() {
|
|
|
return [
|
|
|
{
|
|
|
+ 'click a.flex'(evt) {
|
|
|
+ this.disabled.set(!this.disabled.get());
|
|
|
+ $(evt.target).toggleClass(CKCLS, this.disabled.get());
|
|
|
+ },
|
|
|
submit(evt) {
|
|
|
evt.preventDefault();
|
|
|
const url = evt.target.url.value;
|
|
|
- const boardId = Session.get('currentBoard');
|
|
|
+ const boardId = this.boardId();
|
|
|
let id = null;
|
|
|
let integration = null;
|
|
|
+ const title = evt.target.title.value;
|
|
|
+ const token = evt.target.token.value;
|
|
|
+ const type = evt.target.type.value;
|
|
|
+ const enabled = !this.disabled.get();
|
|
|
+ let remove = false;
|
|
|
+ const values = {
|
|
|
+ url,
|
|
|
+ type,
|
|
|
+ token,
|
|
|
+ title,
|
|
|
+ enabled,
|
|
|
+ };
|
|
|
if (evt.target.id) {
|
|
|
id = evt.target.id.value;
|
|
|
- integration = this.integration(id);
|
|
|
- if (url) {
|
|
|
- Integrations.update(integration._id, {
|
|
|
- $set: {
|
|
|
- url: `${url}`,
|
|
|
- },
|
|
|
- });
|
|
|
- } else {
|
|
|
- Integrations.remove(integration._id);
|
|
|
- }
|
|
|
+ integration = this.integration({ _id: id });
|
|
|
+ remove = !url;
|
|
|
+ } else if (url) {
|
|
|
+ integration = this.integration({ url, token });
|
|
|
+ }
|
|
|
+ if (remove) {
|
|
|
+ Integrations.remove(integration._id);
|
|
|
+ } else if (integration && integration._id) {
|
|
|
+ Integrations.update(integration._id, {
|
|
|
+ $set: values,
|
|
|
+ });
|
|
|
} else if (url) {
|
|
|
Integrations.insert({
|
|
|
+ ...values,
|
|
|
userId: Meteor.userId(),
|
|
|
enabled: true,
|
|
|
- type: 'outgoing-webhooks',
|
|
|
- url: `${url}`,
|
|
|
- boardId: `${boardId}`,
|
|
|
+ boardId,
|
|
|
activities: ['all'],
|
|
|
});
|
|
|
}
|
|
@@ -474,12 +503,12 @@ BlazeComponent.extendComponent({
|
|
|
evt.preventDefault();
|
|
|
this.currentBoard.allowsSubtasks = !this.currentBoard.allowsSubtasks;
|
|
|
this.currentBoard.setAllowsSubtasks(this.currentBoard.allowsSubtasks);
|
|
|
- $('.js-field-has-subtasks .materialCheckBox').toggleClass(
|
|
|
- 'is-checked',
|
|
|
+ $(`.js-field-has-subtasks ${MCB}`).toggleClass(
|
|
|
+ CKCLS,
|
|
|
this.currentBoard.allowsSubtasks,
|
|
|
);
|
|
|
$('.js-field-has-subtasks').toggleClass(
|
|
|
- 'is-checked',
|
|
|
+ CKCLS,
|
|
|
this.currentBoard.allowsSubtasks,
|
|
|
);
|
|
|
$('.js-field-deposit-board').prop(
|
|
@@ -515,15 +544,12 @@ BlazeComponent.extendComponent({
|
|
|
];
|
|
|
options.forEach(function(element) {
|
|
|
if (element !== value) {
|
|
|
- $(`#${element} .materialCheckBox`).toggleClass(
|
|
|
- 'is-checked',
|
|
|
- false,
|
|
|
- );
|
|
|
- $(`#${element}`).toggleClass('is-checked', false);
|
|
|
+ $(`#${element} ${MCB}`).toggleClass(CKCLS, false);
|
|
|
+ $(`#${element}`).toggleClass(CKCLS, false);
|
|
|
}
|
|
|
});
|
|
|
- $(`#${value} .materialCheckBox`).toggleClass('is-checked', true);
|
|
|
- $(`#${value}`).toggleClass('is-checked', true);
|
|
|
+ $(`#${value} ${MCB}`).toggleClass(CKCLS, true);
|
|
|
+ $(`#${value}`).toggleClass(CKCLS, true);
|
|
|
this.currentBoard.setPresentParentTask(value);
|
|
|
evt.preventDefault();
|
|
|
},
|