feat: update elesite integration to prioritize non-empty formation units and improve sorting logic
This commit is contained in:
@@ -372,15 +372,27 @@ export const injectJavascriptData = ({
|
||||
return null;
|
||||
}
|
||||
const results = [];
|
||||
for (const entry of elesiteData) {
|
||||
// 高松(left_station)側のユニットを先に表示
|
||||
// (heading_to === "left") === is_leading が true → 高松(left)端のユニット
|
||||
const sortedElesiteData = elesiteData.slice().sort((a, b) => {
|
||||
const aT = a.trains && a.trains.find(t => t.train_number === trainNumber);
|
||||
const bT = b.trains && b.trains.find(t => t.train_number === trainNumber);
|
||||
const aNav = aT && aT.nav;
|
||||
const bNav = bT && bT.nav;
|
||||
const aIsLeft = (aNav && aNav.heading_to === 'left') === (aNav && aNav.is_leading === true);
|
||||
const bIsLeft = (bNav && bNav.heading_to === 'left') === (bNav && bNav.is_leading === true);
|
||||
if (aIsLeft === bIsLeft) return 0;
|
||||
return aIsLeft ? -1 : 1;
|
||||
});
|
||||
for (const entry of sortedElesiteData) {
|
||||
if (!entry.trains) continue;
|
||||
const found = entry.trains.find(train => train.train_number === trainNumber);
|
||||
if (!found) continue;
|
||||
// formation_config.units 優先、なければ formations
|
||||
// units が1件以上ある場合のみ編成名を返す(空 units は報告なし扱い)
|
||||
const units = entry.formation_config && entry.formation_config.units;
|
||||
const formText = (units && units.length)
|
||||
? units.map(u => u.formation).join('+')
|
||||
: (entry.formations && entry.formations.trim() !== '' ? entry.formations : null);
|
||||
: null;
|
||||
if (formText) results.push(formText);
|
||||
}
|
||||
return results.length > 0 ? results.join(', ') : null;
|
||||
|
||||
Reference in New Issue
Block a user