]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-5367 Use /api/issues/changelog to get issue's changelog
authorStas Vilchik <vilchiks@gmail.com>
Mon, 2 Jun 2014 12:02:21 +0000 (18:02 +0600)
committerStas Vilchik <vilchiks@gmail.com>
Mon, 2 Jun 2014 12:02:33 +0000 (18:02 +0600)
sonar-server/src/main/coffee/issues/issue-view.coffee
sonar-server/src/main/coffee/issues/models/change-log.coffee [new file with mode: 0644]
sonar-server/src/main/coffee/issues/views/change-log-view.coffee [new file with mode: 0644]
sonar-server/src/main/hbs/issues/change-log.hbs [new file with mode: 0644]
sonar-server/src/main/hbs/issues/issue.hbs
sonar-server/src/main/js/common/handlebars-extensions.js

index 0c1dc02ceb8e83f316e1909aa5bc6f8564a92376..589824348234be21f9cc8b37355aed6c0d5560bf 100644 (file)
@@ -5,6 +5,9 @@ define [
   'issues/models/rule'
   'issues/views/rule-view'
 
+  'issues/models/change-log'
+  'issues/views/change-log-view'
+
   'issues/collections/action-plans'
 
   'issues/views/assign-form-view'
@@ -19,6 +22,9 @@ define [
   Rule
   RuleView
 
+  ChangeLog
+  ChangeLogView
+
   ActionPlans
 
   AssignFormView
@@ -39,6 +45,7 @@ define [
     regions:
       formRegion: '.code-issue-form'
       ruleRegion: '#tab-issue-rule'
+      changeLogRegion: '#tab-issue-changelog'
 
 
     modelEvents:
@@ -51,6 +58,7 @@ define [
       'click .code-issue-toggle': 'toggleCollapsed',
 
       'click [href=#tab-issue-rule]': 'fetchRule',
+      'click [href=#tab-issue-changelog]': 'fetchChangeLog',
 
       'click #issue-comment': 'comment',
       'click .issue-comment-edit': 'editComment',
@@ -68,6 +76,8 @@ define [
       @$('.code-issue-form').hide()
       @rule = new Rule key: this.model.get('rule')
       @ruleRegion.show new RuleView model: @rule, issue: @model
+      @changeLog = new ChangeLog()
+      @changeLogRegion.show new ChangeLogView collection: @changeLog, issue: @model
 
 
     setDetailScope: ->
@@ -97,6 +107,14 @@ define [
           success: => @$('#tab-issue-rule').removeClass 'navigator-fetching'
 
 
+    fetchChangeLog: ->
+      unless @changeLog.length > 0
+        @$('#tab-issue-changeLog').addClass 'navigator-fetching'
+        @changeLog.fetch
+          data: issue: @model.get 'key'
+          success: => @$('#tab-issue-changelog').removeClass 'navigator-fetching'
+
+
     showActionView: (view) ->
       @$('.code-issue-actions').hide()
       @$('.code-issue-form').show()
diff --git a/sonar-server/src/main/coffee/issues/models/change-log.coffee b/sonar-server/src/main/coffee/issues/models/change-log.coffee
new file mode 100644 (file)
index 0000000..eda1d6f
--- /dev/null
@@ -0,0 +1,14 @@
+define [
+  'backbone'
+], (
+  Backbone
+) ->
+
+  class ChangeLog extends Backbone.Collection
+
+    url: ->
+      "#{baseUrl}/api/issues/changelog"
+
+
+    parse: (r) ->
+      return r.changelog
\ No newline at end of file
diff --git a/sonar-server/src/main/coffee/issues/views/change-log-view.coffee b/sonar-server/src/main/coffee/issues/views/change-log-view.coffee
new file mode 100644 (file)
index 0000000..8dc710a
--- /dev/null
@@ -0,0 +1,13 @@
+define [
+  'backbone.marionette'
+  'templates/issues'
+], (
+  Marionette
+  Templates
+) ->
+
+  class IssueDetailChangeLogView extends Marionette.ItemView
+    template: Templates['change-log']
+
+    collectionEvents:
+      'sync': 'render'
\ No newline at end of file
diff --git a/sonar-server/src/main/hbs/issues/change-log.hbs b/sonar-server/src/main/hbs/issues/change-log.hbs
new file mode 100644 (file)
index 0000000..6bf0e77
--- /dev/null
@@ -0,0 +1,15 @@
+<table class="spaced">
+  <tbody>
+  {{#each items}}
+    <tr>
+      <td class="thin left top" nowrap>{{dt creationDate}}</td>
+      <td class="thin left top" nowrap>{{user}}</td>
+      <td class="left top">
+        {{#each diffs}}
+          {{changelog this}}<br>
+        {{/each}}
+      </td>
+    </tr>
+  {{/each}}
+  </tbody>
+</table>
\ No newline at end of file
index b9480d122f4eac6510b23b73edd62af35e73eec9..02de98970cadfe14c0d0db2f9ae5bb452906e0a2 100644 (file)
       <div class="rule-desc"></div>
     </div>
 
-    <div id="tab-issue-changelog">
-      <table class="spaced">
-        <tbody>
-        {{#each changelog}}
-          <tr>
-            <td class="thin left top" nowrap>{{fCreationDate}}</td>
-            <td class="thin left top" nowrap>{{userName}}</td>
-            <td class="left top">
-              {{#each diffs}}
-                {{this}}<br>
-              {{/each}}
-            </td>
-          </tr>
-        {{/each}}
-        </tbody>
-      </table>
-    </div>
+    <div id="tab-issue-changelog"></div>
   </div>
 
 
index f15dba30c050d91355a5596d6dacaefeb5b681b2..33371900cda4dfdab6fd46003ff58f49df7d5cc4 100644 (file)
@@ -228,6 +228,21 @@ define(['handlebars', 'moment'], function (Handlebars, moment) {
     }, '');
   });
 
+  Handlebars.registerHelper('changelog', function(diff) {
+    var message = '';
+    if (diff.newValue != null) {
+      message = tp('issue.changelog.changed_to', t('issue.changelog.field', diff.key), diff.newValue);
+    } else {
+      message = tp('issue.changelog.removed', t('issue.changelog.field', diff.key));
+    }
+    if (diff.oldValue != null) {
+      message += ' (';
+      message += tp('issue.changelog.was', diff.oldValue);
+      message += ')';
+    }
+    return message;
+  });
+
   Handlebars.registerHelper('componentViewerHeaderLink', function(value, label, cl, hash) {
     var name = '_header-link';
     if (value != null) {