Connected frontend new contact, new address and shipments to backend
This commit is contained in:
@ -137,12 +137,12 @@ dewars = [
|
|||||||
number_of_samples=33,
|
number_of_samples=33,
|
||||||
return_address=[return_addresses[1]],
|
return_address=[return_addresses[1]],
|
||||||
contact_person=[contacts[1]],
|
contact_person=[contacts[1]],
|
||||||
status='In Transit',
|
status='In Preparation',
|
||||||
ready_date='2023-10-01',
|
ready_date='2023-10-01',
|
||||||
shipping_date='2023-10-02',
|
shipping_date='2023-10-02',
|
||||||
arrival_date='2023-10-04',
|
arrival_date='2023-10-04',
|
||||||
shippingStatus='In Transit',
|
shippingStatus='not shipped',
|
||||||
arrivalStatus='Pending',
|
arrivalStatus='not arrived',
|
||||||
qrcode='QR123DEWAR002'
|
qrcode='QR123DEWAR002'
|
||||||
),
|
),
|
||||||
Dewar(
|
Dewar(
|
||||||
@ -158,6 +158,32 @@ dewars = [
|
|||||||
arrivalStatus='Pending',
|
arrivalStatus='Pending',
|
||||||
qrcode='QR123DEWAR003'
|
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
|
# Proposal data inspired by the Lord of the Rings
|
||||||
@ -171,11 +197,15 @@ proposals = [
|
|||||||
|
|
||||||
# Example: Attach specific Dewars by their ids to shipments
|
# 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_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
|
# Find the Dewars with the matching ids
|
||||||
specific_dewars1 = [dewar for dewar in dewars if dewar.id in specific_dewar_ids1]
|
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_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
|
# Define shipments with the selected Dewars
|
||||||
shipments = [
|
shipments = [
|
||||||
@ -200,7 +230,19 @@ shipments = [
|
|||||||
return_address=[return_addresses[1]], # Changed index to a valid one
|
return_address=[return_addresses[1]], # Changed index to a valid one
|
||||||
comments='Contains the one ring',
|
comments='Contains the one ring',
|
||||||
dewars=specific_dewars2 # Attach specific Dewars for this shipment
|
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])
|
@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
|
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")
|
@app.get("/shipment_contact_persons")
|
||||||
async def 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
|
return [{"shipment_id": shipment.shipment_id, "contact_person": shipment.get_shipment_contact_persons()} for shipment in
|
||||||
|
@ -1,16 +1,14 @@
|
|||||||
// ShipmentPanel.tsx
|
|
||||||
|
|
||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import { useEffect, useState } from 'react';
|
import { useEffect, useState } from 'react';
|
||||||
import { Button, Box, Typography, IconButton } from '@mui/material';
|
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 { 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 { SxProps } from '@mui/material';
|
||||||
import bottleGrey from '../assets/icons/bottle-svgrepo-com-grey.svg';
|
import bottleGrey from '/src/assets/icons/bottle-svgrepo-com-grey.svg'
|
||||||
import bottleYellow from '../assets/icons/bottle-svgrepo-com-yellow.svg';
|
import bottleYellow from '/src/assets/icons/bottle-svgrepo-com-yellow.svg'
|
||||||
import bottleGreen from '../assets/icons/bottle-svgrepo-com-green.svg';
|
import bottleGreen from '/src/assets/icons/bottle-svgrepo-com-green.svg'
|
||||||
import bottleRed from '../assets/icons/bottle-svgrepo-com-red.svg';
|
import bottleRed from '/src/assets/icons/bottle-svgrepo-com-red.svg'
|
||||||
import { Shipment_Input, DefaultService, OpenAPI } from '../../openapi';
|
|
||||||
|
|
||||||
interface ShipmentPanelProps {
|
interface ShipmentPanelProps {
|
||||||
setCreatingShipment: (value: boolean) => void;
|
setCreatingShipment: (value: boolean) => void;
|
||||||
@ -81,6 +79,10 @@ const ShipmentPanel: React.FC<ShipmentPanelProps> = ({ setCreatingShipment, sele
|
|||||||
const closeUploadDialog = () => setUploadDialogOpen(false);
|
const closeUploadDialog = () => setUploadDialogOpen(false);
|
||||||
const refreshShipments = () => fetchAndSetShipments();
|
const refreshShipments = () => fetchAndSetShipments();
|
||||||
|
|
||||||
|
const getNumberOfDewars = (shipment: Shipment_Input): number => {
|
||||||
|
return shipment.dewars ? shipment.dewars.length : 0;
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Box sx={{ width: '90%', borderRight: '1px solid #ccc', padding: 2, ...sx }}>
|
<Box sx={{ width: '90%', borderRight: '1px solid #ccc', padding: 2, ...sx }}>
|
||||||
{error && <Typography color="error">{error}</Typography>}
|
{error && <Typography color="error">{error}</Typography>}
|
||||||
@ -151,14 +153,14 @@ const ShipmentPanel: React.FC<ShipmentPanelProps> = ({ setCreatingShipment, sele
|
|||||||
borderRadius: '50%',
|
borderRadius: '50%',
|
||||||
padding: '0 2px',
|
padding: '0 2px',
|
||||||
}}>
|
}}>
|
||||||
{shipment.number_of_dewars}
|
{getNumberOfDewars(shipment)} {/* Calculate number of dewars */}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div>{shipment.shipment_name}</div>
|
<div>{shipment.shipment_name}</div>
|
||||||
<div style={{ fontSize: '0.6rem', color: '#ccc' }}>{shipment.shipment_date}</div>
|
<div style={{ fontSize: '0.6rem', color: '#ccc' }}>{shipment.shipment_date}</div>
|
||||||
<div style={{ fontSize: '0.6rem', color: '#ccc' }}>
|
<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>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
Reference in New Issue
Block a user