diff --git a/x-pack/plugins/code/public/actions/status.ts b/x-pack/plugins/code/public/actions/status.ts index 61f07778ade7d..4a29d0d772664 100644 --- a/x-pack/plugins/code/public/actions/status.ts +++ b/x-pack/plugins/code/public/actions/status.ts @@ -5,6 +5,7 @@ */ import { createAction } from 'redux-actions'; +import { RepoStatus } from '../reducers'; export const loadStatus = createAction('LOAD STATUS'); export const loadStatusSuccess = createAction('LOAD STATUS SUCCESS'); @@ -18,12 +19,6 @@ export const loadRepo = createAction('LOAD REPO'); export const loadRepoSuccess = createAction('LOAD REPO SUCCESS'); export const loadRepoFailed = createAction('LOAD REPO FAILED'); -export interface RepoProgress { - repoUri: string; - progress: number; - cloneProgress?: any; -} - -export const updateCloneProgress = createAction('UPDATE CLONE PROGRESS'); -export const updateIndexProgress = createAction('UPDATE INDEX PROGRESS'); -export const updateDeleteProgress = createAction('UPDATE DELETE PROGRESS'); +export const updateCloneProgress = createAction('UPDATE CLONE PROGRESS'); +export const updateIndexProgress = createAction('UPDATE INDEX PROGRESS'); +export const updateDeleteProgress = createAction('UPDATE DELETE PROGRESS'); diff --git a/x-pack/plugins/code/public/components/admin_page/project_item.tsx b/x-pack/plugins/code/public/components/admin_page/project_item.tsx index 1345156308ca1..8937b612b5c1b 100644 --- a/x-pack/plugins/code/public/components/admin_page/project_item.tsx +++ b/x-pack/plugins/code/public/components/admin_page/project_item.tsx @@ -53,7 +53,7 @@ class CodeProjectItem extends React.PureComponent<{ }> { public render() { const { project, status, enableManagement } = this.props; - const { name, org, nextUpdateTimestamp, uri, url } = project; + const { name, org, uri, url } = project; const onClickDelete = () => this.props.deleteRepo && this.props.deleteRepo(uri); const onClickIndex = () => this.props.indexRepo && this.props.indexRepo(uri); const onClickSettings = () => this.props.openSettings && this.props.openSettings(uri, url); @@ -65,7 +65,7 @@ class CodeProjectItem extends React.PureComponent<{ } else if (status.state === RepoState.READY) { footer = (
- LAST UPDATED: {moment(nextUpdateTimestamp).fromNow()} + LAST UPDATED: {moment(status.timestamp).fromNow()}
); } else if (status.state === RepoState.DELETING) { diff --git a/x-pack/plugins/code/public/components/admin_page/project_tab.tsx b/x-pack/plugins/code/public/components/admin_page/project_tab.tsx index 543ee2fcefe64..e36af37862789 100644 --- a/x-pack/plugins/code/public/components/admin_page/project_tab.tsx +++ b/x-pack/plugins/code/public/components/admin_page/project_tab.tsx @@ -25,12 +25,13 @@ import { EuiText, EuiTitle, } from '@elastic/eui'; +import moment from 'moment'; import React, { ChangeEvent } from 'react'; import { connect } from 'react-redux'; import styled from 'styled-components'; import { Repository } from '../../../model'; import { importRepo } from '../../actions'; -import { RootState } from '../../reducers'; +import { RepoStatus, RootState } from '../../reducers'; import { CallOutType } from '../../reducers/repository'; import { ProjectItem } from './project_item'; import { ProjectSettings } from './project_settings'; @@ -47,14 +48,21 @@ enum SortOptionsValue { recently_added = 'recently_added', } -const sortFunctions: { [k: string]: (a: Repository, b: Repository) => number } = { - [SortOptionsValue.alphabetical_asc]: (a: Repository, b: Repository) => - a.name!.localeCompare(b.name!), - [SortOptionsValue.alphabetical_desc]: (a: Repository, b: Repository) => - b.name!.localeCompare(a.name!), - [SortOptionsValue.updated_asc]: () => -1, - [SortOptionsValue.updated_desc]: () => -1, - [SortOptionsValue.recently_added]: () => -1, +const sortFunctionsFactory = (status: { [key: string]: RepoStatus }) => { + const sortFunctions: { [k: string]: (a: Repository, b: Repository) => number } = { + [SortOptionsValue.alphabetical_asc]: (a: Repository, b: Repository) => + a.name!.localeCompare(b.name!), + [SortOptionsValue.alphabetical_desc]: (a: Repository, b: Repository) => + b.name!.localeCompare(a.name!), + [SortOptionsValue.updated_asc]: (a: Repository, b: Repository) => + moment(status[b.uri].timestamp).diff(moment(status[a.uri].timestamp)), + [SortOptionsValue.updated_desc]: (a: Repository, b: Repository) => + moment(status[a.uri].timestamp).diff(moment(status[b.uri].timestamp)), + [SortOptionsValue.recently_added]: () => { + return -1; + }, + }; + return sortFunctions; }; const sortOptions = [ @@ -62,12 +70,12 @@ const sortOptions = [ { value: SortOptionsValue.alphabetical_desc, inputDisplay: 'Z to A' }, { value: SortOptionsValue.updated_asc, inputDisplay: 'Last Updated ASC' }, { value: SortOptionsValue.updated_desc, inputDisplay: 'Last Updated DESC' }, - { value: SortOptionsValue.recently_added, inputDisplay: 'Recently Added' }, + // { value: SortOptionsValue.recently_added, inputDisplay: 'Recently Added' }, ]; interface Props { projects: Repository[]; - status: any; + status: { [key: string]: RepoStatus }; isAdmin: boolean; importRepo: (repoUrl: string) => void; importLoading: boolean; @@ -173,7 +181,7 @@ class CodeProjectTab extends React.PureComponent { const projectsCount = projects.length; const modal = this.state.showImportProjectModal && this.renderImportModal(); - const sortedProjects = projects.sort(sortFunctions[this.state.sortOption]); + const sortedProjects = projects.sort(sortFunctionsFactory(status)[this.state.sortOption]); const repoList = sortedProjects.map((repo: Repository) => (