63 lines
1.3 KiB
JavaScript
63 lines
1.3 KiB
JavaScript
import SearchResult from './SearchResult.js';
|
|
import { getMapObjects } from '../api.js';
|
|
|
|
const state = {
|
|
busy: false,
|
|
result: []
|
|
};
|
|
|
|
function searchFor(type, key, valuelike){
|
|
return getMapObjects({
|
|
pos1: { x:-2048, y:-2048, z:-2048 },
|
|
pos2: { x:2048, y:2048, z:2048 },
|
|
type: type,
|
|
attributelike: {
|
|
key: key,
|
|
value: "%" + valuelike +"%"
|
|
}
|
|
});
|
|
}
|
|
|
|
function search(query){
|
|
state.result = [];
|
|
|
|
var prom_list = [
|
|
searchFor("shop", "out_item", query),
|
|
searchFor("poi", "name", query),
|
|
searchFor("train", "station", query),
|
|
searchFor("travelnet", "station_name", query),
|
|
searchFor("bones", "owner", query),
|
|
searchFor("locator", "name", query),
|
|
searchFor("label", "text", query),
|
|
searchFor("digiterm", "display_text", query),
|
|
searchFor("digilinelcd", "text", query)
|
|
];
|
|
|
|
Promise.all(prom_list)
|
|
.then(function(results){
|
|
|
|
var arr = [];
|
|
results.forEach(function(r) {
|
|
arr = arr.concat(r);
|
|
});
|
|
|
|
state.result = arr;
|
|
state.busy = false;
|
|
});
|
|
|
|
}
|
|
|
|
export default {
|
|
oncreate(vnode){
|
|
search(vnode.attrs.query);
|
|
},
|
|
|
|
view(vnode){
|
|
if (state.result.length == 0) {
|
|
return m("div", vnode.attrs.query);
|
|
} else {
|
|
return m(SearchResult, { result: state.result });
|
|
}
|
|
}
|
|
};
|