Updated
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"_note": "Sanitized scenario library for scn01. Each entry is an operator/participant-sanitized account, tagged with a single open-vocabulary category. Edited by operator/expert participants over time. Used to populate the browse carousel on /scn01/{association_slug}.",
|
||||
"_note": "Sanitized scenario library for scn01. Each entry is an operator/participant-sanitized account, tagged with a single open-vocabulary category. Sanitization keeps the causal mechanism intact and removes blame, accusation, identity, and retaliation framing. Edited by operator/expert participants over time. Used to populate the browse carousel on /scn01/{association_slug}.",
|
||||
"scenarios": [
|
||||
{
|
||||
"id": "scn-001",
|
||||
@@ -8,23 +8,73 @@
|
||||
},
|
||||
{
|
||||
"id": "scn-002",
|
||||
"category": "Noise Complaint",
|
||||
"text": "The same residents across several units have been playing loud music late at night, seemingly on purpose. Complaints have not resulted in any visible action."
|
||||
"category": "Porch Pirates",
|
||||
"text": "A package was left at the wrong door by the delivery driver and was opened by the resident who received it before the mistake was noticed."
|
||||
},
|
||||
{
|
||||
"id": "scn-003",
|
||||
"category": "Noise Complaint",
|
||||
"text": "The same residents across several units have been playing loud music late at night, seemingly on purpose, after repeated requests to stop."
|
||||
},
|
||||
{
|
||||
"id": "scn-004",
|
||||
"category": "Noise Complaint",
|
||||
"text": "Construction or repair work in a unit starts well before the hours the rules allow, on a recurring basis."
|
||||
},
|
||||
{
|
||||
"id": "scn-005",
|
||||
"category": "Towing",
|
||||
"text": "A guest's car was towed overnight from a space marked for guest parking. No warning was posted and no notice was given before the tow."
|
||||
},
|
||||
{
|
||||
"id": "scn-004",
|
||||
"id": "scn-006",
|
||||
"category": "Towing",
|
||||
"text": "A resident's car, parked in their assigned space, was towed while they were away for an extended period, with no record of why."
|
||||
},
|
||||
{
|
||||
"id": "scn-007",
|
||||
"category": "Excessive Maintenance Charges",
|
||||
"text": "The lawn is being mowed three times a week, which feels excessive. The frequency was not discussed with homeowners and the cost implications are unclear."
|
||||
},
|
||||
{
|
||||
"id": "scn-005",
|
||||
"id": "scn-008",
|
||||
"category": "Excessive Maintenance Charges",
|
||||
"text": "Landscaping crews have cut back bushes so severely that several did not survive, and the cost of replacing them was billed separately."
|
||||
},
|
||||
{
|
||||
"id": "scn-009",
|
||||
"category": "Surprise Charges",
|
||||
"text": "A one-time charge appeared on the account for removing a tree that had been dead for years. There was no advance notice that this charge was coming or why it was billed now."
|
||||
},
|
||||
{
|
||||
"id": "scn-010",
|
||||
"category": "Surprise Charges",
|
||||
"text": "A special assessment appeared on a statement with no explanation of what it covers or when it was approved."
|
||||
},
|
||||
{
|
||||
"id": "scn-011",
|
||||
"category": "Broken Window",
|
||||
"text": "A window was broken by a soccer ball from the neighboring apartments' field. The ball was kept temporarily as leverage to get the window fixed, then returned after the situation escalated."
|
||||
},
|
||||
{
|
||||
"id": "scn-012",
|
||||
"category": "Broken Window",
|
||||
"text": "A common-area window has been broken more than once, always overnight, with no one identified as responsible either time."
|
||||
},
|
||||
{
|
||||
"id": "scn-013",
|
||||
"category": "Broken Window",
|
||||
"text": "A window was broken during an incident between two homeowners, witnessed by a third resident who is not willing to provide further detail."
|
||||
},
|
||||
{
|
||||
"id": "scn-014",
|
||||
"category": "Broken Window",
|
||||
"text": "Children in the community have been putting gravel inside snowballs and throwing them at windows \u2014 no window has broken yet, but the pattern makes it likely one will."
|
||||
},
|
||||
{
|
||||
"id": "scn-015",
|
||||
"category": "Suspected Squatters",
|
||||
"text": "A unit that's supposed to be vacant shows signs of occupancy \u2014 lights at odd hours, unfamiliar cars \u2014 with no record of who is staying there or for how long."
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -72,17 +72,21 @@ function scn01_render_landing($association_slug, $access) {
|
||||
. json_encode(['scenarios' => $scenarios], JSON_UNESCAPED_SLASHES)
|
||||
. '</script>';
|
||||
|
||||
// Pinned strip — populated client-side
|
||||
$out .= '<div id="scn01-pinned" class="scn01-pinned" aria-label="Pinned scenarios"></div>';
|
||||
|
||||
// Carousel — populated client-side
|
||||
$out .= '<div class="scn01-carousel">';
|
||||
$out .= '<button type="button" id="scn01-prev" class="btn btn-sm btn-outline-secondary" aria-label="Previous scenario">←</button>';
|
||||
$out .= '<div id="scn01-card" class="scn01-card"></div>';
|
||||
$out .= '<button type="button" id="scn01-next" class="btn btn-sm btn-outline-secondary" aria-label="Next scenario">→</button>';
|
||||
$out .= '</div>';
|
||||
|
||||
if ($access === 'public') {
|
||||
// Public — show carousel + pinned strip read-only (no form)
|
||||
$out .= '<div class="scn01-narrative">';
|
||||
$out .= '<label for="scn01_narrative"><strong>Describe your situation</strong></label>';
|
||||
$out .= '<textarea id="scn01_narrative" class="form-control" rows="6" placeholder="In your own words, describe what happened." disabled></textarea>';
|
||||
$out .= '</div>';
|
||||
|
||||
$out .= '<div class="scn01-carousel mt-3">';
|
||||
$out .= '<button type="button" id="scn01-prev" class="btn btn-sm btn-outline-secondary" aria-label="Previous scenario">←</button>';
|
||||
$out .= '<div id="scn01-card" class="scn01-card"></div>';
|
||||
$out .= '<button type="button" id="scn01-next" class="btn btn-sm btn-outline-secondary" aria-label="Next scenario">→</button>';
|
||||
$out .= '</div>';
|
||||
|
||||
$out .= '<div id="scn01-pinned" class="scn01-pinned" aria-label="Pinned scenarios"></div>';
|
||||
|
||||
$out .= '<div class="alert alert-info mt-3">';
|
||||
$out .= 'Scenarios are public. ';
|
||||
$out .= '<a href="https://directory.diagnostics.kane-il.us/channel/theron">Complete the SASE process</a> ';
|
||||
@@ -94,15 +98,26 @@ function scn01_render_landing($association_slug, $access) {
|
||||
|
||||
$form_url = z_root() . '/scn01/' . scn01_h($association_slug);
|
||||
|
||||
$out .= '<form method="post" action="' . $form_url . '" id="scn01-form" class="scn01-form mt-3" novalidate>';
|
||||
$out .= '<form method="post" action="' . $form_url . '" id="scn01-form" class="scn01-form" novalidate>';
|
||||
$out .= scn01_csrf_token();
|
||||
$out .= '<div id="scn01-pinned-fields"></div>';
|
||||
|
||||
// Narrative textarea — above the carousel
|
||||
$out .= '<div class="scn01-narrative">';
|
||||
$out .= '<label for="scn01_narrative"><strong>Describe your situation</strong></label>';
|
||||
$out .= '<textarea id="scn01_narrative" name="narrative" class="form-control" rows="6" placeholder="In your own words, describe what happened."></textarea>';
|
||||
$out .= '</div>';
|
||||
|
||||
// Carousel
|
||||
$out .= '<div class="scn01-carousel mt-3">';
|
||||
$out .= '<button type="button" id="scn01-prev" class="btn btn-sm btn-outline-secondary" aria-label="Previous scenario">←</button>';
|
||||
$out .= '<div id="scn01-card" class="scn01-card"></div>';
|
||||
$out .= '<button type="button" id="scn01-next" class="btn btn-sm btn-outline-secondary" aria-label="Next scenario">→</button>';
|
||||
$out .= '</div>';
|
||||
|
||||
// Pinned strip — stacked below the carousel
|
||||
$out .= '<div id="scn01-pinned" class="scn01-pinned" aria-label="Pinned scenarios"></div>';
|
||||
$out .= '<div id="scn01-pinned-fields"></div>';
|
||||
|
||||
$out .= '<div class="alert alert-warning mt-2 small">';
|
||||
$out .= 'Once submitted, this record cannot be edited. If you want to add more later, you will need to submit a new record.';
|
||||
$out .= '</div>';
|
||||
|
||||
Reference in New Issue
Block a user