Skip to content

Implemented pagination in some APIs. #1351

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 39 commits into from
Dec 4, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
16d8e1a
Added pagination ui
Imiss-U1025 Nov 14, 2024
b6d8a1b
Removed Your Folder Component
Imiss-U1025 Nov 26, 2024
efa56c3
Added utilities for pagination.
Imiss-U1025 Nov 26, 2024
a602426
Implemented pagination in Your App.
Imiss-U1025 Nov 26, 2024
fd62105
Implemented pagination in trash.
Imiss-U1025 Nov 27, 2024
3d9f56d
Imported types from util/pagination
Imiss-U1025 Nov 27, 2024
fa580fb
Added utilities for pagination.
Imiss-U1025 Nov 27, 2024
7bc6eb6
Implemented pagination in User Group List.
Imiss-U1025 Nov 27, 2024
41927a3
Implemented pagination in Data Sources.
Imiss-U1025 Nov 27, 2024
f2140e4
Implemented pagination in groupUsersPermission.
Imiss-U1025 Nov 27, 2024
8c82fd1
Implemented pagination in organizations's member.
Imiss-U1025 Nov 28, 2024
d65c2d5
Implemented pagination in Query Library and made fetchJsDatasourcePag…
Imiss-U1025 Nov 28, 2024
cce98cd
Implemented pagination in login.
Imiss-U1025 Nov 28, 2024
e2c1efc
Implemented realtime processing of create new folder in HomeView.
Imiss-U1025 Nov 28, 2024
3ce6469
Change search method in query library.
Imiss-U1025 Nov 28, 2024
a0a6fa1
Changed search method in Data Sources.
Imiss-U1025 Nov 28, 2024
b27f13f
Changed search method in marketplace.
Imiss-U1025 Nov 28, 2024
f51f681
Processed immediate activity in TrashView.
Imiss-U1025 Nov 29, 2024
cfe991d
Processed immediate activity in Your Apps.
Imiss-U1025 Nov 29, 2024
add7083
Processed immediate activity in Setting/UserGroup.
Imiss-U1025 Nov 29, 2024
a65c737
Added back button in your apps.
Imiss-U1025 Nov 29, 2024
1d41e80
Processed immediate activity in Query Library.
Imiss-U1025 Nov 29, 2024
4e1e0c0
Processed immediate activity in Data Sources.
Imiss-U1025 Nov 29, 2024
90648dc
Removed unnessary APIs.
Imiss-U1025 Nov 29, 2024
b332980
Fixed Search functions.
Imiss-U1025 Nov 29, 2024
34ce989
Fixed pagination of folders and UI.
Imiss-U1025 Nov 29, 2024
071e0ab
Fixed an issue that can not search Navigation.
Imiss-U1025 Nov 29, 2024
24469a3
Fixed loading indicator in setting/permission.
Imiss-U1025 Dec 1, 2024
56ff238
Fixed an issue that does not display 'Add member' button and 'Remove …
Imiss-U1025 Dec 2, 2024
346760c
Optimized called APIs and in User groups.
Imiss-U1025 Dec 2, 2024
3d75c3a
Fixed an issue that call double API in login.
Imiss-U1025 Dec 3, 2024
ffd2889
Does not show Pagination when No data in Data Source.
Imiss-U1025 Dec 3, 2024
32b3c3b
Implemented update-on-action when import file and create new Data Sou…
Imiss-U1025 Dec 3, 2024
bed5f55
Removed unnessary API calling (folders/elements) when first loading.
Imiss-U1025 Dec 3, 2024
6f9b821
Updating Yarn Lock
Dec 3, 2024
326d27e
Fixed an issue that app does not move to folder.
Imiss-U1025 Dec 3, 2024
9fcd924
Added categories dropdown button in Your apps.
Imiss-U1025 Dec 3, 2024
8886606
Fixed an Navigation issue in Trash and Your Apps.
Imiss-U1025 Dec 4, 2024
0364857
Merge branch 'dev' into feature-pagination
FalkWolsky Dec 4, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 23 additions & 12 deletions client/packages/lowcoder-design/src/components/Search.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -62,24 +62,35 @@ interface ISearch {
placeholder: string;
value: string;
onChange: (value: React.ChangeEvent<HTMLInputElement>) => void;
onEnterPress?: (value: string) => void; // Added for capturing Enter key press
disabled?: boolean;
}

export const Search = (props: ISearch & InputProps) => {
const { value, onChange, style, disabled, placeholder, ...others } = props;
const { value, onChange, style, disabled, placeholder, onEnterPress, ...others } = props;

const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
onChange && onChange(e);
};

// Handling Enter key press
const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {
if (e.key === 'Enter' && onEnterPress) {
onEnterPress(value);
}
};

return (
<SearchDiv style={style}>
<SearchInput
disabled={disabled}
placeholder={placeholder}
onChange={handleChange}
value={value}
prefix={<SearchIcon />}
{...others}
/>
</SearchDiv>
<SearchDiv style={style}>
<SearchInput
disabled={disabled}
placeholder={placeholder}
onChange={handleChange}
onKeyDown={handleKeyDown} // Listening for key down events
value={value}
prefix={<SearchIcon />}
{...others}
/>
</SearchDiv>
);
};
};
7 changes: 6 additions & 1 deletion client/packages/lowcoder/src/api/applicationApi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import {
SetAppEditingStatePayload,
UpdateAppPermissionPayload,
} from "redux/reduxActions/applicationActions";
import { ApiResponse, GenericApiResponse } from "./apiResponses";
import {ApiResponse, GenericApiResponse} from "./apiResponses";
import { JSONObject, JSONValue } from "util/jsonTypes";
import {
ApplicationDetail,
Expand All @@ -24,6 +24,7 @@ import {
} from "constants/applicationConstants";
import { CommonSettingResponseData } from "./commonSettingApi";
import { ResourceType } from "@lowcoder-ee/constants/queryConstants";
import {fetchAppRequestType, GenericApiPaginationResponse} from "@lowcoder-ee/util/pagination/type";

export interface HomeOrgMeta {
id: string;
Expand Down Expand Up @@ -108,6 +109,10 @@ class ApplicationApi extends Api {
return Api.get(ApplicationApi.newURLPrefix + "/list", { ...request, withContainerSize: false });
}

static fetchAllApplicationsPagination(request: fetchAppRequestType): AxiosPromise<GenericApiPaginationResponse<ApplicationMeta[]>> {
return Api.get(ApplicationApi.newURLPrefix + "/list", { ...request, withContainerSize: false, applicationStatus: "RECYCLED" });
}

static fetchAllModules(request: HomeDataPayload): AxiosPromise<ApplicationMeta[]> {
return Api.get(ApplicationApi.newURLPrefix + "/list", {
applicationType: AppTypeEnum.Module,
Expand Down
15 changes: 15 additions & 0 deletions client/packages/lowcoder/src/api/datasourceApi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,11 @@ import { JSONArray } from "util/jsonTypes";
import { AuthType, HttpOAuthGrantType } from "pages/datasource/form/httpDatasourceForm";
import { Datasource } from "@lowcoder-ee/constants/datasourceConstants";
import { DataSourcePluginMeta } from "lowcoder-sdk/dataSource";
import {
fetchDataSourcePaginationRequestType,
fetchDBRequestType,
GenericApiPaginationResponse
} from "@lowcoder-ee/util/pagination/type";

export interface PreparedStatementConfig {
enableTurnOffPreparedStatement: boolean;
Expand Down Expand Up @@ -164,6 +169,11 @@ export class DatasourceApi extends Api {
return Api.get(DatasourceApi.url + `/jsDatasourcePlugins?appId=${appId}`);
}

static fetchJsDatasourcePaginationByApp( request: fetchDataSourcePaginationRequestType ): AxiosPromise<GenericApiPaginationResponse<NodePluginDatasourceInfo[]>> {
const {appId, ...res} = request
return Api.get(DatasourceApi.url + `/jsDatasourcePlugins?appId=${appId}` ,{...res});
}

static fetchDatasourceByApp(appId: string): AxiosPromise<GenericApiResponse<DatasourceInfo[]>> {
return Api.get(DatasourceApi.url + `/listByApp?appId=${appId}`);
}
Expand All @@ -172,6 +182,11 @@ export class DatasourceApi extends Api {
return Api.get(DatasourceApi.url + `/listByOrg?orgId=${orgId}`);
}

static fetchDatasourcePaginationByOrg(request: fetchDBRequestType): AxiosPromise<GenericApiPaginationResponse<DatasourceInfo[]>> {
const {orgId, ...res} = request;
return Api.get(DatasourceApi.url + `/listByOrg?orgId=${orgId}`, {...res});
}

static createDatasource(
datasourceConfig: Partial<Datasource>
): AxiosPromise<GenericApiResponse<Datasource>> {
Expand Down
11 changes: 11 additions & 0 deletions client/packages/lowcoder/src/api/folderApi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@ import {
UpdateFolderPayload,
} from "../redux/reduxActions/folderActions";
import { ApplicationMeta, FolderMeta } from "../constants/applicationConstants";
import {
fetchFolderRequestType,
GenericApiPaginationResponse
} from "@lowcoder-ee/util/pagination/type";

export class FolderApi extends Api {
static url = "/folders";
Expand Down Expand Up @@ -40,4 +44,11 @@ export class FolderApi extends Api {
): AxiosPromise<GenericApiResponse<(ApplicationMeta | FolderMeta)[]>> {
return Api.get(FolderApi.url + `/elements`, { id: request.folderId });
}

static fetchFolderElementsPagination(
request: fetchFolderRequestType
): AxiosPromise<GenericApiPaginationResponse<(ApplicationMeta | FolderMeta)[]>> {
const {id, ...res} = request
return request.id ? Api.get(FolderApi.url + `/elements`,{id: id, ...res}) : Api.get(FolderApi.url + `/elements`, { ...request });
}
}
28 changes: 28 additions & 0 deletions client/packages/lowcoder/src/api/orgApi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,15 @@ import {
UpdateUserOrgRolePayload,
} from "redux/reduxActions/orgActions";
import { ApiResponse, GenericApiResponse } from "./apiResponses";
import {
ApiPaginationResponse,
fetchGroupUserRequestType,
fetchOrgsByEmailRequestType,
fetchOrgUserRequestType,
GenericApiPaginationResponse,
GroupUsersPaginationResponse,
orgGroupRequestType, OrgUsersPaginationResponse
} from "@lowcoder-ee/util/pagination/type";

export interface GroupUsersResponse extends ApiResponse {
data: {
Expand Down Expand Up @@ -66,6 +75,10 @@ export class OrgApi extends Api {
return Api.get(OrgApi.fetchGroupURL);
}

static fetchGroupPagination(request: orgGroupRequestType): AxiosPromise<GenericApiPaginationResponse<OrgGroup[]>> {
return Api.get(OrgApi.fetchGroupURL, {...request});
}

static deleteGroup(groupId: string): AxiosPromise<ApiResponse> {
return Api.delete(OrgApi.deleteGroupURL(groupId));
}
Expand All @@ -88,10 +101,20 @@ export class OrgApi extends Api {
return Api.get(OrgApi.fetchOrgUsersURL(orgId));
}

static fetchOrgUsersPagination(request:fetchOrgUserRequestType): AxiosPromise<OrgUsersPaginationResponse> {
const {orgId, ...res} = request;
return Api.get(OrgApi.fetchOrgUsersURL(orgId), {...res});
}

static fetchGroupUsers(groupId: string): AxiosPromise<GroupUsersResponse> {
return Api.get(OrgApi.fetchGroupUsersURL(groupId));
}

static fetchGroupUsersPagination(request: fetchGroupUserRequestType): AxiosPromise<GroupUsersPaginationResponse> {
const {groupId, ...res} = request;
return Api.get(OrgApi.fetchGroupUsersURL(groupId), {...res});
}

static deleteGroupUser(request: RemoveGroupUserPayload): AxiosPromise<ApiResponse> {
return Api.delete(OrgApi.deleteGroupUserURL(request.groupId), {
userId: request.userId,
Expand Down Expand Up @@ -145,6 +168,11 @@ export class OrgApi extends Api {
static fetchOrgsByEmail(email: string): AxiosPromise<ApiResponse> {
return Api.get(OrgApi.fetchOrgsByEmailURL(email));
}

static fetchOrgsPaginationByEmail(request: fetchOrgsByEmailRequestType): AxiosPromise<ApiPaginationResponse> {
const { email, ...rest } = request;
return Api.get(OrgApi.fetchOrgsByEmailURL(email), {...rest});
}
}

export default OrgApi;
5 changes: 5 additions & 0 deletions client/packages/lowcoder/src/api/queryLibraryApi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import Api from "./api";
import { AxiosPromise } from "axios";
import { GenericApiResponse } from "./apiResponses";
import { DatasourceType } from "@lowcoder-ee/constants/queryConstants";
import {fetchQueryLibraryPaginationRequestType, GenericApiPaginationResponse} from "@lowcoder-ee/util/pagination/type";

export interface LibraryQuery {
id: string;
Expand Down Expand Up @@ -49,6 +50,10 @@ export class QueryLibraryApi extends Api {
return Api.get(QueryLibraryApi.url + `/listByOrg`);
}

static fetchQueryLibraryPaginationByOrg(request: fetchQueryLibraryPaginationRequestType): AxiosPromise<GenericApiPaginationResponse<Array<LibraryQuery>>> {
return Api.get(QueryLibraryApi.url + `/listByOrg`, {...request});
}

static fetchQueryLibraryDropdown(): AxiosPromise<
GenericApiResponse<Array<LibraryQueryDropdownInfo>>
> {
Expand Down
6 changes: 3 additions & 3 deletions client/packages/lowcoder/src/components/TypographyText.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,9 @@ const StyledTypographyText = styled(AntdTypographyText)`
`;

export const TypographyText = (props: {
value: string;
editing: boolean;
onChange: (value: string) => void;
value?: string;
editing?: boolean;
onChange?: (value: string) => void;
}) => (
<StyledTypographyText
title={props.value}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,9 @@ const children = {
const QueryLibraryCompBase = simpleMultiComp(children);

export const QueryLibraryComp = class extends QueryLibraryCompBase {
propertyView(params: { onPublish: () => void; onHistoryShow: () => void }) {
propertyView(params: { onPublish: () => void; onHistoryShow: () => void; setModify: any; modify: boolean }) {
return (
<PropertyView comp={this} onPublish={params.onPublish} onHistoryShow={params.onHistoryShow} />
<PropertyView comp={this} onPublish={params.onPublish} onHistoryShow={params.onHistoryShow} setModify={params.setModify} modify={params.modify} />
);
}

Expand Down Expand Up @@ -99,11 +99,13 @@ function getMetaData(
}

const PropertyView = (props: {
comp: QueryLibraryCompType;
onPublish: () => void;
onHistoryShow: () => void;
comp: QueryLibraryCompType,
onPublish: () => void,
onHistoryShow: () => void,
setModify?: any
modify?: boolean
}) => {
const { comp, onPublish, onHistoryShow } = props;
const { comp, onPublish, onHistoryShow, setModify, modify } = props;

const reduxDispatch = useDispatch();

Expand Down Expand Up @@ -157,12 +159,16 @@ const PropertyView = (props: {
CustomModal.confirm({
title: trans("queryLibrary.deleteQueryLabel"),
content: trans("queryLibrary.deleteQueryContent"),
onConfirm: () =>
onConfirm: () =>{
reduxDispatch(
deleteQueryLibrary({
queryLibraryId: comp.children.query.children.id.getView(),
})
),
)
setTimeout(() => {
setModify(!modify);
}, 500);
},
confirmBtnType: "delete",
okText: trans("delete"),
})
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
export const BackButton = () =>{
return
<div>123</div>
}
Original file line number Diff line number Diff line change
Expand Up @@ -185,14 +185,14 @@ function NavLayoutPickModal(props: {
);
}

export const CreateDropdown = (props: { defaultVisible?: boolean; mode: HomeLayoutMode }) => {
const { defaultVisible, mode } = props;
export const CreateDropdown = (props: { defaultVisible?: boolean; mode: HomeLayoutMode; setModify: any; modify: boolean }) => {
const { defaultVisible, mode, setModify, modify} = props;
const [createDropdownVisible, setCreateDropdownVisible] = useState(false);
const [layoutPickerVisible, setLayoutPickerVisible] = useState(false);

const user = useSelector(getUser);

const [handleCreate, isCreating] = useCreateHomeRes();
const [handleCreate, isCreating] = useCreateHomeRes(setModify, modify);

const getCreateMenuItem = (type: HomeResTypeEnum, mode?: HomeLayoutMode): ItemType => {
if (
Expand Down
Loading
Loading