mirror of
https://github.com/datahub-project/datahub.git
synced 2025-12-13 11:06:30 +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>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{dataset-owner-list owners=owners datasetName=model.nativeName}}
|
{{datasets/containers/dataset-owner-list urn=encodedUrn}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{#ivy-tabs selection=tabSelected as |tabs|}}
|
{{#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 {
|
interface IAvatar {
|
||||||
imageUrl: string;
|
imageUrl: string;
|
||||||
email: null | string;
|
email?: null | string;
|
||||||
// Handle for the avatar
|
// Handle for the avatar
|
||||||
userName: string;
|
userName?: string;
|
||||||
name: string;
|
name?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export { IAvatar };
|
export { IAvatar };
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user