diff options
author | Jean-Baptiste Lievremont <jean-baptiste.lievremont@sonarsource.com> | 2014-12-15 12:03:30 +0100 |
---|---|---|
committer | Jean-Baptiste Lievremont <jean-baptiste.lievremont@sonarsource.com> | 2014-12-16 09:29:21 +0100 |
commit | 2088ba8d8efbc239c9077be81306dc71a4e3286f (patch) | |
tree | 36fe296c7f940cfbc81aea88268d91970adcbebd /server/sonar-web | |
parent | a05aafec0d86754b468f6b24269700459086e6a6 (diff) | |
download | sonarqube-2088ba8d8efbc239c9077be81306dc71a4e3286f.tar.gz sonarqube-2088ba8d8efbc239c9077be81306dc71a4e3286f.zip |
SONAR-5935 Implement tag edition on issues
Diffstat (limited to 'server/sonar-web')
-rw-r--r-- | server/sonar-web/src/main/coffee/issues/workspace-list-item-view.coffee | 59 | ||||
-rw-r--r-- | server/sonar-web/src/main/hbs/issue/issue.hbs | 6 |
2 files changed, 62 insertions, 3 deletions
diff --git a/server/sonar-web/src/main/coffee/issues/workspace-list-item-view.coffee b/server/sonar-web/src/main/coffee/issues/workspace-list-item-view.coffee index 92eb8d53625..886194a6679 100644 --- a/server/sonar-web/src/main/coffee/issues/workspace-list-item-view.coffee +++ b/server/sonar-web/src/main/coffee/issues/workspace-list-item-view.coffee @@ -6,12 +6,21 @@ define [ class extends IssueView + ui: + tagsChange: '.issue-tags-change' + tagInput: '.issue-tag-input' + tagsEdit: '.issue-tag-edit' + tagsEditDone: '.issue-tag-edit-done' + tagsEditCancel: '.issue-tag-edit-cancel' + tagsList: '.issue-tag-list' events: -> _.extend super, 'click': 'selectCurrent' 'click .js-issue-navigate': 'openComponentViewer' - + 'click @ui.tagsChange': 'changeTags' + 'click @ui.tagsEditDone': 'editDone' + 'click @ui.tagsEditCancel': 'cancelEdit' initialize: (options) -> @listenTo options.app.state, 'change:selectedIndex', @select @@ -19,6 +28,9 @@ define [ onRender: -> super + + @ui.tagsEdit.hide() + @$el.addClass 'issue-navigate-right' @select() @@ -53,6 +65,51 @@ define [ @options.app.controller.showComponentViewer @model + changeTags: -> + jQuery.ajax + url: "#{baseUrl}/api/issues/tags?ps=0" + .done (r) => + if @ui.tagInput.select2 + # Prevent synchronization issue with navigation + @ui.tagInput.select2 + tags: (_.difference r.tags, @model.get 'tags') + width: '300px' + if @ui.tagsEdit.show + @ui.tagsEdit.show() + if @ui.tagsList.hide + @ui.tagsList.hide() + @tagsBuffer = @ui.tagInput.select2 'val' + key.setScope 'tags' + key 'escape', 'tags', => @cancelEdit() + + + cancelEdit: -> + key.unbind 'escape', 'tags' + if @ui.tagsList.show + @ui.tagsList.show() + if @ui.tagInput.select2 + @ui.tagInput.select2 'val', @tagsBuffer + @ui.tagInput.select2 'close' + if @ui.tagsEdit.hide + @ui.tagsEdit.hide() + + + editDone: -> + @ui.tagsEdit.html '<i class="spinner"></i>' + tags = @ui.tagInput.val() + jQuery.ajax + type: 'POST' + url: "#{baseUrl}/api/issues/set_tags" + data: + key: @model.get 'key' + tags: tags + .done (r) => + @model.set 'tags', r.tags + @cancelEdit() + .always => + @render() + + serializeData: -> _.extend super, showComponent: true diff --git a/server/sonar-web/src/main/hbs/issue/issue.hbs b/server/sonar-web/src/main/hbs/issue/issue.hbs index 7bc2370c00a..cb14198bc27 100644 --- a/server/sonar-web/src/main/hbs/issue/issue.hbs +++ b/server/sonar-web/src/main/hbs/issue/issue.hbs @@ -1,8 +1,10 @@ <div class="issue-message">{{message}}</div> <div class="issue-tags"> - <i class="icon-tags"></i> - <span class="issue-meta">{{#if tags}}{{join tags ', '}}{{else}}{{t 'coding_rules.no_tags'}}{{/if}}</span> + <span class="issue-tag-list {{#inArray actions "set_tags"}}issue-tags-change{{/inArray}}"> + <i class="icon-tags"></i> + <span class="issue-meta">{{#if tags}}{{join tags ', '}}{{else}}{{t 'coding_rules.no_tags'}}{{/if}}</span> + </span> {{#inArray actions "set_tags"}}<span class="issue-meta issue-tag-edit"> <input class="issue-tag-input" type="text" value="{{#if tags}}{{join tags ','}}{{/if}}"> <div class="button-group"> |