Enhance scheduling and drag-and-drop functionality in the Calendar component
- Improved drag-and-drop experience for event scheduling with visual feedback and better cursor styles. - Added state management for tracking repetitions, including locked schedules and currently scheduling repetitions. - Implemented re-staggering logic to prevent overlap of scheduled events. - Enhanced event generation to include time points for soaking, airdrying, and cracking phases. - Updated the calendar to preserve and restore scroll position during event updates. - Refactored event handling to ensure smooth interaction and improved user experience.
This commit is contained in:
@@ -86,15 +86,13 @@ ON CONFLICT (experiment_number, phase_id) DO NOTHING;
|
||||
-- Create soaking records for Phase 2 JC experiments (1-20)
|
||||
INSERT INTO public.soaking (
|
||||
experiment_id,
|
||||
experiment_phase_id,
|
||||
scheduled_start_time,
|
||||
soaking_duration_minutes,
|
||||
scheduled_end_time,
|
||||
created_by
|
||||
)
|
||||
SELECT
|
||||
e.experiment_number,
|
||||
e.phase_id,
|
||||
e.id,
|
||||
NOW() + (e.experiment_number) * INTERVAL '1 day',
|
||||
CASE e.experiment_number
|
||||
WHEN 1 THEN 34 * 60 -- 34 hours = 2040 minutes
|
||||
@@ -154,15 +152,13 @@ ON CONFLICT DO NOTHING;
|
||||
-- Create airdrying records for Phase 2 JC experiments (1-20)
|
||||
INSERT INTO public.airdrying (
|
||||
experiment_id,
|
||||
experiment_phase_id,
|
||||
scheduled_start_time,
|
||||
duration_minutes,
|
||||
scheduled_end_time,
|
||||
created_by
|
||||
)
|
||||
SELECT
|
||||
e.experiment_number,
|
||||
e.phase_id,
|
||||
e.id,
|
||||
NOW() + (e.experiment_number) * INTERVAL '1 day' + INTERVAL '2 days', -- Start 2 days after soaking
|
||||
CASE e.experiment_number
|
||||
WHEN 1 THEN 19 -- 19 minutes
|
||||
@@ -222,14 +218,12 @@ ON CONFLICT DO NOTHING;
|
||||
-- Create cracking records for Phase 2 JC experiments (1-20)
|
||||
INSERT INTO public.cracking (
|
||||
experiment_id,
|
||||
experiment_phase_id,
|
||||
machine_type_id,
|
||||
scheduled_start_time,
|
||||
created_by
|
||||
)
|
||||
SELECT
|
||||
e.experiment_number,
|
||||
e.phase_id,
|
||||
e.id,
|
||||
(SELECT id FROM public.machine_types WHERE name = 'JC Cracker'),
|
||||
NOW() + (e.experiment_number) * INTERVAL '1 day' + INTERVAL '3 days', -- Start 3 days after soaking
|
||||
e.created_by
|
||||
@@ -243,15 +237,14 @@ ON CONFLICT DO NOTHING;
|
||||
-- =============================================
|
||||
|
||||
-- Create JC cracker parameters for Phase 2 JC experiments (1-20)
|
||||
-- First create the JC cracker parameters
|
||||
INSERT INTO public.jc_cracker_parameters (
|
||||
cracking_id,
|
||||
plate_contact_frequency_hz,
|
||||
throughput_rate_pecans_sec,
|
||||
crush_amount_in,
|
||||
entry_exit_height_diff_in
|
||||
)
|
||||
SELECT
|
||||
c.id,
|
||||
SELECT
|
||||
CASE e.experiment_number
|
||||
WHEN 1 THEN 53.0
|
||||
WHEN 2 THEN 34.0
|
||||
@@ -341,11 +334,31 @@ SELECT
|
||||
WHEN 20 THEN -0.09
|
||||
END
|
||||
FROM public.experiments e
|
||||
JOIN public.cracking c ON c.experiment_id = e.experiment_number AND c.experiment_phase_id = e.phase_id
|
||||
WHERE e.experiment_number BETWEEN 1 AND 20
|
||||
AND e.phase_id = (SELECT id FROM public.experiment_phases WHERE name = 'Phase 2 of JC Experiments')
|
||||
ON CONFLICT DO NOTHING;
|
||||
|
||||
-- Now update the cracking records to reference the JC cracker parameters
|
||||
-- Match them by the order they were created
|
||||
WITH parameter_mapping AS (
|
||||
SELECT
|
||||
e.experiment_number,
|
||||
jcp.id as param_id,
|
||||
ROW_NUMBER() OVER (ORDER BY e.experiment_number) as exp_rn,
|
||||
ROW_NUMBER() OVER (ORDER BY jcp.created_at) as param_rn
|
||||
FROM public.experiments e
|
||||
CROSS JOIN public.jc_cracker_parameters jcp
|
||||
WHERE e.experiment_number BETWEEN 1 AND 20
|
||||
AND e.phase_id = (SELECT id FROM public.experiment_phases WHERE name = 'Phase 2 of JC Experiments')
|
||||
)
|
||||
UPDATE public.cracking c
|
||||
SET jc_cracker_parameters_id = pm.param_id
|
||||
FROM parameter_mapping pm
|
||||
JOIN public.experiments e ON c.experiment_id = e.id
|
||||
WHERE e.experiment_number = pm.experiment_number
|
||||
AND pm.exp_rn = pm.param_rn
|
||||
AND c.jc_cracker_parameters_id IS NULL;
|
||||
|
||||
-- =============================================
|
||||
-- CREATE EXPERIMENT REPETITIONS FOR PHASE 2 JC EXPERIMENTS
|
||||
-- =============================================
|
||||
@@ -354,14 +367,12 @@ ON CONFLICT DO NOTHING;
|
||||
-- Each experiment needs 3 repetitions
|
||||
INSERT INTO public.experiment_repetitions (
|
||||
experiment_id,
|
||||
experiment_phase_id,
|
||||
repetition_number,
|
||||
status,
|
||||
created_by
|
||||
)
|
||||
SELECT
|
||||
e.experiment_number,
|
||||
e.phase_id,
|
||||
e.id,
|
||||
rep_num,
|
||||
'pending',
|
||||
e.created_by
|
||||
|
||||
Reference in New Issue
Block a user