diff --git a/src/app/projects/page.js b/src/app/projects/page.js
index 8e04297..b1f1746 100644
--- a/src/app/projects/page.js
+++ b/src/app/projects/page.js
@@ -12,16 +12,19 @@ import SearchBar from "@/components/ui/SearchBar";
import { LoadingState } from "@/components/ui/States";
import { formatDate } from "@/lib/utils";
import { useTranslation } from "@/lib/i18n";
+import { useSession } from "next-auth/react";
export default function ProjectListPage() {
const { t } = useTranslation();
+ const { data: session } = useSession();
const [projects, setProjects] = useState([]);
const [searchTerm, setSearchTerm] = useState("");
const [filteredProjects, setFilteredProjects] = useState([]);
const [filters, setFilters] = useState({
status: 'all',
type: 'all',
- customer: 'all'
+ customer: 'all',
+ mine: false
});
const [customers, setCustomers] = useState([]);
@@ -63,6 +66,11 @@ export default function ProjectListPage() {
filtered = filtered.filter(project => project.customer === filters.customer);
}
+ // Apply mine filter
+ if (filters.mine && session?.user?.id) {
+ filtered = filtered.filter(project => project.assigned_to === session.user.id);
+ }
+
// Apply search term
if (searchTerm.trim()) {
const searchLower = searchTerm.toLowerCase();
@@ -80,7 +88,7 @@ export default function ProjectListPage() {
}
setFilteredProjects(filtered);
- }, [searchTerm, projects, filters]);
+ }, [searchTerm, projects, filters, session]);
async function handleDelete(id) {
const confirmed = confirm(t('projects.deleteConfirm'));
@@ -109,7 +117,8 @@ export default function ProjectListPage() {
setFilters({
status: 'all',
type: 'all',
- customer: 'all'
+ customer: 'all',
+ mine: false
});
setSearchTerm('');
};
@@ -118,13 +127,14 @@ export default function ProjectListPage() {
setFiltersExpanded(!filtersExpanded);
};
- const hasActiveFilters = filters.status !== 'all' || filters.type !== 'all' || filters.customer !== 'all' || searchTerm.trim() !== '';
+ const hasActiveFilters = filters.status !== 'all' || filters.type !== 'all' || filters.customer !== 'all' || filters.mine || searchTerm.trim() !== '';
const getActiveFilterCount = () => {
let count = 0;
if (filters.status !== 'all') count++;
if (filters.type !== 'all') count++;
if (filters.customer !== 'all') count++;
+ if (filters.mine) count++;
if (searchTerm.trim()) count++;
return count;
};
@@ -170,6 +180,29 @@ export default function ProjectListPage() {
{t('projects.mapView') || 'Widok mapy'}
+ {session?.user && (
+
+ )}