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

// 连线类型列表
export const columnNumberList = [
  { value: 2, label: '2列' },
  { value: 3, label: '3列' },
];

export function getOption(content = '') {
  return { content, mark: getRandomNumber(), custom_number: '' };
}

/**
 * 解析智能识别数据
 * @param {array} arr 智能识别数据
 * @returns object
 */
export function analysisRecognitionMatchingData(arr) {
  if (arr.length === 0) {
    return {};
  }
  let column = arr[0].split(' - ').length;
  if (column !== 2 && column !== 3) {
    Message.error('连线题列数应为2列或3列');
    return {};
  }
  // 判断选项格式是否一致
  let isQualify = arr.every((item) => {
    if (item.split(' - ').length !== column) {
      Message.error('连线题选项格式不一致');
      return false;
    }
    return true;
  });
  if (!isQualify) return {};

  const option_list = arr.map((item) => {
    return item.split(' - ').map((li) => {
      return getOption(li);
    });
  });
  return { 'data.option_list': option_list, 'data.property.column_number': column };
}

/**
 * 获取连线题数据模板
 * 因为 option_list 和 answer.answer_list 中的数据是一一对应的，所以需要函数生成来保持一致
 */
export function getMatchingDataTemplate() {
  let option_list = Array.from({ length: 3 }, () =>
    Array.from({ length: columnNumberList[0].value }, () => getOption()),
  );
  let answer_list = option_list.map((item) => item.map(({ mark }) => mark));

  return {
    type: 'matching', // 题型
    stem: '', // 题干
    option_number_show_mode: optionTypeList[1].value, // 选项类型
    description: '', // 描述
    analysis: '', // 解析，富文本
    option_list, // 选项
    file_id_list: [], // 文件 id 列表
    answer: { answer_list, score: 1, score_type: scoreTypeList[0].value }, // 答案
    // 题型属性
    property: {
      stem_type: stemTypeList[1].value, // 题干类型
      question_number: '1', // 题号
      stem_question_number_font_size: fontSizeList[6], // 题干题号
      option_question_number_font_size: fontSizeList[5], // 选项题号
      column_number: columnNumberList[0].value, // 列数
      is_enable_description: switchOption[1].value, // 描述
      is_enable_analysis: switchOption[1].value, // 是否开启解析
      score: 1, // 分值
      score_type: scoreTypeList[0].value, // 分值类型
    },
    // 其他属性
    other: {
      question_number_type: questionNumberTypeList[1].value, // 题号类型
    },
  };
}
