feat: initial release of interactive electrical circuit & panel mapper
This commit is contained in:
commit
3ed8193565
17 files changed
+7222
No files matched your search
@@ -0,0 +1,85 @@
|
||||
# Electrical Circuit & Panel Mapper
|
||||
|
||||
Interactive, full-stack electrical circuit and panel mapping application for tracing branch circuits, documenting load centers, and mapping electrical devices (lighting fixtures, wall receptacles, switches, and dedicated appliances) across architectural floorplans.
|
||||
|
||||
Repository: [https://git.theta42.com/wmantly/electrical-chart](https://git.theta42.com/wmantly/electrical-chart)
|
||||
|
||||
---
|
||||
|
||||
## ⚡ Overview & Features
|
||||
|
||||
- **Interactive Architectural Schematic:**
|
||||
- Renders all 141 electrical devices (48 lights, 49 receptacles, 44 switches) and room structures derived from `diagram.drawio`.
|
||||
- Supports dual orientation modes: **Field Doc Landscape** (matching physical handheld floorplan printout) and **Draw.io Native**.
|
||||
- Smooth pan and zoom navigation (mouse wheel + click-and-drag).
|
||||
- **Physical Panel Scheduling:**
|
||||
- **GE PowerMark Gold Load Center (Subpanel):** 12 slots with 1/2-inch THQP slim tandem breakers (`6A`, `6B`, `7A`, `7B`, `8A`, `8B`, `9A`, `9B`, `11A`, `11B`, 2-pole 240V heaters).
|
||||
- **Main Service Panel (Square D QO):** Main disconnect, subpanel feeder, 240V range/HVAC/dryer, utility branch circuits.
|
||||
- **Painter Mode (Rapid Tagging):**
|
||||
- Click any breaker card in the sidebar to activate Painter Mode.
|
||||
- Click any device on the floor plan to instantly assign it to that breaker with zero dialogs.
|
||||
- Right-click any device to unassign it.
|
||||
- **Room Bulk Actions & Lasso Selection:**
|
||||
- Assign entire rooms of receptacles or lighting in a single click via the Device Inspector.
|
||||
- **Visual Circuit Tracing:**
|
||||
- Color-coded badges per circuit (`6A`, `7B`, `7A`, etc.).
|
||||
- Dashed circuit run lines dynamically link all devices sharing the same breaker.
|
||||
- Unmapped warning halos highlight every unverified fixture that still needs testing.
|
||||
- **Exports:**
|
||||
- Export back to updated **Draw.io XML** with embedded circuit tags.
|
||||
- Export **Panel Schedule CSV** for printing panel door labels.
|
||||
- Export full **JSON state dump**.
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Quickstart
|
||||
|
||||
### Prerequisites
|
||||
- Node.js v18+ (tested on Node v22)
|
||||
- npm
|
||||
|
||||
### Installation & Run
|
||||
|
||||
```bash
|
||||
git clone ssh://gitea@git.theta42.com:2222/wmantly/electrical-chart.git
|
||||
cd electrical-chart
|
||||
npm install
|
||||
npm start
|
||||
```
|
||||
|
||||
Open [http://localhost:3456](http://localhost:3456) in your browser.
|
||||
|
||||
To run on a different port:
|
||||
```bash
|
||||
PORT=3000 npm start
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📁 Project Architecture
|
||||
|
||||
```
|
||||
electrical-chart/
|
||||
├── app.js # Express application setup & middleware
|
||||
├── bin/
|
||||
│ └── www # HTTP server launcher
|
||||
├── conf/
|
||||
│ └── base.js # Configuration (port, database paths)
|
||||
├── data/
|
||||
│ └── electrical_chart.sqlite # SQLite database (auto-created on startup)
|
||||
├── diagram.drawio # Master Draw.io architectural source
|
||||
├── lib/
|
||||
│ └── seed.js # Initial database seeder & circuit pre-mappings
|
||||
├── models/
|
||||
│ └── db.js # better-sqlite3 connection & schema migrations
|
||||
├── public/
|
||||
│ ├── css/
|
||||
│ │ └── style.css # Dark blueprint theme & responsive styling
|
||||
│ └── js/
|
||||
│ └── app.js # Interactive SVG rendering, pan/zoom, painter mode
|
||||
├── routes/
|
||||
│ ├── api.js # REST API (/api/state, /api/devices/assign, exports)
|
||||
│ └── render.js # Main page render route
|
||||
└── views/
|
||||
└── index.ejs # EJS single-page layout
|
||||
```
|
||||
Reference in new issue
Block a user