WP size: preset dropdown that sets the split threshold + show band in creator
Replaces the free-text "Typical WP Size" with a preset dropdown (Small / Standard / Large / Custom). Choosing a preset auto-fills the max-hours split threshold (still editable). The chosen band is now surfaced next to Est. Hrs in the creator's size hint (not just the View-SOP modal), alongside the threshold/over-threshold warning. Sample SOP aligned to Standard (80 hrs). repopulateForm preserves a non-preset saved value as a dropdown option. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -8,6 +8,21 @@ let allComments = [];
|
||||
// project is active. Keeps each project's SOP separate in the browser.
|
||||
function SK(base){ try { return (typeof ProjectData !== 'undefined' && ProjectData.key) ? ProjectData.key(base) : base; } catch(e){ return base; } }
|
||||
|
||||
// WP size presets — the dropdown label maps to a default split-threshold (max
|
||||
// labor hours). The label is exported as governance.woSize (human-readable
|
||||
// guidance); the number drives the Creator's "consider splitting" warning.
|
||||
const WP_SIZE_PRESETS = {
|
||||
'Small — 1–2 days (≈8–24 hrs)': 24,
|
||||
'Standard — 3–5 days (≈40–80 hrs)': 80,
|
||||
'Large — 1–2 weeks (≈80–160 hrs)': 160
|
||||
};
|
||||
function onSizePresetChange(){
|
||||
const label = document.getElementById('gov_wosize').value;
|
||||
const max = WP_SIZE_PRESETS[label];
|
||||
if(max != null){ document.getElementById('gov_size_hours_max').value = max; }
|
||||
// 'Custom…' / '' leave the threshold for manual entry.
|
||||
}
|
||||
|
||||
let state = {
|
||||
project: {name:'', number:'', client:'', division:'', site:''},
|
||||
team: {pm:'', apm:'', cm:'', qm:''},
|
||||
@@ -181,10 +196,10 @@ function loadSampleData(){
|
||||
|
||||
// Populate Step 5
|
||||
document.getElementById('gov_woformat').value = 'WP##-[Sector]-[TYPE]';
|
||||
document.getElementById('gov_wosize').value = '3–5 days / 40–80 hours';
|
||||
document.getElementById('gov_wosize').value = 'Standard — 3–5 days (≈40–80 hrs)';
|
||||
document.getElementById('gov_disciplines').value = 'Mechanical, Electrical, Tech';
|
||||
document.getElementById('gov_discmode').value = 'choice';
|
||||
document.getElementById('gov_size_hours_max').value = '120';
|
||||
document.getElementById('gov_size_hours_max').value = '80';
|
||||
|
||||
// Populate Step 6
|
||||
document.getElementById('qual_qcreq').value = 'Yes — Detailed inspection items';
|
||||
@@ -246,6 +261,12 @@ function repopulateForm(){
|
||||
if(state.signoffRoles[0]) set('role_super_name', state.signoffRoles[0].name);
|
||||
if(state.signoffRoles[1]) set('role_foreman_name', state.signoffRoles[1].name);
|
||||
set('gov_woformat', state.governance.woformat);
|
||||
// gov_wosize is now a <select>; if a saved value isn't one of the presets
|
||||
// (e.g. legacy free text), add it as an option so the round-trip preserves it.
|
||||
const wsEl = document.getElementById('gov_wosize');
|
||||
if(wsEl && state.governance.wosize && !Array.from(wsEl.options).some(o=>o.value===state.governance.wosize)){
|
||||
wsEl.add(new Option(state.governance.wosize, state.governance.wosize));
|
||||
}
|
||||
set('gov_wosize', state.governance.wosize);
|
||||
set('gov_disciplines', (state.governance.disciplines||[]).join(', '));
|
||||
set('gov_discmode', state.governance.discMode);
|
||||
|
||||
Reference in New Issue
Block a user