You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
2.6 KiB
66 lines
2.6 KiB
import {observer} from "mobx-react"; |
|
import * as React from "react"; |
|
import {Table} from "semantic-ui-react"; |
|
import {Program, Schedule} from "../sprinklers"; |
|
|
|
@observer |
|
export class ScheduleView extends React.PureComponent<{ schedule: Schedule }, {}> { |
|
render() { |
|
return ( |
|
<div>{JSON.stringify(this.props.schedule)}</div> |
|
); |
|
} |
|
} |
|
|
|
@observer |
|
export default class ProgramTable extends React.PureComponent<{ programs: Program[] }, {}> { |
|
private static renderRow(program: Program, i: number): JSX.Element[] { |
|
if (!program) { |
|
return null; |
|
} |
|
const {name, running, enabled, schedule, sequence} = program; |
|
return [ |
|
<Table.Row key={i}> |
|
<Table.Cell className="program--number">{"" + (i + 1)}</Table.Cell> |
|
<Table.Cell className="program--name">{name}</Table.Cell> |
|
<Table.Cell className="program--running">{running ? "Running" : "Not running"}</Table.Cell> |
|
<Table.Cell className="program--enabled">{enabled ? "Enabled" : "Not enabled"}</Table.Cell> |
|
</Table.Row> |
|
, |
|
<Table.Row key={i + .5}> |
|
<Table.Cell className="program--sequence" colSpan="4"> |
|
<ul> |
|
{sequence.map((item) => |
|
(<li>Section {item.section + 1 + ""} for |
|
{item.duration.minutes}M {item.duration.seconds}S</li>))} |
|
</ul> |
|
<ScheduleView schedule={schedule}/> |
|
</Table.Cell> |
|
</Table.Row> |
|
, |
|
]; |
|
} |
|
|
|
render() { |
|
return ( |
|
<Table celled> |
|
<Table.Header> |
|
<Table.Row> |
|
<Table.HeaderCell colSpan="7">Programs</Table.HeaderCell> |
|
</Table.Row> |
|
<Table.Row> |
|
<Table.HeaderCell className="program--number">#</Table.HeaderCell> |
|
<Table.HeaderCell className="program--name">Name</Table.HeaderCell> |
|
<Table.HeaderCell className="program--running">Running?</Table.HeaderCell> |
|
<Table.HeaderCell className="program--enabled">Enabled?</Table.HeaderCell> |
|
</Table.Row> |
|
</Table.Header> |
|
<Table.Body> |
|
{ |
|
Array.prototype.concat.apply([], this.props.programs.map(ProgramTable.renderRow)) |
|
} |
|
</Table.Body> |
|
</Table> |
|
); |
|
} |
|
}
|
|
|