aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-web
diff options
context:
space:
mode:
authorJean-Baptiste Lievremont <jean-baptiste.lievremont@sonarsource.com>2014-12-15 12:03:30 +0100
committerJean-Baptiste Lievremont <jean-baptiste.lievremont@sonarsource.com>2014-12-16 09:29:21 +0100
commit2088ba8d8efbc239c9077be81306dc71a4e3286f (patch)
tree36fe296c7f940cfbc81aea88268d91970adcbebd /server/sonar-web
parenta05aafec0d86754b468f6b24269700459086e6a6 (diff)
downloadsonarqube-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.coffee59
-rw-r--r--server/sonar-web/src/main/hbs/issue/issue.hbs6
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">