| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 | 
							- import { formscreen } from "./formscreen";
 
- import { database } from "./database.js";
 
- import { autocomplete_database } from "./autocomplete_database.js";
 
- import { import_loop } from "./import_loop.js";
 
- import { searcher } from "./searcher.js";
 
- import { import_log } from "./import_log.js";
 
- import { downloader } from "./downloader.js";
 
- export class import_products extends formscreen {
 
-     #file;
 
-     #content;
 
-     get _name() {
 
-         return _("import-products-json");
 
-     }
 
-     _build_form() {
 
-         this._create_input("file", "Database:", "", (input) => {
 
-             this.#file = input;
 
-             input.type = "file";
 
-             input.accept = "application/json";
 
-         });
 
-     }
 
-     async #load_file() {
 
-         if (this.#file.files.length === 0) {
 
-             throw new Error("select-products-json-database-first");
 
-         }
 
-         const file = this.#file.files.item(0);
 
-         const text = await file.text();
 
-         
 
-         return JSON.parse(text);
 
-     }
 
-     async _process() {
 
-         try {
 
-             this._info = _("loading-file");
 
-             this.#content = await this.#load_file();
 
-             this._info = _("parsing-file-to-dataset");
 
-             
 
-             const result = new import_log();
 
-             const dataset = new database(this.#content)
 
-             .on_skip((fail) => {
 
-                 this._info = _("skipping-import-product-__barcode__").format({
 
-                     barcode: fail.product.barcode
 
-                 });
 
-                 result.skip(fail);
 
-             })
 
-             .process()
 
-             .results();
 
-             const loop = new import_loop(dataset)
 
-             .on_autocomplete((target) => {
 
-                 this._info = _("searching-for-product-__barcode__").format({
 
-                     barcode: target.barcode
 
-                 });
 
-             })
 
-             .on_create((target) => {
 
-                 this._info = _("creating-product-__barcode__").format({
 
-                     barcode: target.barcode
 
-                 });
 
-             })
 
-             .on_single_fail((target) => {
 
-                 this._info = _("can-not-add-product-__barcode__").format({
 
-                     barcode: target.product.barcode
 
-                 })
 
-                 result.fail(target);
 
-             })
 
-             .on_skip((target) => {
 
-                 this._info = _("skipping-product-__barcode").format({
 
-                     barcode: target.product.barcode
 
-                 })
 
-                 result.skip(target);
 
-             })
 
-             .on_single_success((target) => {
 
-                 this._info = _("created-product-__barcode__").format({
 
-                     barcode: target.barcode
 
-                 })
 
-             })
 
-             .finally(() => {
 
-                 searcher.reload();
 
-                 const log = new downloader()
 
-                 .content(result.content())
 
-                 .type("text/plain")
 
-                 .encode("utf-8")
 
-                 .name("import-json.log")
 
-                 .process();
 
-                 
 
-                 if (result.length === 0) {
 
-                     this._success = _("all-items-imported");
 
-                     setTimeout(() => {
 
-                         this.hide();
 
-                     });
 
-                 } else {
 
-                     this._success = _("not-all-items-imported");
 
-                 }
 
-             })
 
-             .process();
 
-         } catch (error) {
 
-             this._error = new String(error);
 
-         }        
 
-     }
 
- }
 
 
  |