Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Assign-to-share: Update grant detail page #3208

Merged
merged 10 commits into from
Jul 2, 2024

Conversation

thucdtran
Copy link
Contributor

Ticket #3071

Description

This ticket implements the UI changes specified by the update grant detail issue.

Screenshots / Demo Video

Screenshot 2024-06-22 at 4 12 01 PM

@github-actions github-actions bot added the javascript Pull requests that update Javascript code label Jun 22, 2024
Copy link

github-actions bot commented Jun 22, 2024

QA Summary

QA Check Result
🌐 Client Tests
🔗 Server Tests
🤝 E2E Tests
📏 ESLint
🧹 TFLint

Test Coverage

Coverage report for `packages/client`
St File % Stmts % Branch % Funcs % Lines Uncovered Line #s
🔴 All files 15.7 12.76 16.88 15.9
🔴  src 0 100 100 0
🔴   App.vue 0 100 100 0 9
🔴  src/arpa_reporter 0 100 100 0
🔴   App.vue 0 100 100 0 13
🟡  ...ter/components 53.96 31.81 58.97 53.96
🔴   AlertBox.vue 33.33 0 0 33.33 35-36
🟡   ...oadButton.vue 57.14 50 42.85 57.14 60-67
🟢   ...ileButton.vue 100 100 100 100
🔴   ...ttonSmall.vue 0 100 0 0 13-23
🟢   ...mplateBtn.vue 100 100 100 100
🟡   ...avigation.vue 65 100 62.5 65 213-219,228-235
🔴   StandardForm.vue 37.5 25 55.55 37.5 124-128,135-157
🟢  ...porter/helpers 84.61 79.48 87.5 84.61
🟢   form-helpers.js 84.21 79.48 85.71 84.21 7,16,25,81-83
🟢   short-uuid.js 100 100 100 100
🔴  ...eporter/router 0 0 0 0
🔴   index.js 0 0 0 0 21-135
🔴  ...reporter/store 4.85 0 2.17 5.1
🔴   index.js 4.85 0 2.17 5.1 13-16,34-263
🔴  ...reporter/views 17.03 11.51 25.98 17.03
🟢   AgenciesView.vue 100 100 100 100
🔴   AgencyView.vue 0 0 0 0 30-96
🔴   HomeView.vue 16.66 5 50 16.66 113,137-207
🔴   LoginView.vue 0 0 0 0 49-100
🔴   ...plateView.vue 0 0 0 0 47-113
🔴   ...ploadView.vue 0 0 0 0 24-144
🔴   ...eriodView.vue 0 0 0 0 30-90
🔴   ...riodsView.vue 0 0 0 0 124-174
🔴   ...pientView.vue 0 0 0 0 56-152
🔴   ...ientsView.vue 0 0 0 0 99-206
🔴   UploadView.vue 49.12 47.61 78.94 49.12 ...41-442,448-449
🔴   UploadsView.vue 44.44 40.9 66.66 44.44 ...61-264,272-287
🔴   UserView.vue 40.62 20 68.75 40.62 84,97-137
🔴   UsersView.vue 0 0 0 0 58-126
🔴   ...ationView.vue 0 0 0 0 109-270
🔴  src/components 13.61 8.2 12.85 13.61
🟡   ...vityTable.vue 69.23 45 100 69.23 164-170,185
🔴   BaseLayout.vue 45.45 100 44.44 45.45 220-232
🔴   ...atesTable.vue 11.11 0 0 11.11 56-88
🔴   CopyButton.vue 0 100 0 0 29-49
🔴   GrantsTable.vue 3.84 0 0 3.84 187-543
🔴   ...dUploader.vue 3.7 0 0 3.7 55-111
🔴   SearchFilter.vue 5.55 0 0 5.55 40-82
🔴   UserAvatar.vue 12.5 0 0 12.5 29-40
🔴  ...ponents/Modals 9.09 1.6 10.93 9.12
🔴   ...anization.vue 18.75 0 22.22 18.75 143-178
🔴   AddTeam.vue 45 25 58.33 45 204,210,216-245
🔴   AddUser.vue 0 0 0 0 74-176
🔴   ...anization.vue 20 0 16.66 20 58-78
🔴   EditTeam.vue 12.19 0 30.76 12.19 208-301
🔴   EditUser.vue 6.25 0 0 6.25 72-128
🔴   ...ilsLegacy.vue 2.5 0 0 2.5 205-369
🔴   ImportTeams.vue 10 0 0 10 56-82
🔴   ImportUsers.vue 0 0 0 0 49-80
🔴   ...archPanel.vue 3.03 0 0 3.03 146-255
🔴   SearchPanel.vue 3.44 0 0 3.5 301-486
🔴  src/helpers 16.96 20 17.14 17.43
🟢   constants.js 100 100 100 100
🟢   currency.js 100 100 100 100
🟢   dates.js 100 100 100 100
🔴   fetchApi.js 5.71 16.66 5.88 5.71 9-97
🔴   filters.js 4 0 0 4.54 19-51
🔴   form-helpers.js 0 0 0 0 5-82
🟡   gtag.js 77.77 90 75 77.77 12,51
🟢  ...s/featureFlags 100 100 100 100
🟢   index.js 100 100 100 100
🟢   utils.js 100 100 100 100
🔴  src/mixin 20 0 28.57 20
🔴   ...zableTable.js 20 0 28.57 20 16-31,36-37,42
🔴  src/router 20.51 16.66 15 20.51
🔴   index.js 20.51 16.66 15 20.51 ...02-203,207-226
🟢  src/store 100 100 100 100
🟢   index.js 100 100 100 100
🔴  src/store/modules 3.58 0 4.72 3.77
🔴   agencies.js 5.26 100 8.33 5.55 13-70
🔴   alerts.js 20 100 20 20 10-24
🔴   grants.js 1.41 0 1.05 1.49 58-352
🔴   organization.js 33.33 100 33.33 33.33 21-25
🔴   roles.js 20 100 20 25 13-22
🔴   tenants.js 11.11 100 14.28 12.5 13-32
🔴   users.js 2.43 0 4.76 2.5 17-100
🔴  src/views 12.39 4.44 11.67 12.44
🔴   ...orterView.vue 0 0 0 0 96-151
🔴   ...boardView.vue 30 0 36.36 30 ...30-140,158-169
🔴   ...tailsView.vue 0 0 0 0 268-554
🟢   GrantsView.vue 100 100 100 100
🔴   LoginView.vue 5.88 0 0 5.88 87-134
🔴   MyGrantsView.vue 0 100 0 0 47-69
🟡   ...ofileView.vue 77.77 66.66 75 77.77 130-134
🟡   NotFoundView.vue 80 100 0 100
🔴   ...tionsView.vue 45.45 100 40 45.45 84,94-97,111-115
🔴   ...ivityView.vue 0 0 0 0 63-134
🟡   TeamsView.vue 54.54 100 50 54.54 142,156-163
🔴   ...DatesView.vue 0 0 0 0 49-119
🔴   UsersView.vue 0 0 0 0 62-139
Coverage report for `packages/server`
St File % Stmts % Branch % Funcs % Lines Uncovered Line #s
🟡 All files 58.22 50.6 53.76 58.33
🟢  src 81.63 33.33 60 81.63
🟢   configure.js 81.63 33.33 60 81.63 42,61-68,97-99
🟢  src/arpa_reporter 98.75 66.66 100 98.75
🟢   configure.js 97.36 40 100 97.36 36
🟢   environment.js 100 100 100 100
🟢   use-request.js 100 100 100 100
🔴  src/arpa_reporter/db 38.58 32.92 44.44 40.16
🔴   arpa-subrecipients.js 13.15 4.34 15.38 14.28 23-92
🔴   reporting-periods.js 37.2 46.87 40 38.09 46,77-156
🟢   settings.js 100 83.33 100 100 13
🟡   uploads.js 50 28.57 52.38 51.42 18-29,84,99-124,141-150
🔴  src/arpa_reporter/lib 29.57 33.08 34.56 28.46
🟢   arpa-ec-codes.js 100 100 100 100
🔴   audit-report.js 21.44 19.35 24.19 21.32 ...28-529,554-684,732-758
🟡   ensure-async-context.js 75 100 50 100
🟢   format.js 90.62 90 90 91.3 41-42
🟡   log.js 75 50 50 75 13,25
🟡   preconditions.js 66.66 33.33 100 66.66 3
🔴   spreadsheet.js 9.09 0 0 9.09 15-32
🟢   validation-error.js 85.71 100 50 85.71 16
🔴  src/arpa_reporter/routes 40 14.92 14.28 40.6
🔴   agencies.js 22.58 0 0 23.33 13-21,26-53
🟡   application_settings.js 75 100 0 75 10-11
🟡   audit-report.js 68.91 58.33 100 68.91 57-58,64-78,100-116
🟢   exports.js 81.42 83.33 100 81.42 61-75,98-99
🔴   reporting-periods.js 20 0 0 20.43 ...25-137,143-149,154-180
🔴   subrecipients.js 23.8 0 0 23.8 12-13,17-27,31-48,52-63
🔴   uploads.js 28.28 7.89 9.09 29.16 ...33-154,164-166,173-180
🔴   users.js 19.6 0 0 20 15-35,39-44,48-81
🔴  src/arpa_reporter/services 42.83 30.41 45.71 43.22
🔴   generate-arpa-report.js 36.86 2.79 50 37.24 ...-974,983-996,1070-1137
🔴   get-template.js 21.62 0 0 21.62 18-79
🟡   persist-upload.js 68.6 90 69.56 68.67 ...58-200,221-235,273-295
🔴   records.js 20.75 0 11.11 21.15 38-204,221-276
🔴   revalidate-uploads.js 37.5 100 0 37.5 5-14
🔴   validate-upload.js 38.86 50.6 33.33 39.81 ...20,339,361,379-656,671
🟢   validation-rules.js 98.18 90 90.9 100 157,173
🟡  src/db 74.45 71.31 68.78 74.49
🟢   connection.js 100 50 100 100 6
🟢   constants.js 100 100 100 100
🟡   helpers.js 75 83.33 50 75 5,21-22
🟢   index.js 82.57 78.36 82.35 82.53 ...69-1435,1617-1618,1625
🟢   saved_search_migration.js 92 88.23 71.42 93.61 5,69,134
🔴   tenant_creation.js 10.58 2.7 0 11.11 15-40,48-210,220
🔴  src/db/arpa_reporter_db_shims 23.68 0 0 23.68
🔴   agencies.js 22.22 100 0 22.22 11-51
🔴   users.js 25 0 0 25 12-62
🟢  src/lib 86 79.51 91.42 85.94
🟢   access-helpers.js 93.54 89.18 100 93.54 96-97,102-103
🟢   agencyImporter.js 90.38 88.46 100 90.19 26,29,35,93-94
🟢   email.js 93.78 82.25 100 93.67 ...38,160-164,211,424-427
🔴   gost-aws.js 47.82 37.5 42.85 47.72 13-58,94,104,114-134
🟢   grants-ingest.js 83.33 97.5 90 83.33 ...28-131,138-140,155-159
🟡   logging.js 77.77 85.71 100 77.77 11,13
🟢   redirect_validation.js 100 100 100 100
🟢   userImporter.js 82.27 58.33 88.88 81.57 32,47,53,62,73-81,143-152
🔴  src/lib/annualReports 27.38 0 0 27.38
🔴   doc-builder.js 7.69 0 0 7.69 19-352
🟡   index.js 80 100 0 80 6
🟢   placeholderTextStrings.js 100 100 100 100
🔴   reportBuilder.js 17.24 0 0 17.24 21-33,50-62,86-103
🟢  src/lib/arpa_reporter_shims 100 100 100 100
🟢   email.js 100 100 100 100
🟢  src/lib/email 93.1 87.5 100 92.59
🟢   constants.js 100 100 100 100
🟢   email-nodemailer.js 88.23 83.33 100 86.66 33,64
🟢   service-email.js 100 100 100 100
🟢  src/lib/fieldConfigs 100 100 100 100
🟢   fundingActivityCategories.js 100 100 100 100
🟡  src/routes 70.59 62.55 62.82 70.53
🔴   agencies.js 42.39 30 33.33 42.39 ...13-121,125-146,154-160
🔴   annualReports.js 47.05 100 0 47.05 15-27
🟢   eligibilityCodes.js 100 100 100 100
🟢   grants.js 80.97 71.55 76.47 81.25 ...80-381,396-399,[412-413](https://git...*[Comment body truncated]*

Copy link

github-actions bot commented Jun 22, 2024

Terraform Summary

Step Result
🖌 Terraform Format & Style
⚙️ Terraform Initialization
🤖 Terraform Validation
📖 Terraform Plan

Hint: If "Terraform Format & Style" failed, run terraform fmt -recursive from the terraform/ directory and commit the results.

Output

Validation Output
stdout:
Success! The configuration is valid.


-------------------------------------
stderr:

Plan Summary
CHANGE RESOURCE
add module.website.aws_s3_object.origin_dist_artifact["assets/ClosingDatesTable-FOA2sPiz.js"]
module.website.aws_s3_object.origin_dist_artifact["assets/ClosingDatesTable-FOA2sPiz.js.map"]
module.website.aws_s3_object.origin_dist_artifact["assets/DashboardView-ChQdwDon.js"]
module.website.aws_s3_object.origin_dist_artifact["assets/DashboardView-ChQdwDon.js.map"]
module.website.aws_s3_object.origin_dist_artifact["assets/GrantDetailsLegacy-5x4kSvok.js"]
module.website.aws_s3_object.origin_dist_artifact["assets/GrantDetailsLegacy-5x4kSvok.js.map"]
module.website.aws_s3_object.origin_dist_artifact["assets/GrantDetailsView-CZrlwLor.js"]
module.website.aws_s3_object.origin_dist_artifact["assets/GrantDetailsView-CZrlwLor.js.map"]
module.website.aws_s3_object.origin_dist_artifact["assets/GrantsTable-BqGgqUkE.js"]
module.website.aws_s3_object.origin_dist_artifact["assets/GrantsTable-BqGgqUkE.js.map"]
module.website.aws_s3_object.origin_dist_artifact["assets/GrantsView-3wqmjtFq.js"]
module.website.aws_s3_object.origin_dist_artifact["assets/GrantsView-3wqmjtFq.js.map"]
module.website.aws_s3_object.origin_dist_artifact["assets/MyGrantsView-DFw0z3vq.js"]
module.website.aws_s3_object.origin_dist_artifact["assets/MyGrantsView-DFw0z3vq.js.map"]
module.website.aws_s3_object.origin_dist_artifact["assets/MyProfileView-CvtJT_QD.js"]
module.website.aws_s3_object.origin_dist_artifact["assets/MyProfileView-CvtJT_QD.js.map"]
module.website.aws_s3_object.origin_dist_artifact["assets/OrganizationsView-7GAxwz90.js"]
module.website.aws_s3_object.origin_dist_artifact["assets/OrganizationsView-7GAxwz90.js.map"]
module.website.aws_s3_object.origin_dist_artifact["assets/RecentActivityView-UlrY_The.js"]
module.website.aws_s3_object.origin_dist_artifact["assets/RecentActivityView-UlrY_The.js.map"]
module.website.aws_s3_object.origin_dist_artifact["assets/TeamsView-BM-Lu54B.js"]
module.website.aws_s3_object.origin_dist_artifact["assets/TeamsView-BM-Lu54B.js.map"]
module.website.aws_s3_object.origin_dist_artifact["assets/UpcomingClosingDatesView-C_pc6PZw.js"]
module.website.aws_s3_object.origin_dist_artifact["assets/UpcomingClosingDatesView-C_pc6PZw.js.map"]
module.website.aws_s3_object.origin_dist_artifact["assets/UsersView-csfcr3gJ.js"]
module.website.aws_s3_object.origin_dist_artifact["assets/UsersView-csfcr3gJ.js.map"]
module.website.aws_s3_object.origin_dist_artifact["assets/main-CSzn1-8r.js"]
module.website.aws_s3_object.origin_dist_artifact["assets/main-CSzn1-8r.js.map"]
update module.api.aws_ecs_service.default[0]
module.api.module.grant_digest_scheduled_task.aws_iam_role_policy.default[0]
module.api.module.grant_digest_scheduled_task.aws_scheduler_schedule.default[0]
module.arpa_audit_report.aws_ecs_service.default
module.arpa_audit_report.aws_iam_role_policy.task["connect-to-postgres"]
module.arpa_treasury_report.aws_ecs_service.default
module.arpa_treasury_report.aws_iam_role_policy.task["connect-to-postgres"]
module.consume_grants.aws_ecs_service.default
module.consume_grants.aws_iam_role_policy.task["connect-to-postgres"]
module.postgres.module.db.aws_rds_cluster.this[0]
module.postgres.module.db.aws_rds_cluster_instance.this["one"]
module.website.aws_s3_object.deploy-config[0]
module.website.aws_s3_object.origin_dist_artifact["index.html"]
recreate module.api.aws_ecs_task_definition.default[0]
module.arpa_audit_report.aws_ecs_task_definition.consumer
module.arpa_treasury_report.aws_ecs_task_definition.consumer
module.consume_grants.aws_ecs_task_definition.consume_grants
delete module.api.aws_ecs_task_definition.default[0]
module.website.aws_s3_object.origin_dist_artifact["assets/ClosingDatesTable-K0Snn8A5.js"]
module.website.aws_s3_object.origin_dist_artifact["assets/ClosingDatesTable-K0Snn8A5.js.map"]
module.website.aws_s3_object.origin_dist_artifact["assets/DashboardView-Lp3tdKPq.js"]
module.website.aws_s3_object.origin_dist_artifact["assets/DashboardView-Lp3tdKPq.js.map"]
module.website.aws_s3_object.origin_dist_artifact["assets/GrantDetailsLegacy-C6EYeeTr.js"]
module.website.aws_s3_object.origin_dist_artifact["assets/GrantDetailsLegacy-C6EYeeTr.js.map"]
module.website.aws_s3_object.origin_dist_artifact["assets/GrantDetailsView-DaD2N3Iz.js"]
module.website.aws_s3_object.origin_dist_artifact["assets/GrantDetailsView-DaD2N3Iz.js.map"]
module.website.aws_s3_object.origin_dist_artifact["assets/GrantsTable-3L4p_1XQ.js"]
module.website.aws_s3_object.origin_dist_artifact["assets/GrantsTable-3L4p_1XQ.js.map"]
module.website.aws_s3_object.origin_dist_artifact["assets/GrantsView-8y1IwFpm.js"]
module.website.aws_s3_object.origin_dist_artifact["assets/GrantsView-8y1IwFpm.js.map"]
module.website.aws_s3_object.origin_dist_artifact["assets/MyGrantsView-B-nndOVP.js"]
module.website.aws_s3_object.origin_dist_artifact["assets/MyGrantsView-B-nndOVP.js.map"]
module.website.aws_s3_object.origin_dist_artifact["assets/MyProfileView-BiUx_V1Z.js"]
module.website.aws_s3_object.origin_dist_artifact["assets/MyProfileView-BiUx_V1Z.js.map"]
module.website.aws_s3_object.origin_dist_artifact["assets/OrganizationsView-FsNA6WeC.js"]
module.website.aws_s3_object.origin_dist_artifact["assets/OrganizationsView-FsNA6WeC.js.map"]
module.website.aws_s3_object.origin_dist_artifact["assets/RecentActivityView-B3m5dK9p.js"]
module.website.aws_s3_object.origin_dist_artifact["assets/RecentActivityView-B3m5dK9p.js.map"]
module.website.aws_s3_object.origin_dist_artifact["assets/TeamsView-DadL4QMI.js"]
module.website.aws_s3_object.origin_dist_artifact["assets/TeamsView-DadL4QMI.js.map"]
module.website.aws_s3_object.origin_dist_artifact["assets/UpcomingClosingDatesView-Ci3RGxp0.js"]
module.website.aws_s3_object.origin_dist_artifact["assets/UpcomingClosingDatesView-Ci3RGxp0.js.map"]
module.website.aws_s3_object.origin_dist_artifact["assets/UsersView-Dg9FjdeD.js"]
module.website.aws_s3_object.origin_dist_artifact["assets/UsersView-Dg9FjdeD.js.map"]
module.website.aws_s3_object.origin_dist_artifact["assets/main-DP2OY2E4.js"]
module.website.aws_s3_object.origin_dist_artifact["assets/main-DP2OY2E4.js.map"]

Pusher: @thucdtran, Action: pull_request_target, Workflow: Continuous Integration

@thucdtran thucdtran requested review from jeffsmohan and a team June 23, 2024 02:18
Copy link
Contributor

@jeffsmohan jeffsmohan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is looking great! Just a couple very minor suggested tweaks.

<p class="m-0 text-muted">
<small>{{ formatDateTime(agency.created_at) }}</small>
</p>
<div v-if="!shareTerminologyEnabled">
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two small tweaks here:

  1. The two v-if statements are slightly more readable/robust if we use a v-if followed by a v-else. (e.g., if the condition got changed at some point, we wouldn't need to change it in two locations)
  2. In a situation like this where we don't actually need or want a div tag in our html structure, we can use vue's template tag to avoid polluting the document structure.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.

@@ -378,6 +401,9 @@ export default {
newTerminologyEnabled() {
return newTerminologyEnabled();
},
shareTerminologyEnabled() {
return shareTerminologyEnabled();
},
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(very minor/optional/non-blocking) This can be simplified to shareTerminologyEnabled, which is a bit more terse and makes it exceedingly clear that we're not wrapping the helper method to change its functionality in any way.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not quite sure, what you mean here; does this mean to change this to appear like:

   newTerminologyEnabled() {
      return newTerminologyEnabled();
    },
    shareTerminologyEnabled,

?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, sorry, I think the suggestion became so terse that it lost its context and was a bit tough to understand. To be more clear, you can apply this diff and the behavior will be identical:

diff --git a/packages/client/src/views/GrantDetailsView.vue b/packages/client/src/views/GrantDetailsView.vue
index afc16fbb..623178c9 100644
--- a/packages/client/src/views/GrantDetailsView.vue
+++ b/packages/client/src/views/GrantDetailsView.vue
@@ -404,12 +404,8 @@ export default {
         (interested) => interested.agency_id.toString() === this.selectedAgencyId,
       );
     },
-    newTerminologyEnabled() {
-      return newTerminologyEnabled();
-    },
-    shareTerminologyEnabled() {
-      return shareTerminologyEnabled();
-    },
+    newTerminologyEnabled,
+    shareTerminologyEnabled,
     unassignedAgencies() {
       return this.agencies.filter(
         (agency) => !this.assignedAgencies.map((assigned) => assigned.id).includes(agency.id),

Again, totally optional and non-blocking!

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done!

Copy link
Contributor

@jeffsmohan jeffsmohan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm!

I replied to your question about my comment, but like I said, that's totally optional, so this is good to go as-is if you like!

@thucdtran thucdtran merged commit 52d614c into main Jul 2, 2024
19 checks passed
@thucdtran thucdtran deleted the thucdtran/assign-to-share-update-grant-detail-page branch July 2, 2024 16:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
javascript Pull requests that update Javascript code
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants