From 8b1093dfe071d4f97a3e9563b9f6b17b77af060c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adriana=20Ceri=C4=87?= <62163307+AdrianaCeric@users.noreply.github.com> Date: Wed, 25 Oct 2023 11:41:54 -0400 Subject: [PATCH] fix: address PR comments and cleanup --- .../components/timetable/EditableCell.js | 25 ++++--------------- .../components/timetable/TimetableGrid.js | 2 +- lib/editor/util/timetable.js | 22 ++++++++-------- 3 files changed, 17 insertions(+), 32 deletions(-) diff --git a/lib/editor/components/timetable/EditableCell.js b/lib/editor/components/timetable/EditableCell.js index cfa18a8a7..b9fc5766c 100644 --- a/lib/editor/components/timetable/EditableCell.js +++ b/lib/editor/components/timetable/EditableCell.js @@ -205,24 +205,19 @@ function EditableCell (props: Props) { onStopEditing() } - let alertShown = false const save = () => { const {column} = props - const {data} = state + const {data, originalData} = state - if (column.type === 'TEXT') { - if (data !== state.originalData) { - _handleSave(data) - } else { - cancel() - } + if (column.type === 'TEXT' && data !== originalData) { + _handleSave(data) } else if (column.type === 'SECONDS') { const value = +data if (!isNaN(value) && value >= 0) { _handleSave(value) } else { - window.alert('Please enter a positive number.') + alert('Please enter a positive number.') cancel() } } else if (isTimeFormat(column.type)) { @@ -231,23 +226,13 @@ function EditableCell (props: Props) { if (parsedValue !== null) { _handleSave(parsedValue) } else { - if (!alertShown) { - alert('Please enter a valid time format') - alertShown = true - } cancel() } } } const handleBlur = () => { - setState((prevState) => ({ - ...prevState, - isEditing: false, - isFocused: false, - data: prevState.data - })) - props.onStopEditing() + save() } const handleChange = (evt) => { diff --git a/lib/editor/components/timetable/TimetableGrid.js b/lib/editor/components/timetable/TimetableGrid.js index 21dae65f3..54f9f6a1d 100644 --- a/lib/editor/components/timetable/TimetableGrid.js +++ b/lib/editor/components/timetable/TimetableGrid.js @@ -386,7 +386,7 @@ export default class TimetableGrid extends Component { addNewRow() } // Iterate over number of columns in pasted selection - for (var j = 0; j < pastedRows[i].length; j++) { + for (var j = 0; j < pastedRows[0].length; j++) { activeCol = colIndex + j const col = columns[activeCol] const path = `${activeRow}.${col.key}` diff --git a/lib/editor/util/timetable.js b/lib/editor/util/timetable.js index 798afc501..9d6a15306 100644 --- a/lib/editor/util/timetable.js +++ b/lib/editor/util/timetable.js @@ -44,23 +44,23 @@ export function getHeaderColumns ( * Handles pasted data from clipboard (e.g. from CSV file) * If departure/arrival time cell, pastes in time format, otherwise returns string as is */ -let alertShown = false +let alertTimeout export function parseCellValue (timeString: string, col: TimetableColumn) { + const date = moment().startOf('day').format('YYYY-MM-DD') + const parsedDate = moment(date + 'T' + timeString, TIMETABLE_FORMATS, true) + + clearTimeout(alertTimeout) + if (isTimeFormat(col.type)) { - const date = moment().startOf('day').format('YYYY-MM-DD') - const parsedDate = moment(date + 'T' + timeString, TIMETABLE_FORMATS, true) if (!parsedDate.isValid()) { - if (!alertShown) { - alert('Please enter a valid time format') - alertShown = true - } + alertTimeout = setTimeout(() => alert('Please enter a valid time format'), 500) return null - } else { - return moment(date + 'T' + timeString, TIMETABLE_FORMATS).diff(date, 'seconds') } - } else { - return timeString + + return moment(date + 'T' + timeString, TIMETABLE_FORMATS).diff(date, 'seconds') } + + return timeString } export const LEFT_COLUMN_WIDTH = 30