@movvjs/svelte-schedule-view 0.2.4 → 0.2.6-beta-1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.svelte-kit/__package__/i18n/locales/en.json +3 -1
- package/.svelte-kit/__package__/i18n/locales/ko.json +3 -1
- package/.svelte-kit/__package__/i18n/locales/vi.json +3 -1
- package/.svelte-kit/__package__/i18n/locales/zh-cn.json +3 -1
- package/.svelte-kit/__package__/i18n/locales/zh-tw.json +3 -1
- package/.svelte-kit/__package__/schedule-view/BookingInfo.svelte +49 -14
- package/.svelte-kit/__package__/schedule-view/PlaceSearch.svelte +21 -2
- package/.svelte-kit/__package__/schedule-view/api/common/index.d.ts +5 -1
- package/.svelte-kit/__package__/schedule-view/api/common/index.js +17 -3
- package/.svelte-kit/__package__/schedule-view/assets/scss/indie_booking.scss +58 -1
- package/.svelte-kit/__package__/schedule-view/components/flight-search/FlightSearch.svelte +193 -120
- package/.svelte-kit/__package__/schedule-view/components/flight-search/FlightSearch.svelte.d.ts +10 -2
- package/.svelte-kit/__package__/schedule-view/stores/booking.d.ts +2 -0
- package/.svelte-kit/__package__/schedule-view/stores/booking.js +2 -0
- package/.svelte-kit/__package__/schedule-view/types/flight.d.ts +1 -1
- package/.svelte-kit/ambient.d.ts +4 -0
- package/.svelte-kit/generated/server/internal.js +1 -1
- package/dist/i18n/locales/en.json +3 -1
- package/dist/i18n/locales/ko.json +3 -1
- package/dist/i18n/locales/vi.json +3 -1
- package/dist/i18n/locales/zh-cn.json +3 -1
- package/dist/i18n/locales/zh-tw.json +3 -1
- package/dist/schedule-view/BookingInfo.svelte +49 -14
- package/dist/schedule-view/PlaceSearch.svelte +21 -2
- package/dist/schedule-view/api/common/index.d.ts +5 -1
- package/dist/schedule-view/api/common/index.js +17 -3
- package/dist/schedule-view/assets/scss/indie_booking.scss +58 -1
- package/dist/schedule-view/components/flight-search/FlightSearch.svelte +193 -120
- package/dist/schedule-view/components/flight-search/FlightSearch.svelte.d.ts +10 -2
- package/dist/schedule-view/stores/booking.d.ts +2 -0
- package/dist/schedule-view/stores/booking.js +2 -0
- package/dist/schedule-view/types/flight.d.ts +1 -1
- package/package.json +3 -1
- package/src/lib/i18n/locales/en.json +3 -1
- package/src/lib/i18n/locales/ko.json +3 -1
- package/src/lib/i18n/locales/vi.json +3 -1
- package/src/lib/i18n/locales/zh-cn.json +3 -1
- package/src/lib/i18n/locales/zh-tw.json +3 -1
- package/src/lib/schedule-view/BookingInfo.svelte +51 -15
- package/src/lib/schedule-view/PlaceSearch.svelte +24 -1
- package/src/lib/schedule-view/api/common/index.ts +21 -3
- package/src/lib/schedule-view/assets/scss/indie_booking.scss +58 -1
- package/src/lib/schedule-view/components/flight-search/FlightSearch.svelte +208 -126
- package/src/lib/schedule-view/stores/booking.ts +6 -0
- package/src/lib/schedule-view/types/flight.ts +1 -1
- package/yarn.lock +334 -6
|
@@ -3,12 +3,12 @@ import { padStart, range } from "lodash-es";
|
|
|
3
3
|
import { fade } from "svelte/transition";
|
|
4
4
|
import { t } from "../../../i18n";
|
|
5
5
|
import { dayjs } from "../../../dayjs";
|
|
6
|
-
import { BookingAPI } from "../../api";
|
|
6
|
+
import { BookingAPI, CommonAPI } from "../../api";
|
|
7
7
|
import { alert } from "../notifications";
|
|
8
8
|
let on = false;
|
|
9
9
|
let type = "AUTO";
|
|
10
10
|
let dateTime;
|
|
11
|
-
let iata;
|
|
11
|
+
let airport = { iata: null, code: null };
|
|
12
12
|
let loading = false;
|
|
13
13
|
let resolveFn;
|
|
14
14
|
let arrivalDate;
|
|
@@ -29,15 +29,22 @@ let manualInput = "";
|
|
|
29
29
|
let estimateDate;
|
|
30
30
|
let hour = 0;
|
|
31
31
|
let minute = 0;
|
|
32
|
+
let terminals = [];
|
|
33
|
+
let arrivalTerminal;
|
|
32
34
|
export async function open(options) {
|
|
33
35
|
return new Promise(async (resolve, reject) => {
|
|
34
36
|
if (!options?.dateTime) {
|
|
35
37
|
reject(new Error($t("flight.pleaseSelectDate")));
|
|
36
38
|
return;
|
|
37
39
|
}
|
|
40
|
+
if (!options?.airport?.iata && !options?.airport?.code) {
|
|
41
|
+
reject(new Error($t("flight.pleaseSelectAnAirport")));
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
38
44
|
resolveFn = resolve;
|
|
39
45
|
dateTime = options.dateTime;
|
|
40
|
-
iata = options.iata;
|
|
46
|
+
airport.iata = options.airport?.iata;
|
|
47
|
+
airport.code = options.airport?.code;
|
|
41
48
|
manualInput = "";
|
|
42
49
|
estimateDate = dayjs(dateTime);
|
|
43
50
|
hour = estimateDate.hour();
|
|
@@ -45,15 +52,28 @@ export async function open(options) {
|
|
|
45
52
|
flights = [];
|
|
46
53
|
page = 1;
|
|
47
54
|
arrivalDate = dayjs(dateTime).minute(0);
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
55
|
+
terminals = [];
|
|
56
|
+
arrivalTerminal = null;
|
|
57
|
+
if (options.terminalOnly) {
|
|
58
|
+
changeType("TERMINAL");
|
|
51
59
|
} else {
|
|
52
|
-
|
|
60
|
+
if (airport.iata) {
|
|
61
|
+
changeType("AUTO");
|
|
62
|
+
} else {
|
|
63
|
+
changeType("MANUAL");
|
|
64
|
+
}
|
|
53
65
|
}
|
|
54
66
|
on = true;
|
|
55
67
|
});
|
|
56
68
|
}
|
|
69
|
+
function changeType(value) {
|
|
70
|
+
type = value;
|
|
71
|
+
if (type === "TERMINAL" || type === "MANUAL") {
|
|
72
|
+
fetchTerminals();
|
|
73
|
+
} else if (type === "AUTO") {
|
|
74
|
+
fetchFlights();
|
|
75
|
+
}
|
|
76
|
+
}
|
|
57
77
|
function close() {
|
|
58
78
|
on = false;
|
|
59
79
|
}
|
|
@@ -61,7 +81,7 @@ async function fetchFlights() {
|
|
|
61
81
|
loading = true;
|
|
62
82
|
try {
|
|
63
83
|
flights = await BookingAPI.searchFlights({
|
|
64
|
-
iata,
|
|
84
|
+
iata: airport.iata,
|
|
65
85
|
ymd: arrivalDate.format("YYYY-MM-DD"),
|
|
66
86
|
time: arrivalDate.hour()
|
|
67
87
|
});
|
|
@@ -72,6 +92,17 @@ async function fetchFlights() {
|
|
|
72
92
|
loading = false;
|
|
73
93
|
}
|
|
74
94
|
}
|
|
95
|
+
async function fetchTerminals() {
|
|
96
|
+
try {
|
|
97
|
+
loading = true;
|
|
98
|
+
terminals = await CommonAPI.getPoiTerminals(airport.code);
|
|
99
|
+
} catch (e) {
|
|
100
|
+
alert.open({ text: e.message });
|
|
101
|
+
terminals = [];
|
|
102
|
+
} finally {
|
|
103
|
+
loading = false;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
75
106
|
async function subtractHour() {
|
|
76
107
|
arrivalDate = arrivalDate.subtract(1, "hour");
|
|
77
108
|
fetchFlights();
|
|
@@ -106,12 +137,26 @@ function save() {
|
|
|
106
137
|
return;
|
|
107
138
|
}
|
|
108
139
|
const manualFlight = {
|
|
109
|
-
iata,
|
|
140
|
+
iata: airport.iata ?? null,
|
|
110
141
|
ymd: estimateDate.format("YYYY-MM-DD HH:mm:ss"),
|
|
111
142
|
name: manualInput,
|
|
112
|
-
selectType: "MANUAL"
|
|
143
|
+
selectType: "MANUAL",
|
|
144
|
+
arrivalTerminal
|
|
113
145
|
};
|
|
114
146
|
resolveFn(manualFlight);
|
|
147
|
+
} else if (type === "TERMINAL") {
|
|
148
|
+
if (!arrivalTerminal) {
|
|
149
|
+
alert.open({ text: $t("flight.selectTerminal") });
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
const terminalFlight = {
|
|
153
|
+
iata: airport.iata ?? null,
|
|
154
|
+
ymd: estimateDate.format("YYYY-MM-DD HH:mm:ss"),
|
|
155
|
+
name: null,
|
|
156
|
+
selectType: "MANUAL",
|
|
157
|
+
arrivalTerminal
|
|
158
|
+
};
|
|
159
|
+
resolveFn(terminalFlight);
|
|
115
160
|
}
|
|
116
161
|
close();
|
|
117
162
|
}
|
|
@@ -128,132 +173,160 @@ function save() {
|
|
|
128
173
|
</div>
|
|
129
174
|
|
|
130
175
|
<div class="contents pdMg">
|
|
131
|
-
|
|
132
|
-
<ul class="indie_tab_square_01">
|
|
133
|
-
{#if iata}
|
|
134
|
-
<li class:on={type === 'AUTO'}><a href={null} on:click={() => (type = 'AUTO')}>{$t('flight.selectFlightNo')}</a></li>
|
|
135
|
-
{/if}
|
|
136
|
-
<li class:on={type === 'MANUAL'}><a href={null} on:click={() => (type = 'MANUAL')}>{$t('flight.editManually')}</a></li>
|
|
137
|
-
</ul>
|
|
138
|
-
</div>
|
|
139
|
-
|
|
140
|
-
{#if type === 'AUTO'}
|
|
141
|
-
<div class="indie_flight_name_top_infos">
|
|
142
|
-
<div class="infos">
|
|
143
|
-
<p class="sbj">{$t('flight.arrivalDate')}</p>
|
|
144
|
-
<p class="date">
|
|
145
|
-
<span>{dayjs(arrivalDate).format('ll')}</span>
|
|
146
|
-
<span>{dayjs(arrivalDate).format('HH:mm')}~{dayjs(arrivalDate).add(1, 'hour').format('HH:mm')}</span>
|
|
147
|
-
</p>
|
|
148
|
-
</div>
|
|
149
|
-
<div class="btns">
|
|
150
|
-
<button type="button" class="indie_btn_squre only prev" on:click={() => subtractHour()}>이전</button>
|
|
151
|
-
<button type="button" class="indie_btn_squre only next" on:click={() => addHour()}>다음</button>
|
|
152
|
-
</div>
|
|
153
|
-
</div>
|
|
154
|
-
|
|
176
|
+
{#if type === 'TERMINAL'}
|
|
155
177
|
{#if loading}
|
|
156
178
|
<div class="indie_loading_common_box">
|
|
157
179
|
<div class="indie_loader" />
|
|
158
180
|
</div>
|
|
159
|
-
{:else if !loading && flights.length === 0}
|
|
160
|
-
<div class="indie_search_none_common_box">
|
|
161
|
-
<p>{$t('flight.noFlightsWereFound')}</p>
|
|
162
|
-
</div>
|
|
163
181
|
{:else}
|
|
164
|
-
<
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
{
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
<dl class="start">
|
|
181
|
-
<dt>{item.departureAirport}</dt>
|
|
182
|
-
<dd>
|
|
183
|
-
<!-- TODO: 검색일 이전날짜인 경우 표현 -->
|
|
184
|
-
{#if dayjs(item.departure).isBefore(arrivalDate, 'day')}
|
|
185
|
-
<b>D-{arrivalDate.diff(dayjs(item.departure).format('YYYY-MM-DD'), 'd')}</b>
|
|
186
|
-
{/if}
|
|
187
|
-
{dayjs(item.departure).format('HH:mm')}
|
|
188
|
-
</dd>
|
|
189
|
-
</dl>
|
|
182
|
+
<select bind:value={arrivalTerminal} class="indie_select_nor w100">
|
|
183
|
+
<option value={null}>{$t('flight.selectTerminal')}</option>
|
|
184
|
+
{#each terminals as terminal}
|
|
185
|
+
<option value={terminal}>{terminal}</option>
|
|
186
|
+
{/each}
|
|
187
|
+
</select>
|
|
188
|
+
{/if}
|
|
189
|
+
{:else}
|
|
190
|
+
<div class="indie_tab_square_01_wrapper">
|
|
191
|
+
<ul class="indie_tab_square_01">
|
|
192
|
+
{#if !!airport.iata}
|
|
193
|
+
<li class:on={type === 'AUTO'}><a href={null} on:click={() => changeType('AUTO')}>{$t('flight.selectFlightNo')}</a></li>
|
|
194
|
+
{/if}
|
|
195
|
+
<li class:on={type === 'MANUAL'}><a href={null} on:click={() => changeType('MANUAL')}>{$t('flight.editManually')}</a></li>
|
|
196
|
+
</ul>
|
|
197
|
+
</div>
|
|
190
198
|
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
199
|
+
{#if type === 'AUTO'}
|
|
200
|
+
<div class="indie_flight_name_top_infos">
|
|
201
|
+
<div class="infos">
|
|
202
|
+
<p class="sbj">{$t('flight.arrivalDate')}</p>
|
|
203
|
+
<p class="date">
|
|
204
|
+
<span>{dayjs(arrivalDate).format('ll')}</span>
|
|
205
|
+
<span>{dayjs(arrivalDate).format('HH:mm')}~{dayjs(arrivalDate).add(1, 'hour').format('HH:mm')}</span>
|
|
206
|
+
</p>
|
|
207
|
+
</div>
|
|
208
|
+
<div class="btns">
|
|
209
|
+
<button type="button" class="indie_btn_squre only prev" on:click={() => subtractHour()}>이전</button>
|
|
210
|
+
<button type="button" class="indie_btn_squre only next" on:click={() => addHour()}>다음</button>
|
|
211
|
+
</div>
|
|
201
212
|
</div>
|
|
202
213
|
|
|
203
|
-
|
|
204
|
-
<div class="
|
|
205
|
-
<
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
214
|
+
{#if loading}
|
|
215
|
+
<div class="indie_loading_common_box">
|
|
216
|
+
<div class="indie_loader" />
|
|
217
|
+
</div>
|
|
218
|
+
{:else if !loading && flights.length === 0}
|
|
219
|
+
<div class="indie_search_none_common_box">
|
|
220
|
+
<p>{$t('flight.noFlightsWereFound')}</p>
|
|
221
|
+
</div>
|
|
222
|
+
{:else}
|
|
223
|
+
<div bind:this={contentsEl$} class="indie_tab_squre_01_cont" in:fade={{ duration: 100, delay: 100 }}>
|
|
224
|
+
<!-- 항공편 선택 -->
|
|
225
|
+
<ul class="indie_flight_name_select_list">
|
|
226
|
+
{#each flightsByPaging as item (item.name)}
|
|
227
|
+
<li in:fade={{ duration: 100, delay: 100 }}>
|
|
228
|
+
<div class="check">
|
|
229
|
+
<input
|
|
230
|
+
bind:group={flight}
|
|
231
|
+
value={item}
|
|
232
|
+
type="radio"
|
|
233
|
+
class="indie_radio_box xs flight_b"
|
|
234
|
+
name="f_choice"
|
|
235
|
+
id="ch_{item.name}" />
|
|
236
|
+
<label for="ch_{item.name}">
|
|
237
|
+
<p class="flight">{item.name}</p>
|
|
238
|
+
<div class="flight_time_box">
|
|
239
|
+
<dl class="start">
|
|
240
|
+
<dt>{item.departureAirport}</dt>
|
|
241
|
+
<dd>
|
|
242
|
+
<!-- TODO: 검색일 이전날짜인 경우 표현 -->
|
|
243
|
+
{#if dayjs(item.departure).isBefore(arrivalDate, 'day')}
|
|
244
|
+
<b>D-{arrivalDate.diff(dayjs(item.departure).format('YYYY-MM-DD'), 'd')}</b>
|
|
245
|
+
{/if}
|
|
246
|
+
{dayjs(item.departure).format('HH:mm')}
|
|
247
|
+
</dd>
|
|
248
|
+
</dl>
|
|
249
|
+
|
|
250
|
+
<dl class="end">
|
|
251
|
+
<dt>{item.arrivalAirport}</dt>
|
|
252
|
+
<dd>{dayjs(item.arrive).format('HH:mm')}</dd>
|
|
253
|
+
</dl>
|
|
254
|
+
</div>
|
|
255
|
+
</label>
|
|
256
|
+
</div>
|
|
257
|
+
</li>
|
|
258
|
+
{/each}
|
|
259
|
+
</ul>
|
|
220
260
|
</div>
|
|
221
|
-
</div>
|
|
222
|
-
{/if}
|
|
223
|
-
{:else if type === 'MANUAL'}
|
|
224
|
-
<div class="indie_tab_squre_01_cont">
|
|
225
|
-
<!-- 항공편 직접입력 -->
|
|
226
|
-
<input bind:value={manualInput} maxlength="15" type="text" class="indie_text_nor lg w100 mgt10" placeholder={$t('flight.flightNo')} />
|
|
227
261
|
|
|
228
|
-
|
|
229
|
-
|
|
262
|
+
<div class="indie_flight_paing_box" in:fade={{ duration: 100, delay: 100 }}>
|
|
263
|
+
<div class="indie_paging_b">
|
|
264
|
+
<button
|
|
265
|
+
type="button"
|
|
266
|
+
class="pg_left"
|
|
267
|
+
style:visibility={page > 1 ? 'visible' : 'hidden'}
|
|
268
|
+
on:click={() => (page = page > 1 ? page - 1 : page)}>이전</button>
|
|
269
|
+
<input readonly type="text" class="txt_paging" value={page} />
|
|
270
|
+
<span>/</span>
|
|
271
|
+
<span class="last">{totalPage}</span>
|
|
272
|
+
<button
|
|
273
|
+
type="button"
|
|
274
|
+
class="pg_right"
|
|
275
|
+
style:visibility={page < totalPage ? 'visible' : 'hidden'}
|
|
276
|
+
on:click={() => (page = page < totalPage ? page + 1 : page)}>
|
|
277
|
+
다음
|
|
278
|
+
</button>
|
|
279
|
+
</div>
|
|
280
|
+
</div>
|
|
281
|
+
{/if}
|
|
282
|
+
{:else if type === 'MANUAL'}
|
|
283
|
+
<div class="indie_tab_squre_01_cont">
|
|
284
|
+
<!-- 항공편 직접입력 -->
|
|
285
|
+
<input bind:value={manualInput} maxlength="15" type="text" class="indie_text_nor w100 mgt10" placeholder={$t('flight.flightNo')} />
|
|
230
286
|
|
|
231
|
-
|
|
232
|
-
<div class="
|
|
233
|
-
<
|
|
234
|
-
<p class="date">{dayjs(estimateDate).format('YYYY.MM.DD')}</p>
|
|
235
|
-
<button type="button" class="indie_btn_squre only next" on:click={() => addDay()}>다음</button>
|
|
287
|
+
{#if loading}
|
|
288
|
+
<div class="indie_loading_common_box">
|
|
289
|
+
<div class="indie_loader" />
|
|
236
290
|
</div>
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
{
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
291
|
+
{:else}
|
|
292
|
+
<select bind:value={arrivalTerminal} class="indie_select_nor w100 mgt5">
|
|
293
|
+
<option value={null}>{$t('flight.selectTerminal')}</option>
|
|
294
|
+
{#each terminals as terminal}
|
|
295
|
+
<option value={terminal}>{terminal}</option>
|
|
296
|
+
{/each}
|
|
297
|
+
</select>
|
|
298
|
+
{/if}
|
|
299
|
+
|
|
300
|
+
<div class="indie_flight_direct_input">
|
|
301
|
+
<p class="tit">{$t('flight.estimatedTimeOfArrival')}</p>
|
|
302
|
+
|
|
303
|
+
<div class="gather_box">
|
|
304
|
+
<div class="da_select_box">
|
|
305
|
+
<button type="button" class="indie_btn_squre only prev" on:click={() => subtractDay()}>이전</button>
|
|
306
|
+
<p class="date">{dayjs(estimateDate).format('YYYY.MM.DD')}</p>
|
|
307
|
+
<button type="button" class="indie_btn_squre only next" on:click={() => addDay()}>다음</button>
|
|
308
|
+
</div>
|
|
309
|
+
<div class="indie_time_select_box triangle lg">
|
|
310
|
+
<select bind:value={hour} on:change={() => onChangeEstimateTime()}>
|
|
311
|
+
{#each range(0, 24, 1) as h}
|
|
312
|
+
<option value={h}>{padStart(`${h}`, 2, '0')}</option>
|
|
313
|
+
{/each}
|
|
314
|
+
</select>
|
|
315
|
+
<span>:</span>
|
|
316
|
+
<select bind:value={minute} on:change={() => onChangeEstimateTime()}>
|
|
317
|
+
{#each range(0, 60, 1) as m}
|
|
318
|
+
<option value={m}>{padStart(`${m}`, 2, '0')}</option>
|
|
319
|
+
{/each}
|
|
320
|
+
</select>
|
|
321
|
+
</div>
|
|
249
322
|
</div>
|
|
250
|
-
</div>
|
|
251
323
|
|
|
252
|
-
|
|
253
|
-
|
|
324
|
+
<div class="indie_exclamation_mark_box sm black">
|
|
325
|
+
<p class="normal">{$t('flight.directly')}</p>
|
|
326
|
+
</div>
|
|
254
327
|
</div>
|
|
255
328
|
</div>
|
|
256
|
-
|
|
329
|
+
{/if}
|
|
257
330
|
{/if}
|
|
258
331
|
</div>
|
|
259
332
|
|
package/.svelte-kit/__package__/schedule-view/components/flight-search/FlightSearch.svelte.d.ts
CHANGED
|
@@ -4,7 +4,11 @@ declare const __propDef: {
|
|
|
4
4
|
props: {
|
|
5
5
|
open?: (options: {
|
|
6
6
|
dateTime: string;
|
|
7
|
-
|
|
7
|
+
airport: {
|
|
8
|
+
iata: string;
|
|
9
|
+
code: string;
|
|
10
|
+
};
|
|
11
|
+
terminalOnly: boolean;
|
|
8
12
|
}) => Promise<Flight>;
|
|
9
13
|
};
|
|
10
14
|
events: {
|
|
@@ -18,7 +22,11 @@ export type FlightSearchSlots = typeof __propDef.slots;
|
|
|
18
22
|
export default class FlightSearch extends SvelteComponent<FlightSearchProps, FlightSearchEvents, FlightSearchSlots> {
|
|
19
23
|
get open(): (options: {
|
|
20
24
|
dateTime: string;
|
|
21
|
-
|
|
25
|
+
airport: {
|
|
26
|
+
iata: string;
|
|
27
|
+
code: string;
|
|
28
|
+
};
|
|
29
|
+
terminalOnly: boolean;
|
|
22
30
|
}) => Promise<Flight>;
|
|
23
31
|
}
|
|
24
32
|
export {};
|
|
@@ -53,6 +53,7 @@ export declare const originalBooking: {
|
|
|
53
53
|
selectedPrice: import("svelte/store").Writable<SearchPriceV2>;
|
|
54
54
|
isModifiable: import("svelte/store").Readable<boolean>;
|
|
55
55
|
priceDifference: import("svelte/store").Readable<number>;
|
|
56
|
+
isFlightService: import("svelte/store").Readable<boolean>;
|
|
56
57
|
hour: {
|
|
57
58
|
subscribe: (this: void, run: import("svelte/store").Subscriber<number>, invalidate?: import("svelte/store").Invalidator<number>) => import("svelte/store").Unsubscriber;
|
|
58
59
|
set(hour: number): void;
|
|
@@ -138,6 +139,7 @@ export declare const copiedBooking: {
|
|
|
138
139
|
selectedPrice: import("svelte/store").Writable<SearchPriceV2>;
|
|
139
140
|
isModifiable: import("svelte/store").Readable<boolean>;
|
|
140
141
|
priceDifference: import("svelte/store").Readable<number>;
|
|
142
|
+
isFlightService: import("svelte/store").Readable<boolean>;
|
|
141
143
|
hour: {
|
|
142
144
|
subscribe: (this: void, run: import("svelte/store").Subscriber<number>, invalidate?: import("svelte/store").Invalidator<number>) => import("svelte/store").Unsubscriber;
|
|
143
145
|
set(hour: number): void;
|
|
@@ -70,6 +70,7 @@ function createBookingStore(bookingDTO) {
|
|
|
70
70
|
const isBabySeatServiceAvailable = derived(availableExtraServices, $availableExtraServices => $availableExtraServices.some(extra => extra.type === ExtraServiceType.baby));
|
|
71
71
|
// 피켓 서비스 가능 여부
|
|
72
72
|
const isPicketServiceAvailable = derived(availableExtraServices, $availableExtraServices => $availableExtraServices.some(extra => extra.type === ExtraServiceType.picket));
|
|
73
|
+
const isFlightService = derived(booking, $booking => $booking?.serviceType === BookingServiceType.pickup || $booking?.serviceType === BookingServiceType.sending);
|
|
73
74
|
// 금액 정보
|
|
74
75
|
const price = derived(booking, $booking => {
|
|
75
76
|
const beforePrice = isNumber($booking?.price) ? $booking.price : null;
|
|
@@ -303,6 +304,7 @@ function createBookingStore(bookingDTO) {
|
|
|
303
304
|
selectedPrice,
|
|
304
305
|
isModifiable,
|
|
305
306
|
priceDifference,
|
|
307
|
+
isFlightService,
|
|
306
308
|
// subscribe & set
|
|
307
309
|
hour,
|
|
308
310
|
minute,
|
|
@@ -6,6 +6,7 @@ interface BaseFlight {
|
|
|
6
6
|
name: string;
|
|
7
7
|
iata: string;
|
|
8
8
|
selectType: 'AUTO' | 'MANUAL';
|
|
9
|
+
arrivalTerminal?: string;
|
|
9
10
|
}
|
|
10
11
|
export interface FlightAuto extends BaseFlight {
|
|
11
12
|
selectType: 'AUTO';
|
|
@@ -16,7 +17,6 @@ export interface FlightAuto extends BaseFlight {
|
|
|
16
17
|
arrivalAirport: string;
|
|
17
18
|
departureAirport: string;
|
|
18
19
|
delay: boolean;
|
|
19
|
-
arrivalTerminal: string;
|
|
20
20
|
}
|
|
21
21
|
export interface FlightManual extends BaseFlight {
|
|
22
22
|
selectType: 'MANUAL';
|
package/.svelte-kit/ambient.d.ts
CHANGED
|
@@ -118,6 +118,8 @@ declare module '$env/static/private' {
|
|
|
118
118
|
export const npm_package_devDependencies__types_lodash_es: string;
|
|
119
119
|
export const npm_config_node_gyp: string;
|
|
120
120
|
export const XPC_SERVICE_NAME: string;
|
|
121
|
+
export const npm_package_dependencies__turf_helpers: string;
|
|
122
|
+
export const npm_package_dependencies__turf_center: string;
|
|
121
123
|
export const npm_package_devDependencies__sveltejs_adapter_auto: string;
|
|
122
124
|
export const npm_package_version: string;
|
|
123
125
|
export const VSCODE_INJECTION: string;
|
|
@@ -285,6 +287,8 @@ declare module '$env/dynamic/private' {
|
|
|
285
287
|
npm_package_devDependencies__types_lodash_es: string;
|
|
286
288
|
npm_config_node_gyp: string;
|
|
287
289
|
XPC_SERVICE_NAME: string;
|
|
290
|
+
npm_package_dependencies__turf_helpers: string;
|
|
291
|
+
npm_package_dependencies__turf_center: string;
|
|
288
292
|
npm_package_devDependencies__sveltejs_adapter_auto: string;
|
|
289
293
|
npm_package_version: string;
|
|
290
294
|
VSCODE_INJECTION: string;
|
|
@@ -21,7 +21,7 @@ export const options = {
|
|
|
21
21
|
app: ({ head, body, assets, nonce, env }) => "<!DOCTYPE html>\n<html lang=\"en\">\n\t<head>\n\t\t<meta charset=\"utf-8\" />\n\t\t<link rel=\"icon\" href=\"" + assets + "/favicon.png\" />\n\t\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n\t\t<meta name=\"referrer\" content=\"no-referrer\" />\n\t\t" + head + "\n\t</head>\n\t<body data-sveltekit-preload-data=\"hover\">\n\t\t<div>" + body + "</div>\n\t</body>\n</html>\n",
|
|
22
22
|
error: ({ status, message }) => "<!doctype html>\n<html lang=\"en\">\n\t<head>\n\t\t<meta charset=\"utf-8\" />\n\t\t<title>" + message + "</title>\n\n\t\t<style>\n\t\t\tbody {\n\t\t\t\t--bg: white;\n\t\t\t\t--fg: #222;\n\t\t\t\t--divider: #ccc;\n\t\t\t\tbackground: var(--bg);\n\t\t\t\tcolor: var(--fg);\n\t\t\t\tfont-family:\n\t\t\t\t\tsystem-ui,\n\t\t\t\t\t-apple-system,\n\t\t\t\t\tBlinkMacSystemFont,\n\t\t\t\t\t'Segoe UI',\n\t\t\t\t\tRoboto,\n\t\t\t\t\tOxygen,\n\t\t\t\t\tUbuntu,\n\t\t\t\t\tCantarell,\n\t\t\t\t\t'Open Sans',\n\t\t\t\t\t'Helvetica Neue',\n\t\t\t\t\tsans-serif;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tjustify-content: center;\n\t\t\t\theight: 100vh;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\n\t\t\t.error {\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tmax-width: 32rem;\n\t\t\t\tmargin: 0 1rem;\n\t\t\t}\n\n\t\t\t.status {\n\t\t\t\tfont-weight: 200;\n\t\t\t\tfont-size: 3rem;\n\t\t\t\tline-height: 1;\n\t\t\t\tposition: relative;\n\t\t\t\ttop: -0.05rem;\n\t\t\t}\n\n\t\t\t.message {\n\t\t\t\tborder-left: 1px solid var(--divider);\n\t\t\t\tpadding: 0 0 0 1rem;\n\t\t\t\tmargin: 0 0 0 1rem;\n\t\t\t\tmin-height: 2.5rem;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t}\n\n\t\t\t.message h1 {\n\t\t\t\tfont-weight: 400;\n\t\t\t\tfont-size: 1em;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\n\t\t\t@media (prefers-color-scheme: dark) {\n\t\t\t\tbody {\n\t\t\t\t\t--bg: #222;\n\t\t\t\t\t--fg: #ddd;\n\t\t\t\t\t--divider: #666;\n\t\t\t\t}\n\t\t\t}\n\t\t</style>\n\t</head>\n\t<body>\n\t\t<div class=\"error\">\n\t\t\t<span class=\"status\">" + status + "</span>\n\t\t\t<div class=\"message\">\n\t\t\t\t<h1>" + message + "</h1>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>\n"
|
|
23
23
|
},
|
|
24
|
-
version_hash: "
|
|
24
|
+
version_hash: "wtuul9"
|
|
25
25
|
};
|
|
26
26
|
|
|
27
27
|
export async function get_hooks() {
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"file": "File",
|
|
21
21
|
"fileUpload": "Upload file",
|
|
22
22
|
"firstName": "First name",
|
|
23
|
-
"flight": "Flight",
|
|
23
|
+
"flight": "Flight Info",
|
|
24
24
|
"guestName": "Guest Name",
|
|
25
25
|
"hours": "{hour} hour(s)",
|
|
26
26
|
"lastName": "Last name",
|
|
@@ -80,8 +80,10 @@
|
|
|
80
80
|
"noFlightsWereFound": "No flights were found.",
|
|
81
81
|
"pleaseEnterFlightNo": "Please enter flight No.",
|
|
82
82
|
"pleaseSelectAFlightNo": "Please select a flight No.",
|
|
83
|
+
"pleaseSelectAnAirport": "Please select an airport.",
|
|
83
84
|
"pleaseSelectDate": "Please select a date.",
|
|
84
85
|
"selectFlightNo": "Select Flight No.",
|
|
86
|
+
"selectTerminal": "Please select a terminal.",
|
|
85
87
|
"terminal": "Terminal {number}"
|
|
86
88
|
},
|
|
87
89
|
"placeholder": {
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"file": "파일",
|
|
21
21
|
"fileUpload": "파일 업로드",
|
|
22
22
|
"firstName": "이름",
|
|
23
|
-
"flight": "항공편",
|
|
23
|
+
"flight": "항공편 정보",
|
|
24
24
|
"guestName": "사용자명",
|
|
25
25
|
"hours": "{hour} 시간",
|
|
26
26
|
"lastName": "성",
|
|
@@ -67,8 +67,10 @@
|
|
|
67
67
|
"noFlightsWereFound": "항공편을 찾을 수 없습니다.",
|
|
68
68
|
"pleaseEnterFlightNo": "항공편명을 입력해주세요.",
|
|
69
69
|
"pleaseSelectAFlightNo": "항공편명을 선택해주세요.",
|
|
70
|
+
"pleaseSelectAnAirport": "공항을 선택해주세요.",
|
|
70
71
|
"pleaseSelectDate": "날짜를 선택해주세요.",
|
|
71
72
|
"selectFlightNo": "항공편명 선택",
|
|
73
|
+
"selectTerminal": "터미널을 선택해주세요.",
|
|
72
74
|
"terminal": "터미널 {number}"
|
|
73
75
|
},
|
|
74
76
|
"placeholder": {
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"file": "Tệp",
|
|
21
21
|
"fileUpload": "Cập nhật dử liệu",
|
|
22
22
|
"firstName": "Tên đầu tiên",
|
|
23
|
-
"flight": "
|
|
23
|
+
"flight": "Thông tin chuyến bay",
|
|
24
24
|
"guestName": "Tên khách",
|
|
25
25
|
"hours": "{hour} giờ",
|
|
26
26
|
"lastName": "Họ",
|
|
@@ -67,8 +67,10 @@
|
|
|
67
67
|
"noFlightsWereFound": "Không tìm thấy chuyến bay.",
|
|
68
68
|
"pleaseEnterFlightNo": "Vui lòng nhập số chuyến bay",
|
|
69
69
|
"pleaseSelectAFlightNo": "Vui lòng chọn số chuyến bay",
|
|
70
|
+
"pleaseSelectAnAirport": "Vui lòng chọn một sân bay.",
|
|
70
71
|
"pleaseSelectDate": "Vui lòng chọn một ngày.",
|
|
71
72
|
"selectFlightNo": "Chọn số chuyến bay",
|
|
73
|
+
"selectTerminal": "Vui lòng chọn một thiết bị đầu cuối.",
|
|
72
74
|
"terminal": "Nhà ga số 2"
|
|
73
75
|
},
|
|
74
76
|
"placeholder": {
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"file": "档案",
|
|
21
21
|
"fileUpload": "上传文件",
|
|
22
22
|
"firstName": "名",
|
|
23
|
-
"flight": "
|
|
23
|
+
"flight": "航班信息",
|
|
24
24
|
"guestName": "乘客姓名",
|
|
25
25
|
"hours": "{hour} 小时",
|
|
26
26
|
"lastName": "姓",
|
|
@@ -67,8 +67,10 @@
|
|
|
67
67
|
"noFlightsWereFound": "未找到航班。",
|
|
68
68
|
"pleaseEnterFlightNo": "请输入航班号",
|
|
69
69
|
"pleaseSelectAFlightNo": "请选择航班号",
|
|
70
|
+
"pleaseSelectAnAirport": "请选择一个机场。",
|
|
70
71
|
"pleaseSelectDate": "请选择日期。",
|
|
71
72
|
"selectFlightNo": "选择航班号",
|
|
73
|
+
"selectTerminal": "请选择一个终端。",
|
|
72
74
|
"terminal": "第{number}航站楼"
|
|
73
75
|
},
|
|
74
76
|
"placeholder": {
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"file": "檔案",
|
|
21
21
|
"fileUpload": "上傳文件",
|
|
22
22
|
"firstName": "名",
|
|
23
|
-
"flight": "
|
|
23
|
+
"flight": "航班資訊",
|
|
24
24
|
"guestName": "乘客姓名",
|
|
25
25
|
"hours": "{hour} 小時",
|
|
26
26
|
"lastName": "姓",
|
|
@@ -67,8 +67,10 @@
|
|
|
67
67
|
"noFlightsWereFound": "未找到航班。",
|
|
68
68
|
"pleaseEnterFlightNo": "請輸入航班號碼",
|
|
69
69
|
"pleaseSelectAFlightNo": "請選擇航班號碼",
|
|
70
|
+
"pleaseSelectAnAirport": "請選擇機場。",
|
|
70
71
|
"pleaseSelectDate": "請選擇日期。",
|
|
71
72
|
"selectFlightNo": "選擇航班號碼",
|
|
73
|
+
"selectTerminal": "請選擇一個終端。",
|
|
72
74
|
"terminal": "第{number}航廈"
|
|
73
75
|
},
|
|
74
76
|
"placeholder": {
|