Add src/client/types/search_drawer.ts
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
5f80723fe9
commit
1c72e31ea8
95
src/client/types/search_drawer.ts
Normal file
95
src/client/types/search_drawer.ts
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
import { search_flight, search_nominatim } from "../helper/api";
|
||||||
|
import { leg_template } from "./format";
|
||||||
|
|
||||||
|
|
||||||
|
declare global {
|
||||||
|
type query_type = "hotel" | "restaurant" | "place" | "flight"
|
||||||
|
type note_type = "notes"
|
||||||
|
type sub_type = "travel" | "other"
|
||||||
|
|
||||||
|
interface query {
|
||||||
|
type: query_type | note_type | "",
|
||||||
|
sub: sub_type | "",
|
||||||
|
query: String,
|
||||||
|
res: any[],
|
||||||
|
load: Boolean,
|
||||||
|
/* DELETE BELOW IF POSIBLE */
|
||||||
|
addmarker: Boolean,
|
||||||
|
}
|
||||||
|
|
||||||
|
interface map_override {
|
||||||
|
active: Boolean,
|
||||||
|
elements: geoloc[]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class search_drawer {
|
||||||
|
map_override: map_override = { active: false, elements: [] };
|
||||||
|
|
||||||
|
query: query = {
|
||||||
|
type: "", query: "", sub: "", res: [], load: false, addmarker: false,
|
||||||
|
}
|
||||||
|
|
||||||
|
resfresh_map: () => void = () => { }
|
||||||
|
get_bb: () => any[] = () => []
|
||||||
|
get_leg: () => leg = () => leg_template
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
show_drawer() {
|
||||||
|
return this.is_note() || this.is_query()
|
||||||
|
}
|
||||||
|
|
||||||
|
is_note() {
|
||||||
|
return ["notes"].includes(this.query.type)
|
||||||
|
}
|
||||||
|
is_query() {
|
||||||
|
return ["hotel", "restaurant", "place", "flight"].includes(this.query.type)
|
||||||
|
}
|
||||||
|
is_sub_travel() {
|
||||||
|
return ["travel"].includes(this.query.sub)
|
||||||
|
}
|
||||||
|
|
||||||
|
results(r: any[]) {
|
||||||
|
this.query.load = false;
|
||||||
|
this.query.res = r;
|
||||||
|
return r
|
||||||
|
}
|
||||||
|
reset() {
|
||||||
|
this.query.res = [];
|
||||||
|
this.query.type = "";
|
||||||
|
this.query.addmarker = false;
|
||||||
|
setTimeout(() => this.resfresh_map(), 500);
|
||||||
|
}
|
||||||
|
|
||||||
|
active(tpe: query_type) {
|
||||||
|
this.query.type = tpe;
|
||||||
|
this.query.load = this.is_query();
|
||||||
|
setTimeout(() => this.resfresh_map(), 500);
|
||||||
|
}
|
||||||
|
|
||||||
|
search(_e = null) {
|
||||||
|
const tpe = this.query.type;
|
||||||
|
const query = this.query.query;
|
||||||
|
switch (tpe) {
|
||||||
|
case 'flight':
|
||||||
|
return search_flight(tpe, query, this.get_leg());
|
||||||
|
default:
|
||||||
|
return search_nominatim(tpe, query, this.get_bb(), this.get_leg())
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
enable(f: query_type) {
|
||||||
|
this.active(f)
|
||||||
|
setTimeout(() => document.getElementById(this.is_note() ? 'query_note' : 'query_input')?.focus(), 500);
|
||||||
|
if (this.is_query()) this.search()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export default search_drawer;
|
Loading…
x
Reference in New Issue
Block a user