From 735ec1e31f8989269e7eff611c9b57a0a34ccd91 Mon Sep 17 00:00:00 2001 From: vipeeshpavithran Date: Mon, 4 Sep 2023 19:25:29 +0530 Subject: [PATCH] Added image marker components --- package.json | 1 + src/Assets/delete.png | Bin 0 -> 4317 bytes src/Assets/human_body_3d.jpg | Bin 0 -> 29056 bytes src/Components/ImageMarker/Entry.tsx | 26 +++ src/Components/ImageMarker/EntryForm.tsx | 39 +++++ .../ImageMarker/PatientImageMarker.css | 160 ++++++++++++++++++ .../ImageMarker/PatientImageMarker.tsx | 70 ++++++++ src/Components/ImageMarker/Rating.tsx | 30 ++++ src/Components/PatientForm/PatientForm.tsx | 12 ++ 9 files changed, 338 insertions(+) create mode 100644 src/Assets/delete.png create mode 100644 src/Assets/human_body_3d.jpg create mode 100644 src/Components/ImageMarker/Entry.tsx create mode 100644 src/Components/ImageMarker/EntryForm.tsx create mode 100644 src/Components/ImageMarker/PatientImageMarker.css create mode 100644 src/Components/ImageMarker/PatientImageMarker.tsx create mode 100644 src/Components/ImageMarker/Rating.tsx diff --git a/package.json b/package.json index a2ec5df..0e57cc1 100644 --- a/package.json +++ b/package.json @@ -33,6 +33,7 @@ "react-dom": "^18.2.0", "react-gauge-chart": "^0.4.1", "react-icons": "^4.9.0", + "react-image-marker": "^1.2.0", "react-leaflet": "^4.2.1", "react-router-dom": "^6.14.2", "react-scripts": "5.0.1", diff --git a/src/Assets/delete.png b/src/Assets/delete.png new file mode 100644 index 0000000000000000000000000000000000000000..7df0d697d29b234e6c2ebc75b7380e127b246e4f GIT binary patch literal 4317 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 Re4fh-TAACKRh;vT{TIO%3R3_8 literal 0 HcmV?d00001 diff --git a/src/Assets/human_body_3d.jpg b/src/Assets/human_body_3d.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8357302787d69f2e1507cc9282f9a70892feb582 GIT binary patch literal 29056 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 literal 0 HcmV?d00001 diff --git a/src/Components/ImageMarker/Entry.tsx b/src/Components/ImageMarker/Entry.tsx new file mode 100644 index 0000000..5e796da --- /dev/null +++ b/src/Components/ImageMarker/Entry.tsx @@ -0,0 +1,26 @@ +import Slider from '@mui/material/Slider'; +import IconButton from '@mui/material/IconButton'; + +import deleteIcon from '../../Assets/delete.png'; +import Rating from './Rating'; + +type Props = { + entry: any; + index: number; + onUpdate: (data: any) => void; + onDelete: (index: number) => void; +}; + +const Entry = ({ entry, onUpdate, onDelete, index }: Props) => { + return ( +
+ {index + 1} + + onDelete(index)}> + + +
+ ); +}; + +export default Entry; diff --git a/src/Components/ImageMarker/EntryForm.tsx b/src/Components/ImageMarker/EntryForm.tsx new file mode 100644 index 0000000..a793ce5 --- /dev/null +++ b/src/Components/ImageMarker/EntryForm.tsx @@ -0,0 +1,39 @@ +import Entry from './Entry'; +import { Button } from '@mui/material'; + +type Props = { + entries: Array; + onUpdate: (data: any) => void; + onDelete: (index: number) => void; + onSave: (data: any) => void; +}; + +const EntryForm = ({ entries, onUpdate, onDelete, onSave }: Props) => { + return ( +
+ *** Mark Your Areas of Pain on the Picture *** + {entries && entries.length > 0 && + How much pain are you in right now? + } + {entries?.map((entry: any, index: number) => ( + + ))} + {/* { + entries && entries.length > 0 && +
+ +
+ } */} +
+ ); +}; + +export default EntryForm; diff --git a/src/Components/ImageMarker/PatientImageMarker.css b/src/Components/ImageMarker/PatientImageMarker.css new file mode 100644 index 0000000..dc4906a --- /dev/null +++ b/src/Components/ImageMarker/PatientImageMarker.css @@ -0,0 +1,160 @@ +.image-marker-div { + width: 100%; + display: flex; + justify-content: space-between; +} + +.image-marker-div .entry-div { + width: 50%; +} + +.image-marker-div .entry-div .entryForm { + display: flex; + flex-direction: column; + gap: 10px; +} + +.image-marker-div .entry-div .entryForm .header { + font-weight: 500; + font-size: 18px; +} + +.image-marker-div .entry-div .entryForm .sub-header { + font-weight: 500; + font-size: 14px; +} + +.image-marker-div .entry-div .entryForm .entry { + margin-top: 1%; + display: flex; + align-items: center; + gap: 20px; +} + +.image-marker-div .marker-div { + /* margin-right: 5%; */ +} + +.image-marker-div .rating-div { + width: 80%; +} + +@media only screen and (max-width: 1200px) { + .image-marker-div { + flex-direction: column; + } + + .image-marker-div .entry-div { + width: 100%; + } + + .image-marker-div .rating-div { + width: 100%; + } + + .image-marker-div .entry-div .entryForm .entry { + gap: 0; + margin-bottom: 2%; + } +} + +@media only screen and (min-width: 1400px) { + .image-marker-div .rating-div { + width: 60%; + } +} + +.btn-scale { + min-width: 40px !important; + width: 3% !important; + text-align: center !important; + font-weight: bold !important; + color: black !important; + font-family: 'Lato', sans-serif; + border: none !important; + margin-left: 1% !important; +} + +.selected { + border: 3px solid black !important; +} + +.btn-scale-asc-1 { + background-color: #33FF00 !important; +} + +.btn-scale-asc-1:hover { + background-color: #2CDE00 !important; +} + +.btn-scale-asc-2 { + background-color: #66FF00 !important; +} + +.btn-scale-asc-2:hover { + background-color: #59DE00 !important; +} + +.btn-scale-asc-3 { + background-color: #99FF00 !important; +} + +.btn-scale-asc-3:hover { + background-color: #85DE00 !important; +} + +.btn-scale-asc-4 { + background-color: #CCFF00 !important; +} + +.btn-scale-asc-4:hover { + background-color: #B1DE00 !important; +} + +.btn-scale-asc-5 { + background-color: #FFFF00 !important; +} + +.btn-scale-asc-5:hover { + background-color: #DEDE00 !important; +} + +.btn-scale-asc-6 { + background-color: #FFCC00 !important; +} + +.btn-scale-asc-6:hover { + background-color: #DEB100 !important; +} + +.btn-scale-asc-7 { + background-color: #FF9900 !important; +} + +.btn-scale-asc-7:hover { + background-color: #DE8500 !important; +} + +.btn-scale-asc-8 { + background-color: #FF6600 !important; +} + +.btn-scale-asc-8 { + background-color: #DE5900 !important; +} + +.btn-scale-asc-9 { + background-color: #FF3300 !important; +} + +.btn-scale-asc-9:hover { + background-color: #DE2C00 !important; +} + +.btn-scale-asc-10 { + background-color: #FF0000 !important; +} + +.btn-scale-asc-10:hover { + background-color: #DE0000 !important; +} \ No newline at end of file diff --git a/src/Components/ImageMarker/PatientImageMarker.tsx b/src/Components/ImageMarker/PatientImageMarker.tsx new file mode 100644 index 0000000..be39ddb --- /dev/null +++ b/src/Components/ImageMarker/PatientImageMarker.tsx @@ -0,0 +1,70 @@ +import React, { useEffect, useState } from 'react' +import ImageMarker, { Marker } from 'react-image-marker'; + +import humanImage from '../../Assets/human_body_3d.jpg'; +import EntryForm from './EntryForm'; + +import './PatientImageMarker.css' + +type Props = {} + +const PatientImageMarker = (props: Props) => { + const [markers, setMarkers] = useState>([]); + const [entries, setEntries] = useState>([]); + const [action, setAction] = useState({}); + + const updateEntry = (updated: any) => { + setEntries((prevEntries) => + prevEntries.map((entry) => + entry.index === updated.index + ? { ...entry, severity: updated.severity } + : entry + ) + ); + }; + + const addEntries = (marker: Marker) => { + setAction({ type: 'add', index: 0 }); + setMarkers([...markers, marker]); + }; + + const deleteEntry = (index: number) => { + setAction({ type: 'delete', index: index }); + setMarkers(markers.filter((marker: Marker, ind: number) => ind != index)); + }; + + const onSave = () => { + + } + + useEffect(() => { + if (action.type === 'add') + setEntries([...entries, { index: entries.length + 1, severity: 5 }]); + else + setEntries( + entries.filter((entry: any, ind: number) => ind != action.index) + ); + }, [action]); + + return ( +
+
+ +
+
+ addEntries(marker)} + /> +
+
+ ) +} + +export default PatientImageMarker; \ No newline at end of file diff --git a/src/Components/ImageMarker/Rating.tsx b/src/Components/ImageMarker/Rating.tsx new file mode 100644 index 0000000..cb8906a --- /dev/null +++ b/src/Components/ImageMarker/Rating.tsx @@ -0,0 +1,30 @@ +import { Button, Tooltip } from '@mui/material'; +import React, { useState } from 'react'; + +type Props = { + index: number; + defaultValue: number; + onUpdate: (data: any) => void; +}; + +const Rating = ({index, defaultValue, onUpdate} : Props) => { + return ( +
+ {[...Array(10)].map((star, ind) => { + return ( + 7 ? 'Unbearable' : ''} placement="top-end"> + + + ); + })} +
+ ); +}; + +export default Rating; diff --git a/src/Components/PatientForm/PatientForm.tsx b/src/Components/PatientForm/PatientForm.tsx index e258f90..5999d78 100644 --- a/src/Components/PatientForm/PatientForm.tsx +++ b/src/Components/PatientForm/PatientForm.tsx @@ -19,6 +19,7 @@ import PastTreatment5 from './PastTreatment5'; import SystemReviewSection6 from './SyestemReviewSection6'; import RecreationalHobbiesSection7 from './RecreationalHobbiesSection7'; import OtherDetails8 from './OtherDetails8'; +import PatientImageMarker from '../ImageMarker/PatientImageMarker'; interface Patient { fullName: string; @@ -152,6 +153,17 @@ export default function PatientForm(){ + + + + Patient's Injury Image + + + + + + +