{
  "custom": {
    "api_region_name": "na",
    "bucket_options": [
      {
        "label": "Image Files",
        "value": "na-ignition-image-repo"
      },
      {
        "label": "Source Files",
        "value": "na-ignition-image-source"
      }
    ],
    "copy_option_options": [
      {
        "label": "Both",
        "value": "both"
      },
      {
        "label": "SVG",
        "value": "svg"
      },
      {
        "label": "DRAWIO",
        "value": "drawio"
      }
    ],
    "default_query_params": {
      "copy_option": null,
      "destination_bucket": null,
      "destination_site": null,
      "destination_view": "",
      "end_time": null,
      "error_occurred": null,
      "operation": null,
      "source_bucket": null,
      "source_site": null,
      "source_view": "",
      "start_time": null
    },
    "destination_view_options_by_site_and_bucket": [],
    "destination_view_suffix": null,
    "destination_whid_options": [],
    "error_occurred_options": [
      {
        "label": "True",
        "value": true
      },
      {
        "label": "False",
        "value": false
      }
    ],
    "operation_options": [
      {
        "label": "Copy Single",
        "value": "copy_single"
      },
      {
        "label": "Upload",
        "value": "upload"
      },
      {
        "label": "Delete",
        "value": "delete"
      },
      {
        "label": "Add New Site",
        "value": "add_new_site"
      }
    ],
    "source_view_options_by_site_and_bucket": [],
    "source_view_suffix": null,
    "source_whid_options": [],
    "stage_config": {
      "account_id": "925510716640",
      "endpoint": "https://scada-s3-management.narme-scada.rme.amazon.dev/",
      "lambda_name": "RMESDScadaS3ManagementFlaskLambda-prod",
      "region": "us-east-2",
      "repo_bucket": "na-ignition-image-repo",
      "s3_region": "us-east-1",
      "source_bucket": "na-ignition-image-source"
    }
  },
  "params": {
    "query_params": {
      "copy_option": null,
      "destination_bucket": null,
      "destination_site": null,
      "destination_view": "",
      "end_time": null,
      "error_occurred": null,
      "operation": null,
      "source_bucket": null,
      "source_site": null,
      "source_view": "",
      "start_time": null,
      "username": ""
    }
  },
  "propConfig": {
    "custom.api_region_name": {
      "binding": {
        "config": {
          "path": "session.custom.aws.prefix"
        },
        "type": "property"
      },
      "persistent": true
    },
    "custom.bucket_options": {
      "binding": {
        "config": {
          "path": "view.custom.stage_config"
        },
        "transforms": [
          {
            "code": "\treturn [{\u0027value\u0027: value.repo_bucket, \u0027label\u0027: \u0027Image Files\u0027},\n\t\t\t{\u0027value\u0027: value.source_bucket, \u0027label\u0027: \u0027Source Files\u0027}]",
            "type": "script"
          }
        ],
        "type": "property"
      },
      "persistent": true
    },
    "custom.copy_option_options": {
      "persistent": true
    },
    "custom.default_query_params": {
      "persistent": true
    },
    "custom.default_query_params.username": {
      "binding": {
        "config": {
          "path": "session.props.auth.user.userName"
        },
        "type": "property"
      }
    },
    "custom.destination_view_options_by_site_and_bucket": {
      "binding": {
        "config": {
          "expression": "{view.params.query_params.destination_site}+{view.params.query_params.destination_bucket}"
        },
        "transforms": [
          {
            "code": "\tbucket \u003d self.params.query_params.destination_bucket\n\tsite \u003d self.params.query_params.destination_site\n\tif bucket and site:\n\t\tfrom AWS.s3 import S3Manager\n\t\tfrom helper.helper import sanitize_tree\n\t\tfrom pprint import pformat\n\t\t\n\t\tapi_stage \u003d \u0027prod\u0027\n\t\tusername \u003d self.session.props.auth.user.userName\n\t\tapi_region_name \u003d self.view.custom.api_region_name\n\t\t\n\t\ts3m \u003d S3Manager(api_stage, api_region_name, username)\n\t\tsuffix \u003d self.custom.destination_view_suffix\n\t\tfiles \u003d sanitize_tree(s3m.fetch_object_list_by_site_and_bucket(site, bucket))\n\t\treturn [{\u0027value\u0027: x[\u0027Filename\u0027].replace(suffix,\u0027\u0027), \n\t\t\t\t\u0027label\u0027: x[\u0027Filename\u0027].replace(suffix,\u0027\u0027)} for x in files]\n\treturn []",
            "type": "script"
          }
        ],
        "type": "expr"
      },
      "persistent": true
    },
    "custom.destination_view_suffix": {
      "binding": {
        "config": {
          "path": "view.params.query_params.destination_bucket"
        },
        "transforms": [
          {
            "code": "\tif value:\n\t\tstage_config \u003d self.custom.stage_config\n\t\tif value \u003d\u003d stage_config.get(\u0027repo_bucket\u0027, None):\n\t\t\treturn \".svg\"\n\t\tif value \u003d\u003d stage_config.get(\"source_bucket\", None):\n\t\t\treturn \".drawio\"\n\treturn value",
            "type": "script"
          }
        ],
        "type": "property"
      },
      "persistent": true
    },
    "custom.destination_whid_options": {
      "binding": {
        "config": {
          "path": "view.params.query_params.destination_bucket"
        },
        "transforms": [
          {
            "code": "\tif value:\n\t\tfrom AWS.s3 import S3Manager\n\t\t\n\t\tapi_stage \u003d \u0027prod\u0027\n\t\tusername \u003d self.session.props.auth.user.userName\n\t\tapi_region_name \u003d self.custom.api_region_name\n\t\t\n\t\ts3m \u003d S3Manager(\u0027prod\u0027, api_region_name, username)\n\t\t\n\t\treturn [{\u0027value\u0027: x, \u0027label\u0027: x} for x in s3m.fetch_site_list(value)]\n\treturn []",
            "type": "script"
          }
        ],
        "type": "property"
      },
      "persistent": true
    },
    "custom.error_occurred_options": {
      "persistent": true
    },
    "custom.operation_options": {
      "binding": {
        "config": {
          "expression": "1"
        },
        "transforms": [
          {
            "code": "\tfrom AWS.s3 import OPERATION_MAP\n\treturn [{\u0027value\u0027:k, \u0027label\u0027:k.replace(\u0027_\u0027,\u0027 \u0027).title()} \n\t\t\tfor k,v in OPERATION_MAP.iteritems()\n\t\t\tif v.get(\u0027method\u0027, \u0027\u0027) in (\u0027PUT\u0027, \u0027POST\u0027, \u0027DELETE\u0027)\n\t\t\tand k not in (\u0027query_audit_table\u0027, )]",
            "type": "script"
          }
        ],
        "type": "expr"
      },
      "persistent": true
    },
    "custom.source_view_options_by_site_and_bucket": {
      "binding": {
        "config": {
          "expression": "{view.params.query_params.source_site}+{view.params.query_params.source_bucket}"
        },
        "transforms": [
          {
            "code": "\tbucket \u003d self.params.query_params.source_bucket\n\tsite \u003d self.params.query_params.source_site\n\tif bucket and site:\n\t\tfrom AWS.s3 import S3Manager\n\t\tfrom helper.helper import sanitize_tree\n\t\tfrom pprint import pformat\n\t\t\n\t\tapi_stage \u003d \u0027prod\u0027\n\t\tusername \u003d self.session.props.auth.user.userName\n\t\tapi_region_name \u003d self.view.custom.api_region_name\n\t\t\n\t\ts3m \u003d S3Manager(api_stage, api_region_name, username)\n\t\tsuffix \u003d self.custom.source_view_suffix\n\t\tfiles \u003d sanitize_tree(s3m.fetch_object_list_by_site_and_bucket(site, bucket))\n\t\treturn [{\u0027value\u0027: x[\u0027Filename\u0027].replace(suffix,\u0027\u0027), \n\t\t\t\t\u0027label\u0027: x[\u0027Filename\u0027].replace(suffix,\u0027\u0027)} for x in files]\n\treturn []",
            "type": "script"
          }
        ],
        "type": "expr"
      },
      "persistent": true
    },
    "custom.source_view_suffix": {
      "binding": {
        "config": {
          "path": "view.params.query_params.source_bucket"
        },
        "transforms": [
          {
            "code": "\tif value:\n\t\tstage_config \u003d self.custom.stage_config\n\t\tif value \u003d\u003d stage_config.get(\u0027repo_bucket\u0027, None):\n\t\t\treturn \".svg\"\n\t\tif value \u003d\u003d stage_config.get(\"source_bucket\", None):\n\t\t\treturn \".drawio\"\n\treturn value",
            "type": "script"
          }
        ],
        "type": "property"
      },
      "persistent": true
    },
    "custom.source_whid_options": {
      "binding": {
        "config": {
          "path": "view.params.query_params.source_bucket"
        },
        "transforms": [
          {
            "code": "\tif value:\n\t\tfrom AWS.s3 import S3Manager\n\t\t\n\t\tapi_stage \u003d \u0027prod\u0027\n\t\tusername \u003d self.session.props.auth.user.userName\n\t\tapi_region_name \u003d self.custom.api_region_name\n\t\t\n\t\ts3m \u003d S3Manager(\u0027prod\u0027, api_region_name, username)\n\t\t\n\t\treturn [{\u0027value\u0027: x, \u0027label\u0027: x} for x in s3m.fetch_site_list(value)]\n\treturn []",
            "type": "script"
          }
        ],
        "type": "property"
      },
      "persistent": true
    },
    "custom.stage_config": {
      "binding": {
        "config": {
          "expression": "{view.custom.api_region_name}"
        },
        "transforms": [
          {
            "code": "\treturn AWS.s3.STAGE_CONFIG[\u0027prod\u0027][value]",
            "type": "script"
          }
        ],
        "type": "expr"
      },
      "persistent": true
    },
    "params.query_params": {
      "onChange": {
        "enabled": null,
        "script": "\tif not missedEvents and origin in (\u0027Binding\u0027, \u0027Script\u0027, \u0027BindingWriteback\u0027):\n\t\tpayload \u003d currentValue.value\n\t\tsystem.perspective.sendMessage(\u0027audit_table_query_params_changed\u0027, payload, scope\u003d\u0027session\u0027)\n\t\t"
      },
      "paramDirection": "input",
      "persistent": true
    }
  },
  "props": {
    "defaultSize": {
      "height": 600
    }
  },
  "root": {
    "children": [
      {
        "children": [
          {
            "meta": {
              "name": "Label"
            },
            "position": {
              "shrink": 0
            },
            "props": {
              "style": {
                "borderStyle": "none",
                "classes": "Framework/Card/Title_transparent"
              },
              "text": "Select Query Params"
            },
            "type": "ia.display.label"
          },
          {
            "children": [
              {
                "events": {
                  "component": {
                    "onActionPerformed": {
                      "config": {
                        "script": "\t# reset query params to default values \n\t# (stored in `view.custom.default_query_params`)\n\tself.view.params.query_params \u003d self.view.custom.default_query_params"
                      },
                      "scope": "G",
                      "type": "script"
                    }
                  }
                },
                "meta": {
                  "name": "Clear Button",
                  "tooltip": {
                    "enabled": true,
                    "location": "bottom-right",
                    "text": "Clear Selections"
                  }
                },
                "position": {
                  "shrink": 0
                },
                "props": {
                  "image": {
                    "icon": {
                      "path": "material/clear_all"
                    }
                  },
                  "primary": false,
                  "style": {
                    "classes": "Input/Button/Secondary_minimal"
                  },
                  "text": ""
                },
                "type": "ia.input.button"
              },
              {
                "events": {
                  "component": {
                    "onActionPerformed": {
                      "config": {
                        "script": "\t# refresh audit table query via message handler\n\tsystem.perspective.sendMessage(\u0027refresh_audit_table_data\u0027, scope\u003d\u0027session\u0027)\n\t"
                      },
                      "scope": "G",
                      "type": "script"
                    }
                  }
                },
                "meta": {
                  "name": "Refresh Button",
                  "tooltip": {
                    "enabled": true,
                    "location": "bottom-right",
                    "text": "Refresh Data"
                  }
                },
                "position": {
                  "shrink": 0
                },
                "props": {
                  "image": {
                    "icon": {
                      "path": "material/refresh"
                    }
                  },
                  "primary": false,
                  "style": {
                    "classes": "Input/Button/Secondary_minimal"
                  },
                  "text": ""
                },
                "type": "ia.input.button"
              }
            ],
            "meta": {
              "name": "FlexContainer"
            },
            "position": {
              "grow": 1
            },
            "props": {
              "justify": "flex-end"
            },
            "type": "ia.container.flex"
          }
        ],
        "meta": {
          "name": "FlexContainer Header"
        },
        "position": {
          "shrink": 0
        },
        "props": {
          "style": {
            "classes": "Framework/Card/Title_transparent",
            "marginBottom": "2px"
          }
        },
        "type": "ia.container.flex"
      },
      {
        "children": [
          {
            "children": [
              {
                "meta": {
                  "name": "Label"
                },
                "position": {
                  "basis": "125px",
                  "shrink": 0
                },
                "props": {
                  "style": {
                    "classes": "Framework/Card/Label",
                    "textAlign": "right"
                  },
                  "text": "Operation"
                },
                "type": "ia.display.label"
              },
              {
                "meta": {
                  "name": "Dropdown"
                },
                "position": {
                  "basis": "175px",
                  "shrink": 0
                },
                "propConfig": {
                  "props.options": {
                    "binding": {
                      "config": {
                        "path": "view.custom.operation_options"
                      },
                      "type": "property"
                    }
                  },
                  "props.value": {
                    "binding": {
                      "config": {
                        "bidirectional": true,
                        "path": "view.params.query_params.operation"
                      },
                      "type": "property"
                    }
                  }
                },
                "props": {
                  "dropdownOptionStyle": {
                    "overflowWrap": "break-word",
                    "whiteSpace": "normal"
                  },
                  "multiSelect": true,
                  "showClearIcon": true
                },
                "type": "ia.input.dropdown"
              },
              {
                "events": {
                  "component": {
                    "onActionPerformed": {
                      "config": {
                        "script": "\tself.view.params.query_params.operation \u003d None\n\t"
                      },
                      "scope": "G",
                      "type": "script"
                    }
                  }
                },
                "meta": {
                  "name": "Clear Button"
                },
                "position": {
                  "basis": "80px"
                },
                "propConfig": {
                  "props.enabled": {
                    "binding": {
                      "config": {
                        "expression": "!isNull({view.params.query_params.operation})\r\n\u0026\u0026{view.params.query_params.operation}!\u003d\u0027\u0027"
                      },
                      "type": "expr"
                    }
                  }
                },
                "props": {
                  "image": {
                    "icon": {
                      "path": "material/clear"
                    }
                  },
                  "primary": false,
                  "style": {
                    "classes": "Input/Button/Secondary_minimal"
                  },
                  "text": ""
                },
                "type": "ia.input.button"
              }
            ],
            "meta": {
              "name": "Operation"
            },
            "position": {
              "basis": "335px",
              "shrink": 0
            },
            "props": {
              "style": {
                "overflow": "hidden"
              }
            },
            "type": "ia.container.flex"
          },
          {
            "children": [
              {
                "meta": {
                  "name": "Label"
                },
                "position": {
                  "basis": "125px",
                  "shrink": 0
                },
                "props": {
                  "style": {
                    "classes": "Framework/Card/Label",
                    "textAlign": "right"
                  },
                  "text": "Copy Option"
                },
                "type": "ia.display.label"
              },
              {
                "meta": {
                  "name": "Dropdown"
                },
                "position": {
                  "basis": "175px",
                  "shrink": 0
                },
                "propConfig": {
                  "props.options": {
                    "binding": {
                      "config": {
                        "path": "view.custom.copy_option_options"
                      },
                      "type": "property"
                    }
                  },
                  "props.value": {
                    "binding": {
                      "config": {
                        "bidirectional": true,
                        "path": "view.params.query_params.copy_option"
                      },
                      "type": "property"
                    }
                  }
                },
                "props": {
                  "dropdownOptionStyle": {
                    "overflowWrap": "break-word",
                    "whiteSpace": "normal"
                  },
                  "showClearIcon": true
                },
                "type": "ia.input.dropdown"
              },
              {
                "events": {
                  "component": {
                    "onActionPerformed": {
                      "config": {
                        "script": "\tself.view.params.query_params.copy_option \u003d None\n\t"
                      },
                      "scope": "G",
                      "type": "script"
                    }
                  }
                },
                "meta": {
                  "name": "Clear Button"
                },
                "position": {
                  "basis": "80px"
                },
                "propConfig": {
                  "props.enabled": {
                    "binding": {
                      "config": {
                        "expression": "!isNull({view.params.query_params.copy_option})\r\n\u0026\u0026{view.params.query_params.copy_option}!\u003d\u0027\u0027"
                      },
                      "type": "expr"
                    }
                  }
                },
                "props": {
                  "image": {
                    "icon": {
                      "path": "material/clear"
                    }
                  },
                  "primary": false,
                  "style": {
                    "classes": "Input/Button/Secondary_minimal"
                  },
                  "text": ""
                },
                "type": "ia.input.button"
              }
            ],
            "meta": {
              "name": "Copy Option",
              "visible": false
            },
            "position": {
              "basis": "335px",
              "shrink": 0
            },
            "props": {
              "style": {
                "overflow": "hidden"
              }
            },
            "type": "ia.container.flex"
          }
        ],
        "meta": {
          "name": "FlexContainer"
        },
        "position": {
          "shrink": 0
        },
        "props": {
          "justify": "center"
        },
        "type": "ia.container.flex"
      },
      {
        "children": [
          {
            "children": [
              {
                "meta": {
                  "name": "Label"
                },
                "position": {
                  "basis": "125px",
                  "shrink": 0
                },
                "props": {
                  "style": {
                    "classes": "Framework/Card/Label",
                    "textAlign": "right"
                  },
                  "text": "Username"
                },
                "type": "ia.display.label"
              },
              {
                "meta": {
                  "name": "TextField"
                },
                "position": {
                  "basis": "175px",
                  "shrink": 0
                },
                "propConfig": {
                  "props.text": {
                    "binding": {
                      "config": {
                        "bidirectional": true,
                        "path": "view.params.query_params.username"
                      },
                      "type": "property"
                    }
                  }
                },
                "props": {
                  "placeholder": "Enter username..."
                },
                "type": "ia.input.text-field"
              },
              {
                "events": {
                  "component": {
                    "onActionPerformed": {
                      "config": {
                        "script": "\tself.view.params.query_params.username \u003d None\n\t"
                      },
                      "scope": "G",
                      "type": "script"
                    }
                  }
                },
                "meta": {
                  "name": "Clear Button"
                },
                "position": {
                  "basis": "80px"
                },
                "propConfig": {
                  "props.enabled": {
                    "binding": {
                      "config": {
                        "expression": "!isNull({view.params.query_params.username})\r\n\u0026\u0026{view.params.query_params.username}!\u003d\u0027\u0027"
                      },
                      "type": "expr"
                    }
                  }
                },
                "props": {
                  "image": {
                    "icon": {
                      "path": "material/clear"
                    }
                  },
                  "primary": false,
                  "style": {
                    "classes": "Input/Button/Secondary_minimal"
                  },
                  "text": ""
                },
                "type": "ia.input.button"
              }
            ],
            "meta": {
              "name": "Username"
            },
            "position": {
              "basis": "335px",
              "shrink": 0
            },
            "props": {
              "style": {
                "overflow": "hidden"
              }
            },
            "type": "ia.container.flex"
          },
          {
            "children": [
              {
                "meta": {
                  "name": "Label"
                },
                "position": {
                  "basis": "125px",
                  "shrink": 0
                },
                "props": {
                  "style": {
                    "classes": "Framework/Card/Label",
                    "textAlign": "right"
                  },
                  "text": "Error Occurred?"
                },
                "type": "ia.display.label"
              },
              {
                "meta": {
                  "name": "Dropdown"
                },
                "position": {
                  "basis": "175px",
                  "shrink": 0
                },
                "propConfig": {
                  "props.options": {
                    "binding": {
                      "config": {
                        "path": "view.custom.error_occurred_options"
                      },
                      "type": "property"
                    }
                  },
                  "props.value": {
                    "binding": {
                      "config": {
                        "bidirectional": true,
                        "path": "view.params.query_params.error_occurred"
                      },
                      "type": "property"
                    }
                  }
                },
                "props": {
                  "dropdownOptionStyle": {
                    "overflowWrap": "break-word",
                    "whiteSpace": "normal"
                  },
                  "showClearIcon": true
                },
                "type": "ia.input.dropdown"
              },
              {
                "events": {
                  "component": {
                    "onActionPerformed": {
                      "config": {
                        "script": "\tself.view.params.query_params.error_occurred \u003d None\n\t"
                      },
                      "scope": "G",
                      "type": "script"
                    }
                  }
                },
                "meta": {
                  "name": "Clear Button"
                },
                "position": {
                  "basis": "80px"
                },
                "propConfig": {
                  "props.enabled": {
                    "binding": {
                      "config": {
                        "expression": "!isNull({view.params.query_params.error_occurred})\r\n\u0026\u0026{view.params.query_params.error_occurred}!\u003d\u0027\u0027"
                      },
                      "type": "expr"
                    }
                  }
                },
                "props": {
                  "image": {
                    "icon": {
                      "path": "material/clear"
                    }
                  },
                  "primary": false,
                  "style": {
                    "classes": "Input/Button/Secondary_minimal"
                  },
                  "text": ""
                },
                "type": "ia.input.button"
              }
            ],
            "meta": {
              "name": "Error Occurred"
            },
            "position": {
              "basis": "335px",
              "shrink": 0
            },
            "props": {
              "style": {
                "overflow": "hidden"
              }
            },
            "type": "ia.container.flex"
          }
        ],
        "meta": {
          "name": "FlexContainer_0"
        },
        "position": {
          "shrink": 0
        },
        "props": {
          "justify": "center"
        },
        "type": "ia.container.flex"
      },
      {
        "children": [
          {
            "children": [
              {
                "meta": {
                  "name": "Label"
                },
                "position": {
                  "basis": "125px",
                  "shrink": 0
                },
                "props": {
                  "style": {
                    "classes": "Framework/Card/Label",
                    "textAlign": "right"
                  },
                  "text": "Dest. Bucket"
                },
                "type": "ia.display.label"
              },
              {
                "meta": {
                  "name": "Dropdown"
                },
                "position": {
                  "basis": "175px",
                  "shrink": 0
                },
                "propConfig": {
                  "props.options": {
                    "binding": {
                      "config": {
                        "path": "view.custom.bucket_options"
                      },
                      "type": "property"
                    }
                  },
                  "props.value": {
                    "binding": {
                      "config": {
                        "bidirectional": true,
                        "path": "view.params.query_params.destination_bucket"
                      },
                      "type": "property"
                    }
                  }
                },
                "props": {
                  "dropdownOptionStyle": {
                    "overflowWrap": "break-word",
                    "whiteSpace": "normal"
                  },
                  "showClearIcon": true
                },
                "type": "ia.input.dropdown"
              },
              {
                "events": {
                  "component": {
                    "onActionPerformed": {
                      "config": {
                        "script": "\tself.view.params.query_params.destination_bucket \u003d None\n\t"
                      },
                      "scope": "G",
                      "type": "script"
                    }
                  }
                },
                "meta": {
                  "name": "Clear Button"
                },
                "position": {
                  "basis": "80px"
                },
                "propConfig": {
                  "props.enabled": {
                    "binding": {
                      "config": {
                        "expression": "!isNull({view.params.query_params.destination_bucket})\r\n\u0026\u0026{view.params.query_params.destination_bucket}!\u003d\u0027\u0027"
                      },
                      "type": "expr"
                    }
                  }
                },
                "props": {
                  "image": {
                    "icon": {
                      "path": "material/clear"
                    }
                  },
                  "primary": false,
                  "style": {
                    "classes": "Input/Button/Secondary_minimal"
                  },
                  "text": ""
                },
                "type": "ia.input.button"
              }
            ],
            "meta": {
              "name": "Destination Bucket"
            },
            "position": {
              "basis": "335px",
              "shrink": 0
            },
            "props": {
              "style": {
                "overflow": "hidden"
              }
            },
            "type": "ia.container.flex"
          },
          {
            "children": [
              {
                "meta": {
                  "name": "Label"
                },
                "position": {
                  "basis": "125px",
                  "shrink": 0
                },
                "props": {
                  "style": {
                    "classes": "Framework/Card/Label",
                    "textAlign": "right"
                  },
                  "text": "Source Bucket"
                },
                "type": "ia.display.label"
              },
              {
                "meta": {
                  "name": "Dropdown"
                },
                "position": {
                  "basis": "175px",
                  "shrink": 0
                },
                "propConfig": {
                  "props.options": {
                    "binding": {
                      "config": {
                        "path": "view.custom.bucket_options"
                      },
                      "type": "property"
                    }
                  },
                  "props.value": {
                    "binding": {
                      "config": {
                        "bidirectional": true,
                        "path": "view.params.query_params.source_bucket"
                      },
                      "type": "property"
                    }
                  }
                },
                "props": {
                  "dropdownOptionStyle": {
                    "overflowWrap": "break-word",
                    "whiteSpace": "normal"
                  },
                  "showClearIcon": true
                },
                "type": "ia.input.dropdown"
              },
              {
                "events": {
                  "component": {
                    "onActionPerformed": {
                      "config": {
                        "script": "\tself.view.params.query_params.source_bucket \u003d None\n\t"
                      },
                      "scope": "G",
                      "type": "script"
                    }
                  }
                },
                "meta": {
                  "name": "Clear Button"
                },
                "position": {
                  "basis": "80px"
                },
                "propConfig": {
                  "props.enabled": {
                    "binding": {
                      "config": {
                        "expression": "!isNull({view.params.query_params.source_bucket})\r\n\u0026\u0026{view.params.query_params.source_bucket}!\u003d\u0027\u0027"
                      },
                      "type": "expr"
                    }
                  }
                },
                "props": {
                  "image": {
                    "icon": {
                      "path": "material/clear"
                    }
                  },
                  "primary": false,
                  "style": {
                    "classes": "Input/Button/Secondary_minimal"
                  },
                  "text": ""
                },
                "type": "ia.input.button"
              }
            ],
            "meta": {
              "name": "Source Bucket"
            },
            "position": {
              "basis": "335px",
              "shrink": 0
            },
            "props": {
              "style": {
                "overflow": "hidden"
              }
            },
            "type": "ia.container.flex"
          }
        ],
        "meta": {
          "name": "FlexContainer_1"
        },
        "position": {
          "shrink": 0
        },
        "props": {
          "justify": "center"
        },
        "type": "ia.container.flex"
      },
      {
        "children": [
          {
            "children": [
              {
                "meta": {
                  "name": "Label"
                },
                "position": {
                  "basis": "125px",
                  "shrink": 0
                },
                "props": {
                  "style": {
                    "classes": "Framework/Card/Label",
                    "textAlign": "right"
                  },
                  "text": "Dest. Site"
                },
                "type": "ia.display.label"
              },
              {
                "meta": {
                  "name": "Dropdown"
                },
                "position": {
                  "basis": "175px",
                  "shrink": 0
                },
                "propConfig": {
                  "props.enabled": {
                    "binding": {
                      "config": {
                        "expression": "!isNull({view.params.query_params.destination_bucket})\r\n\u0026\u0026len({view.params.query_params.destination_bucket})\u003e0"
                      },
                      "type": "expr"
                    }
                  },
                  "props.options": {
                    "binding": {
                      "config": {
                        "path": "view.custom.destination_whid_options"
                      },
                      "type": "property"
                    }
                  },
                  "props.value": {
                    "binding": {
                      "config": {
                        "bidirectional": true,
                        "path": "view.params.query_params.destination_site"
                      },
                      "type": "property"
                    }
                  }
                },
                "props": {
                  "dropdownOptionStyle": {
                    "overflowWrap": "break-word",
                    "whiteSpace": "normal"
                  },
                  "showClearIcon": true
                },
                "type": "ia.input.dropdown"
              },
              {
                "events": {
                  "component": {
                    "onActionPerformed": {
                      "config": {
                        "script": "\tself.view.params.query_params.destination_site \u003d None\n\t"
                      },
                      "scope": "G",
                      "type": "script"
                    }
                  }
                },
                "meta": {
                  "name": "Clear Button"
                },
                "position": {
                  "basis": "80px"
                },
                "propConfig": {
                  "props.enabled": {
                    "binding": {
                      "config": {
                        "expression": "!isNull({view.params.query_params.destination_site})\r\n\u0026\u0026{view.params.query_params.destination_site}!\u003d\u0027\u0027"
                      },
                      "type": "expr"
                    }
                  }
                },
                "props": {
                  "image": {
                    "icon": {
                      "path": "material/clear"
                    }
                  },
                  "primary": false,
                  "style": {
                    "classes": "Input/Button/Secondary_minimal"
                  },
                  "text": ""
                },
                "type": "ia.input.button"
              }
            ],
            "meta": {
              "name": "Destination Site"
            },
            "position": {
              "basis": "335px",
              "shrink": 0
            },
            "props": {
              "style": {
                "overflow": "hidden"
              }
            },
            "type": "ia.container.flex"
          },
          {
            "children": [
              {
                "meta": {
                  "name": "Label"
                },
                "position": {
                  "basis": "125px",
                  "shrink": 0
                },
                "props": {
                  "style": {
                    "classes": "Framework/Card/Label",
                    "textAlign": "right"
                  },
                  "text": "Source Site"
                },
                "type": "ia.display.label"
              },
              {
                "meta": {
                  "name": "Dropdown"
                },
                "position": {
                  "basis": "175px",
                  "shrink": 0
                },
                "propConfig": {
                  "props.enabled": {
                    "binding": {
                      "config": {
                        "expression": "!isNull({view.params.query_params.source_bucket})\r\n\u0026\u0026len({view.params.query_params.source_bucket})\u003e0"
                      },
                      "type": "expr"
                    }
                  },
                  "props.options": {
                    "binding": {
                      "config": {
                        "path": "view.custom.source_whid_options"
                      },
                      "type": "property"
                    }
                  },
                  "props.value": {
                    "binding": {
                      "config": {
                        "bidirectional": true,
                        "path": "view.params.query_params.source_site"
                      },
                      "type": "property"
                    }
                  }
                },
                "props": {
                  "dropdownOptionStyle": {
                    "overflowWrap": "break-word",
                    "whiteSpace": "normal"
                  },
                  "showClearIcon": true
                },
                "type": "ia.input.dropdown"
              },
              {
                "events": {
                  "component": {
                    "onActionPerformed": {
                      "config": {
                        "script": "\tself.view.params.query_params.source_site \u003d None\n\t"
                      },
                      "scope": "G",
                      "type": "script"
                    }
                  }
                },
                "meta": {
                  "name": "Clear Button"
                },
                "position": {
                  "basis": "80px"
                },
                "propConfig": {
                  "props.enabled": {
                    "binding": {
                      "config": {
                        "expression": "!isNull({view.params.query_params.source_site})\r\n\u0026\u0026{view.params.query_params.source_site}!\u003d\u0027\u0027"
                      },
                      "type": "expr"
                    }
                  }
                },
                "props": {
                  "image": {
                    "icon": {
                      "path": "material/clear"
                    }
                  },
                  "primary": false,
                  "style": {
                    "classes": "Input/Button/Secondary_minimal"
                  },
                  "text": ""
                },
                "type": "ia.input.button"
              }
            ],
            "meta": {
              "name": "Source Site"
            },
            "position": {
              "basis": "335px",
              "shrink": 0
            },
            "props": {
              "style": {
                "overflow": "hidden"
              }
            },
            "type": "ia.container.flex"
          }
        ],
        "meta": {
          "name": "FlexContainer_2"
        },
        "position": {
          "shrink": 0
        },
        "props": {
          "justify": "center"
        },
        "type": "ia.container.flex"
      },
      {
        "children": [
          {
            "children": [
              {
                "meta": {
                  "name": "Label"
                },
                "position": {
                  "basis": "125px",
                  "shrink": 0
                },
                "props": {
                  "style": {
                    "classes": "Framework/Card/Label",
                    "textAlign": "right"
                  },
                  "text": "Dest. View"
                },
                "type": "ia.display.label"
              },
              {
                "meta": {
                  "name": "Dropdown"
                },
                "position": {
                  "basis": "175px",
                  "shrink": 0
                },
                "propConfig": {
                  "position.display": {
                    "binding": {
                      "config": {
                        "expression": "len({view.custom.destination_view_options_by_site_and_bucket})\u003e0"
                      },
                      "type": "expr"
                    }
                  },
                  "props.enabled": {
                    "binding": {
                      "config": {
                        "expression": "!isNull({view.params.query_params.destination_bucket})\r\n\u0026\u0026len({view.params.query_params.destination_bucket})\u003e0\r\n\u0026\u0026!isNull({view.params.query_params.destination_site})\r\n\u0026\u0026len({view.params.query_params.destination_site})\u003e0"
                      },
                      "type": "expr"
                    }
                  },
                  "props.options": {
                    "binding": {
                      "config": {
                        "path": "view.custom.destination_view_options_by_site_and_bucket"
                      },
                      "type": "property"
                    }
                  },
                  "props.value": {
                    "binding": {
                      "config": {
                        "bidirectional": true,
                        "path": "view.params.query_params.destination_view"
                      },
                      "type": "property"
                    }
                  }
                },
                "props": {
                  "dropdownOptionStyle": {
                    "overflowWrap": "break-word",
                    "whiteSpace": "normal"
                  },
                  "showClearIcon": true
                },
                "type": "ia.input.dropdown"
              },
              {
                "meta": {
                  "name": "TextField"
                },
                "position": {
                  "basis": "175px",
                  "shrink": 0
                },
                "propConfig": {
                  "position.display": {
                    "binding": {
                      "config": {
                        "expression": "len({view.custom.destination_view_options_by_site_and_bucket})\u003d0"
                      },
                      "type": "expr"
                    }
                  },
                  "props.enabled": {
                    "binding": {
                      "config": {
                        "expression": "!isNull({view.params.query_params.destination_bucket})\r\n\u0026\u0026len({view.params.query_params.destination_bucket})\u003e0\r\n\u0026\u0026!isNull({view.params.query_params.destination_site})\r\n\u0026\u0026len({view.params.query_params.destination_site})\u003e0"
                      },
                      "type": "expr"
                    }
                  },
                  "props.text": {
                    "binding": {
                      "config": {
                        "bidirectional": true,
                        "path": "view.params.query_params.destination_view"
                      },
                      "type": "property"
                    }
                  }
                },
                "props": {
                  "placeholder": "Enter View..."
                },
                "type": "ia.input.text-field"
              },
              {
                "events": {
                  "component": {
                    "onActionPerformed": {
                      "config": {
                        "script": "\tself.view.params.query_params.destination_view \u003d \u0027\u0027\n\t"
                      },
                      "scope": "G",
                      "type": "script"
                    }
                  }
                },
                "meta": {
                  "name": "Clear Button"
                },
                "position": {
                  "basis": "80px"
                },
                "propConfig": {
                  "props.enabled": {
                    "binding": {
                      "config": {
                        "expression": "!isNull({view.params.query_params.destination_view})\r\n\u0026\u0026{view.params.query_params.destination_view}!\u003d\u0027\u0027"
                      },
                      "type": "expr"
                    }
                  }
                },
                "props": {
                  "image": {
                    "icon": {
                      "path": "material/clear"
                    }
                  },
                  "primary": false,
                  "style": {
                    "classes": "Input/Button/Secondary_minimal"
                  },
                  "text": ""
                },
                "type": "ia.input.button"
              }
            ],
            "meta": {
              "name": "Destination View"
            },
            "position": {
              "basis": "335px",
              "shrink": 0
            },
            "props": {
              "style": {
                "overflow": "hidden"
              }
            },
            "type": "ia.container.flex"
          },
          {
            "children": [
              {
                "meta": {
                  "name": "Label"
                },
                "position": {
                  "basis": "125px",
                  "shrink": 0
                },
                "props": {
                  "style": {
                    "classes": "Framework/Card/Label",
                    "textAlign": "right"
                  },
                  "text": "Source View"
                },
                "type": "ia.display.label"
              },
              {
                "meta": {
                  "name": "Dropdown"
                },
                "position": {
                  "basis": "175px",
                  "shrink": 0
                },
                "propConfig": {
                  "position.display": {
                    "binding": {
                      "config": {
                        "expression": "len({view.custom.source_view_options_by_site_and_bucket})\u003e0"
                      },
                      "type": "expr"
                    }
                  },
                  "props.enabled": {
                    "binding": {
                      "config": {
                        "expression": "!isNull({view.params.query_params.source_bucket})\r\n\u0026\u0026len({view.params.query_params.source_bucket})\u003e0\r\n\u0026\u0026!isNull({view.params.query_params.source_site})\r\n\u0026\u0026len({view.params.query_params.source_site})\u003e0"
                      },
                      "type": "expr"
                    }
                  },
                  "props.options": {
                    "binding": {
                      "config": {
                        "path": "view.custom.source_view_options_by_site_and_bucket"
                      },
                      "type": "property"
                    }
                  },
                  "props.value": {
                    "binding": {
                      "config": {
                        "bidirectional": true,
                        "path": "view.params.query_params.source_view"
                      },
                      "type": "property"
                    }
                  }
                },
                "props": {
                  "dropdownOptionStyle": {
                    "overflowWrap": "break-word",
                    "whiteSpace": "normal"
                  },
                  "multiSelect": true,
                  "showClearIcon": true
                },
                "type": "ia.input.dropdown"
              },
              {
                "meta": {
                  "name": "TextField"
                },
                "position": {
                  "basis": "175px",
                  "shrink": 0
                },
                "propConfig": {
                  "position.display": {
                    "binding": {
                      "config": {
                        "expression": "len({view.custom.source_view_options_by_site_and_bucket})\u003d0"
                      },
                      "type": "expr"
                    }
                  },
                  "props.enabled": {
                    "binding": {
                      "config": {
                        "expression": "!isNull({view.params.query_params.source_bucket})\r\n\u0026\u0026len({view.params.query_params.source_bucket})\u003e0\r\n\u0026\u0026!isNull({view.params.query_params.source_site})\r\n\u0026\u0026len({view.params.query_params.source_site})\u003e0"
                      },
                      "type": "expr"
                    }
                  },
                  "props.text": {
                    "binding": {
                      "config": {
                        "bidirectional": true,
                        "path": "view.params.query_params.source_view"
                      },
                      "type": "property"
                    }
                  }
                },
                "props": {
                  "placeholder": "Enter View..."
                },
                "type": "ia.input.text-field"
              },
              {
                "events": {
                  "component": {
                    "onActionPerformed": {
                      "config": {
                        "script": "\tself.view.params.query_params.source_view \u003d \u0027\u0027\n\t"
                      },
                      "scope": "G",
                      "type": "script"
                    }
                  }
                },
                "meta": {
                  "name": "Clear Button"
                },
                "position": {
                  "basis": "80px"
                },
                "propConfig": {
                  "props.enabled": {
                    "binding": {
                      "config": {
                        "expression": "!isNull({view.params.query_params.source_view})\r\n\u0026\u0026{view.params.query_params.source_view}!\u003d\u0027\u0027"
                      },
                      "type": "expr"
                    }
                  }
                },
                "props": {
                  "image": {
                    "icon": {
                      "path": "material/clear"
                    }
                  },
                  "primary": false,
                  "style": {
                    "classes": "Input/Button/Secondary_minimal"
                  },
                  "text": ""
                },
                "type": "ia.input.button"
              }
            ],
            "meta": {
              "name": "Source View"
            },
            "position": {
              "basis": "335px",
              "shrink": 0
            },
            "props": {
              "style": {
                "overflow": "hidden"
              }
            },
            "type": "ia.container.flex"
          }
        ],
        "meta": {
          "name": "FlexContainer_3"
        },
        "position": {
          "shrink": 0
        },
        "props": {
          "justify": "center"
        },
        "type": "ia.container.flex"
      },
      {
        "children": [
          {
            "children": [
              {
                "meta": {
                  "name": "Label"
                },
                "position": {
                  "basis": "125px",
                  "shrink": 0
                },
                "props": {
                  "style": {
                    "classes": "Framework/Card/Label",
                    "textAlign": "right"
                  },
                  "text": "Start Time"
                },
                "type": "ia.display.label"
              },
              {
                "meta": {
                  "name": "DateTimeInput"
                },
                "position": {
                  "basis": "175px",
                  "shrink": 0
                },
                "propConfig": {
                  "props.value": {
                    "binding": {
                      "config": {
                        "path": "view.params.query_params.start_time"
                      },
                      "transforms": [
                        {
                          "code": "\tif value:\n\t\ttry:\n\t\t\treturn system.date.parse(value, \u0027yyyy-MM-dd HH:mm:ss\u0027)\n\t\texcept:\n\t\t\treturn None\n\treturn value",
                          "type": "script"
                        }
                      ],
                      "type": "property"
                    },
                    "onChange": {
                      "enabled": null,
                      "script": "\tif not missedEvents and origin in (\u0027Browser\u0027,):\n\t\tif currentValue.value:\n\t\t\tdt \u003d currentValue.value\n\t\t\tdt_str \u003d system.date.format(dt, \u0027yyyy-MM-dd HH:mm:ss\u0027)\n\t\t\tself.view.params.query_params.start_time \u003d dt_str"
                    }
                  }
                },
                "props": {
                  "format": "YYYY-MM-DD HH:mm:ss",
                  "formattedValue": null,
                  "placeholder": "Select start time"
                },
                "type": "ia.input.date-time-input"
              },
              {
                "events": {
                  "component": {
                    "onActionPerformed": {
                      "config": {
                        "script": "\tself.view.params.query_params.start_time \u003d None\n\t"
                      },
                      "scope": "G",
                      "type": "script"
                    }
                  }
                },
                "meta": {
                  "name": "Clear Button"
                },
                "position": {
                  "basis": "80px"
                },
                "propConfig": {
                  "props.enabled": {
                    "binding": {
                      "config": {
                        "expression": "!isNull({view.params.query_params.start_time})\r\n\u0026\u0026{view.params.query_params.start_time}!\u003d\u0027\u0027"
                      },
                      "type": "expr"
                    }
                  }
                },
                "props": {
                  "image": {
                    "icon": {
                      "path": "material/clear"
                    }
                  },
                  "primary": false,
                  "style": {
                    "classes": "Input/Button/Secondary_minimal"
                  },
                  "text": ""
                },
                "type": "ia.input.button"
              }
            ],
            "meta": {
              "name": "Start Time"
            },
            "position": {
              "basis": "335px",
              "shrink": 0
            },
            "props": {
              "style": {
                "overflow": "hidden"
              }
            },
            "type": "ia.container.flex"
          },
          {
            "children": [
              {
                "meta": {
                  "name": "Label"
                },
                "position": {
                  "basis": "125px",
                  "shrink": 0
                },
                "props": {
                  "style": {
                    "classes": "Framework/Card/Label",
                    "textAlign": "right"
                  },
                  "text": "End Time"
                },
                "type": "ia.display.label"
              },
              {
                "meta": {
                  "name": "DateTimeInput"
                },
                "position": {
                  "basis": "175px",
                  "shrink": 0
                },
                "propConfig": {
                  "props.value": {
                    "binding": {
                      "config": {
                        "path": "view.params.query_params.end_time"
                      },
                      "transforms": [
                        {
                          "code": "\tif value:\n\t\ttry:\n\t\t\treturn system.date.parse(value, \u0027yyyy-MM-dd HH:mm:ss\u0027)\n\t\texcept:\n\t\t\treturn None\n\treturn value",
                          "type": "script"
                        }
                      ],
                      "type": "property"
                    },
                    "onChange": {
                      "enabled": null,
                      "script": "\tif not missedEvents and origin in (\u0027Browser\u0027,):\n\t\tif currentValue.value:\n\t\t\tdt \u003d currentValue.value\n\t\t\tdt_str \u003d system.date.format(dt, \u0027yyyy-MM-dd HH:mm:ss\u0027)\n\t\t\tself.view.params.query_params.end_time \u003d dt_str"
                    }
                  }
                },
                "props": {
                  "format": "YYYY-MM-DD HH:mm:ss",
                  "formattedValue": null,
                  "placeholder": "Select end time"
                },
                "type": "ia.input.date-time-input"
              },
              {
                "events": {
                  "component": {
                    "onActionPerformed": {
                      "config": {
                        "script": "\tself.view.params.query_params.end_time \u003d None\n\t"
                      },
                      "scope": "G",
                      "type": "script"
                    }
                  }
                },
                "meta": {
                  "name": "Clear Button"
                },
                "position": {
                  "basis": "80px"
                },
                "propConfig": {
                  "props.enabled": {
                    "binding": {
                      "config": {
                        "expression": "!isNull({view.params.query_params.end_time})\r\n\u0026\u0026{view.params.query_params.end_time}!\u003d\u0027\u0027"
                      },
                      "type": "expr"
                    }
                  }
                },
                "props": {
                  "image": {
                    "icon": {
                      "path": "material/clear"
                    }
                  },
                  "primary": false,
                  "style": {
                    "classes": "Input/Button/Secondary_minimal"
                  },
                  "text": ""
                },
                "type": "ia.input.button"
              }
            ],
            "meta": {
              "name": "End Time"
            },
            "position": {
              "basis": "335px",
              "shrink": 0
            },
            "props": {
              "style": {
                "overflow": "hidden"
              }
            },
            "type": "ia.container.flex"
          }
        ],
        "meta": {
          "name": "FlexContainer_4"
        },
        "position": {
          "shrink": 0
        },
        "props": {
          "justify": "center"
        },
        "type": "ia.container.flex"
      }
    ],
    "meta": {
      "name": "root"
    },
    "props": {
      "direction": "column"
    },
    "type": "ia.container.flex"
  }
}