/*
* Copyright OpenSearch Contributors
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
import React, { Fragment } from 'react';
import { get } from 'lodash';
import { EuiFlexGrid, EuiSpacer, EuiText } from '@elastic/eui';
import { SettingContent, SettingGroup } from './constants';
import { AuditLoggingSettings } from './types';
import {
displayArray,
displayBoolean,
displayObject,
renderTextFlexItem,
} from '../../utils/display-utils';
export function ViewSettingGroup(props: {
settingGroup: SettingGroup;
config: AuditLoggingSettings;
}) {
const renderField = (config: AuditLoggingSettings, setting: SettingContent) => {
let val = get(config, setting.path);
if (setting.type === 'bool') {
val = val || false;
// @ts-ignore
return renderTextFlexItem(setting.title, displayBoolean(val));
} else if (setting.type === 'array') {
val = val || [];
// @ts-ignore
return renderTextFlexItem(setting.title, displayArray(val));
} else if (setting.type === 'map') {
val = val || {};
// @ts-ignore
return renderTextFlexItem(setting.title, displayObject(val));
} else {
return <>>;
}
};
return (
<>
{props.settingGroup.title}
{props.settingGroup.settings.map((setting: SettingContent) => {
return {renderField(props.config, setting)};
})}
>
);
}