aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-web/src/main/js/apps/maintenance/main-view.js
blob: 8f7d0eea8601ea56676a2620eef446f95cb220c2 (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
define([
  'backbone',
  'backbone.marionette',
  './templates'
], function (Backbone, Marionette) {

  var $ = jQuery;

  return Marionette.ItemView.extend({
    template: Templates['maintenance-main'],

    events: {
      'click #start-migration': 'startMigration'
    },

    initialize: function () {
      var that = this;
      this.requestOptions = {
        type: 'GET',
        url: window.baseUrl + '/api/system/' + (this.options.setup ? 'db_migration_status' : 'status')
      };
      setInterval(function () {
        that.refresh();
      }, 5000);
    },

    refresh: function () {
      var that = this;
      return Backbone.ajax(this.requestOptions).done(function (r) {
        that.model.set(r);
        that.render();
        if (that.model.get('state') === 'MIGRATION_SUCCEEDED') {
          that.goHome();
        }
      });
    },

    startMigration: function () {
      var that = this;
      Backbone.ajax({
        url: baseUrl + '/api/system/migrate_db',
        type: 'POST'
      }).done(function (r) {
        that.model.set(r);
        that.render();
      });
    },

    onRender: function () {
      $('.page-simple').toggleClass('panel-warning', this.model.get('state') === 'MIGRATION_REQUIRED');
    },

    goHome: function () {
      setInterval(function () {
        window.location = baseUrl + '/';
      }, 2500);
    },

    serializeData: function () {
      return _.extend(Marionette.ItemView.prototype.serializeData.apply(this, arguments), {
        setup: this.options.setup
      });
    }
  });

});