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/Projects.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/Projects.tsx')
-rw-r--r-- | server/sonar-web/src/main/js/apps/projectsManagement/Projects.tsx | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/server/sonar-web/src/main/js/apps/projectsManagement/Projects.tsx b/server/sonar-web/src/main/js/apps/projectsManagement/Projects.tsx new file mode 100644 index 00000000000..ff6264dce90 --- /dev/null +++ b/server/sonar-web/src/main/js/apps/projectsManagement/Projects.tsx @@ -0,0 +1,68 @@ +/* + * SonarQube + * Copyright (C) 2009-2017 SonarSource SA + * mailto:info 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 * as classNames from 'classnames'; +import ProjectRow from './ProjectRow'; +import { Project } from './utils'; +import ApplyTemplateView from '../permissions/project/views/ApplyTemplateView'; +import { Organization } from '../../app/types'; + +interface Props { + onProjectDeselected: (project: string) => void; + onProjectSelected: (project: string) => void; + organization: Organization; + projects: Project[]; + ready?: boolean; + selection: string[]; +} + +export default class Projects extends React.PureComponent<Props> { + onProjectCheck = (project: Project, checked: boolean) => { + if (checked) { + this.props.onProjectSelected(project.key); + } else { + this.props.onProjectDeselected(project.key); + } + }; + + onApplyTemplateClick = (project: Project) => { + new ApplyTemplateView({ project, organization: this.props.organization }).render(); + }; + + render() { + return ( + <table + className={classNames('data', 'zebra', { 'new-loading': !this.props.ready })} + id="projects-management-page-projects"> + <tbody> + {this.props.projects.map(project => + <ProjectRow + key={project.key} + onApplyTemplateClick={this.onApplyTemplateClick} + onProjectCheck={this.onProjectCheck} + project={project} + selected={this.props.selection.includes(project.key)} + /> + )} + </tbody> + </table> + ); + } +} |