"use script"; //开发环境建议开启严格模式

//对应widget.js中MyWidget实例化后的对象
var thisWidget;

//当前页面业务
function initWidgetView(_thisWidget) {
  thisWidget = _thisWidget;

  //点击显示子页面
  $(".tool-btn").click(function () {
    $(this).parents(".basicbox").hide();
    $(".mainbox").eq($(this).index()).show().siblings(".mainbox").hide();
  });
  //返回主菜单
  $(".backmenu").click(function () {
    $(this).parents(".mainbox").hide();
    $(".basicbox").show();

    thisWidget.destroyAll();
  });

  initRZFX(); //日照分析
  initPDPX(); //坡度坡向
  initKSY(); //可视域分析

  initFLFX(); //方量分析
  initDXKW(); //地形开挖
  initDBTM(); //地表透明

  initMXPQ(); //模型剖切
  initMXYP(); //模型压平
  initMXCJ(); //模型裁剪
}

//=============日照分析=============
function initRZFX() {
  $("#btn_goto_rzfx").click(function () {
    thisWidget.createRZFX();
  });

  $("#btn_rzfx_destory").click(function () {
    thisWidget.destroyRZFX();
  });
  // $('#btn_rzfx_clear').click(function () {
  //     thisWidget.shadows.clear()
  // });

  jeDate("#txt_rzfx_Date", {
    theme: { bgcolor: "#135b91", pnColor: "#00CCFF" },
    format: "YYYY-MM-DD",
  });

  var today = new Date().format("yyyy-MM-dd");
  $("#txt_rzfx_Date").val(today);

  //滑动条
  $("#range_ksy_currTime").range({
    onChange: function (value, bfb) {
      var dateTime = getCurrTime();
      thisWidget.shadows.time = dateTime;
      $("#btn_rzfx_btn_rzfx_pause").val("播放");
    },
  });

  $("#btn_rzfx_btn_rzfx_pause").click(function () {
    if (thisWidget.shadows.isStart) {
      thisWidget.shadows.pause();
      $("#btn_rzfx_btn_rzfx_pause").val("播放");
    } else {
      var _date = $("#txt_rzfx_Date").val();
      var currentTime = getCurrTime();
      var startDate = new Date(_date + " 00:00:00");
      var endDate = new Date(_date + " 23:59:59");
      if (currentTime >= endDate) {
        haoutil.msg("开始时间必须小于结束时间！");
        return;
      }

      thisWidget.shadows.start(startDate, endDate, currentTime);

      $("#btn_rzfx_btn_rzfx_pause").val("暂停");
    }
  });
}

function getCurrTime() {
  var value = Number($("#range_ksy_currTime").val());

  var date = $("#txt_rzfx_Date").val();
  var hours = Number.parseInt(value / 60);
  var minutes = Number.parseInt(value % 60);
  var strDateTime = `${date} ${hours}:${minutes}:00`;
  var dateTime = new Date(strDateTime);
  $("#lbl_rzfx_nowTime").html(dateTime.format("MM月dd日 HH:mm"));

  return dateTime;
}
function setRZFXNowTime(date) {
  var currTime = date.getHours() * 60 + date.getMinutes();
  $("#range_ksy_currTime").val(currTime).change();

  $("#lbl_rzfx_nowTime").html(date.format("MM月dd日 HH:mm"));
}

//=============坡度坡向=============
function initPDPX() {
  $("#btn_goto_pdpx").click(function () {
    thisWidget.createPDPX();
  });

  $("#btn_pdpx_destory").click(function () {
    thisWidget.destroyPDPX();
  });
  $("#btn_pdpx_clear").click(function () {
    thisWidget.clearPDPX();
  });

  $("#btn_pdpx_drawPoly").click(function () {
    var splitNum = Number($("#txt_pdpx_SplitNum").val());
    thisWidget.drawPDPXPoly(splitNum);
  });
  $("#btn_pdpx_drawExtent").click(function () {
    var splitNum = Number($("#txt_pdpx_SplitNum").val());
    thisWidget.drawPDPXExtent(splitNum);
  });

  $("input[type=radio][name=shadingMaterials]").change(function () {
    if (thisWidget.contourLine) {
      thisWidget.contourLine.shadingType = this.value;
    }
  });
}

//=============可视域分析=============
function initKSY() {
  $("#btn_goto_ksy").click(function () {
    thisWidget.createKSY();
  });
  $("#btn_ksy_destory").click(function () {
    thisWidget.destroyKSY();
  });
  $("#btn_ksy_clear").click(function () {
    thisWidget.clearKSY();

    updateKsyDistance(100);
  });

  //滑动条
  $("#range_ksy_horizontalAngle").range({
    onChange: function (value, bfb) {
      $("#txt_ksy_horizontalAngle").val(value);
      thisWidget.getLastKSY().horizontalAngle = value;
    },
  });
  $("#txt_ksy_horizontalAngle").change(function () {
    var value = Number($(this).val());
    $("#range_ksy_horizontalAngle").val(value).change();
    thisWidget.getLastKSY().horizontalAngle = value;
  });

  $("#range_ksy_verticalAngle").range({
    onChange: function (value, bfb) {
      $("#txt_ksy_verticalAngle").val(value);
      thisWidget.getLastKSY().verticalAngle = value;
    },
  });
  $("#txt_ksy_verticalAngle").change(function () {
    var value = Number($(this).val());
    $("#range_ksy_verticalAngle").val(value).change();
    thisWidget.getLastKSY().verticalAngle = value;
  });

  $("#range_ksy_distance").range({
    onChange: function (value, bfb) {
      $("#txt_ksy_distance").val(value);
      thisWidget.getLastKSY().distance = value;
    },
  });
  $("#txt_ksy_distance").change(function () {
    var value = Number($(this).val());
    $("#range_ksy_distance").val(value).change();
    thisWidget.getLastKSY().distance = value;
  });

  $("#chk_ksy_DebugFrustum").change(function () {
    var show = $(this).is(":checked");
    thisWidget.updateKsyDebugFrustum(show);
  });

  $("#btn_ksy_add").click(function () {
    var horizontalAngle = Number($("#txt_ksy_horizontalAngle").val());
    var verticalAngle = Number($("#txt_ksy_verticalAngle").val());
    var distance = Number($("#txt_ksy_distance").val());
    var showFrustum = $("#chk_ksy_DebugFrustum").is(":checked");

    thisWidget.addKSY({
      horizontalAngle: horizontalAngle,
      verticalAngle: verticalAngle,
      distance: distance,
      showFrustum: showFrustum,
    });
  });
}

function updateKsyDistance(value) {
  $("#range_ksy_distance").val(value).change();
  $("#txt_ksy_distance").val(value);
}

//=============方量分析============
function initFLFX() {
  $("#btn_goto_flfx").click(function () {
    thisWidget.createFLFX();
  });
  $("#btn_flfx_destory").click(function () {
    thisWidget.destroyFLFX();
  });
  $("#btn_flfx_clear").click(function () {
    $("#txt_flfx_Height").val(0);
    $("#txt_flfx_MaxHeight").val(0);
    $("#txt_flfx_MinHeight").val(0);

    thisWidget.clearFLFX();
  });

  $("#btn_flfx_draw").click(function () {
    thisWidget.startFLFX();
  });
  $("#txt_flfx_Height").change(function () {
    var num = Number($(this).val());
    thisWidget.measureVolume.height = num;

    showFLFXHeightRg();
  });
  $("#txt_flfx_MaxHeight").change(function () {
    var num = Number($(this).val());

    var maxHeight = getFixedNum(thisWidget.measureVolume.interPolygonObj.maxHeight);
    if (num < maxHeight) {
      haoutil.msg("墙顶部高度不能低于区域内的地表高" + maxHeight);

      $(this).val(maxHeight);
      thisWidget.measureVolume.maxHeight = Number(maxHeight);
      return;
    }
    if (num < thisWidget.measureVolume.height) {
      haoutil.msg("墙顶部高度不能低于基准面高" + thisWidget.measureVolume.height);
      return;
    }
    thisWidget.measureVolume.maxHeight = num;
  });
  $("#txt_flfx_MinHeight").change(function () {
    var num = Number($(this).val());
    if (num > thisWidget.measureVolume.height) {
      haoutil.msg("墙底部高度不能高于基准面高" + thisWidget.measureVolume.height);
      return;
    }
    thisWidget.measureVolume.minHeight = num;
  });
  $("#btn_flfx_selHeight").click(function () {
    thisWidget.measureVolume.selecteHeight(showFLFXHeightRg);
  });
}

function showFLFXHeightRg() {
  $("#txt_flfx_Height").val(thisWidget.measureVolume.height.toFixed(1));
  $("#txt_flfx_MaxHeight").val(getFixedNum(thisWidget.measureVolume.maxHeight));
  $("#txt_flfx_MinHeight").val(thisWidget.measureVolume.minHeight && thisWidget.measureVolume.minHeight.toFixed(1));
}
function getFixedNum(val) {
  return Math.ceil(val * 10) / 10;
}

//=============地形开挖=============
function initDXKW() {
  $("#btn_goto_dxkw").click(function () {
    thisWidget.createDXKW();
  });

  $("#btn_dxkw_destory").click(function () {
    thisWidget.destroyDXKW();
  });
  $("#btn_dxkw_clear").click(function () {
    thisWidget.clearDXKW();
  });
  $("#bt_dxkw_draw").click(function () {
    thisWidget.startDrawDXKW();
  });
  $("#bt_dxkw_draw_extent").click(function () {
    thisWidget.startDrawDXKWExtent();
  });

  $("#txt_dxkw_clipHeight").change(function () {
    var nowValue = $(this).val();
    thisWidget.updateDXKWHeight(nowValue);
  });
}
function getDXKWNowHeight() {
  return $("#txt_dxkw_clipHeight").val();
}

//=============地表透明=============
function initDBTM() {
  $("#btn_goto_dbtm").click(function () {
    thisWidget.createDBTM();
  });
  $("#btn_dbtm_destory").click(function () {
    thisWidget.destroyDBTM();
  });
  $("#btn_dbtm_clear").click(function () {
    thisWidget.clearDBTM();
  });

  $("#chk_dbtm_Underground").change(function () {
    var val = $(this).is(":checked");

    thisWidget.underground.enabled = val;
  });

  $("#txt_dbtm_alpha").range({
    onChange: function (value, bfb) {
      thisWidget.underground.alpha = value;
    },
  });
}

function getDbtmEnable() {
  var val = $("#chk_dbtm_Underground").is(":checked");
  return val;
}

function updateDbtmVisible(visible) {
  if (visible) {
    $(".undergroundAttr").show();
  } else {
    $(".undergroundAttr").hide();
  }
}

//=============模型剖切=============
function initMXPQ() {
  $("#btn_mxpq_destory").click(function () {
    $("#lbl_mxpq_mxmc").html("未选择");
    thisWidget.destroyMXPQ();
  });
  $("#btn_mxpq_clear").click(function () {
    thisWidget.clearMXPQ();
  });

  $("#btn_mxpq_selectd").click(function () {
    thisWidget.selectedPQMX();
  });

  //滑动条
  $("#range_mxpq_Distance").range({
    onChange: function (value, bfb) {
      $("#txt_mxpq_Distance").val(value.toFixed(1));
      if (thisWidget.tilesetPlanClip) {
        thisWidget.tilesetPlanClip.distance = value;
      }
    },
  });
  $("#txt_mxpq_Distance").change(function () {
    var value = Number($(this).val());
    $("#range_mxpq_Distance").val(value).change();
    if (thisWidget.tilesetPlanClip) {
      thisWidget.tilesetPlanClip.distance = value;
    }
  });

  $("#btn_mxpq_DrawLine").click(function () {
    thisWidget.drawLinePQMX();
  });

  $("#btn_mxpq_Clipping1").click(function () {
    if (thisWidget.tilesetPlanClip) {
      thisWidget.tilesetPlanClip.type = parent.mars3d.thing.TilesetPlanClip.Type.Z;
    }
  });
  $("#btn_mxpq_Clipping2").click(function () {
    if (thisWidget.tilesetPlanClip) {
      thisWidget.tilesetPlanClip.type = parent.mars3d.thing.TilesetPlanClip.Type.ZR;
    }
  });
  $("#btn_mxpq_Clipping3").click(function () {
    if (thisWidget.tilesetPlanClip) {
      thisWidget.tilesetPlanClip.type = parent.mars3d.thing.TilesetPlanClip.Type.XR;
    }
  });
  $("#btn_mxpq_Clipping4").click(function () {
    if (thisWidget.tilesetPlanClip) {
      thisWidget.tilesetPlanClip.type = parent.mars3d.thing.TilesetPlanClip.Type.X;
    }
  });

  $("#btn_mxpq_Clipping5").click(function () {
    if (thisWidget.tilesetPlanClip) {
      thisWidget.tilesetPlanClip.type = parent.mars3d.thing.TilesetPlanClip.Type.Y;
    }
  });
  $("#btn_mxpq_Clipping6").click(function () {
    if (thisWidget.tilesetPlanClip) {
      thisWidget.tilesetPlanClip.type = parent.mars3d.thing.TilesetPlanClip.Type.YR;
    }
  });
}
function setClipDistanceRange(radius, name) {
  $("#range_mxpq_Distance").attr("min", -radius);
  $("#range_mxpq_Distance").attr("max", radius);

  $("#lbl_mxpq_mxmc").html("已选择“" + name + "”");
}

//=============模型压平=============
function initMXYP() {
  $("#btn_goto_mxyp").click(function () {
    thisWidget.createMXYP();
  });
  $("#btn_mxyp_destory").click(function () {
    thisWidget.destroyMXYP();
    $("#txt_mxyp_mxmc").html("未选择");
  });
  $("#btn_mxyp_clear").click(function () {
    thisWidget.clearMXYP();
  });
  $("#txt_mxyp_selectd").click(function () {
    thisWidget.selectedYPMX();
  });

  $("#bt_mxyp_draw").click(function () {
    var height = Number($("#txt_mxyp_flatHeight").val());
    thisWidget.drawMxypPoly(height);
  });
  $("#bt_mxyp_draw_extent").click(function () {
    var height = Number($("#txt_mxyp_flatHeight").val());
    thisWidget.drawMxypPolyExtent(height);
  });

  $("#txt_mxyp_flatHeight").change(function () {
    var num = Number($(this).val());
    if (thisWidget.tilesetFlat) {
      thisWidget.tilesetFlat.height = num;
    }
  });
}
function setMxpyName(name) {
  $("#txt_mxyp_mxmc").html("已选择“" + name + "”");
}

//=============模型裁剪=============
function initMXCJ() {
  $("#btn_goto_mxcj").click(function () {
    thisWidget.createMXCJ();
  });
  $("#btn_mxcj_destory").click(function () {
    thisWidget.destroyMXCJ();
  });
  $("#btn_mxcj_clear").click(function () {
    thisWidget.clearMXCJ();
  });
  $("#bt_mxcj_draw").click(function () {
    var clipOutSide = $("#radioMxcjType2").is(":checked");
    thisWidget.drawMxcjPoly(clipOutSide);
  });

  $('input:radio[name="radioMxcjType"]').change(function () {
    if (!thisWidget.tilesClipPlan) {
      return;
    }

    if ($(this).val() == "1") {
      thisWidget.tilesClipPlan.clipOutSide = true;
    } else {
      thisWidget.tilesClipPlan.clipOutSide = false;
    }
  });
}
