backups/new_calc-bak-20260420_145951.js

Code: DEV-15DF4FEC Size: 6.4 KB Lines: 158 Path: /home/prodconfig.wenesthosting.com/dev.solargroup.wenest.se/backups/new_calc-bak-20260420_145951.js

Task / Comment

Open report form
// new_calc.js — Ny Kalkyl startsida (ersätter kalkyl-ny.js)
// Läser från /api/calc_builder.php och visar endast konfiguratorer som har grid_image + grid_order.

var _newCalcActive = false;

function newCalc(kundData){
    _newCalcActive = true;
    if(typeof _kalkylItems !== 'undefined') _kalkylItems = {};
    if(typeof currentQuoteId !== 'undefined') currentQuoteId = null;
    if(typeof _cfgDirty !== 'undefined') _cfgDirty = false;
    if(typeof _vpPumps !== 'undefined') _vpPumps = [];
    if(typeof _fkWindows !== 'undefined') _fkWindows = [];
    if(typeof _lbTillval !== 'undefined') _lbTillval = [];
    if(typeof _lbSelected !== 'undefined'){ _lbSelected = null; _lbPrice = 0; }
    if(typeof _vpSelected !== 'undefined'){ _vpSelected = null; _vpPrice = 0; }
    if(typeof _batInitialized !== 'undefined') _batInitialized = false;

    var titleEl = document.getElementById('kalkylTitle');
    if(titleEl) titleEl.textContent = 'Ny Kalkyl';
    var fileLabel = document.getElementById('cfgFileLabel');
    if(fileLabel) fileLabel.textContent = 'new_calc.js';

    // Navigera till konfigurator-sidan
    if(typeof currentPage !== 'undefined') currentPage = 'konfigurator';
    document.querySelectorAll('.page-content').forEach(function(p){ p.classList.remove('active'); });
    var pageEl = document.getElementById('page-konfigurator');
    if(pageEl) pageEl.classList.add('active');
    document.querySelectorAll('.nav-item').forEach(function(n){
        if(n.dataset && n.dataset.page === 'konfigurator') n.classList.add('active');
        else n.classList.remove('active');
    });

    var listView = document.getElementById('kalkylListView');
    if(listView) listView.style.display = 'none';
    var configView = document.getElementById('kalkylConfigView');
    if(configView) configView.style.display = 'block';

    _resetCalcView();

    if(typeof pendingKalkylCustomer !== 'undefined') pendingKalkylCustomer = kundData || null;
    if(typeof populateKalkylFromCustomer === 'function') populateKalkylFromCustomer();

    var photosSection = document.getElementById('kalkylPhotosSection');
    if(photosSection) photosSection.style.display = '';

    _showNewCalcGrid();
    _loadNewCalcCards();

    setTimeout(_resetCalcView, 100);
    setTimeout(_resetCalcView, 500);
}

function _resetCalcView(){
    var cs = document.getElementById('categorySelect');
    if(cs) cs.value = '';

    ['solarConfigView','genericConfigView','fonsterConfigView','batteriConfigView',
     'laddboxConfigView','taktvatConfigView','varmepumpConfigView','takConfigView',
     'isoleringConfigView'].forEach(function(v){
        var el = document.getElementById(v);
        if(el) el.style.display = 'none';
    });

    var afv = document.getElementById('affarView');
    if(afv) afv.style.display = 'none';
    var pqv = document.getElementById('productQuoteView');
    if(pqv) pqv.remove();

    // Gamla griden ska ALDRIG visas längre — ersätts av new-calc-grid
    var oldGrid = document.getElementById('cfgCategoryGrid');
    if(oldGrid) oldGrid.style.display = 'none';

    if(typeof setKalkylViewMode === 'function') setKalkylViewMode(_newCalcActive ? 'new' : 'config');
    if(_newCalcActive) _showNewCalcGrid();
}

function _showNewCalcGrid(){
    var shell = document.getElementById('newCalcShell');
    if(!shell) return;
    // Flytta shellet in i konfigurator-content om det inte redan ligger där
    var configView = document.getElementById('kalkylConfigView');
    if(configView && shell.parentElement !== configView){
        configView.appendChild(shell);
    }
    shell.style.display = 'block';
}

function _hideNewCalcGrid(){
    var shell = document.getElementById('newCalcShell');
    if(shell) shell.style.display = 'none';
}

function _loadNewCalcCards(){
    var grid = document.getElementById('newCalcGrid');
    var empty = document.getElementById('newCalcEmpty');
    if(!grid) return;
    grid.innerHTML = '';

    fetch('/api/calc_builder.php')
        .then(function(r){ return r.json(); })
        .then(function(data){
            var items = (data && data.configurators) || [];
            // Filtrera: endast de som har grid_image (gridbild uppladdad) OCH grid_order är satt
            var cards = items.filter(function(c){
                return c.grid_image && c.grid_image !== '' && c.grid_order != null && c.grid_order !== '';
            }).sort(function(a, b){
                return (parseInt(a.grid_order) || 0) - (parseInt(b.grid_order) || 0);
            });

            if(!cards.length){
                grid.style.display = 'none';
                if(empty) empty.style.display = 'block';
                return;
            }

            if(empty) empty.style.display = 'none';
            grid.style.display = 'grid';
            grid.innerHTML = cards.map(_renderNewCalcCard).join('');
        })
        .catch(function(err){
            console.error('new_calc: load error', err);
            grid.style.display = 'none';
            if(empty){
                empty.style.display = 'block';
                var body = empty.querySelector('.new-calc-empty-body');
                if(body) body.textContent = 'Kunde inte läsa konfiguratorer från servern.';
            }
        });
}

function _renderNewCalcCard(cfg){
    var cat = (cfg.category || '').replace(/"/g, '"');
    var title = (cfg.title || cfg.category_label || cfg.category || '').replace(/</g, '&lt;');
    var meta = (cfg.builder_mode === 'advanced' ? 'Avancerad' : (cfg.builder_mode === 'code' ? 'Code' : 'Enkel'));
    var img = cfg.grid_image ? '<img class="new-calc-card-image" src="' + cfg.grid_image.replace(/"/g, '&quot;') + '" alt="">'
                             : '<div class="new-calc-card-image"></div>';
    return '<div class="new-calc-card" onclick="openNewCalcCategory(\'' + cat + '\')">'
        + img
        + '<div class="new-calc-card-body">'
        +   '<div class="new-calc-card-title">' + title + '</div>'
        +   '<div class="new-calc-card-meta">' + meta + '</div>'
        + '</div>'
        + '</div>';
}

function openNewCalcCategory(categoryId){
    _newCalcActive = false;
    _hideNewCalcGrid();
    var sel = document.getElementById('categorySelect');
    if(sel) sel.value = categoryId;
    if(typeof changeCategory === 'function') changeCategory();
}

// Gör funktionerna globalt tillgängliga (anropas från onclick-attribut och andra filer)
window.newCalc = newCalc;
window.openNewCalcCategory = openNewCalcCategory;
window._newCalcActive = _newCalcActive;