From 222d0f56fcd5699b12268bc2159f55e00c65542e Mon Sep 17 00:00:00 2001 From: znetsixe <73483679+znetsixe@users.noreply.github.com> Date: Tue, 2 Sep 2025 15:47:53 +0200 Subject: [PATCH] update --- src/menu/tagcodeAsset.js | 207 --------------------------------------- 1 file changed, 207 deletions(-) delete mode 100644 src/menu/tagcodeAsset.js diff --git a/src/menu/tagcodeAsset.js b/src/menu/tagcodeAsset.js deleted file mode 100644 index b71a85f..0000000 --- a/src/menu/tagcodeAsset.js +++ /dev/null @@ -1,207 +0,0 @@ -/** - * taggcodeApp.js - * Dynamische AssetMenu implementatie met TagcodeApp API - * Vervangt de statische assetData met calls naar REST-endpoints. - */ - -class TagcodeApp { - constructor(baseURL = 'https://pimmoerman.nl/rdlab/tagcode.app/v2.1/api') { - this.baseURL = baseURL; - } - - async fetchData(path, params = {}) { - const url = new URL(`${this.baseURL}/${path}`); - Object.entries(params).forEach(([key, value]) => { - url.searchParams.append(key, value); - }); - const response = await fetch(url); - if (!response.ok) throw new Error(`HTTP ${response.status}: ${response.statusText}`); - const json = await response.json(); - if (!json.success) throw new Error(json.error || json.message); - return json.data; - } - - // Asset endpoints - getAllAssets() { - return this.fetchData('asset/get_all_assets.php'); - } - - getAssetDetail(tag_code) { - return this.fetchData('asset/get_detail_asset.php', { tag_code }); - } - - getAssetHistory(asset_tag_number) { - return this.fetchData('asset/get_history_asset.php', { asset_tag_number }); - } - - getAssetHierarchy(asset_tag_number) { - return this.fetchData('asset/get_asset_hierarchy.php', { asset_tag_number }); - } - - createOrUpdateAsset(params) { - // Bij create/update worden alle velden via query params meegegeven - return this.fetchData('asset/create_asset.php', params); - } - - // Product & vendor endpoints - getVendors() { - return this.fetchData('vendor/get_vendors.php'); - } - - getSubtypes(vendor_name) { - return this.fetchData('product/get_subtypesFromVendor.php', { vendor_name }); - } - - getProductModels(vendor_name, product_subtype_name) { - return this.fetchData('product/get_product_models.php', { vendor_name, product_subtype_name }); - } - - getLocations() { - return this.fetchData('location/get_locations.php'); - } -} - -class DynamicAssetMenu { - constructor(nodeName, api = new TagcodeApp()) { - this.nodeName = nodeName; - this.api = api; - this.data = { - vendors: [], - subtypes: {}, // per vendor - models: {} // per vendor+subtype - }; - } - - /** - * Initialiseer: haal vendors en locaties eenmalig op - */ - async init() { - this.data.vendors = await this.api.getVendors(); - this.data.locations = await this.api.getLocations(); - } - - /** - * Injecteer HTML, data en events - */ - getClientInitCode() { - const node = this.nodeName; - return ` - // --- DynamicAssetMenu voor ${node} --- - window.TagcodeApp = window.TagcodeApp || ${TagcodeApp.toString()}; - window.assetAPI = window.assetAPI || new TagcodeApp(); - - // Helper populate - function populate(el, opts, sel) { - const old = el.value; - el.innerHTML = ''; - (opts||[]).forEach(o=>{ - const opt = document.createElement('option'); - opt.value = o; opt.textContent = o; - el.appendChild(opt); - }); - el.value = sel || ''; - if (el.value !== old) el.dispatchEvent(new Event('change')); - } - - // InitEditor - window.EVOLV.nodes.${node}.assetMenu.initEditor = async function(node) { - this.injectHtml(); - // eerst: laad vendor-lijst - const vendors = await window.assetAPI.getVendors(); - const vendorNames = vendors.map(v=>v.name); - populate(document.getElementById('node-input-supplier'), vendorNames, node.supplier); - - // wire events - const elems = { - supplier: document.getElementById('node-input-supplier'), - category: document.getElementById('node-input-category'), - type: document.getElementById('node-input-assetType'), - model: document.getElementById('node-input-model'), - unit: document.getElementById('node-input-unit') - }; - - elems.supplier.addEventListener('change', async ()=>{ - const v = elems.supplier.value; - if (!v) return populate(elems.category, [], ''); - const subs = await window.assetAPI.getSubtypes(v); - const names = subs.map(s=>s.name); - populate(elems.category, names, node.category); - }); - - elems.category.addEventListener('change', async ()=>{ - const v = elems.supplier.value, c = elems.category.value; - if (!v||!c) return populate(elems.type, [], ''); - const models = await window.assetAPI.getProductModels(v, c); - window._currentModels = models; // tijdelijk cachen - const types = Array.from(new Set(models.map(m=>m.product_model_type))); - populate(elems.type, types, node.assetType); - }); - - elems.type.addEventListener('change', ()=>{ - const t = elems.type.value; - const models = window._currentModels || []; - const filtered = models.filter(m=>m.product_model_type===t); - const names = filtered.map(m=>m.name); - window._filteredModels = filtered; - populate(elems.model, names, node.model); - }); - - elems.model.addEventListener('change', ()=>{ - const m = elems.model.value; - const models = window._filteredModels || []; - const entry = models.find(x=>x.name===m); - const units = entry && entry.product_model_meta ? Object.keys(entry.product_model_meta) : []; - populate(elems.unit, units, node.unit); - }); - - // laadt opgeslagen waarden - if (node.supplier) elems.supplier.dispatchEvent(new Event('change')); - }; - `; - } - - getHtmlTemplate() { - return ` - -