Files
SteelBase/public/js/core/state.js
admtracksteel 6af3492815 fix: corrige erros de sintaxe ES6 - tudo para IIFE
- Converte logger.js para IIFE (remove export)
- Converte state.js para IIFE (remove export)
- Remove imports de app.js
- Corrige referências aos scripts de teste removidos
- Adiciona scripts de teste corretos
2026-04-03 21:42:51 +00:00

152 lines
3.8 KiB
JavaScript

/**
* Application State Management
* Central state for the entire application
*/
// Main application state
var appState = {
history: [],
favorites: [],
budgetItems: [],
currentSection: 'cev',
currentTheme: 'dark',
expertMode: false,
currentSidebarTab: 0
};
// User preferences (persisted to localStorage)
var userPreferences = {
theme: 'dark',
colorScheme: 'default',
fontSize: 'medium',
fontFamily: 'default'
};
// Load preferences from localStorage
function loadPreferences() {
try {
var saved = localStorage.getItem('acoCalcPreferences');
if (saved) {
var parsed = JSON.parse(saved);
for (var key in parsed) {
if (parsed.hasOwnProperty(key)) {
userPreferences[key] = parsed[key];
}
}
}
} catch (e) {
console.warn('Nao foi possivel carregar preferencias:', e);
}
}
// Save preferences to localStorage
function savePreferences() {
try {
localStorage.setItem('acoCalcPreferences', JSON.stringify(userPreferences));
} catch (e) {
console.warn('Nao foi possivel salvar preferencias:', e);
}
}
// Admin configuration
var adminConfig = {
appName: 'SteelBase',
appSubtitle: 'Plataforma Tecnica com Base de Dados de Materiais Brasileiros',
footerText: '© 2025 SteelBase v7.5 PROFESSIONAL EDITION - Plataforma Tecnica com Base de Dados de Materiais Brasileiros',
themeDefault: 'escuro',
modeDefault: 'simples',
toolsVisibility: {
'cev': true,
'seletor': true,
'equivalencias': false,
'comparativo': false,
'parafusos': true,
'layout': true,
'parafuso-vs-solda': false,
'preaquecimento': true,
'dureza': true,
'charpy': true,
'certificado': false,
'ultrassom': false,
'area-pintura': true,
'consumo-tinta': true,
'galvanizacao': false,
'custo-pintura': true,
'secagem': false,
'inspecao-pintura': false,
'orcamento': true,
'peso-rigging': false,
'referencia': false
}
};
/**
* Update app state
* @param {string} key - State key
* @param {any} value - New value
*/
function updateState(key, value) {
appState[key] = value;
}
/**
* Get state value
* @param {string} key - State key
* @returns {any} State value
*/
function getState(key) {
return appState[key];
}
/**
* Update user preferences
* @param {string} key - Preference key
* @param {any} value - New value
*/
function updatePreference(key, value) {
userPreferences[key] = value;
}
/**
* Get preference value
* @param {string} key - Preference key
* @returns {any} Preference value
*/
function getPreference(key) {
return userPreferences[key];
}
/**
* Check if localStorage is available and has space
* @returns {object} Storage status
*/
function checkStorage() {
try {
var testKey = '__storage_test__';
localStorage.setItem(testKey, testKey);
localStorage.removeItem(testKey);
var totalSize = 0;
for (var key in localStorage) {
if (localStorage.hasOwnProperty(key)) {
totalSize += localStorage[key].length * 2;
}
}
return { available: true, usedBytes: totalSize };
} catch (error) {
return { available: false, error: error.message };
}
}
// Make available globally
window.appState = appState;
window.userPreferences = userPreferences;
window.loadPreferences = loadPreferences;
window.savePreferences = savePreferences;
window.adminConfig = adminConfig;
window.updateState = updateState;
window.getState = getState;
window.updatePreference = updatePreference;
window.getPreference = getPreference;
window.checkStorage = checkStorage;