mirror of
https://github.com/jupyterhub/jupyterhub.git
synced 2025-10-18 07:23:00 +00:00
Improved design
This commit is contained in:
@@ -253,4 +253,4 @@ export default class DynamicTable extends React.Component {
|
||||
</div>
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -5,21 +5,18 @@ import PropTypes from "prop-types";
|
||||
import GroupSelect from "../GroupSelect/GroupSelect";
|
||||
import DynamicTable from "../DynamicTable/DynamicTable";
|
||||
|
||||
|
||||
function hasDuplicates(array) {
|
||||
var valuesSoFar = Object.create(null);
|
||||
for (var i = 0; i < array.length; ++i) {
|
||||
var value = array[i];
|
||||
if (value in valuesSoFar) {
|
||||
return true;
|
||||
}
|
||||
valuesSoFar[value] = true;
|
||||
var value = array[i];
|
||||
if (value in valuesSoFar) {
|
||||
return true;
|
||||
}
|
||||
valuesSoFar[value] = true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
const GroupEdit = (props) => {
|
||||
var [selected, setSelected] = useState([]),
|
||||
[changed, setChanged] = useState(false),
|
||||
@@ -55,8 +52,8 @@ const GroupEdit = (props) => {
|
||||
|
||||
var { group_data } = location.state;
|
||||
var [propobject, setProp] = useState(group_data.properties);
|
||||
var [propkeys, setPropKeys]= useState([]);
|
||||
var [propvalues, setPropValues]= useState([]);
|
||||
var [propkeys, setPropKeys] = useState([]);
|
||||
var [propvalues, setPropValues] = useState([]);
|
||||
|
||||
if (!group_data) return <div></div>;
|
||||
|
||||
@@ -77,19 +74,24 @@ const GroupEdit = (props) => {
|
||||
setChanged(true);
|
||||
}}
|
||||
/>
|
||||
<div className="container">
|
||||
<div className="row">
|
||||
<div className="col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2">
|
||||
<div className="alert alert-info">Manage group properties</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="row">
|
||||
<div className="col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2">
|
||||
<DynamicTable
|
||||
current_propobject={group_data.properties}
|
||||
setProp={setProp}
|
||||
setPropKeys={setPropKeys}
|
||||
setPropValues={setPropValues}
|
||||
setChanged={setChanged}
|
||||
//Add keys
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<DynamicTable
|
||||
current_propobject={group_data.properties}
|
||||
setProp={setProp}
|
||||
setPropKeys={setPropKeys}
|
||||
setPropValues={setPropValues}
|
||||
setChanged ={setChanged}
|
||||
//Add keys
|
||||
/>
|
||||
|
||||
<div className="row">
|
||||
<div className="col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2">
|
||||
<button id="return" className="btn btn-light">
|
||||
@@ -119,22 +121,24 @@ const GroupEdit = (props) => {
|
||||
promiseQueue.push(
|
||||
removeFromGroup(removed_users, group_data.name)
|
||||
);
|
||||
if (hasDuplicates(propkeys)==true){
|
||||
error.textContent = "Duplicate key found!"
|
||||
error.style.color = "red"
|
||||
} else{
|
||||
error.textContent = ""
|
||||
propkeys.forEach((key, i) => propobject[key] = propvalues[i]);
|
||||
if (hasDuplicates(propkeys) == true) {
|
||||
error.textContent = "Duplicate key found!";
|
||||
error.style.color = "red";
|
||||
} else {
|
||||
error.textContent = "";
|
||||
propkeys.forEach((key, i) => (propobject[key] = propvalues[i]));
|
||||
}
|
||||
if (propobject != group_data.properties && hasDuplicates(propkeys)== false) {
|
||||
promiseQueue.push(
|
||||
updateProp(propobject, group_data.name)
|
||||
);
|
||||
if (
|
||||
propobject != group_data.properties &&
|
||||
hasDuplicates(propkeys) == false
|
||||
) {
|
||||
promiseQueue.push(updateProp(propobject, group_data.name));
|
||||
}
|
||||
Promise.all(promiseQueue)
|
||||
.then(() => {
|
||||
updateGroups(0, limit)
|
||||
.then((data) => dispatchPageUpdate(data, 0));
|
||||
updateGroups(0, limit).then((data) =>
|
||||
dispatchPageUpdate(data, 0)
|
||||
);
|
||||
})
|
||||
.catch((err) => console.log(err));
|
||||
}}
|
||||
@@ -142,8 +146,8 @@ const GroupEdit = (props) => {
|
||||
Apply
|
||||
</button>
|
||||
<div>
|
||||
<span id="error"></span>
|
||||
</div>
|
||||
<span id="error"></span>
|
||||
</div>
|
||||
<button
|
||||
id="delete-group"
|
||||
className="btn btn-danger"
|
||||
|
Reference in New Issue
Block a user