/*
 * @Author: zhoux zhouxia@supervision.ltd
 * @Date: 2023-12-12 15:41:56
 * @LastEditors: zhoux zhouxia@supervision.ltd
 * @LastEditTime: 2024-01-08 09:47:19
 * @FilePath: \general-ai-platform-web\src\testData\fabricRoomList.ts
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */

import { fetchWatchGroupObjects } from './fabricWatchIcons';
// 模型状态 在线 离线 告警  故障
const startData: Record<string, any> = {
  modelsList: [
    {
      deviceType: '1', // 模型类型 1 设备1 2 设备2
      id: '1001', // 模型id
      status: 'watchOnline', //
      deviceName: '监控设备1', // 模型名称
      deviceCode: 'code1002',
      deviceLocation: '客厅',
      deviceParams: '设备参数',
      deviceCategory: '控制器',
      diviceGroup: '组1',
      baseInfo: {
        left: 527.0215, // 相对x
        top: 24.5797, // 相对y
      },
    },
    {
      deviceType: '1', // 模型类型 1 设备1 2 设备2
      id: '1002', // 模型id
      status: 'watchError', // 模型状态 在线 离线 告警  故障
      deviceName: '监控设备2', // 模型名称
      deviceCode: 'code1001',
      deviceLocation: '客厅',
      deviceParams: '设备参数',
      deviceCategory: '控制器',
      diviceGroup: '组1',
      baseInfo: {
        left: 397.0215, // 相对x
        top: 444.5797, // 相对y
      },
    },
    {
      deviceType: '1', // 模型类型 1 设备1 2 设备2
      id: '1003', // 模型id
      status: 'watchOutline', // 模型状态 在线 离线 告警  故障
      deviceName: '监控设备2', // 模型名称
      deviceCode: 'code1001',
      deviceLocation: '客厅',
      deviceParams: '设备参数',
      deviceCategory: '控制器',
      diviceGroup: '组1',
      baseInfo: {
        left: 397.0215, // 相对x
        top: 144.5797, // 相对y
      },
    },
    {
      deviceType: '1', // 模型类型 1 设备1 2 设备2
      id: '1004', // 模型id
      status: 'watchOutline', // 模型状态 在线 离线 告警  故障
      deviceName: '监控设备2', // 模型名称
      deviceCode: 'code1001',
      deviceLocation: '客厅',
      deviceParams: '设备参数',
      deviceCategory: '控制器',
      diviceGroup: '组1',
      baseInfo: {
        left: 297.0215, // 相对x
        top: 644.5797, // 相对y
      },
    },
    {
      deviceType: '1', // 模型类型 1 设备1 2 设备2
      id: '1005', // 模型id
      status: 'watchWarn', // 模型状态 在线 离线 告警  故障
      deviceName: '监控设备2', // 模型名称
      deviceCode: 'code1001',
      deviceLocation: '客厅',
      deviceParams: '设备参数',
      deviceCategory: '控制器',
      diviceGroup: '组1',
      baseInfo: {
        left: 797.0215, // 相对x
        top: 844.5797, // 相对y
      },
    },
  ],
};

// 生成100到1100之间的随机整数
function generateRandomNumber(minNum, maxNum) {
  // 生成0到1之间的随机小数
  const randomFraction = Math.random();

  // 将随机小数映射到100到1100之间的范围
  const randomNumber = Math.floor(randomFraction * (maxNum - minNum + 1) + minNum);

  return randomNumber;
}

function initFabricRoomData() {
  for (let i = 0; i < 2; i++) {
    let currObjects = JSON.parse(JSON.stringify(startData.modelsList));
    currObjects = currObjects.map((item) => {
      item.baseInfo = {
        left: generateRandomNumber(100, 1100),
        top: generateRandomNumber(100, 800),
      };
      return item;
    });
    startData.modelsList = startData.modelsList.concat(currObjects);
  }


}
initFabricRoomData();

const fabricRoomListData: Record<string, any>[] = [];
startData.modelsList.forEach((item: Record<string, any>) => {
  const { baseInfo, ...restInfo } = item;
  fabricRoomListData.push(
    JSON.parse(
      JSON.stringify({
        ...fetchWatchGroupObjects(item),
        ...baseInfo,
        userProperty: item,
        selectable: false,
      }),
    ),
  );
});


export const currJson = {
  version: '5.3.0',
  objects: fabricRoomListData,
  clipPath: {
    type: 'rect',
    version: '5.3.0',
    originX: 'left',
    originY: 'top',
    left: 0,
    top: 0,
    width: 1200,
    height: 900,
    fill: 'rgba(255,255,255,1)',
    stroke: null,
    strokeWidth: 0,
    strokeDashArray: null,
    strokeLineCap: 'butt',
    strokeDashOffset: 0,
    strokeLineJoin: 'miter',
    strokeUniform: false,
    strokeMiterLimit: 4,
    scaleX: 1,
    scaleY: 1,
    angle: 0,
    flipX: false,
    flipY: false,
    opacity: 1,
    shadow: null,
    visible: true,
    backgroundColor: '',
    fillRule: 'nonzero',
    paintFirst: 'fill',
    globalCompositeOperation: 'source-over',
    skewX: 0,
    skewY: 0,
    rx: 0,
    ry: 0,
    selectable: false,
    hasControls: true,
  },
};
