From b457e8e8ab93e881c85a0a34538901da42a67303 Mon Sep 17 00:00:00 2001 From: Mikey Saugstad Date: Fri, 5 Apr 2024 11:37:14 -0700 Subject: [PATCH 1/8] removes St Louis from navbar drop down --- conf/cityparams.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/cityparams.conf b/conf/cityparams.conf index 34e7901252..bf5f6f7749 100644 --- a/conf/cityparams.conf +++ b/conf/cityparams.conf @@ -96,7 +96,7 @@ city-params { burnaby = "private" teaneck-nj = "public" walla-walla-wa = "private" - st-louis-mo = "public" + st-louis-mo = "private" } launch-date { newberg-or = "2019-01-31" From 0695e21b8a56f4c2e34eb678eb25426e2c8c06ec Mon Sep 17 00:00:00 2001 From: Mikey Saugstad Date: Tue, 9 Apr 2024 11:32:34 -0700 Subject: [PATCH 2/8] fixes LabelMap validations not working --- public/javascripts/Admin/src/Admin.GSVLabelView.js | 7 ++++++- public/javascripts/Admin/src/Admin.Panorama.Label.js | 8 +++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/public/javascripts/Admin/src/Admin.GSVLabelView.js b/public/javascripts/Admin/src/Admin.GSVLabelView.js index 4f3838547a..7d98b826c0 100644 --- a/public/javascripts/Admin/src/Admin.GSVLabelView.js +++ b/public/javascripts/Admin/src/Admin.GSVLabelView.js @@ -246,6 +246,10 @@ function AdminGSVLabelView(admin, source) { label_id: self.panorama.label.labelId, label_type: self.panorama.label.label_type, validation_result: self.resultOptions[action], + old_severity: self.panorama.label.oldSeverity, + new_severity: self.panorama.label.newSeverity, + old_tags: self.panorama.label.oldTags, + new_tags: self.panorama.label.newTags, canvas_x: labelCanvasX, canvas_y: labelCanvasY, heading: userPov.heading, @@ -421,7 +425,8 @@ function AdminGSVLabelView(admin, source) { var adminPanoramaLabel = AdminPanoramaLabel(labelMetadata['label_id'], labelMetadata['label_type_key'], labelMetadata['canvas_x'], labelMetadata['canvas_y'], util.EXPLORE_CANVAS_WIDTH, util.EXPLORE_CANVAS_HEIGHT, - labelMetadata['heading'], labelMetadata['pitch'], labelMetadata['zoom'], labelMetadata['street_edge_id']); + labelMetadata['heading'], labelMetadata['pitch'], labelMetadata['zoom'], labelMetadata['street_edge_id'], + labelMetadata['severity'], labelMetadata['tags']); self.panorama.setLabel(adminPanoramaLabel); self.validationCounts['Agree'] = labelMetadata['num_agree'] diff --git a/public/javascripts/Admin/src/Admin.Panorama.Label.js b/public/javascripts/Admin/src/Admin.Panorama.Label.js index 811bf882bf..633654114f 100644 --- a/public/javascripts/Admin/src/Admin.Panorama.Label.js +++ b/public/javascripts/Admin/src/Admin.Panorama.Label.js @@ -10,11 +10,13 @@ * @param pitch * @param zoom * @param streetEdgeId + * @param severity + * @param tags * @returns {{className: string}} * @constructor */ function AdminPanoramaLabel(labelId, labelType, canvasX, canvasY, originalCanvasWidth, originalCanvasHeight, - heading, pitch, zoom, streetEdgeId) { + heading, pitch, zoom, streetEdgeId, severity, tags) { var self = { className: "AdminPanoramaLabel" }; /** @@ -31,6 +33,10 @@ function AdminPanoramaLabel(labelId, labelType, canvasX, canvasY, originalCanvas self.pitch = pitch; self.zoom = zoom; self.streetEdgeId = streetEdgeId; + self.oldSeverity = severity; + self.newSeverity = severity; + self.oldTags = tags; + self.newTags = tags; return this; } From f4e5b01c79a86997e76b5a21638c0a5580e4a758 Mon Sep 17 00:00:00 2001 From: Mikey Saugstad Date: Tue, 9 Apr 2024 11:40:32 -0700 Subject: [PATCH 3/8] fixes Gallery validations not working --- public/javascripts/Gallery/src/validation/ValidationMenu.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/javascripts/Gallery/src/validation/ValidationMenu.js b/public/javascripts/Gallery/src/validation/ValidationMenu.js index f1196e55c9..5568c112dc 100644 --- a/public/javascripts/Gallery/src/validation/ValidationMenu.js +++ b/public/javascripts/Gallery/src/validation/ValidationMenu.js @@ -197,6 +197,10 @@ function ValidationMenu(refCard, gsvImage, cardProperties, modal, onExpandedView label_id: currCardProperties.label_id, label_type: currCardProperties.label_type, validation_result: resultOptions[action], + old_severity: currCardProperties.severity, + new_severity: currCardProperties.severity, + old_tags: currCardProperties.tags, + new_tags: currCardProperties.tags, canvas_height: gsvImage.height(), canvas_width: gsvImage.width(), start_timestamp: validationTimestamp, From 5c0001f8011df350c0fdbbfb49e1e6dec467c620 Mon Sep 17 00:00:00 2001 From: Mikey Saugstad Date: Mon, 15 Apr 2024 12:14:03 -0700 Subject: [PATCH 4/8] finishes updating to new init schema for dev env --- README.md | 6 ------ db/fix-auto-inc.sql | 7 ------- db/init.sh | 20 +++++++++++++------- 3 files changed, 13 insertions(+), 20 deletions(-) delete mode 100755 db/fix-auto-inc.sql diff --git a/README.md b/README.md index cd2a2cf15a..0aaa0f1329 100644 --- a/README.md +++ b/README.md @@ -93,12 +93,6 @@ On Windows, we recommend [Windows Powershell](https://docs.microsoft.com/en-us/p root@[container-id]:/home# ``` -1. In a separate terminal, run the command below. - - ``` - docker exec -it projectsidewalk-db psql -c "CREATE ROLE saugstad SUPERUSER LOGIN ENCRYPTED PASSWORD 'sidewalk';" -U postgres -d postgres - ``` - 1. Run `make import-dump db=` (needs to be the same thing you set for `DATABASE_USER`) from the root project directory outside the Docker shell (from a new Ubuntu terminal). This may take a while depending on the size of the dump. Don't panic if this step fails :) and consult the [Docker Troubleshooting wiki](https://github.com/ProjectSidewalk/SidewalkWebpage/wiki/Docker-Troubleshooting). Check the output carefully. If it looks like there are errors, do not skip to the next step, check the wiki and ask Mikey if you don't find solutions in there. 1. Run `npm start` from inside the Docker shell (the terminal where you ran `make dev`). If this is your first time running the command, *everything* will need to be compiled. So, it may take 5+ minutes initially, but will be orders of magnitude faster in the future (~10 secs). diff --git a/db/fix-auto-inc.sql b/db/fix-auto-inc.sql deleted file mode 100755 index a2b0d521c9..0000000000 --- a/db/fix-auto-inc.sql +++ /dev/null @@ -1,7 +0,0 @@ -SELECT setval('label_type_label_type_id_seq', (SELECT MAX(label_type_id) from sidewalk.label_type)); -SELECT setval('mission_type_mission_type_id_seq', (SELECT MAX(mission_type_id) from sidewalk.mission_type)); -SELECT setval('role_role_id_seq', (SELECT MAX(role_id) from sidewalk.role)); -SELECT setval('survey_category_option_survey_category_option_id_seq', (SELECT MAX(survey_category_option_id) from sidewalk.survey_category_option)); -SELECT setval('survey_question_survey_question_id_seq', (SELECT MAX(survey_question_id) from sidewalk.survey_question)); -SELECT setval('tag_tag_id_seq', (SELECT MAX(tag_id) from sidewalk.tag)); - diff --git a/db/init.sh b/db/init.sh index 2c84f58c75..7a46a8c4d9 100755 --- a/db/init.sh +++ b/db/init.sh @@ -7,7 +7,6 @@ psql -v ON_ERROR_STOP=1 -U postgres -d postgres <<-EOSQL AND pid <> pg_backend_pid(); DROP DATABASE IF EXISTS "sidewalk"; - DROP SCHEMA IF EXISTS sidewalk; DROP USER IF EXISTS sidewalk; CREATE USER sidewalk WITH PASSWORD 'sidewalk'; @@ -17,14 +16,21 @@ psql -v ON_ERROR_STOP=1 -U postgres -d postgres <<-EOSQL ALTER USER sidewalk SUPERUSER; GRANT ALL PRIVILEGES ON DATABASE sidewalk TO sidewalk; - CREATE SCHEMA sidewalk; - GRANT ALL ON ALL TABLES IN SCHEMA sidewalk TO sidewalk; - ALTER DEFAULT PRIVILEGES IN SCHEMA sidewalk GRANT ALL ON TABLES TO sidewalk; - ALTER DEFAULT PRIVILEGES IN SCHEMA sidewalk GRANT ALL ON SEQUENCES TO sidewalk; + CREATE USER saugstad; + GRANT sidewalk TO saugstad; + CREATE USER sidewalk_init; + GRANT sidewalk TO sidewalk_init; EOSQL -psql -U sidewalk -d sidewalk -a -f /opt/schema.sql -psql -U sidewalk -d sidewalk -a -f /opt/fix-auto-inc.sql +psql -v ON_ERROR_STOP=1 -U sidewalk -d sidewalk <<-EOSQL + CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; + COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; + + CREATE EXTENSION IF NOT EXISTS postgis WITH SCHEMA public; + COMMENT ON EXTENSION postgis IS 'PostGIS geometry, geography, and raster spatial types and functions'; +EOSQL + +pg_restore -U sidewalk -Fc -d sidewalk /opt/sidewalk_init_dump # Remove any password authentication on databases. This should be used for dev environment only. sed -i -e 's/host all all all scram-sha-256/host all all all trust/' /var/lib/postgresql/data/pg_hba.conf From 77621b1dfd18343a3985527c4ad3572f7e20b5a9 Mon Sep 17 00:00:00 2001 From: Mikey Saugstad Date: Mon, 15 Apr 2024 12:29:09 -0700 Subject: [PATCH 5/8] fixes raw labels API coordinates in Shapefiles --- app/controllers/helper/ShapefilesCreatorHelper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/helper/ShapefilesCreatorHelper.java b/app/controllers/helper/ShapefilesCreatorHelper.java index 8ae9151ea3..00972d172f 100644 --- a/app/controllers/helper/ShapefilesCreatorHelper.java +++ b/app/controllers/helper/ShapefilesCreatorHelper.java @@ -355,7 +355,7 @@ public static void createRawLabelShapeFile(String outputFile, APIBBox bbox) thro // Convert the labels into a "feature". for (LabelAllMetadata l: labels) { - featureBuilder.add(geometryFactory.createPoint(new Coordinate(l.geom().lat(), l.geom().lng()))); + featureBuilder.add(geometryFactory.createPoint(new Coordinate(l.geom().lng(), l.geom().lat()))); featureBuilder.add(l.labelId()); featureBuilder.add(l.userId()); featureBuilder.add(l.panoId()); From 82c253e7a2f4d31686de62d6144b22b4a37848db Mon Sep 17 00:00:00 2001 From: Mikey Saugstad Date: Mon, 15 Apr 2024 12:54:53 -0700 Subject: [PATCH 6/8] adds osm way ID to raw labels API --- .../helper/ShapefilesCreatorHelper.java | 8 +++-- app/formats/json/APIFormats.scala | 13 ++++---- app/models/label/LabelTable.scala | 31 ++++++++++--------- 3 files changed, 28 insertions(+), 24 deletions(-) diff --git a/app/controllers/helper/ShapefilesCreatorHelper.java b/app/controllers/helper/ShapefilesCreatorHelper.java index 00972d172f..e4635b3dfb 100644 --- a/app/controllers/helper/ShapefilesCreatorHelper.java +++ b/app/controllers/helper/ShapefilesCreatorHelper.java @@ -304,6 +304,7 @@ public static void createRawLabelShapeFile(String outputFile, APIBBox bbox) thro + "descriptn:String," // Label Description + "labelDate:String," // Label date + "streetId:Integer," // Street edge ID of the nearest street + + "osmWayId:String," // OSM way ID of the nearest street + "neighborhd:String," // Neighborhood Name + "correct:String," // Whether the label was validated as correct + "nAgree:Integer," // Agree validations @@ -370,13 +371,14 @@ public static void createRawLabelShapeFile(String outputFile, APIBBox bbox) thro })); featureBuilder.add(l.timeCreated()); featureBuilder.add(l.streetEdgeId()); + featureBuilder.add(String.valueOf(l.osmStreetId())); featureBuilder.add(l.neighborhoodName()); featureBuilder.add(l.correcStr().getOrElse(new AbstractFunction0() { @Override public String apply() { return null; } })); - featureBuilder.add(l.agreeDisagreeNotsureCount()._1()); - featureBuilder.add(l.agreeDisagreeNotsureCount()._2()); - featureBuilder.add(l.agreeDisagreeNotsureCount()._3()); + featureBuilder.add(l.validationInfo().agreeCount()); + featureBuilder.add(l.validationInfo().disagreeCount()); + featureBuilder.add(l.validationInfo().notSureCount()); featureBuilder.add("[" + l.validations().mkString(",") + "]"); featureBuilder.add(l.auditTaskId()); featureBuilder.add(l.missionId()); diff --git a/app/formats/json/APIFormats.scala b/app/formats/json/APIFormats.scala index 215b1a52ec..9d57b68057 100644 --- a/app/formats/json/APIFormats.scala +++ b/app/formats/json/APIFormats.scala @@ -213,11 +213,12 @@ object APIFormats { "description" -> l.description, "time_created" -> l.timeCreated, "street_edge_id" -> l.streetEdgeId, + "osm_street_id" -> l.osmStreetId, "neighborhood" -> l.neighborhoodName, - "correct" -> l.correct, - "agree_count" -> l.agreeDisagreeNotsureCount._1, - "disagree_count" -> l.agreeDisagreeNotsureCount._2, - "notsure_count" -> l.agreeDisagreeNotsureCount._3, + "correct" -> l.validationInfo.correct, + "agree_count" -> l.validationInfo.agreeCount, + "disagree_count" -> l.validationInfo.disagreeCount, + "notsure_count" -> l.validationInfo.notSureCount, "validations" -> l.validations.map(v => Json.obj( "user_id" -> v._1, "validation" -> LabelValidationTable.validationOptions.get(v._2) @@ -245,8 +246,8 @@ object APIFormats { def rawLabelMetadataToCSVRow(l: LabelAllMetadata): String = { s"${l.labelId},${l.geom.lat},${l.geom.lng},${l.userId},${l.panoId},${l.labelType},${l.severity.getOrElse("NA")}," + s""""[${l.tags.mkString(",")}]",${l.temporary},"${l.description.getOrElse("NA")}",${l.timeCreated},""" + - s"${l.streetEdgeId},${l.neighborhoodName},${l.correct.getOrElse("NA")},${l.agreeDisagreeNotsureCount._1}," + - s"${l.agreeDisagreeNotsureCount._2},${l.agreeDisagreeNotsureCount._3}," + + s"${l.streetEdgeId},${l.osmStreetId},${l.neighborhoodName},${l.validationInfo.correct.getOrElse("NA")}," + + s"${l.validationInfo.agreeCount},${l.validationInfo.disagreeCount},${l.validationInfo.notSureCount}," + s""""[${l.validations.map(v => s"{user_id: ${v._1}, validation: ${LabelValidationTable.validationOptions(v._2)}")}]",""" + s"${l.auditTaskId},${l.missionId},${l.imageCaptureDate},${l.pov.heading},${l.pov.pitch},${l.pov.zoom}," + s"${l.canvasXY.x},${l.canvasXY.y},${LabelPointTable.canvasWidth},${LabelPointTable.canvasHeight}," + diff --git a/app/models/label/LabelTable.scala b/app/models/label/LabelTable.scala index 609223ab87..31cf2b9f1d 100644 --- a/app/models/label/LabelTable.scala +++ b/app/models/label/LabelTable.scala @@ -35,6 +35,7 @@ case class Label(labelId: Int, auditTaskId: Int, missionId: Int, userId: String, streetEdgeId: Int, agreeCount: Int, disagreeCount: Int, notsureCount: Int, correct: Option[Boolean], severity: Option[Int], temporary: Boolean, description: Option[String], tags: List[String]) +case class LabelValidationInfo(agreeCount: Int, disagreeCount: Int, notSureCount: Int, correct: Option[Boolean]) case class POV(heading: Double, pitch: Double, zoom: Int) case class Dimensions(width: Int, height: Int) case class LocationXY(x: Int, y: Int) @@ -207,10 +208,9 @@ object LabelTable { case class LabelAllMetadata(labelId: Int, userId: String, panoId: String, labelType: String, severity: Option[Int], tags: List[String], temporary: Boolean, description: Option[String], geom: LatLng, - timeCreated: Timestamp, streetEdgeId: Int, neighborhoodName: String, - agreeDisagreeNotsureCount: (Int, Int, Int), correct: Option[Boolean], - validations: List[(String, Int)], auditTaskId: Int, missionId: Int, - imageCaptureDate: String, pov: POV, canvasXY: LocationXY, + timeCreated: Timestamp, streetEdgeId: Int, osmStreetId: Long, neighborhoodName: String, + validationInfo: LabelValidationInfo, validations: List[(String, Int)], auditTaskId: Int, + missionId: Int, imageCaptureDate: String, pov: POV, canvasXY: LocationXY, panoLocation: (LocationXY, Option[Dimensions]), cameraHeadingPitch: (Double, Double)) extends BatchableAPIType { val gsvUrl = s"""https://maps.googleapis.com/maps/api/streetview? |size=${LabelPointTable.canvasWidth}x${LabelPointTable.canvasHeight} @@ -225,21 +225,21 @@ object LabelTable { // These make the fields easier to access from Java when making Shapefiles (Booleans and Option types are an issue). val panoWidth: Option[Int] = panoLocation._2.map(_.width) val panoHeight: Option[Int] = panoLocation._2.map(_.height) - val correcStr: Option[String] = correct.map(_.toString) + val correcStr: Option[String] = validationInfo.correct.map(_.toString) } object LabelAllMetadata { val csvHeader: String = { "Label ID,Latitude,Longitude,User ID,Panorama ID,Label Type,Severity,Tags,Temporary,Description,Label Date," + - "Street ID,Neighborhood Name,Correct,Agree Count,Disagree Count,Not Sure Count,Validations,Task ID," + - "Mission ID,Image Capture Date,Heading,Pitch,Zoom,Canvas X,Canvas Y,Canvas Width,Canvas Height,GSV URL," + - "Panorama X,Panorama Y,Panorama Width,Panorama Height,Panorama Heading,Panorama Pitch" + "Street ID,OSM Street ID,Neighborhood Name,Correct,Agree Count,Disagree Count,Not Sure Count,Validations," + + "Task ID,Mission ID,Image Capture Date,Heading,Pitch,Zoom,Canvas X,Canvas Y,Canvas Width,Canvas Height," + + "GSV URL,Panorama X,Panorama Y,Panorama Width,Panorama Height,Panorama Heading,Panorama Pitch" } } implicit val labelAllMetadataConverter = GetResult[LabelAllMetadata](r => LabelAllMetadata( r.nextInt, r.nextString, r.nextString, r.nextString, r.nextIntOption, r.nextStringOption.map(tags => tags.split(",").filter(_.nonEmpty).toList).getOrElse(List()), r.nextBoolean, - r.nextStringOption, LatLng(r.nextDouble, r.nextDouble), r.nextTimestamp, r.nextInt, r.nextString, - (r.nextInt, r.nextInt, r.nextInt), r.nextBooleanOption, + r.nextStringOption, LatLng(r.nextDouble, r.nextDouble), r.nextTimestamp, r.nextInt, r.nextLong, r.nextString, + LabelValidationInfo(r.nextInt, r.nextInt, r.nextInt, r.nextBooleanOption), r.nextStringOption.map(_.split(",").map(v => (v.split(":")(0), v.split(":")(1).toInt)).toList).getOrElse(List()), r.nextInt, r.nextInt, r.nextString, POV(r.nextDouble, r.nextDouble, r.nextInt), LocationXY(r.nextInt, r.nextInt), (LocationXY(r.nextInt, r.nextInt), r.nextIntOption.flatMap(w => r.nextIntOption.map(h => Dimensions(w, h)))), @@ -1074,14 +1074,15 @@ object LabelTable { val labelsQuery = Q.queryNA[LabelAllMetadata]( s"""SELECT label.label_id, label.user_id, label.gsv_panorama_id, label_type.label_type, label.severity, | array_to_string(label.tags, ','), label.temporary, label.description, label_point.lat, label_point.lng, - | label.time_created, label.street_edge_id, region.name, label.agree_count, label.disagree_count, - | label.notsure_count, label.correct, vals.validations, audit_task.audit_task_id, label.mission_id, - | gsv_data.capture_date, label_point.heading, label_point.pitch, label_point.zoom, label_point.canvas_x, - | label_point.canvas_y, label_point.pano_x, label_point.pano_y, gsv_data.width, gsv_data.height, - | gsv_data.camera_heading, gsv_data.camera_pitch + | label.time_created, label.street_edge_id, osm_way_street_edge.osm_way_id, region.name, + | label.agree_count, label.disagree_count, label.notsure_count, label.correct, vals.validations, + | audit_task.audit_task_id, label.mission_id, gsv_data.capture_date, label_point.heading, + | label_point.pitch, label_point.zoom, label_point.canvas_x, label_point.canvas_y, label_point.pano_x, + | label_point.pano_y, gsv_data.width, gsv_data.height, gsv_data.camera_heading, gsv_data.camera_pitch |FROM label |INNER JOIN label_type ON label.label_type_id = label_type.label_type_id |INNER JOIN label_point ON label.label_id = label_point.label_id + |INNER JOIN osm_way_street_edge ON label.street_edge_id = osm_way_street_edge.street_edge_id |INNER JOIN street_edge_region ON label.street_edge_id = street_edge_region.street_edge_id |INNER JOIN region ON street_edge_region.region_id = region.region_id |INNER JOIN audit_task ON label.audit_task_id = audit_task.audit_task_id From bc891fd60f1036c15b1cd4c1c164a51ed4233f36 Mon Sep 17 00:00:00 2001 From: Mikey Saugstad Date: Mon, 15 Apr 2024 14:59:51 -0700 Subject: [PATCH 7/8] renames pooled water tag to debris / pooled water --- conf/evolutions/default/223.sql | 21 +++++++++++++++++++ .../javascripts/common/UtilitiesSidewalk.js | 4 ++-- public/locales/de/audit.json | 2 +- public/locales/de/common.json | 2 +- public/locales/en/audit.json | 2 +- public/locales/en/common.json | 2 +- public/locales/es/audit.json | 2 +- public/locales/es/common.json | 2 +- public/locales/nl/audit.json | 2 +- public/locales/nl/common.json | 2 +- public/locales/zh-TW/audit.json | 2 +- public/locales/zh-TW/common.json | 2 +- 12 files changed, 33 insertions(+), 12 deletions(-) create mode 100644 conf/evolutions/default/223.sql diff --git a/conf/evolutions/default/223.sql b/conf/evolutions/default/223.sql new file mode 100644 index 0000000000..ed963928b8 --- /dev/null +++ b/conf/evolutions/default/223.sql @@ -0,0 +1,21 @@ +# --- !Ups +UPDATE tag SET tag = 'debris / pooled water' WHERE tag = 'pooled water'; + +UPDATE label SET tags = ARRAY_REPLACE(tags, 'pooled water', 'debris / pooled water'); + +UPDATE label_history SET tags = ARRAY_REPLACE(tags, 'pooled water', 'debris / pooled water'); + +UPDATE label_validation +SET old_tags = ARRAY_REPLACE(old_tags, 'pooled water', 'debris / pooled water'), + new_tags = ARRAY_REPLACE(new_tags, 'pooled water', 'debris / pooled water'); + +# --- !Downs +UPDATE label_validation +SET old_tags = ARRAY_REPLACE(old_tags, 'debris / pooled water', 'pooled water'), + new_tags = ARRAY_REPLACE(new_tags, 'debris / pooled water', 'pooled water'); + +UPDATE label_history SET tags = ARRAY_REPLACE(tags, 'debris / pooled water', 'pooled water'); + +UPDATE label SET tags = ARRAY_REPLACE(tags, 'debris / pooled water', 'pooled water'); + +UPDATE tag SET tag = 'pooled water' WHERE tag = 'debris / pooled water'; diff --git a/public/javascripts/common/UtilitiesSidewalk.js b/public/javascripts/common/UtilitiesSidewalk.js index 871b9f9fea..8de0d0582c 100644 --- a/public/javascripts/common/UtilitiesSidewalk.js +++ b/public/javascripts/common/UtilitiesSidewalk.js @@ -105,9 +105,9 @@ function UtilitiesMisc (JSON) { keyChar: 'R', text: i18next.t('center-ui.context-menu.tag.surface-problem') }, - 'pooled water': { + 'debris / pooled water': { keyChar: 'D', - text: i18next.t('center-ui.context-menu.tag.pooled-water') + text: i18next.t('center-ui.context-menu.tag.debris-pooled-water') }, 'parallel lines': { keyChar: 'J', diff --git a/public/locales/de/audit.json b/public/locales/de/audit.json index 4fa371b9b9..d3b6206cf0 100644 --- a/public/locales/de/audit.json +++ b/public/locales/de/audit.json @@ -124,7 +124,7 @@ "not-enough-landing-space": "nicht genug Platz", "not-level-with-street": "nicht auf dem selben Niveau wie Strasse", "surface-problem": "Oberflächenproblem", - "pooled-water": "Wasserpfütze (d)", + "debris-pooled-water": "Schmutz/Wasserpfütze (d)", "parallel-lines": "parallele Linien (j)", "alternate-route-present": "alternative Route vorhanden", "no-alternate-route": "keine alternative Route vorhanden", diff --git a/public/locales/de/common.json b/public/locales/de/common.json index 4ea261a68c..a75258264b 100644 --- a/public/locales/de/common.json +++ b/public/locales/de/common.json @@ -64,7 +64,7 @@ "not enough landing space": "nicht genug Platz", "not level with street": "nicht auf dem selben Niveau wie Strasse", "surface problem": "Oberflächenproblem", - "pooled water": "Wasserpfütze", + "debris / pooled water": "Schmutz/Wasserpfütze", "parallel lines": "parallele Linien", "alternate route present": "alternative Route vorhanden", "no alternate route": "keine alternative Route vorhanden", diff --git a/public/locales/en/audit.json b/public/locales/en/audit.json index bf86d97f79..fc119d927e 100644 --- a/public/locales/en/audit.json +++ b/public/locales/en/audit.json @@ -124,7 +124,7 @@ "not-enough-landing-space": "not enough landing space", "not-level-with-street": "not level with street", "surface-problem": "surface problem", - "pooled-water": "pooled water", + "debris-pooled-water": "debris / pooled water", "parallel-lines": "parallel lines (j)", "alternate-route-present": "alternate route present", "no-alternate-route": "no alternate route", diff --git a/public/locales/en/common.json b/public/locales/en/common.json index 810e333813..2cf30925c2 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -64,7 +64,7 @@ "not enough landing space": "not enough landing space", "not level with street": "not level with street", "surface problem": "surface problem", - "pooled water": "pooled water", + "debris / pooled water": "debris / pooled water", "parallel lines": "parallel lines", "alternate route present": "alternate route present", "no alternate route": "no alternate route", diff --git a/public/locales/es/audit.json b/public/locales/es/audit.json index 4c58454d2f..3c34bb87a6 100644 --- a/public/locales/es/audit.json +++ b/public/locales/es/audit.json @@ -124,7 +124,7 @@ "not-enough-landing-space": "área de aproximación insuficiente (l)", "not-level-with-street": "con desnivel", "surface-problem": "problema en superficie", - "pooled-water": "encharcada", + "debris-pooled-water": "escombros/encharcada", "parallel-lines": "lineas paralelas (j)", "alternate-route-present": "hay una ruta alternativa segura para cruzar", "no-alternate-route": "no hay una ruta alternativa para cruzar", diff --git a/public/locales/es/common.json b/public/locales/es/common.json index d55d00d8a1..d4a67d20e5 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -64,7 +64,7 @@ "not enough landing space": "área de aproximación insuficiente", "not level with street": "con desnivel", "surface-problem": "problema en superficie", - "pooled water": "encharcada", + "debris / pooled water": "escombros/encharcada", "parallel lines": "lineas paralelas", "alternate route present": "hay una ruta alternativa segura para cruzar", "no alternate route": "no hay una ruta alternativa para cruzar", diff --git a/public/locales/nl/audit.json b/public/locales/nl/audit.json index 2f636f482d..b8af8b0de1 100644 --- a/public/locales/nl/audit.json +++ b/public/locales/nl/audit.json @@ -124,7 +124,7 @@ "not-enough-landing-space": "bovenaan niet genoeg ruimte (l)", "not-level-with-street": "niet zelfde niveau met straat", "surface-problem": "oppervlakte probleem", - "pooled-water": "gepoold water", + "debris-pooled-water": "brokstukken / gepoold water", "parallel-lines": "parallelle lijnen", "alternate-route-present": "alternatieve route aanwezig", "no-alternate-route": "geen alternatieve route", diff --git a/public/locales/nl/common.json b/public/locales/nl/common.json index da27c3344c..693f8c6f9d 100644 --- a/public/locales/nl/common.json +++ b/public/locales/nl/common.json @@ -63,7 +63,7 @@ "not enough landing space": "bovenaan niet genoeg ruimte", "not level with street": "niet zelfde niveau met straat", "surface-problem": "oppervlakte probleem", - "pooled water": "gepoold water", + "debris / pooled water": "brokstukken / gepoold water", "parallel lines": "parallelle lijnen", "alternate route present": "alternatieve route aanwezig", "no alternate route": "geen alternatieve route", diff --git a/public/locales/zh-TW/audit.json b/public/locales/zh-TW/audit.json index 440473bc89..d233373bb3 100644 --- a/public/locales/zh-TW/audit.json +++ b/public/locales/zh-TW/audit.json @@ -124,7 +124,7 @@ "not-enough-landing-space": "坡頂平臺空間不足(l)", "not-level-with-street": "與街道不齊平(v)", "surface-problem": "鋪面問題(r)", - "pooled-water": "積水(d)", + "debris-pooled-water": "碎片/積水(d)", "parallel-lines": "平行線(j)", "alternate-route-present": "有替代路徑(a)", "no-alternate-route": "無替代路徑(l)", diff --git a/public/locales/zh-TW/common.json b/public/locales/zh-TW/common.json index 139f786042..78218da736 100644 --- a/public/locales/zh-TW/common.json +++ b/public/locales/zh-TW/common.json @@ -64,7 +64,7 @@ "not enough landing space": "坡頂平臺上空間不足", "not level with street": "與街道路面不平齊", "surface problem": "鋪面問題", - "pooled water": "積水", + "debris / pooled water": "碎片/積水", "parallel lines": "平行線", "alternate route present": "有替代路徑", "no alternate route": "無替代路徑", From 3eb6c1fd3fee58aa23821700bd8029fc7499b282 Mon Sep 17 00:00:00 2001 From: Mikey Saugstad Date: Mon, 15 Apr 2024 15:42:00 -0700 Subject: [PATCH 8/8] 7.19.2 -> 7.19.3 --- build.sbt | 2 +- conf/evolutions/default/224.sql | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 conf/evolutions/default/224.sql diff --git a/build.sbt b/build.sbt index 61d1456ec4..aaf39312ca 100644 --- a/build.sbt +++ b/build.sbt @@ -2,7 +2,7 @@ import play.PlayScala name := """sidewalk-webpage""" -version := "7.19.2" +version := "7.19.3" scalaVersion := "2.10.7" diff --git a/conf/evolutions/default/224.sql b/conf/evolutions/default/224.sql new file mode 100644 index 0000000000..7cb9715795 --- /dev/null +++ b/conf/evolutions/default/224.sql @@ -0,0 +1,5 @@ +# --- !Ups +INSERT INTO version VALUES ('7.19.3', now(), 'Fixes validating through Gallery and LabelMap.'); + +# --- !Downs +DELETE FROM version WHERE version_id = '7.19.3';