From ffe74dc3c60db3cb1ff95de564cf756184964b0c Mon Sep 17 00:00:00 2001 From: Stas Vilchik Date: Mon, 18 Jan 2016 09:49:10 +0100 Subject: [PATCH] SONAR-1976 ask confirmation before restart server --- .../sonar-web/src/main/js/apps/system/main.js | 30 ++++-------- .../main/js/apps/update-center/header-view.js | 15 ++---- .../templates/update-center-header.hbs | 8 +--- .../main/js/components/RestartModal/index.js | 48 +++++++++++++++++++ .../RestartModal/templates/restarting.hbs | 14 ++++++ .../RestartModal/templates/template.hbs | 15 ++++++ 6 files changed, 92 insertions(+), 38 deletions(-) create mode 100644 server/sonar-web/src/main/js/components/RestartModal/index.js create mode 100644 server/sonar-web/src/main/js/components/RestartModal/templates/restarting.hbs create mode 100644 server/sonar-web/src/main/js/components/RestartModal/templates/template.hbs diff --git a/server/sonar-web/src/main/js/apps/system/main.js b/server/sonar-web/src/main/js/apps/system/main.js index 36569d172a1..e12d12f29a8 100644 --- a/server/sonar-web/src/main/js/apps/system/main.js +++ b/server/sonar-web/src/main/js/apps/system/main.js @@ -19,18 +19,15 @@ */ import _ from 'underscore'; import React from 'react'; -import { getSystemInfo, restartAndWait } from '../../api/system'; +import { getSystemInfo } from '../../api/system'; import Section from './section'; import { translate } from '../../helpers/l10n'; +import RestartModal from '../../components/RestartModal'; const SECTIONS_ORDER = ['SonarQube', 'Database', 'Plugins', 'System', 'ElasticSearch', 'JvmProperties', 'ComputeEngine']; export default React.createClass({ - getInitialState() { - return { restarting: false }; - }, - componentDidMount() { getSystemInfo().then(info => this.setState({ sections: this.parseSections(info) })); }, @@ -58,15 +55,12 @@ export default React.createClass({ }, handleServerRestart () { - this.setState({ restarting: true }); - restartAndWait().then(() => { - document.location.reload(); - }); + new RestartModal().render(); }, render() { let sections = null; - if (this.state.sections) { + if (this.state && this.state.sections) { sections = this.state.sections.map(section => { return
; }); @@ -78,16 +72,12 @@ export default React.createClass({
Logs Download - {this.state.restarting ? ( - - ) : ( - - )} +
{sections} diff --git a/server/sonar-web/src/main/js/apps/update-center/header-view.js b/server/sonar-web/src/main/js/apps/update-center/header-view.js index ab758cda934..c7d8f6b1a3a 100644 --- a/server/sonar-web/src/main/js/apps/update-center/header-view.js +++ b/server/sonar-web/src/main/js/apps/update-center/header-view.js @@ -20,7 +20,7 @@ import _ from 'underscore'; import Marionette from 'backbone.marionette'; import Template from './templates/update-center-header.hbs'; -import { restartAndWait } from '../../api/system'; +import RestartModal from '../../components/RestartModal'; export default Marionette.ItemView.extend({ template: Template, @@ -34,16 +34,8 @@ export default Marionette.ItemView.extend({ 'click .js-cancel-all': 'cancelAll' }, - initialize () { - this.restarting = false; - }, - restart () { - this.restarting = true; - this.render(); - restartAndWait().then(() => { - document.location.reload(true); - }); + new RestartModal().render(); }, cancelAll () { @@ -53,8 +45,7 @@ export default Marionette.ItemView.extend({ serializeData () { return _.extend(Marionette.ItemView.prototype.serializeData.apply(this, arguments), { installing: this.collection._installedCount, - uninstalling: this.collection._uninstalledCount, - restarting: this.restarting + uninstalling: this.collection._uninstalledCount }); } }); diff --git a/server/sonar-web/src/main/js/apps/update-center/templates/update-center-header.hbs b/server/sonar-web/src/main/js/apps/update-center/templates/update-center-header.hbs index 518c96ce81b..a89a1112d5c 100644 --- a/server/sonar-web/src/main/js/apps/update-center/templates/update-center-header.hbs +++ b/server/sonar-web/src/main/js/apps/update-center/templates/update-center-header.hbs @@ -22,12 +22,8 @@

- {{#if restarting}} - - {{else}} - - - {{/if}} + +
{{/any}} diff --git a/server/sonar-web/src/main/js/components/RestartModal/index.js b/server/sonar-web/src/main/js/components/RestartModal/index.js new file mode 100644 index 00000000000..dd449be2e51 --- /dev/null +++ b/server/sonar-web/src/main/js/components/RestartModal/index.js @@ -0,0 +1,48 @@ +/* + * SonarQube :: Web + * Copyright (C) 2009-2016 SonarSource SA + * mailto:contact 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 ModalForm from '../common/modal-form'; +import Template from './templates/template.hbs'; +import RestartingTemplate from './templates/restarting.hbs'; +import { restartAndWait } from '../../api/system'; + + +const RestartModal = ModalForm.extend({ + template: Template, + restartingTemplate: RestartingTemplate, + + initialize() { + this.restarting = false; + }, + + getTemplate() { + return this.restarting ? this.restartingTemplate : this.template; + }, + + onFormSubmit() { + ModalForm.prototype.onFormSubmit.apply(this, arguments); + this.restarting = true; + this.render(); + restartAndWait().then(() => { + document.location.reload(); + }); + } +}); + +export default RestartModal; diff --git a/server/sonar-web/src/main/js/components/RestartModal/templates/restarting.hbs b/server/sonar-web/src/main/js/components/RestartModal/templates/restarting.hbs new file mode 100644 index 00000000000..bab7b505ab7 --- /dev/null +++ b/server/sonar-web/src/main/js/components/RestartModal/templates/restarting.hbs @@ -0,0 +1,14 @@ +
+ + +
diff --git a/server/sonar-web/src/main/js/components/RestartModal/templates/template.hbs b/server/sonar-web/src/main/js/components/RestartModal/templates/template.hbs new file mode 100644 index 00000000000..6058532191c --- /dev/null +++ b/server/sonar-web/src/main/js/components/RestartModal/templates/template.hbs @@ -0,0 +1,15 @@ +
+ + + +
-- 2.39.5