js/generating-new-issues/subtask-for-each-new-traveler.js (38 lines of code) (raw):
var entities = require('@jetbrains/youtrack-scripting-api/entities');
exports.rule = entities.Issue.onChange({
title: 'Create a subtask for each new traveler',
guard: function(ctx) {
var fs = ctx.issue.fields;
return ctx.issue.isReported &&
fs.Type && fs.Type.name === ctx.Type.GroupTrip.name &&
fs.Travelers.added.isNotEmpty();
},
action: function(ctx) {
var issue = ctx.issue;
var createIssue = function(traveler) {
var newIssue = new entities.Issue(ctx.currentUser, issue.project,
traveler.fullName + ' at ' + issue.fields.Destination);
newIssue.fields.Type = ctx.Type.IndTrip;
newIssue.links['subtask of'].add(issue);
};
issue.fields.Travelers.added.forEach(createIssue);
},
requirements: {
Destination: {
type: entities.Field.stringType
},
Type: {
type: entities.EnumField.fieldType,
GroupTrip: {
name: 'Group trip'
},
IndTrip: {
name: 'Individual trip'
}
},
Travelers: {
type: entities.User.fieldType,
multi: true
}
}
});