From 0ec1c8f6a6febb9b7c4001b938ccf6a8601fa5a4 Mon Sep 17 00:00:00 2001 From: cptran777 Date: Mon, 20 Aug 2018 10:08:36 -0700 Subject: [PATCH] Create logic and events to show red dot on ownership tab if needs action --- .../app/components/dataset-authors.ts | 9 +++++++- .../app/controllers/datasets/dataset.ts | 21 +++++++++++++++++++ .../datasets/containers/dataset-ownership.hbs | 1 + .../app/templates/datasets/dataset.hbs | 6 ++++-- 4 files changed, 34 insertions(+), 3 deletions(-) diff --git a/wherehows-web/app/components/dataset-authors.ts b/wherehows-web/app/components/dataset-authors.ts index 404f2d35fa..04aec12ab0 100644 --- a/wherehows-web/app/components/dataset-authors.ts +++ b/wherehows-web/app/components/dataset-authors.ts @@ -20,6 +20,7 @@ import { } from 'wherehows-web/constants/datasets/owner'; import { OwnerSource, OwnerType } from 'wherehows-web/utils/api/datasets/owners'; import Notifications, { NotificationEvent } from 'wherehows-web/services/notifications'; +import { noop } from 'wherehows-web/utils/helpers/functions'; type Comparator = -1 | 0 | 1; @@ -114,6 +115,8 @@ export default class DatasetAuthors extends Component { */ isAddingOwner = false; + setOwnershipRuleChange: (notConfirmed: boolean) => void; + /** * Flag that resolves in the affirmative if the number of confirmed owner is less the minimum required * @type {ComputedProperty} @@ -128,7 +131,9 @@ export default class DatasetAuthors extends Component { } // If there have been no changes, then we want to automatically set true in order to disable save button // when no changes have been made - return changedState === -1 ? true : isRequiredMinOwnersNotConfirmed(get(this, 'confirmedOwners')); + const requiredOwnersNotConfirmed = isRequiredMinOwnersNotConfirmed(get(this, 'confirmedOwners')); + get(this, 'setOwnershipRuleChange')(requiredOwnersNotConfirmed); + return changedState === -1 || requiredOwnersNotConfirmed; } /** @@ -201,6 +206,8 @@ export default class DatasetAuthors extends Component { `Expected action save to be an function (Ember action), got ${typeOfSaveAction}`, typeOfSaveAction === 'function' ); + + this.setOwnershipRuleChange || (this.setOwnershipRuleChange = noop); } /** diff --git a/wherehows-web/app/controllers/datasets/dataset.ts b/wherehows-web/app/controllers/datasets/dataset.ts index c5473b29a2..74ae08fcb2 100644 --- a/wherehows-web/app/controllers/datasets/dataset.ts +++ b/wherehows-web/app/controllers/datasets/dataset.ts @@ -7,6 +7,7 @@ import { Tabs } from 'wherehows-web/constants/datasets/shared'; import { action } from '@ember-decorators/object'; import { DatasetPlatform } from 'wherehows-web/constants'; import { IDatasetView } from 'wherehows-web/typings/api/datasets/dataset'; +import { once } from '@ember/runloop'; export default class DatasetController extends Controller { queryParams = ['urn']; @@ -102,6 +103,14 @@ export default class DatasetController extends Controller { */ datasetContainsPersonalData: boolean; + datasetOwnersRequiredNotMet: boolean; + + /** + * Flag indicating that the dataset ownership requires user attention + * @type {ComputedProperty} + */ + ownershipRequiresUserAction: ComputedProperty = or('datasetOwnersRequiredNotMet'); + /** * Flag indicating that the compliance policy needs user attention * @type {ComputedProperty} @@ -219,4 +228,16 @@ export default class DatasetController extends Controller { const fromUpstream = get(this, 'isPolicyFromUpstream'); set(this, 'compliancePolicyHasDrift', !fromUpstream && hasDrift); } + + /** + * Triggered when the ownership information changes, will alert the user on the tab with a red dot if + * the current state of the dataset doesn't match the rules set out for the dataset ownership + * @param ownersNotConfirmed - Whether or not the owners for the dataset meet the requirements + */ + @action + setOwnershipRuleChange(ownersNotConfirmed: boolean) { + once('afterRender', () => { + set(this, 'datasetOwnersRequiredNotMet', ownersNotConfirmed); + }); + } } diff --git a/wherehows-web/app/templates/components/datasets/containers/dataset-ownership.hbs b/wherehows-web/app/templates/components/datasets/containers/dataset-ownership.hbs index c4df7405ad..b8a0885838 100644 --- a/wherehows-web/app/templates/components/datasets/containers/dataset-ownership.hbs +++ b/wherehows-web/app/templates/components/datasets/containers/dataset-ownership.hbs @@ -34,6 +34,7 @@ owners=owners suggestedOwners=suggestedOwners ownerTypes=ownerTypes + setOwnershipRuleChange=setOwnershipRuleChange save=(action "saveOwnerChanges") }} diff --git a/wherehows-web/app/templates/datasets/dataset.hbs b/wherehows-web/app/templates/datasets/dataset.hbs index 49b6f24a3e..ee1d05af15 100644 --- a/wherehows-web/app/templates/datasets/dataset.hbs +++ b/wherehows-web/app/templates/datasets/dataset.hbs @@ -94,7 +94,7 @@ {{#tablist.tab tabIds.Ownership on-select=(action "tabSelectionChanged")}} Ownership - {{#if requiredMinNotConfirmed}} + {{#if ownershipRequiresUserAction}} {{/if}} {{/tablist.tab}} @@ -142,7 +142,9 @@ {{/tabs.tabpanel}} {{#tabs.tabpanel tabIds.Ownership}} - {{datasets/containers/dataset-ownership urn=encodedUrn}} + {{datasets/containers/dataset-ownership + urn=encodedUrn + setOwnershipRuleChange=(action "setOwnershipRuleChange")}} {{/tabs.tabpanel}} {{#tabs.tabpanel tabIds.Compliance}}