Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 26 additions & 18 deletions frontend/src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,9 @@ import APRWorkspace from '@ors/app/annual-project-report/[year]/workspace/page.t
import APRMLFSWorkspace from '@ors/app/annual-project-report/[year]/mlfs/workspace/page.tsx'
import APREdit from '@ors/app/annual-project-report/[year]/edit/page.tsx'
import APRProvider from '@ors/contexts/AnnualProjectReport/APRProvider.tsx'
import AprRedirect from '@ors/components/manage/Blocks/AnnualProgressReport/AprRedirect.tsx'
import AprRedirect from '@ors/components/manage/Blocks/ProjectReport/AnnualProgressReport/AprRedirect.tsx'
import ConfirmationProvider from '@ors/contexts/ConfirmationProvider.tsx'
import PCRView from '@ors/app/project-completion-report/view/page.tsx'

function RedirectToSection() {
const { canEditReplenishment } = useContext(PermissionsContext)
Expand Down Expand Up @@ -441,23 +443,29 @@ export default function App() {
<ProjectsEditPage mode="partial-link" />
</ProjectsDataProvider>
</Route>
{/* APR routes */}
<Route path="/apr" nest>
<APRProvider>
<Route path="/">
<AprRedirect />
</Route>
<Route path="/:year/workspace">
<APRWorkspace />
</Route>
<Route path="/:year/edit">
<APREdit />
</Route>
<Route path="/:year/mlfs/workspace">
<APRMLFSWorkspace />
</Route>
</APRProvider>
</Route>
<ConfirmationProvider>
{/* APR routes */}
<Route path="/apr" nest>
<APRProvider>
<Route path="/">
<AprRedirect />
</Route>
<Route path="/:year/workspace">
<APRWorkspace />
</Route>
<Route path="/:year/edit">
<APREdit />
</Route>
<Route path="/:year/mlfs/workspace">
<APRMLFSWorkspace />
</Route>
</APRProvider>
</Route>
{/* PCR routes */}
<Route path="/pcr" nest>
<PCRView />
</Route>
</ConfirmationProvider>
<Route>
<NotFoundPage />
</Route>
Expand Down
15 changes: 7 additions & 8 deletions frontend/src/app/annual-project-report/[year]/edit/page.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import React, { useContext, useEffect, useRef, useState } from 'react'
import PageWrapper from '@ors/components/theme/PageWrapper/PageWrapper.tsx'
import BackLink from '@ors/components/manage/Blocks/AnnualProgressReport/BackLink.tsx'
import BackLink from '@ors/components/manage/Blocks/ProjectReport/BackLink.tsx'
import { useLocation, useParams } from 'wouter'
import { PageHeading } from '@ors/components/ui/Heading/Heading.tsx'
import { Alert, Box, Tab, Tabs } from '@mui/material'
Expand All @@ -9,10 +9,9 @@ import NotFoundPage from '@ors/app/not-found.tsx'
import PermissionsContext from '@ors/contexts/PermissionsContext.tsx'
import { useStore } from '@ors/store.tsx'
import cx from 'classnames'
import Loader from '@ors/components/manage/Blocks/AnnualProgressReport/Loader.tsx'
import useGetColumnDefs, {
dataTypeDefinitions,
} from '@ors/components/manage/Blocks/AnnualProgressReport/schema.tsx'
import Loader from '@ors/components/manage/Blocks/ProjectReport/Loader.tsx'
import useGetColumnDefs from '@ors/components/manage/Blocks/ProjectReport/AnnualProgressReport/schema.tsx'
import { dataTypeDefinitions } from '@ors/components/manage/Blocks/ProjectReport/dataTypes.ts'
import { AgGridReact } from 'ag-grid-react'
import Button from '@mui/material/Button'
import { api } from '@ors/helpers'
Expand All @@ -27,9 +26,9 @@ import {
AnnualAgencyProjectReport,
AnnualProjectReport,
} from '@ors/app/annual-project-report/types.ts'
import { useConfirmation } from '@ors/contexts/AnnualProjectReport/APRContext.tsx'
import { validateRows } from '@ors/components/manage/Blocks/AnnualProgressReport/validation.tsx'
import ValidationErrors from '@ors/components/manage/Blocks/AnnualProgressReport/ValidationErrors.tsx'
import { useConfirmation } from '@ors/contexts/ConfirmationContext.tsx'
import { validateRows } from '@ors/components/manage/Blocks/ProjectReport/AnnualProgressReport/validation.tsx'
import ValidationErrors from '@ors/components/manage/Blocks/ProjectReport/AnnualProgressReport/ValidationErrors.tsx'
import usePageTitle from '@ors/hooks/usePageTitle.ts'

const TABS = [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ import { IoInformationCircleOutline } from 'react-icons/io5'
import { api } from '@ors/helpers'
import cx from 'classnames'
import { AnnualProgressReport } from '@ors/app/annual-project-report/types.ts'
import { useConfirmation } from '@ors/contexts/AnnualProjectReport/APRContext.tsx'
import { useConfirmation } from '@ors/contexts/ConfirmationContext.tsx'
import dayjs from 'dayjs'
import { handleActionErrors } from '@ors/components/manage/Blocks/AnnualProgressReport/errors.ts'
import { handleActionErrors } from '@ors/components/manage/Blocks/ProjectReport/errors.ts'

const REMARKS_LIMIT = 400

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,14 @@ import NotFoundPage from '@ors/app/not-found'
import useApi from '@ors/hooks/useApi.ts'
import usePageTitle from '@ors/hooks/usePageTitle.ts'
import Field from '@ors/components/manage/Form/Field.tsx'
import Loader from '@ors/components/manage/Blocks/AnnualProgressReport/Loader.tsx'
import useGetColumnDefs, {
dataTypeDefinitions,
} from '@ors/components/manage/Blocks/AnnualProgressReport/schema.tsx'
import Loader from '@ors/components/manage/Blocks/ProjectReport/Loader.tsx'
import useGetColumnDefs from '@ors/components/manage/Blocks/ProjectReport/AnnualProgressReport/schema.tsx'
import { dataTypeDefinitions } from '@ors/components/manage/Blocks/ProjectReport/dataTypes.ts'
import { getFilterOptions } from '@ors/components/manage/Utils/utilFunctions.ts'
import {
INITIAL_PARAMS_MLFS,
MANDATORY_STATUSES,
} from '@ors/components/manage/Blocks/AnnualProgressReport/constants.ts'
} from '@ors/components/manage/Blocks/ProjectReport/AnnualProgressReport/constants.ts'
import { union } from 'lodash'
import { useStore } from '@ors/store.tsx'
import Tab from '@mui/material/Tab/Tab'
Expand All @@ -49,23 +48,21 @@ import {
FiTable,
FiUnlock,
} from 'react-icons/fi'
import { formatDate } from '@ors/components/manage/Blocks/AnnualProgressReport/utils.ts'
import {
useAPRCurrentYear,
useConfirmation,
} from '@ors/contexts/AnnualProjectReport/APRContext.tsx'
import { formatDate } from '@ors/components/manage/Blocks/ProjectReport/utils.ts'
import { useAPRCurrentYear } from '@ors/contexts/AnnualProjectReport/APRContext.tsx'
import { useConfirmation } from '@ors/contexts/ConfirmationContext.tsx'
import { enqueueSnackbar } from 'notistack'
import { api, formatApiUrl } from '@ors/helpers'
import EndorseAprModal from '@ors/app/annual-project-report/[year]/mlfs/workspace/EndorseAPRModal.tsx'
import StatusFilter from '@ors/components/manage/Blocks/AnnualProgressReport/StatusFilter.tsx'
import StatusFilter from '@ors/components/manage/Blocks/ProjectReport/AnnualProgressReport/StatusFilter.tsx'
import MlfsLink from '@ors/components/ui/Link/Link.tsx'
import EditTable from '@ors/components/manage/Form/EditTable.tsx'
import { AgGridReact } from 'ag-grid-react'
import BackLink from '@ors/components/manage/Blocks/AnnualProgressReport/BackLink.tsx'
import AprYearDropdown from '@ors/components/manage/Blocks/AnnualProgressReport/AprYearDropdown.tsx'
import { validateRows } from '@ors/components/manage/Blocks/AnnualProgressReport/validation.tsx'
import ValidationErrors from '@ors/components/manage/Blocks/AnnualProgressReport/ValidationErrors.tsx'
import { handleActionErrors } from '@ors/components/manage/Blocks/AnnualProgressReport/errors.ts'
import BackLink from '@ors/components/manage/Blocks/ProjectReport/BackLink.tsx'
import AprYearDropdown from '@ors/components/manage/Blocks/ProjectReport/AnnualProgressReport/AprYearDropdown.tsx'
import { validateRows } from '@ors/components/manage/Blocks/ProjectReport/AnnualProgressReport/validation.tsx'
import ValidationErrors from '@ors/components/manage/Blocks/ProjectReport/AnnualProgressReport/ValidationErrors.tsx'
import { handleActionErrors } from '@ors/components/manage/Blocks/ProjectReport/errors.ts'

export default function APRMLFSWorkspace() {
const [, navigate] = useLocation()
Expand Down
19 changes: 9 additions & 10 deletions frontend/src/app/annual-project-report/[year]/workspace/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,27 +10,26 @@ import { FiDownload, FiEdit, FiTable } from 'react-icons/fi'
import Button from '@mui/material/Button'
import { formatApiUrl } from '@ors/helpers'
import { useStore } from '@ors/store.tsx'
import useGetColumnDefs, {
dataTypeDefinitions,
} from '@ors/components/manage/Blocks/AnnualProgressReport/schema.tsx'
import UploadDocumentsModal from '@ors/components/manage/Blocks/AnnualProgressReport/UploadDocumentsModal.tsx'
import useGetColumnDefs from '@ors/components/manage/Blocks/ProjectReport/AnnualProgressReport/schema.tsx'
import { dataTypeDefinitions } from '@ors/components/manage/Blocks/ProjectReport/dataTypes.ts'
import UploadDocumentsModal from '@ors/components/manage/Blocks/ProjectReport/AnnualProgressReport/UploadDocumentsModal.tsx'
import useApi from '@ors/hooks/useApi.ts'
import { union } from 'lodash'
import {
INITIAL_PARAMS,
MANDATORY_STATUSES,
} from '@ors/components/manage/Blocks/AnnualProgressReport/constants.ts'
import Loader from '@ors/components/manage/Blocks/AnnualProgressReport/Loader.tsx'
} from '@ors/components/manage/Blocks/ProjectReport/AnnualProgressReport/constants.ts'
import Loader from '@ors/components/manage/Blocks/ProjectReport/Loader.tsx'
import Link from '@ors/components/ui/Link/Link.tsx'
import ViewTable from '@ors/components/manage/Form/ViewTable.tsx'
import SubmitButton from '@ors/components/manage/Blocks/AnnualProgressReport/SubmitButton.tsx'
import SubmitButton from '@ors/components/manage/Blocks/ProjectReport/AnnualProgressReport/SubmitButton.tsx'
import {
AnnualAgencyProjectReport,
Filter,
} from '@ors/app/annual-project-report/types.ts'
import StatusFilter from '@ors/components/manage/Blocks/AnnualProgressReport/StatusFilter.tsx'
import BackLink from '@ors/components/manage/Blocks/AnnualProgressReport/BackLink.tsx'
import AprYearDropdown from '@ors/components/manage/Blocks/AnnualProgressReport/AprYearDropdown.tsx'
import StatusFilter from '@ors/components/manage/Blocks/ProjectReport/AnnualProgressReport/StatusFilter.tsx'
import BackLink from '@ors/components/manage/Blocks/ProjectReport/BackLink.tsx'
import AprYearDropdown from '@ors/components/manage/Blocks/ProjectReport/AnnualProgressReport/AprYearDropdown.tsx'

export default function APRWorkspace() {
const [isUploadDocumentsModalOpen, setIsUploadDocumentsModalOpen] =
Expand Down
22 changes: 22 additions & 0 deletions frontend/src/app/project-completion-report/view/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import React from 'react'
import PageWrapper from '@ors/components/theme/PageWrapper/PageWrapper.tsx'
import BackLink from '@ors/components/manage/Blocks/ProjectReport/BackLink.tsx'
import Loader from '@ors/components/manage/Blocks/ProjectReport/Loader.tsx'
import { Box } from '@mui/material'
import { PageHeading } from '@ors/components/ui/Heading/Heading.tsx'

function PCRView() {
return (
<PageWrapper>
<BackLink url="~/projects-listing" text="IA/BA Portal" />
<PageHeading>
Project Completion Reports
</PageHeading>
<Box className="shadow-none">
<Loader active={false} />
</Box>
</PageWrapper>
)
}

export default PCRView
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import React, { useContext } from 'react'
import { useAPRCurrentYear } from '@ors/contexts/AnnualProjectReport/APRContext.tsx'
import Loader from '@ors/components/manage/Blocks/AnnualProgressReport/Loader.tsx'
import Loader from '@ors/components/manage/Blocks/ProjectReport/Loader.tsx'
import PermissionsContext from '@ors/contexts/PermissionsContext.tsx'
import NotFoundPage from '@ors/app/not-found.tsx'
import { Redirect } from 'wouter'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { validateField } from '@ors/components/manage/Blocks/AnnualProgressReport/validation.tsx'
import { validateField } from '@ors/components/manage/Blocks/ProjectReport/AnnualProgressReport/validation.tsx'
import CellValidationAlert from '@ors/components/manage/AgWidgets/CellValidationWidget/CellValidationAlert.tsx'
import cx from 'classnames'
import React from 'react'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import React from 'react'
import Button from '@mui/material/Button'
import { useConfirmation } from '@ors/contexts/AnnualProjectReport/APRContext.tsx'
import { useConfirmation } from '@ors/contexts/ConfirmationContext.tsx'
import { api } from '@ors/helpers'
import { enqueueSnackbar } from 'notistack'
import { handleActionErrors } from '@ors/components/manage/Blocks/AnnualProgressReport/errors.ts'
import { handleActionErrors } from '@ors/components/manage/Blocks/ProjectReport/errors.ts'

interface SubmitButtonProps {
revalidateData: () => void
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,12 @@ import { Alert, Box, IconButton, Link, Modal, Typography } from '@mui/material'
import { CancelButton } from '@ors/components/manage/Blocks/ProjectsListing/HelperComponents.tsx'
import Button from '@mui/material/Button'
import Cookies from 'js-cookie'
import { formatApiUrl } from '@ors/helpers'
import { api, formatApiUrl } from '@ors/helpers'
import { enqueueSnackbar } from 'notistack'
import { IoInformationCircleOutline, IoTrash } from 'react-icons/io5'
import { api } from '@ors/helpers'
import { useConfirmation } from '@ors/contexts/AnnualProjectReport/APRContext.tsx'
import { useConfirmation } from '@ors/contexts/ConfirmationContext.tsx'
import { APRFile } from '@ors/app/annual-project-report/types.ts'
import { handleActionErrors } from '@ors/components/manage/Blocks/AnnualProgressReport/errors.ts'
import { handleActionErrors } from '@ors/components/manage/Blocks/ProjectReport/errors.ts'

interface UploadDocumentsModalProps {
isModalOpen: boolean
Expand Down
Original file line number Diff line number Diff line change
@@ -1,73 +1,16 @@
import { AgGridReactProps, CustomCellRendererProps } from 'ag-grid-react'
import { DataTypeDefinition, IHeaderParams } from 'ag-grid-community'
import {
formatBoolean,
formatDate,
formatDecimal,
formatPercent,
formatUSD,
parseDate,
} from '@ors/components/manage/Blocks/AnnualProgressReport/utils.ts'
import { IHeaderParams } from 'ag-grid-community'
import React from 'react'
import { useStore } from '@ors/store.tsx'
import { get, isEqual, isNil, isObject } from 'lodash'
import { get, isEqual, isObject } from 'lodash'
import {
validateDate,
validateNumber,
validateText,
ValidatorMixin,
} from '@ors/components/manage/Blocks/AnnualProgressReport/validation.tsx'
import CellValidation from '@ors/components/manage/Blocks/AnnualProgressReport/CellValidation.tsx'
} from '@ors/components/manage/Blocks/ProjectReport/AnnualProgressReport/validation.tsx'
import CellValidation from '@ors/components/manage/Blocks/ProjectReport/AnnualProgressReport/CellValidation.tsx'
import { BasePasteWrapper } from '@ors/components/manage/Blocks/BusinessPlans/BPEdit/pasteSupport/BasePasteWrapper.tsx'
import dayjs from 'dayjs'

export const dataTypeDefinitions: Record<
string,
DataTypeDefinition & ValidatorMixin
> = {
dateString: {
baseDataType: 'dateString',
extendsDataType: 'dateString',
// From date picker to our ISO format (YYYY-MM-DD)
dateFormatter: (value) => formatDate(value, 'YYYY-MM-DD'),
// Format value to UI format (DD/MM/YYYY)
valueFormatter: (params) => formatDate(params.value),
// Parse to date from ISO format
dateParser: (value) => parseDate(value),
validators: [validateDate],
valueParser: (params) => {
if (isNil(params.newValue) || params.newValue === '') {
return null
}

return params.newValue
},
},
currency: {
baseDataType: 'number',
extendsDataType: 'number',
valueFormatter: (params) => formatUSD(params.value),
validators: [validateNumber],
},
percent: {
baseDataType: 'number',
extendsDataType: 'number',
valueFormatter: (params) => formatPercent(params.value),
validators: [validateNumber],
},
decimal: {
baseDataType: 'number',
extendsDataType: 'number',
valueFormatter: (params) => formatDecimal(params.value),
validators: [validateNumber],
},
boolean: {
baseDataType: 'boolean',
extendsDataType: 'boolean',
valueFormatter: (params) => formatBoolean(params.value),
},
}

interface APRTableColumn {
label: string
fieldName: string
Expand Down Expand Up @@ -668,7 +611,7 @@ export default function useGetColumnDefs({
}

if (cellDataType === 'boolean') {
toBeAdded = value.toLowerCase() === 'yes';
toBeAdded = value.toLowerCase() === 'yes'
}

row[field] = toBeAdded
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import dayjs from 'dayjs'
import { isNil } from 'lodash'
import { dataTypeDefinitions } from '@ors/components/manage/Blocks/AnnualProgressReport/schema.tsx'
import { dataTypeDefinitions } from '@ors/components/manage/Blocks/ProjectReport/dataTypes.ts'

type Validator = (value: any, row: any) => string | null
export type ValidatorMixin = {
Expand Down
Loading