strapi-export-collection-lead
Version:
Effortlessly export Strapi collection data to CSV with filters like date range.
90 lines (84 loc) • 2.51 kB
JavaScript
import React, { useEffect, useState } from "react";
import {
BaseHeaderLayout,
ContentLayout,
Flex,
Layout,
EmptyStateLayout,
Field,
FieldLabel,
TextInput,
} from "@strapi/design-system";
import Filters from "../../components/common/Filters";
import adminRequests from "../../api";
import { LoadingIndicatorPage } from "@strapi/helper-plugin";
import TabularData from "../../components/common/TabularData";
const HomePage = () => {
const [page, setPage] = useState(1);
const [endDate, setEndDate] = useState();
const [startDate, setStartDate] = useState();
const [isLoading, setIsLoading] = useState(false);
const [contentData, setContentData] = useState([]);
const [selectedContentType, setSelectedContentType] = useState("");
const [availableContentType, setAvailableContentType] = useState([]);
const [maxPages, setMaxPages] = useState(10);
useEffect(() => {
adminRequests
.getAllContentTypes()
.then((response) => {
setAvailableContentType(response);
})
.catch((error) => {
console.log(error);
});
}, []);
const fetchContentTypeData = () => {
setPage(1);
// setIsLoading(true);
adminRequests
.getDataByContentType(selectedContentType)
.then((response) => {
setContentData(response);
})
.catch((error) => {
console.log(error);
})
// .finally(() => {
// // setTimeout(() => {
// // setIsLoading(false);
// // }, 3000);
// });
// console.log("Fetched data:", selectedContentType);
};
if (isLoading) {
return <LoadingIndicatorPage />;
}
return (
<Layout sideNav={null}>
<BaseHeaderLayout
title={"Welcome to Export Plugin"}
subtitle={"Developed by Green Apex"}
as={"h2"}
/>
<Filters
availableContentType={availableContentType}
selectedContentType={selectedContentType}
setSelectedContentType={setSelectedContentType}
startDate={startDate}
endDate={endDate}
setStartDate={setStartDate}
setEndDate={setEndDate}
fetchContentTypeData={fetchContentTypeData}
contentData={contentData}
/>
<TabularData
data={contentData}
page={page}
setPage={setPage}
maxPages={maxPages}
setMaxPages={setMaxPages}
/>
</Layout>
);
};
export default HomePage;