diff options
author | Stas Vilchik <stas.vilchik@sonarsource.com> | 2017-09-05 11:00:00 +0200 |
---|---|---|
committer | Stas Vilchik <stas.vilchik@sonarsource.com> | 2017-09-11 11:28:29 +0200 |
commit | 71fec25c4056c1dcfe75769c2041b1d56a89a2e5 (patch) | |
tree | e640a76709b242652d3cc274a9d0a98f720ae768 /server/sonar-web/src/main/js/apps/projectsManagement/ProjectRow.tsx | |
parent | 0926670e79d919e0afa3f0a2e11f656bdcd05916 (diff) | |
download | sonarqube-71fec25c4056c1dcfe75769c2041b1d56a89a2e5.tar.gz sonarqube-71fec25c4056c1dcfe75769c2041b1d56a89a2e5.zip |
SONAR-9784 rewrite projects management page
Diffstat (limited to 'server/sonar-web/src/main/js/apps/projectsManagement/ProjectRow.tsx')
-rw-r--r-- | server/sonar-web/src/main/js/apps/projectsManagement/ProjectRow.tsx | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/server/sonar-web/src/main/js/apps/projectsManagement/ProjectRow.tsx b/server/sonar-web/src/main/js/apps/projectsManagement/ProjectRow.tsx new file mode 100644 index 00000000000..60f951dd32c --- /dev/null +++ b/server/sonar-web/src/main/js/apps/projectsManagement/ProjectRow.tsx @@ -0,0 +1,96 @@ +/* + * SonarQube + * Copyright (C) 2009-2016 SonarSource SA + * mailto:contact AT sonarsource DOT com + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +import * as React from 'react'; +import { Link } from 'react-router'; +import { Project, Visibility } from './utils'; +import PrivateBadge from '../../components/common/PrivateBadge'; +import Checkbox from '../../components/controls/Checkbox'; +import QualifierIcon from '../../components/shared/QualifierIcon'; +import { translate } from '../../helpers/l10n'; +import { getComponentPermissionsUrl } from '../../helpers/urls'; + +interface Props { + onApplyTemplateClick: (project: Project) => void; + onProjectCheck: (project: Project, checked: boolean) => void; + project: Project; + selected: boolean; +} + +export default class ProjectRow extends React.PureComponent<Props> { + handleProjectCheck = (checked: boolean) => { + this.props.onProjectCheck(this.props.project, checked); + }; + + handleApplyTemplateClick = (event: React.SyntheticEvent<HTMLAnchorElement>) => { + event.preventDefault(); + event.currentTarget.blur(); + this.props.onApplyTemplateClick(this.props.project); + }; + + render() { + const { project, selected } = this.props; + + return ( + <tr> + <td className="thin"> + <Checkbox checked={selected} onCheck={this.handleProjectCheck} /> + </td> + + <td className="nowrap"> + <Link + to={{ pathname: '/dashboard', query: { id: project.key } }} + className="link-with-icon"> + <QualifierIcon qualifier={project.qualifier} /> <span>{project.name}</span> + </Link> + </td> + + <td className="nowrap"> + <span className="note"> + {project.key} + </span> + </td> + + <td className="width-20"> + {project.visibility === Visibility.Private && <PrivateBadge />} + </td> + + <td className="thin nowrap"> + <div className="dropdown"> + <button className="dropdown-toggle" data-toggle="dropdown"> + {translate('actions')} <i className="icon-dropdown" /> + </button> + <ul className="dropdown-menu dropdown-menu-right"> + <li> + <Link to={getComponentPermissionsUrl(project.key)}> + {translate('edit_permissions')} + </Link> + </li> + <li> + <a className="js-apply-template" href="#" onClick={this.handleApplyTemplateClick}> + {translate('projects_role.apply_template')} + </a> + </li> + </ul> + </div> + </td> + </tr> + ); + } +} |