/
kan64
/
spreadsheet-lab
Обзор
Документация
Войти
/
kan64
/
spreadsheet-lab
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop
client/src/utils/fileStorage.ts
80 строк
2 KB
Anton Kravchenkov
feat(ui): Add freeze panes
21 мар 2026, 00:34
21 мар 2026, 00:34
4846186
Код
Авторство
О чём код?
import type {SpreadsheetFile, SheetData} from '../types'; const STORAGE_KEY = 'spreadsheet-files'; function generateId(): string { return crypto.randomUUID ? crypto.randomUUID() : `${Date.now()}-${Math.random()}`; } function createSheet(name: string): SheetData { return { id: generateId(), name, cells: {}, columnWidths: {}, rowHeights: {}, mergedCells: [], frozenRows: 0, frozenCols: 0, }; } export function getAllFiles(): SpreadsheetFile[] { try { const raw = localStorage.getItem(STORAGE_KEY); if (!raw) return []; return JSON.parse(raw) as SpreadsheetFile[]; } catch { return []; } } function saveAllFiles(files: SpreadsheetFile[]): void { localStorage.setItem(STORAGE_KEY, JSON.stringify(files)); } export function getFileById(id: string): SpreadsheetFile | undefined { return getAllFiles().find((f) => f.id === id); } export function createFile(name: string, id?: string): SpreadsheetFile { const sheet = createSheet('Лист 1'); const file: SpreadsheetFile = { id: id ?? generateId(), name, createdAt: new Date().toISOString(), updatedAt: new Date().toISOString(), sheets: [sheet], activeSheetId: sheet.id, }; const files = getAllFiles(); files.push(file); saveAllFiles(files); return file; } export function updateFile(file: SpreadsheetFile): void { const files = getAllFiles(); const idx = files.findIndex((f) => f.id === file.id); if (idx !== -1) { files[idx] = { ...file, updatedAt: new Date().toISOString() }; } else { files.push({ ...file, updatedAt: new Date().toISOString() }); } saveAllFiles(files); } export function deleteFile(id: string): void { const files = getAllFiles().filter((f) => f.id !== id); saveAllFiles(files); } export function renameFile(id: string, name: string): void { const files = getAllFiles(); const file = files.find((f) => f.id === id); if (file) { file.name = name; file.updatedAt = new Date().toISOString(); saveAllFiles(files); } }