Skip to content

Commit

Permalink
Merge pull request #1929 from asfadmin/DS-5415-on-demand-loading
Browse files Browse the repository at this point in the history
fix: on demand jobs no longer get stuck in loading
  • Loading branch information
williamh890 authored Jun 27, 2024
2 parents 99a729a + 5ef0891 commit 0a18474
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -142,8 +142,8 @@ export class ScenesListComponent implements OnInit, OnDestroy, AfterContentInit
scenes => {
this.scenes = scenes;

this.loadDummyProducts(scenes);
this.removeLoadedScenes(scenes);
this.loadDummyProducts(scenes);
}
)
);
Expand Down Expand Up @@ -500,6 +500,7 @@ export class ScenesListComponent implements OnInit, OnDestroy, AfterContentInit
}

private loadDummyProducts(scenes: CMRProduct[]) {

const scenesToLoad = scenes
.slice(0, this.numberProductsInList)
.filter(s => s.isDummyProduct)
Expand Down
17 changes: 15 additions & 2 deletions src/app/store/scenes/scenes.reducer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,8 @@ export const initState: ScenesState = {
export function scenesReducer(state = initState, action: ScenesActions): ScenesState {
switch (action.type) {
case ScenesActionType.SET_SCENES: {
let subproducts: CMRProduct[] = []
let subproducts: CMRProduct[] = [];

let searchResults = action.payload.products.map(p =>
p.metadata.productType === 'BURST' ? ({
...p,
Expand All @@ -89,8 +90,15 @@ export function scenesReducer(state = initState, action: ScenesActions): ScenesS

searchResults = searchResults.concat(subproducts)


const products = searchResults
.reduce((total, product) => {
if (product.isDummyProduct && isAlreadyLoaded(product, state.products[product.id])) {
total[product.id] = state.products[product.id];

return total;
}

total[product.id] = product;

return total;
Expand All @@ -111,14 +119,14 @@ export function scenesReducer(state = initState, action: ScenesActions): ScenesS
groupCriteria = product.id;
}
}

const scene = total[groupCriteria] || [];

total[groupCriteria] = [...scene, product.id];
return total;
}, {});

for (const [groupId, productNames] of Object.entries(productGroups)) {

(<string[]>productNames).sort(
(a, b) => products[a].bytes - products[b].bytes
).reverse();
Expand Down Expand Up @@ -177,6 +185,7 @@ export function scenesReducer(state = initState, action: ScenesActions): ScenesS
bytes: jobFile.size,
groupId: job.job_id,
id: job.job_id,
isDummyProduct: false,
metadata: {
...product.metadata,
fileName: jobFile.filename || '',
Expand Down Expand Up @@ -567,6 +576,10 @@ const productsForScene = (selected, state) => {
}).reverse();
};

const isAlreadyLoaded = (product, oldProduct) => {
return !!oldProduct && !oldProduct.isDummyProduct && product.isDummyProduct;
}

export const getAreProductsLoaded = createSelector(
getScenes,
state => state.length > 0
Expand Down
12 changes: 6 additions & 6 deletions src/app/store/search/search.effect.ts
Original file line number Diff line number Diff line change
Expand Up @@ -372,18 +372,18 @@ export class SearchEffects {
const jobs = jobsRes.hyp3Jobs;

const granuleNames = this.getAllGranulesFromJobs(jobs);
const asfApiListQuery = this.dummyProducts$(granuleNames);
const fakeApiListQuery = this.dummyProducts$(granuleNames);

return asfApiListQuery.pipe(
map(products => {
return products
return fakeApiListQuery.pipe(
map(dummyProducts => {
return dummyProducts
.reduce((prodsByName, p) => {
prodsByName[p.name] = p;
return prodsByName;
}, {});
}),
map(products => {
return this.hyp3JobToProducts(jobs, products);
map(dummyProducts => {
return this.hyp3JobToProducts(jobs, dummyProducts);
}),
withLatestFrom(this.store$.select(getIsCanceled)),
map(([products, isCanceled]) =>
Expand Down

0 comments on commit 0a18474

Please sign in to comment.