wekan/client/components/rules/rulesMain.js
Harry Adel 477e1c89e5 Migrate rules, activities, and remaining components to Template
Convert all remaining BlazeComponent-based components to native Meteor
Template pattern: activities, comments, all rules actions/triggers,
swimlanes, users, gantt, import, and main utility components.
2026-03-08 11:13:17 +02:00

98 lines
2.6 KiB
JavaScript

import { ReactiveCache } from '/imports/reactiveCache';
Template.rulesMain.onCreated(function () {
this.rulesCurrentTab = new ReactiveVar('rulesList');
this.ruleName = new ReactiveVar('');
this.triggerVar = new ReactiveVar();
this.ruleId = new ReactiveVar();
});
Template.rulesMain.helpers({
rulesCurrentTab() {
return Template.instance().rulesCurrentTab;
},
ruleName() {
return Template.instance().ruleName;
},
triggerVar() {
return Template.instance().triggerVar;
},
ruleId() {
return Template.instance().ruleId;
},
});
function sanitizeObject(obj) {
Object.keys(obj).forEach(key => {
if (obj[key] === '' || obj[key] === undefined) {
obj[key] = '*';
}
});
}
Template.rulesMain.events({
'click .js-delete-rule'() {
const rule = Template.currentData();
Rules.remove(rule._id);
Actions.remove(rule.actionId);
Triggers.remove(rule.triggerId);
},
'click .js-goto-trigger'(event, tpl) {
event.preventDefault();
const ruleTitle = tpl.find('#ruleTitle').value;
if (ruleTitle !== undefined && ruleTitle !== '') {
tpl.find('#ruleTitle').value = '';
tpl.ruleName.set(ruleTitle);
tpl.rulesCurrentTab.set('trigger');
}
},
'click .js-goto-action'(event, tpl) {
event.preventDefault();
// Add user to the trigger
const username = $(event.currentTarget.offsetParent)
.find('.user-name')
.val();
let trigger = tpl.triggerVar.get();
trigger.userId = '*';
if (username !== undefined) {
const userFound = ReactiveCache.getUser({ username });
if (userFound !== undefined) {
trigger.userId = userFound._id;
tpl.triggerVar.set(trigger);
}
}
// Sanitize trigger
trigger = tpl.triggerVar.get();
sanitizeObject(trigger);
tpl.triggerVar.set(trigger);
tpl.rulesCurrentTab.set('action');
},
'click .js-show-user-field'(event) {
event.preventDefault();
$(event.currentTarget.offsetParent)
.find('.user-details')
.removeClass('hide-element');
},
'click .js-goto-rules'(event, tpl) {
event.preventDefault();
tpl.rulesCurrentTab.set('rulesList');
},
'click .js-goback'(event, tpl) {
event.preventDefault();
if (
tpl.rulesCurrentTab.get() === 'trigger' ||
tpl.rulesCurrentTab.get() === 'ruleDetails'
) {
tpl.rulesCurrentTab.set('rulesList');
}
if (tpl.rulesCurrentTab.get() === 'action') {
tpl.rulesCurrentTab.set('trigger');
}
},
'click .js-goto-details'(event, tpl) {
event.preventDefault();
const rule = Template.currentData();
tpl.ruleId.set(rule._id);
tpl.rulesCurrentTab.set('ruleDetails');
},
});