diff --git a/.firebase/hosting.ZGlzdA.cache b/.firebase/hosting.ZGlzdA.cache index 0208e30..1534c58 100644 --- a/.firebase/hosting.ZGlzdA.cache +++ b/.firebase/hosting.ZGlzdA.cache @@ -1,7 +1,7 @@ -index.html,1762681628251,a970132447df9f40306fd9ab7c26121bae50f9d089d6e4ac5fe1037c982c80b2 -favicon.png,1762681627948,21c10e7d774c2af5bdad60825fdb3315257a4172632b0ea8a0a9b1c1542af5ea -assets/index-CjMZ_o8-.css,1762681628251,0239ac4887bc92bd8e7160b8def7f504ef5281a1ec154d8aacda9c625faa299b -assets/GeistMono-Regular-CxeQQu7Q.ttf,1762681628251,f9e3bf233cc2d8aad298b2719f86a629e19d7a4522d6541d8070ddc3706ad3a1 -assets/Geist-Regular-DL43NNto.ttf,1762681628251,0f8ba2660df01b39b4f578364399e2679805de1a889a76b1c1c9c8f8e0e146aa -assets/index-Brd4s4nx.js,1762681628251,b063dbfa1a850d5cd0a008a9059af3a422519047e3daeef8bbfe13344747d8d5 -shapes.jpg,1762681627950,7c28b5d9022ea4b768345e855a78a2f087f66218ea9abe4d77c010e2ca2c6f3a +index.html,1762760967872,55003a935ffc76622bc029f649d1b9501006077e8a38df1d8cd77a72b4fef831 +favicon.png,1762760967602,21c10e7d774c2af5bdad60825fdb3315257a4172632b0ea8a0a9b1c1542af5ea +assets/GeistMono-Regular-CxeQQu7Q.ttf,1762760967871,f9e3bf233cc2d8aad298b2719f86a629e19d7a4522d6541d8070ddc3706ad3a1 +assets/index-C_klMgd4.css,1762760967871,c1dd671b0ec2319330e08bdbc2516a96cfff3410a94d556252515ccdc5c68785 +assets/Geist-Regular-DL43NNto.ttf,1762760967872,0f8ba2660df01b39b4f578364399e2679805de1a889a76b1c1c9c8f8e0e146aa +assets/index-CMbW4cv1.js,1762760967872,c73eca80b815ad0faea14af3205ecd1857e8ef7944b9ae69191a219b6fb9e458 +shapes.jpg,1762760967604,7c28b5d9022ea4b768345e855a78a2f087f66218ea9abe4d77c010e2ca2c6f3a diff --git a/src/components/SampleData.ts b/src/components/SampleData.ts index d07ac25..2bf1896 100644 --- a/src/components/SampleData.ts +++ b/src/components/SampleData.ts @@ -1,75 +1,9 @@ -export interface ProjectDeliverable { - id: string; - name: string; - status: "Not Started" | "In Progress" | "Completed"; - description: string; -} - -export interface ProjectAssessment { - sprintPlanning: { - rating: "Low" | "Medium" | "High"; - description: string; - }; - userStoryValidation: { - rating: "Low" | "Medium" | "High"; - description: string; - }; - testPracticeValidation: { - rating: "Low" | "Medium" | "High"; - description: string; - }; -} - -export interface ProjectIssue { - id: string; - description: string; - impact: "High" | "Medium" | "Low"; - likelihood: "High" | "Medium" | "Low"; - riskRating: number; - dateRaised: string; - recommendation: string; - status: "Open" | "Closed"; -} - -export interface ProjectReport { - id: string; - projectId: string; - month: string; - date: string; - background: string; - assessment: ProjectAssessment; - issues: ProjectIssue[]; - scheduleStatus: { - baselineEndDate: string; - currentEndDate: string; - }; - financials: { - originalAmount: number; - paidToDate: number; - }; - scopeStatus: { - completedDeliverables: number; - totalDeliverables: number; - deliverables: ProjectDeliverable[]; - }; -} - -export interface ProjectData { - id: string; - name: string; - status: "On Track" | "At Risk" | "Critical"; - statusColor: string; - metric1: string; - metric2: string; - description: string; - department: string; - startDate: string; - budget: number; - spent: number; - vendor: string; - vendorId?: string; - reports: ProjectReport[]; -} +export { + ProjectData, + ProjectReport, + ProjectAssessment, + ProjectIssue, +} from "../types/projectTypes"; export const sampleProjects: ProjectData[] = [ { diff --git a/src/pages/AllProjects.tsx b/src/pages/AllProjects.tsx index ae27452..3cc0b0d 100644 --- a/src/pages/AllProjects.tsx +++ b/src/pages/AllProjects.tsx @@ -1,6 +1,6 @@ import { useEffect, useState } from "react"; import ProjectCard from "../components/ProjectCard"; -import { ProjectData } from "../components/SampleData"; +import { ProjectData } from "../types/projectTypes"; import { fetchAllProjects } from "../services/firebaseDataService"; const AllProjects = () => { diff --git a/src/pages/ReportDetailPage.tsx b/src/pages/ReportDetailPage.tsx index 0b48331..51ab6b8 100644 --- a/src/pages/ReportDetailPage.tsx +++ b/src/pages/ReportDetailPage.tsx @@ -1,7 +1,12 @@ import React, { useEffect, useState } from "react"; import { useParams, Link } from "react-router-dom"; -import { ProjectData, ProjectReport } from "../components/SampleData"; +import { + ProjectData, + ProjectReport, + ProjectIssue, +} from "../components/SampleData"; import { sampleProjects } from "../components/SampleData"; +import { Deliverable } from "../types/projectTypes"; const ReportDetailPage: React.FC = () => { const { projectId, reportId } = useParams<{ @@ -214,7 +219,7 @@ const ReportDetailPage: React.FC = () => {
{report.issues && report.issues.length > 0 ? ( - report.issues.map((issue) => ( + report.issues.map((issue: ProjectIssue) => (
@@ -476,7 +481,7 @@ const ReportDetailPage: React.FC = () => {
- {report.scopeStatus.deliverables.map((deliverable) => ( + {report.scopeStatus.deliverables.map((deliverable: Deliverable) => (
{deliverable.name}
diff --git a/src/pages/vendor/VendorDashboard.tsx b/src/pages/vendor/VendorDashboard.tsx index 9ccf1d0..d2a1cf1 100644 --- a/src/pages/vendor/VendorDashboard.tsx +++ b/src/pages/vendor/VendorDashboard.tsx @@ -1,7 +1,7 @@ import { useEffect, useState } from "react"; import { useAuth } from "../../contexts/AuthContext"; import ProjectCard from "../../components/VendorProjectCard"; -import { ProjectData } from "../../components/SampleData"; +import { ProjectData } from "../../types/projectTypes"; import { fetchProjectsByVendor } from "../../services/firebaseDataService"; const VendorDashboard = () => { diff --git a/src/services/firebaseDataService.ts b/src/services/firebaseDataService.ts index 4d580a5..34343d2 100644 --- a/src/services/firebaseDataService.ts +++ b/src/services/firebaseDataService.ts @@ -9,13 +9,7 @@ import { Timestamp, } from "firebase/firestore"; import { db } from "./firebase-config"; -import type { - ProjectData, - ProjectReport, - ProjectIssue, - ProjectDeliverable, - ProjectAssessment, -} from "../components/sampleData"; // Adjust path as needed +import type { ProjectData, ProjectReport } from "../types/projectTypes"; // ============================================ // HELPER FUNCTIONS diff --git a/src/types/projectTypes.ts b/src/types/projectTypes.ts new file mode 100644 index 0000000..ffcfa0f --- /dev/null +++ b/src/types/projectTypes.ts @@ -0,0 +1,97 @@ +// --------------------------------------------- +// Project Status Type +// --------------------------------------------- +export type ProjectStatus = "On Track" | "At Risk" | "Critical"; + +// --------------------------------------------- +// Project Issue +// --------------------------------------------- +export interface ProjectIssue { + id: string; + description: string; + impact: "High" | "Medium" | "Low"; + likelihood: "High" | "Medium" | "Low"; + riskRating: number; + dateRaised: string; + recommendation: string; + status: "Open" | "Closed"; +} + +// --------------------------------------------- +// Project Assessment Section +// --------------------------------------------- +export interface AssessmentItem { + rating: "Low" | "Medium" | "High"; + description: string; +} + +export interface ProjectAssessment { + sprintPlanning: AssessmentItem; + userStoryValidation: AssessmentItem; + testPracticeValidation: AssessmentItem; +} + +// --------------------------------------------- +// Schedule & Financials +// --------------------------------------------- +export interface ScheduleStatus { + baselineEndDate: string; + currentEndDate: string; +} + +export interface Financials { + originalAmount: number; + paidToDate: number; +} + +// --------------------------------------------- +// Project Deliverables +// --------------------------------------------- +export interface Deliverable { + id: string; + name: string; + status: "Not Started" | "In Progress" | "Completed"; + description: string; +} + +export interface ScopeStatus { + completedDeliverables: number; + totalDeliverables: number; + deliverables: Deliverable[]; +} + +// --------------------------------------------- +// Project Report +// --------------------------------------------- +export interface ProjectReport { + id: string; + projectId: string; + month: string; + date: string; + background: string; + assessment: ProjectAssessment; + issues: ProjectIssue[]; + scheduleStatus: ScheduleStatus; + financials: Financials; + scopeStatus: ScopeStatus; +} + +// --------------------------------------------- +// Project Summary (main list + detail view) +// --------------------------------------------- +export interface ProjectData { + id: string; + name: string; + status: ProjectStatus; + statusColor: string; + metric1: string; + metric2: string; + description: string; + department: string; + startDate: string; + budget: number; + spent: number; + vendor: string; + vendorId?: string; + reports: ProjectReport[]; +}