diff --git a/src/components/gallary/GalleryFilterPanel.jsx b/src/components/gallary/GalleryFilterPanel.jsx
index f6e1c6c2..e91ba9d1 100644
--- a/src/components/gallary/GalleryFilterPanel.jsx
+++ b/src/components/gallary/GalleryFilterPanel.jsx
@@ -7,13 +7,18 @@ import { DateRangePicker1 } from "../common/DateRangePicker";
import { zodResolver } from "@hookform/resolvers/zod";
import { defaultGalleryFilterValue, gallerySchema } from "./GallerySchema";
import SelectMultiple from "../common/SelectMultiple";
+import { localToUtc } from "../../utils/appUtils";
-const GalleryFilterPanel = () => {
+const GalleryFilterPanel = ({ onApply }) => {
const selectedProject = useSelectedProject();
const [resetKey, setResetKey] = useState(0);
+
const { data, isLoading, isError, error } =
useImageGalleryFilter(selectedProject);
+ const closePanel = () => {
+ document.querySelector(".offcanvas.show .btn-close")?.click();
+ };
const methods = useForm({
resolver: zodResolver(gallerySchema),
defaultValues: defaultGalleryFilterValue,
@@ -22,14 +27,25 @@ const GalleryFilterPanel = () => {
const {
handleSubmit,
register,
- setValue,
+ setValue,reset,
formState: { errors },
} = methods;
const onSubmit = (formData) => {
- console.log(formData);
+ onApply({
+ ...formData,
+ startDate: localToUtc(formData.startDate),
+ endDate: localToUtc(formData.endDate),
+ });
+ closePanel()
};
+ const onClear=()=>{
+ reset(defaultGalleryFilterValue);
+ setResetKey((prev) => prev + 1);
+ closePanel()
+ }
+
if (isLoading) return
Loading....
;
if (isError) return {error.message}
;
return (
@@ -88,8 +104,6 @@ const GalleryFilterPanel = () => {
{
/>
-
+
diff --git a/src/components/gallary/ImageGalleryListView.jsx b/src/components/gallary/ImageGalleryListView.jsx
index 32960681..945736e3 100644
--- a/src/components/gallary/ImageGalleryListView.jsx
+++ b/src/components/gallary/ImageGalleryListView.jsx
@@ -9,7 +9,7 @@ import Pagination from "../common/Pagination";
import { formatUTCToLocalTime } from "../../utils/dateUtils";
import Loader from "../common/Loader";
-const ImageGalleryListView = () => {
+const ImageGalleryListView = ({filter}) => {
const [hoveredImage, setHoveredImage] = useState(null);
const selectedProject = useSelectedProject();
const [currentPage, setCurrentPage] = useState(1);
@@ -19,7 +19,7 @@ const ImageGalleryListView = () => {
selectedProject,
currentPage,
10,
- {}
+ filter
);
const paginate = (page) => {
diff --git a/src/hooks/useImageGallery.js b/src/hooks/useImageGallery.js
index 85f2c41b..ac3cb852 100644
--- a/src/hooks/useImageGallery.js
+++ b/src/hooks/useImageGallery.js
@@ -6,23 +6,30 @@ import { ImageGalleryRepository } from "../repositories/ImageGalleryAPI";
import { useInfiniteQuery, useQuery } from "@tanstack/react-query";
-const PAGE_SIZE = 10;
+const cleanFilter = (filter) => {
+ const cleaned = { ...filter };
+
+ ["buildingIds", "floorIds", "workAreaIds", "activityIds","workCategoryIds","uploadedByIds","serviceIds"].forEach((key) => {
+ if (Array.isArray(cleaned[key]) && cleaned[key].length === 0) {
+ delete cleaned[key];
+ }
+ });
+ return cleaned;
+};;
const useImageGallery = (selectedProjectId,pageNumber, pageSize, filters) => {
- const hasFilters = filters && Object.values(filters).some(
- value => Array.isArray(value) ? value.length > 0 : value !== null && value !== ""
- );
-
+
return useQuery({
- queryKey: ["imageGallery", selectedProjectId, pageNumber, pageSize, hasFilters ? filters : null],
+ queryKey: ["imageGallery", selectedProjectId, pageNumber, pageSize,filters],
enabled: !!selectedProjectId,
queryFn: async () => {
+ const cleanedFilter = cleanFilter(filters)
const res = await ImageGalleryRepository.ImagesGet(
selectedProjectId,
pageNumber,
pageSize,
- hasFilters ? filters : undefined,
+ cleanedFilter
);
return res.data;
},
diff --git a/src/pages/Gallary/ImageGallaryPage.jsx b/src/pages/Gallary/ImageGallaryPage.jsx
index a230a44b..b8d6383d 100644
--- a/src/pages/Gallary/ImageGallaryPage.jsx
+++ b/src/pages/Gallary/ImageGallaryPage.jsx
@@ -36,8 +36,10 @@ export const useGalleryContext = () => {
};
const ImageGalleryPage = () => {
+ const [filter,setFilter] = useState()
const selectedProjectId = useSelectedProject();
const { projectNames } = useProjectName();
+
const [openGallery, setOpenGallery] = useState({ isOpen: false, data: null });
@@ -58,7 +60,7 @@ const ImageGalleryPage = () => {
useEffect(()=>{
setShowTrigger(true);
- setOffcanvasContent("Gallery Filter",);
+ setOffcanvasContent("Gallery Filter",);
return ()=>{
setOffcanvasContent("",null)
@@ -102,7 +104,7 @@ const ImageGalleryPage = () => {
)}
-
+
{openGallery?.isOpen && (