*/
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) }));
},
},
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 <Section key={section.name} section={section.name} items={section.items}/>;
});
<div className="page-actions">
<a className="spacer-right" href={window.baseUrl + '/api/system/logs'} id="logs-link">Logs</a>
<a href={window.baseUrl + '/api/system/info'} id="download-link">Download</a>
- {this.state.restarting ? (
- <i className="spinner"/>
- ) : (
- <button
- id="restart-server-button"
- className="big-spacer-left"
- onClick={this.handleServerRestart}>
- Restart Server
- </button>
- )}
+ <button
+ id="restart-server-button"
+ className="big-spacer-left"
+ onClick={this.handleServerRestart}>
+ Restart Server
+ </button>
</div>
</header>
{sections}
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,
'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 () {
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
});
}
});
</p>
</div>
<div class="pull-right">
- {{#if restarting}}
- <i class="spinner"></i>
- {{else}}
- <button class="js-restart">Restart</button>
- <button class="js-cancel-all button-red">Revert</button>
- {{/if}}
+ <button class="js-restart">Restart</button>
+ <button class="js-cancel-all button-red">Revert</button>
</div>
</div>
{{/any}}
--- /dev/null
+/*
+ * 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;
--- /dev/null
+<form id="restart-server-form">
+ <div class="modal-head">
+ <h2>Restart Server</h2>
+ </div>
+ <div class="modal-body">
+ <div class="js-modal-messages"></div>
+ <p class="spacer-top spacer-bottom text-center">
+ Server is restarting. This page will be automatically refreshed.
+ </p>
+ <p class="big-spacer-top spacer-bottom text-center">
+ <i class="spinner"></i>
+ </p>
+ </div>
+</form>
--- /dev/null
+<form id="restart-server-form">
+ <div class="modal-head">
+ <h2>Restart Server</h2>
+ </div>
+ <div class="modal-body">
+ <div class="js-modal-messages"></div>
+ <p class="spacer-top spacer-bottom">
+ Are you sure you want to restart the server?
+ </p>
+ </div>
+ <div class="modal-foot">
+ <button id="restart-server-submit">Restart</button>
+ <a href="#" class="js-modal-close" id="restart-server-cancel">Cancel</a>
+ </div>
+</form>