import {RouteComponentProps} from 'react-router';
import moment from 'moment';

import ResultGrid from 'sentry/components/resultGrid';
import {t} from 'sentry/locale';
import {Organization} from 'sentry/types';

type Row = {
  dateCreated: string;
  name: string;
  organization: Organization;
  slug: string;
  status: string;
};

type Props = RouteComponentProps<{}, {}>;

const getRow = (row: Row) => [
  <td key="name">
    <strong>
      <a href={`/${row.organization.slug}/${row.slug}/`}>{row.name}</a>
    </strong>
    <br />
    <small>{row.organization.name}</small>
  </td>,
  <td key="status" style={{textAlign: 'center'}}>
    {row.status}
  </td>,
  <td key="dateCreated" style={{textAlign: 'right'}}>
    {moment(row.dateCreated).format('ll')}
  </td>,
];

function AdminProjects(props: Props) {
  const columns = [
    <th key="name">Project</th>,
    <th key="status" style={{width: 150, textAlign: 'center'}}>
      Status
    </th>,
    <th key="dateCreated" style={{width: 200, textAlign: 'right'}}>
      Created
    </th>,
  ];

  return (
    <div>
      <h3>{t('Projects')}</h3>
      <ResultGrid
        path="/manage/projects/"
        endpoint="/projects/?show=all"
        method="GET"
        columns={columns}
        columnsForRow={getRow}
        hasSearch
        filters={{
          status: {
            name: 'Status',
            options: [
              ['active', 'Active'],
              ['deleted', 'Deleted'],
            ],
          },
        }}
        sortOptions={[['date', 'Date Created']]}
        defaultSort="date"
        {...props}
      />
    </div>
  );
}

export default AdminProjects;