@@ -2,7 +2,6 @@ package comp
22
33import (
44 js "encoding/json"
5- "fmt"
65 "io"
76 "net/http"
87
@@ -52,15 +51,17 @@ func (a action) Toast(value toast) action {
5251
5352// Transform transform the src value with transfor, and renderer the result to dst component
5453func (a action ) Transform (src , dst , successMsg string , transfor func (input any ) (any , error )) action {
55- return a .transform (src , dst , successMsg , transfor )
56- }
57-
58- // TransformMultipletransform the inputs(single or multiple) with transfor, and renderer the result to multiple destinates
59- func (a action ) TransformMultiple (inputs any , successMsg string , transfor func (any ) (any , error )) action {
60- return a .transform (inputs , "" , successMsg , transfor )
54+ return a .TransformMultiple ([]string {src }, successMsg , func (d Data ) (Data , error ) {
55+ output , err := transfor (d [src ])
56+ if err != nil {
57+ return nil , err
58+ }
59+ return Data {dst : output }, nil
60+ })
6161}
6262
63- func (a action ) transform (input any , dstKey , successMsg string , transfor func (any ) (any , error )) action {
63+ // TransformMultiple transform the src with transfor, and renderer the result to multiple destinates
64+ func (a action ) TransformMultiple (src []string , successMsg string , transfor func (Data ) (Data , error )) action {
6465 route := getRoute ()
6566 servermux .Mux ().HandleFunc (route , func (w http.ResponseWriter , r * http.Request ) {
6667 inputData , err := io .ReadAll (r .Body )
@@ -69,32 +70,29 @@ func (a action) transform(input any, dstKey, successMsg string, transfor func(an
6970 return
7071 }
7172 defer r .Body .Close ()
72- m := Schema {}
73- js .Unmarshal (inputData , & m )
74- input := m ["__amisgo__input" ]
75- output , err := transfor (input )
73+ d := Data {}
74+ err = js .Unmarshal (inputData , & d )
7675 if err != nil {
7776 respError (w , err )
7877 return
7978 }
80-
81- resp := Response {}
82- if dstKey != "" {
83- resp = Response {Msg : successMsg , Data : Data {dstKey : output }}
84- } else {
85- resp = Response {Msg : successMsg , Data : output .(Data )}
79+ output , err := transfor (d )
80+ if err != nil {
81+ respError (w , err )
82+ return
8683 }
84+ resp := SuccessResponse (successMsg , output )
8785 w .Write (resp .Json ())
8886 })
8987
90- ipt := input
91- if s , ok := input .( string ); ok {
92- ipt = fmt . Sprintf ( "${%s}" , s )
88+ data := make ( Data , len ( src ))
89+ for _ , s := range src {
90+ data . Set ( s , "${" + s + "}" )
9391 }
9492 return a .ActionType ("ajax" ).Api (
9593 Schema {
9694 "url" : route ,
97- "data" : Data { "__amisgo__input" : ipt } ,
95+ "data" : data ,
9896 "__amisgo_resp" : Schema {
9997 "200" : Schema {
10098 "then" : EventAction ().ActionType ("setValue" ).Args (Schema {"value" : "${__amisgo__resp}" }),
0 commit comments