import {wareAddDialog, wareDetailDialog, wareEditeDialog} from "../../components/ware/dialog-ware.js";
import {
    apiGet,
    crudCommonOptions,
    mappingField,
    operationField,
    permissionStateMapping,
    timeField
} from "../../components/constants.js";
import {authenticationAddDialog} from "../../components/permission/dialog-permission.js";

export function tabMarket() {
    return {
        title: '数据市场',
        icon: 'fa fa-store',
        reload: true,
        body: [
            {
                type: 'tabs',
                tabs: [
                    {
                        title: '公开数据',
                        body: {
                            type: 'crud',
                            api: {
                                ...apiGet('${base}/ware/list_public'),
                                adaptor: (payload, response, api, context) => {
                                    payload.data = payload.data.map(i => {
                                        return {
                                            ...i,
                                            targetId: i.resourceId,
                                        }
                                    })
                                    return payload
                                }
                            },
                            ...crudCommonOptions(),
                            headerToolbar: [
                                'reload',
                            ],
                            mode: 'cards',
                            card: {
                                header: {
                                    title: '${name}',
                                    subTitle: '${createdTime}',
                                    description: '${description}',
                                    avatar: '${icon}',
                                    avatarClassName: 'pull-left thumb-md avatar b-3x m-r'
                                },
                                actions: [
                                    {
                                        type: 'action',
                                        label: '查看',
                                        ...wareDetailDialog(),
                                    },
                                    {
                                        type: 'action',
                                        label: '申请授权',
                                        ...authenticationAddDialog(),
                                    }
                                ]
                            },
                        }
                    },
                    {
                        title: '我的数据',
                        body: {
                            type: 'crud',
                            api: apiGet('${base}/ware/list'),
                            ...crudCommonOptions(),
                            headerToolbar: [
                                'reload',
                                {
                                    type: 'action',
                                    label: '',
                                    icon: 'fa fa-plus',
                                    ...wareAddDialog()
                                },
                            ],
                            columns: [
                                {
                                    name: 'name',
                                    label: '名称',
                                    width: 200,
                                },
                                {
                                    name: 'description',
                                    label: '描述',
                                },
                                mappingField('state', '状态', permissionStateMapping),
                                timeField('createdTime', '创建时间'),
                                operationField('操作', undefined, [
                                    {
                                        type: 'action',
                                        label: '查看',
                                        level: 'link',
                                        ...wareDetailDialog(),
                                    },
                                    {
                                        visibleOn: "${state === 'CHECKING'}",
                                        type: 'action',
                                        label: '撤销',
                                        level: 'link',
                                        confirmTitle: '确认撤销',
                                        confirmText: '确认撤销名称为「${name}」的确权申请吗？',
                                        actionType: 'ajax',
                                        api: apiGet('${base}/ware/retract/${id}'),
                                    },
                                    {
                                        visibleOn: "${state === 'DRAFT' || state === 'REJECT'}",
                                        type: 'action',
                                        label: '提交',
                                        level: 'link',
                                        confirmTitle: '确认提交',
                                        confirmText: '确认提交名称为「${name}」的确权申请吗？',
                                        actionType: 'ajax',
                                        api: apiGet('${base}/ware/submit/${id}'),
                                    },
                                    {
                                        visibleOn: "${!public}",
                                        type: 'dropdown-button',
                                        level: 'link',
                                        icon: 'fa fa-ellipsis-h',
                                        hideCaret: true,
                                        trigger: 'hover',
                                        buttons: [
                                            {
                                                disabledOn: "${state !== 'DRAFT'}",
                                                type: 'action',
                                                label: '编辑',
                                                level: 'link',
                                                ...wareEditeDialog(),
                                            },
                                            {
                                                disabledOn: "${state === 'CHECKING'}",
                                                type: 'action',
                                                label: "删除",
                                                confirmTitle: '确认删除',
                                                confirmText: '确认删除名称为「${name}」的确权申请吗？删除后对应的数据资源处于未确权状态。',
                                                actionType: 'ajax',
                                                api: apiGet('${base}/ware/remove/${id}'),
                                            },
                                        ]
                                    },
                                ]),
                            ]
                        }
                    },
                ]
            }
        ]
    }
}