UNPKG

@digital-ai/plugin-dai-release

Version:

Frontend functionalities for the dai-release backstage plugin

156 lines (153 loc) 4.45 kB
import { Page, Header, Content } from '@backstage/core-components'; import { DenseTable, defaultColumns } from '../DenseTable/DenseTable.esm.js'; import { makeStyles, Grid } from '@material-ui/core'; import React, { useState, useEffect } from 'react'; import { FilterComponent } from '../FilterComponent/FilterComponent.esm.js'; import { ModalComponent } from '../ModalComponent/ModalComponent.esm.js'; import { ReleaseResponseErrorPanel } from '../ReleaseResponseErrorPanel/ReleaseResponseErrorPanel.esm.js'; import { SearchHeaderComponent } from '../SearchHeaderComponent/SearchHeaderComponent.esm.js'; import releaseLogoWhite from '../../assets/releaseLogoWhite.png'; import { useReleases } from '../../hooks/useReleases.esm.js'; import '../../api/DaiReleaseApi.esm.js'; import '@backstage/errors'; import 'moment'; import '@backstage/core-plugin-api'; import 'react-use'; const useStyles = makeStyles(() => ({ logoStyle: { width: "300px" }, layoutSec: { paddingTop: "0" } })); const HomePageComponent = () => { const classes = useStyles(); const [showDrawer, onShowDrawer] = useState(false); const [filterCount, setFilterCount] = useState(0); const { items, loading, error, retry, page, rowsPerPage, searchTitle, fromDate, toDate, orderBy, statusTags, instance, instanceList, openModal, modalPopupInputId, modalTitle, modalPopupData, setPage, setRowsPerPage, setSearchTitle, setFromDate, setToDate, setOrderBy, setStatusTags, setInstance, setOpenModal, setModalPopupInputId, setModalTitle, setModalPopupData } = useReleases(); useEffect(() => { const count = (fromDate === null ? 0 : 1) + (toDate === null ? 0 : 1) + (statusTags !== void 0 ? statusTags.length : 0); setFilterCount(count); }, [fromDate, toDate, statusTags]); const onClosePopupModal = () => { setOpenModal(false); }; return /* @__PURE__ */ React.createElement(Page, { themeId: "home" }, /* @__PURE__ */ React.createElement( Header, { title: /* @__PURE__ */ React.createElement( "img", { src: releaseLogoWhite, alt: "Release logo", className: classes.logoStyle } ), pageTitleOverride: "Digital.ai Release" } ), /* @__PURE__ */ React.createElement(Content, { className: classes.layoutSec }, /* @__PURE__ */ React.createElement(Grid, { container: true, spacing: 3, direction: "column" }, /* @__PURE__ */ React.createElement(Grid, { item: true }, /* @__PURE__ */ React.createElement( SearchHeaderComponent, { displayFilterIcon: true, displaySearchFilter: true, titleName: "Active Releases", searchTitleTextField: "Title", searchTitle, instance, instanceList, filterCount, retry, error, onSearchByTitle: setSearchTitle, onSetInstance: setInstance, onShowDrawer } ), /* @__PURE__ */ React.createElement( FilterComponent, { filterCount, fromDate, toDate, orderBy, statusTags, showDrawer, onFromDateChange: setFromDate, onToDateChange: setToDate, onOrderByChange: setOrderBy, onStatusTagChange: setStatusTags, onShowDrawer } ), error && !loading ? /* @__PURE__ */ React.createElement(ReleaseResponseErrorPanel, { error }) : /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement( DenseTable, { page, pageSize: rowsPerPage, loading, totalCount: items?.total ?? 100, tableData: items?.releases || [], columns: defaultColumns( setOpenModal, setModalPopupInputId, setModalTitle ), retry, searchTitle, fromDate, toDate, orderBy, statusTags, onRowsPerPageChange: setRowsPerPage, onPageChange: setPage, setSearchTitle, setFromDate, setToDate, setOrderBy, setStatusTags } ), openModal && /* @__PURE__ */ React.createElement( ModalComponent, { onClose: onClosePopupModal, instance, modalPopupInputId, modalTitle: `Meta information - ${modalTitle}`, openModal, modalPopupData, sourcePage: "release", setModalPopupData } )))))); }; export { HomePageComponent }; //# sourceMappingURL=HomePageComponent.esm.js.map