Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 4290783

Browse files
authored
Merge pull request lowcoder-org#290 from lvhuichao/develop
1. fix lost global hook vars; 2. rename AuthenticationUser to AuthUser; 3. support cookie forwards for rest api plugin; 4. support get all org-members page by page.
2 parents 5eab2f7 + 4adcbf8 commit 4290783

File tree

38 files changed

+360
-106
lines changed

38 files changed

+360
-106
lines changed

client/packages/openblocks/src/components/resultPanel/BottomResultPanel.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ export const BottomResultPanel = (props: BottomResultPanelProps) => {
5757
<Draggable
5858
disabled={unDraggable}
5959
bounds={bounds}
60+
enableUserSelectHack={false}
6061
onStart={(event, uiData) => {
6162
const { clientWidth, clientHeight } = window.document.documentElement;
6263
const targetRect = draggableRef.current?.getBoundingClientRect();

client/packages/openblocks/src/comps/comps/dataChangeResponderComp.tsx

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -99,17 +99,17 @@ class DataChangeResponderAsBottomRes extends DataResponderItemCompBase implement
9999
}
100100
reduce(action: CompAction<any>) {
101101
if (action.type === CompActionTypes.UPDATE_NODES_V2) {
102-
const depends = this.children.data.node().dependValues();
102+
const value = action.value.data.value;
103103
const dsl = this.children.data.toJsonValue();
104-
const lastDependsKey = "__data_responder_data_last_depends";
105-
const lastDslKey = "__data_responder_last_node";
104+
const lastDataValueKey = "__data_responder_data_last_value";
105+
const lastDataDslKey = "__data_responder_last_dsl";
106106
const target = this as any;
107-
const preDepends = target[lastDependsKey];
108-
const preDsl = target[lastDslKey];
109-
const dependsChanged = !_.isEqual(preDepends, depends);
107+
const preValue = target[lastDataValueKey];
108+
const preDsl = target[lastDataDslKey];
109+
const valueChanged = !_.isEqual(preValue, value);
110110
const dslNotChanged = _.isEqual(preDsl, dsl);
111111

112-
if (dependsChanged && dslNotChanged) {
112+
if (valueChanged && dslNotChanged) {
113113
const onEvent = this.children.onEvent.getView();
114114
setTimeout(() => {
115115
onEvent("dataChange");
@@ -118,8 +118,8 @@ class DataChangeResponderAsBottomRes extends DataResponderItemCompBase implement
118118

119119
const next = super.reduce(action);
120120
return setFieldsNoTypeCheck(next, {
121-
[lastDependsKey]: depends,
122-
[lastDslKey]: dsl,
121+
[lastDataValueKey]: value,
122+
[lastDataDslKey]: dsl,
123123
});
124124
}
125125
return super.reduce(action);

client/packages/openblocks/src/comps/comps/layout/layoutMenuItemComp.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import {
1212
} from "comps/generators/multi";
1313
import { genRandomKey } from "comps/utils/idGenerator";
1414
import { AppTypeEnum } from "constants/applicationConstants";
15-
import { BranchDiv, Dropdown } from "openblocks-design";
15+
import { BranchDiv, Dropdown, Treediv } from "openblocks-design";
1616
import _ from "lodash";
1717
import { ReactNode, useEffect, useMemo } from "react";
1818
import { useDispatch, useSelector } from "react-redux";
@@ -130,7 +130,7 @@ export class LayoutMenuItemComp extends MultiBaseComp<ChildrenType> {
130130
label: trans("aggregation.hideWhenNoPermission"),
131131
})}
132132
{isLeaf && (
133-
<>
133+
<Treediv>
134134
<BranchDiv>
135135
{this.children.queryParam.propertyView({
136136
label: trans("aggregation.queryParam"),
@@ -143,7 +143,7 @@ export class LayoutMenuItemComp extends MultiBaseComp<ChildrenType> {
143143
layout: "vertical",
144144
})}
145145
</BranchDiv>
146-
</>
146+
</Treediv>
147147
)}
148148
</>
149149
);

client/packages/openblocks/src/comps/comps/mediaComp/audioComp.tsx

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,14 @@ import { StringStateControl } from "../../controls/codeStateControl";
55
import { UICompBuilder } from "../../generators";
66
import { NameConfig, NameConfigHidden, withExposingConfigs } from "../../generators/withExposing";
77
import { RecordConstructorToView } from "openblocks-core";
8-
import { useRef } from "react";
98
import { styleControl } from "comps/controls/styleControl";
109
import { ImageStyle } from "comps/controls/styleControlConstants";
1110
import { TacoAudio } from "openblocks-design";
1211
import { BoolControl } from "comps/controls/boolControl";
1312
import { withDefault } from "../../generators/simpleGenerators";
1413
import { trans } from "i18n";
1514
import { hiddenPropertyView } from "comps/utils/propertyUtils";
16-
import { RefControl } from "comps/controls/refControl";
17-
import { refMethods } from "comps/generators/withMethodExposing";
18-
import ReactPlayer from "react-player";
15+
import { mediaCommonChildren, mediaMethods } from "./mediaUtils";
1916

2017
const Container = styled.div`
2118
height: 100%;
@@ -42,10 +39,8 @@ const EventOptions = [
4239
] as const;
4340

4441
const ContainerAudio = (props: RecordConstructorToView<typeof childrenMap>) => {
45-
const conRef = useRef<HTMLDivElement>(null);
46-
4742
return (
48-
<Container ref={conRef}>
43+
<Container ref={props.containerRef}>
4944
<TacoAudio
5045
audioRef={props.viewRef}
5146
url={props.src.value}
@@ -65,7 +60,7 @@ const childrenMap = {
6560
style: styleControl(ImageStyle),
6661
autoPlay: BoolControl,
6762
loop: BoolControl,
68-
viewRef: RefControl<ReactPlayer>,
63+
...mediaCommonChildren,
6964
};
7065

7166
let AudioBasicComp = (function () {
@@ -93,7 +88,7 @@ let AudioBasicComp = (function () {
9388
</>
9489
);
9590
})
96-
.setExposeMethodConfigs(refMethods(["seekTo", "showPreview"]))
91+
.setExposeMethodConfigs(mediaMethods())
9792
.build();
9893
})();
9994

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
import { RefControl } from "comps/controls/refControl";
2+
import { ToInstanceType } from "comps/generators/multi";
3+
import {
4+
ExposeMethodCompConstructor,
5+
MethodConfigInfo,
6+
refMethods,
7+
} from "comps/generators/withMethodExposing";
8+
import { trans } from "i18n";
9+
import { MultiBaseComp } from "openblocks-core";
10+
import ReactPlayer from "react-player";
11+
12+
export const mediaCommonChildren = {
13+
viewRef: RefControl<ReactPlayer>,
14+
containerRef: RefControl<HTMLDivElement>,
15+
};
16+
17+
type MediaCompType = ExposeMethodCompConstructor<
18+
MultiBaseComp<ToInstanceType<typeof mediaCommonChildren>>
19+
>;
20+
21+
export function mediaMethods(): MethodConfigInfo<MediaCompType>[] {
22+
return [
23+
...refMethods<MediaCompType>(["seekTo", "showPreview"]),
24+
{
25+
method: {
26+
name: "play",
27+
description: trans("media.playDesc"),
28+
params: [],
29+
},
30+
execute: (comp) => {
31+
const player = comp.children.viewRef.viewRef?.getInternalPlayer();
32+
if (player && player["play"]) {
33+
return (player as HTMLMediaElement).play();
34+
} else {
35+
const element = comp.children.containerRef.viewRef
36+
?.getElementsByClassName("react-player__preview")
37+
?.item(0);
38+
if (element) {
39+
(element as HTMLElement).click?.();
40+
}
41+
}
42+
},
43+
},
44+
{
45+
method: {
46+
name: "pause",
47+
description: trans("media.pauseDesc"),
48+
params: [],
49+
},
50+
execute: (comp) => {
51+
const player = comp.children.viewRef.viewRef?.getInternalPlayer();
52+
if (player && player["pause"]) {
53+
(player as HTMLMediaElement).pause();
54+
}
55+
},
56+
},
57+
{
58+
method: {
59+
name: "load",
60+
description: trans("media.loadDesc"),
61+
params: [],
62+
},
63+
execute: (comp) => {
64+
const player = comp.children.viewRef.viewRef?.getInternalPlayer();
65+
if (player && player["load"]) {
66+
(player as HTMLMediaElement).load();
67+
}
68+
},
69+
},
70+
];
71+
}

client/packages/openblocks/src/comps/comps/mediaComp/videoComp.tsx

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,7 @@ import { hiddenPropertyView } from "comps/utils/propertyUtils";
1515
import { trans } from "i18n";
1616
import { Video } from "openblocks-design";
1717
import ReactPlayer from "react-player";
18-
import { RefControl } from "comps/controls/refControl";
19-
import { refMethods } from "comps/generators/withMethodExposing";
18+
import { mediaCommonChildren, mediaMethods } from "./mediaUtils";
2019

2120
const EventOptions = [
2221
{ label: trans("video.play"), value: "play", description: trans("video.playDesc") },
@@ -27,10 +26,9 @@ const EventOptions = [
2726

2827
const ContainerVideo = (props: RecordConstructorToView<typeof childrenMap>) => {
2928
const videoRef = useRef<ReactPlayer | null>(null);
30-
const conRef = useRef<HTMLDivElement>(null);
3129
let [posterClicked, setPosterClicked] = useState(false);
3230
return (
33-
<Container ref={conRef}>
31+
<Container ref={props.containerRef}>
3432
<Video
3533
config={{
3634
file: {
@@ -84,7 +82,7 @@ const childrenMap = {
8482
playbackRate: RangeControl.closed(1, 2, 1),
8583
currentTimeStamp: numberExposingStateControl("currentTimeStamp", 0),
8684
duration: numberExposingStateControl("duration"),
87-
viewRef: RefControl<ReactPlayer>,
85+
...mediaCommonChildren,
8886
};
8987

9088
let VideoBasicComp = (function () {
@@ -129,7 +127,7 @@ let VideoBasicComp = (function () {
129127
</>
130128
);
131129
})
132-
.setExposeMethodConfigs(refMethods(["seekTo", "showPreview"]))
130+
.setExposeMethodConfigs(mediaMethods())
133131
.build();
134132
})();
135133

client/packages/openblocks/src/comps/hooks/hookListComp.tsx

Lines changed: 28 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { withDefault } from "comps/generators";
2-
import { list } from "comps/generators/list";
2+
import { list, ListDataType } from "comps/generators/list";
33
import { NameAndExposingInfo } from "comps/utils/exposingTypes";
44
import {
55
CompTree,
@@ -9,13 +9,36 @@ import {
99
} from "comps/comps/containerBase/utils";
1010
import { HookComp } from "./hookComp";
1111
import { hookCompCategory } from "./hookCompTypes";
12+
import { CompParams } from "openblocks-core";
13+
14+
const defaultHookListValue = [
15+
// { compType: "title", name: "title" },
16+
// { compType: "windowSize", name: "windowSize" },
17+
{ compType: "urlParams", name: "url" },
18+
{ compType: "momentJsLib", name: "moment" },
19+
{ compType: "lodashJsLib", name: "_" },
20+
{ compType: "utils", name: "utils" },
21+
{ compType: "message", name: "message" },
22+
{ compType: "localStorage", name: "localStorage" },
23+
{ compType: "currentUser", name: "currentUser" },
24+
{ compType: "theme", name: "theme" },
25+
] as const;
1226

1327
const HookListTmpComp = list(HookComp);
1428
const HookListTmp2Comp = class extends HookListTmpComp {
1529
getAllCompItems() {
1630
return getAllCompItems(this.getCompTree());
1731
}
1832

33+
override parseChildrenFromValue(params: CompParams<ListDataType<typeof HookComp>>) {
34+
const existed = (params.value || []).map((i) => i.compType);
35+
const lostItems = defaultHookListValue.filter((i) => !existed.includes(i.compType));
36+
return super.parseChildrenFromValue({
37+
...params,
38+
value: [...(params.value || []), ...lostItems],
39+
});
40+
}
41+
1942
private getCompTree(): CompTree {
2043
const compMap = Object.values(this.children).reduce<Record<string, HookComp>>((res, cur) => {
2144
res[cur.children.name.getView()] = cur;
@@ -71,16 +94,8 @@ const HookListTmp2Comp = class extends HookListTmpComp {
7194
}
7295
};
7396

74-
const HookListTmp3Comp = withDefault(HookListTmp2Comp, [
75-
// { compType: "title", name: "title" },
76-
// { compType: "windowSize", name: "windowSize" },
77-
{ compType: "urlParams", name: "url" },
78-
{ compType: "momentJsLib", name: "moment" },
79-
{ compType: "lodashJsLib", name: "_" },
80-
{ compType: "utils", name: "utils" },
81-
{ compType: "message", name: "message" },
82-
{ compType: "localStorage", name: "localStorage" },
83-
{ compType: "currentUser", name: "currentUser" },
84-
{ compType: "theme", name: "theme" },
85-
]);
97+
const HookListTmp3Comp = withDefault(
98+
HookListTmp2Comp,
99+
defaultHookListValue as unknown as ListDataType<typeof HookComp>
100+
);
86101
export const HookListComp = HookListTmp3Comp;

client/packages/openblocks/src/i18n/locales/en.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1239,6 +1239,11 @@ export const en = {
12391239
currentTimeStamp: "The current playback position of the video in seconds",
12401240
duration: "The total duration of the video in seconds",
12411241
},
1242+
media: {
1243+
playDesc: "Begins playback of the media.",
1244+
pauseDesc: "Pauses the media playback.",
1245+
loadDesc: "Resets the media to the beginning and restart selecting the media resource.",
1246+
},
12421247
rangeSlider: {
12431248
start: "Start value",
12441249
end: "End value",

server/api-service/build-ee.sh

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#!/bin/bash
2+
3+
# Remove previous dist directory
4+
rm -rf dist/
5+
6+
# Build the code. $@ accepts all the parameters from the input command line and uses it in the maven build command
7+
mvn clean package install "$@" -DskipTests -f ./pom-ee.xml -P selfhost-openblocks
8+
9+
if [ $? -eq 0 ]
10+
then
11+
echo "mvn Successful"
12+
else
13+
echo "mvn Failed"
14+
exit 1
15+
fi

server/api-service/build-majiang.sh

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#!/bin/bash
2+
3+
# Remove previous dist directory
4+
rm -rf dist/
5+
6+
# Build the code. $@ accepts all the parameters from the input command line and uses it in the maven build command
7+
mvn clean package install "$@" -DskipTests -f ./pom-ee.xml -P majiang
8+
9+
if [ $? -eq 0 ]
10+
then
11+
echo "mvn Successful"
12+
else
13+
echo "mvn Failed"
14+
exit 1
15+
fi

server/api-service/openblocks-domain/src/main/java/com/openblocks/domain/organization/service/OrgMemberService.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,16 @@
66

77
import com.openblocks.domain.organization.model.MemberRole;
88
import com.openblocks.domain.organization.model.OrgMember;
9-
import com.openblocks.infra.annotation.NonEmptyMono;
109
import com.openblocks.infra.annotation.PossibleEmptyMono;
1110

1211
import reactor.core.publisher.Flux;
1312
import reactor.core.publisher.Mono;
1413

1514
public interface OrgMemberService {
1615

17-
@NonEmptyMono
18-
Mono<List<OrgMember>> getOrganizationMembers(String orgId, int page, int count);
16+
Flux<OrgMember> getOrganizationMembers(String orgId);
17+
18+
Flux<OrgMember> getOrganizationMembers(String orgId, int page, int count);
1919

2020
Mono<OrgMember> getCurrentOrgMember(String userId);
2121

server/api-service/openblocks-domain/src/main/java/com/openblocks/domain/organization/service/OrgMemberServiceImpl.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import org.apache.commons.lang3.StringUtils;
1111
import org.bson.Document;
1212
import org.springframework.beans.factory.annotation.Autowired;
13+
import org.springframework.data.domain.PageRequest;
1314
import org.springframework.stereotype.Service;
1415

1516
import com.openblocks.domain.group.model.GroupMember;
@@ -24,6 +25,7 @@
2425
import com.openblocks.infra.birelation.BiRelation;
2526
import com.openblocks.infra.birelation.BiRelationService;
2627
import com.openblocks.infra.mongo.MongoUpsertHelper;
28+
import com.openblocks.infra.util.FluxHelper;
2729
import com.openblocks.sdk.config.CommonConfig;
2830
import com.openblocks.sdk.config.CommonConfig.Workspace;
2931
import com.openblocks.sdk.constants.WorkspaceMode;
@@ -55,10 +57,15 @@ public class OrgMemberServiceImpl implements OrgMemberService {
5557
private MongoUpsertHelper mongoUpsertHelper;
5658

5759
@Override
58-
public Mono<List<OrgMember>> getOrganizationMembers(String orgId, int page, int count) {
59-
return biRelationService.getBySourceId(ORG_MEMBER, orgId)
60-
.map(OrgMember::from)
61-
.collectList();
60+
public Flux<OrgMember> getOrganizationMembers(String orgId) {
61+
return FluxHelper.getAllPageByPage(pageable -> biRelationService.getBySourceId(ORG_MEMBER, orgId, pageable), PageRequest.ofSize(100))
62+
.map(OrgMember::from);
63+
}
64+
65+
@Override
66+
public Flux<OrgMember> getOrganizationMembers(String orgId, int page, int count) {
67+
return biRelationService.getBySourceId(ORG_MEMBER, orgId, PageRequest.of(page, count))
68+
.map(OrgMember::from);
6269
}
6370

6471
/**

0 commit comments

Comments
 (0)