aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-web/src/main/js/apps/projectsManagement/ProjectRow.tsx
diff options
context:
space:
mode:
authorStas Vilchik <stas.vilchik@sonarsource.com>2017-09-05 11:00:00 +0200
committerStas Vilchik <stas.vilchik@sonarsource.com>2017-09-11 11:28:29 +0200
commit71fec25c4056c1dcfe75769c2041b1d56a89a2e5 (patch)
treee640a76709b242652d3cc274a9d0a98f720ae768 /server/sonar-web/src/main/js/apps/projectsManagement/ProjectRow.tsx
parent0926670e79d919e0afa3f0a2e11f656bdcd05916 (diff)
downloadsonarqube-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.tsx96
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>
+ );
+ }
+}