fetchProjects = (query: any) => {
this.setState({ loading: true, query });
- fetchProjects(
- query,
- this.props.isFavorite,
- this.props.organization && this.props.organization.key
- ).then(response => {
+ fetchProjects(query, this.props.isFavorite, this.props.organization).then(response => {
if (this.mounted) {
this.setState({
facets: response.facets,
const { pageIndex, projects, query } = this.state;
if (pageIndex && projects && query) {
this.setState({ loading: true });
- fetchProjects(
- query,
- this.props.isFavorite,
- this.props.organization && this.props.organization.key,
- pageIndex + 1
- ).then(response => {
- if (this.mounted) {
- this.setState({
- loading: false,
- pageIndex: pageIndex + 1,
- projects: [...projects, ...response.projects]
- });
- }
- }, this.stopLoading);
+ fetchProjects(query, this.props.isFavorite, this.props.organization, pageIndex + 1).then(
+ response => {
+ if (this.mounted) {
+ this.setState({
+ loading: false,
+ pageIndex: pageIndex + 1,
+ projects: [...projects, ...response.projects]
+ });
+ }
+ },
+ this.stopLoading
+ );
}
};
import { searchProjects, Facet } from '../../api/components';
import { getMeasuresForProjects } from '../../api/measures';
import { isDiffMetric, getPeriodValue } from '../../helpers/measures';
+import { Organization } from '../../app/types';
interface SortingOption {
class?: string;
export function fetchProjects(
query: Query,
isFavorite: boolean,
- organization?: string,
+ organization: Organization | undefined,
pageIndex = 1
) {
const ps = query.view === 'visualizations' ? PAGE_SIZE_VISUALIZATIONS : PAGE_SIZE;
- const data = convertToQueryData(query, isFavorite, organization, {
+ const data = convertToQueryData(query, isFavorite, organization && organization.key, {
p: pageIndex > 1 ? pageIndex : undefined,
ps,
facets: defineFacets(query).join(),
f: 'analysisDate,leakPeriodDate'
});
- return searchProjects(data).then(({ components, facets, paging }) => {
- return Promise.all([
- fetchProjectMeasures(components, query),
- fetchProjectOrganizations(components)
- ]).then(([measures, organizations]) => {
+ return searchProjects(data)
+ .then(response =>
+ Promise.all([
+ fetchProjectMeasures(response.components, query),
+ fetchProjectOrganizations(response.components, organization),
+ Promise.resolve(response)
+ ])
+ )
+ .then(([measures, organizations, { components, facets, paging }]) => {
return {
facets: getFacetsMap(facets),
projects: components
total: paging.total
};
});
- });
}
function defineMetrics(query: Query): string[] {
return getMeasuresForProjects(projectKeys, metrics);
}
-function fetchProjectOrganizations(projects: Array<{ organization: string }>) {
+function fetchProjectOrganizations(
+ projects: Array<{ organization: string }>,
+ organization: Organization | undefined
+) {
+ if (organization) {
+ return Promise.resolve([organization]);
+ }
if (!projects.length) {
return Promise.resolve([]);
}