@digital-ai/plugin-dai-release
Version:
Frontend functionalities for the dai-release backstage plugin
156 lines (153 loc) • 4.45 kB
JavaScript
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