cluedin-widget
Version:
This project contains all the pages needed for browsing entities and searching them. The aim is to replace the CluedIn.Webapp project with this one when all the pages ( including the Admin page ) will be ported to REACT.
126 lines (109 loc) • 4.1 kB
JavaScript
import iso from '../../iso';
import constants from '../constants';
const initialState = {
providers: [],
isFetching: false,
crawlerStats: {},
isFetchingAll: false,
allProviders: [],
allProviderStats: [],
isBusy: false,
skipBusy: false,
};
export default function update(state = initialState, action = {}) {
switch (action.type) {
case constants.provider.RECEIVE_SKIP_BUSY:
return Object.assign({}, state, {
skipBusy: action.data.skipBusy,
});
case constants.provider.REQUEST_ALL_PROVIDERS:
return Object.assign({}, state, {
isFetchingAll: true,
});
case constants.provider.RECEIVE_ALL_PROVIDERS:
return Object.assign({}, state, {
isFetching: false,
isFetchingAll: false,
allProviders: action.data.allProviders,
});
case constants.provider.REQUEST_ACTIVE_PROVIDERS:
return Object.assign({}, state, {
isFetching: true,
});
case constants.provider.RECEIVE_ACTIVE_PROVIDERS_FOR_UPDATE:
let allProvidersStatsForUpdate = action.data.providers.map((p) => {
let result = p.Stats;
if (result) {
result.original = p;
}
return result;
});
allProvidersStatsForUpdate = iso.array.compact(allProvidersStatsForUpdate);
let oneOfProviderWithBusyStateForUpdate = allProvidersStatsForUpdate.find((p) => {
let status = p.ProviderStatus;
return (status.State === 'Queued' || status.State === 'Crawling' || status.State === 'Processing');
});
return Object.assign({}, state, {
providers: action.data.providers,
allProviderStats: [...allProvidersStatsForUpdate],
isBusy: oneOfProviderWithBusyStateForUpdate ? true : false,
});
case constants.provider.RECEIVE_ACTIVE_PROVIDERS:
let allProvidersStats = action.data.providers.map((p) => {
let result = p.Stats;
if (result) {
result.original = p;
}
return result;
});
allProvidersStats = iso.array.compact(allProvidersStats);
let oneOfProviderWithBusyState = allProvidersStats.find((p) => {
let status = p.ProviderStatus;
return (status.State === 'Queued' || status.State === 'Crawling' || status.State === 'Processing');
});
return Object.assign({}, state, {
providers: action.data.providers,
isFetching: false,
allProviderStats: [...allProvidersStats],
isBusy: oneOfProviderWithBusyState ? true : false,
});
/* case constants.provider.RECEIVE_CRAWLER_STATS:
let newCrawlerStats = Object.assign( {}, state.crawlerStats );
let allProvidersStatsForCrawler = state.allProviderStats;
let configurationToUpdate = action.data.crawlerStats.integrationId;
let state = action.data.crawlerStats.crawlerInfo.State;
let relatedProviderStats = allProvidersStatsForCrawler.find( ( p )=> {
return p.ConfigurationId === configurationToUpdate;
} );
if( relatedProviderStats ) {
if( state == 0 ) {
relatedProviderStats.ProviderStatus.State = "Idle"
}
if( state == 1 ) {
relatedProviderStats.ProviderStatus.State = "Queued"
}
if( state == 2 ) {
relatedProviderStats.ProviderStatus.State = "Crawling"
}
if( state == 3 ) {
relatedProviderStats.ProviderStatus.State = "Processing"
}
if( state == 4 ) {
relatedProviderStats.ProviderStatus.State = "Finished"
}
}
newCrawlerStats[ action.data.crawlerStats.integrationId ] = action.data.crawlerStats;
let oneOfProviderWithBusyState2 = allProvidersStatsForCrawler.find( ( p )=> {
let status = p.ProviderStatus;
return (status.State === "Queued" || status.State === "Crawling" || status.State === "Processing");
} );
return Object.assign( state, {
crawlerStats: newCrawlerStats,
allProviderStats: [ ...allProvidersStatsForCrawler ],
isBusy: oneOfProviderWithBusyState2 ? true : false
} );
break;*/
default:
return state;
}
};