]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-7402 drop pagination, filter out components with no measure value
authorStas Vilchik <vilchiks@gmail.com>
Thu, 7 Apr 2016 09:51:56 +0000 (11:51 +0200)
committerStas Vilchik <vilchiks@gmail.com>
Thu, 7 Apr 2016 11:33:29 +0000 (13:33 +0200)
server/sonar-web/src/main/js/apps/component-measures/details/drilldown/ListView.js
server/sonar-web/src/main/js/apps/component-measures/details/drilldown/ListViewContainer.js
server/sonar-web/src/main/js/apps/component-measures/details/drilldown/TreeView.js
server/sonar-web/src/main/js/apps/component-measures/details/drilldown/TreeViewContainer.js
server/sonar-web/src/main/js/apps/component-measures/store/listViewActions.js
server/sonar-web/src/main/js/apps/component-measures/store/treeViewActions.js
server/sonar-web/src/main/js/apps/component-measures/utils.js

index 789ae2ac494c2c50b6b8f2e72aa8d3b798075069..c0fcc23de7ddbd5aaeaa6ecee0f9cdccea85260a 100644 (file)
@@ -24,7 +24,6 @@ import ComponentsList from './ComponentsList';
 import ListHeader from './ListHeader';
 import Spinner from '../../components/Spinner';
 import SourceViewer from '../../../code/components/SourceViewer';
-import ListFooter from '../../../../components/shared/list-footer';
 
 export default class ListView extends React.Component {
   componentDidMount () {
@@ -43,11 +42,6 @@ export default class ListView extends React.Component {
     }
   }
 
-  fetchMore () {
-    const { metric, component, onFetchMore } = this.props;
-    onFetchMore(component, metric);
-  }
-
   scrollToViewer () {
     const { container } = this.refs;
     const top = container.getBoundingClientRect().top + window.scrollY - 95 - 10;
@@ -87,7 +81,7 @@ export default class ListView extends React.Component {
   }
 
   render () {
-    const { component, components, metrics, metric, leakPeriod, selected, fetching, total } = this.props;
+    const { component, components, metrics, metric, leakPeriod, selected, fetching } = this.props;
     const { onSelectNext, onSelectPrevious } = this.props;
 
     const breadcrumbs = [component];
@@ -120,11 +114,6 @@ export default class ListView extends React.Component {
                 ) : (
                     <Spinner/>
                 )}
-                <ListFooter
-                    count={components.length}
-                    total={total}
-                    loadMore={this.fetchMore.bind(this)}
-                    ready={!fetching}/>
               </div>
           )}
 
index 1d789b5c88757fed8057874e2fa0c99f439e5159..b3333a13d7a633fe774437acf81e86445e98c83c 100644 (file)
@@ -21,7 +21,7 @@ import { connect } from 'react-redux';
 import pick from '../../../../../../../node_modules/lodash/pick';
 
 import ListView from './ListView';
-import { fetchList, fetchMore, selectComponent, selectNext, selectPrevious } from '../../store/listViewActions';
+import { fetchList, selectComponent, selectNext, selectPrevious } from '../../store/listViewActions';
 
 const mapStateToProps = state => {
   const drilldown = pick(state.list, [
@@ -42,7 +42,6 @@ const mapStateToProps = state => {
 const mapDispatchToProps = dispatch => {
   return {
     onFetchList: (baseComponent, metric, periodIndex) => dispatch(fetchList(baseComponent, metric, periodIndex)),
-    onFetchMore: (baseComponent, metric) => dispatch(fetchMore(baseComponent, metric)),
     onSelect: component => dispatch(selectComponent(component)),
     onSelectNext: component => dispatch(selectNext(component)),
     onSelectPrevious: component => dispatch(selectPrevious(component))
index c4e62fdccb368c47dac5d58350fda7ccac17e6ce..913819049474994d88b3194d4e6c4e293e43e0f8 100644 (file)
@@ -23,7 +23,6 @@ import ComponentsList from './ComponentsList';
 import ListHeader from './ListHeader';
 import Spinner from '../../components/Spinner';
 import SourceViewer from '../../../code/components/SourceViewer';
-import ListFooter from '../../../../components/shared/list-footer';
 
 export default class TreeView extends React.Component {
   componentDidMount () {
@@ -89,8 +88,8 @@ export default class TreeView extends React.Component {
   }
 
   render () {
-    const { components, metrics, breadcrumbs, metric, leakPeriod, selected, fetching, total } = this.props;
-    const { onSelectNext, onSelectPrevious, onFetchMore } = this.props;
+    const { components, metrics, breadcrumbs, metric, leakPeriod, selected, fetching } = this.props;
+    const { onSelectNext, onSelectPrevious } = this.props;
 
     const selectedIndex = components.indexOf(selected);
     const sourceViewerPeriod = metric.key.indexOf('new_') === 0 && !!leakPeriod ? leakPeriod : null;
@@ -118,11 +117,6 @@ export default class TreeView extends React.Component {
                 ) : (
                     <Spinner/>
                 )}
-                <ListFooter
-                    count={components.length}
-                    total={total}
-                    loadMore={onFetchMore}
-                    ready={!fetching}/>
               </div>
           )}
 
index b707563d12b332fff1d271068ed161aa8c600cd3..f21cc86f0c4b1144a2872e783d79bd06c7b654f2 100644 (file)
@@ -23,7 +23,6 @@ import pick from '../../../../../../../node_modules/lodash/pick';
 import TreeView from './TreeView';
 import {
     start,
-    fetchMore,
     drilldown,
     useBreadcrumbs,
     selectComponent,
@@ -51,7 +50,6 @@ const mapStateToProps = state => {
 const mapDispatchToProps = dispatch => {
   return {
     onStart: (rootComponent, metric, periodIndex) => dispatch(start(rootComponent, metric, periodIndex)),
-    onFetchMore: () => dispatch(fetchMore()),
     onDrilldown: component => dispatch(drilldown(component)),
     onUseBreadcrumbs: component => dispatch(useBreadcrumbs(component)),
     onSelect: component => dispatch(selectComponent(component)),
index 17b1d63cd54916bc9cd7905a09792ed3244dfcd8..18037ac3c68907fc5fd1736964f878255846a9c8 100644 (file)
@@ -18,7 +18,7 @@
  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  */
 import { getComponentTree } from '../../../api/components';
-import { enhanceWithMeasure } from '../utils';
+import { enhanceWithMeasure, filterOutEmptyMeasures } from '../utils';
 import { startFetching, stopFetching } from './statusActions';
 import complementary from '../config/complementary';
 
@@ -35,7 +35,7 @@ function getComplementary (metric) {
 
 function makeRequest (baseComponent, metric, options, periodIndex = 1) {
   const asc = metric.direction === 1;
-  const ps = 100;
+  const ps = 200;
   const finalOptions = { asc, ps };
 
   if (metric.key.indexOf('new_') === 0) {
@@ -59,7 +59,7 @@ function fetchLeaves (baseComponent, metric, pageIndex = 1, periodIndex = 1) {
   const options = { p: pageIndex };
 
   return makeRequest(baseComponent, metric, options, periodIndex).then(r => {
-    const nextComponents = enhanceWithMeasure(r.components, metric.key, periodIndex);
+    const nextComponents = filterOutEmptyMeasures(enhanceWithMeasure(r.components, metric.key, periodIndex));
 
     return {
       components: nextComponents,
@@ -94,23 +94,6 @@ export function fetchList (baseComponent, metric, periodIndex = 1) {
   };
 }
 
-/**
- * Fetch next page of components
- * @param baseComponent
- * @param metric
- */
-export function fetchMore (baseComponent, metric) {
-  return (dispatch, getState) => {
-    const { components, pageIndex } = getState().list;
-    dispatch(startFetching());
-    return fetchLeaves(baseComponent, metric, pageIndex + 1).then(r => {
-      const diff = { ...r, components: [...components, ...r.components] };
-      dispatch(updateStore(diff));
-      dispatch(stopFetching());
-    });
-  };
-}
-
 /**
  * Select specified component from the list
  * @param component A component to select
index 32253d909c81dc446b5007f27980130c3571942a..cd1382c271a69df15dcdfd4231ed07e6b1c4d9c4 100644 (file)
@@ -20,7 +20,7 @@
 import initial from 'lodash/initial';
 
 import { getComponentTree } from '../../../api/components';
-import { enhanceWithMeasure } from '../utils';
+import { filterOutEmptyMeasures, enhanceWithMeasure } from '../utils';
 import { startFetching, stopFetching } from './statusActions';
 import complementary from '../config/complementary';
 
@@ -91,7 +91,7 @@ function fetchComponents (baseComponent, metric, pageIndex = 1, periodIndex = 1)
   const options = { p: pageIndex };
 
   return makeRequest(baseComponent, metric, options, periodIndex).then(r => {
-    const nextComponents = enhanceWithMeasure(r.components, metric.key, periodIndex);
+    const nextComponents = filterOutEmptyMeasures(enhanceWithMeasure(r.components, metric.key, periodIndex));
 
     return {
       baseComponent,
@@ -142,23 +142,6 @@ export function start (rootComponent, metric, periodIndex = 1) {
   };
 }
 
-/**
- * Fetch next page of components
- */
-export function fetchMore () {
-  return (dispatch, getState) => {
-    const { metric, baseComponent, components, pageIndex, periodIndex } = getState().tree;
-    dispatch(startFetching());
-    return fetchComponents(baseComponent, metric, pageIndex + 1, periodIndex).then(r => {
-      dispatch(updateStore({
-        ...r,
-        components: [...components, ...r.components]
-      }));
-      dispatch(stopFetching());
-    });
-  };
-}
-
 /**
  * Drilldown to the component
  * @param component
index 5a6db31f29e8e0488213c07771bf23c15a0c9fba..c7bd18ca7e307357f9b3a32063182f42106db520 100644 (file)
@@ -109,3 +109,7 @@ export function hasBubbleChart (domainName) {
 export function hasTreemap (metric) {
   return ['PERCENT', 'RATING', 'LEVEL'].indexOf(metric.type) !== -1;
 }
+
+export function filterOutEmptyMeasures (components) {
+  return components.filter(component => component.value !== null || component.leak !== null);
+}