js/konfigurator-taktvatt.js.bak-20260330

Code: DEV-3718D796 Size: 3.8 KB Lines: 72 Path: /home/prodconfig.wenesthosting.com/dev.solargroup.wenest.se/js/konfigurator-taktvatt.js.bak-20260330

Task / Comment

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

// === TAKTVÄTT KONFIGURATOR (kopplad till Produktkatalog) ===
let _ttSelectedType=null, _ttPricePerSqm=0, _ttDeduction='rot', _ttOwners=1, _ttFinYears=15;
let _ttProducts=[];

function initTtConfig(){ var _lbl=document.getElementById('cfgFileLabel');if(_lbl)_lbl.textContent='konfigurator-taktvatt.js';
    // Hämta taktvätt-produkter från katalogen
    _ttProducts = (typeof catalogProducts !== 'undefined' ? catalogProducts : []).filter(function(p){ return p.cat === 'taktvatt'; });
    if(_ttProducts.length === 1) {
        // Bara en produkt — välj den automatiskt
        selectTtType(_ttProducts[0].id, _ttProducts[0].price);
    }
    renderTtTypes();
    updateTtCalc();
}
function renderTtTypes(){
    var c=document.getElementById('ttTypeCards');if(!c)return;
    if(!_ttProducts.length) { c.innerHTML='<div style="padding:16px;color:#94a3b8;font-size:13px">Inga taktvätt-produkter i katalogen</div>'; return; }
    c.innerHTML=_ttProducts.map(function(p){
        var selected = _ttSelectedType === p.id;
        var desc = p.desc || '';
        var unit = p.unit || 'kvm';
        var unitLabel = unit === 'kvm' ? 'm²' : unit;
        var rotBadge = p.rotEligible ? '<div style="font-size:10px;color:#059669;margin-top:4px">✓ ROT-avdrag</div>' : '';
        return '<div onclick="selectTtType(\''+p.id+'\','+p.price+')" style="padding:14px 16px;border:2px solid '+(selected?'#3b82f6':'#e5e7eb')+';border-radius:10px;cursor:pointer;display:flex;align-items:center;gap:12px;background:'+(selected?'#f0f9ff':'#fff')+'">'
            +'<div style="width:20px;height:20px;border:2px solid '+(selected?'#3b82f6':'#d1d5db')+';border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0">'+(selected?'<div style="width:10px;height:10px;background:#3b82f6;border-radius:50%"></div>':'')+'</div>'
            +'<div style="flex:1"><div style="font-weight:600;font-size:14px">'+p.name+'</div><div style="font-size:11px;color:#64748b">'+desc+'</div>'+rotBadge+'</div>'
            +'<div style="font-weight:700;font-size:14px;color:#1a1a1a">'+p.price.toFixed(2)+' kr/'+unitLabel+'</div>'
            +'</div>';
    }).join('');
}
function selectTtType(id,price){_ttSelectedType=id;_ttPricePerSqm=price;renderTtTypes();updateTtCalc();}
function setTtDeduction(t){_ttDeduction=t;updateTtCalc();}
function setTtOwners(n){_ttOwners=n;updateTtCalc();}
function setTtFinYears(y){_ttFinYears=y;updateTtCalc();}
function updateTtCalc(){
    var area=parseInt(document.getElementById('ttArea')?.value)||0;
    var subtotal=area*_ttPricePerSqm;
    var prod = _ttProducts.find(function(p){ return p.id === _ttSelectedType; });
    var hasRot = prod ? prod.rotEligible : false;
    var deductType = hasRot ? _ttDeduction : 'none';
    var deduct=cfgDeduct(subtotal,1.0,deductType,_ttOwners);
    var total=subtotal-deduct;
    var monthly=cfgMonthly(total,_ttFinYears);
    var deductLabel = deductType==='rot' ? 'ROT-AVDRAG' : deductType==='green' ? 'GRÖNT TEKNIK-AVDRAG' : 'INGET AVDRAG';
    var deductDetail = deductType==='rot' ? '30% av ' + fmt(subtotal) + ' = ' + fmt(deduct) : '';

    renderPrisSidebar('ttPrisSidebar', {
        lines: [
            {label: 'Taktvätt', detail: area ? area+' m² × '+_ttPricePerSqm.toFixed(2)+' kr' : '', value: subtotal}
        ],
        subtotal: subtotal,
        deductType: deductType,
        deductLabel: deductLabel,
        deductAmount: deduct,
        deductDetail: deductDetail,
        owners: _ttOwners,
        total: total,
        finYears: _ttFinYears,
        monthly: monthly,
        category: 'taktvatt',
        onDeductChange: 'setTtDeduction',
        onOwnerChange: 'setTtOwners',
        onFinChange: 'setTtFinYears',
        onSave: "saveCfgQuote('taktvatt')",
        onOrder: "goToCfgAffar('taktvatt')"
    });
}