49 lines
1.5 KiB
TypeScript
49 lines
1.5 KiB
TypeScript
export type EliTabelaColunasConfig = {
|
|
/** Rotulos das colunas visiveis (em ordem). */
|
|
visiveis: string[];
|
|
/** Rotulos das colunas invisiveis. */
|
|
invisiveis: string[];
|
|
};
|
|
|
|
const STORAGE_PREFIX = "eli:tabela";
|
|
|
|
export function storageKeyColunas(nomeTabela: string) {
|
|
return `${STORAGE_PREFIX}:${nomeTabela}:colunas`;
|
|
}
|
|
|
|
function normalizarConfig(valor: unknown): EliTabelaColunasConfig {
|
|
if (!valor || typeof valor !== "object") {
|
|
return { visiveis: [], invisiveis: [] };
|
|
}
|
|
|
|
const v = valor as any;
|
|
const visiveis = Array.isArray(v.visiveis) ? v.visiveis.filter((x: any) => typeof x === "string") : [];
|
|
const invisiveis = Array.isArray(v.invisiveis) ? v.invisiveis.filter((x: any) => typeof x === "string") : [];
|
|
return { visiveis, invisiveis };
|
|
}
|
|
|
|
export function carregarConfigColunas(nomeTabela: string): EliTabelaColunasConfig {
|
|
try {
|
|
const raw = window.localStorage.getItem(storageKeyColunas(nomeTabela));
|
|
if (!raw) return { visiveis: [], invisiveis: [] };
|
|
return normalizarConfig(JSON.parse(raw));
|
|
} catch {
|
|
return { visiveis: [], invisiveis: [] };
|
|
}
|
|
}
|
|
|
|
export function salvarConfigColunas(nomeTabela: string, config: EliTabelaColunasConfig) {
|
|
try {
|
|
window.localStorage.setItem(storageKeyColunas(nomeTabela), JSON.stringify(normalizarConfig(config)));
|
|
} catch {
|
|
// ignore
|
|
}
|
|
}
|
|
|
|
export function limparConfigColunas(nomeTabela: string) {
|
|
try {
|
|
window.localStorage.removeItem(storageKeyColunas(nomeTabela));
|
|
} catch {
|
|
// ignore
|
|
}
|
|
}
|