Skip to content

Commit cc8116d

Browse files
committed
Add 'Where' column in saved list table
1 parent 68c11a8 commit cc8116d

File tree

2 files changed

+66
-22
lines changed

2 files changed

+66
-22
lines changed

src/assets/_locales/en/messages.json

+3
Original file line numberDiff line numberDiff line change
@@ -73,5 +73,8 @@
7373
},
7474
"use_this_item": {
7575
"message": "Use this item"
76+
},
77+
"where": {
78+
"message": "Where"
7679
}
7780
}

src/partListTableHelper.tsx

+63-22
Original file line numberDiff line numberDiff line change
@@ -69,16 +69,15 @@ export function addKakakuColumns(
6969
if (options?.pppHidden) {
7070
partPickerPriceCell.style.display = 'none';
7171
}
72-
const kakakuHeaderPriceCell = document.createElement('th');
73-
kakakuHeaderPriceCell.dataset.kakaku = 'true';
74-
const kakakuDotCom = browser.i18n.getMessage('kakaku_com');
75-
const priceIntlStr = browser.i18n.getMessage('Price');
76-
kakakuHeaderPriceCell.innerHTML = `${kakakuDotCom}<br>${priceIntlStr}`;
77-
kakakuHeaderPriceCell.style.paddingRight = '1rem';
78-
kakakuHeaderPriceCell.style.minWidth = '9rem';
79-
// headerRow.insertBefore(kakakuHeaderPriceCell, partPickerPriceCell);
72+
const kakakuHeaderPriceCell = createKakakuPriceHeaderCell();
8073
insertAfter(kakakuHeaderPriceCell, partPickerPriceCell);
8174

75+
if (!headerRow.querySelector('th.th__where')) {
76+
// add where column for saved parts list table
77+
const whereHeaderCell = createWhereHeaderCell();
78+
insertAfter(whereHeaderCell, kakakuHeaderPriceCell);
79+
}
80+
8281
// fix buy col width
8382
const buyHeader: HTMLTableCellElement | null =
8483
headerRow.querySelector('th.th__buy');
@@ -102,12 +101,7 @@ export function addKakakuColumns(
102101
if (options?.pppHidden) {
103102
priceCell.style.display = 'none';
104103
}
105-
const kakakuTotalPriceCell = document.createElement('td');
106-
kakakuTotalPriceCell.dataset.kakaku = 'true';
107-
kakakuTotalPriceCell.style.fontSize = '1.25rem';
108-
kakakuTotalPriceCell.style.fontWeight = '700';
109-
kakakuTotalPriceCell.textContent = '¥0';
110-
// kakakuTotalPriceCell = totalRow.insertBefore(kakakuTotalPriceCell, priceCell);
104+
const kakakuTotalPriceCell = createTotalPriceCell();
111105
insertAfter(kakakuTotalPriceCell, priceCell);
112106

113107
const rows: NodeListOf<HTMLTableRowElement> = partListTable.querySelectorAll(
@@ -136,23 +130,23 @@ export function addKakakuColumns(
136130
if (options?.pppHidden) {
137131
priceCell.style.display = 'none';
138132
}
139-
const kakakuPriceCell = document.createElement('td');
140-
kakakuPriceCell.dataset.kakaku = 'true';
141-
kakakuPriceCell.textContent = '';
142-
// kakakuPriceCell = row.insertBefore(kakakuPriceCell, priceCell);
133+
const kakakuPriceCell = createPriceCell();
143134
insertAfter(kakakuPriceCell, priceCell);
144135

145-
// get name cell
136+
let whereCell: HTMLTableCellElement | null =
137+
row.querySelector('td.td__where');
138+
if (!whereCell) {
139+
whereCell = createWhereCell();
140+
insertAfter(whereCell, kakakuPriceCell);
141+
}
142+
146143
const nameCell: HTMLTableCellElement | null =
147144
row.querySelector('td.td__name');
148145

149146
const buyButton: HTMLAnchorElement | null = row.querySelector(
150147
'td.td__buy > a.button',
151148
);
152149

153-
const whereCell: HTMLTableCellElement | null =
154-
row.querySelector('td.td__where');
155-
156150
const part = parts[i];
157151
if (!part) {
158152
return;
@@ -211,6 +205,52 @@ export function addKakakuColumns(
211205
partListTable.dataset.kakaku = 'true';
212206
}
213207

208+
function createKakakuPriceHeaderCell() {
209+
const kakakuHeaderPriceCell = document.createElement('th');
210+
kakakuHeaderPriceCell.dataset.kakaku = 'true';
211+
const kakakuDotCom = browser.i18n.getMessage('kakaku_com');
212+
const priceIntlStr = browser.i18n.getMessage('Price');
213+
kakakuHeaderPriceCell.innerHTML = `${kakakuDotCom}<br>${priceIntlStr}`;
214+
kakakuHeaderPriceCell.style.paddingRight = '1rem';
215+
kakakuHeaderPriceCell.style.minWidth = '9rem';
216+
return kakakuHeaderPriceCell;
217+
}
218+
219+
function createWhereHeaderCell() {
220+
const whereHeaderCell = document.createElement('th');
221+
whereHeaderCell.dataset.kakaku = 'true';
222+
whereHeaderCell.textContent = browser.i18n.getMessage('where');
223+
whereHeaderCell.classList.add('th__where');
224+
return whereHeaderCell;
225+
}
226+
227+
function createTotalPriceCell() {
228+
const kakakuTotalPriceCell = document.createElement('td');
229+
kakakuTotalPriceCell.dataset.kakaku = 'true';
230+
kakakuTotalPriceCell.style.fontSize = '1.25rem';
231+
kakakuTotalPriceCell.style.fontWeight = '700';
232+
kakakuTotalPriceCell.textContent = '¥0';
233+
return kakakuTotalPriceCell;
234+
}
235+
236+
function createPriceCell() {
237+
const kakakuPriceCell = document.createElement('td');
238+
kakakuPriceCell.dataset.kakaku = 'true';
239+
kakakuPriceCell.textContent = '';
240+
return kakakuPriceCell;
241+
}
242+
243+
function createWhereCell() {
244+
const whereCell = document.createElement('td');
245+
whereCell.dataset.kakaku = 'true';
246+
whereCell.classList.add('td__where', 'td--empty');
247+
const hiddenLabel = document.createElement('h6');
248+
hiddenLabel.classList.add('xs-block', 'md-hide');
249+
hiddenLabel.textContent = 'Where';
250+
whereCell.appendChild(hiddenLabel);
251+
return whereCell;
252+
}
253+
214254
function updateName(nameCell: HTMLTableCellElement, item?: KakakuItem) {
215255
const existing = nameCell.querySelector('a.price-part-picker.name');
216256
if (!item) {
@@ -333,6 +373,7 @@ function updateWhere(
333373
link.href = item.shop.itemUrl || '';
334374
link.textContent = item.shop.name || '';
335375
link.style.width = 'auto';
376+
link.style.whiteSpace = 'nowrap';
336377
whereCell.classList.remove('td--empty');
337378
whereCell.appendChild(link);
338379
}

0 commit comments

Comments
 (0)