Connected frontend new contact, new address and shipments to backend

This commit is contained in:
GotthardG
2024-10-30 00:27:01 +01:00
parent c34c117a15
commit 930d551464
2 changed files with 58 additions and 21 deletions

View File

@ -137,12 +137,12 @@ dewars = [
number_of_samples=33,
return_address=[return_addresses[1]],
contact_person=[contacts[1]],
status='In Transit',
status='In Preparation',
ready_date='2023-10-01',
shipping_date='2023-10-02',
arrival_date='2023-10-04',
shippingStatus='In Transit',
arrivalStatus='Pending',
shippingStatus='not shipped',
arrivalStatus='not arrived',
qrcode='QR123DEWAR002'
),
Dewar(
@ -158,6 +158,32 @@ dewars = [
arrivalStatus='Pending',
qrcode='QR123DEWAR003'
),
Dewar(
id='DEWAR004',
dewar_name='Dewar Four',
tracking_number='',
number_of_pucks=4,
number_of_samples=47,
return_address=[return_addresses[0]],
contact_person=[contacts[2]],
status='In Preparation',
shippingStatus='not shipped',
arrivalStatus='not arrived',
qrcode='QR123DEWAR003'
),
Dewar(
id='DEWAR005',
dewar_name='Dewar Five',
tracking_number='',
number_of_pucks=4,
number_of_samples=47,
return_address=[return_addresses[0]],
contact_person=[contacts[2]],
status='Ready for Shipping',
shippingStatus='shipped',
arrivalStatus='not arrived',
qrcode='QR123DEWAR003'
),
]
# Proposal data inspired by the Lord of the Rings
@ -171,11 +197,15 @@ proposals = [
# Example: Attach specific Dewars by their ids to shipments
specific_dewar_ids1 = ['DEWAR003'] # The IDs of the Dewars you want to attach to the first shipment
specific_dewar_ids2 = ['DEWAR001', 'DEWAR002'] # The IDs of the Dewars you want to attach to the second shipment
specific_dewar_ids2 = ['DEWAR001', 'DEWAR002']
specific_dewar_ids3 = ['DEWAR003', 'DEWAR004', 'DEWAR005']
# The IDs of the Dewars you want to attach to the second shipment
# Find the Dewars with the matching ids
specific_dewars1 = [dewar for dewar in dewars if dewar.id in specific_dewar_ids1]
specific_dewars2 = [dewar for dewar in dewars if dewar.id in specific_dewar_ids2]
specific_dewars3 = [dewar for dewar in dewars if dewar.id in specific_dewar_ids3]
# Define shipments with the selected Dewars
shipments = [
@ -200,7 +230,19 @@ shipments = [
return_address=[return_addresses[1]], # Changed index to a valid one
comments='Contains the one ring',
dewars=specific_dewars2 # Attach specific Dewars for this shipment
),
Shipment(
shipment_id='SHIPMORDOR3',
shipment_date='2024-10-28',
shipment_name='Shipment from Mordor',
shipment_status='In Transit',
contact_person=[contacts[4]],
proposal_number=[proposals[3]],
return_address=[return_addresses[0]], # Changed index to a valid one
comments='Contains the one ring',
dewars=specific_dewars3
)
]
@app.get("/contacts", response_model=List[ContactPerson])
@ -239,13 +281,6 @@ async def create_dewar(shipment: Dewar):
return dewars # Return the list of all dewars
# Endpoint to get the number of dewars in each shipment
@app.get("/shipment_dewars")
async def get_shipment_dewars():
return [{"shipment_id": shipment.shipment_id, "number_of_dewars": shipment.get_number_of_dewars()} for shipment in
shipments]
@app.get("/shipment_contact_persons")
async def get_shipment_contact_persons():
return [{"shipment_id": shipment.shipment_id, "contact_person": shipment.get_shipment_contact_persons()} for shipment in

View File

@ -1,16 +1,14 @@
// ShipmentPanel.tsx
import * as React from 'react';
import { useEffect, useState } from 'react';
import { Button, Box, Typography, IconButton } from '@mui/material';
import { Add as AddIcon, Delete as DeleteIcon, UploadFile as UploadFileIcon, Refresh as RefreshIcon } from '@mui/icons-material';
import UploadDialog from './UploadDialog'; // Ensure the file extension is correct
import UploadDialog from './UploadDialog';
import { Shipment_Input, DefaultService, OpenAPI, Dewar } from '../../openapi'; // Import relevant types
import { SxProps } from '@mui/material';
import bottleGrey from '../assets/icons/bottle-svgrepo-com-grey.svg';
import bottleYellow from '../assets/icons/bottle-svgrepo-com-yellow.svg';
import bottleGreen from '../assets/icons/bottle-svgrepo-com-green.svg';
import bottleRed from '../assets/icons/bottle-svgrepo-com-red.svg';
import { Shipment_Input, DefaultService, OpenAPI } from '../../openapi';
import bottleGrey from '/src/assets/icons/bottle-svgrepo-com-grey.svg'
import bottleYellow from '/src/assets/icons/bottle-svgrepo-com-yellow.svg'
import bottleGreen from '/src/assets/icons/bottle-svgrepo-com-green.svg'
import bottleRed from '/src/assets/icons/bottle-svgrepo-com-red.svg'
interface ShipmentPanelProps {
setCreatingShipment: (value: boolean) => void;
@ -81,6 +79,10 @@ const ShipmentPanel: React.FC<ShipmentPanelProps> = ({ setCreatingShipment, sele
const closeUploadDialog = () => setUploadDialogOpen(false);
const refreshShipments = () => fetchAndSetShipments();
const getNumberOfDewars = (shipment: Shipment_Input): number => {
return shipment.dewars ? shipment.dewars.length : 0;
};
return (
<Box sx={{ width: '90%', borderRight: '1px solid #ccc', padding: 2, ...sx }}>
{error && <Typography color="error">{error}</Typography>}
@ -151,14 +153,14 @@ const ShipmentPanel: React.FC<ShipmentPanelProps> = ({ setCreatingShipment, sele
borderRadius: '50%',
padding: '0 2px',
}}>
{shipment.number_of_dewars}
{getNumberOfDewars(shipment)} {/* Calculate number of dewars */}
</span>
</div>
<div>
<div>{shipment.shipment_name}</div>
<div style={{ fontSize: '0.6rem', color: '#ccc' }}>{shipment.shipment_date}</div>
<div style={{ fontSize: '0.6rem', color: '#ccc' }}>
Total Pucks: {shipment.dewars.reduce((total, dewar) => total + dewar.number_of_pucks, 0)}
Total Pucks: {shipment.dewars.reduce((total, dewar: Dewar) => total + dewar.number_of_pucks, 0)}
</div>
</div>
</div>