diff --git a/i18n/en.ts b/i18n/en.ts index c59190e1c683973b9445f513a18aaf4208c8d41d..8651937dfb23560bce3c81c7074446422b45663d 100644 --- a/i18n/en.ts +++ b/i18n/en.ts @@ -911,6 +911,9 @@ export const lang_en: LangObj = { "Default group creator role": "Default group creator role", "The default role for users who create a new group (needs permission to manage group e.g. to add first users)": "The default role for users who create a new group (needs permission to manage group e.g. to add first users)", + "Save test server debug logs": "Save test server debug logs", + "If true the test server debug protocol will be saved in the test result (increases needed space by a lot ~5k chars) per test result": "If true the test server debug protocol will be saved in the test result (increases needed space by a lot ~5k chars) per test result", + //--- compare test "Compare files options" : "Compare files options", "Ignore case": "Ignore case", diff --git a/i18n/i18nRoot.ts b/i18n/i18nRoot.ts index 23287e2349384e3ae8ccce20d8acc25701183ef5..eb7137d084a87356c9a154a6cdd9c53aafbf4955 100644 --- a/i18n/i18nRoot.ts +++ b/i18n/i18nRoot.ts @@ -915,6 +915,9 @@ export interface LangObj { "Default group creator role": string "The default role for users who create a new group (needs permission to manage group e.g. to add first users)": string + "Save test server debug logs": string + "If true the test server debug protocol will be saved in the test result (increases needed space by a lot ~5k chars) per test result": string + //--- compare test "Compare files options": string "Ignore case": string diff --git a/src/components/material/materialSelectWrapper.tsx b/src/components/material/materialSelectWrapper.tsx index f7e37211df62850de4fe8a09b7c540f22f183650..361c02cca63ccbf9cbbef6eb79bea7eab5ebfeca 100644 --- a/src/components/material/materialSelectWrapper.tsx +++ b/src/components/material/materialSelectWrapper.tsx @@ -22,7 +22,7 @@ export interface MyProps { /** * only used for validation */ - value: string | string[] | number; + value: string | string[] | number | boolean; /** * the validations for the input * diff --git a/src/components/sites/systemSettingsSite/settingsView.tsx b/src/components/sites/systemSettingsSite/settingsView.tsx index fee3a09f0ff759bfadee417a3bc927c5378303c3..add8a965c96fe742d0cdf740627eea82d6605ee3 100644 --- a/src/components/sites/systemSettingsSite/settingsView.tsx +++ b/src/components/sites/systemSettingsSite/settingsView.tsx @@ -13,7 +13,7 @@ import MaterialInput from '../../material/materialInput' import { setCustomProjectTestCompileTimeoutInMs, setJustRunProgramCompileTimeoutInMs, - setMaxTestProtocolLinesToReturnInitiallyAction, + setMaxTestProtocolLinesToReturnInitiallyAction, setSaveTimingDebugLogFromTestServer, setServerCustomProjectTestMaxDiskSpaceInKb, setServerCustomProjectTestMemoryLimitInKb, setServerCustomProjectTestTimeoutInMs, @@ -43,7 +43,7 @@ import {refreshServerMessageIntervalInS} from '../../../constants' import {MyPopup} from '../../helpers/myPopup' import MaterialSelectWrapper from '../../material/materialSelectWrapper' import {SelectOnChangeEventData} from '../../../types/reactEvents' -import {parseId} from '../../../helpers/convertersAndTransformers' +import {parseBoolean, parseId} from '../../../helpers/convertersAndTransformers' import {errorDialog} from '../../../helpers/dialogHelper' export interface MyProps { @@ -93,6 +93,7 @@ const mapDispatchToProps = (dispatch: Dispatch) => bindActionCreators({ setServerCustomProjectTestMemoryLimitInKb, setServerCustomProjectTestMaxDiskSpaceInKb, + setSaveTimingDebugLogFromTestServer, setServerDefaultUserGroupId, setServerDefaultGroupRoleId, @@ -739,6 +740,55 @@ class SettingsView extends React.Component<Props, any> { /> </Form.Field> + { + //saveTimingDebugLogFromTestServer + } + <Form.Field> + <div className="form-field-label-with-icon"> + <label> + { + getI18n(this.props.langId, "Save test server debug logs") + } + </label> + + <HelpPopup wide + className="mar-left-half" + defaultText={getI18n(this.props.langId, + "If true the test server debug protocol will be saved in the test result (increases needed space by a lot ~5k chars) per test result" + )} + /> + </div> + + <MaterialSelectWrapper + value={this.props.systemSettings.saveTimingDebugLogFromTestServer} + > + <select + value={this.props.systemSettings.saveTimingDebugLogFromTestServer ? 'true' : 'false'} + onChange={(e: SelectOnChangeEventData) => { + const isSet = parseBoolean(e.currentTarget.value) + + if (isSet) { + this.props.setSaveTimingDebugLogFromTestServer(true) + } else { + this.props.setSaveTimingDebugLogFromTestServer(false) + } + }} + > + <option key={'false'} value={'false'}> + { + 'false' + } + </option> + <option key={'true'} value={'true'}> + { + 'true' + } + </option> + </select> + </MaterialSelectWrapper> + + </Form.Field> + </Form.Group> { diff --git a/src/constants.ts b/src/constants.ts index e9158939a3edc9be05abd7d504b9cc5c8adf472c..dce3709ad520fd819650ef9f13f9b5fdd085601b 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -13,7 +13,7 @@ import Logger from './helpers/logger' * y - breaking changes / new features * z - fixes, small changes */ -export const versionString = '2.10.5' +export const versionString = '2.10.6' export const supportMail = 'yapex@informatik.uni-halle.de' diff --git a/src/state/actions/systemSettingsSite/systemSettingsActions.ts b/src/state/actions/systemSettingsSite/systemSettingsActions.ts index c5b64a017adbf8bfab6b4acc31aaa540bed6daca..f129ff6caf70eb93f4eeb7bf66d329910f164b39 100644 --- a/src/state/actions/systemSettingsSite/systemSettingsActions.ts +++ b/src/state/actions/systemSettingsSite/systemSettingsActions.ts @@ -7,26 +7,32 @@ import { getSystemSettingsAsync } from './systemSettingsCrudActions' import { - ResetAction, SET_customProjectTestCompileTimeoutInMsAction, + ResetAction, + SET_customProjectTestCompileTimeoutInMsAction, SET_customProjectTestMaxDiskSpaceInKbAction, SET_customProjectTestMemoryLimitInKbAction, SET_customProjectTestTimeoutInMsAction, SET_defaultGroupCreatorGroupRoleIdAction, SET_defaultGroupRoleIdAction, - SET_defaultUserGroupIdAction, SET_justRunProgramCompileTimeoutInMsAction, + SET_defaultUserGroupIdAction, + SET_justRunProgramCompileTimeoutInMsAction, SET_justRunProgramMaxDiskSpaceInKbAction, SET_justRunProgramMemoryLimitInKbAction, SET_justRunProgramTimeoutInMsAction, SET_maxCustomProjectsPerUserAction, SET_maxCustomTestsPerParticipationAction, SET_maxNumberOfTestsWithOneRequestAction, - SET_maxNumberOfTestsWithOneRequestSubmitTestServerAction, SET_maxTestProtocolLinesToReturnInitiallyAction, - SET_serverMessageAction, SET_submitTestServerStatsUrlAction, + SET_maxNumberOfTestsWithOneRequestSubmitTestServerAction, + SET_maxTestProtocolLinesToReturnInitiallyAction, + SET_saveTimingDebugLogFromTestServerAction, + SET_serverMessageAction, + SET_submitTestServerStatsUrlAction, SET_submitTestServerTimeoutInMsAction, SET_submitTestServerUrlAction, SET_testServerConfigUiUrlAction, SET_testServerStatsUrlAction, - SET_testServerTimeoutInMsAction, SET_testServerTraceLogApiUrlAction, + SET_testServerTimeoutInMsAction, + SET_testServerTraceLogApiUrlAction, SET_testServerUrlAction } from '../../reducers/systemSettingsSite/systemSettingsSiteReducer' @@ -210,6 +216,13 @@ export function setServerDefaultGroupCreatorGroupRoleId(defaultGroupCreatorGroup } } +export function setSaveTimingDebugLogFromTestServer(saveTimingDebugLogFromTestServer: boolean): SET_saveTimingDebugLogFromTestServerAction { + return { + type: ActionType.SET_saveTimingDebugLogFromTestServer, + saveTimingDebugLogFromTestServer + } +} + export function loadSystemSettingsSite(): MultiActions { return async (dispatch, getState) => { diff --git a/src/state/reducers/globalSystemSettings/globalSystemSettingsReducer.ts b/src/state/reducers/globalSystemSettings/globalSystemSettingsReducer.ts index bac4a65be62a59064746055f9b08678447fd5eda..e4009b1c146ce0dc859d5ac84a20527d6e3b07bd 100644 --- a/src/state/reducers/globalSystemSettings/globalSystemSettingsReducer.ts +++ b/src/state/reducers/globalSystemSettings/globalSystemSettingsReducer.ts @@ -100,6 +100,7 @@ export const initial: State = { defaultGroupRoleId: -1, defaultUserGroupId: -1, maxTestProtocolLinesToReturnInitially: -1, + saveTimingDebugLogFromTestServer: false, testServerTraceLogApiUrl: '', }, testServerPublicSettings: { diff --git a/src/state/reducers/systemSettingsSite/systemSettingsSiteActionTypes.ts b/src/state/reducers/systemSettingsSite/systemSettingsSiteActionTypes.ts index e5e26ecaa9c5581ac87090861b67a1c7807ac6a8..ff4e75985e91f5dd53eeda10b4757e2ad541c48a 100644 --- a/src/state/reducers/systemSettingsSite/systemSettingsSiteActionTypes.ts +++ b/src/state/reducers/systemSettingsSite/systemSettingsSiteActionTypes.ts @@ -46,6 +46,8 @@ export enum ActionType { SET_submitTestServerUrl = 'systemSettingsReducer_SET_submitTestServerUrl', SET_testServerTraceLogApiUrl = 'systemSettingsReducer_SET_testServerTraceLogApiUrl', SET_maxTestProtocolLinesToReturnInitially = 'systemSettingsReducer_SET_maxTestProtocolLinesToReturnInitially', + SET_saveTimingDebugLogFromTestServer= 'systemSettingsReducer_SET_saveTimingDebugLogFromTestServer', + SET_testServerConfigUiUrl = 'systemSettingsReducer_SET_testServerConfigUiUrl', diff --git a/src/state/reducers/systemSettingsSite/systemSettingsSiteReducer.ts b/src/state/reducers/systemSettingsSite/systemSettingsSiteReducer.ts index b7360512152cd12418e562fc28a38cfbad6eff7e..644aca20768cf470888fc243a1ca86da699f7382 100644 --- a/src/state/reducers/systemSettingsSite/systemSettingsSiteReducer.ts +++ b/src/state/reducers/systemSettingsSite/systemSettingsSiteReducer.ts @@ -73,6 +73,7 @@ export const initial: State = { defaultGroupRoleId: -1, defaultGroupCreatorGroupRoleId: -1, maxTestProtocolLinesToReturnInitially: -1, + saveTimingDebugLogFromTestServer: false, testServerTraceLogApiUrl: '', }, initialSystemSettings: null, @@ -137,6 +138,11 @@ export interface SET_maxTestProtocolLinesToReturnInitiallyAction extends ActionB readonly maxTestProtocolLinesToReturnInitially: number } +export interface SET_saveTimingDebugLogFromTestServerAction extends ActionBase { + readonly type: ActionType.SET_saveTimingDebugLogFromTestServer + readonly saveTimingDebugLogFromTestServer: boolean +} + export interface SET_testServerConfigUiUrlAction extends ActionBase { readonly type: ActionType.SET_testServerConfigUiUrl @@ -250,6 +256,7 @@ export type AllActions = | SET_submitTestServerTimeoutInMsAction | SET_maxNumberOfTestsWithOneRequestAction | SET_maxNumberOfTestsWithOneRequestSubmitTestServerAction + | SET_saveTimingDebugLogFromTestServerAction | SET_justRunProgramTimeoutInMsAction | SET_justRunProgramCompileTimeoutInMsAction | SET_justRunProgramMemoryLimitInKbAction @@ -375,6 +382,14 @@ export function reducer(state: State = initial, action: AllActions): State { maxTestProtocolLinesToReturnInitially: action.maxTestProtocolLinesToReturnInitially } } + case ActionType.SET_saveTimingDebugLogFromTestServer: + return { + ...state, + systemSettings: { + ...state.systemSettings, + saveTimingDebugLogFromTestServer: action.saveTimingDebugLogFromTestServer + } + } case ActionType.SET_testServerConfigUiUrl: return { ...state, diff --git a/src/types/systemSettings.ts b/src/types/systemSettings.ts index d16147d22b255f07fd9c72d1cbc0475275134949..bd7af1653e37edc2e5b5c501d2fdefb0619b3705 100644 --- a/src/types/systemSettings.ts +++ b/src/types/systemSettings.ts @@ -116,6 +116,8 @@ export interface SystemSettingsBase { */ readonly maxTestProtocolLinesToReturnInitially: number + readonly saveTimingDebugLogFromTestServer: boolean + /** * the default group role for a user when added to a group / or when the group role was deleted then this default role is assigned