quidproquo-web-admin 0.1.1 → 0.1.2
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.
- package/lib/commonjs/Auth/Auth.js +1 -1
- package/lib/commonjs/Auth/AuthChallengeMfaSetup/AuthChallengeMfaSetup.js +1 -1
- package/lib/commonjs/Auth/AuthChallengeNewPasswordRequired/AuthChallengeNewPasswordRequired.js +2 -2
- package/lib/commonjs/Auth/AuthChallengeSoftwareTokenMfa/AuthChallengeSoftwareTokenMfa.js +2 -2
- package/lib/commonjs/Auth/Login.js +2 -2
- package/lib/commonjs/Config/Config.js +3 -3
- package/lib/commonjs/LogViewer/ActionHistoryItem.js +1 -1
- package/lib/commonjs/LogViewer/ActionRender/ActionRender.js +3 -3
- package/lib/commonjs/LogViewer/AdminLogs/AdminLogGrid/AdminLogGrid.js +3 -3
- package/lib/commonjs/LogViewer/AdminLogs/AdminLogSearchBar/AdminLogSearchBar.js +4 -4
- package/lib/commonjs/LogViewer/AdminLogs/AdminLogs.js +1 -1
- package/lib/commonjs/LogViewer/Dashboard.js +8 -4
- package/lib/commonjs/LogViewer/EventTimeline.js +4 -4
- package/lib/commonjs/LogViewer/HelpChat/HelpChat.js +8 -7
- package/lib/commonjs/LogViewer/LogCorrelationTree.js +27 -24
- package/lib/commonjs/LogViewer/LogCorrelations.js +1 -1
- package/lib/commonjs/LogViewer/LogDetails.js +1 -1
- package/lib/commonjs/LogViewer/LogDialog/LogDialog.js +4 -4
- package/lib/commonjs/LogViewer/LogDialog/MovedToColdStorage/MovedToColdStorage.js +1 -1
- package/lib/commonjs/LogViewer/LogDialog/tabs/LogDetailsTab/LogDetailsTab.js +1 -1
- package/lib/commonjs/LogViewer/LogDialog/tabs/TimelineTab/TimelineTab.js +1 -1
- package/lib/commonjs/LogViewer/LogDialog/tabs/TreeTab/TreeTab.js +1 -1
- package/lib/commonjs/LogViewer/LogMetadataGrid.js +3 -3
- package/lib/commonjs/LogViewer/LogRawJson.js +1 -1
- package/lib/commonjs/LogViewer/LogSearch.js +1 -1
- package/lib/commonjs/LogViewer/LogSummary.js +2 -2
- package/lib/commonjs/LogViewer/LogSummaryDetails.js +4 -2
- package/lib/commonjs/LogViewer/LogSummaryReturn.js +1 -1
- package/lib/commonjs/LogViewer/TopSection.js +7 -7
- package/lib/commonjs/LogViewer/actionComponents/custom/CoreContextListCustomAction.js +1 -1
- package/lib/commonjs/LogViewer/actionComponents/custom/CoreLogCreateCustomAction.js +1 -1
- package/lib/commonjs/LogViewer/actionComponents/custom/CoreLogDisableEventHistoryCustomAction.js +1 -1
- package/lib/commonjs/LogViewer/actionComponents/custom/CoreLogTemplateLiteralCustomAction.js +1 -1
- package/lib/commonjs/LogViewer/actionComponents/custom/CoreNetworkRequestCustomAction.js +2 -2
- package/lib/commonjs/LogViewer/actionComponents/genericActionRenderer/ActionResultDisplay.js +1 -1
- package/lib/commonjs/LogViewer/actionComponents/genericActionRenderer/AnyVariableView/AnyVariableView.js +15 -15
- package/lib/commonjs/LogViewer/actionComponents/genericActionRenderer/getGenericActionRenderer.js +7 -4
- package/lib/commonjs/LogViewer/charts/CostPerService.js +1 -1
- package/lib/commonjs/LogViewer/charts/ErrorsByType.js +1 -1
- package/lib/commonjs/LogViewer/charts/ErrorsOverTime.js +1 -1
- package/lib/commonjs/LogViewer/charts/RequestsByService.js +2 -2
- package/lib/commonjs/LogViewer/hooks/useLogManagement.js +1 -1
- package/lib/commonjs/LogViewer/hooks/useLogTreeData.js +14 -11
- package/lib/commonjs/LogViewer/hooks/useServiceNames.js +6 -5
- package/lib/commonjs/components/AdminDialog.js +2 -2
- package/lib/commonjs/components/AsyncButton.js +1 -1
- package/lib/commonjs/components/AutocompleteInput.js +2 -2
- package/lib/commonjs/components/DataGrid.js +1 -1
- package/lib/commonjs/components/DataGridPagination/DataGridPagination.js +1 -1
- package/lib/commonjs/components/DateCell/DateCell.js +1 -1
- package/lib/commonjs/components/DateRangePicker.js +2 -2
- package/lib/commonjs/components/MainLayout/MainLayout.js +2 -2
- package/lib/commonjs/components/TextInput.js +2 -2
- package/lib/commonjs/tmp/RandomView.js +1 -1
- package/lib/commonjs/useFederatedAddon.js +7 -6
- package/lib/esm/Auth/Auth.js +1 -1
- package/lib/esm/Auth/AuthChallengeMfaSetup/AuthChallengeMfaSetup.js +1 -1
- package/lib/esm/Auth/AuthChallengeMfaSetup/logic/authActionCreator.js +1 -1
- package/lib/esm/Auth/AuthChallengeNewPasswordRequired/AuthChallengeNewPasswordRequired.js +1 -1
- package/lib/esm/Auth/AuthChallengeSoftwareTokenMfa/AuthChallengeSoftwareTokenMfa.js +1 -1
- package/lib/esm/Auth/Login.js +2 -2
- package/lib/esm/Config/Config.js +3 -3
- package/lib/esm/LogViewer/ActionHistoryItem.js +1 -1
- package/lib/esm/LogViewer/ActionRender/ActionRender.js +3 -3
- package/lib/esm/LogViewer/AdminLogs/AdminLogGrid/AdminLogGrid.js +3 -3
- package/lib/esm/LogViewer/AdminLogs/AdminLogSearchBar/AdminLogSearchBar.js +4 -4
- package/lib/esm/LogViewer/AdminLogs/AdminLogs.js +1 -1
- package/lib/esm/LogViewer/Dashboard.js +9 -5
- package/lib/esm/LogViewer/EventTimeline.js +4 -4
- package/lib/esm/LogViewer/HelpChat/HelpChat.js +9 -8
- package/lib/esm/LogViewer/LogCorrelationTree.js +27 -24
- package/lib/esm/LogViewer/LogCorrelations.js +1 -1
- package/lib/esm/LogViewer/LogDetails.js +1 -1
- package/lib/esm/LogViewer/LogDialog/LogDialog.js +4 -4
- package/lib/esm/LogViewer/LogDialog/MovedToColdStorage/MovedToColdStorage.js +1 -1
- package/lib/esm/LogViewer/LogDialog/tabs/LogDetailsTab/LogDetailsTab.js +1 -1
- package/lib/esm/LogViewer/LogDialog/tabs/TimelineTab/TimelineTab.js +1 -1
- package/lib/esm/LogViewer/LogDialog/tabs/TreeTab/TreeTab.js +1 -1
- package/lib/esm/LogViewer/LogMetadataGrid.js +3 -3
- package/lib/esm/LogViewer/LogRawJson.js +1 -1
- package/lib/esm/LogViewer/LogSearch.js +1 -1
- package/lib/esm/LogViewer/LogSummary.js +2 -2
- package/lib/esm/LogViewer/LogSummaryDetails.js +4 -2
- package/lib/esm/LogViewer/LogSummaryReturn.js +1 -1
- package/lib/esm/LogViewer/TopSection.js +7 -7
- package/lib/esm/LogViewer/actionComponents/custom/CoreContextListCustomAction.js +1 -1
- package/lib/esm/LogViewer/actionComponents/custom/CoreLogCreateCustomAction.js +1 -1
- package/lib/esm/LogViewer/actionComponents/custom/CoreLogDisableEventHistoryCustomAction.js +1 -1
- package/lib/esm/LogViewer/actionComponents/custom/CoreLogTemplateLiteralCustomAction.js +1 -1
- package/lib/esm/LogViewer/actionComponents/custom/CoreNetworkRequestCustomAction.js +2 -2
- package/lib/esm/LogViewer/actionComponents/genericActionRenderer/ActionResultDisplay.js +1 -1
- package/lib/esm/LogViewer/actionComponents/genericActionRenderer/AnyVariableView/AnyVariableView.js +15 -15
- package/lib/esm/LogViewer/actionComponents/genericActionRenderer/getGenericActionRenderer.js +7 -4
- package/lib/esm/LogViewer/charts/CostPerService.js +1 -1
- package/lib/esm/LogViewer/charts/ErrorsByType.js +1 -1
- package/lib/esm/LogViewer/charts/ErrorsOverTime.js +1 -1
- package/lib/esm/LogViewer/charts/RequestsByService.js +2 -2
- package/lib/esm/LogViewer/hooks/useLogManagement.js +1 -1
- package/lib/esm/LogViewer/hooks/useLogTreeData.js +15 -12
- package/lib/esm/LogViewer/hooks/useServiceNames.js +7 -6
- package/lib/esm/components/AdminDialog.js +2 -2
- package/lib/esm/components/AsyncButton.js +1 -1
- package/lib/esm/components/AutocompleteInput.js +2 -2
- package/lib/esm/components/DataGrid.js +1 -1
- package/lib/esm/components/DataGridPagination/DataGridPagination.js +1 -1
- package/lib/esm/components/DateCell/DateCell.js +1 -1
- package/lib/esm/components/DateRangePicker.js +2 -2
- package/lib/esm/components/MainLayout/MainLayout.js +2 -2
- package/lib/esm/components/TextInput.js +2 -2
- package/lib/esm/tmp/RandomView.js +1 -1
- package/lib/esm/useFederatedAddon.js +8 -7
- package/package.json +6 -6
|
@@ -24,7 +24,7 @@ function Auth({ children }) {
|
|
|
24
24
|
if (((_c = state.authenticateUserResponse) === null || _c === void 0 ? void 0 : _c.challenge) === quidproquo_core_1.AuthenticateUserChallenge.MFA_SETUP) {
|
|
25
25
|
return ((0, jsx_runtime_1.jsx)(quidproquo_web_react_1.QpqRuntimeEffectCatcher, { runtime: logic_1.authRuntime, children: (0, jsx_runtime_1.jsx)(AuthChallengeMfaSetup_1.AuthChallengeMfaSetup, { authState: state }) }));
|
|
26
26
|
}
|
|
27
|
-
return ((0, jsx_runtime_1.jsxs)(quidproquo_web_react_1.QpqRuntimeEffectCatcher, { runtime: logic_1.authRuntime, children: [!isAuthenticated && ((0, jsx_runtime_1.jsx)(Login_1.Login, {
|
|
27
|
+
return ((0, jsx_runtime_1.jsxs)(quidproquo_web_react_1.QpqRuntimeEffectCatcher, { runtime: logic_1.authRuntime, children: [!isAuthenticated && ((0, jsx_runtime_1.jsx)(Login_1.Login, { onLogin: api.authLogin, password: state.password, setPassword: api.authUISetPassword, setUsername: api.authUISetUsername, username: state.username })), isAuthenticated && ((0, jsx_runtime_1.jsx)(quidproquo_web_react_1.authContext.Provider, { value: {
|
|
28
28
|
challenge: (_d = state.authenticateUserResponse) === null || _d === void 0 ? void 0 : _d.challenge,
|
|
29
29
|
session: (_e = state.authenticateUserResponse) === null || _e === void 0 ? void 0 : _e.session,
|
|
30
30
|
username: state.username,
|
|
@@ -46,5 +46,5 @@ function AuthChallengeMfaSetup({ authState }) {
|
|
|
46
46
|
flexDirection: 'column',
|
|
47
47
|
justifyContent: 'center',
|
|
48
48
|
alignItems: 'center',
|
|
49
|
-
}, children: (0, jsx_runtime_1.jsx)(Box_1.default, { component: "form", sx: { width: '100%', maxWidth: 360 }, children: (0, jsx_runtime_1.jsxs)(Grid_1.default, { container: true, spacing: 2, children: [(0, jsx_runtime_1.jsx)(Grid_1.default, { item: true, xs: 12, children: (0, jsx_runtime_1.jsxs)(Typography_1.default, {
|
|
49
|
+
}, children: (0, jsx_runtime_1.jsx)(Box_1.default, { component: "form", sx: { width: '100%', maxWidth: 360 }, children: (0, jsx_runtime_1.jsxs)(Grid_1.default, { container: true, spacing: 2, children: [(0, jsx_runtime_1.jsx)(Grid_1.default, { item: true, xs: 12, children: (0, jsx_runtime_1.jsxs)(Typography_1.default, { gutterBottom: true, sx: { display: 'flex', alignItems: 'center' }, variant: "h5", children: [(0, jsx_runtime_1.jsx)(Lock_1.default, { sx: { marginRight: 1 } }), "Set Up Authenticator"] }) }), (0, jsx_runtime_1.jsx)(Grid_1.default, { item: true, xs: 12, children: (0, jsx_runtime_1.jsx)(Typography_1.default, { color: "text.secondary", variant: "body2", children: "Add this account to your authenticator app, then enter the 6-digit code it generates." }) }), (0, jsx_runtime_1.jsxs)(Grid_1.default, { item: true, xs: 12, children: [(0, jsx_runtime_1.jsx)(Typography_1.default, { color: "text.secondary", variant: "caption", children: "Secret key" }), (0, jsx_runtime_1.jsx)(Typography_1.default, { sx: { fontFamily: 'monospace', wordBreak: 'break-all' }, variant: "body1", children: state.secretCode || 'Loading…' })] }), state.secretCode && ((0, jsx_runtime_1.jsx)(Grid_1.default, { item: true, xs: 12, children: (0, jsx_runtime_1.jsx)(Typography_1.default, { color: "text.secondary", sx: { wordBreak: 'break-all' }, variant: "caption", children: buildOtpAuthUri(authState.username, state.secretCode) }) })), (0, jsx_runtime_1.jsx)(Grid_1.default, { item: true, xs: 12, children: (0, jsx_runtime_1.jsx)(TextField_1.default, { autoFocus: true, fullWidth: true, id: "mfaCode", inputProps: { inputMode: 'numeric', pattern: '[0-9]*', maxLength: 6 }, label: "Authentication Code", onChange: (event) => api.authChallengeSetMfaSetupCode(event.target.value.replace(/\D/g, '')), required: true, value: state.mfaCode }) }), (0, jsx_runtime_1.jsx)(Grid_1.default, { item: true, xs: 12, children: (0, jsx_runtime_1.jsx)(components_1.AsyncButton, { disabled: !isCodeValid || !state.secretCode, onClick: () => api.authChallengeSendMfaSetupCode(challenge, authState.username), children: "Verify" }) })] }) }) }));
|
|
50
50
|
}
|
package/lib/commonjs/Auth/AuthChallengeNewPasswordRequired/AuthChallengeNewPasswordRequired.js
CHANGED
|
@@ -29,8 +29,8 @@ function AuthChallengeNewPasswordRequired({ authState }) {
|
|
|
29
29
|
flexDirection: 'column',
|
|
30
30
|
justifyContent: 'center',
|
|
31
31
|
alignItems: 'center',
|
|
32
|
-
}, children: (0, jsx_runtime_1.jsx)(Box_1.default, { component: "form", sx: { width: '100%', maxWidth: 360 }, children: (0, jsx_runtime_1.jsxs)(Grid_1.default, { container: true, spacing: 2, children: [(0, jsx_runtime_1.jsx)(Grid_1.default, { item: true, xs: 12, children: (0, jsx_runtime_1.jsxs)(Typography_1.default, {
|
|
32
|
+
}, children: (0, jsx_runtime_1.jsx)(Box_1.default, { component: "form", sx: { width: '100%', maxWidth: 360 }, children: (0, jsx_runtime_1.jsxs)(Grid_1.default, { container: true, spacing: 2, children: [(0, jsx_runtime_1.jsx)(Grid_1.default, { item: true, xs: 12, children: (0, jsx_runtime_1.jsxs)(Typography_1.default, { gutterBottom: true, sx: { display: 'flex', alignItems: 'center' }, variant: "h5", children: [(0, jsx_runtime_1.jsx)(Lock_1.default, { sx: { marginRight: 1 } }), "Password Change Required"] }) }), (0, jsx_runtime_1.jsx)(Grid_1.default, { item: true, xs: 12, children: (0, jsx_runtime_1.jsx)(TextField_1.default, { autoFocus: true, fullWidth: true, id: "newPassword", label: "New Password", onChange: (event) => api.authChallengeSetPasswordA(event.target.value), required: true, type: "password", value: state.passwordA }) }), (0, jsx_runtime_1.jsx)(Grid_1.default, { item: true, xs: 12, children: (0, jsx_runtime_1.jsx)(TextField_1.default, { fullWidth: true, id: "confirmPassword", label: "Confirm Password", onChange: (event) => api.authChallengeSetPasswordB(event.target.value), required: true, type: "password", value: state.passwordB }) }), (0, jsx_runtime_1.jsx)(Grid_1.default, { item: true, xs: 12, children: (0, jsx_runtime_1.jsx)(components_1.AsyncButton, { disabled: !arePasswordsMatching, onClick: () => {
|
|
33
33
|
var _a, _b;
|
|
34
34
|
return api.authChallengeSendPasswords((_a = authState.authenticateUserResponse) === null || _a === void 0 ? void 0 : _a.challenge, (_b = authState.authenticateUserResponse) === null || _b === void 0 ? void 0 : _b.session, authState.username);
|
|
35
|
-
},
|
|
35
|
+
}, children: "Update Password" }) })] }) }) }));
|
|
36
36
|
}
|
|
@@ -29,8 +29,8 @@ function AuthChallengeSoftwareTokenMfa({ authState }) {
|
|
|
29
29
|
flexDirection: 'column',
|
|
30
30
|
justifyContent: 'center',
|
|
31
31
|
alignItems: 'center',
|
|
32
|
-
}, children: (0, jsx_runtime_1.jsx)(Box_1.default, { component: "form", sx: { width: '100%', maxWidth: 360 }, children: (0, jsx_runtime_1.jsxs)(Grid_1.default, { container: true, spacing: 2, children: [(0, jsx_runtime_1.jsx)(Grid_1.default, { item: true, xs: 12, children: (0, jsx_runtime_1.jsxs)(Typography_1.default, {
|
|
32
|
+
}, children: (0, jsx_runtime_1.jsx)(Box_1.default, { component: "form", sx: { width: '100%', maxWidth: 360 }, children: (0, jsx_runtime_1.jsxs)(Grid_1.default, { container: true, spacing: 2, children: [(0, jsx_runtime_1.jsx)(Grid_1.default, { item: true, xs: 12, children: (0, jsx_runtime_1.jsxs)(Typography_1.default, { gutterBottom: true, sx: { display: 'flex', alignItems: 'center' }, variant: "h5", children: [(0, jsx_runtime_1.jsx)(Lock_1.default, { sx: { marginRight: 1 } }), "Verification Code"] }) }), (0, jsx_runtime_1.jsx)(Grid_1.default, { item: true, xs: 12, children: (0, jsx_runtime_1.jsx)(Typography_1.default, { color: "text.secondary", variant: "body2", children: "Enter the 6-digit code from your authenticator app." }) }), (0, jsx_runtime_1.jsx)(Grid_1.default, { item: true, xs: 12, children: (0, jsx_runtime_1.jsx)(TextField_1.default, { autoFocus: true, fullWidth: true, id: "mfaCode", inputProps: { inputMode: 'numeric', pattern: '[0-9]*', maxLength: 6 }, label: "Authentication Code", onChange: (event) => api.authChallengeSetMfaCode(event.target.value.replace(/\D/g, '')), required: true, value: state.mfaCode }) }), (0, jsx_runtime_1.jsx)(Grid_1.default, { item: true, xs: 12, children: (0, jsx_runtime_1.jsx)(components_1.AsyncButton, { disabled: !isCodeValid, onClick: () => {
|
|
33
33
|
var _a, _b;
|
|
34
34
|
return api.authChallengeSendMfaCode((_a = authState.authenticateUserResponse) === null || _a === void 0 ? void 0 : _a.challenge, (_b = authState.authenticateUserResponse) === null || _b === void 0 ? void 0 : _b.session, authState.username);
|
|
35
|
-
},
|
|
35
|
+
}, children: "Verify" }) })] }) }) }));
|
|
36
36
|
}
|
|
@@ -29,8 +29,8 @@ function Login({ username, password, setUsername, setPassword, onLogin }) {
|
|
|
29
29
|
flexDirection: 'column',
|
|
30
30
|
justifyContent: 'center',
|
|
31
31
|
alignItems: 'center',
|
|
32
|
-
}, children: (0, jsx_runtime_1.jsx)(Box_1.default, {
|
|
32
|
+
}, children: (0, jsx_runtime_1.jsx)(Box_1.default, { action: "#", autoComplete: "on", component: "form", method: "post", sx: { width: '100%', maxWidth: 360 }, children: (0, jsx_runtime_1.jsxs)(Grid_1.default, { container: true, spacing: 2, children: [(0, jsx_runtime_1.jsx)(Grid_1.default, { item: true, xs: 12, children: (0, jsx_runtime_1.jsxs)(material_1.Typography, { gutterBottom: true, sx: { display: 'flex', alignItems: 'center' }, variant: "h5", children: [(0, jsx_runtime_1.jsx)(Lock_1.default, { sx: { marginRight: 1 } }), "QPQ Admin"] }) }), (0, jsx_runtime_1.jsx)(Grid_1.default, { item: true, xs: 12, children: (0, jsx_runtime_1.jsx)(TextField_1.default, { autoComplete: "username", autoFocus: true, fullWidth: true, id: "username", label: "Username", onChange: (event) => setUsername(event.target.value), required: true, type: "username", value: username }) }), (0, jsx_runtime_1.jsx)(Grid_1.default, { item: true, xs: 12, children: (0, jsx_runtime_1.jsx)(TextField_1.default, { autoComplete: "current-password", fullWidth: true, id: "password", label: "Password", onChange: (event) => setPassword(event.target.value), required: true, type: "password", value: password }) }), (0, jsx_runtime_1.jsx)(Grid_1.default, { item: true, xs: 12, children: (0, jsx_runtime_1.jsx)(components_1.AsyncButton, { onClick: (event) => __awaiter(this, void 0, void 0, function* () {
|
|
33
33
|
event.preventDefault();
|
|
34
34
|
yield onLogin();
|
|
35
|
-
}), children: "Login" }) })] }) }) }));
|
|
35
|
+
}), type: "submit", children: "Login" }) })] }) }) }));
|
|
36
36
|
}
|
|
@@ -33,16 +33,16 @@ function Config() {
|
|
|
33
33
|
};
|
|
34
34
|
const filteredServices = services.filter((s) => s.label.toLowerCase().includes(search.toLowerCase()));
|
|
35
35
|
const selectedService = selectedServiceOverride || ((_a = services[0]) === null || _a === void 0 ? void 0 : _a.label);
|
|
36
|
-
return ((0, jsx_runtime_1.jsxs)(material_1.Box, { sx: { display: 'flex' }, children: [(0, jsx_runtime_1.jsx)(material_1.CssBaseline, {}), (0, jsx_runtime_1.jsxs)(material_1.Drawer, {
|
|
36
|
+
return ((0, jsx_runtime_1.jsxs)(material_1.Box, { sx: { display: 'flex' }, children: [(0, jsx_runtime_1.jsx)(material_1.CssBaseline, {}), (0, jsx_runtime_1.jsxs)(material_1.Drawer, { sx: {
|
|
37
37
|
width: drawerWidth,
|
|
38
38
|
flexShrink: 0,
|
|
39
39
|
[`& .MuiDrawer-paper`]: { width: drawerWidth, boxSizing: 'border-box' },
|
|
40
|
-
}, children: [(0, jsx_runtime_1.jsx)(material_1.Toolbar, { children: (0, jsx_runtime_1.jsx)(material_1.TextField, { fullWidth: true,
|
|
40
|
+
}, variant: "permanent", children: [(0, jsx_runtime_1.jsx)(material_1.Toolbar, { children: (0, jsx_runtime_1.jsx)(material_1.TextField, { fullWidth: true, onChange: (e) => setSearch(e.target.value), onKeyDown: (e) => {
|
|
41
41
|
var _a, _b;
|
|
42
42
|
if (e.key === 'Enter') {
|
|
43
43
|
setSearch((_a = filteredServices[0]) === null || _a === void 0 ? void 0 : _a.label);
|
|
44
44
|
handleServiceClick((_b = filteredServices[0]) === null || _b === void 0 ? void 0 : _b.label);
|
|
45
45
|
}
|
|
46
|
-
}, sx: { mt: 2 } }) }), (0, jsx_runtime_1.jsx)(material_1.Box, { sx: { overflow: 'auto', p: 2 }, children: (0, jsx_runtime_1.jsx)(material_1.List, { children: filteredServices.map((service) => ((0, jsx_runtime_1.jsx)(material_1.ListItem, { disablePadding: true, children: (0, jsx_runtime_1.jsx)(material_1.ListItemButton, {
|
|
46
|
+
}, placeholder: "Search services", size: "small", sx: { mt: 2 }, value: search, variant: "outlined" }) }), (0, jsx_runtime_1.jsx)(material_1.Box, { sx: { overflow: 'auto', p: 2 }, children: (0, jsx_runtime_1.jsx)(material_1.List, { children: filteredServices.map((service) => ((0, jsx_runtime_1.jsx)(material_1.ListItem, { disablePadding: true, children: (0, jsx_runtime_1.jsx)(material_1.ListItemButton, { onClick: () => handleServiceClick(service.label), selected: service.label === selectedService, children: (0, jsx_runtime_1.jsx)(material_1.ListItemText, { primary: service.label }) }) }, service.value))) }) })] }), (0, jsx_runtime_1.jsxs)(material_1.Box, { component: "main", sx: { flexGrow: 1, p: 3 }, children: [(0, jsx_runtime_1.jsxs)(material_1.Typography, { gutterBottom: true, variant: "h5", children: [selectedService, " Service"] }), (0, jsx_runtime_1.jsx)(material_1.Tabs, { onChange: handleTabChange, sx: { borderBottom: 1, borderColor: 'divider' }, value: tabIndex, children: sections.map((section, index) => ((0, jsx_runtime_1.jsx)(material_1.Tab, { label: section }, index))) }), (0, jsx_runtime_1.jsxs)(material_1.Box, { sx: { mt: 2 }, children: [sections[tabIndex] === 'General' && (0, jsx_runtime_1.jsxs)(material_1.Typography, { children: ["General settings for ", selectedService] }), sections[tabIndex] === 'Settings' && (0, jsx_runtime_1.jsx)(material_1.Typography, { children: "Custom configuration options" }), sections[tabIndex] === 'Advanced' && (0, jsx_runtime_1.jsx)(material_1.Typography, { children: "Advanced tuning and overrides" })] })] })] }));
|
|
47
47
|
}
|
|
48
48
|
exports.default = Config;
|
|
@@ -9,6 +9,6 @@ const TruncatedText_1 = __importDefault(require("./TruncatedText"));
|
|
|
9
9
|
const ActionHistoryItem = ({ action, result, expanded }) => {
|
|
10
10
|
const inputText = JSON.stringify(action.payload, null, 2);
|
|
11
11
|
const outputText = JSON.stringify(result, null, 2);
|
|
12
|
-
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("pre", { style: { whiteSpace: 'pre-wrap', wordBreak: 'break-word' }, children: (0, jsx_runtime_1.jsx)(TruncatedText_1.default, {
|
|
12
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("pre", { style: { whiteSpace: 'pre-wrap', wordBreak: 'break-word' }, children: (0, jsx_runtime_1.jsx)(TruncatedText_1.default, { expanded: expanded, text: inputText, title: "Input" }) }), (0, jsx_runtime_1.jsx)("pre", { style: { whiteSpace: 'pre-wrap', wordBreak: 'break-word' }, children: (0, jsx_runtime_1.jsx)(TruncatedText_1.default, { expanded: expanded, text: outputText, title: "Output" }) })] }));
|
|
13
13
|
};
|
|
14
14
|
exports.ActionHistoryItem = ActionHistoryItem;
|
|
@@ -32,7 +32,7 @@ exports.AnyCustomAction = AnyCustomAction;
|
|
|
32
32
|
const ActionRender = ({ action, result, isLegacy, expanded }) => {
|
|
33
33
|
const actionComponentConfig = actionComponentMap_1.default[action.type];
|
|
34
34
|
if (!isLegacy && action.type === quidproquo_core_1.SystemActionType.Batch) {
|
|
35
|
-
return (0, jsx_runtime_1.jsx)(exports.CoreBatchCustomAction, { action: action,
|
|
35
|
+
return (0, jsx_runtime_1.jsx)(exports.CoreBatchCustomAction, { action: action, expanded: expanded, result: result });
|
|
36
36
|
}
|
|
37
37
|
const ActionComponent = isLegacy
|
|
38
38
|
? ActionHistoryItem_1.ActionHistoryItem
|
|
@@ -41,7 +41,7 @@ const ActionRender = ({ action, result, isLegacy, expanded }) => {
|
|
|
41
41
|
: actionComponentConfig
|
|
42
42
|
? (0, actionComponents_1.getGenericActionRenderer)(actionComponentConfig[0], actionComponentConfig.slice(1))
|
|
43
43
|
: exports.AnyCustomAction;
|
|
44
|
-
return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)(ActionComponent, { action: action,
|
|
44
|
+
return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)(ActionComponent, { action: action, expanded: expanded, result: result }) }));
|
|
45
45
|
};
|
|
46
46
|
exports.ActionRender = ActionRender;
|
|
47
47
|
const AnyActionHistoryItem = ({ action, result }) => {
|
|
@@ -53,6 +53,6 @@ const AnyActionHistoryItem = ({ action, result }) => {
|
|
|
53
53
|
const toggleLegacy = () => {
|
|
54
54
|
setLegacy(!legacy);
|
|
55
55
|
};
|
|
56
|
-
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)(material_1.Box, {
|
|
56
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)(material_1.Box, { alignItems: "center", display: "flex", children: [(0, jsx_runtime_1.jsx)(material_1.Typography, { component: "span", variant: "h6", children: action.type.split('/').slice(-2).join('::') }), (0, jsx_runtime_1.jsx)(material_1.Tooltip, { title: expanded ? 'Collapse' : 'Expand', children: (0, jsx_runtime_1.jsx)(material_1.IconButton, { onClick: toggleExpanded, size: "small", children: expanded ? (0, jsx_runtime_1.jsx)(ExpandLess_1.default, {}) : (0, jsx_runtime_1.jsx)(ExpandMore_1.default, {}) }) }), (0, jsx_runtime_1.jsx)(material_1.Tooltip, { title: "Legacy View", children: (0, jsx_runtime_1.jsx)(material_1.IconButton, { onClick: toggleLegacy, size: "small", children: (0, jsx_runtime_1.jsx)(History_1.default, { color: legacy ? 'primary' : 'inherit' }) }) })] }), (0, jsx_runtime_1.jsx)(exports.ActionRender, { action: action, expanded: expanded, isLegacy: legacy, result: result })] }));
|
|
57
57
|
};
|
|
58
58
|
exports.AnyActionHistoryItem = AnyActionHistoryItem;
|
|
@@ -107,9 +107,9 @@ const AdminLogGrid = ({ logs, isLoading, searchProgress }) => {
|
|
|
107
107
|
background-color: #E3E3E3 !important;
|
|
108
108
|
color: #000;
|
|
109
109
|
}
|
|
110
|
-
` }), (0, jsx_runtime_1.jsx)(x_data_grid_1.DataGrid, { components: {
|
|
110
|
+
` }), (0, jsx_runtime_1.jsx)(x_data_grid_1.DataGrid, { autoPageSize: true, columns: columns, components: {
|
|
111
111
|
Pagination: DataGridPagination_1.DataGridPagination,
|
|
112
|
-
LoadingOverlay: () => (0, jsx_runtime_1.jsx)(LinearProgress_1.default, { variant: "determinate"
|
|
113
|
-
},
|
|
112
|
+
LoadingOverlay: () => (0, jsx_runtime_1.jsx)(LinearProgress_1.default, { value: searchProgress, variant: "determinate" }),
|
|
113
|
+
}, getRowClassName: getRowClassName, loading: isLoading, onRowClick: onRowClick, rows: logs.map((log, i) => (Object.assign(Object.assign({}, log), { id: `${i}` }))) }), (0, jsx_runtime_1.jsx)(LogDialog_1.LogDialog, { handleClose: clearSelectedLogCorrelation, logCorrelation: selectedLogCorrelation, open: !!selectedLogCorrelation, setSelectedLogCorrelation: setSelectedLogCorrelation, storyResultMetadatas: logs })] }));
|
|
114
114
|
};
|
|
115
115
|
exports.AdminLogGrid = AdminLogGrid;
|
|
@@ -35,14 +35,14 @@ function AdminLogSearchBar({ onSearch }) {
|
|
|
35
35
|
updateStartAndEndTimeSpan(minutes);
|
|
36
36
|
handleQuickTimeClose();
|
|
37
37
|
};
|
|
38
|
-
return ((0, jsx_runtime_1.jsxs)(x_date_pickers_1.LocalizationProvider, { dateAdapter: AdapterDateFns_1.AdapterDateFns, children: [(0, jsx_runtime_1.jsxs)(Grid_1.default, {
|
|
38
|
+
return ((0, jsx_runtime_1.jsxs)(x_date_pickers_1.LocalizationProvider, { dateAdapter: AdapterDateFns_1.AdapterDateFns, children: [(0, jsx_runtime_1.jsxs)(Grid_1.default, { columns: 12, container: true, spacing: 2, children: [(0, jsx_runtime_1.jsx)(Grid_1.default, { item: true, xs: 3, children: (0, jsx_runtime_1.jsxs)(FormControl_1.default, { fullWidth: true, children: [(0, jsx_runtime_1.jsx)(InputLabel_1.default, { id: "runtime-select-label", children: "Log Level" }), (0, jsx_runtime_1.jsx)(Select_1.default, { id: "demo-simple-select", label: "Log Level", labelId: "runtime-select-label", onChange: handleLogLevelOnChange, value: logLevel, children: quidproquo_core_1.logLevelEnumLookups.map((key) => ((0, jsx_runtime_1.jsx)(MenuItem_1.default, { value: key, children: key }, key))) })] }) }), (0, jsx_runtime_1.jsx)(Grid_1.default, { item: true, xs: 3, children: (0, jsx_runtime_1.jsx)(FormControl_1.default, { fullWidth: true, children: (0, jsx_runtime_1.jsx)(material_1.Autocomplete, { getOptionLabel: (option) => option.label, onChange: handleServiceOnChange, options: serviceOptions, renderInput: (params) => ((0, jsx_runtime_1.jsx)(TextField_1.default, Object.assign({}, params, { InputLabelProps: {
|
|
39
39
|
shrink: true,
|
|
40
|
-
} }))) }) }) }), (0, jsx_runtime_1.jsx)(Grid_1.default, { item: true, xs: 3, children: (0, jsx_runtime_1.jsxs)(system_1.Box, { position: "relative", children: [(0, jsx_runtime_1.jsx)(FormControl_1.default, { fullWidth: true, children: (0, jsx_runtime_1.jsx)(x_date_pickers_1.DateTimePicker, { label: "Start DateTime",
|
|
40
|
+
}, label: "Service Name" }))), value: serviceOptions.find((o) => o.value === service) || null }) }) }), (0, jsx_runtime_1.jsx)(Grid_1.default, { item: true, xs: 3, children: (0, jsx_runtime_1.jsxs)(system_1.Box, { position: "relative", children: [(0, jsx_runtime_1.jsx)(FormControl_1.default, { fullWidth: true, children: (0, jsx_runtime_1.jsx)(x_date_pickers_1.DateTimePicker, { label: "Start DateTime", onChange: handleStartDateChange, value: startDate }) }), (0, jsx_runtime_1.jsx)(material_1.IconButton, { "aria-controls": "quick-time-menu", "aria-haspopup": "true", "aria-label": "quick time select", onClick: handleQuickTimeClick, sx: {
|
|
41
41
|
position: 'absolute',
|
|
42
42
|
right: '-28px',
|
|
43
43
|
top: '50%',
|
|
44
44
|
transform: 'translateY(-50%)',
|
|
45
|
-
}, children: (0, jsx_runtime_1.jsx)(ExpandMore_1.default, {}) })] }) }), (0, jsx_runtime_1.jsx)(Grid_1.default, { item: true, xs: 3, children: (0, jsx_runtime_1.jsx)(FormControl_1.default, { fullWidth: true, children: (0, jsx_runtime_1.jsx)(x_date_pickers_1.DateTimePicker, { label: "End DateTime",
|
|
45
|
+
}, children: (0, jsx_runtime_1.jsx)(ExpandMore_1.default, {}) })] }) }), (0, jsx_runtime_1.jsx)(Grid_1.default, { item: true, xs: 3, children: (0, jsx_runtime_1.jsx)(FormControl_1.default, { fullWidth: true, children: (0, jsx_runtime_1.jsx)(x_date_pickers_1.DateTimePicker, { label: "End DateTime", onChange: handleEndDateChange, value: endDate }) }) }), (0, jsx_runtime_1.jsx)(Grid_1.default, { item: true, xs: 10, children: (0, jsx_runtime_1.jsx)(FormControl_1.default, { fullWidth: true, children: (0, jsx_runtime_1.jsx)(TextField_1.default, { InputLabelProps: {
|
|
46
46
|
shrink: true,
|
|
47
|
-
} }) }) }), (0, jsx_runtime_1.jsx)(Grid_1.default, { item: true, xs: 2, children: (0, jsx_runtime_1.jsx)(AsyncButton_1.AsyncButton, { onClick: () => onSearch(), children: "Search" }) })] }), (0, jsx_runtime_1.jsxs)(material_1.Menu, { id: "quick-time-menu",
|
|
47
|
+
}, label: "Message", onChange: handleMsgOnChange, value: msg }) }) }), (0, jsx_runtime_1.jsx)(Grid_1.default, { item: true, xs: 2, children: (0, jsx_runtime_1.jsx)(AsyncButton_1.AsyncButton, { onClick: () => onSearch(), children: "Search" }) })] }), (0, jsx_runtime_1.jsxs)(material_1.Menu, { anchorEl: anchorEl, id: "quick-time-menu", keepMounted: true, onClose: handleQuickTimeClose, open: Boolean(anchorEl), children: [(0, jsx_runtime_1.jsx)(MenuItem_1.default, { onClick: () => handleQuickTimeSelect(5), children: "Last 5 minutes" }), (0, jsx_runtime_1.jsx)(MenuItem_1.default, { onClick: () => handleQuickTimeSelect(30), children: "Last 30 minutes" }), (0, jsx_runtime_1.jsx)(MenuItem_1.default, { onClick: () => handleQuickTimeSelect(1 * 60), children: "Last hour" }), (0, jsx_runtime_1.jsx)(MenuItem_1.default, { onClick: () => handleQuickTimeSelect(3 * 60), children: "Last 3 hours" }), (0, jsx_runtime_1.jsx)(MenuItem_1.default, { onClick: () => handleQuickTimeSelect(8 * 60), children: "Last 8 hours" }), (0, jsx_runtime_1.jsx)(MenuItem_1.default, { onClick: () => handleQuickTimeSelect(16 * 60), children: "Last 16 hours" }), (0, jsx_runtime_1.jsx)(MenuItem_1.default, { onClick: () => handleQuickTimeSelect(24 * 60), children: "Last 24 hours" }), (0, jsx_runtime_1.jsx)(MenuItem_1.default, { onClick: () => handleQuickTimeSelect(7 * 24 * 60), children: "Last 7 days" }), (0, jsx_runtime_1.jsx)(MenuItem_1.default, { onClick: () => handleQuickTimeSelect(30 * 24 * 60), children: "Last month" })] })] }));
|
|
48
48
|
}
|
|
@@ -10,6 +10,6 @@ const hooks_1 = require("./hooks");
|
|
|
10
10
|
const AdminLogs = () => {
|
|
11
11
|
const { logLogs, searchProgress, onSearch } = (0, hooks_1.useLogLogSearch)();
|
|
12
12
|
const isLoading = (0, useIsLoading_1.useIsLoading)();
|
|
13
|
-
return ((0, jsx_runtime_1.jsx)(TabViewBox_1.TabViewBox, {
|
|
13
|
+
return ((0, jsx_runtime_1.jsx)(TabViewBox_1.TabViewBox, { body: () => (0, jsx_runtime_1.jsx)(AdminLogGrid_1.AdminLogGrid, { isLoading: isLoading, logs: logLogs, searchProgress: searchProgress }), header: () => (0, jsx_runtime_1.jsx)(AdminLogSearchBar_1.AdminLogSearchBar, { onSearch: onSearch }) }));
|
|
14
14
|
};
|
|
15
15
|
exports.AdminLogs = AdminLogs;
|
|
@@ -60,7 +60,8 @@ const Dashboard = () => {
|
|
|
60
60
|
const [realtimeLogs, setRealtimeLogs] = react_1.default.useState([]);
|
|
61
61
|
const { onSearch, logs: weeklyLogs } = (0, hooks_1.useLogSearch)();
|
|
62
62
|
const isLoading = (0, useIsLoading_1.useIsLoading)();
|
|
63
|
-
|
|
63
|
+
// Stable identity so the mount-only effect below can list it as a dependency.
|
|
64
|
+
const runInitialSearch = (0, quidproquo_web_react_1.useEffectCallback)(() => {
|
|
64
65
|
const currentDate = new Date();
|
|
65
66
|
const sevenDaysAgo = new Date(currentDate.getTime() - 7 * 24 * 60 * 60 * 1000);
|
|
66
67
|
const isoDateSevenDaysAgo = sevenDaysAgo.toISOString();
|
|
@@ -78,7 +79,10 @@ const Dashboard = () => {
|
|
|
78
79
|
onlyErrors: true,
|
|
79
80
|
};
|
|
80
81
|
onSearch(searchParams);
|
|
81
|
-
}
|
|
82
|
+
});
|
|
83
|
+
(0, react_1.useEffect)(() => {
|
|
84
|
+
runInitialSearch();
|
|
85
|
+
}, [runInitialSearch]);
|
|
82
86
|
(0, quidproquo_web_react_2.useSubscribeToWebSocketEvent)(quidproquo_webserver_1.WebSocketQueueQpqAdminServerMessageEventType.LogMetadata, (webSocketService, message) => {
|
|
83
87
|
// Add the log to the list if its an error
|
|
84
88
|
if (message.payload.log.error) {
|
|
@@ -90,8 +94,8 @@ const Dashboard = () => {
|
|
|
90
94
|
const uniqueLogs = (0, quidproquo_web_1.uniqueBy)([...realtimeLogs, ...weeklyLogs], (log) => log.correlation);
|
|
91
95
|
return uniqueLogs.sort((a, b) => new Date(b.startedAt).getTime() - new Date(a.startedAt).getTime());
|
|
92
96
|
}, [realtimeLogs, weeklyLogs]);
|
|
93
|
-
const dailyErrorCount = (0, react_1.useMemo)(() => getLogCountForSinceXDaysAgo(allLogs, hoursPassedToday / 24), [allLogs,
|
|
97
|
+
const dailyErrorCount = (0, react_1.useMemo)(() => getLogCountForSinceXDaysAgo(allLogs, hoursPassedToday / 24), [allLogs, hoursPassedToday]);
|
|
94
98
|
const weeklyErrorCount = (0, react_1.useMemo)(() => getLogCountForSinceXDaysAgo(allLogs, 7), [allLogs]);
|
|
95
|
-
return ((0, jsx_runtime_1.jsxs)(TabViewBox_1.TabViewBox, { children: [(0, jsx_runtime_1.jsxs)(material_1.Grid, { container: true, spacing: 2, sx: { mb: 2 }, children: [(0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 6, children: (0, jsx_runtime_1.jsxs)(material_1.Paper, { sx: { p: 2, textAlign: 'center' }, children: [(0, jsx_runtime_1.jsx)(material_1.Typography, { children: "Daily Errors" }), (0, jsx_runtime_1.jsx)(material_1.Typography, { variant: "h4", children: dailyErrorCount })] }) }), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 6, children: (0, jsx_runtime_1.jsxs)(material_1.Paper, { sx: { p: 2, textAlign: 'center' }, children: [(0, jsx_runtime_1.jsx)(material_1.Typography, { children: "Weekly Errors" }), (0, jsx_runtime_1.jsx)(material_1.Typography, { variant: "h4", children: weeklyErrorCount })] }) })] }), (0, jsx_runtime_1.jsx)(material_1.Box, { sx: { flex: 1, overflow: 'auto' }, children: (0, jsx_runtime_1.jsx)(LogMetadataGrid_1.LogMetadataGrid, {
|
|
99
|
+
return ((0, jsx_runtime_1.jsxs)(TabViewBox_1.TabViewBox, { children: [(0, jsx_runtime_1.jsxs)(material_1.Grid, { container: true, spacing: 2, sx: { mb: 2 }, children: [(0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 6, children: (0, jsx_runtime_1.jsxs)(material_1.Paper, { sx: { p: 2, textAlign: 'center' }, children: [(0, jsx_runtime_1.jsx)(material_1.Typography, { children: "Daily Errors" }), (0, jsx_runtime_1.jsx)(material_1.Typography, { variant: "h4", children: dailyErrorCount })] }) }), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 6, children: (0, jsx_runtime_1.jsxs)(material_1.Paper, { sx: { p: 2, textAlign: 'center' }, children: [(0, jsx_runtime_1.jsx)(material_1.Typography, { children: "Weekly Errors" }), (0, jsx_runtime_1.jsx)(material_1.Typography, { variant: "h4", children: weeklyErrorCount })] }) })] }), (0, jsx_runtime_1.jsx)(material_1.Box, { sx: { flex: 1, overflow: 'auto' }, children: (0, jsx_runtime_1.jsx)(LogMetadataGrid_1.LogMetadataGrid, { isLoading: isLoading, logs: allLogs }) })] }));
|
|
96
100
|
};
|
|
97
101
|
exports.Dashboard = Dashboard;
|
|
@@ -16,7 +16,7 @@ const TimelineEvent = ({ event, level, setSelectedLogCorrelation, scale, parrent
|
|
|
16
16
|
height: EVENT_HEIGHT,
|
|
17
17
|
textAlign: 'right',
|
|
18
18
|
display: totalTimeOffset ? 'inline-block' : 'none',
|
|
19
|
-
} }), (0, jsx_runtime_1.jsxs)("div", { style: {
|
|
19
|
+
} }), (0, jsx_runtime_1.jsxs)("div", { onClick: () => setSelectedLogCorrelation(event.correlation), style: {
|
|
20
20
|
whiteSpace: 'nowrap',
|
|
21
21
|
width: `${eventWidth}px`,
|
|
22
22
|
height: EVENT_HEIGHT,
|
|
@@ -25,12 +25,12 @@ const TimelineEvent = ({ event, level, setSelectedLogCorrelation, scale, parrent
|
|
|
25
25
|
padding: 3,
|
|
26
26
|
borderRadius: 4,
|
|
27
27
|
display: 'inline-block',
|
|
28
|
-
},
|
|
28
|
+
}, children: [event.moduleName, "::", event.generic.split('::').pop(), " - @", parrentTimeOffsetMs, "ms - ", event.executionTimeMs, "ms"] }), event.children.map((child) => {
|
|
29
29
|
const childDate = new Date(child.startedAt);
|
|
30
30
|
const eventDate = new Date(event.startedAt);
|
|
31
31
|
const offsetMs = childDate.getTime() - eventDate.getTime();
|
|
32
32
|
const totalOffset = totalParrentTimeOffsetMs + offsetMs;
|
|
33
|
-
return ((0, jsx_runtime_1.jsx)(TimelineEvent, { event: child,
|
|
33
|
+
return ((0, jsx_runtime_1.jsx)(TimelineEvent, { event: child, level: level + 1, parrentTimeOffsetMs: offsetMs, scale: scale, setSelectedLogCorrelation: setSelectedLogCorrelation, totalParrentTimeOffsetMs: totalOffset }, child.correlation));
|
|
34
34
|
})] }));
|
|
35
35
|
};
|
|
36
36
|
const EventTimeline = ({ logCorrelation, setSelectedLogCorrelation, isVisible, treeApi }) => {
|
|
@@ -73,6 +73,6 @@ const EventTimeline = ({ logCorrelation, setSelectedLogCorrelation, isVisible, t
|
|
|
73
73
|
const endDate = new Date(latestFinishedAt);
|
|
74
74
|
const offsetMs = endDate.getTime() - startDate.getTime();
|
|
75
75
|
const scale = 1100 / offsetMs + scaleOffset;
|
|
76
|
-
return ((0, jsx_runtime_1.jsxs)("div", { style: { position: 'relative', width: '100%', height: '100%' }, children: [(0, jsx_runtime_1.jsxs)("div", { style: { height: 24 }, children: [(0, jsx_runtime_1.jsx)("b", { children: (0, quidproquo_core_1.formatDuration)(totalExecutionTime) }), (0, jsx_runtime_1.jsx)("i", { children: " of compute over " }), (0, jsx_runtime_1.jsx)("b", { children: (0, quidproquo_core_1.formatDuration)(offsetMs) })] }), (0, jsx_runtime_1.jsx)("div", { ref: setTimelineRef, onWheel: handleOnWheel, style: { width: '100%', height: 'calc(100% - 24px)' }, children: treeApi.treeDataWithNoQpqActions[0] && ((0, jsx_runtime_1.jsx)(TimelineEvent, { event: treeApi.treeDataWithNoQpqActions[0], level: 0,
|
|
76
|
+
return ((0, jsx_runtime_1.jsxs)("div", { style: { position: 'relative', width: '100%', height: '100%' }, children: [(0, jsx_runtime_1.jsxs)("div", { style: { height: 24 }, children: [(0, jsx_runtime_1.jsx)("b", { children: (0, quidproquo_core_1.formatDuration)(totalExecutionTime) }), (0, jsx_runtime_1.jsx)("i", { children: " of compute over " }), (0, jsx_runtime_1.jsx)("b", { children: (0, quidproquo_core_1.formatDuration)(offsetMs) })] }), (0, jsx_runtime_1.jsx)("div", { ref: setTimelineRef, onWheel: handleOnWheel, style: { width: '100%', height: 'calc(100% - 24px)' }, children: treeApi.treeDataWithNoQpqActions[0] && ((0, jsx_runtime_1.jsx)(TimelineEvent, { event: treeApi.treeDataWithNoQpqActions[0], level: 0, parrentTimeOffsetMs: 0, scale: scale, setSelectedLogCorrelation: setSelectedLogCorrelation, totalParrentTimeOffsetMs: 0 })) })] }));
|
|
77
77
|
};
|
|
78
78
|
exports.EventTimeline = EventTimeline;
|
|
@@ -28,10 +28,8 @@ const HelpChat = ({ logCorrelation }) => {
|
|
|
28
28
|
const chatContainerRef = (0, react_1.useRef)(null);
|
|
29
29
|
const accessToken = (0, quidproquo_web_react_1.useAuthAccessToken)();
|
|
30
30
|
const baseUrlResolvers = (0, quidproquo_web_react_1.useBaseUrlResolvers)();
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
}, []);
|
|
34
|
-
const fetchChatMessages = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
31
|
+
// Stable identity so the mount-only effect below can list it as a dependency.
|
|
32
|
+
const fetchChatMessages = (0, quidproquo_web_react_1.useEffectCallback)(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
35
33
|
const listLogChatMessages = {
|
|
36
34
|
correlationId: logCorrelation,
|
|
37
35
|
nextPageKey: nextPageKey,
|
|
@@ -44,7 +42,10 @@ const HelpChat = ({ logCorrelation }) => {
|
|
|
44
42
|
finally {
|
|
45
43
|
// Do nothing
|
|
46
44
|
}
|
|
47
|
-
});
|
|
45
|
+
}));
|
|
46
|
+
(0, react_1.useEffect)(() => {
|
|
47
|
+
fetchChatMessages();
|
|
48
|
+
}, [fetchChatMessages]);
|
|
48
49
|
const handleSendMessage = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
49
50
|
if (inputMessage.trim() !== '') {
|
|
50
51
|
const newMessage = {
|
|
@@ -79,7 +80,7 @@ const HelpChat = ({ logCorrelation }) => {
|
|
|
79
80
|
chatContainerRef.current.scrollTop = chatContainerRef.current.scrollHeight;
|
|
80
81
|
}
|
|
81
82
|
}, [chatMessages]);
|
|
82
|
-
return ((0, jsx_runtime_1.jsxs)(material_1.Box, { sx: { display: 'flex', flexDirection: 'column', height: '100%' }, children: [(0, jsx_runtime_1.jsxs)(material_1.Box, { sx: { flexGrow: 1, overflowY: 'auto', p: 2 },
|
|
83
|
+
return ((0, jsx_runtime_1.jsxs)(material_1.Box, { sx: { display: 'flex', flexDirection: 'column', height: '100%' }, children: [(0, jsx_runtime_1.jsxs)(material_1.Box, { ref: chatContainerRef, sx: { flexGrow: 1, overflowY: 'auto', p: 2 }, children: [chatMessages.map((message, index) => ((0, jsx_runtime_1.jsx)(material_1.Box, { sx: {
|
|
83
84
|
display: 'flex',
|
|
84
85
|
alignItems: 'flex-start',
|
|
85
86
|
mb: 2,
|
|
@@ -104,6 +105,6 @@ const HelpChat = ({ logCorrelation }) => {
|
|
|
104
105
|
backgroundColor: 'grey.300',
|
|
105
106
|
color: 'black',
|
|
106
107
|
maxWidth: '70%',
|
|
107
|
-
}, children: [(0, jsx_runtime_1.jsxs)(material_1.Box, { sx: { display: 'flex', alignItems: 'center', mb: 1 }, children: [(0, jsx_runtime_1.jsx)(material_1.Avatar, { sx: { mr: 1, bgcolor: 'grey.500' }, children: (0, jsx_runtime_1.jsx)(icons_material_1.Android, {}) }), (0, jsx_runtime_1.jsx)(material_1.Typography, { variant: "subtitle2", children: "AI Assistant" })] }), (0, jsx_runtime_1.jsxs)(material_1.Box, { sx: { display: 'flex', alignItems: 'center' }, children: [(0, jsx_runtime_1.jsx)(material_1.CircularProgress, { size: 20, sx: { mr: 1 } }), (0, jsx_runtime_1.jsx)(material_1.Typography, { variant: "body1", children: "Thinking..." })] })] }) }))] }), (0, jsx_runtime_1.jsx)(material_1.Box, { sx: { p: 2, borderTop: '1px solid #ccc' }, children: (0, jsx_runtime_1.jsxs)(material_1.Box, { sx: { display: 'flex' }, children: [(0, jsx_runtime_1.jsx)(material_1.TextField, { fullWidth: true,
|
|
108
|
+
}, children: [(0, jsx_runtime_1.jsxs)(material_1.Box, { sx: { display: 'flex', alignItems: 'center', mb: 1 }, children: [(0, jsx_runtime_1.jsx)(material_1.Avatar, { sx: { mr: 1, bgcolor: 'grey.500' }, children: (0, jsx_runtime_1.jsx)(icons_material_1.Android, {}) }), (0, jsx_runtime_1.jsx)(material_1.Typography, { variant: "subtitle2", children: "AI Assistant" })] }), (0, jsx_runtime_1.jsxs)(material_1.Box, { sx: { display: 'flex', alignItems: 'center' }, children: [(0, jsx_runtime_1.jsx)(material_1.CircularProgress, { size: 20, sx: { mr: 1 } }), (0, jsx_runtime_1.jsx)(material_1.Typography, { variant: "body1", children: "Thinking..." })] })] }) }))] }), (0, jsx_runtime_1.jsx)(material_1.Box, { sx: { p: 2, borderTop: '1px solid #ccc' }, children: (0, jsx_runtime_1.jsxs)(material_1.Box, { sx: { display: 'flex' }, children: [(0, jsx_runtime_1.jsx)(material_1.TextField, { fullWidth: true, onChange: (e) => setInputMessage(e.target.value), onKeyDown: handleKeyPress, placeholder: "Type your message...", sx: { mr: 2 }, value: inputMessage, variant: "outlined" }), (0, jsx_runtime_1.jsx)(material_1.Button, { onClick: handleSendMessage, variant: "contained", children: "Send" })] }) })] }));
|
|
108
109
|
};
|
|
109
110
|
exports.HelpChat = HelpChat;
|
|
@@ -9,30 +9,33 @@ const material_1 = require("@mui/material");
|
|
|
9
9
|
const BACKGROUND_COLOR = '#c1c1c1';
|
|
10
10
|
// Here we're using `renderCustomNodeElement` to represent each node
|
|
11
11
|
// as an SVG `rect` instead of the default `circle`.
|
|
12
|
-
const renderRectSvgNode = (setSelectedLogCorrelation, highlightCorrelationId) =>
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
?
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
12
|
+
const renderRectSvgNode = (setSelectedLogCorrelation, highlightCorrelationId) => {
|
|
13
|
+
const RectSvgNode = ({ nodeDatum }) => {
|
|
14
|
+
// TODO: Workout the nodeDateum type
|
|
15
|
+
const color = nodeDatum.correlation === highlightCorrelationId
|
|
16
|
+
? nodeDatum.error
|
|
17
|
+
? '#8B0000'
|
|
18
|
+
: '#00008B' // Very dark red for selected errors, dark blue for selected non-errors
|
|
19
|
+
: nodeDatum.error
|
|
20
|
+
? 'red'
|
|
21
|
+
: 'white'; // Bright red for non-selected errors, white for non-selected non-errors
|
|
22
|
+
// For story runtime types, collapse the runtimeType line away so the generic
|
|
23
|
+
// info takes its place — other runtime types keep their full label stack.
|
|
24
|
+
const isStoryRuntimeType = nodeDatum.runtimeType === quidproquo_core_1.QpqRuntimeType.EXECUTE_STORY || nodeDatum.runtimeType === quidproquo_core_1.QpqRuntimeType.EXECUTE_IMPLEMENTATION_STORY;
|
|
25
|
+
const displayText = (nodeDatum.generic || '').split('::').pop();
|
|
26
|
+
const textLines = isStoryRuntimeType
|
|
27
|
+
? [nodeDatum.moduleName, displayText, nodeDatum.error || '']
|
|
28
|
+
: [nodeDatum.moduleName, nodeDatum.runtimeType, displayText, nodeDatum.error || ''];
|
|
29
|
+
return ((0, jsx_runtime_1.jsxs)("g", { children: [(0, jsx_runtime_1.jsx)("circle", { fill: color, onClick: () => setSelectedLogCorrelation(nodeDatum.correlation), r: 10, x: "10", y: "10" }), textLines
|
|
30
|
+
.filter((t) => !!t)
|
|
31
|
+
.map((text, i) => {
|
|
32
|
+
const x = 0;
|
|
33
|
+
const y = i === 0 ? -20 : 10 + i * 20;
|
|
34
|
+
const fontSize = i === 0 ? 30 : 15;
|
|
35
|
+
return ((0, jsx_runtime_1.jsxs)(react_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("rect", { fill: BACKGROUND_COLOR, height: fontSize, strokeWidth: "0", width: "100", x: x - 50, y: y - fontSize / 2 - 8 }), (0, jsx_runtime_1.jsx)("text", { fill: nodeDatum.error ? 'red' : 'black', fontSize: fontSize, strokeWidth: 0, textAnchor: "middle", y: y, children: text })] }, `${i}`));
|
|
36
|
+
})] }));
|
|
37
|
+
};
|
|
38
|
+
return RectSvgNode;
|
|
36
39
|
};
|
|
37
40
|
const LogCorrelationTreeComponent = ({ correlationId, highlightCorrelationId, setSelectedLogCorrelation, isVisible, treeApi, }) => {
|
|
38
41
|
const treeContainer = (0, react_1.useRef)(null);
|
|
@@ -12,6 +12,6 @@ const LogCorrelations = ({ logCorrelation, setSelectedLogCorrelation, isVisible,
|
|
|
12
12
|
alignItems: 'center',
|
|
13
13
|
justifyContent: 'center',
|
|
14
14
|
height: '100%',
|
|
15
|
-
}, children: (0, jsx_runtime_1.jsx)(LogCorrelationTree_1.LogCorrelationTree, { correlationId: logCorrelation, highlightCorrelationId: logCorrelation,
|
|
15
|
+
}, children: (0, jsx_runtime_1.jsx)(LogCorrelationTree_1.LogCorrelationTree, { correlationId: logCorrelation, highlightCorrelationId: logCorrelation, isVisible: isVisible, setSelectedLogCorrelation: setSelectedLogCorrelation, treeApi: treeApi }) }));
|
|
16
16
|
};
|
|
17
17
|
exports.LogCorrelations = LogCorrelations;
|
|
@@ -40,6 +40,6 @@ const LogDetails = ({ log, hideFastActions, orderByDuration, }) => {
|
|
|
40
40
|
return durationB - durationA;
|
|
41
41
|
});
|
|
42
42
|
}
|
|
43
|
-
return ((0, jsx_runtime_1.jsx)(material_1.Box, { sx: { width: 1 }, children: (0, jsx_runtime_1.jsx)(material_1.Table, { sx: { tableLayout: 'fixed' }, children: (0, jsx_runtime_1.jsxs)(material_1.TableBody, { children: [(0, jsx_runtime_1.jsxs)(material_1.TableRow, { children: [(0, jsx_runtime_1.jsx)(material_1.TableCell, { sx: leftTableCell, children: (0, jsx_runtime_1.jsx)(ActionHistoryItemTimeStamp_1.ActionHistoryItemTimeStamp, {
|
|
43
|
+
return ((0, jsx_runtime_1.jsx)(material_1.Box, { sx: { width: 1 }, children: (0, jsx_runtime_1.jsx)(material_1.Table, { sx: { tableLayout: 'fixed' }, children: (0, jsx_runtime_1.jsxs)(material_1.TableBody, { children: [(0, jsx_runtime_1.jsxs)(material_1.TableRow, { children: [(0, jsx_runtime_1.jsx)(material_1.TableCell, { sx: leftTableCell, children: (0, jsx_runtime_1.jsx)(ActionHistoryItemTimeStamp_1.ActionHistoryItemTimeStamp, { finishedAt: log.startedAt, startedAt: log.startedAt }) }), (0, jsx_runtime_1.jsx)(material_1.TableCell, { sx: rightTableCell, children: (0, jsx_runtime_1.jsx)(LogSummaryDetails_1.LogSummaryDetails, { log: log }) })] }), history.map((historyItem, index) => ((0, jsx_runtime_1.jsxs)(material_1.TableRow, { children: [(0, jsx_runtime_1.jsx)(material_1.TableCell, { sx: leftTableCell, children: (0, jsx_runtime_1.jsx)(ActionHistoryItemTimeStamp_1.ActionHistoryItemTimeStamp, { finishedAt: historyItem.finishedAt, startedAt: historyItem.startedAt }) }), (0, jsx_runtime_1.jsxs)(material_1.TableCell, { sx: rightTableCell, children: [historyItem.act && (0, jsx_runtime_1.jsx)(ActionRender_1.AnyActionHistoryItem, { action: historyItem.act, result: historyItem.res }), !historyItem.act && (0, jsx_runtime_1.jsx)("div", { children: "No Action" })] })] }, `${index}`))), (0, jsx_runtime_1.jsxs)(material_1.TableRow, { children: [(0, jsx_runtime_1.jsx)(material_1.TableCell, { sx: leftTableCell, children: (0, jsx_runtime_1.jsx)(ActionHistoryItemTimeStamp_1.ActionHistoryItemTimeStamp, { finishedAt: log.finishedAt, startedAt: log.finishedAt }) }), (0, jsx_runtime_1.jsx)(material_1.TableCell, { sx: rightTableCell, children: (0, jsx_runtime_1.jsx)(LogSummaryReturn_1.LogSummaryReturn, { log: log }) })] }), (log === null || log === void 0 ? void 0 : log.logs) && ((0, jsx_runtime_1.jsx)(material_1.TableRow, { children: (0, jsx_runtime_1.jsxs)(material_1.TableCell, { colSpan: 2, style: { width: '100%' }, children: [(0, jsx_runtime_1.jsx)("div", { style: { paddingBottom: '10px' }, children: (0, jsx_runtime_1.jsx)(material_1.Typography, { component: "span", variant: "h6", children: "Caught console.log events" }) }), (0, jsx_runtime_1.jsx)(ConsoleLogViewer_1.default, { logs: log === null || log === void 0 ? void 0 : log.logs })] }) }))] }) }) }));
|
|
44
44
|
};
|
|
45
45
|
exports.LogDetails = LogDetails;
|
|
@@ -44,21 +44,21 @@ const LogDialog = ({ logCorrelation, open, handleClose, setSelectedLogCorrelatio
|
|
|
44
44
|
logDialogStateApi.setSelectedTab(newValue);
|
|
45
45
|
};
|
|
46
46
|
const treeApi = (0, hooks_1.useLogTreeData)(logCorrelation, false);
|
|
47
|
-
return ((0, jsx_runtime_1.jsxs)(material_1.Dialog, {
|
|
47
|
+
return ((0, jsx_runtime_1.jsxs)(material_1.Dialog, { "aria-describedby": "scroll-dialog-description", "aria-labelledby": "scroll-dialog-title", fullWidth: true, maxWidth: false, onClose: handleClose, open: open, PaperProps: {
|
|
48
48
|
style: {
|
|
49
49
|
width: '90%',
|
|
50
50
|
height: '90%',
|
|
51
51
|
maxHeight: '90%',
|
|
52
52
|
maxWidth: '90%',
|
|
53
53
|
},
|
|
54
|
-
}, children: [(0, jsx_runtime_1.jsxs)(material_1.DialogTitle, { id: "scroll-dialog-title", children: ["Log Details - ", logCorrelation] }), (0, jsx_runtime_1.jsx)(material_1.AppBar, {
|
|
54
|
+
}, scroll: 'paper', children: [(0, jsx_runtime_1.jsxs)(material_1.DialogTitle, { id: "scroll-dialog-title", children: ["Log Details - ", logCorrelation] }), (0, jsx_runtime_1.jsx)(material_1.AppBar, { color: "primary", position: "sticky", children: (0, jsx_runtime_1.jsxs)(material_1.Tabs, { indicatorColor: "secondary", onChange: handleTabChange, textColor: "inherit", value: logDialogState.selectedTab, children: [(0, jsx_runtime_1.jsx)(material_1.Tab, { label: "Log Details" }), (0, jsx_runtime_1.jsx)(material_1.Tab, { label: "Tree" }), (0, jsx_runtime_1.jsx)(material_1.Tab, { label: "Timeline" }), (0, jsx_runtime_1.jsx)(material_1.Tab, { label: "Notes" }), (0, jsx_runtime_1.jsx)(material_1.Tab, { label: "Raw JSON" }), (0, jsx_runtime_1.jsx)(material_1.Tab, { label: "Help" })] }) }), (0, jsx_runtime_1.jsxs)(material_1.DialogContent, { dividers: true, sx: {
|
|
55
55
|
minHeight: '150px',
|
|
56
56
|
overflowY: 'scroll',
|
|
57
|
-
}, children: [asyncLog.isLoading && (0, jsx_runtime_1.jsx)(material_1.LinearProgress, {}), (0, jsx_runtime_1.jsx)("div", { style: getTabStyle(logDialogState.selectedTab, 0), children: (0, jsx_runtime_1.jsx)(tabs_1.LogDetailsTab, { log: asyncLog, logDialogState: logDialogState, logDialogStateApi: logDialogStateApi }) }), (0, jsx_runtime_1.jsx)("div", { style: getTabStyle(logDialogState.selectedTab, 1), children: (0, jsx_runtime_1.jsx)(tabs_1.TreeTab, {
|
|
57
|
+
}, children: [asyncLog.isLoading && (0, jsx_runtime_1.jsx)(material_1.LinearProgress, {}), (0, jsx_runtime_1.jsx)("div", { style: getTabStyle(logDialogState.selectedTab, 0), children: (0, jsx_runtime_1.jsx)(tabs_1.LogDetailsTab, { log: asyncLog, logDialogState: logDialogState, logDialogStateApi: logDialogStateApi }) }), (0, jsx_runtime_1.jsx)("div", { style: getTabStyle(logDialogState.selectedTab, 1), children: (0, jsx_runtime_1.jsx)(tabs_1.TreeTab, { isVisible: logDialogState.selectedTab === 1, log: asyncLog, setSelectedLogCorrelation: setSelectedLogCorrelation, treeApi: treeApi }) }), (0, jsx_runtime_1.jsx)("div", { style: getTabStyle(logDialogState.selectedTab, 2), children: (0, jsx_runtime_1.jsx)(tabs_1.TimelineTab, { isVisible: logDialogState.selectedTab === 2, log: asyncLog, setSelectedLogCorrelation: setSelectedLogCorrelation, treeApi: treeApi }) }), (0, jsx_runtime_1.jsx)("div", { style: getTabStyle(logDialogState.selectedTab, 3), children: (0, jsx_runtime_1.jsx)(tabs_1.NotesTab, { log: asyncLog }) }), (0, jsx_runtime_1.jsx)("div", { style: getTabStyle(logDialogState.selectedTab, 4), children: (0, jsx_runtime_1.jsx)(tabs_1.RawTab, { log: asyncLog }) }), (0, jsx_runtime_1.jsx)("div", { style: getTabStyle(logDialogState.selectedTab, 5), children: (0, jsx_runtime_1.jsx)(tabs_1.HelpTab, { log: asyncLog }) })] }), (0, jsx_runtime_1.jsxs)(material_1.DialogActions, { children: [(0, jsx_runtime_1.jsx)(material_1.Button, { disabled: asyncLog.isLoading, onClick: (event) => treeApi.refreshTreeData(), style: getTabStyle(logDialogState.selectedTab, 1), children: "Refresh Tree" }), (0, jsx_runtime_1.jsx)(material_1.Button, { disabled: asyncLog.isLoading, onClick: (event) => treeApi.refreshTreeData(), style: getTabStyle(logDialogState.selectedTab, 2), children: "Refresh Timeline" }), (0, jsx_runtime_1.jsx)(material_1.Button, { disabled: asyncLog.isLoading, onClick: (event) => {
|
|
58
58
|
if (asyncLog.log) {
|
|
59
59
|
downloadJson(JSON.stringify(asyncLog.log, null, 2), `${asyncLog.log.correlation}.json`);
|
|
60
60
|
}
|
|
61
61
|
event.stopPropagation();
|
|
62
|
-
},
|
|
62
|
+
}, children: "Download" }), asyncLog.log && ((0, jsx_runtime_1.jsx)(material_1.Button, { disabled: asyncLog.isLoading, onClick: handleExecute, children: "Execute" })), (0, jsx_runtime_1.jsx)(material_1.Button, { onClick: handleClose, children: "Close" })] })] }));
|
|
63
63
|
};
|
|
64
64
|
exports.LogDialog = LogDialog;
|
|
@@ -4,6 +4,6 @@ exports.MovedToColdStorage = void 0;
|
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
const material_1 = require("@mui/material");
|
|
6
6
|
const MovedToColdStorage = ({ guid }) => {
|
|
7
|
-
return ((0, jsx_runtime_1.jsxs)(material_1.Paper, { elevation: 3, sx: { padding: 2, borderRadius: 2 }, children: [(0, jsx_runtime_1.jsxs)(material_1.Typography, {
|
|
7
|
+
return ((0, jsx_runtime_1.jsxs)(material_1.Paper, { elevation: 3, sx: { padding: 2, borderRadius: 2 }, children: [(0, jsx_runtime_1.jsxs)(material_1.Typography, { color: "textSecondary", variant: "body1", children: ["The log you are requesting has been moved to ", (0, jsx_runtime_1.jsx)("b", { children: "cold storage" }), ". Please provide the following Correlation to an administrator if you would like it to be moved back to standard storage."] }), (0, jsx_runtime_1.jsx)(material_1.Box, { mt: 1, children: (0, jsx_runtime_1.jsx)(material_1.Typography, { color: "primary", fontWeight: "bold", variant: "subtitle1", children: guid }) })] }));
|
|
8
8
|
};
|
|
9
9
|
exports.MovedToColdStorage = MovedToColdStorage;
|
|
@@ -15,6 +15,6 @@ const LogDetailsTab = ({ log, logDialogState: { hideFastActions, orderByDuration
|
|
|
15
15
|
return ((0, jsx_runtime_1.jsxs)("div", { style: {
|
|
16
16
|
display: 'flex',
|
|
17
17
|
flexDirection: 'row-reverse',
|
|
18
|
-
}, children: [(0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)(material_1.FormControlLabel, { control: (0, jsx_runtime_1.jsx)(material_1.Checkbox, { checked: hideFastActions, onChange: (event) => setHideFastActions(event.target.checked) }), label: "Hide Fast Actions" }), (0, jsx_runtime_1.jsx)(material_1.FormControlLabel, { control: (0, jsx_runtime_1.jsx)(material_1.Checkbox, { checked: orderByDuration, onChange: (event) => setOrderByDuration(event.target.checked) }), label: "Order by Duration" })] }), (0, jsx_runtime_1.jsx)(LogDetails_1.LogDetails, { log: log.log,
|
|
18
|
+
}, children: [(0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)(material_1.FormControlLabel, { control: (0, jsx_runtime_1.jsx)(material_1.Checkbox, { checked: hideFastActions, onChange: (event) => setHideFastActions(event.target.checked) }), label: "Hide Fast Actions" }), (0, jsx_runtime_1.jsx)(material_1.FormControlLabel, { control: (0, jsx_runtime_1.jsx)(material_1.Checkbox, { checked: orderByDuration, onChange: (event) => setOrderByDuration(event.target.checked) }), label: "Order by Duration" })] }), (0, jsx_runtime_1.jsx)(LogDetails_1.LogDetails, { hideFastActions: hideFastActions, log: log.log, orderByDuration: orderByDuration })] }));
|
|
19
19
|
};
|
|
20
20
|
exports.LogDetailsTab = LogDetailsTab;
|
|
@@ -7,6 +7,6 @@ const TimelineTab = ({ log, isVisible, setSelectedLogCorrelation, treeApi, }) =>
|
|
|
7
7
|
if (log.isLoading) {
|
|
8
8
|
return (0, jsx_runtime_1.jsx)("div", { children: "Loading..." });
|
|
9
9
|
}
|
|
10
|
-
return ((0, jsx_runtime_1.jsx)(EventTimeline_1.EventTimeline, { logCorrelation: log.logCorrelation, setSelectedLogCorrelation: setSelectedLogCorrelation,
|
|
10
|
+
return ((0, jsx_runtime_1.jsx)(EventTimeline_1.EventTimeline, { isVisible: isVisible, logCorrelation: log.logCorrelation, setSelectedLogCorrelation: setSelectedLogCorrelation, treeApi: treeApi }));
|
|
11
11
|
};
|
|
12
12
|
exports.TimelineTab = TimelineTab;
|
|
@@ -7,6 +7,6 @@ const TreeTab = ({ log, isVisible, setSelectedLogCorrelation, treeApi, }) => {
|
|
|
7
7
|
if (log.isLoading) {
|
|
8
8
|
return (0, jsx_runtime_1.jsx)("div", { children: "Loading..." });
|
|
9
9
|
}
|
|
10
|
-
return ((0, jsx_runtime_1.jsx)(LogCorrelations_1.LogCorrelations, { logCorrelation: log.logCorrelation, setSelectedLogCorrelation: setSelectedLogCorrelation,
|
|
10
|
+
return ((0, jsx_runtime_1.jsx)(LogCorrelations_1.LogCorrelations, { isVisible: isVisible, logCorrelation: log.logCorrelation, setSelectedLogCorrelation: setSelectedLogCorrelation, treeApi: treeApi }));
|
|
11
11
|
};
|
|
12
12
|
exports.TreeTab = TreeTab;
|
|
@@ -55,9 +55,9 @@ const LogMetadataGrid = ({ logs, isLoading }) => {
|
|
|
55
55
|
.greenRow {
|
|
56
56
|
background-color: #eaffea;
|
|
57
57
|
}
|
|
58
|
-
` }), (0, jsx_runtime_1.jsx)(x_data_grid_1.DataGrid, { components: {
|
|
58
|
+
` }), (0, jsx_runtime_1.jsx)(x_data_grid_1.DataGrid, { autoPageSize: true, columns: columns, components: {
|
|
59
59
|
Pagination: DataGridPagination_1.DataGridPagination,
|
|
60
|
-
LoadingOverlay: () => (0, jsx_runtime_1.jsx)(LinearProgress_1.default, { variant: "determinate"
|
|
61
|
-
},
|
|
60
|
+
LoadingOverlay: () => (0, jsx_runtime_1.jsx)(LinearProgress_1.default, { value: searchProgress, variant: "determinate" }),
|
|
61
|
+
}, getRowClassName: getRowClassName, loading: isLoading, onRowClick: onRowClick, rows: logs.map((log) => (Object.assign(Object.assign({}, log), { id: log.correlation }))) }), (0, jsx_runtime_1.jsx)(LogDialog_1.LogDialog, { handleClose: clearSelectedLogCorrelation, logCorrelation: selectedLogCorrelation, open: !!selectedLogCorrelation, setSelectedLogCorrelation: setSelectedLogCorrelation, storyResultMetadatas: logs })] }));
|
|
62
62
|
};
|
|
63
63
|
exports.LogMetadataGrid = LogMetadataGrid;
|
|
@@ -4,6 +4,6 @@ exports.LogRawJson = void 0;
|
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
const material_1 = require("@mui/material");
|
|
6
6
|
const LogRawJson = ({ log }) => {
|
|
7
|
-
return ((0, jsx_runtime_1.jsxs)(material_1.Box, { sx: { width: 1, p: 2 }, children: [(0, jsx_runtime_1.jsx)(material_1.Typography, { variant: "h6",
|
|
7
|
+
return ((0, jsx_runtime_1.jsxs)(material_1.Box, { sx: { width: 1, p: 2 }, children: [(0, jsx_runtime_1.jsx)(material_1.Typography, { gutterBottom: true, variant: "h6", children: "Raw JSON" }), (0, jsx_runtime_1.jsx)("pre", { style: { whiteSpace: 'pre-wrap', wordBreak: 'break-word' }, children: JSON.stringify(log, null, 2) })] }));
|
|
8
8
|
};
|
|
9
9
|
exports.LogRawJson = LogRawJson;
|
|
@@ -10,6 +10,6 @@ const TopSection_1 = require("./TopSection");
|
|
|
10
10
|
const LogSearch = () => {
|
|
11
11
|
const { onSearch, logs } = (0, hooks_1.useLogSearch)();
|
|
12
12
|
const isLoading = (0, useIsLoading_1.useIsLoading)();
|
|
13
|
-
return (0, jsx_runtime_1.jsx)(TabViewBox_1.TabViewBox, {
|
|
13
|
+
return (0, jsx_runtime_1.jsx)(TabViewBox_1.TabViewBox, { body: () => (0, jsx_runtime_1.jsx)(LogMetadataGrid_1.LogMetadataGrid, { isLoading: isLoading, logs: logs }), header: () => (0, jsx_runtime_1.jsx)(TopSection_1.TopSection, { onSearch: onSearch }) });
|
|
14
14
|
};
|
|
15
15
|
exports.LogSearch = LogSearch;
|
|
@@ -36,7 +36,7 @@ const LogSummary = ({ log }) => {
|
|
|
36
36
|
},
|
|
37
37
|
};
|
|
38
38
|
sendMessage(refreshEvent);
|
|
39
|
-
}, [log.correlation]);
|
|
40
|
-
return ((0, jsx_runtime_1.jsxs)(material_1.Box, { sx: { width: 1, p: 2 }, children: [(0, jsx_runtime_1.jsx)(material_1.Typography, { variant: "h6",
|
|
39
|
+
}, [log.correlation, sendMessage]);
|
|
40
|
+
return ((0, jsx_runtime_1.jsxs)(material_1.Box, { sx: { width: 1, p: 2 }, children: [(0, jsx_runtime_1.jsx)(material_1.Typography, { gutterBottom: true, variant: "h6", children: "Log Summary" }), (0, jsx_runtime_1.jsxs)(material_1.Typography, { children: ["Correlation ID: ", log.correlation] }), (0, jsx_runtime_1.jsx)(material_1.FormControlLabel, { control: checkedLoading ? (0, jsx_runtime_1.jsx)(material_1.CircularProgress, { size: 24 }) : (0, jsx_runtime_1.jsx)(material_1.Checkbox, { checked: !!(logMetadata === null || logMetadata === void 0 ? void 0 : logMetadata.checked), onChange: handleCheckboxChange }), label: "Mark as done" })] }));
|
|
41
41
|
};
|
|
42
42
|
exports.LogSummary = LogSummary;
|