diff options
author | Stas Vilchik <vilchiks@gmail.com> | 2016-11-09 09:41:59 +0100 |
---|---|---|
committer | Stas Vilchik <vilchiks@gmail.com> | 2016-11-09 15:51:40 +0100 |
commit | f662a342d352376b9cc6854e20c58b205f184e45 (patch) | |
tree | e19b88ef04079f40044ec990c0bc8d7d37d5db87 /server/sonar-web/src/main/js/apps/projects | |
parent | 26f5f414b64fd9d3963c859da7c8f14616ddb759 (diff) | |
download | sonarqube-f662a342d352376b9cc6854e20c58b205f184e45.tar.gz sonarqube-f662a342d352376b9cc6854e20c58b205f184e45.zip |
SONAR-8362 Display information of favorite projects
Diffstat (limited to 'server/sonar-web/src/main/js/apps/projects')
4 files changed, 24 insertions, 26 deletions
diff --git a/server/sonar-web/src/main/js/apps/projects/components/ProjectCard.js b/server/sonar-web/src/main/js/apps/projects/components/ProjectCard.js index 9b9ec7fc11f..79a4b28d9f6 100644 --- a/server/sonar-web/src/main/js/apps/projects/components/ProjectCard.js +++ b/server/sonar-web/src/main/js/apps/projects/components/ProjectCard.js @@ -21,6 +21,7 @@ import React from 'react'; import classNames from 'classnames'; import ProjectCardQualityGate from './ProjectCardQualityGate'; import ProjectCardMeasures from './ProjectCardMeasures'; +import FavoriteContainer from '../../../components/controls/FavoriteContainer'; import { getComponentUrl } from '../../../helpers/urls'; export default class ProjectCard extends React.Component { @@ -44,9 +45,14 @@ export default class ProjectCard extends React.Component { <ProjectCardQualityGate status={this.props.measures['alert_status']}/> </div> )} - <h2 className="project-card-name"> - <a className="link-base-color" href={getComponentUrl(project.key)}>{project.name}</a> - </h2> + <div className="boxed-group-header"> + {project.isFavorite != null && ( + <FavoriteContainer className="spacer-right" componentKey={project.key}/> + )} + <h2 className="project-card-name"> + <a className="link-base-color" href={getComponentUrl(project.key)}>{project.name}</a> + </h2> + </div> <div className="boxed-group-inner"> <ProjectCardMeasures measures={this.props.measures}/> </div> diff --git a/server/sonar-web/src/main/js/apps/projects/components/ProjectCardQualityGate.js b/server/sonar-web/src/main/js/apps/projects/components/ProjectCardQualityGate.js index 1f60437b534..0b81e2ceb8a 100644 --- a/server/sonar-web/src/main/js/apps/projects/components/ProjectCardQualityGate.js +++ b/server/sonar-web/src/main/js/apps/projects/components/ProjectCardQualityGate.js @@ -34,7 +34,7 @@ export default class ProjectCardQualityGate extends React.Component { } return ( - <div className="project-card-measure"> + <div className="project-card-measure project-card-quality-gate"> <div className="project-card-measure-inner"> <span className="small spacer-right"> {translate('overview.quality_gate')} diff --git a/server/sonar-web/src/main/js/apps/projects/store/actions.js b/server/sonar-web/src/main/js/apps/projects/store/actions.js index 9582b7a7dee..922400ead59 100644 --- a/server/sonar-web/src/main/js/apps/projects/store/actions.js +++ b/server/sonar-web/src/main/js/apps/projects/store/actions.js @@ -28,8 +28,7 @@ import { getProjectsAppState } from '../../../app/store/rootReducer'; import { getMeasuresForProjects } from '../../../api/measures'; import { receiveComponentsMeasures } from '../../../app/store/measures/actions'; import { convertToFilter } from './utils'; -import { getFavorites } from '../../../api/favorites'; -import { receiveFavorites } from '../../../app/store/favorites/actions'; +import { receiveFavorites } from '../../../app/store/favorites/duck'; const PAGE_SIZE = 50; @@ -84,9 +83,17 @@ const fetchProjectMeasures = projects => dispatch => { return getMeasuresForProjects(projectKeys, METRICS).then(onReceiveMeasures(dispatch), onFail(dispatch)); }; +const handleFavorites = (dispatch, projects) => { + const favorites = projects.filter(project => project.isFavorite); + if (favorites.length) { + dispatch(receiveFavorites(favorites)); + } +}; + const onReceiveProjects = dispatch => response => { dispatch(receiveComponents(response.components)); dispatch(receiveProjects(response.components, response.facets)); + handleFavorites(dispatch, response.components); dispatch(fetchProjectMeasures(response.components)).then(() => { dispatch(updateState({ loading: false })); }); @@ -99,6 +106,7 @@ const onReceiveProjects = dispatch => response => { const onReceiveMoreProjects = dispatch => response => { dispatch(receiveComponents(response.components)); dispatch(receiveMoreProjects(response.components)); + handleFavorites(dispatch, response.components); dispatch(fetchProjectMeasures(response.components)).then(() => { dispatch(updateState({ loading: false })); }); @@ -126,23 +134,3 @@ export const fetchMoreProjects = query => (dispatch, getState) => { } return searchProjects(data).then(onReceiveMoreProjects(dispatch), onFail(dispatch)); }; - -export const fetchFavoriteProjects = () => dispatch => { - dispatch(updateState({ loading: true })); - - return getFavorites().then(favorites => { - dispatch(receiveFavorites(favorites)); - - const projects = favorites.filter(component => component.qualifier === 'TRK'); - - dispatch(receiveComponents(projects)); - dispatch(receiveProjects(projects, [])); - dispatch(fetchProjectMeasures(projects)).then(() => { - dispatch(updateState({ loading: false })); - }); - dispatch(updateState({ - total: projects.length, - pageIndex: 1 - })); - }, onFail(dispatch)); -}; diff --git a/server/sonar-web/src/main/js/apps/projects/styles.css b/server/sonar-web/src/main/js/apps/projects/styles.css index a71aceb70d2..d9ac7cbd9c5 100644 --- a/server/sonar-web/src/main/js/apps/projects/styles.css +++ b/server/sonar-web/src/main/js/apps/projects/styles.css @@ -80,6 +80,10 @@ font-size: 12px; } +.project-card-quality-gate { + line-height: 24px; +} + .projects-facet-header { padding-top: 10px; padding-bottom: 10px; |