import React, { ReactElement, useEffect } from 'react'; import Head from 'next/head' import DatePicker from "react-datepicker"; import "react-datepicker/dist/react-datepicker.css"; import dayjs from "dayjs"; import {useAppDispatch, useAppSelector} from "../../stores/hooks"; import {useRouter} from "next/router"; import { fetch } from '../../stores/projects/projectsSlice' import {saveFile} from "../../helpers/fileSaver"; import dataFormatter from '../../helpers/dataFormatter'; import ImageField from "../../components/ImageField"; import LayoutAuthenticated from "../../layouts/Authenticated"; import {getPageTitle} from "../../config"; import SectionTitleLineWithButton from "../../components/SectionTitleLineWithButton"; import SectionMain from "../../components/SectionMain"; import CardBox from "../../components/CardBox"; import BaseButton from "../../components/BaseButton"; import BaseDivider from "../../components/BaseDivider"; import {mdiChartTimelineVariant} from "@mdi/js"; import {SwitchField} from "../../components/SwitchField"; import FormField from "../../components/FormField"; import {hasPermission} from "../../helpers/userPermissions"; const ProjectsView = () => { const router = useRouter() const dispatch = useAppDispatch() const { projects } = useAppSelector((state) => state.projects) const { currentUser } = useAppSelector((state) => state.auth); const { id } = router.query; function removeLastCharacter(str) { console.log(str,`str`) return str.slice(0, -1); } useEffect(() => { dispatch(fetch({ id })); }, [dispatch, id]); return ( <>
Company
{projects?.company?.name ?? 'No data'}
Customer
{projects?.customer?.name ?? 'No data'}
Site
{projects?.site?.label ?? 'No data'}
Assignedto
{projects?.assigned_to?.firstName ?? 'No data'}
Projectnumber
{projects?.project_number}
Title
{projects?.title}
Stage
{projects?.stage ?? 'No data'}
Priority
{projects?.priority ?? 'No data'}
No Requestedat
}No Targetinstallationfrom
}No Targetinstallationto
}organizations
{projects?.organizations?.name ?? 'No data'}
Site_visits Project
| Status | Scheduledstart | Scheduledend | Check-inat | Check-outat | Notes |
|---|---|---|---|---|---|
| { item.status } | { dataFormatter.dateTimeFormatter(item.scheduled_start) } | { dataFormatter.dateTimeFormatter(item.scheduled_end) } | { dataFormatter.dateTimeFormatter(item.check_in_at) } | { dataFormatter.dateTimeFormatter(item.check_out_at) } | { item.notes } |
Photo_inspections Project
| Capturedat | Caption | Manualnotes | AIstatus | AIconfidence | AIsummary |
|---|---|---|---|---|---|
| { dataFormatter.dateTimeFormatter(item.captured_at) } | { item.caption } | { item.manual_notes } | { item.ai_status } | { item.ai_confidence } | { item.ai_summary } |
Quotes Project
| Quotenumber | Status | Issuedat | Validuntil | Subtotal | Taxtotal | Total | Paymentterms | Requiressignature |
|---|---|---|---|---|---|---|---|---|
| { item.quote_number } | { item.status } | { dataFormatter.dateTimeFormatter(item.issued_at) } | { dataFormatter.dateTimeFormatter(item.valid_until) } | { item.subtotal } | { item.tax_total } | { item.total } | { item.payment_terms } | { dataFormatter.booleanFormatter(item.requires_signature) } |
Material_lists Project
| Status | Neededby | Notes |
|---|---|---|
| { item.status } | { dataFormatter.dateTimeFormatter(item.needed_by) } | { item.notes } |
Tasks Project
| Title | Status | Tasktype | Dueat | Completedat | Notes |
|---|---|---|---|---|---|
| { item.title } | { item.status } | { item.task_type } | { dataFormatter.dateTimeFormatter(item.due_at) } | { dataFormatter.dateTimeFormatter(item.completed_at) } | { item.notes } |