@danikokonn/yarik-frontend-lib 2.0.3-3.legacy.test9 → 2.0.4-9.test4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/dist/components/ActionDialog/ActionDialog.d.ts +19 -0
  2. package/dist/components/ActionDialog/ActionDialog.d.ts.map +1 -1
  3. package/dist/components/ActionDialog/ActionDialog.js +19 -0
  4. package/dist/components/ActionDialog/ActionDialogProps.d.ts +15 -0
  5. package/dist/components/ActionDialog/ActionDialogProps.d.ts.map +1 -1
  6. package/dist/components/ColumnSearchInput/ColumnSearchInput.d.ts +12 -0
  7. package/dist/components/ColumnSearchInput/ColumnSearchInput.d.ts.map +1 -1
  8. package/dist/components/ColumnSearchInput/ColumnSearchInput.js +12 -0
  9. package/dist/components/ColumnSearchInput/ColumnSearchInputProps.d.ts +9 -0
  10. package/dist/components/ColumnSearchInput/ColumnSearchInputProps.d.ts.map +1 -1
  11. package/dist/components/DateTimeRangePicker/DateTimeRangePicker.d.ts +1 -1
  12. package/dist/components/DateTimeRangePicker/DateTimeRangePicker.d.ts.map +1 -1
  13. package/dist/components/DateTimeRangePicker/DateTimeRangePicker.js +3 -3
  14. package/dist/components/DateTimeRangePicker/DateTimeRangePickerProps.d.ts +1 -0
  15. package/dist/components/DateTimeRangePicker/DateTimeRangePickerProps.d.ts.map +1 -1
  16. package/dist/components/DatetimeRangeInput/DatetimeRangeInput.d.ts +21 -2
  17. package/dist/components/DatetimeRangeInput/DatetimeRangeInput.d.ts.map +1 -1
  18. package/dist/components/DatetimeRangeInput/DatetimeRangeInput.js +22 -3
  19. package/dist/components/DatetimeRangeInput/DatetimeRangeInputProps.d.ts +30 -0
  20. package/dist/components/DatetimeRangeInput/DatetimeRangeInputProps.d.ts.map +1 -1
  21. package/dist/components/Footer/Footer.d.ts.map +1 -1
  22. package/dist/components/Footer/Footer.js +2 -2
  23. package/dist/components/IpAddressSwitchableInput/IpAddressSwitchableInput.d.ts.map +1 -1
  24. package/dist/components/IpAddressSwitchableInput/IpAddressSwitchableInput.js +1 -1
  25. package/dist/components/Navigation/NavMenu.d.ts +3 -2
  26. package/dist/components/Navigation/NavMenu.d.ts.map +1 -1
  27. package/dist/components/Navigation/NavMenu.js +4 -3
  28. package/dist/components/Navigation/Navigation.d.ts +1 -1
  29. package/dist/components/Navigation/Navigation.d.ts.map +1 -1
  30. package/dist/components/Navigation/Navigation.js +15 -12
  31. package/dist/components/Navigation/NavigationProps.d.ts +2 -1
  32. package/dist/components/Navigation/NavigationProps.d.ts.map +1 -1
  33. package/dist/components/PageWrapper/PageWrapper.d.ts.map +1 -1
  34. package/dist/components/PageWrapper/PageWrapper.js +4 -3
  35. package/dist/components/RichFilterTextField/RichFilterTextField.d.ts +1 -1
  36. package/dist/components/RichFilterTextField/RichFilterTextField.d.ts.map +1 -1
  37. package/dist/components/RichFilterTextField/RichFilterTextField.js +104 -88
  38. package/dist/components/RichFilterTextField/RichFilterTextFieldProps.d.ts +4 -0
  39. package/dist/components/RichFilterTextField/RichFilterTextFieldProps.d.ts.map +1 -1
  40. package/dist/components/RichFilterTextField/utils.d.ts.map +1 -1
  41. package/dist/components/RichFilterTextField/utils.js +2 -2
  42. package/dist/components/SmartTable/RowContent.d.ts +22 -6
  43. package/dist/components/SmartTable/RowContent.d.ts.map +1 -1
  44. package/dist/components/SmartTable/RowContent.js +45 -29
  45. package/dist/components/SmartTable/SmartTable.d.ts +9 -1
  46. package/dist/components/SmartTable/SmartTable.d.ts.map +1 -1
  47. package/dist/components/SmartTable/SmartTable.js +117 -38
  48. package/dist/components/SmartTable/SmartTableProps.d.ts +21 -9
  49. package/dist/components/SmartTable/SmartTableProps.d.ts.map +1 -1
  50. package/dist/components/SmartTable/TableHeader.d.ts.map +1 -1
  51. package/dist/components/SmartTable/TableHeader.js +3 -2
  52. package/dist/components/SortBtn/SortBtn.d.ts.map +1 -1
  53. package/dist/components/SortBtn/SortBtn.js +2 -1
  54. package/dist/components/SubtaskItem/SubtaskItem.d.ts.map +1 -1
  55. package/dist/components/SubtaskItem/SubtaskItem.js +31 -11
  56. package/dist/components/TaskLoader/TaskLoader.d.ts +1 -1
  57. package/dist/components/TaskLoader/TaskLoader.d.ts.map +1 -1
  58. package/dist/components/TaskLoader/TaskLoader.js +24 -13
  59. package/dist/components/TaskLoader/TaskLoaderProps.d.ts +1 -0
  60. package/dist/components/TaskLoader/TaskLoaderProps.d.ts.map +1 -1
  61. package/dist/components/TaskStateDialog/TaskStateDialog.d.ts +1 -1
  62. package/dist/components/TaskStateDialog/TaskStateDialog.d.ts.map +1 -1
  63. package/dist/components/TaskStateDialog/TaskStateDialog.js +8 -5
  64. package/dist/components/TaskStateDialog/TaskStateDialogProps.d.ts +2 -1
  65. package/dist/components/TaskStateDialog/TaskStateDialogProps.d.ts.map +1 -1
  66. package/dist/components/icons/GenerateAndRunIcon.d.ts +1 -1
  67. package/dist/components/icons/GenerateAndRunIcon.d.ts.map +1 -1
  68. package/dist/components/icons/GenerateAndRunIcon.js +5 -2
  69. package/dist/components/icons/GenerateIcon.d.ts +1 -1
  70. package/dist/components/icons/GenerateIcon.d.ts.map +1 -1
  71. package/dist/components/icons/GenerateIcon.js +5 -2
  72. package/dist/components/icons/IntegerIcon.d.ts +1 -1
  73. package/dist/components/icons/IntegerIcon.d.ts.map +1 -1
  74. package/dist/components/icons/IntegerIcon.js +5 -2
  75. package/dist/components/icons/QueueIcon.d.ts +1 -1
  76. package/dist/components/icons/QueueIcon.d.ts.map +1 -1
  77. package/dist/components/icons/QueueIcon.js +5 -2
  78. package/dist/components/icons/RangeIcon.d.ts +1 -1
  79. package/dist/components/icons/RangeIcon.d.ts.map +1 -1
  80. package/dist/components/icons/RangeIcon.js +5 -2
  81. package/dist/components/icons/RunIcon.d.ts +1 -1
  82. package/dist/components/icons/RunIcon.d.ts.map +1 -1
  83. package/dist/components/icons/RunIcon.js +5 -2
  84. package/dist/http.d.ts +2 -2
  85. package/dist/http.d.ts.map +1 -1
  86. package/dist/http.js +4 -29
  87. package/dist/providers/AirflowProvider.d.ts +5 -4
  88. package/dist/providers/AirflowProvider.d.ts.map +1 -1
  89. package/dist/providers/AirflowProvider.js +41 -55
  90. package/dist/providers/DagStateProvider.d.ts +6 -5
  91. package/dist/providers/DagStateProvider.d.ts.map +1 -1
  92. package/dist/providers/DagStateProvider.js +35 -10
  93. package/dist/providers/SessionProvider.d.ts +3 -1
  94. package/dist/providers/SessionProvider.d.ts.map +1 -1
  95. package/dist/providers/SessionProvider.js +10 -4
  96. package/dist/providers/SnackBarProvider.d.ts +2 -2
  97. package/dist/providers/SnackBarProvider.d.ts.map +1 -1
  98. package/dist/providers/SnackBarProvider.js +1 -1
  99. package/dist/types.d.ts +17 -4
  100. package/dist/types.d.ts.map +1 -1
  101. package/dist/utils.d.ts +3 -3
  102. package/dist/utils.d.ts.map +1 -1
  103. package/dist/utils.js +3 -2
  104. package/package.json +27 -19
  105. package/dist/components/SmartTable/RuleRow.d.ts +0 -22
  106. package/dist/components/SmartTable/RuleRow.d.ts.map +0 -1
  107. package/dist/components/SmartTable/RuleRow.js +0 -40
@@ -1,5 +1,5 @@
1
- import React from "react";
2
1
  import { SvgIconOwnProps } from "@mui/material";
2
+ import React from "react";
3
3
  interface GenerateIconProps extends SvgIconOwnProps {
4
4
  disabled?: boolean;
5
5
  }
@@ -1 +1 @@
1
- {"version":3,"file":"GenerateIcon.d.ts","sourceRoot":"","sources":["../../../src/components/icons/GenerateIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAiB,eAAe,EAAY,MAAM,eAAe,CAAC;AAoGzE,UAAU,iBAAkB,SAAQ,eAAe;IACjD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,QAAA,MAAM,YAAY,GAAI,wBAAwB,iBAAiB,sBAW9D,CAAC;AAEF,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"GenerateIcon.d.ts","sourceRoot":"","sources":["../../../src/components/icons/GenerateIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,eAAe,EAAY,MAAM,eAAe,CAAC;AACzE,OAAO,KAAK,MAAM,OAAO,CAAC;AAoG1B,UAAU,iBAAkB,SAAQ,eAAe;IACjD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,QAAA,MAAM,YAAY,GAAI,wBAAwB,iBAAiB,sBAe9D,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -1,5 +1,5 @@
1
- import React from "react";
2
1
  import { createSvgIcon, useTheme } from "@mui/material";
2
+ import React from "react";
3
3
  const GenerateSvgIcon = createSvgIcon(React.createElement("svg", { width: "38", height: "38", xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 38 38", preserveAspectRatio: "xMidYMid", version: "1.1" },
4
4
  React.createElement("g", { className: "layer", display: "inline" },
5
5
  React.createElement("g", { id: "s", transform: "translate(-0.02 -0.02) matrix(1.63693 0 0 1.63225 -3.38016 7.32488)" },
@@ -22,6 +22,9 @@ const GenerateSvgIcon = createSvgIcon(React.createElement("svg", { width: "38",
22
22
  // todo: Обобщить, создать хук
23
23
  const GenerateIcon = ({ disabled, ...props }) => {
24
24
  const theme = useTheme();
25
- return disabled ? (React.createElement(GenerateSvgIcon, { sx: { "--disabled": theme.palette.action.disabled, ...props.sx }, ...props })) : (React.createElement(GenerateSvgIcon, { ...props }));
25
+ return disabled ? (React.createElement(GenerateSvgIcon, { sx: {
26
+ "--disabled": theme.vars?.palette.action.disabled || theme.palette.action.disabled,
27
+ ...props.sx,
28
+ }, ...props })) : (React.createElement(GenerateSvgIcon, { ...props }));
26
29
  };
27
30
  export default GenerateIcon;
@@ -1,5 +1,5 @@
1
- import React from "react";
2
1
  import { SvgIconOwnProps } from "@mui/material";
2
+ import React from "react";
3
3
  interface IntegerIconProps extends SvgIconOwnProps {
4
4
  disabled?: boolean;
5
5
  }
@@ -1 +1 @@
1
- {"version":3,"file":"IntegerIcon.d.ts","sourceRoot":"","sources":["../../../src/components/icons/IntegerIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAiB,eAAe,EAAY,MAAM,eAAe,CAAC;AAyBzE,UAAU,gBAAiB,SAAQ,eAAe;IAChD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,QAAA,MAAM,WAAW,GAAI,wBAAwB,gBAAgB,sBAW5D,CAAC;AAEF,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"IntegerIcon.d.ts","sourceRoot":"","sources":["../../../src/components/icons/IntegerIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,eAAe,EAAY,MAAM,eAAe,CAAC;AACzE,OAAO,KAAK,MAAM,OAAO,CAAC;AAyB1B,UAAU,gBAAiB,SAAQ,eAAe;IAChD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,QAAA,MAAM,WAAW,GAAI,wBAAwB,gBAAgB,sBAe5D,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -1,5 +1,5 @@
1
- import React from "react";
2
1
  import { createSvgIcon, useTheme } from "@mui/material";
2
+ import React from "react";
3
3
  const IntegerSvgIcon = createSvgIcon(React.createElement("svg", { fill: "var(--disabled, currentColor)", viewBox: "0 0 32 32", id: "icon", xmlns: "http://www.w3.org/2000/svg", stroke: "var(--disabled, currentColor)" },
4
4
  React.createElement("g", { id: "SVGRepo_bgCarrier", strokeWidth: "0" }),
5
5
  React.createElement("g", { id: "SVGRepo_tracerCarrier", strokeLinecap: "round", strokeLinejoin: "round" }),
@@ -10,6 +10,9 @@ const IntegerSvgIcon = createSvgIcon(React.createElement("svg", { fill: "var(--d
10
10
  // todo: Обобщить, создать хук
11
11
  const IntegerIcon = ({ disabled, ...props }) => {
12
12
  const theme = useTheme();
13
- return disabled ? (React.createElement(IntegerSvgIcon, { sx: { "--disabled": theme.palette.action.disabled, ...props.sx }, ...props })) : (React.createElement(IntegerSvgIcon, { ...props }));
13
+ return disabled ? (React.createElement(IntegerSvgIcon, { sx: {
14
+ "--disabled": theme.vars?.palette.action.disabled || theme.palette.action.disabled,
15
+ ...props.sx,
16
+ }, ...props })) : (React.createElement(IntegerSvgIcon, { ...props }));
14
17
  };
15
18
  export default IntegerIcon;
@@ -1,5 +1,5 @@
1
- import React from "react";
2
1
  import { SvgIconOwnProps } from "@mui/material";
2
+ import React from "react";
3
3
  interface QueueIconProps extends SvgIconOwnProps {
4
4
  disabled?: boolean;
5
5
  }
@@ -1 +1 @@
1
- {"version":3,"file":"QueueIcon.d.ts","sourceRoot":"","sources":["../../../src/components/icons/QueueIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAiB,eAAe,EAAY,MAAM,eAAe,CAAC;AA+BzE,UAAU,cAAe,SAAQ,eAAe;IAC9C,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,QAAA,MAAM,SAAS,GAAI,wBAAwB,cAAc,sBAWxD,CAAC;AAEF,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"QueueIcon.d.ts","sourceRoot":"","sources":["../../../src/components/icons/QueueIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,eAAe,EAAY,MAAM,eAAe,CAAC;AACzE,OAAO,KAAK,MAAM,OAAO,CAAC;AA+B1B,UAAU,cAAe,SAAQ,eAAe;IAC9C,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,QAAA,MAAM,SAAS,GAAI,wBAAwB,cAAc,sBAexD,CAAC;AAEF,eAAe,SAAS,CAAC"}
@@ -1,5 +1,5 @@
1
- import React from "react";
2
1
  import { createSvgIcon, useTheme } from "@mui/material";
2
+ import React from "react";
3
3
  const QueueSvgIcon = createSvgIcon(React.createElement("svg", { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", fill: "#000000" },
4
4
  React.createElement("g", { id: "SVGRepo_bgCarrier", strokeWidth: "0" }),
5
5
  React.createElement("g", { id: "SVGRepo_tracerCarrier", strokeLinecap: "round", strokeLinejoin: "round" }),
@@ -10,6 +10,9 @@ const QueueSvgIcon = createSvgIcon(React.createElement("svg", { viewBox: "0 0 24
10
10
  // todo: Обобщить, создать хук
11
11
  const QueueIcon = ({ disabled, ...props }) => {
12
12
  const theme = useTheme();
13
- return disabled ? (React.createElement(QueueSvgIcon, { sx: { "--disabled": theme.palette.action.disabled, ...props.sx }, ...props })) : (React.createElement(QueueSvgIcon, { ...props }));
13
+ return disabled ? (React.createElement(QueueSvgIcon, { sx: {
14
+ "--disabled": theme.vars?.palette.action.disabled || theme.palette.action.disabled,
15
+ ...props.sx,
16
+ }, ...props })) : (React.createElement(QueueSvgIcon, { ...props }));
14
17
  };
15
18
  export default QueueIcon;
@@ -1,5 +1,5 @@
1
- import React from "react";
2
1
  import { SvgIconOwnProps } from "@mui/material";
2
+ import React from "react";
3
3
  interface IpIconProps extends SvgIconOwnProps {
4
4
  disabled?: boolean;
5
5
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RangeIcon.d.ts","sourceRoot":"","sources":["../../../src/components/icons/RangeIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAiB,eAAe,EAAY,MAAM,eAAe,CAAC;AA8CzE,UAAU,WAAY,SAAQ,eAAe;IAC3C,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,QAAA,MAAM,MAAM,GAAI,wBAAwB,WAAW,sBAWlD,CAAC;AAEF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"RangeIcon.d.ts","sourceRoot":"","sources":["../../../src/components/icons/RangeIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,eAAe,EAAY,MAAM,eAAe,CAAC;AACzE,OAAO,KAAK,MAAM,OAAO,CAAC;AA8C1B,UAAU,WAAY,SAAQ,eAAe;IAC3C,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,QAAA,MAAM,MAAM,GAAI,wBAAwB,WAAW,sBAelD,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -1,5 +1,5 @@
1
- import React from "react";
2
1
  import { createSvgIcon, useTheme } from "@mui/material";
2
+ import React from "react";
3
3
  const IpSVGIcon = createSvgIcon(React.createElement("svg", { viewBox: "0 0 48 48", xmlns: "http://www.w3.org/2000/svg", fill: "#000000", stroke: "#000000", strokeWidth: "4.176" },
4
4
  React.createElement("g", { id: "SVGRepo_bgCarrier", strokeWidth: "0" }),
5
5
  React.createElement("g", { id: "SVGRepo_tracerCarrier", strokeLinecap: "round", strokeLinejoin: "round" }),
@@ -10,6 +10,9 @@ const IpSVGIcon = createSvgIcon(React.createElement("svg", { viewBox: "0 0 48 48
10
10
  // todo: Обобщить, создать хук
11
11
  const IpIcon = ({ disabled, ...props }) => {
12
12
  const theme = useTheme();
13
- return disabled ? (React.createElement(IpSVGIcon, { sx: { "--disabled": theme.palette.action.disabled, ...props.sx }, ...props })) : (React.createElement(IpSVGIcon, { ...props }));
13
+ return disabled ? (React.createElement(IpSVGIcon, { sx: {
14
+ "--disabled": theme.vars?.palette.action.disabled || theme.palette.action.disabled,
15
+ ...props.sx,
16
+ }, ...props })) : (React.createElement(IpSVGIcon, { ...props }));
14
17
  };
15
18
  export default IpIcon;
@@ -1,5 +1,5 @@
1
- import React from "react";
2
1
  import { SvgIconOwnProps } from "@mui/material";
2
+ import React from "react";
3
3
  interface RunIconProps extends SvgIconOwnProps {
4
4
  disabled?: boolean;
5
5
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RunIcon.d.ts","sourceRoot":"","sources":["../../../src/components/icons/RunIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAiB,eAAe,EAAY,MAAM,eAAe,CAAC;AAqDzE,UAAU,YAAa,SAAQ,eAAe;IAC5C,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,QAAA,MAAM,OAAO,GAAI,wBAAwB,YAAY,sBAWpD,CAAC;AAEF,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"RunIcon.d.ts","sourceRoot":"","sources":["../../../src/components/icons/RunIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,eAAe,EAAY,MAAM,eAAe,CAAC;AACzE,OAAO,KAAK,MAAM,OAAO,CAAC;AAqD1B,UAAU,YAAa,SAAQ,eAAe;IAC5C,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,QAAA,MAAM,OAAO,GAAI,wBAAwB,YAAY,sBAepD,CAAC;AAEF,eAAe,OAAO,CAAC"}
@@ -1,5 +1,5 @@
1
- import React from "react";
2
1
  import { createSvgIcon, useTheme } from "@mui/material";
2
+ import React from "react";
3
3
  const RunSvgIcon = createSvgIcon(React.createElement("svg", { width: "38", height: "38", xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 38 38", preserveAspectRatio: "xMidYMid", version: "1.1" },
4
4
  React.createElement("g", { className: "layer", display: "inline" },
5
5
  React.createElement("g", { id: "s", transform: "translate(-0.02 -0.02) matrix(1.63693 0 0 1.63225 -3.38016 7.32488)" },
@@ -13,6 +13,9 @@ const RunSvgIcon = createSvgIcon(React.createElement("svg", { width: "38", heigh
13
13
  // todo: Обобщить, создать хук
14
14
  const RunIcon = ({ disabled, ...props }) => {
15
15
  const theme = useTheme();
16
- return disabled ? (React.createElement(RunSvgIcon, { sx: { "--disabled": theme.palette.action.disabled, ...props.sx }, ...props })) : (React.createElement(RunSvgIcon, { ...props }));
16
+ return disabled ? (React.createElement(RunSvgIcon, { sx: {
17
+ "--disabled": theme.vars?.palette.action.disabled || theme.palette.action.disabled,
18
+ ...props.sx,
19
+ }, ...props })) : (React.createElement(RunSvgIcon, { ...props }));
17
20
  };
18
21
  export default RunIcon;
package/dist/http.d.ts CHANGED
@@ -6,8 +6,8 @@ interface BaseCallParamsPOST extends BaseCallParams {
6
6
  headers?: HeadersInit;
7
7
  }
8
8
  interface ExtraCallParams<T, P> {
9
- successHandler?: (resp?: T) => void;
10
- errorHandler?: (resp?: P & {
9
+ successHandler?: (resp: T) => void;
10
+ errorHandler?: (resp: P & {
11
11
  status: number;
12
12
  }) => void;
13
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA,UAAU,cAAc;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,UAAU,kBAAmB,SAAQ,cAAc;IACjD,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB;AAED,UAAU,eAAe,CAAC,CAAC,EAAE,CAAC;IAC5B,cAAc,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC;IACpC,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CACxD;AAED,KAAK,UAAU,CAAC,CAAC,EAAE,CAAC,IAAI,cAAc,GAAG,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/D,KAAK,cAAc,CAAC,CAAC,EAAE,CAAC,IAAI,kBAAkB,GAAG,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AA2BvE,wBAAsB,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,EAC5C,GAAG,EACH,IAAI,GACL,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAkBxD;AAED,wBAAsB,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,EAC7C,GAAG,EACH,IAAI,EACJ,OAAO,GACR,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAkB5D;AAED,wBAAsB,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,EACrC,GAAG,EACH,IAAI,EACJ,cAAc,EACd,YAAY,GACb,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBlC;AAED,wBAAsB,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,EACtC,GAAG,EACH,IAAI,EACJ,OAAO,EACP,cAAc,EACd,YAAY,GACb,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,iBAqBtB"}
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA,UAAU,cAAc;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,UAAU,kBAAmB,SAAQ,cAAc;IACjD,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB;AAED,UAAU,eAAe,CAAC,CAAC,EAAE,CAAC;IAC5B,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;IACnC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CACvD;AAED,KAAK,UAAU,CAAC,CAAC,EAAE,CAAC,IAAI,cAAc,GAAG,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/D,KAAK,cAAc,CAAC,CAAC,EAAE,CAAC,IAAI,kBAAkB,GAAG,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AA2BvE,wBAAsB,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,EAC5C,GAAG,EACH,IAAI,GACL,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAYxD;AAED,wBAAsB,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,EAC7C,GAAG,EACH,IAAI,EACJ,OAAO,GACR,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAY5D;AAED,wBAAsB,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,EACrC,GAAG,EACH,IAAI,EACJ,cAAc,EACd,YAAY,GACb,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBlC;AAED,wBAAsB,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,EACtC,GAAG,EACH,IAAI,EACJ,OAAO,EACP,cAAc,EACd,YAAY,GACb,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,iBActB"}
package/dist/http.js CHANGED
@@ -20,13 +20,7 @@ async function _postRequest({ url, data, headers }) {
20
20
  }
21
21
  export async function getRequestPromise({ url, data, }) {
22
22
  const resp = await _getRequest({ url, data });
23
- if (resp.redirected) {
24
- // #NOTE
25
- // На данный момент редирект - признак просроченной сессии,
26
- // так как на json запрос нет явного ответа редиректом, только через декоратор логина,
27
- // если же в будущем будет добавлен какой-то иной редирект в ответ за json запрос,
28
- // то нужно будет поменять код в данном блоке
29
- // location.reload();
23
+ if (resp.status === 401) {
30
24
  console.log("Session expired");
31
25
  }
32
26
  if (resp.ok) {
@@ -38,13 +32,7 @@ export async function getRequestPromise({ url, data, }) {
38
32
  }
39
33
  export async function postRequestPromise({ url, data, headers, }) {
40
34
  const resp = await _postRequest({ url, data, headers });
41
- if (resp.redirected) {
42
- // #NOTE
43
- // На данный момент редирект - признак просроченной сессии,
44
- // так как на json запрос нет явного ответа редиректом, только через декоратор логина,
45
- // если же в будущем будет добавлен какой-то иной редирект в ответ за json запрос,
46
- // то нужно будет поменять код в данном блоке
47
- // location.reload();
35
+ if (resp.status === 401) {
48
36
  console.log("Session expired");
49
37
  }
50
38
  if (resp.ok) {
@@ -56,13 +44,7 @@ export async function postRequestPromise({ url, data, headers, }) {
56
44
  }
57
45
  export async function getRequest({ url, data, successHandler, errorHandler, }) {
58
46
  const resp = await _getRequest({ url, data });
59
- if (resp.redirected) {
60
- // #NOTE
61
- // На данный момент редирект - признак просроченной сессии,
62
- // так как на json запрос нет явного ответа редиректом, только через декоратор логина,
63
- // если же в будущем будет добавлен какой-то иной редирект в ответ за json запрос,
64
- // то нужно будет поменять код в данном блоке
65
- // location.reload();
47
+ if (resp.status === 401) {
66
48
  console.log("Session expired");
67
49
  }
68
50
  if (resp.ok) {
@@ -78,14 +60,7 @@ export async function getRequest({ url, data, successHandler, errorHandler, }) {
78
60
  }
79
61
  export async function postRequest({ url, data, headers, successHandler, errorHandler, }) {
80
62
  const resp = await _postRequest({ url, data, headers });
81
- if (resp.redirected) {
82
- // #NOTE
83
- // На данный момент редирект - признак просроченной сессии,
84
- // так как на json запрос нет явного ответа редиректом, только через декоратор логина,
85
- // если же в будущем будет добавлен какой-то иной редирект в ответ за json запрос,
86
- // то нужно будет поменять код в данном блоке
87
- // location.reload();
88
- // Надо продумать этот вопрос получше
63
+ if (resp.status === 401) {
89
64
  console.log("Session expired");
90
65
  }
91
66
  if (resp.ok) {
@@ -1,13 +1,14 @@
1
1
  import React from "react";
2
2
  interface AirflowProviderProps {
3
3
  children?: React.ReactNode;
4
- dagId: string;
4
+ dagId?: string | null;
5
+ onUnauthorized(): void;
5
6
  }
6
- export declare const AirflowProvider: ({ children, dagId: _dagId, }: AirflowProviderProps) => React.JSX.Element;
7
+ export declare const AirflowProvider: ({ children, dagId: _dagId, onUnauthorized, }: AirflowProviderProps) => React.JSX.Element;
7
8
  export declare const useAirflowContext: () => {
9
+ dagId?: string | null;
8
10
  airflowAvailable: boolean;
9
- dagId: string;
10
- onChangeDagId(dagId: string): void;
11
+ onChangeDagId(dagId: string | null): void;
11
12
  onLostConnection(): void;
12
13
  };
13
14
  export default AirflowProvider;
@@ -1 +1 @@
1
- {"version":3,"file":"AirflowProvider.d.ts","sourceRoot":"","sources":["../../src/providers/AirflowProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AAgBf,UAAU,oBAAoB;IAC5B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,eAAe,GAAI,8BAG7B,oBAAoB,sBAsFtB,CAAC;AAEF,eAAO,MAAM,iBAAiB;sBA3GV,OAAO;WAClB,MAAM;yBACQ,MAAM,GAAG,IAAI;wBACd,IAAI;CA0GzB,CAAC;AAEF,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"AirflowProvider.d.ts","sourceRoot":"","sources":["../../src/providers/AirflowProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2D,MAAM,OAAO,CAAC;AAgBhF,UAAU,oBAAoB;IAC5B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,cAAc,IAAI,IAAI,CAAC;CACxB;AAED,eAAO,MAAM,eAAe,GAAI,8CAI7B,oBAAoB,sBAyEtB,CAAC;AAEF,eAAO,MAAM,iBAAiB;YAhGpB,MAAM,GAAG,IAAI;sBACH,OAAO;yBACJ,MAAM,GAAG,IAAI,GAAG,IAAI;wBACrB,IAAI;CA+FzB,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -1,70 +1,56 @@
1
- import React, { createContext, useCallback, useContext, useEffect, useState, } from "react";
2
- import { getRequest } from "../http";
1
+ import React, { createContext, useCallback, useContext, useState } from "react";
2
+ import useSWR from "swr";
3
3
  import { useSnackbarContext } from "./SnackBarProvider";
4
4
  const AirflowContext = createContext({
5
- airflowAvailable: false,
6
5
  dagId: "",
6
+ airflowAvailable: false,
7
7
  onChangeDagId: () => { },
8
8
  onLostConnection: () => { },
9
9
  });
10
- export const AirflowProvider = ({ children, dagId: _dagId, }) => {
11
- const [airflowAvailable, setAirflowAvailable] = useState(false);
10
+ export const AirflowProvider = ({ children, dagId: _dagId, onUnauthorized, }) => {
11
+ const fetcher = async (url) => {
12
+ const res = await fetch(url);
13
+ if (res.status === 401) {
14
+ onUnauthorized();
15
+ }
16
+ if (!res.ok && res.status !== 404) {
17
+ const error = new Error("An error occurred while fetching the data.");
18
+ throw { ...error, info: await res.json(), status: res.status };
19
+ }
20
+ return res.json();
21
+ };
22
+ const { enqueueSnackbar } = useSnackbarContext();
12
23
  const [dagId, setDagId] = useState(_dagId);
13
24
  const [firstRun, setFirstRun] = useState(true);
14
- const { enqueueSnackbar } = useSnackbarContext();
15
- const [channelBusy, setChannelBusy] = useState(false);
25
+ const [previousAirflowAvailable, setPreviousAirflowAvailable] = useState(false);
26
+ const { error, mutate } = useSWR("airflow/check_connection", fetcher, {
27
+ refreshInterval: 10000,
28
+ onSuccess: () => {
29
+ if (firstRun) {
30
+ setFirstRun(false);
31
+ }
32
+ else if (!previousAirflowAvailable) {
33
+ enqueueSnackbar("Соединение с Airflow установлено!", "info");
34
+ }
35
+ setPreviousAirflowAvailable(true);
36
+ },
37
+ onError: () => {
38
+ if (firstRun) {
39
+ enqueueSnackbar(`Не удалось установить соединение с Airflow!`, "warning");
40
+ setFirstRun(false);
41
+ }
42
+ else if (previousAirflowAvailable) {
43
+ enqueueSnackbar(`Потеряно соединение с Airflow!`, "warning");
44
+ }
45
+ setPreviousAirflowAvailable(false);
46
+ },
47
+ });
48
+ const airflowAvailable = error == null;
16
49
  const setContext = useCallback((dagId) => {
17
50
  setDagId(dagId);
18
51
  }, [dagId, setDagId]);
19
- const checkConnection = () => {
20
- setChannelBusy(true);
21
- getRequest({
22
- url: "airflow/check_connection",
23
- data: {},
24
- successHandler: (_resp) => {
25
- if (!airflowAvailable) {
26
- setAirflowAvailable(true);
27
- if (firstRun) {
28
- setFirstRun(false);
29
- return;
30
- }
31
- enqueueSnackbar("Соединение с Airflow установлено!", "info");
32
- }
33
- setChannelBusy(false);
34
- },
35
- errorHandler: (resp) => {
36
- if (!airflowAvailable && firstRun) {
37
- setFirstRun(false);
38
- enqueueSnackbar(`Не удалось установить соединение с Airflow!${(resp?.status == 401 && " Ошибка авторизации.") || ""}`, "warning");
39
- }
40
- if (airflowAvailable) {
41
- setAirflowAvailable(false);
42
- enqueueSnackbar(`Потеряно соединение с Airflow!${(resp?.status == 401 && " Ошибка авторизации.") || ""}`, "warning");
43
- }
44
- setChannelBusy(false);
45
- },
46
- }).catch((e) => {
47
- if (e)
48
- console.log(e);
49
- setChannelBusy(false);
50
- });
51
- };
52
- useEffect(() => {
53
- if (firstRun) {
54
- checkConnection();
55
- }
56
- const interval = setInterval(() => {
57
- if (channelBusy)
58
- return;
59
- checkConnection();
60
- }, 10000);
61
- return () => {
62
- clearInterval(interval);
63
- };
64
- }, [firstRun, airflowAvailable, dagId, channelBusy]);
65
52
  const onLostConnection = () => {
66
- setAirflowAvailable(false);
67
- enqueueSnackbar("Потеряно соединение с Airflow!", "warning");
53
+ mutate();
68
54
  };
69
55
  return (React.createElement(AirflowContext.Provider, { value: {
70
56
  airflowAvailable,
@@ -5,21 +5,22 @@ interface DagRunStateProviderProps {
5
5
  dagRun?: DagRun;
6
6
  autorun?: boolean;
7
7
  poolingByUser?: boolean;
8
- autorunHandler?(dagRun: DagRun | null, autorun: boolean): void;
9
8
  taskInstances?: TaskInstances;
10
- scanInterval?: number;
9
+ autorunHandler?(dagRun: DagRun | null, autorun: boolean): void;
10
+ onUnauthorized(): void;
11
11
  }
12
- export declare const DagRunStateProvider: ({ children, dagRun: _dagRun, autorun: _autorun, poolingByUser, taskInstances: _taskInstances, autorunHandler, scanInterval, }: DagRunStateProviderProps) => React.JSX.Element;
12
+ declare const DagRunStateProvider: ({ children, dagRun: _dagRun, autorun: _autorun, poolingByUser, taskInstances: _taskInstances, autorunHandler, onUnauthorized, }: DagRunStateProviderProps) => React.JSX.Element;
13
13
  export declare const useDagRunStateContext: () => {
14
14
  isActive: boolean;
15
15
  autorun: boolean;
16
16
  dagRun: DagRun | null;
17
17
  taskInstances: TaskInstances | null;
18
- onUpdateState(isActive: boolean, dagRun: DagRun, taskInstances: TaskInstances): void;
18
+ dagStartedOnce: boolean;
19
+ onUpdateState(isActive: boolean, dagRun: DagRun | null, taskInstances: TaskInstances | null): void;
20
+ onDagStarted: () => void;
19
21
  activate(): void;
20
22
  fetchState(): void;
21
23
  setAutorun(autorun: boolean): void;
22
- scanInterval: number;
23
24
  };
24
25
  export default DagRunStateProvider;
25
26
  //# sourceMappingURL=DagStateProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DagStateProvider.d.ts","sourceRoot":"","sources":["../../src/providers/DagStateProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AA+BjD,UAAU,wBAAwB;IAChC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAC/D,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,mBAAmB,GAAI,+HAQjC,wBAAwB,sBA2H1B,CAAC;AAEF,eAAO,MAAM,qBAAqB;cAxKtB,OAAO;aACR,OAAO;YACR,MAAM,GAAG,IAAI;mBACN,aAAa,GAAG,IAAI;4BAEvB,OAAO,UACT,MAAM,iBACC,aAAa,GAC3B,IAAI;gBACK,IAAI;kBACF,IAAI;wBACE,OAAO,GAAG,IAAI;kBACpB,MAAM;CA8JrB,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
1
+ {"version":3,"file":"DagStateProvider.d.ts","sourceRoot":"","sources":["../../src/providers/DagStateProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AAEf,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAgCjD,UAAU,wBAAwB;IAChC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,cAAc,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAC/D,cAAc,IAAI,IAAI,CAAC;CACxB;AAED,QAAA,MAAM,mBAAmB,GAAI,iIAQ1B,wBAAwB,sBAuJ1B,CAAC;AAEF,eAAO,MAAM,qBAAqB;cAtMtB,OAAO;aACR,OAAO;YACR,MAAM,GAAG,IAAI;mBACN,aAAa,GAAG,IAAI;oBACnB,OAAO;4BAEX,OAAO,UACT,MAAM,GAAG,IAAI,iBACN,aAAa,GAAG,IAAI,GAClC,IAAI;kBACO,MAAM,IAAI;gBACZ,IAAI;kBACF,IAAI;wBACE,OAAO,GAAG,IAAI;CA2LnC,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
@@ -7,15 +7,18 @@ const DagRunStateContext = createContext({
7
7
  autorun: false,
8
8
  dagRun: null,
9
9
  taskInstances: null,
10
+ dagStartedOnce: false,
10
11
  onUpdateState: () => { },
12
+ onDagStarted: () => { },
11
13
  fetchState: () => { },
12
14
  activate: () => { },
13
15
  setAutorun: () => { },
14
- scanInterval: 300,
15
16
  });
16
- export const DagRunStateProvider = ({ children, dagRun: _dagRun, autorun: _autorun, poolingByUser, taskInstances: _taskInstances, autorunHandler, scanInterval, }) => {
17
+ const DagRunStateProvider = ({ children, dagRun: _dagRun, autorun: _autorun, poolingByUser, taskInstances: _taskInstances, autorunHandler, onUnauthorized, }) => {
17
18
  const { airflowAvailable, dagId, onLostConnection } = useAirflowContext();
18
- const [isActive, setIsActive] = useState(_dagRun ? ["queued", "running"].includes(_dagRun.state) : dagId?.length > 0);
19
+ const [isActive, setIsActive] = useState(Boolean(_dagRun
20
+ ? ["queued", "running"].includes(_dagRun.state)
21
+ : dagId && dagId?.length > 0));
19
22
  const [channelBusy, setChannelBusy] = useState(false);
20
23
  const [autorun, setAutorun] = useState(_autorun || false);
21
24
  const activate = useCallback(() => {
@@ -23,11 +26,15 @@ export const DagRunStateProvider = ({ children, dagRun: _dagRun, autorun: _autor
23
26
  }, [isActive, setIsActive]);
24
27
  const [dagRun, setDagRun] = useState(_dagRun || null);
25
28
  const [taskInstances, setTaskInstances] = useState(_taskInstances || null);
29
+ const [dagStartedOnce, setDagStartedOnce] = useState(false);
26
30
  const { enqueueSnackbar } = useSnackbarContext();
31
+ // При изменении пропса dagId надо сбросить текущее состояние
27
32
  useEffect(() => {
28
33
  setDagRun(null);
34
+ setIsActive(true);
29
35
  setTaskInstances(null);
30
36
  }, [dagId]);
37
+ // Запрос ревалидации
31
38
  const updateState = () => {
32
39
  setChannelBusy(true);
33
40
  getRequest({
@@ -50,6 +57,9 @@ export const DagRunStateProvider = ({ children, dagRun: _dagRun, autorun: _autor
50
57
  setChannelBusy(false);
51
58
  },
52
59
  errorHandler: (resp) => {
60
+ if (resp?.status === 401) {
61
+ onUnauthorized();
62
+ }
53
63
  if (resp?.status !== 404) {
54
64
  enqueueSnackbar(`Ошибка при обновлении состояния задачи${(dagId && " ") || ""}${dagId || ""}!`, "error");
55
65
  }
@@ -62,10 +72,14 @@ export const DagRunStateProvider = ({ children, dagRun: _dagRun, autorun: _autor
62
72
  setChannelBusy(false);
63
73
  },
64
74
  }).catch((e) => {
75
+ if (e?.status === 401) {
76
+ onUnauthorized();
77
+ }
65
78
  console.log(e);
66
79
  setChannelBusy(false);
67
80
  });
68
81
  };
82
+ // Подписка на ревалидацию
69
83
  useEffect(() => {
70
84
  const interval = setInterval(() => {
71
85
  if (!airflowAvailable && !isActive)
@@ -80,10 +94,11 @@ export const DagRunStateProvider = ({ children, dagRun: _dagRun, autorun: _autor
80
94
  clearInterval(interval);
81
95
  };
82
96
  }, [airflowAvailable, isActive, dagRun, dagId, autorun, channelBusy]);
83
- useEffect(() => {
84
- if (dagRun == null)
85
- setIsActive(true);
86
- }, [dagRun]);
97
+ // Вроде как ненужный эффект
98
+ // useEffect(() => {
99
+ // if (dagRun == null) setIsActive(true);
100
+ // }, [dagRun]);
101
+ // Запуск autorunHandler при завершении dagRun
87
102
  useEffect(() => {
88
103
  if (!airflowAvailable)
89
104
  return;
@@ -92,21 +107,31 @@ export const DagRunStateProvider = ({ children, dagRun: _dagRun, autorun: _autor
92
107
  if (autorunHandler)
93
108
  autorunHandler(dagRun, autorun);
94
109
  }, [airflowAvailable, isActive, dagRun, autorun]);
95
- const onUpdateState = (isActive, dagRun, taskInstances) => {
110
+ const onUpdateState = (isActive, newDagRun, taskInstances) => {
96
111
  setIsActive(isActive);
97
- setDagRun(dagRun);
112
+ setDagRun(newDagRun);
113
+ if (newDagRun == null)
114
+ setIsActive(true);
98
115
  setTaskInstances(taskInstances);
99
116
  };
117
+ /**Вызывать сразу после запуска дага*/
118
+ const onDagStarted = () => {
119
+ setIsActive(true);
120
+ setDagRun(null);
121
+ setTaskInstances(null);
122
+ setDagStartedOnce(true);
123
+ };
100
124
  return (React.createElement(DagRunStateContext.Provider, { value: {
101
125
  isActive,
102
126
  autorun,
103
127
  dagRun,
104
128
  taskInstances,
129
+ dagStartedOnce,
105
130
  onUpdateState,
131
+ onDagStarted,
106
132
  activate,
107
133
  fetchState: updateState,
108
134
  setAutorun: (autorun) => setAutorun(autorun),
109
- scanInterval: scanInterval || 1,
110
135
  } }, children));
111
136
  };
112
137
  export const useDagRunStateContext = () => {
@@ -2,8 +2,10 @@ import React from "react";
2
2
  interface SessionProviderProps {
3
3
  children?: React.ReactNode;
4
4
  pollingInterval: number;
5
+ autoRedirect?: boolean;
6
+ onUnauthorized?(): void;
5
7
  }
6
- export declare const SessionProvider: ({ children, pollingInterval, }: SessionProviderProps) => React.JSX.Element;
8
+ declare const SessionProvider: ({ children, pollingInterval, autoRedirect, onUnauthorized, }: SessionProviderProps) => React.JSX.Element;
7
9
  export declare const useSessionContext: () => {
8
10
  expiresIn: number;
9
11
  };
@@ -1 +1 @@
1
- {"version":3,"file":"SessionProvider.d.ts","sourceRoot":"","sources":["../../src/providers/SessionProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyD,MAAM,OAAO,CAAC;AAU9E,UAAU,oBAAoB;IAC5B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,eAAO,MAAM,eAAe,GAAI,gCAG7B,oBAAoB,sBAwCtB,CAAC;AAEF,eAAO,MAAM,iBAAiB;eAvDjB,MAAM;CAyDlB,CAAC;AAEF,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"SessionProvider.d.ts","sourceRoot":"","sources":["../../src/providers/SessionProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyD,MAAM,OAAO,CAAC;AAU9E,UAAU,oBAAoB;IAC5B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,cAAc,CAAC,IAAI,IAAI,CAAC;CACzB;AAED,QAAA,MAAM,eAAe,GAAI,8DAKtB,oBAAoB,sBA8CtB,CAAC;AAEF,eAAO,MAAM,iBAAiB;eAjEjB,MAAM;CAmElB,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -1,21 +1,27 @@
1
1
  import React, { createContext, useContext, useEffect, useState } from "react";
2
- import { useSnackbarContext } from "./SnackBarProvider";
3
2
  import { getRequest } from "../http";
3
+ import { useSnackbarContext } from "./SnackBarProvider";
4
4
  const SessionContext = createContext({
5
5
  expiresIn: 0,
6
6
  });
7
- export const SessionProvider = ({ children, pollingInterval, }) => {
7
+ const SessionProvider = ({ children, pollingInterval, autoRedirect, onUnauthorized, }) => {
8
8
  const { enqueueSnackbar } = useSnackbarContext();
9
9
  const [expires, setExpires] = useState(false);
10
10
  const alertExpire = () => enqueueSnackbar("Сессия завершилась, перезагрузите страницу!", "default");
11
11
  const fetchSessionExpiryAge = () => getRequest({
12
12
  url: "base/check_session",
13
13
  successHandler: (_resp) => { },
14
- errorHandler: (_resp) => {
14
+ errorHandler: (e) => {
15
+ if (e?.status === 401 && autoRedirect && onUnauthorized) {
16
+ onUnauthorized();
17
+ }
15
18
  setExpires(true);
16
19
  alertExpire();
17
20
  },
18
- }).catch(() => {
21
+ }).catch((e) => {
22
+ if (e?.status === 401 && autoRedirect && onUnauthorized) {
23
+ onUnauthorized();
24
+ }
19
25
  setExpires(true);
20
26
  alertExpire();
21
27
  });
@@ -1,8 +1,8 @@
1
1
  import React from "react";
2
2
  interface SnackBarProps {
3
- children?: React.ReactNode;
3
+ children?: React.ReactNode | React.ReactNode[];
4
4
  }
5
- export declare const SnackBarProvider: ({ children }: SnackBarProps) => React.JSX.Element;
5
+ declare const SnackBarProvider: ({ children }: SnackBarProps) => React.JSX.Element;
6
6
  export declare const useSnackbarContext: () => {
7
7
  enqueueSnackbar(message: string, variant: "default" | "error" | "success" | "warning" | "info"): void;
8
8
  };
@@ -1 +1 @@
1
- {"version":3,"file":"SnackBarProvider.d.ts","sourceRoot":"","sources":["../../src/providers/SnackBarProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAC;AAezD,UAAU,aAAa;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AA8CD,eAAO,MAAM,gBAAgB,GAAI,cAAc,aAAa,sBAM3D,CAAC;AAEF,eAAO,MAAM,kBAAkB;6BA/DlB,MAAM,WACN,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,GAC5D,IAAI;CA+DR,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"SnackBarProvider.d.ts","sourceRoot":"","sources":["../../src/providers/SnackBarProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAC;AAezD,UAAU,aAAa;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;CAChD;AA8CD,QAAA,MAAM,gBAAgB,GAAI,cAAc,aAAa,sBAMpD,CAAC;AAEF,eAAO,MAAM,kBAAkB;6BA/DlB,MAAM,WACN,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,GAC5D,IAAI;CA+DR,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -25,7 +25,7 @@ const SnackBarProviderUtilities = ({ children }) => {
25
25
  enqueueSnackbar: handleEnqueueSnackbar,
26
26
  } }, children));
27
27
  };
28
- export const SnackBarProvider = ({ children }) => {
28
+ const SnackBarProvider = ({ children }) => {
29
29
  return (React.createElement(SnackbarProvider, { maxSnack: 5, autoHideDuration: 5000, preventDuplicate: true },
30
30
  React.createElement(SnackBarProviderUtilities, null, children)));
31
31
  };