118 lines
3.4 KiB
JavaScript
118 lines
3.4 KiB
JavaScript
/*
|
|
* This file is part of Cockpit.
|
|
*
|
|
* Copyright (C) 2015 Red Hat, Inc.
|
|
*
|
|
* Cockpit 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 2.1 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* Cockpit 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 Cockpit; If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
import cockpit from "cockpit";
|
|
import React from "react";
|
|
import ReactDOM from "react-dom";
|
|
import { client } from "./subscriptions-client";
|
|
import * as subscriptionsRegister from "./subscriptions-register.jsx";
|
|
import { SubscriptionsPage } from "./subscriptions-view.jsx";
|
|
import { show_modal_dialog } from "cockpit-components-dialog.jsx";
|
|
|
|
const _ = cockpit.gettext;
|
|
|
|
var dataStore = { };
|
|
|
|
function dismissStatusError() {
|
|
client.subscriptionStatus.error = undefined;
|
|
dataStore.render();
|
|
}
|
|
|
|
var registerDialogDetails;
|
|
|
|
function registerSystem () {
|
|
return client.registerSystem(registerDialogDetails);
|
|
}
|
|
|
|
var footerProps = {
|
|
'actions': [
|
|
{ 'clicked': registerSystem,
|
|
'caption': _("Register"),
|
|
'style': 'primary',
|
|
},
|
|
]
|
|
};
|
|
|
|
function openRegisterDialog() {
|
|
registerDialogDetails = subscriptionsRegister.defaultSettings();
|
|
|
|
// show dialog to register
|
|
var renderDialog;
|
|
var updatedData = function(prop, data) {
|
|
if (prop) {
|
|
if (data.target) {
|
|
if (data.target.type == "checkbox") {
|
|
registerDialogDetails[prop] = data.target.checked;
|
|
} else {
|
|
registerDialogDetails[prop] = data.target.value;
|
|
}
|
|
} else {
|
|
registerDialogDetails[prop] = data;
|
|
}
|
|
}
|
|
|
|
registerDialogDetails.onChange = updatedData;
|
|
|
|
var dialogProps = {
|
|
'title': _("Register system"),
|
|
'body': React.createElement(subscriptionsRegister.DialogBody, registerDialogDetails),
|
|
};
|
|
|
|
if (renderDialog)
|
|
renderDialog.setProps(dialogProps);
|
|
else
|
|
renderDialog = show_modal_dialog(dialogProps, footerProps);
|
|
};
|
|
updatedData();
|
|
}
|
|
|
|
function unregisterSystem() {
|
|
client.unregisterSystem();
|
|
}
|
|
|
|
function initStore(rootElement) {
|
|
client.addEventListener("dataChanged",
|
|
function() {
|
|
dataStore.render();
|
|
}
|
|
);
|
|
|
|
client.init();
|
|
|
|
dataStore.render = function() {
|
|
ReactDOM.render(React.createElement(
|
|
SubscriptionsPage,
|
|
{
|
|
status: client.subscriptionStatus.status,
|
|
products:client.subscriptionStatus.products,
|
|
error: client.subscriptionStatus.error,
|
|
dismissError: dismissStatusError,
|
|
register: openRegisterDialog,
|
|
unregister: unregisterSystem,
|
|
}),
|
|
rootElement
|
|
);
|
|
};
|
|
}
|
|
|
|
document.addEventListener("DOMContentLoaded", function() {
|
|
initStore(document.getElementById('app'));
|
|
dataStore.render();
|
|
});
|