{
  "custom": {
    "api_region_name": "eu",
    "api_stage": "prod",
    "enable_site_selection": true,
    "help_url": "https://w.amazon.com/bin/view/EURME/MAP/Projects/Amazon_SCADA/Expanding_BU_and_New_Regions_SCADA/AMZL/DeveloperGuide/#H7.1SCADAFileManagementUtility",
    "image_file_container_basis": "50%",
    "image_file_content_shown": true,
    "image_file_prefix": "SCADA//images/",
    "image_file_suffix": ".svg",
    "instances_file_prefix": "SCADA/EWR4/instance_configs/",
    "loading": false,
    "migrate_enabled": false,
    "selected_image": null,
    "selected_whid": "",
    "site_folder": "SCADA//",
    "site_image_list": [],
    "site_source_list": [],
    "source_file_container_basis": "50%",
    "source_file_content_shown": true,
    "source_file_prefix": "SCADA//source/",
    "source_file_suffix": ".drawio",
    "stage_config": {
      "account_id": "006306898152",
      "api_call_role": "arn:aws:iam::609617486056:role/RMESDScadaS3ManagementAPIcallRole-prod-eu-west-1",
      "endpoint": "https://eu-west-1.scada-s3-management.scada.eurme.amazon.dev/",
      "lambda_name": "RMESDScadaS3ManagementFlaskLambda-prod",
      "region": "eu-west-1",
      "repo_bucket": "ignition-image-repo",
      "s3_region": "eu-west-1",
      "source_bucket": "ignition-image-source"
    },
    "title_text": "S3 File Management",
    "upload_enabled": true,
    "user_roles": [
      "rme-ctrl-map-all",
      "rme-ctrl-all",
      "rme-grt-all",
      "na-rme-all",
      "watrmecomms-l4-l8-bb-all",
      "eurme-ignition-developers",
      "eurme-ignition-admins",
      "eurme-ignition-managers",
      "eurme-ignition-users",
      "maplab-rme-all",
      "eurme-ignition-ae-india"
    ],
    "whid": ""
  },
  "events": {
    "system": {
      "onStartup": {
        "config": {
          "script": "\tselected_image \u003d self.params.selected_image\n\tself.custom.selected_image \u003d selected_image\n\tselected_site \u003d self.params.selected_site\n\tif not selected_site:\n\t\tselected_site \u003d self.custom.whid\n\tself.custom.selected_whid \u003d selected_site"
        },
        "scope": "G",
        "type": "script"
      }
    }
  },
  "params": {
    "selected_image": null,
    "selected_site": null
  },
  "propConfig": {
    "custom.api_region_name": {
      "binding": {
        "config": {
          "path": "session.custom.aws.prefix"
        },
        "type": "property"
      },
      "persistent": true
    },
    "custom.api_stage": {
      "persistent": true
    },
    "custom.enable_site_selection": {
      "binding": {
        "config": {
          "expression": "isAuthorized(false, \u0027Authenticated/Roles/eurme-ignition-developers\u0027)"
        },
        "type": "expr"
      },
      "persistent": true
    },
    "custom.help_url": {
      "persistent": true
    },
    "custom.image_file_container_basis": {
      "binding": {
        "config": {
          "expression": "if(!{view.custom.image_file_content_shown},\u0027auto\u0027,\r\n\tif({view.custom.source_file_content_shown},\u002750%\u0027,\u0027100%\u0027))"
        },
        "type": "expr"
      },
      "persistent": true
    },
    "custom.image_file_content_shown": {
      "binding": {
        "config": {
          "path": "/root/FlexContainer File Configs/Image File Config.props.params.content_shown"
        },
        "type": "property"
      },
      "persistent": true
    },
    "custom.image_file_prefix": {
      "binding": {
        "config": {
          "expression": "{view.custom.site_folder}+\u0027images/\u0027"
        },
        "type": "expr"
      },
      "persistent": true
    },
    "custom.image_file_suffix": {
      "persistent": true
    },
    "custom.loading": {
      "persistent": true
    },
    "custom.migrate_enabled": {
      "binding": {
        "config": {
          "expression": "{view.custom.flow_view_edit_mode.reviewer_enabled}\r\n\u0026\u0026!isNull({view.custom.stage_source})\r\n\u0026\u0026len({view.custom.stage_source})\r\n\u0026\u0026!isNull({view.custom.stage_destination})\r\n\u0026\u0026len({view.custom.stage_destination})"
        },
        "type": "expr"
      },
      "persistent": true
    },
    "custom.selected_image": {
      "persistent": true
    },
    "custom.selected_whid": {
      "onChange": {
        "enabled": null,
        "script": "\t# DEVNOTE: During peer review, noticed that when files are selected and then \n\t# the whid is changed, that a loop of file updates can be triggered\n\t# therefore, clear the \"selected_image\" custom prop on whid change\n\tself.custom.selected_image \u003d None\n\t"
      },
      "persistent": true
    },
    "custom.site_folder": {
      "binding": {
        "config": {
          "expression": "stringFormat(\u0027SCADA/%s/\u0027, {view.custom.selected_whid})"
        },
        "type": "expr"
      },
      "persistent": true
    },
    "custom.site_image_list": {
      "binding": {
        "config": {
          "path": "view.custom.selected_whid"
        },
        "transforms": [
          {
            "code": "\tif not value:\n\t\treturn []\n\tfrom AWS.s3 import S3Manager\n\t\n\tusername \u003d self.session.props.auth.user.userName\n\tapi_region_name \u003d self.custom.api_region_name\n\t\n\ts3m \u003d S3Manager(api_region_name\u003dapi_region_name, username\u003dusername)\n\t\n\tsite \u003d value\n\tbucket \u003d self.custom.stage_config.repo_bucket\n\t\n\treturn s3m.fetch_object_list_by_site_and_bucket(site, bucket)",
            "type": "script"
          }
        ],
        "type": "property"
      },
      "persistent": true
    },
    "custom.site_source_list": {
      "binding": {
        "config": {
          "path": "view.custom.selected_whid"
        },
        "transforms": [
          {
            "code": "\tif not value:\n\t\treturn []\n\tfrom AWS.s3 import S3Manager\n\t\n\tusername \u003d self.session.props.auth.user.userName\n\tapi_region_name \u003d self.custom.api_region_name\n\t\n\ts3m \u003d S3Manager(api_region_name\u003dapi_region_name, username\u003dusername)\n\t\n\tsite \u003d value\n\tbucket \u003d self.custom.stage_config.source_bucket\n\t\n\treturn s3m.fetch_object_list_by_site_and_bucket(site, bucket)",
            "type": "script"
          }
        ],
        "type": "property"
      },
      "persistent": true
    },
    "custom.source_file_container_basis": {
      "binding": {
        "config": {
          "expression": "if(!{view.custom.source_file_content_shown},\u0027auto\u0027,\r\n\tif({view.custom.image_file_content_shown},\u002750%\u0027,\u0027100%\u0027))"
        },
        "type": "expr"
      },
      "persistent": true
    },
    "custom.source_file_content_shown": {
      "binding": {
        "config": {
          "path": "/root/FlexContainer File Configs/Source File Config.props.params.content_shown"
        },
        "type": "property"
      },
      "persistent": true
    },
    "custom.source_file_prefix": {
      "binding": {
        "config": {
          "expression": "{view.custom.site_folder}+\u0027source/\u0027"
        },
        "type": "expr"
      },
      "persistent": true
    },
    "custom.source_file_suffix": {
      "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
    },
    "custom.title_text": {
      "persistent": true
    },
    "custom.upload_enabled": {
      "persistent": true
    },
    "custom.user_roles": {
      "binding": {
        "config": {
          "path": "session.props.auth.user.roles"
        },
        "type": "property"
      },
      "persistent": true
    },
    "custom.whid": {
      "binding": {
        "config": {
          "path": "session.custom.fc"
        },
        "type": "property"
      },
      "persistent": true
    },
    "params.selected_image": {
      "paramDirection": "input",
      "persistent": true
    },
    "params.selected_site": {
      "paramDirection": "input",
      "persistent": true
    }
  },
  "props": {
    "defaultSize": {
      "height": 825,
      "width": 1200
    }
  },
  "root": {
    "children": [
      {
        "children": [
          {
            "meta": {
              "name": "Header"
            },
            "position": {
              "grow": 1
            },
            "props": {
              "style": {
                "opacity": "0.73",
                "overflow": "auto",
                "textShadow": "#AAAAAA 1px 2px 2px"
              },
              "text": "S3 SCADA File Management",
              "textStyle": {
                "fontSize": 30,
                "textAlign": "center"
              }
            },
            "type": "ia.display.label"
          },
          {
            "children": [
              {
                "events": {
                  "dom": {
                    "onClick": {
                      "config": {
                        "newTab": true,
                        "url": "{view.custom.help_url}"
                      },
                      "scope": "C",
                      "type": "nav"
                    }
                  }
                },
                "meta": {
                  "name": "Icon",
                  "tooltip": {
                    "enabled": true,
                    "text": "View documentation for this tool"
                  }
                },
                "position": {
                  "basis": "30px"
                },
                "props": {
                  "path": "material/help_outline",
                  "style": {
                    "cursor": "pointer"
                  }
                },
                "type": "ia.display.icon"
              }
            ],
            "meta": {
              "name": "FlexContainer"
            },
            "position": {
              "basis": "30px",
              "shrink": 0
            },
            "props": {
              "direction": "column"
            },
            "type": "ia.container.flex"
          }
        ],
        "meta": {
          "name": "Header"
        },
        "position": {
          "basis": "75px",
          "shrink": 0
        },
        "props": {
          "justify": "center",
          "style": {
            "classes": "Framework/Card/Title_transparent",
            "textTransform": "capitalize"
          }
        },
        "type": "ia.container.flex"
      },
      {
        "children": [
          {
            "meta": {
              "name": "Folder Config"
            },
            "position": {
              "basis": "50%",
              "grow": 1
            },
            "propConfig": {
              "props.params.params.enables.site": {
                "binding": {
                  "config": {
                    "path": "view.custom.enable_site_selection"
                  },
                  "type": "property"
                }
              },
              "props.params.params.image_count": {
                "binding": {
                  "config": {
                    "expression": "try(len({view.custom.site_image_list}),0)"
                  },
                  "type": "expr"
                }
              },
              "props.params.params.selected_whid": {
                "binding": {
                  "config": {
                    "path": "view.custom.selected_whid"
                  },
                  "type": "property"
                }
              },
              "props.params.params.source_count": {
                "binding": {
                  "config": {
                    "expression": "try(len({view.custom.site_source_list}),0)"
                  },
                  "type": "expr"
                }
              }
            },
            "props": {
              "params": {
                "open_expanded": true,
                "params": {
                  "enables": {}
                },
                "path": "Objects/Templates/S3/Management/manage",
                "show_box_shadow_on_expanded": true,
                "title": "Bucket Configuration",
                "useDefaultHeight": false,
                "useDefaultWidth": false
              },
              "path": "Framework/Card/Card_Collapsible_Transparent"
            },
            "type": "ia.display.view"
          },
          {
            "meta": {
              "name": "Site Config"
            },
            "position": {
              "basis": "50%",
              "grow": 1
            },
            "propConfig": {
              "props.params.params.enables.site": {
                "binding": {
                  "config": {
                    "path": "view.custom.enable_site_selection"
                  },
                  "type": "property"
                }
              },
              "props.params.params.image_count": {
                "binding": {
                  "config": {
                    "expression": "try(len({view.custom.site_image_list}),0)"
                  },
                  "type": "expr"
                }
              },
              "props.params.params.selected_whid": {
                "binding": {
                  "config": {
                    "path": "view.custom.selected_whid"
                  },
                  "type": "property"
                }
              },
              "props.params.params.source_count": {
                "binding": {
                  "config": {
                    "expression": "try(len({view.custom.site_source_list}),0)"
                  },
                  "type": "expr"
                }
              }
            },
            "props": {
              "params": {
                "open_expanded": true,
                "params": {
                  "enables": {}
                },
                "path": "Objects/Templates/S3/Management/site",
                "show_box_shadow_on_expanded": true,
                "title": "Site Configuration",
                "useDefaultHeight": false,
                "useDefaultWidth": false
              },
              "path": "Framework/Card/Card_Collapsible_Transparent"
            },
            "type": "ia.display.view"
          }
        ],
        "meta": {
          "name": "FlexContainer Site"
        },
        "position": {
          "shrink": 0
        },
        "type": "ia.container.flex"
      },
      {
        "children": [
          {
            "meta": {
              "name": "Image File Config"
            },
            "position": {
              "grow": 1
            },
            "propConfig": {
              "position.basis": {
                "binding": {
                  "config": {
                    "path": "view.custom.image_file_container_basis"
                  },
                  "type": "property"
                }
              },
              "props.params.params.bucket": {
                "binding": {
                  "config": {
                    "path": "view.custom.stage_config.repo_bucket"
                  },
                  "type": "property"
                }
              },
              "props.params.params.enables.delete": {
                "binding": {
                  "config": {
                    "path": "view.custom.upload_enabled"
                  },
                  "type": "property"
                }
              },
              "props.params.params.enables.upload": {
                "binding": {
                  "config": {
                    "path": "view.custom.upload_enabled"
                  },
                  "type": "property"
                }
              },
              "props.params.params.files": {
                "binding": {
                  "config": {
                    "path": "view.custom.site_image_list"
                  },
                  "type": "property"
                }
              },
              "props.params.params.prefix": {
                "binding": {
                  "config": {
                    "path": "view.custom.image_file_prefix"
                  },
                  "type": "property"
                }
              },
              "props.params.params.selected_file": {
                "binding": {
                  "config": {
                    "path": "view.custom.selected_image"
                  },
                  "type": "property"
                }
              },
              "props.params.params.suffix": {
                "binding": {
                  "config": {
                    "path": "view.custom.image_file_suffix"
                  },
                  "type": "property"
                }
              },
              "props.params.params.whid": {
                "binding": {
                  "config": {
                    "path": "view.custom.selected_whid"
                  },
                  "type": "property"
                }
              }
            },
            "props": {
              "params": {
                "anchor_position": "left",
                "content_shown": true,
                "open_expanded": true,
                "params": {
                  "enables": {
                    "download": true,
                    "file": true,
                    "object_key": false
                  },
                  "upload_file_types": [
                    "svg"
                  ]
                },
                "path": "Objects/Templates/S3/Management/file",
                "show_box_shadow_on_expanded": true,
                "title": "Image SVG Files",
                "useDefaultHeight": false,
                "useDefaultWidth": false
              },
              "path": "Framework/Card/Card_Collapsible_Transparent_with_Anchor",
              "style": {
                "overflow": "auto"
              }
            },
            "type": "ia.display.view"
          },
          {
            "meta": {
              "name": "Source File Config"
            },
            "position": {
              "grow": 1
            },
            "propConfig": {
              "position.basis": {
                "binding": {
                  "config": {
                    "path": "view.custom.source_file_container_basis"
                  },
                  "type": "property"
                }
              },
              "props.params.params.bucket": {
                "binding": {
                  "config": {
                    "path": "view.custom.stage_config.source_bucket"
                  },
                  "type": "property"
                }
              },
              "props.params.params.enables.delete": {
                "binding": {
                  "config": {
                    "path": "view.custom.upload_enabled"
                  },
                  "type": "property"
                }
              },
              "props.params.params.enables.upload": {
                "binding": {
                  "config": {
                    "path": "view.custom.upload_enabled"
                  },
                  "type": "property"
                }
              },
              "props.params.params.files": {
                "binding": {
                  "config": {
                    "path": "view.custom.site_source_list"
                  },
                  "type": "property"
                }
              },
              "props.params.params.prefix": {
                "binding": {
                  "config": {
                    "path": "view.custom.source_file_prefix"
                  },
                  "type": "property"
                }
              },
              "props.params.params.selected_file": {
                "binding": {
                  "config": {
                    "path": "view.custom.selected_image"
                  },
                  "type": "property"
                }
              },
              "props.params.params.suffix": {
                "binding": {
                  "config": {
                    "path": "view.custom.source_file_suffix"
                  },
                  "type": "property"
                }
              },
              "props.params.params.whid": {
                "binding": {
                  "config": {
                    "path": "view.custom.selected_whid"
                  },
                  "type": "property"
                }
              }
            },
            "props": {
              "params": {
                "anchor_position": "right",
                "content_shown": true,
                "open_expanded": true,
                "params": {
                  "enables": {
                    "download": true,
                    "file": true,
                    "object_key": false
                  },
                  "upload_file_types": [
                    "drawio"
                  ]
                },
                "path": "Objects/Templates/S3/Management/file",
                "show_box_shadow_on_expanded": true,
                "title": "Source DRAWIO Files",
                "useDefaultHeight": false,
                "useDefaultWidth": false
              },
              "path": "Framework/Card/Card_Collapsible_Transparent_with_Anchor",
              "style": {
                "overflow": "auto"
              }
            },
            "type": "ia.display.view"
          }
        ],
        "meta": {
          "name": "FlexContainer File Configs"
        },
        "position": {
          "shrink": 0
        },
        "props": {
          "justify": "space-between"
        },
        "type": "ia.container.flex"
      },
      {
        "children": [
          {
            "children": [
              {
                "events": {
                  "component": {
                    "onActionPerformed": {
                      "config": {
                        "newTab": true,
                        "url": "{view.custom.help_url}"
                      },
                      "scope": "C",
                      "type": "nav"
                    }
                  }
                },
                "meta": {
                  "name": "Button Documentation",
                  "tooltip": {
                    "enabled": true,
                    "location": "bottom",
                    "text": "View online documentation for this utility"
                  }
                },
                "props": {
                  "image": {
                    "icon": {
                      "path": "material/info"
                    }
                  },
                  "primary": false,
                  "style": {
                    "margin": "4px",
                    "padding": "4px"
                  },
                  "text": "Documentation"
                },
                "type": "ia.input.button"
              },
              {
                "events": {
                  "component": {
                    "onActionPerformed": {
                      "config": {
                        "script": "\tsite \u003d self.view.params.selected_site\n\tnull \u003d None\n\tquery_params \u003d {\n\t\t\"copy_option\": null,\n\t\t\"destination_view\": null,\n\t\t\"destination_site\": site,\n\t\t\"destination_bucket\": null,\n\t\t\"end_time\": null,\n\t\t\"error_occurred\": null,\n\t\t\"operation\": null,\n\t\t\"source_view\": null,\n\t\t\"source_site\": null,\n\t\t\"source_bucket\": null,\n\t\t\"start_time\": null,\n\t\t\"username\": self.session.props.auth.user.userName\n\t}\n\t# Open audit log viewer\n\tview_path \u003d \u0027PopUp-Views/S3/Audit/Log_Viewer\u0027\n\tparams \u003d {\u0027query_params\u0027: query_params}\n\tsystem.perspective.openPopup(\u0027Audit Log Viewer\u0027, view_path, \n\t\t\t\t\t\t\t\tparams, \u0027SCADA Audit Logs\u0027)\n\t"
                      },
                      "scope": "G",
                      "type": "script"
                    }
                  }
                },
                "meta": {
                  "name": "Button Audit Log",
                  "tooltip": {
                    "enabled": true,
                    "location": "bottom",
                    "text": "View SCADA S3 audit logs for current user and site"
                  }
                },
                "props": {
                  "image": {
                    "icon": {
                      "path": "material/table_view"
                    }
                  },
                  "primary": false,
                  "style": {
                    "margin": "4px",
                    "padding": "4px"
                  },
                  "text": "Audit Logs"
                },
                "type": "ia.input.button"
              },
              {
                "events": {
                  "component": {
                    "onActionPerformed": {
                      "config": {
                        "script": "\t# build out the object key from repo bucket, site, selected view, and suffix\n\tbucket \u003d self.view.custom.stage_config.repo_bucket\n\tsite \u003d self.view.params.selected_site\n\tprefix \u003d self.view.custom.source_file_prefix\n\tview \u003d self.view.params.selected_image\n\tsuffix \u003d self.view.custom.image_file_suffix\n\tobj_key \u003d \u0027%s%s%s\u0027 % (prefix, view, suffix)\n\t# build out query params from local variables\n\tquery_params \u003d {\n\t\t\"view\": view,\n\t\t\"object_key\": obj_key,\n\t\t\"site\": site,\n\t\t\"bucket\": bucket\n\t}\n\t# Open version history log viewer\n\tview_path \u003d \u0027PopUp-Views/S3/Versions/Log_Viewer\u0027\n\tparams \u003d {\u0027query_params\u0027: query_params}\n\tsystem.perspective.openPopup(\u0027Version Log Viewer\u0027, view_path, \n\t\t\t\t\t\t\t\tparams, \u0027SCADA S3 Version History Log Viewer\u0027)\n\t\t\t"
                      },
                      "scope": "G",
                      "type": "script"
                    }
                  }
                },
                "meta": {
                  "name": "Button Version History",
                  "tooltip": {
                    "enabled": true,
                    "location": "bottom",
                    "text": "View SCADA S3 version history for currently selected file"
                  }
                },
                "props": {
                  "image": {
                    "icon": {
                      "path": "material/history"
                    }
                  },
                  "primary": false,
                  "style": {
                    "margin": "4px",
                    "padding": "4px"
                  },
                  "text": "Version History"
                },
                "type": "ia.input.button"
              }
            ],
            "meta": {
              "name": "FlexContainer Buttons"
            },
            "position": {
              "basis": "50px",
              "shrink": 0
            },
            "props": {
              "justify": "flex-end"
            },
            "type": "ia.container.flex"
          }
        ],
        "meta": {
          "name": "FlexContainer"
        },
        "position": {
          "basis": "50px",
          "grow": 1,
          "shrink": 0
        },
        "props": {
          "direction": "column",
          "justify": "flex-end"
        },
        "type": "ia.container.flex"
      }
    ],
    "meta": {
      "name": "root"
    },
    "props": {
      "direction": "column"
    },
    "scripts": {
      "customMethods": [
        {
          "name": "show_confirm_dialog",
          "params": [],
          "script": "\t# ~~ 12 PARAMETERS ~~\n\t\t# state\t\t\t\t\t(default \u003d info) empty string uses generic gray styling\n\t\t# title \t\t\t\t(default \u003d Alert Title) empty string sets the title visibility to false\n\t\t# message \t\t\t\t(default \u003d Alert message goes here.)\n\t\t# show close button\t\t(default \u003d true) boolean\n\t\t# btn text primary\t\t(default \u003d \"Primary\")\n\t\t# btn text secondary\t(default \u003d \"Secondary\")\n\t\t# btn icon primary \t\t(default \u003d chevron_right) do not include \u0027material/\u0027 in the path, just the icon name\n\t\t# btn icon secondary \t(default \u003d \"\") do not include \u0027material/\u0027 in the path, just the icon name\n\t\t# btn icon alignment\t(default \u003d \"right\") left or right\n\t\t# btn primary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t\t# btn secondary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t\t# btn close action\t\t(default \u003d \"\") add message handlers on this icon to enable other script actions\n\t\n\t\tmsg \u003d \"Update Instance Configuration for MP%s?\" % (self.view.params.instance.viewParams.mhe_id)\n\t\tAlerts.showAlert(\n\t\t\t\"info\", \n\t\t\t\"Update Instance Config?\", \n\t\t\tmsg, \n\t\t\t\"true\",\n\t\t\t\"Continue\", \n\t\t\t\"Cancel\", \n\t\t\t\"chevron_right\", \n\t\t\t\"\", \n\t\t\t\"right\", \n\t\t\t\"confirm_update_instance_config\", \n\t\t\t\"closePopup\", \n\t\t\t\"closePopup\"\n\t\t)\n\t\t"
        },
        {
          "name": "show_success_dialog",
          "params": [
            "msg\u003dNone"
          ],
          "script": "\t# ~~ 13 PARAMETERS ~~\n\t# state\t\t\t\t\t(default \u003d info) empty string uses generic gray styling\n\t# title \t\t\t\t(default \u003d Alert Title) empty string sets the title visibility to false\n\t# message \t\t\t\t(default \u003d Alert message goes here.)\n\t# show close button\t\t(default \u003d true) boolean\n\t# btn text primary\t\t(default \u003d \"Primary\")\n\t# btn text secondary\t(default \u003d \"Secondary\")\n\t# btn icon primary \t\t(default \u003d chevron_right) do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon secondary \t(default \u003d \"\") do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon alignment\t(default \u003d \"right\") left or right\n\t# btn primary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn secondary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn close action\t\t(default \u003d \"\") add message handlers on this icon to enable other script actions\n\t# payload\t\t\t\t(default \u003d {}) add a payload here to return to the target message handler\n\t\n\tAlerts.showAlert(\n\t\t\"success\", \n\t\t\"Instance Updated\", \n\t\tmsg, \n\t\t\"true\",\n\t\t\"OK\", \n\t\t\"CLOSE\", \n\t\t\"\", \n\t\t\"\", \n\t\t\"right\", \n\t\t\"closePopup\", \n\t\t\"closePopup\", \n\t\t\"closePopup\",\n\t\t{}\n\t)\n\t\t"
        },
        {
          "name": "show_warning_dialog",
          "params": [
            "msg\u003dNone"
          ],
          "script": "\t# ~~ 12 PARAMETERS ~~\n\t# state\t\t\t\t\t(default \u003d info) empty string uses generic gray styling\n\t# title \t\t\t\t(default \u003d Alert Title) empty string sets the title visibility to false\n\t# message \t\t\t\t(default \u003d Alert message goes here.)\n\t# show close button\t\t(default \u003d true) boolean\n\t# btn text primary\t\t(default \u003d \"Primary\")\n\t# btn text secondary\t(default \u003d \"Secondary\")\n\t# btn icon primary \t\t(default \u003d chevron_right) do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon secondary \t(default \u003d \"\") do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon alignment\t(default \u003d \"right\") left or right\n\t# btn primary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn secondary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn close action\t\t(default \u003d \"\") add message handlers on this icon to enable other script actions\n\n\tAlerts.showAlert(\n\t\t\"warning\", \n\t\t\"Instance Not Updated\", \n\t\tmsg, \n\t\t\"true\",\n\t\t\"OK\", \n\t\t\"CLOSE\", \n\t\t\"\", \n\t\t\"\", \n\t\t\"right\", \n\t\t\"closePopup\", \n\t\t\"closePopup\", \n\t\t\"closePopup\"\n\t)\n\t\t"
        },
        {
          "name": "show_error_dialog",
          "params": [
            "msg\u003dNone"
          ],
          "script": "\t# ~~ 12 PARAMETERS ~~\n\t# state\t\t\t\t\t(default \u003d info) empty string uses generic gray styling\n\t# title \t\t\t\t(default \u003d Alert Title) empty string sets the title visibility to false\n\t# message \t\t\t\t(default \u003d Alert message goes here.)\n\t# show close button\t\t(default \u003d true) boolean\n\t# btn text primary\t\t(default \u003d \"Primary\")\n\t# btn text secondary\t(default \u003d \"Secondary\")\n\t# btn icon primary \t\t(default \u003d chevron_right) do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon secondary \t(default \u003d \"\") do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon alignment\t(default \u003d \"right\") left or right\n\t# btn primary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn secondary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn close action\t\t(default \u003d \"\") add message handlers on this icon to enable other script actions\n\n\tAlerts.showAlert(\n\t\t\"error\", \n\t\t\"Instance Update Error!\", \n\t\tmsg, \n\t\t\"true\",\n\t\t\"OK\", \n\t\t\"CLOSE\", \n\t\t\"\", \n\t\t\"\", \n\t\t\"right\", \n\t\t\"closePopup\", \n\t\t\"closePopup\", \n\t\t\"closePopup\"\n\t)\n\t\t"
        },
        {
          "name": "update_bindings",
          "params": [],
          "script": "\tself.view.custom.loading \u003d False\n\t\t"
        }
      ],
      "extensionFunctions": null,
      "messageHandlers": [
        {
          "messageType": "update_selected_whid",
          "pageScope": false,
          "script": "\t# implement your handler here\n\tself.view.custom.selected_whid \u003d payload.get(\u0027whid\u0027, None)\n",
          "sessionScope": true,
          "viewScope": true
        },
        {
          "messageType": "update_selected_image",
          "pageScope": false,
          "script": "\t# implement your handler here\n\tself.view.custom.selected_image \u003d payload.get(\u0027image\u0027, None)\n\t",
          "sessionScope": true,
          "viewScope": true
        },
        {
          "messageType": "update_file_binding",
          "pageScope": false,
          "script": "\t# update the appropriate binding to fetch an updated dataset of S3 objects,\n\t# depending upon which bucket was updated\n\tbucket \u003d payload.get(\u0027bucket\u0027, None)\n\tif bucket \u003d\u003d self.view.custom.stage_config.repo_bucket:\n\t\tself.view.refreshBinding(\u0027custom.site_image_list\u0027)\n\tif bucket \u003d\u003d self.view.custom.stage_config.source_bucket:\n\t\tself.view.refreshBinding(\u0027custom.site_source_list\u0027)",
          "sessionScope": true,
          "viewScope": false
        }
      ]
    },
    "type": "ia.container.flex"
  }
}