import { h, } from "@stencil/core";
import formatMeasure from "../../helpers/formatMeasure";
import state from "../../store";
export class FormSiteAreas {
  constructor() {
    this.jobId = undefined;
    this.siteId = undefined;
    this.isAffected = false;
  }
  onChange(event) {
    var _a;
    if (event.target.name === "affected") {
      this.isAffected = !!((_a = event === null || event === void 0 ? void 0 : event.target) === null || _a === void 0 ? void 0 : _a.checked);
    }
  }
  removeArea(index, affected) {
    var _a, _b, _c, _d, _e, _f;
    if (!confirm("Are you sure you want to remove this area?"))
      return;
    if (affected) {
      const affectedAreas = ((_a = state === null || state === void 0 ? void 0 : state.site) === null || _a === void 0 ? void 0 : _a.affectedAreas) || [];
      state.site.affectedAreas = (_b = affectedAreas.filter) === null || _b === void 0 ? void 0 : _b.call(affectedAreas, (_area, i) => i !== index);
    }
    else {
      const areas = ((_c = state.site) === null || _c === void 0 ? void 0 : _c.areas) || [];
      state.site.areas = (_d = areas.filter) === null || _d === void 0 ? void 0 : _d.call(areas, (_area, i) => i !== index);
    }
    state.site = { ...state === null || state === void 0 ? void 0 : state.site };
    this.fireenjinSubmit.emit({
      endpoint: "editSite",
      id: this.siteId,
      data: {
        jobId: this.jobId,
        areas: ((_e = state.site) === null || _e === void 0 ? void 0 : _e.areas) || [],
        affectedAreas: ((_f = state.site) === null || _f === void 0 ? void 0 : _f.affectedAreas) || [],
      },
    });
  }
  render() {
    var _a, _b, _c, _d, _e, _f, _g;
    return [
      h("fireenjin-form", { name: "measure", hideControls: true, disableLoader: true, endpoint: this.siteId ? "editSite" : "addSite", documentId: this.siteId, beforeSubmit: async (data) => {
          var _a, _b;
          const affectedAreas = ((_a = state.site) === null || _a === void 0 ? void 0 : _a.affectedAreas) || [];
          const areas = ((_b = state.site) === null || _b === void 0 ? void 0 : _b.areas) || [];
          if (this.isAffected) {
            affectedAreas.push({
              height: ((data === null || data === void 0 ? void 0 : data.height) && parseFloat(data.height)) || 0,
              length: ((data === null || data === void 0 ? void 0 : data.length) && parseFloat(data.length)) || 0,
              width: ((data === null || data === void 0 ? void 0 : data.width) && parseFloat(data.width)) || 0,
            });
          }
          else {
            areas.push({
              height: ((data === null || data === void 0 ? void 0 : data.height) && parseFloat(data.height)) || 0,
              length: ((data === null || data === void 0 ? void 0 : data.length) && parseFloat(data.length)) || 0,
              width: ((data === null || data === void 0 ? void 0 : data.width) && parseFloat(data.width)) || 0,
            });
          }
          return { jobId: this.jobId, areas, affectedAreas };
        } }, h("ion-grid", null, h("ion-row", { class: "ion-align-items-center" }, h("ion-col", { size: "2" }, h("ion-label", { style: {
          fontSize: "14px !important",
          fontWeight: "bold",
          display: "block",
          background: "transparent",
          textAlign: "left",
          padding: "0",
          fontFamily: "var(--ion-font-family)",
          marginBottom: "14px",
        }, position: "stacked" }, "Affected"), h("ion-toggle", { style: { padding: "5px 5px 5px 5px" }, name: "affected" })), h("ion-col", { size: "3" }, h("floodteam-input-measure", { label: "Length", name: "length", required: true })), h("ion-col", { size: "3" }, h("floodteam-input-measure", { label: "Width", name: "width", required: true })), h("ion-col", { size: "3" }, h("floodteam-input-measure", { label: "Height", name: "height" })), h("ion-col", { size: "1" }, h("ion-button", { type: "submit", size: "small", color: "primary" }, h("ion-icon", { slot: "icon-only", name: "add-circle" })))))),
      h("ion-list", null, h("ion-item-divider", null, h("ion-label", null, "Affected Aereas"), h("div", { slot: "end" }, h("ion-badge", { style: { marginRight: "5px" } }, "sqft - ", formatMeasure(((_a = state.site) === null || _a === void 0 ? void 0 : _a.affectedAreaTotalSqft) || 0)), h("ion-badge", { style: { marginRight: "5px" } }, "cuft - ", formatMeasure(((_b = state.site) === null || _b === void 0 ? void 0 : _b.affectedAreaTotalCuft) || 0)))), (((_c = state.site) === null || _c === void 0 ? void 0 : _c.affectedAreas) ? (_d = state.site) === null || _d === void 0 ? void 0 : _d.affectedAreas : []).map((area, index) => (h("ion-item", null, h("ion-label", { style: {
          display: "flex",
          justifyContent: "space-evenly",
          alignItems: "center",
        } }, h("div", null, h("small", { style: { opacity: "0.8", paddingRight: "15px" } }, "Length"), formatMeasure((area === null || area === void 0 ? void 0 : area.length) || 0)), h("ion-icon", { style: { width: "25px" }, name: "close" }), h("div", null, h("small", { style: { opacity: "0.8", paddingRight: "15px" } }, "Width"), formatMeasure((area === null || area === void 0 ? void 0 : area.width) || 0)), h("ion-icon", { style: { width: "25px" }, name: "close" }), h("div", null, h("small", { style: { opacity: "0.8", paddingRight: "15px" } }, "Height"), formatMeasure((area === null || area === void 0 ? void 0 : area.height) || 0))), h("ion-button", { onClick: () => this.removeArea(index, true), fill: "clear", slot: "end", style: {
          "--color": "var(--ion-text-color)",
          "--color-hover": "var(--ion-color-danger",
        } }, h("ion-icon", { slot: "icon-only", name: "close-circle" }))))), h("ion-item-divider", null, h("ion-label", null, "Site Areas"), h("div", { slot: "end" }, h("ion-badge", { style: { marginRight: "5px" } }, "sqft - ", formatMeasure(((_e = state.site) === null || _e === void 0 ? void 0 : _e.areaTotalSqft) || 0)), h("ion-badge", { style: { marginRight: "5px" } }, "cuft - ", formatMeasure(((_f = state.site) === null || _f === void 0 ? void 0 : _f.areaTotalCuft) || 0)))), (((_g = state.site) === null || _g === void 0 ? void 0 : _g.areas) || []).map((area, index) => (h("ion-item", null, h("ion-label", { style: {
          display: "flex",
          justifyContent: "space-evenly",
          alignItems: "center",
        } }, h("div", null, h("small", { style: { opacity: "0.8", paddingRight: "15px" } }, "Length"), formatMeasure((area === null || area === void 0 ? void 0 : area.length) || 0)), h("ion-icon", { style: { width: "25px" }, name: "close" }), h("div", null, h("small", { style: { opacity: "0.8", paddingRight: "15px" } }, "Width"), formatMeasure((area === null || area === void 0 ? void 0 : area.width) || 0)), h("ion-icon", { style: { width: "25px" }, name: "close" }), h("div", null, h("small", { style: { opacity: "0.8", paddingRight: "15px" } }, "Height"), formatMeasure((area === null || area === void 0 ? void 0 : area.height) || 0))), h("ion-button", { onClick: () => this.removeArea(index), fill: "clear", slot: "end", style: {
          "--color": "var(--ion-text-color)",
          "--color-hover": "var(--ion-color-danger",
        } }, h("ion-icon", { slot: "icon-only", name: "close-circle" })))))),
    ];
  }
  static get is() { return "floodteam-form-site-areas"; }
  static get properties() {
    return {
      "jobId": {
        "type": "string",
        "mutable": false,
        "complexType": {
          "original": "string",
          "resolved": "string",
          "references": {}
        },
        "required": false,
        "optional": false,
        "docs": {
          "tags": [],
          "text": ""
        },
        "attribute": "job-id",
        "reflect": false
      },
      "siteId": {
        "type": "string",
        "mutable": false,
        "complexType": {
          "original": "string",
          "resolved": "string",
          "references": {}
        },
        "required": false,
        "optional": false,
        "docs": {
          "tags": [],
          "text": ""
        },
        "attribute": "site-id",
        "reflect": false
      }
    };
  }
  static get states() {
    return {
      "isAffected": {}
    };
  }
  static get events() {
    return [{
        "method": "fireenjinSubmit",
        "name": "fireenjinSubmit",
        "bubbles": true,
        "cancelable": true,
        "composed": true,
        "docs": {
          "tags": [],
          "text": ""
        },
        "complexType": {
          "original": "FireEnjinSubmitEvent",
          "resolved": "FireEnjinSubmitEvent",
          "references": {
            "FireEnjinSubmitEvent": {
              "location": "import",
              "path": "@fireenjin/sdk"
            }
          }
        }
      }];
  }
  static get listeners() {
    return [{
        "name": "ionChange",
        "method": "onChange",
        "target": undefined,
        "capture": false,
        "passive": false
      }];
  }
}
