aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-web/src/main/js/coding-rules/app.js
blob: 4dfb34661a752c309f9c18c9a612914e52fe969d (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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
requirejs.config({
  baseUrl: baseUrl + '/js',

  paths: {
    'backbone': 'third-party/backbone',
    'backbone.marionette': 'third-party/backbone.marionette',
    'handlebars': 'third-party/handlebars'
  },

  shim: {
    'backbone.marionette': {
      deps: ['backbone'],
      exports: 'Marionette'
    },
    'backbone': {
      exports: 'Backbone'
    },
    'handlebars': {
      exports: 'Handlebars'
    }
  }
});


requirejs([
  'backbone',
  'backbone.marionette',

  'coding-rules/models/state',
  'coding-rules/layout',
  'coding-rules/models/rules',
  'components/navigator/models/facets',

  'coding-rules/controller',
  'components/navigator/router',

  'coding-rules/workspace-list-view',
  'coding-rules//workspace-header-view',

  'coding-rules/facets-view',
  'coding-rules/filters-view',

  'common/handlebars-extensions'
],
    function (Backbone,
              Marionette,
              State,
              Layout,
              Rules,
              Facets,
              Controller,
              Router,
              WorkspaceListView,
              WorkspaceHeaderView,
              FacetsView,
              FiltersView) {

      var $ = jQuery,
          App = new Marionette.Application(),
          p = window.process.addBackgroundProcess();

      App.addInitializer(function () {
        this.layout = new Layout();
        $('.coding-rules').empty().append(this.layout.render().el);
      });

      App.addInitializer(function () {
        this.state = new State();
        this.list = new Rules();
        this.facets = new Facets();
      });

      App.addInitializer(function () {
        this.controller = new Controller({
          app: this
        });
      });

      App.addInitializer(function () {
        this.workspaceListView = new WorkspaceListView({
          app: this,
          collection: this.list
        });
        this.layout.workspaceListRegion.show(this.workspaceListView);
        this.workspaceListView.bindScrollEvents();

        this.workspaceHeaderView = new WorkspaceHeaderView({
          app: this,
          collection: this.list
        });
        this.layout.workspaceHeaderRegion.show(this.workspaceHeaderView);

        this.facetsView = new FacetsView({
          app: this,
          collection: this.facets
        });
        this.layout.facetsRegion.show(this.facetsView);

        this.filtersView = new FiltersView({
          app: this
        });
        this.layout.filtersRegion.show(this.filtersView);
      });

      App.addInitializer(function () {
        key.setScope('list');
        this.router = new Router({
          app: this
        });
        Backbone.history.start();
        window.process.finishBackgroundProcess(p);
      });

      App.manualRepository = function () {
        return {
          key: 'manual',
          name: t('coding_rules.manual_rule'),
          language: 'none'
        };
      };

      App.getSubCharacteristicName = function (name) {
        return (App.characteristics[name] || '').replace(': ', ' > ');
      };

      var appXHR = $.get(baseUrl + '/api/rules/app').done(function(r) {
        App.canWrite = r.canWrite;
        App.qualityProfiles = _.sortBy(r.qualityprofiles, ['name', 'lang']);
        App.languages = _.extend(r.languages, {
          none: 'None'
        });
        _.map(App.qualityProfiles, function(profile) {
          profile.language = App.languages[profile.lang];
        });
        App.repositories = r.repositories;
        App.repositories.push(App.manualRepository());
        App.statuses = r.statuses;
        App.characteristics = r.characteristics;
      });

      $.when(window.requestMessages(), appXHR).done(function () {
        App.start();
      });

    });