| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
|
|
| import React from 'react';
|
| import { Modal, Button, Checkbox } from '@douyinfe/semi-ui';
|
| import { getTaskLogsColumns } from '../TaskLogsColumnDefs';
|
|
|
| const ColumnSelectorModal = ({
|
| showColumnSelector,
|
| setShowColumnSelector,
|
| visibleColumns,
|
| handleColumnVisibilityChange,
|
| handleSelectAll,
|
| initDefaultColumns,
|
| COLUMN_KEYS,
|
| isAdminUser,
|
| copyText,
|
| openContentModal,
|
| t,
|
| }) => {
|
|
|
| const allColumns = getTaskLogsColumns({
|
| t,
|
| COLUMN_KEYS,
|
| copyText,
|
| openContentModal,
|
| 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) {
|
| 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;
|
|
|