diff --git a/scm-ui/public/locales/en/repos.json b/scm-ui/public/locales/en/repos.json index e28d9bb23d..76deba1c8a 100644 --- a/scm-ui/public/locales/en/repos.json +++ b/scm-ui/public/locales/en/repos.json @@ -3,7 +3,9 @@ "name": "Name", "type": "Type", "contact": "Contact", - "description": "Description" + "description": "Description", + "creationDate": "Creation Date", + "lastModified": "Last Modified" }, "validation": { "name-invalid": "The repository name is invalid", @@ -16,7 +18,9 @@ }, "repository-root": { "error-title": "Error", - "error-subtitle": "Unknown repository error" + "error-subtitle": "Unknown repository error", + "actions-label": "Actions", + "back-label": "Back" }, "create": { "title": "Create Repository", diff --git a/scm-ui/public/locales/en/users.json b/scm-ui/public/locales/en/users.json index c0b55adf7e..f1d71d8efc 100644 --- a/scm-ui/public/locales/en/users.json +++ b/scm-ui/public/locales/en/users.json @@ -5,7 +5,10 @@ "mail": "E-Mail", "password": "Password", "admin": "Admin", - "active": "Active" + "active": "Active", + "type": "Type", + "creationDate": "Creation Date", + "lastModified": "Last Modified" }, "users": { "title": "Users", diff --git a/scm-ui/src/components/MailLink.js b/scm-ui/src/components/MailLink.js new file mode 100644 index 0000000000..7d009cde85 --- /dev/null +++ b/scm-ui/src/components/MailLink.js @@ -0,0 +1,18 @@ +// @flow +import React from "react"; + +type Props = { + address?: string +}; + +class MailLink extends React.Component { + render() { + const { address } = this.props; + if (!address) { + return null; + } + return {address}; + } +} + +export default MailLink; diff --git a/scm-ui/src/repos/components/RepositoryDetails.js b/scm-ui/src/repos/components/RepositoryDetails.js index df7fd5083d..83a4f164aa 100644 --- a/scm-ui/src/repos/components/RepositoryDetails.js +++ b/scm-ui/src/repos/components/RepositoryDetails.js @@ -1,16 +1,56 @@ //@flow import React from "react"; -import type {Repository} from '../types/Repositories'; +import { translate } from "react-i18next"; +import type { Repository } from "../types/Repositories"; +import MailLink from "../../components/MailLink"; +import DateFromNow from "../../components/DateFromNow"; type Props = { - repository: Repository + repository: Repository, + // context props + t: string => string }; class RepositoryDetails extends React.Component { render() { - const { repository } = this.props; - return
{repository.description}
; + const { repository, t } = this.props; + return ( + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{t("repository.name")}{repository.name}
{t("repository.type")}{repository.type}
{t("repository.contact")} + +
{t("repository.description")}{repository.description}
{t("repository.creationDate")} + +
{t("repository.lastModified")} + +
+ ); } } -export default RepositoryDetails; +export default translate("repos")(RepositoryDetails); diff --git a/scm-ui/src/repos/containers/RepositoryRoot.js b/scm-ui/src/repos/containers/RepositoryRoot.js index 65de6b2fa5..ccc75ad05c 100644 --- a/scm-ui/src/repos/containers/RepositoryRoot.js +++ b/scm-ui/src/repos/containers/RepositoryRoot.js @@ -1,15 +1,20 @@ //@flow import React from "react"; -import {fetchRepo, getFetchRepoFailure, getRepository, isFetchRepoPending} from '../modules/repos'; +import { + fetchRepo, + getFetchRepoFailure, + getRepository, + isFetchRepoPending +} from "../modules/repos"; import { connect } from "react-redux"; -import {Route} from "react-router-dom" -import type {Repository} from '../types/Repositories'; -import {Page} from '../../components/layout'; -import Loading from '../../components/Loading'; -import ErrorPage from '../../components/ErrorPage'; +import { Route } from "react-router-dom"; +import type { Repository } from "../types/Repositories"; +import { Page } from "../../components/layout"; +import Loading from "../../components/Loading"; +import ErrorPage from "../../components/ErrorPage"; import { translate } from "react-i18next"; -import {Navigation} from '../../components/navigation'; -import RepositoryDetails from '../components/RepositoryDetails'; +import { Navigation, NavLink, Section } from "../../components/navigation"; +import RepositoryDetails from "../components/RepositoryDetails"; type Props = { namespace: string, @@ -44,7 +49,6 @@ class RepositoryRoot extends React.Component { return this.stripEndingSlash(this.props.match.url); }; - render() { const { loading, error, repository, t } = this.props; @@ -59,27 +63,34 @@ class RepositoryRoot extends React.Component { } if (!repository || loading) { - return + return ; } const url = this.matchedUrl(); - return -
-
- } /> + return ( + +
+
+ } + /> +
+
+ +
+ +
+
+
-
- - - -
-
- + + ); } } - const mapStateToProps = (state, ownProps) => { const { namespace, name } = ownProps.match.params; const repository = getRepository(state, namespace, name); @@ -96,8 +107,8 @@ const mapStateToProps = (state, ownProps) => { const mapDispatchToProps = dispatch => { return { - fetchRepo : (namespace: string, name: string) => { - dispatch(fetchRepo(namespace, name)) + fetchRepo: (namespace: string, name: string) => { + dispatch(fetchRepo(namespace, name)); } }; }; diff --git a/scm-ui/src/users/components/table/Details.js b/scm-ui/src/users/components/table/Details.js index 269df9db10..c2b90b0f2e 100644 --- a/scm-ui/src/users/components/table/Details.js +++ b/scm-ui/src/users/components/table/Details.js @@ -3,6 +3,8 @@ import React from "react"; import type { User } from "../../types/User"; import { translate } from "react-i18next"; import { Checkbox } from "../../../components/forms"; +import MailLink from "../../../components/MailLink"; +import DateFromNow from "../../../components/DateFromNow"; type Props = { user: User, @@ -25,7 +27,9 @@ class Details extends React.Component { {t("user.mail")} - {user.mail} + + + {t("user.admin")} @@ -39,6 +43,22 @@ class Details extends React.Component { + + {t("user.type")} + {user.type} + + + {t("user.creationDate")} + + + + + + {t("user.lastModified")} + + + + ); diff --git a/scm-ui/src/users/types/User.js b/scm-ui/src/users/types/User.js index b113f7f795..58be91e0ba 100644 --- a/scm-ui/src/users/types/User.js +++ b/scm-ui/src/users/types/User.js @@ -8,5 +8,8 @@ export type User = { password: string, admin: boolean, active: boolean, + type?: string, + creationDate?: string, + lastModified?: string, _links: Links };