{
  "i18n": true,
  "type": "panel",
  "items": {
    "debounceTime": {
      "newLine": true,
      "type": "number",
      "sm": 6,
      "min": 0,
      "max": 86400000,
      "defaultFunc": "customObj && customObj.common && customObj.common.type === 'number' ? instanceObj.native.debounceTime : 0",
      "label": "De-bounce time",
      "help": "De-bounce interval(ms)"
    },
    "blockTime": {
      "type": "number",
      "sm": 6,
      "min": 0,
      "max": 86400000,
      "label": "Block time",
      "defaultFunc": "(data.debounce || data.debounce === '0' || data.debounce === 0) ? parseInt(data.debounce, 10) : instanceObj.native.blockTime",
      "help": "blockTime"
    },
    "changesOnly": {
      "newLine": true,
      "type": "checkbox",
      "label": "log changes only",
      "defaultFunc": "customObj && customObj.common && customObj.common.type === 'number'",
      "sm": 6
    },
    "changesRelogInterval": {
      "newLine": true,
      "type": "number",
      "label": "log changes interval(s)",
      "min": 0,
      "max": 86400000,
      "help": "0 = disabled",
      "defaultFunc": "instanceObj.native.changesRelogInterval",
      "sm": 6,
      "disabled": "!data.changesOnly"
    },
    "changesMinDelta": {
      "type": "number",
      "label": "log changes minimal delta",
      "min": 0,
      "defaultFunc": "customObj && customObj.common && customObj.common.type === 'number' ? instanceObj.native.changesMinDelta : 0",
      "default": 0,
      "sm": 6,
      "help": "0 = disable delta check",
      "disabled": "!data.changesOnly"
    },
    "ignoreBelowNumber": {
      "newLine": true,
      "type": "text",
      "label": "ignore values below x",
      "hidden": "!customObj || !customObj.common || customObj.common.type !== 'number'",
      "defaultFunc": "data.ignoreBelowZero ? '0' : ''",
      "validator": "((data.ignoreBelowNumber || '').toString().length === 0) || isFinite(data.ignoreBelowNumber)",
      "validatorErrorText": "Enter a number or leave the field empty",
      "validatorNoSaveOnError": true,
      "sm": 6
    },
    "ignoreAboveNumber": {
      "type": "text",
      "label": "ignore values above x",
      "hidden": "!customObj || !customObj.common || customObj.common.type !== 'number'",
      "validator": "((data.ignoreAboveNumber || '').toString().length === 0) || isFinite(data.ignoreAboveNumber)",
      "validatorErrorText": "Enter a number or leave the field empty",
      "validatorNoSaveOnError": true,
      "sm": 6
    },
    "ignoreZero": {
      "newLine": true,
      "type": "checkbox",
      "label": "ignore zero or null values",
      "sm": 6
    },
    "disableSkippedValueLogging": {
      "newLine": true,
      "label": "Disable charting optimized logging of skipped values",
      "type": "checkbox",
      "sm": 12,
      "defaultFunc": "instanceObj.native.disableSkippedValueLogging || false"
    },
    "storageType": {
      "newLine": true,
      "type": "select",
      "label": "Store as",
      "options": [
        {
          "value": "",
          "label": "Automatic"
        },
        {
          "value": "String",
          "label": "String"
        },
        {
          "value": "Number",
          "label": "Number"
        },
        {
          "value": "Boolean",
          "label": "Boolean"
        }
      ],
      "default": "",
      "sm": 6
    },
    "counter": {
      "type": "checkbox",
      "label": "Counter",
      "default": false,
      "hidden": "data.storageType !== 'Number'",
      "sm": 6
    },
    "aliasId": {
      "newLine": true,
      "type": "text",
      "label": "aliasId",
      "maxLength": 255,
      "default": "",
      "sm": 12,
      "help": "Alias Info"
    },
    "retention": {
      "newLine": true,
      "type": "select",
      "label": "Storage retention",
      "options": [
        {
          "value": 0,
          "label": "keep forever"
        },
        {
          "value": 63072000,
          "label": "2 years"
        },
        {
          "value": 31536000,
          "label": "1 year"
        },
        {
          "value": 15811200,
          "label": "6 months"
        },
        {
          "value": 7948800,
          "label": "3 months"
        },
        {
          "value": 2678400,
          "label": "1 months"
        },
        {
          "value": 1209600,
          "label": "2 weeks"
        },
        {
          "value": 604800,
          "label": "1 week"
        },
        {
          "value": 432000,
          "label": "5 days"
        },
        {
          "value": 259200,
          "label": "3 days"
        },
        {
          "value": 86400,
          "label": "1 day"
        },
        {
          "value": -1,
          "label": "Custom timeframe"
        }
      ],
      "defaultFunc": "instanceObj.native.retention",
      "sm": 6
    },
    "customRetentionDuration": {
      "type": "number",
      "label": "Custom retention duration (days)",
      "min": 1,
      "sm": 12,
      "md": 4,
      "hidden": "(data.retention !== -1)",
      "help": "Number of days to keep the data.",
      "defaultFunc": "instanceObj.native.customRetentionDuration"
    },
    "maxLength": {
      "newLine": true,
      "type": "number",
      "label": "maximum datapoint count in RAM",
      "min": 0,
      "max": 100000,
      "defaultFunc": "customObj && customObj.common && customObj.common.type === 'number' ? instanceObj.native.maxLength : 10",
      "sm": 6
    },
    "round": {
      "newLine": true,
      "type": "text",
      "label": "Round real to",
      "sm": 6,
      "validator": "((data.round || '').toString().length === 0) || isFinite(data.round)",
      "validatorErrorText": "Enter a number or leave the field empty",
      "validatorNoSaveOnError": true,
      "hidden": "!customObj || !customObj.common || customObj.common.type !== 'number' || (data.storageType && data.storageType !== 'Number')"
    },
    "enableDebugLogs": {
      "newLine": true,
      "label": "Enable enhanced debug logs for the datapoint",
      "type": "checkbox",
      "sm": 12,
      "defaultFunc": "instanceObj.native.enableDebugLogs || false"
    },
    "deleteHistoryButton": {
      "newLine": true,
      "type": "sendTo",
      "label": "Delete all logged history data for this datapoint",
      "command": "deleteAll",
      "jsonData": "{\"id\": \"${customObj._id}\"}",
      "variant": "outlined",
      "icon": "warning",
      "confirm": {
        "type": "warning",
        "title": "Delete history data?",
        "text": "This permanently deletes ALL logged history data for this datapoint from the database. This cannot be undone and is independent of the logging enabled/disabled state above.",
        "ok": "Delete"
      },
      "sm": 12,
      "noMultiEdit": true,
      "showProcess": true
    },
    "debounce": {
      "type": "number",
      "label": "De-bounce time",
      "help": "De-bounce interval(ms)",
      "min": 0,
      "max": 86400000,
      "defaultFunc": "customObj && customObj.common && customObj.common.type === 'number' ? instanceObj.native.debounce : 0",
      "hidden": "true",
      "sm": 6
    },
    "ignoreBelowZero": {
      "type": "checkbox",
      "label": "ignore values below zero",
      "hidden": "true",
      "sm": 6
    }
  }
}
