| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- /*
- Copyright (C) 2025 QuantumNous
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation, either version 3 of the
- License, or (at your option) any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see <https://www.gnu.org/licenses/>.
- For commercial licensing, please contact support@quantumnous.com
- */
- import React from 'react';
- import { Modal, Button, Checkbox } from '@douyinfe/semi-ui';
- import { getMjLogsColumns } from '../MjLogsColumnDefs.js';
- const ColumnSelectorModal = ({
- showColumnSelector,
- setShowColumnSelector,
- visibleColumns,
- handleColumnVisibilityChange,
- handleSelectAll,
- initDefaultColumns,
- COLUMN_KEYS,
- isAdminUser,
- copyText,
- openContentModal,
- openImageModal,
- t,
- }) => {
- // Get all columns for display in selector
- const allColumns = getMjLogsColumns({
- t,
- COLUMN_KEYS,
- copyText,
- openContentModal,
- openImageModal,
- 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.SUBMIT_RESULT)
- ) {
- 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;
|