mirror of
https://github.com/datahub-project/datahub.git
synced 2025-12-12 10:35:51 +00:00
creates dataset container for owner list. modifies typings for IAvatar interface
This commit is contained in:
parent
bf4a9a1f06
commit
8de05625a5
@ -0,0 +1,58 @@
|
||||
import Component from '@ember/component';
|
||||
import { get, set, computed } from '@ember/object';
|
||||
import ComputedProperty from '@ember/object/computed';
|
||||
import { IAvatar } from 'wherehows-web/typings/app/avatars';
|
||||
import { IOwner, IOwnerResponse } from 'wherehows-web/typings/api/datasets/owners';
|
||||
import { task } from 'ember-concurrency';
|
||||
import { readDatasetOwnersByUrn } from 'wherehows-web/utils/api/datasets/owners';
|
||||
import { arrayMap } from 'wherehows-web/utils/array';
|
||||
import { getAvatarProps } from 'wherehows-web/constants/avatars/avatars';
|
||||
|
||||
export default class DatasetOwnerListContainer extends Component {
|
||||
constructor() {
|
||||
super(...arguments);
|
||||
|
||||
this.owners || (this.owners = []);
|
||||
}
|
||||
|
||||
/**
|
||||
* Urn for the related dataset
|
||||
* @type {string}
|
||||
* @memberof DatasetOwnerListContainer
|
||||
*/
|
||||
urn: string;
|
||||
|
||||
/**
|
||||
* The owners for the dataset
|
||||
* @type {Array<IOwner>}
|
||||
* @memberof DatasetOwnerListContainer
|
||||
*/
|
||||
owners: Array<IOwner>;
|
||||
|
||||
/**
|
||||
* Lists the avatar objects based off the dataset owners
|
||||
* @type {ComputedProperty<Array<IAvatar>>}
|
||||
* @memberof DatasetOwnerListContainer
|
||||
*/
|
||||
avatars: ComputedProperty<Array<IAvatar>> = computed('owners', function(): Array<IAvatar> {
|
||||
return arrayMap(getAvatarProps)(get(this, 'owners'));
|
||||
});
|
||||
|
||||
didInsertElement() {
|
||||
get(this, 'getOwnersTask').perform();
|
||||
}
|
||||
|
||||
didUpdateAttrs() {
|
||||
get(this, 'getOwnersTask').perform();
|
||||
}
|
||||
|
||||
/**
|
||||
* Reads the owners for this dataset
|
||||
* @type {Task<Promise<Array<IOwnerResponse>>, () => TaskInstance<Promise<IOwnerResponse>>>}
|
||||
*/
|
||||
getOwnersTask = task(function*(this: DatasetOwnerListContainer): IterableIterator<Promise<IOwnerResponse>> {
|
||||
const { owners = [] }: IOwnerResponse = yield readDatasetOwnersByUrn(get(this, 'urn'));
|
||||
|
||||
set(this, 'owners', owners);
|
||||
}).restartable();
|
||||
}
|
||||
@ -0,0 +1 @@
|
||||
{{avatars/stacked-avatars-list avatars=avatars}}
|
||||
@ -46,7 +46,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{dataset-owner-list owners=owners datasetName=model.nativeName}}
|
||||
{{datasets/containers/dataset-owner-list urn=encodedUrn}}
|
||||
</div>
|
||||
|
||||
{{#ivy-tabs selection=tabSelected as |tabs|}}
|
||||
|
||||
6
wherehows-web/app/typings/app/avatars.d.ts
vendored
6
wherehows-web/app/typings/app/avatars.d.ts
vendored
@ -4,10 +4,10 @@
|
||||
*/
|
||||
interface IAvatar {
|
||||
imageUrl: string;
|
||||
email: null | string;
|
||||
email?: null | string;
|
||||
// Handle for the avatar
|
||||
userName: string;
|
||||
name: string;
|
||||
userName?: string;
|
||||
name?: string;
|
||||
}
|
||||
|
||||
export { IAvatar };
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user