auto scroll to next step

main
alex 2023-06-15 14:07:14 +02:00
parent 0056fb9250
commit 933112b5c9
5 changed files with 52 additions and 22 deletions

15
package-lock.json generated
View File

@ -20,6 +20,7 @@
"react-router-dom": "^6.10.0", "react-router-dom": "^6.10.0",
"react-scripts": "5.0.1", "react-scripts": "5.0.1",
"react-stl-viewer": "^2.2.5", "react-stl-viewer": "^2.2.5",
"uuid": "^9.0.0",
"web-vitals": "^2.1.4" "web-vitals": "^2.1.4"
} }
}, },
@ -16455,6 +16456,14 @@
"websocket-driver": "^0.7.4" "websocket-driver": "^0.7.4"
} }
}, },
"node_modules/sockjs/node_modules/uuid": {
"version": "8.3.2",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
"integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
"bin": {
"uuid": "dist/bin/uuid"
}
},
"node_modules/source-list-map": { "node_modules/source-list-map": {
"version": "2.0.1", "version": "2.0.1",
"resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz",
@ -17649,9 +17658,9 @@
} }
}, },
"node_modules/uuid": { "node_modules/uuid": {
"version": "8.3.2", "version": "9.0.0",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz",
"integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==",
"bin": { "bin": {
"uuid": "dist/bin/uuid" "uuid": "dist/bin/uuid"
} }

View File

@ -15,6 +15,7 @@
"react-router-dom": "^6.10.0", "react-router-dom": "^6.10.0",
"react-scripts": "5.0.1", "react-scripts": "5.0.1",
"react-stl-viewer": "^2.2.5", "react-stl-viewer": "^2.2.5",
"uuid": "^9.0.0",
"web-vitals": "^2.1.4" "web-vitals": "^2.1.4"
}, },
"scripts": { "scripts": {

View File

@ -1,4 +1,4 @@
import { Content, Footer } from "antd/es/layout/layout"; import { Content } from "antd/es/layout/layout";
import AppRoutes from "../AppRoutes"; import AppRoutes from "../AppRoutes";
function PageContent() { function PageContent() {

View File

@ -375,26 +375,32 @@ export default function GroupTasksViewModal({ isOpen }) {
description={ description={
groupTaskSteps[index].Status === groupTaskSteps[index].Status ===
Constants.GROUP_TASKS_STATUS.INPUT_REQUIRED ? ( Constants.GROUP_TASKS_STATUS.INPUT_REQUIRED ? (
<InputRequiredHandler <div id={`${currentGroupTask.Id}-scroll-${index}`}>
webSocketContext={webSocketContext} <InputRequiredHandler
currentGroupTask={currentGroupTask} webSocketContext={webSocketContext}
groupTaskParameters={groupTask.parameters} currentGroupTask={currentGroupTask}
groupTaskStepInputs={ groupTaskParameters={groupTask.parameters}
groupTaskSteps[index] !== undefined && groupTaskStepInputs={
groupTaskSteps[index].Inputs !== "" && groupTaskSteps[index] !== undefined &&
groupTaskSteps[index].Inputs groupTaskSteps[index].Inputs !== "" &&
} groupTaskSteps[index].Inputs
notificationApi={notificationApi} }
step={index + 1} notificationApi={notificationApi}
taskLockedByUserId={groupTaskSteps[index].LockedByUserId} step={index + 1}
/> taskLockedByUserId={
groupTaskSteps[index].LockedByUserId
}
/>
</div>
) : ( ) : (
groupTaskSteps[index].Log.length > 0 && ( groupTaskSteps[index].Log.length > 0 && (
<GroupTaskStepLogHandler <div id={`${currentGroupTask.Id}-scroll-${index}`}>
currentGroupTaskId={currentGroupTask.Id} <GroupTaskStepLogHandler
log={groupTaskSteps[index].Log} currentGroupTaskId={currentGroupTask.Id}
files={groupTaskSteps[index].Files} log={groupTaskSteps[index].Log}
/> files={groupTaskSteps[index].Files}
/>
</div>
) )
) )
} }

View File

@ -232,6 +232,8 @@ export function WebSocketProvider({
break; break;
case ReceivedMessagesCommands.NewGroupTaskStep: case ReceivedMessagesCommands.NewGroupTaskStep:
setGroupTasksSteps((arr) => [...arr, body]); setGroupTasksSteps((arr) => [...arr, body]);
scrollToNextStep(body.GroupTasksId, body.Step);
break; break;
case ReceivedMessagesCommands.UpdateGroupTaskStep: case ReceivedMessagesCommands.UpdateGroupTaskStep:
setGroupTasksSteps((arr) => { setGroupTasksSteps((arr) => {
@ -241,6 +243,8 @@ export function WebSocketProvider({
return newArr; return newArr;
}); });
scrollToNextStep(body.GroupTasksId, body.Step);
break; break;
case ReceivedMessagesCommands.UpdateGroupTask: case ReceivedMessagesCommands.UpdateGroupTask:
setGroupTasks((arr) => { setGroupTasks((arr) => {
@ -578,6 +582,16 @@ export function WebSocketProvider({
); );
} }
function scrollToNextStep(groupTaskId, step) {
setTimeout(
() =>
document
.getElementById(`${groupTaskId}-scroll-${step - 1}`)
?.scrollIntoView({ behavior: "smooth" }),
200
);
}
// https://stackoverflow.com/a/52486921 // https://stackoverflow.com/a/52486921
function setNativeValue(element, value) { function setNativeValue(element, value) {
let lastValue = element.value; let lastValue = element.value;