diff --git a/wherehows-web/app/components/browser/browser-rail.ts b/wherehows-web/app/components/browser/browser-rail.ts deleted file mode 100644 index d6b9cca646..0000000000 --- a/wherehows-web/app/components/browser/browser-rail.ts +++ /dev/null @@ -1,2 +0,0 @@ -import Component from '@ember/component'; -export default class BrowserRail extends Component {} diff --git a/wherehows-web/app/components/browser/browser-summary.ts b/wherehows-web/app/components/browser/browser-summary.ts deleted file mode 100644 index a1bf8ba9fb..0000000000 --- a/wherehows-web/app/components/browser/browser-summary.ts +++ /dev/null @@ -1,2 +0,0 @@ -import Component from '@ember/component'; -export default class BrowserSummary extends Component {} diff --git a/wherehows-web/app/components/browser/browser-viewport.ts b/wherehows-web/app/components/browser/browser-viewport.ts deleted file mode 100644 index abf31e88e1..0000000000 --- a/wherehows-web/app/components/browser/browser-viewport.ts +++ /dev/null @@ -1,17 +0,0 @@ -import Component from '@ember/component'; -import { action } from '@ember-decorators/object'; - -export default class BrowserViewport extends Component { - /** - * Closure action to request more entities - */ - getNextEntities: () => void; - - /** - * Handles the request to fetch more entities - */ - @action - loadMoreEntities() { - this.getNextEntities(); - } -} diff --git a/wherehows-web/app/components/browser/containers/browser-rail.ts b/wherehows-web/app/components/browser/containers/browser-rail.ts deleted file mode 100644 index abbd858fd5..0000000000 --- a/wherehows-web/app/components/browser/containers/browser-rail.ts +++ /dev/null @@ -1,107 +0,0 @@ -import Component from '@ember/component'; -import { get, set } from '@ember/object'; -import { alias } from '@ember/object/computed'; -import { task } from 'ember-concurrency'; -import { DatasetPlatform, nodeToQueryParams } from 'wherehows-web/constants'; -import { IBrowserRouteParams } from 'wherehows-web/routes/browse/entity'; -import { readPlatforms } from 'wherehows-web/utils/api/platforms/platform'; -import { arrayMap } from 'wherehows-web/utils/array'; -import { IReadDatasetsOptionBag } from 'wherehows-web/typings/api/datasets/dataset'; -import { isDatasetIdentifier, sanitizePlatformNodeString } from 'wherehows-web/utils/validators/platform'; -import { buildLiUrn } from 'wherehows-web/utils/validators/urn'; - -/** - * Describes a node with parameters used by dynamic-link component to create links to items listed in the rail - * @interface IRailNode - */ -interface IRailNode { - title: string; - text: string; - route: 'browse.entity' | 'datasets.dataset'; - model: IBrowserRouteParams['entity']; - queryParams?: Partial; -} - -/** - * Given a platform and entity, returns a closure function that maps each node to a - * list of IRailNode - * @param {DatasetPlatform} platform - * @param {IBrowserRouteParams.entity} entity - * @returns {(array: string[]) => IRailNode[]} - */ -export const mapNodeToRoute = ( - platform: DatasetPlatform, - entity: IBrowserRouteParams['entity'] -): ((array: string[]) => IRailNode[]) => - arrayMap((node: string): IRailNode => { - //FIXME: measure perf, and see if sanitize step can be performed conditionally for list, in a Schwartzian transform instead - const sanitizedString = sanitizePlatformNodeString(node); - const baseProps = { - title: sanitizedString, - text: sanitizedString - }; - - // If node is a dataset identifier, then create link to jump to dataset - if (isDatasetIdentifier(node)) { - return { - ...baseProps, - route: 'datasets.dataset', - model: buildLiUrn(platform, node) - }; - } - - return { - ...baseProps, - route: 'browse.entity', - model: entity, - queryParams: nodeToQueryParams({ platform, node }) - }; - }); - -export default class BrowserRail extends Component { - /** - * Passed in parameters containing route or query parameters values to be used in request - * @type {IBrowserRouteParams} - * @memberof BrowserRail - */ - params: IBrowserRouteParams; - - /** - * Text to be displayed at the top of the rail - * @type {string} - */ - header = alias('params.platform'); - - /** - * Maintains a list the nodes platforms or prefixes available in the selected entity - * @type {Array} - * @memberof BrowserRail - */ - nodes: Array = []; - - didUpdateAttrs() { - this._super(...arguments); - get(this, 'getNodesTask').perform(); - } - - didInsertElement() { - this._super(...arguments); - get(this, 'getNodesTask').perform(); - } - - /** - * Gets the nodes: platforms, or prefixes for the selected entity - * @type {TaskProperty> & {perform: (a?: {} | undefined) => TaskInstance>}} - * @memberof BrowserRail - */ - getNodesTask = task(function*( - this: BrowserRail - ): IterableIterator> | Promise>> { - const { prefix, platform, entity } = get(this, 'params'); - const nodes: Array = mapNodeToRoute(platform, entity)( - yield readPlatforms({ platform, prefix }) - ); - - set(this, 'nodes', nodes); - }).restartable(); -} diff --git a/wherehows-web/app/components/browser/containers/browser-summary.ts b/wherehows-web/app/components/browser/containers/browser-summary.ts deleted file mode 100644 index eb30a65665..0000000000 --- a/wherehows-web/app/components/browser/containers/browser-summary.ts +++ /dev/null @@ -1,88 +0,0 @@ -import Component from '@ember/component'; -import { get, setProperties } from '@ember/object'; -import { task, TaskInstance } from 'ember-concurrency'; -import { IBrowserRouteParams } from 'wherehows-web/routes/browse/entity'; -import { readDatasetsCount } from 'wherehows-web/utils/api/datasets/dataset'; - -// Describes the index signature for the metadata object used in the browser summary component -type IBrowserMetadata = { - [K in IBrowserRouteParams['entity']]: { - count: number; - currentPlatform: string; - currentPrefix: string; - } -}; - -// Describes the index signature for the strategy pattern in the getCountsTask -type ICountTaskStrategy = { [K in IBrowserRouteParams['entity']]: TaskInstance> }; - -export default class BrowserSummary extends Component { - /** - * Passed in parameters containing route or query parameters values to be used in request - * @type {IBrowserRouteParams} - * @memberof BrowserSummary - */ - params: IBrowserRouteParams; - - /** - * Lists the types of entities supported - * @type {ReadonlyArray} - * @memberof BrowserSummary - */ - entities: ReadonlyArray = ['datasets', 'metrics', 'flows']; - - /** - * Contains the properties for each entity to displayed UI metadata - * @type {IBrowserMetadata} - * @memberof BrowserSummary - */ - metadata: IBrowserMetadata = this.entities.reduce( - (metadata, entity) => ({ - ...metadata, - [entity]: { count: 0, currentPlatform: '', currentPrefix: '' } - }), - {} - ); - - didUpdateAttrs() { - this._super(...arguments); - get(this, 'getCountsTask').perform(); - } - - didInsertElement() { - this._super(...arguments); - get(this, 'getCountsTask').perform(); - } - - /** - * Parent task to retrieve counts for each IBrowserParams entity type as needed - * @type {TaskProperty>> & {perform: (a?: {} | undefined) => TaskInstance>>}} - * @memberof BrowserSummary - */ - getCountsTask = task(function*(this: BrowserSummary): IterableIterator>> { - const { prefix, platform, entity } = get(this, 'params'); - - return ({ - datasets: yield get(this, 'getDatasetsCountTask').perform(platform, prefix) - })[entity]; - }); - - /** - * Gets and sets the dataset count - * @type {TaskProperty> & {perform: (a1: string, a2: string) => TaskInstance>}} - * @memberof BrowserSummary - */ - getDatasetsCountTask = task(function*( - this: BrowserSummary, - platform: string, - prefix: string - ): IterableIterator> { - const entityMetadata = get(get(this, 'metadata'), 'datasets'); - - setProperties(entityMetadata, { - count: yield readDatasetsCount({ prefix, platform }), - currentPlatform: platform, - currentPrefix: prefix - }); - }); -} diff --git a/wherehows-web/app/components/browser/containers/browser-viewport.ts b/wherehows-web/app/components/browser/containers/browser-viewport.ts deleted file mode 100644 index ed14eed253..0000000000 --- a/wherehows-web/app/components/browser/containers/browser-viewport.ts +++ /dev/null @@ -1,157 +0,0 @@ -import Component from '@ember/component'; -import { get, setProperties, computed, getProperties } from '@ember/object'; -import { task, TaskInstance } from 'ember-concurrency'; -import { IBrowserRouteParams } from 'wherehows-web/routes/browse/entity'; -import { IDatasetsGetResponse, IDatasetView } from 'wherehows-web/typings/api/datasets/dataset'; -import { readDatasets } from 'wherehows-web/utils/api/datasets/dataset'; -import { action } from '@ember-decorators/object'; -import ComputedProperty from '@ember/object/computed'; - -// Describes the index signature for strategy pattern in the getEntityDataTask -type IGetEntityTaskStrategy = { [K in IBrowserRouteParams['entity']]: TaskInstance> }; - -// Describes the operations that can be performed on an entity list -type listOp = 'push' | 'set'; - -export default class BrowserViewport extends Component { - /** - * Passed in parameters containing route or query parameters values to be used in request - * @type {IBrowserRouteParams} - * @memberof BrowserViewport - */ - params: IBrowserRouteParams; - - /** - * Initial value for the entity being viewed - * @memberof BrowserViewport - */ - currentEntity: IBrowserRouteParams['entity'] = 'datasets'; - - /** - * Ember route for the entities being rendered - * @type {string} - * @memberof BrowserViewport - */ - entityRoute = ''; - - /** - * List of entities to be rendered in view - * @type {Array} - * @memberof BrowserViewport - */ - entities: Array = []; - - /** - * The total number of entities in the segment - * @type {number} - */ - total: number = 0; - - /** - * The number of entities to request at a time - * @type {number} - */ - count: number = 0; - - /** - * The position index in the list to begin requesting data from - * @type {number} - */ - start: number = 0; - - didUpdateAttrs() { - this._super(...arguments); - get(this, 'getEntityDataTask').perform(); - } - - didInsertElement() { - this._super(...arguments); - get(this, 'getEntityDataTask').perform(); - } - - /** - * Async request a list of datasets with a variable start point - * @type {TaskProperty> & {perform: (a1: "push" | "set" | undefined, a2: number) => TaskInstance>}} - * @memberof BrowserViewport - */ - getDatasetsTask = task(function*( - this: BrowserViewport, - op: listOp = 'set', - start: number - ): IterableIterator> { - const { prefix, platform, entity } = get(this, 'params'); - const response: IDatasetsGetResponse = yield readDatasets({ platform, prefix, start }); - const { total, count, elements } = response; - const entities = get(this, 'entities'); - // If new segment / data-source, replace all items rather than append - const listOp = op === 'set' ? [].setObjects : [].pushObjects; - - listOp.call(entities, elements); - - setProperties(this, { - total, - count, - currentEntity: entity, - entityRoute: `${entity}.${entity.slice(0, -1)}`, - start: entities.length - }); - - return response; - }).restartable(); - - /** - * Async requests for the list of entities and sets the value on class - * @type {TaskProperty> & {perform: (a?: number) => TaskInstance>}} - * @memberof BrowserViewport - */ - getEntityDataTask = task(function*( - this: BrowserViewport, - offset: number = 0 - ): IterableIterator>> { - const { entity } = get(this, 'params'); - - yield ({ - datasets: get(this, 'getDatasetsTask').perform('set', offset) - })[entity]; - }).restartable(); - - /** - * The max possible entities that can currently be requested up to this.count - * @type {ComputedProperty} - * @memberof BrowserViewport - */ - nextCountSize: ComputedProperty = computed('entities.length', function(this: BrowserViewport): number { - const { - entities: { length }, - total, - count - } = getProperties(this, ['entities', 'total', 'count']); - return Math.min(count, total - length); - }); - - /** - * The total number of items left that can be fetched - * @type {ComputedProperty} - * @memberof BrowserViewport - */ - remainingEntityCount: ComputedProperty = computed('entities.length', function(this: BrowserViewport): number { - const { - entities: { length }, - total - } = getProperties(this, ['entities', 'total']); - return total >= length ? total - length : 0; - }); - - /** - * Requests the next number of entities for the segment or data source - */ - @action - getNextEntities(this: BrowserViewport) { - const { remainingEntityCount, start } = getProperties(this, ['remainingEntityCount', 'start']); - - // Invoke task only if there are more entities that may be available - if (remainingEntityCount) { - get(this, 'getDatasetsTask').perform('push', start); - } - } -} diff --git a/wherehows-web/app/templates/components/browser/browser-rail.hbs b/wherehows-web/app/templates/components/browser/browser-rail.hbs deleted file mode 100644 index 2402068380..0000000000 --- a/wherehows-web/app/templates/components/browser/browser-rail.hbs +++ /dev/null @@ -1,16 +0,0 @@ -{{#search/filter-rail header=header as |rail|}} - - {{#if nodesTask.isRunning}} -
- {{pendulum-ellipsis-animation}} -
- {{else}} - - {{rail.links - links=nodes}} - - {{/if}} - -{{/search/filter-rail}} - -{{yield}} diff --git a/wherehows-web/app/templates/components/browser/browser-summary.hbs b/wherehows-web/app/templates/components/browser/browser-summary.hbs deleted file mode 100644 index f41e7261f7..0000000000 --- a/wherehows-web/app/templates/components/browser/browser-summary.hbs +++ /dev/null @@ -1,35 +0,0 @@ - diff --git a/wherehows-web/app/templates/components/browser/browser-viewport.hbs b/wherehows-web/app/templates/components/browser/browser-viewport.hbs deleted file mode 100644 index cd0844776f..0000000000 --- a/wherehows-web/app/templates/components/browser/browser-viewport.hbs +++ /dev/null @@ -1,125 +0,0 @@ -{{#if (eq currentEntity 'flows')}} - {{#dataset-table - fields=entities as |table|}} - {{#table.head as |head|}} - {{#head.column}} - Flow Group - {{/head.column}} - - {{#head.column}} - Flow Name - {{/head.column}} - - {{#head.column}} - Flow Level - {{/head.column}} - - {{#head.column}} - Job Count - {{/head.column}} - - {{#head.column}} - Creation Time - {{/head.column}} - - {{#head.column}} - Modified Time - {{/head.column}} - {{/table.head}} - - {{#table.body as |body|}} - {{#each - table.data as |flow|}} - {{#body.row as |row|}} - {{#row.cell}} - {{flow.group}} - {{/row.cell}} - - {{#row.cell}} - {{#link-to entityRoute flow.id (query-params name=flow.appCode)}} - {{flow.name}} - {{/link-to}} - {{/row.cell}} - - {{#row.cell}} - {{flow.level}} - {{/row.cell}} - - {{#row.cell}} - {{flow.jobCount}} - {{/row.cell}} - - {{#row.cell}} - {{moment-calendar flow.created sameElse="MMM Do YYYY, h:mm a"}} - {{/row.cell}} - - {{#row.cell}} - {{moment-calendar flow.modified sameElse="MMM Do YYYY, h:mm a"}} - {{/row.cell}} - {{/body.row}} - {{/each}} - {{/table.body}} - {{/dataset-table}} -{{else}} - - {{#infinite-scroller - use-document=true - class="browse-entities" - on-load-more=(action 'loadMoreEntities') as |scroller| - }} - - {{#each entities as |entity|}} - -
- {{#link-to entityRoute 'urn' (query-params urn=entity.uri)}} - - {{entity.nativeName}} - - {{/link-to}} - -
- {{#if entity.createdTime}} - - Created: - - - - {{moment-from-now entity.createdTime}} - - {{/if}} - - {{#if entity.modifiedTime}} - - Modified: - - - - {{moment-from-now entity.modifiedTime}} - - {{/if}} - - {{#if entity.removed}} - - REMOVED - - {{/if}} - - {{#if entity.deprecated}} - - DEPRECATED - - {{/if}} -
-
- - {{else}} - - {{empty-state - heading="No entities found" - subHead="Could not find any datasets in our records" - }} - - {{/each}} - - {{/infinite-scroller}} -{{/if}} diff --git a/wherehows-web/app/templates/components/browser/containers/browser-rail.hbs b/wherehows-web/app/templates/components/browser/containers/browser-rail.hbs deleted file mode 100644 index e0f52b763f..0000000000 --- a/wherehows-web/app/templates/components/browser/containers/browser-rail.hbs +++ /dev/null @@ -1 +0,0 @@ -{{browser/browser-rail nodes=nodes nodesTask=getNodesTask header=header}} diff --git a/wherehows-web/app/templates/components/browser/containers/browser-summary.hbs b/wherehows-web/app/templates/components/browser/containers/browser-summary.hbs deleted file mode 100644 index 7a5ef31808..0000000000 --- a/wherehows-web/app/templates/components/browser/containers/browser-summary.hbs +++ /dev/null @@ -1 +0,0 @@ -{{browser/browser-summary metadata=metadata datasetTask=getDatasetsCountTask}} diff --git a/wherehows-web/app/templates/components/browser/containers/browser-viewport.hbs b/wherehows-web/app/templates/components/browser/containers/browser-viewport.hbs deleted file mode 100644 index 3b942a7685..0000000000 --- a/wherehows-web/app/templates/components/browser/containers/browser-viewport.hbs +++ /dev/null @@ -1,40 +0,0 @@ -{{#if getEntityDataTask.isRunning}} - -
- {{pendulum-ellipsis-animation}} -
- -{{else}} - {{#if getEntityDataTask.last.isError}} - - {{empty-state - heading="An error occurred getting entities" - subHead=getEntityDataTask.last.error - }} - - {{else}} - {{browser/browser-viewport - currentEntity=currentEntity - entities=entities - entityRoute=entityRoute - getNextEntities=(action 'getNextEntities') - }} - - {{#if remainingEntityCount}} - {{#if getDatasetsTask.isRunning}} - -
-

Loading {{nextCountSize}} more of {{total}}

- {{pendulum-ellipsis-animation}} -
- - {{else}} - -
-

Showing {{entities.length}} datasets of {{total}}

-
- - {{/if}} - {{/if}} - {{/if}} -{{/if}}