@@han_177修改告警
643a228e创建于 2024年5月9日历史提交
/*
 * Copyright (c) 2023 Shenzhen Kaihong Digital Industry Development Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

const { GLFrame } = require('./engine/GLFrame');
const { Scr } = require('./engine/XDefine');
const { XTools } = require('./engine/XTools');
const { XSelect } = require('./engine/control/XSelect');
const { X2DFast } = require('./engine/graphics/X2DFast');
const { IrViewer } = require('./ir/IrViewer');
const { LogParser } = require('./ir/LogParser');

class MainEditor {
  constructor() {
    XTools.LoadConfig();

    this.filePoint_ = '';
    this.files_ = [];
    this.viewer_ = {};
    LogParser.Load('test.txt', this.onLoad.bind(this));

    this.selectFile_ = new XSelect(this.files_, this.filePoint_);
    this.selectFile_.registCallback(this.changeFile.bind(this));

    GLFrame.gi().pCallbackDropfile = this.onDrop.bind(this);
  }
  changeFile(name) {
    this.filePoint_ = name;
  }
  onLoad(fn, result) {
    try {
      let irv = new IrViewer(fn, result);
      if (this.files_.indexOf(fn) < 0) {
        this.files_.push(fn);
        this.selectFile_.resetList(this.files_, fn);
        this.changeFile(fn);
      }
      this.viewer_[fn] = irv;
    }
    catch (e) {
      XTools.PROC_TO = 0;
      console.log(e);
      alert('读取' + fn + '失败');
      return;
    }
  }
  onDrop(files, x, y) {
    if (files.length === 1) {
      let reader = new FileReader();
      reader.readAsDataURL(files[0]);
      reader.onload = (e) => {
        let ret = atob(e.target.result.split(',')[1]);
        this.onLoad(files[0].name, ret);
      };
    }
  }
  static pInstance_ = null;
  static gi() {
    if (MainEditor.pInstance_ === null) {
      MainEditor.pInstance_ = new MainEditor();
    }
    return MainEditor.pInstance_;
  }

  onDraw() {
    if (this.selectFile_.list_.length <= 0) {
      X2DFast.gi().drawText('拖入log文件', 30, Scr.logicw / 2, Scr.logich / 2, 1, 1, 0, -2, -2, 0xff000000);
      return;
    }

    for (let v in this.viewer_) {
      if (this.filePoint_ === v) {
        this.viewer_[v].onDraw();
      }
    }

    this.selectFile_.move(Scr.logicw - 200 - 10, 10, 200, 20);
    this.selectFile_.draw();
    if (XTools.PROC_TO > 0 && XTools.PROC_TO < 100) {
      X2DFast.gi().fillRect(0, Scr.logich - 5, XTools.PROC_TO * Scr.logicw / 100, 5, 0xffff0000);
    }
  }

  onTouch(msg, x, y) {
    if (this.selectFile_.list_.length <= 0) {
      return true;
    }
    if (this.selectFile_.onTouch(msg, x, y)) {
      return true;
    }
    for (let v in this.viewer_) {
      if (this.filePoint_ === v) {
        if (this.viewer_[v].onTouch(msg, x, y)) {
          return true;
        }
      }
    }
    return false;
  }

  onKey(k) {
    for (let v in this.viewer_) {
      if (this.filePoint_ === v) {
        if (this.viewer_[v].onKey(k)) {
          return true;
        }
      }
    }
    return true;
  }
}

module.exports = {
  MainEditor
};