{
  "type": "panel",
  "i18n": true,
  "items": {
    "connectionHeader": { "type": "header", "text": "PLC connection", "size": 2, "xs": 12 },
    "plc_ip": { "type": "ip", "label": "PLC IP address", "onlyIp4": true, "xs": 12, "sm": 6, "md": 4, "lg": 3, "xl": 3 },
    "plc_port": { "type": "number", "label": "FINS port", "min": 1, "max": 65535, "xs": 12, "sm": 6, "md": 4, "lg": 3, "xl": 3 },
    "protocol": { "type": "select", "label": "Protocol", "options": [{ "label": "UDP", "value": "udp" }, { "label": "TCP", "value": "tcp" }], "xs": 12, "sm": 6, "md": 4, "lg": 3, "xl": 3 },
    "plc_poll": { "type": "number", "label": "Polling interval (ms)", "min": 250, "xs": 12, "sm": 6, "md": 4, "lg": 3, "xl": 3 },
    "timeout": { "type": "number", "label": "Request timeout (ms)", "min": 1000, "xs": 12, "sm": 6, "md": 4, "lg": 3, "xl": 3 },
    "destinationNode": { "type": "number", "label": "Destination node (DA1, 0 = automatic)", "min": 0, "max": 254, "xs": 12, "sm": 6, "md": 4, "lg": 3, "xl": 3 },
    "sourceNode": { "type": "number", "label": "Source node (SA1, 0 = automatic)", "min": 0, "max": 254, "xs": 12, "sm": 6, "md": 4, "lg": 3, "xl": 3 },
    "variablesHeader": { "type": "header", "text": "PLC variables", "size": 2, "newLine": true, "xs": 12 },
    "devices": {
      "type": "table",
      "label": "Manually configured variables",
      "items": [
        { "type": "text", "attr": "name", "title": "Name", "width": "30%" },
        { "type": "text", "attr": "value", "title": "FINS address", "width": "25%" },
        { "type": "select", "attr": "type", "title": "Data type", "options": [{ "label": "BOOL", "value": "BOOL" }, { "label": "NUMBER", "value": "NUMBER" }, { "label": "TIMER", "value": "TIMER" }, { "label": "COUNTER", "value": "COUNTER" }] },
        { "type": "checkbox", "attr": "write", "title": "Writable", "default": true }
      ],
      "xs": 12
      ,"sm": 12,
      "md": 12,
      "lg": 12,
      "xl": 12
    },
    "symbolTable": {
      "type": "text",
      "label": "CX-Programmer symbol table (CSV/TSV)",
      "help": "Export the symbol table in CX-Programmer and paste its CSV/TSV content here. Name, address and data type columns are detected automatically; manual entries override imported symbols with the same name.",
      "minRows": 6,
      "maxRows": 12,
      "newLine": true,
      "xs": 12,
      "sm": 12,
      "md": 12,
      "lg": 12,
      "xl": 12
    }
  }
}
