Chart komponenti Fields düzenlemesi

This commit is contained in:
Sedat ÖZTÜRK 2026-06-19 12:18:43 +03:00
parent d9f51b1c71
commit aea724a887

View file

@ -9,7 +9,6 @@ import { Helmet } from 'react-helmet'
import { useParams, useSearchParams } from 'react-router-dom' import { useParams, useSearchParams } from 'react-router-dom'
import { GridDto } from '@/proxy/form/models' import { GridDto } from '@/proxy/form/models'
import { usePermission } from '@/utils/hooks/usePermission' import { usePermission } from '@/utils/hooks/usePermission'
import { toast, Notification } from '@/components/ui'
import { ROUTES_ENUM } from '@/routes/route.constant' import { ROUTES_ENUM } from '@/routes/route.constant'
import { usePWA } from '@/utils/hooks/usePWA' import { usePWA } from '@/utils/hooks/usePWA'
import { FaSearch } from 'react-icons/fa' import { FaSearch } from 'react-icons/fa'
@ -18,8 +17,6 @@ import { ChartSeriesDto } from '@/proxy/admin/charts/models'
import { SelectBoxOption } from '@/types/shared' import { SelectBoxOption } from '@/types/shared'
import { useStoreState } from '@/store/store' import { useStoreState } from '@/store/store'
import ChartDrawer from './ChartDrawer' import ChartDrawer from './ChartDrawer'
import { getListFormFields } from '@/services/admin/list-form-field.service'
import { groupBy } from 'lodash'
import { ListFormJsonRowDto } from '@/proxy/admin/list-form/models' import { ListFormJsonRowDto } from '@/proxy/admin/list-form/models'
import { ListFormEditTabs } from '@/proxy/admin/list-form/options' import { ListFormEditTabs } from '@/proxy/admin/list-form/options'
import { import {
@ -54,13 +51,34 @@ const Chart = (props: ChartProps) => {
const [searchParams] = useSearchParams() const [searchParams] = useSearchParams()
const [chartOptions, setChartOptions] = useState<any>() const [chartOptions, setChartOptions] = useState<any>()
const { createSelectDataSource } = useListFormCustomDataSource({} as any) const { createSelectDataSource } = useListFormCustomDataSource({} as any)
const config = useStoreState((state) => state.abpConfig.config)
const params = useParams() const params = useParams()
const _listFormCode = props?.listFormCode ?? params?.listFormCode ?? '' const _listFormCode = props?.listFormCode ?? params?.listFormCode ?? ''
const [openDrawer, setOpenDrawer] = useState(false) const [openDrawer, setOpenDrawer] = useState(false)
const [fieldList, setFieldList] = useState<SelectBoxOption[]>([])
const fieldList = useMemo<SelectBoxOption[]>(() => {
if (!gridDto?.columnFormats) {
return []
}
const fields = new Map<string, SelectBoxOption>()
gridDto.columnFormats.forEach((column) => {
const fieldName = column.fieldName
if (!fieldName || fields.has(fieldName)) {
return
}
fields.set(fieldName, {
value: fieldName,
label: column.captionName ? translate('::' + column.captionName) : fieldName,
})
})
return Array.from(fields.values())
}, [gridDto?.columnFormats, translate])
// Ana state - Chart bu state'e göre render edilir // Ana state - Chart bu state'e göre render edilir
const [currentSeries, setCurrentSeries] = useState<ChartSeriesDto[]>([]) const [currentSeries, setCurrentSeries] = useState<ChartSeriesDto[]>([])
@ -230,40 +248,6 @@ const Chart = (props: ChartProps) => {
[gridDto, urlSearchParams, searchText], [gridDto, urlSearchParams, searchText],
) )
const getFields = useCallback(async () => {
if (!props.listFormCode) return
try {
const resp = await getListFormFields({
listFormCode: props.listFormCode,
sorting: 'ListOrderNo',
maxResultCount: 1000,
})
if (resp.data?.items) {
const fieldNames = groupBy(resp?.data?.items, 'fieldName')
setFieldList(
Object.keys(fieldNames).map((fieldName) => {
const firstItem = fieldNames[fieldName][0]
const label = firstItem.captionName
? translate('::' + firstItem.captionName)
: fieldName
return { value: fieldName, label }
}),
)
}
} catch (error: any) {
toast.push(
<Notification type="danger" duration={2000}>
Alanlar getirilemedi {error.toString()}
</Notification>,
{ placement: 'top-end' },
)
}
}, [props.listFormCode, translate])
useEffect(() => {
if (props.listFormCode) getFields()
}, [props.listFormCode, config])
const handlePreviewChange = useCallback((series: ChartSeriesDto[]) => { const handlePreviewChange = useCallback((series: ChartSeriesDto[]) => {
// Preview değişikliklerini anında chart'a yansıt // Preview değişikliklerini anında chart'a yansıt
setCurrentSeries(series) setCurrentSeries(series)