settings modal

This commit is contained in:
Jan Prochazka
2021-04-18 10:26:59 +02:00
parent 67b57ab756
commit e97388e14b
6 changed files with 85 additions and 3 deletions

View File

@@ -0,0 +1,44 @@
<script lang="ts">
import FormButton from '../forms/FormButton.svelte';
import FormCheckboxField from '../forms/FormCheckboxField.svelte';
import FormProvider from '../forms/FormProvider.svelte';
import FormSubmit from '../forms/FormSubmit.svelte';
import FormTextField from '../forms/FormTextField.svelte';
import ModalBase from '../modals/ModalBase.svelte';
import { closeCurrentModal } from '../modals/modalTools';
import axiosInstance from '../utility/axiosInstance';
import { useSettings } from '../utility/metadataLoaders';
const settings = useSettings();
function handleOk(e) {
axiosInstance.post('config/update-settings', e.detail);
closeCurrentModal();
}
</script>
{#if $settings}
<FormProvider initialValues={$settings}>
<ModalBase {...$$restProps}>
<div slot="header">Settings</div>
<div class="heading">Data grid</div>
<FormCheckboxField name="dataGrid.hideLeftColumn" label="Hide left column by default" />
<FormTextField name="dataGrid.pageSize" label="Page size" defaultValue="100" />
<div slot="footer">
<FormSubmit value="OK" on:click={handleOk} />
<FormButton value="Cancel" on:click={closeCurrentModal} />
</div>
</ModalBase>
</FormProvider>
{/if}
<style>
.heading {
font-size: 20px;
margin: 5px;
}
</style>

View File

@@ -0,0 +1,14 @@
import _ from 'lodash';
export function getIntSettingsValue(settings, name, defaultValue, min = null, max = null) {
const parsed = parseInt(settings[name]);
if (_.isNaN(parsed)) {
return defaultValue;
}
if (_.isNumber(parsed)) {
if (min != null && parsed < min) return min;
if (max != null && parsed > max) return max;
return parsed;
}
return defaultValue;
}