{
  "allOf": [
    {
      "$ref": "#/definitions/IProductTemplateTableProps"
    },
    {
      "$ref": "#/definitions/ITiledProductItemViewEditor"
    }
  ],
  "definitions": {
    "IProductTemplateTableProps": {
      "type": "object",
      "properties": {
        "safeName": {
          "type": "string"
        },
        "transposed": {
          "type": "boolean"
        },
        "dynamicHeight": {
          "type": "boolean"
        },
        "showTitle": {
          "type": "boolean"
        },
        "showTotals": {
          "type": "boolean"
        },
        "updateFrequency": {
          "type": "number"
        },
        "hiddenColumns": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "onlyShownColumns": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "itemsPerPage": {
          "type": "number"
        },
        "overrideLoadingConfig": {
          "$ref": "#/definitions/LoadingConfig"
        },
        "overriddenColumnValues": {
          "$ref": "#/definitions/OverriddenColumnValues"
        },
        "filter": {
          "type": [
            "null",
            "string"
          ]
        },
        "defaultFilter": {
          "type": "string"
        },
        "optionalFilters": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/OptionalFilter"
          }
        },
        "onFetchError": {
          "type": "object"
        },
        "exactDateFrom": {
          "type": "string",
          "format": "date-time"
        },
        "exactDateTo": {
          "type": "string",
          "format": "date-time"
        },
        "hideDates": {
          "type": "boolean"
        },
        "showFilter": {
          "type": "boolean"
        },
        "useExternalFilterEndpoint": {
          "type": "boolean"
        },
        "allowAddEntry": {
          "type": "boolean"
        },
        "allowRowEdit": {
          "type": "boolean"
        },
        "foreignKeyWrap": {
          "type": "boolean"
        },
        "hideHeader": {
          "type": "boolean"
        },
        "hidePagination": {
          "type": "boolean"
        },
        "defaultSorting": {
          "enum": [
            "ASC",
            "DESC"
          ],
          "type": "string"
        },
        "defaultSortingAttribute": {
          "type": "string"
        },
        "isColumnsSortable": {
          "type": "boolean"
        },
        "maxAge": {
          "type": "number"
        },
        "onFilterChange": {
          "type": "object"
        },
        "rowSize": {
          "enum": [
            "LARGE",
            "MEDIUM",
            "SMALL"
          ],
          "type": "string"
        },
        "textAlign": {
          "enum": [
            "center",
            "end",
            "start"
          ],
          "type": "string"
        },
        "fontSize": {
          "type": "number"
        },
        "id": {
          "type": "string"
        },
        "reportOptions": {
          "$ref": "#/definitions/ReportOptions"
        },
        "reportMode": {
          "type": "boolean"
        },
        "stateCb": {
          "type": "object"
        },
        "calendarType": {
          "const": "CALENDAR_445",
          "type": "string"
        },
        "from": {
          "type": "string"
        },
        "to": {
          "type": "string"
        },
        "referenceTime": {
          "type": "string"
        },
        "instantFrom": {
          "$ref": "#/definitions/JSJoda.Instant"
        },
        "instantTo": {
          "$ref": "#/definitions/JSJoda.Instant"
        },
        "instantReferenceTime": {
          "$ref": "#/definitions/JSJoda.Instant"
        },
        "editColumnLocation": {
          "enum": [
            "BACK",
            "FRONT"
          ],
          "type": "string"
        },
        "disableRowDuplicate": {
          "type": "boolean"
        },
        "disableRowRemove": {
          "type": "boolean"
        }
      },
      "required": [
        "safeName"
      ]
    },
    "LoadingConfig": {
      "type": "object",
      "properties": {
        "loadingType": {
          "enum": [
            "EVERYTHING",
            "FIXED_PERIOD",
            "RANGE"
          ],
          "type": "string"
        },
        "loadingConfig": {
          "$ref": "#/definitions/IPeriodLoadingConfig"
        }
      }
    },
    "IPeriodLoadingConfig": {
      "type": "object",
      "properties": {
        "defaultConfigUnit": {
          "enum": [
            "DAYS",
            "HALFHOUR",
            "HOURS",
            "MILLIS",
            "MINUTES",
            "MONTHS",
            "SECONDS",
            "WEEKS",
            "YEARS"
          ],
          "type": "string"
        },
        "truncateStartUnit": {
          "enum": [
            "DAYS",
            "HALFHOUR",
            "HOURS",
            "MILLIS",
            "MINUTES",
            "MONTHS",
            "SECONDS",
            "WEEKS",
            "YEARS"
          ],
          "type": "string"
        },
        "periodUnit": {
          "enum": [
            "DAYS",
            "HALFHOUR",
            "HOURS",
            "MILLIS",
            "MINUTES",
            "MONTHS",
            "SECONDS",
            "WEEKS",
            "YEARS"
          ],
          "type": "string"
        },
        "period": {
          "type": "number"
        },
        "offsetUnit": {
          "enum": [
            "DAYS",
            "HALFHOUR",
            "HOURS",
            "MILLIS",
            "MINUTES",
            "MONTHS",
            "SECONDS",
            "WEEKS",
            "YEARS"
          ],
          "type": "string"
        },
        "offset": {
          "type": "number"
        }
      }
    },
    "OverriddenColumnValues": {
      "type": "object",
      "properties": {
        "selectedColumnsToOverride": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/SelectedColumnToOverride"
          }
        },
        "overrideColumnValues": {
          "type": "boolean"
        }
      },
      "required": [
        "overrideColumnValues",
        "selectedColumnsToOverride"
      ]
    },
    "SelectedColumnToOverride": {
      "type": "object",
      "properties": {
        "columnTitle": {
          "type": "string"
        },
        "defaultValue": {
          "type": "string"
        }
      },
      "required": [
        "columnTitle",
        "defaultValue"
      ]
    },
    "OptionalFilter": {
      "type": "object",
      "properties": {
        "filter": {
          "type": "string"
        },
        "label": {
          "type": "string"
        }
      },
      "required": [
        "filter",
        "label"
      ]
    },
    "ReportOptions": {
      "type": "object",
      "properties": {
        "splitAfter": {
          "type": "number"
        },
        "fontSize": {
          "type": "string"
        }
      }
    },
    "JSJoda.Instant": {
      "type": "object"
    },
    "ITiledProductItemViewEditor": {
      "type": "object",
      "properties": {
        "valueColumn": {
          "type": "string"
        },
        "setpointColumn": {
          "type": "string"
        },
        "conditionColumn": {
          "type": "string"
        },
        "columnsToDisplayInTooltip": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "loadConf": {
          "type": "object",
          "properties": {
            "type": {
              "const": "Time",
              "type": "string"
            },
            "lead": {
              "type": "number"
            },
            "lag": {
              "type": "number"
            },
            "leadUnit": {
              "$ref": "#/definitions/DweenTimeUnit"
            },
            "lagUnit": {
              "$ref": "#/definitions/DweenTimeUnit"
            },
            "alignUnit": {
              "enum": [
                "DAYS",
                "HALFHOUR",
                "HOURS",
                "MILLIS",
                "MINUTES",
                "MONTHS",
                "SECONDS",
                "WEEKS",
                "YEARS"
              ],
              "type": "string"
            }
          },
          "required": [
            "alignUnit",
            "lag",
            "lagUnit",
            "leadUnit"
          ]
        },
        "decimalPlaces": {
          "type": "number"
        },
        "useConditionForValidation": {
          "type": "boolean"
        },
        "defaultColor": {
          "type": "string"
        },
        "id": {
          "type": "number"
        },
        "safeName": {
          "type": "string"
        },
        "transposed": {
          "type": "boolean"
        },
        "dynamicHeight": {
          "type": "boolean"
        },
        "showTitle": {
          "type": "boolean"
        },
        "updateFrequency": {
          "type": "number"
        },
        "hiddenColumns": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "onlyShownColumns": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "itemsPerPage": {
          "type": "number"
        },
        "overrideLoadingConfig": {
          "$ref": "#/definitions/ProductTemplateLoadingConfig"
        },
        "overriddenColumnValues": {
          "$ref": "#/definitions/OverriddenColumnValues"
        },
        "filter": {
          "type": [
            "null",
            "string"
          ]
        },
        "defaultFilter": {
          "type": "string"
        },
        "optionalFilters": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/OptionalFilter"
          }
        },
        "hideDates": {
          "type": "boolean"
        },
        "showFilter": {
          "type": "boolean"
        },
        "allowAddEntry": {
          "type": "boolean"
        },
        "allowRowEdit": {
          "type": "boolean"
        },
        "showTotals": {
          "type": "boolean"
        },
        "defaultSorting": {
          "enum": [
            "ASC",
            "DESC"
          ],
          "type": "string"
        },
        "defaultSortingAttribute": {
          "type": "string"
        },
        "hidePagination": {
          "type": "boolean"
        },
        "isColumnsSortable": {
          "type": "boolean"
        },
        "maxAge": {
          "type": "number"
        },
        "rowSize": {
          "enum": [
            "LARGE",
            "MEDIUM",
            "SMALL"
          ],
          "type": "string"
        },
        "textAlign": {
          "enum": [
            "center",
            "end",
            "start"
          ],
          "type": "string"
        },
        "fontSize": {
          "type": "number"
        },
        "disableRowDuplicate": {
          "type": "boolean"
        },
        "disableRowRemove": {
          "type": "boolean"
        }
      },
      "required": [
        "safeName"
      ]
    },
    "DweenTimeUnit": {
      "enum": [
        "DAYS",
        "HALFHOUR",
        "HOURS",
        "MILLIS",
        "MINUTES",
        "MONTHS",
        "SECONDS",
        "WEEKS",
        "YEARS"
      ],
      "type": "string"
    },
    "ProductTemplateLoadingConfig": {
      "type": "object",
      "properties": {
        "loadingConfig": {
          "$ref": "#/definitions/IPeriodLoadingConfig"
        }
      },
      "required": [
        "loadingConfig"
      ]
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}