// 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, '<');
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, '"') + '" 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;