0

これは説明するのが少し難しい問題ですが、最善を尽くします。

イベントカレンダーがあります。これらには非稼働日があります。イベントの一部が非稼働日に到着すると、その日は稼働日に達するまで延長されます。ここを参照してください:

オレンジ色の 1 日イベントがあります。 ここに画像の説明を入力

非稼働日にドラッグすると、次のように拡張されます。

ここに画像の説明を入力

これはうまく機能し、うまく機能します。これが問題です。一度に表示できるカレンダーは 2 週間のみです。したがって、最初に、範囲内で開始、終了、または該当する可視イベントをフェッチします。次に、範囲の非稼働日をフェッチし、非稼働日を動的にその長さに追加します。

問題は次のとおりです。

1 月 28 日に開始し、1 月 29 日に終了するイベントがあるとします。これは、取得されないことを意味します。しかし、非稼働日のため、2 月 6 日に終了します。最初のステップでそれを取得しなかったため、2 月 4 日から 15 日まで表示されません。それは本質的に私の問題です。

単純な解決策は、すべてのイベントとすべての非稼働日を取得し、すべての終了日を動的に事前計算してから、表示されている日をフィルタリングすることです。しかし、それは非常に速く非常に高価になります。

しかし、私は他の解決策を考えることはできません。動的である必要があります。O(N^2) 以外の方法でこれを解決する方法について、創造的なアイデアを持っている人はいますか? ソリューションの概要だけでも非常に役立ちます。必要に応じてデータベースを変更してもかまいません。

現在、スケジュールには開始日と時間があります。さまざまな従業員がさまざまな時間に勤務するため、イベントの長さを動的に計算します。そのため、静的な終了日を設定することはできません。

4

0 に答える 0