599
app/routes/Dashboards/Analytics/Analytics.js
Executable file
599
app/routes/Dashboards/Analytics/Analytics.js
Executable file
@@ -0,0 +1,599 @@
|
||||
import React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import faker from 'faker/locale/en_US';
|
||||
import _ from 'lodash';
|
||||
import {
|
||||
Container,
|
||||
ButtonToolbar,
|
||||
ButtonGroup,
|
||||
UncontrolledButtonDropdown,
|
||||
DropdownToggle,
|
||||
DropdownMenu,
|
||||
DropdownItem,
|
||||
FloatGrid as Grid,
|
||||
Card,
|
||||
Media,
|
||||
CardBody,
|
||||
ListGroup,
|
||||
ListGroupItem,
|
||||
Progress,
|
||||
Table,
|
||||
CardFooter,
|
||||
Button,
|
||||
CardHeader
|
||||
} from './../../../components';
|
||||
import { applyColumn } from './../../../components/FloatGrid';
|
||||
|
||||
import { HeaderMain } from "../../components/HeaderMain";
|
||||
|
||||
import {
|
||||
MetricVsTarget
|
||||
} from "../../components/Analytics/MetricVsTarget";
|
||||
import {
|
||||
WebsitePerformance
|
||||
} from "../../components/Analytics/WebsitePerformance";
|
||||
import {
|
||||
AudienceMetricsChart
|
||||
} from "./components/AudienceMetricsChart";
|
||||
import {
|
||||
TinyAreaChart
|
||||
} from "../../components/Analytics/TinyAreaChart";
|
||||
import {
|
||||
SimpleLineChart
|
||||
} from "./../../Graphs/ReCharts/components/SimpleLineChart";
|
||||
|
||||
import classes from './Analytics.scss';
|
||||
|
||||
const LAYOUT = {
|
||||
'metric-v-target-users': { h: 6, md: 4 },
|
||||
'metric-v-target-sessions': { h: 6, md: 4 },
|
||||
'metric-v-target-pageviews': { h: 6, md: 4 },
|
||||
'analytics-audience-metrics': { h: 9, minH: 7 },
|
||||
'traffic-channels': { md: 6, h: 6 },
|
||||
'sessions': { md: 6, h: 6, maxH: 9, minW: 3 },
|
||||
'spend': { md: 6, h: 7 },
|
||||
'website-performance': { md: 6, h: 11 },
|
||||
'organic-traffic': { md: 6, h: 10 }
|
||||
}
|
||||
|
||||
const SessionByDevice = (props) => (
|
||||
<div className={classes['session']}>
|
||||
<div className={classes['session__title']}>
|
||||
{ props.title }
|
||||
</div>
|
||||
<div className={classes['session__values']}>
|
||||
<div className={`${classes['session__percentage']} text-${props.color}`}>
|
||||
{ props.valuePercent }%
|
||||
</div>
|
||||
<div className={`${classes['session__value']} text-${props.color}`}>
|
||||
{ props.value }
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
SessionByDevice.propTypes = {
|
||||
title: PropTypes.node,
|
||||
color: PropTypes.string,
|
||||
valuePercent: PropTypes.string,
|
||||
value: PropTypes.string
|
||||
}
|
||||
|
||||
export class Analytics extends React.Component {
|
||||
state = {
|
||||
layouts: _.clone(LAYOUT)
|
||||
}
|
||||
|
||||
_resetLayout = () => {
|
||||
this.setState({
|
||||
layouts: _.clone(LAYOUT)
|
||||
})
|
||||
}
|
||||
|
||||
render() {
|
||||
const { layouts } = this.state;
|
||||
|
||||
return (
|
||||
<React.Fragment>
|
||||
<Container fluid={ false }>
|
||||
<div className="d-flex mt-3 mb-5">
|
||||
<HeaderMain
|
||||
title="Analytics"
|
||||
className="mt-0"
|
||||
/>
|
||||
<ButtonToolbar className="ml-auto">
|
||||
<ButtonGroup className="align-self-start mr-2">
|
||||
<UncontrolledButtonDropdown className="ml-auto flex-column">
|
||||
<DropdownToggle color="link" className="text-left pl-0 text-decoration-none mb-2">
|
||||
<i className="fa fa-globe text-body mr-2"></i>
|
||||
www.webkom.co<i className="fa fa-angle-down text-body ml-2" />
|
||||
</DropdownToggle>
|
||||
<div className="small">
|
||||
Last 30 Days vs Previous Period
|
||||
</div>
|
||||
<DropdownMenu>
|
||||
<DropdownItem header>
|
||||
Select Site:
|
||||
</DropdownItem>
|
||||
<DropdownItem active>
|
||||
www.webkom.co
|
||||
</DropdownItem>
|
||||
<DropdownItem>
|
||||
www.spin.webkom.co
|
||||
</DropdownItem>
|
||||
<DropdownItem divider />
|
||||
<DropdownItem>
|
||||
<i className="fa fa-fw fa-plus mr-2"></i>
|
||||
Add New
|
||||
</DropdownItem>
|
||||
</DropdownMenu>
|
||||
</UncontrolledButtonDropdown>
|
||||
</ButtonGroup>
|
||||
<ButtonGroup className="align-self-start mr-2">
|
||||
<UncontrolledButtonDropdown className="ml-auto flex-column">
|
||||
<DropdownToggle color="link" className="text-left pl-0 text-decoration-none mb-2">
|
||||
<i className="fa fa-calendar-o text-body mr-2"></i>
|
||||
Last Month<i className="fa fa-angle-down text-body ml-2" />
|
||||
</DropdownToggle>
|
||||
<div className="small">
|
||||
Jan 01, 2017 to Jan 31, 2017
|
||||
</div>
|
||||
<DropdownMenu>
|
||||
<DropdownItem header>
|
||||
Select Period:
|
||||
</DropdownItem>
|
||||
<DropdownItem active>
|
||||
Last Month
|
||||
</DropdownItem>
|
||||
<DropdownItem>
|
||||
Last 3 Months
|
||||
</DropdownItem>
|
||||
<DropdownItem>
|
||||
Last 6 Months
|
||||
</DropdownItem>
|
||||
<DropdownItem>
|
||||
Last Year
|
||||
</DropdownItem>
|
||||
<DropdownItem divider />
|
||||
<DropdownItem>
|
||||
Custom...
|
||||
</DropdownItem>
|
||||
</DropdownMenu>
|
||||
</UncontrolledButtonDropdown>
|
||||
</ButtonGroup>
|
||||
<ButtonGroup className="align-self-start mr-2">
|
||||
<UncontrolledButtonDropdown className="ml-auto flex-column">
|
||||
<DropdownToggle color="link" className="text-left pl-0 text-decoration-none mb-2">
|
||||
<i className="fa fa-calendar-o text-body mr-2"></i>
|
||||
Previous Period<i className="fa fa-angle-down text-body ml-2" />
|
||||
</DropdownToggle>
|
||||
<div className="small">
|
||||
Jan 01, 2017 to Jan 31, 2017
|
||||
</div>
|
||||
<DropdownMenu>
|
||||
<DropdownItem header>
|
||||
Select Period:
|
||||
</DropdownItem>
|
||||
<DropdownItem active>
|
||||
Previous Period
|
||||
</DropdownItem>
|
||||
<DropdownItem>
|
||||
Last 3 Months
|
||||
</DropdownItem>
|
||||
<DropdownItem>
|
||||
Last 6 Months
|
||||
</DropdownItem>
|
||||
<DropdownItem>
|
||||
Last Year
|
||||
</DropdownItem>
|
||||
<DropdownItem divider />
|
||||
<DropdownItem>
|
||||
Custom...
|
||||
</DropdownItem>
|
||||
</DropdownMenu>
|
||||
</UncontrolledButtonDropdown>
|
||||
</ButtonGroup>
|
||||
<ButtonGroup className="align-self-start">
|
||||
<Button color="primary" className="mb-2 mr-2 px-3">
|
||||
Apply
|
||||
</Button>
|
||||
</ButtonGroup>
|
||||
<ButtonGroup>
|
||||
<Button
|
||||
color="link"
|
||||
className="mb-2 text-decoration-none align-self-start"
|
||||
onClick={this._resetLayout}
|
||||
>
|
||||
Reset
|
||||
</Button>
|
||||
</ButtonGroup>
|
||||
</ButtonToolbar>
|
||||
</div>
|
||||
</Container>
|
||||
|
||||
<Grid>
|
||||
<Grid.Row
|
||||
onLayoutChange={ layouts => this.setState({ layouts }) }
|
||||
columnSizes={ this.state.layouts }
|
||||
rowHeight={ 55 }
|
||||
>
|
||||
<Grid.Col { ...(applyColumn('metric-v-target-users', layouts)) }>
|
||||
<Card>
|
||||
<CardHeader className="bb-0 pt-3 pb-0 bg-none" tag="h6">
|
||||
<i className="fa fa-ellipsis-v text-body mr-2"></i> Users
|
||||
</CardHeader>
|
||||
<CardBody className="pt-2">
|
||||
<MetricVsTarget
|
||||
title="Users"
|
||||
value="168,793"
|
||||
progressbarColor="danger"
|
||||
targetValue="169,001"
|
||||
/>
|
||||
</CardBody>
|
||||
<CardFooter>
|
||||
<Media className="small">
|
||||
<Media left>
|
||||
<i className="fa fa-fw fa-info-circle mr-2"></i>
|
||||
</Media>
|
||||
<Media body>
|
||||
How do your users (visitors), sessions (visits) and pageviews
|
||||
metrics for <abbr title="attribute" className="text-dark">www.webkom.com</abbr> compare to your targets over the last 30 days?
|
||||
</Media>
|
||||
</Media>
|
||||
</CardFooter>
|
||||
</Card>
|
||||
</Grid.Col>
|
||||
<Grid.Col { ...(applyColumn('metric-v-target-sessions', layouts)) }>
|
||||
<Card>
|
||||
<CardHeader className="bb-0 pt-3 pb-0 bg-none" tag="h6">
|
||||
<i className="fa fa-ellipsis-v text-body mr-2"></i> Sessions
|
||||
</CardHeader>
|
||||
<CardBody className="pt-2">
|
||||
<MetricVsTarget
|
||||
title="Sessions"
|
||||
value="529,747"
|
||||
progressbarValue="67"
|
||||
progressbarColor="primary"
|
||||
targetValue="782,957"
|
||||
/>
|
||||
</CardBody>
|
||||
<CardFooter>
|
||||
<Media className="small">
|
||||
<Media left>
|
||||
<i className="fa fa-fw fa-info-circle mr-2"></i>
|
||||
</Media>
|
||||
<Media body>
|
||||
How do your users (visitors), sessions (visits) and pageviews
|
||||
metrics for <abbr title="attribute" className="text-dark">www.webkom.com</abbr> compare to your targets over the last 30 days?
|
||||
</Media>
|
||||
</Media>
|
||||
</CardFooter>
|
||||
</Card>
|
||||
</Grid.Col>
|
||||
<Grid.Col { ...(applyColumn('metric-v-target-pageviews', layouts)) }>
|
||||
<Card>
|
||||
<CardHeader className="bb-0 pt-3 pb-0 bg-none" tag="h6">
|
||||
<i className="fa fa-ellipsis-v text-body mr-2"></i> Pageviews
|
||||
</CardHeader>
|
||||
<CardBody className="pt-2">
|
||||
<MetricVsTarget
|
||||
title="Pageviews"
|
||||
value="1,763,981"
|
||||
progressbarValue="34"
|
||||
progressbarColor="secondary"
|
||||
targetValue="1,567,334"
|
||||
/>
|
||||
</CardBody>
|
||||
<CardFooter>
|
||||
<Media className="small">
|
||||
<Media left>
|
||||
<i className="fa fa-fw fa-info-circle mr-2"></i>
|
||||
</Media>
|
||||
<Media body>
|
||||
How do your users (visitors), sessions (visits) and pageviews
|
||||
metrics for <abbr title="attribute" className="text-dark">www.webkom.com</abbr> compare to your targets over the last 30 days?
|
||||
</Media>
|
||||
</Media>
|
||||
</CardFooter>
|
||||
</Card>
|
||||
</Grid.Col>
|
||||
<Grid.Col { ...(applyColumn('analytics-audience-metrics', layouts)) }>
|
||||
<Card>
|
||||
<CardHeader className="bb-0 pt-3 pb-4 bg-none" tag="h6">
|
||||
<i className="fa fa-ellipsis-v mr-2 text-body"></i> Analytics Audience Metrics
|
||||
</CardHeader>
|
||||
<CardBody className="d-flex flex-column">
|
||||
<Grid.Ready>
|
||||
<AudienceMetricsChart height="100%" className="flex-fill" />
|
||||
</Grid.Ready>
|
||||
</CardBody>
|
||||
<CardFooter>
|
||||
<Media className="small">
|
||||
<Media left>
|
||||
<i className="fa fa-fw fa-info-circle mr-2"></i>
|
||||
</Media>
|
||||
<Media body>
|
||||
How do your users (visitors), sessions (visits) and pageviews
|
||||
metrics for <abbr title="attribute" className="text-dark">www.webkom.com</abbr> compare to your targets over the last 30 days?
|
||||
</Media>
|
||||
</Media>
|
||||
</CardFooter>
|
||||
</Card>
|
||||
</Grid.Col>
|
||||
<Grid.Col { ...(applyColumn('traffic-channels', layouts)) }>
|
||||
<Card className="d-flex flex-column">
|
||||
<CardHeader className="bb-0 pt-3 bg-none" tag="h6">
|
||||
<i className="fa fa-ellipsis-v text-body mr-2"></i> Traffic Channels
|
||||
</CardHeader>
|
||||
<Table responsive className="table mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col" className="bt-0">Channel</th>
|
||||
<th scope="col" className="bt-0">Sessions</th>
|
||||
<th scope="col" className="bt-0">Prev Period</th>
|
||||
<th scope="col" className="text-right bt-0">Change</th>
|
||||
<th scope="col" className="bt-0 text-right">Trend</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td className="align-middle text-inverse">
|
||||
Organic Search
|
||||
</td>
|
||||
<td className="align-middle">
|
||||
{ faker.finance.amount() }
|
||||
</td>
|
||||
<td className="align-middle">
|
||||
<span data-faker="[[finance.amount]]">949.00</span>
|
||||
</td>
|
||||
<td className="align-middle text-right">
|
||||
-75,0%
|
||||
<i className="fa fa-caret-down text-danger ml-1"></i>
|
||||
</td>
|
||||
<td className="text-right align-middle">
|
||||
<TinyAreaChart />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td className="align-middle text-inverse">
|
||||
Direct
|
||||
</td>
|
||||
<td className="align-middle">
|
||||
{ faker.finance.amount() }
|
||||
</td>
|
||||
<td className="align-middle">
|
||||
<span data-faker="[[finance.amount]]">157.11</span>
|
||||
</td>
|
||||
<td className="align-middle text-right">
|
||||
82,1%
|
||||
<i className="fa fa-caret-up text-success ml-1"></i>
|
||||
</td>
|
||||
<td className="text-right align-middle">
|
||||
<TinyAreaChart />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td className="align-middle text-inverse">
|
||||
Social Media
|
||||
</td>
|
||||
<td className="align-middle">
|
||||
{ faker.finance.amount() }
|
||||
</td>
|
||||
<td className="align-middle">
|
||||
<span data-faker="[[finance.amount]]">949.00</span>
|
||||
</td>
|
||||
<td className="align-middle text-right">
|
||||
-75,0%
|
||||
<i className="fa fa-caret-down text-danger ml-1"></i>
|
||||
</td>
|
||||
<td className="text-right align-middle">
|
||||
<TinyAreaChart />
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</Table>
|
||||
<CardFooter className="mt-auto flex-grow-0">
|
||||
<Media className="small">
|
||||
<Media left>
|
||||
<i className="fa fa-fw fa-info-circle mr-2"></i>
|
||||
</Media>
|
||||
<Media body>
|
||||
How do your users (visitors), sessions (visits) and pageviews
|
||||
metrics for <abbr title="attribute" className="text-dark">www.webkom.com</abbr> compare to your targets over the last 30 days?
|
||||
</Media>
|
||||
</Media>
|
||||
</CardFooter>
|
||||
</Card>
|
||||
</Grid.Col>
|
||||
<Grid.Col { ...(applyColumn('sessions', layouts)) }>
|
||||
<Card>
|
||||
<CardHeader className="bb-0 pt-3 pb-0 bg-none" tag="h6">
|
||||
<i className="fa fa-ellipsis-v text-body mr-2"></i> Sessions by Device Type
|
||||
</CardHeader>
|
||||
<CardBody className="d-flex flex-column">
|
||||
<div className={classes['sessions']}>
|
||||
<SessionByDevice
|
||||
title="Desktop"
|
||||
color="purple"
|
||||
valuePercent="51,5"
|
||||
value="201,345"
|
||||
/>
|
||||
<SessionByDevice
|
||||
title="Mobile"
|
||||
color="primary"
|
||||
valuePercent="34,4"
|
||||
value="134,201"
|
||||
/>
|
||||
<SessionByDevice
|
||||
title="Mobile"
|
||||
color="success"
|
||||
valuePercent="20,8"
|
||||
value="81,525"
|
||||
/>
|
||||
</div>
|
||||
<Progress multi className={ classes['sessions-progress'] } style={{height: "5px"}}>
|
||||
<Progress bar color="purple" value="25" style={{height: "5px"}} />
|
||||
<Progress bar color="primary" value="30" style={{height: "5px"}} />
|
||||
<Progress bar color="success" value="45" style={{height: "5px"}} />
|
||||
</Progress>
|
||||
</CardBody>
|
||||
<CardFooter className={`${classes['sessions-info']} mt-auto`}>
|
||||
<Media className="small">
|
||||
<Media left>
|
||||
<i className="fa fa-fw fa-info-circle mr-2"></i>
|
||||
</Media>
|
||||
<Media body>
|
||||
How do your users (visitors), sessions (visits) and pageviews
|
||||
metrics for <abbr title="attribute" className="text-dark">www.webkom.com</abbr> compare to your targets over the last 30 days?
|
||||
</Media>
|
||||
</Media>
|
||||
</CardFooter>
|
||||
</Card>
|
||||
</Grid.Col>
|
||||
<Grid.Col { ...(applyColumn('spend', layouts)) }>
|
||||
<Card>
|
||||
<CardHeader className="d-flex bb-0 pt-3 bg-none">
|
||||
<span className="h6">
|
||||
<i className="fa fa-ellipsis-v text-body mr-2"></i> Spend
|
||||
</span>
|
||||
<span className="ml-auto text-right">
|
||||
Dec 22, 2016 to<br />
|
||||
Dec 31, 2016 <i>(prev.)</i>
|
||||
</span>
|
||||
</CardHeader>
|
||||
<CardBody>
|
||||
<div className="text-center mb-4">
|
||||
<h2>
|
||||
$2,890.12
|
||||
</h2>
|
||||
<div className="mb-1 text-success">
|
||||
<i className="fa mr-1 fa-caret-up"></i>
|
||||
23.34%
|
||||
</div>
|
||||
<div>
|
||||
vs { faker.finance .amount() } (prev.)
|
||||
</div>
|
||||
</div>
|
||||
</CardBody>
|
||||
<CardBody className="p-0">
|
||||
<TinyAreaChart height={ 70 } />
|
||||
</CardBody>
|
||||
<CardFooter>
|
||||
<Media className="small">
|
||||
<Media left>
|
||||
<i className="fa fa-fw fa-info-circle mr-2"></i>
|
||||
</Media>
|
||||
<Media body>
|
||||
How do your users (visitors), sessions (visits) and pageviews
|
||||
metrics for <abbr title="attribute" className="text-dark">www.webkom.com</abbr> compare to your targets over the last 30 days?
|
||||
</Media>
|
||||
</Media>
|
||||
</CardFooter>
|
||||
</Card>
|
||||
</Grid.Col>
|
||||
<Grid.Col { ...(applyColumn('website-performance', layouts)) }>
|
||||
<Card>
|
||||
<CardHeader className="bb-0 pt-3 bg-none" tag="h6">
|
||||
<i className="fa fa-ellipsis-v mr-2"></i> Website Performance
|
||||
</CardHeader>
|
||||
<ListGroup flush>
|
||||
<ListGroupItem className="bt-0">
|
||||
<WebsitePerformance
|
||||
title="Bounce Rate (Avg)"
|
||||
value="46,893"
|
||||
valuePercentIcon="caret-up"
|
||||
valuePercentColor="text-success"
|
||||
valuePercent="23,91"
|
||||
/>
|
||||
</ListGroupItem>
|
||||
<ListGroupItem className="bt-0">
|
||||
<WebsitePerformance
|
||||
title="Pageviews (Avg)"
|
||||
value="2.15"
|
||||
valuePercentColor="text-danger"
|
||||
valuePercent="42,82"
|
||||
/>
|
||||
</ListGroupItem>
|
||||
<ListGroupItem className="bt-0">
|
||||
<WebsitePerformance
|
||||
title="New Sessions"
|
||||
value="76,40"
|
||||
valuePercentIcon="caret-up"
|
||||
valuePercentColor="text-success"
|
||||
valuePercent="23,91"
|
||||
/>
|
||||
</ListGroupItem>
|
||||
<ListGroupItem className="bt-0 bb-0">
|
||||
<WebsitePerformance
|
||||
title="Time on Site (Avg)"
|
||||
value="2m:16s"
|
||||
valuePercentColor="text-danger"
|
||||
valuePercent="65,28"
|
||||
/>
|
||||
</ListGroupItem>
|
||||
</ListGroup>
|
||||
<CardFooter className="flex-grow-0 mt-auto">
|
||||
<Media className="small">
|
||||
<Media left>
|
||||
<i className="fa fa-fw fa-info-circle mr-2"></i>
|
||||
</Media>
|
||||
<Media body>
|
||||
How do your users (visitors), sessions (visits) and pageviews
|
||||
metrics for <abbr title="attribute" className="text-dark">www.webkom.com</abbr> compare to your targets over the last 30 days?
|
||||
</Media>
|
||||
</Media>
|
||||
</CardFooter>
|
||||
</Card>
|
||||
</Grid.Col>
|
||||
<Grid.Col { ...(applyColumn('organic-traffic', layouts)) }>
|
||||
<Card>
|
||||
<CardHeader className="d-flex bb-0 pt-3 bg-none">
|
||||
<Media>
|
||||
<Media left className="mr-3">
|
||||
<i className="fa fa-ellipsis-v"></i>
|
||||
</Media>
|
||||
<Media body>
|
||||
<span className="h6">
|
||||
How did my organic traffic perform?
|
||||
</span>
|
||||
<br />
|
||||
<span>
|
||||
Dec 22, 2016 to Dec 31, 2016 <i>(prev.)</i>
|
||||
</span>
|
||||
</Media>
|
||||
</Media>
|
||||
</CardHeader>
|
||||
<CardBody className="d-flex flex-column">
|
||||
<div className="text-center mb-4">
|
||||
<h6>Organics Sessons</h6>
|
||||
<h2>
|
||||
46,982
|
||||
</h2>
|
||||
<div className="mb-1 text-success">
|
||||
<i className="fa mr-1 fa-caret-up"></i>
|
||||
23.34% <span> vs { faker.finance .amount() } <i>(prev.)</i>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<Grid.Ready>
|
||||
<SimpleLineChart height="100%" className="flex-fill"/>
|
||||
</Grid.Ready>
|
||||
</CardBody>
|
||||
<CardFooter>
|
||||
<Media className="small">
|
||||
<Media left>
|
||||
<i className="fa fa-fw fa-info-circle mr-2"></i>
|
||||
</Media>
|
||||
<Media body>
|
||||
How do your users (visitors), sessions (visits) and pageviews
|
||||
metrics for <abbr title="attribute" className="text-dark">www.webkom.com</abbr> compare to your targets over the last 30 days?
|
||||
</Media>
|
||||
</Media>
|
||||
</CardFooter>
|
||||
</Card>
|
||||
</Grid.Col>
|
||||
</Grid.Row>
|
||||
</Grid>
|
||||
</React.Fragment>
|
||||
);
|
||||
}
|
||||
}
|
60
app/routes/Dashboards/Analytics/Analytics.scss
Executable file
60
app/routes/Dashboards/Analytics/Analytics.scss
Executable file
@@ -0,0 +1,60 @@
|
||||
@import "./../../../styles/variables.scss";
|
||||
|
||||
.sessions {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
.sessions-progress {
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
|
||||
.session {
|
||||
flex: 1 1 auto;
|
||||
|
||||
&__percentage {
|
||||
font-size: 2.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
:global(.float-column--size-xs),
|
||||
:global(.float-column--size-sm) {
|
||||
.sessions {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.session {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 0.5rem 0;
|
||||
|
||||
&__values {
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
&__percentage {
|
||||
font-size: 1.2rem;
|
||||
font-weight: bold;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
&__value {
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
+ .session {
|
||||
border-top: 1px solid $gray-400;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
:global(.float-column--size-xs) {
|
||||
.sessions-progress {
|
||||
margin-top: 2rem;
|
||||
}
|
||||
|
||||
.sessions-info {
|
||||
display: none;
|
||||
}
|
||||
}
|
77
app/routes/Dashboards/Analytics/components/AudienceMetricsChart.js
Executable file
77
app/routes/Dashboards/Analytics/components/AudienceMetricsChart.js
Executable file
@@ -0,0 +1,77 @@
|
||||
import React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import _ from 'lodash';
|
||||
import moment from 'moment';
|
||||
|
||||
import {
|
||||
ResponsiveContainer,
|
||||
ComposedChart,
|
||||
CartesianGrid,
|
||||
XAxis,
|
||||
YAxis,
|
||||
Tooltip,
|
||||
Legend,
|
||||
Area,
|
||||
Bar,
|
||||
Dot
|
||||
} from './../../../../components/recharts';
|
||||
|
||||
import colors from './../../../../colors';
|
||||
|
||||
const CHART_LENGTH = 30;
|
||||
const CHART_START_DATE = moment().subtract(CHART_LENGTH, 'months');
|
||||
|
||||
const dataGenerator = (index) => {
|
||||
const referenceValue = _.random(1500, 1800);
|
||||
const halfedRefVal = referenceValue / 2;
|
||||
|
||||
return {
|
||||
key: index,
|
||||
month: moment(CHART_START_DATE).add(index, 'months').format('MMM YY'),
|
||||
"Tokyo": referenceValue,
|
||||
"New York": _.random(1200, 2200),
|
||||
"Berlin": referenceValue - _.random(halfedRefVal, halfedRefVal * 1.1),
|
||||
};
|
||||
}
|
||||
|
||||
const data = _.times(CHART_LENGTH, dataGenerator);
|
||||
|
||||
// eslint-disable-next-line react/prop-types
|
||||
const generateDot = ({stroke, ...other}) => (
|
||||
<Dot
|
||||
{ ...other }
|
||||
fill={ stroke }
|
||||
stroke={ colors['white'] }
|
||||
strokeWidth={ 2 }
|
||||
r={ 5 }
|
||||
/>
|
||||
);
|
||||
|
||||
export const AudienceMetricsChart = ({height, className}) => (
|
||||
<ResponsiveContainer
|
||||
width='100%'
|
||||
minHeight='250px'
|
||||
className={ className }
|
||||
{...(!_.isUndefined(height) ? {
|
||||
height
|
||||
} : {
|
||||
aspect: 2 / 1
|
||||
})}
|
||||
>
|
||||
<ComposedChart data={data}
|
||||
margin={{top: 20, right: 20, bottom: 20, left: 20}}>
|
||||
<CartesianGrid stroke={ colors['200'] } strokeDasharray='none' vertical={ false }/>
|
||||
<XAxis dataKey="month"/>
|
||||
<YAxis />
|
||||
<Tooltip />
|
||||
<Legend />
|
||||
<Bar dataKey='New York' barSize={5} fill={ colors['400'] } />
|
||||
<Area dataKey='Tokyo' fill={ colors['purple-02'] } stroke={ colors['purple'] } activeDot={ null } />
|
||||
<Area dataKey='Berlin' fill={ colors['primary-04'] } stroke={ colors['primary'] } activeDot={{r: 5}} dot={generateDot} />
|
||||
</ComposedChart>
|
||||
</ResponsiveContainer>
|
||||
);
|
||||
AudienceMetricsChart.propTypes = {
|
||||
height: PropTypes.string,
|
||||
className: PropTypes.string
|
||||
}
|
3
app/routes/Dashboards/Analytics/index.js
Executable file
3
app/routes/Dashboards/Analytics/index.js
Executable file
@@ -0,0 +1,3 @@
|
||||
import { Analytics } from './Analytics';
|
||||
|
||||
export default Analytics;
|
262
app/routes/Dashboards/Financial/Financial.js
Executable file
262
app/routes/Dashboards/Financial/Financial.js
Executable file
@@ -0,0 +1,262 @@
|
||||
import React from 'react';
|
||||
import {
|
||||
Container,
|
||||
Row,
|
||||
Card,
|
||||
CardBody,
|
||||
CustomInput,
|
||||
CardDeck,
|
||||
Table,
|
||||
UncontrolledDropdown,
|
||||
DropdownToggle,
|
||||
DropdownMenu,
|
||||
DropdownItem,
|
||||
CardTitle,
|
||||
ListGroup,
|
||||
ListGroupItem,
|
||||
Button,
|
||||
Col
|
||||
} from './../../../components';
|
||||
import { setupPage } from './../../../components/Layout/setupPage';
|
||||
|
||||
import { HeaderMain } from "../../components/HeaderMain";
|
||||
|
||||
import {
|
||||
TrTableInvoices
|
||||
} from "../../components/Financial/TrTableInvoices"
|
||||
import {
|
||||
TinyDonutChartBig
|
||||
} from "../../components/Financial/TinyDonutChartBig"
|
||||
import {
|
||||
StackedAreaChart
|
||||
} from "../../components/Financial/StackedAreaChart"
|
||||
import {
|
||||
TrTableRecentFundings
|
||||
} from "../../components/Financial/TrTableRecentFundings"
|
||||
|
||||
/*eslint-disable */
|
||||
const progressCompletion = [
|
||||
"25",
|
||||
"50",
|
||||
"75",
|
||||
"97"
|
||||
];
|
||||
/*eslint-enable */
|
||||
|
||||
const Financial = () => (
|
||||
<Container>
|
||||
<Row className="mb-2">
|
||||
<Col lg={ 12 }>
|
||||
<HeaderMain
|
||||
title="Financial"
|
||||
className="mb-4 mb-lg-3"
|
||||
/>
|
||||
|
||||
</Col>
|
||||
</Row>
|
||||
<Row>
|
||||
<Col lg={ 12 }>
|
||||
<div className="hr-text hr-text-center mt-4 mb-4">
|
||||
<span>Your Cash</span>
|
||||
</div>
|
||||
</Col>
|
||||
<Col lg={ 3 }>
|
||||
<Card className="mb-3">
|
||||
<CardBody>
|
||||
<CardTitle tag="h6" className="mb-4">
|
||||
Main Fundings
|
||||
</CardTitle>
|
||||
<div>
|
||||
<div className="mb-3">
|
||||
<h2>$ 188.00</h2>
|
||||
</div>
|
||||
<div>
|
||||
<i className="fa fa-caret-down fa-fw text-danger"></i> $464.00
|
||||
</div>
|
||||
</div>
|
||||
</CardBody>
|
||||
</Card>
|
||||
</Col>
|
||||
<Col lg={ 3 }>
|
||||
<Card className="mb-3">
|
||||
<CardBody>
|
||||
<CardTitle tag="h6" className="mb-4">
|
||||
Invoices
|
||||
</CardTitle>
|
||||
<div>
|
||||
<div className="mb-3">
|
||||
<h2>$ 553.00</h2>
|
||||
</div>
|
||||
<div>
|
||||
<i className="fa fa-caret-down fa-fw text-danger"></i> $994.00
|
||||
</div>
|
||||
</div>
|
||||
</CardBody>
|
||||
</Card>
|
||||
</Col>
|
||||
<Col lg={ 3 }>
|
||||
<Card className="mb-3">
|
||||
<CardBody>
|
||||
<CardTitle tag="h6" className="mb-4">
|
||||
Accounts Receivable
|
||||
</CardTitle>
|
||||
<div>
|
||||
<div className="mb-3">
|
||||
<h2>$ 451.00</h2>
|
||||
</div>
|
||||
<div>
|
||||
<i className="fa fa-caret-up fa-fw text-success"></i> $938.00
|
||||
</div>
|
||||
</div>
|
||||
</CardBody>
|
||||
</Card>
|
||||
</Col>
|
||||
<Col lg={ 3 }>
|
||||
<Card className="mb-3">
|
||||
<CardBody>
|
||||
<CardTitle tag="h6" className="mb-4">
|
||||
Accounts Receivable
|
||||
</CardTitle>
|
||||
<div>
|
||||
<div className="mb-3">
|
||||
<h2>$ 194.00</h2>
|
||||
</div>
|
||||
<div>
|
||||
<i className="fa fa-caret-up fa-fw text-success"></i> $519.00
|
||||
</div>
|
||||
</div>
|
||||
</CardBody>
|
||||
</Card>
|
||||
</Col>
|
||||
<Col lg={ 12 }>
|
||||
<CardDeck>
|
||||
<Card className="mb-3">
|
||||
<CardBody>
|
||||
<CardTitle className="mb-4 d-flex">
|
||||
<h6>Money Map</h6>
|
||||
<UncontrolledDropdown className="ml-auto">
|
||||
<DropdownToggle color="link" size="sm" caret className="pt-0">
|
||||
Last Month
|
||||
</DropdownToggle>
|
||||
<DropdownMenu right>
|
||||
<DropdownItem header>Select Date</DropdownItem>
|
||||
<DropdownItem active>Last Month</DropdownItem>
|
||||
<DropdownItem>Last 12 Months</DropdownItem>
|
||||
<DropdownItem divider />
|
||||
<DropdownItem>Custom...</DropdownItem>
|
||||
</DropdownMenu>
|
||||
</UncontrolledDropdown>
|
||||
</CardTitle>
|
||||
<div className="d-flex justify-content-center">
|
||||
<TinyDonutChartBig />
|
||||
</div>
|
||||
</CardBody>
|
||||
</Card>
|
||||
<Card className="mb-3">
|
||||
<CardBody>
|
||||
<CardTitle className="mb-1 d-flex">
|
||||
<h6>Recent Fundings</h6>
|
||||
<Button color="link" size="sm" className="pt-0 ml-auto">
|
||||
View All <i className="fa fa-angle-right"></i>
|
||||
</Button>
|
||||
</CardTitle>
|
||||
</CardBody>
|
||||
<Table responsive striped className="mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th className="bt-0">Company</th>
|
||||
<th className="bt-0">Amount</th>
|
||||
<th className="bt-0">Date</th>
|
||||
<th className="bt-0 text-right">Action</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<TrTableRecentFundings />
|
||||
</tbody>
|
||||
</Table>
|
||||
</Card>
|
||||
</CardDeck>
|
||||
<Card className="mb-3">
|
||||
<CardBody>
|
||||
<CardTitle className="mb-1 d-flex">
|
||||
<h6>Invoices</h6>
|
||||
<Button color="link" size="sm" className="pt-0 ml-auto">
|
||||
View All <i className="fa fa-angle-right"></i>
|
||||
</Button>
|
||||
</CardTitle>
|
||||
</CardBody>
|
||||
<Table responsive striped className="mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th className="bt-0">Company</th>
|
||||
<th className="bt-0">Amount</th>
|
||||
<th className="bt-0">Date</th>
|
||||
<th className="bt-0">Contact</th>
|
||||
<th className="bt-0">Email</th>
|
||||
<th className="bt-0 text-right">Action</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<TrTableInvoices />
|
||||
</tbody>
|
||||
</Table>
|
||||
</Card>
|
||||
</Col>
|
||||
<Col lg={ 8 }>
|
||||
<Card className="mb-3">
|
||||
<CardBody>
|
||||
<CardTitle className="mb-4 d-flex">
|
||||
<h6>Account Performance</h6>
|
||||
</CardTitle>
|
||||
<div className="d-flex justify-content-center">
|
||||
<StackedAreaChart />
|
||||
</div>
|
||||
</CardBody>
|
||||
</Card>
|
||||
</Col>
|
||||
<Col lg={ 4 }>
|
||||
<Card className="mb-3">
|
||||
<CardBody>
|
||||
<CardTitle className="mb-1">
|
||||
<h6 className="mb-0">Settings</h6>
|
||||
</CardTitle>
|
||||
</CardBody>
|
||||
<ListGroup flush>
|
||||
<ListGroupItem className="d-flex">
|
||||
<span>My Cash</span>
|
||||
<CustomInput type="switch" id="exampleCustomSwitch" name="customSwitch" label="" className="ml-auto" />
|
||||
</ListGroupItem>
|
||||
<ListGroupItem className="d-flex">
|
||||
<span>My Cap</span>
|
||||
<CustomInput type="switch" id="exampleCustomSwitch1" name="customSwitch" label="" className="ml-auto" defaultChecked />
|
||||
</ListGroupItem>
|
||||
<ListGroupItem className="d-flex">
|
||||
<span>Client List</span>
|
||||
<CustomInput type="switch" id="exampleCustomSwitch2" name="customSwitch" label="" className="ml-auto" defaultChecked />
|
||||
</ListGroupItem>
|
||||
<ListGroupItem className="d-flex">
|
||||
<span>Recent Fundings</span>
|
||||
<CustomInput type="switch" id="exampleCustomSwitch3" name="customSwitch" label="" className="ml-auto" />
|
||||
</ListGroupItem>
|
||||
<ListGroupItem className="d-flex">
|
||||
<span>Invoice Creator</span>
|
||||
<CustomInput type="switch" id="exampleCustomSwitch4" name="customSwitch" label="" className="ml-auto" />
|
||||
</ListGroupItem>
|
||||
<ListGroupItem className="d-flex">
|
||||
<span>Sales Lead</span>
|
||||
<CustomInput type="switch" id="exampleCustomSwitch5" name="customSwitch" label="" className="ml-auto" defaultChecked />
|
||||
</ListGroupItem>
|
||||
<ListGroupItem className="d-flex">
|
||||
<span>Q&A</span>
|
||||
<CustomInput type="switch" id="exampleCustomSwitch6" name="customSwitch" label="" className="ml-auto" defaultChecked />
|
||||
</ListGroupItem>
|
||||
</ListGroup>
|
||||
</Card>
|
||||
</Col>
|
||||
</Row>
|
||||
</Container>
|
||||
);
|
||||
|
||||
export default setupPage({
|
||||
pageTitle: 'Financial'
|
||||
})(Financial);
|
3
app/routes/Dashboards/Financial/index.js
Executable file
3
app/routes/Dashboards/Financial/index.js
Executable file
@@ -0,0 +1,3 @@
|
||||
import Financial from './Financial';
|
||||
|
||||
export default Financial;
|
348
app/routes/Dashboards/Monitor/Monitor.js
Executable file
348
app/routes/Dashboards/Monitor/Monitor.js
Executable file
@@ -0,0 +1,348 @@
|
||||
import React from 'react';
|
||||
import {
|
||||
Container,
|
||||
Row,
|
||||
Card,
|
||||
CardBody,
|
||||
Badge,
|
||||
Table,
|
||||
CardTitle,
|
||||
Progress,
|
||||
Col
|
||||
} from './../../../components';
|
||||
import { setupPage } from './../../../components/Layout/setupPage';
|
||||
|
||||
import { HeaderMain } from "../../components/HeaderMain";
|
||||
|
||||
import {
|
||||
TinyDonutChart
|
||||
} from "../../components/Monitor/TinyDonutChart"
|
||||
import {
|
||||
TinyDonutChartBig
|
||||
} from "../../components/Monitor/TinyDonutChartBig"
|
||||
import {
|
||||
TrTableMonitor
|
||||
} from "../../components/Monitor/TrTableMonitor"
|
||||
import {
|
||||
TinyAreaChart
|
||||
} from "../../components/Monitor/TinyAreaChart"
|
||||
|
||||
/*eslint-disable */
|
||||
const progressCompletion = [
|
||||
"25",
|
||||
"50",
|
||||
"75",
|
||||
"97"
|
||||
];
|
||||
/*eslint-enable */
|
||||
|
||||
const Monitor = () => (
|
||||
<Container>
|
||||
<Row className="mb-2">
|
||||
<Col lg={ 12 }>
|
||||
<HeaderMain
|
||||
title="Monitor"
|
||||
className="mb-4 mb-lg-5"
|
||||
/>
|
||||
|
||||
</Col>
|
||||
</Row>
|
||||
<Row>
|
||||
<Col lg={ 4 }>
|
||||
<Card className="mb-3">
|
||||
<CardBody>
|
||||
<CardTitle tag="h6" className="mb-4">
|
||||
System Monitoring
|
||||
</CardTitle>
|
||||
<div className="mb-4">
|
||||
<div>
|
||||
<h6 className="mb-1">CPU</h6>
|
||||
<p>Intel Celeron G1610 @2.60Ghz</p>
|
||||
</div>
|
||||
<div className="d-flex justify-content-between">
|
||||
<span className="d-flex align-items-center mr-2">Core 0</span>
|
||||
<Progress value="44" className="mt-2 w-50" style={{height: "5px"}} />
|
||||
<span className="ml-2 text-inverse">86%</span>
|
||||
</div>
|
||||
<div className="d-flex justify-content-between">
|
||||
<span className="d-flex align-items-center mr-2">Core 1</span>
|
||||
<Progress value="74" className="mt-2 w-50" style={{height: "5px"}} />
|
||||
<span className="ml-2 text-inverse">40%</span>
|
||||
</div>
|
||||
</div>
|
||||
<div className="mb-4">
|
||||
<div>
|
||||
<h6 className="mb-1">Memory <small>(Ram)</small></h6>
|
||||
<p>GSkill 2 x 8 GB DDR3 @1333 Mhz</p>
|
||||
</div>
|
||||
<div className="mb-3 d-flex">
|
||||
<TinyDonutChart />
|
||||
<div className="ml-2 align-self-center">
|
||||
<h2 className="mb-0">52 <small>GB</small></h2>
|
||||
<span>Total Memory</span>
|
||||
</div>
|
||||
</div>
|
||||
<div className="d-flex justify-content-between">
|
||||
<div className="text-left">
|
||||
<div className="small mb-2">
|
||||
<i className="fa fa-circle fa-fw text-info"></i> Allocated
|
||||
</div>
|
||||
<h6 className="mb-0">48,7 MB</h6>
|
||||
<span>79%</span>
|
||||
</div>
|
||||
<div className="text-left">
|
||||
<div className="small mb-2">
|
||||
<i className="fa fa-circle fa-fw text-primary"></i> In Cache
|
||||
</div>
|
||||
<h6 className="mb-0">26,9 MB</h6>
|
||||
<span>65%</span>
|
||||
</div>
|
||||
<div className="text-left">
|
||||
<div className="small mb-2">
|
||||
<i className="fa fa-circle fa-fw text-gray-300"></i> Available
|
||||
</div>
|
||||
<h6 className="mb-0">2,7 MB</h6>
|
||||
<span>34%</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div>
|
||||
<h6 className="mb-1">Interface Traffic <small>(re0)</small></h6>
|
||||
<p>Intel Celeron G1610 @2.60Ghz</p>
|
||||
</div>
|
||||
</div>
|
||||
</CardBody>
|
||||
</Card>
|
||||
<Card className="mb-3">
|
||||
<CardBody>
|
||||
<CardTitle tag="h6" className="mb-4">
|
||||
Network Monitoring
|
||||
</CardTitle>
|
||||
<div>
|
||||
<div>
|
||||
<h6 className="mb-1">Interface Traffic <small>(re0)</small></h6>
|
||||
<p>Intel Celeron G1610 @2.60Ghz</p>
|
||||
</div>
|
||||
</div>
|
||||
<TinyAreaChart />
|
||||
</CardBody>
|
||||
</Card>
|
||||
<Card className="mb-3">
|
||||
<CardBody>
|
||||
<CardTitle tag="h6" className="mb-4">
|
||||
Hardware Temperature
|
||||
</CardTitle>
|
||||
<div className="mb-4">
|
||||
<div>
|
||||
<h6>CPU <small>(idle)</small></h6>
|
||||
</div>
|
||||
<div className="d-flex justify-content-between mb-3">
|
||||
<div className="text-left">
|
||||
<i className="fa fa-caret-down fa-fw text-danger"></i>Min: 19ºC
|
||||
</div>
|
||||
<div className="text-left">
|
||||
<i className="fa fa-caret-up fa-fw text-success"></i>Min: 26ºC
|
||||
</div>
|
||||
<div className="text-left">
|
||||
<i className="fa fa-caret-up fa-fw text-success"></i>Min: 32ºC
|
||||
</div>
|
||||
</div>
|
||||
<TinyAreaChart />
|
||||
</div>
|
||||
<div className="mb-4">
|
||||
<div>
|
||||
<h6>HDD1 WD30EZRX <small>(ada0)</small></h6>
|
||||
</div>
|
||||
<div className="d-flex justify-content-between mb-3">
|
||||
<div className="text-left">
|
||||
<i className="fa fa-caret-down fa-fw text-danger"></i>Min: 19ºC
|
||||
</div>
|
||||
<div className="text-left">
|
||||
<i className="fa fa-caret-up fa-fw text-success"></i>Min: 26ºC
|
||||
</div>
|
||||
<div className="text-left">
|
||||
<i className="fa fa-caret-up fa-fw text-success"></i>Min: 32ºC
|
||||
</div>
|
||||
</div>
|
||||
<TinyAreaChart />
|
||||
</div>
|
||||
<div>
|
||||
<div>
|
||||
<h6>HDD1 WD30EZRX <small>(ada1)</small></h6>
|
||||
</div>
|
||||
<div className="d-flex justify-content-between mb-3">
|
||||
<div className="text-left">
|
||||
<i className="fa fa-caret-down fa-fw text-danger"></i>Min: 19ºC
|
||||
</div>
|
||||
<div className="text-left">
|
||||
<i className="fa fa-caret-up fa-fw text-success"></i>Min: 26ºC
|
||||
</div>
|
||||
<div className="text-left">
|
||||
<i className="fa fa-caret-up fa-fw text-success"></i>Min: 32ºC
|
||||
</div>
|
||||
</div>
|
||||
<TinyAreaChart />
|
||||
</div>
|
||||
</CardBody>
|
||||
</Card>
|
||||
</Col>
|
||||
<Col lg={ 8 }>
|
||||
<p>
|
||||
Nesciunt odit eius nihil molestiae tenetur earum enim quidem. Aperiam non sapiente voluptatum in doloremque rerum magnam quae sed.
|
||||
Quisquam eos non voluptate sapiente qui temporibus harum in illo. Aliquid at dolor labore. Qui error modi.
|
||||
</p>
|
||||
<div className="hr-text hr-text-left mt-4 mb-4">
|
||||
<span>Volume Status</span>
|
||||
</div>
|
||||
<Row className="mb-5">
|
||||
<Col lg={ 3 }>
|
||||
<div>
|
||||
<div className="mb-3">
|
||||
<h6 className="mb-1">Path</h6>
|
||||
<Badge color="secondary" pill>/mtn/volume1</Badge>
|
||||
</div>
|
||||
<div className="mb-0">
|
||||
<h2 className="mb-0">2.24 <small>TiB</small></h2>
|
||||
<span>Volume Size</span>
|
||||
</div>
|
||||
<TinyDonutChartBig
|
||||
pieColor="primary"
|
||||
/>
|
||||
<div className="d-flex justify-content-between">
|
||||
<div className="text-left">
|
||||
<div className="small mb-2">
|
||||
<i className="fa fa-circle fa-fw text-purple"></i> Used Space
|
||||
</div>
|
||||
<h6 className="mb-0">483,7 MB</h6>
|
||||
<span>79%</span>
|
||||
</div>
|
||||
<div className="text-left">
|
||||
<div className="small mb-2">
|
||||
<i className="fa fa-circle fa-fw text-gray-300"></i> Free Space
|
||||
</div>
|
||||
<h6 className="mb-0">269,3 MB</h6>
|
||||
<span>65%</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</Col>
|
||||
<Col lg={ 3 }>
|
||||
<div>
|
||||
<div className="mb-3">
|
||||
<h6 className="mb-1">Path</h6>
|
||||
<Badge color="secondary" pill>/mtn/volume1</Badge>
|
||||
</div>
|
||||
<div className="mb-0">
|
||||
<h2 className="mb-0">5.07 <small>TiB</small></h2>
|
||||
<span>Volume Size</span>
|
||||
</div>
|
||||
<TinyDonutChartBig
|
||||
pieColor="purple"
|
||||
/>
|
||||
<div className="d-flex justify-content-between">
|
||||
<div className="text-left">
|
||||
<div className="small mb-2">
|
||||
<i className="fa fa-circle fa-fw text-purple"></i> Used Space
|
||||
</div>
|
||||
<h6 className="mb-0">48,7 MB</h6>
|
||||
<span>79%</span>
|
||||
</div>
|
||||
<div className="text-left">
|
||||
<div className="small mb-2">
|
||||
<i className="fa fa-circle fa-fw text-gray-300"></i> Free Space
|
||||
</div>
|
||||
<h6 className="mb-0">26,9 MB</h6>
|
||||
<span>65%</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</Col>
|
||||
<Col lg={ 3 }>
|
||||
<div>
|
||||
<div className="mb-3">
|
||||
<h6 className="mb-1">Path</h6>
|
||||
<Badge color="secondary" pill>/mtn/volume1</Badge>
|
||||
</div>
|
||||
<div className="mb-0">
|
||||
<h2 className="mb-0">3.16 <small>TiB</small></h2>
|
||||
<span>Volume Size</span>
|
||||
</div>
|
||||
<TinyDonutChartBig
|
||||
pieColor="success"
|
||||
/>
|
||||
<div className="d-flex justify-content-between">
|
||||
<div className="text-left">
|
||||
<div className="small mb-2">
|
||||
<i className="fa fa-circle fa-fw text-success"></i> Used Space
|
||||
</div>
|
||||
<h6 className="mb-0">483,3 MB</h6>
|
||||
<span>79%</span>
|
||||
</div>
|
||||
<div className="text-left">
|
||||
<div className="small mb-2">
|
||||
<i className="fa fa-circle fa-fw text-gray-300"></i> Free Space
|
||||
</div>
|
||||
<h6 className="mb-0">262,9 MB</h6>
|
||||
<span>65%</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</Col>
|
||||
<Col lg={ 3 }>
|
||||
<div>
|
||||
<div className="mb-3">
|
||||
<h6 className="mb-1">Path</h6>
|
||||
<Badge color="secondary" pill>/mtn/volume1</Badge>
|
||||
</div>
|
||||
<div className="mb-0">
|
||||
<h2 className="mb-0">9.27 <small>TiB</small></h2>
|
||||
<span>Volume Size</span>
|
||||
</div>
|
||||
<TinyDonutChartBig
|
||||
pieColor="yellow"
|
||||
/>
|
||||
<div className="d-flex justify-content-between">
|
||||
<div className="text-left">
|
||||
<div className="small mb-2">
|
||||
<i className="fa fa-circle fa-fw text-yellow"></i> Used Space
|
||||
</div>
|
||||
<h6 className="mb-0">482,7 MB</h6>
|
||||
<span>79%</span>
|
||||
</div>
|
||||
<div className="text-left">
|
||||
<div className="small mb-2">
|
||||
<i className="fa fa-circle fa-fw text-gray-300"></i> Free Space
|
||||
</div>
|
||||
<h6 className="mb-0">26,9 MB</h6>
|
||||
<span>65%</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</Col>
|
||||
</Row>
|
||||
<div className="hr-text hr-text-left mt-2 mb-4">
|
||||
<span>Mounted Devices</span>
|
||||
</div>
|
||||
<Table responsive>
|
||||
<thead>
|
||||
<tr>
|
||||
<th className="bt-0">Description</th>
|
||||
<th className="bt-0">RAID</th>
|
||||
<th className="bt-0">Capacity</th>
|
||||
<th className="bt-0 text-right">Usage</th>
|
||||
<th className="bt-0 text-right">Status</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<TrTableMonitor />
|
||||
</tbody>
|
||||
</Table>
|
||||
</Col>
|
||||
</Row>
|
||||
</Container>
|
||||
);
|
||||
|
||||
export default setupPage({
|
||||
pageTitle: 'Monitor'
|
||||
})(Monitor);
|
3
app/routes/Dashboards/Monitor/index.js
Executable file
3
app/routes/Dashboards/Monitor/index.js
Executable file
@@ -0,0 +1,3 @@
|
||||
import Monitor from './Monitor';
|
||||
|
||||
export default Monitor;
|
120
app/routes/Dashboards/Projects/DraggableProjects.js
Executable file
120
app/routes/Dashboards/Projects/DraggableProjects.js
Executable file
@@ -0,0 +1,120 @@
|
||||
import React from 'react';
|
||||
import uid from 'uuid/v4';
|
||||
import faker from 'faker/locale/en_US';
|
||||
import { DragDropContext, Droppable, Draggable } from 'react-beautiful-dnd';
|
||||
import _ from 'lodash';
|
||||
|
||||
import {
|
||||
ProjectsList
|
||||
} from "../../components/ProjectsDashboards/ProjectsList";
|
||||
|
||||
const reorder = (list, startIndex, endIndex) => {
|
||||
const result = Array.from(list);
|
||||
const [removed] = result.splice(startIndex, 1);
|
||||
result.splice(endIndex, 0, removed);
|
||||
|
||||
return result;
|
||||
};
|
||||
|
||||
export class DraggableProjects extends React.Component {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
|
||||
this.state = {
|
||||
projects: [
|
||||
{
|
||||
id: uid(),
|
||||
title: faker.commerce.productName(),
|
||||
badgeColor: "success",
|
||||
badgeTitle: "Active",
|
||||
progressValue: "76",
|
||||
completeValue: "13",
|
||||
myTasksValue: "35",
|
||||
daysDueValue: "6"
|
||||
}, {
|
||||
id: uid(),
|
||||
title: faker.commerce.productName(),
|
||||
badgeColor: "danger",
|
||||
badgeTitle: "Suspended",
|
||||
progressValue: "23",
|
||||
completeValue: "6",
|
||||
myTasksValue: "87",
|
||||
daysDueValue: "15"
|
||||
}, {
|
||||
id: uid(),
|
||||
title: faker.commerce.productName(),
|
||||
badgeColor: "secondary",
|
||||
badgeTitle: "Archived",
|
||||
progressValue: "4",
|
||||
completeValue: "98",
|
||||
myTasksValue: "21",
|
||||
daysDueValue: "7"
|
||||
}, {
|
||||
id: uid(),
|
||||
title: faker.commerce.productName(),
|
||||
badgeColor: "warning",
|
||||
badgeTitle: "Paused",
|
||||
progressValue: "63",
|
||||
completeValue: "98",
|
||||
myTasksValue: "21",
|
||||
daysDueValue: "7"
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
this.onDragEnd = this.onDragEnd.bind(this);
|
||||
}
|
||||
|
||||
onDragEnd(result) {
|
||||
if (!result.destination) {
|
||||
return;
|
||||
}
|
||||
|
||||
const projects = reorder(
|
||||
this.state.projects,
|
||||
result.source.index,
|
||||
result.destination.index
|
||||
);
|
||||
|
||||
this.setState({
|
||||
projects,
|
||||
});
|
||||
}
|
||||
|
||||
render() {
|
||||
return (
|
||||
<DragDropContext onDragEnd={this.onDragEnd}>
|
||||
<Droppable droppableId="droppable">
|
||||
{(provided, snapshot) => (
|
||||
<div
|
||||
className="list-group list-group-flush"
|
||||
ref={provided.innerRef}
|
||||
>
|
||||
{_.map(this.state.projects, ({id, ...project}, index) => (
|
||||
<Draggable key={id} draggableId={id} index={index}>
|
||||
{(provided, snapshot) => (
|
||||
<div
|
||||
className="list-group-item"
|
||||
ref={provided.innerRef}
|
||||
{...provided.draggableProps}
|
||||
{...provided.dragHandleProps}
|
||||
style={{
|
||||
...provided.draggableProps.style,
|
||||
borderLeft: snapshot.isDragging && '1px solid rgba(0, 0, 0, 0.125)',
|
||||
borderRight: snapshot.isDragging && '1px solid rgba(0, 0, 0, 0.125)'
|
||||
}}
|
||||
>
|
||||
<ProjectsList
|
||||
{ ...project }
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
</Draggable>
|
||||
))}
|
||||
</div>
|
||||
)}
|
||||
</Droppable>
|
||||
</DragDropContext>
|
||||
);
|
||||
}
|
||||
}
|
304
app/routes/Dashboards/Projects/ProjectsDashboard.js
Executable file
304
app/routes/Dashboards/Projects/ProjectsDashboard.js
Executable file
@@ -0,0 +1,304 @@
|
||||
import React from 'react';
|
||||
import faker from 'faker/locale/en_US';
|
||||
import { Link } from 'react-router-dom';
|
||||
import {
|
||||
Container,
|
||||
Row,
|
||||
Card,
|
||||
CardBody,
|
||||
Badge,
|
||||
Table,
|
||||
CardTitle,
|
||||
Button,
|
||||
InputGroup,
|
||||
InputGroupAddon,
|
||||
Input,
|
||||
ListGroup,
|
||||
ListGroupItem,
|
||||
Media,
|
||||
Col
|
||||
} from './../../../components';
|
||||
import { setupPage } from './../../../components/Layout/setupPage';
|
||||
|
||||
import { HeaderMain } from "../../components/HeaderMain";
|
||||
|
||||
import {
|
||||
TasksMedia
|
||||
} from "../../components/ProjectsDashboards/TasksMedia";
|
||||
import {
|
||||
TinyDonutChart
|
||||
} from "../../components/ProjectsDashboards/TinyDonutChart"
|
||||
import {
|
||||
TinyDonutChartAllProjects
|
||||
} from "../../components/ProjectsDashboards/TinyDonutChartAllProjects"
|
||||
import {
|
||||
TimelineMini
|
||||
} from "../../components/Timeline/TimelineMini"
|
||||
import { DraggableProjects } from './DraggableProjects';
|
||||
|
||||
const ProjectsDashboard = () => (
|
||||
<Container>
|
||||
<Row className="mb-5">
|
||||
<Col lg={ 12 }>
|
||||
<HeaderMain
|
||||
title="Projects"
|
||||
className="mb-4 mb-lg-5"
|
||||
/>
|
||||
<p>
|
||||
{ faker.lorem.paragraph() }
|
||||
</p>
|
||||
</Col>
|
||||
<Col lg={ 3 }>
|
||||
<div className="hr-text hr-text-center my-2">
|
||||
<span>Payments</span>
|
||||
</div>
|
||||
<Row>
|
||||
<Col xs={ 6 } className="text-center">
|
||||
<p className="text-center mb-0">
|
||||
<i className="fa fa-circle text-primary mr-2"></i>
|
||||
Today
|
||||
</p>
|
||||
<h4 className="mt-2 mb-0">
|
||||
$3,267
|
||||
</h4>
|
||||
</Col>
|
||||
<Col xs={ 6 } className="text-center">
|
||||
<p className="text-center mb-0">
|
||||
<i className="fa fa-circle text-info mr-2"></i>
|
||||
This Month
|
||||
</p>
|
||||
<h4 className="mt-2 mb-0">
|
||||
$8,091
|
||||
</h4>
|
||||
</Col>
|
||||
</Row>
|
||||
<div className="hr-text hr-text-center mb-2 mt-3">
|
||||
<span>Invoices</span>
|
||||
</div>
|
||||
<Row className="mb-4 mb-xl-0">
|
||||
<Col xs={ 6 } className="text-center">
|
||||
<p className="text-center mb-0">
|
||||
<i className="fa fa-circle text-warning mr-2"></i>
|
||||
Due
|
||||
</p>
|
||||
<h4 className="mt-2 mb-0">
|
||||
$4,007
|
||||
</h4>
|
||||
</Col>
|
||||
<Col xs={ 6 } className="text-center">
|
||||
<p className="text-center mb-0">
|
||||
<i className="fa fa-circle text-danger mr-2"></i>
|
||||
Overdue
|
||||
</p>
|
||||
<h4 className="mt-2 mb-0">
|
||||
$11,091
|
||||
</h4>
|
||||
</Col>
|
||||
</Row>
|
||||
</Col>
|
||||
<Col lg={ 3 } md={ 6 }>
|
||||
<div className="hr-text hr-text-left my-2">
|
||||
<span>All Tasks</span>
|
||||
</div>
|
||||
<Media>
|
||||
<Media left className="mr-3">
|
||||
<TinyDonutChart />
|
||||
</Media>
|
||||
<Media body>
|
||||
<div>
|
||||
<i className="fa fa-circle mr-1 text-yellow"></i>
|
||||
<span className="text-inverse">23</span> Pending
|
||||
</div>
|
||||
<div>
|
||||
<i className="fa fa-circle mr-1 text-danger"></i>
|
||||
<span className="text-inverse">3</span> Behind
|
||||
</div>
|
||||
<div>
|
||||
<i className="fa fa-circle mr-1 text-success"></i>
|
||||
<span className="text-inverse">34</span> Completed
|
||||
</div>
|
||||
</Media>
|
||||
</Media>
|
||||
</Col>
|
||||
<Col lg={ 3 } md={ 6 } className="mb-4 mb-lg-0">
|
||||
<div className="hr-text hr-text-left my-2">
|
||||
<span>All Projects</span>
|
||||
</div>
|
||||
<Media>
|
||||
<Media left className="mr-3">
|
||||
<TinyDonutChartAllProjects />
|
||||
</Media>
|
||||
<Media body>
|
||||
<div>
|
||||
<i className="fa fa-circle mr-1 text-info"></i>
|
||||
<span className="text-inverse">14</span> Pending
|
||||
</div>
|
||||
<div>
|
||||
<i className="fa fa-circle mr-1 text-primary"></i>
|
||||
<span className="text-inverse">24</span> Behind
|
||||
</div>
|
||||
<div>
|
||||
<i className="fa fa-circle mr-1 text-purple"></i>
|
||||
<span className="text-inverse">2</span> Completed
|
||||
</div>
|
||||
</Media>
|
||||
</Media>
|
||||
</Col>
|
||||
<Col lg={ 3 }>
|
||||
<div className="hr-text hr-text-left my-2">
|
||||
<span>My Stats</span>
|
||||
</div>
|
||||
<Table size="sm">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td className="text-inverse bt-0">Active Projects</td>
|
||||
<td className="text-right bt-0">
|
||||
<Badge color="success" pill>6</Badge>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td className="text-inverse">Open Tasks</td>
|
||||
<td className="text-right">
|
||||
<Badge color="primary" pill>4</Badge>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td className="text-inverse">Support Tickets</td>
|
||||
<td className="text-right">
|
||||
<Badge color="info" pill>15</Badge>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td className="text-inverse">Active Timers</td>
|
||||
<td className="text-right">
|
||||
<Badge color="secondary" pill>0</Badge>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</Table>
|
||||
</Col>
|
||||
</Row>
|
||||
<Row>
|
||||
<Col lg={ 4 }>
|
||||
<Card className="mb-3">
|
||||
<CardBody>
|
||||
<CardTitle tag="h6" className="mb-3">
|
||||
Tasks
|
||||
</CardTitle>
|
||||
<InputGroup>
|
||||
<Input placeholder="Search Tasks..." />
|
||||
<InputGroupAddon addonType="append">
|
||||
<Button color="secondary" outline tag={ Link } to="/apps/tasks/list">
|
||||
<i className="fa fa-search"></i>
|
||||
</Button>
|
||||
</InputGroupAddon>
|
||||
</InputGroup>
|
||||
</CardBody>
|
||||
<ListGroup flush>
|
||||
<ListGroupItem action>
|
||||
<TasksMedia
|
||||
iconColor="success"
|
||||
/>
|
||||
</ListGroupItem>
|
||||
<ListGroupItem action>
|
||||
<TasksMedia
|
||||
iconColor="danger"
|
||||
id="2"
|
||||
/>
|
||||
</ListGroupItem>
|
||||
<ListGroupItem action>
|
||||
<TasksMedia
|
||||
iconColor="warning"
|
||||
id="3"
|
||||
/>
|
||||
</ListGroupItem>
|
||||
<ListGroupItem action>
|
||||
<TasksMedia
|
||||
id="4"
|
||||
/>
|
||||
</ListGroupItem>
|
||||
<ListGroupItem action tag={ Link } to="/apps/tasks/list" className="text-center">
|
||||
View All Tasks
|
||||
<i className="fa fa-angle-right ml-2"></i>
|
||||
</ListGroupItem>
|
||||
</ListGroup>
|
||||
</Card>
|
||||
</Col>
|
||||
<Col lg={ 4 }>
|
||||
<Card className="mb-3">
|
||||
<CardBody>
|
||||
<CardTitle tag="h6">
|
||||
Timeline Mini
|
||||
</CardTitle>
|
||||
<TimelineMini
|
||||
showPillDate
|
||||
pillDate="2 Days ago"
|
||||
icon="times-circle"
|
||||
iconClassName="text-danger"
|
||||
badgeTitle="Alert"
|
||||
badgeColor="danger"
|
||||
/>
|
||||
<TimelineMini
|
||||
icon="question-circle"
|
||||
iconClassName="text-warning"
|
||||
badgeTitle="Warning"
|
||||
badgeColor="warning"
|
||||
/>
|
||||
<TimelineMini
|
||||
icon="info-circle"
|
||||
iconClassName="text-info"
|
||||
badgeTitle="Info"
|
||||
badgeColor="info"
|
||||
/>
|
||||
<TimelineMini
|
||||
showPillDate
|
||||
pillDate="Yesterday"
|
||||
icon="plus-circle"
|
||||
iconClassName="text-primary"
|
||||
badgeTitle="Message"
|
||||
badgeColor="primary"
|
||||
/>
|
||||
<TimelineMini
|
||||
icon="check-circle"
|
||||
iconClassName="text-success"
|
||||
badgeTitle="Success"
|
||||
badgeColor="success"
|
||||
/>
|
||||
<TimelineMini
|
||||
icon="circle"
|
||||
badgeTitle="Obsolete"
|
||||
/>
|
||||
</CardBody>
|
||||
<ListGroup flush>
|
||||
<ListGroupItem action tag={ Link } to="/pages/timeline" className="text-center">
|
||||
Timeline Details
|
||||
<i className="fa fa-angle-right ml-2"></i>
|
||||
</ListGroupItem>
|
||||
</ListGroup>
|
||||
</Card>
|
||||
</Col>
|
||||
<Col lg={ 4 }>
|
||||
<Card className="mb-3">
|
||||
<CardBody>
|
||||
<CardTitle tag="h6" className="mb-3">
|
||||
Projects
|
||||
</CardTitle>
|
||||
<InputGroup>
|
||||
<Input placeholder="Search Projects..." />
|
||||
<InputGroupAddon addonType="append">
|
||||
<Button color="secondary" outline tag={ Link } to="/apps/projects/list">
|
||||
<i className="fa fa-search"></i>
|
||||
</Button>
|
||||
</InputGroupAddon>
|
||||
</InputGroup>
|
||||
</CardBody>
|
||||
<DraggableProjects />
|
||||
</Card>
|
||||
</Col>
|
||||
</Row>
|
||||
</Container>
|
||||
);
|
||||
|
||||
export default setupPage({
|
||||
pageTitle: 'Projects Dashboard'
|
||||
})(ProjectsDashboard);
|
3
app/routes/Dashboards/Projects/index.js
Executable file
3
app/routes/Dashboards/Projects/index.js
Executable file
@@ -0,0 +1,3 @@
|
||||
import ProjectsDashboard from './ProjectsDashboard';
|
||||
|
||||
export default ProjectsDashboard;
|
936
app/routes/Dashboards/Reports/Reports.js
Executable file
936
app/routes/Dashboards/Reports/Reports.js
Executable file
@@ -0,0 +1,936 @@
|
||||
import React from 'react';
|
||||
import faker from 'faker/locale/en_US';
|
||||
import {
|
||||
Container,
|
||||
Row,
|
||||
Card,
|
||||
CardBody,
|
||||
UncontrolledTooltip,
|
||||
Progress,
|
||||
Table,
|
||||
Nav,
|
||||
NavItem,
|
||||
NavLink,
|
||||
CardTitle,
|
||||
ListGroup,
|
||||
ListGroupItem,
|
||||
UncontrolledCollapse,
|
||||
Col
|
||||
} from './../../../components';
|
||||
import { setupPage } from './../../../components/Layout/setupPage';
|
||||
|
||||
import { HeaderMain } from "../../components/HeaderMain";
|
||||
|
||||
import {
|
||||
TinyLineChart
|
||||
} from "./components/TinyLineChart";
|
||||
import {
|
||||
TinyAreaChart
|
||||
} from "./components/TinyAreaChart";
|
||||
import {
|
||||
TinyArcChart
|
||||
} from "./components/TinyArcChart";
|
||||
|
||||
|
||||
/*eslint-disable */
|
||||
const progressCompletion = [
|
||||
"25",
|
||||
"50",
|
||||
"75",
|
||||
"97"
|
||||
];
|
||||
/*eslint-enable */
|
||||
|
||||
const Reports = () => (
|
||||
<Container>
|
||||
<Row className="mb-2">
|
||||
<Col lg={ 12 }>
|
||||
<HeaderMain
|
||||
title="Reports"
|
||||
className="mb-3 mb-lg-5"
|
||||
/>
|
||||
</Col>
|
||||
<Col xl={ 3 } lg={ 6 } className="mb-4 mb-lg-0">
|
||||
<Card>
|
||||
<CardBody className="bb-0">
|
||||
<span className="d-flex">
|
||||
<CardTitle tag="h6" className="mb-0 bb-0">
|
||||
Temperatures
|
||||
</CardTitle>
|
||||
<span className="ml-auto justify-content-start">
|
||||
<a href="javascript:;" className="ml-auto justify-content-start pr-2 text-decoration-none" id="TemperaturesTooltipSettings">
|
||||
<i className="fa fa-fw fa-sliders"></i>
|
||||
</a> <a href="javascript:;" id="TemperaturesTooltipAdd" className="text-decoration-none">
|
||||
<i className="fa fa-fw fa-plus"></i>
|
||||
</a>
|
||||
</span>
|
||||
<UncontrolledTooltip placement="top" target="TemperaturesTooltipSettings">
|
||||
Settings
|
||||
</UncontrolledTooltip>
|
||||
<UncontrolledTooltip placement="top" target="TemperaturesTooltipAdd">
|
||||
Add
|
||||
</UncontrolledTooltip>
|
||||
</span>
|
||||
</CardBody>
|
||||
<ListGroup flush>
|
||||
<ListGroupItem tag="a" href="#" id="TemperaturesProcessorToggler" className="by-0 d-flex text-decoration-none">
|
||||
Processor
|
||||
<i className="fa fa-fw fa-angle-down ml-auto justify-content-end" id="TemperaturesProcessorTooltip"></i>
|
||||
</ListGroupItem>
|
||||
<UncontrolledTooltip placement="top" target="TemperaturesProcessorTooltip">
|
||||
Show/Hide Section
|
||||
</UncontrolledTooltip>
|
||||
</ListGroup>
|
||||
<UncontrolledCollapse toggler="#TemperaturesProcessorToggler" isOpen>
|
||||
<CardBody className="pt-0">
|
||||
<span className="d-flex mb-4">
|
||||
<h1>39º</h1>
|
||||
<span className="ml-auto text-right">
|
||||
102º F <br />
|
||||
<i className="fa fa-arrow-down fa-fw text-primary"></i>
|
||||
</span>
|
||||
</span>
|
||||
<div className="d-flex justify-content-between mb-2">
|
||||
<span className="d-flex align-items-center mr-2">Core 0</span>
|
||||
<Progress value="25" className="mt-2 w-50 progress" style={{height: "5px"}} />
|
||||
<span className="ml-2 text-inverse">86º</span>
|
||||
</div>
|
||||
<div className="d-flex justify-content-between mb-2">
|
||||
<span className="d-flex align-items-center mr-2">Core 1</span>
|
||||
<Progress value="59" className="mt-2 w-50 progress" style={{height: "5px"}} />
|
||||
<span className="ml-2 text-inverse">40º</span>
|
||||
</div>
|
||||
<div className="d-flex justify-content-between mb-2">
|
||||
<span className="d-flex align-items-center mr-2">Core 2</span>
|
||||
<Progress value="25" className="mt-2 w-50 progress" style={{height: "5px"}} />
|
||||
<span className="ml-2 text-inverse">86º</span>
|
||||
</div>
|
||||
<div className="d-flex justify-content-between mb-2">
|
||||
<span className="d-flex align-items-center mr-2">Core 3</span>
|
||||
<Progress value="59" className="mt-2 w-50 progress" style={{height: "5px"}} />
|
||||
<span className="ml-2 text-inverse">40º</span>
|
||||
</div>
|
||||
</CardBody>
|
||||
</UncontrolledCollapse>
|
||||
<ListGroup flush>
|
||||
<ListGroupItem tag="a" href="#" id="TemperaturesGraphicsToggler" className="by-0 d-flex text-decoration-none">
|
||||
Graphics
|
||||
<i className="fa fa-fw fa-angle-down ml-auto justify-content-end" id="TemperaturesGraphicsTooltip"></i>
|
||||
</ListGroupItem>
|
||||
<UncontrolledTooltip placement="top" target="TemperaturesGraphicsTooltip">
|
||||
Show/Hide Section
|
||||
</UncontrolledTooltip>
|
||||
</ListGroup>
|
||||
<UncontrolledCollapse toggler="#TemperaturesGraphicsToggler" isOpen>
|
||||
<CardBody className="pt-0">
|
||||
<span className="d-flex mb-3">
|
||||
<h1>68º</h1>
|
||||
<span className="ml-auto text-right">
|
||||
102º F <br />
|
||||
<i className="fa fa-arrow-up fa-fw text-danger"></i>
|
||||
</span>
|
||||
</span>
|
||||
<div className="d-flex justify-content-between mb-2">
|
||||
<span className="d-flex align-items-center mr-2">Core</span>
|
||||
<Progress value="85" className="mt-2 w-50" style={{height: "5px"}} />
|
||||
<span className="ml-2 text-inverse">86º</span>
|
||||
</div>
|
||||
</CardBody>
|
||||
</UncontrolledCollapse>
|
||||
<ListGroup flush>
|
||||
<ListGroupItem tag="a" href="#" id="TemperaturesStorageToggler" className="by-0 d-flex text-decoration-none">
|
||||
Storage
|
||||
<i className="fa fa-fw fa-angle-down ml-auto justify-content-end" id="TemperaturesStorageTooltip"></i>
|
||||
</ListGroupItem>
|
||||
<UncontrolledTooltip placement="top" target="TemperaturesStorageTooltip">
|
||||
Show/Hide Section
|
||||
</UncontrolledTooltip>
|
||||
</ListGroup>
|
||||
<UncontrolledCollapse toggler="#TemperaturesStorageToggler" isOpen>
|
||||
<CardBody className="pt-0">
|
||||
<div className="mb-3 mt-2">
|
||||
<TinyLineChart />
|
||||
</div>
|
||||
<div className="mb-3">
|
||||
<span className="d-flex">
|
||||
<span className="text-inverse">
|
||||
Samsung 850 PRO
|
||||
</span>
|
||||
<span className="ml-auto">
|
||||
512GB
|
||||
</span>
|
||||
</span>
|
||||
<div className="d-flex justify-content-between">
|
||||
<span className="d-flex align-items-center mr-2">SSD 0</span>
|
||||
<Progress value="25" className="mt-2 w-50 progress" style={{height: "5px"}} />
|
||||
<span className="ml-2 text-inverse">31º</span>
|
||||
</div>
|
||||
</div>
|
||||
<div className="mb-3">
|
||||
<span className="d-flex">
|
||||
<span className="text-inverse">
|
||||
WD Black
|
||||
</span>
|
||||
<span className="ml-auto">
|
||||
1TB
|
||||
</span>
|
||||
</span>
|
||||
<div className="d-flex justify-content-between">
|
||||
<span className="d-flex align-items-center mr-2">HDD 1</span>
|
||||
<Progress value="67" className="mt-2 w-50 progress" style={{height: "5px"}} />
|
||||
<span className="ml-2 text-inverse">81º</span>
|
||||
</div>
|
||||
</div>
|
||||
<div className="mb-0">
|
||||
<span className="d-flex">
|
||||
<span className="text-inverse">
|
||||
Quantum PCI
|
||||
</span>
|
||||
<span className="ml-auto">
|
||||
2TB
|
||||
</span>
|
||||
</span>
|
||||
<div className="d-flex justify-content-between">
|
||||
<span className="d-flex align-items-center mr-2">SSD 3</span>
|
||||
<Progress value="35" className="mt-2 w-50 progress" style={{height: "5px"}} />
|
||||
<span className="ml-2 text-inverse">21º</span>
|
||||
</div>
|
||||
</div>
|
||||
</CardBody>
|
||||
</UncontrolledCollapse>
|
||||
</Card>
|
||||
</Col>
|
||||
<Col xl={ 3 } lg={ 6 } className="mb-4 mb-lg-0">
|
||||
<Card className="mb-sm-4 mb-xl-0">
|
||||
<CardBody className="bb-0">
|
||||
<span className="d-flex">
|
||||
<CardTitle tag="h6" className="mb-0 bb-0">
|
||||
Usage
|
||||
</CardTitle>
|
||||
<span className="ml-auto justify-content-start">
|
||||
<a href="javascript:;" className="ml-auto justify-content-start pr-2 text-decoration-none" id="UsageTooltipSettings">
|
||||
<i className="fa fa-fw fa-sliders"></i>
|
||||
</a> <a href="javascript:;" id="UsageTooltipAdd" className="text-decoration-none">
|
||||
<i className="fa fa-fw fa-plus"></i>
|
||||
</a>
|
||||
</span>
|
||||
<UncontrolledTooltip placement="top" target="UsageTooltipSettings">
|
||||
Settings
|
||||
</UncontrolledTooltip>
|
||||
<UncontrolledTooltip placement="top" target="UsageTooltipAdd">
|
||||
Add
|
||||
</UncontrolledTooltip>
|
||||
</span>
|
||||
</CardBody>
|
||||
<ListGroup flush>
|
||||
<ListGroupItem tag="a" href="#" id="ProcessorToggler" className="by-0 d-flex text-decoration-none">
|
||||
Processor
|
||||
<i className="fa fa-fw fa-angle-down ml-auto justify-content-end" id="ProcessorTooltip"></i>
|
||||
</ListGroupItem>
|
||||
<UncontrolledTooltip placement="top" target="ProcessorTooltip">
|
||||
Show/Hide Section
|
||||
</UncontrolledTooltip>
|
||||
</ListGroup>
|
||||
<UncontrolledCollapse toggler="#ProcessorToggler" isOpen>
|
||||
<CardBody className="pt-0">
|
||||
<dl className="row mb-3">
|
||||
<dt className="col-sm-5">CPU</dt>
|
||||
<dd className="col-sm-7 text-right text-inverse">Intel Core i7</dd>
|
||||
<dt className="col-sm-5">Base (Turbo)</dt>
|
||||
<dd className="col-sm-7 text-right text-inverse">4 GHz (4.4 GHz)</dd>
|
||||
<dt className="col-sm-8">Cores (Threads)</dt>
|
||||
<dd className="col-sm-4 text-right text-inverse">4 (8)</dd>
|
||||
</dl>
|
||||
<Progress multi className="mt-2" style={{height: "5px"}}>
|
||||
<Progress bar value="45" />
|
||||
<Progress bar color="danger" value="15" />
|
||||
</Progress>
|
||||
</CardBody>
|
||||
</UncontrolledCollapse>
|
||||
<ListGroup flush>
|
||||
<ListGroupItem tag="a" href="#" id="UsageLoadToggler" className="by-0 d-flex text-decoration-none">
|
||||
Usage (Load)
|
||||
<i className="fa fa-fw fa-angle-down ml-auto justify-content-end" id="UsageLoadTooltip"></i>
|
||||
</ListGroupItem>
|
||||
<UncontrolledTooltip placement="top" target="UsageLoadTooltip">
|
||||
Show/Hide Section
|
||||
</UncontrolledTooltip>
|
||||
<UncontrolledCollapse toggler="#UsageLoadToggler" isOpen>
|
||||
<CardBody className="pt-0">
|
||||
<Table size="sm" className="mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col" className="bt-0 bb-0 align-middle text-left">
|
||||
<h1 className="pt-0">78%</h1>
|
||||
</th>
|
||||
<th scope="col" className="text-center bt-0 bb-0 align-bottom" width="5">
|
||||
<p style={{ textOrientation: 'unset', lineHeight: '0' }} className="mb-0">
|
||||
<i className="fa fa-fw fa-stop text-gray-300"></i>
|
||||
<i className="fa fa-fw fa-stop text-gray-300"></i>
|
||||
<i className="fa fa-fw fa-stop text-primary"></i>
|
||||
<i className="fa fa-fw fa-stop text-primary"></i>
|
||||
<i className="fa fa-fw fa-stop text-primary"></i>
|
||||
</p>
|
||||
</th>
|
||||
<th scope="col" className="text-center bt-0 bb-0 align-bottom" width="5">
|
||||
<p style={{ textOrientation: 'unset', lineHeight: '0' }} className="mb-0">
|
||||
<i className="fa fa-fw fa-stop text-gray-300"></i>
|
||||
<i className="fa fa-fw fa-stop text-gray-300"></i>
|
||||
<i className="fa fa-fw fa-stop text-gray-300"></i>
|
||||
<i className="fa fa-fw fa-stop text-primary"></i>
|
||||
<i className="fa fa-fw fa-stop text-primary"></i>
|
||||
</p>
|
||||
</th>
|
||||
<th scope="col" className="text-center bt-0 bb-0 align-bottom" width="5">
|
||||
<p style={{ textOrientation: 'unset', lineHeight: '0' }} className="mb-0">
|
||||
<i className="fa fa-fw fa-stop text-gray-300"></i>
|
||||
<i className="fa fa-fw fa-stop text-gray-300"></i>
|
||||
<i className="fa fa-fw fa-stop text-gray-300"></i>
|
||||
<i className="fa fa-fw fa-stop text-gray-300"></i>
|
||||
<i className="fa fa-fw fa-stop text-primary"></i>
|
||||
</p>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td className="bt-0">Cores</td>
|
||||
<td className="bt-0 text-center text-inverse">1</td>
|
||||
<td className="bt-0 text-center text-inverse">2</td>
|
||||
<td className="bt-0 text-center text-inverse">3</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Usage %</td>
|
||||
<td className="text-center text-inverse">27</td>
|
||||
<td className="text-center text-inverse">78</td>
|
||||
<td className="text-center text-inverse">13</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Tendency</td>
|
||||
<td className="text-center">
|
||||
<i className="fa fa-arrow-down fa-fw text-danger"></i>
|
||||
</td>
|
||||
<td className="text-center">
|
||||
<i className="fa fa-arrow-down fa-fw text-danger"></i>
|
||||
</td>
|
||||
<td className="text-center">
|
||||
<i className="fa fa-arrow-down fa-fw text-danger"></i>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</Table>
|
||||
</CardBody>
|
||||
</UncontrolledCollapse>
|
||||
</ListGroup>
|
||||
<ListGroup flush>
|
||||
<ListGroupItem tag="a" href="#" id="GraphicsToggler" className="by-0 d-flex text-decoration-none">
|
||||
Graphics
|
||||
<i className="fa fa-fw fa-angle-down ml-auto justify-content-end" id="GraphicsTooltip"></i>
|
||||
</ListGroupItem>
|
||||
<UncontrolledTooltip placement="top" target="GraphicsTooltip">
|
||||
Show/Hide Section
|
||||
</UncontrolledTooltip>
|
||||
<UncontrolledCollapse toggler="#GraphicsToggler" isOpen>
|
||||
<CardBody className="pt-0">
|
||||
<dl className="row mb-0">
|
||||
<dt className="col-sm-5">GPU Name</dt>
|
||||
<dd className="col-sm-7 text-right text-inverse">NVIDIA GTX 980</dd>
|
||||
<dt className="col-sm-5">Bus Width</dt>
|
||||
<dd className="col-sm-7 text-right text-inverse">4 GHz (4.4 GHz)</dd>
|
||||
<dt className="col-sm-7">Memory</dt>
|
||||
<dd className="col-sm-5 text-right text-inverse">4096 GDDR5</dd>
|
||||
</dl>
|
||||
</CardBody>
|
||||
</UncontrolledCollapse>
|
||||
</ListGroup>
|
||||
<ListGroup flush>
|
||||
<ListGroupItem tag="a" href="#" id="UsageLoadToggler2" className="by-0 d-flex text-decoration-none">
|
||||
Usage (Load)
|
||||
<i className="fa fa-fw fa-angle-down ml-auto justify-content-end" id="UsageLoadTooltip2"></i>
|
||||
</ListGroupItem>
|
||||
<UncontrolledTooltip placement="top" target="UsageLoadTooltip2">
|
||||
Show/Hide Section
|
||||
</UncontrolledTooltip>
|
||||
<UncontrolledCollapse toggler="#UsageLoadToggler2" isOpen>
|
||||
<CardBody className="pt-0">
|
||||
<Table size="sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col" className="bt-0 bb-0 align-top text-left">
|
||||
<h1 className="pt-0">85%</h1>
|
||||
</th>
|
||||
<th scope="col" className="text-right bt-0 bb-0 align-middle">
|
||||
<TinyArcChart />
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td className="bt-0">Current Core Clock</td>
|
||||
<td className="bt-0 text-right text-inverse">390Mhz</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Current Memory Clock</td>
|
||||
<td className="text-right text-inverse">160MHz</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Memory Usage (%)</td>
|
||||
<td className="text-right text-inverse">306MB (7%)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Tendency</td>
|
||||
<td className="text-right">
|
||||
<i className="fa fa-arrow-down fa-fw text-danger"></i>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</Table>
|
||||
</CardBody>
|
||||
</UncontrolledCollapse>
|
||||
</ListGroup>
|
||||
</Card>
|
||||
</Col>
|
||||
<Col xl={ 6 } lg={ 12 }>
|
||||
<Row>
|
||||
<Col xl={ 6 } lg={ 6 }>
|
||||
<Card className="mb-4">
|
||||
<CardBody className="bb-0">
|
||||
<span className="d-flex">
|
||||
<CardTitle tag="h6" className="mb-0 bb-0">
|
||||
Allocation
|
||||
</CardTitle>
|
||||
<span className="ml-auto justify-content-start">
|
||||
<a href="javascript:;" className="ml-auto justify-content-start pr-2 text-decoration-none" id="AllocationTooltipSettings">
|
||||
<i className="fa fa-fw fa-sliders"></i>
|
||||
</a> <a href="javascript:;" id="AllocationTooltipAdd" className="text-decoration-none">
|
||||
<i className="fa fa-fw fa-plus"></i>
|
||||
</a>
|
||||
</span>
|
||||
<UncontrolledTooltip placement="top" target="AllocationTooltipSettings">
|
||||
Settings
|
||||
</UncontrolledTooltip>
|
||||
<UncontrolledTooltip placement="top" target="AllocationTooltipAdd">
|
||||
Add
|
||||
</UncontrolledTooltip>
|
||||
</span>
|
||||
</CardBody>
|
||||
<ListGroup flush>
|
||||
<ListGroupItem tag="a" href="#" id="RamToggler" className="by-0 d-flex text-decoration-none">
|
||||
RAM
|
||||
<i className="fa fa-fw fa-angle-down ml-auto justify-content-end" id="RamTooltip"></i>
|
||||
</ListGroupItem>
|
||||
<UncontrolledTooltip placement="top" target="RamTooltip">
|
||||
Show/Hide Section
|
||||
</UncontrolledTooltip>
|
||||
</ListGroup>
|
||||
<UncontrolledCollapse toggler="#RamToggler" isOpen>
|
||||
<CardBody className="pt-0">
|
||||
<dl className="row mb-3">
|
||||
<dt className="col-sm-5">Installed</dt>
|
||||
<dd className="col-sm-7 text-right text-inverse">16GB DDR3</dd>
|
||||
<dt className="col-sm-5">DRAM Freq</dt>
|
||||
<dd className="col-sm-7 text-right text-inverse">4 GHz (4.4 GHz)</dd>
|
||||
<dt className="col-sm-8">Cores (Threads)</dt>
|
||||
<dd className="col-sm-4 text-right text-inverse">4 (8)</dd>
|
||||
</dl>
|
||||
<Progress multi className="mt-2 mb-3" style={{height: "5px"}}>
|
||||
<Progress bar value="45" />
|
||||
<Progress bar color="danger" value="15" />
|
||||
</Progress>
|
||||
<Table size="sm">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td className="bt-0">
|
||||
<i className="fa fa fa-circle-o text-primary mr-1"></i>
|
||||
In Use
|
||||
</td>
|
||||
<td className="text-right text-inverse bt-0">
|
||||
796MB <i className="fa fa-arrow-up fa-fw text-gray-300"></i>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<i className="fa fa fa-circle-o text-danger mr-1"></i>
|
||||
In Cache
|
||||
</td>
|
||||
<td className="text-right text-inverse">
|
||||
180MB <i className="fa fa-arrow-down fa-fw text-gray-300"></i>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<i className="fa fa fa-circle-o text-gray-300 mr-1"></i>
|
||||
Available
|
||||
</td>
|
||||
<td className="text-right text-inverse">
|
||||
1672MB <i className="fa fa-arrow-down fa-fw text-gray-300"></i>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</Table>
|
||||
<div>
|
||||
<TinyAreaChart />
|
||||
</div>
|
||||
</CardBody>
|
||||
</UncontrolledCollapse>
|
||||
</Card>
|
||||
</Col>
|
||||
<Col xl={ 6 } lg={ 6 }>
|
||||
<Card className="mb-4">
|
||||
<CardBody className="bb-0">
|
||||
<span className="d-flex">
|
||||
<CardTitle tag="h6" className="mb-0 bb-0">
|
||||
Cooling
|
||||
</CardTitle>
|
||||
<span className="ml-auto justify-content-start">
|
||||
<a href="javascript:;" className="ml-auto justify-content-start pr-2 text-decoration-none" id="CoolingTooltipSettings">
|
||||
<i className="fa fa-fw fa-sliders"></i>
|
||||
</a> <a href="javascript:;" id="CoolingTooltipAdd" className="text-decoration-none">
|
||||
<i className="fa fa-fw fa-plus"></i>
|
||||
</a>
|
||||
</span>
|
||||
<UncontrolledTooltip placement="top" target="CoolingTooltipSettings">
|
||||
Settings
|
||||
</UncontrolledTooltip>
|
||||
<UncontrolledTooltip placement="top" target="CoolingTooltipAdd">
|
||||
Add
|
||||
</UncontrolledTooltip>
|
||||
</span>
|
||||
</CardBody>
|
||||
<ListGroup flush>
|
||||
<ListGroupItem tag="a" href="#" id="FansToggler" className="by-0 d-flex text-decoration-none">
|
||||
Fans
|
||||
<i className="fa fa-fw fa-angle-down ml-auto justify-content-end" id="FansTooltip"></i>
|
||||
</ListGroupItem>
|
||||
<UncontrolledTooltip placement="top" target="FansTooltip">
|
||||
Show/Hide Section
|
||||
</UncontrolledTooltip>
|
||||
</ListGroup>
|
||||
<UncontrolledCollapse toggler="#FansToggler" isOpen>
|
||||
<CardBody className="pt-0">
|
||||
<div className="mb-2">
|
||||
<span className="d-flex">
|
||||
<span>
|
||||
Left Fontal Fan
|
||||
</span>
|
||||
<span className="ml-auto text-inverse">
|
||||
120mm
|
||||
</span>
|
||||
</span>
|
||||
<input type="range" className="custom-range pb-0" id="leftFontalFan" />
|
||||
<span className="d-flex">
|
||||
<span>
|
||||
<i className="fa fa-fw fa-leaf"></i>
|
||||
</span>
|
||||
<span className="ml-auto">
|
||||
250RPM
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
<div className="mb-4">
|
||||
<span className="d-flex">
|
||||
<span>
|
||||
Right Fontal Fan
|
||||
</span>
|
||||
<span className="ml-auto text-inverse">
|
||||
120mm
|
||||
</span>
|
||||
</span>
|
||||
<input type="range" max="3" step="1" className="custom-range pb-0" id="leftFontalFan" />
|
||||
<span className="d-flex">
|
||||
<span>
|
||||
<i className="fa fa-fw fa-leaf"></i>
|
||||
</span>
|
||||
<span className="ml-auto">
|
||||
250RPM
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
<Nav pills className="nav-fill">
|
||||
<NavItem>
|
||||
<NavLink href="#" active>
|
||||
<i className="fa fa-sliders"></i>
|
||||
</NavLink>
|
||||
</NavItem>
|
||||
<NavItem>
|
||||
<NavLink href="#">
|
||||
<i className="fa fa-leaf"></i>
|
||||
</NavLink>
|
||||
</NavItem>
|
||||
<NavItem>
|
||||
<NavLink href="#">
|
||||
<i className="fa fa-dashboard"></i>
|
||||
</NavLink>
|
||||
</NavItem>
|
||||
</Nav>
|
||||
</CardBody>
|
||||
</UncontrolledCollapse>
|
||||
</Card>
|
||||
</Col>
|
||||
<Col xl={ 12 }>
|
||||
<Card>
|
||||
<CardBody className="bb-0 pb-0">
|
||||
<span className="d-flex">
|
||||
<CardTitle tag="h6" className="mb-0 bb-0">
|
||||
Activity
|
||||
</CardTitle>
|
||||
<span className="ml-auto justify-content-start">
|
||||
<a href="javascript:;" className="ml-auto justify-content-start pr-2" id="ActivityTooltipSettings">
|
||||
<i className="fa fa-fw fa-sliders"></i>
|
||||
</a> <a href="javascript:;" id="ActivityTooltipAdd">
|
||||
<i className="fa fa-fw fa-plus"></i>
|
||||
</a>
|
||||
</span>
|
||||
<UncontrolledTooltip placement="top" target="ActivityTooltipSettings">
|
||||
Settings
|
||||
</UncontrolledTooltip>
|
||||
<UncontrolledTooltip placement="top" target="ActivityTooltipAdd">
|
||||
Add
|
||||
</UncontrolledTooltip>
|
||||
</span>
|
||||
</CardBody>
|
||||
<CardBody>
|
||||
<Nav tabs className="mb-3">
|
||||
<NavItem>
|
||||
<NavLink href="#" active>
|
||||
Processes
|
||||
</NavLink>
|
||||
</NavItem>
|
||||
<NavItem>
|
||||
<NavLink href="#">
|
||||
Network
|
||||
</NavLink>
|
||||
</NavItem>
|
||||
<NavItem>
|
||||
<NavLink href="#">
|
||||
Storage
|
||||
</NavLink>
|
||||
</NavItem>
|
||||
<NavItem>
|
||||
<NavLink href="#">
|
||||
Energy
|
||||
</NavLink>
|
||||
</NavItem>
|
||||
</Nav>
|
||||
<Row>
|
||||
<Col lg={ 6 }>
|
||||
<dl className="row mb-0">
|
||||
<dt className="col-sm-5">
|
||||
Operating System
|
||||
</dt>
|
||||
<dd className="col-sm-7 text-right text-inverse">
|
||||
Windows 10 x64
|
||||
</dd>
|
||||
<dt className="col-sm-5">
|
||||
Build
|
||||
</dt>
|
||||
<dd className="col-sm-7 text-right text-inverse">
|
||||
9876
|
||||
</dd>
|
||||
</dl>
|
||||
</Col>
|
||||
<Col lg={ 6 }>
|
||||
<dl className="row mb-0">
|
||||
<dt className="col-sm-5">
|
||||
Admin
|
||||
</dt>
|
||||
<dd className="col-sm-7 text-right text-inverse">
|
||||
John Malkovich
|
||||
</dd>
|
||||
<dt className="col-sm-5">
|
||||
Network
|
||||
</dt>
|
||||
<dd className="col-sm-7 text-right text-inverse">
|
||||
Wireless Network
|
||||
</dd>
|
||||
</dl>
|
||||
</Col>
|
||||
</Row>
|
||||
<Table hover className="mb-0" size="sm" responsive>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col" className="bt-0">
|
||||
Process
|
||||
</th>
|
||||
<th scope="col" className="align-middle text-right bt-0">
|
||||
Read
|
||||
</th>
|
||||
<th scope="col" className="align-middle text-right bt-0">
|
||||
Threads
|
||||
</th>
|
||||
<th scope="col" className="align-middle text-right bt-0">
|
||||
CPU
|
||||
</th>
|
||||
<th scope="col" className="align-middle text-right bt-0">
|
||||
GPU
|
||||
</th>
|
||||
<th scope="col" className="align-middle text-right bt-0">
|
||||
Memory
|
||||
</th>
|
||||
<th scope="col" className="align-middle text-right bt-0">
|
||||
Tend
|
||||
</th>
|
||||
<th className="bt-0"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td className="align-middle text-nowrap">
|
||||
<i className="fa fa fa-window-maximize mr-1"></i>
|
||||
<span className="text-inverse">
|
||||
Chrome
|
||||
</span>
|
||||
</td>
|
||||
<td className="align-middle text-right">
|
||||
30MB/s
|
||||
</td>
|
||||
<td className="align-middle text-right">
|
||||
20
|
||||
</td>
|
||||
<td className="align-middle text-right">
|
||||
24%
|
||||
</td>
|
||||
<td className="align-middle text-right">
|
||||
56%
|
||||
</td>
|
||||
<td className="align-middle text-right">
|
||||
7.9GB
|
||||
</td>
|
||||
<td className="align-middle text-right">
|
||||
<i className="fa fa-arrow-down fa-fw text-danger"></i>
|
||||
</td>
|
||||
<td className="align-middle text-right">
|
||||
<a href="#" id="tr1">
|
||||
<i className="fa fa-fw fa-angle-down"></i>
|
||||
</a>
|
||||
<UncontrolledTooltip placement="top" target="tr1">
|
||||
Show Details
|
||||
</UncontrolledTooltip>
|
||||
</td>
|
||||
</tr>
|
||||
<UncontrolledCollapse toggler="#tr1">
|
||||
<tr>
|
||||
<td colSpan="8" className="bt-0">
|
||||
<samp className="small">{ faker.internet.ip() }</samp>
|
||||
</td>
|
||||
</tr>
|
||||
</UncontrolledCollapse>
|
||||
<tr>
|
||||
<td className="align-middle text-nowrap">
|
||||
<i className="fa fa fa-window-maximize mr-1"></i>
|
||||
<span className="text-inverse">
|
||||
Photoshop
|
||||
</span>
|
||||
</td>
|
||||
<td className="align-middle text-right">
|
||||
40MB/s
|
||||
</td>
|
||||
<td className="align-middle text-right">
|
||||
60
|
||||
</td>
|
||||
<td claclassNamess="align-middle text-right">
|
||||
25%
|
||||
</td>
|
||||
<td className="align-middle text-right">
|
||||
10%
|
||||
</td>
|
||||
<td className="align-middle text-right">
|
||||
1.1GB
|
||||
</td>
|
||||
<td className="align-middle text-right">
|
||||
<i className="fa fa-arrow-up fa-fw text-success"></i>
|
||||
</td>
|
||||
<td className="align-middle text-right">
|
||||
<a href="#" id="tr2">
|
||||
<i className="fa fa-fw fa-angle-down"></i>
|
||||
</a>
|
||||
<UncontrolledTooltip placement="top" target="tr2">
|
||||
Show Details
|
||||
</UncontrolledTooltip>
|
||||
</td>
|
||||
</tr>
|
||||
<UncontrolledCollapse toggler="#tr2">
|
||||
<tr>
|
||||
<td colSpan="8" className="bt-0">
|
||||
<samp className="small">{ faker.internet.ip() }</samp>
|
||||
</td>
|
||||
</tr>
|
||||
</UncontrolledCollapse>
|
||||
<tr>
|
||||
<td className="align-middle text-nowrap">
|
||||
<i className="fa fa fa-window-maximize mr-1"></i>
|
||||
<span className="text-inverse">
|
||||
Chrome
|
||||
</span>
|
||||
</td>
|
||||
<td className="align-middle text-right">
|
||||
60MB/s
|
||||
</td>
|
||||
<td className="align-middle text-right">
|
||||
60
|
||||
</td>
|
||||
<td className="align-middle text-right">
|
||||
19%
|
||||
</td>
|
||||
<td className="align-middle text-right">
|
||||
56%
|
||||
</td>
|
||||
<td className="align-middle text-right">
|
||||
2.4GB
|
||||
</td>
|
||||
<td className="align-middle text-right">
|
||||
<i className="fa fa-arrow-down fa-fw text-danger"></i>
|
||||
</td>
|
||||
<td className="align-middle text-right">
|
||||
<a href="#" id="tr3">
|
||||
<i className="fa fa-fw fa-angle-down"></i>
|
||||
</a>
|
||||
<UncontrolledTooltip placement="top" target="tr3">
|
||||
Show Details
|
||||
</UncontrolledTooltip>
|
||||
</td>
|
||||
</tr>
|
||||
<UncontrolledCollapse toggler="#tr3">
|
||||
<tr>
|
||||
<td colSpan="8" className="bt-0">
|
||||
<samp className="small">{ faker.internet.ip() }</samp>
|
||||
</td>
|
||||
</tr>
|
||||
</UncontrolledCollapse>
|
||||
<tr>
|
||||
<td className="align-middle text-nowrap">
|
||||
<i className="fa fa fa-window-maximize mr-1"></i>
|
||||
<span className="text-inverse">
|
||||
Safari
|
||||
</span>
|
||||
</td>
|
||||
<td className="align-middle text-right">
|
||||
10MB/s
|
||||
</td>
|
||||
<td className="align-middle text-right">
|
||||
40
|
||||
</td>
|
||||
<td className="align-middle text-right">
|
||||
19%
|
||||
</td>
|
||||
<td className="align-middle text-right">
|
||||
56%
|
||||
</td>
|
||||
<td className="align-middle text-right">
|
||||
1.1GB
|
||||
</td>
|
||||
<td className="align-middle text-right">
|
||||
<i className="fa fa-arrow-up fa-fw text-success"></i>
|
||||
</td>
|
||||
<td className="align-middle text-right">
|
||||
<a href="#" id="tr4">
|
||||
<i className="fa fa-fw fa-angle-down"></i>
|
||||
</a>
|
||||
<UncontrolledTooltip placement="top" target="tr4">
|
||||
Show Details
|
||||
</UncontrolledTooltip>
|
||||
</td>
|
||||
</tr>
|
||||
<UncontrolledCollapse toggler="#tr4">
|
||||
<tr>
|
||||
<td colSpan="8" className="bt-0">
|
||||
<samp className="small">{ faker.internet.ip() }</samp>
|
||||
</td>
|
||||
</tr>
|
||||
</UncontrolledCollapse>
|
||||
<tr>
|
||||
<td className="align-middle text-nowrap">
|
||||
<i className="fa fa fa-window-maximize mr-1"></i>
|
||||
<span className="text-inverse">
|
||||
Chrome
|
||||
</span>
|
||||
</td>
|
||||
<td className="align-middle text-right">
|
||||
30MB/s
|
||||
</td>
|
||||
<td className="align-middle text-right">
|
||||
10
|
||||
</td>
|
||||
<td className="align-middle text-right">
|
||||
27%
|
||||
</td>
|
||||
<td className="align-middle text-right">
|
||||
27%
|
||||
</td>
|
||||
<td className="align-middle text-right">
|
||||
9.1GB
|
||||
</td>
|
||||
<td className="align-middle text-right">
|
||||
<i className="fa fa-arrow-down fa-fw text-danger"></i>
|
||||
</td>
|
||||
<td className="align-middle text-right">
|
||||
<a href="#" id="tr5">
|
||||
<i className="fa fa-fw fa-angle-down"></i>
|
||||
</a>
|
||||
<UncontrolledTooltip placement="top" target="tr5">
|
||||
Show Details
|
||||
</UncontrolledTooltip>
|
||||
</td>
|
||||
</tr>
|
||||
<UncontrolledCollapse toggler="#tr5">
|
||||
<tr>
|
||||
<td colSpan="8" className="bt-0">
|
||||
<samp className="small">{ faker.internet.ip() }</samp>
|
||||
</td>
|
||||
</tr>
|
||||
</UncontrolledCollapse>
|
||||
<tr>
|
||||
<td className="align-middle text-nowrap">
|
||||
<i className="fa fa fa-window-maximize mr-1"></i>
|
||||
<span className="text-inverse">
|
||||
System
|
||||
</span>
|
||||
</td>
|
||||
<td className="align-middle text-right">
|
||||
70MB/s
|
||||
</td>
|
||||
<td className="align-middle text-right">
|
||||
30
|
||||
</td>
|
||||
<td className="align-middle text-right">
|
||||
10%
|
||||
</td>
|
||||
<td className="align-middle text-right">
|
||||
19%
|
||||
</td>
|
||||
<td className="align-middle text-right">
|
||||
8.8GB
|
||||
</td>
|
||||
<td className="align-middle text-right">
|
||||
<i className="fa fa-arrow-up fa-fw text-success"></i>
|
||||
</td>
|
||||
<td className="align-middle text-right">
|
||||
<a href="#" id="tr6">
|
||||
<i className="fa fa-fw fa-angle-down"></i>
|
||||
</a>
|
||||
<UncontrolledTooltip placement="top" target="tr6">
|
||||
Show Details
|
||||
</UncontrolledTooltip>
|
||||
</td>
|
||||
</tr>
|
||||
<UncontrolledCollapse toggler="#tr6">
|
||||
<tr>
|
||||
<td colSpan="8" className="bt-0">
|
||||
<samp className="small">{ faker.internet.ip() }</samp>
|
||||
</td>
|
||||
</tr>
|
||||
</UncontrolledCollapse>
|
||||
</tbody>
|
||||
</Table>
|
||||
</CardBody>
|
||||
</Card>
|
||||
</Col>
|
||||
</Row>
|
||||
</Col>
|
||||
</Row>
|
||||
</Container>
|
||||
);
|
||||
|
||||
export default setupPage({
|
||||
pageTitle: 'Reports'
|
||||
})(Reports);
|
38
app/routes/Dashboards/Reports/components/TinyArcChart.js
Executable file
38
app/routes/Dashboards/Reports/components/TinyArcChart.js
Executable file
@@ -0,0 +1,38 @@
|
||||
import React from 'react';
|
||||
import {
|
||||
PieChart,
|
||||
Pie,
|
||||
Cell
|
||||
} from './../../../../components/recharts';
|
||||
|
||||
import colors from './../../../../colors';
|
||||
|
||||
const data = [
|
||||
{name: 'Free', value: 40 },
|
||||
{name: 'Used', value: 60 },
|
||||
];
|
||||
|
||||
const COLORS = [ colors['light'], colors['primary'] ];
|
||||
const SIZE = 70;
|
||||
|
||||
const TinyArcChart = () => (
|
||||
<PieChart width={ SIZE } height={ SIZE / 2 } margin={{ bottom: 0, top: 0, left: 5, right: 5 }}>
|
||||
<Pie
|
||||
data={data}
|
||||
dataKey="value"
|
||||
stroke="no"
|
||||
innerRadius={ SIZE / 2 * 0.7 }
|
||||
outerRadius={ SIZE / 2 }
|
||||
fill="#8884d8"
|
||||
startAngle={ 0 }
|
||||
endAngle={ 180 }
|
||||
cy="100%"
|
||||
>
|
||||
{
|
||||
data.map((entry, index) => <Cell key={ index } fill={COLORS[index % COLORS.length]} />)
|
||||
}
|
||||
</Pie>
|
||||
</PieChart>
|
||||
);
|
||||
|
||||
export { TinyArcChart };
|
21
app/routes/Dashboards/Reports/components/TinyAreaChart.js
Executable file
21
app/routes/Dashboards/Reports/components/TinyAreaChart.js
Executable file
@@ -0,0 +1,21 @@
|
||||
import React from 'react';
|
||||
import _ from 'lodash';
|
||||
import {
|
||||
ResponsiveContainer,
|
||||
AreaChart,
|
||||
Area
|
||||
} from './../../../../components/recharts';
|
||||
|
||||
import colors from './../../../../colors';
|
||||
|
||||
const data = _.times(20, () => ({ pv: Math.random() * 100 }));
|
||||
|
||||
const TinyAreaChart = () => (
|
||||
<ResponsiveContainer width='100%' height={ 40 }>
|
||||
<AreaChart data={data}>
|
||||
<Area dataKey='pv' stroke={ colors['primary'] } fill={ colors['primary-03'] } />
|
||||
</AreaChart>
|
||||
</ResponsiveContainer>
|
||||
);
|
||||
|
||||
export { TinyAreaChart };
|
30
app/routes/Dashboards/Reports/components/TinyLineChart.js
Executable file
30
app/routes/Dashboards/Reports/components/TinyLineChart.js
Executable file
@@ -0,0 +1,30 @@
|
||||
import React from 'react';
|
||||
import _ from 'lodash';
|
||||
import {
|
||||
ResponsiveContainer,
|
||||
LineChart,
|
||||
Line,
|
||||
Dot
|
||||
} from './../../../../components/recharts';
|
||||
|
||||
import colors from './../../../../colors';
|
||||
|
||||
const data = _.times(20, () => ({ pv: Math.random() * 100 }));
|
||||
|
||||
const generateDot = ({stroke, ...other}) => (
|
||||
<Dot
|
||||
{ ...other }
|
||||
fill={ stroke }
|
||||
stroke={ colors['white'] }
|
||||
/>
|
||||
);
|
||||
|
||||
const TinyLineChart = () => (
|
||||
<ResponsiveContainer width='100%' height={ 40 }>
|
||||
<LineChart data={data}>
|
||||
<Line dataKey='pv' stroke={ colors['primary-07'] } strokeWidth={2} activeDot={{r: 5}} dot={generateDot} />
|
||||
</LineChart>
|
||||
</ResponsiveContainer>
|
||||
);
|
||||
|
||||
export { TinyLineChart };
|
3
app/routes/Dashboards/Reports/index.js
Executable file
3
app/routes/Dashboards/Reports/index.js
Executable file
@@ -0,0 +1,3 @@
|
||||
import Reports from './Reports';
|
||||
|
||||
export default Reports;
|
244
app/routes/Dashboards/Stock/Stock.js
Executable file
244
app/routes/Dashboards/Stock/Stock.js
Executable file
@@ -0,0 +1,244 @@
|
||||
import React from 'react';
|
||||
import {
|
||||
Container,
|
||||
Row,
|
||||
Card,
|
||||
CardBody,
|
||||
Table,
|
||||
Badge,
|
||||
CardTitle,
|
||||
Nav,
|
||||
NavLink,
|
||||
NavItem,
|
||||
Col
|
||||
} from './../../../components';
|
||||
import { setupPage } from './../../../components/Layout/setupPage';
|
||||
|
||||
import { HeaderMain } from "../../components/HeaderMain";
|
||||
|
||||
import {
|
||||
SimpleLineChart
|
||||
} from "../../components/Stock/SimpleLineChart"
|
||||
|
||||
import {
|
||||
TrTableSummary
|
||||
} from "../../components/Stock/TrTableSummary"
|
||||
|
||||
import {
|
||||
TrTableStock
|
||||
} from "../../components/Stock/TrTableStock"
|
||||
|
||||
import {
|
||||
TrTableFavStock
|
||||
} from "../../components/Stock/TrTableFavStock"
|
||||
|
||||
/*eslint-disable */
|
||||
const progressCompletion = [
|
||||
"25",
|
||||
"50",
|
||||
"75",
|
||||
"97"
|
||||
];
|
||||
/*eslint-enable */
|
||||
|
||||
const Stock = () => (
|
||||
<Container>
|
||||
<Row className="mb-2">
|
||||
<Col lg={ 12 }>
|
||||
<HeaderMain
|
||||
title="Stock"
|
||||
className="mb-4 mb-lg-4"
|
||||
/>
|
||||
</Col>
|
||||
</Row>
|
||||
<Row>
|
||||
<Col lg={ 12 }>
|
||||
<Table responsive size="sm" className="mb-4 text-nowrap">
|
||||
<thead>
|
||||
<tr>
|
||||
<td className="bt-0">
|
||||
<h4 className="mb-1">
|
||||
Your 5
|
||||
</h4>
|
||||
Favourites Stocks
|
||||
</td>
|
||||
<td className="bt-0">
|
||||
<h4 className="mb-1">
|
||||
AAPL
|
||||
</h4>
|
||||
<span className="text-success">
|
||||
<i className="fa fa-caret-up mr-1"></i> 22.38
|
||||
</span> / 5.9%
|
||||
</td>
|
||||
<td className="bt-0">
|
||||
<h4 className="mb-1">
|
||||
MSFT
|
||||
</h4>
|
||||
<span className="text-danger">
|
||||
<i className="fa fa-caret-down mr-1"></i> 34.18
|
||||
</span> / 0.56%
|
||||
</td>
|
||||
<td className="bt-0">
|
||||
<h4 className="mb-1">
|
||||
CAT
|
||||
</h4>
|
||||
<span className="text-success">
|
||||
<i className="fa fa-caret-up mr-1"></i> 22.38
|
||||
</span> / 12.2%
|
||||
</td>
|
||||
<td className="bt-0">
|
||||
<h4 className="mb-1">
|
||||
TSLA
|
||||
</h4>
|
||||
<span className="text-success">
|
||||
<i className="fa fa-caret-up mr-1"></i> 31.03
|
||||
</span> / 3.2%
|
||||
</td>
|
||||
<td className="bt-0">
|
||||
<h4 className="mb-1">
|
||||
KN
|
||||
</h4>
|
||||
<span className="text-danger">
|
||||
<i className="fa fa-caret-down mr-1"></i> 34.18
|
||||
</span> / 0.56%
|
||||
</td>
|
||||
<td className="bt-0">
|
||||
<h4 className="mb-1">
|
||||
QZA
|
||||
</h4>
|
||||
<span className="text-danger">
|
||||
<i className="fa fa-caret-down mr-1"></i> 4.02
|
||||
</span> / 4.21%
|
||||
</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<TrTableFavStock />
|
||||
</tbody>
|
||||
</Table>
|
||||
</Col>
|
||||
<Col lg={ 8 }>
|
||||
<Card className="mb-3">
|
||||
<CardBody>
|
||||
<span className="d-flex mb-3">
|
||||
<CardTitle>
|
||||
<h6>Nokia Corp.
|
||||
<small>
|
||||
<span className="text-success ml-2">
|
||||
<i className="fa fa-caret-up mr-1"></i> 22.38
|
||||
</span> / 5.9%
|
||||
</small>
|
||||
</h6>
|
||||
</CardTitle>
|
||||
<Badge pill className="ml-auto align-self-start"> Score: 7.24 </Badge>
|
||||
</span>
|
||||
<div className="text-center">
|
||||
<SimpleLineChart />
|
||||
<div className="d-flex mt-4">
|
||||
<dl className="row">
|
||||
<dt className="col-sm-4 text-left text-sm-right">Open</dt>
|
||||
<dd className="col-sm-8 text-left text-inverse">$834.00</dd>
|
||||
<dt className="col-sm-4 text-left text-sm-right">High</dt>
|
||||
<dd className="col-sm-8 text-left text-inverse">$198.00</dd>
|
||||
<dt className="col-sm-4 text-left text-sm-right">Low</dt>
|
||||
<dd className="col-sm-8 text-left text-inverse">$575.00</dd>
|
||||
</dl>
|
||||
<dl className="row">
|
||||
<dt className="col-sm-4 text-left text-sm-right">Market Cap</dt>
|
||||
<dd className="col-sm-8 text-left text-inverse">876.00B</dd>
|
||||
<dt className="col-sm-4 text-left text-sm-right">P/E ratio (ttm)</dt>
|
||||
<dd className="col-sm-8 text-left text-inverse">62.00</dd>
|
||||
<dt className="col-sm-4 text-left text-sm-right">Divided Yield</dt>
|
||||
<dd className="col-sm-8 text-left text-inverse">94.7%</dd>
|
||||
</dl>
|
||||
</div>
|
||||
</div>
|
||||
</CardBody>
|
||||
</Card>
|
||||
</Col>
|
||||
<Col lg={ 4 }>
|
||||
<Card className="mb-3">
|
||||
<CardBody className="pb-1">
|
||||
<Nav pills>
|
||||
<NavItem>
|
||||
<NavLink href="#" active>Summary</NavLink>
|
||||
</NavItem>
|
||||
<NavItem>
|
||||
<NavLink href="#">Key Stats</NavLink>
|
||||
</NavItem>
|
||||
</Nav>
|
||||
</CardBody>
|
||||
<Table responsive striped className="mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th className="bt-0">Name</th>
|
||||
<th className="bt-0 text-right">2013</th>
|
||||
<th className="bt-0 text-right">2014</th>
|
||||
<th className="bt-0 text-right">TTM</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<TrTableSummary />
|
||||
</tbody>
|
||||
</Table>
|
||||
</Card>
|
||||
</Col>
|
||||
<Col lg={ 6 }>
|
||||
<Card className="mb-3">
|
||||
<CardBody className="pb-1">
|
||||
<CardTitle className="mb-0">
|
||||
<h6>
|
||||
Cheap Stock
|
||||
</h6>
|
||||
</CardTitle>
|
||||
</CardBody>
|
||||
<Table responsive striped className="mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th className="bt-0"></th>
|
||||
<th className="bt-0 text-right">Price</th>
|
||||
<th className="bt-0 text-right">Score</th>
|
||||
<th className="bt-0 text-right">Q</th>
|
||||
<th className="bt-0 text-right">V</th>
|
||||
<th className="bt-0 text-right">G</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<TrTableStock />
|
||||
</tbody>
|
||||
</Table>
|
||||
</Card>
|
||||
</Col>
|
||||
<Col lg={ 6 }>
|
||||
<Card className="mb-3">
|
||||
<CardBody className="pb-1">
|
||||
<CardTitle className="mb-0">
|
||||
<h6>
|
||||
Expensive Stock
|
||||
</h6>
|
||||
</CardTitle>
|
||||
</CardBody>
|
||||
<Table responsive striped className="mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th className="bt-0"></th>
|
||||
<th className="bt-0 text-right">Price</th>
|
||||
<th className="bt-0 text-right">Score</th>
|
||||
<th className="bt-0 text-right">Q</th>
|
||||
<th className="bt-0 text-right">V</th>
|
||||
<th className="bt-0 text-right">G</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<TrTableStock />
|
||||
</tbody>
|
||||
</Table>
|
||||
</Card>
|
||||
</Col>
|
||||
</Row>
|
||||
</Container>
|
||||
);
|
||||
|
||||
export default setupPage({
|
||||
pageTitle: 'Stock'
|
||||
})(Stock);
|
3
app/routes/Dashboards/Stock/index.js
Executable file
3
app/routes/Dashboards/Stock/index.js
Executable file
@@ -0,0 +1,3 @@
|
||||
import Stock from './Stock';
|
||||
|
||||
export default Stock;
|
114
app/routes/Dashboards/System/System.js
Executable file
114
app/routes/Dashboards/System/System.js
Executable file
@@ -0,0 +1,114 @@
|
||||
import React from 'react';
|
||||
import faker from 'faker/locale/en_US';
|
||||
import {
|
||||
Container,
|
||||
Row,
|
||||
Table,
|
||||
Col
|
||||
} from './../../../components';
|
||||
|
||||
import { HeaderMain } from "../../components/HeaderMain";
|
||||
import {
|
||||
CardSystem
|
||||
} from "./components/CardSystem"
|
||||
import {
|
||||
TrSystem
|
||||
} from "./components/trSystem"
|
||||
|
||||
const TrColors = [
|
||||
{
|
||||
fill: "primary-02",
|
||||
stroke: "primary"
|
||||
},
|
||||
{
|
||||
fill: "purple-02",
|
||||
stroke: "purple"
|
||||
},
|
||||
{
|
||||
fill: "success-02",
|
||||
stroke: "success"
|
||||
},
|
||||
{
|
||||
fill: "yellow-02",
|
||||
stroke: "yellow"
|
||||
}
|
||||
]
|
||||
|
||||
const System = () => (
|
||||
<Container>
|
||||
<Row className="mb-5">
|
||||
<Col lg={ 12 }>
|
||||
<HeaderMain
|
||||
title="System"
|
||||
className="mb-4 mb-lg-5"
|
||||
/>
|
||||
</Col>
|
||||
<Col lg={ 3 } md={ 6 }>
|
||||
<CardSystem
|
||||
title="Memory"
|
||||
badgeColor="primary"
|
||||
pieColor="primary"
|
||||
/>
|
||||
</Col>
|
||||
<Col lg={ 3 } md={ 6 }>
|
||||
<CardSystem
|
||||
title="CPU"
|
||||
unit="Mb"
|
||||
badgeColor="purple"
|
||||
pieColor="purple"
|
||||
/>
|
||||
</Col>
|
||||
<Col lg={ 3 } md={ 6 }>
|
||||
<CardSystem
|
||||
title="Traffic"
|
||||
unit="Kb"
|
||||
badgeColor="success"
|
||||
pieColor="success"
|
||||
/>
|
||||
</Col>
|
||||
<Col lg={ 3 } md={ 6 }>
|
||||
<CardSystem
|
||||
title="Disk I/O"
|
||||
unit="Kb"
|
||||
pieColor="yellow"
|
||||
/>
|
||||
</Col>
|
||||
<Col lg={ 12 }>
|
||||
<h6 className="mt-5">Processes</h6>
|
||||
<p className="pb-3">
|
||||
{ faker.lorem.paragraphs() }
|
||||
</p>
|
||||
<Table responsive>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Memory</th>
|
||||
<th>CPU</th>
|
||||
<th>Traffic</th>
|
||||
<th>Disk I/O</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<TrSystem
|
||||
colors={TrColors}
|
||||
/>
|
||||
<TrSystem
|
||||
colors={TrColors}
|
||||
/>
|
||||
<TrSystem
|
||||
colors={TrColors}
|
||||
/>
|
||||
<TrSystem
|
||||
colors={TrColors}
|
||||
/>
|
||||
<TrSystem
|
||||
colors={TrColors}
|
||||
/>
|
||||
</tbody>
|
||||
</Table>
|
||||
</Col>
|
||||
</Row>
|
||||
</Container>
|
||||
);
|
||||
|
||||
export default System;
|
78
app/routes/Dashboards/System/components/CardSystem.js
Executable file
78
app/routes/Dashboards/System/components/CardSystem.js
Executable file
@@ -0,0 +1,78 @@
|
||||
import React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
|
||||
import {
|
||||
Card,
|
||||
CardBody,
|
||||
Badge
|
||||
} from './../../../../components';
|
||||
|
||||
import {
|
||||
TinyDonutChart
|
||||
} from "./TinyDonutChart"
|
||||
import {
|
||||
TinyBarChart
|
||||
} from "./TinyBarChart"
|
||||
|
||||
import { randomArray } from './../../../../utilities';
|
||||
|
||||
const percents = [
|
||||
"15",
|
||||
"25",
|
||||
"30",
|
||||
"35",
|
||||
"40",
|
||||
"45",
|
||||
"55",
|
||||
"60",
|
||||
"75",
|
||||
"80",
|
||||
"95"
|
||||
];
|
||||
|
||||
const caret = [
|
||||
"down",
|
||||
"up"
|
||||
];
|
||||
|
||||
const CardSystem = (props) => (
|
||||
<Card className="mb-3 mb-lg-0">
|
||||
<CardBody className="pb-0">
|
||||
<div className="d-flex">
|
||||
<span>
|
||||
<Badge pill className="mb-3" color={ props.badgeColor } >
|
||||
<i className={` fa fa-fw fa-caret-${ randomArray(caret) }`} />
|
||||
{ randomArray(percents) }%
|
||||
</Badge>
|
||||
<h6 className="mb-0">
|
||||
{ props.title }
|
||||
</h6>
|
||||
<h2 className="mb-3">
|
||||
{ randomArray(percents) } <small>{ props.unit }</small>
|
||||
</h2>
|
||||
</span>
|
||||
<span className="text-right ml-auto">
|
||||
<TinyDonutChart
|
||||
pieColor={props.pieColor}
|
||||
/>
|
||||
</span>
|
||||
</div>
|
||||
<TinyBarChart />
|
||||
</CardBody>
|
||||
</Card>
|
||||
);
|
||||
|
||||
CardSystem.propTypes = {
|
||||
title: PropTypes.node,
|
||||
badgeColor: PropTypes.string,
|
||||
unit: PropTypes.node,
|
||||
pieColor: PropTypes.string
|
||||
};
|
||||
CardSystem.defaultProps = {
|
||||
title: "Waiting...",
|
||||
badgeColor: "secondary",
|
||||
unit: "%",
|
||||
pieColor: "500"
|
||||
};
|
||||
|
||||
export { CardSystem };
|
32
app/routes/Dashboards/System/components/TinyAreaChart.js
Executable file
32
app/routes/Dashboards/System/components/TinyAreaChart.js
Executable file
@@ -0,0 +1,32 @@
|
||||
import React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import _ from 'lodash';
|
||||
import {
|
||||
ResponsiveContainer,
|
||||
AreaChart,
|
||||
Area
|
||||
} from './../../../../components/recharts';
|
||||
|
||||
import colors from './../../../../colors';
|
||||
|
||||
const TinyAreaChart = (props) => {
|
||||
const data = _.times(20, () => ({ pv: Math.random() * 100 }));
|
||||
return (
|
||||
<ResponsiveContainer width='100%' minWidth='150px' height={ 40 }>
|
||||
<AreaChart data={data}>
|
||||
<Area dataKey='pv' stroke={ colors[ props.strokeColor ] } fill={ colors[ props.fillColor ] } />
|
||||
</AreaChart>
|
||||
</ResponsiveContainer>
|
||||
)
|
||||
};
|
||||
|
||||
TinyAreaChart.propTypes = {
|
||||
strokeColor: PropTypes.string,
|
||||
fillColor: PropTypes.string
|
||||
};
|
||||
TinyAreaChart.defaultProps = {
|
||||
strokeColor: "600",
|
||||
fillColor: "200",
|
||||
};
|
||||
|
||||
export { TinyAreaChart };
|
31
app/routes/Dashboards/System/components/TinyBarChart.js
Executable file
31
app/routes/Dashboards/System/components/TinyBarChart.js
Executable file
@@ -0,0 +1,31 @@
|
||||
import React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
|
||||
import _ from 'lodash';
|
||||
import {
|
||||
ResponsiveContainer,
|
||||
BarChart,
|
||||
Bar
|
||||
} from './../../../../components/recharts';
|
||||
|
||||
import colors from './../../../../colors';
|
||||
|
||||
const TinyBarChart = (props) => {
|
||||
const data = _.times(40, () => ({ pv: 20+Math.random() * 100 }));
|
||||
return (
|
||||
<ResponsiveContainer width='100%' height={ 80 }>
|
||||
<BarChart data={data} margin={{ top: 0, bottom: 0, right: 0, left: 0 }}>
|
||||
<Bar dataKey='pv' fill={ colors[ props.barColor ] } />
|
||||
</BarChart>
|
||||
</ResponsiveContainer>
|
||||
)
|
||||
};
|
||||
|
||||
TinyBarChart.propTypes = {
|
||||
barColor: PropTypes.string
|
||||
};
|
||||
TinyBarChart.defaultProps = {
|
||||
barColor: "200"
|
||||
};
|
||||
|
||||
export { TinyBarChart };
|
43
app/routes/Dashboards/System/components/TinyDonutChart.js
Executable file
43
app/routes/Dashboards/System/components/TinyDonutChart.js
Executable file
@@ -0,0 +1,43 @@
|
||||
import React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import {
|
||||
PieChart,
|
||||
Pie,
|
||||
Cell
|
||||
} from './../../../../components/recharts';
|
||||
|
||||
import colors from './../../../../colors';
|
||||
|
||||
const TinyDonutChart = (props) => {
|
||||
const data = [
|
||||
{name: 'Group A', value: 40+Math.random()*100},
|
||||
{name: 'Group B', value: Math.random()*100}
|
||||
];
|
||||
return (
|
||||
<PieChart width={ 80 } height={ 80 }>
|
||||
<Pie
|
||||
data={data}
|
||||
dataKey="value"
|
||||
stroke={ colors[ props.strokeColor ] }
|
||||
innerRadius={ 28 }
|
||||
outerRadius={ 35 }
|
||||
fill={ colors[ props.pieBg ] }
|
||||
>
|
||||
<Cell fill={ colors[ props.pieColor ] } />
|
||||
</Pie>
|
||||
</PieChart>
|
||||
)
|
||||
};
|
||||
|
||||
TinyDonutChart.propTypes = {
|
||||
pieColor: PropTypes.string,
|
||||
strokeColor: PropTypes.string,
|
||||
pieBg: PropTypes.string
|
||||
};
|
||||
TinyDonutChart.defaultProps = {
|
||||
pieColor: "primary",
|
||||
strokeColor: "white",
|
||||
pieBg: "200"
|
||||
};
|
||||
|
||||
export { TinyDonutChart };
|
132
app/routes/Dashboards/System/components/trSystem.js
Executable file
132
app/routes/Dashboards/System/components/trSystem.js
Executable file
@@ -0,0 +1,132 @@
|
||||
import React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import _ from 'lodash';
|
||||
import {
|
||||
Progress,
|
||||
Badge
|
||||
} from './../../../../components';
|
||||
|
||||
import {
|
||||
TinyAreaChart
|
||||
} from "./TinyAreaChart"
|
||||
|
||||
import { randomArray } from './../../../../utilities';
|
||||
|
||||
const percents = [
|
||||
"15",
|
||||
"25",
|
||||
"30",
|
||||
"35",
|
||||
"40",
|
||||
"45",
|
||||
"55",
|
||||
"60",
|
||||
"75",
|
||||
"80",
|
||||
"95"
|
||||
];
|
||||
|
||||
const versions = [
|
||||
"1.10",
|
||||
"1.34",
|
||||
"2.35",
|
||||
"0.23",
|
||||
"2.90",
|
||||
"9.05"
|
||||
];
|
||||
|
||||
const name = [
|
||||
"Apache",
|
||||
"Postfix",
|
||||
"Ruby R1",
|
||||
"MySQL",
|
||||
"Ruby R2"
|
||||
];
|
||||
|
||||
const gbLeft = [
|
||||
"2,234",
|
||||
"6,738",
|
||||
"982",
|
||||
"9,001",
|
||||
"1,329"
|
||||
];
|
||||
|
||||
const tdValue = [
|
||||
"783",
|
||||
"45",
|
||||
"4",
|
||||
"190",
|
||||
"65"
|
||||
];
|
||||
|
||||
const tdUnits = [
|
||||
"",
|
||||
"Mb",
|
||||
"%",
|
||||
"Kb/s"
|
||||
];
|
||||
|
||||
const TrSystem = (props) => (
|
||||
<tr>
|
||||
<td style={{ width: '20%' }}>
|
||||
<span className="d-flex mb-2">
|
||||
<h6 className="mb-0 mr-5">
|
||||
{ randomArray(name) }
|
||||
</h6>
|
||||
<Badge pill className="ml-auto align-self-center">
|
||||
v. { randomArray(versions) }
|
||||
</Badge>
|
||||
</span>
|
||||
<Progress value={ randomArray(percents) } style={{height: "4px"}} className="mb-2" />
|
||||
<span className="d-flex">
|
||||
<span className="text-inverse">
|
||||
{ randomArray(percents) }%
|
||||
</span>
|
||||
<span className="ml-auto text-right">
|
||||
{ randomArray(gbLeft) } GB Left
|
||||
</span>
|
||||
</span>
|
||||
</td>
|
||||
{
|
||||
_.map(props.colors, (color,index)=>(
|
||||
<td style={{ width: '20%' }} key={index}>
|
||||
<h6 className="mb-0">
|
||||
{ randomArray(tdValue) } {tdUnits[index]}
|
||||
</h6>
|
||||
<TinyAreaChart
|
||||
strokeColor={color.stroke}
|
||||
fillColor={color.fill}
|
||||
/>
|
||||
</td>
|
||||
))
|
||||
}
|
||||
</tr>
|
||||
);
|
||||
|
||||
TrSystem.propTypes = {
|
||||
title: PropTypes.node,
|
||||
|
||||
colors: PropTypes.array
|
||||
};
|
||||
TrSystem.defaultProps = {
|
||||
colors: [
|
||||
{
|
||||
fill: "400",
|
||||
stroke: "primary"
|
||||
},
|
||||
{
|
||||
fill: "yellow",
|
||||
stroke: "400"
|
||||
},
|
||||
{
|
||||
fill: "purple",
|
||||
stroke: "info"
|
||||
},
|
||||
{
|
||||
fill: "success",
|
||||
stroke: "500"
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
export { TrSystem };
|
3
app/routes/Dashboards/System/index.js
Executable file
3
app/routes/Dashboards/System/index.js
Executable file
@@ -0,0 +1,3 @@
|
||||
import System from './System';
|
||||
|
||||
export default System;
|
31
app/routes/Dashboards/components/TinyLineChart.js
Executable file
31
app/routes/Dashboards/components/TinyLineChart.js
Executable file
@@ -0,0 +1,31 @@
|
||||
import React from 'react';
|
||||
import _ from 'lodash';
|
||||
import {
|
||||
ResponsiveContainer,
|
||||
LineChart,
|
||||
Line,
|
||||
Dot
|
||||
} from './../../../components/recharts';
|
||||
|
||||
import colors from './../../../colors';
|
||||
|
||||
const data = _.times(20, () => ({ pv: Math.random() * 100 }));
|
||||
|
||||
// eslint-disable-next-line react/prop-types
|
||||
const generateDot = ({stroke, ...other}) => (
|
||||
<Dot
|
||||
{ ...other }
|
||||
fill={ stroke }
|
||||
stroke={ colors['white'] }
|
||||
/>
|
||||
);
|
||||
|
||||
const TinyLineChart = () => (
|
||||
<ResponsiveContainer width='100%' height={ 40 }>
|
||||
<LineChart data={data}>
|
||||
<Line dataKey='pv' stroke={ colors['primary-07'] } strokeWidth={2} activeDot={{r: 5}} dot={generateDot} />
|
||||
</LineChart>
|
||||
</ResponsiveContainer>
|
||||
);
|
||||
|
||||
export { TinyLineChart };
|
Reference in New Issue
Block a user