Merge pull request #1396 from theseyi/compliance-completed-filter

adds completed / passing tags filter to compliance entities table
This commit is contained in:
Seyi Adebajo 2018-09-20 08:46:06 -07:00 committed by GitHub
commit 37802e280b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 28 additions and 8 deletions

View File

@ -2,7 +2,7 @@ import Component from '@ember/component';
import { computed, set, get, setProperties, getProperties, getWithDefault } from '@ember/object';
import ComputedProperty, { not, or, alias } from '@ember/object/computed';
import { run, schedule, next } from '@ember/runloop';
import { classify } from '@ember/string';
import { classify, htmlSafe } from '@ember/string';
import { assert } from '@ember/debug';
import { IDatasetView } from 'wherehows-web/typings/api/datasets/dataset';
import { IDataPlatform } from 'wherehows-web/typings/api/list/platforms';
@ -39,7 +39,8 @@ import {
TagFilter,
tagSuggestionNeedsReview,
ComplianceEdit,
buildFieldSuggestionsLookupTable
buildFieldSuggestionsLookupTable,
tagsPassingReview
} from 'wherehows-web/constants';
import { arrayFilter, arrayMap, arrayReduce, isListUnique, iterateArrayAsync } from 'wherehows-web/utils/array';
import { identity, noop } from 'wherehows-web/utils/helpers/functions';
@ -323,7 +324,8 @@ export default class DatasetCompliance extends Component {
[TagFilter.showAll]: '',
[TagFilter.showReview]: '? Please select at least one type for each field',
[TagFilter.showSuggested]:
'! Please review suggestions and click thumbs up or down, based on the accuracy of the suggestion'
'! Please review suggestions and click thumbs up or down, based on the accuracy of the suggestion',
[TagFilter.showCompleted]: ''
})[fieldReviewOption];
return foldedChangeSet.length ? hint : '';
@ -530,13 +532,15 @@ export default class DatasetCompliance extends Component {
/**
* A list of ui values and labels for review filter drop-down
* @type {Array<{value: string, label:string}>}
* @type {Array<{value: TagFilter, label:string}>}
* @memberof DatasetCompliance
*/
fieldReviewOptions: Array<{ value: DatasetCompliance['fieldReviewOption']; label: string }> = [
{ value: TagFilter.showAll, label: ' Show all fields' },
{ value: TagFilter.showReview, label: '? Show fields missing a data type' },
{ value: TagFilter.showSuggested, label: '! Show fields that need review' }
{ value: TagFilter.showSuggested, label: '! Show fields that need review' },
//@ts-ignore htmlSafe type definition is incorrect in @types/ember contains TODO: to return Handlebars.SafeStringStatic
{ value: TagFilter.showCompleted, label: <string>htmlSafe(`&#10003; Show completed fields`) }
];
didReceiveAttrs(): void {
@ -820,11 +824,12 @@ export default class DatasetCompliance extends Component {
[TagFilter.showAll]: identity,
[TagFilter.showReview]: tagsRequiringReview(complianceDataTypes, {
checkSuggestions: false,
suggestionConfidenceThreshold
suggestionConfidenceThreshold: 0
}),
[TagFilter.showSuggested]: arrayFilter((tag: IComplianceChangeSet) =>
tagSuggestionNeedsReview({ ...tag, suggestionConfidenceThreshold })
)
),
[TagFilter.showCompleted]: tagsPassingReview(complianceDataTypes)
})[get(this, 'fieldReviewOption')];
return changeSetFilter(changeSet);

View File

@ -29,6 +29,7 @@ import { IDatasetColumn } from 'wherehows-web/typings/api/datasets/columns';
import { ComplianceFieldIdValue } from 'wherehows-web/constants/datasets/compliance';
import { isHighConfidenceSuggestion } from 'wherehows-web/utils/datasets/compliance-suggestions';
import { validateRegExp } from 'wherehows-web/utils/validators/regexp';
import { not } from 'wherehows-web/utils/helpers/functions';
/**
* Defines a map of values for the compliance policy on a dataset
@ -63,7 +64,8 @@ const changeSetReviewableAttributeTriggers =
enum TagFilter {
showAll = 'show-all',
showReview = 'show-review',
showSuggested = 'show-suggested'
showSuggested = 'show-suggested',
showCompleted = 'show-completed'
}
/**
@ -406,6 +408,18 @@ const singleTagsInChangeSet = (
const tagsRequiringReview = (complianceDataTypes: Array<IComplianceDataType>, options: IComplianceTagReviewOptions) =>
arrayFilter<IComplianceChangeSet>(tagNeedsReview(complianceDataTypes, options));
/**
* Takes a list of compliance data types to check if a tag is an idType as part of reviewable fields check, then filters
* out tags that are not reviewable
* @param {Array<IComplianceDataType>} complianceDataTypes list of IComplianceDataType objects
* @param {IComplianceTagReviewOptions} [options={ checkSuggestions: true, suggestionConfidenceThreshold: 0 }]
* @returns (complianceDataTypes: IComplianceDataType[], options?: IComplianceTagReviewOptions) => (array: IComplianceChangeSet[]) => IComplianceChangeSet[]
*/
const tagsPassingReview = (
complianceDataTypes: Array<IComplianceDataType>,
options: IComplianceTagReviewOptions = { checkSuggestions: true, suggestionConfidenceThreshold: 0 }
) => arrayFilter(not(tagNeedsReview(complianceDataTypes, options)));
/**
* Lists the tags for a specific identifier field that need to be reviewed
* @param {Array<IComplianceDataType>} complianceDataTypes
@ -677,6 +691,7 @@ export {
isTagIdType,
mergeComplianceEntitiesWithSuggestions,
tagsRequiringReview,
tagsPassingReview,
tagsHaveNoneType,
fieldTagsRequiringReview,
tagsHaveNoneAndNotNoneType,