Skip to content

Dashboard generation - Timeout #42

@KirilMT

Description

@KirilMT

For some reason, if it takes too long for the process of dashboard generation, users start inputting data in index.html but leave it in the middle, then when they come back after a long time, and try to finish it, it doesn't work and gives errors... This needs to be improved, maybe go back to the initial state of index.html, so the user doesn't continue for no reason... Or, keep the session open permanently... I don't know what the best solution can be for this...

Here is the console output:

index.js:274 INDEX.HTML: Fetching technician groups...
index.js:131 Restoring state from: 20:13:16
index.js:152 Session restored, time away: 89 seconds
index.js:981 State restoration result: true
index.js:277 INDEX.HTML: Technicians response status: 200
index.js:281 INDEX.HTML: Technician groups received: {SP_1: Array(7), SP_2: Array(7), SP_3: Array(6)}
index.js:456 Message displayed: [ERROR] Please select an Excel file.
index.js:83 Saving state: {hasFile: false, fileSelected: false, fileUploaded: false, filename: '', sessionId: 'ngkvuzbraz9dh3xihz0mv', …}
css-generic.js:1 uBOL: Generic cosmetic filtering stopped because no more DOM changes
index.js:83 Saving state: {hasFile: false, fileSelected: false, fileUploaded: false, filename: '', sessionId: 'ngkvuzbraz9dh3xihz0mv', …}
Saving state: {hasFile: false, fileSelected: false, fileUploaded: false, filename: '', sessionId: 'ngkvuzbraz9dh3xihz0mv', …}
Saving state: {hasFile: false, fileSelected: false, fileUploaded: false, filename: '', sessionId: 'ngkvuzbraz9dh3xihz0mv', …}
Saving state: {hasFile: false, fileSelected: false, fileUploaded: false, filename: '', sessionId: 'ngkvuzbraz9dh3xihz0mv', …}
Saving state: {hasFile: false, fileSelected: false, fileUploaded: false, filename: '', sessionId: 'ngkvuzbraz9dh3xihz0mv', …}
Message displayed: [ERROR] Please select an Excel file.
Saving state: {hasFile: false, fileSelected: false, fileUploaded: false, filename: '', sessionId: 'ngkvuzbraz9dh3xihz0mv', …}
Saving state: {hasFile: false, fileSelected: false, fileUploaded: false, filename: '', sessionId: 'ngkvuzbraz9dh3xihz0mv', …}
Saving state: {hasFile: false, fileSelected: false, fileUploaded: false, filename: '', sessionId: 'ngkvuzbraz9dh3xihz0mv', …}
Saving state: {hasFile: true, fileSelected: true, fileUploaded: true, filename: 'testsExcel.xlsb', sessionId: 'ngkvuzbraz9dh3xihz0mv', …}
Saving state: {hasFile: true, fileSelected: true, fileUploaded: true, filename: 'testsExcel.xlsb', sessionId: 'ngkvuzbraz9dh3xihz0mv', …}
Starting file upload for: testsExcel.xlsb
Upload already in progress, ignoring duplicate request
Upload response status: 200
Upload successful, proceeding to absent modal
Saving state: {hasFile: true, fileSelected: true, fileUploaded: true, filename: 'testsExcel.xlsb', sessionId: 'ngkvuzbraz9dh3xihz0mv', …}
INDEX.HTML: Showing absent modal...
INDEX.HTML: Populating technician groups...
INDEX.HTML: Technician groups populated.
Upload process completed
INDEX.HTML: Confirm absent technicians clicked.
INDEX.HTML: Absent technicians selected: (3) ['technician_4', 'technician_11', 'technician_15']
INDEX.HTML: Present technicians: (17) ['technician_1', 'technician_2', 'technician_3', 'technician_5', 'technician_6', 'technician_7', 'technician_10', 'technician_12', 'technician_13', 'technician_14', 'technician_8', 'technician_9', 'technician_16', 'technician_17', 'technician_18', 'technician_19', 'technician_20']
INDEX.HTML: Sending PM processing request (after absent selection)...
INDEX.HTML: PM processing response status: 200
INDEX.HTML: PM processing response data: {eligible_technicians: {…}, message: 'REP task data prepared.', rep_tasks: Array(7), session_id: 'ngkvuzbraz9dh3xihz0mv'}
INDEX.HTML: repTasks after PM processing: (7) [{…}, {…}, {…}, {…}, {…}, {…}, {…}]
INDEX.HTML: eligibleTechnicians for REP tasks after PM processing: {8: Array(17), 9: Array(17), 10: Array(17), 11: Array(17), 12: Array(17), 13: Array(17), 14: Array(17)}
INDEX.HTML: Hiding absent modal...
INDEX.HTML: showTaskAssignmentModal called, currentRepTaskIndex: 0 repTasks length: 7
INDEX.HTML: Current task for modal: {id: '8', lines: 'Line_Task_6', mitarbeiter_pro_aufgabe: 11, name: 'Task_7', planned_worktime_min: 30, …}
INDEX.HTML: populateTaskTechnicians called for task ID: 8 Task Details: {id: '8', lines: 'Line_Task_6', mitarbeiter_pro_aufgabe: 11, name: 'Task_7', planned_worktime_min: 30, …}
Message displayed: [ERROR] You have selected 3 technicians, but this task requires 11 technicians. Please select 8 more technicians.
Task skipped: {task_id: '8', task_name: 'Task_7', skip_reason: 'asdf', skipped: true}
INDEX.HTML: showTaskAssignmentModal called, currentRepTaskIndex: 1 repTasks length: 7
INDEX.HTML: Current task for modal: {id: '9', lines: 'Line_Task_33', mitarbeiter_pro_aufgabe: 2, name: 'Task_33', planned_worktime_min: 120, …}
INDEX.HTML: populateTaskTechnicians called for task ID: 9 Task Details: {id: '9', lines: 'Line_Task_33', mitarbeiter_pro_aufgabe: 2, name: 'Task_33', planned_worktime_min: 120, …}
Task assigned: {task_id: '9', task_name: 'Task_33', technicians: Array(3), required_count: 2, selected_count: 3}
INDEX.HTML: showTaskAssignmentModal called, currentRepTaskIndex: 2 repTasks length: 7
INDEX.HTML: Current task for modal: {id: '10', lines: 'Line_Task_52', mitarbeiter_pro_aufgabe: 2, name: 'Task_52', planned_worktime_min: 60, …}
INDEX.HTML: populateTaskTechnicians called for task ID: 10 Task Details: {id: '10', lines: 'Line_Task_52', mitarbeiter_pro_aufgabe: 2, name: 'Task_52', planned_worktime_min: 60, …}
Task assigned: {task_id: '10', task_name: 'Task_52', technicians: Array(2), required_count: 2, selected_count: 2}
INDEX.HTML: showTaskAssignmentModal called, currentRepTaskIndex: 3 repTasks length: 7
INDEX.HTML: Current task for modal: {id: '11', lines: 'Line_Task_53', mitarbeiter_pro_aufgabe: 2, name: 'Task_53', planned_worktime_min: 90, …}
INDEX.HTML: populateTaskTechnicians called for task ID: 11 Task Details: {id: '11', lines: 'Line_Task_53', mitarbeiter_pro_aufgabe: 2, name: 'Task_53', planned_worktime_min: 90, …}
Task assigned: {task_id: '11', task_name: 'Task_53', technicians: Array(2), required_count: 2, selected_count: 2}
INDEX.HTML: showTaskAssignmentModal called, currentRepTaskIndex: 4 repTasks length: 7
index.js:528 INDEX.HTML: Current task for modal: {id: '12', lines: 'Line_Task_54', mitarbeiter_pro_aufgabe: 2, name: 'Task_54', planned_worktime_min: 90, …}
index.js:560 INDEX.HTML: populateTaskTechnicians called for task ID: 12 Task Details: {id: '12', lines: 'Line_Task_54', mitarbeiter_pro_aufgabe: 2, name: 'Task_54', planned_worktime_min: 90, …}
index.js:1237 Task assigned: {task_id: '12', task_name: 'Task_54', technicians: Array(2), required_count: 2, selected_count: 2}
index.js:524 INDEX.HTML: showTaskAssignmentModal called, currentRepTaskIndex: 5 repTasks length: 7
index.js:528 INDEX.HTML: Current task for modal: {id: '13', lines: 'Line_Task_56', mitarbeiter_pro_aufgabe: 2, name: 'Task_56', planned_worktime_min: 90, …}
index.js:560 INDEX.HTML: populateTaskTechnicians called for task ID: 13 Task Details: {id: '13', lines: 'Line_Task_56', mitarbeiter_pro_aufgabe: 2, name: 'Task_56', planned_worktime_min: 90, …}
index.js:1237 Task assigned: {task_id: '13', task_name: 'Task_56', technicians: Array(2), required_count: 2, selected_count: 2}
index.js:524 INDEX.HTML: showTaskAssignmentModal called, currentRepTaskIndex: 6 repTasks length: 7
index.js:528 INDEX.HTML: Current task for modal: {id: '14', lines: 'Line_Task_57', mitarbeiter_pro_aufgabe: 2, name: 'Task_57', planned_worktime_min: 90, …}
index.js:560 INDEX.HTML: populateTaskTechnicians called for task ID: 14 Task Details: {id: '14', lines: 'Line_Task_57', mitarbeiter_pro_aufgabe: 2, name: 'Task_57', planned_worktime_min: 90, …}
index.js:1237 Task assigned: {task_id: '14', task_name: 'Task_57', technicians: Array(2), required_count: 2, selected_count: 2}
index.js:695 INDEX.HTML: /generate_dashboard response status: 200
index.js:699 INDEX.HTML: /generate_dashboard response data: {dashboard_url: 'http://127.0.0.1:5000/output/technician_dashboard.html?cache_bust=39050', html_files: Array(0), message: 'Dashboard generated.', session_id: 'ngkvuzbraz9dh3xihz0mv'}
index.js:456 Message displayed: [SUCCESS] Dashboard generated.
index.js:83 Saving state: {hasFile: true, fileSelected: true, fileUploaded: true, filename: 'testsExcel.xlsb', sessionId: 'ngkvuzbraz9dh3xihz0mv', …}
index.js:83 Saving state: {hasFile: true, fileSelected: true, fileUploaded: true, filename: 'testsExcel.xlsb', sessionId: 'ngkvuzbraz9dh3xihz0mv', …}
index.js:83 Saving state: {hasFile: true, fileSelected: true, fileUploaded: true, filename: 'testsExcel2.xlsb', sessionId: 'dl1gcauhysihj6fhklz4ft', …}
index.js:83 Saving state: {hasFile: true, fileSelected: true, fileUploaded: true, filename: 'testsExcel2.xlsb', sessionId: 'dl1gcauhysihj6fhklz4ft', …}
index.js:1063 Starting file upload for: testsExcel2.xlsb
index.js:1014 Upload already in progress, ignoring duplicate request
main.js?attr=ir0yuGnR2ZuCQCy_5T9MSmcsbHKEgSW3MCH966FmmzHFViuQL0mCyee8pTcXuq79:4018 POST http://127.0.0.1:5000/upload 400 (BAD REQUEST)
fetchCallImpl @ main.js?attr=ir0yuGnR2ZuCQCy_5T9MSmcsbHKEgSW3MCH966FmmzHFViuQL0mCyee8pTcXuq79:4018
fetch @ main.js?attr=ir0yuGnR2ZuCQCy_5T9MSmcsbHKEgSW3MCH966FmmzHFViuQL0mCyee8pTcXuq79:4024
(anonymous) @ index.js:1065
(anonymous) @ index.js:1111
index.js:1070 Upload response status: 400
index.js:1080 Upload error: Week mismatch: File is not for current week (16). Available: 17.
index.js:456 Message displayed: [ERROR] Week mismatch: File is not for current week (16). Available: 17.
index.js:1099 Upload process completed
index.js:83 Saving state: {hasFile: true, fileSelected: true, fileUploaded: true, filename: 'testsExcel.xlsb', sessionId: 'dl1gcauhysihj6fhklz4ft', …}
index.js:83 Saving state: {hasFile: true, fileSelected: true, fileUploaded: true, filename: 'testsExcel.xlsb', sessionId: 'dl1gcauhysihj6fhklz4ft', …}
index.js:1063 Starting file upload for: testsExcel.xlsb
index.js:1014 Upload already in progress, ignoring duplicate request
index.js:1070 Upload response status: 200
index.js:1086 Upload successful, proceeding to absent modal
index.js:513 INDEX.HTML: Showing absent modal...
index.js:384 INDEX.HTML: Populating technician groups...
index.js:428 INDEX.HTML: Technician groups populated.
index.js:1099 Upload process completed
index.js:83 Saving state: {hasFile: true, fileSelected: true, fileUploaded: true, filename: 'testsExcel.xlsb', sessionId: 'dl1gcauhysihj6fhklz4ft', …}
index.js:1137 INDEX.HTML: Confirm absent technicians clicked.
index.js:1142 INDEX.HTML: Absent technicians selected: (3) ['technician_7', 'technician_12', 'technician_15']
index.js:1151 INDEX.HTML: Present technicians: (17) ['technician_1', 'technician_2', 'technician_3', 'technician_4', 'technician_5', 'technician_6', 'technician_10', 'technician_11', 'technician_13', 'technician_14', 'technician_8', 'technician_9', 'technician_16', 'technician_17', 'technician_18', 'technician_19', 'technician_20']
index.js:1159 INDEX.HTML: Sending PM processing request (after absent selection)...
index.js:1166 INDEX.HTML: PM processing response status: 200
index.js:1170 INDEX.HTML: PM processing response data: {eligible_technicians: {…}, message: 'REP task data prepared.', rep_tasks: Array(7), session_id: 'dl1gcauhysihj6fhklz4ft'}
index.js:1180 INDEX.HTML: repTasks after PM processing: (7) [{…}, {…}, {…}, {…}, {…}, {…}, {…}]
index.js:1181 INDEX.HTML: eligibleTechnicians for REP tasks after PM processing: {8: Array(17), 9: Array(17), 10: Array(17), 11: Array(17), 12: Array(17), 13: Array(17), 14: Array(17)}
index.js:519 INDEX.HTML: Hiding absent modal...
index.js:524 INDEX.HTML: showTaskAssignmentModal called, currentRepTaskIndex: 0 repTasks length: 7
index.js:528 INDEX.HTML: Current task for modal: {id: '8', lines: 'Line_Task_6', mitarbeiter_pro_aufgabe: 11, name: 'Task_7', planned_worktime_min: 30, …}
index.js:560 INDEX.HTML: populateTaskTechnicians called for task ID: 8 Task Details: {id: '8', lines: 'Line_Task_6', mitarbeiter_pro_aufgabe: 11, name: 'Task_7', planned_worktime_min: 30, …}
index.js:1284 Task skipped: {task_id: '8', task_name: 'Task_7', skip_reason: 'asdf', skipped: true}
index.js:524 INDEX.HTML: showTaskAssignmentModal called, currentRepTaskIndex: 1 repTasks length: 7
index.js:528 INDEX.HTML: Current task for modal: {id: '9', lines: 'Line_Task_33', mitarbeiter_pro_aufgabe: 2, name: 'Task_33', planned_worktime_min: 120, …}
index.js:560 INDEX.HTML: populateTaskTechnicians called for task ID: 9 Task Details: {id: '9', lines: 'Line_Task_33', mitarbeiter_pro_aufgabe: 2, name: 'Task_33', planned_worktime_min: 120, …}
index.js:83 Saving state: {hasFile: true, fileSelected: true, fileUploaded: true, filename: 'testsExcel.xlsb', sessionId: 'dl1gcauhysihj6fhklz4ft', …}
index.js:83 Saving state: {hasFile: true, fileSelected: true, fileUploaded: true, filename: 'testsExcel.xlsb', sessionId: 'dl1gcauhysihj6fhklz4ft', …}
index.js:83 Saving state: {hasFile: true, fileSelected: true, fileUploaded: true, filename: 'testsExcel.xlsb', sessionId: 'dl1gcauhysihj6fhklz4ft', …}
index.js:83 Saving state: {hasFile: true, fileSelected: true, fileUploaded: true, filename: 'testsExcel.xlsb', sessionId: 'dl1gcauhysihj6fhklz4ft', …}
index.js:83 Saving state: {hasFile: true, fileSelected: true, fileUploaded: true, filename: 'testsExcel.xlsb', sessionId: 'dl1gcauhysihj6fhklz4ft', …}
index.js:83 Saving state: {hasFile: true, fileSelected: true, fileUploaded: true, filename: 'testsExcel.xlsb', sessionId: 'dl1gcauhysihj6fhklz4ft', …}
index.js:83 Saving state: {hasFile: true, fileSelected: true, fileUploaded: true, filename: 'testsExcel.xlsb', sessionId: 'dl1gcauhysihj6fhklz4ft', …}
index.js:83 Saving state: {hasFile: true, fileSelected: true, fileUploaded: true, filename: 'testsExcel.xlsb', sessionId: 'dl1gcauhysihj6fhklz4ft', …}
index.js:83 Saving state: {hasFile: true, fileSelected: true, fileUploaded: true, filename: 'testsExcel.xlsb', sessionId: 'dl1gcauhysihj6fhklz4ft', …}
index.js:83 Saving state: {hasFile: true, fileSelected: true, fileUploaded: true, filename: 'testsExcel.xlsb', sessionId: 'dl1gcauhysihj6fhklz4ft', …}
index.js:83 Saving state: {hasFile: true, fileSelected: true, fileUploaded: true, filename: 'testsExcel.xlsb', sessionId: 'dl1gcauhysihj6fhklz4ft', …}
index.js:83 Saving state: {hasFile: true, fileSelected: true, fileUploaded: true, filename: 'testsExcel.xlsb', sessionId: 'dl1gcauhysihj6fhklz4ft', …}
index.js:83 Saving state: {hasFile: true, fileSelected: true, fileUploaded: true, filename: 'testsExcel.xlsb', sessionId: 'dl1gcauhysihj6fhklz4ft', …}
index.js:83 Saving state: {hasFile: true, fileSelected: true, fileUploaded: true, filename: 'testsExcel.xlsb', sessionId: 'dl1gcauhysihj6fhklz4ft', …}
index.js:83 Saving state: {hasFile: true, fileSelected: true, fileUploaded: true, filename: 'testsExcel.xlsb', sessionId: 'dl1gcauhysihj6fhklz4ft', …}
index.js:83 Saving state: {hasFile: true, fileSelected: true, fileUploaded: true, filename: 'testsExcel.xlsb', sessionId: 'dl1gcauhysihj6fhklz4ft', …}
index.js:83 Saving state: {hasFile: true, fileSelected: true, fileUploaded: true, filename: 'testsExcel.xlsb', sessionId: 'dl1gcauhysihj6fhklz4ft', …}
index.js:83 Saving state: {hasFile: true, fileSelected: true, fileUploaded: true, filename: 'testsExcel.xlsb', sessionId: 'dl1gcauhysihj6fhklz4ft', …}
index.js:83 Saving state: {hasFile: true, fileSelected: true, fileUploaded: true, filename: 'testsExcel.xlsb', sessionId: 'dl1gcauhysihj6fhklz4ft', …}
main.js?attr=ir0yuGnR2ZuCQCy_5T9MSmcsbHKEgSW3MCH966FmmzHFViuQL0mCyee8pTcXuq79:4018 POST http://127.0.0.1:5000/api/eligible_technicians_for_task 400 (BAD REQUEST)
fetchCallImpl @ main.js?attr=ir0yuGnR2ZuCQCy_5T9MSmcsbHKEgSW3MCH966FmmzHFViuQL0mCyee8pTcXuq79:4018
fetch @ main.js?attr=ir0yuGnR2ZuCQCy_5T9MSmcsbHKEgSW3MCH966FmmzHFViuQL0mCyee8pTcXuq79:4024
(anonymous) @ index.js:1326
index.js:1350 Error fetching eligible technicians for additional task: SyntaxError: Unexpected token '<', "<!doctype "... is not valid JSON
(anonymous) @ index.js:1350
Promise.catch
(anonymous) @ index.js:1349
index.js:456 Message displayed: [ERROR] Could not create additional task. Please try again.
index.js:83 Saving state: {hasFile: true, fileSelected: true, fileUploaded: true, filename: 'testsExcel.xlsb', sessionId: 'dl1gcauhysihj6fhklz4ft', …}
index.js:1237 Task assigned: {task_id: '9', task_name: 'Task_33', technicians: Array(3), required_count: 2, selected_count: 3}
index.js:524 INDEX.HTML: showTaskAssignmentModal called, currentRepTaskIndex: 2 repTasks length: 7
index.js:528 INDEX.HTML: Current task for modal: {id: '10', lines: 'Line_Task_52', mitarbeiter_pro_aufgabe: 2, name: 'Task_52', planned_worktime_min: 60, …}
index.js:560 INDEX.HTML: populateTaskTechnicians called for task ID: 10 Task Details: {id: '10', lines: 'Line_Task_52', mitarbeiter_pro_aufgabe: 2, name: 'Task_52', planned_worktime_min: 60, …}
index.js:1237 Task assigned: {task_id: '10', task_name: 'Task_52', technicians: Array(2), required_count: 2, selected_count: 2}
index.js:524 INDEX.HTML: showTaskAssignmentModal called, currentRepTaskIndex: 3 repTasks length: 7
index.js:528 INDEX.HTML: Current task for modal: {id: '11', lines: 'Line_Task_53', mitarbeiter_pro_aufgabe: 2, name: 'Task_53', planned_worktime_min: 90, …}
index.js:560 INDEX.HTML: populateTaskTechnicians called for task ID: 11 Task Details: {id: '11', lines: 'Line_Task_53', mitarbeiter_pro_aufgabe: 2, name: 'Task_53', planned_worktime_min: 90, …}
index.js:1237 Task assigned: {task_id: '11', task_name: 'Task_53', technicians: Array(2), required_count: 2, selected_count: 2}
index.js:524 INDEX.HTML: showTaskAssignmentModal called, currentRepTaskIndex: 4 repTasks length: 7
index.js:528 INDEX.HTML: Current task for modal: {id: '12', lines: 'Line_Task_54', mitarbeiter_pro_aufgabe: 2, name: 'Task_54', planned_worktime_min: 90, …}
index.js:560 INDEX.HTML: populateTaskTechnicians called for task ID: 12 Task Details: {id: '12', lines: 'Line_Task_54', mitarbeiter_pro_aufgabe: 2, name: 'Task_54', planned_worktime_min: 90, …}
index.js:1237 Task assigned: {task_id: '12', task_name: 'Task_54', technicians: Array(2), required_count: 2, selected_count: 2}
index.js:524 INDEX.HTML: showTaskAssignmentModal called, currentRepTaskIndex: 5 repTasks length: 7
index.js:528 INDEX.HTML: Current task for modal: {id: '13', lines: 'Line_Task_56', mitarbeiter_pro_aufgabe: 2, name: 'Task_56', planned_worktime_min: 90, …}
index.js:560 INDEX.HTML: populateTaskTechnicians called for task ID: 13 Task Details: {id: '13', lines: 'Line_Task_56', mitarbeiter_pro_aufgabe: 2, name: 'Task_56', planned_worktime_min: 90, …}
index.js:1237 Task assigned: {task_id: '13', task_name: 'Task_56', technicians: Array(2), required_count: 2, selected_count: 2}
index.js:524 INDEX.HTML: showTaskAssignmentModal called, currentRepTaskIndex: 6 repTasks length: 7
index.js:528 INDEX.HTML: Current task for modal: {id: '14', lines: 'Line_Task_57', mitarbeiter_pro_aufgabe: 2, name: 'Task_57', planned_worktime_min: 90, …}
index.js:560 INDEX.HTML: populateTaskTechnicians called for task ID: 14 Task Details: {id: '14', lines: 'Line_Task_57', mitarbeiter_pro_aufgabe: 2, name: 'Task_57', planned_worktime_min: 90, …}
index.js:1237 Task assigned: {task_id: '14', task_name: 'Task_57', technicians: Array(2), required_count: 2, selected_count: 2}
main.js?attr=ir0yuGnR2ZuCQCy_5T9MSmcsbHKEgSW3MCH966FmmzHFViuQL0mCyee8pTcXuq79:4018 POST http://127.0.0.1:5000/generate_dashboard 400 (BAD REQUEST)
fetchCallImpl @ main.js?attr=ir0yuGnR2ZuCQCy_5T9MSmcsbHKEgSW3MCH966FmmzHFViuQL0mCyee8pTcXuq79:4018
fetch @ main.js?attr=ir0yuGnR2ZuCQCy_5T9MSmcsbHKEgSW3MCH966FmmzHFViuQL0mCyee8pTcXuq79:4024
submitFinalAssignments @ index.js:690
(anonymous) @ index.js:1249
index.js:695 INDEX.HTML: /generate_dashboard response status: 400
index.js:699 INDEX.HTML: /generate_dashboard response data: {message: 'Invalid session. Re-upload Excel.'}
index.js:456 Message displayed: [SUCCESS] Invalid session. Re-upload Excel.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2-MediumMedium priority issue

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions