Skip to content

Commit 871cb72

Browse files
committed
update.
1 parent 3141609 commit 871cb72

5 files changed

Lines changed: 31 additions & 25 deletions

File tree

frontend/src/app/dashboard/component/user/list-item/card-item/card-item.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
<!-- Placeholder or Preview Image -->
4040
<img
4141
class="card-preview-image"
42-
[src]="previewImage"
42+
[src]="coverImageSrc"
4343
(error)="onCoverError()"
4444
alt="Workflow Preview" />
4545
</div>

frontend/src/app/dashboard/component/user/list-item/card-item/card-item.component.spec.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -185,42 +185,42 @@ describe("CardItemComponent", () => {
185185
component.ngOnChanges({ entry: { currentValue: component.entry } as any });
186186

187187
expect(datasetService.getDatasetCoverUrl).toHaveBeenCalledWith(5);
188-
expect(component.previewImage).toBe("https://cover.example/img.png");
188+
expect(component.coverImageSrc).toBe("https://cover.example/img.png");
189189
});
190190

191191
it("should fall back to the default preview when the cover fetch fails", () => {
192192
datasetService.getDatasetCoverUrl.mockReturnValue(throwError(() => new Error("cover fetch failed")));
193193
component.entry = makeDatasetEntry({ coverImageUrl: "cover/path.png" });
194194
component.ngOnChanges({ entry: { currentValue: component.entry } as any });
195195

196-
expect(component.previewImage).toBe(CardItemComponent.DEFAULT_PREVIEW_IMAGE);
196+
expect(component.coverImageSrc).toBe(CardItemComponent.DEFAULT_PREVIEW_IMAGE);
197197
});
198198

199199
it("should reset the preview to the default image on cover load error", () => {
200200
component.coverImageSrc = "https://cover.example/img.png";
201201
component.onCoverError();
202-
expect(component.previewImage).toBe(CardItemComponent.DEFAULT_PREVIEW_IMAGE);
202+
expect(component.coverImageSrc).toBe(CardItemComponent.DEFAULT_PREVIEW_IMAGE);
203203
});
204204

205205
it("should keep the default preview for non-dataset entries", () => {
206206
component.entry = makeWorkflowEntry();
207207
component.ngOnChanges({ entry: { currentValue: component.entry } as any });
208-
expect(component.previewImage).toBe(CardItemComponent.DEFAULT_PREVIEW_IMAGE);
208+
expect(component.coverImageSrc).toBe(CardItemComponent.DEFAULT_PREVIEW_IMAGE);
209209
});
210210

211211
it("should not fetch a cover when the dataset has no cover image", () => {
212212
component.entry = makeDatasetEntry({ coverImageUrl: undefined });
213213
component.ngOnChanges({ entry: { currentValue: component.entry } as any });
214214

215215
expect(datasetService.getDatasetCoverUrl).not.toHaveBeenCalled();
216-
expect(component.previewImage).toBe(CardItemComponent.DEFAULT_PREVIEW_IMAGE);
216+
expect(component.coverImageSrc).toBe(CardItemComponent.DEFAULT_PREVIEW_IMAGE);
217217
});
218218

219219
it("should use the default preview when the cover url resolves to null", () => {
220220
datasetService.getDatasetCoverUrl.mockReturnValue(of({ url: null }));
221221
component.entry = makeDatasetEntry({ coverImageUrl: "cover/path.png" });
222222
component.ngOnChanges({ entry: { currentValue: component.entry } as any });
223223

224-
expect(component.previewImage).toBe(CardItemComponent.DEFAULT_PREVIEW_IMAGE);
224+
expect(component.coverImageSrc).toBe(CardItemComponent.DEFAULT_PREVIEW_IMAGE);
225225
});
226226
});

frontend/src/app/dashboard/component/user/list-item/card-item/card-item.component.ts

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -136,13 +136,7 @@ export class CardItemComponent implements OnChanges {
136136
private notificationService: NotificationService
137137
) {}
138138

139-
/** The top image src for the card preview. */
140-
get previewImage(): string {
141-
return this.coverImageSrc;
142-
}
143-
144139
initializeEntry() {
145-
this.coverImageSrc = CardItemComponent.DEFAULT_PREVIEW_IMAGE;
146140
if (this.entry.type === "workflow") {
147141
if (typeof this.entry.id === "number") {
148142
this.disableDelete = !this.entry.workflow.isOwner;

frontend/src/app/dashboard/component/user/user-dataset/user-dataset.component.spec.ts

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -316,36 +316,48 @@ describe("UserDatasetComponent", () => {
316316
afterEach(() => localStorage.removeItem(VIEW_MODE_KEY));
317317

318318
it("setViewType updates viewType, persists it, and is a no-op when unchanged", () => {
319-
component.setViewType("card");
320-
expect(component.viewType).toBe("card");
321-
expect(localStorage.getItem(VIEW_MODE_KEY)).toBe("card");
319+
// viewType defaults to "card", so switching to "list" is the real change
320+
component.setViewType("list");
321+
expect(component.viewType).toBe("list");
322+
expect(localStorage.getItem(VIEW_MODE_KEY)).toBe("list");
322323

323324
// setting the same value should not write again
324325
localStorage.removeItem(VIEW_MODE_KEY);
325-
component.setViewType("card");
326+
component.setViewType("list");
326327
expect(localStorage.getItem(VIEW_MODE_KEY)).toBeNull();
327328

328-
component.setViewType("list");
329-
expect(component.viewType).toBe("list");
330-
expect(localStorage.getItem(VIEW_MODE_KEY)).toBe("list");
329+
component.setViewType("card");
330+
expect(component.viewType).toBe("card");
331+
expect(localStorage.getItem(VIEW_MODE_KEY)).toBe("card");
331332
});
332333

333-
it("initializes viewType from localStorage", () => {
334-
localStorage.setItem(VIEW_MODE_KEY, "card");
334+
const makeFreshComponent = () => {
335335
const userServiceMock = {
336336
userChanged: () => new Subject<User | undefined>().asObservable(),
337337
isLogin: () => true,
338338
getCurrentUser: () => ({ uid: 42 }) as User,
339339
};
340-
const fresh = new UserDatasetComponent(
340+
return new UserDatasetComponent(
341341
modalServiceMock as any,
342342
userServiceMock as any,
343343
routerMock as any,
344344
searchServiceMock as any,
345345
datasetServiceMock as any,
346346
messageMock as any
347347
);
348-
expect(fresh.viewType).toBe("card");
348+
};
349+
350+
it("defaults viewType to card when nothing is stored", () => {
351+
localStorage.removeItem(VIEW_MODE_KEY);
352+
expect(makeFreshComponent().viewType).toBe("card");
353+
});
354+
355+
it("initializes viewType to list only when explicitly stored", () => {
356+
localStorage.setItem(VIEW_MODE_KEY, "list");
357+
expect(makeFreshComponent().viewType).toBe("list");
358+
359+
localStorage.setItem(VIEW_MODE_KEY, "card");
360+
expect(makeFreshComponent().viewType).toBe("card");
349361
});
350362
});
351363
});

frontend/src/app/dashboard/component/user/user-dataset/user-dataset.component.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ export class UserDatasetComponent implements AfterViewInit {
7373
public currentUid = this.userService.getCurrentUser()?.uid;
7474
public hasMismatch = false; // Display warning when there are mismatched datasets
7575
public viewType: "list" | "card" =
76-
localStorage.getItem(UserDatasetComponent.VIEW_MODE_STORAGE_KEY) === "card" ? "card" : "list";
76+
localStorage.getItem(UserDatasetComponent.VIEW_MODE_STORAGE_KEY) === "list" ? "list" : "card";
7777

7878
private _searchResultsComponent?: SearchResultsComponent;
7979
@ViewChild(SearchResultsComponent) get searchResultsComponent(): SearchResultsComponent {

0 commit comments

Comments
 (0)