/**
 * 警情格式化工具函数
 * 用于格式化显示相关的数据
 */

/**
 * 获取等级标签
 * @param {string} level - 等级代码 (level1, level2, level3, level4)
 * @returns {string} 等级标签
 */
export function getLevelLabel(level) {
  const levelMap = {
    'level1': '一级（红色）',
    'level2': '二级（橙色）',
    'level3': '三级（黄色）',
    'level4': '四级（绿色）'
  }
  return levelMap[level] || level || '未设置'
}

/**
 * 获取等级标签类型（用于 Element UI 的 el-tag）
 * @param {string} level - 等级代码
 * @returns {string} 标签类型 (danger, warning, info, success)
 */
export function getLevelTagType(level) {
  const typeMap = {
    'level1': 'danger',
    'level2': 'warning',
    'level3': 'info',
    'level4': 'success'
  }
  return typeMap[level] || ''
}

/**
 * 格式化完整日期时间
 * @param {string|Date} dateTimeString - 日期时间字符串或 Date 对象
 * @returns {string} 格式化后的日期时间字符串 (YYYY-MM-DD HH:mm:ss)
 */
export function formatFullDateTime(dateTimeString) {
  if (!dateTimeString) return '未知'
  // Handle both string and Date object
  if (typeof dateTimeString === 'string') {
    return dateTimeString.replace('T', ' ').substring(0, 19)
  }
  return dateTimeString
}

/**
 * 格式化扩展信息（JSON 字符串美化）
 * @param {string} extInfo - JSON 字符串
 * @returns {string} 格式化后的 JSON 字符串
 */
export function formatExtInfo(extInfo) {
  if (!extInfo) return ''
  try {
    const parsed = JSON.parse(extInfo)
    return JSON.stringify(parsed, null, 2)
  } catch {
    return extInfo
  }
}

/**
 * 获取操作标签
 * @param {string} action - 操作代码
 * @returns {string} 操作标签
 */
export function getActionLabel(action) {
  const actionMap = {
    'alert_create': '创建警情',
    'alert_update': '更新警情',
    'alert_received': '已接警',
    'alert_transferred': '已转警',
    'alert_converted': '已转事件',
    'alert_close': '已关闭',
    'transfer_apply': '提交转警申请',
    'transfer_approve': '转警审核通过',
    'transfer_reject': '转警审核驳回',
    'transfer_feedback': '转警反馈登记',
    'transfer_processed': '转警处理完成',
    'convert_apply': '提交转事件申请',
    'convert_approve': '转事件审核通过',
    'convert_reject': '转事件审核驳回',
    'convert_event_created': '转事件创建事件',
    'other': '其他操作'
  }
  return actionMap[action] || action || '未知操作'
}

/**
 * 获取操作标签类型（用于 Element UI 的 el-tag）
 * @param {string} action - 操作代码
 * @returns {string} 标签类型
 */
export function getActionTagType(action) {
  if (!action) return 'info'
  
  // 创建类操作
  if (action.includes('create')) return 'success'
  // 更新类操作
  if (action.includes('update')) return 'primary'
  // 审核通过
  if (action.includes('approve')) return 'success'
  // 审核驳回
  if (action.includes('reject')) return 'danger'
  // 关闭
  if (action.includes('close')) return 'warning'
  // 提交/申请
  if (action.includes('submit') || action.includes('apply')) return 'primary'
  // 处理完成
  if (action.includes('processed') || action.includes('created')) return 'success'
  // 反馈
  if (action.includes('feedback')) return 'info'
  
  // 默认
  return 'info'
}

/**
 * 格式化日志载荷（用于显示操作日志的详细信息）
 * @param {string|object} payload - 日志载荷（JSON 字符串或对象）
 * @returns {string} 格式化后的载荷字符串
 */
export function formatLogPayload(payload) {
  if (!payload) return ''
  
  try {
    // 如果是字符串，尝试解析为 JSON
    const parsed = typeof payload === 'string' ? JSON.parse(payload) : payload
    return JSON.stringify(parsed, null, 2)
  } catch {
    // 如果解析失败，直接返回原值
    return typeof payload === 'string' ? payload : JSON.stringify(payload)
  }
}