make transitions configurable in settings

This commit is contained in:
Johannes Millan 2017-01-11 12:28:58 +01:00
parent 832770521b
commit f4b22cdfbc
5 changed files with 68 additions and 15 deletions

View file

@ -3,7 +3,8 @@
<md-dialog-content layout-padding>
<p><strong ng-if="vm.type==='OPEN'">Open</strong>
<strong ng-if="vm.type==='IN_PROGRESS'">In progress</strong>
<strong ng-if="vm.type==='DONE'">Done</strong>: Do you want to update the task '<strong>{{ vm.task.title }}</strong>' on jira?</p>
<strong ng-if="vm.type==='DONE'">Done</strong>: Do you want to update the task '<strong>{{ vm.task.title }}</strong>' on jira?
</p>
<p>Move to:</p>
<md-radio-group ng-model="vm.chosenTransitionIndex">
@ -23,7 +24,7 @@
This will be set then always, when a task is changed to
<strong ng-if="vm.type==='OPEN'">open</strong>
<strong ng-if="vm.type==='IN_PROGRESS'">in progress</strong>
<strong ng-if="vm.type==='DONE'">done</strong>.
<strong ng-if="vm.type==='DONE'">done</strong>. You can change that later in the project settings.
</md-checkbox>
</md-dialog-content>

View file

@ -31,7 +31,7 @@
if (!$localStorage.jiraSettings.transitions) {
$localStorage.jiraSettings.transitions = {};
}
$localStorage.jiraSettings.transitions[type] = transition;
$localStorage.jiraSettings.transitions[type] = transition.id;
$localStorage.jiraSettings.allTransitions = transitions;
}

View file

@ -50,14 +50,26 @@
this.updateStatus = (task, type) => {
if (task.originalKey && task.originalType === ISSUE_TYPE) {
if ($localStorage.jiraSettings.transitions && $localStorage.jiraSettings.transitions[type]) {
return this.transitionIssue(task.originalId, $localStorage.jiraSettings.transitions[type]);
if ($localStorage.jiraSettings.transitions[type] === 'DO_NOT') {
return $q.reject('DO_NOT chosen');
} else {
console.log($localStorage.jiraSettings.transitions[type]);
return this.transitionIssue(task.originalId, {
id: $localStorage.jiraSettings.transitions[type]
});
}
} else {
// TODO the promise handling and setting up should be better
let defer = $q.defer();
this.getTransitionsForIssue(task).then((response) => {
let transitions = response.response.transitions;
return Dialogs('JIRA_SET_IN_PROGRESS', { transitions, task, type }).then((transition) => {
defer.resolve(transition);
this.transitionIssue(task.originalId, transition);
});
});
return defer.promise;
}
}
};

View file

@ -74,37 +74,77 @@
<section ng-if="vm.IS_ELECTRON">
<h2 class="md-title">Jira-Setup for Task Suggestion</h2>
<form ng-submit="vm.saveJiraSettings(vm.jiraSettings)">
<form>
<md-input-container class="md-block"
flex-gt-sm>
<label>Host</label>
<input type="text"
ng-model="vm.jiraSettings.host">
ng-model="vm.r.jiraSettings.host">
</md-input-container>
<md-input-container class="md-block"
flex-gt-sm>
<label>Username</label>
<input type="text"
ng-model="vm.jiraSettings.userName">
ng-model="vm.r.jiraSettings.userName">
</md-input-container>
<md-input-container class="md-block"
flex-gt-sm>
<label>Password</label>
<input type="password"
ng-model="vm.jiraSettings.password">
ng-model="vm.r.jiraSettings.password">
</md-input-container>
<md-input-container class="md-block"
flex-gt-sm>
<label>JQL Query for Tasks</label>
<input type="text"
ng-model="vm.jiraSettings.jqlQuery">
<div class="hint">e.g.: assignee = "{{ vm.jiraSettings.userName }}" AND resolution = Unresolved ORDER BY updatedDate DESC</div>
ng-model="vm.r.jiraSettings.jqlQuery">
<div class="hint">e.g.: assignee = "{{ vm.r.jiraSettings.userName }}" AND resolution = Unresolved ORDER BY updatedDate DESC</div>
</md-input-container>
<md-button type="submit"
class="md-raised md-primary">Save Config
</md-button>
<section ng-if="vm.r.jiraSettings.allTransitions">
<h3 class="md-subtitle">Default Transitions</h3>
<p>Jira enables a wide configuration of transitions usually coming into action as different columns on your jira agile board. That's why we can't make assumptions about where and when to transition your tasks and you need to set it manually.</p>
<md-input-container class="md-block"
flex-gt-sm>
<label>Default transition for OPEN</label>
<md-select ng-model="vm.r.jiraSettings.transitions.OPEN"
arial-label="Select default transition for OPEN">
<md-option><em>Always ask</em></md-option>
<md-option ng-value="'DO_NOT'"><em>Don't transition</em></md-option>
<md-option ng-repeat="jiraTransition in vm.r.jiraSettings.allTransitions"
ng-value="jiraTransition.id">
{{jiraTransition.id}} - {{jiraTransition.name}}
</md-option>
</md-select>
</md-input-container>
<md-input-container class="md-block"
flex-gt-sm>
<label>Default transition for IN_PROGRESS</label>
<md-select ng-model="vm.r.jiraSettings.transitions.IN_PROGRESS"
arial-label="Select default transition for IN_PROGRESS">
<md-option><em>Always ask</em></md-option>
<md-option ng-value="'DO_NOT'"><em>Don't transition</em></md-option>
<md-option ng-repeat="jiraTransition in vm.r.jiraSettings.allTransitions"
ng-value="jiraTransition.id">
{{jiraTransition.id}} - {{jiraTransition.name}}
</md-option>
</md-select>
</md-input-container>
<md-input-container class="md-block"
flex-gt-sm>
<label>Default transition for DONE</label>
<md-select ng-model="vm.r.jiraSettings.transitions.DONE"
arial-label="Select default transition for DONE">
<md-option><em>Always ask</em></md-option>
<md-option ng-value="'DO_NOT'"><em>Don't transition</em></md-option>
<md-option ng-repeat="jiraTransition in vm.r.jiraSettings.allTransitions"
ng-value="jiraTransition.id">
{{jiraTransition.id}} - {{jiraTransition.name}}
</md-option>
</md-select>
</md-input-container>
</section>
</form>
<md-divider></md-divider>

View file

@ -14,7 +14,7 @@
.controller('SettingsCtrl', SettingsCtrl);
/* @ngInject */
function SettingsCtrl($localStorage, $rootScope, $scope, Projects, Dialogs, DEFAULT_THEME, THEMES, IS_ELECTRON, SimpleToast, $mdDialog) {
function SettingsCtrl($localStorage, $rootScope, $scope, Projects, Dialogs, DEFAULT_THEME, THEMES, IS_ELECTRON, SimpleToast, $mdDialog, $window) {
let vm = this;
vm.IS_ELECTRON = IS_ELECTRON;
@ -22,7 +22,6 @@
function init() {
vm.r = $rootScope.r;
vm.allProjects = Projects.getList();
vm.jiraSettings = angular.copy($rootScope.r.jiraSettings);
$rootScope.r.theme = $localStorage.theme || DEFAULT_THEME;
vm.isDarkTheme = $rootScope.r.theme && $rootScope.r.theme.indexOf('dark') > -1;
@ -93,6 +92,7 @@
// theme stuff
vm.themes = THEMES;
// TODO that's kind of bad
// update on global model changes
$rootScope.$watch('r', () => {
init();