Skip to content

Commit d3a127d

Browse files
committed
Update other members section
1 parent a744a73 commit d3a127d

File tree

2 files changed

+64
-57
lines changed

2 files changed

+64
-57
lines changed

data/members.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,3 +148,7 @@ members:
148148
- name: "Zack Koppert"
149149
role: "Member"
150150
area: "United States of America"
151+
152+
- name: "Dmitrii Sugrobov"
153+
role: "Member"
154+
# EN: This member is not listed in the map.

js/app.js

Lines changed: 60 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -143,44 +143,43 @@ function calculateCountryColors() {
143143
areaToCountryCode[country['alpha-3'].toLowerCase()] = country['country-code'];
144144
});
145145

146-
// メンバーの国コードを収集
147-
const memberData = members.map(member => {
148-
const area = member.area.toLowerCase();
149-
console.log('Processing member area:', member.area, 'Available areas:', Object.keys(AREA_DATA));
150-
151-
// 特別な地域の処理(例:usa_texas)
152-
if (area.includes('_')) {
153-
const [countryPart, regionPart] = area.split('_');
154-
const countryCode = areaToCountryCode[countryPart];
155-
const areaKey = `${countryCode}_${regionPart}`;
156-
if (AREA_DATA[areaKey]) {
157-
return {
158-
country: getCountryAlpha3(countryCode),
159-
area: member.area
160-
};
146+
// メンバーの国コードを収集(areaが設定されているメンバーのみ)
147+
const memberData = members
148+
.filter(member => member.area && member.area !== 'Other') // Other や undefined を除外
149+
.map(member => {
150+
const area = member.area.toLowerCase();
151+
152+
// 特別な地域の処理(例:usa_texas)
153+
if (area.includes('_')) {
154+
const [countryPart, regionPart] = area.split('_');
155+
const countryCode = areaToCountryCode[countryPart];
156+
const areaKey = `${countryCode}_${regionPart}`;
157+
if (AREA_DATA[areaKey]) {
158+
return {
159+
country: getCountryAlpha3(countryCode),
160+
area: member.area
161+
};
162+
}
161163
}
162-
}
163164

164-
// 通常の国の処理
165-
const countryCode = areaToCountryCode[area];
166-
if (!countryCode) {
167-
console.warn(`Area data not found for member area: ${member.area}`);
168-
return null;
169-
}
170-
171-
// 国コードで直接AREA_DATAを検索
172-
if (!AREA_DATA[countryCode]) {
173-
console.warn(`Area data not found for country code: ${countryCode}`);
174-
return null;
175-
}
165+
// 通常の国の処理
166+
const countryCode = areaToCountryCode[area];
167+
if (!countryCode) {
168+
console.warn(`Area data not found for member area: ${member.area}`);
169+
return null;
170+
}
176171

177-
return {
178-
country: getCountryAlpha3(countryCode),
179-
area: member.area
180-
};
181-
}).filter(Boolean);
172+
// 国コードで直接AREA_DATAを検索
173+
if (!AREA_DATA[countryCode]) {
174+
console.warn(`Area data not found for country code: ${countryCode}`);
175+
return null;
176+
}
182177

183-
console.log('Member data:', memberData);
178+
return {
179+
country: getCountryAlpha3(countryCode),
180+
area: member.area
181+
};
182+
}).filter(Boolean);
184183

185184
return ({ id }) => {
186185
const countryData = countryCodesData.find(c => c['country-code'] === id);
@@ -206,17 +205,20 @@ function updateMembersList() {
206205
// 地域ごとにメンバーをグループ化
207206
const groupedMembers = {};
208207
members.forEach(member => {
209-
if (!groupedMembers[member.area]) {
210-
groupedMembers[member.area] = [];
208+
const area = member.area || 'Other'; // エリアが未設定の場合は 'Other' を使用
209+
if (!groupedMembers[area]) {
210+
groupedMembers[area] = [];
211211
}
212-
groupedMembers[member.area].push(member);
212+
groupedMembers[area].push(member);
213213
});
214214

215215
// アクティブな地域を追跡
216216
let activeCard = null;
217217

218-
// エリアをアルファベット順にソート
218+
// エリアをアルファベット順にソート(Otherは最後に配置)
219219
const sortedAreas = Object.keys(groupedMembers).sort((a, b) => {
220+
if (a === 'Other') return 1;
221+
if (b === 'Other') return -1;
220222
return a.toLowerCase().localeCompare(b.toLowerCase());
221223
});
222224

@@ -226,29 +228,30 @@ function updateMembersList() {
226228
const regionCard = document.createElement('div');
227229
regionCard.className = 'region-card';
228230

229-
// エリアコードを取得
231+
// エリアコードを取得(Otherの場合はスキップ)
230232
let areaData;
231233
let countryCode;
232234

233-
if (area.includes('_')) {
234-
// 地域の場合(例:840_texas)
235-
[countryCode] = area.split('_');
236-
areaData = AREA_DATA[area];
237-
} else {
238-
// 国の場合
239-
countryCode = areaToCountryCode[area.toLowerCase()];
240-
areaData = AREA_DATA[countryCode];
235+
if (area !== 'Other') {
236+
if (area.includes('_')) {
237+
// 地域の場合(例:840_texas)
238+
[countryCode] = area.split('_');
239+
areaData = AREA_DATA[area];
240+
} else {
241+
// 国の場合
242+
countryCode = areaToCountryCode[area.toLowerCase()];
243+
areaData = AREA_DATA[countryCode];
244+
}
241245
}
242246

243-
if (!areaData) {
244-
console.warn(`Area data not found for: ${area}`);
245-
return;
246-
}
247-
248247
// データ属性とIDを追加
249248
regionCard.setAttribute('data-area', area);
250-
regionCard.setAttribute('data-country-code', countryCode);
251-
regionCard.id = `region-${countryCode}`;
249+
if (countryCode) {
250+
regionCard.setAttribute('data-country-code', countryCode);
251+
regionCard.id = `region-${countryCode}`;
252+
} else {
253+
regionCard.id = 'region-other';
254+
}
252255

253256
// メンバーを役職でソート
254257
const sortedMembers = areaMembers.sort((a, b) => {
@@ -274,7 +277,7 @@ function updateMembersList() {
274277
});
275278

276279
regionCard.innerHTML = `
277-
<h3>${areaData.name || area}</h3>
280+
<h3>${area === 'Other' ? 'Other' : (areaData?.name || area)}</h3>
278281
<div class="member-count">${sortedMembers.length} member(s)</div>
279282
<div class="member-list">
280283
${sortedMembers.map(member => `
@@ -315,8 +318,8 @@ function updateMembersList() {
315318
regionCard.classList.add('active');
316319
activeCard = regionCard;
317320

318-
if (areaData && areaData.center) {
319-
// 地球儀を該当地域に移動
321+
if (area !== 'Other' && areaData && areaData.center) {
322+
// 地球儀を該当地域に移動(Otherの場合は移動しない)
320323
globe.pointOfView({
321324
lat: areaData.center[1],
322325
lng: areaData.center[0],

0 commit comments

Comments
 (0)