diff --git a/REQUIREMENTS.md b/REQUIREMENTS.md
index 951ab90..1abbd47 100644
--- a/REQUIREMENTS.md
+++ b/REQUIREMENTS.md
@@ -15,27 +15,27 @@ The items listed under **Your Repository** and **Core Interface Elements** are a
### Layout
-* [ ] Unless otherwise specified, all features should be useable on both small (mobile) and large (laptop/desktop) screens. **Your HTML document should have appropriate `meta` tag(s) to make this possible.**
+* [x] Unless otherwise specified, all features should be useable on both small (mobile) and large (laptop/desktop) screens. **Your HTML document should have appropriate `meta` tag(s) to make this possible.**
### Loading voter files...
-* [ ] There should be an `input` element on the page where you can enter a voter file number. **Save the `input` DOM element in a variable named `voterFileInput` attached to the global `window` object.** In other words:
+* [x] There should be an `input` element on the page where you can enter a voter file number. **Save the `input` DOM element in a variable named `voterFileInput` attached to the global `window` object.** In other words:
```js
window.voterFileInput = ...;
```
-* [ ] There should be a `button` that will load the voter file number given in the `voterFileInput` when clicked. **Save the `button` DOM element in a variable named `voterFileLoadButton` attached to the global `window` object.**
+* [x] There should be a `button` that will load the voter file number given in the `voterFileInput` when clicked. **Save the `button` DOM element in a variable named `voterFileLoadButton` attached to the global `window` object.**
### Listing and mapping voters...
-* [ ] Your page should have an element that shows the voters (and their addresses) from a file. Note that the element _does not_ need to be a `ul`, `ol`, or any other HTML list element. Even though the element itself may not use a list tag like `ul` or `ol`, it will still function as a list and I'll still refer to it as one. **The list's DOM element should be available on the global `window` object as a variable named `voterList`.**
+* [x] Your page should have an element that shows the voters (and their addresses) from a file. Note that the element _does not_ need to be a `ul`, `ol`, or any other HTML list element. Even though the element itself may not use a list tag like `ul` or `ol`, it will still function as a list and I'll still refer to it as one. **The list's DOM element should be available on the global `window` object as a variable named `voterList`.**
-* [ ] Your page should have a Leaflet map to show voter locations. **The Leaflet map object should be available on the global `window` object as a variable named `voterMap`.**
+* [x] Your page should have a Leaflet map to show voter locations. **The Leaflet map object should be available on the global `window` object as a variable named `voterMap`.**
* When you enter a file number, the voter information in that CSV file should be loaded onto the `voterMap` and into the `voterList`.
- * [ ] **Wrap each voter's name in an element (for example a `span`) with the class `voter-name`. Wrap addresses in an element with the class `voter-address`** You may choose to list each voter individually or grouped by address, which I would recommend. Either way, each voter's basic information (at least their name and street address) should be shown in the `voterList`.
- * [ ] **Represent the voters in the file with map markers.** You may choose to have one map marker to represent each voter, one marker to represent each address, or one marker to represent each _building_ (for example, two apartments that share the same street address are in the same building). I would generally recommend showing a marker for each building, as otherwise markers for different apartments or voters in the same building will be overlapping.
+ * [x] **Wrap each voter's name in an element (for example a `span`) with the class `voter-name`. Wrap addresses in an element with the class `voter-address`** You may choose to list each voter individually or grouped by address, which I would recommend. Either way, each voter's basic information (at least their name and street address) should be shown in the `voterList`.
+ * [x] **Represent the voters in the file with map markers.** You may choose to have one map marker to represent each voter, one marker to represent each address, or one marker to represent each _building_ (for example, two apartments that share the same street address are in the same building). I would generally recommend showing a marker for each building, as otherwise markers for different apartments or voters in the same building will be overlapping.
* [ ] When you click on a map marker, the marker should be highlighted in some way to show that it is selected. **Change the marker styles of a selected marker if it is a vector marker (e.g. `L.circleMarker`), or change the icon if it is a normal image marker (e.g. `L.marker`).**
@@ -45,7 +45,7 @@ The items listed under **Your Repository** and **Core Interface Elements** are a
> _Note that if you decide to implement a workflow that doesn't precisely fit into the structure below, that's ok! Just talk with me about what the workflow is, because we may need to modify the project tests._
-* [ ] When you click on a voter (or an address) in the `voterList`, a panel should be shown that contains details about the voter (or about each voter at the address). This panel could be represented in HTML with a `div`, `form`, `section`, or any of a number of other elements. **Give the voter information panel(s) a class of `voter-details`.**
+* [x] When you click on a voter (or an address) in the `voterList`, a panel should be shown that contains details about the voter (or about each voter at the address). This panel could be represented in HTML with a `div`, `form`, `section`, or any of a number of other elements. **Give the voter information panel(s) a class of `voter-details`.**
* [ ] There should be _at least_ three separate input elements available for collecting facts about each voter (refer to the [product requirements document](PRD.md) that we created in class to remind yourself what kind of information should be collected). **Include fields for collecting voter information on each `voter-details` panel.**
diff --git a/package-lock.json b/package-lock.json
index 02ef655..ed7b5dc 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -8,6 +8,9 @@
"name": "school-explorer",
"version": "1.0.0",
"license": "ISC",
+ "dependencies": {
+ "papaparse": "^5.3.2"
+ },
"devDependencies": {
"eslint": "^8.22.0",
"http-server": "^14.1.1",
@@ -4870,6 +4873,11 @@
"node": ">=6"
}
},
+ "node_modules/papaparse": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/papaparse/-/papaparse-5.3.2.tgz",
+ "integrity": "sha512-6dNZu0Ki+gyV0eBsFKJhYr+MdQYAzFUGlBMNj3GNrmHxmz1lfRa24CjFObPXtjcetlOv5Ad299MhIK0znp3afw=="
+ },
"node_modules/parent-module": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
@@ -10372,6 +10380,11 @@
"integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
"dev": true
},
+ "papaparse": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/papaparse/-/papaparse-5.3.2.tgz",
+ "integrity": "sha512-6dNZu0Ki+gyV0eBsFKJhYr+MdQYAzFUGlBMNj3GNrmHxmz1lfRa24CjFObPXtjcetlOv5Ad299MhIK0znp3afw=="
+ },
"parent-module": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
diff --git a/package.json b/package.json
index 3a52e5f..b70795f 100644
--- a/package.json
+++ b/package.json
@@ -27,5 +27,8 @@
"jest-puppeteer": "^6.1.1",
"stylelint": "^14.11.0",
"stylelint-config-standard": "^28.0.0"
+ },
+ "dependencies": {
+ "papaparse": "^5.3.2"
}
}
diff --git a/site/css/styles.css b/site/css/styles.css
new file mode 100644
index 0000000..7668e3e
--- /dev/null
+++ b/site/css/styles.css
@@ -0,0 +1,132 @@
+@import "https://fonts.googleapis.com/css2?family=Droid+Sans";
+
+html {
+ font-family: "Droid Sans", sans-serif;
+}
+
+h1 {
+ background-color: #364477;
+ color: whitesmoke;
+ margin: 0px;
+ padding: 12px;
+ text-align: center;
+}
+
+h2 {
+ background-color: #364477;
+ color: whitesmoke;
+ margin: 0px;
+ padding: 5px;
+ text-align: center;
+ font-size: 15px;
+}
+
+body {
+ display: flex;
+ flex-direction: column;
+ height: 100vh;
+ margin: 0;
+ padding: 0;
+ z-index: 1;
+}
+
+.map {
+ height: 100%;
+ z-index: 1;
+}
+
+textarea {
+ text-align: center;
+ height: 20%;
+
+ display: block;
+ margin-top: 0.25rem;
+ margin-bottom: 0.25rem;
+ margin-right: 10rem;
+ height: 2rem;
+ z-index: -1;
+}
+
+.voter-list-container {
+ width: 100%;
+ display: flex;
+ flex-direction: row;
+ flex-wrap: wrap;
+ height: 10rem;
+ overflow-y: scroll;
+ overflow-x: auto;
+ z-index: 1;
+}
+
+#response-container {
+ background-color: #364477;
+ position: absolute;
+ top: 0%;
+ left: 65%;
+ right: 20%;
+ margin: 5px;
+ padding: 5px;
+ border-radius: 15px;
+ border: 40px #364477;
+ height: auto;
+ width: 300px;
+ flex-wrap: wrap;
+ flex-direction: row-reverse;
+ justify-content: center;
+ align-items: center;
+ z-index: 1;
+ font-size: 10px;
+ font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
+ color: azure;
+ transform: inherit;
+
+}
+
+#voter-notes {
+ display: flex;
+ height: 300px;
+ width: 300px;
+ flex-direction: column;
+ align-items: center;
+ margin-top: 0.25rem;
+}
+
+button {
+ align-self: center;
+ margin-top: 0.25rem;
+ margin-bottom: 0.25rem;
+ margin-right: 10rem;
+ text-align: left;
+ display: flex;
+ flex-direction: row;
+ flex-wrap: wrap;
+ font-size: 15px;
+ background-color: #364477;
+ color: white;
+}
+
+h3 {
+ top: 10%;
+}
+
+.voter-address {
+ font-style: normal;
+ font-weight: bold;
+ font-size: 5px;
+}
+
+#voter-list {
+ background-color: #364477;
+ color: #ffffff;
+ text-align: center;
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ flex-wrap: wrap;
+ margin-bottom: 0.5rem;
+}
+
+#blank {
+ height: auto;
+ width: auto;
+}
\ No newline at end of file
diff --git a/site/index.html b/site/index.html
new file mode 100644
index 0000000..9190885
--- /dev/null
+++ b/site/index.html
@@ -0,0 +1,55 @@
+
+
+
+
+