| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| import React from 'react'; |
| import { Modal, Button, Checkbox } from '@douyinfe/semi-ui'; |
| import { getLogsColumns } from '../UsageLogsColumnDefs'; |
|
|
| const ColumnSelectorModal = ({ |
| showColumnSelector, |
| setShowColumnSelector, |
| visibleColumns, |
| handleColumnVisibilityChange, |
| handleSelectAll, |
| initDefaultColumns, |
| COLUMN_KEYS, |
| isAdminUser, |
| copyText, |
| showUserInfoFunc, |
| t, |
| }) => { |
| |
| const allColumns = getLogsColumns({ |
| t, |
| COLUMN_KEYS, |
| copyText, |
| showUserInfoFunc, |
| isAdminUser, |
| }); |
|
|
| return ( |
| <Modal |
| title={t('列设置')} |
| visible={showColumnSelector} |
| onCancel={() => setShowColumnSelector(false)} |
| footer={ |
| <div className='flex justify-end'> |
| <Button onClick={() => initDefaultColumns()}>{t('重置')}</Button> |
| <Button onClick={() => setShowColumnSelector(false)}> |
| {t('取消')} |
| </Button> |
| <Button onClick={() => setShowColumnSelector(false)}> |
| {t('确定')} |
| </Button> |
| </div> |
| } |
| > |
| <div style={{ marginBottom: 20 }}> |
| <Checkbox |
| checked={Object.values(visibleColumns).every((v) => v === true)} |
| indeterminate={ |
| Object.values(visibleColumns).some((v) => v === true) && |
| !Object.values(visibleColumns).every((v) => v === true) |
| } |
| onChange={(e) => handleSelectAll(e.target.checked)} |
| > |
| {t('全选')} |
| </Checkbox> |
| </div> |
| <div |
| className='flex flex-wrap max-h-96 overflow-y-auto rounded-lg p-4' |
| style={{ border: '1px solid var(--semi-color-border)' }} |
| > |
| {allColumns.map((column) => { |
| // Skip admin-only columns for non-admin users |
| if ( |
| !isAdminUser && |
| (column.key === COLUMN_KEYS.CHANNEL || |
| column.key === COLUMN_KEYS.USERNAME || |
| column.key === COLUMN_KEYS.RETRY) |
| ) { |
| return null; |
| } |
| |
| return ( |
| <div key={column.key} className='w-1/2 mb-4 pr-2'> |
| <Checkbox |
| checked={!!visibleColumns[column.key]} |
| onChange={(e) => |
| handleColumnVisibilityChange(column.key, e.target.checked) |
| } |
| > |
| {column.title} |
| </Checkbox> |
| </div> |
| ); |
| })} |
| </div> |
| </Modal> |
| ); |
| }; |
|
|
| export default ColumnSelectorModal; |
|
|