ここで私のコードに少し論理的な問題があり、誰かが私を正しい方向に向けることができるかどうか疑問に思っていました.
制約:
- プッシュされた各アイテムはイベントになり、「名前」でグループ化され、チャートにインラインで表示されます。
- EPC、M1、または M2 の値は null の場合があります。
- イベントは、最初の非 null タイムラインの「開始」と次の非 null タイムライン値の「終了」で作成する必要があります。(どれも null 値を含まないため、m2 を超えてチェックする必要はありません)。すべてのグループに少なくとも 4 つのマイルストーンが必要です。
- 「グループ」がなくなるまで続行する必要があります (content[i].name)。
現在、私のコードにはいくつかの問題があります。
- グループごとに 1 つのイベントのみを作成します。
- EPC は反復で考慮されず、start で null 以外の場合は処理されません。
コードは次のとおりです。
getMileStone = function(obj) {
if(!obj) { return };
propCounter = 1;
newcount = 0;
for(propCounter = 1; propCounter <= 7; propCounter++) {
if(obj.timeline["m" + propCounter]) {
data[newcount] = {key: "m" + propCounter, value: obj.timeline["m" + propCounter]};
return data[newcount];
newcount++;
}
}
};
getSecondStone = function(obj) {
switch(getMileStone(current).key){
case 'm1': return {value: obj.timeline['m2']};
break;
case 'm2': return {value: obj.timeline['m3']};
break;
case 'm3': return {value: obj.timeline['m4']};
break;
case 'm4': return {value: obj.timeline['m5']};
break;
case 'm5': return {value: obj.timeline['m6']};
break;
case 'm6': return {value: obj.timeline['m7']};
break;
default: return {value: obj.timeline['m1']};
}
};
for(i=0;i< content.length;i++) {
current = content[i];
firstMileStone = getMileStone(current);
secondMileStone = getSecondStone(current);
result.push({
'start': new Date(current.epc || firstMileStone.value),
'end': new Date(current.m1 || secondMileStone.value),
'content': firstMileStone.key,
'group' : current.name,
'className' : firstMileStone.key
});
}
そして、読み取られる配列の内容は次のとおりです。
content = [{
"name": "5-HP-N/A-N/A-F8",
"node": {
"name": "5",
"id": 14
},
"timeline": {
"epc": null,
"m1": null,
"m2": null,
"m3": 1554087600000,
"m4": 1593572400000,
"m5": 1625108400000,
"m6": 1641006000000,
"m7": 1656644400000
},
"fab": {
"name": "F8",
"id": 1
}
},
{
"name": "7-HP-N/A-N/A-F8",
"node": {
"name": "7",
"id": 15
},
"timeline": {
"epc": null,
"m1": null,
"m2": null,
"m3": 1491015600000,
"m4": 1530414000000,
"m5": 1561950000000,
"m6": 1577847600000,
"m7": 1593572400000
},
"fab": {
"name": "F8",
"id": 1
}
},
{
"name": "5-XM-N/A-PLT-F8",
"node": {
"name": "5",
"id": 14
},
"timeline": {
"epc": null,
"m1": null,
"m2": null,
"m3": 1554087600000,
"m4": 1593572400000,
"m5": 1625108400000,
"m6": 1641006000000,
"m7": 1656644400000
},
"fab": {
"name": "F8",
"id": 1
}
},
{
"name": "40-LP-TFS-FSL-F7",
"node": {
"name": "40",
"id": 4
},
"timeline": {
"epc": 1349060400000,
"m1": null,
"m2": null,
"m3": 1262314800000,
"m4": 1301626800000,
"m5": 1333249200000,
"m6": 1341111600000,
"m7": 1357009200000
},
"fab": {
"name": "F7",
"id": 3
}
},
{
"name": "40-LP-SST-TI-F7",
"node": {
"name": "40",
"id": 4
},
"timeline": {
"epc": 1349060400000,
"m1": null,
"m2": null,
"m3": 1262314800000,
"m4": 1301626800000,
"m5": 1333249200000,
"m6": 1341111600000,
"m7": 1357009200000
},
"fab": {
"name": "F7",
"id": 3
}
},
{
"name": "28-LPQ-TN3-QCOM-F1",
"node": {
"name": "28",
"id": 2
},
"timeline": {
"epc": 1349060400000,
"m1": null,
"m2": null,
"m3": 1285902000000,
"m4": 1325386800000,
"m5": 1357009200000,
"m6": 1372647600000,
"m7": 1388545200000
},
"fab": {
"name": "F1",
"id": 2
}
}];
現在、作成されたすべてのイベントも m3 で始まります。助けてくれてありがとう!