aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-web/src/main/js/apps/update-center/plugins.js
diff options
context:
space:
mode:
Diffstat (limited to 'server/sonar-web/src/main/js/apps/update-center/plugins.js')
-rw-r--r--server/sonar-web/src/main/js/apps/update-center/plugins.js233
1 files changed, 0 insertions, 233 deletions
diff --git a/server/sonar-web/src/main/js/apps/update-center/plugins.js b/server/sonar-web/src/main/js/apps/update-center/plugins.js
deleted file mode 100644
index 7389bc4179d..00000000000
--- a/server/sonar-web/src/main/js/apps/update-center/plugins.js
+++ /dev/null
@@ -1,233 +0,0 @@
-/*
- * SonarQube
- * Copyright (C) 2009-2017 SonarSource SA
- * mailto:info AT sonarsource DOT com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-import $ from 'jquery';
-import { findLastIndex } from 'lodash';
-import Backbone from 'backbone';
-import Plugin from './plugin';
-
-const Plugins = Backbone.Collection.extend({
- model: Plugin,
-
- comparator(model) {
- return model.get('name') || '';
- },
-
- initialize() {
- this._installedCount = 0;
- this._updatedCount = 0;
- this._uninstalledCount = 0;
- this.listenTo(this, 'change:_status', this.onStatusChange);
- },
-
- parse(r) {
- const that = this;
- return r.plugins.map(plugin => {
- let updates = [
- that._getLastWithStatus(plugin.updates, 'COMPATIBLE'),
- that._getLastWithStatus(plugin.updates, 'REQUIRES_SYSTEM_UPGRADE'),
- that._getLastWithStatus(plugin.updates, 'DEPS_REQUIRE_SYSTEM_UPGRADE')
- ].filter(update => update);
- updates = updates.map(update => that._extendChangelog(plugin.updates, update));
- return { ...plugin, updates };
- });
- },
-
- _getLastWithStatus(updates, status) {
- const index = findLastIndex(updates, update => update.status === status);
- return index !== -1 ? updates[index] : null;
- },
-
- _extendChangelog(updates, update) {
- const index = updates.indexOf(update);
- const previousUpdates = index > 0 ? updates.slice(0, index) : [];
- return { ...update, previousUpdates };
- },
-
- _fetchInstalled() {
- if (this._installed) {
- return $.Deferred()
- .resolve()
- .promise();
- }
- const that = this;
- const opts = {
- type: 'GET',
- url: window.baseUrl + '/api/plugins/installed?f=category',
- success(r) {
- that._installed = that.parse(r);
- }
- };
- return Backbone.ajax(opts);
- },
-
- _fetchUpdates() {
- if (this._updates) {
- return $.Deferred()
- .resolve()
- .promise();
- }
- const that = this;
- const opts = {
- type: 'GET',
- url: window.baseUrl + '/api/plugins/updates',
- success(r) {
- that._updates = that.parse(r);
- }
- };
- return Backbone.ajax(opts);
- },
-
- _fetchAvailable() {
- if (this._available) {
- return $.Deferred()
- .resolve()
- .promise();
- }
- const that = this;
- const opts = {
- type: 'GET',
- url: window.baseUrl + '/api/plugins/available',
- success(r) {
- that._available = that.parse(r);
- }
- };
- return Backbone.ajax(opts);
- },
-
- _fetchPending() {
- const that = this;
- const opts = {
- type: 'GET',
- url: window.baseUrl + '/api/plugins/pending',
- success(r) {
- const installing = r.installing.map(plugin => {
- return { key: plugin.key, _status: 'installing' };
- });
- const updating = r.updating.map(plugin => {
- return { key: plugin.key, _status: 'updating' };
- });
- const uninstalling = r.removing.map(plugin => {
- return { key: plugin.key, _status: 'uninstalling' };
- });
- that._installedCount = installing.length;
- that._updatedCount = updating.length;
- that._uninstalledCount = uninstalling.length;
- that._pending = new Plugins([].concat(installing, updating, uninstalling)).models;
- }
- };
- return Backbone.ajax(opts);
- },
-
- _fetchSystemUpgrades() {
- if (this._systemUpdates) {
- return $.Deferred()
- .resolve()
- .promise();
- }
- const that = this;
- const opts = {
- type: 'GET',
- url: window.baseUrl + '/api/system/upgrades',
- success(r) {
- that._systemUpdates = r.upgrades.map(update => ({ ...update, _system: true }));
- }
- };
- return Backbone.ajax(opts);
- },
-
- fetchInstalled() {
- const that = this;
- return $.when(this._fetchInstalled(), this._fetchUpdates(), this._fetchPending()).done(() => {
- const plugins = new Plugins();
- plugins.set(that._installed);
- plugins.set(that._updates, { remove: false });
- plugins.set(that._pending, { add: false, remove: false });
- that.reset(plugins.models);
- });
- },
-
- fetchUpdates() {
- const that = this;
- return $.when(this._fetchInstalled(), this._fetchUpdates(), this._fetchPending()).done(() => {
- const plugins = new Plugins();
- plugins.set(that._installed);
- plugins.set(that._updates, { remove: true });
- plugins.set(that._pending, { add: false, remove: false });
- that.reset(plugins.models);
- });
- },
-
- fetchAvailable() {
- const that = this;
- return $.when(this._fetchAvailable(), this._fetchPending()).done(() => {
- const plugins = new Plugins();
- plugins.set(that._available);
- plugins.set(that._pending, { add: false, remove: false });
- that.reset(plugins.models);
- });
- },
-
- fetchSystemUpgrades() {
- const that = this;
- return $.when(this._fetchSystemUpgrades()).done(() => {
- that.reset(that._systemUpdates);
- });
- },
-
- search(query) {
- /* eslint-disable array-callback-return */
- this.filter(model => {
- model.set({ _hidden: !model.match(query) });
- });
- },
-
- cancelAll() {
- const that = this;
- const opts = {
- type: 'POST',
- url: window.baseUrl + '/api/plugins/cancel_all',
- success() {
- that._installedCount = 0;
- that._updatedCount = 0;
- that._uninstalledCount = 0;
- that.forEach(model => {
- model.unset('_status');
- });
- that.trigger('change');
- }
- };
- return Backbone.ajax(opts);
- },
-
- onStatusChange(model, status) {
- if (status === 'installing') {
- this._installedCount++;
- }
- if (status === 'updating') {
- this._updatedCount++;
- }
- if (status === 'uninstalling') {
- this._uninstalledCount++;
- }
- this.trigger('change');
- }
-});
-
-export default Plugins;