From 2f40202b3dac6995cb4e99ab1cc05db2fbb30e7d Mon Sep 17 00:00:00 2001 From: Danish Mehmood <64415995+DanishMehmood-bit@users.noreply.github.com> Date: Fri, 8 Sep 2023 01:11:14 +0500 Subject: [PATCH 1/6] Table view for itwinGrid (#92) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Table view for itwinGrid * Fixed comments * Ability to limit iModel tiles (#89) * Ability to limit iModel tiles * Added changelog * pageSize => maxCount * Fixed comments --------- Co-authored-by: Raphaël LEMIEUX <1904889+raplemie@users.noreply.github.com> --------- Co-authored-by: Raphaël LEMIEUX <1904889+raplemie@users.noreply.github.com> --- .../DanishM-limit_2023-08-30-09-47.json | 10 ++ .../DanishM-tableView_2023-09-07-09-39.json | 10 ++ .../modules/imodel-browser/jest.config.js | 6 +- .../src/containers/ITwinGrid/ITwinGrid.scss | 24 ++++ .../containers/ITwinGrid/ITwinGrid.test.tsx | 58 ++++++++ .../src/containers/ITwinGrid/ITwinGrid.tsx | 132 ++++++++++++------ .../ITwinGrid/useITwinTableConfig.tsx | 120 ++++++++++++++++ .../src/containers/iModelGrid/IModelGrid.tsx | 8 +- .../iModelGrid/useIModelData.test.ts | 36 ++++- .../containers/iModelGrid/useIModelData.ts | 26 +++- .../src/tests/mocks/fileMock.ts | 5 + packages/modules/imodel-browser/src/types.ts | 4 +- 12 files changed, 388 insertions(+), 51 deletions(-) create mode 100644 common/changes/@itwin/imodel-browser-react/DanishM-limit_2023-08-30-09-47.json create mode 100644 common/changes/@itwin/imodel-browser-react/DanishM-tableView_2023-09-07-09-39.json create mode 100644 packages/modules/imodel-browser/src/containers/ITwinGrid/ITwinGrid.scss create mode 100644 packages/modules/imodel-browser/src/containers/ITwinGrid/ITwinGrid.test.tsx create mode 100644 packages/modules/imodel-browser/src/containers/ITwinGrid/useITwinTableConfig.tsx create mode 100644 packages/modules/imodel-browser/src/tests/mocks/fileMock.ts diff --git a/common/changes/@itwin/imodel-browser-react/DanishM-limit_2023-08-30-09-47.json b/common/changes/@itwin/imodel-browser-react/DanishM-limit_2023-08-30-09-47.json new file mode 100644 index 00000000..6116bb1d --- /dev/null +++ b/common/changes/@itwin/imodel-browser-react/DanishM-limit_2023-08-30-09-47.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@itwin/imodel-browser-react", + "comment": "Ability to limit iModel tiles", + "type": "minor" + } + ], + "packageName": "@itwin/imodel-browser-react" +} \ No newline at end of file diff --git a/common/changes/@itwin/imodel-browser-react/DanishM-tableView_2023-09-07-09-39.json b/common/changes/@itwin/imodel-browser-react/DanishM-tableView_2023-09-07-09-39.json new file mode 100644 index 00000000..44e3e0d2 --- /dev/null +++ b/common/changes/@itwin/imodel-browser-react/DanishM-tableView_2023-09-07-09-39.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@itwin/imodel-browser-react", + "comment": "Added table view for itwin grid", + "type": "minor" + } + ], + "packageName": "@itwin/imodel-browser-react" +} \ No newline at end of file diff --git a/packages/modules/imodel-browser/jest.config.js b/packages/modules/imodel-browser/jest.config.js index 947f080d..b97ed6ca 100644 --- a/packages/modules/imodel-browser/jest.config.js +++ b/packages/modules/imodel-browser/jest.config.js @@ -1,3 +1,7 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Bentley Systems, Incorporated. All rights reserved. + * See LICENSE.md in the project root for license terms and full copyright notice. + *--------------------------------------------------------------------------------------------*/ module.exports = { roots: ["/src"], transform: { @@ -9,7 +13,7 @@ module.exports = { ], moduleNameMapper: { "\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga|svg?.+)$": - "/src/tests/mocks/fileMock.js", + "/src/tests/mocks/fileMock.ts", "\\.(css|less|scss|sass)$": "identity-obj-proxy", }, verbose: true, diff --git a/packages/modules/imodel-browser/src/containers/ITwinGrid/ITwinGrid.scss b/packages/modules/imodel-browser/src/containers/ITwinGrid/ITwinGrid.scss new file mode 100644 index 00000000..6f45c639 --- /dev/null +++ b/packages/modules/imodel-browser/src/containers/ITwinGrid/ITwinGrid.scss @@ -0,0 +1,24 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Bentley Systems, Incorporated. All rights reserved. + * See LICENSE.md in the project root for license terms and full copyright notice. + *--------------------------------------------------------------------------------------------*/ +.iac-iTwinCell { + display: flex; + flex-direction: column; + justify-content: center; + overflow: hidden; + + >* { + overflow: hidden; + text-overflow: ellipsis; + max-width: 100%; + } +} + +.iac-list-structure { + margin-top: 20px; +} + +.iui-menu-item { + border-radius: var(--iui-border-radius-0); +} \ No newline at end of file diff --git a/packages/modules/imodel-browser/src/containers/ITwinGrid/ITwinGrid.test.tsx b/packages/modules/imodel-browser/src/containers/ITwinGrid/ITwinGrid.test.tsx new file mode 100644 index 00000000..494533b1 --- /dev/null +++ b/packages/modules/imodel-browser/src/containers/ITwinGrid/ITwinGrid.test.tsx @@ -0,0 +1,58 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Bentley Systems, Incorporated. All rights reserved. + * See LICENSE.md in the project root for license terms and full copyright notice. + *--------------------------------------------------------------------------------------------*/ +import { render } from "@testing-library/react"; +import React from "react"; + +import { DataStatus } from "../../types"; +import { ITwinGrid } from "./ITwinGrid"; +import * as useITwinData from "./useITwinData"; + +describe("ITwinGrid", () => { + beforeEach(() => { + jest.spyOn(useITwinData, "useITwinData").mockReturnValue({ + iTwins: [ + { + id: "iTwin1", + number: "iTwinNumber1", + }, + { + id: "iTwin2", + number: "iTwinNumber2", + }, + ], + status: DataStatus.Complete, + fetchMore: undefined, + }); + }); + + afterEach(() => { + jest.clearAllMocks(); + }); + + it("should display the table and correct error message when no data is present", () => { + // Arrange + jest.spyOn(useITwinData, "useITwinData").mockReturnValue({ + iTwins: [], + status: DataStatus.Complete, + fetchMore: undefined, + }); + + // Act + const wrapper = render(); + + // Assert + expect(wrapper.getByRole("table")).toBeDefined(); + expect(wrapper.getByText("No iTwin found.")).toBeDefined(); + }); + + it("should display the table and correct rows", () => { + // Act + const wrapper = render(); + + // Assert + expect(wrapper.getByRole("table")).toBeDefined(); + expect(wrapper.getAllByRole("row").length).toEqual(3); // First row is header + }); +}); diff --git a/packages/modules/imodel-browser/src/containers/ITwinGrid/ITwinGrid.tsx b/packages/modules/imodel-browser/src/containers/ITwinGrid/ITwinGrid.tsx index 0abf9246..974077d2 100644 --- a/packages/modules/imodel-browser/src/containers/ITwinGrid/ITwinGrid.tsx +++ b/packages/modules/imodel-browser/src/containers/ITwinGrid/ITwinGrid.tsx @@ -2,6 +2,9 @@ * Copyright (c) Bentley Systems, Incorporated. All rights reserved. * See LICENSE.md in the project root for license terms and full copyright notice. *--------------------------------------------------------------------------------------------*/ +import "./ITwinGrid.scss"; + +import { Table, ThemeProvider } from "@itwin/itwinui-react"; import React from "react"; import { InView } from "react-intersection-observer"; @@ -13,12 +16,14 @@ import { ITwinFilterOptions, ITwinFull, ITwinSubClass, + ViewType, } from "../../types"; import { _mergeStrings } from "../../utils/_apiOverrides"; import { ContextMenuBuilderItem } from "../../utils/_buildMenuOptions"; import { IModelGhostTile } from "../iModelTiles/IModelGhostTile"; import { ITwinTile, ITwinTileProps } from "./ITwinTile"; import { useITwinData } from "./useITwinData"; +import { useITwinTableConfig } from "./useITwinTableConfig"; export type IndividualITwinStateHook = ( iTwin: ITwinFull, @@ -49,6 +54,14 @@ export interface ITwinGridProps { tileOverrides?: Partial; /** Strings displayed by the browser */ stringsOverrides?: { + /** Displayed for table name header. */ + tableColumnName?: string; + /** Displayed for table description header. */ + tableColumnDescription?: string; + /** Displayed for table lastModified header. */ + tableColumnLastModified?: string; + /** Displayed on table while loading data. */ + tableLoadingData?: string; /** Badge text for trial iTwins */ trialBadge?: string; /** Badge text for inactive iTwins */ @@ -73,6 +86,8 @@ export interface ITwinGridProps { iTwins: ITwinFull[], fetchStatus: DataStatus | undefined ) => ITwinFull[]; + /**iTwin view mode */ + viewMode?: ViewType; } /** @@ -90,9 +105,14 @@ export const ITwinGrid = ({ tileOverrides, useIndividualState, postProcessCallback, + viewMode, }: ITwinGridProps) => { const strings = _mergeStrings( { + tableColumnName: "iTwin Number", + tableColumnDescription: "iTwin Name", + tableColumnLastModified: "Last Modified", + tableLoadingData: "Loading...", trialBadge: "Trial", inactiveBadge: "Inactive", noITwins: "No iTwin found.", @@ -119,6 +139,12 @@ export const ITwinGrid = ({ [postProcessCallback, fetchedItwins, fetchStatus] ); + const { columns, onRowClick } = useITwinTableConfig({ + iTwinActions, + onThumbnailClick, + strings, + }); + const noResultsText = { [DataStatus.Fetching]: "", [DataStatus.Complete]: strings.noITwins, @@ -127,50 +153,70 @@ export const ITwinGrid = ({ [DataStatus.ContextRequired]: "", }[fetchStatus ?? DataStatus.Fetching]; - return iTwins.length === 0 && noResultsText ? ( - - ) : ( - - {fetchStatus === DataStatus.Fetching ? ( - <> - - - - - ) : ( - <> - {iTwins?.map((iTwin) => ( - - ))} - {fetchMore ? ( - <> - + return viewMode !== "cells" ? ( + iTwins.length === 0 && noResultsText ? ( + + ) : ( + + {fetchStatus === DataStatus.Fetching ? ( + <> + + + + + ) : ( + <> + {iTwins?.map((iTwin) => ( + + ))} + {fetchMore ? ( + <> + + + + - - - - - ) : null} - - )} - + + ) : null} + + )} + + ) + ) : ( + + + columns={columns} + data={iTwins} + onRowClick={onRowClick} + emptyTableContent={ + fetchStatus === DataStatus.Fetching + ? strings.tableLoadingData + : strings.noITwins + } + isLoading={fetchStatus === DataStatus.Fetching} + onBottomReached={fetchMore} + className="iac-list-structure" + autoResetFilters={false} + autoResetSortBy={false} + /> + ); }; diff --git a/packages/modules/imodel-browser/src/containers/ITwinGrid/useITwinTableConfig.tsx b/packages/modules/imodel-browser/src/containers/ITwinGrid/useITwinTableConfig.tsx new file mode 100644 index 00000000..36980c51 --- /dev/null +++ b/packages/modules/imodel-browser/src/containers/ITwinGrid/useITwinTableConfig.tsx @@ -0,0 +1,120 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Bentley Systems, Incorporated. All rights reserved. + * See LICENSE.md in the project root for license terms and full copyright notice. + *--------------------------------------------------------------------------------------------*/ +import { SvgMore } from "@itwin/itwinui-icons-react"; +import { DropdownMenu } from "@itwin/itwinui-react"; +import React from "react"; +import { useMemo } from "react"; +import { CellProps } from "react-table"; + +import { ITwinFull } from "../../types"; +import { + _buildManagedContextMenuOptions, + ContextMenuBuilderItem, +} from "../../utils/_buildMenuOptions"; + +export interface useITwinTableConfigProps { + iTwinActions: ContextMenuBuilderItem[] | undefined; + onThumbnailClick: ((iTwin: ITwinFull) => void) | undefined; + strings: { + tableColumnName: string; + tableColumnDescription: string; + tableColumnLastModified: string; + noITwins: string; + noAuthentication: string; + error: string; + }; +} + +export const useITwinTableConfig = ({ + iTwinActions, + onThumbnailClick, + strings, +}: useITwinTableConfigProps) => { + const onRowClick = (_: React.MouseEvent, row: any) => { + const iTwin = row.original as ITwinFull; + if (!iTwin) { + return; + } + onThumbnailClick?.(iTwin); + }; + + const columns = useMemo( + () => [ + { + Header: "Table", + columns: [ + { + id: "ITwinNumber", + Header: strings.tableColumnName, + accessor: "number", + maxWidth: 350, + Cell: (props: CellProps) => ( +
+ {props.value} +
+ ), + }, + { + id: "ITwinName", + Header: strings.tableColumnDescription, + accessor: "displayName", + }, + { + id: "LastModified", + Header: strings.tableColumnLastModified, + accessor: "createdDateTime", + maxWidth: 350, + Cell: (props: CellProps) => { + const date = props.data[props.row.index].createdDateTime; + return date ? new Date(date).toDateString() : ""; + }, + }, + { + id: "options", + style: { width: "50px" }, + disableSortBy: true, + maxWidth: 50, + Cell: (props: CellProps) => { + const moreOptions = () => { + const options = _buildManagedContextMenuOptions( + iTwinActions, + props.row.original + ); + return options !== undefined ? options : []; + }; + + return ( + +
{ + e.stopPropagation(); + }} + > + +
+
+ ); + }, + }, + ], + }, + ], + [ + iTwinActions, + strings.tableColumnDescription, + strings.tableColumnLastModified, + strings.tableColumnName, + ] + ); + + return { + onRowClick, + columns, + }; +}; diff --git a/packages/modules/imodel-browser/src/containers/iModelGrid/IModelGrid.tsx b/packages/modules/imodel-browser/src/containers/iModelGrid/IModelGrid.tsx index ebcdffa8..6586809e 100644 --- a/packages/modules/imodel-browser/src/containers/iModelGrid/IModelGrid.tsx +++ b/packages/modules/imodel-browser/src/containers/iModelGrid/IModelGrid.tsx @@ -15,7 +15,7 @@ import { DataStatus, IModelFull, IModelSortOptions, - IModelViewType, + ViewType, } from "../../types"; import { _mergeStrings } from "../../utils/_apiOverrides"; import { ContextMenuBuilderItem } from "../../utils/_buildMenuOptions"; @@ -83,7 +83,9 @@ export interface IModelGridProps { /** Exact name of the iModel to display */ searchText?: string; /**iModel view mode */ - viewMode?: IModelViewType; + viewMode?: ViewType; + /** Maximum number of iModels to fetch, default is unlimited */ + maxCount?: number; } /** @@ -103,6 +105,7 @@ export const IModelGrid = ({ emptyStateComponent, searchText, viewMode, + maxCount, }: IModelGridProps) => { const [sort, setSort] = useState(sortOptions); const strings = _mergeStrings( @@ -129,6 +132,7 @@ export const IModelGrid = ({ iTwinId, sortOptions: sort, searchText, + maxCount, }); const iModels = React.useMemo( diff --git a/packages/modules/imodel-browser/src/containers/iModelGrid/useIModelData.test.ts b/packages/modules/imodel-browser/src/containers/iModelGrid/useIModelData.test.ts index 7f66ded7..f0f18c3c 100644 --- a/packages/modules/imodel-browser/src/containers/iModelGrid/useIModelData.test.ts +++ b/packages/modules/imodel-browser/src/containers/iModelGrid/useIModelData.test.ts @@ -16,7 +16,10 @@ describe("useIModelData hook", () => { // so they don't affect other tests. afterEach(() => server.resetHandlers()); // Clean up after the tests are finished. - afterAll(() => server.close()); + afterAll(() => { + server.close(); + jest.clearAllMocks(); + }); it("returns the data and proper status on successful call", async () => { const { result, waitForNextUpdate } = renderHook(() => @@ -185,4 +188,35 @@ describe("useIModelData hook", () => { expectedSortOrder ); }); + + it("should call correct api when maxCount is provided", async () => { + // Arrange + const fetchSpy = jest.spyOn(window, "fetch"); + + // Act + const { result, waitForNextUpdate } = renderHook(() => + useIModelData({ + iTwinId: "iTwinId", + accessToken: "accessToken", + maxCount: 5, + }) + ); + await waitForNextUpdate(); + + // Assert + const opts = { + headers: { + Accept: "application/vnd.bentley.itwin-platform.v2+json", + Authorization: "accessToken", + Prefer: "return=representation", + }, + signal: new AbortController().signal, + }; + expect(result.current.status).toEqual(DataStatus.Complete); + expect(result.current.fetchMore).toBeUndefined(); + expect(fetchSpy).toHaveBeenCalledWith( + "https://api.bentley.com/imodels/?iTwinId=iTwinId&$skip=0&$top=5", + opts + ); + }); }); diff --git a/packages/modules/imodel-browser/src/containers/iModelGrid/useIModelData.ts b/packages/modules/imodel-browser/src/containers/iModelGrid/useIModelData.ts index a7142ce8..6e6d7150 100644 --- a/packages/modules/imodel-browser/src/containers/iModelGrid/useIModelData.ts +++ b/packages/modules/imodel-browser/src/containers/iModelGrid/useIModelData.ts @@ -19,6 +19,7 @@ export interface IModelDataHookOptions { sortOptions?: IModelSortOptions; apiOverrides?: ApiOverrides; searchText?: string | undefined; + maxCount?: number; } const PAGE_SIZE = 100; @@ -28,6 +29,7 @@ export const useIModelData = ({ sortOptions, apiOverrides, searchText, + maxCount, }: IModelDataHookOptions) => { const sortType = sortOptions?.sortType === "name" ? "name" : undefined; //Only available sort by API at the moment. const sortDescending = sortOptions?.descending; @@ -56,7 +58,14 @@ export const useIModelData = ({ setIModels([]); setPage(0); setMorePages(true); - }, [accessToken, iTwinId, apiOverrides?.data, apiOverrides, searchText]); + }, [ + accessToken, + iTwinId, + apiOverrides?.data, + apiOverrides, + searchText, + maxCount, + ]); // eslint-disable-next-line react-hooks/exhaustive-deps const abortController = useMemo(() => new AbortController(), [searchText]); @@ -85,7 +94,14 @@ export const useIModelData = ({ const sorting = sortType ? `&$orderBy=${sortType} ${sortDescending ? "desc" : "asc"}` : ""; - const paging = `&$skip=${page * PAGE_SIZE}&$top=${PAGE_SIZE}`; + const skip = page * PAGE_SIZE; + let top; + if (maxCount) { + top = Math.min(PAGE_SIZE, maxCount - skip); + } else { + top = PAGE_SIZE; + } + const paging = `&$skip=${skip}&$top=${top}`; const searching = searchText?.trim() ? `&name=${searchText}` : ""; const url = `${_getAPIServer( @@ -111,7 +127,10 @@ export const useIModelData = ({ }) .then((result: { iModels: IModelFull[] }) => { setStatus(DataStatus.Complete); - if (result.iModels.length !== PAGE_SIZE) { + if ( + result.iModels.length !== PAGE_SIZE || + result.iModels.length === maxCount + ) { setMorePages(false); } setIModels((imodels) => @@ -138,6 +157,7 @@ export const useIModelData = ({ searchText, sortDescending, sortType, + maxCount, ]); useEffect(() => { diff --git a/packages/modules/imodel-browser/src/tests/mocks/fileMock.ts b/packages/modules/imodel-browser/src/tests/mocks/fileMock.ts new file mode 100644 index 00000000..65e156fb --- /dev/null +++ b/packages/modules/imodel-browser/src/tests/mocks/fileMock.ts @@ -0,0 +1,5 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Bentley Systems, Incorporated. All rights reserved. + * See LICENSE.md in the project root for license terms and full copyright notice. + *--------------------------------------------------------------------------------------------*/ +/** Empty file because we are mapping icons to this file */ diff --git a/packages/modules/imodel-browser/src/types.ts b/packages/modules/imodel-browser/src/types.ts index a2fe4ee7..1e6b124a 100644 --- a/packages/modules/imodel-browser/src/types.ts +++ b/packages/modules/imodel-browser/src/types.ts @@ -91,4 +91,6 @@ export type ITwinStatus = | "active" | "inactive" | "trial"; -export type IModelViewType = "tile" | "cells"; +export type ViewType = "tile" | "cells"; +// Remove this IModelViewType with next major release i.e 2.0 +export type IModelViewType = ViewType; From b500370413160899e0cf3c4df471777fca1e0b84 Mon Sep 17 00:00:00 2001 From: AdminComponentsWorkflow Date: Thu, 7 Sep 2023 20:13:33 +0000 Subject: [PATCH 2/6] Update changelogs [skip ci] --- .../DanishM-limit_2023-08-30-09-47.json | 10 ---------- .../DanishM-tableView_2023-09-07-09-39.json | 10 ---------- .../raplemie-post1readme_2023-08-30-15-57.json | 10 ---------- packages/modules/imodel-browser/CHANGELOG.json | 15 +++++++++++++++ packages/modules/imodel-browser/CHANGELOG.md | 10 +++++++++- 5 files changed, 24 insertions(+), 31 deletions(-) delete mode 100644 common/changes/@itwin/imodel-browser-react/DanishM-limit_2023-08-30-09-47.json delete mode 100644 common/changes/@itwin/imodel-browser-react/DanishM-tableView_2023-09-07-09-39.json delete mode 100644 common/changes/@itwin/imodel-browser-react/raplemie-post1readme_2023-08-30-15-57.json diff --git a/common/changes/@itwin/imodel-browser-react/DanishM-limit_2023-08-30-09-47.json b/common/changes/@itwin/imodel-browser-react/DanishM-limit_2023-08-30-09-47.json deleted file mode 100644 index 6116bb1d..00000000 --- a/common/changes/@itwin/imodel-browser-react/DanishM-limit_2023-08-30-09-47.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@itwin/imodel-browser-react", - "comment": "Ability to limit iModel tiles", - "type": "minor" - } - ], - "packageName": "@itwin/imodel-browser-react" -} \ No newline at end of file diff --git a/common/changes/@itwin/imodel-browser-react/DanishM-tableView_2023-09-07-09-39.json b/common/changes/@itwin/imodel-browser-react/DanishM-tableView_2023-09-07-09-39.json deleted file mode 100644 index 44e3e0d2..00000000 --- a/common/changes/@itwin/imodel-browser-react/DanishM-tableView_2023-09-07-09-39.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@itwin/imodel-browser-react", - "comment": "Added table view for itwin grid", - "type": "minor" - } - ], - "packageName": "@itwin/imodel-browser-react" -} \ No newline at end of file diff --git a/common/changes/@itwin/imodel-browser-react/raplemie-post1readme_2023-08-30-15-57.json b/common/changes/@itwin/imodel-browser-react/raplemie-post1readme_2023-08-30-15-57.json deleted file mode 100644 index 2fe3fa0e..00000000 --- a/common/changes/@itwin/imodel-browser-react/raplemie-post1readme_2023-08-30-15-57.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@itwin/imodel-browser-react", - "comment": "", - "type": "none" - } - ], - "packageName": "@itwin/imodel-browser-react" -} \ No newline at end of file diff --git a/packages/modules/imodel-browser/CHANGELOG.json b/packages/modules/imodel-browser/CHANGELOG.json index 895ab907..cd3ebf6e 100644 --- a/packages/modules/imodel-browser/CHANGELOG.json +++ b/packages/modules/imodel-browser/CHANGELOG.json @@ -1,6 +1,21 @@ { "name": "@itwin/imodel-browser-react", "entries": [ + { + "version": "1.1.0", + "tag": "@itwin/imodel-browser-react_v1.1.0", + "date": "Thu, 07 Sep 2023 20:13:33 GMT", + "comments": { + "minor": [ + { + "comment": "Ability to limit iModel tiles" + }, + { + "comment": "Added table view for itwin grid" + } + ] + } + }, { "version": "1.0.1", "tag": "@itwin/imodel-browser-react_v1.0.1", diff --git a/packages/modules/imodel-browser/CHANGELOG.md b/packages/modules/imodel-browser/CHANGELOG.md index e0f25e04..6f23c456 100644 --- a/packages/modules/imodel-browser/CHANGELOG.md +++ b/packages/modules/imodel-browser/CHANGELOG.md @@ -1,6 +1,14 @@ # Change Log - @itwin/imodel-browser-react -This log was last generated on Wed, 02 Aug 2023 21:41:58 GMT and should not be manually modified. +This log was last generated on Thu, 07 Sep 2023 20:13:33 GMT and should not be manually modified. + +## 1.1.0 +Thu, 07 Sep 2023 20:13:33 GMT + +### Minor changes + +- Ability to limit iModel tiles +- Added table view for itwin grid ## 1.0.1 Wed, 02 Aug 2023 21:41:58 GMT From c0476427058dd5cff39c34936483f6cb62fa6647 Mon Sep 17 00:00:00 2001 From: AdminComponentsWorkflow Date: Thu, 7 Sep 2023 20:13:34 +0000 Subject: [PATCH 3/6] Bump versions [skip ci] --- packages/apps/storybook/package.json | 2 +- packages/modules/imodel-browser/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/apps/storybook/package.json b/packages/apps/storybook/package.json index 9ee89fef..2bb4651e 100644 --- a/packages/apps/storybook/package.json +++ b/packages/apps/storybook/package.json @@ -10,7 +10,7 @@ "@itwin/create-imodel-react": "^1.0.0", "@itwin/delete-imodel-react": "^1.0.0", "@itwin/delete-itwin-react": "^1.0.0", - "@itwin/imodel-browser-react": "~1.0.1", + "@itwin/imodel-browser-react": "~1.1.0", "@itwin/itwinui-react": "^2.11.4", "@itwin/manage-versions-react": "~1.0.0", "@itwin/storybook-auth-addon": "^0.1.0", diff --git a/packages/modules/imodel-browser/package.json b/packages/modules/imodel-browser/package.json index 351bd288..c1300aa9 100644 --- a/packages/modules/imodel-browser/package.json +++ b/packages/modules/imodel-browser/package.json @@ -2,7 +2,7 @@ "name": "@itwin/imodel-browser-react", "description": "Components that let the user browse the iModels of a context and select one.", "repository": "https://github.com/iTwin/admin-components-react/tree/main/packages/modules/imodel-browser", - "version": "1.0.1", + "version": "1.1.0", "main": "cjs/index.js", "module": "esm/index.js", "types": "cjs/index.d.ts", From 1d9a4f7f645d4faf8a62f51f8f9119dcf3c413eb Mon Sep 17 00:00:00 2001 From: SorexBentley <97873094+SorexBentley@users.noreply.github.com> Date: Thu, 14 Sep 2023 22:18:59 +0530 Subject: [PATCH 4/6] Providing default IModel thumbnail (#96) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Providing default IModel thumbnail * Adding change log * Fixing review comments * Update pnpm-lock --------- Co-authored-by: Raphaël LEMIEUX <1904889+raplemie@users.noreply.github.com> --- ...humbnail-for-imodels_2023-09-11-11-08.json | 10 ++++ common/config/rush/pnpm-lock.yaml | 54 +++++++++++++++++- packages/modules/imodel-browser/package.json | 15 ++--- .../modules/imodel-browser/rollup.config.js | 6 ++ .../iModelThumbnail/useIModelThumbnail.ts | 4 ++ .../src/images/default-thumbnail.png | Bin 0 -> 7208 bytes 6 files changed, 79 insertions(+), 10 deletions(-) create mode 100644 common/changes/@itwin/imodel-browser-react/sourabh-Providing-default-iModel-thumbnail-for-imodels_2023-09-11-11-08.json create mode 100644 packages/modules/imodel-browser/src/images/default-thumbnail.png diff --git a/common/changes/@itwin/imodel-browser-react/sourabh-Providing-default-iModel-thumbnail-for-imodels_2023-09-11-11-08.json b/common/changes/@itwin/imodel-browser-react/sourabh-Providing-default-iModel-thumbnail-for-imodels_2023-09-11-11-08.json new file mode 100644 index 00000000..317059fc --- /dev/null +++ b/common/changes/@itwin/imodel-browser-react/sourabh-Providing-default-iModel-thumbnail-for-imodels_2023-09-11-11-08.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@itwin/imodel-browser-react", + "comment": "Adding default iModel thumbnail for iModel grids in case API fails.", + "type": "patch" + } + ], + "packageName": "@itwin/imodel-browser-react" +} \ No newline at end of file diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index 9aef592d..6e3460a7 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -8,6 +8,7 @@ dependencies: '@itwin/itwinui-react': 2.11.4_react-dom@17.0.2+react@17.0.2 '@rollup/plugin-commonjs': 17.1.0_rollup@2.66.1 '@rollup/plugin-image': 2.1.1_rollup@2.66.1 + '@rollup/plugin-url': 8.0.1_rollup@2.66.1 '@rush-temp/admin-components-react-scripts': file:projects/admin-components-react-scripts.tgz '@rush-temp/create-imodel-react': file:projects/create-imodel-react.tgz_babel-eslint@10.1.0 '@rush-temp/delete-imodel-react': file:projects/delete-imodel-react.tgz_babel-eslint@10.1.0 @@ -32,6 +33,7 @@ dependencies: '@types/node': 14.18.9 '@types/react': 17.0.38 '@types/react-dom': 17.0.11 + '@types/react-table': 7.7.14 '@typescript-eslint/eslint-plugin': 4.33.0_959502c0ea240e86d4d2ba8b8c0fee45 '@typescript-eslint/parser': 4.33.0_eslint@7.32.0+typescript@4.5.5 babel-eslint: 10.1.0_eslint@7.32.0 @@ -2581,6 +2583,22 @@ packages: rollup: ^1.20.0 || ^2.0.0 resolution: integrity: sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg== + /@rollup/plugin-url/8.0.1_rollup@2.66.1: + dependencies: + '@rollup/pluginutils': 5.0.4_rollup@2.66.1 + make-dir: 3.1.0 + mime: 3.0.0 + rollup: 2.66.1 + dev: false + engines: + node: '>=14.0.0' + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + resolution: + integrity: sha512-8ajztphXb5e19dk3Iwjtm2eSYJR8jFQubZ8pJ1GG2MBMM7/qUedLnZAN+Vt4jqbcT/m27jfjIBocvrzV0giNRw== /@rollup/pluginutils/3.1.0_rollup@1.32.1: dependencies: '@types/estree': 0.0.39 @@ -2616,6 +2634,22 @@ packages: node: '>= 8.0.0' resolution: integrity: sha512-ROn4qvkxP9SyPeHaf7uQC/GPFY6L/OWy9+bd9AwcjOAWQwxRscoEyAUD8qCY5o5iL4jqQwoLk2kaTKJPb/HwzQ== + /@rollup/pluginutils/5.0.4_rollup@2.66.1: + dependencies: + '@types/estree': 1.0.1 + estree-walker: 2.0.2 + picomatch: 2.3.1 + rollup: 2.66.1 + dev: false + engines: + node: '>=14.0.0' + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + resolution: + integrity: sha512-0KJnIoRI8A+a1dqOYLxH8vBf8bphDmty5QvIm2hqm7oFCFYKCAZWWd2hXgMibaPsNDhI0AtpYfQZJG47pt/k4g== /@sinonjs/commons/1.8.3: dependencies: type-detect: 4.0.8 @@ -4349,6 +4383,10 @@ packages: dev: false resolution: integrity: sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw== + /@types/estree/1.0.1: + dev: false + resolution: + integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== /@types/glob/7.2.0: dependencies: '@types/minimatch': 3.0.5 @@ -13345,6 +13383,13 @@ packages: hasBin: true resolution: integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== + /mime/3.0.0: + dev: false + engines: + node: '>=10.0.0' + hasBin: true + resolution: + integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A== /mimic-fn/2.1.0: dev: false engines: @@ -20778,6 +20823,7 @@ packages: '@itwin/itwinui-icons-react': 2.2.0_react-dom@17.0.2+react@17.0.2 '@itwin/itwinui-react': 2.11.4_react-dom@17.0.2+react@17.0.2 '@rollup/plugin-commonjs': 17.1.0_rollup@2.66.1 + '@rollup/plugin-url': 8.0.1_rollup@2.66.1 '@svgr/rollup': 5.5.0 '@testing-library/react': 11.2.7_react-dom@17.0.2+react@17.0.2 '@testing-library/react-hooks': 5.1.3_fc2bb8a5b006d3f25c5f84ea777e678d @@ -20828,7 +20874,7 @@ packages: dev: false name: '@rush-temp/imodel-browser-react' resolution: - integrity: sha512-Ot7x5vnS5Tz8PzsU2mpG3MsTa1/ID5dnO60zs3w1P0sBaCiGHVG0vdUAJ06mZwbuhHm6ARbNM+mdlM9TJYUESA== + integrity: sha512-AXtIYkHD3AEa5cwcPFMrDAjkM4ulvwQ3NEAw9HjGvOx3aBPMtHBNQe7FGXvUBs13T4Mm+XSb8C2VlltIT7TTew== tarball: file:projects/imodel-browser-react.tgz version: 0.0.0 file:projects/manage-versions-react.tgz_babel-eslint@10.1.0: @@ -20878,7 +20924,7 @@ packages: peerDependencies: babel-eslint: '*' resolution: - integrity: sha512-Q2osImXor1STAG/8mCq2a/3fD4HEjDs0t0YxnKhzOg5ZpFkKEToRmzQ/AaZst+5bC0c8r57mzFdk/egSwUdJiA== + integrity: sha512-8cuABPKTCFw1AdGLXdicO2M9Iq5IQS2wiCmEr7ABN9m+WzfBro5P0ZydeYu0Yoi+GdiHLVitQBtRto0Lgud81w== tarball: file:projects/manage-versions-react.tgz version: 0.0.0 file:projects/platform-storybook.tgz_73e57467d4a9a5e376d6b84b6ab4e4b9: @@ -20926,7 +20972,7 @@ packages: prettier: '*' typescript: '*' resolution: - integrity: sha512-vM/yxDtJ5/eBkgr80iHuNsZ4xFXDSqdkgZL6+gJJHes7rGtMbgdBZm4RGUnIWDkMgQJROtVgaVMFwYuqNJzLsg== + integrity: sha512-lNudMkh2tbixDBHNwwxEuNeZd7x4Y6t/Xf/4RL5SYCARSOBBC2vS52ct4kRkXV5DoJI6QMqfpUjeL1SzwVx6Pw== tarball: file:projects/platform-storybook.tgz version: 0.0.0 file:projects/storybook-auth-addon.tgz_node-sass@6.0.1+prettier@2.5.1: @@ -20980,6 +21026,7 @@ specifiers: '@itwin/itwinui-react': ^2.11.4 '@rollup/plugin-commonjs': ~17.1.0 '@rollup/plugin-image': ^2.0.6 + '@rollup/plugin-url': ^8.0.1 '@rush-temp/admin-components-react-scripts': file:./projects/admin-components-react-scripts.tgz '@rush-temp/create-imodel-react': file:./projects/create-imodel-react.tgz '@rush-temp/delete-imodel-react': file:./projects/delete-imodel-react.tgz @@ -21004,6 +21051,7 @@ specifiers: '@types/node': ^14.14.35 '@types/react': ^17.0.37 '@types/react-dom': ^17.0.0 + '@types/react-table': ~7.7.14 '@typescript-eslint/eslint-plugin': ^4.20.0 '@typescript-eslint/parser': ^4.20.0 babel-eslint: ^10.0.0 diff --git a/packages/modules/imodel-browser/package.json b/packages/modules/imodel-browser/package.json index c1300aa9..7db4a42d 100644 --- a/packages/modules/imodel-browser/package.json +++ b/packages/modules/imodel-browser/package.json @@ -36,9 +36,10 @@ }, "devDependencies": { "@rollup/plugin-commonjs": "~17.1.0", + "@rollup/plugin-url": "^8.0.1", "@svgr/rollup": "^5.5.0", - "@testing-library/react-hooks": "^5.1.0", "@testing-library/react": "^11.1.0", + "@testing-library/react-hooks": "^5.1.0", "@types/jest": "^26.0.0", "@types/react": "^17.0.37", "@types/react-dom": "^17.0.0", @@ -46,6 +47,7 @@ "@typescript-eslint/eslint-plugin": "^4.20.0", "@typescript-eslint/parser": "^4.20.0", "babel-eslint": "^10.0.0", + "eslint": "^7.4.0", "eslint-config-airbnb": "^0.0.4", "eslint-config-prettier": "^6.11.0", "eslint-config-react-app": "^6.0.0", @@ -53,30 +55,29 @@ "eslint-plugin-import": "^2.22.0", "eslint-plugin-jsx-a11y": "^6.3.1", "eslint-plugin-prettier": "^3.1.4", - "eslint-plugin-react-hooks": "^4.0.7", "eslint-plugin-react": "^7.20.3", + "eslint-plugin-react-hooks": "^4.0.7", "eslint-plugin-simple-import-sort": "^5.0.3", - "eslint": "^7.4.0", "identity-obj-proxy": "^3.0.0", - "jest-fetch-mock": "^3.0.3", "jest": "^26.0.0", + "jest-fetch-mock": "^3.0.3", "msw": "^0.27.1", "node-sass": "^6.0.0", "postcss": "8.4.20", "prettier": "^2.0.5", + "react": "^17.0.2", "react-dom": "^17.0.2", "react-test-renderer": "^17.0.2", - "react": "^17.0.2", "rimraf": "^3.0.2", + "rollup": "^2.42.4", "rollup-plugin-peer-deps-external": "^2.2.4", "rollup-plugin-postcss": "^4.0.0", "rollup-plugin-typescript2": "^0.30.0", - "rollup": "^2.42.4", + "stylelint": "^13.6.1", "stylelint-config-prettier": "^8.0.2", "stylelint-config-sass-guidelines": "^7.0.0", "stylelint-prettier": "^1.1.2", "stylelint-scss": "^3.18.0", - "stylelint": "^13.6.1", "ts-jest": "^26.0.0", "tslib": "^2.1.0", "typescript": "^4.2.3" diff --git a/packages/modules/imodel-browser/rollup.config.js b/packages/modules/imodel-browser/rollup.config.js index 51fc4dbc..09aecaf5 100644 --- a/packages/modules/imodel-browser/rollup.config.js +++ b/packages/modules/imodel-browser/rollup.config.js @@ -3,6 +3,7 @@ * See LICENSE.md in the project root for license terms and full copyright notice. *--------------------------------------------------------------------------------------------*/ import commonjs from "@rollup/plugin-commonjs"; +import url from "@rollup/plugin-url"; import svgr from "@svgr/rollup"; import peerDepsExternal from "rollup-plugin-peer-deps-external"; import postcss from "rollup-plugin-postcss"; @@ -37,6 +38,11 @@ const rollupConfig = { }, }), terser(), + url({ + limit: 10 * 1024, // Adjust the limit as needed (e.g., 10 KB) + include: ["**/*.png"], // Include file extensions you want to handle (e.g., PNG) + emitFiles: true, // Emit the files to the output directory + }), ], }; diff --git a/packages/modules/imodel-browser/src/containers/iModelThumbnail/useIModelThumbnail.ts b/packages/modules/imodel-browser/src/containers/iModelThumbnail/useIModelThumbnail.ts index 273cb3d5..6e93fe67 100644 --- a/packages/modules/imodel-browser/src/containers/iModelThumbnail/useIModelThumbnail.ts +++ b/packages/modules/imodel-browser/src/containers/iModelThumbnail/useIModelThumbnail.ts @@ -4,6 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import { useEffect, useState } from "react"; +import defaultIModelThumbnail from "../../images/default-thumbnail.png"; import { ApiOverrides } from "../../types"; import { _getAPIServer } from "../../utils/_apiOverrides"; @@ -51,6 +52,9 @@ export const useIModelThumbnail = ( return response .arrayBuffer() .then(convertArrayBufferToUrlBase64PNG); + } else if (response.status === 404) { + // Handle 404 error by setting the default thumbnail + return Promise.resolve(defaultIModelThumbnail); } else { return response.text().then((errorText) => { throw new Error(errorText); diff --git a/packages/modules/imodel-browser/src/images/default-thumbnail.png b/packages/modules/imodel-browser/src/images/default-thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..4541d2806ecfe140f13b588749d9dd4f95821f41 GIT binary patch literal 7208 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 Date: Thu, 14 Sep 2023 16:51:06 +0000 Subject: [PATCH 5/6] Update changelogs [skip ci] --- ...Model-thumbnail-for-imodels_2023-09-11-11-08.json | 10 ---------- packages/modules/imodel-browser/CHANGELOG.json | 12 ++++++++++++ packages/modules/imodel-browser/CHANGELOG.md | 9 ++++++++- 3 files changed, 20 insertions(+), 11 deletions(-) delete mode 100644 common/changes/@itwin/imodel-browser-react/sourabh-Providing-default-iModel-thumbnail-for-imodels_2023-09-11-11-08.json diff --git a/common/changes/@itwin/imodel-browser-react/sourabh-Providing-default-iModel-thumbnail-for-imodels_2023-09-11-11-08.json b/common/changes/@itwin/imodel-browser-react/sourabh-Providing-default-iModel-thumbnail-for-imodels_2023-09-11-11-08.json deleted file mode 100644 index 317059fc..00000000 --- a/common/changes/@itwin/imodel-browser-react/sourabh-Providing-default-iModel-thumbnail-for-imodels_2023-09-11-11-08.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@itwin/imodel-browser-react", - "comment": "Adding default iModel thumbnail for iModel grids in case API fails.", - "type": "patch" - } - ], - "packageName": "@itwin/imodel-browser-react" -} \ No newline at end of file diff --git a/packages/modules/imodel-browser/CHANGELOG.json b/packages/modules/imodel-browser/CHANGELOG.json index cd3ebf6e..10e8ec88 100644 --- a/packages/modules/imodel-browser/CHANGELOG.json +++ b/packages/modules/imodel-browser/CHANGELOG.json @@ -1,6 +1,18 @@ { "name": "@itwin/imodel-browser-react", "entries": [ + { + "version": "1.1.1", + "tag": "@itwin/imodel-browser-react_v1.1.1", + "date": "Thu, 14 Sep 2023 16:51:06 GMT", + "comments": { + "patch": [ + { + "comment": "Adding default iModel thumbnail for iModel grids in case API fails." + } + ] + } + }, { "version": "1.1.0", "tag": "@itwin/imodel-browser-react_v1.1.0", diff --git a/packages/modules/imodel-browser/CHANGELOG.md b/packages/modules/imodel-browser/CHANGELOG.md index 6f23c456..cb7ed884 100644 --- a/packages/modules/imodel-browser/CHANGELOG.md +++ b/packages/modules/imodel-browser/CHANGELOG.md @@ -1,6 +1,13 @@ # Change Log - @itwin/imodel-browser-react -This log was last generated on Thu, 07 Sep 2023 20:13:33 GMT and should not be manually modified. +This log was last generated on Thu, 14 Sep 2023 16:51:06 GMT and should not be manually modified. + +## 1.1.1 +Thu, 14 Sep 2023 16:51:06 GMT + +### Patches + +- Adding default iModel thumbnail for iModel grids in case API fails. ## 1.1.0 Thu, 07 Sep 2023 20:13:33 GMT From 1769af09e0cc7403d9ac285671632d1ec9e73708 Mon Sep 17 00:00:00 2001 From: AdminComponentsWorkflow Date: Thu, 14 Sep 2023 16:51:07 +0000 Subject: [PATCH 6/6] Bump versions [skip ci] --- packages/apps/storybook/package.json | 2 +- packages/modules/imodel-browser/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/apps/storybook/package.json b/packages/apps/storybook/package.json index 2bb4651e..4fc43d50 100644 --- a/packages/apps/storybook/package.json +++ b/packages/apps/storybook/package.json @@ -10,7 +10,7 @@ "@itwin/create-imodel-react": "^1.0.0", "@itwin/delete-imodel-react": "^1.0.0", "@itwin/delete-itwin-react": "^1.0.0", - "@itwin/imodel-browser-react": "~1.1.0", + "@itwin/imodel-browser-react": "~1.1.1", "@itwin/itwinui-react": "^2.11.4", "@itwin/manage-versions-react": "~1.0.0", "@itwin/storybook-auth-addon": "^0.1.0", diff --git a/packages/modules/imodel-browser/package.json b/packages/modules/imodel-browser/package.json index 7db4a42d..f2062ce7 100644 --- a/packages/modules/imodel-browser/package.json +++ b/packages/modules/imodel-browser/package.json @@ -2,7 +2,7 @@ "name": "@itwin/imodel-browser-react", "description": "Components that let the user browse the iModels of a context and select one.", "repository": "https://github.com/iTwin/admin-components-react/tree/main/packages/modules/imodel-browser", - "version": "1.1.0", + "version": "1.1.1", "main": "cjs/index.js", "module": "esm/index.js", "types": "cjs/index.d.ts",