FormType bilgisi değişinci ilgili tablar görünmeli

This commit is contained in:
Sedat Öztürk 2025-09-27 09:53:22 +03:00
parent d731943147
commit 060d0e27b6
42 changed files with 417 additions and 120 deletions

View file

@ -5,6 +5,7 @@ public class LayoutDto
public bool Grid { get; set; } = true; public bool Grid { get; set; } = true;
public bool Card { get; set; } = true; public bool Card { get; set; } = true;
public bool Pivot { get; set; } = true; public bool Pivot { get; set; } = true;
public bool Chart { get; set; } = true;
public string DefaultLayout { get; set; } = "grid"; public string DefaultLayout { get; set; } = "grid";
public int CardLayoutColumn { get; set; } = 4; public int CardLayoutColumn { get; set; } = 4;
} }

View file

@ -12517,6 +12517,12 @@
"en": "Pivot Layout", "en": "Pivot Layout",
"tr": "Pivot Düzeni" "tr": "Pivot Düzeni"
}, },
{
"resourceName": "Platform",
"key": "ListForms.ListFormEdit.DetailsLayoutDto.ChartLayout",
"en": "Chart Layout",
"tr": "Grafik Düzeni"
},
{ {
"resourceName": "Platform", "resourceName": "Platform",
"key": "ListForms.ListFormEdit.DetailsLayoutDto.DefaultLayout", "key": "ListForms.ListFormEdit.DetailsLayoutDto.DefaultLayout",

View file

@ -1,6 +1,102 @@
{ {
"commit": "a8dbf4c", "commit": "d731943",
"releases": [ "releases": [
{
"version": "1.0.28",
"buildDate": "2025-09-24",
"commit": "948925816f3fc5808a07bf0ce6fd86e0ac880ec7",
"changeLog": [
"Vite güncellemesi ile artık versiyon bilgileri düzelecek ve cache problemi düzelmeli"
]
},
{
"version": "1.0.27",
"buildDate": "2025-09-24",
"commit": "6e3f58ce9d3e7bc79c74dfc33ec79d115b7160a2",
"changeLog": [
"FormView, FormNew, Grid Popup için Script özelliği eklendi. Ayrıca itemlara buton eklenebiliyor.",
"Sadece textbox olan inputlara ekleniyor. Diğer komponenler için render özelliği kullanılması gerekiyor."
]
},
{
"version": "1.0.26",
"buildDate": "2025-09-23",
"commit": "ea5dbe91f5abd0a7408b75cc111c3119fbb8eb53",
"changeLog": [
"Liste, Pivot ve Card görünümü düzeltildi.",
"Menü ikonları Listelerde gösterildi.",
"Form detayında Subform filtreleri çalıştırıldı.",
"Grid proplarına gridDto gelmiyorsa kendi başının çaresine bakacak şekilde düzenlendi."
]
},
{
"version": "1.0.25",
"buildDate": "2025-09-23",
"commit": "d4f994b7b17bd96c45ed868e4c94d18ca757e217",
"changeLog": [
"Genel düzenlemeler"
]
},
{
"version": "1.0.24",
"buildDate": "2025-09-23",
"commit": "f62c35dec957dae225ab93811a0899c975cecf52",
"changeLog": [
"BaseModel LocalStorage açıldı.",
"ListeForm Layout ve CardColumnCount eklendi.",
"FormView, FormEdit ve FormNew den geri butonu ile Liste kaldığı yerden devam edebilecek."
]
},
{
"version": "1.0.23",
"buildDate": "2025-09-23",
"commit": "e92143fd055b9db1a8932f2c4d0b81172b19ef00",
"changeLog": [
"Vite üzerinde html dosyaları cacheleme"
]
},
{
"version": "1.0.22",
"buildDate": "2025-09-23",
"commit": "226410e7a928a54f01dd7f5305bf09fb7dcbc59d",
"changeLog": [
"MenuIcon için hook hazırladı. Liste, FormEdit, FormView ve FormNew de kullanılabilir."
]
},
{
"version": "1.0.21",
"buildDate": "2025-09-23",
"commit": "fcd6547dcb85d46d90d78eaa24788d7cc079d1b3",
"changeLog": [
"Versiyon güncellemeleri sistemin son aşama; eğer versiyon bilgisi değişmiş ise ChangeLog sayfasına yönlendirildi."
]
},
{
"version": "1.0.19",
"buildDate": "2025-09-23",
"commit": "43a945969174dd50b798d0d619e5fb7932402d04",
"changeLog": [
"Docker içerisinden diskclean script kaldırıldı. Ayrıca çalıştırılabilecek şekilde diskclean dizinin içerisinde sh dosyası mevcut."
]
},
{
"version": "1.0.18",
"buildDate": "2025-09-23",
"commit": "09566cce3b6750ad1f6ef2faad24b81d21dfd668",
"changeLog": [
"\"build\": \"node scripts/generate-version.js && vite build\"",
"\"build:production\": \"vite build\",",
"Yukarıdaki şekilde hem developer hem de production ortamı build işlemi birbirinden ayrıldı."
]
},
{
"version": "1.0.17",
"buildDate": "2025-09-23",
"commit": "5456486692eb070601313ab439de9c33a977b15b",
"changeLog": [
"Hem developer hem de production için versiyon güncellemesi"
]
},
{ {
"version": "1.0.16", "version": "1.0.16",
"buildDate": "2025-09-23", "buildDate": "2025-09-23",
@ -22,7 +118,7 @@
{ {
"version": "1.0.14", "version": "1.0.14",
"buildDate": "2025-09-22", "buildDate": "2025-09-22",
"commit": "1c4ab4f8232b4cd2a39fa66f8101664840113ce5", "commit": "51208b86937484d68b699120d74872067b1c7ef6",
"changeLog": [ "changeLog": [
"Yeni versiyon çıktı uyarı gelecek şekilde düzenlendi.", "Yeni versiyon çıktı uyarı gelecek şekilde düzenlendi.",
"Sağ alt kısımda mesaj çıkacak ve yenile butonu ile uygulama yeni versiyona geçecektir." "Sağ alt kısımda mesaj çıkacak ve yenile butonu ile uygulama yeni versiyona geçecektir."

View file

@ -52,73 +52,3 @@ export interface ListFormJsonRowDto {
itemChartValueAxis?: ChartValueAxisDto itemChartValueAxis?: ChartValueAxisDto
} }
export const ListFormEditTabs = {
DetailsForm: 'details',
Database: {
DataSourceForm: 'database.dataSource',
Select: {
SelectForm: 'database.select.form',
SelectFieldsDefaultValuesJsonRow: 'database.select.fields',
},
Insert: {
InsertForm: 'database.insert.form',
InsertFieldsDefaultValuesJsonRow: 'database.insert.fields',
FormFieldsDefaultValuesJsonRow: 'database.insert.formFields',
},
Update: {
UpdateForm: 'database.update.form',
UpdateFieldsDefaultValuesJsonRow: 'database.update.fields',
},
Delete: {
DeleteForm: 'database.delete.form',
DeleteFieldsDefaultValuesJsonRow: 'database.delete.fields',
},
},
PermissionForm: 'permission',
CommandColumnsJsonRow: 'commandColumn',
Edit: {
EditForm: 'edit.form',
EditingFormFieldsJsonRow: 'edit.formFields',
},
FilterForm: 'filter',
SearchForm: 'search',
GroupForm: 'group',
SelectForm: 'select',
ColumnForm: 'column',
PivotForm: 'pivot',
PagerForm: 'pager',
StateForm: 'state',
SubForm: 'subForm',
Widget: 'widget',
Fields: 'fields',
Customization: 'customization',
ExtraFilter: 'extraFilter',
//Chart Tabs
ChartCommon: 'chartCommon',
ChartSeries: {
GeneralJsonRow: 'chartSeries.general',
CommonSeriesSettingForm: 'chartSeries.commonSetting',
},
ChartAxis: {
ValueAxisJsonRow: 'chartAxis.valueAxis',
CommonAxisForm: 'chartAxis.commonAxis',
},
ChartPanes: {
CommonPanesSettingForm: 'chartPanes.commonSetting',
PanesJsonRow: 'chartPanes.panes',
},
ChartAnimationForm: 'chartAnimation',
ChartAnnotations: {
GeneralJsonRow: 'chartAnnotations.general',
CommonPaneForm: 'chartAnnotations.commonPane',
},
ChartZoomForm: 'chartZoom',
ChartLegendForm: 'chartLegend',
ChartExportForm: 'chartExport',
ChartCrosshairForm: 'chartCrosshair',
} as const
export const extraFilterControlTypeOptions = [
{ value: 'Select', label: 'Select' },
{ value: 'TextBox', label: 'TextBox' },
]

View file

@ -0,0 +1,120 @@
export const extraFilterControlTypeOptions = [
{ value: 'Select', label: 'Select' },
{ value: 'TextBox', label: 'TextBox' },
]
export const ListFormEditTabs = {
DetailsForm: 'details',
Database: {
DataSourceForm: 'database.dataSource',
Select: {
SelectForm: 'database.select.form',
SelectFieldsDefaultValuesJsonRow: 'database.select.fields',
},
Insert: {
InsertForm: 'database.insert.form',
InsertFieldsDefaultValuesJsonRow: 'database.insert.fields',
FormFieldsDefaultValuesJsonRow: 'database.insert.formFields',
},
Update: {
UpdateForm: 'database.update.form',
UpdateFieldsDefaultValuesJsonRow: 'database.update.fields',
},
Delete: {
DeleteForm: 'database.delete.form',
DeleteFieldsDefaultValuesJsonRow: 'database.delete.fields',
},
},
PermissionForm: 'permission',
CommandColumnsJsonRow: 'commandColumn',
Edit: {
EditForm: 'edit.form',
EditingFormFieldsJsonRow: 'edit.formFields',
},
FilterForm: 'filter',
SearchForm: 'search',
GroupForm: 'group',
SelectForm: 'select',
ColumnForm: 'column',
PivotForm: 'pivot',
PagerForm: 'pager',
StateForm: 'state',
SubForm: 'subForm',
Widget: 'widget',
Fields: 'fields',
Customization: 'customization',
ExtraFilter: 'extraFilter',
//Chart Tabs
ChartCommon: 'chartCommon',
ChartSeries: {
GeneralJsonRow: 'chartSeries.general',
CommonSeriesSettingForm: 'chartSeries.commonSetting',
},
ChartAxis: {
ValueAxisJsonRow: 'chartAxis.valueAxis',
CommonAxisForm: 'chartAxis.commonAxis',
},
ChartPanes: {
CommonPanesSettingForm: 'chartPanes.commonSetting',
PanesJsonRow: 'chartPanes.panes',
},
ChartAnimationForm: 'chartAnimation',
ChartAnnotations: {
GeneralJsonRow: 'chartAnnotations.general',
CommonPaneForm: 'chartAnnotations.commonPane',
},
ChartZoomForm: 'chartZoom',
ChartLegendForm: 'chartLegend',
ChartExportForm: 'chartExport',
ChartCrosshairForm: 'chartCrosshair',
} as const
export const tabVisibilityConfig: Record<string, string[]> = {
List: [
'details',
'database',
'permissions',
'commands',
'edit',
'filterRow',
'search',
'group',
'select',
'columns',
'pivots',
'pager',
'state',
'extrafilter',
'customization',
'fields',
'editForm',
'widget',
],
Form: [
'details',
'database',
'permissions',
'commands',
'edit',
'fields',
'editForm',
'widget',
'subForms',
],
Chart: [
'details',
'database',
'permissions',
'widget',
'commonSettings',
'series',
'axis',
'panes',
'animationsOptions',
'annotations',
'zoomAndPanSettings',
'legendSettings',
'exportSettings',
'crosshairOptions',
],
}

View file

@ -808,7 +808,8 @@ export interface LayoutDto {
grid: boolean grid: boolean
card: boolean card: boolean
pivot: boolean pivot: boolean
defaultLayout: 'grid' | 'card' | 'pivot' chart: boolean
defaultLayout: 'grid' | 'card' | 'pivot' | 'chart'
cardLayoutColumn: number cardLayoutColumn: number
} }

View file

@ -4,7 +4,7 @@ import { Field, FieldProps, Form, Formik } from 'formik'
import { object } from 'yup' import { object } from 'yup'
import { useLocalization } from '@/utils/hooks/useLocalization' import { useLocalization } from '@/utils/hooks/useLocalization'
import { useStoreState } from '@/store/store' import { useStoreState } from '@/store/store'
import { ListFormEditTabs } from '@/proxy/admin/list-form/models' import { ListFormEditTabs } from '@/proxy/admin/list-form/options'
import { FormEditProps } from '../../listForm/edit/FormEdit' import { FormEditProps } from '../../listForm/edit/FormEdit'
import { chartEasingListOptions } from './options' import { chartEasingListOptions } from './options'

View file

@ -24,7 +24,7 @@ import { object, string } from 'yup'
import { FormEditProps } from './FormEdit' import { FormEditProps } from './FormEdit'
import { useStoreState } from '@/store/store' import { useStoreState } from '@/store/store'
import { useLocalization } from '@/utils/hooks/useLocalization' import { useLocalization } from '@/utils/hooks/useLocalization'
import { ListFormEditTabs } from '@/proxy/admin/list-form/models' import { ListFormEditTabs } from '@/proxy/admin/list-form/options'
import { import {
chartAnnotationTypeListOptions, chartAnnotationTypeListOptions,
chartWordWrapListOptions, chartWordWrapListOptions,

View file

@ -23,7 +23,7 @@ import { FaEdit, FaPlus, FaTrash } from 'react-icons/fa'
import { FormEditProps } from '../../listForm/edit/FormEdit' import { FormEditProps } from '../../listForm/edit/FormEdit'
import { useLocalization } from '@/utils/hooks/useLocalization' import { useLocalization } from '@/utils/hooks/useLocalization'
import { useStoreState } from '@/store/store' import { useStoreState } from '@/store/store'
import { ListFormEditTabs } from '@/proxy/admin/list-form/models' import { ListFormEditTabs } from '@/proxy/admin/list-form/options'
import { object, string } from 'yup' import { object, string } from 'yup'
import { import {
chartArgumentAxisHoverModeListOptions, chartArgumentAxisHoverModeListOptions,

View file

@ -18,7 +18,7 @@ import { themeOptions, tooltipFormatListOptions } from '@/shared/options'
import { FormEditProps } from '../../listForm/edit/FormEdit' import { FormEditProps } from '../../listForm/edit/FormEdit'
import { useLocalization } from '@/utils/hooks/useLocalization' import { useLocalization } from '@/utils/hooks/useLocalization'
import { useStoreState } from '@/store/store' import { useStoreState } from '@/store/store'
import { ListFormEditTabs } from '@/proxy/admin/list-form/models' import { ListFormEditTabs } from '@/proxy/admin/list-form/options'
import { object } from 'yup' import { object } from 'yup'
import { import {
chartPaletteOptions, chartPaletteOptions,

View file

@ -5,7 +5,7 @@ import { Field, FieldProps, Form, Formik } from 'formik'
import { FormEditProps } from '../../listForm/edit/FormEdit' import { FormEditProps } from '../../listForm/edit/FormEdit'
import { useLocalization } from '@/utils/hooks/useLocalization' import { useLocalization } from '@/utils/hooks/useLocalization'
import { useStoreState } from '@/store/store' import { useStoreState } from '@/store/store'
import { ListFormEditTabs } from '@/proxy/admin/list-form/models' import { ListFormEditTabs } from '@/proxy/admin/list-form/options'
import { object } from 'yup' import { object } from 'yup'
import { chartSeriesDashStyleOptions } from './options' import { chartSeriesDashStyleOptions } from './options'

View file

@ -3,7 +3,7 @@ import { Field, Form, Formik } from 'formik'
import { FormEditProps } from '../../listForm/edit/FormEdit' import { FormEditProps } from '../../listForm/edit/FormEdit'
import { useLocalization } from '@/utils/hooks/useLocalization' import { useLocalization } from '@/utils/hooks/useLocalization'
import { useStoreState } from '@/store/store' import { useStoreState } from '@/store/store'
import { ListFormEditTabs } from '@/proxy/admin/list-form/models' import { ListFormEditTabs } from '@/proxy/admin/list-form/options'
import { object } from 'yup' import { object } from 'yup'
const schema = object() const schema = object()

View file

@ -16,7 +16,7 @@ import { Field, FieldProps, Form, Formik } from 'formik'
import { FormEditProps } from '../../listForm/edit/FormEdit' import { FormEditProps } from '../../listForm/edit/FormEdit'
import { useLocalization } from '@/utils/hooks/useLocalization' import { useLocalization } from '@/utils/hooks/useLocalization'
import { useStoreState } from '@/store/store' import { useStoreState } from '@/store/store'
import { ListFormEditTabs } from '@/proxy/admin/list-form/models' import { ListFormEditTabs } from '@/proxy/admin/list-form/options'
import { object } from 'yup' import { object } from 'yup'
import { import {
chartLegendOrientationListOptions, chartLegendOrientationListOptions,

View file

@ -9,7 +9,7 @@ import { FaEdit, FaFileMedical, FaTrash } from 'react-icons/fa'
import { FormEditProps } from '../../listForm/edit/FormEdit' import { FormEditProps } from '../../listForm/edit/FormEdit'
import { useStoreState } from '@/store/store' import { useStoreState } from '@/store/store'
import { useLocalization } from '@/utils/hooks/useLocalization' import { useLocalization } from '@/utils/hooks/useLocalization'
import { ListFormEditTabs } from '@/proxy/admin/list-form/models' import { ListFormEditTabs } from '@/proxy/admin/list-form/options'
import { object, string } from 'yup' import { object, string } from 'yup'
import { JsonRowDialogData } from './json-row-operations/types' import { JsonRowDialogData } from './json-row-operations/types'
import { useState } from 'react' import { useState } from 'react'

View file

@ -22,7 +22,7 @@ import { SelectBoxOption } from '@/shared/types'
import { Field, FieldProps, Form, Formik } from 'formik' import { Field, FieldProps, Form, Formik } from 'formik'
import { FaEdit, FaPlus, FaTrash } from 'react-icons/fa' import { FaEdit, FaPlus, FaTrash } from 'react-icons/fa'
import { FormEditProps } from '../../listForm/edit/FormEdit' import { FormEditProps } from '../../listForm/edit/FormEdit'
import { ListFormEditTabs } from '@/proxy/admin/list-form/models' import { ListFormEditTabs } from '@/proxy/admin/list-form/options'
import { useLocalization } from '@/utils/hooks/useLocalization' import { useLocalization } from '@/utils/hooks/useLocalization'
import { useStoreState } from '@/store/store' import { useStoreState } from '@/store/store'
import { object, string } from 'yup' import { object, string } from 'yup'

View file

@ -2,7 +2,7 @@ import { Button, Card, Checkbox, FormContainer, FormItem, Input, Select } from '
import { SelectBoxOption } from '@/shared/types' import { SelectBoxOption } from '@/shared/types'
import { Field, FieldProps, Form, Formik } from 'formik' import { Field, FieldProps, Form, Formik } from 'formik'
import { FormEditProps } from '../../listForm/edit/FormEdit' import { FormEditProps } from '../../listForm/edit/FormEdit'
import { ListFormEditTabs } from '@/proxy/admin/list-form/models' import { ListFormEditTabs } from '@/proxy/admin/list-form/options'
import { useLocalization } from '@/utils/hooks/useLocalization' import { useLocalization } from '@/utils/hooks/useLocalization'
import { useStoreState } from '@/store/store' import { useStoreState } from '@/store/store'
import { object } from 'yup' import { object } from 'yup'

View file

@ -38,12 +38,6 @@ import FormTabEditForm from './FormTabEditForm'
import FormTabPivots from './FormTabPivots' import FormTabPivots from './FormTabPivots'
import ChartTabAnimation from './ChartTabAnimation' import ChartTabAnimation from './ChartTabAnimation'
import ChartTabAnnotations from './ChartTabAnnotations' import ChartTabAnnotations from './ChartTabAnnotations'
import {
ChartAnnotationDto,
ChartPanesDto,
ChartSeriesDto,
ChartValueAxisDto,
} from '@/proxy/admin/charts/models'
import ChartTabZoomAndPan from './ChartTabZoomAndPan' import ChartTabZoomAndPan from './ChartTabZoomAndPan'
import ChartTabLegend from './ChartTabLegend' import ChartTabLegend from './ChartTabLegend'
import ChartTabExport from './ChartTabExport' import ChartTabExport from './ChartTabExport'
@ -52,6 +46,7 @@ import ChartTabCommonSettings from './ChartTabCommonSettings'
import ChartTabSeries from './ChartTabSeries' import ChartTabSeries from './ChartTabSeries'
import ChartTabAxis from './ChartTabAxis' import ChartTabAxis from './ChartTabAxis'
import ChartTabPanes from './ChartTabPanes' import ChartTabPanes from './ChartTabPanes'
import { tabVisibilityConfig } from '@/proxy/admin/list-form/options'
export interface FormEditProps { export interface FormEditProps {
onSubmit: ( onSubmit: (
@ -129,7 +124,11 @@ const FormEdit = () => {
await getRoleList() await getRoleList()
await getUserList() await getUserList()
} }
const listFormType = listFormValues?.listFormType || 'List'
const [activeFormType, setActiveFormType] = useState<string>(listFormType)
const visibleTabs = tabVisibilityConfig[activeFormType] || []
//LİST FORM ve LİST FORM FİELDS AİT BİLGİLER //LİST FORM ve LİST FORM FİELDS AİT BİLGİLER
useEffect(() => { useEffect(() => {
refreshData() refreshData()
@ -190,6 +189,120 @@ const FormEdit = () => {
</div> </div>
<Tabs defaultValue="details" variant="pill"> <Tabs defaultValue="details" variant="pill">
<TabList className="flex-wrap border-b mb-2 bg-slate-50"> <TabList className="flex-wrap border-b mb-2 bg-slate-50">
{visibleTabs.includes('details') && (
<TabNav value="details">{translate('::ListForms.ListFormEdit.TabDetails')}</TabNav>
)}
{visibleTabs.includes('database') && (
<TabNav value="database">{translate('::ListForms.ListFormEdit.TabDatabase')}</TabNav>
)}
{visibleTabs.includes('permissions') && (
<TabNav value="permissions">
{translate('::ListForms.ListFormEdit.TabPermissions')}
</TabNav>
)}
{visibleTabs.includes('commands') && (
<TabNav value="commands">{translate('::ListForms.ListFormEdit.TabCommands')}</TabNav>
)}
{visibleTabs.includes('edit') && (
<TabNav value="edit">{translate('::ListForms.ListFormEdit.TabEditing')}</TabNav>
)}
{visibleTabs.includes('filterRow') && (
<TabNav value="filterRow">
{translate('::ListForms.ListFormEdit.TabFilteringSorting')}
</TabNav>
)}
{visibleTabs.includes('search') && (
<TabNav value="search">{translate('::ListForms.ListFormEdit.TabSearch')}</TabNav>
)}
{visibleTabs.includes('group') && (
<TabNav value="group">{translate('::ListForms.ListFormEdit.TabGrouping')}</TabNav>
)}
{visibleTabs.includes('select') && (
<TabNav value="select">{translate('::ListForms.ListFormEdit.TabSelection')}</TabNav>
)}
{visibleTabs.includes('columns') && (
<TabNav value="columns">{translate('::ListForms.ListFormEdit.TabColumns')}</TabNav>
)}
{visibleTabs.includes('pivots') && (
<TabNav value="pivots">{translate('::ListForms.ListFormEdit.TabPivots')}</TabNav>
)}
{visibleTabs.includes('pager') && (
<TabNav value="pager">{translate('::ListForms.ListFormEdit.TabPaging')}</TabNav>
)}
{visibleTabs.includes('state') && (
<TabNav value="state">{translate('::ListForms.ListFormEdit.TabState')}</TabNav>
)}
{visibleTabs.includes('extrafilter') && (
<TabNav value="extrafilter">
{translate('::ListForms.ListFormEdit.ExtraFilters')}
</TabNav>
)}
{visibleTabs.includes('fields') && (
<TabNav value="fields">{translate('::ListForms.ListFormEdit.TabFields')}</TabNav>
)}
{visibleTabs.includes('customization') && (
<TabNav value="customization">
{translate('::ListForms.ListFormEdit.TabCustomization')}
</TabNav>
)}
{visibleTabs.includes('editForm') && (
<TabNav value="editForm">{translate('::ListForms.ListFormEdit.EditingForm')}</TabNav>
)}
{visibleTabs.includes('subForms') && (
<TabNav value="subForms">{translate('::ListForms.ListFormEdit.TabSubForms')}</TabNav>
)}
{visibleTabs.includes('widget') && (
<TabNav value="widget">{translate('::ListForms.ListFormEdit.TabWidgets')}</TabNav>
)}
{/* Chart Tabs */}
{visibleTabs.includes('commonSettings') && (
<TabNav value="commonSettings">
{translate('::ListForms.ListFormEdit.TabChartCommon')}
</TabNav>
)}
{visibleTabs.includes('series') && (
<TabNav value="series">{translate('::ListForms.ListFormEdit.TabChartSeries')}</TabNav>
)}
{visibleTabs.includes('axis') && (
<TabNav value="axis">{translate('::ListForms.ListFormEdit.TabChartAxis')}</TabNav>
)}
{visibleTabs.includes('panes') && (
<TabNav value="panes">{translate('::ListForms.ListFormEdit.TabChartPanes')}</TabNav>
)}
{visibleTabs.includes('animationsOptions') && (
<TabNav value="animationsOptions">
{translate('::ListForms.ListFormEdit.TabChartAnimation')}
</TabNav>
)}
{visibleTabs.includes('annotations') && (
<TabNav value="annotations">
{translate('::ListForms.ListFormEdit.TabChartAnnotations')}
</TabNav>
)}
{visibleTabs.includes('zoomAndPanSettings') && (
<TabNav value="zoomAndPanSettings">
{translate('::ListForms.ListFormEdit.TabChartZoomAndPan')}
</TabNav>
)}
{visibleTabs.includes('legendSettings') && (
<TabNav value="legendSettings">
{translate('::ListForms.ListFormEdit.TabChartLegend')}
</TabNav>
)}
{visibleTabs.includes('exportSettings') && (
<TabNav value="exportSettings">
{translate('::ListForms.ListFormEdit.TabChartExport')}
</TabNav>
)}
{visibleTabs.includes('crosshairOptions') && (
<TabNav value="crosshairOptions">
{translate('::ListForms.ListFormEdit.TabChartCrosshair')}
</TabNav>
)}
</TabList>
{/* <TabList className="flex-wrap border-b mb-2 bg-slate-50">
<TabNav value="details">{translate('::ListForms.ListFormEdit.TabDetails')}</TabNav> <TabNav value="details">{translate('::ListForms.ListFormEdit.TabDetails')}</TabNav>
<TabNav value="database">{translate('::ListForms.ListFormEdit.TabDatabase')}</TabNav> <TabNav value="database">{translate('::ListForms.ListFormEdit.TabDatabase')}</TabNav>
<TabNav value="permissions"> <TabNav value="permissions">
@ -239,9 +352,14 @@ const FormEdit = () => {
<TabNav value="crosshairOptions"> <TabNav value="crosshairOptions">
{translate('::ListForms.ListFormEdit.TabChartCrosshair')} {translate('::ListForms.ListFormEdit.TabChartCrosshair')}
</TabNav> </TabNav>
</TabList> </TabList> */}
<TabContent value="details"> <TabContent value="details">
<FormTabDetails onSubmit={onSubmit} roleList={roleList} userList={userList} /> <FormTabDetails
onSubmit={onSubmit}
roleList={roleList}
userList={userList}
onFormTypeChange={setActiveFormType}
/>
</TabContent> </TabContent>
<TabContent value="database"> <TabContent value="database">
<FormTabDatabase onSubmit={onSubmit} /> <FormTabDatabase onSubmit={onSubmit} />

View file

@ -9,7 +9,7 @@ import {
Select, Select,
Tabs, Tabs,
} from '@/components/ui' } from '@/components/ui'
import { ListFormEditTabs } from '@/proxy/admin/list-form/models' import { ListFormEditTabs } from '@/proxy/admin/list-form/options'
import { useStoreState } from '@/store' import { useStoreState } from '@/store'
import { useLocalization } from '@/utils/hooks/useLocalization' import { useLocalization } from '@/utils/hooks/useLocalization'
import { ColumnChooserMode, ColumnResizeMode } from 'devextreme/common/grids' import { ColumnChooserMode, ColumnResizeMode } from 'devextreme/common/grids'

View file

@ -5,7 +5,7 @@ import THead from '@/components/ui/Table/THead'
import Td from '@/components/ui/Table/Td' import Td from '@/components/ui/Table/Td'
import Th from '@/components/ui/Table/Th' import Th from '@/components/ui/Table/Th'
import Tr from '@/components/ui/Table/Tr' import Tr from '@/components/ui/Table/Tr'
import { ListFormEditTabs } from '@/proxy/admin/list-form/models' import { ListFormEditTabs } from '@/proxy/admin/list-form/options'
import { useStoreState } from '@/store' import { useStoreState } from '@/store'
import { useLocalization } from '@/utils/hooks/useLocalization' import { useLocalization } from '@/utils/hooks/useLocalization'
import { useState } from 'react' import { useState } from 'react'

View file

@ -1,6 +1,6 @@
import { Container } from '@/components/shared' import { Container } from '@/components/shared'
import { Button, Card, Checkbox, FormContainer, FormItem, Input, Select } from '@/components/ui' import { Button, Card, Checkbox, FormContainer, FormItem, Input, Select } from '@/components/ui'
import { ListFormEditTabs } from '@/proxy/admin/list-form/models' import { ListFormEditTabs } from '@/proxy/admin/list-form/options'
import { getDataSources } from '@/proxy/data-source' import { getDataSources } from '@/proxy/data-source'
import { SelectBoxOption } from '@/shared/types' import { SelectBoxOption } from '@/shared/types'
import { useStoreState } from '@/store' import { useStoreState } from '@/store'

View file

@ -5,7 +5,7 @@ import THead from '@/components/ui/Table/THead'
import Td from '@/components/ui/Table/Td' import Td from '@/components/ui/Table/Td'
import Th from '@/components/ui/Table/Th' import Th from '@/components/ui/Table/Th'
import Tr from '@/components/ui/Table/Tr' import Tr from '@/components/ui/Table/Tr'
import { ListFormEditTabs } from '@/proxy/admin/list-form/models' import { ListFormEditTabs } from '@/proxy/admin/list-form/options'
import { useStoreState } from '@/store' import { useStoreState } from '@/store'
import { useLocalization } from '@/utils/hooks/useLocalization' import { useLocalization } from '@/utils/hooks/useLocalization'
import { Field, Form, Formik } from 'formik' import { Field, Form, Formik } from 'formik'

View file

@ -5,7 +5,7 @@ import THead from '@/components/ui/Table/THead'
import Td from '@/components/ui/Table/Td' import Td from '@/components/ui/Table/Td'
import Th from '@/components/ui/Table/Th' import Th from '@/components/ui/Table/Th'
import Tr from '@/components/ui/Table/Tr' import Tr from '@/components/ui/Table/Tr'
import { ListFormEditTabs } from '@/proxy/admin/list-form/models' import { ListFormEditTabs } from '@/proxy/admin/list-form/options'
import { useStoreState } from '@/store' import { useStoreState } from '@/store'
import { useLocalization } from '@/utils/hooks/useLocalization' import { useLocalization } from '@/utils/hooks/useLocalization'
import { Field, Form, Formik } from 'formik' import { Field, Form, Formik } from 'formik'

View file

@ -5,7 +5,7 @@ import THead from '@/components/ui/Table/THead'
import Td from '@/components/ui/Table/Td' import Td from '@/components/ui/Table/Td'
import Th from '@/components/ui/Table/Th' import Th from '@/components/ui/Table/Th'
import Tr from '@/components/ui/Table/Tr' import Tr from '@/components/ui/Table/Tr'
import { ListFormEditTabs } from '@/proxy/admin/list-form/models' import { ListFormEditTabs } from '@/proxy/admin/list-form/options'
import { useStoreState } from '@/store' import { useStoreState } from '@/store'
import { useLocalization } from '@/utils/hooks/useLocalization' import { useLocalization } from '@/utils/hooks/useLocalization'
import { Field, Form, Formik } from 'formik' import { Field, Form, Formik } from 'formik'

View file

@ -5,7 +5,7 @@ import THead from '@/components/ui/Table/THead'
import Td from '@/components/ui/Table/Td' import Td from '@/components/ui/Table/Td'
import Th from '@/components/ui/Table/Th' import Th from '@/components/ui/Table/Th'
import Tr from '@/components/ui/Table/Tr' import Tr from '@/components/ui/Table/Tr'
import { ListFormEditTabs } from '@/proxy/admin/list-form/models' import { ListFormEditTabs } from '@/proxy/admin/list-form/options'
import { useStoreState } from '@/store' import { useStoreState } from '@/store'
import { useLocalization } from '@/utils/hooks/useLocalization' import { useLocalization } from '@/utils/hooks/useLocalization'
import { Field, Form, Formik } from 'formik' import { Field, Form, Formik } from 'formik'

View file

@ -1,6 +1,6 @@
import { Container } from '@/components/shared' import { Container } from '@/components/shared'
import { Button, Checkbox, FormContainer, FormItem, Input, Select } from '@/components/ui' import { Button, Checkbox, FormContainer, FormItem, Input, Select } from '@/components/ui'
import { ListFormEditTabs } from '@/proxy/admin/list-form/models' import { ListFormEditTabs } from '@/proxy/admin/list-form/options'
import { LanguageInfo } from '@/proxy/config/models' import { LanguageInfo } from '@/proxy/config/models'
import { SelectBoxOption } from '@/shared/types' import { SelectBoxOption } from '@/shared/types'
import { useStoreState } from '@/store' import { useStoreState } from '@/store'
@ -29,7 +29,11 @@ const schema = Yup.object().shape({
}) })
function FormTabDetails( function FormTabDetails(
props: FormEditProps & { roleList: SelectBoxOption[]; userList: SelectBoxOption[] }, props: FormEditProps & {
roleList: SelectBoxOption[]
userList: SelectBoxOption[]
onFormTypeChange: (formType: string) => void
},
) { ) {
const [langOptions, setLangOptions] = useState<SelectBoxOption[]>([]) const [langOptions, setLangOptions] = useState<SelectBoxOption[]>([])
const { translate } = useLocalization() const { translate } = useLocalization()
@ -107,7 +111,10 @@ function FormTabDetails(
value={listFormTypeOptions?.filter( value={listFormTypeOptions?.filter(
(option) => option.value === values.listFormType, (option) => option.value === values.listFormType,
)} )}
onChange={(option) => form.setFieldValue(field.name, option?.value)} onChange={(option) => {
form.setFieldValue(field.name, option?.value)
props.onFormTypeChange(option?.value || 'List')
}}
/> />
)} )}
</Field> </Field>
@ -277,8 +284,8 @@ function FormTabDetails(
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.DetailsLayoutDto.PivotLayout')} label={translate('::ListForms.ListFormEdit.DetailsLayoutDto.PivotLayout')}
invalid={errors.layoutDto?.card && touched.layoutDto?.card} invalid={errors.layoutDto?.pivot && touched.layoutDto?.pivot}
errorMessage={errors.layoutDto?.card} errorMessage={errors.layoutDto?.pivot}
> >
<Field <Field
className="w-20" className="w-20"
@ -288,6 +295,20 @@ function FormTabDetails(
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.DetailsLayoutDto.ChartLayout')}
invalid={errors.layoutDto?.chart && touched.layoutDto?.chart}
errorMessage={errors.layoutDto?.chart}
>
<Field
className="w-20"
autoComplete="off"
name="layoutDto.chart"
placeholder={translate('::ListForms.ListFormEdit.DetailsLayoutDto.ChartLayout')}
component={Checkbox}
/>
</FormItem>
</div> </div>
<FormItem <FormItem

View file

@ -9,7 +9,7 @@ import {
Select, Select,
Tabs, Tabs,
} from '@/components/ui' } from '@/components/ui'
import { ListFormEditTabs } from '@/proxy/admin/list-form/models' import { ListFormEditTabs } from '@/proxy/admin/list-form/options'
import { useStoreState } from '@/store' import { useStoreState } from '@/store'
import { useLocalization } from '@/utils/hooks/useLocalization' import { useLocalization } from '@/utils/hooks/useLocalization'
import { import {

View file

@ -5,7 +5,7 @@ import THead from '@/components/ui/Table/THead'
import Td from '@/components/ui/Table/Td' import Td from '@/components/ui/Table/Td'
import Th from '@/components/ui/Table/Th' import Th from '@/components/ui/Table/Th'
import Tr from '@/components/ui/Table/Tr' import Tr from '@/components/ui/Table/Tr'
import { ListFormEditTabs } from '@/proxy/admin/list-form/models' import { ListFormEditTabs } from '@/proxy/admin/list-form/options'
import { useStoreState } from '@/store' import { useStoreState } from '@/store'
import { useLocalization } from '@/utils/hooks/useLocalization' import { useLocalization } from '@/utils/hooks/useLocalization'
import { useState } from 'react' import { useState } from 'react'

View file

@ -5,7 +5,7 @@ import THead from '@/components/ui/Table/THead'
import Td from '@/components/ui/Table/Td' import Td from '@/components/ui/Table/Td'
import Th from '@/components/ui/Table/Th' import Th from '@/components/ui/Table/Th'
import Tr from '@/components/ui/Table/Tr' import Tr from '@/components/ui/Table/Tr'
import { ListFormEditTabs } from '@/proxy/admin/list-form/models' import { ListFormEditTabs } from '@/proxy/admin/list-form/options'
import { useStoreState } from '@/store' import { useStoreState } from '@/store'
import { useLocalization } from '@/utils/hooks/useLocalization' import { useLocalization } from '@/utils/hooks/useLocalization'
import { useState } from 'react' import { useState } from 'react'

View file

@ -9,7 +9,7 @@ import {
Select, Select,
Tabs, Tabs,
} from '@/components/ui' } from '@/components/ui'
import { ListFormEditTabs } from '@/proxy/admin/list-form/models' import { ListFormEditTabs } from '@/proxy/admin/list-form/options'
import { useStoreState } from '@/store' import { useStoreState } from '@/store'
import { useLocalization } from '@/utils/hooks/useLocalization' import { useLocalization } from '@/utils/hooks/useLocalization'
import { ApplyFilterMode } from 'devextreme/common/grids' import { ApplyFilterMode } from 'devextreme/common/grids'

View file

@ -1,6 +1,6 @@
import { Container } from '@/components/shared' import { Container } from '@/components/shared'
import { Button, Checkbox, FormContainer, FormItem } from '@/components/ui' import { Button, Checkbox, FormContainer, FormItem } from '@/components/ui'
import { ListFormEditTabs } from '@/proxy/admin/list-form/models' import { ListFormEditTabs } from '@/proxy/admin/list-form/options'
import { useStoreState } from '@/store' import { useStoreState } from '@/store'
import { useLocalization } from '@/utils/hooks/useLocalization' import { useLocalization } from '@/utils/hooks/useLocalization'
import { Field, Form, Formik } from 'formik' import { Field, Form, Formik } from 'formik'

View file

@ -1,6 +1,6 @@
import { Container } from '@/components/shared' import { Container } from '@/components/shared'
import { Button, Checkbox, FormContainer, FormItem, Input, Select } from '@/components/ui' import { Button, Checkbox, FormContainer, FormItem, Input, Select } from '@/components/ui'
import { ListFormEditTabs } from '@/proxy/admin/list-form/models' import { ListFormEditTabs } from '@/proxy/admin/list-form/options'
import { useStoreState } from '@/store' import { useStoreState } from '@/store'
import { useLocalization } from '@/utils/hooks/useLocalization' import { useLocalization } from '@/utils/hooks/useLocalization'
import { ScrollMode } from 'devextreme/common' import { ScrollMode } from 'devextreme/common'

View file

@ -1,6 +1,6 @@
import { Container } from '@/components/shared' import { Container } from '@/components/shared'
import { Button, FormContainer, FormItem, Select } from '@/components/ui' import { Button, FormContainer, FormItem, Select } from '@/components/ui'
import { ListFormEditTabs } from '@/proxy/admin/list-form/models' import { ListFormEditTabs } from '@/proxy/admin/list-form/options'
import { SelectBoxOption } from '@/shared/types' import { SelectBoxOption } from '@/shared/types'
import { useStoreState } from '@/store' import { useStoreState } from '@/store'
import { useLocalization } from '@/utils/hooks/useLocalization' import { useLocalization } from '@/utils/hooks/useLocalization'

View file

@ -1,6 +1,6 @@
import { Container } from '@/components/shared' import { Container } from '@/components/shared'
import { Button, Checkbox, FormContainer, FormItem, Input, Select } from '@/components/ui' import { Button, Checkbox, FormContainer, FormItem, Input, Select } from '@/components/ui'
import { ListFormEditTabs } from '@/proxy/admin/list-form/models' import { ListFormEditTabs } from '@/proxy/admin/list-form/options'
import { useStoreState } from '@/store' import { useStoreState } from '@/store'
import { useLocalization } from '@/utils/hooks/useLocalization' import { useLocalization } from '@/utils/hooks/useLocalization'
import { Field, FieldProps, Form, Formik } from 'formik' import { Field, FieldProps, Form, Formik } from 'formik'

View file

@ -1,6 +1,6 @@
import { Container } from '@/components/shared' import { Container } from '@/components/shared'
import { Button, Checkbox, FormContainer, FormItem, Input } from '@/components/ui' import { Button, Checkbox, FormContainer, FormItem, Input } from '@/components/ui'
import { ListFormEditTabs } from '@/proxy/admin/list-form/models' import { ListFormEditTabs } from '@/proxy/admin/list-form/options'
import { useStoreState } from '@/store' import { useStoreState } from '@/store'
import { useLocalization } from '@/utils/hooks/useLocalization' import { useLocalization } from '@/utils/hooks/useLocalization'
import { Field, Form, Formik } from 'formik' import { Field, Form, Formik } from 'formik'

View file

@ -1,6 +1,6 @@
import { Container } from '@/components/shared' import { Container } from '@/components/shared'
import { Button, Checkbox, FormContainer, FormItem, Select } from '@/components/ui' import { Button, Checkbox, FormContainer, FormItem, Select } from '@/components/ui'
import { ListFormEditTabs } from '@/proxy/admin/list-form/models' import { ListFormEditTabs } from '@/proxy/admin/list-form/options'
import { useStoreState } from '@/store' import { useStoreState } from '@/store'
import { useLocalization } from '@/utils/hooks/useLocalization' import { useLocalization } from '@/utils/hooks/useLocalization'
import { SelectAllMode, SingleMultipleOrNone } from 'devextreme/common' import { SelectAllMode, SingleMultipleOrNone } from 'devextreme/common'

View file

@ -1,6 +1,6 @@
import { Container } from '@/components/shared' import { Container } from '@/components/shared'
import { Button, Checkbox, FormContainer, FormItem, Input, Select } from '@/components/ui' import { Button, Checkbox, FormContainer, FormItem, Input, Select } from '@/components/ui'
import { ListFormEditTabs } from '@/proxy/admin/list-form/models' import { ListFormEditTabs } from '@/proxy/admin/list-form/options'
import { useStoreState } from '@/store' import { useStoreState } from '@/store'
import { useLocalization } from '@/utils/hooks/useLocalization' import { useLocalization } from '@/utils/hooks/useLocalization'
import { StateStoreType } from 'devextreme/common/grids' import { StateStoreType } from 'devextreme/common/grids'

View file

@ -5,7 +5,7 @@ import THead from '@/components/ui/Table/THead'
import Td from '@/components/ui/Table/Td' import Td from '@/components/ui/Table/Td'
import Th from '@/components/ui/Table/Th' import Th from '@/components/ui/Table/Th'
import Tr from '@/components/ui/Table/Tr' import Tr from '@/components/ui/Table/Tr'
import { ListFormEditTabs } from '@/proxy/admin/list-form/models' import { ListFormEditTabs } from '@/proxy/admin/list-form/options'
import { useStoreState } from '@/store' import { useStoreState } from '@/store'
import { useLocalization } from '@/utils/hooks/useLocalization' import { useLocalization } from '@/utils/hooks/useLocalization'
import { useState } from 'react' import { useState } from 'react'

View file

@ -5,7 +5,7 @@ import THead from '@/components/ui/Table/THead'
import Td from '@/components/ui/Table/Td' import Td from '@/components/ui/Table/Td'
import Th from '@/components/ui/Table/Th' import Th from '@/components/ui/Table/Th'
import Tr from '@/components/ui/Table/Tr' import Tr from '@/components/ui/Table/Tr'
import { ListFormEditTabs } from '@/proxy/admin/list-form/models' import { ListFormEditTabs } from '@/proxy/admin/list-form/options'
import { useStoreState } from '@/store' import { useStoreState } from '@/store'
import { useLocalization } from '@/utils/hooks/useLocalization' import { useLocalization } from '@/utils/hooks/useLocalization'
import { useState } from 'react' import { useState } from 'react'

View file

@ -8,7 +8,8 @@ import {
Select, Select,
toast, toast,
} from '@/components/ui' } from '@/components/ui'
import { ListFormEditTabs, ListFormJsonRowDto } from '@/proxy/admin/list-form/models' import { ListFormJsonRowDto } from '@/proxy/admin/list-form/models'
import { ListFormEditTabs } from '@/proxy/admin/list-form/options'
import { useStoreActions } from '@/store' import { useStoreActions } from '@/store'
import { useLocalization } from '@/utils/hooks/useLocalization' import { useLocalization } from '@/utils/hooks/useLocalization'
import { Field, FieldProps, Form, Formik } from 'formik' import { Field, FieldProps, Form, Formik } from 'formik'

View file

@ -8,7 +8,7 @@ import {
Select, Select,
toast, toast,
} from '@/components/ui' } from '@/components/ui'
import { extraFilterControlTypeOptions, ListFormJsonRowDto } from '@/proxy/admin/list-form/models' import { ListFormJsonRowDto } from '@/proxy/admin/list-form/models'
import { SelectBoxOption } from '@/shared/types' import { SelectBoxOption } from '@/shared/types'
import { useStoreActions, useStoreState } from '@/store' import { useStoreActions, useStoreState } from '@/store'
import { useLocalization } from '@/utils/hooks/useLocalization' import { useLocalization } from '@/utils/hooks/useLocalization'
@ -26,6 +26,7 @@ import { cascadeFilterOperator, colSpanOptions } from '../options'
import CreatableSelect from 'react-select/creatable' import CreatableSelect from 'react-select/creatable'
import { getListFormFields } from '@/services/admin/list-form-field.service' import { getListFormFields } from '@/services/admin/list-form-field.service'
import { groupBy } from 'lodash' import { groupBy } from 'lodash'
import { extraFilterControlTypeOptions } from '@/proxy/admin/list-form/options'
const schema = object().shape({ const schema = object().shape({
fieldName: string().required('Field Name Required'), fieldName: string().required('Field Name Required'),

View file

@ -4,7 +4,7 @@ import {
ChartSeriesDto, ChartSeriesDto,
ChartValueAxisDto, ChartValueAxisDto,
} from '@/proxy/admin/charts/models' } from '@/proxy/admin/charts/models'
import { ListFormEditTabs } from '@/proxy/admin/list-form/models' import { ListFormEditTabs } from '@/proxy/admin/list-form/options'
import { import {
CommandColumnDto, CommandColumnDto,
EditingFormDto, EditingFormDto,

View file

@ -186,12 +186,14 @@ export const columnEditorTypeListOptions = [
export const listFormTypeOptions = [ export const listFormTypeOptions = [
{ value: 'Form', label: 'Form' }, { value: 'Form', label: 'Form' },
{ value: 'List', label: 'List' }, { value: 'List', label: 'List' },
{ value: 'Chart', label: 'Chart' },
] ]
export const listFormDefaultLayoutOptions = [ export const listFormDefaultLayoutOptions = [
{ value: 'grid', label: 'Grid' }, { value: 'grid', label: 'Grid' },
{ value: 'card', label: 'Card' }, { value: 'card', label: 'Card' },
{ value: 'pivot', label: 'Pivot' }, { value: 'pivot', label: 'Pivot' },
{ value: 'chart', label: 'Chart' },
] ]
export const listFormAlignmentOptions = [ export const listFormAlignmentOptions = [