removes policy notification for datasets with upstream policy

This commit is contained in:
Seyi Adebajo 2018-03-14 10:53:27 -07:00
parent 28267d153f
commit e843a561a9
2 changed files with 42 additions and 15 deletions

View File

@ -33,7 +33,7 @@ export default class DatasetComplianceContainer extends Component {
/** /**
* External action on parent * External action on parent
*/ */
setOnComplianceType: (isNewComplianceInfo: boolean) => void; setOnComplianceType: (args: { isNewComplianceInfo: boolean; fromUpstream: boolean }) => void;
/** /**
* External action on parent * External action on parent
@ -140,9 +140,11 @@ export default class DatasetComplianceContainer extends Component {
getComplianceTask = task(function*( getComplianceTask = task(function*(
this: DatasetComplianceContainer this: DatasetComplianceContainer
): IterableIterator<Promise<IReadComplianceResult>> { ): IterableIterator<Promise<IReadComplianceResult>> {
const { isNewComplianceInfo, complianceInfo } = yield readDatasetComplianceByUrn(get(this, 'urn')); const { isNewComplianceInfo, complianceInfo }: IReadComplianceResult = yield readDatasetComplianceByUrn(
get(this, 'urn')
);
this.onCompliancePolicyStateChange(isNewComplianceInfo); this.onCompliancePolicyStateChange({ isNewComplianceInfo, fromUpstream: !!complianceInfo.fromUpstream });
setProperties(this, { isNewComplianceInfo, complianceInfo }); setProperties(this, { isNewComplianceInfo, complianceInfo });
}); });
@ -153,7 +155,7 @@ export default class DatasetComplianceContainer extends Component {
getComplianceDataTypesTask = task(function*( getComplianceDataTypesTask = task(function*(
this: DatasetComplianceContainer this: DatasetComplianceContainer
): IterableIterator<Promise<Array<IComplianceDataType>>> { ): IterableIterator<Promise<Array<IComplianceDataType>>> {
const complianceDataTypes = yield readComplianceDataTypes(); const complianceDataTypes: Array<IComplianceDataType> = yield readComplianceDataTypes();
set(this, 'complianceDataTypes', complianceDataTypes); set(this, 'complianceDataTypes', complianceDataTypes);
}); });
@ -165,7 +167,7 @@ export default class DatasetComplianceContainer extends Component {
getComplianceSuggestionsTask = task(function*( getComplianceSuggestionsTask = task(function*(
this: DatasetComplianceContainer this: DatasetComplianceContainer
): IterableIterator<Promise<IComplianceSuggestion>> { ): IterableIterator<Promise<IComplianceSuggestion>> {
const complianceSuggestion = yield readDatasetComplianceSuggestionByUrn(get(this, 'urn')); const complianceSuggestion: IComplianceSuggestion = yield readDatasetComplianceSuggestionByUrn(get(this, 'urn'));
set(this, 'complianceSuggestion', complianceSuggestion); set(this, 'complianceSuggestion', complianceSuggestion);
}); });
@ -176,7 +178,7 @@ export default class DatasetComplianceContainer extends Component {
*/ */
getDatasetSchemaTask = task(function*(this: DatasetComplianceContainer): IterableIterator<Promise<IDatasetSchema>> { getDatasetSchemaTask = task(function*(this: DatasetComplianceContainer): IterableIterator<Promise<IDatasetSchema>> {
try { try {
const { columns, schemaless } = yield readDatasetSchemaByUrn(get(this, 'urn')); const { columns, schemaless }: IDatasetSchema = yield readDatasetSchemaByUrn(get(this, 'urn'));
const schemaFieldNamesMappedToDataTypes = columnDataTypesAndFieldNames(columns); const schemaFieldNamesMappedToDataTypes = columnDataTypesAndFieldNames(columns);
setProperties(this, { schemaFieldNamesMappedToDataTypes, schemaless }); setProperties(this, { schemaFieldNamesMappedToDataTypes, schemaless });
} catch (e) { } catch (e) {
@ -248,11 +250,18 @@ export default class DatasetComplianceContainer extends Component {
/** /**
* Invokes external action if compliance info is new or otherwise * Invokes external action if compliance info is new or otherwise
* @param {boolean} isNewComplianceInfo * @param {boolean} isNewComplianceInfo flag indicating the policy does not exist remotely
* @param {boolean} fromUpstream flag indicating related dataset compliance info is derived
*/ */
@action @action
onCompliancePolicyStateChange(isNewComplianceInfo: boolean) { onCompliancePolicyStateChange({
this.setOnComplianceType(isNewComplianceInfo); isNewComplianceInfo,
fromUpstream
}: {
isNewComplianceInfo: boolean;
fromUpstream: boolean;
}) {
this.setOnComplianceType({ isNewComplianceInfo, fromUpstream });
} }
/** /**

View File

@ -118,6 +118,12 @@ export default class extends Controller.extend({
*/ */
compliancePolicyHasDrift; compliancePolicyHasDrift;
/**
* Flag indicating the dataset policy is derived from an upstream source
* @type {boolean}
*/
isPolicyFromUpstream = false;
/** /**
* Flag indicating that the compliance policy needs user attention * Flag indicating that the compliance policy needs user attention
* @type {ComputedProperty<boolean>} * @type {ComputedProperty<boolean>}
@ -157,21 +163,32 @@ export default class extends Controller.extend({
} }
/** /**
* Setter to update the hasSuggestions flag * Updates the hasSuggestions flag if the policy is not from an upstream dataset, otherwise set to false
* @param {boolean} hasSuggestions * @param {boolean} hasSuggestions
*/ */
@action @action
setOnChangeSetChange(hasSuggestions) { setOnChangeSetChange(hasSuggestions) {
set(this, 'hasSuggestions', hasSuggestions); const fromUpstream = get(this, 'isPolicyFromUpstream');
set(this, 'hasSuggestions', !fromUpstream && hasSuggestions);
} }
/** /**
* Setter to update the isNewComplianceInfo flag * Updates the isNewComplianceInfo flag if the policy is not from an upstream dataset, otherwise set to false
* Also sets the isPolicyFromUpstream attribute
* @param {boolean} isNewComplianceInfo * @param {boolean} isNewComplianceInfo
* @param {boolean} fromUpstream
*/ */
@action @action
setOnComplianceTypeChange(isNewComplianceInfo) { setOnComplianceTypeChange({ isNewComplianceInfo, fromUpstream }) {
set(this, 'isNewComplianceInfo', isNewComplianceInfo); setProperties(this, {
isNewComplianceInfo: !fromUpstream && isNewComplianceInfo,
isPolicyFromUpstream: fromUpstream
});
if (fromUpstream) {
this.setOnChangeSetChange(false);
this.setOnChangeSetDrift(false);
}
} }
/** /**
@ -180,6 +197,7 @@ export default class extends Controller.extend({
*/ */
@action @action
setOnChangeSetDrift(hasDrift) { setOnChangeSetDrift(hasDrift) {
set(this, 'compliancePolicyHasDrift', hasDrift); const fromUpstream = get(this, 'isPolicyFromUpstream');
set(this, 'compliancePolicyHasDrift', !fromUpstream && hasDrift);
} }
} }