diff --git a/html/static/file/sample-pool.csv b/html/static/file/sample-pool.csv
new file mode 100644
index 00000000..283a98f0
--- /dev/null
+++ b/html/static/file/sample-pool.csv
@@ -0,0 +1,4 @@
+Street Address,City,Zip,Property Owner Name,Resident Owned,Resident Phone Number,Pool Condition,Notes,Recurrant,New,Hostile,Unresponsive
+123 Main Street,Visalia,93615,John Smith,Yes,1235556789,Empty,"Pool collects runoff, dry by summer",Yes,No,No,Yes
+456 Valley View Dr,Los Angeles,93618,Jane and Jim Blackner,No,2345550055,Green,Pool murky at beginning of season,No,Yes,No,No
+11235 Fibonacci Rd,San Francisco,93618,Warren Buffet,No,3455551212,,,,,,
diff --git a/html/template/sync/data-entry.html b/html/template/sync/pool-csv-upload.html
similarity index 86%
rename from html/template/sync/data-entry.html
rename to html/template/sync/pool-csv-upload.html
index 285c1e6c..ee98f8ec 100644
--- a/html/template/sync/data-entry.html
+++ b/html/template/sync/pool-csv-upload.html
@@ -1,31 +1,10 @@
-{{ template "sync/layout/base.html" . }}
-
-{{ define "title" }}Data Entry{{ end }}
+{{ template "sync/layout/authenticated.html" . }}
+{{ define "title" }}Layout Test{{ end }}
{{ define "extraheader" }}
-
+
{{ end }}
{{ define "content" }}
+
Upload Pool Data
@@ -78,7 +57,12 @@
diff --git a/html/template/sync/pool-list.html b/html/template/sync/pool-list.html
new file mode 100644
index 00000000..85dc9342
--- /dev/null
+++ b/html/template/sync/pool-list.html
@@ -0,0 +1,9 @@
+{{ template "sync/layout/authenticated.html" . }}
+
+{{ define "title" }}Pool List{{ end }}
+{{ define "extraheader" }}
+{{ end }}
+{{ define "content" }}
+ Pool list
+ Do an upload
+{{ end }}
diff --git a/scss/sync/pool-csv-upload.scss b/scss/sync/pool-csv-upload.scss
new file mode 100644
index 00000000..496f0c59
--- /dev/null
+++ b/scss/sync/pool-csv-upload.scss
@@ -0,0 +1,20 @@
+.upload-container {
+ max-width: 800px;
+ margin: 0 auto;
+}
+.schema-table {
+ font-size: 0.9rem;
+}
+.upload-area {
+ border: 2px dashed #dee2e6;
+ padding: 2rem;
+ text-align: center;
+ margin: 1.5rem 0;
+ border-radius: 5px;
+ background-color: #f8f9fa;
+}
+.required-field::after {
+ content: "*";
+ color: red;
+ margin-left: 3px;
+}
diff --git a/sync/pool.go b/sync/pool.go
index 2f6adba8..642584f5 100644
--- a/sync/pool.go
+++ b/sync/pool.go
@@ -10,6 +10,10 @@ type ContentPoolList struct {
URL ContentURL
User User
}
+type ContentPoolUpload struct {
+ URL ContentURL
+ User User
+}
func getPoolList(w http.ResponseWriter, r *http.Request, u *models.User) {
userContent, err := contentForUser(r.Context(), u)
@@ -23,3 +27,16 @@ func getPoolList(w http.ResponseWriter, r *http.Request, u *models.User) {
}
html.RenderOrError(w, "sync/pool-list.html", data)
}
+
+func getPoolUpload(w http.ResponseWriter, r *http.Request, u *models.User) {
+ userContent, err := contentForUser(r.Context(), u)
+ if err != nil {
+ respondError(w, "Failed to get user", err, http.StatusInternalServerError)
+ return
+ }
+ data := ContentPoolUpload{
+ URL: newContentURL(),
+ User: userContent,
+ }
+ html.RenderOrError(w, "sync/pool-csv-upload.html", data)
+}
diff --git a/sync/routes.go b/sync/routes.go
index 551de83e..340c0149 100644
--- a/sync/routes.go
+++ b/sync/routes.go
@@ -63,6 +63,7 @@ func Router() chi.Router {
r.Method("GET", "/cell/{cell}", auth.NewEnsureAuth(getCellDetails))
r.Method("GET", "/layout-test", auth.NewEnsureAuth(getLayoutTest))
r.Method("GET", "/pool", auth.NewEnsureAuth(getPoolList))
+ r.Method("GET", "/pool/upload", auth.NewEnsureAuth(getPoolUpload))
r.Method("GET", "/settings", auth.NewEnsureAuth(getSettings))
r.Method("GET", "/signout", auth.NewEnsureAuth(getSignout))
r.Method("GET", "/source/{globalid}", auth.NewEnsureAuth(getSource))
diff --git a/sync/url.go b/sync/url.go
index 39d39699..3fcf1a92 100644
--- a/sync/url.go
+++ b/sync/url.go
@@ -6,10 +6,12 @@ import (
type ContentURL struct {
PoolCSVUpload string
+ SamplePoolCSV string
}
func newContentURL() ContentURL {
return ContentURL{
PoolCSVUpload: config.MakeURLNidus("/pool/upload"),
+ SamplePoolCSV: config.MakeURLNidus("/static/file/sample-pool.csv"),
}
}