aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-web/src/main/js/apps/custom-measures/form-view.js
blob: 30ed30082b94d2eb51c47d21b4d952acb6a20a94 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
define([
  'components/common/modal-form',
  'apps/metrics/metrics',
  './templates'
], function (ModalForm, Metrics) {

  return ModalForm.extend({
    template: Templates['custom-measures-form'],

    initialize: function () {
      this.metrics = new Metrics();
      this.listenTo(this.metrics, 'reset', this.render);
      this.metrics.fetch({ reset: true });
    },

    onRender: function () {
      this._super();
      this.$('[data-toggle="tooltip"]').tooltip({ container: 'body', placement: 'bottom' });
      this.$('#create-custom-measure-metric').select2({
        width: '250px',
        minimumResultsForSearch: 20
      });
    },

    onDestroy: function () {
      this._super();
      this.$('[data-toggle="tooltip"]').tooltip('destroy');
    },

    onFormSubmit: function (e) {
      this._super(e);
      this.sendRequest();
    },

    getAvailableMetrics: function () {
      var takenMetrics = this.collection.getTakenMetrics();
      return this.metrics.toJSON().filter(function (metric) {
        return takenMetrics.indexOf(metric.id) === -1;
      });
    },

    serializeData: function () {
      var metrics = this.getAvailableMetrics(),
          isNew = !this.model;
      return _.extend(this._super(), {
        metrics: metrics,
        canCreateMetric: !isNew || (isNew && metrics.length > 0)
      });
    }
  });

});