From 6924ef2aa1156bf33a8f442b12ffe52466047430 Mon Sep 17 00:00:00 2001 From: EthanHealy01 Date: Wed, 17 Sep 2025 20:56:19 +0100 Subject: [PATCH] allow even and odd to be clicked before any other terms --- .../pageEditor/bulkSelectionPanel/BulkSelection.ts | 5 +++-- .../pageEditor/bulkSelectionPanel/OperatorsSection.tsx | 6 ++---- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/frontend/src/components/pageEditor/bulkSelectionPanel/BulkSelection.ts b/frontend/src/components/pageEditor/bulkSelectionPanel/BulkSelection.ts index 8b54b9d2b..d99b03a51 100644 --- a/frontend/src/components/pageEditor/bulkSelectionPanel/BulkSelection.ts +++ b/frontend/src/components/pageEditor/bulkSelectionPanel/BulkSelection.ts @@ -21,10 +21,9 @@ export function appendExpression(currentInput: string, expr: string): string { // Produces a trailing space to allow the next token to be typed naturally. export function insertOperatorSmart(currentInput: string, op: LogicalOperator): string { const text = (currentInput || '').trim(); - if (text.length === 0) return `${op} `; - // Handle 'even' and 'odd' as page selection expressions, not logical operators if (op === 'even' || op === 'odd') { + if (text.length === 0) return `${op} `; // If current input ends with a logical operator, append the page selection with proper spacing const endsWithOperator = /(\b(and|not|or)\s*|[&|,!]\s*)$/i.test(text); if (endsWithOperator) { @@ -34,6 +33,8 @@ export function insertOperatorSmart(currentInput: string, op: LogicalOperator): } return `${text} or ${op} `; } + + if (text.length === 0) return `${op} `; // Extract up to the last two operator tokens (words or symbols) from the end const tokens: string[] = []; diff --git a/frontend/src/components/pageEditor/bulkSelectionPanel/OperatorsSection.tsx b/frontend/src/components/pageEditor/bulkSelectionPanel/OperatorsSection.tsx index 61cd508bb..37d35953c 100644 --- a/frontend/src/components/pageEditor/bulkSelectionPanel/OperatorsSection.tsx +++ b/frontend/src/components/pageEditor/bulkSelectionPanel/OperatorsSection.tsx @@ -53,8 +53,7 @@ const OperatorsSection = ({ csvInput, onInsertOperator }: OperatorsSectionProps) variant="outline" className={classes.operatorChip} onClick={() => onInsertOperator('even')} - disabled={!csvInput.trim()} - title="Combine selections (both conditions must be true)" + title="Select all even-numbered pages (2, 4, 6, 8...)" > even @@ -63,8 +62,7 @@ const OperatorsSection = ({ csvInput, onInsertOperator }: OperatorsSectionProps) variant="outline" className={classes.operatorChip} onClick={() => onInsertOperator('odd')} - disabled={!csvInput.trim()} - title="Add to selection (either condition can be true)" + title="Select all odd-numbered pages (1, 3, 5, 7...)" > odd