2023-06-09 02:03:57 +02:00
|
|
|
const { Model } = require("./model");
|
2023-06-16 16:01:13 +02:00
|
|
|
const { Settings } = require("./settings");
|
2023-06-18 16:16:01 +02:00
|
|
|
const { loadItems } = require("./loader");
|
2023-06-08 13:48:08 +02:00
|
|
|
|
2023-06-09 02:03:57 +02:00
|
|
|
class Items extends Model {
|
|
|
|
constructor() {
|
|
|
|
super();
|
|
|
|
this._items = [];
|
|
|
|
this._filteredItems = [];
|
|
|
|
this._lookup = {};
|
|
|
|
}
|
2023-06-08 13:48:08 +02:00
|
|
|
|
2023-06-09 02:03:57 +02:00
|
|
|
get items() {
|
|
|
|
return this._items;
|
|
|
|
}
|
|
|
|
|
|
|
|
get filteredItems() {
|
|
|
|
return this._filteredItems;
|
2023-06-08 13:48:08 +02:00
|
|
|
}
|
|
|
|
|
2023-06-10 22:34:28 +02:00
|
|
|
set filteredItems(newItems) {
|
|
|
|
this._filteredItems = newItems;
|
|
|
|
this.notify();
|
|
|
|
}
|
|
|
|
|
2023-06-09 02:03:57 +02:00
|
|
|
get lookup() {
|
|
|
|
return this._lookup;
|
|
|
|
}
|
2023-06-08 13:48:08 +02:00
|
|
|
|
2023-06-12 10:32:42 +02:00
|
|
|
async load() {
|
2023-06-16 16:01:13 +02:00
|
|
|
const settings = new Settings();
|
2023-06-18 16:16:01 +02:00
|
|
|
if (window.Worker && false) {
|
|
|
|
const self = this;
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
const loader = new Worker("loader.js");
|
|
|
|
loader.onmessage = (event) => {
|
|
|
|
self._items = event.data.items;
|
|
|
|
self._lookup = event.data.lookup;
|
|
|
|
resolve();
|
|
|
|
};
|
|
|
|
loader.postMessage({ settings });
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
const { items, lookup } = await loadItems(settings);
|
|
|
|
this._items = items;
|
|
|
|
this._lookup = lookup;
|
2023-06-12 10:32:42 +02:00
|
|
|
}
|
|
|
|
}
|
2023-06-09 02:03:57 +02:00
|
|
|
}
|
2023-06-08 13:48:08 +02:00
|
|
|
|
2023-06-09 02:03:57 +02:00
|
|
|
exports.Items = Items;
|