From 60de33598a97d5d21fda2c55e299325bf9364c8e Mon Sep 17 00:00:00 2001 From: Devon Anderson Date: Wed, 29 Mar 2023 15:45:40 -0400 Subject: [PATCH] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20create=20enable-session-?= =?UTF-8?q?recording=20view=20(#165)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: 🎸 create enable-session-recording view Create `enable-session-recording` ui view. ✅ Closes: ICU-8592 * refactor: 💡 refactor scss for enable-session-recording Refactor scss to use `rem` instead of Rose mixins for sizing. ✅ Closes: ICU-8592 * refactor: 💡 removed integration test Removed integration test for `form/enable-session-recording`. User testing will come from targets acceptance test. ✅ Closes: ICU-8592 --- addons/core/translations/resources/en-us.yaml | 14 ++++ .../form/enable-session-recording/index.hbs | 68 +++++++++++++++++++ .../form/enable-session-recording/index.js | 7 ++ .../target/enable-session-recording.js | 18 +++++ .../target/enable-session-recording.js | 19 +++++- ui/admin/app/styles/app.scss | 15 ++++ .../target/enable-session-recording.hbs | 30 +++++++- ui/admin/config/environment.js | 1 + .../target/enable-session-recording-test.js | 17 +++++ 9 files changed, 187 insertions(+), 2 deletions(-) create mode 100644 ui/admin/app/components/form/enable-session-recording/index.hbs create mode 100644 ui/admin/app/components/form/enable-session-recording/index.js create mode 100644 ui/admin/app/controllers/scopes/scope/targets/target/enable-session-recording.js create mode 100644 ui/admin/tests/unit/controllers/scopes/scope/targets/target/enable-session-recording-test.js diff --git a/addons/core/translations/resources/en-us.yaml b/addons/core/translations/resources/en-us.yaml index 84c878b90..680e5c0fa 100644 --- a/addons/core/translations/resources/en-us.yaml +++ b/addons/core/translations/resources/en-us.yaml @@ -427,6 +427,20 @@ target: delete-address: title: Remove target address? message: This target has an assigned address. Adding a host source will remove the assigned address from the target when you save your changes. + enable-session-recording: + title: Enable Session Recording + messages: + add: + title: Enable session recording for target + options: + 1: Storage Bucket 1 + 2: Storage Bucket 2 + form: + filter: + label: Record sessions for this target + select: + label: AWS storage buckets + description: Description for storage buckets brokered-credential-source: title: Brokered Credential title_plural: Brokered Credentials diff --git a/ui/admin/app/components/form/enable-session-recording/index.hbs b/ui/admin/app/components/form/enable-session-recording/index.hbs new file mode 100644 index 000000000..5b60064a4 --- /dev/null +++ b/ui/admin/app/components/form/enable-session-recording/index.hbs @@ -0,0 +1,68 @@ + +
+ + + {{t + 'resources.target.enable-session-recording.form.filter.label' + }} + + + {{#if this.toggleEnabled}} + + {{t + 'resources.target.enable-session-recording.form.select.label' + }} + + {{!TODO: add correct description for form-select}} + + {{t + 'resources.target.enable-session-recording.form.select.description' + }} + + + {{!TODO: replace dummy data with storage-bucket name and remove uneeded translations}} + + + + + + {{#if @model.errors.name}} + + {{#each @model.errors.name as |error|}} + {{error.message}} + {{/each}} + + {{/if}} + + {{/if}} + + + + +
+
\ No newline at end of file diff --git a/ui/admin/app/components/form/enable-session-recording/index.js b/ui/admin/app/components/form/enable-session-recording/index.js new file mode 100644 index 000000000..2ad3f2629 --- /dev/null +++ b/ui/admin/app/components/form/enable-session-recording/index.js @@ -0,0 +1,7 @@ +import Component from '@glimmer/component'; +import { tracked } from '@glimmer/tracking'; + +export default class FormEnableSessionRecordingIndexComponent extends Component { + // =attributes + @tracked toggleEnabled = true; +} diff --git a/ui/admin/app/controllers/scopes/scope/targets/target/enable-session-recording.js b/ui/admin/app/controllers/scopes/scope/targets/target/enable-session-recording.js new file mode 100644 index 000000000..1af8f7f7d --- /dev/null +++ b/ui/admin/app/controllers/scopes/scope/targets/target/enable-session-recording.js @@ -0,0 +1,18 @@ +import Controller from '@ember/controller'; +import { inject as service } from '@ember/service'; + +export default class ScopesScopeTargetsTargetEnableSessionRecordingController extends Controller { + // =services + + @service intl; + + // =attributes + + /** + * Translated enable session recording breadcrumb + * @type {string} + */ + get breadCrumb() { + return this.intl.t('resources.target.enable-session-recording.title'); + } +} diff --git a/ui/admin/app/routes/scopes/scope/targets/target/enable-session-recording.js b/ui/admin/app/routes/scopes/scope/targets/target/enable-session-recording.js index d6dd6e257..5dd07dd22 100644 --- a/ui/admin/app/routes/scopes/scope/targets/target/enable-session-recording.js +++ b/ui/admin/app/routes/scopes/scope/targets/target/enable-session-recording.js @@ -1,3 +1,20 @@ import Route from '@ember/routing/route'; +import { inject as service } from '@ember/service'; -export default class ScopesScopeTargetsTargetEnableSessionRecordingRoute extends Route {} +export default class ScopesScopeTargetsTargetEnableSessionRecordingRoute extends Route { + // =services + + @service router; + + // =methods + + /** + * Returns the current target and all storage buckets. + * @return {{target: TargetModel, storageBuckets: [StorageBucketModel]}} + */ + + async model() { + // TODO: need model for storage_bucket as well + return this.modelFor('scopes.scope.targets.target'); + } +} diff --git a/ui/admin/app/styles/app.scss b/ui/admin/app/styles/app.scss index 4131c3e5b..99cf43f94 100644 --- a/ui/admin/app/styles/app.scss +++ b/ui/admin/app/styles/app.scss @@ -643,6 +643,21 @@ } } +.enable-session-recording-toggle { + width: 50%; + margin-top: 1.5rem; + + .hds-form-field--layout-vertical, + .hds-link-standalone { + margin-left: 2.5rem; + } + + .hds-link-standalone { + margin-top: 0.75rem; + margin-bottom: 1.5rem; + } +} + // target sidebar .target-sidebar { .title-wrapper { diff --git a/ui/admin/app/templates/scopes/scope/targets/target/enable-session-recording.hbs b/ui/admin/app/templates/scopes/scope/targets/target/enable-session-recording.hbs index 559ab26d4..81e7bad08 100644 --- a/ui/admin/app/templates/scopes/scope/targets/target/enable-session-recording.hbs +++ b/ui/admin/app/templates/scopes/scope/targets/target/enable-session-recording.hbs @@ -1,2 +1,30 @@ {{page-title (t 'resources.target.actions.enable-session-recording')}} -{{outlet}} \ No newline at end of file + + + + + + + +

{{t 'resources.target.enable-session-recording.messages.add.title'}} + +

+ {{!TODO: add description for enabling session recording}} + + {{@model.id}} + +
+ + + + + +
\ No newline at end of file diff --git a/ui/admin/config/environment.js b/ui/admin/config/environment.js index 21063d367..a6fb109fb 100644 --- a/ui/admin/config/environment.js +++ b/ui/admin/config/environment.js @@ -78,6 +78,7 @@ module.exports = function (environment) { target: '/targets', 'target.new': '/targets/new', 'target.add-host-sources': '/targets/add-host-sets', + 'target.enable-session-recording': '/targets/enable-session-recording', 'target.worker-filters': '/targets/worker-filters', user: '/users', downloads: '/downloads', diff --git a/ui/admin/tests/unit/controllers/scopes/scope/targets/target/enable-session-recording-test.js b/ui/admin/tests/unit/controllers/scopes/scope/targets/target/enable-session-recording-test.js new file mode 100644 index 000000000..0aca32f5b --- /dev/null +++ b/ui/admin/tests/unit/controllers/scopes/scope/targets/target/enable-session-recording-test.js @@ -0,0 +1,17 @@ +import { module, test } from 'qunit'; +import { setupTest } from 'admin/tests/helpers'; + +module( + 'Unit | Controller | scopes/scope/targets/target/enable-session-recording', + function (hooks) { + setupTest(hooks); + + // TODO: Replace this with your real tests. + test('it exists', function (assert) { + let controller = this.owner.lookup( + 'controller:scopes/scope/targets/target/enable-session-recording' + ); + assert.ok(controller); + }); + } +);