Fensterklimageräte

- Alles in einem Gerät!

Fenster-Geräte stellen eine einfache Lösung zum Kühlen von Räumen dann dar, wenn keine Außeneinheit aufgestellt werden kann. Es wird keine Verbindungsleitung benötigt, da alles in einem Gerät schon vebaut wurde. Die Frontseite des Gerätes ist zum Raum zugewandt, die Rückseite vom Raum abgewandt. Die Fenster-Klimaanlagen werden in einem Rahmen oder in einer Wandöffnung installiert. Typische Einbaumöglichkeiten sind Ladengeschäfte mit Ausschnuit über der Eingangstür, sowie Containeranlagen, Krankabinen und mobile Technikcontainer.

Sortierung:

/** * ProdIDs Lite ++ (nur Frontend, kein Plugin) * - Sammelt sichtbare Variation-/Item-IDs aus Kacheln (DOM) * - Versucht zusätzlich, Eigenschafts-IDs & Gruppen-IDs aus der Ceres/IO Vuex-Store-Struktur zu lesen (falls verfügbar) * - Stempelt Daten auf jede Kachel: data-prodids-vid, data-prodids-iid, data-prop-ids, data-prop-group-ids * - Signalisiert Fertig: window.dispatchEvent(new Event('prodids:ready')); * * Konsole testen: * window.addEventListener('prodids:ready', ()=>console.log(window.PRODIDS)); */ (function(){ try{ if (window.__PRODIDS_LITE_PLUS__) return; window.__PRODIDS_LITE_PLUS__ = true; // === Konfiguration === var SELECTOR = '.cmp-product,[data-variation-id],[data-item-id]'; // bei Bedarf anpassen var MAX_TRIES = 30; // wie oft auf DOM warten var DELAY_MS = 150; // Pause zwischen Checks var STAMP_IN_DOM = true;// data-Attribute an Kacheln schreiben // === Utils === function toInt(x){ var n=parseInt(x,10); return isNaN(n)?0:n; } function uniq(a){ var o=Object.create(null),r=[]; for(var i=0;i=0; var v=n.getAttribute('data-variation-id'); if(v) vid=toInt(v); if(!vid){ var nv=n.querySelector('[data-variation-id]'); if(nv) vid=toInt(nv.getAttribute('data-variation-id')); } var i=n.getAttribute('data-item-id'); if(i) iid=toInt(i); if(!iid){ var ni=n.querySelector('[data-item-id]'); if(ni) iid=toInt(ni.getAttribute('data-item-id')); } return {vid:vid,iid:iid}; } function fire(){ try{ window.dispatchEvent(new Event('prodids:ready')); }catch(e){} } // === DOM-Scan: IDs aus Kacheln einsammeln === function collectDomIds(){ var nodes = document.querySelectorAll(SELECTOR); var vids=[], iids=[]; nodes.forEach(function(n){ var ids=pickIds(n); if(ids.vid>0) vids.push(ids.vid); if(ids.iid>0) iids.push(ids.iid); }); return { nodes:nodes, variationIds:uniq(vids), itemIds:uniq(iids) }; } // === Versuch: Vuex-Store/IO-Daten durchsuchen, um Properties zu finden === function getStoreCandidates(){ var c = []; if (window.ceresApp && window.ceresApp.$store) c.push(window.ceresApp.$store); if (window.vueApp && window.vueApp.$store) c.push(window.vueApp.$store); if (window.app && window.app.$store) c.push(window.app.$store); if (window.$store) c.push(window.$store); // Manchmal hängt der Store in einem globalen Objekt if (window.__PLENTY__ && window.__PLENTY__.store) c.push(window.__PLENTY__.store); // Duplizierte raus var seen=new Set(), out=[]; c.forEach(function(s){ if (s && !seen.has(s)) { seen.add(s); out.push(s); } }); return out; } // heuristische Suche nach Dokumentlisten im Store-State function flattenDocsFromState(state){ var out=[]; function scan(obj, depth){ if (!obj || typeof obj!=='object' || depth>5) return; // Array von Dokumenten? if (Array.isArray(obj) && obj.length && typeof obj[0]==='object') { // prüfen, ob Variation/Properties-Felder drin sind var sample = obj[0] || {}; if ('id' in sample || (sample.variation && ('id' in sample.variation))) { out = out.concat(obj); return; } } // Objekt – gängige Keys zuerst var keys = Object.keys(obj); var likely = ['documents','items','list','data','variations','search','itemList','category','results']; likely.forEach(function(k){ if (k in obj) scan(obj[k], depth+1); }); // Rest durchsuchen keys.forEach(function(k){ if (likely.indexOf(k)===-1) scan(obj[k], depth+1); }); } scan(state, 0); return out; } function extractPropsFromDoc(doc){ // Liefert {vid, propIds, groupIds} wenn möglich var vid = 0; if (doc && typeof doc==='object'){ if ('id' in doc) vid = toInt(doc.id); else if (doc.variation && 'id' in doc.variation) vid = toInt(doc.variation.id); } if (!vid) return null; var props = (doc.variationProperties || doc.properties || (doc.variation && doc.variation.properties) || []); var propIds=[], groupIds=[]; if (Array.isArray(props)){ props.forEach(function(p){ if (!p || typeof p!=='object') return; if ('propertyId' in p) propIds.push(toInt(p.propertyId)); if ('groupId' in p) groupIds.push(toInt(p.groupId)); if (p.property && typeof p.property==='object'){ if ('id' in p.property) propIds.push(toInt(p.property.id)); if ('propertyGroupId' in p.property) groupIds.push(toInt(p.property.propertyGroupId)); } }); } return { vid: vid, propIds: uniq(propIds), groupIds: uniq(groupIds) }; } function collectPropsFromStore(variationIdSet){ var result = {}; // map[vid] = {propertyIds, propertyGroupIds} var stores = getStoreCandidates(); for (var s=0; s // Wenn wir für alle VIDs etwas haben, brechen wir früh ab if (Object.keys(result).length >= variationIdSet.size) break; } return result; } function stampOnTiles(nodes, map){ if (!STAMP_IN_DOM) return; nodes.forEach(function(n){ try{ var ids = pickIds(n); var data = map[String(ids.vid)] || map[String(ids.iid)]; // immer die gefundenen IDs stempeln (VID/IID) if (ids.vid>0) n.setAttribute('data-prodids-vid', String(ids.vid)); if (ids.iid>0) n.setAttribute('data-prodids-iid', String(ids.iid)); // Properties stempeln, wenn vorhanden — mit führendem/abschließenden Komma für CSS-Contains-Tricks if (data){ var p = Array.isArray(data.propertyIds) ? data.propertyIds : []; var pg = Array.isArray(data.propertyGroupIds) ? data.propertyGroupIds : []; n.setAttribute('data-prop-ids', p.length ? (','+p.join(',')+',') : ''); n.setAttribute('data-prop-group-ids', pg.length ? (','+pg.join(',')+',') : ''); } }catch(e){} }); } function boot(){ var tries = 0; (function tick(){ var res = collectDomIds(); if (res.variationIds.length===0 && res.itemIds.length===0 && tries // Basis-Resultat var out = { variationIds: res.variationIds, itemIds: res.itemIds, map: {} // wenn möglich füllen wir das gleich mit Properties }; // Versuch, Properties aus dem Store zu ziehen if (res.variationIds.length){ try{ var set = new Set(res.variationIds); var map = collectPropsFromStore(set); out.map = map || {}; } catch(e){} } // DOM stempeln stampOnTiles(res.nodes, out.map); // global verfügbar machen window.PRODIDS = out; // Signal fire(); // Debug try{ console.info('[ProdIDs Lite++]', 'Variations:', out.variationIds, 'Items:', out.itemIds, 'Map keys:', Object.keys(out.map).length ); }catch(e){} })(); } if (document.readyState==='loading') document.addEventListener('DOMContentLoaded', boot); else boot(); }catch(e){ try{ console.error('[ProdIDs Lite++] Fatal', e); }catch(_e){} } })();

Hier sind einige Merkmale und Informationen zu Fensterklimageräten:

Installation: 
Fensterklimageräte werden in der Regel in Fenstern oder speziell dafür vorgesehenen Öffnungen installiert. Dies ermöglicht eine effiziente Ableitung der warmen Luft nach draußen.

Mobilität: 
Im Vergleich zu fest installierten Klimaanlagen sind Fensterklimageräte tragbar. Das bedeutet, dass sie relativ einfach von einem Raum zum anderen bewegt werden können, wenn sie benötigt werden.

Funktion: 
Fensterklimageräte kühlen einen Raum, indem sie die warme Luft ansaugen, sie durch einen Kühlmittelkreislauf leiten, und dann die gekühlte Luft wieder in den Raum abgeben. Gleichzeitig wird die warme Luft nach außen abgeleitet.

Energieeffizienz: 
Einige Modelle von Fensterklimageräten können energieeffizient sein, aber es ist wichtig, auf das Energielabel zu achten, um sicherzustellen, dass das Gerät den gewünschten Effizienzstandards entspricht.

Größe und Kapazität: 
Die Größe und Kühlleistung von Fensterklimageräten variiert. Es ist wichtig, ein Gerät mit ausreichender Kapazität für den Raum zu wählen, den es kühlen soll.

Lärmpegel: 
Einige Menschen empfinden den Lärm von Klimageräten als störend. Bei der Auswahl eines Fensterklimageräts ist es ratsam, auf den Lärmpegel zu achten, um sicherzustellen, dass es den persönlichen Vorlieben entspricht.

Es ist wichtig zu beachten, dass Fensterklimageräte nicht für jeden Einsatzbereich ideal sind. In einigen Fällen können fest installierte Klimaanlagen oder andere Kühlmethoden besser geeignet sein. Es ist auch wichtig, die Herstelleranweisungen sorgfältig zu befolgen, um eine ordnungsgemäße Installation und Nutzung zu gewährleisten.