Skip to content

Commit

Permalink
add detector table
Browse files Browse the repository at this point in the history
  • Loading branch information
tizayi committed Jan 17, 2024
1 parent f9187dd commit 49f8ecc
Show file tree
Hide file tree
Showing 7 changed files with 202 additions and 108 deletions.
39 changes: 39 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
"@mui/icons-material": "^5.15.3",
"@mui/material": "^5.14.17",
"@react-three/fiber": "^8.13.7",
"@mui/x-data-grid": "^5.17.4",
"d3-scale": "^4.0.2",
"framer-motion": "^10.15.2",
"js-quantities": "^1.8.0",
Expand Down
4 changes: 2 additions & 2 deletions src/data-entry/dataSideBar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,9 @@ import { presetList } from "../presets/presetManager";
import { useBeamstopStore } from "./beamstopStore";
import { useCameraTubeStore } from "./cameraTubeStore";
import { useDetectorStore } from "./detectorStore";
import DetectorDialog from "./detectorDialog";
import DetectorDialog from "../dialogs/detectorDialog";
import React from "react";
import PresetDialog from "./presetDialog";
import PresetDialog from "../dialogs/presetDialog";

/**
* React component which represents the side bar for data entry
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,9 @@ import {
Typography,
} from "@mui/material";
import React from "react";
import { useDetectorStore } from "./detectorStore";
import { useDetectorStore } from "../data-entry/detectorStore";
import * as mathjs from "mathjs";
import DetectorTable from "./detectorTable"

export default function DetectorDialog(props: {
open: boolean;
Expand Down Expand Up @@ -49,9 +50,11 @@ export default function DetectorDialog(props: {

return (
<Dialog open={props.open} keepMounted onClose={props.handleClose}>
<DialogTitle>{"Add detector"}</DialogTitle>
<DialogTitle>{"Detectors"}</DialogTitle>
<DialogContent>
<Stack spacing={2}>
<DetectorTable/>
<Typography>Add new Detector</Typography>
<Divider />
<Grid container spacing={2}>
<Grid item xs={12}>
Expand Down
52 changes: 52 additions & 0 deletions src/dialogs/detectorTable.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
import { Detector } from "../utils/types";
import { detectorList } from "../presets/presetManager";
import { DataGrid, GridColDef, GridToolbar } from "@mui/x-data-grid";


interface DetectorTableRow{
name: string;
resolution_height: number;
resolution_width: number;
pixel_height: number;
pixel_width: number;
}

function createData( name: string, detector:Detector): DetectorTableRow{
return {
name: name,
resolution_height: detector.resolution.height,
resolution_width: detector.resolution.width,
pixel_height: detector.pixelSize.height.toNumber("mm"),
pixel_width: detector.pixelSize.width.toNumber("mm"),
}
}

export default function CustomPaginationActionsTable() {

const displayArray: DetectorTableRow[] = [];
for (const [key, value] of Object.entries(detectorList)){
displayArray.push(createData(key,value));
}

const columns: GridColDef[] = [
{ field: "name", headerName: "name", flex: 1 },
{ field: "resolution_height",
headerName: "resolution height", flex: 1 },
{ field: "resolution_width", headerName: "resolution width", flex: 1 },
{ field: "pixel_height", headerName: "pixel height", flex: 1 },
{ field: "pixel_width", headerName: "pixel width", flex: 1 },
];


return (
<DataGrid
autoHeight
rows={displayArray}
getRowId={(row:DetectorTableRow) => row.name}
columns={columns}
components={{ Toolbar: GridToolbar }}
sx={{ border: 0 }}
disableSelectionOnClick
/>
);
}
File renamed without changes.
207 changes: 103 additions & 104 deletions src/results/rangeTable.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -62,110 +62,109 @@ export default function RangeTable(props: { qRange: UnitRange }): JSX.Element {
</TableRow>
</TableHead>
{/* TABLE BODY */}
<TableRow key={"q"}>
{/* Q RANGE ROW */}
<TableCell component="th" scope="row">
{ScatteringOptions.q}
</TableCell>
<TableCell align="right">
{isNaN(qRange.min.toNumber())
? ""
: qRange.min.toNumber().toFixed(4)}
</TableCell>
<TableCell align="right">
{isNaN(qRange.max.toNumber())
? ""
: qRange.max.toNumber().toFixed(4)}
</TableCell>
<TableCell align="right">
<FormControl>
<InputLabel>q</InputLabel>
<Select
size="small"
label="units"
value={resultsStore.qUnits}
onChange={handleQunits}
>
<MenuItem value={ReciprocalWavelengthUnits.nanmometres}>
{"1 / nm"}
</MenuItem>
<MenuItem value={ReciprocalWavelengthUnits.angstroms}>
{"1 / " + "\u212B"}
</MenuItem>
</Select>
</FormControl>
</TableCell>
</TableRow>
<TableRow key={"s"}>
{/* S RANGE ROW*/}
<TableCell component="th" scope="row">
{ScatteringOptions.s}
</TableCell>
<TableCell align="right">
{isNaN(sRange.min.toNumber())
? ""
: sRange.min.toNumber().toFixed(4)}
</TableCell>
<TableCell align="right">
{isNaN(sRange.max.toNumber())
? ""
: sRange.max.toNumber().toFixed(4)}
</TableCell>
<TableCell align="right">
<FormControl>
<InputLabel>s</InputLabel>
<Select
size="small"
label="units"
value={resultsStore.sUnits}
onChange={handleSunits}
>
<MenuItem value={WavelengthUnits.nanmometres}>
{WavelengthUnits.nanmometres}
</MenuItem>
<MenuItem value={WavelengthUnits.angstroms}>
{"\u212B"}
</MenuItem>
</Select>
</FormControl>
</TableCell>
</TableRow>
<TableRow key={"d"}>
{/* D RANGE ROW*/}
<TableCell component="th" scope="row">
{ScatteringOptions.d}
</TableCell>
<TableCell align="right">
{isNaN(dRange.min.toNumber())
? ""
: dRange.min.toNumber().toFixed(4)}
</TableCell>
<TableCell align="right">
{isNaN(dRange.max.toNumber())
? ""
: dRange.max.toNumber().toFixed(4)}
</TableCell>
<TableCell align="right">
<FormControl>
<InputLabel>d</InputLabel>
<Select
size="small"
label="units"
value={resultsStore.dUnits}
onChange={handleDunits}
>
<MenuItem value={WavelengthUnits.nanmometres}>
{WavelengthUnits.nanmometres}
</MenuItem>
<MenuItem value={WavelengthUnits.angstroms}>
{"\u212B"}
</MenuItem>
</Select>
</FormControl>
</TableCell>
</TableRow>
<TableBody>
</TableBody>
<TableRow key={"q"}>
{/* Q RANGE ROW */}
<TableCell component="th" scope="row">
{ScatteringOptions.q}
</TableCell>
<TableCell align="right">
{isNaN(qRange.min.toNumber())
? ""
: qRange.min.toNumber().toFixed(4)}
</TableCell>
<TableCell align="right">
{isNaN(qRange.max.toNumber())
? ""
: qRange.max.toNumber().toFixed(4)}
</TableCell>
<TableCell align="right">
<FormControl>
<InputLabel>q</InputLabel>
<Select
size="small"
label="units"
value={resultsStore.qUnits}
onChange={handleQunits}
>
<MenuItem value={ReciprocalWavelengthUnits.nanmometres}>
{"1 / nm"}
</MenuItem>
<MenuItem value={ReciprocalWavelengthUnits.angstroms}>
{"1 / " + "\u212B"}
</MenuItem>
</Select>
</FormControl>
</TableCell>
</TableRow>
<TableRow key={"s"}>
{/* S RANGE ROW*/}
<TableCell component="th" scope="row">
{ScatteringOptions.s}
</TableCell>
<TableCell align="right">
{isNaN(sRange.min.toNumber())
? ""
: sRange.min.toNumber().toFixed(4)}
</TableCell>
<TableCell align="right">
{isNaN(sRange.max.toNumber())
? ""
: sRange.max.toNumber().toFixed(4)}
</TableCell>
<TableCell align="right">
<FormControl>
<InputLabel>s</InputLabel>
<Select
size="small"
label="units"
value={resultsStore.sUnits}
onChange={handleSunits}
>
<MenuItem value={WavelengthUnits.nanmometres}>
{WavelengthUnits.nanmometres}
</MenuItem>
<MenuItem value={WavelengthUnits.angstroms}>
{"\u212B"}
</MenuItem>
</Select>
</FormControl>
</TableCell>
</TableRow>
<TableRow key={"d"}>
{/* D RANGE ROW*/}
<TableCell component="th" scope="row">
{ScatteringOptions.d}
</TableCell>
<TableCell align="right">
{isNaN(dRange.min.toNumber())
? ""
: dRange.min.toNumber().toFixed(4)}
</TableCell>
<TableCell align="right">
{isNaN(dRange.max.toNumber())
? ""
: dRange.max.toNumber().toFixed(4)}
</TableCell>
<TableCell align="right">
<FormControl>
<InputLabel>d</InputLabel>
<Select
size="small"
label="units"
value={resultsStore.dUnits}
onChange={handleDunits}
>
<MenuItem value={WavelengthUnits.nanmometres}>
{WavelengthUnits.nanmometres}
</MenuItem>
<MenuItem value={WavelengthUnits.angstroms}>
{"\u212B"}
</MenuItem>
</Select>
</FormControl>
</TableCell>
</TableRow>
<TableBody></TableBody>
</Table>
</TableContainer>
</Box>
Expand Down

0 comments on commit 49f8ecc

Please sign in to comment.