import {
    apiGet,
    confirmationStateMapping,
    crudCommonOptions,
    mappingField,
    providerOnly,
    userOnly
} from "../../components/constants.js";
import {
    permissionAddDialog,
    permissionDetailDialog,
    permissionEditeDialog
} from "../../components/permission/dialog-permission.js";

export function tabPermissions() {
    return {
        visibleOn: userOnly,
        title: '权属管理',
        icon: 'fa fa-user-shield',
        body: {
            type: 'tabs',
            tabs: [
                {
                    visibleOn: providerOnly,
                    title: '确权管理',
                    body: {
                        type: 'crud',
                        api: {
                            ...apiGet('${base}/confirmation/list')
                        },
                        ...crudCommonOptions(),
                        headerToolbar: [
                            'reload',
                            {
                                type: 'action',
                                label: '',
                                icon: 'fa fa-plus',
                                ...permissionAddDialog()
                            },
                        ],
                        columns: [
                            {
                                label: '名称',
                                name: 'name',
                                width: 200,
                            },
                            {
                                label: '描述',
                                name: 'description',
                            },
                            {
                                label: '状态',
                                width: 80,
                                align: 'center',
                                ...mappingField('state', confirmationStateMapping)
                            },
                            {
                                label: '创建时间',
                                width: 150,
                                align: 'center',
                                type: 'tpl',
                                tpl: "${IF(createdTime, DATETOSTR(createdTime), '-')}"
                            },
                            {
                                label: '操作',
                                width: 100,
                                type: 'operation',
                                fixed: 'right',
                                className: 'nowrap',
                                buttons: [
                                    {
                                        type: 'action',
                                        label: '查看',
                                        level: 'link',
                                        ...permissionDetailDialog(),
                                    },
                                    {
                                        visibleOn: "${state === 'CHECKING'}",
                                        type: 'action',
                                        label: '撤销',
                                        level: 'link',
                                        confirmTitle: '确认撤销',
                                        confirmText: '确认撤销名称为「${name}」的确权申请吗？',
                                        actionType: 'ajax',
                                        api: apiGet('${base}/confirmation/retract/${id}'),
                                    },
                                    {
                                        visibleOn: "${state === 'DRAFT' || state === 'REJECT'}",
                                        type: 'action',
                                        label: '提交',
                                        level: 'link',
                                        confirmTitle: '确认提交',
                                        confirmText: '确认提交名称为「${name}」的确权申请吗？',
                                        actionType: 'ajax',
                                        api: apiGet('${base}/confirmation/submit/${id}'),
                                    },
                                    {
                                        type: 'dropdown-button',
                                        level: 'link',
                                        icon: 'fa fa-ellipsis-h',
                                        hideCaret: true,
                                        trigger: 'hover',
                                        buttons: [
                                            {
                                                disabledOn: "${state === 'CHECKING'}",
                                                type: 'action',
                                                label: '编辑',
                                                level: 'link',
                                                ...permissionEditeDialog(),
                                            },
                                            {
                                                disabledOn: "${state === 'CHECKING'}",
                                                type: 'action',
                                                label: "删除",
                                                confirmTitle: '确认删除',
                                                confirmText: '确认删除名称为「${name}」的确权申请吗？',
                                                actionType: 'ajax',
                                                api: apiGet('${base}/confirmation/remove/${id}'),
                                            },
                                        ]
                                    },
                                ]
                            },
                        ]
                    }
                },
                {
                    title: '授权管理',
                    body: []
                }
            ]
        }
    }
}