1
0
Fork 0
mirror of https://github.com/arangodb/kube-arangodb.git synced 2024-12-14 11:57:37 +00:00

Split StorageList file

This commit is contained in:
Ewout Prangsma 2018-07-10 14:59:10 +02:00
parent 581f316e69
commit 8369d6e3c9
No known key found for this signature in database
GPG key ID: 4DBAD380D93D0698
3 changed files with 151 additions and 146 deletions

File diff suppressed because one or more lines are too long

View file

@ -1,12 +1,11 @@
import { Accordion, Header, Icon, Loader, Popup, Table } from 'semantic-ui-react';
import { Loader, Table } from 'semantic-ui-react';
import api, { isUnauthorized } from '../api/api.js';
import CommandInstruction from '../util/CommandInstruction.js';
import VolumeList from './VolumeList.js';
import Loading from '../util/Loading.js';
import React, { Component } from 'react';
import ReactTimeout from 'react-timeout';
import styled from 'react-emotion';
import { withAuth } from '../auth/Auth.js';
import StorageRow from './StorageRow';
const LoaderBox = styled('span')`
float: right;
@ -31,65 +30,13 @@ const HeaderView = ({loading}) => (
</Table.Header>
);
const RowView = ({name, stateColor,localPaths, storageClass, storageClassIsDefault, deleteCommand, describeCommand, expanded, toggleExpand}) => (
<Table.Row>
<Table.Cell>
<Popup trigger={<Icon name={(stateColor==="green") ? "check" : "bell"} color={stateColor}/>}>
{getStateColorDescription(stateColor)}
</Popup>
</Table.Cell>
<Table.Cell onClick={toggleExpand}>
<Accordion>
<Accordion.Title active={expanded}>
<Icon name='dropdown' />
{name}
</Accordion.Title>
</Accordion>
</Table.Cell>
<Table.Cell>
{localPaths.map((item, index) => <code key={index}>{item}</code>)}
</Table.Cell>
<Table.Cell>
{storageClass}
<span style={{"float":"right"}}>
{storageClassIsDefault && <Popup trigger={<Icon name="exclamation"/>} content="Default storage class"/>}
</span>
</Table.Cell>
<Table.Cell>
<CommandInstruction
trigger={<Icon link name="zoom"/>}
command={describeCommand}
title="Describe local storage"
description="To get more information on the state of this local storage, run:"
/>
<span style={{"float":"right"}}>
<CommandInstruction
trigger={<Icon link name="trash"/>}
command={deleteCommand}
title="Delete local storage"
description="To delete this local storage, run:"
/>
</span>
</Table.Cell>
</Table.Row>
);
const VolumesRowView = ({name}) => (
<Table.Row>
<Table.Cell colSpan="5">
<Header sub>Volumes</Header>
<VolumeList storageName={name}/>
</Table.Cell>
</Table.Row>
);
const ListView = ({items, loading}) => (
<Table celled>
<HeaderView loading={loading}/>
<Table.Body>
{
(items) ? items.map((item) =>
<RowComponent
<StorageRow
key={item.name}
name={item.name}
localPaths={item.local_paths}
@ -105,34 +52,6 @@ const ListView = ({items, loading}) => (
</Table>
);
class RowComponent extends Component {
state = {expanded: true};
onToggleExpand = () => { this.setState({expanded: !this.state.expanded});}
render() {
return [<RowView
key="datarow"
name={this.props.name}
localPaths={this.props.localPaths}
stateColor={this.props.stateColor}
storageClass={this.props.storageClass}
storageClassIsDefault={this.props.storageClassIsDefault}
deleteCommand={this.props.deleteCommand}
describeCommand={this.props.describeCommand}
toggleExpand={this.onToggleExpand}
expanded={this.state.expanded}
/>,
this.state.expanded && <VolumesRowView
key="volrow"
name={this.props.name}
expanded={this.state.expanded}
toggleExpand={this.onToggleExpand}
/>
];
}
}
const EmptyView = () => (<div>No local storage resources</div>);
function createDeleteCommand(name) {
@ -143,21 +62,6 @@ function createDescribeCommand(name) {
return `kubectl describe ArangoLocalStorage ${name}`;
}
function getStateColorDescription(stateColor) {
switch (stateColor) {
case "green":
return "Everything is running smooth.";
case "yellow":
return "There is some activity going on, but local storage is available.";
case "orange":
return "There is some activity going on, local storage may be/become unavailable. You should pay attention now!";
case "red":
return "The local storage is in a bad state and manual intervention is likely needed.";
default:
return "State is not known.";
}
}
class StorageList extends Component {
state = {
items: undefined,

View file

@ -0,0 +1,101 @@
import { Accordion, Header, Icon, Popup, Table } from 'semantic-ui-react';
import CommandInstruction from '../util/CommandInstruction.js';
import VolumeList from './VolumeList.js';
import React, { Component } from 'react';
const RowView = ({name, stateColor,localPaths, storageClass, storageClassIsDefault, deleteCommand, describeCommand, expanded, toggleExpand}) => (
<Table.Row>
<Table.Cell>
<Popup trigger={<Icon name={(stateColor==="green") ? "check" : "bell"} color={stateColor}/>}>
{getStateColorDescription(stateColor)}
</Popup>
</Table.Cell>
<Table.Cell onClick={toggleExpand}>
<Accordion>
<Accordion.Title active={expanded}>
<Icon name='dropdown' />
{name}
</Accordion.Title>
</Accordion>
</Table.Cell>
<Table.Cell>
{localPaths.map((item, index) => <code key={index}>{item}</code>)}
</Table.Cell>
<Table.Cell>
{storageClass}
<span style={{"float":"right"}}>
{storageClassIsDefault && <Popup trigger={<Icon name="exclamation"/>} content="Default storage class"/>}
</span>
</Table.Cell>
<Table.Cell>
<CommandInstruction
trigger={<Icon link name="zoom"/>}
command={describeCommand}
title="Describe local storage"
description="To get more information on the state of this local storage, run:"
/>
<span style={{"float":"right"}}>
<CommandInstruction
trigger={<Icon link name="trash"/>}
command={deleteCommand}
title="Delete local storage"
description="To delete this local storage, run:"
/>
</span>
</Table.Cell>
</Table.Row>
);
const VolumesRowView = ({name}) => (
<Table.Row>
<Table.Cell colSpan="5">
<Header sub>Volumes</Header>
<VolumeList storageName={name}/>
</Table.Cell>
</Table.Row>
);
class StorageRow extends Component {
state = {expanded: true};
onToggleExpand = () => { this.setState({expanded: !this.state.expanded});}
render() {
return [<RowView
key="datarow"
name={this.props.name}
localPaths={this.props.localPaths}
stateColor={this.props.stateColor}
storageClass={this.props.storageClass}
storageClassIsDefault={this.props.storageClassIsDefault}
deleteCommand={this.props.deleteCommand}
describeCommand={this.props.describeCommand}
toggleExpand={this.onToggleExpand}
expanded={this.state.expanded}
/>,
this.state.expanded && <VolumesRowView
key="volrow"
name={this.props.name}
expanded={this.state.expanded}
toggleExpand={this.onToggleExpand}
/>
];
}
}
function getStateColorDescription(stateColor) {
switch (stateColor) {
case "green":
return "Everything is running smooth.";
case "yellow":
return "There is some activity going on, but local storage is available.";
case "orange":
return "There is some activity going on, local storage may be/become unavailable. You should pay attention now!";
case "red":
return "The local storage is in a bad state and manual intervention is likely needed.";
default:
return "State is not known.";
}
}
export default StorageRow;