import Mock from 'mockjs';

export async function getAccessible(req: any, res: any) {
  res.json({
    data: [
      {
        type: 'redirect',
        from: '/admin',
        to: '/admin/welcome',
        exact: true,
      },
      {
        type: 'redirect',
        from: '/',
        to: '/admin',
        exact: true,
      },
      {
        path: '/admin/:name(.+)?',
        component: 'AdminLayout',
        title: `后台 - ${Mock.mock('@string')}`,
        // providers: ['CurrentUserProvider', 'MenuProvider'],
      },
      {
        component: 'AuthLayout',
        routes: [
          {
            name: 'login',
            path: '/login',
            component: 'PageTemplate',
            title: `登录 - ${Mock.mock('@string')}`,
          },
          {
            name: 'register',
            path: '/register',
            component: 'PageTemplate',
            title: `注册 - ${Mock.mock('@string')}`,
          },
        ],
      },
    ],
  });
}

export async function getMenu(req: any, res: any) {
  res.json({
    data: [
      {
        name: 'welcome',
        title: `欢迎 - ${Mock.mock('@string')}`,
        children: [
          {
            name: 'page2',
            title: '页面2',
          },
        ],
      },
      {
        name: 'users',
        title: `用户 - ${Mock.mock('@string')}`,
      },
    ],
  });
}

export async function getPage(req: any, res: any) {
  const fields = [
    {
      interface: 'string',
      type: 'string',
      title: `单行文本 - ${Mock.mock('@string')}`,
      name: 'input',
      required: true,
      component: {
        type: 'string',
        default: 'aa',
        'x-decorator': 'FormItem',
        'x-component': 'Input',
        'x-component-props': {},
      },
    },
    {
      interface: 'textarea',
      type: 'text',
      title: `多行文本框 - ${Mock.mock('@string')}`,
      name: 'textarea',
      required: true,
      component: {
        type: 'string',
        'x-decorator': 'FormItem',
        'x-component': 'Input.TextArea',
        'x-component-props': {},
      },
    },
  ];
  res.json({
    data: {
      title: `page - ${req.query.slug} - ${Mock.mock('@string')}`,
      blocks: [
        {
          interface: 'form',
          type: 'form',
          component: {
            'x-component': 'Form',
          },
          fields,
        },
        {
          interface: 'table',
          type: 'table',
          component: {
            'x-component': 'Table',
          },
          fields,
        },
        {
          interface: 'calendar',
          type: 'calendar',
          component: {
            'x-component': 'Calendar',
          },
        },
        {
          interface: 'kanban',
          type: 'kanban',
          component: {
            'x-component': 'Kanban',
          },
        },
        {
          interface: 'grid',
          type: 'grid',
          component: {
            'x-component': 'Grid',
          },
          rowProps: {
            gutter: 16,
          },
          colsProps: [12, 12],
          blocks: [
            {
              interface: 'markdown',
              type: 'markdown',
              component: {
                'x-component': 'Markdown',
              },
              content: `# Markdown Content 1`,
              rowOrder: 1,
              columnOrder: 1,
            },
            {
              interface: 'markdown',
              type: 'markdown',
              component: {
                'x-component': 'Markdown',
              },
              content: `# Markdown Content 2`,
              rowOrder: 2,
              columnOrder: 2,
            },
            {
              interface: 'markdown',
              type: 'markdown',
              component: {
                'x-component': 'Markdown',
              },
              content: `# Markdown Content 1`,
              rowOrder: 1,
              columnOrder: 2,
            },
          ],
        },
        {
          interface: 'markdown',
          type: 'markdown',
          component: {
            'x-component': 'Markdown',
          },
          content: `# Markdown Content`,
        },
      ],
    },
  });
}