Farmbot-Web-App/frontend/regimens/index.tsx

89 lines
3.5 KiB
TypeScript
Raw Normal View History

2017-06-29 12:54:02 -06:00
import * as React from "react";
2018-06-14 12:48:30 -06:00
import { BulkScheduler } from "./bulk_scheduler/index";
2017-06-29 12:54:02 -06:00
import { RegimensList } from "./list/index";
2018-06-14 12:48:30 -06:00
import { RegimenEditor } from "./editor/index";
2017-06-29 12:54:02 -06:00
import { connect } from "react-redux";
import { Props } from "./interfaces";
2018-06-14 12:48:30 -06:00
import { Page, Row, LeftPanel, CenterPanel, RightPanel } from "../ui/index";
2017-06-29 12:54:02 -06:00
import { mapStateToProps } from "./state_to_props";
import { isTaggedRegimen } from "../resources/tagged_resources";
2018-05-01 22:14:41 -06:00
import { setActiveRegimenByName } from "./set_active_regimen_by_name";
2019-04-02 13:59:37 -06:00
import { t } from "../i18next_wrapper";
2019-04-09 19:45:59 -06:00
import { ToolTips, Actions } from "../constants";
import { unselectRegimen } from "./actions";
2019-04-11 21:17:18 -06:00
export interface RegimenBackButtonProps {
dispatch: Function;
className: string;
}
export const RegimenBackButton = (props: RegimenBackButtonProps) => {
2019-04-09 19:45:59 -06:00
const schedulerOpen = props.className.includes("inserting-item");
2019-04-11 21:17:18 -06:00
return <i
className={`back-to-regimens fa fa-arrow-left ${props.className}`}
onClick={() => schedulerOpen
? props.dispatch({ type: Actions.SET_SCHEDULER_STATE, payload: false })
: props.dispatch(unselectRegimen())}
title={schedulerOpen ? t("back to regimen") : t("back to regimens")} />;
2019-04-09 19:45:59 -06:00
};
2017-06-29 12:54:02 -06:00
2019-09-19 13:09:00 -06:00
export class RawRegimens extends React.Component<Props, {}> {
2020-05-06 16:03:15 -06:00
componentDidMount() {
2018-05-01 22:14:41 -06:00
if (!this.props.current) { setActiveRegimenByName(); }
}
2017-06-29 12:54:02 -06:00
render() {
const { current, calendar } = this.props;
const regimenSelected = current && isTaggedRegimen(current) && calendar;
2019-04-09 19:45:59 -06:00
const regimenOpen = regimenSelected ? "open" : "";
const insertingItem = this.props.schedulerOpen ? "inserting-item" : "";
const activeClasses = [regimenOpen, insertingItem].join(" ");
2019-02-06 18:36:11 -07:00
return <Page className="regimen-page">
2017-06-29 12:54:02 -06:00
<Row>
2018-06-14 12:48:30 -06:00
<LeftPanel
2019-04-09 19:45:59 -06:00
className={`regimen-list-panel ${activeClasses}`}
2020-02-26 11:10:59 -07:00
title={t("Regimens")}>
<RegimensList
usageStats={this.props.regimenUsageStats}
dispatch={this.props.dispatch}
regimens={this.props.regimens}
regimen={this.props.current} />
2018-06-14 12:48:30 -06:00
</LeftPanel>
<CenterPanel
2019-04-09 19:45:59 -06:00
className={`regimen-editor-panel ${activeClasses}`}
2019-04-11 21:17:18 -06:00
backButton={<RegimenBackButton
className={activeClasses}
dispatch={this.props.dispatch} />}
title={regimenOpen ? t("Edit Regimen") : t("Regimen Editor")}
2018-06-14 12:48:30 -06:00
helpText={t(ToolTips.REGIMEN_EDITOR)}
width={5}>
<RegimenEditor
2017-06-29 12:54:02 -06:00
dispatch={this.props.dispatch}
calendar={this.props.calendar}
2019-01-10 20:10:55 -07:00
current={this.props.current}
resources={this.props.resources}
variableData={this.props.variableData}
shouldDisplay={this.props.shouldDisplay} />
2018-06-14 12:48:30 -06:00
</CenterPanel>
<RightPanel
2019-04-09 19:45:59 -06:00
className={`bulk-scheduler ${activeClasses}`}
2019-04-11 21:17:18 -06:00
backButton={<RegimenBackButton
className={activeClasses}
dispatch={this.props.dispatch} />}
title={insertingItem ? t("Add Regimen Item") : t("Scheduler")}
2018-06-14 12:48:30 -06:00
helpText={t(ToolTips.BULK_SCHEDULER)}
show={!!regimenSelected} width={4}>
<BulkScheduler
selectedSequence={this.props.selectedSequence}
dailyOffsetMs={this.props.dailyOffsetMs}
weeks={this.props.weeks}
sequences={this.props.sequences}
resources={this.props.resources}
dispatch={this.props.dispatch} />
</RightPanel>
2017-06-29 12:54:02 -06:00
</Row>
</Page>;
}
}
2019-09-19 13:09:00 -06:00
export const Regimens = connect(mapStateToProps)(RawRegimens);