From 7fbc0d22b0d6b68ae82623362b881ee4ca78638e Mon Sep 17 00:00:00 2001 From: Vivek Paste Date: Fri, 29 Nov 2024 13:21:33 +0530 Subject: [PATCH 01/42] worked on env --- client/.env.sample | 2 +- client/package.json | 10 +++++++--- client/src/component/Chat/BotResponse.jsx | 3 ++- server/.env.sample | 1 + server/package.json | 2 +- server/service/rag.js | 9 +-------- 6 files changed, 13 insertions(+), 14 deletions(-) diff --git a/client/.env.sample b/client/.env.sample index cc5d577..ae7d092 100755 --- a/client/.env.sample +++ b/client/.env.sample @@ -1 +1 @@ -REACT_APP_BASE_URL=http://localhost:8001.com/ +REACT_APP_BASE_URL=http://localhost:4000/ diff --git a/client/package.json b/client/package.json index 45ac860..6535b44 100644 --- a/client/package.json +++ b/client/package.json @@ -1,6 +1,6 @@ { - "name": "OpenAIframework", - "version": "0.1.0", + "name": "react", + "version": "18.3.1", "private": true, "dependencies": { "@ant-design/icons": "^5.3.7", @@ -88,5 +88,9 @@ "url": "^0.11.3", "webpack": "^5.92.1", "webpack-cli": "^5.1.4" - } + }, + "main": "index.js", + "author": "", + "license": "ISC", + "description": "" } diff --git a/client/src/component/Chat/BotResponse.jsx b/client/src/component/Chat/BotResponse.jsx index 36ddac2..d233abc 100644 --- a/client/src/component/Chat/BotResponse.jsx +++ b/client/src/component/Chat/BotResponse.jsx @@ -7,7 +7,8 @@ import { HiCheck, HiOutlineClipboard, HiShare } from "react-icons/hi2"; import { marked } from "marked"; import CodeHighlighter from "../common/CodeHighlighter"; import { copyToClipboard } from "../../Utility/helper"; -import * as DOMPurify from "dompurify"; +import DOMPurify from 'dompurify'; + import { Link } from "react-router-dom"; // components diff --git a/server/.env.sample b/server/.env.sample index 38cc3a8..19b9b45 100755 --- a/server/.env.sample +++ b/server/.env.sample @@ -12,3 +12,4 @@ MONGODB_NAME=mydatabase AWS_ACCESS_KEY_ID=dummyAWSAccessKey123 AWS_SECRET_ACCESS_KEY=dummyAWSSecretKey123 AWS_REGION=us-west-2 + diff --git a/server/package.json b/server/package.json index a976c4c..14077bc 100644 --- a/server/package.json +++ b/server/package.json @@ -30,7 +30,7 @@ "cors": "^2.8.5", "csv-parse": "^5.5.6", "docx-parser": "^0.2.1", - "dotenv": "^16.0.3", + "dotenv": "^16.4.5", "express": "^4.18.2", "express-async-handler": "^1.2.0", "fs": "^0.0.1-security", diff --git a/server/service/rag.js b/server/service/rag.js index 16343ce..dee5f35 100644 --- a/server/service/rag.js +++ b/server/service/rag.js @@ -1,27 +1,22 @@ import { Pinecone } from '@pinecone-database/pinecone' import { getOpenAIInstance } from '../config/openAI.js'; import getOpenAiConfig from '../utils/openAiConfigHelper.js'; - +import 'dotenv/config'; const pc = new Pinecone({ apiKey: process.env.PINECONE_API_KEY }); const index = pc.index( process.env.PINECONE_INDEX_NAME); - export const createEmbeddingWithLLM =async (model,payload)=>{ const openai = await getOpenAIInstance(); return await openai.embeddings.create({ model: model, //"text-embedding-ada-002" input: payload, }); - } export const upsertVectorDB=async (namespace,upsertPayload)=>{ return await index.namespace(namespace).upsert(upsertPayload); - }; - export const deleteAllEmbeddingFromNameSpace = async (namespace) => { const results = await index.namespace(namespace).listPaginated(); const ns = await index.namespace(namespace) - for (const vector of results.vectors) { try { await ns.deleteOne(vector.id); @@ -31,8 +26,6 @@ export const deleteAllEmbeddingFromNameSpace = async (namespace) => { } return true; }; - - export const chatResponse = async ()=>{ const openai = await getOpenAIInstance(); const gptModel = await getOpenAiConfig('model'); From f793b9e5615f2e38ac0850b5cc16bcc363098ea1 Mon Sep 17 00:00:00 2001 From: Vivek Paste Date: Mon, 2 Dec 2024 21:44:13 +0530 Subject: [PATCH 02/42] created home page added hero and header --- client/src/App.js | 6 +- client/src/Pages/PortfolioHome/index.jsx | 13 ++++ client/src/Pages/index.js | 5 +- client/src/component/HeroBanner/index.js | 52 ++++++++++++++ client/src/component/HeroBanner/script.js | 15 ++++ client/src/component/HeroBanner/style.css | 69 +++++++++++++++++++ client/src/component/NewNavbar/index.js | 20 ++++++ client/src/component/NewNavbar/style.css | 20 ++++++ .../component/Prompt/NavContentDuplicate.jsx | 14 ++++ client/src/component/index.js | 5 +- 10 files changed, 212 insertions(+), 7 deletions(-) create mode 100644 client/src/Pages/PortfolioHome/index.jsx create mode 100644 client/src/component/HeroBanner/index.js create mode 100644 client/src/component/HeroBanner/script.js create mode 100644 client/src/component/HeroBanner/style.css create mode 100644 client/src/component/NewNavbar/index.js create mode 100644 client/src/component/NewNavbar/style.css diff --git a/client/src/App.js b/client/src/App.js index 8a621cd..e79ae1c 100644 --- a/client/src/App.js +++ b/client/src/App.js @@ -21,6 +21,7 @@ import { AssistantFileDownloadPage, } from "./Pages"; +import PortfolioHome from "./Pages/PortfolioHome"; import Layout from "./Pages/Layout"; import AssistantLayout from "./Pages/Layout/AssistantLayout"; @@ -53,8 +54,7 @@ function App() { } /> } /> } /> - - + } /> {/* For connecting workboard */} } /> @@ -72,7 +72,7 @@ function App() { } /> } /> } /> - + }> diff --git a/client/src/Pages/PortfolioHome/index.jsx b/client/src/Pages/PortfolioHome/index.jsx new file mode 100644 index 0000000..0327484 --- /dev/null +++ b/client/src/Pages/PortfolioHome/index.jsx @@ -0,0 +1,13 @@ +import React from "react"; +import {HeroBanner,NewNavbar} from "../../component"; +const PortfolioHome = () => { + return ( +
+ + +

Portfolio Home

+
+ ); +}; + +export default PortfolioHome; diff --git a/client/src/Pages/index.js b/client/src/Pages/index.js index e812385..6eb0e3f 100644 --- a/client/src/Pages/index.js +++ b/client/src/Pages/index.js @@ -18,7 +18,7 @@ import AssistantsList from './SuperAdmin/Assistant/AssistantsList'; import ChatPage from "./ChatPage"; import AssistantsChatPage from "./AssistantsChatPage"; import AssistantFileDownloadPage from "./AssistantFileDownload"; - +import PortfolioHome from "./PortfolioHome"; export { LoginForm, PageNotFound, @@ -37,5 +37,6 @@ export { AssistantsList, ChatPage, AssistantsChatPage, - AssistantFileDownloadPage + AssistantFileDownloadPage, + PortfolioHome }; diff --git a/client/src/component/HeroBanner/index.js b/client/src/component/HeroBanner/index.js new file mode 100644 index 0000000..14e246f --- /dev/null +++ b/client/src/component/HeroBanner/index.js @@ -0,0 +1,52 @@ +'use client' + +import React, { useEffect, useState } from "react"; +import typeWriter from './script.js'; +import './style.css'; + +const HeroBanner = () => { + const [currentSlide, setCurrentSlide] = useState(0); + const totalSlides = 6; // Increased number of slides for better demonstration + + useEffect(() => { + typeWriter(); + + const carouselInterval = setInterval(() => { + setCurrentSlide((prevSlide) => (prevSlide + 1) % totalSlides); + }, 5000); // Change slide every 5 seconds + + return () => { + clearInterval(carouselInterval); + const typingElement = document.getElementById('typing'); + if (typingElement) { + typingElement.innerHTML = ""; + } + }; + }, []); + + return ( +
+
+

+
+
+ {[1, 2, 3, 4, 5, 6].map((index) => ( +
+
+

Portfolio {index}

+

This is a sample portfolio item {index}.

+
+
+ ))} +
+
+
+
+ ); +}; + +export default HeroBanner; + diff --git a/client/src/component/HeroBanner/script.js b/client/src/component/HeroBanner/script.js new file mode 100644 index 0000000..a45de31 --- /dev/null +++ b/client/src/component/HeroBanner/script.js @@ -0,0 +1,15 @@ +let i = 0; +const text = "Welcome To Portfolio Management"; +const speed = 100; + +export default function typeWriter() { + if (i < text.length) { + document.getElementById("typing").innerHTML += text.charAt(i); + i++; + setTimeout(typeWriter, speed); + } else { + i = 0; + document.getElementById("typing").innerHTML = ''; + setTimeout(typeWriter, speed * 2); + } +} \ No newline at end of file diff --git a/client/src/component/HeroBanner/style.css b/client/src/component/HeroBanner/style.css new file mode 100644 index 0000000..7b7a707 --- /dev/null +++ b/client/src/component/HeroBanner/style.css @@ -0,0 +1,69 @@ +.hero-container { + height: 100vh; + width: 100%; + background-color: #0e0a0a; + display: flex; + justify-content: center; + align-items: center; +} + +.content-wrapper { + display: flex; + flex-direction: column; + align-items: center; + width: 100%; + max-width: 1200px; + gap:7rem; +} + +#typing { + font-size: 2rem; + color: #ffffff; + min-height: 50px; + transition: all 0.4s ease; + margin-bottom: 2rem; + text-align: center; +} + +.carousel-container { + width: 100%; + overflow: hidden; + +} + +.carousel-wrapper { + display: flex; + transition: transform 0.5s ease-in-out; + +} + +.carousel-slide { + flex: 0 0 calc(100% / 3); + padding: 0 10px; + box-sizing: border-box; +} + +.carousel-slide-content { + background-color: rgba(255, 255, 255, 0.1); + border-radius: 8px; + padding: 20px; + color: #ffffff; + text-align: center; + height: 300px; +} + +.carousel-slide-content h3 { + font-size: 1.5rem; + margin-bottom: 1rem; +} + +.carousel-slide-content p { + font-size: 1rem; +} + +@media (max-width: 768px) { + .carousel-slide { + flex: 0 0 100%; + } +} + diff --git a/client/src/component/NewNavbar/index.js b/client/src/component/NewNavbar/index.js new file mode 100644 index 0000000..add16b2 --- /dev/null +++ b/client/src/component/NewNavbar/index.js @@ -0,0 +1,20 @@ +import React from "react"; +import "./style.css"; +import navigate from "react-router-dom" + + +const NewNavbar = () => { + return
+
+ Portfolio +
+
+
Home
+
Tab 2
+
Collab AI
+ +
+
; +}; + +export default NewNavbar; diff --git a/client/src/component/NewNavbar/style.css b/client/src/component/NewNavbar/style.css new file mode 100644 index 0000000..64cba05 --- /dev/null +++ b/client/src/component/NewNavbar/style.css @@ -0,0 +1,20 @@ +.new-navbar{ + background-color: #000; + width: 100%; + height: 50px; + color: #fff; + display: flex; + align-items: center; + padding: 0 2rem; + font-size: 20px; + position: fixed; +} + +.tabs +{ + display:flex; + justify-content: right; + align-items: center; + gap: 20px; + +} diff --git a/client/src/component/Prompt/NavContentDuplicate.jsx b/client/src/component/Prompt/NavContentDuplicate.jsx index 1d6d972..300c0d3 100644 --- a/client/src/component/Prompt/NavContentDuplicate.jsx +++ b/client/src/component/Prompt/NavContentDuplicate.jsx @@ -33,6 +33,8 @@ import { ThemeContext } from "../../contexts/themeConfig"; import { FaFolderOpen } from "react-icons/fa6"; import { BsFillLayersFill } from "react-icons/bs"; import CommonNavLinks from "../layout/NewSidebar/CommonNavLinks"; +import PortfolioHome from "../../Pages/PortfolioHome"; + const NavContentDuplicate = ({ setChatLog, @@ -107,6 +109,9 @@ const NavContentDuplicate = ({ }, 600), [] ); + const handlePortfolioManagement = () => { + navigate("/portfolio"); + } // Main sidebar end return (
@@ -144,6 +149,15 @@ const NavContentDuplicate = ({ Explore Agents

+
+

+ + Portfolio management +

+
{/*
diff --git a/client/src/component/index.js b/client/src/component/index.js index cde7ca0..9b8e38b 100644 --- a/client/src/component/index.js +++ b/client/src/component/index.js @@ -2,5 +2,6 @@ import Header from "./layout/Header/Header"; import MainContent from "./layout/mainContent/mainContent"; import Footer from "./layout/footer/footer"; import Sidebar from "./layout/Sidebar/Sidebar"; - -export { MainContent, Footer, Header, Sidebar }; +import NewNavbar from "./NewNavbar"; +import HeroBanner from "./HeroBanner"; +export { MainContent, Footer, Header, Sidebar,NewNavbar,HeroBanner }; From e741f529b144a5b35a45182b838949ac68f4491f Mon Sep 17 00:00:00 2001 From: Vivek Paste Date: Tue, 3 Dec 2024 15:58:32 +0530 Subject: [PATCH 03/42] made changes to home page --- client/src/Pages/PortfolioHome/index.jsx | 9 ++- client/src/Pages/PortfolioHome/style.css | 14 ++++ client/src/component/ContentPage/index.jsx | 16 ++++ client/src/component/ContentPage/styles.css | 5 ++ client/src/component/HeroBanner/index.js | 72 ++++++++++------- client/src/component/HeroBanner/script.js | 57 ++++++++++++-- client/src/component/HeroBanner/style.css | 49 ++++++++++-- client/src/component/NewNavbar/style.css | 3 +- client/src/component/ProjectCard/index.jsx | 25 ++++++ client/src/component/ProjectCard/style.css | 63 +++++++++++++++ client/src/component/Projects/index.js | 16 ++++ client/src/component/Projects/style.css | 9 +++ client/src/component/data/projects.json | 85 +++++++++++++++++++++ client/src/component/index.js | 5 +- 14 files changed, 380 insertions(+), 48 deletions(-) create mode 100644 client/src/Pages/PortfolioHome/style.css create mode 100644 client/src/component/ContentPage/index.jsx create mode 100644 client/src/component/ContentPage/styles.css create mode 100644 client/src/component/ProjectCard/index.jsx create mode 100644 client/src/component/ProjectCard/style.css create mode 100644 client/src/component/Projects/index.js create mode 100644 client/src/component/Projects/style.css create mode 100644 client/src/component/data/projects.json diff --git a/client/src/Pages/PortfolioHome/index.jsx b/client/src/Pages/PortfolioHome/index.jsx index 0327484..c727321 100644 --- a/client/src/Pages/PortfolioHome/index.jsx +++ b/client/src/Pages/PortfolioHome/index.jsx @@ -1,11 +1,14 @@ import React from "react"; -import {HeroBanner,NewNavbar} from "../../component"; +import {HeroBanner,NewNavbar,ContentPage} from "../../component"; +import "./style.css" const PortfolioHome = () => { return (
- -

Portfolio Home

+
+
+
+
); }; diff --git a/client/src/Pages/PortfolioHome/style.css b/client/src/Pages/PortfolioHome/style.css new file mode 100644 index 0000000..214df1f --- /dev/null +++ b/client/src/Pages/PortfolioHome/style.css @@ -0,0 +1,14 @@ +.scroll-container { + height: 100vh; + overflow-y: scroll; + scroll-snap-type: y mandatory; + transition: scroll 0.5s ease-in-out; + scroll-behavior: smooth; +} + +.scroll-section { + + scroll-snap-align: start; +} + + diff --git a/client/src/component/ContentPage/index.jsx b/client/src/component/ContentPage/index.jsx new file mode 100644 index 0000000..d1907f7 --- /dev/null +++ b/client/src/component/ContentPage/index.jsx @@ -0,0 +1,16 @@ +import React, { useState } from 'react'; +import "./styles.css" +import Projects from '../Projects'; + +export default function ContentPage() +{ + return ( + +
+

Portfolio

+

This is your portfolio page.

+ +
+ + ); +} \ No newline at end of file diff --git a/client/src/component/ContentPage/styles.css b/client/src/component/ContentPage/styles.css new file mode 100644 index 0000000..5530c31 --- /dev/null +++ b/client/src/component/ContentPage/styles.css @@ -0,0 +1,5 @@ +.container{ + height : 100%; + max-width:1350px; + margin: 0 auto; +} \ No newline at end of file diff --git a/client/src/component/HeroBanner/index.js b/client/src/component/HeroBanner/index.js index 14e246f..c701e31 100644 --- a/client/src/component/HeroBanner/index.js +++ b/client/src/component/HeroBanner/index.js @@ -1,43 +1,59 @@ 'use client' -import React, { useEffect, useState } from "react"; -import typeWriter from './script.js'; -import './style.css'; +import React, { useEffect, useState, useCallback } from "react" +import typeWriter from './script.js' +import './style.css' -const HeroBanner = () => { - const [currentSlide, setCurrentSlide] = useState(0); - const totalSlides = 6; // Increased number of slides for better demonstration +const TOTAL_SLIDES = 6 +const VISIBLE_SLIDES = 3 +const SLIDE_INTERVAL = 2000 - useEffect(() => { - typeWriter(); +export default function HeroBanner() { + const [currentSlide, setCurrentSlide] = useState(0) + + const nextSlide = useCallback(() => { + setCurrentSlide((prevSlide) => (prevSlide + 1) % TOTAL_SLIDES) + }, []) - const carouselInterval = setInterval(() => { - setCurrentSlide((prevSlide) => (prevSlide + 1) % totalSlides); - }, 5000); // Change slide every 5 seconds + useEffect(() => { + const cleanup = typeWriter() + const carouselInterval = setInterval(nextSlide, SLIDE_INTERVAL) return () => { - clearInterval(carouselInterval); - const typingElement = document.getElementById('typing'); - if (typingElement) { - typingElement.innerHTML = ""; - } - }; - }, []); + clearInterval(carouselInterval) + cleanup() + } + }, [nextSlide]) + + const getSlideIndex = (index) => { + return (index + TOTAL_SLIDES) % TOTAL_SLIDES + } return (
-

-
+
+
+ + +

+ | +
+
- {[1, 2, 3, 4, 5, 6].map((index) => ( -
+ {Array.from({ length: TOTAL_SLIDES + VISIBLE_SLIDES }, (_, index) => ( +
-

Portfolio {index}

-

This is a sample portfolio item {index}.

+

Portfolio {getSlideIndex(index) + 1}

+

This is a sample portfolio item {getSlideIndex(index) + 1}.

))} @@ -45,8 +61,6 @@ const HeroBanner = () => {
- ); -}; - -export default HeroBanner; + ) +} diff --git a/client/src/component/HeroBanner/script.js b/client/src/component/HeroBanner/script.js index a45de31..a407913 100644 --- a/client/src/component/HeroBanner/script.js +++ b/client/src/component/HeroBanner/script.js @@ -1,15 +1,56 @@ let i = 0; const text = "Welcome To Portfolio Management"; -const speed = 100; +const typingSpeed = 200; +const pauseDuration = 3000; +let activeTimeout = null; +let isActive = false; export default function typeWriter() { - if (i < text.length) { - document.getElementById("typing").innerHTML += text.charAt(i); - i++; - setTimeout(typeWriter, speed); - } else { + // If already running, clean up first + if (isActive) { + if (activeTimeout) { + clearTimeout(activeTimeout); + } + const typingElement = document.getElementById("typing"); + if (typingElement) { + typingElement.innerHTML = ''; + } i = 0; - document.getElementById("typing").innerHTML = ''; - setTimeout(typeWriter, speed * 2); } + + isActive = true; + const typingElement = document.getElementById("typing"); + if (!typingElement) return; + + function type() { + if (!typingElement || !isActive) return; + + if (i < text.length) { + typingElement.innerHTML += text.charAt(i); + i++; + activeTimeout = setTimeout(type, typingSpeed); + } else { + activeTimeout = setTimeout(() => { + if (typingElement && isActive) { + typingElement.innerHTML = ''; + i = 0; + type(); + } + }, pauseDuration); + } + } + + type(); + + + return () => { + isActive = false; + if (activeTimeout) { + clearTimeout(activeTimeout); + } + if (typingElement) { + typingElement.innerHTML = ''; + } + i = 0; + }; } \ No newline at end of file diff --git a/client/src/component/HeroBanner/style.css b/client/src/component/HeroBanner/style.css index 7b7a707..d309e24 100644 --- a/client/src/component/HeroBanner/style.css +++ b/client/src/component/HeroBanner/style.css @@ -1,7 +1,8 @@ .hero-container { height: 100vh; width: 100%; - background-color: #0e0a0a; + background-color: #070707; + background: radial-gradient(closest-side at left,#0e0a0a,); display: flex; justify-content: center; align-items: center; @@ -12,12 +13,13 @@ flex-direction: column; align-items: center; width: 100%; - max-width: 1200px; - gap:7rem; + max-width: 1350px; + gap: 4rem; + position: relative; } #typing { - font-size: 2rem; + font-size: 4rem; color: #ffffff; min-height: 50px; transition: all 0.4s ease; @@ -28,13 +30,11 @@ .carousel-container { width: 100%; overflow: hidden; - } .carousel-wrapper { display: flex; transition: transform 0.5s ease-in-out; - } .carousel-slide { @@ -67,3 +67,40 @@ } } +.typing-container { + display: flex; + align-items: center; +} + +.cursor { + display: inline-block; + width: 4px; + height: 4rem; + background-color: white; + margin-left: 4px; + margin-bottom:25px; + animation: blink 1s step-end infinite; +} + +@keyframes blink { + from, to { + background-color: transparent; + } + 50% { + background-color: white; + } +} + +.oval-background { + width: 500px; + height: 500px; + background-color:rgb(56, 51, 83); + background-size: 100% 100%; + background-repeat: no-repeat; + border-radius: 50%; + position: absolute; + left:35%; + top:15%; + filter: blur(11.5rem); + } + diff --git a/client/src/component/NewNavbar/style.css b/client/src/component/NewNavbar/style.css index 64cba05..7c109d6 100644 --- a/client/src/component/NewNavbar/style.css +++ b/client/src/component/NewNavbar/style.css @@ -1,13 +1,14 @@ .new-navbar{ background-color: #000; width: 100%; - height: 50px; + height: 70px; color: #fff; display: flex; align-items: center; padding: 0 2rem; font-size: 20px; position: fixed; + z-index: 10000; } .tabs diff --git a/client/src/component/ProjectCard/index.jsx b/client/src/component/ProjectCard/index.jsx new file mode 100644 index 0000000..e1a6213 --- /dev/null +++ b/client/src/component/ProjectCard/index.jsx @@ -0,0 +1,25 @@ +import React from 'react'; +import './style.css'; + +const ProjectCard = ({ project }) => { + return ( +
+ {project.title} +
+

{project.title}

+

{project.description}

+
+ {project.technologies.map((tech, index) => ( + {tech} + ))} +
+ +
+
+ ); +}; + +export default ProjectCard; \ No newline at end of file diff --git a/client/src/component/ProjectCard/style.css b/client/src/component/ProjectCard/style.css new file mode 100644 index 0000000..c2741e5 --- /dev/null +++ b/client/src/component/ProjectCard/style.css @@ -0,0 +1,63 @@ +.project-card { + background: #ffffff; + border-radius: 8px; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); + overflow: hidden; + transition: transform 0.3s ease; + margin: 1rem; + width: 300px; + } + + .project-card:hover { + transform: translateY(-5px); + } + + .project-image { + width: 100%; + height: 200px; + object-fit: cover; + } + + .project-content { + padding: 1.5rem; + } + + .project-content h3 { + margin: 0 0 1rem 0; + color: #333; + } + + .project-content p { + color: #666; + margin-bottom: 1rem; + } + + .technologies { + display: flex; + flex-wrap: wrap; + gap: 0.5rem; + margin-bottom: 1rem; + } + + .tech-tag { + background: #f0f0f0; + padding: 0.25rem 0.5rem; + border-radius: 4px; + font-size: 0.8rem; + color: #555; + } + + .project-links { + display: flex; + gap: 1rem; + } + + .project-links a { + text-decoration: none; + color: #007bff; + font-weight: 500; + } + + .project-links a:hover { + text-decoration: underline; + } \ No newline at end of file diff --git a/client/src/component/Projects/index.js b/client/src/component/Projects/index.js new file mode 100644 index 0000000..3272f50 --- /dev/null +++ b/client/src/component/Projects/index.js @@ -0,0 +1,16 @@ +import React from 'react'; +import ProjectCard from '../ProjectCard'; +import projectsData from '../data/projects.json'; // This path should now work +import './style.css'; + +const Projects = () => { + return ( +
+ {projectsData.projects.map((project) => ( + + ))} +
+ ); +}; + +export default Projects; \ No newline at end of file diff --git a/client/src/component/Projects/style.css b/client/src/component/Projects/style.css new file mode 100644 index 0000000..91d0e39 --- /dev/null +++ b/client/src/component/Projects/style.css @@ -0,0 +1,9 @@ +.projects-container { + display: flex; + flex-wrap: wrap; + justify-content: center; + gap: 2rem; + + max-width: 1350px; + + } \ No newline at end of file diff --git a/client/src/component/data/projects.json b/client/src/component/data/projects.json new file mode 100644 index 0000000..7e80bc3 --- /dev/null +++ b/client/src/component/data/projects.json @@ -0,0 +1,85 @@ +{ + "projects": [ + { + "id": 1, + "title": "E-commerce Website", + "description": "A full-stack e-commerce platform built with React and Node.js", + "image": "https://images.unsplash.com/photo-1563013544-824ae1b704d3", + "technologies": ["React", "Node.js", "MongoDB"], + "github": "https://github.com/yourusername/ecommerce", + "live": "https://your-ecommerce.com" + }, + { + "id": 2, + "title": "Weather App", + "description": "Real-time weather application using OpenWeather API", + "image": "https://images.unsplash.com/photo-1592210454359-9043f067919b", + "technologies": ["React", "API Integration", "CSS"], + "github": "https://github.com/yourusername/weather-app", + "live": "https://your-weather-app.com" + }, + { + "id": 3, + "title": "Task Management System", + "description": "A collaborative task management platform with real-time updates", + "image": "https://images.unsplash.com/photo-1484480974693-6ca0a78fb36b", + "technologies": ["Vue.js", "Firebase", "Tailwind CSS"], + "github": "https://github.com/yourusername/task-manager", + "live": "https://your-taskmanager.com" + }, + { + "id": 4, + "title": "Social Media Dashboard", + "description": "Analytics dashboard for social media metrics visualization", + "image": "https://images.unsplash.com/photo-1551288049-bebda4e38f71", + "technologies": ["React", "D3.js", "Material-UI"], + "github": "https://github.com/yourusername/social-dashboard", + "live": "https://your-dashboard.com" + }, + { + "id": 5, + "title": "Recipe Finder App", + "description": "Mobile-responsive recipe search application with filtering options", + "image": "https://images.unsplash.com/photo-1466637574441-749b8f19452f", + "technologies": ["React Native", "Redux", "Spoonacular API"], + "github": "https://github.com/yourusername/recipe-finder", + "live": "https://your-recipe-app.com" + }, + { + "id": 6, + "title": "Chat Application", + "description": "Real-time chat application with private messaging and group channels", + "image": "https://images.unsplash.com/photo-1611746872915-64382b5c76da", + "technologies": ["Socket.io", "Express.js", "MongoDB"], + "github": "https://github.com/yourusername/chat-app", + "live": "https://your-chat.com" + }, + { + "id": 7, + "title": "Portfolio Website", + "description": "Personal portfolio website with dynamic content management", + "image": "https://images.unsplash.com/photo-1507238691740-187a5b1d37b8", + "technologies": ["Next.js", "Sanity.io", "Framer Motion"], + "github": "https://github.com/yourusername/portfolio", + "live": "https://your-portfolio.com" + }, + { + "id": 8, + "title": "Budget Tracker", + "description": "Personal finance management application with data visualization", + "image": "https://images.unsplash.com/photo-1554224155-6726b3ff858f", + "technologies": ["Angular", "TypeScript", "Chart.js"], + "github": "https://github.com/yourusername/budget-tracker", + "live": "https://your-budget-app.com" + }, + { + "id": 9, + "title": "Fitness Tracking App", + "description": "Workout planning and progress tracking application", + "image": "https://images.unsplash.com/photo-1517836357463-d25dfeac3438", + "technologies": ["React", "Node.js", "PostgreSQL"], + "github": "https://github.com/yourusername/fitness-tracker", + "live": "https://your-fitness-app.com" + } + ] +} \ No newline at end of file diff --git a/client/src/component/index.js b/client/src/component/index.js index 9b8e38b..4af3a22 100644 --- a/client/src/component/index.js +++ b/client/src/component/index.js @@ -4,4 +4,7 @@ import Footer from "./layout/footer/footer"; import Sidebar from "./layout/Sidebar/Sidebar"; import NewNavbar from "./NewNavbar"; import HeroBanner from "./HeroBanner"; -export { MainContent, Footer, Header, Sidebar,NewNavbar,HeroBanner }; +import ContentPage from "./ContentPage"; +import ProjectCard from "./ProjectCard"; +import Projects from "./Projects"; +export { MainContent, Footer, Header, Sidebar,NewNavbar,HeroBanner,ContentPage,ProjectCard,Projects }; From 85709510c98902116a6503d3ed8d4b3960ff16a5 Mon Sep 17 00:00:00 2001 From: Vivek Paste Date: Tue, 3 Dec 2024 18:23:12 +0530 Subject: [PATCH 04/42] added search and sort panel --- client/src/component/ContentPage/index.jsx | 11 +++- client/src/component/ContentPage/styles.css | 73 ++++++++++++++++++++- client/src/component/ProjectCard/style.css | 2 +- 3 files changed, 82 insertions(+), 4 deletions(-) diff --git a/client/src/component/ContentPage/index.jsx b/client/src/component/ContentPage/index.jsx index d1907f7..90a88d6 100644 --- a/client/src/component/ContentPage/index.jsx +++ b/client/src/component/ContentPage/index.jsx @@ -7,8 +7,17 @@ export default function ContentPage() return (
-

Portfolio

+

Portfolio

+
+

This is your portfolio page.

+ + +
+
diff --git a/client/src/component/ContentPage/styles.css b/client/src/component/ContentPage/styles.css index 5530c31..2ed9523 100644 --- a/client/src/component/ContentPage/styles.css +++ b/client/src/component/ContentPage/styles.css @@ -1,5 +1,74 @@ .container{ height : 100%; max-width:1350px; - margin: 0 auto; -} \ No newline at end of file + padding:35px 0; + +} + +.panel{ + display:flex; + margin-top:100px; + gap:3rem; +} +/* The switch - the box around the slider */ +.switch { + position: relative; + display: inline-block; + width: 60px; + height: 34px; + } + + /* Hide default HTML checkbox */ + .switch input { + opacity: 0; + width: 0; + height: 0; + } + + /* The slider */ + .slider { + position: absolute; + cursor: pointer; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: #ccc; + -webkit-transition: .4s; + transition: .4s; + } + + .slider:before { + position: absolute; + content: ""; + height: 26px; + width: 26px; + left: 4px; + bottom: 4px; + background-color: white; + -webkit-transition: .4s; + transition: .4s; + } + + input:checked + .slider { + background-color: #2196F3; + } + + input:focus + .slider { + box-shadow: 0 0 1px #2196F3; + } + + input:checked + .slider:before { + -webkit-transform: translateX(26px); + -ms-transform: translateX(26px); + transform: translateX(26px); + } + + /* Rounded sliders */ + .slider.round { + border-radius: 34px; + } + + .slider.round:before { + border-radius: 50%; + } \ No newline at end of file diff --git a/client/src/component/ProjectCard/style.css b/client/src/component/ProjectCard/style.css index c2741e5..ff182a7 100644 --- a/client/src/component/ProjectCard/style.css +++ b/client/src/component/ProjectCard/style.css @@ -5,7 +5,7 @@ overflow: hidden; transition: transform 0.3s ease; margin: 1rem; - width: 300px; + width: 350px; } .project-card:hover { From 86621c7b8172caec5f745c89a792dbbc70a067e9 Mon Sep 17 00:00:00 2001 From: 2014026-lukepro <145370492+2014026-lukepro@users.noreply.github.com> Date: Sat, 7 Dec 2024 19:37:05 +0530 Subject: [PATCH 05/42] add podinfo and clientinfo --- client/package.json | 4 +- client/src/App.js | 5 +- .../ClientInfo/ClientInfo.scss | 958 ++++++++++++++++++ .../PortfolioManagement/ClientInfo/index.jsx | 323 ++++++ .../PortfolioManagement/PodInfo/Index.jsx | 272 +++++ .../PortfolioManagement/PodInfo/PodInfo.scss | 926 +++++++++++++++++ client/src/component/ClientInfo/Avatar.jsx | 25 + client/src/component/ClientInfo/Badge.jsx | 9 + client/src/component/ClientInfo/Button.jsx | 13 + client/src/component/ClientInfo/Cards.jsx | 22 + client/src/component/ClientInfo/Input.jsx | 11 + .../component/ClientInfo/MilestoneCard.jsx | 20 + .../src/component/ClientInfo/ProjectCard.jsx | 48 + .../src/component/ClientInfo/ReviewCard.jsx | 36 + client/src/component/ClientInfo/SearchBar.jsx | 24 + client/src/component/ClientInfo/Tabs.jsx | 23 + client/src/component/PodInfo/PodCard.jsx | 39 + client/src/component/PodInfo/ProjectCard.jsx | 47 + client/src/component/PodInfo/SearchBar.jsx | 16 + .../src/component/PodInfo/TeamMemberCard.jsx | 24 + client/src/component/PodInfo/TeamModal.jsx | 160 +++ .../component/Prompt/NavContentDuplicate.css | 44 +- .../component/Prompt/NavContentDuplicate.jsx | 33 + client/src/contexts/sortTeamMembers.js | 19 + server/config.js | 2 +- server/config/db.js | 40 +- 26 files changed, 3119 insertions(+), 24 deletions(-) create mode 100644 client/src/Pages/PortfolioManagement/ClientInfo/ClientInfo.scss create mode 100644 client/src/Pages/PortfolioManagement/ClientInfo/index.jsx create mode 100644 client/src/Pages/PortfolioManagement/PodInfo/Index.jsx create mode 100644 client/src/Pages/PortfolioManagement/PodInfo/PodInfo.scss create mode 100644 client/src/component/ClientInfo/Avatar.jsx create mode 100644 client/src/component/ClientInfo/Badge.jsx create mode 100644 client/src/component/ClientInfo/Button.jsx create mode 100644 client/src/component/ClientInfo/Cards.jsx create mode 100644 client/src/component/ClientInfo/Input.jsx create mode 100644 client/src/component/ClientInfo/MilestoneCard.jsx create mode 100644 client/src/component/ClientInfo/ProjectCard.jsx create mode 100644 client/src/component/ClientInfo/ReviewCard.jsx create mode 100644 client/src/component/ClientInfo/SearchBar.jsx create mode 100644 client/src/component/ClientInfo/Tabs.jsx create mode 100644 client/src/component/PodInfo/PodCard.jsx create mode 100644 client/src/component/PodInfo/ProjectCard.jsx create mode 100644 client/src/component/PodInfo/SearchBar.jsx create mode 100644 client/src/component/PodInfo/TeamMemberCard.jsx create mode 100644 client/src/component/PodInfo/TeamModal.jsx create mode 100644 client/src/contexts/sortTeamMembers.js diff --git a/client/package.json b/client/package.json index 6535b44..e5f2835 100644 --- a/client/package.json +++ b/client/package.json @@ -17,6 +17,9 @@ "bootstrap-icons": "^1.9.1", "browserify-zlib": "^0.2.0", "dompurify": "^3.0.9", + "embla-carousel-autoplay": "^8.5.1", + "embla-carousel-react": "^8.5.1", + "react-icons": "^4.12.0", "framer-motion": "^11.0.8", "gapi-script": "^1.2.0", "google-auth-library": "^9.11.0", @@ -37,7 +40,6 @@ "react-google-login": "^5.2.2", "react-google-picker": "^0.1.0", "react-hot-toast": "^2.4.0", - "react-icons": "^4.4.0", "react-infinite-scroll-component": "^6.1.0", "react-router-dom": "^6.3.0", "react-scripts": "^5.0.1", diff --git a/client/src/App.js b/client/src/App.js index e79ae1c..5a60666 100644 --- a/client/src/App.js +++ b/client/src/App.js @@ -39,7 +39,8 @@ import { IntegrateApplications } from "./component/IntegrateApplications/Integra // import { IntegrateApplications } from "./component/Assistant/IntegrateApplications/IntegrateApplications"; import ConnectionWithWorkboard from "./Pages/configration/ConnectionWithWorkboard"; - +import ClientInfo from "./Pages/PortfolioManagement/ClientInfo"; +import PodInfo from "./Pages/PortfolioManagement/PodInfo/Index"; function App() { // Hook to get the current location const location = useLocation(); @@ -55,6 +56,8 @@ function App() { } /> } /> } /> + } /> + } /> {/* For connecting workboard */} } /> diff --git a/client/src/Pages/PortfolioManagement/ClientInfo/ClientInfo.scss b/client/src/Pages/PortfolioManagement/ClientInfo/ClientInfo.scss new file mode 100644 index 0000000..9d66796 --- /dev/null +++ b/client/src/Pages/PortfolioManagement/ClientInfo/ClientInfo.scss @@ -0,0 +1,958 @@ +/* General Styles */ +.portfolio-page { + max-width: 1350px; + + margin-left: auto; + margin-right: auto; + padding-left: 1rem; + padding-right: 1rem; + padding-top: 2rem; + padding-bottom: 2rem; + background-color: black; + color: black; + height: 955px; +} + +/* Profile Section */ +.profile-section { + display: flex; + flex-direction: column; + align-items: flex-start; + gap: 2rem; + margin-bottom: 3rem; +} + +.profile-avatar { + width: 8rem; + height: 8rem; +} + +.profile-info { + flex: 1; + display: flex; + flex-direction: column; + gap: 1rem; +} + +.profile-header { + display: flex; + align-items: center; + gap: 0.75rem; +} + +.profile-name { + font-size: 1.875rem; + line-height: 2.25rem; + font-weight: 700; + color:#E5E7EB; +} + +.profile-badge { + background-color: #DBEAFE; + color: #1D4ED8; +} + +.profile-title { + color:#E5E7EB; +} + +.profile-location { + font-size: 0.775rem; + line-height: 1.25rem; + color:#E5E7EB; + +} + +.profile-actions { + display: flex; + gap: 0.75rem; +} + +.follow-button { + background-color: black; + color: white; +} + +.follow-button:hover { + background-color: #1F2937; +} + +.contact-button { + border: 1px solid black; + color: black; +} + +.contact-button:hover { + background-color: #F3F4F6; +} + +.profile-stats { + display: flex; + gap: 2rem; +} + +.stat { + text-align: center; +} + +.stat-value { + font-weight: 700; +} + +.stat-label { + font-size: 0.875rem; + line-height: 1.25rem; + color: #6B7280; +} + +/* Stats Grid */ +.stats-grid { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 1rem; + margin-bottom: 2rem; +} + +.stat-card { + background-color: black; + color: white; + border-radius:25px; +} + +.stat-header { + display: flex; + + gap: 0.5rem; +} + +.stat-icon { + width: 1rem; + height: 1rem; +} + +.stat-title { + font-size: 0.875rem; + line-height: 1.25rem; + font-weight: 500; +} + +.stat-value { + font-size: 1.5rem; + line-height: 2rem; + font-weight: 700; +} + +/* Tabs */ +.tabs1 { + display: flex; + flex-direction: column; + gap: 1rem; +} + +.tabs-list { + display: flex; + gap: 1rem; + border-bottom: 1px solid #E5E7EB; +} + +.tabs-trigger { + padding: 0.8rem 2rem; + font-size: 0.875rem; + line-height: 1.25rem; + font-weight: 900; + transition: color 0.2s; + border-radius: 10px; + margin-bottom: 20px; +} + +.tabs-trigger.active { + border-bottom: 7px solid #e80202; + color:rgb(255, 255, 255); + background-color: black; + +} + +.tabs-content { + margin-top: 1rem; +} + +.tabs-content:not(.active) { + display: none; +} + +/* Search Section */ +.search-section { + margin-bottom: 1rem; + background-color: rgb(0, 0, 0); + color: white; +} + +.search-form { + display: flex; + gap: 0.5rem; + +} + +.search-input { + flex-grow: 1; + background-color: rgb(0, 0, 0); + color: white; +} + +.search-button { + background-color: rgb(0, 0, 0); + color: white; +} + +.search-icon { + width: 1rem; + height: 1rem; +} + +.search-history { + display: flex; + flex-wrap: wrap; + gap: 0.5rem; + margin-top: 0.5rem; +} + +.history-badge { + background-color: #E5E7EB; + color: #374151; +} + +.remove-history { + margin-left: 0.5rem; + color: #6B7280; +} + +.remove-history:hover { + color: #374151; +} + +.remove-icon { + width: 0.75rem; + height: 0.75rem; +} + +/* Projects Carousel */ +.projects-carousel { + overflow: hidden; +} + +.projects-container { + display: flex; +} + +.project-slide { + flex: 0 0 33.33%; + min-width: 0; + padding: 0 0.5rem; +} + +.project-card { + overflow: hidden; +} + +.project-image-container { + padding: 0; +} + +.project-image-wrapper { + position: relative; +} + +.project-image { + width: 100%; + aspect-ratio: 3 / 2; + object-fit: cover; + transition: transform 0.2s; +} + +.project-card:hover .project-image { + transform: scale(1.05); +} + +.project-image-overlay { + position: absolute; + inset: 0; + background-image: linear-gradient(to top, rgba(0, 0, 0, 0.6), transparent); + opacity: 0; + transition: opacity 0.2s; +} + +.project-card:hover .project-image-overlay { + opacity: 1; +} + +.project-info { + padding: 1rem; +} + +.project-details { + flex: 1; +} + +.project-title { + font-weight: 800; + color:white; +} + +.project-category { + font-size: 0.875rem; + line-height: 1.25rem; + color: #6B7280; +} + +.project-stats { + display: flex; + align-items: center; + gap: 0.75rem; + font-size: 0.875rem; + line-height: 1.25rem; +} + +.project-stat { + display: flex; + align-items: center; + gap: 0.25rem; + color:#D1D5DB; + padding-bottom: 10px; +} + +/* Reviews Carousel */ +.reviews-carousel { + overflow: hidden; +} + +.reviews-container { + display: flex; + + margin-bottom: 1rem; + +} + +.review-slide { + flex: 0 0 33.33%; + min-width: 0; + padding: 0 0.5rem; +} + +.review-card { + height: 100%; +} + +.review-content { + padding: 1rem; + display: flex; + flex-direction: column; + gap: 2rem; +} + +.reviewer-info { + display: flex; + align-items: center; + gap: 1rem; +} + +.reviewer-avatar { + width: 2.5rem; + height: 2.5rem; +} + +.reviewer-name { + color:white; + font-weight: 600; +} + +.review-headline { + font-size: 0.875rem; + line-height: 1.25rem; + color: #999ca0; +} + +.review-comment { + font-size: 0.875rem; + line-height: 1.25rem; + color: #D1D5DB; +} + +.review-rating { + display: flex; + align-items: center; +} + +.star-icon { + width: 2rem; + height: 3rem; +} + +.star-icon.filled { + color: #FBBF24; +} + +.star-icon.empty { + color: #D1D5DB; +} + +/* Milestones Carousel */ +.milestones-carousel { + overflow: hidden; +} + +.milestones-container { + display: flex; + margin-bottom: 1rem; +} + +.milestone-slide { + flex: 0 0 33.33%; + min-width: 0; + padding: 0 0.5rem; +} + +.milestone-card { + height: 100%; +} + +.milestone-content { + padding: 1rem; + display: flex; + flex-direction: column; + gap: 1rem; +} + +.milestone-title { + font-weight: 600; + color:white; +} + +.milestone-description { + font-size: 0.875rem; + line-height: 1.25rem; + color: #bcbcbc; +} + +.milestone-status { + display: flex; + align-items: center; + gap: 0.5rem; +} + +.status-completed { + background-color: #D1FAE5; + color: #047857; +} + + +.status-pending { + background-color: yellow; + color: #000306; +} + +.milestone-owner { + font-size: 0.75rem; + line-height: 1rem; + color: #6B7280; +} + +/* Responsive Design */ +@media (min-width: 768px) { + .profile-section { + flex-direction: row; + } + + .stats-grid { + grid-template-columns: repeat(4, minmax(0, 1fr)); + } +} + +/* Component Styles */ +.badge { + display: inline-flex; + align-items: center; + border-radius: 9999px; + padding: 0.5rem 0.625rem; + font-size: 0.75rem; + line-height: 1rem; + font-weight: 500; +} + +.button { + display: inline-flex; + align-items: center; + justify-content: center; + border-radius: 0.375rem; + font-size: 0.875rem; + line-height: 1.25rem; + font-weight: 500; + padding: 0.5rem 1rem; + transition: background-color 0.2s, color 0.2s; +} + +.button:focus-visible { + outline: 2px solid transparent; + outline-offset: 2px; + box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.5); +} + +.button:disabled { + opacity: 0.5; + pointer-events: none; +} + +.cards { + border-radius: 0.5rem; + border: 1px solid #E5E7EB; + background-color: white; + color: #1F2937; + box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06); +} +.cardss { + + border-radius: 0.5rem; + border: 1px solid #E5E7EB; + background-color: rgba(255, 255, 255, 0.1); + color: #1F2937; + box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06); +} + +.card-content { + padding: 1.5rem; +} + +.card-footer { + display: flex; + align-items: center; + padding: 1.5rem; + padding-top: 0; +} + +.input { + display: flex; + height: 2.5rem; + width: 100%; + border-radius: 0.375rem; + border: 1px solid #D1D5DB; + background-color: transparent; + padding: 0.5rem 0.75rem; + font-size: 0.875rem; + line-height: 1.25rem; +} + +.input:focus-visible { + outline: 2px solid transparent; + outline-offset: 2px; + box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.5); +} + +.input:disabled { + opacity: 0.5; + cursor: not-allowed; +} + +.avatar { + position: relative; + display: flex; + height: 150px; + width: 150px; + flex-shrink: 0; + overflow: hidden; + border-radius: 9999px; +} +.avatars { + position: relative; + display: flex; + height: 4.5rem; + width: 4.5rem; + flex-shrink: 0; + overflow: hidden; + border-radius: 9999px; +} + +.avatar-image { + aspect-ratio: 1 / 1; + height: 100%; + width: 100%; +} + +.avatar-fallback { + display: flex; + height: 100%; + width: 100%; + align-items: center; + justify-content: center; + background-color: #F3F4F6; +} + + + + + + + + + +/* Overall container styles */ +.technical-stack { + padding: 20px; + color: white; /* Make "Tech Stack:" text white */ + font-size: 16px; + font-weight: bold; + display: flex; + align-items: center; + flex-wrap: wrap; +} + +/* Container for the icons */ +.tech-stack-icons { + display: flex; + gap: 15px; /* Space between tech items */ + margin-left: 10px; /* Add a little space between "Tech Stack:" and icons */ +} + +/* Each tech stack item styled like a button */ +.tech-item { + background-color: white; + color: black; + padding: 8px 16px; + border: 1px solid #ccc; + border-radius: 5px; + font-size: 14px; + font-weight: 500; + cursor: pointer; + transition: transform 0.2s ease, box-shadow 0.2s ease; +} + +/* Hover effect for tech items */ +.tech-item:hover { + transform: scale(1.05); + box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.1); +} + +/* Responsive adjustments */ +@media (max-width: 768px) { + .technical-stack { + flex-direction: column; + align-items: flex-start; + } + + .tech-stack-icons { + margin-top: 10px; + } +} +.description { + + color: #c8cbce; + margin: 0 0 1rem 0; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + overflow: hidden; +} + + + + + + +/* Tech stack styling */ +.tech-stack { + text-align: center; +} + +.tech-stack-title { + font-size: 18px; + font-weight: bold; + color: white; + margin-bottom: 10px; +} + +/* Tech stack items styled as buttons */ +.tech-stack-icons { + display: flex; + justify-content: center; + flex-wrap: wrap; + gap: 15px; +} + +.tech-item { + background-color: white; + color: black; + padding: 8px 16px; + border-radius: 5px; + font-size: 14px; + font-weight: 500; + border: 1px solid #ccc; + cursor: pointer; + transition: transform 0.2s, box-shadow 0.2s; +} + +.tech-item:hover { + transform: scale(1.05); + box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.1); +} + +.tabs-trigger:hover { + background-color: #000000; + color: white; +} + +.buttons.milestones:hover { + background-color: #28a745; + color: white; +} + +.buttons.reviews:hover { + background-color: #dc3545; + color: white; +} + +/* Mobile styles (default) */ +.profile-section { + flex-direction: column; + align-items: center; +} + +.stats-grid { + grid-template-columns: repeat(2, 1fr); +} + +.project-slide, +.review-slide, +.milestone-slide { + flex: 0 0 100%; +} + +/* Tablet styles */ +@media (min-width: 768px) and (max-width: 1023px) { + .profile-section { + flex-direction: row; + align-items: flex-start; + } + + .stats-grid { + grid-template-columns: repeat(2, 1fr); + } + + .project-slide, + .review-slide, + .milestone-slide { + flex: 0 0 50%; + } +} + +/* Desktop styles */ +@media (min-width: 1024px) { + .profile-section { + flex-direction: row; + align-items: flex-start; + } + + .stats-grid { + grid-template-columns: repeat(4, 1fr); + } + + .project-slide, + .review-slide, + .milestone-slide { + flex: 0 0 33.33%; + } +} + +/* Ensure content is scrollable if it exceeds max-height */ +@media (min-height: 1005px) { + .portfolio-page { + height: 1005px; + overflow-y: auto; + } +} + +/* Responsive font sizes */ +@media (max-width: 767px) { + .profile-name { + font-size: 1.5rem; + } + + .stat-value { + font-size: 1.25rem; + } +} + +/* Ensure images and cards don't overflow */ +.project-image, +.cards, +.cardss { + max-width: 100%; + height: auto; +} +/* Avatar Styles */ +.w-32 { + width: 8rem; +} + +.h-32 { + height: 8rem; +} + +.shrink-0 { + flex-shrink: 0; +} + +/* Button Styles */ +.inline-flex { + display: inline-flex; +} + +.shadow-sm { + --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); + --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} + +.focus-visible\:outline-none:focus-visible { + outline: 2px solid transparent; + outline-offset: 2px; +} + +.focus-visible\:ring-2:focus-visible { + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); +} + +.focus-visible\:ring-ring:focus-visible { + --tw-ring-color: hsl(var(--ring)); +} + +.focus-visible\:ring-offset-2:focus-visible { + --tw-ring-offset-width: 2px; +} + +.disabled\:opacity-50:disabled { + opacity: 0.5; +} + +.disabled\:pointer-events-none:disabled { + pointer-events: none; +} + +/* Tab Styles */ +.border-b { + border-bottom-width: 1px; +} + +.border-b-2 { + border-bottom-width: 2px; +} + +.border-primary { + --tw-border-opacity: 1; + border-color: hsl(var(--primary) / var(--tw-border-opacity)); +} + +/* Input Styles */ +.ring-offset-background { + --tw-ring-offset-color: hsl(var(--background)); +} + +.file\:border-0::file-selector-button { + border-width: 0px; +} + +.file\:bg-transparent::file-selector-button { + background-color: transparent; +} + +.file\:text-sm::file-selector-button { + font-size: 0.875rem; + line-height: 1.25rem; +} + +.file\:font-medium::file-selector-button { + font-weight: 500; +} + +.placeholder\:text-muted-foreground::placeholder { + color: hsl(var(--muted-foreground)); +} + +/* Card Styles */ +.shadow-sm { + --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); + --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} + +/* Embla Carousel Styles */ +.embla { + overflow: hidden; +} + +.embla__container { + display: flex; +} + +.embla__slide { + flex: 0 0 100%; + min-width: 0; +} + +/* Star Rating Styles */ +.text-yellow-400 { + --tw-text-opacity: 1; + color: rgb(250 204 21 / var(--tw-text-opacity)); +} + +.text-gray-300 { + --tw-text-opacity: 1; + color: rgb(209 213 219 / var(--tw-text-opacity)); +} + +/* Milestone Status Styles */ +.bg-green-100 { + --tw-bg-opacity: 1; + background-color: rgb(220 252 231 / var(--tw-bg-opacity)); +} + +.text-green-700 { + --tw-text-opacity: 1; + color: rgb(21 128 61 / var(--tw-text-opacity)); +} + +/* Additional Utility Classes */ +.aspect-square { + aspect-ratio: 1 / 1; +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; +} + +.pointer-events-none { + pointer-events: none; +} + + + +.whitespace-nowrap { + white-space: nowrap; +} + +.break-words { + overflow-wrap: break-word; +} + +.truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} \ No newline at end of file diff --git a/client/src/Pages/PortfolioManagement/ClientInfo/index.jsx b/client/src/Pages/PortfolioManagement/ClientInfo/index.jsx new file mode 100644 index 0000000..3f71b49 --- /dev/null +++ b/client/src/Pages/PortfolioManagement/ClientInfo/index.jsx @@ -0,0 +1,323 @@ +import React, { useState, useEffect, useCallback } from "react"; +import { FaCode, FaDollarSign, FaFileAlt, FaBullseye } from "react-icons/fa"; +import useEmblaCarousel from 'embla-carousel-react'; +import Autoplay from 'embla-carousel-autoplay'; +import Badge from '../../../component/ClientInfo/Badge'; +import { Cards, CardContent } from '../../../component/ClientInfo/Cards'; +import { Avatar } from '../../../component/ClientInfo/Avatar'; +import { Tabs, TabsList, TabsTrigger, TabsContent } from '../../../component/ClientInfo/Tabs'; +import ReviewCard from '../../../component/ClientInfo/ReviewCard'; +import SearchBar from '../../../component/ClientInfo/SearchBar'; +import MilestoneCard from '../../../component/ClientInfo/MilestoneCard'; +import ProjectCard from '../../../component/ClientInfo/ProjectCard'; +import "./ClientInfo.scss"; + +const projects = [ + { + id: 1, + title: "VPN Mobile App", + Description: "Mobile UI Research", + image: "https://picsum.photos/600/400?random=1", + Team: "Avengers", + techStack: ["React Native", "Node.js", "Express"], + github: "https://github.com/guptapriya24/react-weather-app", + live: "https://weather-app-demo.netlify.app", + }, + { + id: 2, + title: "Property Dashboard", + Description: "Web Interface", + image: "https://picsum.photos/600/400?random=2", + Team: "Avengers", + techStack: ["React", "Redux", "Material-UI"], + github: "https://github.com/guptapriya24/react-weather-app", + live: "https://weather-app-demo.netlify.app", + }, + { + id: 3, + title: "Healthcare Mobile App", + Description: "Mobile UI Branding", + image: "https://picsum.photos/600/400?random=3", + Team: "Avengers", + techStack: ["Flutter", "Firebase", "GraphQL"], + github: "https://github.com/guptapriya24/react-weather-app", + live: "https://weather-app-demo.netlify.app", + }, + { + id: 4, + title: "E-commerce Platform", + Description: "Web Development", + image: "https://picsum.photos/600/400?random=4", + Team: "Avengers", + techStack: ["Next.js", "Stripe", "MongoDB"], + github: "https://github.com/guptapriya24/react-weather-app", + live: "https://weather-app-demo.netlify.app", + }, + { + id: 5, + title: "Fitness Tracking App", + Description: "Mobile Development", + image: "https://picsum.photos/600/400?random=5", + Team: "Avengers", + techStack: ["React Native", "Redux", "Firebase"], + github: "https://github.com/guptapriya24/react-weather-app", + live: "https://weather-app-demo.netlify.app", + }, + { + id: 6, + title: "Social Media Dashboard", + Description: "Web Analytics", + image: "https://picsum.photos/600/400?random=6", + Team: "Avengers", + techStack: ["Vue.js", "D3.js", "Node.js"], + github: "https://github.com/guptapriya24/react-weather-app", + live: "https://weather-app-demo.netlify.app", + }, +]; + +const reviews = [ + { id: 1, headline: "Amazing Project!", reviewer: "John Doe", comment: "Very well executed.", rating: 5, reviewerImage: "https://picsum.photos/50" }, + { id: 2, headline: "Great Work", reviewer: "Jane Smith", comment: "Great design and functionality!", rating: 4, reviewerImage: "/placeholder.svg?height=50&width=50" }, + { id: 3, headline: "Highly Recommended", reviewer: "Michael Lee", comment: "Fantastic work!", rating: 5, reviewerImage: "/placeholder.svg?height=50&width=50" }, + { id: 4, headline: "Outstanding Design", reviewer: "Emily Chen", comment: "Exceeded my expectations!", rating: 5, reviewerImage: "/placeholder.svg?height=50&width=50" }, + { id: 5, headline: "Efficient and Reliable", reviewer: "David Wang", comment: "Great communication throughout the project.", rating: 4, reviewerImage: "/placeholder.svg?height=50&width=50" }, + { id: 6, headline: "Impressive Results", reviewer: "Sarah Johnson", comment: "Delivered on time and with high quality.", rating: 5, reviewerImage: "/placeholder.svg?height=50&width=50" }, +]; + +const milestones = [ + { id: 1, title: "Project Kickoff", description: "Initial planning and requirements gathering", status: [{ title: "Completed", owner: "Team", completed: true }] }, + { id: 2, title: "Design Phase", description: "Creating wireframes and mockups", status: [{ title: "In Progress", owner: "Designer", completed: false }] }, + { id: 3, title: "Development Sprint 1", description: "Core functionality implementation", status: [{ title: "Pending", owner: "Developers", completed: false }] }, + { id: 4, title: "User Testing", description: "Gathering feedback from beta users", status: [{ title: "Not Started", owner: "QA Team", completed: false }] }, + { id: 5, title: "Final Delivery", description: "Project handover and documentation", status: [{ title: "Not Started", owner: "Project Manager", completed: false }] }, + { id: 6, title: "Post-Launch Support", description: "Monitoring and bug fixes", status: [{ title: "Not Started", owner: "Support Team", completed: false }] }, +]; + +const PortfolioPage = () => { + const [activeTab, setActiveTab] = useState("work"); + const [searchQuery, setSearchQuery] = useState(""); + const [filteredProjects, setFilteredProjects] = useState(projects); + const [searchHistory, setSearchHistory] = useState([]); + + const [projectsEmblaRef, projectsEmblaApi] = useEmblaCarousel({ loop: true }, [Autoplay()]); + const [reviewsEmblaRef, reviewsEmblaApi] = useEmblaCarousel({ loop: true }, [Autoplay()]); + const [milestonesEmblaRef, milestonesEmblaApi] = useEmblaCarousel({ loop: true }, [Autoplay()]); + + const handleSearchSubmit = (e) => { + e.preventDefault(); + const trimmedQuery = searchQuery.trim().toLowerCase(); + if (trimmedQuery) { + const filtered = projects.filter((project) => + project.title.toLowerCase().includes(trimmedQuery) || + project.Description.toLowerCase().includes(trimmedQuery) || + project.Team.toLowerCase().includes(trimmedQuery) + ); + setFilteredProjects(filtered); + setSearchHistory((prev) => [...new Set([trimmedQuery, ...prev])].slice(0, 5)); + } else { + setFilteredProjects(projects); + } + }; + + const clearSearch = useCallback(() => { + setSearchQuery(""); + setFilteredProjects(projects); + setSearchHistory([]); + }, []); + + useEffect(() => { + if (searchQuery === "") { + setFilteredProjects(projects); + } + }, [searchQuery]); + + const stats = [ + { title: "Projects", value: 5, icon: FaCode }, + { title: "Total Revenue", value: 10000, prefix: "$", icon: FaDollarSign }, + { title: "Invoices", value: 25, icon: FaFileAlt }, + { title: "Milestones", value: 7, icon: FaBullseye }, + ]; + + const [currentProjectPage, setCurrentProjectPage] = useState(1); + const itemsPerPage = 3; + const projectPageCount = Math.ceil(filteredProjects.length / itemsPerPage); + const currentProjects = filteredProjects.slice( + (currentProjectPage - 1) * itemsPerPage, + currentProjectPage * itemsPerPage + ); + + const [currentReviewPage, setCurrentReviewPage] = useState(1); + const ReviewPageCount = Math.ceil(reviews.length / itemsPerPage); + const currentreviews = reviews.slice( + (currentReviewPage - 1) * itemsPerPage, + currentReviewPage * itemsPerPage + ); + + const [currentmilestonePage, setCurrentmilestonePage] = useState(1); + const milestonePageCount = Math.ceil(milestones.length / itemsPerPage); + const currentmilestone = milestones.slice( + (currentmilestonePage - 1) * itemsPerPage, + currentmilestonePage * itemsPerPage + ); + + return ( +
+
+ + +
+
+

Irene Brooks

+ Pro +
+ +

Interface and Brand Designer

+

based in San Antonio

+
+ +
+
+ {stats.map(({ title, value, prefix, icon: Icon }) => ( + + +
+ +

{title}

+
+

+ {prefix}{value.toLocaleString()} +

+
+
+ ))} +
+ +
+

Tech Stack:

+
+ React + Node.jsNode.js + JavaScript +
+
+
+
+ + + + setActiveTab("work")} + > + Work + + setActiveTab("reviews")} + > + Reviews + + setActiveTab("milestones")} + > + Milestones + + + + + +
+
+ {currentProjects.map((project) => ( +
+ +
+ ))} +
+
+ + {currentProjectPage} of {projectPageCount} + +
+
+
+ + +
+
+ {currentreviews.map((review) => ( +
+ +
+ ))} +
+
+ + {currentReviewPage} of {ReviewPageCount} + +
+
+
+ + +
+
+ {currentmilestone.map((milestone) => ( +
+ +
+ ))} +
+
+ + {currentmilestonePage} of {milestonePageCount} + +
+
+
+
+
+ ); +} + +export default PortfolioPage; \ No newline at end of file diff --git a/client/src/Pages/PortfolioManagement/PodInfo/Index.jsx b/client/src/Pages/PortfolioManagement/PodInfo/Index.jsx new file mode 100644 index 0000000..f112455 --- /dev/null +++ b/client/src/Pages/PortfolioManagement/PodInfo/Index.jsx @@ -0,0 +1,272 @@ +import { useState } from 'react' +import './PodInfo.scss' +import { TeamModal } from '../../../component/PodInfo/TeamModal' +import { PodCard } from '../../../component/PodInfo/PodCard' +import { sortTeamMembers } from '../../../contexts/sortTeamMembers' +import { SearchBar } from '../../../component/PodInfo/SearchBar' +import { FaSearch} from "react-icons/fa"; +const teamMembers = [ + { + id: 1, + name: "Lola Meyers", + email: "lola.m@company.com", + jobTitle: "Project Manager", + experience: 5, + description: "Experienced PM leading product strategy and innovation.", + imageUrl: "https://picsum.photos/400/300?random=1", + pods: ["Avengers Pod", "Business Development Pod"], + skills: { "Product Management": 3, "Agile": 5, "User Research": 2 }, + isActive: true + }, + { + id: 2, + name: "Owen Garcia", + email: "owen.g@company.com", + jobTitle: "Senior Developer", + experience: 7, + description: "Frontend expert specializing in React and Next.js.", + imageUrl: "https://picsum.photos/400/300?random=2", + pods: ["Dev Squad Pod", "Algo Pod"], + skills: { "React": 10, "Next.js": 8, "TypeScript": 6 }, + isActive: false + }, + { + id: 3, + name: "Caitlyn King", + email: "caitlyn.k@company.com", + jobTitle: "Team Lead", + experience: 8, + description: "Design team lead with extensive UI/UX experience.", + imageUrl: "https://picsum.photos/400/300?random=3", + pods: ["Avengers Pod"], + skills: { "UI Design": 12, "UX Design": 10, "Figma": 8 }, + isActive: true + }, + { + id: 4, + name: "Ashwin Santiago", + email: "ashwin.s@company.com", + jobTitle: "Assistant Technical Manager", + experience: 10, + description: "Experienced engineering leader from top tech companies.", + imageUrl: "https://picsum.photos/400/300?random=4", + pods: ["Dev Squad Pod"], + skills: { "Team Leadership": 10, "Agile": 8, "System Architecture": 7 }, + isActive: true + }, + { + id: 5, + name: "Ashwin Santiago", + email: "ashwin.s@company.com", + jobTitle: "Assistant Technical Manager", + experience: 10, + description: "Experienced engineering leader from top tech companies.", + imageUrl: "https://picsum.photos/400/300?random=5", + pods: ["Dev Squad Pod"], + skills: { "Team Leadership": 10, "Agile": 8, "System Architecture": 7 }, + isActive: true + }, + { + id: 6, + name: "Ashwin Santiago", + email: "ashwin.s@company.com", + jobTitle: "Assistant Technical Manager", + experience: 1, + description: "Experienced engineering leader from top tech companies.", + imageUrl: "https://picsum.photos/400/300?random=6", + pods: ["Dev Squad Pod"], + skills: { "Team Leadership": 10, "Agile": 8, "System Architecture": 7 }, + isActive: true + }, + { + id: 7, + name: "Ashwin Santiago", + email: "ashwin.s@company.com", + jobTitle: "Assistant Technical Manager", + experience: 8, + description: "Experienced engineering leader from top tech companies.", + imageUrl: "https://picsum.photos/400/300?random=7", + pods: ["Dev Squad Pod"], + skills: { "Team Leadership": 10, "Agile": 8, "System Architecture": 7 }, + isActive: true + }, + { + id: 8, + name: "Sienna Hewitt", + email: "sienna.h@company.com", + jobTitle: "Assistant Manager", + experience: 2, + description: "Seasoned leader with startup and enterprise experience.", + imageUrl: "https://picsum.photos/400/300?random=8", + pods: ["Business Development Pod"], + skills: { "Strategy": 15, "Fundraising": 10, "Team Building": 12 }, + isActive: true + }, + { + id: 9, + name: "Kyla Choi", + email: "kyla.c@company.com", + jobTitle: "Developer", + experience: 3, + description: "UX specialist focusing on user research and testing.", + imageUrl: "https://picsum.photos/400/300?random=9", + pods: ["Avengers Pod"], + skills: { "User Research": 5, "Usability Testing": 4, "Data Analysis": 3 }, + isActive: false + } +] + +const projects = [ + { + id: 1, + name: "Project Alpha", + description: "Developing a new AI-powered chatbot for customer support", + status: "In Progress", + techStack: ["React", "Node.js", "Machine Learning"], + imageUrl: "https://picsum.photos/300/200?random=11", + podName: "Avengers Pod", + github: "https://github.com/guptapriya24/react-weather-app", + live: "https://weather-app-demo.netlify.app", + }, + { + id: 2, + name: "Project Beta", + description: "Redesigning the company's main dashboard for better UX", + status: "In Progress", + techStack: ["Vue.js", "SCSS", "Figma"], + imageUrl: "https://picsum.photos/300/200?random=15", + podName: "Avengers Pod", + github: "https://github.com/guptapriya24/react-weather-app", + live: "https://weather-app-demo.netlify.app", + }, + { + id: 3, + name: "Project Gamma", + description: "Implementing a new microservices architecture", + status: "Pending", + techStack: ["Kubernetes", "Docker", "Spring Boot"], + imageUrl: "https://picsum.photos/300/200?random=14", + podName: "Dev Squad Pod", + github: "https://github.com/guptapriya24/react-weather-app", + live: "https://weather-app-demo.netlify.app", + }, + { + id: 4, + name: "Project Delta", + description: "Optimizing database queries for improved performance", + status: "Completed", + techStack: ["PostgreSQL", "Redis", "AWS"], + imageUrl: "https://picsum.photos/300/200?random=13", + podName: "Algo Pod", + github: "https://github.com/guptapriya24/react-weather-app", + live: "https://weather-app-demo.netlify.app", + }, + { + id: 5, + name: "Project Epsilon", + description: "Developing a new sales strategy for Q4", + status: "In Progress", + techStack: ["Excel", "Power BI", "SQL"], + imageUrl: "https://picsum.photos/300/200?random=12", + podName: "Business Development Pod", + github: "https://github.com/guptapriya24/react-weather-app", + live: "https://weather-app-demo.netlify.app", + }, +]; + + +const pods = [ + { + name: "Avengers Pod", + description: "Core product development and innovation team", + active: 9, + notactive: 2, + members: sortTeamMembers(teamMembers.filter(member => member.pods.includes("Avengers Pod"))), + projects: projects.filter(project => project.podName === "Avengers Pod") + }, + { + name: "Dev Squad Pod", + description: "Frontend and backend development team", + active: 7, + notactive: 3, + members: sortTeamMembers(teamMembers.filter(member => member.pods.includes("Dev Squad Pod"))), + projects: projects.filter(project => project.podName === "Dev Squad Pod") + }, + { + name: "Business Development Pod", + description: "Sales and business strategy team", + active: 5, + notactive: 4, + members: sortTeamMembers(teamMembers.filter(member => member.pods.includes("Business Development Pod"))), + projects: projects.filter(project => project.podName === "Business Development Pod") + }, + { + name: "Algo Pod", + description: "Algorithm and data structure specialists", + active: 6, + notactive: 2, + members: sortTeamMembers(teamMembers.filter(member => member.pods.includes("Algo Pod"))), + projects: projects.filter(project => project.podName === "Algo Pod") + } +] + +const PodInfo = () => { + const [selectedPod, setSelectedPod] = useState(null) + const [isModalOpen, setIsModalOpen] = useState(false) + + const handlePodClick = (pod) => { + console.log('Pod clicked:', pod); + setSelectedPod(pod) + setIsModalOpen(true) + console.log('isModalOpen set to:', true); + } + const [searchTerm, setSearchTerm] = useState('') + + const handleSearchChange = (event) => { + setSearchTerm(event.target.value) + } + + const filteredPods = pods.filter(pod => + pod.name.toLowerCase().includes(searchTerm.toLowerCase()) + ) + return ( +
+
+

+ Team Pods Overview +

+

+ Cross-functional teams working together to achieve our goals +

+
+
+ + +
+
+
+ {filteredPods.map((pods, index) => ( + handlePodClick(pods)} /> + ))} +
+
+ + {isModalOpen && selectedPod && ( + console.log('Rendering TeamModal'), + setIsModalOpen(false)} + /> + )} +
+ ) +} + +export default PodInfo + diff --git a/client/src/Pages/PortfolioManagement/PodInfo/PodInfo.scss b/client/src/Pages/PortfolioManagement/PodInfo/PodInfo.scss new file mode 100644 index 0000000..b2905a2 --- /dev/null +++ b/client/src/Pages/PortfolioManagement/PodInfo/PodInfo.scss @@ -0,0 +1,926 @@ +.teamPage { + max-width: 1350px; + + margin-left: auto; + margin-right: auto; + padding-left: 1rem; + padding-right: 1rem; + padding-top: 2rem; + padding-bottom: 2rem; + background-color: black; + color: black; + height: 925px; +} + +.container { + max-width: 1200px; + margin: 0 auto; + text-align: center; + padding: 0 1rem; +} + +.title { + font-size: 2.5rem; + font-weight: 700; + margin-bottom: 1rem; + color: white; +} + +.subtitle { + font-size: 1.125rem; + color: #bcc1c9; + max-width: 36rem; + margin: 0 auto 4rem; +} + +.podGrid { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 1.5rem; + margin-bottom: 2rem; +} + +@media (max-width: 1024px) { + .podGrid { + grid-template-columns: repeat(2, 1fr); + } + .card { + width: calc(50% - 0.5rem); + } +} + +@media (max-width: 640px) { + .podGrid { + grid-template-columns: 1fr; + } + .card { + width: 100%; + } + .searchAndFilters { + flex-direction: column; + } +} + +.podCard { + flex: 0 0 300px; + background: rgb(78 68 68 / 43%); + border-radius: 0.75rem; + overflow: hidden; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + padding: 1.25rem; + cursor: pointer; + transition: all 0.2s ease; + border: 1px solid #e5e7eb; + width: 100%; + height: 100%; +} + +.podCard:hover { + transform: translateY(-2px); + box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); +} + +.podHeader { + display: flex; + align-items: flex-start; + gap: 1rem; + margin-bottom: 1rem; +} + +.podAvatar { + width: 2.5rem; + height: 2.5rem; + border-radius: 0.5rem; + background-color: #e5e7eb; + display: flex; + align-items: center; + justify-content: center; + font-weight: bold; + color: #4b5563; +} + +.podInfo { + flex: 1; +} + +.podName { + font-size: 1rem; + font-weight: 600; + color: #ffffff; + margin-bottom: 0.25rem; +} + +.podDescription { + font-size: 0.875rem; + color: #bcbcbc; +} + +.moreButton { + background: none; + border: none; + color: #6b7280; + cursor: pointer; + padding: 0.25rem; +} + +.podTime { + font-size: 0.875rem; + color: #6b7280; + margin-bottom: 1rem; +} + +.podStats { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 1rem; +} + +.memberCount { + font-size: 0.875rem; + color: #6b7280; +} + +.statNumber { + color: #d4d4d4; +} + +.statDivider { + margin: 0 0.5rem; + color: #9ca3af; +} + +.memberAvatars { + display: flex; + align-items: center; + margin-left: 0.5rem; +} + +.smallAvatar { + width: 1.5rem; + height: 1.5rem; + border-radius: 9999px; + background-color: #e5e7eb; + display: flex; + align-items: center; + justify-content: center; + font-size: 0.75rem; + font-weight: bold; + color: #4b5563; + border: 2px solid white; + margin-left: -0.5rem; +} + +.smallAvatar:first-child { + margin-left: 0; +} + +.moreMembers { + width: 1.5rem; + height: 1.5rem; + background-color: #f3f4f6; + border-radius: 9999px; + display: flex; + align-items: center; + justify-content: center; + font-size: 0.75rem; + color: #6b7280; + margin-left: -0.5rem; + border: 2px solid white; +} + +.viewDetails { + width: 100%; + padding: 0.5rem; + background-color: #f9fafb; + border: 1px solid #e5e7eb; + border-radius: 0.375rem; + color: #374151; + font-size: 0.875rem; + font-weight: 500; + transition: all 0.2s ease; +} + +.viewDetails:hover { + background-color: #f3f4f6; +} + +.card { + display: flex; + background-color: #ffffff; + border-radius: 0.5rem; + overflow: hidden; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + border: 1px solid #e5e7eb; + width: calc(33.333% - 0.667rem); + transition: transform 0.3s ease, box-shadow 0.3s ease; +} + +.card:hover { + transform: translateY(-5px); + box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); +} + +.imageContainer { + height: 200px; + overflow: hidden; + position: relative; +} + +.image { + width: 100%; + height: 100%; + object-fit: cover; +} + +.activeIndicator { + position: absolute; + top: 10px; + right: 10px; + width: 12px; + height: 12px; + border-radius: 50%; + background-color: #9ca3af; +} + +.activeIndicator.active { + background-color: #10b981; + animation: pulse 2s infinite; +} + +@keyframes pulse { + 0% { + box-shadow: 0 0 0 0 rgba(16, 185, 129, 0.7); + } + 70% { + box-shadow: 0 0 0 10px rgba(16, 185, 129, 0); + } + 100% { + box-shadow: 0 0 0 0 rgba(16, 185, 129, 0); + } +} + +.cardContent { + padding: 1rem; + display: flex; + flex-direction: column; + justify-content: space-between; + flex-grow: 1; +} + +.name { + + font-weight: 300; + color: #dedede; + margin: 0 0 1rem 0; +} + +.jobTitle { + font-size: 0.875rem; + color: #9d9fa2; + margin: 0 0 1rem 0; +} + + +.designation { + font-size: 0.875rem; + color: #bebebe; + margin: 0 0 1rem 0; +} + +.description { + + color: #c8cbce; + margin: 0 0 1rem 0; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + overflow: hidden; +} + +.skills { + display: flex; + flex-wrap: wrap; + gap: 0.25rem; +} + +.skill { + font-size: 0.800rem; + color: #4b5563; + background-color: black; + padding: 0.25rem 0.25rem; + border-radius: 9999px; +} + +.projects { + font-size: 0.875rem; + color: #4b5563; +} + +.footer { + display: flex; + flex-direction: column; + align-items: center; + gap: 1rem; +} + +.icons { + width: 2.5rem; + height: 2.5rem; + background-color: rgb(0, 0, 0); + border-radius: 9999px; + display: flex; + align-items: center; + justify-content: center; + font-size: 1rem; + margin-right: 0.5rem; +} + +.footerTitle { + font-size: 1.5rem; + font-weight: 600; + color: #111827; +} + +.footerText { + font-size: 1rem; + color: #6b7280; + max-width: 36rem; +} + +.modalOverlay { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: rgba(0, 0, 0, 0.5); + display: flex; + justify-content: center; + align-items: center; + z-index: 1000; + padding: 1rem; /* Update: Added padding to modalOverlay */ +} + +.modal1 { + background-color: #030303; + border-radius: 0.5rem; + width: 100%; + max-width: 1280px; + max-height: 90vh; + overflow-y: auto; + box-shadow: 0 10px 10px 10px rgb(255 255 255), 0 4px 6px 12px rgb(255 255 255); + display: flex; + flex-direction: column; +} + +.modalHeader { + display: flex; + justify-content: space-between; + align-items: center; + padding: 1rem 1.5rem; + border-bottom: 1px solid #e5e7eb; +} + +.modalHeader h2 { + font-size: 1.5rem; + font-weight: 600; + color: #fcfcfc; + margin: 0; +} + +.closeButton { + background: none; + border: none; + font-size: 1.5rem; + color: #ffffff; + cursor: pointer; +} + +.modalContent { + padding: 1.5rem; + flex-grow: 1; + overflow-y: auto; +} + +.teamMembers { + display: flex; + flex-wrap: wrap; + + margin-bottom: 1.5rem; +} + +.teamMembers.listView { + flex-direction: column; +} + +.searchAndFilters { + display: flex; + gap: 1rem; + margin-bottom: 1.5rem; +} + +.searchWrapper { + position: relative; + flex: 1; + display: flex; + align-items: center; +} + +.searchWrapper svg { + + left: 0.75rem; + top: 50%; + +} + + +.searchInput { + width: 100%; + padding: 0.5rem 1rem 0.5rem 0.5rem; /* Update: Removed unnecessary padding */ + border: 1px solid #d1d5db; + border-radius: 0.375rem; + font-size: 0.875rem; +} + +.viewToggle { + display: flex; + border: 1px solid #d1d5db; + border-radius: 0.375rem; + overflow: hidden; +} + +.viewButton { + padding: 0.5rem 1rem; + background-color: #ffffff; + border: none; + font-size: 0.875rem; + cursor: pointer; + transition: background-color 0.3s ease; +} + +.viewButton.active { + background-color: #e5e7eb; +} + +.pagination { + display: flex; + justify-content: center; + align-items: center; + gap: 1rem; +} + +.pagination button { + padding: 0.5rem 1rem; + background-color: #f3f4f6; + border: none; + border-radius: 0.375rem; + font-size: 0.875rem; + cursor: pointer; + transition: background-color 0.3s ease; +} + +.pagination button:hover:not(:disabled) { + background-color: #e5e7eb; +} + +.pagination button:disabled { + opacity: 0.5; + cursor: not-allowed; +} + +.pagination span { + font-size: 0.875rem; + color: #ffffff; +} + +.cardImageContainer { + width: 120px; + height: 120px; + position: relative; + flex-shrink: 0; +} + +.cardImage { + width: 100%; + height: 100%; + object-fit: cover; +} + +@media (max-width: 768px) { + .searchAndFilters { + flex-direction: column; + } + + .viewToggle { + margin-top: 1rem; + } + + .teamMembers { + justify-content: center; + } + + .card { + width: 100%; + } +} + +@media (max-width: 480px) { + .modalHeader { + flex-direction: column; + align-items: flex-start; + } + + .closeButton { + align-self: flex-end; + margin-top: -2rem; + } + + .pagination { + flex-direction: column; + align-items: center; + } + + .pagination button { + margin-top: 0.5rem; + } +} + +.viewToggleContainer { + display: flex; + justify-content: center; + gap: 1rem; + margin-bottom: 1.5rem; + padding-bottom: 1rem; +} + + +.viewToggleButton { + padding: 0.5rem 2rem; + font-size: 0.875rem; + font-weight: 500; + color: #6b7280; + background: none; + border: none; + border-bottom: 2px solid transparent; + cursor: pointer; + transition: all 0.2s ease; +} + + + +.viewToggleButton.active { + color: #fdfeff; + border-bottom-color: #ff0058; +} + +.projectsGrid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); + gap: 1.5rem; + margin-bottom: 1.5rem; +} + +.projectCard { + background: white; + border: 1px solid #e5e7eb; + border-radius: 0.5rem; + overflow: hidden; + transition: transform 0.2s ease, box-shadow 0.2s ease; +} + +.projectCard:hover { + transform: translateY(-2px); + box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); +} + +.projectImageContainer { + height: 160px; + overflow: hidden; +} + +.projectImage { + width: 100%; + height: 100%; + object-fit: cover; +} + +.projectContent { + padding: 1rem; +} + +.projectName { + font-size: 1rem; + font-weight: 600; + color: #111827; + margin-bottom: 0.5rem; +} + +.projectDescription { + font-size: 0.875rem; + color: #6b7280; + margin-bottom: 1rem; +} + +.projectStatus { + display: flex; + flex-direction: column; + gap: 0.5rem; +} + +.status { + display: inline-flex; + align-items: center; + padding: 0.25rem 0.75rem; + border-radius: 9999px; + font-size: 0.75rem; + font-weight: 500; +} + +.status.in-progress { + background-color: #dbeafe; + color: #1d4ed8; +} + +.status.completed { + background-color: #dcfce7; + color: #15803d; +} + +.status.pending { + background-color: #fef3c7; + color: #92400e; +} + + +@media (max-width: 640px) { + .projectsGrid { + grid-template-columns: 1fr; + } + + .viewToggleContainer { + padding: 0 1rem; + } +} + +.projectCardLink { + text-decoration: none; + color: inherit; + display: block; +} + +.projectCard { + background-color: #ffffff; + border-radius: 8px; + box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); + overflow: hidden; + transition: transform 0.3s ease, box-shadow 0.3s ease; +} + +.projectCard:hover { + transform: translateY(-5px); + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.15); +} + +.projectImageContainer { + height: 200px; + overflow: hidden; +} + +.projectImage { + width: 100%; + height: 100%; + object-fit: cover; + transition: transform 0.3s ease; +} + +.projectCard:hover .projectImage { + transform: scale(1.05); +} + +.projectContent { + padding: 1.5rem; +} + +.projectName { + font-size: 1.25rem; + font-weight: 600; + color: #333; + margin-bottom: 0.5rem; +} + +.projectDescription { + font-size: 0.875rem; + color: #666; + margin-bottom: 1rem; + line-height: 1.4; +} + +.projectStatus { + display: flex; + justify-content: space-between; + align-items: center; +} + +.status { + font-size: 0.75rem; + font-weight: 500; + padding: 0.25rem 0.5rem; + border-radius: 12px; + text-transform: capitalize; +} + +.status.in-progress { + background-color: #e6f7ff; + color: #0070f3; +} + +.status.completed { + background-color: #e6fffa; + color: #00c853; +} + +.status.pending { + background-color: #fff7e6; + color: #ffa000; +} + +.skills { + display: flex; + flex-wrap: wrap; + gap: 0.5rem; +} + +.skill { + font-size: 0.75rem; + background-color: #f0f0f0; + color: #333; + padding: 0.25rem 0.5rem; + border-radius: 12px; +} + +.project-card { + background: rgba(255, 255, 255, 0.1); + border-radius: 16px; + overflow: hidden; + transition: transform 0.3s ease; + margin: 1rem; + max-width: 375px; + border: 2px rgb(71 68 68) solid; + } + + + .project-card:hover { + transform: translateY(-5px); + } + + .project-image { + width: 100%; + height: 200px; + object-fit: cover; + } + + .project-content { + padding: 1.5rem; + } + + .project-content h3 { + margin: 0 0 1rem 0; + color: #ffffff; + } + + .project-content p { + color: #929292; + margin-bottom: 1rem; + } + + .technologies { + display: flex; + flex-wrap: wrap; + gap: 0.5rem; + margin-bottom: 1rem; + } + + .tech-tag { + background: #383838; + padding: 0.25rem 0.5rem; + border-radius: 4px; + font-size: 0.8rem; + color: #ffffff; + } + + .project-links { + display: flex; + gap: 1rem; + } + + .project-links a { + text-decoration: none; + color: #007bff; + font-weight: 500; + } + + .project-links a:hover { + text-decoration: underline; + } + + /* List view styles */ + .projects-container.list-view { + display: flex; + flex-direction: column; + gap: 1rem; + max-width: 1200px; + margin: 0 auto; + } + + .project-card.list-view { + display: flex; + width: 100%; + } + + .project-card.list-view .project-image { + width: 200px; + height: 150px; + } + + .project-card.list-view .project-content { + flex: 1; + display: flex; + flex-direction: column; + justify-content: space-between; + } + + /* Keep existing card view styles */ + .projects-container.card-view { + display: flex; + flex-wrap: wrap; + justify-content: center; + gap: 1rem; + } + + @media (max-width: 768px) { + + + } + + .searchBarContainer { + display: flex; + justify-content: center; + margin: 20px 0; + } + + .searchInput { + width: 50%; + max-width: 400px; + padding: 10px; + font-size: 16px; + border: 1px solid #ccc; + border-radius: 4px; + outline: none; + } + + .searchInput:focus { + border-color: #007bff; + box-shadow: 0 0 0 2px rgba(0, 123, 255, 0.25); + } + .searchBarContainer1 { + display: flex; + justify-content: center; + margin: 20px 0; + } + + .searchContainer1 { + display: flex; + justify-content: center; + margin: 2rem 0; + padding: 0 1rem; + gap:20px; + } + + .searchWrapper1 { + position: relative; + width: 100%; + max-width: 500px; + } + + .searchIcon1 { + position: absolute; + left: 1rem; + top: 50%; + transform: translateY(-50%); + color: #888; + } + + .searchInput1 { + width: 100%; + padding: 0.75rem 1rem 0.75rem 2.5rem; + font-size: 1rem; + border: 1px solid #ccc; + border-radius: 2rem; + outline: none; + transition: border-color 0.3s ease; + } + + .searchInput1:focus { + border-color: #007bff; + } \ No newline at end of file diff --git a/client/src/component/ClientInfo/Avatar.jsx b/client/src/component/ClientInfo/Avatar.jsx new file mode 100644 index 0000000..ba4ff44 --- /dev/null +++ b/client/src/component/ClientInfo/Avatar.jsx @@ -0,0 +1,25 @@ +import React from 'react'; + +export const Avatar = ({ src, alt, fallback, className }) => ( +
+ {src ? ( + {alt} + ) : ( +
+ {fallback} +
+ )} +
+); + +export const Avatars = ({ src, alt, fallback, className }) => ( +
+ {src ? ( + {alt} + ) : ( +
+ {fallback} +
+ )} +
+); diff --git a/client/src/component/ClientInfo/Badge.jsx b/client/src/component/ClientInfo/Badge.jsx new file mode 100644 index 0000000..c102220 --- /dev/null +++ b/client/src/component/ClientInfo/Badge.jsx @@ -0,0 +1,9 @@ +import React from 'react'; + +const Badge = ({ children, className }) => ( + + {children} + +); + +export default Badge; \ No newline at end of file diff --git a/client/src/component/ClientInfo/Button.jsx b/client/src/component/ClientInfo/Button.jsx new file mode 100644 index 0000000..3e958c8 --- /dev/null +++ b/client/src/component/ClientInfo/Button.jsx @@ -0,0 +1,13 @@ +import React from 'react'; + +const Button = ({ children, className, ...props }) => ( + +); + +export default Button; + diff --git a/client/src/component/ClientInfo/Cards.jsx b/client/src/component/ClientInfo/Cards.jsx new file mode 100644 index 0000000..89dbd2b --- /dev/null +++ b/client/src/component/ClientInfo/Cards.jsx @@ -0,0 +1,22 @@ +import React from 'react'; + +export const Cardss = ({ children, className }) => ( +
+ {children} +
+); + +export const Cards = ({ children, className }) => ( +
+ {children} +
+); + +export const CardContent = ({ children, className }) => ( +
{children}
+); + +export const CardFooter = ({ children, className }) => ( +
{children}
+); + diff --git a/client/src/component/ClientInfo/Input.jsx b/client/src/component/ClientInfo/Input.jsx new file mode 100644 index 0000000..33535d9 --- /dev/null +++ b/client/src/component/ClientInfo/Input.jsx @@ -0,0 +1,11 @@ +import React from 'react'; + +const Input = ({ className, ...props }) => ( + +); + +export default Input; + diff --git a/client/src/component/ClientInfo/MilestoneCard.jsx b/client/src/component/ClientInfo/MilestoneCard.jsx new file mode 100644 index 0000000..8dcdf59 --- /dev/null +++ b/client/src/component/ClientInfo/MilestoneCard.jsx @@ -0,0 +1,20 @@ +import React from 'react'; +import { Cardss, CardContent } from './Cards'; +import Badge from './Badge'; + +const MilestoneCard = ({ milestone }) => ( + + +

{milestone.title}

+

{milestone.description}

+
+ + {milestone.status[0].title} + + Owner: {milestone.status[0].owner} +
+
+
+); + +export default MilestoneCard; diff --git a/client/src/component/ClientInfo/ProjectCard.jsx b/client/src/component/ClientInfo/ProjectCard.jsx new file mode 100644 index 0000000..45b7091 --- /dev/null +++ b/client/src/component/ClientInfo/ProjectCard.jsx @@ -0,0 +1,48 @@ +import React from 'react'; +import { FaUsers } from "react-icons/fa"; +import { Cardss, CardContent, CardFooter } from './Cards'; +import Badge from './Badge'; + +const ProjectCard = ({ project }) => ( + + +
+ {project.title} +
+
+ + +
+

{project.title}

+
+ + {project.Team} +
+
+ {project.techStack.map((tech, index) => ( + {tech} + ))} +
+
+ {project.github && ( + + GitHub + + )} + {project.live && ( + + Live Demo + + )} +
+
+
+ +); + +export default ProjectCard; + diff --git a/client/src/component/ClientInfo/ReviewCard.jsx b/client/src/component/ClientInfo/ReviewCard.jsx new file mode 100644 index 0000000..b3ca789 --- /dev/null +++ b/client/src/component/ClientInfo/ReviewCard.jsx @@ -0,0 +1,36 @@ +import React from 'react'; +import { FaStar } from "react-icons/fa"; +import { Cardss, CardContent } from './Cards'; +import { Avatars } from './Avatar'; + +const ReviewCard = ({ review }) => ( + + +
+ +
+

{review.reviewer}

+

{review.headline}

+
+
+

{review.comment}

+
+ {[...Array(5)].map((_, index) => ( + + ))} +
+
+
+); + +export default ReviewCard; diff --git a/client/src/component/ClientInfo/SearchBar.jsx b/client/src/component/ClientInfo/SearchBar.jsx new file mode 100644 index 0000000..2527607 --- /dev/null +++ b/client/src/component/ClientInfo/SearchBar.jsx @@ -0,0 +1,24 @@ +import React from 'react'; +import { FaSearch } from "react-icons/fa"; +import Button from './Button'; +import Input from './Input'; + +const SearchBar = ({ searchQuery, setSearchQuery, handleSearchSubmit }) => ( +
+
+ setSearchQuery(e.target.value)} + className="search-input" + /> + +
+
+); + +export default SearchBar; + diff --git a/client/src/component/ClientInfo/Tabs.jsx b/client/src/component/ClientInfo/Tabs.jsx new file mode 100644 index 0000000..fb3bdfb --- /dev/null +++ b/client/src/component/ClientInfo/Tabs.jsx @@ -0,0 +1,23 @@ +import React from 'react'; + +export const Tabs = ({ children }) => ( +
{children}
+); + +export const TabsList = ({ children }) => ( +
{children}
+); + +export const TabsTrigger = ({ children, isActive, onClick }) => ( + +); + +export const TabsContent = ({ children, isActive }) => ( +
{children}
+); + diff --git a/client/src/component/PodInfo/PodCard.jsx b/client/src/component/PodInfo/PodCard.jsx new file mode 100644 index 0000000..65d6873 --- /dev/null +++ b/client/src/component/PodInfo/PodCard.jsx @@ -0,0 +1,39 @@ +import React from 'react'; +import { FaEllipsisH } from 'react-icons/fa'; +import '../../Pages/PortfolioManagement/PodInfo/PodInfo.scss' +export function PodCard({ pod, onClick }) { + return ( +
+
+
+ {pod.name[0]} +
+
+

{pod.name}

+

{pod.description}

+
+ +
+
+
+ {pod.active} Members Available + + {pod.notactive} Unavailable +
+
+ {pod.members.slice(0, 3).map((member, index) => ( +
+ {member.name[0]} +
+ ))} + {pod.members.length > 4 && ( +
+{pod.members.length - 4}
+ )} +
+
+ +
+ ) +} \ No newline at end of file diff --git a/client/src/component/PodInfo/ProjectCard.jsx b/client/src/component/PodInfo/ProjectCard.jsx new file mode 100644 index 0000000..c5aa2be --- /dev/null +++ b/client/src/component/PodInfo/ProjectCard.jsx @@ -0,0 +1,47 @@ +import React from 'react'; +import '../../Pages/PortfolioManagement/PodInfo/PodInfo.scss'; + +export const ProjectCard = ({ project }) => { + // Guard clause: Return null if project is not defined + if (!project) { + return null; + } + + return ( + +
+ {project.name +
+

{project.name}

+

{project.description}

+
+ {project.techStack && project.techStack.map((tech, index) => ( + {tech} + ))} +
+
+ {project.github && ( + + GitHub + + )} + {project.live && ( + + Live Demo + + )} +
+
+
+ + ); +}; diff --git a/client/src/component/PodInfo/SearchBar.jsx b/client/src/component/PodInfo/SearchBar.jsx new file mode 100644 index 0000000..593ab32 --- /dev/null +++ b/client/src/component/PodInfo/SearchBar.jsx @@ -0,0 +1,16 @@ +import React from 'react'; + +export const SearchBar = ({ searchTerm, onSearchChange }) => { + return ( +
+ +
+ ); +}; + diff --git a/client/src/component/PodInfo/TeamMemberCard.jsx b/client/src/component/PodInfo/TeamMemberCard.jsx new file mode 100644 index 0000000..9d83791 --- /dev/null +++ b/client/src/component/PodInfo/TeamMemberCard.jsx @@ -0,0 +1,24 @@ +import React from 'react'; +import '../../Pages/PortfolioManagement/PodInfo/PodInfo.scss' + +export function TeamMemberCard({ member }) { + return ( +
+
+ {member.name} +
+
+
+

{member.name}

+

{member.jobTitle} • {member.experience} years

+

{member.description}

+
+ {Object.entries(member.skills).map(([skill, count], index) => ( + {skill}: {count} + ))} +
+
+
+ ) +} + diff --git a/client/src/component/PodInfo/TeamModal.jsx b/client/src/component/PodInfo/TeamModal.jsx new file mode 100644 index 0000000..5bdcc0d --- /dev/null +++ b/client/src/component/PodInfo/TeamModal.jsx @@ -0,0 +1,160 @@ +import React, { useState } from 'react' +import { FaSearch, FaFilter } from 'react-icons/fa' +import { TeamMemberCard } from './TeamMemberCard' +import { ProjectCard } from './ProjectCard' +import { sortTeamMembers } from '../../contexts/sortTeamMembers' + +export const TeamModal = ({ pod, onClose }) => { + const [searchTerm, setSearchTerm] = useState('') + const [skillFilter, setSkillFilter] = useState('') + const [projectSearchTerm, setProjectSearchTerm] = useState('') + const [currentMemberPage, setCurrentMemberPage] = useState(1) + const [currentProjectPage, setCurrentProjectPage] = useState(1) + const [activeView, setActiveView] = useState('members') + const itemsPerPage = 3 + + const filteredMembers = sortTeamMembers(pod.members.filter(member => + (member.name.toLowerCase().includes(searchTerm.toLowerCase()) || + member.jobTitle.toLowerCase().includes(searchTerm.toLowerCase())) && + (skillFilter === '' || Object.keys(member.skills).some(skill => + skill.toLowerCase().includes(skillFilter.toLowerCase()) + )) + )) + + const memberPageCount = Math.ceil(filteredMembers.length / itemsPerPage) + const currentMembers = filteredMembers.slice( + (currentMemberPage - 1) * itemsPerPage, + currentMemberPage * itemsPerPage + ) + + const filteredProjects = (pod.projects || []).filter(project => + project.name.toLowerCase().includes(projectSearchTerm.toLowerCase()) + ) + const projectPageCount = Math.ceil(filteredProjects.length / itemsPerPage) + const currentProjects = filteredProjects.slice( + (currentProjectPage - 1) * itemsPerPage, + currentProjectPage * itemsPerPage + ) + + const resetPagination = () => { + setCurrentMemberPage(1) + setCurrentProjectPage(1) + setProjectSearchTerm('') + } + + return ( +
+
+
+

{pod.name}

+ +
+
+
+ + +
+ + {activeView === 'members' ? ( + <> + +
+
+ + setSearchTerm(e.target.value)} + className="searchInput1" + /> +
+
+ + setSkillFilter(e.target.value)} + className="searchInput1" + /> +
+
+
+ {currentMembers.map((member) => ( + + ))} +
+
+ + {currentMemberPage} of {memberPageCount} + +
+ + ) : ( + <> +
+
+ + setProjectSearchTerm(e.target.value)} + className="searchInput1" + /> +
+
+
+ {currentProjects.map((project) => ( + + ))} +
+
+ + {currentProjectPage} of {projectPageCount} + +
+ + )} +
+
+
+ ) +} \ No newline at end of file diff --git a/client/src/component/Prompt/NavContentDuplicate.css b/client/src/component/Prompt/NavContentDuplicate.css index c4e1e0f..c05d48e 100644 --- a/client/src/component/Prompt/NavContentDuplicate.css +++ b/client/src/component/Prompt/NavContentDuplicate.css @@ -75,4 +75,46 @@ .sidebar-hr { border: 1px solid rgb(108,117,125); -} \ No newline at end of file +} +.sidebar-item { + column-gap: 8px; + padding: 10px; + cursor: pointer; + display: flex; + align-items: center; + border-radius: 4px; + transition: background-color 0.3s ease; +} + +.sidebar-item:hover { + background-color: var(--sidebar-hover-bg-color); +} + +/* Sub-button Styles */ +.sub-buttons-container { + margin-left: 30px; + padding-top: 5px; + display: flex; + flex-direction: column; + gap: 5px; +} + +.sub-buttons-container button { + background-color: var(--sidebar-button-bg-color); + color: var(--sidebar-text-color); + font-size: 13px; + border: none; + padding: 5px 10px; + border-radius: 4px; + cursor: pointer; + text-align: left; +} + +.sub-buttons-container button:hover { + background-color: var(--sidebar-hover-bg-color); +} + +.sub-buttons-container button:focus { + outline: none; + box-shadow: 0 0 3px rgba(0, 0, 0, 0.2); +} diff --git a/client/src/component/Prompt/NavContentDuplicate.jsx b/client/src/component/Prompt/NavContentDuplicate.jsx index 300c0d3..c3ca0a1 100644 --- a/client/src/component/Prompt/NavContentDuplicate.jsx +++ b/client/src/component/Prompt/NavContentDuplicate.jsx @@ -102,6 +102,17 @@ const NavContentDuplicate = ({ const handleClickOnKnowledgeBase = () => { navigate("/knowledge-base"); }; + const handleClickClientInfo = () => { + navigate('/portfolio-management/ClientInfo'); + }; + const handleClickPodInfo = () => { + navigate('/portfolio-management/PodInfo'); + }; + const [showSubButtons, setShowSubButtons] = useState(false); // State for sub-buttons visibility + + const toggleSubButtons = () => { + setShowSubButtons(!showSubButtons); // Toggle visibility + }; const handleAssistantSearch = useCallback( debounce((value) => { setSearchQuery(value); @@ -144,6 +155,28 @@ const NavContentDuplicate = ({ onClick={handleClick} className="glyphicon glyphicon-th-large sidebar-item" > +
+ {/* Portfolio Management Button */} +
+

+ + Portfolio Management +

+
+ + {/* Sub-buttons */} + {showSubButtons && ( +
+ + +
+ )} +

Explore Agents diff --git a/client/src/contexts/sortTeamMembers.js b/client/src/contexts/sortTeamMembers.js new file mode 100644 index 0000000..c1f8e61 --- /dev/null +++ b/client/src/contexts/sortTeamMembers.js @@ -0,0 +1,19 @@ +export const sortTeamMembers = (members) => { + const jobOrder = [ + "Assistant Manager", + "Assistant Technical Manager", + "Team Lead", + "Project Manager", + "Senior Developer", + "Developer", + "Junior Developer" + ]; + + return members.sort((a, b) => { + const jobOrderA = jobOrder.indexOf(a.jobTitle); + const jobOrderB = jobOrder.indexOf(b.jobTitle); + if (jobOrderA !== jobOrderB) return jobOrderA - jobOrderB; + return b.experience - a.experience; + }); + }; + \ No newline at end of file diff --git a/server/config.js b/server/config.js index 8385d8b..331c5aa 100644 --- a/server/config.js +++ b/server/config.js @@ -1,6 +1,6 @@ import dotEnv from "dotenv"; import path from 'path'; - +import 'dotenv/config'; dotEnv.config({ path: path.resolve(`${process.cwd()}`, `.env.${process.env.NODE_ENV}`), }); diff --git a/server/config/db.js b/server/config/db.js index 5304313..afc157b 100644 --- a/server/config/db.js +++ b/server/config/db.js @@ -2,29 +2,29 @@ import mongoose from "mongoose"; import config from "../config.js"; //for production +//const connectDb = async () => { + // try { + // const conn = await mongoose.connect(config.MONGO_URI, { + // dbName: config.MONGODB_NAME, + // }); + // console.log(`MongoDb Connected ${conn.connection.host}`); + // } catch (error) { + // console.log(`Error ${error.message}`); + // process.exit(1); + // } +//}; + +// for development const connectDb = async () => { try { - const conn = await mongoose.connect(config.MONGO_URI, { - dbName: config.MONGODB_NAME, + const conn = await mongoose.connect("mongodb://localhost:27017", { + dbName: "devsquadgpt_db", }); - console.log(`MongoDb Connected ${conn.connection.host}`); - } catch (error) { + console.log(`MongoDb Connected ${conn.connection.host}`); + } catch (error) { console.log(`Error ${error.message}`); - process.exit(1); - } -}; - -// for development -// const connectDb = async () => { -// try { -// const conn = await mongoose.connect("mongodb://localhost:27017", { -// dbName: "devsquadgpt_db", -// }); -// console.log(`MongoDb Connected ${conn.connection.host}`); -// } catch (error) { -// console.log(`Error ${error.message}`); -// process.exit(1); -// } -// }; + process.exit(1); + } + }; export default connectDb; From 1db388a91aa98890fe7fd00c7de295b9732da01a Mon Sep 17 00:00:00 2001 From: 2014026-lukepro <145370492+2014026-lukepro@users.noreply.github.com> Date: Sat, 7 Dec 2024 20:03:50 +0530 Subject: [PATCH 06/42] adjusted the css for homepage --- client/src/App.js | 6 +++--- .../Pages/PortfolioManagement/ClientInfo/ClientInfo.scss | 8 ++++---- client/src/Pages/PortfolioManagement/ClientInfo/index.jsx | 2 +- client/src/Pages/PortfolioManagement/PodInfo/Index.jsx | 2 +- client/src/Pages/PortfolioManagement/PodInfo/PodInfo.scss | 8 ++++---- client/src/component/ClientInfo/ProjectCard.jsx | 2 +- client/src/component/PodInfo/ProjectCard.jsx | 4 ++-- client/src/component/PodInfo/TeamMemberCard.jsx | 2 +- 8 files changed, 17 insertions(+), 17 deletions(-) diff --git a/client/src/App.js b/client/src/App.js index 5a60666..ac83ea2 100644 --- a/client/src/App.js +++ b/client/src/App.js @@ -40,7 +40,7 @@ import { IntegrateApplications } from "./component/IntegrateApplications/Integra import ConnectionWithWorkboard from "./Pages/configration/ConnectionWithWorkboard"; import ClientInfo from "./Pages/PortfolioManagement/ClientInfo"; -import PodInfo from "./Pages/PortfolioManagement/PodInfo/Index"; +import PodInfo from "./Pages/PortfolioManagement/PodInfo"; function App() { // Hook to get the current location const location = useLocation(); @@ -56,8 +56,8 @@ function App() { } /> } /> } /> - } /> - } /> + } /> + } /> {/* For connecting workboard */} } /> diff --git a/client/src/Pages/PortfolioManagement/ClientInfo/ClientInfo.scss b/client/src/Pages/PortfolioManagement/ClientInfo/ClientInfo.scss index 9d66796..26c02fb 100644 --- a/client/src/Pages/PortfolioManagement/ClientInfo/ClientInfo.scss +++ b/client/src/Pages/PortfolioManagement/ClientInfo/ClientInfo.scss @@ -240,7 +240,7 @@ overflow: hidden; } -.projects-container { +.projects-container1 { display: flex; } @@ -250,7 +250,7 @@ padding: 0 0.5rem; } -.project-card { +.project-card1 { overflow: hidden; } @@ -269,7 +269,7 @@ transition: transform 0.2s; } -.project-card:hover .project-image { +.project-card1:hover .project-image { transform: scale(1.05); } @@ -281,7 +281,7 @@ transition: opacity 0.2s; } -.project-card:hover .project-image-overlay { +.project-card1:hover .project-image-overlay { opacity: 1; } diff --git a/client/src/Pages/PortfolioManagement/ClientInfo/index.jsx b/client/src/Pages/PortfolioManagement/ClientInfo/index.jsx index 3f71b49..c0153c2 100644 --- a/client/src/Pages/PortfolioManagement/ClientInfo/index.jsx +++ b/client/src/Pages/PortfolioManagement/ClientInfo/index.jsx @@ -237,7 +237,7 @@ const PortfolioPage = () => { handleSearchSubmit={handleSearchSubmit} />

-
+
{currentProjects.map((project) => (
diff --git a/client/src/Pages/PortfolioManagement/PodInfo/Index.jsx b/client/src/Pages/PortfolioManagement/PodInfo/Index.jsx index f112455..4db1e37 100644 --- a/client/src/Pages/PortfolioManagement/PodInfo/Index.jsx +++ b/client/src/Pages/PortfolioManagement/PodInfo/Index.jsx @@ -231,7 +231,7 @@ const PodInfo = () => { ) return (
-
+

Team Pods Overview

diff --git a/client/src/Pages/PortfolioManagement/PodInfo/PodInfo.scss b/client/src/Pages/PortfolioManagement/PodInfo/PodInfo.scss index b2905a2..e0b1e95 100644 --- a/client/src/Pages/PortfolioManagement/PodInfo/PodInfo.scss +++ b/client/src/Pages/PortfolioManagement/PodInfo/PodInfo.scss @@ -12,7 +12,7 @@ height: 925px; } -.container { +.container1 { max-width: 1200px; margin: 0 auto; text-align: center; @@ -784,7 +784,7 @@ padding: 1.5rem; } - .project-content h3 { + .project-content1 h3 { margin: 0 0 1rem 0; color: #ffffff; } @@ -825,7 +825,7 @@ } /* List view styles */ - .projects-container.list-view { + .projects-container1.list-view { display: flex; flex-direction: column; gap: 1rem; @@ -851,7 +851,7 @@ } /* Keep existing card view styles */ - .projects-container.card-view { + .projects-container1.card-view { display: flex; flex-wrap: wrap; justify-content: center; diff --git a/client/src/component/ClientInfo/ProjectCard.jsx b/client/src/component/ClientInfo/ProjectCard.jsx index 45b7091..d7ad3bf 100644 --- a/client/src/component/ClientInfo/ProjectCard.jsx +++ b/client/src/component/ClientInfo/ProjectCard.jsx @@ -4,7 +4,7 @@ import { Cardss, CardContent, CardFooter } from './Cards'; import Badge from './Badge'; const ProjectCard = ({ project }) => ( - +
{ return ( -
+
{project.name -
+

+
{member.name}
From 54e89a0ba299b9058946047b7a22d27a9b381855 Mon Sep 17 00:00:00 2001 From: 2014026-lukepro <145370492+2014026-lukepro@users.noreply.github.com> Date: Sat, 7 Dec 2024 20:10:27 +0530 Subject: [PATCH 07/42] changes in css --- .../Pages/PortfolioManagement/PodInfo/PodInfo.scss | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/client/src/Pages/PortfolioManagement/PodInfo/PodInfo.scss b/client/src/Pages/PortfolioManagement/PodInfo/PodInfo.scss index e0b1e95..ce88d4d 100644 --- a/client/src/Pages/PortfolioManagement/PodInfo/PodInfo.scss +++ b/client/src/Pages/PortfolioManagement/PodInfo/PodInfo.scss @@ -759,7 +759,7 @@ border-radius: 12px; } -.project-card { +.project-card1 { background: rgba(255, 255, 255, 0.1); border-radius: 16px; overflow: hidden; @@ -770,7 +770,7 @@ } - .project-card:hover { + .project-card1:hover { transform: translateY(-5px); } @@ -780,7 +780,7 @@ object-fit: cover; } - .project-content { + .project-content1 { padding: 1.5rem; } @@ -789,7 +789,7 @@ color: #ffffff; } - .project-content p { + .project-content1 p { color: #929292; margin-bottom: 1rem; } @@ -833,17 +833,17 @@ margin: 0 auto; } - .project-card.list-view { + .project-card1.list-view { display: flex; width: 100%; } - .project-card.list-view .project-image { + .project-card1.list-view .project-image { width: 200px; height: 150px; } - .project-card.list-view .project-content { + .project-card1.list-view .project-content1 { flex: 1; display: flex; flex-direction: column; From 37a9ca6666844ff2ddadd7ecdbf115b7246769b7 Mon Sep 17 00:00:00 2001 From: 2014026-lukepro Date: Sun, 8 Dec 2024 11:32:58 +0530 Subject: [PATCH 08/42] backend for projects --- client/src/App.js | 1 + .../PortfolioManagement/ClientInfo/index.jsx | 106 ++++++------------ client/src/Utility/projectUtils.js | 14 +++ client/src/api/projectApi.js | 52 +++++++++ ...kground. The design should look slee.webp" | Bin 0 -> 277598 bytes ...cs on a sleek interface. The design .webp" | Bin 0 -> 432882 bytes ...a modern, professional style and dep.webp" | Bin 0 -> 506756 bytes .../src/assests/images/projects/project1.webp | Bin 0 -> 277598 bytes .../src/assests/images/projects/project2.webp | Bin 0 -> 432882 bytes .../src/assests/images/projects/project3.webp | Bin 0 -> 506756 bytes .../src/component/ClientInfo/ProjectCard.jsx | 2 +- client/src/component/PodInfo/TeamModal.jsx | 2 +- server/app.js | 4 +- server/controllers/projectController.js | 62 ++++++++++ server/models/Project.js | 17 +++ server/routers/projectRoutes.js | 19 ++++ 16 files changed, 202 insertions(+), 77 deletions(-) create mode 100644 client/src/Utility/projectUtils.js create mode 100644 client/src/api/projectApi.js create mode 100644 "client/src/assests/images/DALL\302\267E 2024-12-08 10.51.40 - Generate an image of a modern AI collaboration platform featuring abstract connections and nodes on a gradient background. The design should look slee.webp" create mode 100644 "client/src/assests/images/DALL\302\267E 2024-12-08 10.53.56 - Generate an image of an e-commerce dashboard showcasing data visualization, including charts, graphs, and statistics on a sleek interface. The design .webp" create mode 100644 "client/src/assests/images/DALL\302\267E 2024-12-08 10.54.02 - Generate a set of 5 distinct images representing diverse software development projects. Each image should feature a modern, professional style and dep.webp" create mode 100644 client/src/assests/images/projects/project1.webp create mode 100644 client/src/assests/images/projects/project2.webp create mode 100644 client/src/assests/images/projects/project3.webp create mode 100644 server/controllers/projectController.js create mode 100644 server/models/Project.js create mode 100644 server/routers/projectRoutes.js diff --git a/client/src/App.js b/client/src/App.js index ac83ea2..e033ed0 100644 --- a/client/src/App.js +++ b/client/src/App.js @@ -41,6 +41,7 @@ import { IntegrateApplications } from "./component/IntegrateApplications/Integra import ConnectionWithWorkboard from "./Pages/configration/ConnectionWithWorkboard"; import ClientInfo from "./Pages/PortfolioManagement/ClientInfo"; import PodInfo from "./Pages/PortfolioManagement/PodInfo"; + function App() { // Hook to get the current location const location = useLocation(); diff --git a/client/src/Pages/PortfolioManagement/ClientInfo/index.jsx b/client/src/Pages/PortfolioManagement/ClientInfo/index.jsx index c0153c2..8844a88 100644 --- a/client/src/Pages/PortfolioManagement/ClientInfo/index.jsx +++ b/client/src/Pages/PortfolioManagement/ClientInfo/index.jsx @@ -10,71 +10,9 @@ import ReviewCard from '../../../component/ClientInfo/ReviewCard'; import SearchBar from '../../../component/ClientInfo/SearchBar'; import MilestoneCard from '../../../component/ClientInfo/MilestoneCard'; import ProjectCard from '../../../component/ClientInfo/ProjectCard'; +import { getAllProjects } from '../../../api/projectApi'; import "./ClientInfo.scss"; -const projects = [ - { - id: 1, - title: "VPN Mobile App", - Description: "Mobile UI Research", - image: "https://picsum.photos/600/400?random=1", - Team: "Avengers", - techStack: ["React Native", "Node.js", "Express"], - github: "https://github.com/guptapriya24/react-weather-app", - live: "https://weather-app-demo.netlify.app", - }, - { - id: 2, - title: "Property Dashboard", - Description: "Web Interface", - image: "https://picsum.photos/600/400?random=2", - Team: "Avengers", - techStack: ["React", "Redux", "Material-UI"], - github: "https://github.com/guptapriya24/react-weather-app", - live: "https://weather-app-demo.netlify.app", - }, - { - id: 3, - title: "Healthcare Mobile App", - Description: "Mobile UI Branding", - image: "https://picsum.photos/600/400?random=3", - Team: "Avengers", - techStack: ["Flutter", "Firebase", "GraphQL"], - github: "https://github.com/guptapriya24/react-weather-app", - live: "https://weather-app-demo.netlify.app", - }, - { - id: 4, - title: "E-commerce Platform", - Description: "Web Development", - image: "https://picsum.photos/600/400?random=4", - Team: "Avengers", - techStack: ["Next.js", "Stripe", "MongoDB"], - github: "https://github.com/guptapriya24/react-weather-app", - live: "https://weather-app-demo.netlify.app", - }, - { - id: 5, - title: "Fitness Tracking App", - Description: "Mobile Development", - image: "https://picsum.photos/600/400?random=5", - Team: "Avengers", - techStack: ["React Native", "Redux", "Firebase"], - github: "https://github.com/guptapriya24/react-weather-app", - live: "https://weather-app-demo.netlify.app", - }, - { - id: 6, - title: "Social Media Dashboard", - Description: "Web Analytics", - image: "https://picsum.photos/600/400?random=6", - Team: "Avengers", - techStack: ["Vue.js", "D3.js", "Node.js"], - github: "https://github.com/guptapriya24/react-weather-app", - live: "https://weather-app-demo.netlify.app", - }, -]; - const reviews = [ { id: 1, headline: "Amazing Project!", reviewer: "John Doe", comment: "Very well executed.", rating: 5, reviewerImage: "https://picsum.photos/50" }, { id: 2, headline: "Great Work", reviewer: "Jane Smith", comment: "Great design and functionality!", rating: 4, reviewerImage: "/placeholder.svg?height=50&width=50" }, @@ -93,24 +31,43 @@ const milestones = [ { id: 6, title: "Post-Launch Support", description: "Monitoring and bug fixes", status: [{ title: "Not Started", owner: "Support Team", completed: false }] }, ]; -const PortfolioPage = () => { +const ClientInfo = () => { const [activeTab, setActiveTab] = useState("work"); const [searchQuery, setSearchQuery] = useState(""); - const [filteredProjects, setFilteredProjects] = useState(projects); + const [projects, setProjects] = useState([]); + const [filteredProjects, setFilteredProjects] = useState([]); const [searchHistory, setSearchHistory] = useState([]); + const [isLoading, setIsLoading] = useState(true); + const [error, setError] = useState(null); const [projectsEmblaRef, projectsEmblaApi] = useEmblaCarousel({ loop: true }, [Autoplay()]); const [reviewsEmblaRef, reviewsEmblaApi] = useEmblaCarousel({ loop: true }, [Autoplay()]); const [milestonesEmblaRef, milestonesEmblaApi] = useEmblaCarousel({ loop: true }, [Autoplay()]); + useEffect(() => { + const fetchProjects = async () => { + try { + const fetchedProjects = await getAllProjects(); + setProjects(fetchedProjects); + setFilteredProjects(fetchedProjects); + setIsLoading(false); + } catch (err) { + setError('Failed to fetch projects'); + setIsLoading(false); + } + }; + + fetchProjects(); + }, []); + const handleSearchSubmit = (e) => { e.preventDefault(); const trimmedQuery = searchQuery.trim().toLowerCase(); if (trimmedQuery) { const filtered = projects.filter((project) => - project.title.toLowerCase().includes(trimmedQuery) || - project.Description.toLowerCase().includes(trimmedQuery) || - project.Team.toLowerCase().includes(trimmedQuery) + project.name.toLowerCase().includes(trimmedQuery) || + project.description.toLowerCase().includes(trimmedQuery) || + project.podName.toLowerCase().includes(trimmedQuery) ); setFilteredProjects(filtered); setSearchHistory((prev) => [...new Set([trimmedQuery, ...prev])].slice(0, 5)); @@ -123,16 +80,16 @@ const PortfolioPage = () => { setSearchQuery(""); setFilteredProjects(projects); setSearchHistory([]); - }, []); + }, [projects]); useEffect(() => { if (searchQuery === "") { setFilteredProjects(projects); } - }, [searchQuery]); + }, [searchQuery, projects]); const stats = [ - { title: "Projects", value: 5, icon: FaCode }, + { title: "Projects", value: projects.length, icon: FaCode }, { title: "Total Revenue", value: 10000, prefix: "$", icon: FaDollarSign }, { title: "Invoices", value: 25, icon: FaFileAlt }, { title: "Milestones", value: 7, icon: FaBullseye }, @@ -160,6 +117,9 @@ const PortfolioPage = () => { currentmilestonePage * itemsPerPage ); + if (isLoading) return
Loading...
; + if (error) return
Error: {error}
; + return (
@@ -201,7 +161,7 @@ const PortfolioPage = () => {

Tech Stack:

React - Node.jsNode.js + Node.js JavaScript
@@ -320,4 +280,4 @@ const PortfolioPage = () => { ); } -export default PortfolioPage; \ No newline at end of file +export default ClientInfo; \ No newline at end of file diff --git a/client/src/Utility/projectUtils.js b/client/src/Utility/projectUtils.js new file mode 100644 index 0000000..897a957 --- /dev/null +++ b/client/src/Utility/projectUtils.js @@ -0,0 +1,14 @@ +export const getProjectStatus = (status) => { + const statusMap = { + 'In Progress': 'bg-yellow-200 text-yellow-800', + 'Completed': 'bg-green-200 text-green-800', + 'Pending': 'bg-red-200 text-red-800', + }; + return statusMap[status] || 'bg-gray-200 text-gray-800'; + }; + + export const formatTechStack = (techStack) => { + return techStack.join(', '); + }; + + \ No newline at end of file diff --git a/client/src/api/projectApi.js b/client/src/api/projectApi.js new file mode 100644 index 0000000..c7a378a --- /dev/null +++ b/client/src/api/projectApi.js @@ -0,0 +1,52 @@ +import { axiosSecureInstance } from "./axios"; + +export const getAllProjects = async () => { + try { + const response = await axiosSecureInstance.get('/api/projects'); + return response.data; + } catch (error) { + console.error('Error fetching projects:', error); + throw error; + } +}; + +export const getProjectById = async (id) => { + try { + const response = await axiosSecureInstance.get(`/api/projects/${id}`); + return response.data; + } catch (error) { + console.error('Error fetching project:', error); + throw error; + } +}; + +export const createProject = async (projectData) => { + try { + const response = await axiosSecureInstance.post('/api/projects', projectData); + return response.data; + } catch (error) { + console.error('Error creating project:', error); + throw error; + } +}; + +export const updateProject = async (id, projectData) => { + try { + const response = await axiosSecureInstance.put(`/api/projects/${id}`, projectData); + return response.data; + } catch (error) { + console.error('Error updating project:', error); + throw error; + } +}; + +export const deleteProject = async (id) => { + try { + const response = await axiosSecureInstance.delete(`/api/projects/${id}`); + return response.data; + } catch (error) { + console.error('Error deleting project:', error); + throw error; + } +}; + diff --git "a/client/src/assests/images/DALL\302\267E 2024-12-08 10.51.40 - Generate an image of a modern AI collaboration platform featuring abstract connections and nodes on a gradient background. The design should look slee.webp" "b/client/src/assests/images/DALL\302\267E 2024-12-08 10.51.40 - Generate an image of a modern AI collaboration platform featuring abstract connections and nodes on a gradient background. The design should look slee.webp" new file mode 100644 index 0000000000000000000000000000000000000000..77eb75c1f6e7ae5ca1f353b92b5de80136a8ca88 GIT binary patch literal 277598 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%0D668N30kbBJ+43dz=86ri(8RYpf8 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�YS4RIYx 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%0A?MOOWI1_eYRvbE50fCOtSFOfnWO^L!j zQs)I6ms=mJLxnd;olLT z3qMUirng_LAh7^FK*GPxbVa{D+ljyf@9&VVlZh5^-32292Z~yBqqc;t-dvo*)v^2P z`vg&r>%=mx9m6TCHuv}yh9K(3x~C{@3}xbC$%d6e66G;4!+z9`MsWrscy|v`TTUWh)d6z6TM>l{8KaoUm0Z| z%0W$I#Z(Gt2LTl&nwC#o5>|vu0~$xId;w`@im7jZ3ZCqjD$$JEiu_etM79IyjzQ}A zt&M6!3>RR}$r8iSC4eUdYoN2o=AAqXVE?djb zqpl>{I2tyFD!x2)n^9h%|F79t&_D~x68B{v7cM+cti^Zd5pn*N$$K%K5Ah)lROGdI z{>$e zaS6>B+0PB(%-%Lx&bA^L6%7}|P#DkyfzdX=io$R*gk7KRxqQlK{J^oE0P+&l#v3)H zsv)(S^D~1${i;vB1m!p`cJ1A0l^P8`a+c&`{+GyeAT8)n@7r+g0XR~8J-K;~ex6xa zg{nz*361omlLgl)<&*JUdDB44;xfR`H4^Js=XRr=^w1j`tRMa%rOM8NPwB-#IRcVd z^_=%k&%y02`eLT#6A@;|4?wYB4`Jie%B+Ojx?oH&tDwWd4VP;FO&Vg-Eai3%m zyWH?Rq7VO@+QR+z;X`1PpeWKwH04OyJp8TXMx%_Pr#XOI+)x4R*Mrv4l&A>7&tfn# zfq%!ut4K#HtA)aEN2RWaOW{hyk@`)@!vK|3lfWFb!Vf}Mgayf`EJc?UrD+G;?RPWkF)>F95O`-iGMa8}lw@h&m%+{X5ducUghah~E-VY1f{Y-%%<`{{H2-UvOS~P3Mk8s5u10+%zuwPu_L-d?QWM zra(0YqTe@x;lcIat55m&{_+duxArXCrxq}8WdcUrst+T<{o$mk2d~N?Rlu(`l5uT6 zw?jHMCF><2t|(nS@R&qa`@`8~)sxa|LRC}gRkj_02o|U6!irNYu>s72A^OqD{PVHZ zqQQvm#LhRNxeS13eF+Yk@c6ur{GZvu`Z)N3%A^X#j5gBeY5V@FmU+8#87GE35{36 z{aLYJY~$zLrSA4SNT$);gI|Ck?CfJLq=Au~UD$^Tv!S|O9-4!%Wa(O(_a-sR&szdm zJ~5PurnHISIe5e9z}VB~X2YuPBIt0qPx%fUw!;I@IwnE$m^zp*aK+8g%or+<%Lfc~p3*Q$dYQlfD%(?%Okf;psy}JUBh2AJxI0!7mSKA=2DqIp z{ta6dw1Dd$sTPFCb~BuN`?uW|=CH)XwpnQr>^ z*|*fF&`Rk(ymH})()MQ&EE-d9-?9)|3(Z^h)N{1rbeE}sqa(BK(MU|5z2Z4;5B(da#7Z%SxkvPULyRAS{6ka)pu;W!gRv%QV{c$R`zT znZV0BI*V{Yt1G$xb(xGoHprY?(Le;6Du;5~@iWNyuGPAr8 z89?4Nb|%q(^fCZ4x!zB+>sRb}A(60<$>OEh`uxsdi2X}FX_meN1QvL&vDSljb&BUM zSlSUwbqUI0P>IYgvq$vol9h8QPD`I%k8W25o0-}thr%QVXuzj4#Tc_R1f1yL&q{X& z1SSjSZWed>(MsW4#GkUjc0zb}i%pK zW&qiRki6Rj@>Hh<3sEUpECtw0b!MDPXej*N2-as8TT3dO)%N5qRAwP+8F#Y^ZKWC{ zLjl^Y#IlUL?bOc~&e_RISAO6*qIeIQqEVNVKg$qnlQ|ZbSTIpwa;9+e>CrRgSEWEBq5{HrX7ZWs zPeAWrp9e!`ncpNB`rAA@W&J9#Oig4^t}%>OoE2QLCKG)8PKTTzNlVvRUJnV3gf5?; z^wp&d>3qi?lZ4w6cA#zV&#DLyZ(N540cAzR(fc?6W0f&|z=Gt)Z_RDfJ5>Xm(A_5G z+7nBAA4Eky!BAeCil-!LQg(9^lNT1gkHw?D*?fqDL}yo?zNP}wwQViwXq1-5l;Jj&x+ z&1?YefLtXjs~izdk_CYXqK#%}-<(7O|Bp{Hg<4v1;4FAV6pc~ZLm_D7kqicd#CZPz zL6iAA3Hc}5sx~@FYK;)60u9%;*me=cTR5IeAuOz!?6*qsxDb>tRIvM1K2#t8f^Nuj3|q@>a_2 za%dHEZFt90^-L)_?2r#K=bRdqP0aa$(Fg_?_{Mh?bR9aBfVkDGxFrONEqwhGVR}3~ zV1>L#>gaL|ycqN2xC85*Kpd?&>+cs=iE2O6BFItL^mKxL@k+o8o) zK`i@(-&>x(aPD^(GT0KO7od(IOQ{3zg2E>u!GJ`m-+y@Vqb(U}k*3l^ow3akES2^6}wRqX|)w@{!#UEQ80{%Ca+kIK$08F$E(?<)X z1S5PeX_AHADnP*;iwmJNaqbc0kexf|sLN|>St=h|bX5X5e^xS=tVLR8UjT%0Z&k|7 zu(ro>rdhO%XyHy=A8K_wA`Z&&Am3}nULjiyJOZwP9PcUT3PnFQvzq{bThM_uiMYTT zf^Qf^a|2zAyXo-mY8H-A16G&9KOZ;f$rDIHBkDpcvXbXBV6O+hp;Nu4*JlOAjZVHl zFwuxw9DroOWx4KjlmAeEYKVUx2lzh)H_lmrGQ&$gB>3fgmRRyy7-ww5%AmC2EtdiE zg>xwrU2%`=A!rBAfXoa5k#i9wUxGX_n@Ht9D&pG>GP7usyN zX66%)&`#}-+Z#8)nYMzAl7-ir*20e$xCnU_fI^{D{k6KlLi_I-#Ih%ewM20M~% zpgxAHuhXV5hXoTWN~Qb9Wv=!0x5|WLZupkIuU$K=rvj^5qLnO;pQ~{tj4UV%?9m>g81#=H`vBB|A78M zN^ufRU|QGFpab%}kArRO~*$ByVdy{^CnTaBnHCOsVOXk{>&i zS;u;BN^k0#x#_EK!Pb=%1e{|Fqx2=P@=GOUn+ zp;K;wgc&^UD&)gbxtX`OqPxg}t7{?du-julUOa=jF`Be(kSwjI)F8-&9t{w|`)56T z{|?f)V2@P33R@^Lx62#ts~Xj;czX$}y?0u?L;yBJ4(R(<4?4X+wHN)H!jL z(GHVI3f>%>Q0`Mhvf?g?2#bU1PgcI!T zIOOh_B=0?#tcP;q#{g!`tJjse(-+B6(S`yxzJl;3f)W7nCi_@@ACk&`EEpzbOSyywh!7Pon)VMhXqsVWbOH4 z-(0bv8k30>yD?8&6;Nvp(oBftlh1b%YQ7+i=ivB))S)N@_$Xu2h_Fh(HFN>#EPALq z%V#(^NMZoBHZiY;T34LA5h?aE`>*o0mu8OSB zy=kfC%e?AK*UNasjgskC?2z^c?2@!51Hh44itPS6N-QvMCjR;v^`{^MykEy3m|%X_ZLDZsk(s^1&>1%tCA511uVwDMQIZnmJE6EVR&AEnc3y61m5w7K||0hHSV_ zBm0;5E19ZcOg-K%#74IxcpbyIJskE@aUE&tBclpn64h!zp8EBkOf*VRDX79_&p6D@ zamyX>;cHL?9dKrG@D+zo+Bc}NuN=eO$G?6M9b62sfit81jN@jyrQEn(W+YJ(Yg=wO zTR+CKCWZHWXRer&XM6w{lK6EjfJp>_L;PJZB-Zs1x2_Ri-iPv(&>YcKOQ5vuXcJ!z z^WW1p@PV&tAs7V9txO81Rh0l+i8&o3*WpUx?E@YhpJAh(u8pqUqqE}a0TYW~@31MQ znxm1dv)__mrNB91AAll;7*j$q|BwYpKUwC)WX%LZAL$80M;{|{eCh2p@4!%zpGr{= zpgt`F(UH%&AdnW+JlP>uXI)ehDMR!jJ-Cka#Gcf`_y_G{U;zBlTWcHx!jT4{3i?Yk$u-v;mGWmSG6&9n1^9&-$2;N3g{ZpY$d$MHDi2-6 ztpE5C!Ttkrtny6mgCZULg``pt_wUs%0%CIgd}6bzJueydIE)q6=Ve2j+$isuwyJY9 zy6o47_|1WF*)w4jUq$J}nbBF6CrS9BHl2fz!+A}rXeU)fvsB3&qq?7gVZy#yKo;b$UN1t^*qhYB4PEPoG1*K4FMR= zNK%h>j$q#Tl^;amVQK}ic4_`*>$E<~+KG`XS)Yowc$4*lM8kC@_$YzkP0t;PFfjJK z)R`Y(u3=yU7D?ecVCGvil6z;INfE+%{R{QZ(}obDk+Zw|&QCK!DV4`X0&b(^GiOkz zM4~7()*oa7jIzdgJ1h&wSb2|$qQ|x~Xbjm3R<8HU@NKFQ0aVO3?M)y=vKR5j6URc0 ze#g%RpWI5--j~gp3919Dt+V>6{_83 zm8zxKTr~~8;TF>`?m>kW-i%8dPSaS4hO4PGQQfBkyDNPMIqhTg3CETg75f(qe1Sg6 zKh@1?Wz2wT{Qyf6CkI$y(o_v3#5lb0JXSoj6n_!=>%pLc{1yKhjZYAl5G2R{M0D4 zI8T~8P547)>2TT3b$jC(WdbbDJv2T}>&KKbv}BPfLelPwFfC7IjU^uIvAxX|vSO%! z6WK2(Kq7gOB2k61QTDeQ@b<)Po_sBKv+mts5KYC@e~x28!C(;Oht|gzk0x`6(LlUxY8YG#wtDD63PoT%U| z0990jj+V9j>VXBEGR1cDfUB$%|KH;hH%K+{xrX|pj|L+sC|@5UvrnatmCFzI1G+nQsjAM_(6>E^gIt;5-n zcs7qaT(Q{TsQwiJ@1ie}K@dhzwi`^J^Zq)3BY2g}M@gcD&#*Xqle6;pWRPs)D_JMd zK2dW3lEbN~cK-(c5^c9qnQg@iJ!S%&>wxGdhmbVn<4tm}Lbbrp9|TxfEjwM~p=^t2 z$1UZVlS_!}Eqe*ELj5)3lvE@;c!B=-UmLx6?d7Q!If)p&><0prw1e=Ds&2sPjgm zY%Ql(R@I4c4{ZFT%PbcpJ5$?d_y>H9`^LDh+x zb3v{LnVqNRD?kP0{J2l;I)9d&zYnoHOh6lnNVNKfyo8Uph_Jx|-$;4HIXCM%so0{h05>jNdfKrRLtwb93NCRyS z;}$z2OjI4Jxd=A)lbuQZf5N}!=~-S&tuN*x3u(27U$hChX@oH-t$k*TJ2a*Dk5ENq zw0O{t1Aa`F<0l;6MOCNXSuy;$7N;Lx?>B+bdI{+z>T7{NJ&!<|`+Y6(@A!Z*RObOW>?U3U1{ zFSl+PPBjnQxuqxW#TJEV>e{IWaO*!%$8eHIYRgC;64Pl%|2ifcf>`wa{tfmjDjtbi zK18k#aI`M*}Z zIufEo?8-$tkx_UzAq?!jYY0?>!983ocTKP_335lIWh*5|8k|Oh_VK|)JyrJpZYvmH znld{#@XUer!Wj^HK|H5S_P%?QekPrT8XGjY;-_G$I`+F+$5rP%O+}!}uzURQ2wM4~ zzBvrDQ5#N0+Y{n3i}A>RZCTD?E_gjBkk9qNT=TiKXsqlw&*~LJNd~13pi)sWiEoUw zoEH@^l^_U*xqIa^!5w^WP}-BwnL+z88hF==MJf@HRSX1ES>PBDq4I;wcW*iq*Dkc_xkach8< z{S^cw_B!Bh5-M6{Es~PeL7h-P$V|1O8BhnBZkY;y>6H zfGD4T*G!`B%;QK$`lxUkIr^&$d-7~J3lf^-NPL2IVINQ?T#QTbP z@CK$Dd)^OuxL}HN>uoD9#r?t^#q~LhD>h9W6kx>a3W=Ea!sc=&n&{T$^>rWRf?J&8)lB)_5h#|6%DKF8;C_S6Q#Rg4m<@Ey(Dg?Zt(tI z>us!ij|6Ty3>4|I@!OYGH|!hDtFn{GV4^^ns4UwX=}t7aF-I7mJ%Gy~EyzllWRTe; zBT89p3mI(&vcz^(QFDM5aBDD1oy_8?{>v#EC#{FvU8!Yxm)O@Q{EZOp^||ZP*?5sN zv2kpkT3*yMOTKWhDL~F$3N-m$k*A=oJ>gc8;>R83bn;^L@W)NsGp4>q#IY@STH4G9 zFb9yS4@?6NEHpG=_yE=osUV2#I-U2>Lx>4Crc|XDb&fwC%NR1#KvPEk?LC$9pp_e= zPlFH`HbT*gBk}Pk7KwLOM}XOT$VUOtovxBNig?kcyeY+% znDXrQp75sjgzsZ!w?n-aoddR3$u7CQk;~|wc9_h#C($+v1VX(@z7Ka#f;|kC3cw*d zEYK-4C3%o`!I$_gB_Gr-VC$!Zcb(7K0c%*XeuM*r)(3m@_-wK-p4lgeg&;Q)yh(l{ z2)Png0-W4@FTl3^t@d=iy{dIJvXvW;T~Kaa8_WGWZGdDaDG<1LFe^<)u;{{$u_@g0 zYSn0dyssAkbC#g#fo~@g!mtySXNoJP_H}(SARY-_i{Ns=TEzBlLvnVJoVrd+4Ugee zNMKqxwNrLk&1#L zX{naUM7H*nW`)YR_KY2|If`8m)Q@3Y2TFz`sQAb^S5U+5{S7#x&=W5n@hG zBB6a?mnD63oXej?P2&|rbD0AuHMQ2jwh?0^;2!(^8UcD}m$|@6MN@d!Ue9ZysSi_p zjjg5E>u78lwde@67@TBEUn@@v&br!wvwS<>92Or_k$Y^2O3N^a>HU0h3+>UPto~4@ zFzo=Q9tWfr>FJEcCaO?N9Hu1xv1h|G)RB_J<+Hs`g+k2f5a+)a)oxCuRARFG4~2Lp zqqbOfU}z7p?EWWXUD9M5m6$_)mxbBkT^NS5;;-t4-hKtX`qZ|L;M6|6$#c5}*DLpf z;G80lC-U0xDl@roR2$<(TRD~W`(G=5TeWyC?l}&$Q9M!ab+%dgP6D_x#l=^5MPv5E z(N*7|^%b(rvc)T8NPe?Q^Odn-2Qp|N?wbYD8R>r7nP56pU+&&gbB7@x))3(}(&ktb z`3KJF^qSA^oG$}XZwlb3E~&_ve)M+cx#&qxbwpIEdL8Qg7I;GK9-??nZy%RVG9&6#&kqRD<7rkTY z7XY!|-giSx1TxEeJJzDS9iLF$wQq+In2G#~VWtpEPgYe+j1BhSMqZ7QIsw{HdPUxh zPbe^sAmyQ_2d)o9K*DNkChN$iX^qrq*)?&(9h_G-`y_Th$%R{`m2e!|QDBllB1xgW z7eT~M?hMzEng9@;Hq!2SeZ{9LWKt1ersetlVuk4d5I-JIjRo&U7_SxqBAc0!m@c-O z8rU6j25H(3Lu4taPp=9EDyKvTv*hoM9dhVaamB!@>yU-)p+TvtcvNti(m7y4JN{hQ z7>;uD-Oa_P7rRRL648eQDSu6qmR3T7?8ZP3-fDD&Te1eqinr@dog+uPGTc|+8fu{| z3b}{pRPNU^mpS1AnyG(Gn`OogS1z`^?HnLI7=J5{q$1rg1kjJn-Os)ejSO7}%^t1S zVo#3^VeD93B#Wo}J}Ti5-?=uuh_y_bQPPtuR<_fgj|r~;8ExK=C#R(($H014;z zQyB+X7p3sWB)z&|!0#@_o7!{)poir!s2eNC(W_=GF|eiWaPD_{2@+Vie`tj_zuj z-NFjq3wY23s5h=G@@0oQcqvCW_;oWNdaXbbEcVWci_6-HCn;n`3o^*-Rt{ulQJrTl zsZ9n<@pz|S3u>a|uTMG!anej=cs>KyPe-;ORB(uw_^5L7XkhG|I~V%Pzh2C$ba3`! z^l$*+q?8&SN||GF0SS{EBw3M(R-&bV&@jVC$2hF?5T! zJx>Pfg&fx~iB|{6)Q1&kn7sTr^!sNk>IWf=9HFj$TFba(n+rVi(eh#p^d*P3i3b9d z1$1s)UzS7N!XK&as@U2Xgkt^=Mk~dJH{qVY^AcH)&rXacNGidPq~Z^xBurh3@B^n{ zg1nCcap~sw6-UMnF33~H_#Q)*TA^BU<==zup=@=;)5A zG_ij}N0bc5(0)NZK2R2O=e(b6YX9n<;S4Xep&&Q+J+CjTR8r^$^b`LqipN zn)#do2eR~N{?*R01@S}m9;R_G=-Idg{e{0vpOfDX3`mc|P042F03^izRd{|=qC43qjE3&Vj%9`E!|Wu;Tkv7^VvH4ZzP z#z?J>qWNzn-zE(TSy}Rwpd?597(X>cn{8(*Z9`+sEV`RWT2vr#?IEE_3J*Fm6QLM! zKz0J&Q7b55jLFE!I8+qH1E5w&0Z8m?(b)jMg_xjs4m@R1&%Z;*jStZ)yRE~& zy%8Q=gLK-qH#wT8=t8{hbso_xR29fpA}<~W&N^Ad$U48)1MmSSIwX$Bpqk|;3d`jl zE_;zOCM2_CqV;F=JTx|NvqC`%rRV43jFIt&vr{TSZiB|%=PKe*e1LUGK$Q)!SvhJ@ zQ@_$~3Dp>QxH#sWy~ujJbJ(4=>^jj_T zuX~^_rtBU5jbM@?8&`Chc{E{j@B^bDc;FAOEFiveL{$4Xx2vn)=2&X;LdJl)`?i_cRA z=ze3gCuGvTmW7sU#R5oe4)TUhjsW6Z_T0kWEEGH8;kEieal|Dy{l-XW=0_E+7V&0J z)*ZSGdVZIkbe?z0rE!k(@&likY~|{ou~6ku77f_ZTWsC)QT+bJpg;kHI(k3BfbxtR z!Hn_6AyfJmq0rTc9PcDUZ{EO zFs!Gg8fcXHiw+ovY)Ps*-V1a4jlmNeu?O06`-wCWoxuWx2A1;iK&&j(N^FFp`0 zi$l-Ai4y(d1Jmekd(w9Zviy%5=M(OF?;}D6V<3fqwCtN{KEuPd-q!~017fuvXmYo@ zZ>E+x$b#GewFINjodP%|iTRc(&g@ZHdauRO4!)0_x)~{JGR=i*m^qUZ$1ii}LJO2P>=}dRLbHeOPY{{$ob*&soj2F5+jI>+vy1~Y!;(7gJ5$oXkXg9Q! z%6^7k$mX;Z^m+x9$x(A%n_F;#F`>9%Jzt%Ex-LPwA;bhaDJ0(3jJvsQbQSyg2gHFY z7^C?63Sd7hXtMN-%U4O~FR0SK)@VREz?Ci6z{lv#6={`|1`Af_ei7y{ zxNc7s11U;iC!T_&rg&dpDJY$$52`l!yyzgItb$4D0AN~TayNT6-M*@N;5=~8HI72_ zu|V9aF3^O_{`z1y6j{@TiFyDIA^F6j(NTCUe{UJ4Z zE(BIw^TdX7wXvx!uUwbvjt|xiI>dE0jNZ>zer!#5j zn`J5h#O8upp#x3zy0Fo@fSSGeC5lEbKVM&(EbVjUe)yF4Uj1Be9A%4ocso(+y`Iau zy~*}1-G0E)6%RC9U*}m!ZM<^*0@O0bE_>yH=GWC5U`nF7cKxpmNI0iHoX^kaf6RnG z5Ym{%II|zqU+?NOSq8V#o3LZ0O|3?2fhWSV3Hdc&92#@GecKjBqd1{jxgj+t5my*` zF4Rhd_QvGdC8k8bq`>li6eIcPr)I)TQaOM)m0ME-6C$k?gJ3_Vp#3d(CND~>GxqG4SfsDf4bdgH? zaXonH+}2Z8Lx8Z04%IR1JkGR$1`x}$h0LdJ*Z$3GZy!?$`76T#hI_EZCivJq)v zrgD?tYWLqk^MG}2j~qzADNSwH)TSTOU**wd)r&xPp&<0zK-En8Y=0D5vQkm39!L=xHHnD}EK51i&y!)YqPxy5)_4m7IsJaq+E zFD`T`oT*g^E&$H4XZZAx22HYXM0%|fTHP6ekzF-^ffIJe zE`K5viez?8{S%$vzMAzAk%N%P>u4tW`Y=s0PWD|!KDuE#RH25KDtVRJtDqroGGI*3 z8e$(>$>0jC5lS=hZKDuaP?tK(>&G`oyLA;#OxD(cjjS;tmV37U06&AoO>(;2GMzj2 z^4Q91=!Kfqp&fOt$4t{_P^^3U)mz7ja1j92jbr=h#Qvrs{9g0J2Do{#g6`tw>VKd*CU4dQIaz_QZ{^@bJuM=z8w^R^iYvY=u-6Q$$vCU2gR8x) zKM}i=&eEHxAVbSS5%hcsolFdBJ8;+T!Ut|yv7iTRBhr;40OH(kS~dFMwX$HUygd}~ zc!b;T)iHPg`03>rfmLc@9V|0VMM`c+(-ZNNPN?uYWkzfOYo;gUUYQT`BLg;~)hD&h z?=34sCmWZ3#RM;VX908^d2kVL5>^IF9J~_GErQKjkThnuv;dTn^SkEW3rImk zf&j`O(46uTdd2|n{Ld*VlP?K;GO&%10k!W_sj)~gwq=?H18YUdD$H)Ua+|C z;!$)!_uqXahm-E5XC?*tPM7EnkI13x&8^F?2j3?zUVvfe_7(&i&s*i z>{{(WCgWyntJ7)(NqDiyfpB8imqCoM8ROQ0hq==jQrXx zZ~;Ob(WiLl)>bqC`5CWhCINz^TWfP$()$_#fbJh~QMBvMpW~OG&%+lO5}dtct$2TL zk`$2@flBz!A~L6M$7s~Cd#kpB%DP@%jBlFtfqRZuPhCml?6buV<8NA^#sWWz16M4Y z;T1R}k8z;fjC!n=%%ydsx!WpZJVv%|qBdeQwZfMhfPVK8;SnAoenD#b1ud6&mu+7P zdq{2!?7`wZOo3*QfRlxJ>2(_n(jdAXQx}q0H^~f}@aI18_=Hczewut&ooA90L zH0yJHzY!N)C<#u1bbt$f3jY)fHpyrnZmS&&=Vk{2ZGVijf}kxpGo*YfV2@V5NqcBL zk-UiZ05E#vW92;+mg8_5>sP!*m+b{z^%G)h#vcRw5a~J2sZIQk1&;#^?h$k;CVqeU zq8n3vhhWpO7sf#n0Fk%p#L$xrOW^*3hK1ln_EO7yVZQ}zkVo?DZaJ%es$x!UN1y}% zkyn(Xyk>k2p75k;5o=*4?{1xD8pSu634W|EL!?q2hMMmXDi!?Wm2>cf^l5ehwYkX7 zvyvP!VD>C%gK`S{ued=vc9yE~e;IJ)cV9I?HqO=woRn&M6k9sKUZnH!1~cUg{m-)3 zPuTJwN8{PBq0CBZg_}O*;{Kc zFX?cPO*#PfFh@g3_lcqHg+4u@B11UiZAxcI5KiB*`%D(@!#`(1b=YiP~bei5H$-M=pw@cJn`#%>9sI3^cK zR=zzGi^ALNLnVZ#`L~Qv;1Uo`;bO0lUPxUibQ9syj4JL0Fkl?UhC|;O;hG~qCp(B; zX!;&ooYaI7R=!iTCbliOCr@&gQ5lt|d8>>nOm)Qb$ zGvC(KiOiwhMLXG(D9N=W0$1E{`EYu3twgR}Wj;%67yoaE(zY=vvHkE;v<{jqiW@j@ z;s{f*w{C9uCv`b%_&ilF)Rbf@uxQ)#{#wI08^cznP3?aVRB#cU((5{3$noI+2IDOP zzSc2W0hVsihUAf*f|H&$*1Omll9mdj_Xb8QvIO5}HMR!zHv+?=H*n`f(?QLkbawXq zMD8#5I*92DbBz#(eO31^RW_N`l@>tXXu%*>HaT{nG=~BUgTDZc#wr;k`h6mb5Lu2j zLZyoE!L<~0!*F+_NJxj&Fx$dSPeSvEW5T-NTnKgPgA9>$BFlLDw-vgsvMvyL07LQS z2G%KU_@QSiIpiC!+{w_jVA82f=Ura4oCjjb-vtL|lg4d@x?${JNzK@h@VCSO%?oX6 zA~V{1S>lJPLdr+YXkd}VRI+$Jp~K% z83~zC*vmt>)O&5VR%(6JTf{`fjtSqM{T~NKd&!jmVVRyT(A@$iS<32( zrmUW>?*JTb+9UYrQNs4R*cS2lV8Qzp^=~dZ3Dct$2WHQL#OK_KecRiYbH8J@Tq}2k z`XJh4?HfH^vL_MzQ!Mc5N%q`R&3RZDMNCwq@?k34l*CUfE>w-q^Fm6!Ry&K#WWnz9 zm~C*d9)Qbc8kqD|6Nqm$@r8A@$U}d0l=hJ88yvTFc5$XGpo*jt26E3^9ej?s9m1_> z33p_N_~HJhVyQ&nEjAVur(802C`81mAr;U_&&Go>2{*qrS#WPc-0nKSm}Ee402&fc z`Jclo|GLSD&~-Tc2j8OMY;n7>D!{eQk-haMpY?oaK_G5@GtzzV!O1YtnYg)6ByM+r z?Sn&39Dejp97g#{V(I2IM*|G*!(_y0&@gl1|&U*@mkapUf zNfgz<;NTE6-jzwv68CrWn{e;8dEN3M9|-KH6ma8u9%yq)7jgV6@Q>f(Yoc>^`(XJ> zp`!?C`1o;;XhkqRT3dk1TQ)J*a|P1wT>|)9wV*!H)XFEBWIDUhGj=d6hoq_o_|9y) zX@6_EnI6&Tuuogh$1fb5%cl{@!#!XcCt`kI3FFx?d@v$ROI5bIF(b3fVquS$Mp1eL zxFXrdA^R{#Uwsxn$y7^5XK;!7+k|g&xj%Yf&To>w%B381U-F24*?wGV;i<-JLNBy}>Gk;;wMm^lQjj>5|9nUCKc|I13-)={CH@v!V|jf&a_o;kKbP zdsoj~hB>~delqioqzr^)oLv6lk+;8V^&hMmuw2U_@AU-n$i%7Ab;xC!jOl8XXuhP0 z-*a5v&Lwe4hpU}jdK%)GVDLpvwlL>eX`YycAwAySW{bCkgkQR~869GWXu^R#BWs|| zUKDlBVZ5|_b}HC1)5Q9o*wJEZwdn^uYomJDcBkXdXO(4+mMlGs-qt*YdODglegu>M zDSQqy7+gXa1Q866t;L-27T|kgB)iE*aHp6;S43G8nq{VZR(tRa`T4SFIX5Gg5|~s* zOP2(Q<)8p=d9s1Lp)H)V1ee(kX2aW5KR|e_>hzW@zaW6-MnGn6fN+$|uF=hOZJab8 z@v&@9^)$z3|7dBud0V>}D>SrOY|YJ>3eiwWL?=ip zY~s}VyUA%F$}{R#c^psqBw0leK6L@0=G3JMt1&K4!0u}RKiQ5tUm(%*W9>zUUwU~H zw|1E67{uY@+E4Q@Xn10_iFTfiqK@hLOd|lx&}$#HYq*$mILpGK!NDF2XUf-EJkJpr zm8Et$({)nm22-3Vv|kLdoxlPtsG|j_J8D{Gv@j9~>}S19&Z7B@hAB~?I>>AcmOgw{ z`l%sWIp&g-*|~Hg!R6T{WL+b|xT}opvm67Nz{P(BTDQ{F`cn=(X%gHrKpL)!BuZa0 zt1mLPz1bAEFNjj()O%jccR{FrFj?+qw#3XZ(KaVqMM))|AekP!d`lt(n)Cu~o*}l_ zW!KI7i?-&L$vCU}+9Z;-pNt35zoSM(t5pS%YriSxiGeZLHHZEt&v5rdi7Vm3lk<@F zC@(gg$A(vBOQ3|@w-aCV98^YF$HqrL?z`xu07XE$zv9TDDipj*G&xjF<2gZ+OtZmQ zr7@sY82jKp`YoT38_Woy!ISGcT>L3S{1!D7AglA%40|IP~;itc|>!xPej^d*n6^f{?f${ zb6p5sHP<;+OsS5suSodE0wZu^2a%zlFxbniFpVEN{AJ-YANnnW^L|hDUamZ_Ly2jU z;&agOk^V)7d~aUqu{EYEg1ReA|Jc`Gf~137*Lmj)lH0P^P1SEcZYHBIUu16*%}%+^ zeUnfAcXhpYfxG*VTh~yPCEclbAQyx)|3NqaQoj3CY`o%ey~D%o#BI%gxP4hwkz{}f z3PJMPALk`{HqsvgF0WybRM>PMmcPc@N5>V}{rg#6ZK)$_N-n$Ur^>3LmP=E#Mqctl>gv;zHqb{xZrkNo9Isw=`dVI)L zB@?&b2fymXC52%>snKgk6G~0D2z_fYpK1Wq*bq=dCp_!KpDsGbmFtzp(NXW)DYB|f zsm-yn!T``mpCFz+;e8$Q?_5jgZlW--wt!H)*Iw2Ta%rkiejg$%&G}5VxzI5PV;I?O zIr&#CGxGHzA$tGwoU7OzC>gvLq0GsXoI1&+Lmno{U=`)tbi?P>c{PqUHABxh#kw%9 zD~|u?j>p&w<@e+~7u9yx%4d6mS{+BIL+EroWFt4Lt9lk31gC}j&T`P>r+ZH2E8moW zx}B#em<3JkM;LY~>d0J)duo0@tDZI*GOnj}#7Uf_3;fK1K>I?OsQSihqUjeR&vbSC zG?k8jiNjU2Z+3iQy9WoSp~SrRh1TT7+gqpzZ9fd6CY`9CXLQh@JYMQzTzxcdnx8)D zX}iFAT$R`TiIb*X{0$L%xC(Rc0EPSWeP!+^d2-ZoZ8$S2X$V;{A4L7}JDV0p3+Pzg zV7e3%P_8fC`|`{2`B~#YCa-6+EcFv)Aw%S01}@pENttYsRsfS zeSBXdqW%lSZ))lqDVvXJOGZ)9Kcxld|@zN zcr;a*Y|y=(-qh=$=yj{+wBCLpso3bBmXb%^Tur}r_UYd`_lMhCKXH-DJ+rg#1=JK- z)_Ix;id>;1ia69*uZ?l`c4*#%7eYM_OuoCs9I-{3vd*3XbSD9tGx`oQlQ6-8DMMuX z_DBZWrg012FH?<@R2_@-mVgJLIAkVY9%@kRl5ms{iVb6nzexA*&-pH^{<|B(pxJps zL;Oo{$#PfSw}6W5-(}LmxBR6!?FpoVP5pbTPHJ0c4-z z4efJfimkIWuRSnpNiTncr}RecwNPvt&{jcZYM~h-1~r{sPWg=LEMB@3L0!FE(jBmN zP|98kQyRb-m%`vzg8pGKTp>lV{TDoOIh@$;6 zB~NT#ub336I4aV+yUT^wa}6F2qDPm3oE~IH5pMlyRU=?Gq8wsI3@d4aFY~$rQ|Ugl zBKN4ayrm-f*<*rOV(vtwxRq=Kw)T1b07iB3yB(z)nVw;Fag4iz^Ce5@b*`7`2K|elrGKQRuU#~S?%@XV1^c+ z*;naJ8apY@|5&#)-+VbkY6(p8D$`}C`EX+HI*iK!>vf}G%C-s9~@i|?~|lY8EyQP3ZRq5(>3&b*VNJ#yEuNJ<;~7r znW(yS6H+}aU0b7tq51zB)t8^EbD!D2&3S-rs=gnI5m>6S2DWtMEEm6F!>$F_J#+5}zlKtDL63F!I9FCR}|PMQMs zI*p!lADA1{8Wxy6+giRJg(h^gpd2i< za4coHnH7p~C1*k)U5VAve+NnZLFBue8G3SbdHMjimJJbI~ zzQpN_^|ID~5w(ydhq5YJ$pq(ySJ9IByToqhT2|QrENJoZ+O(0PPF+;wzugKzC=!oH4on!6OjV@clz8wOtfj zyDRGQwPC;%fVIgpM`t9``-TZ>0xJ) zY}+8A%a}6{4vEv_*Hur`XkjQ#EpmLgKYon2w8_&D21Po=#a3 zf%I?wO=xDZb1d;;{*c3A6czVj@p!0U($qcw-uNw+HYug@u%#&(8B|SY1cmPe=xOt} zvUE1a61d6r%Jdy{0fAhF6PC`i^|^%Sk`L#*NT^V|2A!RUHRYDpr17BP6JST~VSH%F zaxm~zPLSqYsx5JOC;-&7UI3KP=p;&tnx#Df?T3LkRSfvx^aC<-y;#f3=Nc9a6U4=C zP2NPqr=gIbI@(`YxV43c9ui>9u^6sZgEURCW&Ux!>hOio2&{ax%6A^&MYZ21RBR{E zEz#AoJvNhS0OJeEK{q1`?BeJgNbK+{oCQ&tEA3a>^M;XJTX!!tv6ZcrN>@|1CV-jS4Dm<;1wKtuxQ(!IGXQi$!-E5VVBzqS7Q?6y9%l6|KyX@!Re314O>IU7+N z{Zu~R!E5k!grLl-PgVDNz`>K|Q(~jMx7EIn-azpyE$K6!K%gN_s%mdx*n_Be1JV@) zJenU}h;8SfaH4_p@|U1ve|x+oYLY|uPEK198?9*dVZ8f)4gUNaM5c|_?%eRZU zr%;Sfx8$6bEH2pW`Vl>KAzQjpcO->aS@W!NK6+21Pd62z&0q~ZJ_#>n!pvMWiCk9&=W0k2Il^76lF zpqQ1^YaEZI%(zIK@>?KyR>bc5rbtOR|865`DTPz1-ggNo9)N)ltoNDrDxNFw9}kQF z>M|}Es(a;G0L>V`yh(TJ1%HD43j+UqJObUMKbQ|CTkQ+7?P#Mc8M6>=y+-YEmtmeL0`Ul97bjNMPjq@HA z3^xz~rJa^;6F|5C*^9RY&WcJ_27Nl^b$4>V+(3az^_7SrN^8S~ucBtwETO4Of}4JG zsDDGioupZH(PP>aSQXwYS+Udh1mH$YXcHb5(e^b=em z{*=?GR{F-3U@Mh_E7rGmjw?qSNx*u*E*|N08l~-*%~#i))Tp|T_5PJvD6L9G7XQVyNr&j?E49xYAw*2*QJLz z9y!_IG^0cI!a?!gmv}@{l&^5FG=<=a+Y8IRG743E7On&X9+|z_2I#iZ*9J#B+Gczw z6YagGN71}l_Ns6j_KJW~mDw!)5dO2W_;=H{!tI_ELHe*YgY%xR%)Vh_JVsa;DeY_T zBlN*UF6=WC{fM=?_>Q~axnTf#^M9~O3LhFEGcPU{n;3QJ?ky~?m&!NxR4AZBj1a^o z$*dC_qeFG!V4M|Y1JjTgwW%>wEl>D+gZn0K?A8qOpXXwubfTM;?A(1#9sn3T&jR?k64ecYfr z9X};~j(qd4F($r6${Yr|nZ2-fqy(0Iam;VEy?BgPm?4giv=3J#z`OEN4$&&QE)FSY zW>s0aj^dI(j@3ON6h}lk?jyF(i3pP(7OTjkzbmg~UcTk!9+sUJ1GiQUe05L`8DaMX zJRyNtw7)c@WdjKVoTq}&gj5|&qUkuOR3Jxka){UsVjZWLN9Bpz*ETs?pgj`VG9N1Z z_Nj=kp>F4VJZes+8zgFS-~!rHZc00mJkJOsS@@(5jel&!2ADr)p}1MD@h8t6s06dH zElUo0%j>}sisAB&@^Y~LmlRW1%D z@?s{z(8m{BRb?iv?(2iCs{s-h090s;P^p#f(62wxQIYxz*ud7uzBn(GH1n9gP&|2i zvKrq8s4<)1kyZZN%iYcOg^Bm6aZzjtc`z_Zw&Yw-i*_yYbfOel{T3&%wh!#I18$^TIQ< z;MQjB!qViT=d!2UM(WqXqwJ17)V-F4IyGsw>D5E63Zn?bt!AY=s~m?d1wC95;W%`m zhckv8B&&iiIm#N{dY+|3szAZ|w#gWme7Zt~G=KR)b>47vJe{+ZDC;DO(?e8L#FPsuoQy0d7~+;%G>P{iK;)ll1{C`ItgiZy-_yDmGK03U;9pg%hDkukl&2K)q8X86Zm+Ua0j z4KR|+`AM8MRJYcB1SCE7Sh?-rPx`U}QnNjWlx@;Zw3lj18}2L2 z0av>+#EZ|8!rVu&fk5P4EbUxQ{Hfw>%}S;L11!$*4KRp}whHj|&O)Fu&5D`LADf(nbDhM-3cq-QB5t zVvZ(!gN5B+HR~7q8Qz_ukYwKk{7NiYt1{4=V(#0pxW2P*8)!kRYRA(pn{Ki}sf(@O z7?sjk(G|Ohosf;kk3N%H?BA|U0!r{?oqQNdj;}J6e}ytayuNpQLz88IsVNPI3iN7GyE9Fcj@)yIiHX@{m?6Wx+enka-a7T$mG_@a*=61Vu zZ8z#n?W1C7WEK!c>{LRtiz$E5pq4PrXWHEM7kJCdWMA2|p3;w1*|wM}n>>-KH_)kJ zBFbD0kpgMni6UpxXrFm0_o1@)0W?elkzcpe6QRc0?=ljKux@0%qyq*ZH$Rt`22{aqIBWeq#^vL z}Z5b9Tg41NYar{&! zwc|sqSQ|m1ZSDAPU@jocBN8)hdt2Nu!_hhqpB%ffkVIrFM8yUwtkm*#$-MhZtA3FFJX+ z1RIemEpJQp#Lj1lyH3qwKc%-V_G}y_JH&q=@-+9+XpLULw952 zw%ZTurz{8(HR+CcP3ImWo5!YkxRt=8Y<_`ieY?mR=K_~yvZEHBnIW|>^lzqGg{iCW zHr6kd9s=5eyB+m&s+1D5eE9e`x8V9zP22vlVZ&yImH^LBOK1&Y5FS>t*bj!>dYt0+*p|B>a*wXN8Oem$eaRl1l)~RU>|c6JKyx+l*hv$&MXLqA zkJ}UdwmRYtC=-hjKRpA(G}#@bssOroO^BClT=;UGqy56EN@-uXgAe)h->8)5=Cp`d z0Fzz}FW?I!eZ<=3!O*W{eM7N-I4OK&6b50p6}@B5P<+zS+K8Ru*zq})Iuqyu_~I0(O9LaTK6IO1-AqtogQ77=cFVm1+1*QE9wC(dSBK5Spvo!&>A1o@p= zrSxfSUIuPSIMkZHo&tR_T#->ioaDn|h|Wi!Up#f3?n#5u_H%89EcTEFhbyQ#R22vd zh+eva%1q>3+i%!cUY^x}vv>wYJ~RbuELplEsQTV)O>G-Q!D6#XsX7_OiX5tZNX7Zn zjUXuprEV5a z;%p~6`g9~2rsNYmxHa6*w*VX3F3x3+fH%FII91+9f9B&DvBMWmq}EyA^f9M1Q!d3K za%RdW@T+%s*PxyA3W4C$)PPjBre?%=Sq>bfZVo)PkRsTLUk;C6bMH8FZ{kB;!IKiY z-|6&^b_8bx7d{(_EyzWQbCdN$Fs7|4PcKN`IhB=c)Ug3hP>vVrXJmQc1e4CT9!

XqSKC6}1qU{?PoK=V+(r`Ea#{-vND{y@LyL#u^i;~i|rKMFD7S`x@6EYcO z&UYQdf$Tq1_*KJunNQ(nZKPw)kP*R(PyGbfS~w-3giN{}%Pi7{Sz`kZcmzKmprn#= zxiW1TdWEL=Y+cJcJS39GC;elJ=!3P+dA9c~Ucd&ssVa^)$@(^brBr?tOt&J~s|x4) z$NE)8lVhmRwM`n^M=L$Ym2kP=7E~8Lxg=y`kMqw(CatOS8J-grQxc^F+Ue!$akm!` z&oqq=HWoMo(=?sB9_2X6K`Cw)1O6s9zxCBWn5?S&5763=@gwSt%y27M?2M(mA&^y& zK*E>|BAAGnP$8sK23oZryFXf?7Eo83&(fkyi%`y(mLn96Q9jV|GIz#D)Kx+9$uwy= zdq_CuG05h5}OtNffWDa=RROhCDmo-ft>QU}YQ*2}$@)3WT zHI$Xzk4;5J7dLI9bc0NRv%i@bf4q3FdaP71^x%9I89MmPMkQ^sGjAWvxtYP?osa8Y z9NpVz-C?20MiK0nKWMEe2U3-C$NqSa?vH;{_*b)o!E-NZG=5FR+*{32;V{od z)V|X;Nn_7?_0(3#{Kj~RH+elqn}d$D`4JBk$l7zBwE0n!#7VsdNj^^pr7luuh>{{Wtg`u_lhZF7cHb+yXRIv@FJ zzpwaJb0Q~2^d{5d`(?_+lSaAf&71*IR;s5SW{q%JeDRf4IJCUTFQoD(k`2I^*r_9- zBBm4eky7qyUk32iWl6i)l+51sp(+e-oye$qopk9oXZW7S`%(tFfag$&M)dyxp6EaJ zar%#O&x?-1se92sOyO+(!7MHz`ZIzO;F8~Pp1m-Cq4%#6QRP2GvSfl!oRie`9W(AI zTO9Qx(7R%iNPN&#M!cCHg~y@y_Ul^v*s%e&(=_cCJEL57is-v0n_dwx}ywNY1l7~(6&no*AH`qb~VyDJ?gJ(f_a zxA91MX8M}vmNMT7=2VpGyUmwP&#A0ui*o8_sfaE!-m-XxKW0fAJAzbX3epj)Q8yGr zNoX|A2VS*{uG6s8FR;OMI~urRWw`yBQ&h9D)nPH-La&j4_6yZp6)^w} z(+odx5cK~5c>bSWjVqA-<0LyI=*!hu8qpCophTN)n18V#{{Y8LbVZyEXem(IEzs@e zMf{$KbtX$vozeqsU@`vyEKmN7deSd*DI&$>YyG>ZF&$cO>slwJjO3NftChqGKiWUY zRm7VZx3=a+&wA15;gl!8paID9uaJma=-0Q&Iiv^t}PrzYih>867g z?UXP}dt}Nqc@gphDO1m0{{ZB1Nt=5Z-Ce))!{qE7mW)Qn>QoHlsQ~q-Z7giC6qCNc)4%3h zms6Z9u1D|ZkV=FORE+I!T#d{W_6OKe(8*=A-1qlZ{{ZFl-IsJrN7ir9&H+gA=D6c= z9=`to{<_l-N7~g_*&O-KE;)7$#t&I+Th!$Umlu)XZ*q|F+p+wsrx{tv-EFcwyq5}+ zjVJ2Pe%|5Yog~{E6<~I<3>xw$9%XBvUph)qaaw%IE|B@f_cN@6%vNKP!20{=Ap3(+ z2X*LkQhx6%(%KSO#;q$ETWl(&q&s(U>5p@P`qWhHw-tFf!pU8|ixAJJtb=v6!Cd#8 zAIt<9{KXT6RMdZ%XQ?81gP%jrlCBj_cw6 zmLiR{TcivD+iZ>f@zwtT4gmN1SD}HzsM z%-JWBYv1KdWAG`}oZFP0+Z*ThWAvrUFKXVB7}6R9M)U1Xyq=Vp_C!MALjdd-Jp~Ok zu8k>E_M427{Hg^lv~OYh3YP@rdU$s#bgkz903=bGKsi(Llhf1Mv|eX4;;(c?7tY+0 z5OPmn@@gEcYN>PRhe>$8YR3@U7(1{%K+is>KmBTr)!DQo$)YJqb=VL9p=fBSbGx!J zbI&H1Gdg31M5}SQ^{Khgu=XWJCD&_Vv%$_WQ*&6-Y3Or4FtAY<+wGTVEEZ*6&DpW& zdHjC0;$!G2OP)J3^xhfF<%p&1D?7?RiaEFs&K2?i&rY9*rFo5?OHp-3owVXHn}NF@ zG*;v8gZ<_m&!&HuT++KaCkwkr=KlahdS`WRbCMbAjq;S0$wp zW12rRYL<|XO42QQiN)IQLt4_|LKO(xv7A@4fW|s%P*A(E$x;`0xtl4HR$>v!_Q9_f zaj8~K+wRopT(MTU4(S4zk;e_Wl=b|oZ&EPiMWq(*%I$a~ZLUh6ek+x^r>UZ)&8jTJ zb~wXTLad_nWJ-%Lwf!C`(o3BwV~0=!AQAGvsP;aG{{Yus#t$>IP^$?D=ZwIGyc3r;#lNB%y?`qjk7Yf`~qH(9z2!FN2lW6*W2 z9)>c}T&1YMu$_w{NroeG9FBsnBt`RTXEZ?etGMKWAQ|aTn4VjmABDU#sA{)y%Vlcv zMHGt9At6;jIqG=NwR2a*MiFVVYE-QyDQscu+70fJF-zNbh>}1jl|Mo_KZSJRu@J2v zai?RJy*C*)(Ss^iQaMVlDTslVff2B(ByQSbWxGWE(fZIyG-ABgey0-33WjYGRjD;Z zsX=Q(<+&k}ME?L;7jN$^bYZK?l&+3!b`}_#e6v~_H&*MYK&_Cnf%3Pnv9F@UVd0FV zs#ExngrS(!$gy(6R#&9|01rR&GGlkMkfiYxC$AX?>JJ9KcC9xT%Qa?wwKq=}1y+o% zyuYmpf6?FgHWS?m!1uwxh1xQNJ}^L9glj= z$)j3zs&iSw-#tGe$r8Z-0J^kxkPL^q7#~od;z;(TtJK-vs^#X>%l!WU$s&6z3H1x6 zDCD~z-pbsC&!@d@Mue)nMCZq2@cC^nYLC%(I!Bf(OI6c!uoVx>EZ*Ju^*#MMeLL+M zE0Q|Cr^sHmKDX9!3r>i`)aP5mVTXv~7>oU{U(fnionA^((E8j47I;{x&v|d;V}Ns9 z%=WBmT}+mi@LG8h$uwZJj^yP_bFg5JoPIg3N>t@hx|gzhTk|~F#nqgur)2i|b@~2Q zBNsk(gs}N(8CDW}nfbBC4s)KlAB||C$u%bKIZ)-Ao$t`7E2PmH7V#ORw6+M%cPR>r zy}>^&eg6QaKOE_Eb2!Il6)Q%SIaZg#k5br{kwt3}1}k+DDIM|D{wF8#udKsURH>+= z`DcjpDP~!PTuXX4r=bhWj`h%ZBri9;I|nNzu$mJtE_axRCuTGH))=Wyojz)6?DVp% zEi6tUQ^ZS_J^ui!l&`N9XL!|$^TRUZKTk?2$<8WF>cn7a(Wu~^{QH>q6SB$kF(miT zTGWM3+7ZcgST8-PTFmK$J=0&qe`2|vlU1C-Yqb9GdX9toemL$cmlINOU%SHN|5TlZVVEKn)PI=<03S75)ogY+%IW-5NTF!fUua#w=$VbTD z!=`AdIYJjo&Uf z<|K1a=4~1m9Vl7gmKiyURVc&T{6WDU;;^l1k#T3EfpWrCjac+J8DMKmxuBE-A~xTz zxc2G!*M&GZ=+DyOIM#xx9hu*JKha~7L#kdT^+x^3ZjSxm=sFL7#=I=c7U{2N4cW_y zcC;7tk3u(o_24V+aw=9Nwz}JQ9v60db*+K8n-0zf{4)~(c! zLl`N1GFp^p)RB%NLnr%E^Pl(+Pv=w4zRLUm0LyR8-Z*J}r*BX5Dod!#z_eVf} zgQX`aOLlD>JQm2F%TU_qYe-3r#&-VzvVH2X^Kh$m+5Sw5)Gr;nugt3kp@aj?JBLzz zKMKjBs!+Sp76z{_0=e^043%&kejoj6-BzfTw_bXqnpjxg>rcSB73HneVmTBpdLxs! z{sP@s@yPmCv6UK{KXv{ee(Ui@ZWSrJ$NKqo3!8}awDTZ|&8d(W##-jp{F$fZj zec{kI^#1_$SGSVmU;DiNM<&!>rU;fqUpY5nd(;>#kQZNL1}1JAc`;m9nLu?-1V=IsYb3Qr@nng4==ms zJg>%nCP!C{9m~~+(!PT$%iSq+oq47Xo5M;n-p4a1O83$E(<(?Ql0d?lBu1JO6BNlV zS%0cO?^OW!>&s{Ah_IELHi`VSuAv58A~vSZ0D%DKZBhhP`-Vsn%AglRi>;MkfU?Yl5iapY_nL zbp1TH%JW2hutj4mCLV6-*y@INn^0V{ry2fb&ng3GErzJVE#db0dE^2!ocq=vy9fV_b5i1?qar;rJ^&Xm(;{n`o(7I&+uQN1?|@BHG&xS#vHP+>cI8=MS1gY zq4anR2eYW^)OVBo4Et!yN*&2mjD})6fA#B~=z7!I#1?ow-u%ZHJZVrPXQo z4YE*@`K}L_7|Rduf3x`X`eveWa`#s3=$5hNTd}6{0V=cE{D9Utj&$N8GTWr~b6bI|DJkO9`d zn#c2l)s&^2detOajmpn)?^R<@W<@2?SXgJ582l?atFyNWOP2CxWVgcNA-s~y_rUA^ z@cy)vEc803cC{+owBCME$CMAu?e{=Fv`wV7E{q$Jv8Cb@rrF%Z7L{^t$Cj+pAG?w} z3iIeztx-2oSodn+u<&cyHq1Hhi+>qDrn*onYC96mbdMT&hvXyWf9{^+>7VoJ$Z>CD zK4&W;ob)*qnRNFY@|2W-dK${-ONI3wCO8Dva*@#rXqGv^J!>Y-qe!_0z%`pXBS_GN z)v=zHgrs!Foy@IANNrDEw{*%Zm{}MM>{TCo@*kkDI~yfVo2t*M$?+;Qoj22CytbAo zql(_$L~zET5q$u!iK%*%bCKQ4)$Yqv31N;YBm^XbDBYNQQ}zzYwWBjqgxgWwZdi(8 zYXcb$*KfVuhoTR2-_TNUvbXiJF8cHid zqg*tsRu7dx$!y>O{(lo!8hwpOt~jGHvSYFe$oyM%BJ2V_!%&a?Exzs_cFf zzsh|xTVY`(Rax2V`7?_Z?BgAE+w(FcSCv6flCyOSfZwNDjz-bZ&ZDL6`4J?jGB=eW zixiWCpJw&^sd8AUtM0zycxBkkaKHhU?SOyBjz<)wO*Bt0Li86xQRT>XxEPI_?y&yj zdwcdZRAp~=T{eHGr{rTgHuvN6U#kAKDBdTLHdHW1IKk?z=xa)`y0SWGOPV^8IrA+V zDZvp;troA6iRO3C7kdDkzTMfwylX1N+C?wCHoXcP-48$u#mu zF2}>}Qn~AparxCn+{SQgQzqs&Sd`}=5_b-q;~&blMgn_u;3>r^6G>&j>9(b%&c zLp4O`Doae2YD-L>-ZLbqfU1@tWsU&)nlE5-sSWfm|?+%&#KdGot*5jPHB%9fn(QfWxjuv-y z04k4AIuCzgR_LVej!8n4Tb|756T(;1SwR|Uk1-izBZ4uUe4~-T$L398Ixm^D?0K&- zqfT;erN7{H{=ACXkAihkW3nAORUx;KoQC5br2hc=&1X)Wp;MXaZ->rs?suI<*y8mK zF6zocmv-{P{*ozQ=UsL^+BIobSEnTX4$Hxy!Qo$0SlT4-*T2}4N+;7AzG-&N1I;Zo(Mf^m(@%%5r1jkS?7@0dj&V%az! zO6QdMRoUH63B>hHN8y#6J|1?rzLB*!VlGJ|%XR}K0gR78b6#)OWTnl}^kGV!lscX^ zw~L>=KRWKc$>mEz{iVq@EY>L3g5wFn8T!{W&bm-cyKi(=*@5b~uOBi_q!dx@W%SZ_ zCtKs3gUGK1(6Q}u+~3i)W;Xs@iXPtFG{iSJBPWl`rC};EPn!B1mFPt~$9JdbR+95{ z+a)BtE0@Pskp2Gv$8ihv8K&WDFY4h=8gnkYdUXE)G2VKzjJV_s?eESoJ-Fa^>(Zsu zNVGaV^D>Cxd0DgNK%HA1Sf5W*_zs*aSZ%28?cI)+^4{IbTuJt;h2zPD?T$ZUf1sfz z^;;65DSR3(?{-_${84djBN*a>IQBLICpp@2$*PY%C(j43`H?)n6;-6)LqGdiO~u?1 zIR5-<5r^f$tK@9bSUz9j$kfx|OX%cfadMHUZKUmyN3r$xJQ|p!?wQM0a-`DPzqp}0 zh{~X5Htq;V=s@qs^A!zgW2P&aU$0^I#pK-!j7Wf=uc05O<|`*2;VVYcTQhFP71S-` zEWtyKtDSAY`&-NQe=H%jNXpMRlS3& zTkQlDkOBz*06vx5bj>ZJC3tq}ce(!bf6UgAIqEHp$Wo^RgN7^pO zrbp|FxS36Rg;sMKMlqClim?1mY?g-vwQ_jh?MYon&=XoycY6TL#$ZSG&ZirOd=Xr(e-s-ScWl~as^ zyT2IxMQInI&xflwCrz(+U4O4Js|j0pR!pn!W;q9;$3M=sO32&VCpXG=UJ=t$A4UoC{S$ib8LM)9SM6^r$e~37MfTIrof0)W6oi@+wtxAS9CDfSDEj3=ii?;h@#5cHuaiF~Lnvl}2;-UuL(qhTh5(3^DFIOK#Dl2ZcjDTaL}c6W>0WOdJjT0v^A|XY2@(qy3@-FTB#@l zG0Eoy^!NJL6Vj2SNUMt>3(? z&1qrzB&F3DT9xFN6Uj8rUPofg#PUg{7^tfwwR_I&ptBPo0P~t9v7(8uX*JHXeQBqs z?8 z8I&{=UAE&P9As=9sUd*edgmjW*t!wGI>eHK4{ijnp>eBAr0x{L})b(kfX!;{4 z&;9f(x>1L8VJg)YwkkEf)T{fMH2pz+3M><6-xw@@jMdFjDlbE_jb3G_x^A5{-mPz8 z95dTpO5qH1pSn+efPwkf4kn_bP0n2pPL#Aee;N2aJUOI8cLmIoV1%1^1C!i)dsok_ zRI1OGYt0_MTU(xdwm4L}=dCG5=g~nM8b+kCTHVJlM~U2Z2lK9XNxc!Aqi3P9 zCbHUD^5EI$%7LaOauy@^V)|nQ`s7woh0{pFICY5Ddo8_tnQt6Qt0kGuyYwB<{{VHp z{riu{7L(bVsY?8l-F_sH#O>xB90Vuyr6}l9lDP~@&mdLgo|R8TT%@9|%kgTW#U9?) zMfv!aOlNnn_O4mCBPiirckL=KL|M4FNu)-|@}?eWK8`qV%ys(Hz17*Dv-WrHzak{M zF+*!`LGxgj$#8pv#t-F>#8Jz4VagZ0dNqHU(CIe|9J53lD%soaO19Jb)N;Exdj3ww z6?M#%`+u6bf9)k?p!$EFNnmB^ujzCKV?~MXEgaR@3IPTkCn_+DTU)j5qZkoqa7S z#%r1`=M==UR#nR=T~Pvz?qV^Hy(tCDMmSUw`Bz+KFngZa z?cYD=8M!-xpKV5EfR~T}T&k~5NFT`26t^l*VN-f29BpoP_5C|mzGYcn=)E1Je`c0R zq!7q35;N7eXYv>Zg(k~|SxQMoT&E;*k|No#AK~@-p7l#pr8NEP+_M2>m=#^h$g1jp zh+uJBEjBsjO>*`& zc;k)j-|(+Og(SV^ei6kv{Y-u)P>c6bUF5F29~Ua5FEvs|E^U>hxWK1kEZIip=nnN( zHjNh~V_scnJl2UFP@vI?cRoqxs>h{92`d?sN-#?v1qWmyeFjOWT$=}oPbhR-0yWC7V2Ilwmu$; z8#wRpcBWQWnmmRFX)3&Q>Nf$-NT_t-2=k=ujv5Int#jV}HaX2xMAP)!)m>*$y4AHP zzjyXqPu)cyZM(2eK7yS%^GBLH7gG~fQua}gFR7xp*BW91H0>utPyt^#47UV&kaF1n z0D%4!IH&Nthp~6N`^cMJxxUItsB2f`@?nJp2uHTkNgq`dr3RJSNVx0nrrEuJs8}a~ zQEl`qxa4Vkrn=r8gMt`?j!zt5fIk}YX9=uNJCd>Vcv!Dspw*er>AoggR>V5St!XOY z6jTnG?~%M79a2&LtmpVxbUyr7JzCM6Wln0>N2P|tI8;)55qOKlI^T#R32`iK6l_n} zk-l~wp}&ZaZ^T!hLkUKT(^uU0DZDKwXs%oJ{(f0zlBvAGOboLC6f_o*b8djZU z<->0qf-ubL7`N8Go|an(E?Xa&;<%5W_ngO;c0FtvQ5rNo zyfoDIxI2hyX1KS8uC9`8KQwbuxL^qHUnw}){WD`q85{dF^Taa@eHP04X4!$W~OalEhX}k6+N@o+1>f%A@J}n)gtpgGRAW=Eerx z^dRzUvogyigMyavJlrlimNm*Twb4Dj&U@E^eNClIHESi+Y-EcA&fD@I#2kJk3idL* zW2HVxY|P;OjIYr1+qm1wi5W;L7#xm=aj&dTL(%2CZ5g_RW6!(k%N&2-LbgU6zUndM zOs`JnwNkOeS{+KW#zd0$`h7)h7j${^Rx8ej$X+@h=b!KuqB-Tc40f+Og^gL5_5&uA z)Dk2^n(`U?%4MXeWs}Cas9@Q8+Sst%#3Fxq{{T-~hRBrCGyqcsYit=$ z&A6OyZgIz_7~}cWwq~T;YGr1Jx2dF#lwQ;AW1PCm+Y<+Lr-hG<^Z8QdYhhHED!SjX zW(8X{EF$w|&K6eX0rgSe>VGcvx`USDZPZr1m*Q4sGNh78mt!C#lgTG{dfi1Wj;d0# zN;+u&07Ct%FO;jZa%BGQL6AO&-_&5x;mq!ge_j_u%0_;Woe9$8D4gdx$Tu0 ztrQjXXP2F37-(TCx^+{NRZQauMS)z+sTBChdIMZ5hG&}sGt^=?)hotD|n{;4i^ zTruoBg!Epm-_RzMb$=vz(x~O`$EV!C;FDZQ3Tcw2oX@A}Obl{e6$X2+RbF~~0tfex zG^L}w^_NA_8d9Y6viY;6@kfYY*L(@5U!nfZy@pVM5z9{?18bIi3@OMt?rX`zMx{JV zsmXh%(N$EdQH+!Kk-*++s01%-X#z+SYfC5Z8HhbdKQHNCl5bR=ha@ntiq}!G&v|=n z&m_`3O4!3TBVVBCDtS^m6Sun`xfU*MraE*}IvCkd270D{}oks-qvFXsm z)QowWAxn#^RYi7_$Rp)RMp3?s+Q8u5_h1y#}SivlA?67@Y5oLjM5cqmRoU zjbk_{qq3bRBe;`O)3o0PS=`wcZF+f$COJrG&~^4X_s&W7uO3i!YjVqEdT^yuQ?Nd#*)QyNWD^=Pz_E}JH8{hekPL7MG??P8ynAbfv;+CC?lRnbYHvHJ(=kL00o1*}Lz%XE^(=A%zFzQge z(cglM{fu3G{{T-jD^J(2tgbDjg5kt*%6BT92Ezsb{${lHF;3@Ps8gt#YjLu~c01eC7{v!sms~ZI+c%w&1zk3VFt|K4n&QCbP(o9=MuSQU=I zRl~Pt)}FmT6Jq}W#*a0)Ygutn=Qe zE_}>}DthhDQ~2V%t|WBfg;ct>ex2d=Ug3*%lJ`=2_iv%mX>*w(QcpOq&1+IWT&Z+) zVoQj0+c;vLNZR&da2St~aJl^0{#DBgQEj^(RQYFBx6u@vSG(CZ+nIuvP^-M~F`wyL zIuN>irtqUrM$xOJUR*w*XA4gIS&$!?{G&PkwS`I%anR1RAgRhp6?{eFZ9>-aDI%GV z*~oNK#|Msw>z~%WOu4!?nqpZ-9~Xw5DXk@Se!tQq)BJBfrF4ekG=&F5QcpgoHLi7v ztBr!Dw2C~epMTVKpl)Aphd8Xk>E ztXh;4Mhwse2s>v#um1pAwoK=*@R_X$T>RrTydH;*Q$`aQKeA;7zkTOMGmbXxf9qO% z+nnv)*x2xXv1Ow}dn!6T?#0;nBWTIaGvBA?E6vAY>S7#I(H_oKg@t?FoF|KXOFpBk zK(6Lp@@?ej925O3vjv2XAK}p7I*lbmkuA0}pPbjGe1jozOp*o^#d0DjC5^>UT(@Ws zmVUI!xRF~Ue9J_LlYX$MPr{|CE+IxB*S(&!kl2^*QRT`-o1|a^DjcQ1I?H*KPiq- z2dBtuswC0je#?_rW%FN_<^KQ@&vk#MqTLu{RCSOP ze=m0gV=eXUD>^od_kYalsXC9|scU@K=5e?7jUBs8qCpz}02m@f@6><_la7p|>MN=( z-p~A>{2!20w3YgQUva15%?b@$K{r!|SCyM&ir;lX$4>l%P0w2#*o;i*)a8QFZh7_G z!Df*+s|8}YQ;=|agHuJn&ZY|9SSaMbK1aR zUM8Z7S3MWT58<0_B1=0v2tHAO;GNm^&-mBQQpDnCQB5=Ma6CHk3znj?XNF!4)3U>p zh9F|Tr`lc$Z1|i`72$Ccp)QQAZ*7Z`*Qn_PNM(=_w3Qu))Zl(JLetedob_kRA9r)1 z@a>JxvvDo7vZPYoMz=Tf;|pzW04W&s0dR5ZS3h=%JA3csk1o1u(2mRcY`=YbZ8Cg_ zW6&&{%YqD$*HUAveMcnr7#w6&OPM=8-{5CPDQdMdF7+T}Tf3mM+%k_Q*o-13K2pGR zUVc;^dY(S_KQBe|Js8u|-rTQaH2SurqT#agZcj2s<2xH@_5&ON_*B+vlyvBI;i!Abga*b&6nYF` zbNL#SuB?wiCY6ZowJ>g;Xroxe49#wgLNNaTXVcf)ueCP;Tc6!;(VbYkO;W}*Cwzzr zhDPek{7By8um1q7R~2aTYaNQFoL;{_(U=Qzw$E{Ebo(u)K2x#&5KdA500YvOyv8e@Xp;Mo~W_6Z&W!9~1li0%ZG1lI3QL!YdJ_c**F!`l= zG3A7`K5H<@aCo|orCMpRG|48nyB8tzHgZe++q2g>>zd-kRF!tz-R^oAOgu2rP^PSx zW79l03DuH6u*bEs7Ddky`{(<(2kDCNF>&@7mhNj*mxT9!b<^3$`)pPs+cK zf5N$DjAyN){(mi5&v=qSHTBPycPWvApKS5^S7kjB>R}+`N;m9cTg4<&h8>MLNi;bg zkKxPK@(?zCE5pRnSGmDnl4oIObaE>iaI!qgw3Usxbr7~P^Ma*Y@XinDO?tQsxjJj9 z<=3IhB_?v3<>Fl4Ts&tg*&zNk?_uEM6q&47EK)gpnMotpp#05trJ==%mWFK13t@T; zf1lLWuv#8HLcQtR3P;@h?fpNm=UXG6tlsHbb1(yux)=7Y02eb))7 zEVoj$vMLR^0YZiV@BjlR*0iRTu7`@RI*!t2>=OBrgIXSJhcz=cLgJY$h>j_eGMI~& zpX!g+n1)0v$Y<*awHU=iF6M=@{_1>xaDE>$)VE_A%I+z5{TZX9c&zwxeelHB5w{W% z!Tb$*Ifh>>bS--|u&U9FqiJqyYkv@6)oeb^Z3V)l{5!}1+5zkVIq6Ue~ zg+`QV$wOr>Ne#q_B($H==RaruA!+#xS0dn#KZ3p2;AP>pQ#nuhJ>ZI z$HQ@d5koGIvZnp^zsTE~?c|WWjgo&#^kYp$Ss#m4#Z<31QlqTs+qn+*9p<|DmARkJ0Pu)*alq9VwEef^?_NmcTcRZN~9+>2QN0ZQT-vHxUr?Xq0 zmJ8qn09Z8J$mjp9p*0Qr>T%lcsOPrGFL0mX3s_O`1}%=V+~Fw2!LXZU|!regS# z?9Ct9(g@=m?T-pb`t<|EPFn=soj|nL2Ms0aLQ9oRTPvg^1 z&f1aqi$aT0(`LHS?xc|=1Uj4<3Xy}7F}QP%nHcV9rH++3dphdO^dpy2s})-g?{19p z8PwXyVSWnz+@7QSiu9hv!SiayL90)vT*q;2#7KvxdXD0`s>M`~ERS<3#5^5!Su2jz zJYNi`=Q6av^UQ(dp)s5m<$ew{8U!9tHTFU@U^i{MtLrNiR?05e^l7~jffw`qt7 zWh8e!4l|GO#dP9fCq+U(GxB`L6DpOZUR_U1_}ey z-fp35IQH-EAKXCvuds%q{}ri;|` zxjnT+mew*Sx?v1gaw+mgV6eB7lGyvwuC;c%wuJ-$@1EtE zkPu%7Eh8V{9_OBZy-op{D|@lr-A4MB9_Cv)ZLeSDx{6gXqA$vsEIUT>k*uL7#fl_j1ylT;FzP+@h~0qD(Dp2A65& zTujouj_ggo(!hmLfxPGLp1!>+8j-0fSw`D+^*ZpiAeH&9J+yt0tj~LEg#o_KSggbz zKna1#$9<=tLJe~%sb2B-S;gUfPTLp_*~d+zy77$qez64kE`1(fDxS$Y zyM+EKyq%*f-4_HUv9)Ebdzhd<`m0s{{Wti&|~q> z+kBH{xM$>#LFhk_rsHH`HkQX$jUJt+ERr_Oj6mnCnCtXFe>&roT%}}XP7bwBRoC+W z0E77uTtRCdktEEqNR5Swz!}_q2rxuF^yO`DC|>S`97o$VLwnD#r~+ zV?JP6iDQy_n$aArr8EKf#Zn-}@fDC7iQ2#N$}ZpZ&1k~A)A_&6npgO~OY$pOp;3cd zoO9f?MKol{+*2fk(?pS)VlG*!F_Z61Lt^SH$7ky3wI5MZ%DJZkm4<&Ujy8Z;ao_&{ z)liq3^SR@B~vv^MSJ zxG2Mi0|$fa#ZNCbrj*{cWcH5!V`f%AyO7|LN8D;^CDm737JNSxx`wT7Y|<53ALe1% zM=XCJYpq2|*uxu$h7S)q^7|_1pkG~yCHX#BkZg^Ax}$(A-lIiRf=K>o%<+Mm0ozp+t|?Y7lO5IG$fjOJ?hBiOi?e*8u5bM^gRAv{BqF8LVq5IULz@$En}(3 zYgV_KT&6p?fC@+iWTSK2(ED(GtF{#*Q{gzC9l_a^Z8eGP)V;Kg)#k@F03COF`NK5jd4isiuKB&94o_g|6fa;{^l(5&*pJ5a;U zV$rWtw{S(zzux@nscAn$$;D0kCfT*(ZA0x7Ts6K*FNjf~YcEVQMtKpj=L7rF5)ZQN z>QloF?wcLjTUbx~zqBDgETDiEB00uBQb*ndmOTY0MfAl9lg(n}oy6qi=B>uc$hf<+ zVp-?D(qWEQ0j=^@S3D}7OnkLs!`BqV2gp#zYGiSPeZoWX&tSPh%YbvJ3f^y+nX;axQS02gY7x|9yZ5L4RXeeY0sH1q*bR0 z)aPs7dK{ohB)^U)`2>e!uI;6Adj1WX>Zxf&=cgwb+{%(URo{4Yc**CIP>#p(;*v?D z(44xFEbguIk1kx~F#D(S>Gc%(bkLa1-&0=R^dhOcvfcjxO=Dt&{yeGtt0zyhHutaY zv!d{>p`|{t5?n=f9Bi&WSyhg99DfM!T=l6muE?&ddpkud>G_#0JOV}#Lo9^!GCqGr z1Nqf*opzGl*snCvsS7UYj(CPL0MEWS{^541}x>E;OcDE-tc{;ofB>%iyr zJ*oRO6=ONnl#a7WwP-EZQN5B#nV1K86p)3v3_$Kc%8tEHKr_u!_OdfpZ;@*M0I%tp zdcEnqxCTATY=dlZw^bhg^_(K%8$Hig3rpF@``t+G+ZX`xM5BF9hq0pY^%LTV0ZiM3ev}$IX2yf+&ezkY;@W&?M)o@HY>2Ej2SJRjMuZQR?$3? zHvv>+npG-Bn!K1sE>6fiPoZ5}-Ilqwk}MG{w@Wz59E* zYIAa1gs(vJTOe_YXogpkfe^J(ENxLG+b$wM?@$C$ab7z=Rz^ZFVmZuw~deNV#k;M>`_l@Q^_YnU8HtCP1X-T+vuGmIoB0AcsO%aO!!Vd%sq|=*hT9y-NndId9QgR@dXQ+ z7nj)2HKK{rPJxcsp{G=1!yJ7mntZOuZ8|n-n_d*TSfrZzRl=gQ#C{+s{{YaB`~+8# zioBA7>U!8HrBT#tV=Dgrno~2e^JF`T_pRy0DDt7tnopUXZ-cx!XE9wu>g6srL*}}Z zl~TZ9pQp`{+>c{kZYL8j;U#Oc(!t?i+N&qB)PA+`7I@vQbhHsdhs)ki&9q<)AH(&n zDP^|SWL3=S+m;$Go$PZB<6UmqqIjm9zWy*XxdskDBkA9vu8*nFl6Tm~h9bW{l4n;A zsik=O$pZrw>}-v95~%s&4iu4|!#okl$pHMuyxNrKf|b^(?0azK#IJd4)bWoJ2=s3f z-dVu=qmE6gc_STm@;U2_^gVi4twqYMB`3MZQi6<{iLIbs#i(0Lq&s0QP?$F#eg=Qp ze0~JiosEpJ)nSW|M`!(d9?k)*P9CNfd)n*dah@trljSlI^Ck%#5>DZc-!Ol}73kB_ z@$LRsUxCL5c*N(F@3SCwm!Ha%e~I!s{{ZFJ%(J6@?&5j>0OynrfA68Q`M5uYZELfK z5bqlumxNmvk}{4hZ2ZOl0KPom=4unNznRB~gK98BG)4u|oJEFMWV(J2C2~%4)9zMv zDtvc)w0BaZ*DjkJ<-N&@Ws)(G2;K+Nk@=i{b#-mZ*>QuE(k#biG&WY|U)>{q?lSxq zXW+00t~X%%5D#NsM5TE({b+kCHcI*u=>byNPU8#T%2Rmc#TGLoeh5O3V)YY`Jw*;V4&XxgtI^wuHU{pIcIymlGJYuL)`;eVN=Uplu^#<62}Yo=+>a|DsBrbk9$fY}Mi ztggA*M$q_GjO%-5U?!8~gde@@j=28-9)mR%CvSCbZ%R7d>`N}7t(8IYuK*61^saBK zx^`=G*`tV3Osy_A$18FGD*dyxWPWSM;ZN+eV^Jk5{Dqj104xhGT zic;tzNPgWMyG!J&9CN$Z`qbGZcWUQkbh;Y-l(Cuqc%?BsYI$X3aKQWi>yNEu{p~-k z{{Y~Ma$eEK{Rp+Sg4X_HH<`b5QiqK5hfqoU@IM;T9MvQ4nAE9C66TogR!DAVy>^ew z-yvdGxFg_j>-m|DYc2rVk|Qtf)@aPYoq*7 z!vMFGtH*b1A?K6)fdKxrHGPd^88b^pGbQA6$277Sj_f$#kIdF}7rJhv%$!C9d4i#7 z=I4YRGws*;RJGXBdfd3WUE{h!md4ykz*by4{s-nifTHRvQw1o!Z*xK`eKSOrWWTss zE>MDDKqPOWA9R1fjz@LvQSVLYv?t!Etpp~itxu`ofY4hHyAJY8borb6#Nc!7zyJ(O zk15rLp&DAfUw_ce^VA**+&Wb9-0o7bG!K9P?McM7si6d*Rx*LIMd)rZ&U)5f%H!p^ ze%5fz6u4aUCpBu3l-0IZB-JlPwvlw~cy#hW&r<&YFY+Y*71f2Ida3q2OzLW$8K>6A zCu?x6Gd4a`oC@|Vd`o8B4qPA^$QYrVt(q5`Rn|5B1p&R=ss8{E!jw*WlD@@aYSJ-m z>3lV>+vw5miBH-}{LV*CdJn@Nt$Fy&EbFzdi1zYYRB;n@ruAn%;{N~?8K=s&=D{tV z}C>;JPk`gxZvpZE%|{{R(U=35KhpN@EiQM^nknfJGN&o%7EHa;4a zBM$2CCj{|Scfyg@-1uU~Jq{a$c6+u|VoP8h#AoORe@gTHyyV^XIirdF@`d;4W~_0h zgQ>|JsfgCuLW7)wWFUiFa;W{RRlA=>Lky)#Qog4+uuFZaLu9N~naC^#>@QMr-;D8H z5T7c!GLI~8Bh)n;2z)Ex8?IQsZ$ufEZab{DN5me>fTxPf7EfYlXhli|8 z^Nl}Hx>dOIu*`W|uNJvT|Pxz=895LrnY zSrwHMIk(0N1?S|!>)4w0>(s3%$`GdRy$>!l>8V0ek}Uj9)Vw;E*3aR4>14Hg1tZE1 zHy=A|G2M=FyBO{(n*mCyx~;FN-&&+vT&8}Xb>YZ<7Tn#gqje99Vwf<)a(;2Nbo-d( zo(@OQ7g<&I>J59ZZr||bQ{{2IPDa6^y1&%#FD@6)^5rTW`E2hT6X-em3R7+hF^bav z0Ps$TE^En}GD8Kvo|kKN1g1SIR7FMvhk2Sloq9;eIPHpx61`TM)v&Cu1>|vIFl*R2 zS?V7KAQv7dwY=1cmfF}mg>(1F7{|T~4E<}Gq!gbdH#u?m->Ojdv)bpr_=fvR*L3f& z-rB=7C+>z&b{@ofVzP!3Y25IC)|DEOp8GoNUaVE|{$;KQXz}Ew-$?r6J zFkI@zPY~$yX*cU{B+$*h5!IGZ7pKe{Bw*(qeJco6_L1hXzaopV)%c^swmu*5{)MRN zI=nX*SCDy=M5Gsp;2om`;B$=QJbH0hQ>f=YNgWii6Q4TevRiqhOTnH5xxKyAAZ=R4 z3AFgFuitYLyNGk;vEu}12d_1}s>j*8d7fIYDpi!)z06M+S_?^@+UruW`&?G39MOR$ z{MDOW7KQj z(QZ21#9mT)a_QE&&n*kd2mU&Y6aN4mr7BBw&t5P|@B02}o{#W?_S)mc5V!Vlc*r}% zrC2D(EuFdIxUo;!S+{X!ac>DGrDys1Ze;k&R$UWRyRjNlDIhX}Fh&UL z!J?XTjqY6WC>eQP<;byc=OFMcjB zVi=nyt;WW%mZqB|aa&u+v!lGBi$*h;@Nv)At!ATlW1}=I2{p@Y9}Os zIVX%%xY-)tOP3;_%9%=#+Yi(e-mWy;iI$VS%3dnI9#xf!aCd#8QR$FE52yu?(ZzP* zDDo#Jd{+_Tl;TF0FU&kPBWegr}$UW zWoq$k{Bw_g-{a_E-p|*X^^cjO9Ske!_&m^hG~;7A^*e&`M?J*S!5G3u?pagQ0QBit zP7Ca#dUPqlxk4#7*2iO@%^l{Es#`BAVBCyHQxmp79g_ZrysFK{QE$KIdNd<-D6^Ki zxh?bV+V~7H!Ou$RinG)?6IPNvf5VqUS?~;cboWwRNibAWw$8BY@`u}WIl z(v}mFTi^QXcRvel-|ZJV?5OK)6ganbJ7bNC?C3H;QTLlaDB$h~Bg@R{dy0+qmi^C5 z3s2tX>~mifH9LFFVjD|&-gzw(WUL)pCU(O!DN}+;BoYAoqrPjW0U5?Fa!Swd^fSas zIc`<(N{{V@k;dqtiJ1C*-M`>#hdQbIj#bs2*+o0n=Y0%4a{gGZ;Jks_JC@xraDHWT zD`e;X0xQ;`9$0d8NiV?jYQeQU# zl%9y}{0xb6s%sE1EHCs^v;C(Ks}eupNZ*xoIcTNkd6g1Yze|}98p6Ye~88WJCsBI)+azn2+~H;rL}neY06t);C9OJtS$^!xJ}@00A3j zO8)@MCTCJf?~gHm&o$=FyFcq&C;A?hC3RtzwvtH})q&e;vb$~J5TBHvKpQ#q$gAeF z=0wUZ`=t?WwgD`#7@|^D<(QDAf#{%MlkLypU2bn={^Olf>ehp-{6lr8>M-2cHo*zN z4nFwjh68{(JPw)l?=H7ja72#Wk{Q{uPp?jW>j~LK zD{O5;S;}wvxs~I`YprKiy2xPWI5K^BfBlfw)HJ0P{!>q5AMJilc!ypTlWy&)02N>Y~Al7q-W_40+ zJFN%riH`0Kk1(oxIss8|Gm0j^oF6Kf(JAT10HsEgglubvY6?*E{SnU@VhTLC zj{N6yw&D3;ez~jmTIzHssEs4YL3Sq`4?*7n z@|NUUj$908q0=;kyO$C~@}u(Eyv}#$r?x5;J#{qpjp$4zj@}2jxgYDQxObCyk>r? znQ1yyvePGyNW^Zg31fn|I3JJaQLXeQcXqKLVn*JJ{n69^0IyO?UCSI4PCH}uqWYUd za{DVSv`>uS;Qk{c`qNsP!E;>>c2&BTLUA5jp5z>kDXpwr6KNt_3zH_Bc?lbQva=$N z%lA*}$zJ|VJzP)Bd_=)0)TM|^$i=*vnv>Cj4-G?UdEyIeeL=Rw zV#+#H5!u4X%d`knysFv(`jdDW_VV54H5(l{+mBopqs#1Kr zmzGyUGHZyds zdj9~!^O-G4YjDCz6C@0D-N6GmBn;;pkA7>ar6^a8rMZkG;O>rwU3bF%Db}s+@2w1y zPU01wGRr1UPC6Wu>Be){HNvQ3XhTP$=yl3eXDhXec;e6dHElFWq_%jSWr*9Z)qvxWy)rUbWcJ4g z18Sj#sOQa7RQI`cYEz6kVsMs_#pROuRa_J52dC8b{Q3@kYLeP8*x`(Nv$wa6bZ-oX zeTjXjf099_FhCfmXTzmUhfmi*v7^C(n{w($3Y#tTQ?N9O`*Yq7OKLs|gcL{?~ zl~lwQL&+`jt~zkO+2ES`Sw=9Wey7CYvGwa?ofx~pd3kHEsps*p`U4;OYCn~5OZdMd z>Q})1Npzi`+Lr4h1&&toU5Wdu;GsW&VrY{g>~%g9)Za?E(Qh0T`#iE*%A|9&He2%( zF#Iawx#Hq+R*m*2@dPJNn(b{^EykID=SSakZ-5`@3P=9{ebvo-U3-y-mAC3@ct1$c z^*<53I@S7E*#!GSmz84$2n-iMgu*HgTQ zN57Kx!+S>q5t0;bBXK`YxETshwPzPnaZXClc6CB|N&PpHDp z3Nziujp(B#)Q|%YQ<4GtgX>w{Q+9hAFMVmbwPkKJxa1NNjzLSQK^Z~+06Y`cM(BM3 z!Tu`atykJRt-61itvK@TOf9bCmHybNYbGNSml2lVTtwn(}GR%zNA#U_qz?!lnKnvcB~_CBeQ1%A5XoHMKyJ` zT&t-xnopVZI;|S*EtgJq`4pKh4&UIwA%88bYo4SVZG4Yc4LHUTl)ByihcPYZ+U}O( zU8@sMB=Rp~j9`D`#C|o<)wD+?8M^hHpL>{0%{0M#7kx6AEOErXtmzJfrohV$`W0 zTJhQXqGhyUfsVBd(GDEa9g8;Xs&MPMKT+-~B)bWtOj@^)vMCJ?=3h6U?0-Ibb*#Cy zv1&>z)zKi2P`i!=9EBU7u0Z2~+mG@qs)avmH5PE@c>e(G>>TkjdN0hU;wa;^)vqFf zx1b{gw&FT*pHW)Zrm0QA8gR}!re%YMBBHZqZG^#YLc4`o0gRK-WMC8Q2?y}5oVu^G zth+LJ%PsouS5d`YP}O|5GjCazMpgtek_bMv^{pR=P}s}3YQ^Y!bk)qOz8s8$k4|d| zyPl0WTSh}2+^H_(BeN0@T#!dk^Yo~Tv)8Foq?-3tj^jnvEp;mouxc#dWyV!klM8=( zG2CY)pyXtg1Z8W;#o=d4r?sX1c|Y?#3??cwkFuy_>)Ji`mk*zTab+s*j^ZDf6+Ql+ zn5`&cp;t$wyBAjrC~CDwB1*?HO9ZADQ@Koe1QF@ze;V{T+gz_yb8@k7=9=2SHU%_qslM zS=~2TQ?`#wlr20Wo*?jD=ZW7@h9|HF-s&b9GAba#{{Xy3%zJ=qo_M)a#72UJ(|?)m zdka%?y^aHGGMi!no&{qU{WMN@0s4{eyS@c$h>x?Ev|kI~$nC<(GvV z_SHG*nyAikl56i@<&n0i&PtR6_=)7>u{gjUg0@jn)tvIE+1Ge4K(N;J zFYKG^^Ja>0(t+*Yw-1G7DI4ppqhE z0JA9ppYJvgd~Q`Z?xwvCTQdy0QJR#Z%v3{~5^VHQv7_6(=6Iu0@;WN2fs#pez@;T- zbW=Ld6?{F`d^e>-f2cGpX#X`KT9)`5%3YSpmawweE@R~D9V<4D zix=UG?SOe}{*XGa_x;Deum1q9n$XIA=C5LRu%0!{k!(@jhy(Mg(97$TW4w`0>iX8! zKas`E{{Y-vg;W01clr;^R(jmw#Ah*%lvUqz0`Bg6$#+iq3O+>x3co?y`JVOB1d;Pq z@f9n}nxnfe=}{|2`>+TZ9=$-v>qNJ?=TzM2EZ5`%(}6|ICe1r|vPK0n2|F6e7>NKs zeEyXt5|Hd40MG?R7r(1Cue$U`bFFT3v{rTIs6;L) zp%Ad9B06F%S&!Wxtxy!B>s~uQP=hQbL9%4)^rTWHQ&PrH=D7(T{n4g&k4)64t;ZCv zb4y9Pp2p@ohyf0#9F7mQYeuKDnvywlEWVaM4=NSa;>a(g`&ISBun5vQV!eUSPtLBb zM^a8q^s<~KJQf-hDQy%{bU>sLyFZmoWoLAI4w{ZT+>ITO_5r?pq4{_=Xrix z?GWQT@OJg>oMySIx!c@2>7{*3-U^L%4Q4xggYqac?f&^*oPVA(TGQ3?$l%Rtyfp__ zn$+rbuMmwJTrgQn#x1ZexJx|PJ0Oy=wbgp`IvkiIVk#fagc2RAaU+|Je988)@>Dp@SC7L29nX#Yw z<_38KsmC?ausqK7q~-Y#vkzzd7%2IgJ_@(B@oXB2zPPyC6Cyhq2If+|20m2fPu&^D z21w3&;YKiAu}Jy6<2A%#=NUhFvw-nlogSO5+}m47B(+CniGc^@2ch?(_h+kzo2g1Q zB&^ypQ8zFI;2!i?)W05|aWoR8x(O9Xc5ra006eic0CUvVH7Z68IU3TZDW_yfrfLbG zYPPp_j+a+(NU{dO@|1&~JF)zS){^I+y!1#a(4{y!a@P7C#<%fTP}TJ5bepIx>`l`7 zGEbImirf-csNnwq^^Ixuk9G2|nc-34s&p%=vzwK+MlXalk!7ez+Jfz|yCMs*kCqvB zkQ8hOcMJ*_W!xZT+1UylBwew2k)bXF{x!3;@g6t}=1d7GcoWnyF1n?{1I$ z&t=t&<8{AMrJ$N23?1k<<|oSAm)>a>)`v}D8pCCIYZjQ( z-6Vcomng)>yI3($gZQuyC*~R8U<`6NsXMoCBY$Y%)r?y^{{XUFpjU_YU%UobmOu`A z900&)u;Y$vM@~{tf00hTK8x=(E^V}Fd?uH%-f6JvkzQl$i)A5cP$)Zt9tb3ngN~hQ z;To}>tl5;RLRz$ulK1Ox9wU)s4;f|JiIyOcGO6;RT|`MC?oY_D*AvCTXkN|mD}Jr`pBu^7dqzu=s;#FJfV ztrqDUXcr@C{o9aQHzbpua2OWGK41n2uDf!}o4L)*`OCKW5XboEPi zESoIGW!QOE#XeUpqt@Ne95;?2jx>f93)F=U2A zO*NoNmvG?XMdGE<_P2}bXtOq?uCzD&Y4KidTFdO#_A35w`u_ktoxO8`w1Ro>n)9e- z@u4jbR=#mcoD?w8)%EOfhs4)^^2Wzci`+t6{{TWJy1j+^o>R=RKhDifYhTo))3go7 z+x|RTkFrJo06#POtziYrImL8;p`ylD<>u#ifAGd?Yghfvu>SzJNPqa6*VGm^zw@#~ zsolDA(cwWPh?HaU6)fqFXI(FdtaV%5aVQ^1*Ze8i&RL!%uZUFCH5o_?bua^;m9~NT zQKH=DmMXOOlPBFP^DM6;=kGBjpU$V2?&S07=1UX>*eK-p$3Q7P5m0iJtZPeU3daZMJmxxp+< zAJ|6ynk;NH3OBLO_|&*Q=RC17{zPwEwY+xZ%WWKTxB8+BbJvmyJa+#8^%}?D=h5AD zDb9rGzG&J{Z`b5OhTL~&J@Z|9bUbN0J2Bu=5@WH=OEf}|DsEMVYR7fb`$ZW40LKMI z4WFwtue$U`dyXri9PF(isv(u!RS1EFF%cfL#9OoGvYPmv-H?9+*qh)ship^ zg>|dj-OFfV#k7872W%GLoG+>1*ClLBD72;2=fz{`;ap=rrcma(4&=wGlSs5*uzQ0f zPzhKs6a0Ic)h1jb^;nb-o2P2AY+1VW# zWqx`wx@%6l8FK;2Y?6IDnrWWQYMHFXCEu_x#@0{o4&(gy=e2qmTJobS#PYMurj~Dn zmL7ZW7uo*+TbTN+0x~3pw?O{@be^NtPq_a8>+~YNs+~n%9ML}ysfVkAtt>TlX-E3M zp@}PVSMeD z0Xc_is_i2fJaxrfswTAD@p7ytE`>=vL-&17B4xOBQ*|@!agc+iGuU(jv3Ghld$zWz z4EaLrjdrhoa!nU#uQN{FCDbKo5loj0lO6_3uTnk8=N{a40d1AQ)|w%1 z+bnEQHbzYsZR+MKRdS5mEWl^gxyB#U8u(0s8uCL-7 z#$9UcGTJ@MyCuS|0Ak7;?&NJ_>4GpT!IGD^bg3_Mt-3SlY1CfDPG1*8jk3_>zr2pm zOj(}l;ax%AuNiHnlnEE*>N=cbJo?vks;I@eTFTzPb2(zYqw^{y+eHkP_u7lR!M3tA z3vjE0&=+h2?ms$inwGJT>G=&e6>FV5J|WQ;z?WJu&@E=vWt22}k&Hy>IO){qgTNqj z)7PEht18N(osu<;Mayek=Owzmh!JBP7Q0v{`YK{VPJfG+Jr8>AjA?Uw+WMJPl+yP` z!)HB_n(I-RS;%8x1kL;6SP{4<-tWQ2Gmb#X7gn`9a>G+48D8=_d#?;?eqY;2V`$1{ zGN>CP^Ev+jRyq^TGH`vdf#=Z0(XQMfqg^_kb#U{fla{3ZAJT2Dtfaiu+3fr_hc`24 z5?$kw3ZAS<$I3Vy6VMu}$t|^)wZ@nXbdB0o^!`za3slohGGrC$3TNz@JUM3)@ z!0s{Wk56i^V;Lr_SJvfDN>|kz38$^yqg`7r(1-WXj!b{;4^{qM{b;8r2`W{3?ECq8 zl~IQ3~+3lANUhL_*Wz( zol2JP`XiyMQ;q!p05dgh+qkWa?o1#!5va?z@}UcuSF_-T9$8=3mGv}BO+;8*Xk1}^ zD$-k-ITqrHwAD%(ad2hsPs^`uhGq(wtqr(bQb=RTs=mQ)WmpP|e_(9^dZZi4@jXhoY+L}wnf#An89%xCFQWvJS-X3=Had+VEcWr_*j zIOQ01U*aF+_N*s|g-I#NYPK?~griKMtS>rAf(f8hy-W@(>vUCHSoZMA$z7P~^Bgh3KD`gtyV2Y%mdX^gj0QTcKyG~j>-bjC zm6>VtXusfpz%j2P5rSDm#N0Ca{{Z#<5A?`AxNKyw^1nmJ;vO8Kn$zZ9?M1WwA9QoK z*1lVBjkiR45->-x_pha;IM;_f56P)`7;7>L?S@$+6rb3-E|x}y|NyuffX>sZuQ zI$?P$qO7Be$)i+PW#{Wt%W?A)J+9dsYyRnR^RnZp^rbb*jUb%W`wnQtPx73Mbt1E; z@2i?(D7rGUcM;1-6ge!aFahmHEsS}zu>(i*;YVJArHvbUZQaI$eI3<{i1i5YM7u#T z9CTdqpMKr3jMPgF987If;qBbjRdoIx$#s2d^HiF9yQ{h0c}O=uIR;KPhWxlAr{{s4 zDiNUllSZs9T}=+(h-jQqLh^r@O$uIzNx0(`tJI?!!RyFHIz8&Z!dRPBEM0HMY# zmhm%5Yv&7y{&?Jcm?OVali#SWx{0eMdAzBkQ$x47)~}#SziY4T=n!~ypR z$vuGQ1xFP5oHcz8YLHRZTYe|4N#Gl=hgwXUuZW%vV@Cmg)2Bvv`E0}u>dXft)Bt;Q zs#V=rXkB^rJn7eis~T-CXZV!-RjX@$H;D$8+CH(N#KGaPR1rx4=m7+V1P(F}K9yK( zzKsXZ34713zwpOQ@$Gw+7cIPw8uw585=@fX>wX`3Fc_lwkvJWR`5PJcYTk5eN#03F zaK%CVFJDrc$Ee*96Is)B6VMByJkOvrC_j;?@c%!bzJS-PIhA>)b*}8RFBp@if-)aRjozVYUvn*L)GnKZ?|i@R*@4AnPa+Ek%y+( zH#2<=Z1Cy5V&AFCvpCC0{tNXVqIhN-x%TK+UO0V&n0( z6k}5#6|%ejyB?LNc-{OPX3%(+<3zhJ7`Ga1Bs;`94eJ_|3ZofPcVKlS*O^}^r&6k` zLQOutXLStTwCVdP!t0|v{{Y38H@BL+*H^RssjaZ0?pRD#mdbfi1ShCC`AO@^+s5kY zNkM7(>QcOyGdVk#EEq;53n||6Omi&fuIKa}!2W$}qKz(RuR|)e6c?DwXcx=|RA)h) zs^G5P)Hu%+D%Ux2|gAPRmo4wOLMgTNkb2bc$akiZI&S zhXi2%0QKuCv{gmREtu%yO zg87jJQeAeAM$*G0wteg5GJk1H86{P|U3GgsbUnOdjHoVEu7{DWlg3KA@;D%h`wL%G zcwFS#c8zs^ezDlbW|`XvgRV)ytZUVc7&*<^BU&lcmntUK^vk^(_U}r*jxlo+fg=OB z^v(l%aw|ME<6bJX9*okor3=$$dPl}F(z?!TolU=nE+EjY^>*^zWk0)#NiGIR1dL;- z#xt7bmLfBoq>oab3UH(Kr>bAlA7N)I5@mv4#Z7HeP4-Z5n|WEmE}Rt&Dy=#=5%W-O!mU-(m8vHf=1_Q??F>)Lz#g2|%88%1ObHA71rw!Y$c9T(*cw!l}bB29(l+ zvo@zEHFP%KG@j};Rtgg=?#f7111w1HF`hg0t}I;Oq36)JA zxVCWUOXPckG0=>U#F9yM+!{O1Ty!loTn%_qjev7HqW8HDEQM()_enXXK!(9 zbn}Sb1%!qu71V~n`=D{pxE=9dJAkKJSh%O(Q`5vs6zIx+M}xy*B+SxE%~N61&krz_mhx6;o%R*I51r;RVgraB$riV@$XY3!qIOn$uj5}57a)3piZ zxQSL6m7AYg6bui>xvR<)t#)+b{k9@cmLn|n$MF5ljqa8g`$>O#UPQ=^8A#cK-IcO^ zIK~cZ%daJhP9J3UaJV057wtD@h1JEkiw>pY4-niN8KPB+8*6pQyLCc#N4TAY013|T zz3Om$$<(QZaibN@=K6Y`z8eot6x3FU8TxZx>M<>?ghtNRTrb(}0pB;Xx88rJPe3cD z>d{NvS9koEp>n9=`5=y$SMWZwr)c(VKAAiaM9(N?Twet>^j~3b&W;w)1B11QwQ31IDANG9Tds``H5>t4T%_7d80wx-d>&QSI|&zH6IH2jUH8%BMp^J#ON)F_ZxcTH_sCB& zQb|8`d$-g4YpPL&2=hq!+-`2?D_-yNHgpKLS_TfT%u5h5F_KB(^NxDryc)GRq~#@R zpDl@#t5M5yY5+G9Mnd%-r?CG3K9z)|+fhVQ_g^<+++pNkWM*dRmN_*Nv~)*Xtx~(a zM|NI@4Zv3{=VQ8+JEF+6C$(kmjs1!nso4)3V^U6GZ}Dzwrv zCK%0hMDynYq?KsG#doVjkskEWi&kSXpRHLYL{;Y>qD7XF^r&X>WXft8tXU#t)U!m( z2o7plcPr}g{^9}$Ic)xvMf55=nbyRkQ#v6dVi`nk3*c% zbk3+qttj3(;2LJ>m7dYIGi841<380lCTiwI!ge2Ya56g8+~t}oZ85&&Vvag8oDo$T zvxma$aaY39tgTWh`j3u#+2mN&{O4nUBtYc;Bxbv*=9q|eJUYBBg0C-fHhx6Oc6J>{*;Yl<^-A;uE(& z;6C2!Ij0Da6aW@t&AVs=B>qC8rg0cAawkq7hPmZx)6>XNs6Ib-20!bXkJRR}mT_6^ zkiW1nN!iJ=3%kfnQKQ;LEx^fnT(CU!P!xg3T;n|ZR~<}cdeY{TvFuXIaJXt}Fpd33 zX|49iZ>(a5IOn;D2+D3H%CLQ$lh!;cR4F;pa&}ti-{OZwq8nAezmDxhc8I1wv)rS| zU5HR}r+^8`Ja!#TIaI$a64j9CLB>*+sTBsPeCIRDw=LbSV_A>pz?$C23#T3IUA4W_ zS)n&tOlnqCF3`x_$Df#OVtG7s!1kri;`vPHMouk8N7#1Sw}EE(boTM3lztkL-{y+| zC|q-%`@tVvk6Pe(YR;wJ=bZ7>;rpIf&Di+z37~(pn|(Ua7}I*mBD1&NQP8no{*~xB z%b7;|o~JFN%r)h?o-Zloe75pbjM70{?8a>}rYXn5kU*_k@%)zZV-rPF{$ z=(eAKnNB}S&ZK#5F3clQRBoHukWH>?NabQ^(00UN@v!_ma6<>r>W# zUpnUIFykwXpd-{{70j_yo{C3YGTby3)Dd1bp5gxheLJx3UCI7+qMWUE&3%n1d@)Gs ztu(kGHxSJml#gS`k}lFnCxSk;!BTFl;Je(~2}UwwCXQJhq?6`%C5iPt>(GmW_fy!$ z&eu8tY;UzII}2$1*zDq1QZf8%rCx*?VmATr64 zpyQtB(yvJSu{qWLIhix*%<|7XPb5-#ZpX`FyNFUjIO|%%yy;t!*io$J`B|40p-EB5 zEbI>A+?M*9=$zd3Zssm`xzlOUl?kvCI4Xb7dX8k``Hp$TrkXcWbH8kntEl60;4wYP z?0=uVdFq3Qy-n}YoBd`j^3FSTH0;%7$Cr|QG0)}x8K|i?z9e>0<(9B!-G#Vwfsab_ z>dkaLni0_6w$nEzaaSPi7nax0INUmRS3n1*8@L5i!7n2X7OamY8kXyW-69w zi}ukMAOTsi+_S4`(no6tn-i{gADKw+L`sCy*_``Yu#*95u5?C7wGspXb#KsAy-k#? zI1R0ydFw(qgv)mJZE+-V+J=%x<7gSl&lnUoZO)Q%mXCJZp-WHj4)ndNS`Fd-qEke6h2Ajs2&U-3?WeK&`WYZEhiq}sj-V{Ap zXPFPFbMt4=fH(q-94$}UN#0V`{{WZBF>?34npRQU{QhQclW>-IXU|gBvmu6c9ZENG z?hY7xsI4ld)z;|Fgp_6PZ1)+cSiObpw$c@1gkhJXsTo!t#1KcZt?9{5DoDn)H%@LW zu?@Mk(~bSiDDg~8Fr$(@#_G&5gN5V2Qlp-0nzZ?(p$Dqex^U%>Jhmc^?OZG}Mk9wk zix3Z~8LQ{16{9ocrsd4mz0GYe?GWku`l3RO9iklhO5JWD83clGLH%nvPD)T|_5B&I zv$~RNp_rPEpqL9JC+lw?{{RzRYPChLF~KY)DQ=6=Yu72mTiQwPVmD8ZI>l+IO(|0XADBgg z31f~&9Al2YnXit@usGRc9ZHSGE8O?1{a+7BS*bq9k3%E`{MucS`UfA$tLwh6EtN)j zFB1p$5z=Y;gi_ny2{fBGaS(QL@{&T3G57QO*E_*ao;IrVCRms#zi}PzjpJ_&jSk++ zP|@&^pkFLRBuw`pvCm&x`J84!nLI?R(yPB)*xr_7hUHL_vB_9!8fBM@;J8aWn609} zSNt9M zY7JXU9}QBptJjQ{_b&J~^w_oQX)f)jk|>qlOh^c9AwPF-Iq8h|>t7poSb|Jd{b;T?`HDVN_E5-gtr13a6MW?zsnAMp_npw7tFCb&-Uh|6ReAKF6 za>Ocu@~QwGPDwQqjn$1PR`zn{CAf~=$|@IBRR9gS=eg_aS;93H+edaHwiZcpPw*da zX$O^bL%GBc{2rqozVxao>8Dh4(5XSm+Fc(*DYV!=Pnq~1+#lmzH=km8sK2%N8g_Bo z+uJgzk>=-NDgXrIp1$9mbMn=c?)K_+y0}G#<%@28G!iwggUGp~WOlb)R#R6;W)a#) zS>fxoCH~T)V5`RAk~#J2KRWVpR5ZL#pu^PHl=KZ4Lh&Q21>7^Yt$fxdPBl3h*Dh-f z*X&kU@}Op`4^h*di=!*6Gs*l%Vdc#Hiu#;2OUCCeCJN^vcMwu?MR&!XJw#?qpk}s5 zD^@AVj@6>Nw=NEwKxLb^tqj^IfzsGOJJ8cRm}5c!l9HD-N_tUHP_lI_HS3E+BX>VupKW z7%J)yKcA-X8RP-eU!1-9^y4@dJsrI{;KkEbbhT-(~p1ZzPXt zd^caYk#mof_x8tJ`&Lz7EP1;a)Pj;C)ht@g)+nwEqarvX<=h!VbnVu*qg~B3)s8B- zD9uK99?;rF6p&upwa~W9mq~oGGE{8`2aKHb>z~FSKQ}yGj>=T2@_QDp(!j}3HzJP z;fw6=*E`og*1csY#u4S%^C~A6)Vq(-Zmx9QPTuO(b1ZH52*{8g3NY>%5(w@MWmQH{ zX_=;b!wE9qe;uo>0j?LsY34P zuj3su+eFfI>pdp-?bdhdZl$|KD6+6(s~!(OCJDjr{=%LTQpD7CYevpGCEL6Cn942@ znh?qkec9H}4G6zzm75WwIrnx<=Ftsf?B^hmf zHS719&JMjhuZlmB3|u}LEqCL@5!lg|eXJ&V<22KRu+>wr zuF=#StugfNJY~P2>yw+7WkEx_KeuN1RpunpkmtcXIbfV-v3#)4+ zKzWg}h8Y`|8LF|IYDRbEdm6eZFvop3K>k!n?M6xfRu*wY!!C zCE@$gG5#bYDt{tB8tJDlc--Tu9$6Qz?R@(STlkkDu>`p7ARK;b0sI=dslR1XRHe4- z)BXY9N@{RTZnPgZsV$<%0rM^_!hg#@nn)OMN{sxziuclbcEF+^!`tm+%bg}i_ojX45s}eh{ z+A_3e+@kM_5_0ZxGGDOyazOljE5gh(C12d9@SWHk2i4o1Npng4%h1@-te)RXlIle& zZqJn#d!mq7kN6N#pZA4$(vp={#y-IAB+S#ry zB8D(L$rvK%)SOmzCaJ;BTOq+Y$w6+-O>;_%O!EAzxbAbq6d1#LSB;kD@W;+jjBRhk z_c8f3Tn!~wPex|K{EGG3x#m%wq-p7wI~Hfj1OPu@{q-M=DDfm_tf8>5Q)L+w~2g= z>_B|r;=PJgoj1yH)~ckgau@1Un)D!fHExV~&nCA>CTucOKFbmI?W zQ%=Xiac)a2RMsk*zLsd$)V0Nm0WHnkYa4yjyCwes-2;>OSGiHsr5<@`kB7r$)hkcg z(t~Www~)ALToBTo+ezg{FbDbXn)vK?BkL8M*2nA_HUsJySkZg+EW8HJwSyZ{BA`3NWJ{SS<{gwOK50CbleBbD0y|9^dEQx+zkPTQ|As zV6lG2PMo^xi<0XzNVqI(Sm5HB>?~AL*u>Q?%vem9LQjD&vcaAYTbF=0)K8cB;9vh4n?)n|LlJ6T}3F|d{KmE3v21oZ%P=ku<2Ti99_ZFwPAkG5Xw)!*48;dt(~Ml`0Btu2{HTF|D_bz7Smh-ZcNhhC1oLl0sIBkNmG znym#j)aR=gPEI8HRfpMaF11O?5yCu}lQ{Eaa7NSq$X&&~usGZeMQJ%nQI7BMOZw2d z4JYj-viwTc*KZ7p%VlK5ALEUfenqLv4=Haq_QkK_Jk?wFFzqIi+yC7G=w zVo!7SsB0WV6lY2+qkoZ=Dc_#wH}-CNewC|4DI!?yGsqPqHneL}BEJ|s+c5oBv8$tx zsiYQ<(5oG>0~oCgO)WiE-Q$)>#EP;j6hFiVY9j3;n->XGr6@t!wDmgg80%V2r={CR zr|xNkh9Q)Kg9jkjWogDxK2IXcu^3EDr8Ls@-_XL+7dBd`$5<490)0UxfcI}|&aN^zSFWw}Tij5f>&HiAx|;Vog{GAhmbzVn z8%>*Jk(+DCIRulAyyPC-t9{Cx_&o zHUC1; zarlaO(e2XOWKk3XGx7x;7ah9S5>vsqChr%&k>Aft9|cV=T8nPXqpDlInysUuSI?Os zJ#&wgegmKQ6>mzUYd>ihbkkb}_36 z)Q>FH(L8aSQn{NZ5g&R9F6prn^RN9dkp4(d^r)W8)f(ad0Eqn`bT)AQ;9m_}3;EEyLj(be635vkd1Gm_b6b zR$Yy2W4V-$L9V8cA`enVki}&&9ZN6uqnAT?&8ZP;x6ZcuW*CfH{{Zb-D;ETH)2`AI zO;z7tkxL(!DnA6pWlEAqZEEet#(Wxqds$9;IuFsSXHQd|SG;UTEza@HH5(GkguvB;l~96*XpKZPbU#w@b68N{s&iFY8@v80}*|YU|yM>|N8X z7WM;gBoSQNC>V+$(jWGV zu750n_*6fA^BYjB?B62W^&{4ycC*qK0|plV0MU*sYFajP*L?DJ@A@Fve6J9(>Sk8| z0LX{@YfGmn+xpPLNyC^tJA5?FMP-#tma-{^<{|$8Eh1rtA710!3V4cs(mHOnMl!oc zO1=QrCqcf(-EQGAYPZ0~fx5*H zM?Y5kzd+uiv$DocHuxi}^L;<4*GI9;<84+?lOPs`g1)cSe4q_ZpNiB*q{hEwv(rB43*sJ5T|h z2RP49O6#Kt)0bC%?Z3>zq}-8fN$~sKI10Hnyr*N1rBxJqZkh1cP)`nOPLLAUFd{1S zClVw70PMBLI?3N#N~`3YypJ!{v}tUv9w}mEkxm&{V1r$fT~Rcu+=ANI=L7Ss zB+kg)p8KG97ej-?sI#e_>gEt+n|A|n2MRqa^PIQKWwS@k?t`pICs zo+Kfa9H>6HIIp~=Q=Xh>-6PMd9!WU%Ab7BV9yzT#oby*9NYQh-ShumKc4e`zpu|n4 zspuhJ{TQ{Bz9^L6y30{daSoX*QA)`dnykT2Hyx}w^{V!8brhP^!PJ+taa#)`Gsw{s zkZsF;K3?kVjI=!2qZ%mlX>eG5*<;7#{{Z1pG_E*1ou0jaHP^$<5<8iiNAperIpGVa z{RkEF_)2`4l}jxx`PlcX%bPBy-uM3iGn0cE$vjuTbHSFz?Ua&Q1e)3Ww?Y_6+#c8! zg+!*DWw8|FD9uf7i`TCu)#S2H?Ifj$W^Sh(S3L+uoH=8nI`LC-n{pVo=g`*oxxm>f zTc1i~Hd~4Y1YlCRn=B*-N8w3gdI8psVolu(M7fskRcQRY+s%#t054P^b^6wIC#8|m zgoAY(@_&(!HkoiUh>PRalq>Qj$Ru zpb^IxmdH?JJxhbsu{Gx^HJ%~L`X62O%)k3GFy;N{r(WY_oW7qi$MLWAuSv&4=2Y)8 zuBzF#(|w>n`Z4PUjiWsZnIpvWgZ}_MB>qO65wz+yu2QpnSk4LO%unRiQd*N43S{H0 zD;3N}&zflt<##mFB!#NLw`NC_ezig|Bd#`moJr8snkG!9k)mVEaY(evGsaxdDKfsR zY**~(v50>%DYF_ozfraUmA$H2(w(+CXkA$W4#kNip^a20padMB#0tqptxow?Q;muF zDrvGVP@EFSik39Qzqb1{a75!0;Jc6R=NJdy9R5FAP>)j>R8x~{Vmlao%Y;JeftU@= z(0iJ4(Cbn)B!qPf`pUOoD?@#qZlAN+XH zVN-U3^fO)@XCi||A^L0?)ojPC$^69(QRhA4!^x0<5Z@T zjsF0x2&)S#_kZR`;r$d`%J&+8c=XFf^KPUAA1M9+f4s*EJGzRY`$*raGg{X@1$FZy&386&bD_pREPi|5ynq?(LvQ(A3K_2zOLZkSNR^Ds`!E-1{OfH zsbJfBqszzVZmcUVB8*6{Imr7c zmm~3Zv!+=aJA1|!eMS3k*@|^Bk zmetG~!kh*J`O;D)y$GUFw`q*-2Rpqg?sLg|*EIB$+heMe-ZcLJ(Th;myoBZMv7`g0 z%zx>seG_(?tGFO|1KYM$JycB6GzsA|{y2R)_az>r6%@XWqFP z_DG#gODz*Aq*7zSq*`N@GH3?LwHO1%X~+DsKl&R`O&-3bNbUCY6q&Lw!SafhX%}MJ z8dfw@G%R6`(jV;`lvX>6+eE`5+;w6%KV z63onUNhc(qdeYV|>Ip>xLG4n}ykuOrh~qgOdQ|e7dqVVJ3YLoIE^5&Msoo5K%V+-p z(2W)yH}0b~;-p_OE|(AdO{~A`x_{_GlR-Iqtd~<=_l|Mc571MJ&?B-gyg=P+m>=@X z{{U*oL)jdc_mK_dpPT;x2>9uk$Upb}=#Gi9l$w(nVzXP`>n&$Iu*|@!$rBY}`_(4| zdkStUP6@B-#&w>Wl3VLHt0dMswe98Bop7crh~|-`+vw^EIAu5^=|xODQs<_vByz4+ z%q!h4YYVw8<-ue;I`XbMh6m7$8tSK7H6o;fQE1T95ZGGDsBSB850z{O2YDYe=lzg> zHeW+n)qc^cYi_=VQ*J1HdfuqA2K#l+M?dQgH;1R#=DmwIatnaBFpYwImIL@-_=oBb z(S>@rO82Gg<-BzHbUa*k8~2>)=^_hDAGO@9K!jdeNe@I&GR%I1HJ&E4Xu->`L1C!M zq|{RzeW^_~+cmp1FenkixEqxe1yE01;0*iM4H`U1k9=3r-pN4I{S62H7w(w01wA>0Q_=@r?Op)bVqSs#v-ghs3o-%iU5- zrQZbWBuDs_vMcFfPBzf^Xwl?$oLXl+CGuQO(W8kKdayYJ`&Wya){WID^ggd7!Acjc zHEZl6pkZDi^p`R<8#y0yMx=lQIP;_b0MK5W+>MDfh<9juS@bgh0O&%wf>%xu>VKCT8?!O)_Toe|Z@Grm&~1O2oTVW`&FgaK%-QDM;(|O*yVE z#i#^08>W*yM!o+4&*AGyM$4I)N1GE>QHI@LWNGStB!^Cf+30Afi^EPw%->J(s#Nc+ zj^~SwDEmA%i@#QJH=kP2Qp*yFcjmUeKTY81DC%-mh-fX$WshK-ZEQo$Gd+o$FmiO zg(#+;r_6Bnb6+1`tSUmuKfB4CxLV*oxiVy0OtV``vyMfU>hP4Zx51EuhIT)8HU9u< zuzr9O+NGIPsN-nIc2&K*lJa3BfmAAlL_vi`9Ti8X>PaNzl4_E%P>PDsg$4~49M#bv z6q+}K(3&C5BUEqrV@r=zy=1wSptXq$%OZ@BI{-aN#bI8jvsdnDl%K$^$-G4!xAuhc z*}RPtxok)PVUwQJ;M|qj*DNJUG}E8pVzSlP=ea(VzwtD)K9eE;0LO()wiLb=7i*h` zKJ-UpRkAf5Kht%g{{T#Y{{YC5(t9I{)@YTX2mTSvjt)ouMsM+>?6D^9%9d&5$*M{| z^kpS9{4#wP&-njolDO4TWQoy z^2XM<)xDYGk^)g8mjU)hs!k3@NEyaJ;+*J5Np9D3KWO$^6}*mmQ|8dl!mQ-|KhlyjZo}5!c52a#rDFY* zJ8Un9s;B;hDW$1|r*a7+{{V?(!~UB`{GPAv7`LM@TSPy!f9=V?^qQ5(-LFs3trSE1 zGT`I>TSxx@puH1zkVjShd6M77yGPU49Deiv074a%emQ)Oin9I9Kbeg7A&zTfl}^Nv zTKROCxvtKOZf+d^0JLiwUkWtFX;qt=YkijA?FyjGTWopgxE#0Pk&mry7<0QGMk=$X z9%OVH#n1dBx&&5=aesWiZNWW4c3<=F>smrS(oOV5%J@nVqaTiX%gJ<$WkG6-j`%%&PuKxfdl+?l- zRhBV@n1{gV56lSs#&PIHYb}L`mG|7EdH$x){<(kb?ODAJxIGyYajwdJ9lw#Jw;R?b zQw&=_`^)@|EsmABQO^|3Q3Df$L1b)rpayQHGUcKD+4|EFg&D46>p6+hs!F*kw-kXg zRB8)M(9*4Dzq^Xs+yf+s11A7`pK5gC=Oq~KVT{Dn!qJs#nz%rarvGq72GMSCHS7+7c6yRrrwO^d_jK<*NtmnzFmd0 z6^cCM=lGeAc0Rs<4%PIyc{;S!Nh>ywCbb8LsVGZyXCbY~PQ;6}bjgKP5%`t!CVQPQrs{a5nQ!Rn57|W5F-|IOVO@`qf=xWnF6&WX$9c z5r`XhoO&L#G@h&@p;e(}JdQgbTG2}9JmY3f0Wb!gSgec0cs%a){5t({Q!ja_edaB- zsGn@R&-{H{eiE?$wSK~z-Yf1So<^UAY!gt{<4dd))STn#Ubq>iBo;_t{vg zH2tKnBG-*{=xp^EX0weF-gV_u?yHWVdvrA!ZFyCv%RSK;$|{_%9hr(rBD$<`^AR^n z1DMRehjR3)i?I2wLj{PFLe@CtL?{0MA_4ttI+A|Yn)UpOid>Wax|q;F(Kx`avx&2# z($(Z4LY6&n1w@gQ=A*gMTUh*|r5t)@g$wR+RmAj(W;Fq?61GMTd93L#bm+x9)okc= zCsow@t0z@Mf`Kgd^1A1qrudhqs=QGHrp=41G?QEgYmGswR(7utjUkm(SBkD{DoKK}r&f8bTdk?7jm7q}z0fr#-IV01CtY}tpmn&zfjKIQ` zB{*)kJom$P@oGLI(`@cCVV>qV+yjDCum_)|bkw|J+B~{3RVqd=X3=-zErqU);|uF6 z2+UT|`DGJvJ93IoBgu~CwJ8nZL!%z9u>$^ z2tWD&t>n6#6f|Wkrwtq*?502Q<5^2{wwBC=pBj@n=PXT0cK1x#n-H-70BC<&4ydA( zhJ#c<#)630&@q(2y=DHW{{X#AEMOt#xsRv0IvNVOD5NyW6w)m+_L-d*ghC3Tz&OJx~7tUcD@4 zGMlH%2Ya6@l5q8ESe084tfTmuBKlx6=gI#7eVXu`QTM7Vv68yo<&!j4(?{iQVuD!9 z7_xG9kiZd=P6#-zYPbqjWzQ|oPYar2FtBv#wQoLz))NCBHx@Z0u{^OSB%g9kb*QMT zBaO|?^GWK>DB6${qxH&zk>5N}JxNg1v!VrvjY+&mOq-Jwj)aKdfQQWvS1F@HBsi%W zi!^ko{{YkNxc>l_tNg`7DZ$y1Tts}vIPPeU#q!=In@f$5-wD~;Y0xT@&Q9>hC-A1$ z$sBU0FKHWWjXMcV{l<%J3{pIn?T5h6{Io5frYdb~id6YI=KB8tk&~*$Exx098*fa= zcOl5{+*XNbjHa&cX1L~qC!hy)7*}9DjU1@LOp@8-HYEz?*;0^-=%sGm8E-gOYk_WVqVKcK_-s&@v`Yx(CYSi-1fsOD&zQq9)A&9 zH1BywmS2H{F-iNf*t_BQw5CVAOP?Z023cf%r9Z~J++9pf{hL?0>CmS|u4tUDt#J+3 zsdF`&Y`1pGjAJ}VmrZN8j z=+vw#yH%&^{{SX$P2LhP{>(F+S88VzjqMW6mBfWx3-fXON6>$s^`v8S%f(es-82K2 zag)m$QqYQY`G~f#lW=UGYCOt(wy}L!HK+x?ZQqZ4{{SIZ%gnVn+?_eyYDXjrpb?z( zY>ok?I()XU=wcmK`MySuopUrgR-+2Zh#ePl<2>$OYd6srsjhcXZ(}xbyH9i5%~AR_ zQeN<-FLbpK#;V`-ZQf^8MJ&g#8LEnH*&KE1Dr)jH?=9LZmkgw2k~8UADh>+F z$z$P&ZdBdPj|%gwM4kT5-Ck zrCw*WPNTwBny#&T;+t)EPrJ9a))cxtv5+GmZBg|LxBmF9JE%1%y-#K_l~pKBXwNe6 zjkMN&KhrHPkfiWmB08ST8=vJ~okpca$#y<+j9f7hgttw8Wsi)kSKMkJzAMY(@_Bv|CIu~Zg zi2hAuT~+(PYagCp{{XLD68I72VfAVHn2jd_ux#|98zLEJ{poD;QfnCKQkC;T(2-fq z1(3O*WJJ(A37TMCvSH;P_o;z`hPlt9Ot6#`N~VzRJQ@m2c4-xGPP7dUmA*A*5VM(xl!cn9U}1K^CJKsAodhw-jF0EZQpN`&&1cI~O2z zVn74xPZbi9TbkJ`v2`2ha^kDboi^bckm`D6 zs$bm21>!QSj0W{1Jo@7l<2JWOl&eZq)09l>ojPa~JH&jm(m~3f#Bo~2X@@*y?2en^ z*O3kF)NWKyDzBDLd}kniaz83>dz?7+E>zaY&-jjQ=GOtYWoKA|%2%fFPaj-juc4M6 z5_Im)GDN|o6NwS4MewEU3H>of=6(E_brzmYFSkL_MkN*HiC34sPB|lgBGp3irFGD31EQ&}31Dqc9 z*q)~iMBG|N>dcbI<%K{KaT(7U`GFr%{DpT}TIl)p7tLuATO&<#8pef~azN^N&+@KW z9)uc-cLj##-C9Dj!bi#*l|P5;T3o^Fqb@-(k_geA*?>E<%QF+#^1!VYrwwm*SLi-@ zfb$hs&|mUNovfn@U@%uA82!9fBxcs=xbch;zy?k?#O~+{{RxB{{UUr{{TU1 z)ho#4sVhXWAN++_cl#gy+tj7`jZanS`Wg1^oj&LN^#1_asZ~VNe(@{+0LP`T(ZBQ~ zSw(8jx{mbW^B5covz?c8y;XGUm6WJ(1_;h8YBo~T^KtYgTAwUSH=5FFGY3Q{pkM=C zbtIayJnR+{SakXKW`==wuxl0*6NG0lx3=NO>s zK7{dG)c4_XGW*6{y^31YSwx+A1Fk(fewYL5eXEj_v$5+|j+ZxWJXd9;d^eiMNV}RH zdggG_G9xKLyQprTbwKOxM!adzaF4{yO&`bl{id&DJ?5=@HLO!3OA(VH z&>xs%>6#^ng`XrRv= zs7eytyj4g~6&lp`(*FQ2_y#Y<9dl3DyjeB=l`BhZ@gnYIDaaT+9%`_#l{$Q~+>BjF z)u`nijO!HpEufk~fEYFpT#O&o7W}H^Bb6((gW>(M-FTMXY0eh5YSc00i-eD(jCVGK}nBV z3b?J(f!w7mIcf^IV%0X0K+&lmYE0EK%x0w8B=OQ_(JV(voe(uF;%OOGMp)KTb~=@< zc5cHIHs~{ld}NY1{HvZ$QhFQ4+m~RsdzgjA!>zTL;boZZQ|zE}e+rcgKQby};SCn7 zyqb$6xn4(-%2=-KWMz+b_+=eb`X6!7kLYW@Hk^4Uzf;4g zrA~K<@AR!r)_chU!y1M27;QvR*a64jIW-*6!>dDZt5UWuT+??ac6i_ zb49r(rIT?_D(KrH?liPwgXKJ5_Kbjes~O z9giK2DMtGov8?uyTv^Q7X+L+4etr*7I(6?(G}unOBcj}z7lz+?+)ITxJqT~7Z>@AF za_V{Yr8G~O#XF7Gy`|*#_ zswyGH+1$H#Zt-ch6FD1X4ipZf2fyb>v*n6?$)$_-(v>y#N(|LDIto{Aaau=4CW6jF zoMyJU&r$}(yyfF)cVNCYob+IF5A^(LUzSQnE*FcBb8}jXKNNUn@8AJ-Z9Q>y7edNE ziyqvc&a`RMc6&XHu==b0sPE>x{JNZsH)%8r9HT!j3F)5M_VmwU7d#VKs9D_Zlg5#KJ-@L z_xEG^eJg59Tby;8t2a0BqZ0N-R#;+S(ZZrNBcaDr_>xcKS2uF7uzbAI-ISf{CU>M) zk*ZA+A$Fjoh#jdEL{BsnH#Ej3X^gvKL508G{{RYPn22i=+)SMfB8dT{G2(&Tk!cMw zK}@TQ)`6xWT+%5rSkw$qS}eywXtNz7XtK;ytZbxQg)(V0bW@qo*@*3}rIEhrUoV>SpWIvY5ANQIIH-5pBArP;b~=Awn9IAfb#!OA zWw?+I17Jpj(N`mna&cNx!%A926Tg}Vuzov}kRKlSsFoHhW?ICp`EB>2(%i4v{&>~x+-Gih9_o93 z6@=)x>W->4VOQaHWL|8Ve%Flowvyyv{;GZIET`&pCwX>gp6%nfvRFRw0LgCs$M=-` ze^Ksf(|XyCtZ)0}zhCn?S^ApR#xmHZ^v*hnfV)QO>V9P*ht{7h)s9(c?r7b3rOZ+y z*<0pc^`2oa3HBUg^{#q21x??Xj=nX`TE=#o4bw_&W|G{13#mB=(-`acis`RYkuPYj zb5f!0-Jzgrt1Z69y_u(G`=2pAKD{a^%}?M~6?!U%@g43*Y2rWaeRo__OV@5f=)Lz6 zdWVFB4iY*DNbf~MLJ7Ttpfm-fgA@U!7wOVe1Pju;NJpAV6GTA}Q4zfxkDlW>?|bk2 z-S+(@zx={3vuDOe zAegj#G^nxz(!ix^Pm_?)r1Y#gkZ*NhWz!(db2AZO@MJq+I0sCaymzzY2tMiu1_->> z35QsxD0|nHg6Knhiz~f0HB90Xd=`p6#1=}vV{{f}Px};TSj69tdoB1``5Audv21Zs znR=d3D!4;?QJLt4Uhadw?U#2XH@jKVb$fMy@V>qAiS1&dOT*^p{0GUAEx;=&GMF8^ z6d#PZ?MfKtHh0Hf+%DPdC0VZO3CY%ZG)@ZzVjkdqrDZSMcquLFHAIedmZtB;0<%4I z!e=7ZrsBS;){0lX0@lx}kM+#`20{UIq&h$*#q5l%gkO{NLAE;j9Nl^1>$<)4?36^0 zZoROXwzzDlD3-M~c>rggkxuof6Iy^9xZ?ZPPp`hS$Q1`xSPZJrti^4%B~8yfUAB?a zo9*Q=T+G)#SyZ-groJI>Z8f`(KUDJiGj*-YQvpK;=B!63Z=Mas)ds;VPqEAMj=fQPlyBa$pmJWY1o8GDUNA7>83~^s3K%%Z zDmM`NznA~eqaHJwqn+j8$%MU|*p*B$-BuG=3#TH?q114x#HC^ipTB;cV4VD6mS5QH z{<-b8CbpWI><4+@KxUaEHKWAdZ|764Yadyya4@|-^bD)+Ts3DX-Tmt9{y<&f1sgR2 zc>L~4e%rV>kANGChQ6yvw{ujIKva^r0cFo?!eby25t=IlH)(Qdiq9^qxms1Gcol-` zt11fSH|>G6zCgW|Gcv&rjTzZst5i#{uUs2ToUU9iXGH2xHhDBWQ3VDR6Iz+Dd_%L_ z4Fh|oxyl`DK;QO%sbR69@l%km9}10`eefvH=rPo;hv^)B;1|S~KDP-nUG1gxbxfnw z*|wYe(DwT}Jfz82sl3ldm>wL9hGzKAu67!IXu7|2Wsu3VownYxps(;r-MQ7(1DE7h9h+BEPrC*;?<6bA z(_WlTjcne1nDCtA=6l}FOG~YHdcE z#>Lf%E%QgD0*;r6X9GDSlcGMlFu2fP6KNLG?ejHYzfC$$KE<0*Dr7GpUq{m;W7#R_j$~Ngcn1jFVCK>C5-hy-gopGtSWyB4r5TN$HaR+EQs^R*H6fM|uCP z^OcmZS&jW8is(oYYeq@6vdKHHMFBQg?ISvCmG`|W$Lv{;9nL<8KKPPSZPa1|xAt)d zek7+e>mAyhUuvnHFjw53_oC2GVA34w*O64%h1AQN(Y}?ry8KMSGOO095&wpNLQ9C% zeZ?+|EEaDj^u3}rj8je@3-o!EjpmkKbVlQ8l`Eg?uHJ6y^AtE`o~_9r_xjS;(3#L% z7oVd@ zM6skmA;EC+d3PSM;&*FnyCio0k42iH}1T$7oh=Gemz3)8sClPlXU0pPZaIw znIvy|zUn^)tR~lfW_VLqZl6~?*{D{-HV=(fpCawL+`7t6)8B)));jPu_l8d0+9;*^ zEtXSX;(zgn^@v`b;FGw|fY99Td8x^A(@y>|gFIqWh8 z%;up>fv1^lZuxLcXAi)WC1dLD!M5&(d}YKYaSi3+x*3$PkFp}pN(H_XD8|=Rf|uC1 zHn#T7^RKHZ=eHdby4jt-D}gk#-x}Q+0uo}plqw><+W7)u57gB379WP2gl-cRex%u$ zHJ7<6Yqn^>+7cF#Ykp(eAm2B+MMHnVtXY#*z{|~mmRDS-hNjs_k>(_BFACztpnB;H z$lI~YZ7Msa3`v=_bFb+jCW@)1I@knPjuX4(Gey~@v68m#y0T&`U4^C0k*u0mt18@b zk)E2#JR_b6DiPsV!}MPR%2HYpE}gVYZIcpIOFFt=_98ymto6JqNyd52q1aXFF&|A2 zAm2bUpJpzI`*+sA-B}pEm)5dTP*ylO9T>{NY>AzF6HdJQFiA<=-Kn~aYo4`R5-GMt zRuYxGIl8Mg zTU}>*Mvxs#?a=1mc$WE#ukC~l^Pr_A(&2gU*id0E*2J)C6p(H?qd>~AS*qN;y6PIR z{=kxOfyxW1DwWi;uN^#PM^1}yrd6Js0)p`6)s)o_TZh`}dal9^>H45wnM|lwU4fy2R9k2=b<&uw z8}X;wd6~-+Zgca929O0JKYgCmQc)RkI^!$NqTL&L*V4WhB6)kj8V9vXDTPkX*CO`h zUeB@$LQ~wQ%SB5^yG@#f`cZXHL)ibKW<)35YDe%!}U7Bsopxl;3dK8wV<@q?w? zyQsY8q1uJj4Z)xx+v+o6^an(zjH}fXCSSfyJ1!~=ZO>PxOzrZck987^CfcvB_G?q} za6+!9l*p$R26gPO%Dw(NDy(hI8R&Y{;NaTsR8`AruxqPB{uZBSMS{b;%Zr(!<^5a5 zuU3QktNEkVK}mL=HRGR`_xY~bxNgr3-qpC@YKB-?&Gv~~0|l^G3Qk68Y`)3}4UowE zlv$Gfz&ih8xR+XW7d%La`O zey1;{j_{q1noUuRckEBmGFR3LQ88Z1!w!<#UcScva8LcCM(HQgVA`9Wxy<*|Ri>JH zFJg>t?z2y}3(ULmkUuUMF-^$Smw)Z3=Pa{> zv(RkcpzWGUW!*}#Nl>)dd~v(2Rq0xJt`X&@bKMcI%qN6JP8)pq`iQq6>6VGgOs-0z zB%>jV{k96vaJ32n%dx*h5GP|%YVk(%+P2YE`}Fywy+*1T!Ov5CB2A+Aug4>|eMi#Y zR`?l2AxCkvb7IkJ0x_4JdD#0GnF?-x*|(nZU0b_m!mtzI>NaEYI#>(Mqu71jLRu}( zb)cWXY*|c!U)y_@nx&=GXOiaIBNAigrI4j4T zXNl!Ex|E@8Rd2P(nU8F9$}ZR~Lzg;rU6>VocPsbnL}p<-Ew|cj>x%P|iHwkd5x1if zFD)(N52p?ea-Cc(@>gre-USF6o=!APy|?4gbSkvE8Fri6YC2t85gVjYRShqwXgY-| z>g~2v4;{PQ;!H8sC^=roG>pT+Gn4n<*l6A`&sz1+6x?xn5@HpeRjxeObtU2OqR~g- zmuspyq5Xvem0{Q1;S&!%-yEZO4}jIeCki{`G;K^o84v6I%V`iR4|r;|9CB)54kVTlFP*M{>{efV2Q^F>t&l|4VWrX;ZD62)y%CGW1GAi>@4LZ&$JHX zc{T2*e3-wk*F&e()f_>498oEqjTfBSl>KfD-m-Jljb0S^IOLmBc=~KaMKk?MS)mDhHgvcjjjJo&Eql`&CXc-iN!5v=w4vFT=Bz2;%=pr>Mq?FTM5F_6it zt1xzuHH79-3&At0_01tP(KP*iSfgeK93n{QRBX zO=4B?{*4RkZRwvDU4mRjqpF|w30RWcZmn=0f)@yJU!^6kNEeG*!Jpu7+>MM(D8oqm zIe7!4p#|Reb+`v-Y~DQ$Ek5TXej~J11qe)74YH?8*E3+<%7`EMsRz-CehR|I&!9!TkDDNSpa`Z*~X;U{Q9*eRgw6g>6H24FvwD|id{{dupPU0im& zaaF0t0I+VM6gFHqJ2zao1m52qEAy5p_wJ5XS6Sk51nX1Ln!v9ul;H+?p%%A}3q78N z*FSO_-{3FJ;|!8L1ePwZE{LdSXh`vXW-_k#PP#b7axJ%*GG|8Sjc@tjwKU(>n@f;I zLnwe{=y-}0{7|$;3T{Oi_y+d&b)%L}G)H|sb09hKvCNEzO?G31zxFi|^A}|$GXoj( z)^@`^MJ>5A>}_g&`!BRkm8H6w)(}gES{%5xn$!q7F@Dvo3YZTg{yOoJt*qttmU!vK z{n3jg?BG7{GmG~>=d2$uNUdM|EUDfkCv1Ays35U;23UUBEW^G{r^NhDLuB|{L}zbl zjqIlnpEph?6z}L+Bg)M_Bn;`4d^TVc^V6u~xS?Y*WrZ#mjLnMk`0$x3w4Bp?$7{eJ z_*t%{GkvXk&f+AC?t;N2`yNvuLSRT{MtC(xLiT*v-BO_et(~X^cJgDQm89pN?ya=? z3vyc1iDmm<*wZ-_leda~qZaW@IRd0YV=9T`AIyqj?&RDL7STnFAcnYy+8Hrh2JXzj zgs`l@;vAoMimPku=}rforjGu(J|oq~_yN$*lj0mt^r+$k7N1^~T#N72$=*u~KjMXa zjO^eVzmv){{jA_iNOlYNU~-~+^0EU(DO#ZkTARTOxQts=RY5J&7uklSozekC5zS_8muA`==}kdYX!P*R?gpch2} z3|a*u+4Arnw^g!~-pp9NtI~5!AWYh;ke6`}c>GyP6GX_j>(Fx5{hQksQ+e!LFMu$qpFN)O?uj|{La zFXY~m&}$Fmm6F};_|g*?*0M50Ja@5=>Vb*f0e|q}HCj2IB%Z!ZB1I~#Q+2Q3Z+@OO zw6|`%db;0#c(munT54#lQ;@)xzJ$b<1$QGtf1nYe(-XTz;`p{GyN60M{vNR68(}U* zccE}O#vDPqZl{|UM1;^j)Ak89qR2d`b#)~DOs~NuX#}H|EwUe@TfvP$WWEA44ZRxzohVe)}Nohv#*E-n9 z36vZw$jD6#2-5gWN8nc>I>DTE`el7J{;IeP?uvwaQh81Sr|W=JM4F{Lfzx|*UNA#X z9QFdwHc?YE_{-)3a$D}rXwa>dC;O$jDNncM`a`iV%PuSuW>@h%r{I=hOXjhqhZn{6 zEUJ*z==$GQ!c-^UJ zb(}jEN6U@uhUGanconJZnNsH#S+KL_)N&(F5D*1G0hANKU>kWG(lGwrrH;GeNx5>w z(&?N`wVY^rhCU%3P)r9Pd3+CC5)MfYe7tZ`K|PH$KmsPiQlN(cnNngrUWR#Ggo!GW zP-0c*q=3=063Vd>`EKC|2EY}HDTHZnm2ILk1hlG!b#fgNuMNw|)A#w#kKnbIsOwv@ zb4Kk`F6&5uH%VWFUEGjVlY#>0A=m8@DoYq5FsTC6kD~L#lVi}rFzbBHH z#!0~wM|w`)m3mj0+y(?-Wxp`a{2X^xiB(fTPFj(2rOQY$l>%kw&lc1JJA0%iOcg3d&Qwi=E2X{<>JI0teg}{@bqH%C%6fiyXay?xPfx0Y^ z6UizDi7HZ$J59nQSER4MkBXtt#}`Bnu(|@q3PBR)xK$5}h+@kW z6WH<`**POy+bhXZC{A~B)@gNdG8?1GT21N56Y#l_pzASs?5vUOtWjV$5)XvFYFi|E z0=AKi^yFM_8J-tQ1#}U0DGVZNoz-Cke+Aa_Yie)%JlA~iT8bEkqRmwI|NwAXwO67f~Cf*PpG6U23)$8r1^J%kR3-C6wa>Rfc#9WpqNLVZL>kk`0xPuP z-{wFdaEV)>ry~di5(fTbF^=ATAQ}*LBnVUulDqB;!ASX_C2(FYeok1NlUD#x4(xkU zsKOPCQ3${VcsRM?Jkc&r62VT6J~-f*v$vloIsj{_sb=Jc^YRZsdtsb(HA2KfJbe^! zIIM!BGa4i3h=z+Jv2s%4NEqBnTuw$FCXRH*qMecQNGuGA_B?6ztS8zF=j`MkP>Kok z^9VWR@8sdkdm^i|vgFBm$v{6Zg}^|dN*G!Si9o=e#hv7(<;0OPXgP6tM>$7vd9*Y_ zMoLyrP980XL3_A3`@5p0q-C(KXn$8L=tJd|kTWXGB;q#3MLy9??-p&f2-b178OAZ! z&l8c65PA4Hd7uMu-d_H$I3HIZv>$N$hR(PES3m?WG|r>syIAtSi1i&Sw7&xu3;#2bF} zkkJ3UhfZ!u0*ekn1I0m+CmmGo<`jbQ2=qU>fv6GyMzmi5D+sTX(AmSu%O${-6$B2o z#CoAUoxHw-3jGQ9zasUa*UX?#5IM7{utzv;5xzQ7=t1@|d+k!3|G77Tqnig9A2e3y zq~SmQ@Ss2B<@+wL6vpFUH45W_#(4t8!S7FGt^5zlbfR1TR+*48(nthaUS1sQ?1T|V zN+FTra&RhBy+7dmaV}oyfIvT|5SD-T^q;5P{_68f|4mx)M>8V-6zMNP{!qTZ4EKk& zxhNTlrFG3hj-Im&nZyOUefAzSC)+wFRhI8lbemg6>5qDa|5Lqxs@soh7xFx9oBA)W z3JEje#xC$&tTw-JHDsw2yb{TqtI``<|BFt6Kr$>p^y3eGmcsb|tA6~6EubUPnEx(>qJgGB?*bU9tHLQ@WGCmy$no`^y!_$R zFv^o%QgR|Qzd$D+90pDXBRM%jNQY-`3gcv=kOEv60tS~x06xYB*p-ICrR2ZwO54CJ z{#G1L1<3NfHbO%mCofgqpVgC*6a7#|I3JAXqzHtZ?MH*q6FH#j`nph@7xYIdm^F-! zkO;V`QDr2EzAR^D}+%)a0^}JO1vLW^~`u7x?{mGVZRu4l{Stjh05A zVBchvyRm<&uXUhsP=>BNWffEz9hRBrzjP^kYsBSSX;cp^suM;I2*E)I27klHgMnaN zCwsj3%rM4CdK)fx=ZVaX2GvU!Z;*%C_xS7SHNy-DiA4#)1O!B2Fup2G1*ZIS9|n$v zy9NaKC`d{Mp(O(Tz)%9??J4Qx=7>Q{`UE<9;4pw)O9GB5AkbgZ8{_W-+#JvzKR!8( z^k+Q~d>F^cK}vi^eEPilGIH$3;w^{wQu==N^rYUd{zc#WiG%7yVtfc5LD4^Y9TE)& zgLL9918a;!M-8ZMX zb5&jUV_jLkn6cf+i*NgvCO+;iTNWJbK23e8{AIndogu4r!mnVJ_N(+-C5*cvU5Cdk z9_of=8iV)k2cstK#isc-q)9p9%B3XKFZRYWTXtK_>*?rR`Aj5ENo{Lw`)ml31(2lT z`+ZZ`#B)(pJ*A8!sed!2&X+{z;l@Iq`{38Ql&EUjrjFggCCUb@Xm+8%v*$cBo!RCEp62 zHGViO8b1`U7sns=g8P!zJsfWot-x7%c0Br<(A058+CPwksr*!12sxpNw|Bt*k&(dR zQZRWb7(yQT-AH7BUAgbOfRX&aG{|T$&#&@>2|z&4Q-NU7U{bsj6?n`@+jZ0EanA6l z`^S{BcRg;O{j#sj5+IHewxjo)A~#fTEzP`jE?)uY&01#mGiVX*`)S?sJdmd;PQR^t~S z^@;BK_0R3r$CI;``u%k~#lBoI9$Xu<9J>!hR*}wE9_G?DTx?uMdyYKxn%-Z2g&q2cU>bQw%Wm8-?3W}l&=AbrA(tL|X?Xi*~Vp{Mv3Dm9bpY!XPu zt#Q+_5(?6_iam=CO7 zFoG4UoGxx%Ob^w&Kvv1uKPmb$Ya$zOxEgPY>UM8u(_tqH1Z{pfbn5B!z(Ac^BHF(8 zq58&QjS*3CN_+I13~$vfkIEZKMC|Xmvb*_T*x&D?D6hqPb1$O~C-QMyR7TESr8E3W zyeB)gQ94$ok?kMv#E#j+~#FTiqP{-d=bSQr%AMk}x!kf2;|L7{B zhN-#Y95s#qGVm(s+t4@i5|zRDXVkjyGu~+xSLHFgQNXF+VV6f6VZL~|EEm5ZECFkT0XfvIN2k6S1Eq>RCE2PuD8C&fKJ%!edCnnq?w5epfOyIRCy*mJLj>$ z1~&-@>&9IhADQP6bBoB*bl7;~+4%jM_*q@9|gjW>J!~q;)!2?6S zJ0g;Eu{vNU2tFQQ+pwr8Lb4y+PC^aFFY?3pfqCJ9!GzyS#U6VQfno3yP5k8|d}#Yn z|NZb~I;ob<63z^9mi^aPXRii)xF>_eS`Rl6T@J>hrr_LTkujljT3{0C(<@($V5X9S zNg+?17ED?SjzHSr5!-&fJvh+|tUVV^2Z2Qs-UmEu*&kk&nylXWzD-+1R$T9=P5c!E z{;#G$21xz)AOg+=V*pGCpOlVL1LuNM2SyEIP+c#K1Y8j&e{upsC-w6L6bK6Z1Dvo> zZ6wshR22!6mw}qxNuSXSO!SZEqA5-@i8e3s!scmxH~{A_)+5PI{4aoPhBgt zXgwlvtblARG)vnOp{F>henWHT6tNoaC?H62P-v%^@@A~x?R@??Gj@w6MyEEsR@OkOFV(hK zuRiCj#A=+j;$%MiXMcr}}u7G*`M>MZ4FdY!!SOcGA z-qd)pt5cY!$`}|f3VEk7MIl;cmEm#Qny0euAvfP5t<-5&>9gEJP)Phm-+M}@asGj` zAv8xl^;rh_ujTw5;^SvOIq*&e4SXuJ=j}yT^BM!onQDY&>~L=p@&^?V5ciAPk7r*Pr5Jy6PYxwPQ#UXu=xdwG+rfH8 zphO^eaYUPKaq4E3?uvtkW=Fe+8M)?tx7r?*jKHnwGcp@8QuM=#vfR>Yn?|QWo3_v1 zJg_9@x_ygnUc_uqoH8dPwZ#$-I95B`(*?boo67zRB#4#j7IF~Nul301aLVlD(zgIn{){g|368>r~%q&+-z+_!3S6mh`LV0v7wB;S-mbjW#y_GlF|db|UZ_IMGq z4HAo_Iqghi?=Me+cT$-RwwO#0d)#L&_(>#&Js%Q1x(-uZk37qec|EX-i2qHL8T<;1 zsd>`Yg@*aCiB0^X$Ki%GxRxG@tXC%5?ZY3%gC8wFz^;*wyf*`1ZtB;~xihetJ@$>o z=}XAy`|J_(P4FY^^HA>!iR;EYJfh{5`5IZTdDjp`H67W8U)*imeG;-J1PfoT=hCkl zgla-j0b7A{wMyK?Xvk5whc*5c`#dkUm_!Ch@f{n8Cc2W0oP9ITFmNI!Z6q;EX4tRT zWYmj2SnCxlwcFcIBD}V7+NWY_Oqkxtq^qrlkI|$IUoP{jWoo}STxNSWk8~}nf$<~z z%X9{#g}NM$$7NS4J6;mE%2BO8vA}Db)xi(kB0>fnUkg&lSGg9|7(O4dPbeFGm;GzN zqho1osESLjmc+h~`t3d<4!;tQA(a8&7Zm>3qCJkm5OX}eb{ylG&RT^sfWPVi{>uKr zUqmvpclpdN%xc#j3ptB8*#1LhV2*#M4u(y_ix0LMdWi8P$9UC z=*R^8vpqjrR^nYeR&TldjOLwxWAj_l$jb>l%*(HzDR(nP)Ub%2Qd@9I*)mq%owk_V z5E6eq(Re#>gNx89Ia7FIZX35emlmf53Y*tZjbFInW*NFGd%n=VcIee*Y>UZWkoF<^ z63gP*7Bez#S1(!ac2w=zrlr#tM-Sv_U3MtTF&?WGJscx46n0bVY?Y6(0jQfDem!kx zxEgO;8Jzz*lj@&QD<=Q4TxWW>0ZvzCDV!}RaS&ILdM1d$T)-zsAfkv>8>+sdj)@El z^b+Jx%TbV{Y5wq`U|rF6J8FrCelA+1@9LwXrIk}9{+~CvY&U4umExR|B%dC|&!&2#s8ldTRH&`TL#AT+3g&smi&Gyu1DaGgNrJX( z?6m@4o-4H?0SkdBFPps`-L&s_fYCnCD!4rnbZ?x}J(qkO(K6Ebli%zCezS(rp76-` zoCz_E5FoOXSoW`^#lK~yU#V+*W+i&u*B-0CEa9TE0nB-^QyKo9Gl4pOO7bJ>est z1d3{5+!x&ACmckZr_S}ylC9a<&UnUsz6|9@!d*u0&}Msg8|gc8kP}B&GCruXc*5YH z4Cdh<&BCc@2Os$b(9e9UF-#B(t%(^?Kl|p~ood5$=K`^U=LxlI$4U3G0&yN!ALL&c z^C7*kQ+Yqou+8SMin_^u^P7-a{O(kOZ;;co;a$H{-p?I^(Hix+f^0Q>oC1&UE{VMU zP|$cjH>%VkwuV%5V7WWFXd~z7s3PC*R(Idy$8NrJy>yWz-FFH{;^O$)4NG`gKR$Sz&KT&m!dGR6|1LHgCLGRry+BhlILJ+1seF-}1-fq8F+Fiw_4nbwTS^*yFs>p`Dg*+)5`WhfB(9i4MwEOu^N zH1ALlj%~;(5`B}UdRJkJAqU>#NJ2&WAZm{8>!Y%#`<8R}@jpi|NiE~Y?}A3`J3o!_ zMu5mxgYX3AcAbLMDum-mv_;n=Sj%FlzT{+oFgFwBiu~NMM=82CeN-i>!Ekzmj*??u zR*tn;^uwF!3twQ-1jztn1^!?x%InN2pT@*DcIJ&<5~G-Her2qaoUhaWEo1#m%hIv^ z$yloX{=jqq7OJZO{Z3jx##|?3MEGB%1&70d#Mh58*MA3b{wL0Qw4Ubgy41dEe_9E~ z1H&P3ztt1KC<&HZkJq@+eZyOW-SN;}^b(s!q^`?edi9E3V~ zc2c%Xg5ctngXmM#={_~)(W+82^Z5QEUg_Wq-1?LE>)9ZI_94!53UG})1nLp-jE!zt z=XzC<%VL?}{bED;+cZ{8hkSNgso2BExGO<9LCV(lYC&=F*KnaayU$B#*_`tN2AA|W zHz+an>ytZIuPPKMFMw7x`Qz{8X|RZfcVxDVqdi|E=6aU(@Ik{D*|WM*54oF~XzsR0 z>`f*4h^d~dZp1KaWU&T0hJT1`IC_PxKs=2ndhy`yx_TLNYeg{l1yv?FH%F71Fn_$q z8l{P`cECe{+B>R&OQE%AlT`-pPpHz++OAO>y@vM;`Z4m5EML$MRKaX>pY4VkyL&g* z#3mYcPHUdchkhyM?CD4?X$&V7$URuaN#<~fAIw!XajdcZ>v7lwAq-e85Wo zp6+z0r1)LAo%i1&?|m#j-1A%FyKe&NKQkt>^jX~E$*1>+wXo2<#3qNyCr{NiuB&su z&h{(TX~`YRH@ry*p$it&nB0hXWnH=ZNRq5#a}TMseF*7`s~p!yu}EvV;mjIZi!D;N z%chiHH7*>p&%O_~u`^5Z-YGUx{t`sudb!Yha2}d0eU2RuG6Zd?wJM@SVR~|S9yeJZ zn7cm_tnmmM_2w0SAMWeM>(29yw$)5rFnm^FZud@H_Ob0#yISThgF^qi;HpB)Y6qd0 z_cGzpkRV_(&JRew!Gix=GF*87HqZ7;qOU0GDU9{cOd<&cPVu*7A&mX6a|CdzlbO6< z5_~YxUkc-q!`WfLtRW1Te43w#dFwboekyGBgRhQJ9N$!|ttL$Jud49jJor%8IH@Q3 z+79Q&2xIy*$9;|3=~qPyU%W4qv82ATMTv-p$^KfqBwPq400Srn9~u-?Sh~_!8X4w(E1n4Q4Kc@feWnMLy*p<+Tv;dVweC zVW}0>75lAfW&Wmxzhzown}Zbpf;I3``=coD2gMv676OnZ$qQ(pbEoyv3y>o4&;Oz{StqQASzf(N-T;1#ZP zKF4{jRpxkVdC<182mcx(zc((Y+&#s)~IbG7- zoStT+Hk%IJdBv8&+ul%8bbAHLC)zWxjS{iVmFX)C_?$0gC=-){EqBz`ma`E1LfW~dUdj&3FqYl$-Qw5ye07t zLF**y7RNaF?XD@|?(_A6-l@Lo^!@0`7STGpn%;BGdgehHq)ba52DG)rRFe~;<4+p+ ztb1N=F1Jsx-KNbo7s@Iob%YFRw5l}+It)cYYv$|0(`6*u%IwJO88TU*X^9e5wDD_Iofd1`yv=&>hT9 zH9&HR%v+|`Q!99A2$ExfA{}={`cWW^iT2M{J+e8{r}7R2>nX`SN&W3 zZ|yJAU;IC~U-LdFe|-P7|I_yi|NqH<>7VNV_W!Z}bN~PT|J8T?U)*1N-|qkIe&~D$ zf1LlX|J&EY|Ns53g@5$l`al2sjQ>^tf&bUqPyc`Jzx^MT|LuSGe{?_O|MvPE{)zru z|7ZGt^#A|=@_hh*{r2Pj0sr^Z1OLaOzj;5|dLsEp^Z(_4CcnOVTlpW-zk>ej{#*T5 z_fP)6?f%?975_v0@9xj4Ubp|J{-gb8{tw^(k^hzb`26qppYtE{f5ZOfeZl^h{nz}F{xA2h>=*IB<)7UDvwx5OVg1whQ|q_uKjnX$|9$^Q z{4f9iP#w$tH~b&+|Lp(he*gc_`wsQ%=-=c&x_^`Zjs6GsbLs!mTMnz<-g85~6dzX{^1{g%!LxfRch>Y4EFu|a5mGKzjy)!4HcxcN!j;AW^#z;70)TBuN z)x%bH55-Lq6cvt6a_TK%)%JDsovbF{%pZ#Zo~?U=dak&M#=IbWY1{J-xfg+zeX=-r z$`0v*cmkKu2yv0tvJ&TSC%b$Q<=93;D0fYIaoUV%!S-?;?_Oxmn2c^gQB|E+b~Rp>RXf=x~!$}COk@BP`TyBz1S!dksa3R-xt!YuOigUyDIv3&Y$Xo6CV82I)C5glj3eK1oC8A&HmL=_#2tJUooqxDYNatp{ zhyVW2R(>b{lYlV4@6u7mI5b04?LyfI(~?yd=TqrcrH27|U}@860X{Ul;GUaJBt5c{ z+F;MR3J)D1S>27fLrPgsdlRaj=Tf?V$Stq7gjH3(rvr;zZcD_z#YtCWo#u8>K)uu3 z=C+)Lgja$LMlm0roYg2YO1NpQqWoQ?RbJ|S!vR_V^W5c6J=`bv>0 z@0hvy8jke{PA!{w2_!+4{C>XaQ8b5zK)yfFr!?}0h1rA~?-RR{^rsp`&?V>rhvq5M zWRw;VjM4VMAO637d;Y%d-8&_B+QqKO_s@N>V;3WAc@s{6|6G1_6;N@e2!2JIAm1Xh z{%c213h2X(WMo0=x*0dCg9=48M;bMOJ!z;t67E!yskc=;E}OwJRvH%uWyDqnH~@q0 z>~34&Ea8h5Dx=2qXGF-VKnS!8pjuC!%foOucwZm#vrwZtV1RV>xxL4k)dl@5Pmp&uxB#fQHp}>?*?J&-%VTcx%~;~0Z0hP{21peP4?!twgLP7< zl`#t@RQjXFjR4MDU{Np9V?I?&1fx0P%LSVhnINjjj(0^p}fYw^frPQ!G@AQ zTX*f}Y+CYZf*x`M-~=1sLS17y-kbqsqn#`W){bwHAo@&Hb-#!3#cA zPc@rVj~>6AcU^&Z76zQ;Rgp98F}!HqWs4PTfm_P((=zcBvZ&#b2=0j_#$k%$;QwA~ znVCm52ZF;+;iig4{!21~cQo ztH~A5C#fa!f2Ihhs|#%l=z_hIyKR;JVngg8$%ko5&~e`GB$T_*o|8@#psnPEWy+$m za?99w+4L(wm#ge;c5V5IXN^w0g6+YXH%y<%V zshil0$P&8gt*|b}?{x^*T4_lFa`3mow!9}o9bYN*Fk`J#e`0^NzNu&E~!|K$r7T$X!%6X)z3W{0hFy zERYR+L}FGo)hEKJnEV1G<{{_dVFeZeRjQDM*)n|nNlPq#sGP}&Mbdf1>9WAph`|Y6 zraIYH<9>5>k;5ZpLRw~$a8WTMf-S29Qx{A3hbw!qn`~SS{dq#WP)GO8k;l2vlVjJb1q-C|9Xz8ny{D+{^SN) zHLzPp_a^9eree!86FAh2_#o(!VVu;rYeuFL#lxPy$7CpX(uC#}H~rtT z-2#8l6sV7iou~bT><8hk0{@nPKkorZ5HL`bQcgn9+&m=DHIRQ>rXjhAa6vz@P48ge z${*nl4okIU5hVXcEdO#CsHewmJH&F3Ef1W^*2+*ZY}9|3)Ms;dmx`&>>q}0-%PRcrYw!R6o0O8)@1j)njRg~7{u30g6X}=*6|1q}fk_dHx@Kr?sVD=_nl2BbMIVMRn^P=IhzDsRbY>Ldf@zJCy_~Or$di`@06Hw zWQkBpT%1ZlV<#eNr))qluNGOM6tQ?7Q`r8Ub=QpnOUSO&Xo{$V2j$vTbkwn98j;xa zc*P%t)?x{McER&C{pRRWoGBGgq&2}%-!EDm_-Q~*H55LCi1*x0uSWH|()QQa`0`TYh9EsZ&s8 zULH;w8RX;+6X!2b-k4P0E0-;<>m4_lJY6!n{)a9&$mW%?IbL~JK8||RxPXT7mvGq8 zs=n!|pR}}ya;f5`I7AACa!wtU$RB`h=NsJUC;#eu7N#N=FXvK#H%l5L^FE`(UetZ$ zF++rXj`8L=Lf%xXpfR6ayl+H8vLoA=M)N$qbXv)|+(PM@7Z#^g~U;LYE}OwV{{ zs80ZxQrV9^b#)N3_W336_8uup^+M=F%P-M02=;4}^j{BbY_b#9^B;PhL1B+7znw6JRGO1i;~?#5@# zUvC58DGc#G^*}m9gPkhxpkvwwhhP6HCEfS(6k;UZqjnS0HvofCp{K7rO`udgxEy>g z?f;lOD_c+`$koqO0&9ZcGol~VM3_?;QTf%CT@Pu{WbT5#Z5GY?ePCmLn4o&tM$gpq zgX(O+F)ZO%j3)C7Ze=;>-6 zYH^^@8d$Tt0!IbXJB#{Wi_ zl}X@O9N#{RennJkRu!?((#6H%B84~tx`Phh|DoY~3%^<+byW#iqwtXg*Qr`i;T;$-`eCpzYoV zK*qnVhCQQ88*ppOq+%9tfyWxqh=V!3HK=HVu09$gt0Iz$TGdTJE9U4_!5UfSo-O)5 zCVuwPIz-4fL3BG}vZyq#4fxQr1{hrIov5&dyf46}X2E8%IykIuF+>b(Tzy$roRtl? zD>_w`8Va`xJmp%)D3w zYwv|CSdbja1(PbZQ>Y03#-D386)GIBhR3+}LB)yE9JAU(S7!N*JCowaG-&1oxi}|6 zb$BJ6NfG{8H+A_zU5*8t^{b-_Qd|%0{W|VFl2c%82I+|OqZ8$G-D}5VF#eyVjo3~l zD1l2JABfCP?GIH>wNsBa5{ERaDugZWf>|MwdzOGa&zyUgxPr^N2?3N$_DOcj6R}tD z0`em+kfbpsF};XYne1fI5-;esH+c9>Z>CdlqeR@x=MNH$i9#r- zkPSO2Y02BXd&@9#c#O3aQK|IpTMc`oDWwD}3fmq~;$?y_wmK={E$=dg0eEEA=~?=* zUSEw`*aEPz1eb`h+K(D>)8Y8_VVMjGq#%I6kfhYmzeZSapK34vMdvMlrC3{+BU`(y zBx4QEI0Mt8QX34#GI;tr!pbYS0>;Z}xSa#NlsfTM-aoSiEqY1!^DfFPMGoqJcMrDD zt5C&rFk#~BKY&MRY(CS@%GmsfKU8e=*np~v8ECMEBUZJw!a+_S#F>l+y1?RaCitO@ zsiRulIH^X**ebqMX$kAGp5Ug&e#N=Sq1R3)Q>H*_DMsHQ+lJ~XpBXk~ao=J9;>EQ; zGf4EQo`O->lK`&S_XLfU>mdoOql3vqGMxLv5%Y&>@?m)vm`z}MvkXI+ObzLq->`GP zq&Q}phi)uNCv-H#85gOet$+LGD4msXh_r zx657_jZEx{S3|6VW~Rl}T0W5QKC#3Ld|^g6wk#dyAy&8a`F-C61WvjCFZ2aM(6S#W zu2Vr`)vzmv1-AI`Z&HOFiyX|(_Mp2iLT=$d=&!s4GE6#T*K`NRVV4&4Pi?O%^#sgs zTVtjr;;oKV)j!bnoBF^9vqL@BnScK;O&fj@{>^_WJv*9TDE{dA9JG&Cy7NhfKg)nM z74Dx>f7?9o{KGK$vo?HH{V&fElaWzJA8uuMX~Wq`4O&T5;el2XPez4aGsHsGi2oC% zqZSdz^I=587;)v|wc2)aAKXQzwDjgxm?oQt)=@i(xXLMsmw`pfc=~MW+*3onvH93c z#(q9FynkY1Bapu>c5vOvH z5=@-?*1UQV>d9!e{#fB;?v!1Jm?QAI^`K(Q|yU?Fi*9 z9{nZ4@uQAdBZ+H(-EBx9{OU*(g2X*4wn#?d)i|Eozxip8kwu>)-#r6p6i|E+dO!dF zKy#WNKf>MxiC*l!g&9fP(&;zCjQPemj4DRF)I&ZdOoCEd8{aqRD9 z3CA4ExqAcXBimt=n27CN zpqxel3QYX`dci~o`$>+XU$kY75}yechfz{ z>*6XCjMD&Z+0r6x?`sOm`*7#gP=r&L6K0*=bC?^4Nl`0dt5LheOLc*l2G_=7J|w9B z1_PSj?s4Snz4&U-rV4Mbf;J|}-W(NNSd?roC!o(|oNhpIr+7iIOfobLni<7S4yF;{ zt<=25H4;Yh=rQW=vmv9h8!gwJrEPE5jD38Y|6`N)g^`%HuO?t3EbdM*tW7K}IrmAaaHrBhVE$IGi7|aXh#BsU4|;BqQ^e@D5(8QTYdA7+ ziRxRhbGLS1M3{+M1vie9@!wLP0(ydjo`yLlM?5#DWz zoTP&VRf1D=+Ut+jluI3jA@_i(Pu-RHTDZx&QubX%xYQBI_xlY0_1X?l+Is@r*Gy(M z{t7GCvevPexsFyqFxHDavHM9oE8yHZk0rfuD%vPi;<_#l?%wasuKc9jHnsj13ox-} zN8~NMQ(8}_ExSTFqeN#$ekTZY@nc?yXDBoA#x8qXon#U6NMcbknRK4uh0^A6Jfi1J ze>Css$L`BC_yJ2H_kXa?aNSc+$R6EKmO|>sG%$obGB*D7def7UMxG=L<33M_F>UgL zLpWO@5!&kJIWmdeao0V!SckKi<5Fud!>>sKhi%QP2OpkXdrd7K&fAj7q$bU4(Ccff z>2Qjog$mW(jgicTcxCBbMCykz@RLronL%63;_up{kKH`H(dUhQ)Nwdg%9C7#W(%Am zM8}(0M+?Z%sgJehpzU3OK_39MhzR?f&~mjf=A+$DMxl$`s#o_Qoh2-t8>Vxj8afE= zfL7_Ylp8zk=`Yol+8k%vOMS+?7;UN z+`v59TR)wSe)@3dtT=zJ!t%4&5uEI)1=r1y7L;jY;Z4Fe(2Fce^cM3F`$?v(~@`fVyD-&pOL-Nh__(f#+{NSbX1u!LgKPd4Cq0t)QQZ8hQl3x{6ZY|NN02mxcf-SZqg7 zp4Ty_MGFn~IgIZGv`+psGPH19WZ9)uILErD8 z^PSzAcbtIGWoWc40^1?k`*Cs058P7vDql$z6F*vsDF@^pc6!>j)ThYv@9Wo(=M+b# z6Fg-kKi;?@?%5>es8Y-VV!D5?ly#wE?y>xU+fj z%(6`5I~|ZZ)$jHn^C7SN)pGIL&#Xni^O?c>d+KrzETx}uDzwvB^C@(!Jt_~pOcp2) z(UX!Bq-Et(iSK=>FFurBaCxrLlzt8ReW^n#d9Bi(TpHdfC?9uo6F>jCR!TsNs>m5A z+>#Ld7e_2ut6_gzHq|)@lmhn073VBv=_P>GEwEfCO1roJgOMYvXbC>1!G|jUL<9P% zF7&F2W0#9KcS(J3LmyGfJ6oh1c`z|TCQ|hGx{p1Z}Z0VF_wda_zvW2L7l~T8}z{f`d+E1)0jWl>5VTpWz3Q{ zpEJNo!f*!mNu;fLfut%S(A`98fASRPQ8fcU?%`QEEz?#>Y#9c16lr#blL4}_t5*Z? z!1)3#$AfYI_~%Jl?+1aRg_eo&*aoRmPU%Q`27%#r{vsWocfg>6woxB)R`?62VTldmHm8SRTJh~HUgErY+M~Kfk0i{$$C$( z;e~sn`R+Cyci@EIgWvQhI8FJJ=R7~%A=zB8GX*Fj==^;UQb)6W(D&Kim`k=^hC86O zoT`TC{aRph_tO3@7O{P0I{=biI1x<@)I8XU0vfIx{4P15hR1`$>v(rFvoAQSZqR-> z|9$xLOx|=A@L|k!W4jrY`!JH* zUzsvKMWpYW&X@(KUg~a)CDtSVQlfYtqZmD&9F#Q=Flua!#Is~dB9vBnz6qt|dK@t7 za`WhLE&p%H?rrUyU-abXsiBM%q_cAO^bi@}i`dKaGo0b&x7J0MdSBf5`Q(Y6vDZ(LH(O>RU+Sbbgz7U9gbJ;dH`b?M$Pscb)G|*^w2{+h8*zFaFx$m49dqS>bA!)J1 zpV@#{&q$6_HP)Di8s9?Zvve8|=-QSCK*qA=%uBLIp+WbejD{ZT z&YJ>}oK_~@x*~Mh*5rPsLmXuoLmh}wCrtysvVR9OfBS*M z|AX<>8TS4DJvF3cz!x32P>Gw)27deujW&c{9oXB|qOSj(R5# zHXxJsGk24EnVSEMtWiJ^ex(hgh%RzTakD_yiEzN;yw=8A@|Bw7L>FmiV_#|V^azvKbW_F z3j9IF0mOE@9Yp4?+{3Eq2FQvpd?Zb(XH&t{9{LQUE#C1H#&%awQE)XAjEXPYGg7I@ z|J9ywS!?7&0rKk$KB8_80C<@(pE7evH^^J-+=jjs$)n={?}C1W3+DRQ7GK<|&Gy18 z_95kf*t}H3P1jj`=tYMyP9egQHTO}X#;#g;b^d|iOHlugJ=ysm>U;)~fnR;>k@Fl)bI< zTu=y1Os5Wm*5Udr4lyDDEEE95sLTsHx3T-!vn-4>BY0a-0h!|g;Nd*5q|9kY_MG{1j~(Lh&EpWuQ(jho(>(UH4u_K~peRR#M4t}6%iy-I#6-Zkcs0d=Cn9y3u|J=O` ztR)_+1c~=4ymTl$sRWg}7?BmtyZsv;8b(12p3MOY&yrs=TdqH%K_r#IG!Q?ll}zHc zLl>&=T;ziX?%i2N>?j{PuZi<4kUN7c#m_pHUh|c?MdNBtt~P0Z=W9o7aq(itchxq6 z;7_;yA!sPpjb6Bh1)uWrZqk35-_4|uIB!ZN`SryPE*OH=`mU}XGdcPlKgvS6|NY{9 znRkI|RB!#=@~3hBt?IwEin^?bQ}78rZVrSYZP3sKjp4)w+1FfUEUv^L5Be(bTvU!+ z?6h0G=Aa;jpJM5vwQ#E5&s}+p_)?c_|Lx71nXqf#Ig-I6itUp+BvW zs}k!aT;haWR@;w^GtCLzp?PwPrm0bXa@v>Yf4;-)dyaSTr7Qi>-3c^U8tsefY){II zWlQ0MG(=P~_60>hec+?d5LRA^)#Dm^F}GTNuJH6GcDOhLW&h3}24P`{TeX_-wL|Zo z`(-?aM{ADO7tcFk@pLCs|B`N)CUxT~+x_zY{pLjf|M+1;HD0g(7VV_h?#(d71OID_ zGh~A^hv)o3A1a!32iGZe^MPZig=>!jk^mw_YBACva448xZ%409i#^_SCP z41{O*39bU(?0Whfr_$8epEVgs`O*Z4_aJ9S2(peDH8_;gj~ zjCyXha{j1fJTedN;*6EJ)~k{Uxy15A$)B&qvO`s;f7U;u&oAb2RTiFlyaR=UO<=X& zA1#z?vi*7G$K@*ZT|1WhT6_yOZ6uLkj!x&* zqj85d=v9vpA1{Xg7nPO*8JEZT_`17*nY~_0OROF`6@a@StR<=cOvvRw zntiDoXkZyUzq=fFYvJxQ5ca?X%DW06Z@%jU#8qiFc8t7{wlA`MfOFe7Xsv# z6-^zckek|~`@7+bAlNJwY_eW-t~n>~C#J?;47M(Ms!=aOe_$Iv>n9U`I=goG60r>~ zj6S-j+!8mq+w$R)b9&Z5-|BUfN)PCKSfD z>oYpM2m+WO-oNX=SKG4C4EGkz?BqAY4RvPu6pXKeMKc=+fY^kNrI&p3uRFHhwyagJ~wz6bk`xTaFvWV5p2=!@Oj$*`k?OYWz@A}8|`CfG4s&( z)XJIr4r^&dmyl-oCm@~_q0H41#H}E=Wt+!^x1|UxgG2ePO}OEdVw`Mcho2@TthaP< z@wdfa0ehkJ1oPTL7MyAM-T&{VKutXN|Gu~9y=bql$DKuvXj_9LhKHu99@`S(nvnqT zfB%*gxyF1P81dtQ5~k5MlJ3OXQ$Pr+M=vyhxL4b0P_$aeSO zCbTMSvHEHC3TMtskXFSa43sqf(ke!-d?+b@rP<|Ptw5$(nIQ1%edfvkja{{K?Dl;l zh3*6Dh&8RbE=8y3OR!@`q$4+@4QNN`k>=)%(VQ`G_F7YyzkY-7lGdVt z`}l7FH5*K1yc)aE*m2hWK*C81LU%MhWxb6;-kj-1*{#!U4CHeK)1?X1CuIr56D7bb% z{yI?}yI0`94t)y5UuVco!QDoOR(`42$&-&sN1mhJB0odXGSj{he$O>uLvWybFTfI} z6kp5$*Qp>9{O6{Evo!bq*+*Od>}F;6{~zL4Md%GH3CcMsxlh!}h5s2e?^h|G^U3=7 z?jQgE`=(vcGe+l@9PCRw*!!~KrgWI}F()$#kTj{MqI>i2f^Vw_bab1eGqud3#iR7W z)S<5mF;hHga{`RR6dnb0hrH$8H1RW{DXKj60wme>S!6y3MhCMU)0Q3>D9R#we()#b#F_a(7DtIR{qJy1pGbMapH8vEQ%0{yOQ=XQ^qF zrfihaz0)HDY63Y!m(v-&$r(=%!Zndk^Y?q(o^1Q&GJ~{3^15vn#=dm~1HVFD`QC1H z{)-+aUT-H5Z_wJisv6ek6!;N0GO`wg{cl}L+FXX>MkNX9ewQ|WmS_K4wO#U1>!Gag zIA8nh>2l~LKwSUc@NYck_|W$PGEb~{xx+ftG;|N6x({Z`UufMjms!a|v*)1M>zJ^O zAX#(`>tOE8PH8+>Tejb<0RVS0WW;lnB3ZMi3JG>>T+gQ{>-MD$0s_g&IU~ul|MScE zzw6!iN@i~bN6qiew%vzyIq&}|O9tS}pdcm^1(B_NNrn$+oSnPFp(Fn5KXtm~bkG#N zcTa@ej#83rlMoequdD9~Wk)BQ_~i>{;p@Mm$e%L3yQ8>%EycfA|G-`EL~y0#)_y=7FrFAzkk^*_uu)q2@TGQ7rs?RUAv&(K_}f+gTaiys zxaNNOiA{fZ>QFT3Fq86W-obNbi;mD2XZ;{9Paxv11DH)zd+^)#n~H((BF3JMp}48B zjqQLMSHFYT{W7oJHU)~Tb^q<)0wUcsp8+bciwfJA_nc9Jds=|*2&xySlEH4Ggb!1q zb@^da9=f;h28>L3UGAN~_&g6c8^^7G@{}wf6J949%3qTGlLy$~*#|fCa`1G?6VDt2 zVe^liY*{^oq!$4twhia#OW5bn8B=@t@qiO6PTj&&1%b6N@8`t4UJ!^}sziNOgFUL+ zmJas%UefGuM$)i|cY2k5OJj@wWvqYgG=F>UKA=zC+pZXN=RgIh-!W(Oj>mX=IAJf+ zAB_C8%)*gQ`t+_Ip`;~Cy$><}nzz?VS5PVYnE}RtT*IHt;&9f-v0zTi<@CU=q`?VS zVpSt!&seETW1|2-KYSK*KmYwN)q>5a-c&o80lFK+2uVTg*?BL*T||`BTZLu?9iZ{a zg47yFG6{!jdEgt$s-%1Rq6wK4-25j}&;OP#)99UE|902^Y%BgcMl-t#a$M$L#*lD2 zZU_xFtZ_u+r%(V7hi$KjS`pmcPIVv%C#7V3Xz{6fJ6mP7?;}>R2vbH7aF{M?QSJZq z|2d{$^ULs<7ylN-?Xuzt;mqT|h{lr9$F;;bMxiT-C;u*%xDRFewvR@*#$*6j7QnIX z#cx6!Y9HoAQ>Trg!^15G9R*FQcBH~wEHk`q5(oCS3Fh2l+!L3oOceK-Z^0a0JENBG z+ZM0$TH?7(vQdSE0&jo`c}PN{9h3{Z_iVJD)8)KiqIW)?IF3rCb4ey1^0}Q<5jcY^z%=#x<81 zKjh*zY;qG12FK-f``iuaO@9bNu%BX8&J~TRnCReTi(eW*-JRAD8~Agyd({6&QZQd| z?v~KFSFcpf_x`iNI!zqS&|RzUIu!%ALZ6=(1HNP3KE0N0Ay3{CG^^NLqyWBk;7;#R zr!3ka!z=UJycHRHzm@0}a|M?GMya~gs_)_xw6<|Dq!*_<+`>+K?YIu7+3TQM2+el? zFD|t<4;VI%Nnv9lr_9jwQ`kyy%AL%;e7<*DYJ8bZkYwue)WQV z!~wX%9iw-qw{^Z7EhI3mQ@rt?bb?12Pq&+j{F=lAa#W4Jy^H7V` z9k)>n-AzdrhT}{)kgA7=S-Gy+WWbug{hwSzbKX0|I+ce1*KQyR91_7m`Fl6AG^-(f z<`bWnnd7Gnd85;{B+&jQs$zC0hDf@BvsXCyWAgt^(34_2qv&e0;p|X2dlwtMm0?x{ zN8eDLSSN+G+^zrVa)gi0C`Uz+oz%0b^4DAQO27Xz8HG$}`IPwDYS%vp2*1~879aO#G(F(2(8Wh)HghQ+o<`3);m8G(L5jk@qkV3N$r9F+gIN662tW& z;DZHG`?TtGeo9al6bE_`FTLtAZ`>PhgR5(6Q5U9`b;>!Igg^L?>2rXko;1-^(P*=h z?rig6(F>A){`3F;!qo?A{{Ns4+gnbPP{vE)JFp<^%1Fd+MtG`y>ONpB#pm8%u0bzQ zM5G=_xo}=HKVx9HiwWqKRy~(EEy|p@mrupmXIx1L0l|LXu=YX!=AbWkBySOq(H@%FFE4zKUn3 z(*g9#Thm|4nU>sFgHuFH17)A2hlo&qBRv9-EY)kPOEs{|y4milhK*SimQBUYIBYvB z$9hhG`jY#L*K@zwDA&Hc(?zdA2|P99r*Bo*mx4l*Rc|0R>fFJF;ukeU8B%f_^VWW)E{w$PjBN-?(75n02j0x;i5-ZRf=stB#QzyDRyzwegf({OIgA8$?qy1YHK z@+178=}$zf!ZMd7zJqzX3JCETBA;nK-plB&Wq=_qG0J%%_|{^9+WBtS(gc@|DB76G zs||i0Gvl;Q9E63dkqRPs{l<4aNi^wsLpW^RF73~oo2vC$+u?;S}L@V4d3OT@xtE)k{X_f}NZ{%3>fRQnzMen$1_Z56fl)&O^VP>YDpy zHEKkWyIP*RzWe_*$&y-8{kvS4fgg!ld57QPW>%ypTg_IA)Zzb2V>oe^#@$c54B)RP z=dd+Qd;i-08O!tS`&I%+yXJ?DYL8t`BTb(G5c68W8JlJfA$AVoJAF!jHgGqxCvDT7XCi9WZLw32#1B0zzqT-#Gym{^ zNB-|x|NSa{{-%H7M7mArydH@Hj!n4Jh?MoHuZP$IR;MY`4K%kgi-ceG97J&T=e z{f^Q6b7f~zyFafNHl6t{VA4bc~Ut^fboLEk&DSrl^L(9D{axc z`$%7GIqmkOv87xo3Z-EQJV@ANpK`A5Q3~6w;1vqY8%pG4c#3m)g@$Ups7|BeVc0>b zA9A`9f#rs!cGb6NAHwBt@BjAxry>OD3Fr8fqfXLp8gEYW)IP)E_B1PF(D#rL6Z|8t zCXX&E`QqWT>O3yd&81zRi7OU6r2Cdue!lr{+jGtLplXSrOM{eYP5SNrEkqSnTrK6a&49%^0d;+VArw|Wf|s^ zq@VUWtIVskty{|x{ZQC{t%&g-_?~yxv?cfpeXltaD*-7{Xn$lmnYSpA;jciH)z4hC zw0WF^Wq8ahCND9l-VAXc@lv-TVTrB#c%1|bdW?D0P=}!nFH`nUP|M^;v};wu1fwv5 zh?CM)p0N$`0Cl9hffjTO;Auu4dyFYR`eoj~^-<@~u2+-)%#o3#0+Cq0To;HwAU>2{ zXcajtf=l1ddvXbh^%fX*6bf4n^zyNhC3;;F!Sw#7s|axRIYawB^C_2lHL69~*NnruBo2&&3}~9!Ne6vZN>{l!L7bO4G$qvn{$}0ZPuZIk^@4OD|&q zxWT)n&@gW|S53QR-oD`<*Jg8&%ViZz{OlZSTvtDEp6%#U5Ml%z<`cGl5&E?8TpW8s zOppg+BsU9e0jp5THbOwYp$xKLXlqqqiLr&JfB(gITlnx!4_13NXQCnw$cQIcW;F8@0AA0%N2Ystxqn!Cc7?HbcOs}ubUrU7?+vm1A({HgFa#*Z|S zCe6(A&tLE&+}EUy|5=r{E}j7?)=mLTRN%H^Uyob>;Yo%Ynuvt0eVpF}vaS9}aO z*K=#K7a#|?@{eMk+NN;mpbs;(%tGYB2FdqBoVjLMSNbc-Xz*mpOFBve2t? zQFRc1q(}4-Tx?U4Gi;Fwa_}Af9v3MLhezAQYc)Oxd&YJmkET)9gTg* zS2jkG&4$2l>^aYVi-SCuT7y*LBuZw0DNRWIvmz`;srdzu5Ul$6`Jw&F+WX4J@%Md; zRr;TKIg1**uFrFbv*dcwW6WNx7KfeLa3Z`6e8PKnXy8X~Q~Lp`e~)(yWmte!%!j9N z!WP94Gn>33;Z)NR3Ua<~+PXZlD2I0y8%idK2WaZKdfB3M!K|d=?{MR4|J4uw&E9WK z{U3kUK%)!M1a!>DW7P~5H zxWVn}i&_E627(~Lyw=&4omcACtx_7f@_d4ZHVf#OyKHx4GX6Aj6ivHGp?xd48jJn- zX!{S^fzhD+!an2Vb$bWO6P3;T^*OsLD~5a(JM;d@p~Immw*WOj%D;1Xvpx<*+90wU z)GW+H1v;iYZg%Z$@b-H};oB)%Q~;RXwT#2s`AWb9zmSjx7$e=;XGnFH>q=4k98chG z>p%n4Kb9+}d~e_E{N(!AIbAgf^|$BVuZQ@mpe;z;P06O8$*!lNgFO<02STqufA(&| zP}rNZ)$($S`NE-XN2^8^uhCdg(#&^sW^)VLC`c0ti#He=tFlIt)ZjJZ&nVZM9(p;8 zG7hSwO@LNxmnbJnb2V=?`g#-sbtbz`CS$s=!2RAnV7f8qaE6cpf(lB?N!O^%J#fVC*?Qe-0;RYT~x9#jNiuAQ{ zbew8P$DP0G=xshAjqpx3gS7A)IRX1lNwf;(*-Pgg9JfE-4E-tp@GP0kD!(|bdV2$q zFFKFgkEgK5)sN@`c}Fr&Y8fuX7>~;|^a^ba8Zn#=@PM(NlPvZ~m+fFS4C6>3&5edn z4mQP-Rw_|245$*HIh^lWlXUm)&Ls^$UoduT6(F6K zOgwfBh`nSx19}p?W>A@7tihCZ^aq+ovJJGH8jbYz^EVj?xp%WA) z2pjyiLw2gY5mo^d8!LODGdg6&^zzCDqG4|CJp9PWvza@XP=E7Y<+lZ9o6G7O6kqiPA!$ z2`AO#I{0r`ceV@f*ftf<6#u3+H1e90r#Ff?(-yTj~DF9?L z^c9+UQIV}j0i3LS4LC

-
+
{currentProjects.map((project) => ( ))} diff --git a/server/app.js b/server/app.js index 312c0be..29b1503 100644 --- a/server/app.js +++ b/server/app.js @@ -37,7 +37,7 @@ import ragRouter from "./routers/ragWithKnowledgeBase.js"; import googleDriveRouter from "./routers/googleDriveRouters.js"; import vectorStoreRouter from "./routers/vectorStoreRoutes.js"; import workBoardRouter from "./routers/workBoardRoute.js"; - +import projectrouter from "./routers/projectRoutes.js"; const app = express(); const server = http.createServer(app); @@ -82,7 +82,7 @@ app.use("/api/assistants/usage",assistantUsageRoute); app.use("/api/knowledge-base",knowledgeBaseRouter); app.use("/api/rag/",ragRouter); app.use("/api/vectorStore",vectorStoreRouter); - +app.use('/api/projects', projectrouter); app.use(bodyParser.json({ extended: true })); app.use(bodyParser.urlencoded({ extended: true })); diff --git a/server/controllers/projectController.js b/server/controllers/projectController.js new file mode 100644 index 0000000..e382e6c --- /dev/null +++ b/server/controllers/projectController.js @@ -0,0 +1,62 @@ +import Project from "../models/Project.js"; // Use `import` instead of `require` + +export const getAllProjects = async (req, res) => { + try { + const projects = await Project.find(); + res.status(200).json(projects); + } catch (error) { + res.status(500).json({ message: "Error fetching projects", error }); + } +}; + +export const getProjectById = async (req, res) => { + try { + const project = await Project.findOne({ id: parseInt(req.params.id) }); + if (!project) { + return res.status(404).json({ message: "Project not found" }); + } + res.status(200).json(project); + } catch (error) { + res.status(500).json({ message: "Error fetching project", error }); + } +}; + +export const createProject = async (req, res) => { + try { + const newProject = new Project(req.body); + const savedProject = await newProject.save(); + res.status(201).json(savedProject); + } catch (error) { + res.status(500).json({ message: "Error creating project", error }); + } +}; + +export const updateProject = async (req, res) => { + try { + const updatedProject = await Project.findOneAndUpdate( + { id: parseInt(req.params.id) }, + req.body, + { new: true } + ); + if (!updatedProject) { + return res.status(404).json({ message: "Project not found" }); + } + res.status(200).json(updatedProject); + } catch (error) { + res.status(500).json({ message: "Error updating project", error }); + } +}; + +export const deleteProject = async (req, res) => { + try { + const deletedProject = await Project.findOneAndDelete({ + id: parseInt(req.params.id), + }); + if (!deletedProject) { + return res.status(404).json({ message: "Project not found" }); + } + res.status(200).json({ message: "Project deleted successfully" }); + } catch (error) { + res.status(500).json({ message: "Error deleting project", error }); + } +}; diff --git a/server/models/Project.js b/server/models/Project.js new file mode 100644 index 0000000..3019ef1 --- /dev/null +++ b/server/models/Project.js @@ -0,0 +1,17 @@ +import mongoose from "mongoose"; + +const ProjectSchema = new mongoose.Schema({ + id: { type: Number, required: true, unique: true }, + name: { type: String, required: true }, + description: { type: String, required: true }, + status: { type: String, required: true }, + techStack: { type: [String], required: true }, + imageUrl: { type: String, required: true }, + podName: { type: String, required: true }, + github: { type: String, required: true }, + live: { type: String, required: true }, +}); + +const Project = mongoose.model("Project", ProjectSchema); + +export default Project; // Use `export default` to make it compatible with ES modules diff --git a/server/routers/projectRoutes.js b/server/routers/projectRoutes.js new file mode 100644 index 0000000..8a6888e --- /dev/null +++ b/server/routers/projectRoutes.js @@ -0,0 +1,19 @@ +import express from "express"; +import authenticateUser from "../middlewares/login.js"; +import { + getAllProjects, + getProjectById, + createProject, + updateProject, + deleteProject, +} from "../controllers/projectController.js"; // Use `import` instead of `require` + +const projectrouter = express.Router(); + +projectrouter.get("/", getAllProjects); +projectrouter.get("/:id", getProjectById); +projectrouter.post("/", createProject); +projectrouter.put("/:id", updateProject); +projectrouter.delete("/:id", deleteProject); + +export default projectrouter; From 261ab33dc825c4ae230e7165990cc0681e3c1c11 Mon Sep 17 00:00:00 2001 From: Vivek Paste Date: Mon, 9 Dec 2024 10:56:56 +0530 Subject: [PATCH 09/42] worked with responsiveness --- client/src/Pages/Import/index.jsx | 0 client/src/Pages/PortfolioHome/style.css | 9 +- client/src/component/ContentPage/index.jsx | 139 +++++++++++++++++--- client/src/component/ContentPage/styles.css | 139 +++++++++++++++++++- client/src/component/HeroBanner/index.js | 55 ++++---- client/src/component/HeroBanner/style.css | 58 +++++--- client/src/component/ProjectCard/index.jsx | 4 +- client/src/component/ProjectCard/style.css | 56 ++++++-- client/src/component/Projects/index.js | 14 +- client/src/component/Projects/style.css | 33 ++++- server/models/portfolio.js | 4 + 11 files changed, 423 insertions(+), 88 deletions(-) create mode 100644 client/src/Pages/Import/index.jsx create mode 100644 server/models/portfolio.js diff --git a/client/src/Pages/Import/index.jsx b/client/src/Pages/Import/index.jsx new file mode 100644 index 0000000..e69de29 diff --git a/client/src/Pages/PortfolioHome/style.css b/client/src/Pages/PortfolioHome/style.css index 214df1f..c338180 100644 --- a/client/src/Pages/PortfolioHome/style.css +++ b/client/src/Pages/PortfolioHome/style.css @@ -1,13 +1,20 @@ +* +{ + margin:0 0; +} .scroll-container { height: 100vh; overflow-y: scroll; scroll-snap-type: y mandatory; transition: scroll 0.5s ease-in-out; scroll-behavior: smooth; + width:100% } .scroll-section { - + display: flex; + justify-content: center; + background-color: #070707; scroll-snap-align: start; } diff --git a/client/src/component/ContentPage/index.jsx b/client/src/component/ContentPage/index.jsx index 90a88d6..48cb8a3 100644 --- a/client/src/component/ContentPage/index.jsx +++ b/client/src/component/ContentPage/index.jsx @@ -1,25 +1,132 @@ -import React, { useState } from 'react'; +import React, { useState, useEffect } from 'react'; import "./styles.css" import Projects from '../Projects'; - +import projectsData from '../data/projects.json'; +import Pagination from 'react-bootstrap/Pagination'; // Import Pagination + export default function ContentPage() { + const [isListView, setIsListView] = useState(false); + const [searchTerm, setSearchTerm] = useState(''); + const [isModalOpen, setIsModalOpen] = useState(false); + const [selectedTags, setSelectedTags] = useState([]); + const [activePage, setActivePage] = useState(1); + const handleSearchChange = (e) => { + setSearchTerm(e.target.value); + }; + + const toggleTag = (tag) => { + setSelectedTags(prevTags => + prevTags.includes(tag) + ? prevTags.filter(t => t !== tag) + : [...prevTags, tag] + ); + }; + + // Extract unique tags from existing projects + const allTags = [...new Set(projectsData.projects.flatMap(project => project.tags || []))]; + + // Calculate total pages based on projects data + + const [items, setItems] = useState([]); // State to hold pagination items + const [projectsPerPage, setProjectsPerPage] = useState(6); // State to hold projects per page + const [totalPages, setTotalPages] = useState(0); // State to hold total pages + + useEffect(() => { + const handleResize = () => { + const newProjectsPerPage = window.innerWidth < 1017 ? 6 : 6; + setProjectsPerPage(newProjectsPerPage); + }; + + window.addEventListener('resize', handleResize); + + // Calculate total pages based on initial screen size + const initialTotalPages = Math.ceil(projectsData.projects.length / projectsPerPage); + setTotalPages(initialTotalPages); + + // Generate pagination items + const generateItems = () => { + const newItems = []; + for (let number = 1; number <= initialTotalPages; number++) { + newItems.push( + setActivePage(number)}> + {number} + , + ); + } + setItems(newItems); + }; + + generateItems(); + + return () => window.removeEventListener('resize', handleResize); + }, [activePage, projectsPerPage]); + + // Calculate the projects to display for the current page + const startIndex = (activePage - 1) * projectsPerPage; + const currentProjects = projectsData.projects.slice(startIndex, startIndex + projectsPerPage); + return ( - -
-

Portfolio

-
- -

This is your portfolio page.

- - -
+
- + - + + {/* Filter Modal */} + {isModalOpen && ( +
+
+ setIsModalOpen(false)}>× +

Filter Projects

+
+
Select Tags:
+ {allTags.map(tag => ( + + ))} +
+
+
+ )} + + + + {items} {/* Render pagination here */} +
); } \ No newline at end of file diff --git a/client/src/component/ContentPage/styles.css b/client/src/component/ContentPage/styles.css index 2ed9523..6ff3a0a 100644 --- a/client/src/component/ContentPage/styles.css +++ b/client/src/component/ContentPage/styles.css @@ -1,16 +1,44 @@ .container{ height : 100%; - max-width:1350px; padding:35px 0; - + margin: 0 0; + width:100%; + +} +.container h1{ + color:white; + font-weight:500; } .panel{ display:flex; - margin-top:100px; gap:3rem; + justify-content: space-between; + align-items: center; + margin-bottom: 20px; + +} + +.filterbar +{ + display: flex; + gap:2rem; + align-items: center; + font-size: 1rem; +} + +.filterbar input { + color:white; + background-color: #000000; + padding-inline:15px; + border-radius: 8px; + border:1px #86858b solid; +} + +a{ + font-size: 1.2rem; } -/* The switch - the box around the slider */ + .switch { position: relative; display: inline-block; @@ -18,7 +46,6 @@ height: 34px; } - /* Hide default HTML checkbox */ .switch input { opacity: 0; width: 0; @@ -33,7 +60,7 @@ left: 0; right: 0; bottom: 0; - background-color: #ccc; + background-color: rgba(112, 109, 109, 0.801); -webkit-transition: .4s; transition: .4s; } @@ -71,4 +98,102 @@ .slider.round:before { border-radius: 50%; - } \ No newline at end of file + } + + .modal { + display: flex; + position: fixed; + z-index: 1; + left: 0; + top: 0; + width: 100%; + height: 100%; + overflow: auto; + background-color: rgba(0, 0, 0, 0.5); /* Darker overlay for better contrast */ +} + +.modal-content { + background-color: #434343; + margin: 10% auto; /* Center the modal */ + padding: 30px; /* Increased padding for better spacing */ + border: 1px solid #888; + width: 40%; /* Adjusted width for a more compact look */ + border-radius: 10px; /* Rounded corners for the modal */ + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2); /* Soft shadow for depth */ + color: rgb(255, 255, 255); + +} + +.close { + color: #000000; + float: right; + font-size: 28px; + font-weight: bold; +} + +.close:hover, +.close:focus { + color: #ff0000; /* Change color on hover for better visibility */ + text-decoration: none; + cursor: pointer; +} + +h2 { + margin-bottom: 20px; /* Space below the heading */ +} + +label { + display: block; /* Stack labels vertically */ + margin: 10px 0; /* Space between labels */ +} + +/* Style for the filter button */ +button { + background-color: #2196F3; + color: white; + border: none; + border-radius: 5px; + padding: 10px 15px; + cursor: pointer; + transition: background-color 0.3s; +} + +button:hover { + background-color: #1976D2; +} + +.page-item +{ + background: rgba(255, 255, 255, 0.1) !important; +} + + +@media (max-width: 786px) { + .filterbar input + { + width:150px !important; + } + + .switch + { + display: none; + } + +} + +@media (max-width:628px) +{ + .panel{ + display:block; + justify-content:center; + } + .filterbar + { + justify-content: center; + } + .title + { + display: flex; + justify-content: center; + } +} \ No newline at end of file diff --git a/client/src/component/HeroBanner/index.js b/client/src/component/HeroBanner/index.js index c701e31..02b9a58 100644 --- a/client/src/component/HeroBanner/index.js +++ b/client/src/component/HeroBanner/index.js @@ -1,50 +1,48 @@ +// client/src/component/HeroBanner/index.js 'use client' import React, { useEffect, useState, useCallback } from "react" -import typeWriter from './script.js' +import typeWriter from './script.js' import './style.css' -const TOTAL_SLIDES = 6 -const VISIBLE_SLIDES = 3 -const SLIDE_INTERVAL = 2000 - export default function HeroBanner() { const [currentSlide, setCurrentSlide] = useState(0) - - const nextSlide = useCallback(() => { - setCurrentSlide((prevSlide) => (prevSlide + 1) % TOTAL_SLIDES) - }, []) + const [searchTerm, setSearchTerm] = useState(''); // State for search term useEffect(() => { - const cleanup = typeWriter() - const carouselInterval = setInterval(nextSlide, SLIDE_INTERVAL) - - return () => { - clearInterval(carouselInterval) - cleanup() - } - }, [nextSlide]) - - const getSlideIndex = (index) => { - return (index + TOTAL_SLIDES) % TOTAL_SLIDES - } + const cleanup = typeWriter(); + return () => cleanup(); + }, []); return (
-
+
- -

|
+ + {/* Search Bar */} +
+ setSearchTerm(e.target.value)} + style={{ borderRadius: "8px", height: "56px", width: "700px", fontSize: "1.5rem",paddingInline:"30px",background:"transparent",border:"1px #86858b solid" }} // Increased size + /> +
+ + {/* Carousel Code (commented out) */} + {/*
- {Array.from({ length: TOTAL_SLIDES + VISIBLE_SLIDES }, (_, index) => ( + {Array.from({ length: TOTAL_SLIDES }, (_, index) => (

Portfolio {getSlideIndex(index) + 1}

-

This is a sample portfolio item {getSlideIndex(index) + 1}.

))}
+ */}
) -} - +} \ No newline at end of file diff --git a/client/src/component/HeroBanner/style.css b/client/src/component/HeroBanner/style.css index d309e24..04fc729 100644 --- a/client/src/component/HeroBanner/style.css +++ b/client/src/component/HeroBanner/style.css @@ -1,5 +1,5 @@ .hero-container { - height: 100vh; + height: 65vh; width: 100%; background-color: #070707; background: radial-gradient(closest-side at left,#0e0a0a,); @@ -19,12 +19,13 @@ } #typing { - font-size: 4rem; + font-size: 56px; color: #ffffff; min-height: 50px; transition: all 0.4s ease; margin-bottom: 2rem; text-align: center; + } .carousel-container { @@ -61,15 +62,11 @@ font-size: 1rem; } -@media (max-width: 768px) { - .carousel-slide { - flex: 0 0 100%; - } -} .typing-container { display: flex; align-items: center; + z-index:10 } .cursor { @@ -82,14 +79,7 @@ animation: blink 1s step-end infinite; } -@keyframes blink { - from, to { - background-color: transparent; - } - 50% { - background-color: white; - } -} + .oval-background { width: 500px; @@ -99,8 +89,42 @@ background-repeat: no-repeat; border-radius: 50%; position: absolute; - left:35%; - top:15%; filter: blur(11.5rem); } + + .search-bar input{ + width: 700px; + } + @media (max-width: 768px) { + .carousel-slide { + flex: 0 0 100%; + } + +} + +@media (max-width:510px) +{ + .oval-background + { + width: 300px; + height: 300px; + } +} + +@media (max-width:1100px) +{ + #typing { + font-size: 3rem; + } + +} + +@keyframes blink { + from, to { + background-color: transparent; + } + 50% { + background-color: white; + } + } \ No newline at end of file diff --git a/client/src/component/ProjectCard/index.jsx b/client/src/component/ProjectCard/index.jsx index e1a6213..7d1588e 100644 --- a/client/src/component/ProjectCard/index.jsx +++ b/client/src/component/ProjectCard/index.jsx @@ -1,9 +1,9 @@ import React from 'react'; import './style.css'; -const ProjectCard = ({ project }) => { +const ProjectCard = ({ project, viewType = 'card' }) => { return ( -
+
{project.title}

{project.title}

diff --git a/client/src/component/ProjectCard/style.css b/client/src/component/ProjectCard/style.css index ff182a7..280d45a 100644 --- a/client/src/component/ProjectCard/style.css +++ b/client/src/component/ProjectCard/style.css @@ -1,13 +1,14 @@ .project-card { - background: #ffffff; - border-radius: 8px; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); + background: rgba(255, 255, 255, 0.1); + border-radius: 16px; overflow: hidden; transition: transform 0.3s ease; margin: 1rem; - width: 350px; + max-width: 381px; + border: 2px rgb(71 68 68) solid; } + .project-card:hover { transform: translateY(-5px); } @@ -24,11 +25,11 @@ .project-content h3 { margin: 0 0 1rem 0; - color: #333; + color: #ffffff; } .project-content p { - color: #666; + color: #929292; margin-bottom: 1rem; } @@ -40,11 +41,11 @@ } .tech-tag { - background: #f0f0f0; + background: #383838; padding: 0.25rem 0.5rem; border-radius: 4px; font-size: 0.8rem; - color: #555; + color: #ffffff; } .project-links { @@ -60,4 +61,43 @@ .project-links a:hover { text-decoration: underline; + } + + /* List view styles */ + .projects-container.list-view { + display: flex; + flex-direction: column; + gap: 1rem; + max-width: 1200px; + margin: 0 auto; + } + + .project-card.list-view { + display: flex; + width: 100%; + } + + .project-card.list-view .project-image { + width: 200px; + height: 150px; + } + + .project-card.list-view .project-content { + flex: 1; + display: flex; + flex-direction: column; + justify-content: space-between; + } + + /* Keep existing card view styles */ + .projects-container.card-view { + display: flex; + flex-wrap: wrap; + justify-content: center; + gap: 1rem; + } + + @media (max-width: 768px) { + + } \ No newline at end of file diff --git a/client/src/component/Projects/index.js b/client/src/component/Projects/index.js index 3272f50..8556435 100644 --- a/client/src/component/Projects/index.js +++ b/client/src/component/Projects/index.js @@ -1,12 +1,18 @@ import React from 'react'; import ProjectCard from '../ProjectCard'; -import projectsData from '../data/projects.json'; // This path should now work import './style.css'; -const Projects = () => { +const Projects = ({ viewType, filter, tags, projects }) => { + const filteredProjects = projects.filter(project => { + const projectName = project.name ? project.name.toLowerCase() : ''; + const matchesFilter = projectName.includes(filter.toLowerCase()); + const matchesTags = tags.length === 0 || tags.some(tag => project.tags && project.tags.includes(tag)); + return matchesFilter && matchesTags; + }); + return ( -
- {projectsData.projects.map((project) => ( +
+ {filteredProjects.map((project) => ( ))}
diff --git a/client/src/component/Projects/style.css b/client/src/component/Projects/style.css index 91d0e39..fc36bdc 100644 --- a/client/src/component/Projects/style.css +++ b/client/src/component/Projects/style.css @@ -2,8 +2,33 @@ display: flex; flex-wrap: wrap; justify-content: center; - gap: 2rem; - - max-width: 1350px; - + gap: 2.5rem; + background: transparent; + max-width:1350px + } + + .projects-container + { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 1rem; + } + + @media (max-width:1017px) + { + .projects-container{ + grid-template-columns: repeat(2,1fr); + } + + } + + @media (max-width:760px) + { + .projects-container{ + grid-template-columns: repeat(1,1fr); + display: flex; + justify-content: center; + flex-direction: row; + + } } \ No newline at end of file diff --git a/server/models/portfolio.js b/server/models/portfolio.js new file mode 100644 index 0000000..34d9ad6 --- /dev/null +++ b/server/models/portfolio.js @@ -0,0 +1,4 @@ +import mongoose from 'mongoose'; +import jwt from 'jsonwebtoken'; +import config from './config'; + From 476e647e4a068c83ef12b4f00074ed5f65650429 Mon Sep 17 00:00:00 2001 From: Vivek Paste Date: Mon, 9 Dec 2024 19:53:16 +0530 Subject: [PATCH 10/42] added backend code to controller,model and router --- .../PortfolioManagement/PodInfo/PodInfo.scss | 15 --- client/src/component/ProjectCard/index.jsx | 10 +- client/src/component/ProjectCard/style.css | 104 +++++++++--------- client/src/component/Projects/index.js | 2 +- client/src/component/Projects/style.css | 71 ++++++++---- package-lock.json | 60 ++++++++++ package.json | 6 + server/app.js | 7 ++ server/controllers/clientController.js | 62 +++++++++++ server/controllers/reviewsController.js | 26 +++++ server/controllers/techStackController.js | 23 ++++ server/models/Project.js | 17 ++- server/models/RevenueModel.js | 15 +++ server/models/clientModel.js | 14 +++ server/models/projectTeamModel.js | 16 +++ server/models/reviewsModel.js | 13 +++ server/models/teamModel.js | 7 ++ server/models/tech_stack.js | 11 ++ server/routers/clientRouter.js | 18 +++ server/routers/reviewsRoutes.js | 10 ++ server/routers/techStackRoute.js | 9 ++ 21 files changed, 415 insertions(+), 101 deletions(-) create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 server/controllers/clientController.js create mode 100644 server/controllers/reviewsController.js create mode 100644 server/controllers/techStackController.js create mode 100644 server/models/RevenueModel.js create mode 100644 server/models/clientModel.js create mode 100644 server/models/projectTeamModel.js create mode 100644 server/models/reviewsModel.js create mode 100644 server/models/tech_stack.js create mode 100644 server/routers/clientRouter.js create mode 100644 server/routers/reviewsRoutes.js create mode 100644 server/routers/techStackRoute.js diff --git a/client/src/Pages/PortfolioManagement/PodInfo/PodInfo.scss b/client/src/Pages/PortfolioManagement/PodInfo/PodInfo.scss index ce88d4d..0a3d143 100644 --- a/client/src/Pages/PortfolioManagement/PodInfo/PodInfo.scss +++ b/client/src/Pages/PortfolioManagement/PodInfo/PodInfo.scss @@ -205,21 +205,6 @@ background-color: #f3f4f6; } -.card { - display: flex; - background-color: #ffffff; - border-radius: 0.5rem; - overflow: hidden; - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); - border: 1px solid #e5e7eb; - width: calc(33.333% - 0.667rem); - transition: transform 0.3s ease, box-shadow 0.3s ease; -} - -.card:hover { - transform: translateY(-5px); - box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); -} .imageContainer { height: 200px; diff --git a/client/src/component/ProjectCard/index.jsx b/client/src/component/ProjectCard/index.jsx index 7d1588e..7823b9c 100644 --- a/client/src/component/ProjectCard/index.jsx +++ b/client/src/component/ProjectCard/index.jsx @@ -3,17 +3,17 @@ import './style.css'; const ProjectCard = ({ project, viewType = 'card' }) => { return ( -
- {project.title} -
+
+ {project.title} +

{project.title}

{project.description}

{project.technologies.map((tech, index) => ( - {tech} + {tech} ))}
-
+ diff --git a/client/src/component/ProjectCard/style.css b/client/src/component/ProjectCard/style.css index 280d45a..47e15ca 100644 --- a/client/src/component/ProjectCard/style.css +++ b/client/src/component/ProjectCard/style.css @@ -1,4 +1,4 @@ -.project-card { +.card-container { background: rgba(255, 255, 255, 0.1); border-radius: 16px; overflow: hidden; @@ -6,98 +6,96 @@ margin: 1rem; max-width: 381px; border: 2px rgb(71 68 68) solid; - } - +} - .project-card:hover { +.card-container:hover { transform: translateY(-5px); - } - - .project-image { +} + +.image-style { width: 100%; height: 200px; object-fit: cover; - } - - .project-content { +} + +.content-area { padding: 1.5rem; - } - - .project-content h3 { +} + +.content-area h3 { margin: 0 0 1rem 0; color: #ffffff; - } - - .project-content p { +} + +.content-area p { color: #929292; margin-bottom: 1rem; - } - - .technologies { +} + +.technologies { display: flex; flex-wrap: wrap; gap: 0.5rem; margin-bottom: 1rem; - } - - .tech-tag { +} + +.technology-label { background: #383838; padding: 0.25rem 0.5rem; border-radius: 4px; font-size: 0.8rem; color: #ffffff; - } - - .project-links { +} + +.links-section { display: flex; gap: 1rem; - } - - .project-links a { +} + +.links-section a { text-decoration: none; color: #007bff; font-weight: 500; - } - - .project-links a:hover { +} + +.links-section a:hover { text-decoration: underline; - } - - /* List view styles */ - .projects-container.list-view { +} + +/* List view styles */ +.projects-container.list-view { display: flex; flex-direction: column; gap: 1rem; max-width: 1200px; margin: 0 auto; - } - - .project-card.list-view { +} + +.card-container.list-view { display: flex; width: 100%; - } - - .project-card.list-view .project-image { +} + +.card-container.list-view .image-style { width: 200px; height: 150px; - } - - .project-card.list-view .project-content { +} + +.card-container.list-view .content-area { flex: 1; display: flex; flex-direction: column; justify-content: space-between; - } - - /* Keep existing card view styles */ - .projects-container.card-view { +} + +/* Keep existing card view styles */ +.projects-container.card-view { display: flex; flex-wrap: wrap; justify-content: center; gap: 1rem; - } +} - @media (max-width: 768px) { - - - } \ No newline at end of file +@media (max-width: 768px) { + /* ... existing styles ... */ +} \ No newline at end of file diff --git a/client/src/component/Projects/index.js b/client/src/component/Projects/index.js index 8556435..ec11cc8 100644 --- a/client/src/component/Projects/index.js +++ b/client/src/component/Projects/index.js @@ -11,7 +11,7 @@ const Projects = ({ viewType, filter, tags, projects }) => { }); return ( -
+
{filteredProjects.map((project) => ( ))} diff --git a/client/src/component/Projects/style.css b/client/src/component/Projects/style.css index fc36bdc..67e5de7 100644 --- a/client/src/component/Projects/style.css +++ b/client/src/component/Projects/style.css @@ -1,34 +1,63 @@ -.projects-container { +.projects-area { display: flex; flex-wrap: wrap; justify-content: center; gap: 2.5rem; background: transparent; - max-width:1350px - } + max-width: 1350px; +} - .projects-container - { +.projects-area { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; - } +} - @media (max-width:1017px) - { - .projects-container{ - grid-template-columns: repeat(2,1fr); +@media (max-width: 1017px) { + .projects-area { + grid-template-columns: repeat(2, 1fr); } - - } - - @media (max-width:760px) - { - .projects-container{ - grid-template-columns: repeat(1,1fr); - display: flex; - justify-content: center; - flex-direction: row; +} +@media (max-width: 760px) { + .projects-area { + grid-template-columns: repeat(1, 1fr); + display: flex; + justify-content: center; + flex-direction: row; } - } \ No newline at end of file +} + +/* List view styles */ +.projects-area.list-view { + display: flex; + flex-direction: column; + gap: 1rem; + max-width: 1200px; + margin: 0 auto; +} + +.card-container.list-view { + display: flex; + width: 100%; +} + +.card-container.list-view .image-style { + width: 200px; + height: 150px; +} + +.card-container.list-view .content-area { + flex: 1; + display: flex; + flex-direction: column; + justify-content: space-between; +} + +/* Keep existing card view styles */ +.projects-area.card-view { + display: flex; + flex-wrap: wrap; + justify-content: center; + gap: 1rem; +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..fca0f86 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,60 @@ +{ + "name": "CollabAI", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "embla-carousel-autoplay": "^8.5.1", + "embla-carousel-react": "^8.5.1" + } + }, + "node_modules/embla-carousel": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/embla-carousel/-/embla-carousel-8.5.1.tgz", + "integrity": "sha512-JUb5+FOHobSiWQ2EJNaueCNT/cQU9L6XWBbWmorWPQT9bkbk+fhsuLr8wWrzXKagO3oWszBO7MSx+GfaRk4E6A==", + "license": "MIT" + }, + "node_modules/embla-carousel-autoplay": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/embla-carousel-autoplay/-/embla-carousel-autoplay-8.5.1.tgz", + "integrity": "sha512-FnZklFpePfp8wbj177UwVaGFehgs+ASVcJvYLWTtHuYKURynCc3IdDn2qrn0E5Qpa3g9yeGwCS4p8QkrZmO8xg==", + "license": "MIT", + "peerDependencies": { + "embla-carousel": "8.5.1" + } + }, + "node_modules/embla-carousel-react": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/embla-carousel-react/-/embla-carousel-react-8.5.1.tgz", + "integrity": "sha512-z9Y0K84BJvhChXgqn2CFYbfEi6AwEr+FFVVKm/MqbTQ2zIzO1VQri6w67LcfpVF0AjbhwVMywDZqY4alYkjW5w==", + "license": "MIT", + "dependencies": { + "embla-carousel": "8.5.1", + "embla-carousel-reactive-utils": "8.5.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.1 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + } + }, + "node_modules/embla-carousel-reactive-utils": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/embla-carousel-reactive-utils/-/embla-carousel-reactive-utils-8.5.1.tgz", + "integrity": "sha512-n7VSoGIiiDIc4MfXF3ZRTO59KDp820QDuyBDGlt5/65+lumPHxX2JLz0EZ23hZ4eg4vZGUXwMkYv02fw2JVo/A==", + "license": "MIT", + "peerDependencies": { + "embla-carousel": "8.5.1" + } + }, + "node_modules/react": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.0.0.tgz", + "integrity": "sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..c163acb --- /dev/null +++ b/package.json @@ -0,0 +1,6 @@ +{ + "dependencies": { + "embla-carousel-autoplay": "^8.5.1", + "embla-carousel-react": "^8.5.1" + } +} diff --git a/server/app.js b/server/app.js index 29b1503..bb85410 100644 --- a/server/app.js +++ b/server/app.js @@ -38,6 +38,10 @@ import googleDriveRouter from "./routers/googleDriveRouters.js"; import vectorStoreRouter from "./routers/vectorStoreRoutes.js"; import workBoardRouter from "./routers/workBoardRoute.js"; import projectrouter from "./routers/projectRoutes.js"; +import clientRouter from "./routers/clientRouter.js"; +import reviewsRoutes from "./routers/reviewsRoutes.js"; +import techStackRoute from "./routers/techStackRoute.js"; + const app = express(); const server = http.createServer(app); @@ -83,6 +87,9 @@ app.use("/api/knowledge-base",knowledgeBaseRouter); app.use("/api/rag/",ragRouter); app.use("/api/vectorStore",vectorStoreRouter); app.use('/api/projects', projectrouter); +app.use("/api/clients", clientRouter); +app.use('/api/techStacks',techStackRoute); +app.use('/api/reviews', reviewsRoutes); app.use(bodyParser.json({ extended: true })); app.use(bodyParser.urlencoded({ extended: true })); diff --git a/server/controllers/clientController.js b/server/controllers/clientController.js new file mode 100644 index 0000000..882797b --- /dev/null +++ b/server/controllers/clientController.js @@ -0,0 +1,62 @@ +import Client from "../models/clientModel.js"; + +export const getAllClients = async (req, res) => { + try { + const clients = await Client.find(); + res.status(200).json(clients); + } catch (error) { + res.status(500).json({ message: "Error fetching clients", error }); + } +}; + +export const getClientById = async (req, res) => { + try { + const client = await Client.findOne({ id: parseInt(req.params.id) }); + if (!client) { + return res.status(404).json({ message: "Client not found" }); + } + res.status(200).json(client); + } catch (error) { + res.status(500).json({ message: "Error fetching client", error }); + } +}; + +export const createClient = async (req, res) => { + try { + const newClient = new Client(req.body); + const savedClient = await newClient.save(); + res.status(201).json(savedClient); + } catch (error) { + res.status(500).json({ message: "Error creating client", error }); + } +}; + +export const updateClient = async (req, res) => { + try { + const updatedClient = await Client.findOneAndUpdate( + { id: parseInt(req.params.id) }, + req.body, + { new: true } + ); + if (!updatedClient) { + return res.status(404).json({ message: "Client not found" }); + } + res.status(200).json(updatedClient); + } catch (error) { + res.status(500).json({ message: "Error updating client", error }); + } +}; + +export const deleteClient = async (req, res) => { + try { + const deletedClient = await Client.findOneAndDelete({ + id: parseInt(req.params.id), + }); + if (!deletedClient) { + return res.status(404).json({ message: "Client not found" }); + } + res.status(200).json({ message: "Client deleted successfully" }); + } catch (error) { + res.status(500).json({ message: "Error deleting client", error }); + } +}; diff --git a/server/controllers/reviewsController.js b/server/controllers/reviewsController.js new file mode 100644 index 0000000..278f105 --- /dev/null +++ b/server/controllers/reviewsController.js @@ -0,0 +1,26 @@ +import Review from "../models/reviewsModel.js" + +export const createReview = async (req,res) => +{ + try{ + const reviews= new Review(req.body); + const savedReview= await reviews.save(); + res.status(200).json(savedReview); + }catch(err) + { + console.log(err); + res.status(500).json({message: "Error saving review", error:err}); + } +} + +export const getReviews = async (req,res) => +{ + try{ + const reviews= await Review.find({}); + res.status(200).json(reviews); + }catch(err) + { + console.log(err); + res.status(500).json({message: "Error retrieving reviews", error:err}); + } +} \ No newline at end of file diff --git a/server/controllers/techStackController.js b/server/controllers/techStackController.js new file mode 100644 index 0000000..b98e099 --- /dev/null +++ b/server/controllers/techStackController.js @@ -0,0 +1,23 @@ +import TechStack from "../models/tech_stack.js"; + +export const createTechStack = async (req, res) => { + try { + const stack = new TechStack(req.body); + const savedStack = await stack.save(); + res.status(201).json(savedStack); + } catch (err) { + res.status(500).json({ message: "Error creating stack", err }); + } +}; + +export const getAllTechStack = async (req, res) => +{ + try{ + const tech_stack= await TechStack.find(); + res.status(200).json(tech_stack); + } + catch(error) + { + res.status(500).json({message:"Error getting tech stack",error}); + } +}; \ No newline at end of file diff --git a/server/models/Project.js b/server/models/Project.js index 3019ef1..f1ff6d3 100644 --- a/server/models/Project.js +++ b/server/models/Project.js @@ -1,15 +1,20 @@ import mongoose from "mongoose"; const ProjectSchema = new mongoose.Schema({ - id: { type: Number, required: true, unique: true }, name: { type: String, required: true }, description: { type: String, required: true }, status: { type: String, required: true }, - techStack: { type: [String], required: true }, - imageUrl: { type: String, required: true }, - podName: { type: String, required: true }, - github: { type: String, required: true }, - live: { type: String, required: true }, + start_time:{ type:Date,required: true}, + end_time:{ type:Date, required: true}, + budget: { type: Number,required: true }, + hr_taken: { type:Number}, + client_id:{type:mongoose.Schema.Types.ObjectId,ref:'Client',required: true}, + techStack: [{ type:mongoose.Schema.Types.ObjectId,ref:'TechStack'}], + links:{ + links:{type:String}, + github:{type:String}, + }, + image_link:{type:String} }); const Project = mongoose.model("Project", ProjectSchema); diff --git a/server/models/RevenueModel.js b/server/models/RevenueModel.js new file mode 100644 index 0000000..951a4e1 --- /dev/null +++ b/server/models/RevenueModel.js @@ -0,0 +1,15 @@ +import mongoose from "mongoose"; + +const RevenueSchema = new mongoose.Schema( + { + project_id: { type: mongoose.Schema.Types.ObjectId, ref: 'Project', required: true }, + projected_revenue: { type: Number, required: true }, + revenue: { type: Number, required: true }, + invoices: [{ type: String }], + created_at: { type: Date, default: Date.now }, + } +); + +const Revenue = mongoose.model("Revenue", RevenueSchema); + +export default Revenue; \ No newline at end of file diff --git a/server/models/clientModel.js b/server/models/clientModel.js new file mode 100644 index 0000000..4bf41bc --- /dev/null +++ b/server/models/clientModel.js @@ -0,0 +1,14 @@ +import mongoose from 'mongoose'; + +const ClientSchema = new mongoose.Schema({ + name:{type:String, required:true}, + description:{type:String}, + contact_info:{type:String}, + point_of_contact:{type:String}, + created_at: { type: Date, default: Date.now }, + updated_at: { type: Date, default: Date.now }, + image : { type: String} +}); + +const Client= mongoose.model('Client',ClientSchema); +export default Client; \ No newline at end of file diff --git a/server/models/projectTeamModel.js b/server/models/projectTeamModel.js new file mode 100644 index 0000000..136c08c --- /dev/null +++ b/server/models/projectTeamModel.js @@ -0,0 +1,16 @@ +import mongoose from "mongoose"; + +const ProjectTeamSchema = new mongoose.Schema( + { + project_id: { type: mongoose.Schema.Types.ObjectId, ref: 'Project', required: true }, + user_id: { type: mongoose.Schema.Types.ObjectId, ref: 'User', required: true }, + role_in_project: { type: String, required: true }, + team_id: { type: mongoose.Schema.Types.ObjectId, ref: 'Team' }, + created_at: { type: Date, default: Date.now }, + updated_at: { type: Date, default: Date.now }, + } +); + +const ProjectTeam = mongoose.model("ProjectTeam", ProjectTeamSchema); + +export default ProjectTeam; diff --git a/server/models/reviewsModel.js b/server/models/reviewsModel.js new file mode 100644 index 0000000..6fa6242 --- /dev/null +++ b/server/models/reviewsModel.js @@ -0,0 +1,13 @@ +import mongoose from 'mongoose'; + +const ReviewSchema = new mongoose.Schema({ + project_id: { type: mongoose.Schema.Types.ObjectId, ref: 'Project', required: true }, + header: { type: String, required: true }, + comment: { type: String }, + rating: { type: Number, min: 1, max: 5, required: true }, + created_at: { type: Date, default: Date.now }, + updated_at: { type: Date, default: Date.now } +}); + +const Review = mongoose.model('Review', ReviewSchema); +export default Review; diff --git a/server/models/teamModel.js b/server/models/teamModel.js index 287cc6f..c42d590 100644 --- a/server/models/teamModel.js +++ b/server/models/teamModel.js @@ -17,6 +17,13 @@ const teamSchema = mongoose.Schema( default: false } }, + { + teamDescriptions:{ + type: String, + default: '' + } + }, + { timestamps: true } ); diff --git a/server/models/tech_stack.js b/server/models/tech_stack.js new file mode 100644 index 0000000..2fdbb9d --- /dev/null +++ b/server/models/tech_stack.js @@ -0,0 +1,11 @@ +import mongoose from 'mongoose'; + +const TechStackSchema = new mongoose.Schema({ + name: { type: String, required: true }, + category: { type: String }, // E.g., Frontend, Backend, Database + created_at: { type: Date, default: Date.now }, + updated_at: { type: Date, default: Date.now } +}); + +const TechStack = mongoose.model('TechStack', TechStackSchema); +export default TechStack; \ No newline at end of file diff --git a/server/routers/clientRouter.js b/server/routers/clientRouter.js new file mode 100644 index 0000000..07dd7f7 --- /dev/null +++ b/server/routers/clientRouter.js @@ -0,0 +1,18 @@ +import express from "express"; +import { + getAllClients, + getClientById, + createClient, + updateClient, + deleteClient, +} from "../controllers/clientController.js"; // Use `import` instead of `require` + +const router = express.Router(); + +router.get("/", getAllClients); // Route to get all clients +router.get("/:id", getClientById); // Route to get a client by ID +router.post("/", createClient); // Route to create a new client +router.put("/:id", updateClient); // Route to update a client by ID +router.delete("/:id", deleteClient); // Route to delete a client by ID + +export default router; diff --git a/server/routers/reviewsRoutes.js b/server/routers/reviewsRoutes.js new file mode 100644 index 0000000..f4c2f35 --- /dev/null +++ b/server/routers/reviewsRoutes.js @@ -0,0 +1,10 @@ +import {createReview,getReviews} from '../controllers/reviewsController.js'; +import express from 'express'; + +const router = express.Router(); + +router.post('/', createReview); + +router.get('/', getReviews); + +export default router; \ No newline at end of file diff --git a/server/routers/techStackRoute.js b/server/routers/techStackRoute.js new file mode 100644 index 0000000..c2e9d04 --- /dev/null +++ b/server/routers/techStackRoute.js @@ -0,0 +1,9 @@ +import express from "express"; +import { createTechStack,getAllTechStack } from "../controllers/techStackController.js"; + +const router = express.Router(); + +router.post("/", createTechStack); +router.get("/", getAllTechStack); + +export default router; \ No newline at end of file From f2ce419f8d850fbf7f7f2a1c41fcaedeab46b678 Mon Sep 17 00:00:00 2001 From: Vivek Paste Date: Tue, 10 Dec 2024 13:10:31 +0530 Subject: [PATCH 11/42] added feature collection made create, getall --- server/app.js | 2 ++ server/controllers/featureController.js | 29 +++++++++++++++ server/controllers/projectController.js | 47 +++++++++++++++++++++---- server/models/Project.js | 4 ++- server/models/featureModel.js | 8 +++++ server/routers/featureRouter.js | 12 +++++++ server/routers/projectRoutes.js | 4 +++ 7 files changed, 99 insertions(+), 7 deletions(-) create mode 100644 server/controllers/featureController.js create mode 100644 server/models/featureModel.js create mode 100644 server/routers/featureRouter.js diff --git a/server/app.js b/server/app.js index bb85410..eb9aff2 100644 --- a/server/app.js +++ b/server/app.js @@ -41,6 +41,7 @@ import projectrouter from "./routers/projectRoutes.js"; import clientRouter from "./routers/clientRouter.js"; import reviewsRoutes from "./routers/reviewsRoutes.js"; import techStackRoute from "./routers/techStackRoute.js"; +import featureRouter from "./routers/featureRouter.js"; const app = express(); const server = http.createServer(app); @@ -90,6 +91,7 @@ app.use('/api/projects', projectrouter); app.use("/api/clients", clientRouter); app.use('/api/techStacks',techStackRoute); app.use('/api/reviews', reviewsRoutes); +app.use('/api/features', featureRouter); app.use(bodyParser.json({ extended: true })); app.use(bodyParser.urlencoded({ extended: true })); diff --git a/server/controllers/featureController.js b/server/controllers/featureController.js new file mode 100644 index 0000000..45b618d --- /dev/null +++ b/server/controllers/featureController.js @@ -0,0 +1,29 @@ +import mongoose from 'mongoose'; +import Feature from '../models/featureModel.js' + +export const createFeature = async (req, res) => { + try{ + console.log(req.params); + const newFeature = new Feature(req.body); + const savedFeature = await newFeature.save(); + res.status(201).json(savedFeature); + } + catch(err){ + console.log(err); + res.status(500).json({message: "Error saving feature", error:err}); + } +}; + +export const getAllFeatures = async (req, res) => { + try{ + const features= await Feature.find(); + res.status(200).json(features); + } + catch(err) + { + console.log(err); + res.status(500).json({message: "Error getting features", error:err}); + } +} + + diff --git a/server/controllers/projectController.js b/server/controllers/projectController.js index e382e6c..d529ef5 100644 --- a/server/controllers/projectController.js +++ b/server/controllers/projectController.js @@ -1,4 +1,6 @@ -import Project from "../models/Project.js"; // Use `import` instead of `require` +import Project from "../models/Project.js"; +import mongoose from 'mongoose'; +import Teams from "../models/teamModel.js"; export const getAllProjects = async (req, res) => { try { @@ -11,7 +13,7 @@ export const getAllProjects = async (req, res) => { export const getProjectById = async (req, res) => { try { - const project = await Project.findOne({ id: parseInt(req.params.id) }); + const project = await Project.findOne({ _id: req.params.id }); if (!project) { return res.status(404).json({ message: "Project not found" }); } @@ -34,7 +36,7 @@ export const createProject = async (req, res) => { export const updateProject = async (req, res) => { try { const updatedProject = await Project.findOneAndUpdate( - { id: parseInt(req.params.id) }, + { _id: req.params.id }, req.body, { new: true } ); @@ -49,9 +51,7 @@ export const updateProject = async (req, res) => { export const deleteProject = async (req, res) => { try { - const deletedProject = await Project.findOneAndDelete({ - id: parseInt(req.params.id), - }); + const deletedProject = await Project.findOneAndDelete({ _id: req.params.id }); if (!deletedProject) { return res.status(404).json({ message: "Project not found" }); } @@ -60,3 +60,38 @@ export const deleteProject = async (req, res) => { res.status(500).json({ message: "Error deleting project", error }); } }; + +export const getProjectsByTeam = async (req, res) => { + const { teamId } = req.params; + + try { + const projects = await Project.find({ team_id: mongoose.Types.ObjectId(teamId) }) + .populate('team_id', 'name'); + + if (projects.length === 0) { + return res.status(404).json({ message: 'No projects found for this team.' }); + } + + res.status(200).json(projects); + } catch (error) { + res.status(500).json({ message: 'Server error. Could not fetch projects.' }); + } +}; + +export const getProjectsByClient = async (req,res)=> +{ + const {clientId}=req.params; + try{ + const projects=await Project.find({client_id:clientId}); + if(projects.length===0) + { + return res.status(404).json({message:'No projects found for this team'}); + } + res.status(200).json(projects); + } + catch(error) + { + res.status(500).json({message:'Server error. Could not fetch projects'}); + } +}; + diff --git a/server/models/Project.js b/server/models/Project.js index f1ff6d3..a3bf64b 100644 --- a/server/models/Project.js +++ b/server/models/Project.js @@ -14,7 +14,9 @@ const ProjectSchema = new mongoose.Schema({ links:{type:String}, github:{type:String}, }, - image_link:{type:String} + image_link:{type:String}, + team_id: { type: mongoose.Schema.Types.ObjectId, ref: 'Teams' }, + feature:[{ type:mongoose.Schema.Types.ObjectId, ref:'Feature'}] }); const Project = mongoose.model("Project", ProjectSchema); diff --git a/server/models/featureModel.js b/server/models/featureModel.js new file mode 100644 index 0000000..7de28fe --- /dev/null +++ b/server/models/featureModel.js @@ -0,0 +1,8 @@ +import mongoose from 'mongoose'; + +const FeatureSchema = new mongoose.Schema({ + name:{ type:String, required:true}, + description:{ type:String, required:true} +}); +const Feature = mongoose.model('Feature', FeatureSchema); +export default Feature; \ No newline at end of file diff --git a/server/routers/featureRouter.js b/server/routers/featureRouter.js new file mode 100644 index 0000000..1886ffa --- /dev/null +++ b/server/routers/featureRouter.js @@ -0,0 +1,12 @@ +import express from 'express'; +import { + createFeature, + getAllFeatures, +} from '../controllers/featureController.js'; + +const featureRouter = express.Router(); + +featureRouter.post('/',createFeature); +featureRouter.get('/',getAllFeatures); + +export default featureRouter; \ No newline at end of file diff --git a/server/routers/projectRoutes.js b/server/routers/projectRoutes.js index 8a6888e..fa0ae88 100644 --- a/server/routers/projectRoutes.js +++ b/server/routers/projectRoutes.js @@ -6,6 +6,8 @@ import { createProject, updateProject, deleteProject, + getProjectsByTeam, + getProjectsByClient, } from "../controllers/projectController.js"; // Use `import` instead of `require` const projectrouter = express.Router(); @@ -15,5 +17,7 @@ projectrouter.get("/:id", getProjectById); projectrouter.post("/", createProject); projectrouter.put("/:id", updateProject); projectrouter.delete("/:id", deleteProject); +projectrouter.get('/team/:teamId', getProjectsByTeam); +projectrouter.get('/client/:clientId', getProjectsByClient) export default projectrouter; From fd2179eb5cb059c1c1c319757a1e50e79adcaf14 Mon Sep 17 00:00:00 2001 From: 2014026-lukepro Date: Tue, 10 Dec 2024 13:16:37 +0530 Subject: [PATCH 12/42] Added review page,added css --- client/src/App.js | 2 + .../ClientInfo/ClientInfo.scss | 53 ++---- .../PortfolioManagement/ClientInfo/index.jsx | 130 +++++++++----- .../PortfolioManagement/PodInfo/PodInfo.scss | 28 ++- .../Reviews/ReviewsPage.scss | 39 +++++ .../PortfolioManagement/Reviews/index.jsx | 162 ++++++++++++++++++ client/src/component/ClientInfo/Button.jsx | 13 -- client/src/component/ClientInfo/Button1.jsx | 13 ++ .../src/component/ClientInfo/ProjectCard.jsx | 2 +- client/src/component/ClientInfo/SearchBar.jsx | 6 +- client/src/component/ClientInfo/Tabs.jsx | 4 +- client/src/component/PodInfo/TeamModal.jsx | 31 ++-- client/src/component/Reviews/ReviewCard.jsx | 32 ++++ .../src/component/Reviews/ReviewCarosoul.jsx | 140 +++++++++++++++ client/src/component/Reviews/SearchBar.jsx | 26 +++ client/src/component/Reviews/reviewcard.scss | 62 +++++++ .../src/component/Reviews/reviewcarousel.scss | 26 +++ client/src/component/Reviews/searchbar.scss | 28 +++ server/models/teamModel.js | 2 +- 19 files changed, 671 insertions(+), 128 deletions(-) create mode 100644 client/src/Pages/PortfolioManagement/Reviews/ReviewsPage.scss create mode 100644 client/src/Pages/PortfolioManagement/Reviews/index.jsx delete mode 100644 client/src/component/ClientInfo/Button.jsx create mode 100644 client/src/component/ClientInfo/Button1.jsx create mode 100644 client/src/component/Reviews/ReviewCard.jsx create mode 100644 client/src/component/Reviews/ReviewCarosoul.jsx create mode 100644 client/src/component/Reviews/SearchBar.jsx create mode 100644 client/src/component/Reviews/reviewcard.scss create mode 100644 client/src/component/Reviews/reviewcarousel.scss create mode 100644 client/src/component/Reviews/searchbar.scss diff --git a/client/src/App.js b/client/src/App.js index e033ed0..e2a5218 100644 --- a/client/src/App.js +++ b/client/src/App.js @@ -41,6 +41,7 @@ import { IntegrateApplications } from "./component/IntegrateApplications/Integra import ConnectionWithWorkboard from "./Pages/configration/ConnectionWithWorkboard"; import ClientInfo from "./Pages/PortfolioManagement/ClientInfo"; import PodInfo from "./Pages/PortfolioManagement/PodInfo"; +import ReviewsPage from "./Pages/PortfolioManagement/Reviews"; function App() { // Hook to get the current location @@ -59,6 +60,7 @@ function App() { } /> } /> } /> + } /> {/* For connecting workboard */} } /> diff --git a/client/src/Pages/PortfolioManagement/ClientInfo/ClientInfo.scss b/client/src/Pages/PortfolioManagement/ClientInfo/ClientInfo.scss index 26c02fb..7cedff1 100644 --- a/client/src/Pages/PortfolioManagement/ClientInfo/ClientInfo.scss +++ b/client/src/Pages/PortfolioManagement/ClientInfo/ClientInfo.scss @@ -1,7 +1,4 @@ -/* General Styles */ .portfolio-page { - max-width: 1350px; - margin-left: auto; margin-right: auto; padding-left: 1rem; @@ -9,19 +6,31 @@ padding-top: 2rem; padding-bottom: 2rem; background-color: black; - color: black; - height: 955px; + height: auto; + display: flex; + flex-direction: column; + align-items: center; } -/* Profile Section */ .profile-section { display: flex; + max-width: 1350px; + width: 100%; flex-direction: column; align-items: flex-start; gap: 2rem; margin-bottom: 3rem; } +.tabs1 { + max-width: 1350px; + width: 100%; + display: flex; + flex-direction: column; + gap: 1rem; +} + + .profile-avatar { width: 8rem; height: 8rem; @@ -67,25 +76,6 @@ display: flex; gap: 0.75rem; } - -.follow-button { - background-color: black; - color: white; -} - -.follow-button:hover { - background-color: #1F2937; -} - -.contact-button { - border: 1px solid black; - color: black; -} - -.contact-button:hover { - background-color: #F3F4F6; -} - .profile-stats { display: flex; gap: 2rem; @@ -142,12 +132,7 @@ font-weight: 700; } -/* Tabs */ -.tabs1 { - display: flex; - flex-direction: column; - gap: 1rem; -} + .tabs-list { display: flex; @@ -478,7 +463,7 @@ font-weight: 500; } -.button { +.button1 { display: inline-flex; align-items: center; justify-content: center; @@ -490,13 +475,13 @@ transition: background-color 0.2s, color 0.2s; } -.button:focus-visible { +.button1:focus-visible { outline: 2px solid transparent; outline-offset: 2px; box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.5); } -.button:disabled { +.button1:disabled { opacity: 0.5; pointer-events: none; } diff --git a/client/src/Pages/PortfolioManagement/ClientInfo/index.jsx b/client/src/Pages/PortfolioManagement/ClientInfo/index.jsx index 8844a88..bc28b51 100644 --- a/client/src/Pages/PortfolioManagement/ClientInfo/index.jsx +++ b/client/src/Pages/PortfolioManagement/ClientInfo/index.jsx @@ -13,6 +13,70 @@ import ProjectCard from '../../../component/ClientInfo/ProjectCard'; import { getAllProjects } from '../../../api/projectApi'; import "./ClientInfo.scss"; + + +const projects = [ + { + id: 1, + title: "VPN Mobile App", + Description: "Mobile UI Research", + image: "https://picsum.photos/600/400?random=1", + Team: "Avengers", + techStack: ["React Native", "Node.js", "Express"], + github: "https://github.com/guptapriya24/react-weather-app", + live: "https://weather-app-demo.netlify.app", + }, + { + id: 2, + title: "Property Dashboard", + Description: "Web Interface", + image: "https://picsum.photos/600/400?random=2", + Team: "Avengers", + techStack: ["React", "Redux", "Material-UI"], + github: "https://github.com/guptapriya24/react-weather-app", + live: "https://weather-app-demo.netlify.app", + }, + { + id: 3, + title: "Healthcare Mobile App", + Description: "Mobile UI Branding", + image: "https://picsum.photos/600/400?random=3", + Team: "Avengers", + techStack: ["Flutter", "Firebase", "GraphQL"], + github: "https://github.com/guptapriya24/react-weather-app", + live: "https://weather-app-demo.netlify.app", + }, + { + id: 4, + title: "E-commerce Platform", + Description: "Web Development", + image: "https://picsum.photos/600/400?random=4", + Team: "Avengers", + techStack: ["Next.js", "Stripe", "MongoDB"], + github: "https://github.com/guptapriya24/react-weather-app", + live: "https://weather-app-demo.netlify.app", + }, + { + id: 5, + title: "Fitness Tracking App", + Description: "Mobile Development", + image: "https://picsum.photos/600/400?random=5", + Team: "Avengers", + techStack: ["React Native", "Redux", "Firebase"], + github: "https://github.com/guptapriya24/react-weather-app", + live: "https://weather-app-demo.netlify.app", + }, + { + id: 6, + title: "Social Media Dashboard", + Description: "Web Analytics", + image: "https://picsum.photos/600/400?random=6", + Team: "Avengers", + techStack: ["Vue.js", "D3.js", "Node.js"], + github: "https://github.com/guptapriya24/react-weather-app", + live: "https://weather-app-demo.netlify.app", + }, +]; const reviews = [ { id: 1, headline: "Amazing Project!", reviewer: "John Doe", comment: "Very well executed.", rating: 5, reviewerImage: "https://picsum.photos/50" }, { id: 2, headline: "Great Work", reviewer: "Jane Smith", comment: "Great design and functionality!", rating: 4, reviewerImage: "/placeholder.svg?height=50&width=50" }, @@ -34,40 +98,21 @@ const milestones = [ const ClientInfo = () => { const [activeTab, setActiveTab] = useState("work"); const [searchQuery, setSearchQuery] = useState(""); - const [projects, setProjects] = useState([]); - const [filteredProjects, setFilteredProjects] = useState([]); + const [filteredProjects, setFilteredProjects] = useState(projects); const [searchHistory, setSearchHistory] = useState([]); - const [isLoading, setIsLoading] = useState(true); - const [error, setError] = useState(null); const [projectsEmblaRef, projectsEmblaApi] = useEmblaCarousel({ loop: true }, [Autoplay()]); const [reviewsEmblaRef, reviewsEmblaApi] = useEmblaCarousel({ loop: true }, [Autoplay()]); const [milestonesEmblaRef, milestonesEmblaApi] = useEmblaCarousel({ loop: true }, [Autoplay()]); - useEffect(() => { - const fetchProjects = async () => { - try { - const fetchedProjects = await getAllProjects(); - setProjects(fetchedProjects); - setFilteredProjects(fetchedProjects); - setIsLoading(false); - } catch (err) { - setError('Failed to fetch projects'); - setIsLoading(false); - } - }; - - fetchProjects(); - }, []); - const handleSearchSubmit = (e) => { e.preventDefault(); const trimmedQuery = searchQuery.trim().toLowerCase(); if (trimmedQuery) { const filtered = projects.filter((project) => - project.name.toLowerCase().includes(trimmedQuery) || - project.description.toLowerCase().includes(trimmedQuery) || - project.podName.toLowerCase().includes(trimmedQuery) + project.title.toLowerCase().includes(trimmedQuery) || + project.Description.toLowerCase().includes(trimmedQuery) || + project.Team.toLowerCase().includes(trimmedQuery) ); setFilteredProjects(filtered); setSearchHistory((prev) => [...new Set([trimmedQuery, ...prev])].slice(0, 5)); @@ -80,16 +125,16 @@ const ClientInfo = () => { setSearchQuery(""); setFilteredProjects(projects); setSearchHistory([]); - }, [projects]); + }, []); useEffect(() => { if (searchQuery === "") { setFilteredProjects(projects); } - }, [searchQuery, projects]); + }, [searchQuery]); const stats = [ - { title: "Projects", value: projects.length, icon: FaCode }, + { title: "Projects", value: 5, icon: FaCode }, { title: "Total Revenue", value: 10000, prefix: "$", icon: FaDollarSign }, { title: "Invoices", value: 25, icon: FaFileAlt }, { title: "Milestones", value: 7, icon: FaBullseye }, @@ -117,9 +162,6 @@ const ClientInfo = () => { currentmilestonePage * itemsPerPage ); - if (isLoading) return
Loading...
; - if (error) return
Error: {error}
; - return (
@@ -204,20 +246,20 @@ const ClientInfo = () => {
))}
-
- + {currentProjectPage} of {projectPageCount} - +
@@ -231,20 +273,20 @@ const ClientInfo = () => {
))}
-
- + {currentReviewPage} of {ReviewPageCount} - +
@@ -258,20 +300,20 @@ const ClientInfo = () => {
))}
-
- + {currentmilestonePage} of {milestonePageCount} - +
diff --git a/client/src/Pages/PortfolioManagement/PodInfo/PodInfo.scss b/client/src/Pages/PortfolioManagement/PodInfo/PodInfo.scss index 0a3d143..7e3b651 100644 --- a/client/src/Pages/PortfolioManagement/PodInfo/PodInfo.scss +++ b/client/src/Pages/PortfolioManagement/PodInfo/PodInfo.scss @@ -1,5 +1,5 @@ .teamPage { - max-width: 1350px; + margin-left: auto; margin-right: auto; @@ -9,7 +9,7 @@ padding-bottom: 2rem; background-color: black; color: black; - height: 925px; + } .container1 { @@ -17,6 +17,8 @@ margin: 0 auto; text-align: center; padding: 0 1rem; + height:1000px; + } .title { @@ -44,18 +46,13 @@ .podGrid { grid-template-columns: repeat(2, 1fr); } - .card { - width: calc(50% - 0.5rem); - } + } @media (max-width: 640px) { .podGrid { grid-template-columns: 1fr; } - .card { - width: 100%; - } .searchAndFilters { flex-direction: column; } @@ -448,14 +445,14 @@ background-color: #e5e7eb; } -.pagination { +.pagination1 { display: flex; justify-content: center; align-items: center; gap: 1rem; } -.pagination button { +.pagination1 button1{ padding: 0.5rem 1rem; background-color: #f3f4f6; border: none; @@ -463,18 +460,19 @@ font-size: 0.875rem; cursor: pointer; transition: background-color 0.3s ease; + color:black; } -.pagination button:hover:not(:disabled) { +.pagination1 button1:hover:not(:disabled) { background-color: #e5e7eb; } -.pagination button:disabled { +.pagination1 button1:disabled { opacity: 0.5; cursor: not-allowed; } -.pagination span { +.pagination1 span { font-size: 0.875rem; color: #ffffff; } @@ -521,12 +519,12 @@ margin-top: -2rem; } - .pagination { + .pagination1 { flex-direction: column; align-items: center; } - .pagination button { + .pagination1 button1 { margin-top: 0.5rem; } } diff --git a/client/src/Pages/PortfolioManagement/Reviews/ReviewsPage.scss b/client/src/Pages/PortfolioManagement/Reviews/ReviewsPage.scss new file mode 100644 index 0000000..c7e12a4 --- /dev/null +++ b/client/src/Pages/PortfolioManagement/Reviews/ReviewsPage.scss @@ -0,0 +1,39 @@ +.container { + max-width: 1350px; + margin: 0 auto; + padding: 0 1rem; + } + + .header { + text-align: center; + margin-bottom: 3rem; + } + + .title { + font-size: 2.25rem; + font-weight: bold; + margin-bottom: 1rem; + } + + .description { + color: #4b5563; + } + + .link { + color: #2563eb; + text-decoration: underline; + } + + .carouselWrapper { + margin-bottom: 3rem; + transition: all 0.5s ease-in-out; + } + + .carouselWrapper:hover { + transform: scale(1.05); + } + + .reviewsHeader + { + align-text: center; + } \ No newline at end of file diff --git a/client/src/Pages/PortfolioManagement/Reviews/index.jsx b/client/src/Pages/PortfolioManagement/Reviews/index.jsx new file mode 100644 index 0000000..ca914f5 --- /dev/null +++ b/client/src/Pages/PortfolioManagement/Reviews/index.jsx @@ -0,0 +1,162 @@ +import { useState, useMemo } from 'react'; +import { SearchBar } from '../../../component/Reviews/SearchBar'; +import { ReviewsCarousel } from '../../../component/Reviews/ReviewCarosoul'; +import './ReviewsPage.scss'; + +const clients = [ + { + _id: '1', + name: 'Sandra Long', + description: 'Regular client', + contact_info: 'sandra@example.com', + point_of_contact: 'Sandra', + image: '/placeholder.svg?height=40&width=40' + }, + { + _id: '2', + name: 'Jamie Atkins', + description: 'Premium client', + contact_info: 'jamie@example.com', + point_of_contact: 'Jamie', + image: '/placeholder.svg?height=40&width=40' + } + ] + + const projects = [ + { + _id: '1', + name: 'Website Redesign', + description: 'Complete website overhaul', + status: 'Completed', + start_time: new Date('2023-01-01'), + end_time: new Date('2023-06-30'), + budget: 50000, + hr_taken: 500, + client_id: '1', + techStack: ['React', 'Node.js', 'MongoDB'], + links: { + links: 'https://example.com', + github: 'https://github.com/example' + }, + image_link: '/placeholder.svg' + }, + { + _id: '2', + name: 'Mobile App Development', + description: 'iOS and Android app', + status: 'In Progress', + start_time: new Date('2023-07-01'), + end_time: new Date('2024-01-31'), + budget: 75000, + hr_taken: 300, + client_id: '2', + techStack: ['React Native', 'Firebase'], + links: { + links: 'https://example.com', + github: 'https://github.com/example' + }, + image_link: '/placeholder.svg' + } + ] + const reviews = [ + { + _id: '1', + project_id: '1', + header: 'Excellent service', + comment: 'My 1st time booking online was simple, staff was very friendly.', + rating: 5, + client_name: 'Sandra Long', + client_image: '/placeholder.svg?height=40&width=40', + project_name: projects.find(p => p._id === '1')?.name || 'Unknown Project' + }, + { + _id: '2', + project_id: '1', + header: 'Great service', + comment: 'Great service, was running late, but the company really helped on my arrival.', + rating: 5, + client_name: 'Sandra Long', + client_image: '/placeholder.svg?height=40&width=40', + project_name: projects.find(p => p._id === '1')?.name || 'Unknown Project' + }, + { + _id: '3', + project_id: '2', + header: 'Excellent service', + comment: 'Excellent service, easy booking and parking. Will use again..', + rating: 5, + client_name: 'Jamie Atkins', + client_image: '/placeholder.svg?height=40&width=40', + project_name: projects.find(p => p._id === '2')?.name || 'Unknown Project' + }, + { + _id: '4', + project_id: '2', + header: 'Excellent service', + comment: 'Excellent service, easy booking and parking. Will use again..', + rating: 5, + client_name: 'Jamie Atkins', + client_image: '/placeholder.svg?height=40&width=40', + project_name: projects.find(p => p._id === '2')?.name || 'Unknown Project' + }, + { + _id: '5', + project_id: '1', + header: 'Great service', + comment: 'Great service, was running late, but the company really helped on my arrival.', + rating: 5, + client_name: 'Sandra Long', + client_image: '/placeholder.svg?height=40&width=40', + project_name: projects.find(p => p._id === '1')?.name || 'Unknown Project' + } + ] + + export default function ReviewsPage() { + const [searchTerm, setSearchTerm] = useState(''); + + const filteredReviews = useMemo(() => { + if (!searchTerm) return reviews; + + const lowercaseSearch = searchTerm.toLowerCase(); + return reviews.filter((review) => + review.client_name.toLowerCase().includes(lowercaseSearch) || + review.header.toLowerCase().includes(lowercaseSearch) || + review.comment.toLowerCase().includes(lowercaseSearch) || + review.project_name.toLowerCase().includes(lowercaseSearch) || + projects.find((p) => p._id === review.project_id)?.techStack.some((tech) => + tech.toLowerCase().includes(lowercaseSearch) + ) + ); + }, [searchTerm]); + + const averageRating = useMemo(() => { + const total = reviews.reduce((acc, review) => acc + review.rating, 0); + return (total / reviews.length).toFixed(1); + }, []); + + return ( +
+
+

+ Company score {averageRating} out of 5, from {reviews.length.toLocaleString()} reviews. +

+

+ You can trust us to get it where it needs to be, but don't take our word for it. Read our reviews at{' '} + + Trustpilot.com + +

+
+ + + +
+ +
+ +
+ +
+
+ ); + } diff --git a/client/src/component/ClientInfo/Button.jsx b/client/src/component/ClientInfo/Button.jsx deleted file mode 100644 index 3e958c8..0000000 --- a/client/src/component/ClientInfo/Button.jsx +++ /dev/null @@ -1,13 +0,0 @@ -import React from 'react'; - -const Button = ({ children, className, ...props }) => ( - -); - -export default Button; - diff --git a/client/src/component/ClientInfo/Button1.jsx b/client/src/component/ClientInfo/Button1.jsx new file mode 100644 index 0000000..f5facc4 --- /dev/null +++ b/client/src/component/ClientInfo/Button1.jsx @@ -0,0 +1,13 @@ +import React from 'react'; + +const Button1 = ({ children, className, ...props }) => ( + + {children} + +); + +export default Button1; + diff --git a/client/src/component/ClientInfo/ProjectCard.jsx b/client/src/component/ClientInfo/ProjectCard.jsx index 20aea71..d7ad3bf 100644 --- a/client/src/component/ClientInfo/ProjectCard.jsx +++ b/client/src/component/ClientInfo/ProjectCard.jsx @@ -8,7 +8,7 @@ const ProjectCard = ({ project }) => (
{project.title} diff --git a/client/src/component/ClientInfo/SearchBar.jsx b/client/src/component/ClientInfo/SearchBar.jsx index 2527607..c3a4b45 100644 --- a/client/src/component/ClientInfo/SearchBar.jsx +++ b/client/src/component/ClientInfo/SearchBar.jsx @@ -1,6 +1,6 @@ import React from 'react'; import { FaSearch } from "react-icons/fa"; -import Button from './Button'; +import Button1 from './Button1'; import Input from './Input'; const SearchBar = ({ searchQuery, setSearchQuery, handleSearchSubmit }) => ( @@ -13,9 +13,9 @@ const SearchBar = ({ searchQuery, setSearchQuery, handleSearchSubmit }) => ( onChange={(e) => setSearchQuery(e.target.value)} className="search-input" /> - +
); diff --git a/client/src/component/ClientInfo/Tabs.jsx b/client/src/component/ClientInfo/Tabs.jsx index fb3bdfb..84d299f 100644 --- a/client/src/component/ClientInfo/Tabs.jsx +++ b/client/src/component/ClientInfo/Tabs.jsx @@ -9,12 +9,12 @@ export const TabsList = ({ children }) => ( ); export const TabsTrigger = ({ children, isActive, onClick }) => ( - + ); export const TabsContent = ({ children, isActive }) => ( diff --git a/client/src/component/PodInfo/TeamModal.jsx b/client/src/component/PodInfo/TeamModal.jsx index c8c5e99..a42088f 100644 --- a/client/src/component/PodInfo/TeamModal.jsx +++ b/client/src/component/PodInfo/TeamModal.jsx @@ -4,6 +4,7 @@ import { TeamMemberCard } from './TeamMemberCard' import { ProjectCard } from './ProjectCard' import { sortTeamMembers } from '../../contexts/sortTeamMembers' + export const TeamModal = ({ pod, onClose }) => { const [searchTerm, setSearchTerm] = useState('') const [skillFilter, setSkillFilter] = useState('') @@ -47,11 +48,11 @@ export const TeamModal = ({ pod, onClose }) => {

{pod.name}

- + ×
- - +
{activeView === 'members' ? ( @@ -101,20 +102,20 @@ export const TeamModal = ({ pod, onClose }) => { ))}
-
- + {currentMemberPage} of {memberPageCount} - +
) : ( @@ -136,20 +137,20 @@ export const TeamModal = ({ pod, onClose }) => { ))}
-
- + {currentProjectPage} of {projectPageCount} - +
)} diff --git a/client/src/component/Reviews/ReviewCard.jsx b/client/src/component/Reviews/ReviewCard.jsx new file mode 100644 index 0000000..f543872 --- /dev/null +++ b/client/src/component/Reviews/ReviewCard.jsx @@ -0,0 +1,32 @@ +import { FaStar, FaProjectDiagram } from 'react-icons/fa'; +import './reviewcard.scss'; + +export function ReviewCard({ header, comment, rating, clientName, clientImage, projectName }) { + return ( +
+
+ {Array.from({ length: 5 }).map((_, index) => ( + + ))} +
+

{header}

+

{comment}

+
+ + {projectName} +
+
+ {clientName} + {clientName} +
+
+ ); +} diff --git a/client/src/component/Reviews/ReviewCarosoul.jsx b/client/src/component/Reviews/ReviewCarosoul.jsx new file mode 100644 index 0000000..0eb9698 --- /dev/null +++ b/client/src/component/Reviews/ReviewCarosoul.jsx @@ -0,0 +1,140 @@ +import useEmblaCarousel from 'embla-carousel-react'; +import Autoplay from 'embla-carousel-autoplay'; +import { ReviewCard } from './ReviewCard'; +import './reviewcarousel.scss'; +const clients = [ + { + _id: '1', + name: 'Sandra Long', + description: 'Regular client', + contact_info: 'sandra@example.com', + point_of_contact: 'Sandra', + image: '/placeholder.svg?height=40&width=40' + }, + { + _id: '2', + name: 'Jamie Atkins', + description: 'Premium client', + contact_info: 'jamie@example.com', + point_of_contact: 'Jamie', + image: '/placeholder.svg?height=40&width=40' + } + ] + + const projects = [ + { + _id: '1', + name: 'Website Redesign', + description: 'Complete website overhaul', + status: 'Completed', + start_time: new Date('2023-01-01'), + end_time: new Date('2023-06-30'), + budget: 50000, + hr_taken: 500, + client_id: '1', + techStack: ['React', 'Node.js', 'MongoDB'], + links: { + links: 'https://example.com', + github: 'https://github.com/example' + }, + image_link: '/placeholder.svg' + }, + { + _id: '2', + name: 'Mobile App Development', + description: 'iOS and Android app', + status: 'In Progress', + start_time: new Date('2023-07-01'), + end_time: new Date('2024-01-31'), + budget: 75000, + hr_taken: 300, + client_id: '2', + techStack: ['React Native', 'Firebase'], + links: { + links: 'https://example.com', + github: 'https://github.com/example' + }, + image_link: '/placeholder.svg' + } + ] +const reviews = [ + { + _id: '1', + project_id: '1', + header: 'Excellent service', + comment: 'My 1st time booking online was simple, staff was very friendly.', + rating: 5, + client_name: 'Sandra Long', + client_image: '/placeholder.svg?height=40&width=40', + project_name: projects.find(p => p._id === '1')?.name || 'Unknown Project' + }, + { + _id: '2', + project_id: '1', + header: 'Great service', + comment: 'Great service, was running late, but the company really helped on my arrival.', + rating: 5, + client_name: 'Sandra Long', + client_image: '/placeholder.svg?height=40&width=40', + project_name: projects.find(p => p._id === '1')?.name || 'Unknown Project' + }, + { + _id: '3', + project_id: '2', + header: 'Excellent service', + comment: 'Excellent service, easy booking and parking. Will use again..', + rating: 5, + client_name: 'Jamie Atkins', + client_image: '/placeholder.svg?height=40&width=40', + project_name: projects.find(p => p._id === '2')?.name || 'Unknown Project' + }, + { + _id: '4', + project_id: '2', + header: 'Excellent service', + comment: 'Excellent service, easy booking and parking. Will use again..', + rating: 5, + client_name: 'Jamie Atkins', + client_image: '/placeholder.svg?height=40&width=40', + project_name: projects.find(p => p._id === '2')?.name || 'Unknown Project' + }, + { + _id: '5', + project_id: '1', + header: 'Great service', + comment: 'Great service, was running late, but the company really helped on my arrival.', + rating: 5, + client_name: 'Sandra Long', + client_image: '/placeholder.svg?height=40&width=40', + project_name: projects.find(p => p._id === '1')?.name || 'Unknown Project' + } + ] +export function ReviewsCarousel({ filteredReviews = reviews, autoplayDelay = 4000 }) { + const [emblaRef] = useEmblaCarousel( + { + loop: true, + align: 'start', + slidesToScroll: 1, + }, + [Autoplay({ delay: autoplayDelay })] + ); + + return ( +
+
+ {filteredReviews.map((review) => ( +
+ +
+ ))} +
+
+ ); +} diff --git a/client/src/component/Reviews/SearchBar.jsx b/client/src/component/Reviews/SearchBar.jsx new file mode 100644 index 0000000..5d7ae9f --- /dev/null +++ b/client/src/component/Reviews/SearchBar.jsx @@ -0,0 +1,26 @@ +import { useState } from 'react'; +import { FaSearch } from 'react-icons/fa'; +import './searchbar.scss'; + +export function SearchBar({ onSearch }) { + const [searchTerm, setSearchTerm] = useState(''); + + const handleSearch = (e) => { + const value = e.target.value; + setSearchTerm(value); + onSearch(value); + }; + + return ( +
+ + +
+ ); +} diff --git a/client/src/component/Reviews/reviewcard.scss b/client/src/component/Reviews/reviewcard.scss new file mode 100644 index 0000000..126ab9a --- /dev/null +++ b/client/src/component/Reviews/reviewcard.scss @@ -0,0 +1,62 @@ + + .starContainer { + display: flex; + margin-bottom: 0.5rem; + } + + .star { + width: 1rem; + height: 1rem; + } + + .starFilled { + color: #fbbf24; + } + + .starEmpty { + color: #e5e7eb; + } + + .header { + font-size: 1.125rem; + font-weight: 600; + margin-bottom: 0.5rem; + } + + .comment { + color: #4b5563; + margin-bottom: 1rem; + flex-grow: 1; + } + + .projectInfo { + display: flex; + align-items: center; + margin-bottom: 0.5rem; + } + + .projectIcon { + color: #3b82f6; + margin-right: 0.5rem; + } + + .projectName { + font-weight: 500; + font-size: 0.875rem; + color: #4b5563; + } + + .clientInfo { + display: flex; + align-items: center; + } + + .clientImage { + border-radius: 9999px; + margin-right: 0.75rem; + } + + .clientName { + font-weight: 500; + } + \ No newline at end of file diff --git a/client/src/component/Reviews/reviewcarousel.scss b/client/src/component/Reviews/reviewcarousel.scss new file mode 100644 index 0000000..8db0c64 --- /dev/null +++ b/client/src/component/Reviews/reviewcarousel.scss @@ -0,0 +1,26 @@ +.carouselContainer { + overflow: hidden; + } + + .carouselTrack { + display: flex; + } + + .carouselSlide { + flex: 0 0 100%; + min-width: 0; + } + + @media (min-width: 640px) { + .carouselSlide { + flex: 0 0 50%; + } + } + + @media (min-width: 1024px) { + .carouselSlide { + flex: 0 0 33.33%; + } + } + + \ No newline at end of file diff --git a/client/src/component/Reviews/searchbar.scss b/client/src/component/Reviews/searchbar.scss new file mode 100644 index 0000000..1c4bf5f --- /dev/null +++ b/client/src/component/Reviews/searchbar.scss @@ -0,0 +1,28 @@ +.searchContainer { + position: relative; + max-width: 25rem; + width: 100%; + margin: 0 auto 2rem auto; + } + + .searchInput { + width: 100%; + padding: 0.5rem 1rem 0.5rem 2.5rem; + border: 1px solid #d1d5db; + border-radius: 0.5rem; + } + + .searchInput:focus { + outline: none; + ring: 2px solid #3b82f6; + } + + .searchIcon { + position: absolute; + left: 0.85rem; + top: 50%; + transform: translateY(-50%); + color: #9ca3af; + } + + \ No newline at end of file diff --git a/server/models/teamModel.js b/server/models/teamModel.js index c42d590..6989b47 100644 --- a/server/models/teamModel.js +++ b/server/models/teamModel.js @@ -20,7 +20,7 @@ const teamSchema = mongoose.Schema( { teamDescriptions:{ type: String, - default: '' + required: true } }, From 3e7198d7f0e8112d96bb9a248abfb1d2bac22311 Mon Sep 17 00:00:00 2001 From: 2014026-lukepro Date: Tue, 10 Dec 2024 13:23:54 +0530 Subject: [PATCH 13/42] conflicts resolved --- .../projects/project1.png} | Bin .../images => public}/projects/project2.webp | Bin .../images => public}/projects/project3.webp | Bin .../ClientInfo/ClientInfo.scss | 21 +++++++++++++++++- .../PortfolioManagement/PodInfo/PodInfo.scss | 2 ++ .../PortfolioManagement/Reviews/reviews.scss | 0 client/src/component/ClientInfo/Tabs.jsx | 1 + client/src/component/PodInfo/TeamModal.jsx | 2 ++ 8 files changed, 25 insertions(+), 1 deletion(-) rename client/{src/assests/images/projects/project1.webp => public/projects/project1.png} (100%) rename client/{src/assests/images => public}/projects/project2.webp (100%) rename client/{src/assests/images => public}/projects/project3.webp (100%) create mode 100644 client/src/Pages/PortfolioManagement/Reviews/reviews.scss diff --git a/client/src/assests/images/projects/project1.webp b/client/public/projects/project1.png similarity index 100% rename from client/src/assests/images/projects/project1.webp rename to client/public/projects/project1.png diff --git a/client/src/assests/images/projects/project2.webp b/client/public/projects/project2.webp similarity index 100% rename from client/src/assests/images/projects/project2.webp rename to client/public/projects/project2.webp diff --git a/client/src/assests/images/projects/project3.webp b/client/public/projects/project3.webp similarity index 100% rename from client/src/assests/images/projects/project3.webp rename to client/public/projects/project3.webp diff --git a/client/src/Pages/PortfolioManagement/ClientInfo/ClientInfo.scss b/client/src/Pages/PortfolioManagement/ClientInfo/ClientInfo.scss index 7cedff1..aa871a3 100644 --- a/client/src/Pages/PortfolioManagement/ClientInfo/ClientInfo.scss +++ b/client/src/Pages/PortfolioManagement/ClientInfo/ClientInfo.scss @@ -30,7 +30,6 @@ gap: 1rem; } - .profile-avatar { width: 8rem; height: 8rem; @@ -764,6 +763,26 @@ } } + + buttonss { + padding: 0.5rem 1rem; + background-color: #f3f4f6; + border: none; + border-radius: 0.375rem; + font-size: 0.875rem; + cursor: pointer; + transition: background-color 0.3s ease; + color:black; +} + + buttonss:hover:not(:disabled) { + background-color: #e5e7eb; +} + + buttonss:disabled { + opacity: 0.5; + cursor: not-allowed; +} /* Ensure images and cards don't overflow */ .project-image, .cards, diff --git a/client/src/Pages/PortfolioManagement/PodInfo/PodInfo.scss b/client/src/Pages/PortfolioManagement/PodInfo/PodInfo.scss index 7e3b651..c5c5a3c 100644 --- a/client/src/Pages/PortfolioManagement/PodInfo/PodInfo.scss +++ b/client/src/Pages/PortfolioManagement/PodInfo/PodInfo.scss @@ -1,5 +1,6 @@ .teamPage { + margin-left: auto; margin-right: auto; @@ -555,6 +556,7 @@ .viewToggleButton.active { color: #fdfeff; border-bottom-color: #ff0058; + background-color: #000000; } .projectsGrid { diff --git a/client/src/Pages/PortfolioManagement/Reviews/reviews.scss b/client/src/Pages/PortfolioManagement/Reviews/reviews.scss new file mode 100644 index 0000000..e69de29 diff --git a/client/src/component/ClientInfo/Tabs.jsx b/client/src/component/ClientInfo/Tabs.jsx index 84d299f..9b15d3e 100644 --- a/client/src/component/ClientInfo/Tabs.jsx +++ b/client/src/component/ClientInfo/Tabs.jsx @@ -1,4 +1,5 @@ import React from 'react'; +import '../../Pages/PortfolioManagement/ClientInfo/ClientInfo.scss' export const Tabs = ({ children }) => (
{children}
diff --git a/client/src/component/PodInfo/TeamModal.jsx b/client/src/component/PodInfo/TeamModal.jsx index a42088f..5d893aa 100644 --- a/client/src/component/PodInfo/TeamModal.jsx +++ b/client/src/component/PodInfo/TeamModal.jsx @@ -3,6 +3,8 @@ import { FaSearch, FaFilter } from 'react-icons/fa' import { TeamMemberCard } from './TeamMemberCard' import { ProjectCard } from './ProjectCard' import { sortTeamMembers } from '../../contexts/sortTeamMembers' +import Button1 from '../ClientInfo/Button1'; + export const TeamModal = ({ pod, onClose }) => { From 485f226662db55494d1e4b9c396551b46812ba52 Mon Sep 17 00:00:00 2001 From: 2014026-lukepro Date: Thu, 12 Dec 2024 01:10:37 +0530 Subject: [PATCH 14/42] working backend for clientinfo page --- .../ClientInfo/ClientInfo.scss | 6 +- .../PortfolioManagement/ClientInfo/index.jsx | 360 +++++++++++------- client/src/api/projectApi.js | 65 ++++ .../src/component/ClientInfo/ProjectCard.jsx | 134 +++++-- server/app.js | 9 +- server/controllers/clientController.js | 4 +- server/controllers/projectController.js | 21 +- server/controllers/projectTeamController.js | 12 + server/controllers/revenueController.js | 27 ++ server/controllers/techStackController.js | 26 +- server/models/RevenueModel.js | 2 +- server/routers/clientRouter.js | 12 +- server/routers/projectRoutes.js | 13 +- server/routers/projectTeamRouter.js | 9 + server/routers/revenueRouter.js | 10 + server/routers/techStackRoute.js | 12 +- 16 files changed, 499 insertions(+), 223 deletions(-) create mode 100644 server/controllers/projectTeamController.js create mode 100644 server/controllers/revenueController.js create mode 100644 server/routers/projectTeamRouter.js create mode 100644 server/routers/revenueRouter.js diff --git a/client/src/Pages/PortfolioManagement/ClientInfo/ClientInfo.scss b/client/src/Pages/PortfolioManagement/ClientInfo/ClientInfo.scss index aa871a3..4e9a312 100644 --- a/client/src/Pages/PortfolioManagement/ClientInfo/ClientInfo.scss +++ b/client/src/Pages/PortfolioManagement/ClientInfo/ClientInfo.scss @@ -764,7 +764,7 @@ } - buttonss { + button-container { padding: 0.5rem 1rem; background-color: #f3f4f6; border: none; @@ -775,11 +775,11 @@ color:black; } - buttonss:hover:not(:disabled) { +button-container:hover:not(:disabled) { background-color: #e5e7eb; } - buttonss:disabled { +button-container:disabled { opacity: 0.5; cursor: not-allowed; } diff --git a/client/src/Pages/PortfolioManagement/ClientInfo/index.jsx b/client/src/Pages/PortfolioManagement/ClientInfo/index.jsx index bc28b51..1ba8336 100644 --- a/client/src/Pages/PortfolioManagement/ClientInfo/index.jsx +++ b/client/src/Pages/PortfolioManagement/ClientInfo/index.jsx @@ -1,3 +1,4 @@ + import React, { useState, useEffect, useCallback } from "react"; import { FaCode, FaDollarSign, FaFileAlt, FaBullseye } from "react-icons/fa"; import useEmblaCarousel from 'embla-carousel-react'; @@ -10,73 +11,10 @@ import ReviewCard from '../../../component/ClientInfo/ReviewCard'; import SearchBar from '../../../component/ClientInfo/SearchBar'; import MilestoneCard from '../../../component/ClientInfo/MilestoneCard'; import ProjectCard from '../../../component/ClientInfo/ProjectCard'; -import { getAllProjects } from '../../../api/projectApi'; +import { getClientInfo,getAllRevenueData,getTechStackById } from '../../../api/projectApi'; +import { getAllProjects } from "../../../api/projectApi"; import "./ClientInfo.scss"; - - -const projects = [ - { - id: 1, - title: "VPN Mobile App", - Description: "Mobile UI Research", - image: "https://picsum.photos/600/400?random=1", - Team: "Avengers", - techStack: ["React Native", "Node.js", "Express"], - github: "https://github.com/guptapriya24/react-weather-app", - live: "https://weather-app-demo.netlify.app", - }, - { - id: 2, - title: "Property Dashboard", - Description: "Web Interface", - image: "https://picsum.photos/600/400?random=2", - Team: "Avengers", - techStack: ["React", "Redux", "Material-UI"], - github: "https://github.com/guptapriya24/react-weather-app", - live: "https://weather-app-demo.netlify.app", - }, - { - id: 3, - title: "Healthcare Mobile App", - Description: "Mobile UI Branding", - image: "https://picsum.photos/600/400?random=3", - Team: "Avengers", - techStack: ["Flutter", "Firebase", "GraphQL"], - github: "https://github.com/guptapriya24/react-weather-app", - live: "https://weather-app-demo.netlify.app", - }, - { - id: 4, - title: "E-commerce Platform", - Description: "Web Development", - image: "https://picsum.photos/600/400?random=4", - Team: "Avengers", - techStack: ["Next.js", "Stripe", "MongoDB"], - github: "https://github.com/guptapriya24/react-weather-app", - live: "https://weather-app-demo.netlify.app", - }, - { - id: 5, - title: "Fitness Tracking App", - Description: "Mobile Development", - image: "https://picsum.photos/600/400?random=5", - Team: "Avengers", - techStack: ["React Native", "Redux", "Firebase"], - github: "https://github.com/guptapriya24/react-weather-app", - live: "https://weather-app-demo.netlify.app", - }, - { - id: 6, - title: "Social Media Dashboard", - Description: "Web Analytics", - image: "https://picsum.photos/600/400?random=6", - Team: "Avengers", - techStack: ["Vue.js", "D3.js", "Node.js"], - github: "https://github.com/guptapriya24/react-weather-app", - live: "https://weather-app-demo.netlify.app", - }, -]; const reviews = [ { id: 1, headline: "Amazing Project!", reviewer: "John Doe", comment: "Very well executed.", rating: 5, reviewerImage: "https://picsum.photos/50" }, { id: 2, headline: "Great Work", reviewer: "Jane Smith", comment: "Great design and functionality!", rating: 4, reviewerImage: "/placeholder.svg?height=50&width=50" }, @@ -98,88 +36,231 @@ const milestones = [ const ClientInfo = () => { const [activeTab, setActiveTab] = useState("work"); const [searchQuery, setSearchQuery] = useState(""); - const [filteredProjects, setFilteredProjects] = useState(projects); + const [clientInfo, setClientInfo] = useState(null); + const [projects, setProjects] = useState([]); + const [filteredProjects, setFilteredProjects] = useState([]); + const [techStack, setTechStack] = useState([]); + const [revenue, setRevenue] = useState({ total: 0, invoicesCount: 0 }); + const [loading, setLoading] = useState(true); const [searchHistory, setSearchHistory] = useState([]); + const [currentProjectPage, setCurrentProjectPage] = useState(1); + const [currentReviewPage, setCurrentReviewPage] = useState(1); + const [currentMilestonePage, setCurrentMilestonePage] = useState(1); + const [clientId, setClientId] = useState(null); + const id = "507f1f77bcf86cd799439011"; // Replace this with the actual ClientID + + + // Fetch client data + const fetchClientData = async () => { + try { + const clientData = await getClientInfo(id); + setClientId(clientData._id); // Assuming the API returns a `_id` + setClientInfo(clientData); + return clientData._id; + } catch (error) { + console.error("Error fetching client info:", error); + throw error; + } + }; + + // Fetch projects for the client + const fetchProjects = async (id) => { + try { + const allProjects = await getAllProjects(); + const filtered = allProjects.filter( + (project) => project.client_id === id + ); + setProjects(filtered); + setFilteredProjects(filtered); + } catch (error) { + console.error("Error fetching projects:", error); + throw error; + } + }; + + + const fetchRevenueAndBenefits = async (clientID) => { + try { + const allRevenue = await getAllRevenueData(); + + // Collect project IDs for the client + const projectIds = new Set(filteredProjects.map((project) => project._id)); + + // Calculate total revenue and benefits + const { totalRevenue, totalBenefits } = allRevenue.reduce( + (acc, revenueItem) => { + if (projectIds.has(revenueItem.project_id)) { + acc.totalRevenue += revenueItem.revenue || 0; + acc.totalBenefits += revenueItem.benefits?.reduce((a, b) => a + b, 0) || 0; + } + return acc; + }, + { totalRevenue: 0, totalBenefits: 0 } + ); + + setRevenue({ + total: totalRevenue, + invoicesCount: totalBenefits , + }); + } catch (error) { + console.error("Error fetching revenue and benefits:", error); + } + }; + + const fetchTechStackDetails = async (techStackIds) => { + try { + const uniqueIds = Array.from(new Set(techStackIds)); + // Assuming `getTechStackDetails` is the API function to fetch tech stack by ID + const techStackPromises = uniqueIds.map((id) => getTechStackById(id)); + const techStackDetails = await Promise.all(techStackPromises); // Fetch details + console.log(techStackDetails); // Now log after initialization + setTechStack(techStackDetails); // Save tech stack details in state + } catch (error) { + console.error("Error fetching tech stack details:", error); + } + }; - const [projectsEmblaRef, projectsEmblaApi] = useEmblaCarousel({ loop: true }, [Autoplay()]); - const [reviewsEmblaRef, reviewsEmblaApi] = useEmblaCarousel({ loop: true }, [Autoplay()]); - const [milestonesEmblaRef, milestonesEmblaApi] = useEmblaCarousel({ loop: true }, [Autoplay()]); + + + useEffect(() => { + const fetchData = async () => { + setLoading(true); + try { + const [clientData, allProjects, allRevenue] = await Promise.all([ + getClientInfo(id), + getAllProjects(), + getAllRevenueData(), + ]); + + setClientInfo(clientData); + setClientId(clientData._id); + + const filtered = allProjects.filter((project) => project.client_id === clientData._id); + setProjects(filtered); + setFilteredProjects(filtered); + + // Fetch revenue and tech stack after projects are fetched + const projectIds = new Set(filtered.map((project) => project._id)); + const { totalRevenue, totalBenefits } = allRevenue.reduce( + (acc, revenueItem) => { + if (projectIds.has(revenueItem.project_id)) { + acc.totalRevenue += revenueItem.revenue || 0; + acc.totalBenefits += revenueItem.benefits?.reduce((a, b) => a + b, 0) || 0; + } + return acc; + }, + { totalRevenue: 0, totalBenefits: 0 } + ); + + setRevenue({ total: totalRevenue, invoicesCount: totalBenefits }); + + const allTechStackIds = filtered.flatMap((project) => project.techStack); + const uniqueTechStackIds = Array.from(new Set(allTechStackIds)); + const techStackDetails = await Promise.all( + uniqueTechStackIds.map((techId) => getTechStackById(techId)) + ); + setTechStack(techStackDetails); + } catch (error) { + console.error("Error during data fetch:", error); + } finally { + setLoading(false); + } + }; + + + fetchData(); + }, []); + - const handleSearchSubmit = (e) => { + + + + const [projectsEmblaRef] = useEmblaCarousel({ loop: true }, [Autoplay()]); + const [reviewsEmblaRef] = useEmblaCarousel({ loop: true }, [Autoplay()]); + const [milestonesEmblaRef] = useEmblaCarousel({ loop: true }, [Autoplay()]); + + const handleSearchSubmit = useCallback((e) => { e.preventDefault(); const trimmedQuery = searchQuery.trim().toLowerCase(); if (trimmedQuery) { const filtered = projects.filter((project) => - project.title.toLowerCase().includes(trimmedQuery) || - project.Description.toLowerCase().includes(trimmedQuery) || - project.Team.toLowerCase().includes(trimmedQuery) + project.name.toLowerCase().includes(trimmedQuery) || + project.description.toLowerCase().includes(trimmedQuery) || + project.status.toLowerCase().includes(trimmedQuery) ); setFilteredProjects(filtered); setSearchHistory((prev) => [...new Set([trimmedQuery, ...prev])].slice(0, 5)); } else { setFilteredProjects(projects); } - }; + }, [searchQuery, projects]); + + + useEffect(() => { + if (searchQuery === "") { + setFilteredProjects(projects); + } + }, [searchQuery, projects]); const clearSearch = useCallback(() => { setSearchQuery(""); setFilteredProjects(projects); setSearchHistory([]); - }, []); + }, [projects]); - useEffect(() => { - if (searchQuery === "") { - setFilteredProjects(projects); - } - }, [searchQuery]); + if (loading) { + return
Loading...
; + } + + if (!clientInfo) { + return
No client information found.
; + } const stats = [ - { title: "Projects", value: 5, icon: FaCode }, - { title: "Total Revenue", value: 10000, prefix: "$", icon: FaDollarSign }, - { title: "Invoices", value: 25, icon: FaFileAlt }, - { title: "Milestones", value: 7, icon: FaBullseye }, + { title: "Projects", value: projects.length, icon: FaCode }, + { title: "Total Revenue", value: revenue.total, prefix: "$", icon: FaDollarSign }, + { title: "Total Benefits", value: revenue.invoicesCount, icon: FaFileAlt }, + { title: "Milestones", value: milestones.length, icon: FaBullseye }, ]; - const [currentProjectPage, setCurrentProjectPage] = useState(1); const itemsPerPage = 3; const projectPageCount = Math.ceil(filteredProjects.length / itemsPerPage); + const reviewPageCount = Math.ceil(reviews.length / itemsPerPage); + const milestonePageCount = Math.ceil(milestones.length / itemsPerPage); + const currentProjects = filteredProjects.slice( (currentProjectPage - 1) * itemsPerPage, currentProjectPage * itemsPerPage ); - const [currentReviewPage, setCurrentReviewPage] = useState(1); - const ReviewPageCount = Math.ceil(reviews.length / itemsPerPage); - const currentreviews = reviews.slice( + const currentReviews = reviews.slice( (currentReviewPage - 1) * itemsPerPage, currentReviewPage * itemsPerPage ); - - const [currentmilestonePage, setCurrentmilestonePage] = useState(1); - const milestonePageCount = Math.ceil(milestones.length / itemsPerPage); - const currentmilestone = milestones.slice( - (currentmilestonePage - 1) * itemsPerPage, - currentmilestonePage * itemsPerPage + + const currentMilestones = milestones.slice( + (currentMilestonePage - 1) * itemsPerPage, + currentMilestonePage * itemsPerPage ); return (
- +
-

Irene Brooks

- Pro +

{clientInfo.name}

+ Client
- -

Interface and Brand Designer

-

based in San Antonio

+ +

{clientInfo.description}

+

{clientInfo.contact_info}

@@ -198,15 +279,17 @@ const ClientInfo = () => { ))}
-
-

Tech Stack:

-
- React - Node.js - JavaScript -
-
+

Tech Stack:

+
+ {techStack.map((tech, index) => ( + + {tech.name} {/* Assuming `name` is the property you want to display */} + + ))} +
+
+
@@ -231,9 +314,9 @@ const ClientInfo = () => { Milestones - + - {
{currentProjects.map((project) => ( -
- +
+
))}
- setCurrentProjectPage(prev => Math.max(prev - 1, 1))} + setCurrentProjectPage(prev => Math.max(prev - 1, 1))} disabled={currentProjectPage === 1} > Previous - + {currentProjectPage} of {projectPageCount} - setCurrentProjectPage(prev => Math.min(prev + 1, projectPageCount))} + setCurrentProjectPage(prev => Math.min(prev + 1, projectPageCount))} disabled={currentProjectPage === projectPageCount} > Next - +
@@ -267,26 +348,24 @@ const ClientInfo = () => {
- {currentreviews.map((review) => ( + {currentReviews.map((review) => (
))}
- setCurrentReviewPage(prev => Math.max(prev - 1, 1))} + setCurrentReviewPage(prev => Math.max(prev - 1, 1))} disabled={currentReviewPage === 1} > Previous - - {currentReviewPage} of {ReviewPageCount} - setCurrentReviewPage(prev => Math.min(prev + 1, ReviewPageCount))} - disabled={currentReviewPage === ReviewPageCount} + + {currentReviewPage} of {reviewPageCount} + setCurrentReviewPage(prev => Math.min(prev + 1, reviewPageCount))} + disabled={currentReviewPage === reviewPageCount} > Next - +
@@ -294,26 +373,24 @@ const ClientInfo = () => {
- {currentmilestone.map((milestone) => ( + {currentMilestones.map((milestone) => (
))}
- setCurrentmilestonePage(prev => Math.max(prev - 1, 1))} - disabled={currentmilestonePage === 1} + setCurrentMilestonePage(prev => Math.max(prev - 1, 1))} + disabled={currentMilestonePage === 1} > Previous - - {currentmilestonePage} of {milestonePageCount} - setCurrentmilestonePage(prev => Math.min(prev + 1, milestonePageCount))} - disabled={currentmilestonePage === milestonePageCount} + + {currentMilestonePage} of {milestonePageCount} + setCurrentMilestonePage(prev => Math.min(prev + 1, milestonePageCount))} + disabled={currentMilestonePage === milestonePageCount} > Next - +
@@ -322,4 +399,5 @@ const ClientInfo = () => { ); } -export default ClientInfo; \ No newline at end of file +export default ClientInfo; + diff --git a/client/src/api/projectApi.js b/client/src/api/projectApi.js index c7a378a..6f02cb0 100644 --- a/client/src/api/projectApi.js +++ b/client/src/api/projectApi.js @@ -1,5 +1,6 @@ import { axiosSecureInstance } from "./axios"; +// Fetch all projects export const getAllProjects = async () => { try { const response = await axiosSecureInstance.get('/api/projects'); @@ -10,6 +11,7 @@ export const getAllProjects = async () => { } }; +// Fetch project by ID export const getProjectById = async (id) => { try { const response = await axiosSecureInstance.get(`/api/projects/${id}`); @@ -20,6 +22,7 @@ export const getProjectById = async (id) => { } }; +// Create a new project export const createProject = async (projectData) => { try { const response = await axiosSecureInstance.post('/api/projects', projectData); @@ -30,6 +33,7 @@ export const createProject = async (projectData) => { } }; +// Update an existing project export const updateProject = async (id, projectData) => { try { const response = await axiosSecureInstance.put(`/api/projects/${id}`, projectData); @@ -40,6 +44,7 @@ export const updateProject = async (id, projectData) => { } }; +// Delete a project export const deleteProject = async (id) => { try { const response = await axiosSecureInstance.delete(`/api/projects/${id}`); @@ -50,3 +55,63 @@ export const deleteProject = async (id) => { } }; +// Fetch client information +export const getClientInfo = async (clientId) => { + try { + const response = await axiosSecureInstance.get(`/api/clients/${clientId}`); + return response.data; + } catch (error) { + console.error('Error fetching client info:', error); + handleApiError(error); + throw error; + } +}; + +// Fetch all projects for a specific client +export const getClientProjects = async (clientId) => { + try { + const response = await axiosSecureInstance.get(`/api/projects/client/${clientId}`); + return response.data; + } catch (error) { + console.error('Error fetching client projects:', error); + throw error; + } +}; + + +// Fetch total revenue and benefits for a client +export const getAllRevenueData = async () => { + try { + const response = await axiosSecureInstance.get('/api/revenue'); + return response.data.revenues; + } catch (error) { + console.error('Error fetching revenue data:', error); + throw error; + } +}; + +export const getTechStackById = async (id) => { + try { + const response = await axiosSecureInstance.get(`/api/techStacks/${id}`); + return response.data; + } catch (error) { + console.error('Error fetching tech stack by ID:', error); + handleApiError(error); + throw error; + } +}; +// Handle API error details +const handleApiError = (error) => { + if (error.response) { + // The request was made and the server responded with a status code that falls out of the range of 2xx + console.error('Response data:', error.response.data); + console.error('Response status:', error.response.status); + console.error('Response headers:', error.response.headers); + } else if (error.request) { + // The request was made but no response was received + console.error('No response received:', error.request); + } else { + // Something happened in setting up the request that triggered an Error + console.error('Error setting up request:', error.message); + } +}; diff --git a/client/src/component/ClientInfo/ProjectCard.jsx b/client/src/component/ClientInfo/ProjectCard.jsx index d7ad3bf..ea29a36 100644 --- a/client/src/component/ClientInfo/ProjectCard.jsx +++ b/client/src/component/ClientInfo/ProjectCard.jsx @@ -1,48 +1,98 @@ -import React from 'react'; -import { FaUsers } from "react-icons/fa"; -import { Cardss, CardContent, CardFooter } from './Cards'; +import React, { useState, useEffect } from 'react'; +import { FaUsers, FaCircle,FaCalendarAlt } from 'react-icons/fa'; +import { Cardss, CardContent, CardFooter } from './Cards'; // Ensure 'Cardss' is correct; if not, use 'Cards' import Badge from './Badge'; +import { getTechStackById } from '../../api/projectApi.js'; -const ProjectCard = ({ project }) => ( - - -
- {project.title} -
-
- - -
-

{project.title}

-
- - {project.Team} -
-
- {project.techStack.map((tech, index) => ( - {tech} - ))} +const getStatusColor = (status) => { + switch (status) { + case 'stage': + return 'yellow'; + case 'dev': + return 'blue'; + case 'live': + return 'green'; + default: + return 'red'; + } +}; + +const ProjectCard = ({ project, techStackIds }) => { + const [techStack, setTechStack] = useState([]); + + useEffect(() => { + const fetchTechStackDetails = async () => { + try { + const uniqueIds = Array.from(new Set(techStackIds)); // Remove duplicates + console.log("Tech Stack IDs: ", uniqueIds); // Log techStackIds + const techStackPromises = uniqueIds.map((id) => getTechStackById(id)); + const techStackDetails = await Promise.all(techStackPromises); + + console.log("Fetched Tech Stack Details: ", techStackDetails); // Log API response + + setTechStack(techStackDetails); // Save tech stack details in state + } catch (error) { + console.error("Error fetching tech stack details:", error); + } + }; + + if (techStackIds && techStackIds.length > 0) { + fetchTechStackDetails(); + } + }, [techStackIds]); // Runs when techStackIds changes + + return ( + + +
+ {project.name} +
-
- {project.github && ( - - GitHub - - )} - {project.live && ( - - Live Demo - - )} + + +
+

{project.name}

+
+ + {project.description} +
+
+ + {project.status} +
+
+
+ + {new Date(project.start_time).toLocaleDateString()}- {new Date(project.end_time).toLocaleDateString()} +
+ +
+
+ {techStack && techStack.length > 0 && techStack.map((tech, index) => ( + {tech.name} + ))} +
+ +
+ {project.links && project.links.github && ( + + GitHub + + )} + {project.links && project.links.links && ( + + Live Demo + + )} +
-
- - -); + + + ); +}; export default ProjectCard; - diff --git a/server/app.js b/server/app.js index eb9aff2..9e21699 100644 --- a/server/app.js +++ b/server/app.js @@ -40,8 +40,10 @@ import workBoardRouter from "./routers/workBoardRoute.js"; import projectrouter from "./routers/projectRoutes.js"; import clientRouter from "./routers/clientRouter.js"; import reviewsRoutes from "./routers/reviewsRoutes.js"; -import techStackRoute from "./routers/techStackRoute.js"; +import techstackrouter from "./routers/techStackRoute.js"; import featureRouter from "./routers/featureRouter.js"; +import revenuerouter from "./routers/revenueRouter.js"; +import projectteamrouter from "./routers/projectTeamRouter.js"; const app = express(); const server = http.createServer(app); @@ -89,9 +91,12 @@ app.use("/api/rag/",ragRouter); app.use("/api/vectorStore",vectorStoreRouter); app.use('/api/projects', projectrouter); app.use("/api/clients", clientRouter); -app.use('/api/techStacks',techStackRoute); +app.use('/api/techStacks',techstackrouter); app.use('/api/reviews', reviewsRoutes); app.use('/api/features', featureRouter); +app.use('/api/revenue', revenuerouter); +app.use('/api/project-team', projectteamrouter); + app.use(bodyParser.json({ extended: true })); app.use(bodyParser.urlencoded({ extended: true })); diff --git a/server/controllers/clientController.js b/server/controllers/clientController.js index 882797b..44a8055 100644 --- a/server/controllers/clientController.js +++ b/server/controllers/clientController.js @@ -11,13 +11,13 @@ export const getAllClients = async (req, res) => { export const getClientById = async (req, res) => { try { - const client = await Client.findOne({ id: parseInt(req.params.id) }); + const client = await Client.findById(req.params.id); if (!client) { return res.status(404).json({ message: "Client not found" }); } res.status(200).json(client); } catch (error) { - res.status(500).json({ message: "Error fetching client", error }); + res.status(500).json({ message: "Error fetching client", error: error.message }); } }; diff --git a/server/controllers/projectController.js b/server/controllers/projectController.js index d529ef5..6bdca01 100644 --- a/server/controllers/projectController.js +++ b/server/controllers/projectController.js @@ -1,6 +1,7 @@ import Project from "../models/Project.js"; -import mongoose from 'mongoose'; -import Teams from "../models/teamModel.js"; +import tech_stack from "../models/tech_stack.js" + +import mongoose from 'mongoose'; export const getAllProjects = async (req, res) => { try { @@ -12,14 +13,20 @@ export const getAllProjects = async (req, res) => { }; export const getProjectById = async (req, res) => { + const { clientId } = req.params; try { - const project = await Project.findOne({ _id: req.params.id }); - if (!project) { - return res.status(404).json({ message: "Project not found" }); + const projects = await Project.find({ client_id: clientId }) + .populate('client_id', 'name') + .populate('team_id', 'name') + .populate('feature', 'name') + .populate('techStack', 'name'); + + if (projects.length === 0) { + return res.status(404).json({ message: 'No projects found for this client' }); } - res.status(200).json(project); + res.status(200).json(projects); } catch (error) { - res.status(500).json({ message: "Error fetching project", error }); + res.status(500).json({ message: 'Server error. Could not fetch projects', error: error.message }); } }; diff --git a/server/controllers/projectTeamController.js b/server/controllers/projectTeamController.js new file mode 100644 index 0000000..ddd3c33 --- /dev/null +++ b/server/controllers/projectTeamController.js @@ -0,0 +1,12 @@ +import ProjectTeam from '../models/projectTeamModel.js'; + +export const getProjectTeamMembers = async (req, res) => { + try { + const { projectId } = req.params; + const teamMembers = await ProjectTeam.find({ project_id: projectId }).populate('user_id', 'fname lname'); + res.status(200).json(teamMembers); + } catch (error) { + res.status(500).json({ message: "Error fetching project team members", error }); + } +}; + diff --git a/server/controllers/revenueController.js b/server/controllers/revenueController.js new file mode 100644 index 0000000..b092670 --- /dev/null +++ b/server/controllers/revenueController.js @@ -0,0 +1,27 @@ +import Revenue from "../models/RevenueModel.js"; +import Project from "../models/Project.js"; // Assuming you have a model for projects + +// Get all revenue data for all clients (without aggregation) +export const getAllRevenueData = async (req, res) => { + try { + // Step 1: Fetch all revenue data + const revenues = await Revenue.find(); + + if (!revenues || revenues.length === 0) { + return res.status(404).json({ + message: "No revenue data found" + }); + } + + // Step 2: Return all revenue data as an array + res.status(200).json({ + revenues + }); + } catch (error) { + console.error("Error fetching revenue data:", error); + res.status(500).json({ + message: "Error fetching revenue data", + error: error.message + }); + } +}; diff --git a/server/controllers/techStackController.js b/server/controllers/techStackController.js index b98e099..245cc06 100644 --- a/server/controllers/techStackController.js +++ b/server/controllers/techStackController.js @@ -10,14 +10,24 @@ export const createTechStack = async (req, res) => { } }; -export const getAllTechStack = async (req, res) => -{ - try{ - const tech_stack= await TechStack.find(); +export const getAllTechStack = async (req, res) => { + try { + const tech_stack = await TechStack.find(); res.status(200).json(tech_stack); + } catch (error) { + res.status(500).json({ message: "Error getting tech stack", error }); } - catch(error) - { - res.status(500).json({message:"Error getting tech stack",error}); +}; + +export const getTechStackById = async (req, res) => { + try { + const { id } = req.params; + const techStack = await TechStack.findById(id); + if (!techStack) { + return res.status(404).json({ message: "Tech stack not found" }); + } + res.status(200).json(techStack); + } catch (error) { + res.status(500).json({ message: "Error getting tech stack by ID", error }); } -}; \ No newline at end of file +}; diff --git a/server/models/RevenueModel.js b/server/models/RevenueModel.js index 951a4e1..9f9942c 100644 --- a/server/models/RevenueModel.js +++ b/server/models/RevenueModel.js @@ -5,7 +5,7 @@ const RevenueSchema = new mongoose.Schema( project_id: { type: mongoose.Schema.Types.ObjectId, ref: 'Project', required: true }, projected_revenue: { type: Number, required: true }, revenue: { type: Number, required: true }, - invoices: [{ type: String }], + benefits: [{ type: Number }], created_at: { type: Date, default: Date.now }, } ); diff --git a/server/routers/clientRouter.js b/server/routers/clientRouter.js index 07dd7f7..d577043 100644 --- a/server/routers/clientRouter.js +++ b/server/routers/clientRouter.js @@ -6,13 +6,13 @@ import { updateClient, deleteClient, } from "../controllers/clientController.js"; // Use `import` instead of `require` - +import authenticateUser from "../middlewares/login.js"; const router = express.Router(); -router.get("/", getAllClients); // Route to get all clients -router.get("/:id", getClientById); // Route to get a client by ID -router.post("/", createClient); // Route to create a new client -router.put("/:id", updateClient); // Route to update a client by ID -router.delete("/:id", deleteClient); // Route to delete a client by ID +router.get("/",authenticateUser, getAllClients); // Route to get all clients +router.get("/:id",authenticateUser, getClientById); // Route to get a client by ID +router.post("/",authenticateUser, createClient); // Route to create a new client +router.put("/:id",authenticateUser, updateClient); // Route to update a client by ID +router.delete("/:id",authenticateUser, deleteClient); // Route to delete a client by ID export default router; diff --git a/server/routers/projectRoutes.js b/server/routers/projectRoutes.js index fa0ae88..98c8964 100644 --- a/server/routers/projectRoutes.js +++ b/server/routers/projectRoutes.js @@ -10,14 +10,15 @@ import { getProjectsByClient, } from "../controllers/projectController.js"; // Use `import` instead of `require` + const projectrouter = express.Router(); -projectrouter.get("/", getAllProjects); -projectrouter.get("/:id", getProjectById); -projectrouter.post("/", createProject); -projectrouter.put("/:id", updateProject); -projectrouter.delete("/:id", deleteProject); -projectrouter.get('/team/:teamId', getProjectsByTeam); +projectrouter.get("/",authenticateUser, getAllProjects); +projectrouter.get("/:id",authenticateUser, getProjectById); +projectrouter.post("/",authenticateUser, createProject); +projectrouter.put("/:id",authenticateUser, updateProject); +projectrouter.delete("/:id",authenticateUser, deleteProject); +projectrouter.get('/team/:teamId',authenticateUser, getProjectsByTeam); projectrouter.get('/client/:clientId', getProjectsByClient) export default projectrouter; diff --git a/server/routers/projectTeamRouter.js b/server/routers/projectTeamRouter.js new file mode 100644 index 0000000..2326255 --- /dev/null +++ b/server/routers/projectTeamRouter.js @@ -0,0 +1,9 @@ +import express from 'express'; +import { getProjectTeamMembers } from '../controllers/projectTeamController.js'; +import authenticateUser from "../middlewares/login.js"; +const projectteamrouter = express.Router(); + +projectteamrouter.get('/project/:projectId',authenticateUser, getProjectTeamMembers); + +export default projectteamrouter; + diff --git a/server/routers/revenueRouter.js b/server/routers/revenueRouter.js new file mode 100644 index 0000000..05976d7 --- /dev/null +++ b/server/routers/revenueRouter.js @@ -0,0 +1,10 @@ +import express from 'express'; +import { getAllRevenueData } from '../controllers/revenueController.js'; +import authenticateUser from "../middlewares/login.js"; + +const revenuerouter = express.Router(); + +revenuerouter.get('/', authenticateUser, getAllRevenueData); + + +export default revenuerouter; diff --git a/server/routers/techStackRoute.js b/server/routers/techStackRoute.js index c2e9d04..3817462 100644 --- a/server/routers/techStackRoute.js +++ b/server/routers/techStackRoute.js @@ -1,9 +1,11 @@ import express from "express"; -import { createTechStack,getAllTechStack } from "../controllers/techStackController.js"; +import { createTechStack, getAllTechStack, getTechStackById } from "../controllers/techStackController.js"; +import authenticateUser from "../middlewares/login.js"; -const router = express.Router(); +const techstackrouter = express.Router(); -router.post("/", createTechStack); -router.get("/", getAllTechStack); +techstackrouter.post("/", authenticateUser, createTechStack); +techstackrouter.get("/", getAllTechStack); +techstackrouter.get("/:id", getTechStackById); // New route to get a tech stack by ID -export default router; \ No newline at end of file +export default techstackrouter; From e1c331aba5bebe808ed7ff0393519af7711c1427 Mon Sep 17 00:00:00 2001 From: 2014026-lukepro Date: Mon, 16 Dec 2024 10:41:22 +0530 Subject: [PATCH 15/42] backend done for pod info --- .../PortfolioManagement/ClientInfo/index.jsx | 5 +- .../PortfolioManagement/PodInfo/Index.jsx | 299 ++++-------------- .../PortfolioManagement/PodInfo/PodInfo.scss | 286 +++++++++++++---- client/src/api/projectApi.js | 182 ++++++++++- .../src/component/ClientInfo/ProjectCard.jsx | 26 +- client/src/component/PodInfo/PodCard.jsx | 71 ++++- client/src/component/PodInfo/ProjectCard.jsx | 107 +++++-- .../src/component/PodInfo/TeamMemberCard.jsx | 20 +- client/src/component/PodInfo/TeamModal.jsx | 140 ++++---- server/controllers/projectController.js | 18 ++ server/controllers/projectTeamController.js | 41 ++- server/routers/projectRoutes.js | 3 +- server/routers/projectTeamRouter.js | 10 +- 13 files changed, 770 insertions(+), 438 deletions(-) diff --git a/client/src/Pages/PortfolioManagement/ClientInfo/index.jsx b/client/src/Pages/PortfolioManagement/ClientInfo/index.jsx index 1ba8336..1aa277c 100644 --- a/client/src/Pages/PortfolioManagement/ClientInfo/index.jsx +++ b/client/src/Pages/PortfolioManagement/ClientInfo/index.jsx @@ -172,9 +172,6 @@ const ClientInfo = () => { }, []); - - - const [projectsEmblaRef] = useEmblaCarousel({ loop: true }, [Autoplay()]); const [reviewsEmblaRef] = useEmblaCarousel({ loop: true }, [Autoplay()]); const [milestonesEmblaRef] = useEmblaCarousel({ loop: true }, [Autoplay()]); @@ -325,7 +322,7 @@ const ClientInfo = () => {
{currentProjects.map((project) => (
- +
))}
diff --git a/client/src/Pages/PortfolioManagement/PodInfo/Index.jsx b/client/src/Pages/PortfolioManagement/PodInfo/Index.jsx index 4db1e37..cd6709e 100644 --- a/client/src/Pages/PortfolioManagement/PodInfo/Index.jsx +++ b/client/src/Pages/PortfolioManagement/PodInfo/Index.jsx @@ -1,234 +1,44 @@ -import { useState } from 'react' +import { getAllTeams } from '../../../api/projectApi.js'; +import React, { useState, useEffect } from "react"; +import { FaSearch } from "react-icons/fa"; +import { TeamModal } from '../../../component/PodInfo/TeamModal.jsx'; +import { PodCard } from '../../../component/PodInfo/PodCard.jsx'; import './PodInfo.scss' -import { TeamModal } from '../../../component/PodInfo/TeamModal' -import { PodCard } from '../../../component/PodInfo/PodCard' -import { sortTeamMembers } from '../../../contexts/sortTeamMembers' -import { SearchBar } from '../../../component/PodInfo/SearchBar' -import { FaSearch} from "react-icons/fa"; -const teamMembers = [ - { - id: 1, - name: "Lola Meyers", - email: "lola.m@company.com", - jobTitle: "Project Manager", - experience: 5, - description: "Experienced PM leading product strategy and innovation.", - imageUrl: "https://picsum.photos/400/300?random=1", - pods: ["Avengers Pod", "Business Development Pod"], - skills: { "Product Management": 3, "Agile": 5, "User Research": 2 }, - isActive: true - }, - { - id: 2, - name: "Owen Garcia", - email: "owen.g@company.com", - jobTitle: "Senior Developer", - experience: 7, - description: "Frontend expert specializing in React and Next.js.", - imageUrl: "https://picsum.photos/400/300?random=2", - pods: ["Dev Squad Pod", "Algo Pod"], - skills: { "React": 10, "Next.js": 8, "TypeScript": 6 }, - isActive: false - }, - { - id: 3, - name: "Caitlyn King", - email: "caitlyn.k@company.com", - jobTitle: "Team Lead", - experience: 8, - description: "Design team lead with extensive UI/UX experience.", - imageUrl: "https://picsum.photos/400/300?random=3", - pods: ["Avengers Pod"], - skills: { "UI Design": 12, "UX Design": 10, "Figma": 8 }, - isActive: true - }, - { - id: 4, - name: "Ashwin Santiago", - email: "ashwin.s@company.com", - jobTitle: "Assistant Technical Manager", - experience: 10, - description: "Experienced engineering leader from top tech companies.", - imageUrl: "https://picsum.photos/400/300?random=4", - pods: ["Dev Squad Pod"], - skills: { "Team Leadership": 10, "Agile": 8, "System Architecture": 7 }, - isActive: true - }, - { - id: 5, - name: "Ashwin Santiago", - email: "ashwin.s@company.com", - jobTitle: "Assistant Technical Manager", - experience: 10, - description: "Experienced engineering leader from top tech companies.", - imageUrl: "https://picsum.photos/400/300?random=5", - pods: ["Dev Squad Pod"], - skills: { "Team Leadership": 10, "Agile": 8, "System Architecture": 7 }, - isActive: true - }, - { - id: 6, - name: "Ashwin Santiago", - email: "ashwin.s@company.com", - jobTitle: "Assistant Technical Manager", - experience: 1, - description: "Experienced engineering leader from top tech companies.", - imageUrl: "https://picsum.photos/400/300?random=6", - pods: ["Dev Squad Pod"], - skills: { "Team Leadership": 10, "Agile": 8, "System Architecture": 7 }, - isActive: true - }, - { - id: 7, - name: "Ashwin Santiago", - email: "ashwin.s@company.com", - jobTitle: "Assistant Technical Manager", - experience: 8, - description: "Experienced engineering leader from top tech companies.", - imageUrl: "https://picsum.photos/400/300?random=7", - pods: ["Dev Squad Pod"], - skills: { "Team Leadership": 10, "Agile": 8, "System Architecture": 7 }, - isActive: true - }, - { - id: 8, - name: "Sienna Hewitt", - email: "sienna.h@company.com", - jobTitle: "Assistant Manager", - experience: 2, - description: "Seasoned leader with startup and enterprise experience.", - imageUrl: "https://picsum.photos/400/300?random=8", - pods: ["Business Development Pod"], - skills: { "Strategy": 15, "Fundraising": 10, "Team Building": 12 }, - isActive: true - }, - { - id: 9, - name: "Kyla Choi", - email: "kyla.c@company.com", - jobTitle: "Developer", - experience: 3, - description: "UX specialist focusing on user research and testing.", - imageUrl: "https://picsum.photos/400/300?random=9", - pods: ["Avengers Pod"], - skills: { "User Research": 5, "Usability Testing": 4, "Data Analysis": 3 }, - isActive: false - } -] - -const projects = [ - { - id: 1, - name: "Project Alpha", - description: "Developing a new AI-powered chatbot for customer support", - status: "In Progress", - techStack: ["React", "Node.js", "Machine Learning"], - imageUrl: "https://picsum.photos/300/200?random=11", - podName: "Avengers Pod", - github: "https://github.com/guptapriya24/react-weather-app", - live: "https://weather-app-demo.netlify.app", - }, - { - id: 2, - name: "Project Beta", - description: "Redesigning the company's main dashboard for better UX", - status: "In Progress", - techStack: ["Vue.js", "SCSS", "Figma"], - imageUrl: "https://picsum.photos/300/200?random=15", - podName: "Avengers Pod", - github: "https://github.com/guptapriya24/react-weather-app", - live: "https://weather-app-demo.netlify.app", - }, - { - id: 3, - name: "Project Gamma", - description: "Implementing a new microservices architecture", - status: "Pending", - techStack: ["Kubernetes", "Docker", "Spring Boot"], - imageUrl: "https://picsum.photos/300/200?random=14", - podName: "Dev Squad Pod", - github: "https://github.com/guptapriya24/react-weather-app", - live: "https://weather-app-demo.netlify.app", - }, - { - id: 4, - name: "Project Delta", - description: "Optimizing database queries for improved performance", - status: "Completed", - techStack: ["PostgreSQL", "Redis", "AWS"], - imageUrl: "https://picsum.photos/300/200?random=13", - podName: "Algo Pod", - github: "https://github.com/guptapriya24/react-weather-app", - live: "https://weather-app-demo.netlify.app", - }, - { - id: 5, - name: "Project Epsilon", - description: "Developing a new sales strategy for Q4", - status: "In Progress", - techStack: ["Excel", "Power BI", "SQL"], - imageUrl: "https://picsum.photos/300/200?random=12", - podName: "Business Development Pod", - github: "https://github.com/guptapriya24/react-weather-app", - live: "https://weather-app-demo.netlify.app", - }, -]; +const PodInfo = () => { + const [teams, setTeams] = useState([]); + const [selectedTeamId, setSelectedTeamId] = useState(null); + const [isModalOpen, setIsModalOpen] = useState(false); + const [searchTerm, setSearchTerm] = useState(''); -const pods = [ - { - name: "Avengers Pod", - description: "Core product development and innovation team", - active: 9, - notactive: 2, - members: sortTeamMembers(teamMembers.filter(member => member.pods.includes("Avengers Pod"))), - projects: projects.filter(project => project.podName === "Avengers Pod") - }, - { - name: "Dev Squad Pod", - description: "Frontend and backend development team", - active: 7, - notactive: 3, - members: sortTeamMembers(teamMembers.filter(member => member.pods.includes("Dev Squad Pod"))), - projects: projects.filter(project => project.podName === "Dev Squad Pod") - }, - { - name: "Business Development Pod", - description: "Sales and business strategy team", - active: 5, - notactive: 4, - members: sortTeamMembers(teamMembers.filter(member => member.pods.includes("Business Development Pod"))), - projects: projects.filter(project => project.podName === "Business Development Pod") - }, - { - name: "Algo Pod", - description: "Algorithm and data structure specialists", - active: 6, - notactive: 2, - members: sortTeamMembers(teamMembers.filter(member => member.pods.includes("Algo Pod"))), - projects: projects.filter(project => project.podName === "Algo Pod") - } -] + useEffect(() => { + fetchTeams(); + }, []); -const PodInfo = () => { - const [selectedPod, setSelectedPod] = useState(null) - const [isModalOpen, setIsModalOpen] = useState(false) + const fetchTeams = async () => { + try { + const fetchedTeams = await getAllTeams(); + console.log('Fetched teams:', fetchedTeams); + setTeams(fetchedTeams); + } catch (error) { + console.error('Error fetching teams:', error); + } + }; - const handlePodClick = (pod) => { - console.log('Pod clicked:', pod); - setSelectedPod(pod) - setIsModalOpen(true) - console.log('isModalOpen set to:', true); - } - const [searchTerm, setSearchTerm] = useState('') + const handleTeamClick = (teamId) => { + console.log('Team clicked:', teamId); + setSelectedTeamId(teamId); + setIsModalOpen(true); + }; const handleSearchChange = (event) => { - setSearchTerm(event.target.value) - } + setSearchTerm(event.target.value); + }; + + const filteredTeams = teams.filter(team => + team.teamTitle.toLowerCase().includes(searchTerm.toLowerCase()) + ); - const filteredPods = pods.filter(pod => - pod.name.toLowerCase().includes(searchTerm.toLowerCase()) - ) return (
@@ -239,34 +49,35 @@ const PodInfo = () => { Cross-functional teams working together to achieve our goals

-
- - +
+ + +
-
- {filteredPods.map((pods, index) => ( - handlePodClick(pods)} /> - ))} + {filteredTeams.map((team) => ( + handleTeamClick(team._id)} /> + ))}
- {isModalOpen && selectedPod && ( - console.log('Rendering TeamModal'), + {isModalOpen && selectedTeamId && ( setIsModalOpen(false)} + teamId={selectedTeamId} + onClose={() => { + setIsModalOpen(false); + setSelectedTeamId(null); + }} /> )}
- ) -} - -export default PodInfo + ); +}; +export default PodInfo; diff --git a/client/src/Pages/PortfolioManagement/PodInfo/PodInfo.scss b/client/src/Pages/PortfolioManagement/PodInfo/PodInfo.scss index c5c5a3c..6f46318 100644 --- a/client/src/Pages/PortfolioManagement/PodInfo/PodInfo.scss +++ b/client/src/Pages/PortfolioManagement/PodInfo/PodInfo.scss @@ -491,44 +491,7 @@ object-fit: cover; } -@media (max-width: 768px) { - .searchAndFilters { - flex-direction: column; - } - - .viewToggle { - margin-top: 1rem; - } - - .teamMembers { - justify-content: center; - } - - .card { - width: 100%; - } -} - -@media (max-width: 480px) { - .modalHeader { - flex-direction: column; - align-items: flex-start; - } - - .closeButton { - align-self: flex-end; - margin-top: -2rem; - } - - .pagination1 { - flex-direction: column; - align-items: center; - } - .pagination1 button1 { - margin-top: 0.5rem; - } -} .viewToggleContainer { display: flex; @@ -638,16 +601,6 @@ } -@media (max-width: 640px) { - .projectsGrid { - grid-template-columns: 1fr; - } - - .viewToggleContainer { - padding: 0 1rem; - } -} - .projectCardLink { text-decoration: none; color: inherit; @@ -843,10 +796,6 @@ gap: 1rem; } - @media (max-width: 768px) { - - - } .searchBarContainer { display: flex; @@ -896,16 +845,231 @@ color: #888; } - .searchInput1 { - width: 100%; - padding: 0.75rem 1rem 0.75rem 2.5rem; - font-size: 1rem; - border: 1px solid #ccc; - border-radius: 2rem; - outline: none; - transition: border-color 0.3s ease; - } + .searchInput1:focus { border-color: #007bff; - } \ No newline at end of file + } + .teamMembers, +.projectsGrid { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 1rem; +} + + + +/* Responsive styles */ +@media (max-width: 1024px) { + .modal1 { + width: 95%; + } + + +} + +@media (max-width: 768px) { + .modal1 { + width: 100%; + height: 100%; + max-height: none; + border-radius: 0; + } + + .modalHeader { + position: sticky; + top: 0; + + z-index: 10; + } + + .teamMembers, .projectsGrid { + grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); + } + + .viewToggleContainer { + flex-direction: column; + } + + .viewToggleButton { + margin: 0.25rem 0; + } +} + +@media (max-width: 480px) { + .modalHeader h2 { + font-size: 1.2rem; + } + + .teamMembers, .projectsGrid { + grid-template-columns: 1fr; + } + + .searchWrapper1 { + flex-direction: column; + align-items: stretch; + } + + .searchIcon1 { + margin-right: 0; + margin-bottom: 0.5rem; + } + + .pagination1 { + flex-direction: column; + align-items: stretch; + } + + .pagination1 button-container { + margin: 0.25rem 0; + } +} + + + +.searchIcon1 { + position: absolute; + left: 1rem; + top: 50%; + transform: translateY(-50%); + color: #888; +} + +.searchInput1 { + width: 100%; + padding: 0.75rem 1rem 0.75rem 2.5rem; + font-size: 1rem; + border: 1px solid #333; + border-radius: 2rem; + outline: none; + transition: border-color 0.3s ease; + background-color: #1a1a1a; + color: #fff; +} + +.teamMembers, +.projectsGrid { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 1rem; +} + +/* Responsive styles */ +@media (max-width: 1024px) { + .modal1 { + width: 95%; + } + + .teamMembers, + .projectsGrid { + grid-template-columns: repeat(3, 1fr); + } +} + +@media (max-width: 768px) { + .modal1 { + width: 100%; + height: 100%; + max-height: none; + border-radius: 0; + } + + .modalHeader { + position: sticky; + top: 0; + + z-index: 10; + } + + .teamMembers, + .projectsGrid { + grid-template-columns: repeat(2, 1fr); + } + + .viewToggleContainer { + flex-direction: column; + } + + .viewToggleButton { + margin: 0.25rem 0; + } +} + +@media (max-width: 480px) { + .modalHeader h2 { + font-size: 1.2rem; + } + + .teamMembers, + .projectsGrid { + grid-template-columns: 1fr; + } + + .searchWrapper1 { + flex-direction: column; + align-items: stretch; + } + + .searchIcon1 { + margin-right: 0; + margin-bottom: 0.5rem; + } + + .pagination1 { + flex-direction: column; + align-items: stretch; + } + + .pagination1 button-container { + ext-align: center; + margin: 0.25rem 0; + } + + /* New styles for pagination buttons under 480px */ + .pagination1 button1 { + width: 100%; + padding: 0.75rem; + font-size: 1rem; + margin: 0.5rem 0; + } + + .pagination1 span { + display: block; + text-align: center; + margin: 0.5rem 0; + } +} + +/* Additional styles for cards to ensure proper sizing */ +.project-card1, +.teamMemberCard { + width: 100%; + max-width: none; + margin: 0.5rem 0; +} + +.project-image, +.cardImageContainer { + height: 200px; + width: 100%; + object-fit: cover; +} + +@media (max-width: 768px) { + .project-image, + .cardImageContainer { + height: 180px; + } +} + +@media (max-width: 480px) { + .project-image, + .cardImageContainer { + height: 150px; + } + + .project-content1, + .cardContent { + padding: 1rem; + } +} \ No newline at end of file diff --git a/client/src/api/projectApi.js b/client/src/api/projectApi.js index 6f02cb0..982e43d 100644 --- a/client/src/api/projectApi.js +++ b/client/src/api/projectApi.js @@ -92,15 +92,195 @@ export const getAllRevenueData = async () => { export const getTechStackById = async (id) => { try { + console.log('Fetching tech stack for ID:', id); + if (typeof id === 'object' && id !== null) { + console.warn('Received object instead of ID:', id); + id = id._id || id.id; // Use _id or id property if available + } const response = await axiosSecureInstance.get(`/api/techStacks/${id}`); + console.log('Tech stack response:', response.data); return response.data; } catch (error) { console.error('Error fetching tech stack by ID:', error); - handleApiError(error); + if (error.response) { + console.error('Response status:', error.response.status); + console.error('Response data:', error.response.data); + } throw error; } }; + + + + // Handle API error details +export const getTeamById = async (id) => { + try { + const response = await axiosSecureInstance.get(`/api/teams/${id}`); + console.log(response.data.team) + return response.data.team; + } catch (error) { + console.error('Error fetching team:', error); + throw error; + } +}; + + +export const getProjectTeamMembers = async (projectId) => { + try { + const response = await axiosSecureInstance.get(`/api/project-team/project/${projectId}`); + return response.data; + } catch (error) { + console.error('Error fetching project team members:', error); + throw error; + } +}; + +export const getAllTeams = async () => { + try { + const response = await axiosSecureInstance.get('/api/teams'); + return response.data.teams; + } catch (error) { + console.error('Error fetching teams:', error); + throw error; + } +}; + +export const getTeamMembers = async (teamId) => { + try { + const response = await axiosSecureInstance.get(`/api/teams/${teamId}/members`); + return response.data.members; + } catch (error) { + console.error('Error fetching team members:', error); + throw error; + } +} + +export const getProjectTeamMembersByTeam = async (teamId) => { + try { + console.log('Fetching project team members for team:', teamId); + const timestamp = new Date().getTime(); + const response = await axiosSecureInstance.get(`/api/project-team/team/${teamId}?_=${timestamp}`); + console.log('Response data:', response.data); + return response.data; + } catch (error) { + console.error('Error fetching project team members:', error); + if (error.response) { + console.error('Response status:', error.response.status); + console.error('Response data:', error.response.data); + } + throw error; + } +}; + +export const getAllUsers = async () => { + try { + console.log('Fetching all users'); + const response = await axiosSecureInstance.get('/api/user/get-all-users'); + console.log('All users response data:', response.data); + return response.data; + } catch (error) { + console.error('Error fetching all users:', error); + if (error.response) { + console.error('Response status:', error.response.status); + console.error('Response data:', error.response.data); + } + throw error; + } +}; + +export const getUsersByTeamId = async (teamId) => { + try { + console.log('Fetching users for team:', teamId); + const [usersResponse, projectTeamsResponse] = await Promise.all([ + getAllUsers(), + getAllProjectTeams() + ]); + + const allUsers = usersResponse.user; + const allProjectTeams = projectTeamsResponse; + + if (!Array.isArray(allUsers)) { + throw new TypeError('Expected allUsers to be an array'); + } + + const teamUsers = allUsers.filter(user => user.teamId === teamId); + + const usersWithRoles = teamUsers.map(user => { + const userProjects = allProjectTeams.filter(pt => pt.user_id === user._id && pt.team_id === teamId); + const roles = userProjects.map(up => up.role_in_project); + return { ...user, roles_in_project: roles }; + }); + + console.log('Filtered team users with roles:', usersWithRoles); + return usersWithRoles; + } catch (error) { + console.error('Error fetching users by team ID:', error); + throw error; + } +}; + + +export const fetchProjectById = async (projectId) => { + try { + const response = await axiosSecureInstance.get(`/api/projects/project/${projectId}`); + console.log("Project data:", response.data); + return response.data; + } catch (error) { + console.error("Error fetching project:", error); + return null; // Return null to handle potential issues gracefully + } +}; + + + +export const getAllProjectTeams = async () => { + try { + console.log('Fetching all project teams'); + const response = await axiosSecureInstance.get('/api/project-team/all'); + console.log('All project teams response:', response.data); + return response.data; + } catch (error) { + console.error('Error fetching all project teams:', error); + throw error; + } +}; + +export const getProjectsByTeam = async (teamId) => { + try { + console.log('Fetching projects for team:', teamId); + + const allProjectTeams = await getAllProjectTeams(); + const teamProjects = allProjectTeams.filter(pt => pt.team_id === teamId); + console.log('Filtered team projects:', teamProjects); + + if (teamProjects.length === 0) { + console.log('No projects found for this team'); + return []; + } + + const projectIds = teamProjects.map(tp => tp.project_id); + console.log('Project IDs:', projectIds); + + const projectPromises = projectIds.map(id => fetchProjectById(id)); + const projects = await Promise.all(projectPromises); + + const validProjects = projects.filter(project => project !== null); + + // Remove duplicates by project id + const uniqueProjects = Array.from( + new Map(validProjects.map(project => [project.id, project])).values() + ); + + console.log('Unique projects:', uniqueProjects); + return uniqueProjects; + } catch (error) { + console.error('Error fetching projects by team ID:', error); + throw error; + } +}; + + const handleApiError = (error) => { if (error.response) { // The request was made and the server responded with a status code that falls out of the range of 2xx diff --git a/client/src/component/ClientInfo/ProjectCard.jsx b/client/src/component/ClientInfo/ProjectCard.jsx index ea29a36..9d14d21 100644 --- a/client/src/component/ClientInfo/ProjectCard.jsx +++ b/client/src/component/ClientInfo/ProjectCard.jsx @@ -1,6 +1,6 @@ import React, { useState, useEffect } from 'react'; -import { FaUsers, FaCircle,FaCalendarAlt } from 'react-icons/fa'; -import { Cardss, CardContent, CardFooter } from './Cards'; // Ensure 'Cardss' is correct; if not, use 'Cards' +import { FaCircle, FaCalendarAlt } from 'react-icons/fa'; +import { Cardss, CardContent, CardFooter } from './Cards'; import Badge from './Badge'; import { getTechStackById } from '../../api/projectApi.js'; @@ -17,29 +17,27 @@ const getStatusColor = (status) => { } }; -const ProjectCard = ({ project, techStackIds }) => { +const ProjectCard = ({ project }) => { const [techStack, setTechStack] = useState([]); useEffect(() => { const fetchTechStackDetails = async () => { try { - const uniqueIds = Array.from(new Set(techStackIds)); // Remove duplicates - console.log("Tech Stack IDs: ", uniqueIds); // Log techStackIds - const techStackPromises = uniqueIds.map((id) => getTechStackById(id)); + const techStackPromises = project.techStack.map((id) => getTechStackById(id)); const techStackDetails = await Promise.all(techStackPromises); - console.log("Fetched Tech Stack Details: ", techStackDetails); // Log API response + console.log("Fetched Tech Stack Details: ", techStackDetails); - setTechStack(techStackDetails); // Save tech stack details in state + setTechStack(techStackDetails.map(detail => detail.name)); // Save tech stack names in state } catch (error) { console.error("Error fetching tech stack details:", error); } }; - if (techStackIds && techStackIds.length > 0) { + if (project.techStack && project.techStack.length > 0) { fetchTechStackDetails(); } - }, [techStackIds]); // Runs when techStackIds changes + }, [project.techStack]); return ( @@ -57,7 +55,6 @@ const ProjectCard = ({ project, techStackIds }) => {

{project.name}

- {project.description}
@@ -69,14 +66,12 @@ const ProjectCard = ({ project, techStackIds }) => { {new Date(project.start_time).toLocaleDateString()}- {new Date(project.end_time).toLocaleDateString()}
-
- {techStack && techStack.length > 0 && techStack.map((tech, index) => ( - {tech.name} + {techStack.map((tech, index) => ( + {tech} ))}
-
{project.links && project.links.github && ( @@ -96,3 +91,4 @@ const ProjectCard = ({ project, techStackIds }) => { }; export default ProjectCard; + diff --git a/client/src/component/PodInfo/PodCard.jsx b/client/src/component/PodInfo/PodCard.jsx index 65d6873..a691ee8 100644 --- a/client/src/component/PodInfo/PodCard.jsx +++ b/client/src/component/PodInfo/PodCard.jsx @@ -1,16 +1,56 @@ -import React from 'react'; -import { FaEllipsisH } from 'react-icons/fa'; -import '../../Pages/PortfolioManagement/PodInfo/PodInfo.scss' -export function PodCard({ pod, onClick }) { +import React, { useState, useEffect } from "react"; +import { FaEllipsisH } from "react-icons/fa"; +import { getUsersByTeamId } from "../../api/projectApi.js"; +import '../../Pages/PortfolioManagement/PodInfo/PodInfo.scss'; + +export const PodCard = ({ team, onClick }) => { + const [activeMembers, setActiveMembers] = useState(0); + const [inactiveMembers, setInactiveMembers] = useState(0); + const [teamMembers, setTeamMembers] = useState([]); + const [error, setError] = useState(null); + + useEffect(() => { + const fetchTeamMembers = async () => { + try { + const members = await getUsersByTeamId(team._id); + console.log('Fetched team members:', members); + + if (!Array.isArray(members)) { + throw new Error('Fetched data is not an array'); + } + + const active = members.filter(member => member.status === 'active').length; + const inactive = members.length - active; + + console.log('Active members:', active); + console.log('Inactive members:', inactive); + + setActiveMembers(active); + setInactiveMembers(inactive); + setTeamMembers(members); + setError(null); + } catch (error) { + console.error('Error fetching team members:', error); + setError(error.message); + } + }; + + fetchTeamMembers(); + }, [team._id]); + + if (error) { + return
Error: {error}
; + } + return (
- {pod.name[0]} + {team.teamTitle[0]}
-

{pod.name}

-

{pod.description}

+

{team.teamTitle}

+

{team.teamDescriptions}

- {pod.active} Members Available + {activeMembers} Active - {pod.notactive} Unavailable + {inactiveMembers} Inactive
- {pod.members.slice(0, 3).map((member, index) => ( + {teamMembers.slice(0, 3).map((member, index) => (
- {member.name[0]} + {member.fname ? member.fname[0] : '?'}
))} - {pod.members.length > 4 && ( -
+{pod.members.length - 4}
+ {teamMembers.length > 3 && ( +
+{teamMembers.length - 3}
)}
- ) -} \ No newline at end of file + ); +}; + diff --git a/client/src/component/PodInfo/ProjectCard.jsx b/client/src/component/PodInfo/ProjectCard.jsx index fbddaf2..1e27f87 100644 --- a/client/src/component/PodInfo/ProjectCard.jsx +++ b/client/src/component/PodInfo/ProjectCard.jsx @@ -1,47 +1,94 @@ -import React from 'react'; -import '../../Pages/PortfolioManagement/PodInfo/PodInfo.scss'; +import React, { useState, useEffect } from 'react'; +import { FaCircle, FaCalendarAlt } from 'react-icons/fa'; +import { Cardss, CardContent, CardFooter } from '../../component/ClientInfo/Cards'; +import Badge from '../../component/ClientInfo/Badge'; +import { getTechStackById } from '../../api/projectApi'; -export const ProjectCard = ({ project }) => { - // Guard clause: Return null if project is not defined - if (!project) { - return null; +const getStatusColor = (status) => { + switch (status) { + case 'stage': + return 'yellow'; + case 'dev': + return 'blue'; + case 'live': + return 'green'; + default: + return 'red'; } +}; + +export const ProjectCard = ({ project }) => { + const [techStack, setTechStack] = useState([]); + + useEffect(() => { + const fetchTechStackDetails = async () => { + try { + const techStackPromises = project.techStack.map((id) => getTechStackById(id)); + const techStackDetails = await Promise.all(techStackPromises); + + console.log("Fetched Tech Stack Details: ", techStackDetails); + + setTechStack(techStackDetails.map(detail => detail.name)); // Save tech stack names in state + } catch (error) { + console.error("Error fetching tech stack details:", error); + } + }; + + if (project.techStack && project.techStack.length > 0) { + fetchTechStackDetails(); + } + }, [project.techStack]); return ( - -
- {project.name -
-

{project.name}

-

{project.description}

-
- {project.techStack && project.techStack.map((tech, index) => ( - {tech} + + +
+ {project.name} +
+
+ + +
+

{project.name}

+
+ {project.description} +
+
+ + {project.status} +
+
+
+ + {new Date(project.start_time).toLocaleDateString()}- {new Date(project.end_time).toLocaleDateString()} +
+
+
+ {techStack.map((tech, index) => ( + {tech} ))}
-
- + +
); }; + +export default ProjectCard; + diff --git a/client/src/component/PodInfo/TeamMemberCard.jsx b/client/src/component/PodInfo/TeamMemberCard.jsx index 5667b79..1c61c69 100644 --- a/client/src/component/PodInfo/TeamMemberCard.jsx +++ b/client/src/component/PodInfo/TeamMemberCard.jsx @@ -5,20 +5,20 @@ export function TeamMemberCard({ member }) { return (
- {member.name} -
+ {`${member.fname} +
-

{member.name}

-

{member.jobTitle} • {member.experience} years

-

{member.description}

-
- {Object.entries(member.skills).map(([skill, count], index) => ( - {skill}: {count} - ))} -
+

{`${member.fname} ${member.lname}`}

+

+ {member.roles_in_project && member.roles_in_project.length > 0 + ? member.roles_in_project.join(', ') + : 'No assigned role'} +

+

{member.email}

) } + diff --git a/client/src/component/PodInfo/TeamModal.jsx b/client/src/component/PodInfo/TeamModal.jsx index 5d893aa..22ae183 100644 --- a/client/src/component/PodInfo/TeamModal.jsx +++ b/client/src/component/PodInfo/TeamModal.jsx @@ -1,28 +1,56 @@ -import React, { useState } from 'react' -import { FaSearch, FaFilter } from 'react-icons/fa' +import React, { useState, useEffect } from 'react' +import { FaSearch } from 'react-icons/fa' import { TeamMemberCard } from './TeamMemberCard' import { ProjectCard } from './ProjectCard' -import { sortTeamMembers } from '../../contexts/sortTeamMembers' -import Button1 from '../ClientInfo/Button1'; +import { getUsersByTeamId, getProjectsByTeam, getTeamById } from '../../api/projectApi' - - -export const TeamModal = ({ pod, onClose }) => { +export const TeamModal = ({ teamId, onClose }) => { const [searchTerm, setSearchTerm] = useState('') const [skillFilter, setSkillFilter] = useState('') const [projectSearchTerm, setProjectSearchTerm] = useState('') const [currentMemberPage, setCurrentMemberPage] = useState(1) const [currentProjectPage, setCurrentProjectPage] = useState(1) const [activeView, setActiveView] = useState('members') + const [teamMembers, setTeamMembers] = useState([]) + const [projects, setProjects] = useState([]) + const [teamName, setTeamName] = useState('') + const [error, setError] = useState(null) const itemsPerPage = 3 - const filteredMembers = sortTeamMembers(pod.members.filter(member => - (member.name.toLowerCase().includes(searchTerm.toLowerCase()) || - member.jobTitle.toLowerCase().includes(searchTerm.toLowerCase())) && - (skillFilter === '' || Object.keys(member.skills).some(skill => - skill.toLowerCase().includes(skillFilter.toLowerCase()) - )) - )) + useEffect(() => { + const fetchTeamData = async () => { + if (!teamId) { + setError('Team ID is undefined'); + return; + } + + try { + const [membersData, projectsData, teamData] = await Promise.all([ + getUsersByTeamId(teamId), + getProjectsByTeam(teamId), + getTeamById(teamId) + ]); + + setTeamMembers(membersData); + setProjects(projectsData); + console.log("Team members with roles:", membersData); + console.log("Projects:", projectsData); + setTeamName(teamData.teamTitle); + } catch (error) { + console.error('Error fetching team data:', error); + setError('Failed to load team data. Please try again later.'); + } + } + + fetchTeamData() + }, [teamId]) + + const filteredMembers = teamMembers.filter(member => + (member.fname.toLowerCase().includes(searchTerm.toLowerCase()) || + member.lname.toLowerCase().includes(searchTerm.toLowerCase()) || + (member.roles_in_project && member.roles_in_project.some(role => role.toLowerCase().includes(searchTerm.toLowerCase()))) || + (member.username && member.username.toLowerCase().includes(searchTerm.toLowerCase()))) + ) const memberPageCount = Math.ceil(filteredMembers.length / itemsPerPage) const currentMembers = filteredMembers.slice( @@ -30,7 +58,7 @@ export const TeamModal = ({ pod, onClose }) => { currentMemberPage * itemsPerPage ) - const filteredProjects = (pod.projects || []).filter(project => + const filteredProjects = projects.filter(project => project.name.toLowerCase().includes(projectSearchTerm.toLowerCase()) ) const projectPageCount = Math.ceil(filteredProjects.length / itemsPerPage) @@ -45,16 +73,32 @@ export const TeamModal = ({ pod, onClose }) => { setProjectSearchTerm('') } + if (error) { + return ( +
+
+
+

Error

+ +
+
+

{error}

+
+
+
+ ) + } + return (
-

{pod.name}

- × +

{teamName}

+
- { setActiveView('members') @@ -62,8 +106,8 @@ export const TeamModal = ({ pod, onClose }) => { }} > Team - - +
{activeView === 'members' ? ( <> -
-
- - setSearchTerm(e.target.value)} - className="searchInput1" - /> -
- - setSkillFilter(e.target.value)} - className="searchInput1" - /> -
+ + setSearchTerm(e.target.value)} + className="searchInput1" + /> +
{currentMembers.map((member) => ( - + ))}
- setCurrentMemberPage(prev => Math.max(prev - 1, 1))} disabled={currentMemberPage === 1} > Previous - + {currentMemberPage} of {memberPageCount} - setCurrentMemberPage(prev => Math.min(prev + 1, memberPageCount))} disabled={currentMemberPage === memberPageCount} > Next - +
) : ( @@ -134,25 +167,25 @@ export const TeamModal = ({ pod, onClose }) => { />
-
+
{currentProjects.map((project) => ( - + ))}
- setCurrentProjectPage(prev => Math.max(prev - 1, 1))} disabled={currentProjectPage === 1} > Previous - + {currentProjectPage} of {projectPageCount} - setCurrentProjectPage(prev => Math.min(prev + 1, projectPageCount))} disabled={currentProjectPage === projectPageCount} > Next - +
)} @@ -160,4 +193,5 @@ export const TeamModal = ({ pod, onClose }) => {
) -} \ No newline at end of file +} + diff --git a/server/controllers/projectController.js b/server/controllers/projectController.js index 6bdca01..0df33b6 100644 --- a/server/controllers/projectController.js +++ b/server/controllers/projectController.js @@ -102,3 +102,21 @@ export const getProjectsByClient = async (req,res)=> } }; +export const getProjectByProjectId = async (req, res) => { + const { id } = req.params; // Destructure the project ID from the request parameters + try { + const project = await Project.findById(id) + .populate('client_id', 'name') // Populate related client details + .populate('team_id', 'name') // Populate team details + .populate('feature', 'name') // Populate features + .populate('techStack', 'name'); // Populate tech stack + + if (!project) { + return res.status(404).json({ message: 'Project not found' }); + } + + res.status(200).json(project); + } catch (error) { + res.status(500).json({ message: 'Server error. Could not fetch project.', error: error.message }); + } +}; diff --git a/server/controllers/projectTeamController.js b/server/controllers/projectTeamController.js index ddd3c33..38152cc 100644 --- a/server/controllers/projectTeamController.js +++ b/server/controllers/projectTeamController.js @@ -1,12 +1,51 @@ import ProjectTeam from '../models/projectTeamModel.js'; +import Project from '../models/Project.js'; export const getProjectTeamMembers = async (req, res) => { try { const { projectId } = req.params; - const teamMembers = await ProjectTeam.find({ project_id: projectId }).populate('user_id', 'fname lname'); + const teamMembers = await ProjectTeam.find({ project_id: projectId }).populate('user_id', 'fname lname status'); res.status(200).json(teamMembers); } catch (error) { res.status(500).json({ message: "Error fetching project team members", error }); } }; +export const getProjectTeamMembersByTeam = async (req, res) => { + try { + const { teamId } = req.params; + const teamMembers = await ProjectTeam.find({ team_id: teamId }).populate('user_id', 'fname lname status'); + res.status(200).json(teamMembers); + } catch (error) { + res.status(500).json({ message: "Error fetching project team members by team", error }); + } +}; + +export const getProjectsByTeamId = async (req, res) => { + try { + const { teamId } = req.params; + + // Fetch project IDs associated with the given team ID + const projectTeamEntries = await ProjectTeam.find({ team_id: teamId }); + const projectIds = projectTeamEntries.map(entry => entry.project_id); + + // Fetch project details based on the IDs + const projects = await Project.find({ _id: { $in: projectIds } }); + + res.status(200).json(projects); + } catch (error) { + console.error("Error fetching projects by team ID:", error); + res.status(500).json({ message: "Error fetching projects by team ID", error }); + } +}; + +// New function to get all project teams +export const getAllProjectTeams = async (req, res) => { + try { + const allProjectTeams = await ProjectTeam.find() + res.status(200).json(allProjectTeams); + } catch (error) { + console.error("Error fetching all project teams:", error); + res.status(500).json({ message: "Error fetching all project teams", error }); + } +}; diff --git a/server/routers/projectRoutes.js b/server/routers/projectRoutes.js index 98c8964..efcc8f8 100644 --- a/server/routers/projectRoutes.js +++ b/server/routers/projectRoutes.js @@ -7,11 +7,12 @@ import { updateProject, deleteProject, getProjectsByTeam, - getProjectsByClient, + getProjectsByClient,getProjectByProjectId } from "../controllers/projectController.js"; // Use `import` instead of `require` const projectrouter = express.Router(); +projectrouter.get('/project/:id', authenticateUser, getProjectByProjectId); projectrouter.get("/",authenticateUser, getAllProjects); projectrouter.get("/:id",authenticateUser, getProjectById); diff --git a/server/routers/projectTeamRouter.js b/server/routers/projectTeamRouter.js index 2326255..1e51baf 100644 --- a/server/routers/projectTeamRouter.js +++ b/server/routers/projectTeamRouter.js @@ -1,9 +1,13 @@ import express from 'express'; -import { getProjectTeamMembers } from '../controllers/projectTeamController.js'; +import { getProjectTeamMembers, getProjectTeamMembersByTeam, getProjectsByTeamId, getAllProjectTeams } from '../controllers/projectTeamController.js'; import authenticateUser from "../middlewares/login.js"; + const projectteamrouter = express.Router(); -projectteamrouter.get('/project/:projectId',authenticateUser, getProjectTeamMembers); +projectteamrouter.get('/project/:projectId', authenticateUser, getProjectTeamMembers); +projectteamrouter.get('/team/:teamId', authenticateUser, getProjectTeamMembersByTeam); +projectteamrouter.get('/projects/team/:teamId', authenticateUser, getProjectsByTeamId); +projectteamrouter.get('/all', authenticateUser, getAllProjectTeams); // New route to get all project teams -export default projectteamrouter; +export default projectteamrouter; \ No newline at end of file From 64b94ae005d9b534513972aca8bf67565c912fc2 Mon Sep 17 00:00:00 2001 From: Vivek Paste Date: Mon, 16 Dec 2024 12:11:10 +0530 Subject: [PATCH 16/42] made changes to the home page add filter and sort --- client/src/App.js | 2 + client/src/Pages/Form/index.js | 13 + client/src/Pages/index.js | 4 +- client/src/api/projectApi.js | 46 +-- client/src/component/ContentPage/index.jsx | 252 +++++++++++----- client/src/component/ContentPage/styles.css | 27 +- client/src/component/HeroBanner/index.js | 2 +- client/src/component/HeroBanner/style.css | 35 ++- client/src/component/NewNavbar/index.js | 2 +- client/src/component/ProjectCard/index.jsx | 13 +- .../src/component/ProjectForm/ProjectForm.css | 115 +++++++ client/src/component/ProjectForm/index.jsx | 285 ++++++++++++++++++ client/src/component/Projects/index.js | 19 +- client/src/component/Projects/style.css | 2 +- client/src/component/index.js | 3 +- server/controllers/projectController.js | 35 ++- server/routers/projectRoutes.js | 1 - 17 files changed, 701 insertions(+), 155 deletions(-) create mode 100644 client/src/Pages/Form/index.js create mode 100644 client/src/component/ProjectForm/ProjectForm.css create mode 100644 client/src/component/ProjectForm/index.jsx diff --git a/client/src/App.js b/client/src/App.js index e2a5218..41d02c4 100644 --- a/client/src/App.js +++ b/client/src/App.js @@ -19,6 +19,7 @@ import { AssistantsChatPage, ChatPage, AssistantFileDownloadPage, + Form } from "./Pages"; import PortfolioHome from "./Pages/PortfolioHome"; @@ -60,6 +61,7 @@ function App() { } /> } /> } /> + }> } /> {/* For connecting workboard */} } /> diff --git a/client/src/Pages/Form/index.js b/client/src/Pages/Form/index.js new file mode 100644 index 0000000..c5fe5cb --- /dev/null +++ b/client/src/Pages/Form/index.js @@ -0,0 +1,13 @@ +import React from 'react'; +import ProjectForm from '../../component/ProjectForm'; + + +const Form = () => { + return ( +
+ +
+ ); + }; + + export default Form; \ No newline at end of file diff --git a/client/src/Pages/index.js b/client/src/Pages/index.js index 6eb0e3f..dc0506d 100644 --- a/client/src/Pages/index.js +++ b/client/src/Pages/index.js @@ -19,6 +19,7 @@ import ChatPage from "./ChatPage"; import AssistantsChatPage from "./AssistantsChatPage"; import AssistantFileDownloadPage from "./AssistantFileDownload"; import PortfolioHome from "./PortfolioHome"; +import Form from "./Form"; export { LoginForm, PageNotFound, @@ -38,5 +39,6 @@ export { ChatPage, AssistantsChatPage, AssistantFileDownloadPage, - PortfolioHome + PortfolioHome, + Form }; diff --git a/client/src/api/projectApi.js b/client/src/api/projectApi.js index 982e43d..3e80b48 100644 --- a/client/src/api/projectApi.js +++ b/client/src/api/projectApi.js @@ -1,9 +1,8 @@ import { axiosSecureInstance } from "./axios"; -// Fetch all projects -export const getAllProjects = async () => { +export const getAllProjects = async (sortBy='') => { try { - const response = await axiosSecureInstance.get('/api/projects'); + const response = await axiosSecureInstance.get('/api/projects',{params:{sortBy},}); return response.data; } catch (error) { console.error('Error fetching projects:', error); @@ -21,7 +20,6 @@ export const getProjectById = async (id) => { throw error; } }; - // Create a new project export const createProject = async (projectData) => { try { @@ -32,7 +30,6 @@ export const createProject = async (projectData) => { throw error; } }; - // Update an existing project export const updateProject = async (id, projectData) => { try { @@ -43,7 +40,6 @@ export const updateProject = async (id, projectData) => { throw error; } }; - // Delete a project export const deleteProject = async (id) => { try { @@ -54,7 +50,6 @@ export const deleteProject = async (id) => { throw error; } }; - // Fetch client information export const getClientInfo = async (clientId) => { try { @@ -66,7 +61,6 @@ export const getClientInfo = async (clientId) => { throw error; } }; - // Fetch all projects for a specific client export const getClientProjects = async (clientId) => { try { @@ -77,8 +71,6 @@ export const getClientProjects = async (clientId) => { throw error; } }; - - // Fetch total revenue and benefits for a client export const getAllRevenueData = async () => { try { @@ -89,7 +81,6 @@ export const getAllRevenueData = async () => { throw error; } }; - export const getTechStackById = async (id) => { try { console.log('Fetching tech stack for ID:', id); @@ -109,10 +100,6 @@ export const getTechStackById = async (id) => { throw error; } }; - - - - // Handle API error details export const getTeamById = async (id) => { try { @@ -124,8 +111,6 @@ export const getTeamById = async (id) => { throw error; } }; - - export const getProjectTeamMembers = async (projectId) => { try { const response = await axiosSecureInstance.get(`/api/project-team/project/${projectId}`); @@ -135,7 +120,6 @@ export const getProjectTeamMembers = async (projectId) => { throw error; } }; - export const getAllTeams = async () => { try { const response = await axiosSecureInstance.get('/api/teams'); @@ -145,7 +129,6 @@ export const getAllTeams = async () => { throw error; } }; - export const getTeamMembers = async (teamId) => { try { const response = await axiosSecureInstance.get(`/api/teams/${teamId}/members`); @@ -155,7 +138,6 @@ export const getTeamMembers = async (teamId) => { throw error; } } - export const getProjectTeamMembersByTeam = async (teamId) => { try { console.log('Fetching project team members for team:', teamId); @@ -172,7 +154,6 @@ export const getProjectTeamMembersByTeam = async (teamId) => { throw error; } }; - export const getAllUsers = async () => { try { console.log('Fetching all users'); @@ -188,7 +169,6 @@ export const getAllUsers = async () => { throw error; } }; - export const getUsersByTeamId = async (teamId) => { try { console.log('Fetching users for team:', teamId); @@ -196,22 +176,17 @@ export const getUsersByTeamId = async (teamId) => { getAllUsers(), getAllProjectTeams() ]); - const allUsers = usersResponse.user; const allProjectTeams = projectTeamsResponse; - if (!Array.isArray(allUsers)) { throw new TypeError('Expected allUsers to be an array'); } - const teamUsers = allUsers.filter(user => user.teamId === teamId); - const usersWithRoles = teamUsers.map(user => { const userProjects = allProjectTeams.filter(pt => pt.user_id === user._id && pt.team_id === teamId); const roles = userProjects.map(up => up.role_in_project); return { ...user, roles_in_project: roles }; }); - console.log('Filtered team users with roles:', usersWithRoles); return usersWithRoles; } catch (error) { @@ -219,8 +194,6 @@ export const getUsersByTeamId = async (teamId) => { throw error; } }; - - export const fetchProjectById = async (projectId) => { try { const response = await axiosSecureInstance.get(`/api/projects/project/${projectId}`); @@ -231,9 +204,6 @@ export const fetchProjectById = async (projectId) => { return null; // Return null to handle potential issues gracefully } }; - - - export const getAllProjectTeams = async () => { try { console.log('Fetching all project teams'); @@ -245,33 +215,25 @@ export const getAllProjectTeams = async () => { throw error; } }; - export const getProjectsByTeam = async (teamId) => { try { console.log('Fetching projects for team:', teamId); - const allProjectTeams = await getAllProjectTeams(); const teamProjects = allProjectTeams.filter(pt => pt.team_id === teamId); console.log('Filtered team projects:', teamProjects); - if (teamProjects.length === 0) { console.log('No projects found for this team'); return []; } - const projectIds = teamProjects.map(tp => tp.project_id); console.log('Project IDs:', projectIds); - const projectPromises = projectIds.map(id => fetchProjectById(id)); const projects = await Promise.all(projectPromises); - const validProjects = projects.filter(project => project !== null); - // Remove duplicates by project id const uniqueProjects = Array.from( new Map(validProjects.map(project => [project.id, project])).values() ); - console.log('Unique projects:', uniqueProjects); return uniqueProjects; } catch (error) { @@ -279,8 +241,6 @@ export const getProjectsByTeam = async (teamId) => { throw error; } }; - - const handleApiError = (error) => { if (error.response) { // The request was made and the server responded with a status code that falls out of the range of 2xx @@ -294,4 +254,4 @@ const handleApiError = (error) => { // Something happened in setting up the request that triggered an Error console.error('Error setting up request:', error.message); } -}; +}; \ No newline at end of file diff --git a/client/src/component/ContentPage/index.jsx b/client/src/component/ContentPage/index.jsx index 48cb8a3..50ec5ca 100644 --- a/client/src/component/ContentPage/index.jsx +++ b/client/src/component/ContentPage/index.jsx @@ -1,37 +1,38 @@ import React, { useState, useEffect } from 'react'; -import "./styles.css" +import axios from 'axios'; // Import axios +import "./styles.css"; import Projects from '../Projects'; -import projectsData from '../data/projects.json'; import Pagination from 'react-bootstrap/Pagination'; // Import Pagination +import { getAllProjects } from '../../api/projectApi'; -export default function ContentPage() -{ +export default function ContentPage() { const [isListView, setIsListView] = useState(false); const [searchTerm, setSearchTerm] = useState(''); const [isModalOpen, setIsModalOpen] = useState(false); const [selectedTags, setSelectedTags] = useState([]); - const [activePage, setActivePage] = useState(1); + const [activePage, setActivePage] = useState(1); + const [isSortModalOpen, setIsSortModalOpen] = useState(false); + const [sortBy, setSortBy] = useState(''); + const [fetchedProjects, setFetchedProjects] = useState([]); + const [allTags, setAllTags] = useState([]); + const [projectsPerPage, setProjectsPerPage] = useState(6); + const [items, setItems] = useState([]); + const [totalPages, setTotalPages] = useState(0); + const handleSearchChange = (e) => { setSearchTerm(e.target.value); }; const toggleTag = (tag) => { - setSelectedTags(prevTags => - prevTags.includes(tag) - ? prevTags.filter(t => t !== tag) - : [...prevTags, tag] - ); + setSelectedTags((prevTags) => { + const newTags = prevTags.includes(tag) + ? prevTags.filter((t) => t !== tag) + : [...prevTags, tag]; + console.log("Selected tags:", newTags); + return newTags; + }); }; - // Extract unique tags from existing projects - const allTags = [...new Set(projectsData.projects.flatMap(project => project.tags || []))]; - - // Calculate total pages based on projects data - - const [items, setItems] = useState([]); // State to hold pagination items - const [projectsPerPage, setProjectsPerPage] = useState(6); // State to hold projects per page - const [totalPages, setTotalPages] = useState(0); // State to hold total pages - useEffect(() => { const handleResize = () => { const newProjectsPerPage = window.innerWidth < 1017 ? 6 : 6; @@ -40,93 +41,188 @@ export default function ContentPage() window.addEventListener('resize', handleResize); - // Calculate total pages based on initial screen size - const initialTotalPages = Math.ceil(projectsData.projects.length / projectsPerPage); - setTotalPages(initialTotalPages); - - // Generate pagination items - const generateItems = () => { - const newItems = []; - for (let number = 1; number <= initialTotalPages; number++) { - newItems.push( - setActivePage(number)}> - {number} - , - ); + return () => window.removeEventListener('resize', handleResize); + }, []); + + useEffect(() => { + const fetchData = async () => { + try { + const response = await getAllProjects(sortBy); + console.log('response', response); + setFetchedProjects(response); + + const uniqueTechStackTags = [...new Set(response.flatMap((project) => project.techStack || []))]; + const uniqueClientTags = [...new Set(response.flatMap((project) => project.client_id || []))]; + const uniqueTeamsTags = [...new Set(response.flatMap((project) => project.team_id || []))]; + console.log("teams", uniqueTeamsTags); + const uniqueFeaturesTags = [...new Set(response.flatMap((project) => project.feature || []))]; + setAllTags({ + techStack: uniqueTechStackTags, + client: uniqueClientTags, + teams: uniqueTeamsTags, + features: uniqueFeaturesTags + }); + + const initialTotalPages = Math.ceil(response.length / projectsPerPage); + setTotalPages(initialTotalPages); + + const generateItems = () => { + const newItems = []; + for (let number = 1; number <= initialTotalPages; number++) { + newItems.push( + setActivePage(number)}> + {number} + + ); + } + setItems(newItems); + }; + + generateItems(); + } catch (error) { + console.error('Error fetching projects:', error); } - setItems(newItems); }; - generateItems(); + fetchData(); + }, [activePage, projectsPerPage, sortBy]); - return () => window.removeEventListener('resize', handleResize); - }, [activePage, projectsPerPage]); + // Filter projects + const filteredProjects = fetchedProjects.filter((project) => { + const matches = + selectedTags.length === 0 || + project.techStack.some((tag) => selectedTags.includes(tag)) || + project.feature.some((res) => selectedTags.includes(res)) || + selectedTags.includes(project.team_id) || + selectedTags.includes(project.client_id); + + return matches; + }); - // Calculate the projects to display for the current page + // Pagination logic const startIndex = (activePage - 1) * projectsPerPage; - const currentProjects = projectsData.projects.slice(startIndex, startIndex + projectsPerPage); + const currentProjects = filteredProjects.slice(startIndex, startIndex + projectsPerPage); + console.log("Current - ", currentProjects); return (
- -
-
+
+

Portfolio

-
- {/* Search Input */} - - Sort - setIsModalOpen(true)}>Filter - +
+ {/* Search Input */} +
+ +
+ +
+ {/* Sort Button */} + + + {/* Dropdown Menu */} + {isSortModalOpen && ( +
+
    + {['default', 'budget', 'recent'].map((option) => ( +
  • { + setSortBy(option); // Update sorting criteria + setIsSortModalOpen(false); // Close modal + }} + onMouseEnter={(e) => (e.target.style.backgroundColor = '#444')} + onMouseLeave={(e) => (e.target.style.backgroundColor = 'transparent')} + > + {option.charAt(0).toUpperCase() + option.slice(1)} +
  • + ))} +
+
+ )} +
+ + setIsModalOpen(true)}> + Filter +
{/* Filter Modal */} {isModalOpen && ( -
+
setIsModalOpen(false)}>×

Filter Projects

-
+
Select Tags:
- {allTags.map(tag => ( - - ))} +
+ {Object.entries(allTags).map(([category, tags]) => ( +
+
{category.charAt(0).toUpperCase() + category.slice(1)}
+ {tags.map((tag) => ( + + ))} +
+ ))} +
)} - {items} {/* Render pagination here */}
); -} \ No newline at end of file +} diff --git a/client/src/component/ContentPage/styles.css b/client/src/component/ContentPage/styles.css index 6ff3a0a..bfe1954 100644 --- a/client/src/component/ContentPage/styles.css +++ b/client/src/component/ContentPage/styles.css @@ -1,6 +1,6 @@ .container{ height : 100%; - padding:35px 0; + margin: 0 0; width:100%; @@ -12,11 +12,16 @@ .panel{ display:flex; - gap:3rem; + justify-content: space-between; align-items: center; - margin-bottom: 20px; + +} + +.title +{ + margin-bottom: 0px !important; } .filterbar @@ -51,6 +56,13 @@ a{ width: 0; height: 0; } + + .dropdown + { + border-radius: 16px; + background-color: #070707; + list-style-type:none; + } /* The slider */ .slider { @@ -64,6 +76,7 @@ a{ -webkit-transition: .4s; transition: .4s; } + .slider:before { position: absolute; @@ -167,6 +180,14 @@ button:hover { background: rgba(255, 255, 255, 0.1) !important; } +@media (max-width: 991px) +{ + .filterbar + { + gap:0px; + } +} + @media (max-width: 786px) { .filterbar input diff --git a/client/src/component/HeroBanner/index.js b/client/src/component/HeroBanner/index.js index 02b9a58..fac4e86 100644 --- a/client/src/component/HeroBanner/index.js +++ b/client/src/component/HeroBanner/index.js @@ -31,7 +31,7 @@ export default function HeroBanner() { placeholder="Search..." value={searchTerm} onChange={(e) => setSearchTerm(e.target.value)} - style={{ borderRadius: "8px", height: "56px", width: "700px", fontSize: "1.5rem",paddingInline:"30px",background:"transparent",border:"1px #86858b solid" }} // Increased size + style={{ borderRadius: "8px", height: "56px", fontSize: "1.5rem",paddingInline:"30px",background:"transparent",border:"1px #86858b solid" }} // Increased size />
diff --git a/client/src/component/HeroBanner/style.css b/client/src/component/HeroBanner/style.css index 04fc729..3deddf8 100644 --- a/client/src/component/HeroBanner/style.css +++ b/client/src/component/HeroBanner/style.css @@ -14,7 +14,7 @@ align-items: center; width: 100%; max-width: 1350px; - gap: 4rem; + gap: 3rem; position: relative; } @@ -82,9 +82,9 @@ .oval-background { - width: 500px; - height: 500px; - background-color:rgb(56, 51, 83); + width: 300px; + height: 300px; + background-color:rgb(73, 68, 105); background-size: 100% 100%; background-repeat: no-repeat; border-radius: 50%; @@ -95,6 +95,26 @@ .search-bar input{ width: 700px; } + + .search + { + width:700px; + } + + @media (max-width: 1024px) +{ + .search-bar .search + { + width:500px !important; + } +} + +@media (max-width: 606px) { + .search-bar .search + { + width:300px !important; + } +} @media (max-width: 768px) { .carousel-slide { @@ -120,6 +140,13 @@ } +@media (max-width: 400px) +{ + #typing { + font-size: 2rem; + } +} + @keyframes blink { from, to { background-color: transparent; diff --git a/client/src/component/NewNavbar/index.js b/client/src/component/NewNavbar/index.js index add16b2..63e39dd 100644 --- a/client/src/component/NewNavbar/index.js +++ b/client/src/component/NewNavbar/index.js @@ -10,7 +10,7 @@ const NewNavbar = () => {
Home
-
Tab 2
+
Collab AI
diff --git a/client/src/component/ProjectCard/index.jsx b/client/src/component/ProjectCard/index.jsx index 7823b9c..565f150 100644 --- a/client/src/component/ProjectCard/index.jsx +++ b/client/src/component/ProjectCard/index.jsx @@ -4,18 +4,19 @@ import './style.css'; const ProjectCard = ({ project, viewType = 'card' }) => { return (
- {project.title} + {project.name}
-

{project.title}

+

{project.name}

+

{project.client_id.name}

{project.description}

- {project.technologies.map((tech, index) => ( - {tech} + {project.techStack.map((tech, index) => ( + {tech.name} ))}
diff --git a/client/src/component/ProjectForm/ProjectForm.css b/client/src/component/ProjectForm/ProjectForm.css new file mode 100644 index 0000000..343f8c4 --- /dev/null +++ b/client/src/component/ProjectForm/ProjectForm.css @@ -0,0 +1,115 @@ +.project-form { + max-width: 600px; + margin: 0 auto; + padding: 20px; + border: 1px solid #ccc; + border-radius: 8px; + background-color: #f9f9f9; + box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); +} + +.project-form-title { + text-align: center; + color: #333; + margin-bottom: 20px; +} + +.form-group { + margin-bottom: 15px; +} + +.form-label { + display: block; + margin-bottom: 5px; + font-weight: bold; +} + +.form-input, +.form-textarea { + width: 100%; + padding: 10px; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; +} + +.form-input:focus, +.form-textarea:focus { + border-color: #007bff; + outline: none; +} + +.form-submit-btn { + width: 100%; + padding: 10px; + background-color: #007bff; + color: white; + border: none; + border-radius: 4px; + cursor: pointer; + transition: background-color 0.3s ease; +} + +.form-submit-btn:hover { + background-color: #0056b3; +} + +/* Dropdown Styles */ +.dropdown-check-list { + position: relative; + display: inline-block; + width: 100%; + cursor: pointer; +} + +.dropdown-anchor { + padding: 10px; + border: 1px solid #ccc; + border-radius: 4px; + background-color: #f9f9f9; + display: flex; + justify-content: space-between; + align-items: center; +} + +.dropdown-items { + display: none; + position: absolute; + background-color: white; + border: 1px solid #ccc; + border-radius: 4px; + z-index: 1000; + max-height: 200px; + overflow-y: auto; + width: 100%; + list-style-type: none; + padding: 0; + margin: 0; +} + +.dropdown-check-list:hover .dropdown-items, +.dropdown-items.show { + display: block; +} + +.dropdown-item { + padding: 8px 12px; + cursor: pointer; + display: flex; + align-items: center; +} + +.dropdown-item:hover { + background-color: #f0f0f0; +} + +.dropdown-checkbox { + margin-right: 10px; +} + +/* Specific Dropdown Variations */ +.client-dropdown, +.features-dropdown, +.tech-stack-dropdown { + margin-bottom: 15px; +} \ No newline at end of file diff --git a/client/src/component/ProjectForm/index.jsx b/client/src/component/ProjectForm/index.jsx new file mode 100644 index 0000000..8264a75 --- /dev/null +++ b/client/src/component/ProjectForm/index.jsx @@ -0,0 +1,285 @@ +import React, { useState, useEffect, useRef } from 'react'; +import axios from 'axios'; +import './ProjectForm.css'; // Import the CSS file + +const ProjectForm = () => { + const [formData, setFormData] = useState({ + name: '', + description: '', + status: '', + start_time: '', + end_time: '', + budget: '', + hr_taken: '', + client_id: '', + techStack: [], + links: { + links: '', + github: '', + }, + image_link: '', + team_id: '', + feature: [], + }); + + const [features, setFeatures] = useState([]); // State for features + const [clients, setClients] = useState([]); // State for clients + const [selectedClients, setSelectedClients] = useState([]); // State for selected clients + const [isDropdownVisible, setIsDropdownVisible] = useState(false); + + const featuresRef = useRef(); // Ref for features dropdown + const techStackRef = useRef(); // Ref for tech stack dropdown + + const handleClickOutside = (event) => { + if (featuresRef.current && !featuresRef.current.contains(event.target)) { + setIsFeaturesDropdownVisible(false); + } + if (techStackRef.current && !techStackRef.current.contains(event.target)) { + setIsTechStackDropdownVisible(false); + } + if (isDropdownVisible && !event.target.closest('.dropdown-check-list')) { + setIsDropdownVisible(false); + } + }; + + useEffect(() => { + document.addEventListener('mousedown', handleClickOutside); + return () => { + document.removeEventListener('mousedown', handleClickOutside); + }; + }, []); + + const [isFeaturesDropdownVisible, setIsFeaturesDropdownVisible] = useState(false); + const [isTechStackDropdownVisible, setIsTechStackDropdownVisible] = useState(false); + + const toggleFeaturesDropdown = () => { + setIsFeaturesDropdownVisible(!isFeaturesDropdownVisible); + }; + + const toggleTechStackDropdown = () => { + setIsTechStackDropdownVisible(!isTechStackDropdownVisible); + }; + + const handleFeatureSelect = (featureId) => { + setFormData((prevData) => ({ + ...prevData, + feature: prevData.feature.includes(featureId) + ? prevData.feature.filter(id => id !== featureId) + : [...prevData.feature, featureId], + })); + }; + + const handleTechStackSelect = (techId) => { + setFormData((prevData) => ({ + ...prevData, + techStack: prevData.techStack.includes(techId) + ? prevData.techStack.filter(id => id !== techId) + : [...prevData.techStack, techId], + })); + }; + + const handleClientSelect = (clientId) => { + setSelectedClients((prevSelected) => { + if (prevSelected.includes(clientId)) { + return prevSelected.filter(id => id !== clientId); // Remove if already selected + } else { + return [...prevSelected, clientId]; // Add if not selected + } + }); + }; + + useEffect(() => { + const fetchData = async () => { + try { + const featuresResponse = await axios.get('http://localhost:4000/api/features'); + console.log(featuresResponse.data); + const clientsResponse = await axios.get('http://localhost:4000/api/clients'); + console.log(clientsResponse); + const techStackResponse = await axios.get('http://localhost:4000/api/techStacks'); + console.log(techStackResponse); + const teamsResponse= await axios.get('http://localhost:4000/api/teams'); + + setFeatures(featuresResponse.data || []); + setClients(clientsResponse.data || []); + setFormData((prevData) => ({ + ...prevData, + techStack: techStackResponse.data || [], + })); + } catch (error) { + console.error('Error fetching data:', error); + } + }; + + fetchData(); + }, []); + + const handleChange = (e) => { + const { name, value } = e.target; + setFormData((prevData) => ({ + ...prevData, + [name]: value, + })); + }; + + const handleSubmit = async (e) => { + e.preventDefault(); + try { + const response = await axios.post('/api/projects', formData); + console.log('Project created:', response.data); + } catch (error) { + console.error('Error creating project:', error); + } + }; + + return ( +
+

Create Project

+
+ + +
+
+ +