Przeglądaj źródła

Merge branch 'develop' into 1297-value-format

Nam Nguyen 11 miesięcy temu
rodzic
commit
68ca3e2e90

+ 9 - 18
frontend/taipy-gui/src/context/taipyReducers.ts

@@ -11,19 +11,19 @@
  * specific language governing permissions and limitations under the License.
  * specific language governing permissions and limitations under the License.
  */
  */
 
 
-import { Dispatch } from "react";
 import { PaletteMode } from "@mui/material";
 import { PaletteMode } from "@mui/material";
 import { createTheme, Theme } from "@mui/material/styles";
 import { createTheme, Theme } from "@mui/material/styles";
-import { io, Socket } from "socket.io-client";
 import merge from "lodash/merge";
 import merge from "lodash/merge";
+import { Dispatch } from "react";
+import { io, Socket } from "socket.io-client";
 
 
-import { TAIPY_CLIENT_ID, WsMessage, sendWsMessage } from "./wsUtils";
+import { FilterDesc } from "../components/Taipy/TableFilter";
+import { stylekitModeThemes, stylekitTheme } from "../themes/stylekit";
 import { getBaseURL, TIMEZONE_CLIENT } from "../utils";
 import { getBaseURL, TIMEZONE_CLIENT } from "../utils";
 import { parseData } from "../utils/dataFormat";
 import { parseData } from "../utils/dataFormat";
 import { MenuProps } from "../utils/lov";
 import { MenuProps } from "../utils/lov";
-import { FilterDesc } from "../components/Taipy/TableFilter";
-import { stylekitModeThemes, stylekitTheme } from "../themes/stylekit";
-import { getLocalStorageValue, storeClientId, IdMessage } from "./utils";
+import { getLocalStorageValue, IdMessage, storeClientId } from "./utils";
+import { ligthenPayload, sendWsMessage, TAIPY_CLIENT_ID, WsMessage } from "./wsUtils";
 
 
 enum Types {
 enum Types {
     SocketConnected = "SOCKET_CONNECTED",
     SocketConnected = "SOCKET_CONNECTED",
@@ -576,15 +576,6 @@ export const createRequestChartUpdateAction = (
         true
         true
     );
     );
 
 
-const ligtenPayload = (payload: Record<string, unknown>) => {
-    return Object.keys(payload || {}).reduce((pv, key) => {
-        if (payload[key] !== undefined) {
-            pv[key] = payload[key];
-        }
-        return pv;
-    }, {} as typeof payload);
-};
-
 export const createRequestTableUpdateAction = (
 export const createRequestTableUpdateAction = (
     name: string | undefined,
     name: string | undefined,
     id: string | undefined,
     id: string | undefined,
@@ -611,7 +602,7 @@ export const createRequestTableUpdateAction = (
         context,
         context,
         columns,
         columns,
         pageKey,
         pageKey,
-        ligtenPayload({
+        ligthenPayload({
             start: start,
             start: start,
             end: end,
             end: end,
             orderby: orderBy,
             orderby: orderBy,
@@ -655,7 +646,7 @@ export const createRequestInfiniteTableUpdateAction = (
         context,
         context,
         columns,
         columns,
         pageKey,
         pageKey,
-        ligtenPayload({
+        ligthenPayload({
             infinite: true,
             infinite: true,
             start: start,
             start: start,
             end: end,
             end: end,
@@ -745,7 +736,7 @@ export const createRequestUpdateAction = (
     type: Types.RequestUpdate,
     type: Types.RequestUpdate,
     name: "",
     name: "",
     context: context,
     context: context,
-    payload: ligtenPayload({
+    payload: ligthenPayload({
         id: id,
         id: id,
         names: names,
         names: names,
         refresh: forceRefresh,
         refresh: forceRefresh,

+ 10 - 1
frontend/taipy-gui/src/context/wsUtils.ts

@@ -51,6 +51,15 @@ export const sendWsMessage = (
         ack_id: ackId,
         ack_id: ackId,
         module_context: moduleContext,
         module_context: moduleContext,
     };
     };
-    socket?.emit("message", msg, serverAck);
+    socket?.emit("message", ligthenPayload(msg as unknown as Record<string, unknown>), serverAck);
     return ackId;
     return ackId;
 };
 };
+
+export const ligthenPayload = (payload: Record<string, unknown>) => {
+    return Object.keys(payload || {}).reduce((pv, key) => {
+        if (payload[key] !== undefined) {
+            pv[key] = payload[key];
+        }
+        return pv;
+    }, {} as typeof payload);
+};

+ 14 - 5
taipy/gui/gui.py

@@ -1167,14 +1167,14 @@ class Gui:
             }
             }
         )
         )
 
 
-    def __send_ws(self, payload: dict, allow_grouping=True) -> None:
+    def __send_ws(self, payload: dict, allow_grouping=True, send_back_only=False) -> None:
         grouping_message = self.__get_message_grouping() if allow_grouping else None
         grouping_message = self.__get_message_grouping() if allow_grouping else None
         if grouping_message is None:
         if grouping_message is None:
             try:
             try:
                 self._server._ws.emit(
                 self._server._ws.emit(
                     "message",
                     "message",
                     payload,
                     payload,
-                    to=self.__get_ws_receiver(),
+                    to=self.__get_ws_receiver(send_back_only),
                 )
                 )
                 time.sleep(0.001)
                 time.sleep(0.001)
             except Exception as e:  # pragma: no cover
             except Exception as e:  # pragma: no cover
@@ -1193,7 +1193,11 @@ class Gui:
     def __send_ack(self, ack_id: t.Optional[str]) -> None:
     def __send_ack(self, ack_id: t.Optional[str]) -> None:
         if ack_id:
         if ack_id:
             try:
             try:
-                self._server._ws.emit("message", {"type": _WsType.ACKNOWLEDGEMENT.value, "id": ack_id})
+                self._server._ws.emit(
+                    "message",
+                    {"type": _WsType.ACKNOWLEDGEMENT.value, "id": ack_id},
+                    to=self.__get_ws_receiver(True),
+                )
                 time.sleep(0.001)
                 time.sleep(0.001)
             except Exception as e:  # pragma: no cover
             except Exception as e:  # pragma: no cover
                 _warn(f"Exception raised in WebSocket communication (send ack) in '{self.__frame.f_code.co_name}'", e)
                 _warn(f"Exception raised in WebSocket communication (send ack) in '{self.__frame.f_code.co_name}'", e)
@@ -1208,7 +1212,10 @@ class Gui:
         )
         )
 
 
     def __send_ws_download(self, content: str, name: str, on_action: str) -> None:
     def __send_ws_download(self, content: str, name: str, on_action: str) -> None:
-        self.__send_ws({"type": _WsType.DOWNLOAD_FILE.value, "content": content, "name": name, "onAction": on_action})
+        self.__send_ws(
+            {"type": _WsType.DOWNLOAD_FILE.value, "content": content, "name": name, "onAction": on_action},
+            send_back_only=True,
+        )
 
 
     def __send_ws_alert(self, type: str, message: str, system_notification: bool, duration: int) -> None:
     def __send_ws_alert(self, type: str, message: str, system_notification: bool, duration: int) -> None:
         self.__send_ws(
         self.__send_ws(
@@ -1272,13 +1279,15 @@ class Gui:
             client_id,
             client_id,
         )
         )
 
 
-    def __get_ws_receiver(self) -> t.Union[t.List[str], t.Any, None]:
+    def __get_ws_receiver(self, send_back_only=False) -> t.Union[t.List[str], t.Any, None]:
         if self._bindings()._is_single_client():
         if self._bindings()._is_single_client():
             return None
             return None
         sid = getattr(request, "sid", None) if request else None
         sid = getattr(request, "sid", None) if request else None
         sids = self.__get_sids(self._get_client_id())
         sids = self.__get_sids(self._get_client_id())
         if sid:
         if sid:
             sids.add(sid)
             sids.add(sid)
+            if send_back_only:
+                return sid
         return list(sids)
         return list(sids)
 
 
     def __get_sids(self, client_id: str) -> t.Set[str]:
     def __get_sids(self, client_id: str) -> t.Set[str]: