UNPKG

lml-main

Version:

This is now a mono repository published into many standalone packages.

158 lines 7.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const React = require("react"); const react_redux_1 = require("react-redux"); const react_virtualized_1 = require("react-virtualized"); const actions_1 = require("../../../jobs/actions"); const Selectors = require("../../../jobs/selectors"); const JobListHeader = require("./list-header"); const JobCard = require("../../../jobs/components/card"); const cosmoui_1 = require("cosmoui"); const styles = require('./job-list.scss'); class BaseList extends React.Component { constructor(props) { super(props); this.setJobsListRef = (ref) => this.jobsList = ref; this.renderJob = this.renderJob.bind(this); this.renderShowNoJobsMessage = this.renderShowNoJobsMessage.bind(this); this.jobRowHeight = this.jobRowHeight.bind(this); this.setJobsListRef = this.setJobsListRef.bind(this); } componentWillUpdate() { if (this.jobsList) this.jobsList.recomputeRowHeights(); } render() { const { jobs, HeaderComponent } = this.props; return (React.createElement(cosmoui_1.Column, { align: "stretch", grow: 1, shrink: 0, basis: "auto" }, React.createElement(HeaderComponent, null), React.createElement(cosmoui_1.Column, { grow: 1, shrink: 1, basis: "auto" }, React.createElement(react_virtualized_1.AutoSizer, null, (_a) => { var params = tslib_1.__rest(_a, []); return (React.createElement(react_virtualized_1.List, { ref: this.setJobsListRef, className: styles.scrollList, width: params.width, height: params.height, rowCount: jobs.length + 2, estimatedRowSize: 70, rowHeight: this.jobRowHeight, rowRenderer: this.renderJob, noRowsRenderer: this.renderShowNoJobsMessage })); })))); } renderJob(_a) { var params = tslib_1.__rest(_a, []); const { jobs, JobComponent, canPageForwards, canPageBack } = this.props; if (params.index === 0) { return canPageBack && (React.createElement(cosmoui_1.Row, { style: params.style, key: "jobsListBtnBack", justify: "center", className: styles.scrollButton, onClick: this.props.pageBackwards }, React.createElement("div", { id: "job-list-load-previous" }, "...Load Previous"))); } else if (params.index === jobs.length + 1) { return canPageForwards && (React.createElement(cosmoui_1.Row, { style: params.style, key: "jobsListBtnNext", justify: "center", className: styles.scrollButton, onClick: this.props.pageForwards }, React.createElement("div", { id: "job-list-load-next" }, "...Load Next"))); } else { const job = this.props.jobs[params.index - 1]; if (params.index === 1) { params.style = Object.assign({}, params.style, { height: params.style.height -= this.spacerHeight(), marginTop: this.spacerHeight() }); } return React.createElement(JobComponent, { style: params.style, jobByStatus: job, key: job.refId }); } } renderShowNoJobsMessage() { const { showNoJobsMessage } = this.props; if (!showNoJobsMessage) return null; return (React.createElement(cosmoui_1.Text, { size: "lg", style: { textAlign: 'center', margin: '20px' }, shade: 700 }, "No matching jobs")); } jobRowHeight(_a) { var params = tslib_1.__rest(_a, []); const { jobs, expandedJobs, allJobsExpanded, canPageBack, canPageForwards } = this.props; if (params.index === 0) { return canPageBack ? 56 : 0; } else if (params.index === jobs.length + 1) { return canPageForwards ? 56 : 0; } else { const job = jobs[params.index - 1]; let height = job && (expandedJobs[job.refId] || allJobsExpanded) ? 140 : 56; if (params.index === 1) height += this.spacerHeight(); return height; } } spacerHeight() { const { firstJobIsActive, canPageBack } = this.props; return (firstJobIsActive && !canPageBack) ? 20 : 0; } } exports.BaseList = BaseList; const mapStateToProps = (state, ownProps) => ({ jobs: Selectors.getJobList(state), isSearched: Selectors.getSearchInput(state), expandedJobs: Selectors.getExpandedJobRefIds(state), allJobsExpanded: Selectors.getAllExpanded(state), firstJobIsActive: Selectors.firstJobIsActive(state), canPageBack: Selectors.canPageBack(state), canPageForwards: Selectors.canPageForwards(state), showNoJobsMessage: Selectors.getShowNoJobsMessage(state), }); const mapDispatchToProps = { resetPagination: actions_1.resetPagination, pageForwards: actions_1.pageForwards, pageBackwards: actions_1.pageBackwards, }; exports.ConnectedList = react_redux_1.connect(mapStateToProps, mapDispatchToProps)(BaseList); class AbstractList extends React.Component { } exports.AbstractList = AbstractList; class LiveJobsList extends AbstractList { render() { const _props = { JobComponent: JobCard.LiveJobCard, HeaderComponent: JobListHeader.LiveHeaderComponent, }; const props = Object.assign({}, this.props, _props); return (React.createElement(exports.ConnectedList, Object.assign({}, props))); } } exports.LiveJobsList = LiveJobsList; class AllocatedJobsList extends AbstractList { render() { const _props = { JobComponent: JobCard.AllocatedJobCard, HeaderComponent: JobListHeader.AllocatedHeaderComponent, }; const props = Object.assign({}, this.props, _props); return (React.createElement(exports.ConnectedList, Object.assign({}, props))); } } exports.AllocatedJobsList = AllocatedJobsList; class AcceptedJobsList extends AbstractList { render() { const _props = { JobComponent: JobCard.AcceptedJobCard, HeaderComponent: JobListHeader.AcceptedHeaderComponent, }; const props = Object.assign({}, this.props, _props); return (React.createElement(exports.ConnectedList, Object.assign({}, props))); } } exports.AcceptedJobsList = AcceptedJobsList; class InProgressJobsList extends AbstractList { render() { const _props = { JobComponent: JobCard.InProgressJobCard, HeaderComponent: JobListHeader.InProgressHeaderComponent, }; const props = Object.assign({}, this.props, _props); return (React.createElement(exports.ConnectedList, Object.assign({}, props))); } } exports.InProgressJobsList = InProgressJobsList; class CompletedJobsList extends AbstractList { render() { const _props = { JobComponent: JobCard.CompletedJobCard, HeaderComponent: JobListHeader.CompletedHeaderComponent, }; const props = Object.assign({}, this.props, _props); return (React.createElement(exports.ConnectedList, Object.assign({}, props))); } } exports.CompletedJobsList = CompletedJobsList; //# sourceMappingURL=jobs-list.js.map