Add RMO water page, start district layout

This commit is contained in:
Eli Ribble 2026-04-03 16:37:09 +00:00
parent fd7607f5b7
commit 4f9617aa2f
No known key found for this signature in database
6 changed files with 664 additions and 627 deletions

View file

@ -2,22 +2,6 @@
{{ define "title" }}Report Standing Water{{ end }}
{{ define "extraheader" }}
<style>
.map-container {
background-color: #e9ecef;
border-radius: 10px;
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05);
height: 500px;
display: flex;
align-items: center;
justify-content: center;
margin-top: 20px;
}
#map {
width: 100%;
height: 100%;
}
</style>
<script
type="text/javascript"
src="//unpkg.com/maplibre-gl@5.0.1/dist/maplibre-gl.js"
@ -175,511 +159,3 @@
});
</script>
{{ end }}
{{ define "content" }}
{{ if (eq .District nil) }}
{{ template "rmo/component/header-rmo.html" . }}
{{ else }}
{{ template "rmo/component/header-district.html" .District }}
{{ end }}
<!-- Main Content -->
<main class="py-5">
<div class="container">
<!-- Page Title -->
<div class="row mb-4">
<div class="col-12">
<h2>Report Standing Water</h2>
<p class="lead">
Help us locate and treat potential mosquito production sources in
your area
</p>
</div>
</div>
<!-- Report Form -->
<form
id="standingWater"
action="{{ .URL.WaterSubmit }}"
method="POST"
enctype="multipart/form-data"
>
<!-- Photo Upload Section -->
<div class="form-section">
<div class="section-heading">
<i class="bi bi-camera"></i>
<h3>Photos</h3>
</div>
<p class="mb-3">
Photos help us identify the severity of the issue and may contain
location data that can help us find the production source.
</p>
<div class="mb-4">
<photo-upload />
</div>
</div>
<!-- Additional Information Section -->
<div class="form-section">
<div class="section-heading">
<i class="bi bi-card-text"></i>
<h3>Additional Information</h3>
</div>
<p class="mb-3">
Please provide any other information that might help us address this
mosquito production source.
</p>
<div class="row">
<div class="col-md-12">
<label for="comments" class="form-label"
>Additional Details</label
>
<textarea
class="form-control"
id="comments"
maxlength="2048"
name="comments"
rows="4"
placeholder="Example: The house appears to be vacant. There is algae growth in the pool. I've noticed increased mosquito activity in the evenings."
></textarea>
</div>
</div>
</div>
<!-- Location Section -->
<div class="form-section">
<div class="section-heading">
<i class="bi bi-geo-alt"></i>
<h3>Location</h3>
</div>
<p class="mb-3">
Please provide the location of the potential mosquito production
source. We may be able to extract this information from your photos
if they contain location data.
</p>
<div class="col-md-12">
<div class="alert alert-info" role="info">
<p class="mb-0">
You can select the location by address or by moving the marker
on the map.
</p>
</div>
</div>
<div class="row mb-3">
<!-- Hidden fields for location data -->
<input type="hidden" id="address-country" name="address-country" />
<input
type="hidden"
id="address-locality"
name="address-locality"
/>
<input type="hidden" id="address-number" name="address-number" />
<input
type="hidden"
id="address-postalcode"
name="address-postalcode"
/>
<input type="hidden" id="address-region" name="address-region" />
<input type="hidden" id="address-street" name="address-street" />
<input type="hidden" id="latitude" name="latitude" />
<input type="hidden" id="longitude" name="longitude" />
<input
type="hidden"
id="latlng-accuracy-type"
name="latlng-accuracy-type"
/>
<input
type="hidden"
id="latlng-accuracy-value"
name="latlng-accuracy-value"
/>
<div class="col-md-6">
<div class="mb-3 position-relative">
<address-input
placeholder="Start typing an address (min 3 characters)"
>
</address-input>
</div>
</div>
</div>
<p class="small text-muted mb-2">
You can also click on the map to mark the location precisely
</p>
<div class="map-container">
<map-locator id="map"></map-locator>
</div>
<input type="hidden" id="map-zoom" name="map-zoom" />
</div>
<button
id="toggle-additional"
class="btn btn-warning"
type="button"
onClick="toggleCollapse('collapse-additional-fields')"
>
Click here to answer a few more questions to better help us solve your
mosquito problem
</button>
<div class="collapse" id="collapse-additional-fields">
<!-- Source Details Section -->
<div class="form-section">
<div class="section-heading">
<i class="bi bi-water"></i>
<h3>Source Details</h3>
</div>
<div class="row mb-4">
<div class="col-md-6">
<label for="duration" class="form-label"
>How long has this production source been present?</label
>
<select
class="form-select"
id="duration"
name="source-duration"
>
<option value="none">I don't know</option>
<option value="less-than-week">Less than a week</option>
<option value="1-2-weeks">1-2 weeks</option>
<option value="2-4-weeks">2-4 weeks</option>
<option value="1-3-months">1-3 months</option>
<option value="more-than-3-months">More than 3 months</option>
</select>
</div>
<div class="col-md-6">
<label class="form-label d-block"
>Have you observed any of the following?
<a
href="#"
data-bs-toggle="modal"
data-bs-target="#larvaeInfoModal"
><i class="bi bi-question-circle small ms-1"></i></a
></label>
<div class="form-check">
<input
class="form-check-input"
type="checkbox"
id="larvae"
name="has-larvae"
/>
<label class="form-check-label" for="larvae">
Larvae (wigglers) in water
</label>
</div>
<div class="form-check">
<input
class="form-check-input"
type="checkbox"
id="pupae"
name="has-pupae"
/>
<label class="form-check-label" for="pupae">
Pupae (tumblers) in water
</label>
</div>
<div class="form-check">
<input
class="form-check-input"
type="checkbox"
id="adult"
name="has-adult"
/>
<label class="form-check-label" for="adult">
Adult mosquitoes near the source
</label>
</div>
</div>
</div>
</div>
<!-- Access Information Section -->
<div class="form-section">
<div class="section-heading">
<i class="bi bi-unlock"></i>
<h3>Access Information</h3>
</div>
<p class="mb-3">
Please provide any details about how to access the mosquito
source. This helps our technicians when they visit the site.
</p>
<div class="row mb-3">
<div class="col-md-12">
<label for="access-comments" class="form-label"
>How can the source be accessed?</label
>
<textarea
class="form-control"
id="access-comments"
maxlength="1024"
name="access-comments"
rows="3"
placeholder="Example: The pool is in the backyard, which can be accessed through a side gate on the right side of the house."
></textarea>
</div>
</div>
<div class="row mb-3">
<div class="col-md-12">
<label class="form-label d-block"
>Access obstacles (check all that apply):</label
>
<div class="row">
<div class="col-md-4">
<div class="form-check">
<input
class="form-check-input"
type="checkbox"
id="gate"
name="access-gate"
/>
<label class="form-check-label" for="gate">Gate</label>
</div>
<div class="form-check">
<input
class="form-check-input"
type="checkbox"
id="fence"
name="access-fence"
/>
<label class="form-check-label" for="fence">Fence</label>
</div>
</div>
<div class="col-md-4">
<div class="form-check">
<input
class="form-check-input"
type="checkbox"
id="locked"
name="access-locked"
/>
<label class="form-check-label" for="locked"
>Locked entrance</label
>
</div>
<div class="form-check">
<input
class="form-check-input"
type="checkbox"
id="dogs"
name="access-dog"
/>
<label class="form-check-label" for="dogs"
>Dogs/pets</label
>
</div>
</div>
<div class="col-md-4">
<div class="form-check">
<input
class="form-check-input"
type="checkbox"
id="access-other"
name="access-other"
/>
<label class="form-check-label" for="access-other"
>Other obstacle</label
>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Contact Information Sections -->
<div class="form-section">
<div class="section-heading">
<i class="bi bi-person-lines-fill"></i>
<h3>Property Owner Information (if known)</h3>
</div>
<div class="row mb-4">
<div class="col-md-4 mb-3">
<label for="owner-name" class="form-label">Owner Name</label>
<input
type="text"
class="form-control"
id="owner-name"
maxlength="100"
name="owner-name"
/>
</div>
<div class="col-md-4 mb-3">
<label for="owner-phone" class="form-label">Owner Phone</label>
<input
type="tel"
class="form-control"
id="owner-phone"
maxlength="50"
name="owner-phone"
/>
</div>
<div class="col-md-4 mb-3">
<label for="owner-email" class="form-label">Owner Email</label>
<input
type="email"
class="form-control"
id="owner-email"
maxlength="100"
name="owner-email"
/>
</div>
</div>
<div class="row mb-4">
<div class="col-md-6 mb-3 row">
<div class="form-check mt-4">
<input
class="form-check-input"
id="property-ownership"
name="property-ownership"
type="checkbox"
/>
<label class="form-check-label" for="property-ownership"
>This is my property</label
>
</div>
<div class="form-check mt-4">
<input
class="form-check-input"
id="backyard-permission"
name="backyard-permission"
type="checkbox"
/>
<label class="form-check-label" for="backyard-permission"
>I grant permission to enter the back yard of this
property.</label
>
</div>
<div class="form-check mt-4">
<input
class="form-check-input"
id="reporter-confidential"
name="reporter-confidential"
type="checkbox"
/>
<label class="form-check-label" for="reporter-confidential">
<i
class="bi bi-info-circle-fill text-primary ms-1"
data-bs-toggle="tooltip"
data-bs-placement="top"
title="We share your information with mosquito control districts so they can follow up with any questions they may have about your report. Check this box if you would like the district to be careful not to share your information outside of the district operations team."
></i>
I would like my personal information kept
confidential.</label
>
</div>
</div>
</div>
</div>
</div>
<!-- Submit Section -->
<div class="submit-container">
<div class="row align-items-center">
<div class="col-md-8">
<p class="mb-0">
<strong
>Thank you for helping us keep our community safe from
mosquito-borne illnesses.</strong
>
</p>
<p class="mb-0 small text-muted">
After submission, you will receive a confirmation with a report
ID for tracking purposes.
</p>
</div>
<div class="col-md-4 text-md-end mt-3 mt-md-0">
<button type="submit" class="btn btn-primary btn-lg">
Submit Report
</button>
</div>
</div>
</div>
</form>
</div>
</main>
<!-- Larvae Info Modal -->
<div
class="modal fade"
id="larvaeInfoModal"
tabindex="-1"
aria-labelledby="larvaeInfoModalLabel"
aria-hidden="true"
>
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="larvaeInfoModalLabel">
How to Identify Mosquito Larvae and Pupae
</h5>
<button
type="button"
class="btn-close"
data-bs-dismiss="modal"
aria-label="Close"
></button>
</div>
<div class="modal-body">
<div class="row mb-4">
<div class="col-md-6">
<h6>Mosquito Larvae (Wigglers)</h6>
<p>Mosquito larvae, often called "wigglers," are:</p>
<ul>
<li>Small, worm-like aquatic organisms</li>
<li>Usually 1/4 to 1/2 inch long</li>
<li>Move with a wiggling motion in water</li>
<li>Hang upside-down at the water surface to breathe</li>
<li>Visible to the naked eye in standing water</li>
</ul>
</div>
<div class="col-md-6">
<h6>Mosquito Pupae (Tumblers)</h6>
<p>Mosquito pupae, often called "tumblers," are:</p>
<ul>
<li>Comma-shaped organisms</li>
<li>Typically darker than larvae</li>
<li>Move with a tumbling motion when disturbed</li>
<li>Rest at the water surface</li>
<li>The stage just before adult mosquitoes emerge</li>
</ul>
</div>
</div>
<p>
When looking for mosquito larvae and pupae, check standing water
sources like:
</p>
<ul>
<li>Swimming pools</li>
<li>Bird baths</li>
<li>Buckets or containers</li>
<li>Drainage ditches</li>
<li>Plant saucers</li>
<li>Rain gutters</li>
</ul>
<p>
If you see small creatures moving in standing water, there's a good
chance they're mosquito larvae or pupae.
</p>
<div class="text-center">
<a href="#" class="btn btn-outline-primary"
>View Detailed Identification Guide</a
>
</div>
</div>
<div class="modal-footer">
<button
type="button"
class="btn btn-secondary"
data-bs-dismiss="modal"
>
Close
</button>
</div>
</div>
</div>
</div>
{{ end }}

82
ts/rmo/content/Home.vue Normal file
View file

@ -0,0 +1,82 @@
<style scoped>
.bi-large {
height: 48px;
width: 48px;
}
</style>
<template>
<!-- Main Content -->
<main>
<slot name="header"></slot>
<!-- Services Section -->
<section class="py-5">
<div class="container">
<h3 class="text-center mb-4">How Can We Help You Today?</h3>
<div class="row g-4">
<div class="col-md-4">
<div class="card service-card h-100">
<div class="card-body text-center">
<div class="mb-3">
<i class="bi bi-large bi-mosquito-color"></i>
</div>
<h4 class="card-title">Report Mosquito Nuisance</h4>
<p class="card-text">
Report areas with high adult mosquito activity causing
discomfort or concern.
</p>
<RouterLink to="/nuisance" class="btn btn-primary mt-3"
>Report Problem</RouterLink
>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card service-card h-100">
<div class="card-body text-center">
<div class="mb-3">
<i class="bi bi-large bi-pond-color"></i>
</div>
<h4 class="card-title">Report Standing Water</h4>
<p class="card-text">
Report any water that has been sitting for several days, where
mosquitoes can live.
</p>
<RouterLink to="/water" class="btn btn-primary mt-3"
>Report Source</RouterLink
>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card service-card h-100">
<div class="card-body text-center">
<div class="mb-3">
<i class="bi bi-large bi-check-report-color"></i>
</div>
<h4 class="card-title">Follow-up or Check Status</h4>
<p class="card-text">
Check on a previous request or view current mosquito activity
in your area.
</p>
<RouterLink to="/status" class="btn btn-primary mt-3"
>Get Status</RouterLink
>
</div>
</div>
</div>
</div>
</div>
</section>
</main>
</template>
<script setup lang="ts">
import { ref } from "vue";
interface District {
name: string;
url_logo: string;
}
const district = ref<District | null>(null);
</script>

View file

@ -2,6 +2,7 @@ import { createRouter, createWebHistory } from "vue-router";
import type { RouteRecordRaw } from "vue-router";
import Home from "@/rmo/view/Home.vue";
import Nuisance from "@/rmo/view/Nuisance.vue";
import Water from "@/rmo/view/Water.vue";
const routes: RouteRecordRaw[] = [
{
path: "/",
@ -13,6 +14,11 @@ const routes: RouteRecordRaw[] = [
name: "Nuisance",
component: Nuisance,
},
{
path: "/water",
name: "Water",
component: Water,
},
];
export const router = createRouter({

View file

@ -1,114 +1,15 @@
<style scoped>
.bi-large {
height: 48px;
width: 48px;
}
</style>
<template>
<!-- Main Content -->
<main>
<template v-if="district">
<!-- Introduction Section -->
<section class="py-5 bg-primary text-white">
<div class="container">
<div class="row justify-content-center">
<div class="col-lg-10">
<h2 class="text-center mb-4">Report a Mosquito Problem</h2>
<p class="lead text-center">
Submit a report to help reduce mosquito activity in your
neighborhood.
</p>
<p class="lead text-center">
Report Mosquitoes Online works with local mosquito control
agencies to receive public reports.
</p>
<p class="lead text-center">
For this area, mosquito control services are provided by
</p>
<h3 class="text-center">{{ district.name }}</h3>
<img class="district-logo" src="{{ district.url_logo }}" />
</div>
</div>
</div>
</section>
</template>
<template v-else>
<!-- Introduction Section -->
<Home>
<template #header>
<section class="py-2 bg-primary text-white">
<div class="banner-container d-flex justify-content-center">
<img class="banner" src="/static/img/rmo/banner.jpg" />
</div>
</section>
</template>
<!-- Services Section -->
<section class="py-5">
<div class="container">
<h3 class="text-center mb-4">How Can We Help You Today?</h3>
<div class="row g-4">
<div class="col-md-4">
<div class="card service-card h-100">
<div class="card-body text-center">
<div class="mb-3">
<i class="bi bi-large bi-mosquito-color"></i>
</div>
<h4 class="card-title">Report Mosquito Nuisance</h4>
<p class="card-text">
Report areas with high adult mosquito activity causing
discomfort or concern.
</p>
<RouterLink to="/nuisance" class="btn btn-primary mt-3"
>Report Problem</RouterLink
>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card service-card h-100">
<div class="card-body text-center">
<div class="mb-3">
<i class="bi bi-large bi-pond-color"></i>
</div>
<h4 class="card-title">Report Standing Water</h4>
<p class="card-text">
Report any water that has been sitting for several days, where
mosquitoes can live.
</p>
<RouterLink to="/water" class="btn btn-primary mt-3"
>Report Source</RouterLink
>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card service-card h-100">
<div class="card-body text-center">
<div class="mb-3">
<i class="bi bi-large bi-check-report-color"></i>
</div>
<h4 class="card-title">Follow-up or Check Status</h4>
<p class="card-text">
Check on a previous request or view current mosquito activity
in your area.
</p>
<RouterLink to="/status" class="btn btn-primary mt-3"
>Get Status</RouterLink
>
</div>
</div>
</div>
</div>
</div>
</section>
</main>
</Home>
</template>
<script setup lang="ts">
import { ref } from "vue";
interface District {
name: string;
url_logo: string;
}
const district = ref<District | null>(null);
import Home from "@/rmo/content/Home.vue";
</script>

527
ts/rmo/view/Water.vue Normal file
View file

@ -0,0 +1,527 @@
<style scoped>
.map-container {
background-color: #e9ecef;
border-radius: 10px;
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05);
height: 500px;
display: flex;
align-items: center;
justify-content: center;
margin-top: 20px;
}
#map {
width: 100%;
height: 100%;
}
</style>
<template>
<main class="py-5">
<div class="container">
<!-- Page Title -->
<div class="row mb-4">
<div class="col-12">
<h2>Report Standing Water</h2>
<p class="lead">
Help us locate and treat potential mosquito production sources in
your area
</p>
</div>
</div>
<!-- Report Form -->
<form
id="standingWater"
action="{{ .URL.WaterSubmit }}"
method="POST"
enctype="multipart/form-data"
>
<!-- Photo Upload Section -->
<div class="form-section">
<div class="section-heading">
<i class="bi bi-camera"></i>
<h3>Photos</h3>
</div>
<p class="mb-3">
Photos help us identify the severity of the issue and may contain
location data that can help us find the production source.
</p>
<div class="mb-4">
<photo-upload />
</div>
</div>
<!-- Additional Information Section -->
<div class="form-section">
<div class="section-heading">
<i class="bi bi-card-text"></i>
<h3>Additional Information</h3>
</div>
<p class="mb-3">
Please provide any other information that might help us address this
mosquito production source.
</p>
<div class="row">
<div class="col-md-12">
<label for="comments" class="form-label"
>Additional Details</label
>
<textarea
class="form-control"
id="comments"
maxlength="2048"
name="comments"
rows="4"
placeholder="Example: The house appears to be vacant. There is algae growth in the pool. I've noticed increased mosquito activity in the evenings."
></textarea>
</div>
</div>
</div>
<!-- Location Section -->
<div class="form-section">
<div class="section-heading">
<i class="bi bi-geo-alt"></i>
<h3>Location</h3>
</div>
<p class="mb-3">
Please provide the location of the potential mosquito production
source. We may be able to extract this information from your photos
if they contain location data.
</p>
<div class="col-md-12">
<div class="alert alert-info" role="info">
<p class="mb-0">
You can select the location by address or by moving the marker
on the map.
</p>
</div>
</div>
<div class="row mb-3">
<!-- Hidden fields for location data -->
<input type="hidden" id="address-country" name="address-country" />
<input
type="hidden"
id="address-locality"
name="address-locality"
/>
<input type="hidden" id="address-number" name="address-number" />
<input
type="hidden"
id="address-postalcode"
name="address-postalcode"
/>
<input type="hidden" id="address-region" name="address-region" />
<input type="hidden" id="address-street" name="address-street" />
<input type="hidden" id="latitude" name="latitude" />
<input type="hidden" id="longitude" name="longitude" />
<input
type="hidden"
id="latlng-accuracy-type"
name="latlng-accuracy-type"
/>
<input
type="hidden"
id="latlng-accuracy-value"
name="latlng-accuracy-value"
/>
<div class="col-md-6">
<div class="mb-3 position-relative">
<address-input
placeholder="Start typing an address (min 3 characters)"
>
</address-input>
</div>
</div>
</div>
<p class="small text-muted mb-2">
You can also click on the map to mark the location precisely
</p>
<div class="map-container">
<map-locator id="map"></map-locator>
</div>
<input type="hidden" id="map-zoom" name="map-zoom" />
</div>
<button
id="toggle-additional"
class="btn btn-warning"
type="button"
@click="toggleCollapse()"
>
Click here to answer a few more questions to better help us solve your
mosquito problem
</button>
<div class="collapse" id="collapse-additional-fields">
<!-- Source Details Section -->
<div class="form-section">
<div class="section-heading">
<i class="bi bi-water"></i>
<h3>Source Details</h3>
</div>
<div class="row mb-4">
<div class="col-md-6">
<label for="duration" class="form-label"
>How long has this production source been present?</label
>
<select
class="form-select"
id="duration"
name="source-duration"
>
<option value="none">I don't know</option>
<option value="less-than-week">Less than a week</option>
<option value="1-2-weeks">1-2 weeks</option>
<option value="2-4-weeks">2-4 weeks</option>
<option value="1-3-months">1-3 months</option>
<option value="more-than-3-months">More than 3 months</option>
</select>
</div>
<div class="col-md-6">
<label class="form-label d-block"
>Have you observed any of the following?
<a
href="#"
data-bs-toggle="modal"
data-bs-target="#larvaeInfoModal"
><i class="bi bi-question-circle small ms-1"></i></a
></label>
<div class="form-check">
<input
class="form-check-input"
type="checkbox"
id="larvae"
name="has-larvae"
/>
<label class="form-check-label" for="larvae">
Larvae (wigglers) in water
</label>
</div>
<div class="form-check">
<input
class="form-check-input"
type="checkbox"
id="pupae"
name="has-pupae"
/>
<label class="form-check-label" for="pupae">
Pupae (tumblers) in water
</label>
</div>
<div class="form-check">
<input
class="form-check-input"
type="checkbox"
id="adult"
name="has-adult"
/>
<label class="form-check-label" for="adult">
Adult mosquitoes near the source
</label>
</div>
</div>
</div>
</div>
<!-- Access Information Section -->
<div class="form-section">
<div class="section-heading">
<i class="bi bi-unlock"></i>
<h3>Access Information</h3>
</div>
<p class="mb-3">
Please provide any details about how to access the mosquito
source. This helps our technicians when they visit the site.
</p>
<div class="row mb-3">
<div class="col-md-12">
<label for="access-comments" class="form-label"
>How can the source be accessed?</label
>
<textarea
class="form-control"
id="access-comments"
maxlength="1024"
name="access-comments"
rows="3"
placeholder="Example: The pool is in the backyard, which can be accessed through a side gate on the right side of the house."
></textarea>
</div>
</div>
<div class="row mb-3">
<div class="col-md-12">
<label class="form-label d-block"
>Access obstacles (check all that apply):</label
>
<div class="row">
<div class="col-md-4">
<div class="form-check">
<input
class="form-check-input"
type="checkbox"
id="gate"
name="access-gate"
/>
<label class="form-check-label" for="gate">Gate</label>
</div>
<div class="form-check">
<input
class="form-check-input"
type="checkbox"
id="fence"
name="access-fence"
/>
<label class="form-check-label" for="fence">Fence</label>
</div>
</div>
<div class="col-md-4">
<div class="form-check">
<input
class="form-check-input"
type="checkbox"
id="locked"
name="access-locked"
/>
<label class="form-check-label" for="locked"
>Locked entrance</label
>
</div>
<div class="form-check">
<input
class="form-check-input"
type="checkbox"
id="dogs"
name="access-dog"
/>
<label class="form-check-label" for="dogs"
>Dogs/pets</label
>
</div>
</div>
<div class="col-md-4">
<div class="form-check">
<input
class="form-check-input"
type="checkbox"
id="access-other"
name="access-other"
/>
<label class="form-check-label" for="access-other"
>Other obstacle</label
>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Contact Information Sections -->
<div class="form-section">
<div class="section-heading">
<i class="bi bi-person-lines-fill"></i>
<h3>Property Owner Information (if known)</h3>
</div>
<div class="row mb-4">
<div class="col-md-4 mb-3">
<label for="owner-name" class="form-label">Owner Name</label>
<input
type="text"
class="form-control"
id="owner-name"
maxlength="100"
name="owner-name"
/>
</div>
<div class="col-md-4 mb-3">
<label for="owner-phone" class="form-label">Owner Phone</label>
<input
type="tel"
class="form-control"
id="owner-phone"
maxlength="50"
name="owner-phone"
/>
</div>
<div class="col-md-4 mb-3">
<label for="owner-email" class="form-label">Owner Email</label>
<input
type="email"
class="form-control"
id="owner-email"
maxlength="100"
name="owner-email"
/>
</div>
</div>
<div class="row mb-4">
<div class="col-md-6 mb-3 row">
<div class="form-check mt-4">
<input
class="form-check-input"
id="property-ownership"
name="property-ownership"
type="checkbox"
/>
<label class="form-check-label" for="property-ownership"
>This is my property</label
>
</div>
<div class="form-check mt-4">
<input
class="form-check-input"
id="backyard-permission"
name="backyard-permission"
type="checkbox"
/>
<label class="form-check-label" for="backyard-permission"
>I grant permission to enter the back yard of this
property.</label
>
</div>
<div class="form-check mt-4">
<input
class="form-check-input"
id="reporter-confidential"
name="reporter-confidential"
type="checkbox"
/>
<label class="form-check-label" for="reporter-confidential">
<i
class="bi bi-info-circle-fill text-primary ms-1"
data-bs-toggle="tooltip"
data-bs-placement="top"
title="We share your information with mosquito control districts so they can follow up with any questions they may have about your report. Check this box if you would like the district to be careful not to share your information outside of the district operations team."
></i>
I would like my personal information kept
confidential.</label
>
</div>
</div>
</div>
</div>
</div>
<!-- Submit Section -->
<div class="submit-container">
<div class="row align-items-center">
<div class="col-md-8">
<p class="mb-0">
<strong
>Thank you for helping us keep our community safe from
mosquito-borne illnesses.</strong
>
</p>
<p class="mb-0 small text-muted">
After submission, you will receive a confirmation with a report
ID for tracking purposes.
</p>
</div>
<div class="col-md-4 text-md-end mt-3 mt-md-0">
<button type="submit" class="btn btn-primary btn-lg">
Submit Report
</button>
</div>
</div>
</div>
</form>
</div>
</main>
<!-- Larvae Info Modal -->
<div
class="modal fade"
id="larvaeInfoModal"
tabindex="-1"
aria-labelledby="larvaeInfoModalLabel"
aria-hidden="true"
>
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="larvaeInfoModalLabel">
How to Identify Mosquito Larvae and Pupae
</h5>
<button
type="button"
class="btn-close"
data-bs-dismiss="modal"
aria-label="Close"
></button>
</div>
<div class="modal-body">
<div class="row mb-4">
<div class="col-md-6">
<h6>Mosquito Larvae (Wigglers)</h6>
<p>Mosquito larvae, often called "wigglers," are:</p>
<ul>
<li>Small, worm-like aquatic organisms</li>
<li>Usually 1/4 to 1/2 inch long</li>
<li>Move with a wiggling motion in water</li>
<li>Hang upside-down at the water surface to breathe</li>
<li>Visible to the naked eye in standing water</li>
</ul>
</div>
<div class="col-md-6">
<h6>Mosquito Pupae (Tumblers)</h6>
<p>Mosquito pupae, often called "tumblers," are:</p>
<ul>
<li>Comma-shaped organisms</li>
<li>Typically darker than larvae</li>
<li>Move with a tumbling motion when disturbed</li>
<li>Rest at the water surface</li>
<li>The stage just before adult mosquitoes emerge</li>
</ul>
</div>
</div>
<p>
When looking for mosquito larvae and pupae, check standing water
sources like:
</p>
<ul>
<li>Swimming pools</li>
<li>Bird baths</li>
<li>Buckets or containers</li>
<li>Drainage ditches</li>
<li>Plant saucers</li>
<li>Rain gutters</li>
</ul>
<p>
If you see small creatures moving in standing water, there's a good
chance they're mosquito larvae or pupae.
</p>
<div class="text-center">
<a href="#" class="btn btn-outline-primary"
>View Detailed Identification Guide</a
>
</div>
</div>
<div class="modal-footer">
<button
type="button"
class="btn btn-secondary"
data-bs-dismiss="modal"
>
Close
</button>
</div>
</div>
</div>
</div>
</template>
<script setup lang="ts">
import { ref } from "vue";
const isCollapsed = ref<boolean>(true);
const toggleCollapse = () => {
isCollapsed.value = !isCollapsed.value;
};
</script>

View file

@ -0,0 +1,45 @@
<template>
<Home>
<template #header>
<!-- Introduction Section -->
<template v-if="district">
<section class="py-5 bg-primary text-white">
<div class="container">
<div class="row justify-content-center">
<div class="col-lg-10">
<h2 class="text-center mb-4">Report a Mosquito Problem</h2>
<p class="lead text-center">
Submit a report to help reduce mosquito activity in your
neighborhood.
</p>
<p class="lead text-center">
Report Mosquitoes Online works with local mosquito control
agencies to receive public reports.
</p>
<p class="lead text-center">
For this area, mosquito control services are provided by
</p>
<h3 class="text-center">{{ district.name }}</h3>
<img class="district-logo" src="{{ district.url_logo }}" />
</div>
</div>
</div>
</section>
</template>
<template v-else>
<p>loading</p>
</template>
</template>
</Home>
</template>
<script setup lang="ts">
import { ref } from "vue";
import Home from "@/rmo/content/Home.vue";
interface District {
name: string;
url_logo: string;
}
const district = ref<District | null>(null);
</script>