]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-8300 open all facets
authorStas Vilchik <vilchiks@gmail.com>
Thu, 3 Nov 2016 15:04:56 +0000 (16:04 +0100)
committerStas Vilchik <vilchiks@gmail.com>
Fri, 4 Nov 2016 08:08:46 +0000 (09:08 +0100)
server/sonar-web/src/main/js/app/store/rootReducer.js
server/sonar-web/src/main/js/apps/projects/components/App.js
server/sonar-web/src/main/js/apps/projects/components/PageSidebar.js
server/sonar-web/src/main/js/apps/projects/components/PageSidebarContainer.js [deleted file]
server/sonar-web/src/main/js/apps/projects/filters/Filter.js
server/sonar-web/src/main/js/apps/projects/filters/FilterContainer.js
server/sonar-web/src/main/js/apps/projects/store/filters/reducer.js [deleted file]
server/sonar-web/src/main/js/apps/projects/store/filters/statuses/actions.js [deleted file]
server/sonar-web/src/main/js/apps/projects/store/filters/statuses/reducer.js [deleted file]
server/sonar-web/src/main/js/apps/projects/store/reducer.js

index 202a056257912be8fb51629ab45399ac62ecf6e8..a46042491fa238d3eb9b2661bbc0850faf4c6d2f 100644 (file)
@@ -81,10 +81,6 @@ export const getProjectsAppState = state => (
     fromProjectsApp.getState(state.projectsApp)
 );
 
-export const getProjectsAppFilterStatus = (state, key) => (
-    fromProjectsApp.getFilterStatus(state.projectsApp, key)
-);
-
 export const getProjectsAppFacetByProperty = (state, property) => (
     fromProjectsApp.getFacetByProperty(state.projectsApp, property)
 );
index c4ca1fbf0f6ea64eced98385d782b2a7631994bd..665683cd689285d71d3d5f0ba57d6de5d175c878 100644 (file)
@@ -22,7 +22,7 @@ import Helmet from 'react-helmet';
 import PageHeaderContainer from './PageHeaderContainer';
 import ProjectsListContainer from './ProjectsListContainer';
 import ProjectsListFooterContainer from './ProjectsListFooterContainer';
-import PageSidebarContainer from './PageSidebarContainer';
+import PageSidebar from './PageSidebar';
 import ProjectsListHeaderContainer from './ProjectsListHeaderContainer';
 import GlobalMessagesContainer from '../../../app/components/GlobalMessagesContainer';
 import { parseUrlQuery } from '../store/utils';
@@ -81,7 +81,7 @@ export default class App extends React.Component {
             </div>
             <aside className="page-sidebar-fixed projects-sidebar">
               <PageHeaderContainer/>
-              <PageSidebarContainer query={this.state.query}/>
+              <PageSidebar query={this.state.query}/>
             </aside>
           </div>
         </div>
index 1b4baa2f1c7772095b409523c1e6d81bb80f0e83..087f1cc7904dca8ff6f3b1f004f4cd5f9551defd 100644 (file)
@@ -29,8 +29,7 @@ import MaintainabilityFilter from '../filters/MaintainabilityFilter';
 
 export default class PageSidebar extends React.Component {
   static propTypes = {
-    query: React.PropTypes.object.isRequired,
-    closeAllFilters: React.PropTypes.func.isRequired
+    query: React.PropTypes.object.isRequired
   };
 
   render () {
@@ -41,7 +40,7 @@ export default class PageSidebar extends React.Component {
           <div className="projects-facets-header clearfix">
             {isFiltered && (
                 <div className="projects-facets-reset">
-                  <Link to="/projects" className="button button-red" onClick={this.props.closeAllFilters}>
+                  <Link to="/projects" className="button button-red">
                     Clear All Filters
                   </Link>
                 </div>
diff --git a/server/sonar-web/src/main/js/apps/projects/components/PageSidebarContainer.js b/server/sonar-web/src/main/js/apps/projects/components/PageSidebarContainer.js
deleted file mode 100644 (file)
index c61e554..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * 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 { connect } from 'react-redux';
-import PageSidebar from './PageSidebar';
-import { closeAllFilters } from '../store/filters/statuses/actions';
-
-export default connect(
-    () => ({}),
-    { closeAllFilters }
-)(PageSidebar);
index ec975cf527021cc9282622c27eee7d675975dee5..1b0a7ad8c82a5d8d1157a9e788e30b0b9d8b1bb4 100644 (file)
@@ -24,7 +24,6 @@ import { formatMeasure } from '../../../helpers/measures';
 
 export default class Filter extends React.Component {
   static propTypes = {
-    isOpen: React.PropTypes.bool.isRequired,
     value: React.PropTypes.any,
     property: React.PropTypes.string.isRequired,
     options: React.PropTypes.array.isRequired,
@@ -39,8 +38,6 @@ export default class Filter extends React.Component {
     halfWidth: React.PropTypes.bool,
 
     getFilterUrl: React.PropTypes.func.isRequired,
-    openFilter: React.PropTypes.func.isRequired,
-    closeFilter: React.PropTypes.func.isRequired,
 
     router: React.PropTypes.object
   };
@@ -49,36 +46,11 @@ export default class Filter extends React.Component {
     halfWidth: false
   };
 
-  handleHeaderClick = e => {
-    e.preventDefault();
-    e.target.blur();
-
-    const { value, isOpen, property } = this.props;
-    const hasValue = value != null;
-    const isDisplayedOpen = isOpen || hasValue;
-
-    if (isDisplayedOpen) {
-      this.props.closeFilter();
-    } else {
-      this.props.openFilter();
-    }
-
-    if (hasValue) {
-      this.props.router.push(this.props.getFilterUrl({ [property]: null }));
-    }
-  };
-
   renderHeader () {
-    const { value, isOpen, renderName } = this.props;
-    const hasValue = value != null;
-    const checkboxClassName = classNames('icon-checkbox', {
-      'icon-checkbox-checked': hasValue || isOpen
-    });
-
     return (
-        <a className="search-navigator-facet-header projects-facet-header" href="#" onClick={this.handleHeaderClick}>
-          <i className={checkboxClassName}/> {renderName()}
-        </a>
+        <div className="search-navigator-facet-header projects-facet-header">
+          {this.props.renderName()}
+        </div>
     );
   }
 
@@ -124,31 +96,16 @@ export default class Filter extends React.Component {
   }
 
   renderOptions () {
-    const { value, isOpen, options } = this.props;
-    const hasValue = value != null;
-
-    if (!hasValue && !isOpen) {
-      return null;
-    }
-
     return (
         <div className="search-navigator-facet-list">
-          {this.props.children}
-
-          {options.map(option => this.renderOption(option))}
+          {this.props.options.map(option => this.renderOption(option))}
         </div>
     );
   }
 
   render () {
-    const { value, isOpen } = this.props;
-    const hasValue = value != null;
-    const className = classNames('search-navigator-facet-box', {
-      'search-navigator-facet-box-collapsed': !hasValue && !isOpen
-    });
-
     return (
-        <div className={className}>
+        <div className="search-navigator-facet-box">
           {this.renderHeader()}
           {this.renderOptions()}
         </div>
index 48e6bf077269600808d4eebd373f2a92b3d65315..7f030717c34d5047a7b6f42c4e66b1e9dff23ff0 100644 (file)
@@ -22,16 +22,9 @@ import { connect } from 'react-redux';
 import { withRouter } from 'react-router';
 import omitBy from 'lodash/omitBy';
 import isNil from 'lodash/isNil';
-import {
-  getProjectsAppFilterStatus,
-  getProjectsAppFacetByProperty,
-  getProjectsAppMaxFacetValue
-} from '../../../app/store/rootReducer';
-import { openFilter, closeFilter } from '../store/filters/statuses/actions';
-import { OPEN } from '../store/filters/statuses/reducer';
+import { getProjectsAppFacetByProperty, getProjectsAppMaxFacetValue } from '../../../app/store/rootReducer';
 
 const mapStateToProps = (state, ownProps) => ({
-  isOpen: getProjectsAppFilterStatus(state, ownProps.property) === OPEN,
   value: ownProps.query[ownProps.property],
   facet: getProjectsAppFacetByProperty(state, ownProps.property),
   maxFacetValue: getProjectsAppMaxFacetValue(state),
@@ -41,9 +34,4 @@ const mapStateToProps = (state, ownProps) => ({
   }
 });
 
-const mapDispatchToProps = (dispatch, ownProps) => ({
-  openFilter: () => dispatch(openFilter(ownProps.property)),
-  closeFilter: () => dispatch(closeFilter(ownProps.property))
-});
-
-export default connect(mapStateToProps, mapDispatchToProps)(withRouter(Filter));
+export default connect(mapStateToProps)(withRouter(Filter));
diff --git a/server/sonar-web/src/main/js/apps/projects/store/filters/reducer.js b/server/sonar-web/src/main/js/apps/projects/store/filters/reducer.js
deleted file mode 100644 (file)
index 830f667..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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 { combineReducers } from 'redux';
-import statuses, * as fromStatuses from './statuses/reducer';
-
-const reducer = combineReducers({ statuses });
-
-export default reducer;
-
-export const getFilterStatus = (state, key) => (
-    fromStatuses.getStatus(state.statuses, key)
-);
diff --git a/server/sonar-web/src/main/js/apps/projects/store/filters/statuses/actions.js b/server/sonar-web/src/main/js/apps/projects/store/filters/statuses/actions.js
deleted file mode 100644 (file)
index d67bbc2..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * 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.
- */
-export const OPEN_FILTER = 'projects/OPEN_FILTER';
-
-export const openFilter = key => ({
-  type: OPEN_FILTER,
-  key
-});
-
-export const CLOSE_FILTER = 'projects/CLOSE_FILTER';
-
-export const closeFilter = key => ({
-  type: CLOSE_FILTER,
-  key
-});
-
-export const CLOSE_ALL_FILTERS = 'projects/CLOSE_ALL_FILTERS';
-
-export const closeAllFilters = () => ({
-  type: CLOSE_ALL_FILTERS
-});
diff --git a/server/sonar-web/src/main/js/apps/projects/store/filters/statuses/reducer.js b/server/sonar-web/src/main/js/apps/projects/store/filters/statuses/reducer.js
deleted file mode 100644 (file)
index 6606f47..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * 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 { OPEN_FILTER, CLOSE_FILTER, CLOSE_ALL_FILTERS } from './actions';
-
-export const OPEN = 'OPEN';
-export const CLOSED = 'CLOSED';
-
-const closeAll = state => {
-  const newState = { ...state };
-  Object.keys(newState).forEach(key => newState[key] = CLOSED);
-  return newState;
-};
-
-const reducer = (state = {}, action = {}) => {
-  switch (action.type) {
-    case OPEN_FILTER:
-      return { ...state, [action.key]: OPEN };
-    case CLOSE_FILTER:
-      return { ...state, [action.key]: CLOSED };
-    case CLOSE_ALL_FILTERS:
-      return closeAll(state);
-    default:
-      return state;
-  }
-};
-
-export default reducer;
-
-export const getStatus = (state, key) => (
-    state[key]
-);
index de306baa99df7b7d83421663d5fdc300ed0f5d26..1e2487aa794fd205f3f519d4b5c285c7c150a0db 100644 (file)
 import { combineReducers } from 'redux';
 import projects, * as fromProjects from './projects/reducer';
 import state from './state/reducer';
-import filters, * as fromFilters from './filters/reducer';
 import facets, * as fromFacets from './facets/reducer';
 
-export default combineReducers({ projects, state, filters, facets });
+export default combineReducers({ projects, state, facets });
 
 export const getProjects = state => (
     fromProjects.getProjects(state.projects)
@@ -33,10 +32,6 @@ export const getState = state => (
     state.state
 );
 
-export const getFilterStatus = (state, key) => (
-    fromFilters.getFilterStatus(state.filters, key)
-);
-
 export const getFacetByProperty = (state, property) => (
     fromFacets.getFacetByProperty(state.facets, property)
 );