|
@@ -1,27 +1,69 @@
|
|
|
-import React, { useState } from 'react';
|
|
|
+import React from 'react';
|
|
|
+import { useSelector, useDispatch } from 'react-redux';
|
|
|
+import { useEffect } from 'react';
|
|
|
+import { setBodyPositions } from '../../../states/exam/bodyPositionListSlice';
|
|
|
+import { RootState } from '../../../states/store';
|
|
|
import { Button } from 'antd';
|
|
|
import { PlusOutlined } from '@ant-design/icons';
|
|
|
import ImageViewer from './ImageViewer';
|
|
|
+import { addBodyPosition } from '../../../states/exam/bodyPositionListSlice';
|
|
|
|
|
|
interface BodyPositionListProps {
|
|
|
layout: 'horizontal' | 'vertical';
|
|
|
}
|
|
|
|
|
|
const BodyPositionList: React.FC<BodyPositionListProps> = ({ layout }) => {
|
|
|
- const [images, setImages] = useState<string[]>([]);
|
|
|
+ const dispatch = useDispatch();
|
|
|
+ const bodyPositions = useSelector((state: RootState) => state.bodyPositionList.bodyPositions);
|
|
|
+ const works = useSelector((state: RootState) => state.examWorksCache.works);
|
|
|
|
|
|
- const addImage = () => {
|
|
|
- setImages([...images, 'https://via.placeholder.com/150']);
|
|
|
+ const addBodyPositionClick = () => {
|
|
|
+ // dispatch(addBodyPosition({
|
|
|
+ // view_name: 'New View',
|
|
|
+ // view_description: 'Description of the new view',
|
|
|
+ // view_icon_name: 'icon-name'
|
|
|
+ // }));
|
|
|
};
|
|
|
|
|
|
+ useEffect(() => {
|
|
|
+ alert(`${works.length} works found == ${works[0].Views.length} views in the first work`);
|
|
|
+ const bodyPositions = works.flatMap(work => work.Views).map(view => ({
|
|
|
+ internal_id: view.internal_id,
|
|
|
+ view_id: view.view_id,
|
|
|
+ view_name: view.view_name,
|
|
|
+ view_name_local: view.view_name_local,
|
|
|
+ view_other_name: view.view_other_name,
|
|
|
+ view_description: view.view_description,
|
|
|
+ view_position: view.view_position,
|
|
|
+ application: view.application,
|
|
|
+ anatomic_region: view.anatomic_region,
|
|
|
+ patient_type: view.patient_type,
|
|
|
+ body_part_id: view.body_part_id,
|
|
|
+ view_icon_name: view.view_icon_name,
|
|
|
+ view_big_icon_name: view.view_big_icon_name,
|
|
|
+ view_coach_name: view.view_coach_name,
|
|
|
+ modality: view.modality,
|
|
|
+ work_station_id: view.work_station_id,
|
|
|
+ apr_id: view.apr_id,
|
|
|
+ img_proc_id: view.img_proc_id,
|
|
|
+ sort: view.sort,
|
|
|
+ is_enabled: view.is_enabled,
|
|
|
+ product: view.product,
|
|
|
+ is_pre_install: view.is_pre_install,
|
|
|
+ procedure_id: view.procedure_id
|
|
|
+ }));
|
|
|
+ dispatch(setBodyPositions(bodyPositions));
|
|
|
+ }, [works, dispatch]);
|
|
|
+
|
|
|
return (
|
|
|
<div className={`body-position-list ${layout}`}>
|
|
|
- {images.map((src, index) => (
|
|
|
- <ImageViewer key={index} src={src} className="image-viewer-item" />
|
|
|
+ <div>{bodyPositions.length}</div>
|
|
|
+ {bodyPositions.map((bodyPosition, index) => (
|
|
|
+ <ImageViewer key={index} src={bodyPosition.view_icon_name} className="image-viewer-item" />
|
|
|
))}
|
|
|
<Button
|
|
|
icon={<PlusOutlined />}
|
|
|
- onClick={addImage}
|
|
|
+ onClick={addBodyPositionClick}
|
|
|
className="add-button"
|
|
|
/>
|
|
|
</div>
|