backups/2026-03-28-pre-sidebar-refactor/konfigurator-laddbox.js

Code: DEV-3F4254BA Size: 3.3 KB Lines: 56 Path: /home/prodconfig.wenesthosting.com/dev.solargroup.wenest.se/backups/2026-03-28-pre-sidebar-refactor/konfigurator-laddbox.js

Task / Comment

Open report form
// konfigurator-laddbox.js
// Visar: laddbox

// === LADDBOX KONFIGURATOR (kopplad till Produktkatalog) ===
let _lbSelected=null, _lbPrice=0, _lbDeduction='green', _lbOwners=1, _lbFinYears=15;
let _lbProducts=[];

function initLbConfig(){ var _lbl=document.getElementById('cfgFileLabel');if(_lbl)_lbl.textContent='konfigurator-laddbox.js';
    _lbProducts = (typeof catalogProducts !== 'undefined' ? catalogProducts : []).filter(function(p){ return p.cat === 'laddbox'; });
    renderLbChargers();
    updateLbCalc();
}
function renderLbChargers(){
    var c=document.getElementById('lbChargerCards');if(!c)return;
    if(!_lbProducts.length) { c.innerHTML='<div style="padding:16px;color:#94a3b8;font-size:13px">Inga laddbox-produkter i katalogen</div>'; return; }
    c.innerHTML=_lbProducts.map(function(p){
        var selected = _lbSelected === p.id;
        var desc = p.desc || '';
        var greenBadge = p.greenTechEligible ? '<div style="font-size:10px;color:#059669;margin-top:4px">✓ Berättigar till grön teknik-avdrag</div>' : '';
        return '<div onclick="selectLbCharger(\''+p.id+'\','+p.price+')" style="padding:16px;border:2px solid '+(selected?'#3b82f6':'#e5e7eb')+';border-radius:10px;cursor:pointer;background:'+(selected?'#f0f9ff':'#fff')+'">'
            +'<div style="display:flex;align-items:center;justify-content:space-between">'
            +'<div>'
            +'<div style="font-weight:600;font-size:15px">'+p.name+'</div>'
            +'<div style="font-size:12px;color:#64748b;margin-top:2px">'+desc+'</div>'
            +greenBadge
            +'</div>'
            +'<div style="text-align:right">'
            +'<div style="font-size:18px;font-weight:700">'+fmt(p.price)+'</div>'
            +(selected?'<div style="color:#3b82f6;font-size:18px;margin-top:2px">✓</div>':'')
            +'</div></div></div>';
    }).join('');
}
function selectLbCharger(id,price){if(_lbSelected===id){_lbSelected=null;_lbPrice=0;}else{_lbSelected=id;_lbPrice=price;}renderLbChargers();updateLbCalc();}
function setLbDeduction(t){_lbDeduction=t;cfgSetBtns('deduct','lb-deduct-btn',t);updateLbCalc();}
function setLbOwners(n){_lbOwners=n;cfgSetBtns('owner','lb-owner-btn',n);updateLbCalc();}
function setLbFinYears(y){_lbFinYears=y;cfgSetBtns('fin','lb-fin-btn',y);updateLbCalc();}
function updateLbCalc(){
    var subtotal=_lbPrice;
    var prod = _lbProducts.find(function(p){ return p.id === _lbSelected; });
    var hasGreen = prod ? prod.greenTechEligible : false;
    var deductType = hasGreen ? _lbDeduction : 'none';
    var deduct=cfgDeduct(subtotal,0,deductType,_lbOwners);
    var total=subtotal-deduct;
    var monthly=cfgMonthly(total,_lbFinYears);
    document.getElementById('lbPrCharger').textContent=fmt(subtotal);
    document.getElementById('lbPrSubtotal').textContent=fmt(subtotal);
    document.getElementById('lbDeductLabel').textContent=deductType==='green'?'GRÖNT TEKNIK-AVDRAG':'INGET AVDRAG';
    document.getElementById('lbDeductKr').textContent=deduct?'-'+fmt(deduct):'0 kr';
    document.getElementById('lbPrTotal').textContent=fmt(total);
    document.getElementById('lbFinInfo').textContent='('+_lbFinYears+' år, 4.9%)';
    document.getElementById('lbPrMonthly').textContent=fmt(monthly)+'/mån';
    // Update shared summary
    if(typeof cfgAddItem==='function') { var lbName = prod ? prod.name : 'Laddbox'; cfgAddItem('laddbox', lbName, subtotal, deductType, 0); }
}