基本的に、各ピクセルが午前 9 時から午後 9 時までの 1 分を表す高さ 720 ピクセルのコンテナーであり、幅が 620 ピクセル (左右から 10 ピクセルのパディング) のイベント システムに取り組んでいます。
暦体系の自然な要件は次のとおりです。
- オブジェクトは、視覚的に重ならないように配置する必要があります。
- 時間帯に 1 つのイベントがある場合、その幅は 600px になります。
- すべての衝突イベントは、衝突する他のすべてのイベントと同じ幅でなければなりません。
- イベントは、最初の制約を守りながら、可能な限り最大の幅を使用する必要があります。
入力は次のような配列になります。
[
{id : 1, start : 30, end : 150}, // an event from 9:30am to 11:30am
{id : 2, start : 540, end : 600}, // an event from 6pm to 7pm
{id : 3, start : 560, end : 620}, // an event from 6:20pm to 7:20pm
{id : 4, start : 610, end : 670} // an event from 7:10pm to 8:10pm
]
必要なレイアウトを作成しましたが、JavaScript の部分で立ち往生しています :( これは私がこれまでに持っているものです:
var Calendar = function() {
var layOutDay = function(events) {
var eventsLength = events.length;
if (! eventsLength) return false;
// sort events
events.sort(function(a, b){return a.start - b.start;});
for (var i = 0; i < eventsLength; i++) {
// not sure what is next
}
};
return {
layOutDay : layOutDay,
}
}();
div を作成し、上記の要件に従って配置する必要があります。
どんな助けでも大歓迎です。