import { getRandomNumber } from '@/utils';
import { stemTypeList, questionNumberTypeList, scoreTypeList, switchOption, fontSizeList } from './common';
import { Message } from 'element-ui';

export const roleDefaultColorList = ['#306EFF', '#3ABD38', '#FC8E3D', '#FC493D', '#BF3DFC']; // 角色默认颜色

/**
 * 获取角色对象
 * @param {number} index 序号
 * @param {string} name 名称
 */
export function getRole(index, name = '') {
  return {
    name: name || `角色${index + 1}`,
    mark: getRandomNumber(),
    color: roleDefaultColorList[index],
  };
}

/**
 * 解析智能识别数据
 * @param {array} arr 智能识别数据
 * @returns object
 */
export function analysisRecognitionDialogueData(arr) {
  // 角色列表
  let roleList = [];
  arr.forEach((item) => {
    if (item.match(/^-\S+/)) {
      let role = item.split(/^-/)[1];
      if (!roleList.includes(role)) {
        roleList.push(role);
      }
    }
    if (!item.match(/.+[:：].+/)) return;
    let [role] = item.split(/[:：]/);
    if (!roleList.includes(role)) {
      roleList.push(role);
    }
  });

  if (roleList.length < 1 || roleList.length > 5) {
    Message.warning('角色数不符合要求，最小为 1，最大为 5');
    return {};
  }
  let role_number = roleList.length;
  let role_list = roleList.map((item, i) => getRole(i, item));

  // 选项列表
  let option_list = [];
  arr.forEach((item) => {
    if (item.match(/.+[:：].+/)) {
      let [role, content] = item.split(/[:：]/);
      option_list.push({
        role: role_list.find((item) => item.name === role).mark,
        text: content,
        mark: getRandomNumber(),
        type: 'text',
      });
    }

    if (item.match(/^-\S+/)) {
      option_list.push({
        mark: getRandomNumber(),
        role: role_list.find(({ name }) => name === item.split(/^-/)[1]).mark,
        file_id: '',
        type: 'input',
      });
    }
  });

  return {
    'data.property.role_number': role_number,
    'data.property.role_list': role_list,
    'data.option_list': option_list,
  };
}

// 对话题数据模板
export function getDialogueData() {
  return {
    type: 'dialogue', // 题型
    stem: '', // 题干
    description: '', // 描述
    analysis: '', // 解析，富文本
    option_list: [], // 选项列表
    file_id_list: [], // 文件 id 列表
    reference_answer: '', // 参考答案
    answer: { score: 1, score_type: scoreTypeList[0].value, answer_list: [] }, // 答案
    // 题型属性
    property: {
      stem_type: stemTypeList[1].value, // 题干类型
      question_number: '1', // 题号
      stem_question_number_font_size: fontSizeList[6], // 题干题号
      score: 1, // 分值
      is_enable_description: switchOption[1].value, // 描述
      is_enable_analysis: switchOption[1].value, // 是否开启解析
      is_enable_voice_answer: switchOption[0].value, // 语音作答
      is_enable_reference_answer: switchOption[0].value, // 是否开启参考答案
      score_type: scoreTypeList[0].value, // 分值类型
      role_number: 2, // 角色数 1 - 5
      role_list: [getRole(0), getRole(1)], // 角色列表
    },
    // 其他属性
    other: {
      question_number_type: questionNumberTypeList[1].value, // 题号类型
    },
  };
}
