皆さん、こんにちは。
現在、シフト管理システムを構築しており、特定のシフト期間中に休暇を取っているユーザーをフィルターで除外したいと考えています。
期間の重複を確認する標準的なロジックは以下の通りです:
休暇開始日 <= シフト終了日 AND 休暇終了日 >= シフト開始日
課題:
Data Scope(データ範囲)のフィルターUIにおいて、休暇データはリレーション(urlaubs-fk)を介してリンクされています。ユーザーは複数の休暇を持つことができるため、このフィールドは単一の日付ではなく日付の配列 を返します。
この配列を、「Parent Popup Record(親ポップアップレコード)」から取得した単一のシフト日付と比較しようとしていますが、標準の <= や >= 演算子は、配列と単一の値を比較する際には正しく機能しないようです。
私のアプローチと質問:
NocoBaseのフィルターUIで、「Exists(存在する)」または「Any(いずれか)」のロジックを使用する方法はありますか?要するに、*「関連する休暇レコードの『少なくとも1つ』が重複条件を満たすレコードをフィルタリングする」*という設定をしたいです。
それとも、Rollup(ロールアップ)やFormula(計算式)フィールドを先に使用して解決するのが推奨されるアプローチでしょうか?
アドバイスやベストプラクティスがあれば、ぜひ教えてください!