# SLA Calculator A web-based SLA (Service Level Agreement) calculator for the eCom Content Factory. Replaces the Excel-based workflow with a 4-step wizard that PMs use to estimate project timelines and determine if deadlines can be met. There are **two versions**: - **Full Calculator** (`index.html`) — For PMs: 4-step wizard with full stage-by-stage configuration, Gantt chart, CSV/iCal export - **Client Estimator** (`client.html`) — For clients: single-page form with 4 inputs, uses SLA defaults automatically ## How It Works 1. **Select Brief Type** - Choose from 9 brief types (Country Pull, Global Push, Local Push, Urgent, etc.). Each brief type displays a scope description and auto-populates which of the 8 project stages apply. 2. **Configure Stages** - Toggle stages on/off, set complexity levels, asset volumes (up to 300-400), revision rounds (supports decimals), and market approval days. 3. **Enter Dates** - Set the project kick-off date and required go-live date. 4. **View Results** - See the full timeline breakdown (List + Gantt views), key dates per stage, and a clear Y/N verdict on whether the deadline can be met. ## Project Structure ``` index.html - Full PM calculator (4-step wizard, Gantt chart, CSV/iCal export) script.js - Full calculator engine + form dynamics client.html - Simplified client-facing estimator (single page) client-script.js - Client estimator engine (uses config defaults) config.json - All business rules (shared by both versions) ``` ## Editing Business Rules All assumptions, stage definitions, complexity levels, cross-reference tables, tooltips, and default values live in `config.json`. Non-developers can edit this file to update: - **Brief types and stage matrix** - Which stages apply to which brief type - **Production cross-reference table** - Days by complexity x asset volume - **Syndication cross-reference table** - Days by complexity x EAN volume - **Translation word count ranges** - Days by word count bucket - **Opera Upload days** - Days by asset volume - **Default values** - Revision rounds, market approval days, revision days per round - **Tooltips and descriptions** - Help text shown to PMs in the UI - **Syndication buffer** - Currently 10 business days (configurable) ## Key Calculation Logic - Uses **business days** (Monday-Friday), not calendar days - Each active stage adds: Handover (1 day) + WIP days + Market Approval days + (Revision Days x Rounds) - **Syndication buffer**: When syndication is active, a 10 business-day buffer is added to the suggested go-live date - **Stages 4 & 5** (Translation PDP + Asset) run in parallel and share one set of inputs - **Opera Upload** is mandatory for all brief types — the toggle is locked on and cannot be deactivated by users (controlled via `alwaysActive: true` in config.json) ## Features - Dark mode toggle (persists to localStorage) - Mobile responsive layout - Export to PDF (landscape A4) - Export to iCal (.ics) with key milestone dates for Outlook/Google Calendar - Real-time calculation on every input change - Tooltips matching the original Excel comments - Non-contractual dates disclaimer banner - Brief type scope descriptions displayed as bullet lists - Gantt chart view alongside list view in results ## Running Locally Open `index.html` in a browser, or serve with any static file server: ```bash npx serve -l 8080 ``` Then visit `http://localhost:8080`. ## Dependencies (via CDN) - [Tailwind CSS](https://tailwindcss.com/) - Styling - [Flatpickr](https://flatpickr.js.org/) - Date pickers - [html2pdf.js](https://ekoopmans.github.io/html2pdf.js/) - PDF export No build step required. No npm install needed. ## Deployment This is a fully static site (HTML + JS + JSON). Deploy to any static hosting: - **Netlify** - Drag & drop or connect this repo - **Vercel** - Connect this repo for auto-deploy - **SharePoint** - Upload files directly - **Azure Static Web Apps** - Free tier ## Verified Against Excel The calculator has been verified against the original Excel workbook example: | Input | Value | |---|---| | Brief Type | Country Pull - Simple | | Active Stages | Production + Opera Upload | | Production | Simple / 50-100 Assets / 0 revisions / 50% speedup | | Kick-off | 6 Mar 2026 | | Go-Live | 9 Mar 2026 | | Output | Value | |---|---| | Production Complete | 16 Mar | | Opera Upload Complete | 19 Mar | | Verdict | N (cannot meet deadline) | ## Changelog ### 2026-03-12 - Added non-contractual dates disclaimer banner at top of page - Revision and approval fields now accept decimal values (e.g. 0.2, 0.5) - Opera Upload stage is now mandatory for all brief types - Removed "Speed Up by %" slider from Production stage - Extended asset volume brackets: added 100-200, 200-300, 300-400 (WIP day values are provisional placeholders — see `SLA_Asset_Brackets_Review.pdf`) - Updated all 9 brief type descriptions with client-approved scope definitions - Brief descriptions now render as bullet lists for easier scanning ### 2026-03-13 - Opera Upload stage is now fully locked: toggle disabled, badge non-clickable, "Required" label shown in both Step 1 badges and Step 2 stage card - Uses config-driven `alwaysActive` flag — no hard-coded stage index in JS - Cache-busting version bumped to `v=2026031302` ### 2026-03-13 (Client Estimator) - Added simplified client-facing calculator (`client.html` + `client-script.js`) - Single-page form: project type, asset volume, kick-off date, go-live date - Uses config.json default values for all stage parameters (complexity, revisions, approval days) - Shows active stages with day counts, estimated completion date, Y/N verdict - Includes syndication buffer note when syndication is active - PDF export, dark mode, non-contractual disclaimer - Links to full calculator for detailed configuration