Files
EstiMaker/src/store/appStore.ts
T

80 lines
2.7 KiB
TypeScript

import { createSignal } from 'solid-js';
import { createStore } from 'solid-js/store';
import type { ExtractedItem } from '../utils/csv-parser';
import type { TemplateItem, Scope, SubScope, EstimateItem, JobInfo } from '../types';
// Raw CSV Data
const [activeItems, setActiveItems] = createSignal<ExtractedItem[]>([]);
const [activeIgnoredLines, setActiveIgnoredLines] = createSignal<string[][]>([]);
// Estimate Metadata
const [activeEstimateId, setActiveEstimateId] = createSignal<string | null>(null);
const [activeEstimateName, setActiveEstimateName] = createSignal('');
const [activeHistory, setActiveHistory] = createSignal<any[]>([]);
const [activeLatestSnapshot, setActiveLatestSnapshot] = createSignal<any | null>(null);
const [isLatestVersion, setIsLatestVersion] = createSignal(true);
// Estimate Builder State
const [scopes, setScopes] = createStore<Scope[]>([]);
const [subScopes, setSubScopes] = createStore<SubScope[]>([]);
const [estimateItems, setEstimateItems] = createStore<EstimateItem[]>([]);
const [clientInfo, setClientInfo] = createStore({
name: '',
address: '',
phone: '',
fax: ''
});
const [jobInfo, setJobInfo] = createStore<JobInfo>({
number: '',
name: '',
address: '',
workOrder: ''
});
const [generalEstimateNotes, setGeneralEstimateNotes] = createSignal('');
const [generalPreNotes, setGeneralPreNotes] = createSignal('');
// Template Creator State
const [activeTemplateName, setActiveTemplateName] = createSignal('');
const [activeTemplateItems, setActiveTemplateItems] = createStore<TemplateItem[]>([]);
const [activeTemplateId, setActiveTemplateId] = createSignal<string | null>(null);
export const appStore = {
// Raw CSV Extraction
items: activeItems,
setItems: setActiveItems,
ignoredLines: activeIgnoredLines,
setIgnoredLines: setActiveIgnoredLines,
// Estimate Meta
estimateId: activeEstimateId,
setEstimateId: setActiveEstimateId,
estimateName: activeEstimateName,
setEstimateName: setActiveEstimateName,
history: activeHistory,
setHistory: setActiveHistory,
latestSnapshot: activeLatestSnapshot,
setLatestSnapshot: setActiveLatestSnapshot,
isLatestVersion: isLatestVersion,
setIsLatestVersion: setIsLatestVersion,
// Estimate Builder
scopes, setScopes,
subScopes, setSubScopes,
estimateItems, setEstimateItems,
clientInfo, setClientInfo,
jobInfo, setJobInfo,
generalEstimateNotes, setGeneralEstimateNotes,
generalPreNotes, setGeneralPreNotes,
// Templates
templateId: activeTemplateId,
setTemplateId: setActiveTemplateId,
templateName: activeTemplateName,
setTemplateName: setActiveTemplateName,
templateItems: activeTemplateItems,
setTemplateItems: setActiveTemplateItems
};