{
// defines where new tickets are created - there must be at least one option specified (see below)
projectsCreate: ITaksProjects[]
// ticket generation options
useAsDescription?:ITaskTaskDescription // defines if and what to use as default description -> default is empty (an empty description box)
useEmptyTitle?:boolean // by default the title of new task is the current item title, true leaves it empty
requireCommitTicket?:boolean // set to true if saving should requires a task id (requires smartLinks to be configured)
// search options
defaultSearches?:ITaskSearch[] // can be used to define default search expressions, (e.g. shortcuts to search task changed in last x hours, server plugin must understand these...)
// the first search in the list will be executed automatically when the dialog is opened
// in order not to run an automatic search define first element in array with name=""
allowEmptySearches?:boolean // can be set to true if plugin can handle it
searchHelp?:string // can be an url to any website to explain search options (e.g. jql https://..atlassian.. /jql)
autoSearch?:boolean // can be set to true to start default search (when opening dialog)
// automatic ticket link highlighting
smartLinks?:ISmartTask[] // a set of rules to automatically show hyperlinks to items -> note these are available only in the client, in documents the same rules will not be applied!
smartUrls?:ISmartUrls[] // a set of rules to automatically detect dropped links
// hiding of tickets unless they are in specific projects (empty to show all)
projectFilter: string[] // filter for projects of which items are displayed in workflow control, if not set all tasks are shown -> problem this also needs to be implemented in reports
// allow to map one item in matrix with one external item
one2OneMapping?:IOne2OneMapping // requires one2one capability. defines how external items are shown
// plugin name options
pluginName:string // e.g. JIRA, GitHub, ...
pluginLongName:string // e.g. JIRA Server Plugin, GitHub Plugin, ...
// these can be set to limit the plugin's capabilities
hideCreateTask?:boolean // overwrites canCreate capability
hideSearchTasks?:boolean // overwrites canFind capability
handleAsLink?:boolean // should not be changed - if true links are treated like URLs
hasMeta?:boolean // should not be changed - if true external items have a descirption and a status
// server computed settings which can be overwritten
nativeCreateUrl?:string // overwrites nativeCreateUrl
nativeCreateSearch?:string // overwrites nativeCreateSearch
}
type ITaskTaskDescription = "hide"|"empty"|"text"; // later we could support html editors - not now though |"html"
interface IOne2OneMapping {
// configures 1-1 mapping
projectId:string // id communicated to server to indicate in which project to create tickets
taskTypeId:string // id communicated to server to indicate what type
showId?:boolean // shows external item's id in title
statusOverwrites:IOne2OneMappingStatus[]
}
interface IOne2OneMappingStatus extends ITaskRenderInfo {
externalStatusName:string // name of external status
}
interface ITaskRenderInfo {
text:string, // one to one mapping will show this text
color:string, // in this color
background:string, // with bg color
strikethrough?:boolean // optional strikethrough
}
interface ITaskSearch {
name:string // name of search to show in UI
expression:string // expression to be send to server
}
interface ITaksProjects {
projectId:string // id communicated to server (can be "" if there is no concept of a project in server plugin)
projectName:string // name communicated to user
taskTypes: ITaskType[] // there must be at least one default task type per project
}
interface ITaskType {
taskTypeId:string // id communicated to server (can be "" if there is no concept of a different task types in server plugin)
taskTypeName:string // name communicated to user
iconUrl?:string // can be an url of an icon to display
iconClass?:string // can be an class of an icon to display
}
interface ISmartTask {
regex:string // regex which needs to match, e.g. (github-)([0-9]*) would match "github-12" with two groups, "github-" and 12
issueProjectId:string // a template which creates the project information for a matched issue (uses the same replacement as above)
issueId:string // a template which creates the issue information for a matched issue (uses the same replacement as above)
title:string // url template for a title
url?:string // url template which needs to be created, e.g. "https://myissue.com/myticket/ticke-$2/details" would replace the $2 with the second group (like "12" above)
}
interface ISmartUrls {
regex:string // regex which needs to match, e.g. (github-)([0-9]*) would match "github-12" with two groups, "github-" and 12
issueProjectId:string // a template which creates the project information for a matched issue (uses the same replacement as above)
issueId:string // a template which creates the issue information for a matched issue (uses the same replacement as above)
title:string // url template for a title
priority?:number // if there are several matches the highest priority will win
}