Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit63faec2

Browse files
show query variables in event handlers popup
1 parent5e1cf9e commit63faec2

File tree

2 files changed

+100
-76
lines changed

2 files changed

+100
-76
lines changed

‎client/packages/lowcoder/src/comps/controls/actionSelector/executeQueryAction.tsx

Lines changed: 94 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,98 @@ import { getPromiseAfterDispatch } from "util/promiseUtils";
99
import{trans}from"i18n";
1010
import{keyValueListControl,keyValueListToSearchStr,withDefault}from"lowcoder-sdk";
1111
import{KeyValue}from"@lowcoder-ee/types/common";
12+
import{useCallback,useContext,useEffect,useMemo}from"react";
1213

14+
constExecuteQueryPropertyView=({
15+
comp,
16+
placement,
17+
}:{
18+
comp:any,
19+
placement?:"query"|"table"
20+
})=>{
21+
constgetQueryOptions=useCallback((editorState?:EditorState)=>{
22+
constoptions:{label:string;value:string;variable?:Record<string,string>}[]=
23+
editorState
24+
?.queryCompInfoList()
25+
.map((info)=>{
26+
return{
27+
label:info.name,
28+
value:info.name,
29+
variable:info.data.variable,
30+
}
31+
})
32+
.filter(
33+
// Filter out the current query under query
34+
(option)=>{
35+
if(
36+
placement==="query"&&
37+
editorState.selectedBottomResType===BottomResTypeEnum.Query
38+
){
39+
returnoption.value!==editorState.selectedBottomResName;
40+
}
41+
returntrue;
42+
}
43+
)||[];
44+
45+
// input queries
46+
editorState
47+
?.getModuleLayoutComp()
48+
?.getInputs()
49+
.forEach((i)=>{
50+
const{ name, type}=i.getView();
51+
if(type===InputTypeEnum.Query){
52+
options.push({label:name,value:name});
53+
}
54+
});
55+
returnoptions;
56+
},[placement]);
57+
58+
constgetVariableOptions=useCallback((editorState?:EditorState)=>{
59+
returncomp.children.queryVariables.propertyView({
60+
label:trans("eventHandler.queryParams"),
61+
layout:"vertical",
62+
isStatic:true,
63+
keyFixed:true,
64+
});
65+
},[comp.children.queryVariables.getView()])
66+
67+
return(
68+
<>
69+
<BranchDiv$type={"inline"}>
70+
<EditorContext.Consumer>
71+
{(editorState)=>(
72+
<>
73+
<Dropdown
74+
showSearch={true}
75+
value={comp.children.queryName.getView()}
76+
options={getQueryOptions(editorState)}
77+
label={trans("eventHandler.selectQuery")}
78+
onChange={(value)=>{
79+
constoptions=getQueryOptions(editorState);
80+
constselectedQuery=options.find(option=>option.value===value);
81+
constvariables=selectedQuery ?Object.keys(selectedQuery.variable||{}) :[];
82+
comp.dispatchChangeValueAction({
83+
queryName:value,
84+
queryVariables:variables.map((variable)=>({key:variable,value:''})),
85+
});
86+
}}
87+
/>
88+
</>
89+
)}
90+
</EditorContext.Consumer>
91+
</BranchDiv>
92+
<BranchDiv>
93+
<EditorContext.Consumer>
94+
{(editorState)=>getVariableOptions(editorState)}
95+
</EditorContext.Consumer>
96+
</BranchDiv>
97+
</>
98+
);
99+
}
13100
constExecuteQueryTmpAction=(function(){
14101
constchildrenMap={
15102
queryName:SimpleNameComp,
16-
query:withDefault(keyValueListControl(false,[],"string"),[{key:"",value:""}])
103+
queryVariables:withDefault(keyValueListControl(false,[],"string"),[])
17104
};
18105
returnnewMultiCompBuilder(childrenMap,()=>{
19106
return()=>Promise.resolve(undefinedasunknown);
@@ -26,7 +113,7 @@ export class ExecuteQueryAction extends ExecuteQueryTmpAction {
26113
overridegetView(){
27114
constqueryName=this.children.queryName.getView();
28115
// const queryParams = keyValueListToSearchStr(Array.isArray(this?.children?.query) ? (this.children.query as unknown as any[]).map((i: any) => i.getView() as KeyValue) : []);
29-
constresult=Object.values(this.children.query.childrenasRecord<string,{
116+
constresult=Object.values(this.children.queryVariables.childrenasRecord<string,{
30117
children:{
31118
key:{unevaledValue:string},
32119
value:{unevaledValue:string}
@@ -56,80 +143,11 @@ export class ExecuteQueryAction extends ExecuteQueryTmpAction {
56143
}
57144

58145
propertyView({ placement}:{placement?:"query"|"table"}){
59-
constgetQueryOptions=(editorState?:EditorState)=>{
60-
constoptions:{label:string;value:string}[]=
61-
editorState
62-
?.queryCompInfoList()
63-
.map((info)=>({
64-
label:info.name,
65-
value:info.name,
66-
}))
67-
.filter(
68-
// Filter out the current query under query
69-
(option)=>{
70-
if(
71-
placement==="query"&&
72-
editorState.selectedBottomResType===BottomResTypeEnum.Query
73-
){
74-
returnoption.value!==editorState.selectedBottomResName;
75-
}
76-
returntrue;
77-
}
78-
)||[];
79-
80-
// input queries
81-
editorState
82-
?.getModuleLayoutComp()
83-
?.getInputs()
84-
.forEach((i)=>{
85-
const{ name, type}=i.getView();
86-
if(type===InputTypeEnum.Query){
87-
options.push({label:name,value:name});
88-
}
89-
});
90-
returnoptions;
91-
};
92-
constgetVariableOptions=(editorState?:EditorState)=>{
93-
constoptions=
94-
editorState
95-
?.getQueriesComp()
96-
.getView()
97-
.filter(
98-
// Filter out the current query under query
99-
(option)=>{
100-
returnoption.children.name.getView()===this.children.queryName.getView();
101-
}
102-
)||[];
103-
returnthis.children.query.propertyView({
104-
label:trans("eventHandler.queryParams"),
105-
layout:"vertical",
106-
isStatic:true,
107-
keyFixed:true,
108-
});
109-
}
110146
return(
111-
<>
112-
<BranchDiv$type={"inline"}>
113-
<EditorContext.Consumer>
114-
{(editorState)=>(
115-
<>
116-
<Dropdown
117-
showSearch={true}
118-
value={this.children.queryName.getView()}
119-
options={getQueryOptions(editorState)}
120-
label={trans("eventHandler.selectQuery")}
121-
onChange={(value)=>this.dispatchChangeValueAction({queryName:value})}
122-
/>
123-
</>
124-
)}
125-
</EditorContext.Consumer>
126-
</BranchDiv>
127-
<BranchDiv>
128-
<EditorContext.Consumer>
129-
{(editorState)=>getVariableOptions(editorState)}
130-
</EditorContext.Consumer>
131-
</BranchDiv>
132-
</>
133-
);
147+
<ExecuteQueryPropertyView
148+
comp={this}
149+
placement={placement}
150+
/>
151+
)
134152
}
135153
}

‎client/packages/lowcoder/src/comps/controls/eventHandlerControl.tsx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,12 +167,18 @@ const EventHandlerControlPropertyView = (props: {
167167
if(eventConfigs.length===0){
168168
return;
169169
}
170+
171+
constqueryVariables=editorState
172+
?.selectedOrFirstQueryComp()
173+
?.children.variables.children.variables.toJsonValue();
174+
170175
constqueryExecHandler={
171176
compType:"executeQuery",
172177
comp:{
173178
queryName:editorState
174179
?.selectedOrFirstQueryComp()
175180
?.children.name.getView(),
181+
queryVariables:queryVariables?.map((variable)=>({...variable,value:''})),
176182
},
177183
};
178184
constmessageHandler={

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp