SAT9/.resources/305f65f7f346d9c6d9e49f4513e9eee84140ec1b6e66fbfb3a9afc2a8304b103
2025-04-18 19:44:27 +04:00

2552 lines
90 KiB
Plaintext

{
"custom": {
"bucket": "maps.c4.rme.logistics.a2z.com-441697794360",
"current_flow_view": "AFE 1 MINISORTER",
"current_stage": "prod",
"enabled_whids": [
"ABQ1",
"AGS1",
"AMA1",
"AUS2",
"BDL4",
"BOS3",
"DEN4",
"DEN8",
"DET3",
"DET6",
"ELP1",
"FAR1",
"FAT2",
"FOE1",
"FSD1",
"FTW5",
"FWA6",
"GEG2",
"HOU6",
"HOU8",
"HSV1",
"ICT2",
"IGQ1",
"IGQ2",
"ILG1",
"LFT1",
"LIT1",
"LIT2",
"LUK2",
"MLI1",
"MQY1",
"MTN1",
"OKC2",
"ORD5",
"ORF3",
"PAE2",
"RIC4",
"ROC1",
"SAN3",
"SAT3",
"SAT4",
"SAV4",
"SCK6",
"SMF6",
"STL3",
"SYR1",
"TEB4",
"TLH2",
"TPA4",
"TYS1",
"YEG2",
"YOO1",
"YOW3"
],
"flow_view": "AFE 1 MINISORTER",
"flow_view_copy_operation": null,
"flow_view_copy_option": "both",
"flow_view_copy_tooltip": "",
"flow_view_destination": "AFE 1 MINISORTER",
"flow_view_destination_options": [
{
"label": "AFE 1 MINISORTER",
"value": "AFE 1 MINISORTER"
},
{
"label": "AFE TRAY SORTERS",
"value": "AFE TRAY SORTERS"
},
{
"label": "AR FIELD",
"value": "AR FIELD"
},
{
"label": "EMPTY TOTE LANES",
"value": "EMPTY TOTE LANES"
},
{
"label": "INBOUND SORTER",
"value": "INBOUND SORTER"
},
{
"label": "OUTBOUND",
"value": "OUTBOUND"
},
{
"label": "PACK",
"value": "PACK"
},
{
"label": "RSP LEVEL 2",
"value": "RSP LEVEL 2"
},
{
"label": "RSP LEVEL 3",
"value": "RSP LEVEL 3"
},
{
"label": "RSP LEVEL 4",
"value": "RSP LEVEL 4"
},
{
"label": "RSP LEVEL 5",
"value": "RSP LEVEL 5"
},
{
"label": "SHIP SORTER",
"value": "SHIP SORTER"
},
{
"label": "SMARTPAC",
"value": "SMARTPAC"
},
{
"label": "TOTE SORTER",
"value": "TOTE SORTER"
},
{
"label": "TRANSHIP SORTER",
"value": "TRANSHIP SORTER"
},
{
"label": "WASTE",
"value": "WASTE"
}
],
"flow_view_edit_mode": {
"active": false,
"admin_enabled": true,
"enabled": true,
"reviewer_enabled": true,
"sadmin_enabled": false
},
"flow_view_file_suffix": "_FlowView.svg",
"flow_view_options": [
{
"label": "AFE 1 MINISORTER",
"value": "AFE 1 MINISORTER"
},
{
"label": "AFE TRAY SORTERS",
"value": "AFE TRAY SORTERS"
},
{
"label": "AR FIELD",
"value": "AR FIELD"
},
{
"label": "EMPTY TOTE LANES",
"value": "EMPTY TOTE LANES"
},
{
"label": "INBOUND SORTER",
"value": "INBOUND SORTER"
},
{
"label": "OUTBOUND",
"value": "OUTBOUND"
},
{
"label": "PACK",
"value": "PACK"
},
{
"label": "RSP LEVEL 2",
"value": "RSP LEVEL 2"
},
{
"label": "RSP LEVEL 3",
"value": "RSP LEVEL 3"
},
{
"label": "RSP LEVEL 4",
"value": "RSP LEVEL 4"
},
{
"label": "RSP LEVEL 5",
"value": "RSP LEVEL 5"
},
{
"label": "SHIP SORTER",
"value": "SHIP SORTER"
},
{
"label": "SMARTPAC",
"value": "SMARTPAC"
},
{
"label": "TOTE SORTER",
"value": "TOTE SORTER"
},
{
"label": "TRANSHIP SORTER",
"value": "TRANSHIP SORTER"
},
{
"label": "WASTE",
"value": "WASTE"
}
],
"flow_view_source": "AFE 1 MINISORTER",
"flow_view_source_options": [
{
"label": "AFE 1 MINISORTER",
"value": "AFE 1 MINISORTER"
},
{
"label": "AFE TRAY SORTERS",
"value": "AFE TRAY SORTERS"
},
{
"label": "AR FIELD",
"value": "AR FIELD"
},
{
"label": "EMPTY TOTE LANES",
"value": "EMPTY TOTE LANES"
},
{
"label": "INBOUND SORTER",
"value": "INBOUND SORTER"
},
{
"label": "OUTBOUND",
"value": "OUTBOUND"
},
{
"label": "PACK",
"value": "PACK"
},
{
"label": "RSP LEVEL 2",
"value": "RSP LEVEL 2"
},
{
"label": "RSP LEVEL 3",
"value": "RSP LEVEL 3"
},
{
"label": "RSP LEVEL 4",
"value": "RSP LEVEL 4"
},
{
"label": "RSP LEVEL 5",
"value": "RSP LEVEL 5"
},
{
"label": "SHIP SORTER",
"value": "SHIP SORTER"
},
{
"label": "SMARTPAC",
"value": "SMARTPAC"
},
{
"label": "TOTE SORTER",
"value": "TOTE SORTER"
},
{
"label": "TRANSHIP SORTER",
"value": "TRANSHIP SORTER"
},
{
"label": "WASTE",
"value": "WASTE"
}
],
"instances_file_prefix": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/",
"instances_file_suffix": ".json",
"instances_files": [
{
"ETag": "\"d5ab88e5aac79f0270c4df38fc76211b\"",
"Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/AFE 1 MINISORTER.json",
"LastModified": "2023-07-06 19:13:31",
"Size": 169491,
"StorageClass": "STANDARD"
},
{
"ETag": "\"2d52b3ac56baf2c347b3cc5a83b3ba41\"",
"Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/AFE TRAY SORTERS.json",
"LastModified": "2023-07-06 19:11:33",
"Size": 52706,
"StorageClass": "STANDARD"
},
{
"ETag": "\"aef77756bf27a4660051d2965d7238b4\"",
"Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/AR FIELD.json",
"LastModified": "2023-07-08 01:54:18",
"Size": 459044,
"StorageClass": "STANDARD"
},
{
"ETag": "\"d4824a32702674453e14ea98e98a0392\"",
"Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/EMPTY TOTE LANES.json",
"LastModified": "2023-07-06 19:08:48",
"Size": 30929,
"StorageClass": "STANDARD"
},
{
"ETag": "\"0dc3e31b34b442cc8a32611766ad829b\"",
"Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/INBOUND SORTER.json",
"LastModified": "2023-07-07 14:56:13",
"Size": 85953,
"StorageClass": "STANDARD"
},
{
"ETag": "\"31678c5ee092b6cd6b066fcfe34d0637\"",
"Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/OUTBOUND.json",
"LastModified": "2023-07-08 01:53:03",
"Size": 217082,
"StorageClass": "STANDARD"
},
{
"ETag": "\"897aed13d0ecb923a0642251375ee2e4\"",
"Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/PACK.json",
"LastModified": "2023-07-07 14:51:27",
"Size": 96022,
"StorageClass": "STANDARD"
},
{
"ETag": "\"6b66dcbf14174ef5cb4488beb9c6b95d\"",
"Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/RSP LEVEL 2.json",
"LastModified": "2023-07-07 14:46:03",
"Size": 38208,
"StorageClass": "STANDARD"
},
{
"ETag": "\"03e388834bcb2960fd20a81ba93be712\"",
"Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/RSP LEVEL 3.json",
"LastModified": "2023-07-07 14:46:21",
"Size": 38439,
"StorageClass": "STANDARD"
},
{
"ETag": "\"96b1d70d6b14e9f9a03cbf1fde7f3258\"",
"Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/RSP LEVEL 4.json",
"LastModified": "2023-07-07 14:46:34",
"Size": 38333,
"StorageClass": "STANDARD"
},
{
"ETag": "\"6c8b4a21227a76151bfca40c25abc186\"",
"Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/RSP LEVEL 5.json",
"LastModified": "2023-07-07 14:46:46",
"Size": 38273,
"StorageClass": "STANDARD"
},
{
"ETag": "\"f2c10f54de8dbc30179f8cef737825ec\"",
"Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/SHIP SORTER.json",
"LastModified": "2023-07-06 19:10:26",
"Size": 25374,
"StorageClass": "STANDARD"
},
{
"ETag": "\"99d01fcc3f3c62e32c5a4c98b320b91f\"",
"Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/SMARTPAC.json",
"LastModified": "2023-07-06 19:07:29",
"Size": 19099,
"StorageClass": "STANDARD"
},
{
"ETag": "\"7a117bc9cf00e644518b06981e736f52\"",
"Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/TOTE SORTER.json",
"LastModified": "2023-07-07 14:41:36",
"Size": 82727,
"StorageClass": "STANDARD"
},
{
"ETag": "\"32c23ced5bb7a4ff7d0f166f85f006dd\"",
"Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/TRANSHIP SORTER.json",
"LastModified": "2023-07-08 01:47:48",
"Size": 13327,
"StorageClass": "STANDARD"
},
{
"ETag": "\"f0e92545033d5f070cd8884c7a16dac1\"",
"Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/WASTE.json",
"LastModified": "2023-07-08 01:47:36",
"Size": 7784,
"StorageClass": "STANDARD"
}
],
"loading": false,
"migrate_enabled": false,
"selected_flow_view": "OUTBOUND",
"site_files": [
{
"ETag": "\"d41d8cd98f00b204e9800998ecf8427e\"",
"Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/",
"LastModified": "2023-06-22 15:10:22",
"Size": 0,
"StorageClass": "STANDARD"
},
{
"ETag": "\"3b31b83ba6617e83ef2a98edcedf9d9d\"",
"Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/AFE 1 MINISORTER_FlowView.svg",
"LastModified": "2023-07-06 19:13:31",
"Size": 319635,
"StorageClass": "STANDARD"
},
{
"ETag": "\"db37b5cb4a0a74b4a46e3c65f968fbbf\"",
"Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/AFE TRAY SORTERS_FlowView.svg",
"LastModified": "2023-07-06 19:11:33",
"Size": 105788,
"StorageClass": "STANDARD"
},
{
"ETag": "\"cdd14f701d2256a26ecad94e7c118f30\"",
"Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/AR FIELD_FlowView.svg",
"LastModified": "2023-07-08 01:54:18",
"Size": 448282,
"StorageClass": "STANDARD"
},
{
"ETag": "\"4086b694863b38489bd980a40a3d686e\"",
"Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/EMPTY TOTE LANES_FlowView.svg",
"LastModified": "2023-07-06 19:08:47",
"Size": 47625,
"StorageClass": "STANDARD"
},
{
"ETag": "\"9974714836554c5aa21683db6d7190a8\"",
"Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/INBOUND SORTER_FlowView.svg",
"LastModified": "2023-07-07 14:56:13",
"Size": 170813,
"StorageClass": "STANDARD"
},
{
"ETag": "\"e86f2757a16dce8aa9160b4508f06257\"",
"Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/OUTBOUND_FlowView.svg",
"LastModified": "2023-07-08 01:53:03",
"Size": 410568,
"StorageClass": "STANDARD"
},
{
"ETag": "\"8f64bed5643c9db4f7c0a57d506fe819\"",
"Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/PACK_FlowView.svg",
"LastModified": "2023-07-07 14:51:27",
"Size": 185917,
"StorageClass": "STANDARD"
},
{
"ETag": "\"f1e70ba02a7b9e66a6391b67fd4a9166\"",
"Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/RSP LEVEL 2_FlowView.svg",
"LastModified": "2023-07-07 14:46:03",
"Size": 105170,
"StorageClass": "STANDARD"
},
{
"ETag": "\"35aa4d02852470107a6af6a5ca87e7d3\"",
"Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/RSP LEVEL 3_FlowView.svg",
"LastModified": "2023-07-07 14:46:21",
"Size": 105126,
"StorageClass": "STANDARD"
},
{
"ETag": "\"f47a62e8f45dc6d322a242ef7a12612a\"",
"Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/RSP LEVEL 4_FlowView.svg",
"LastModified": "2023-07-07 14:46:34",
"Size": 105122,
"StorageClass": "STANDARD"
},
{
"ETag": "\"496a0b6c937eef0bb3fd62a4e35b98da\"",
"Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/RSP LEVEL 5_FlowView.svg",
"LastModified": "2023-07-07 14:46:46",
"Size": 105118,
"StorageClass": "STANDARD"
},
{
"ETag": "\"8f8b7b0fff1b9fb3c6f04b6a8a3ddc7e\"",
"Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/SHIP SORTER_FlowView.svg",
"LastModified": "2023-07-06 19:10:26",
"Size": 67640,
"StorageClass": "STANDARD"
},
{
"ETag": "\"e8f87755974bd51d7e9b287daa1e9c57\"",
"Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/SMARTPAC_FlowView.svg",
"LastModified": "2023-07-06 19:07:28",
"Size": 36300,
"StorageClass": "STANDARD"
},
{
"ETag": "\"2923edb101a98c30ad62429ac22d423c\"",
"Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/TOTE SORTER_FlowView.svg",
"LastModified": "2023-07-07 14:41:36",
"Size": 167519,
"StorageClass": "STANDARD"
},
{
"ETag": "\"6ec75cac9a4da963f90fa05e765c67e5\"",
"Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/TRANSHIP SORTER_FlowView.svg",
"LastModified": "2023-07-08 01:47:48",
"Size": 39505,
"StorageClass": "STANDARD"
},
{
"ETag": "\"62b9a05376699daab936fe799139435f\"",
"Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/WASTE_FlowView.svg",
"LastModified": "2023-07-08 01:47:36",
"Size": 19002,
"StorageClass": "STANDARD"
},
{
"ETag": "\"d41d8cd98f00b204e9800998ecf8427e\"",
"Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/",
"LastModified": "2023-06-22 15:10:28",
"Size": 0,
"StorageClass": "STANDARD"
},
{
"ETag": "\"d5ab88e5aac79f0270c4df38fc76211b\"",
"Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/AFE 1 MINISORTER.json",
"LastModified": "2023-07-06 19:13:31",
"Size": 169491,
"StorageClass": "STANDARD"
},
{
"ETag": "\"2d52b3ac56baf2c347b3cc5a83b3ba41\"",
"Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/AFE TRAY SORTERS.json",
"LastModified": "2023-07-06 19:11:33",
"Size": 52706,
"StorageClass": "STANDARD"
},
{
"ETag": "\"aef77756bf27a4660051d2965d7238b4\"",
"Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/AR FIELD.json",
"LastModified": "2023-07-08 01:54:18",
"Size": 459044,
"StorageClass": "STANDARD"
},
{
"ETag": "\"d4824a32702674453e14ea98e98a0392\"",
"Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/EMPTY TOTE LANES.json",
"LastModified": "2023-07-06 19:08:48",
"Size": 30929,
"StorageClass": "STANDARD"
},
{
"ETag": "\"0dc3e31b34b442cc8a32611766ad829b\"",
"Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/INBOUND SORTER.json",
"LastModified": "2023-07-07 14:56:13",
"Size": 85953,
"StorageClass": "STANDARD"
},
{
"ETag": "\"31678c5ee092b6cd6b066fcfe34d0637\"",
"Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/OUTBOUND.json",
"LastModified": "2023-07-08 01:53:03",
"Size": 217082,
"StorageClass": "STANDARD"
},
{
"ETag": "\"897aed13d0ecb923a0642251375ee2e4\"",
"Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/PACK.json",
"LastModified": "2023-07-07 14:51:27",
"Size": 96022,
"StorageClass": "STANDARD"
},
{
"ETag": "\"6b66dcbf14174ef5cb4488beb9c6b95d\"",
"Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/RSP LEVEL 2.json",
"LastModified": "2023-07-07 14:46:03",
"Size": 38208,
"StorageClass": "STANDARD"
},
{
"ETag": "\"03e388834bcb2960fd20a81ba93be712\"",
"Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/RSP LEVEL 3.json",
"LastModified": "2023-07-07 14:46:21",
"Size": 38439,
"StorageClass": "STANDARD"
},
{
"ETag": "\"96b1d70d6b14e9f9a03cbf1fde7f3258\"",
"Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/RSP LEVEL 4.json",
"LastModified": "2023-07-07 14:46:34",
"Size": 38333,
"StorageClass": "STANDARD"
},
{
"ETag": "\"6c8b4a21227a76151bfca40c25abc186\"",
"Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/RSP LEVEL 5.json",
"LastModified": "2023-07-07 14:46:46",
"Size": 38273,
"StorageClass": "STANDARD"
},
{
"ETag": "\"f2c10f54de8dbc30179f8cef737825ec\"",
"Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/SHIP SORTER.json",
"LastModified": "2023-07-06 19:10:26",
"Size": 25374,
"StorageClass": "STANDARD"
},
{
"ETag": "\"99d01fcc3f3c62e32c5a4c98b320b91f\"",
"Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/SMARTPAC.json",
"LastModified": "2023-07-06 19:07:29",
"Size": 19099,
"StorageClass": "STANDARD"
},
{
"ETag": "\"7a117bc9cf00e644518b06981e736f52\"",
"Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/TOTE SORTER.json",
"LastModified": "2023-07-07 14:41:36",
"Size": 82727,
"StorageClass": "STANDARD"
},
{
"ETag": "\"32c23ced5bb7a4ff7d0f166f85f006dd\"",
"Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/TRANSHIP SORTER.json",
"LastModified": "2023-07-08 01:47:48",
"Size": 13327,
"StorageClass": "STANDARD"
},
{
"ETag": "\"f0e92545033d5f070cd8884c7a16dac1\"",
"Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/WASTE.json",
"LastModified": "2023-07-08 01:47:36",
"Size": 7784,
"StorageClass": "STANDARD"
}
],
"site_folder": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/",
"site_folder_destination": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/",
"site_folder_source": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/",
"stage_destination": "prod",
"stage_map": {
"alpha": {
"endpoint": "https://alpha.rmesdflowview.c4.rme.amazon.dev/",
"region": "us-west-2"
},
"beta": {
"endpoint": "https://beta.rmesdflowview.c4.rme.amazon.dev/",
"region": "us-east-1"
},
"prod": {
"endpoint": "https://rmesdflowview.c4.rme.amazon.dev/",
"region": "us-east-2"
}
},
"stage_options": [
{
"label": "Prod",
"value": "prod"
},
{
"label": "Beta",
"value": "beta"
},
{
"label": "Alpha",
"value": "alpha"
}
],
"stage_source": "prod",
"title_text": "FlowView Management",
"whid": "YEG2",
"whid_destination": "YEG2",
"whid_destination_options": [
{
"label": "ABQ1",
"value": "ABQ1"
},
{
"label": "AGS1",
"value": "AGS1"
},
{
"label": "AMA1",
"value": "AMA1"
},
{
"label": "AUS2",
"value": "AUS2"
},
{
"label": "BDL4",
"value": "BDL4"
},
{
"label": "BOS3",
"value": "BOS3"
},
{
"label": "DEN4",
"value": "DEN4"
},
{
"label": "DEN8",
"value": "DEN8"
},
{
"label": "DET3",
"value": "DET3"
},
{
"label": "DET6",
"value": "DET6"
},
{
"label": "ELP1",
"value": "ELP1"
},
{
"label": "FAR1",
"value": "FAR1"
},
{
"label": "FAT2",
"value": "FAT2"
},
{
"label": "FOE1",
"value": "FOE1"
},
{
"label": "FSD1",
"value": "FSD1"
},
{
"label": "FTW5",
"value": "FTW5"
},
{
"label": "FWA6",
"value": "FWA6"
},
{
"label": "GEG2",
"value": "GEG2"
},
{
"label": "HOU6",
"value": "HOU6"
},
{
"label": "HOU8",
"value": "HOU8"
},
{
"label": "HSV1",
"value": "HSV1"
},
{
"label": "ICT2",
"value": "ICT2"
},
{
"label": "IGQ1",
"value": "IGQ1"
},
{
"label": "IGQ2",
"value": "IGQ2"
},
{
"label": "ILG1",
"value": "ILG1"
},
{
"label": "LFT1",
"value": "LFT1"
},
{
"label": "LIT1",
"value": "LIT1"
},
{
"label": "LIT2",
"value": "LIT2"
},
{
"label": "LUK2",
"value": "LUK2"
},
{
"label": "MLI1",
"value": "MLI1"
},
{
"label": "MQY1",
"value": "MQY1"
},
{
"label": "MTN1",
"value": "MTN1"
},
{
"label": "OKC2",
"value": "OKC2"
},
{
"label": "ORD5",
"value": "ORD5"
},
{
"label": "ORF3",
"value": "ORF3"
},
{
"label": "PAE2",
"value": "PAE2"
},
{
"label": "RIC4",
"value": "RIC4"
},
{
"label": "ROC1",
"value": "ROC1"
},
{
"label": "SAN3",
"value": "SAN3"
},
{
"label": "SAT3",
"value": "SAT3"
},
{
"label": "SAT4",
"value": "SAT4"
},
{
"label": "SAV4",
"value": "SAV4"
},
{
"label": "SCK6",
"value": "SCK6"
},
{
"label": "SMF6",
"value": "SMF6"
},
{
"label": "STL3",
"value": "STL3"
},
{
"label": "SYR1",
"value": "SYR1"
},
{
"label": "TEB4",
"value": "TEB4"
},
{
"label": "TLH2",
"value": "TLH2"
},
{
"label": "TPA4",
"value": "TPA4"
},
{
"label": "TYS1",
"value": "TYS1"
},
{
"label": "YEG2",
"value": "YEG2"
},
{
"label": "YOO1",
"value": "YOO1"
},
{
"label": "YOW3",
"value": "YOW3"
}
],
"whid_options": [
{
"label": "ABQ1",
"value": "ABQ1"
},
{
"label": "AGS1",
"value": "AGS1"
},
{
"label": "AMA1",
"value": "AMA1"
},
{
"label": "AUS2",
"value": "AUS2"
},
{
"label": "BDL4",
"value": "BDL4"
},
{
"label": "BOS3",
"value": "BOS3"
},
{
"label": "DEN4",
"value": "DEN4"
},
{
"label": "DEN8",
"value": "DEN8"
},
{
"label": "DET3",
"value": "DET3"
},
{
"label": "DET6",
"value": "DET6"
},
{
"label": "ELP1",
"value": "ELP1"
},
{
"label": "FAR1",
"value": "FAR1"
},
{
"label": "FAT2",
"value": "FAT2"
},
{
"label": "FOE1",
"value": "FOE1"
},
{
"label": "FSD1",
"value": "FSD1"
},
{
"label": "FTW5",
"value": "FTW5"
},
{
"label": "FWA6",
"value": "FWA6"
},
{
"label": "GEG2",
"value": "GEG2"
},
{
"label": "HOU6",
"value": "HOU6"
},
{
"label": "HOU8",
"value": "HOU8"
},
{
"label": "HSV1",
"value": "HSV1"
},
{
"label": "ICT2",
"value": "ICT2"
},
{
"label": "IGQ1",
"value": "IGQ1"
},
{
"label": "IGQ2",
"value": "IGQ2"
},
{
"label": "ILG1",
"value": "ILG1"
},
{
"label": "LFT1",
"value": "LFT1"
},
{
"label": "LIT1",
"value": "LIT1"
},
{
"label": "LIT2",
"value": "LIT2"
},
{
"label": "LUK2",
"value": "LUK2"
},
{
"label": "MLI1",
"value": "MLI1"
},
{
"label": "MQY1",
"value": "MQY1"
},
{
"label": "MTN1",
"value": "MTN1"
},
{
"label": "OKC2",
"value": "OKC2"
},
{
"label": "ORD5",
"value": "ORD5"
},
{
"label": "ORF3",
"value": "ORF3"
},
{
"label": "PAE2",
"value": "PAE2"
},
{
"label": "RIC4",
"value": "RIC4"
},
{
"label": "ROC1",
"value": "ROC1"
},
{
"label": "SAN3",
"value": "SAN3"
},
{
"label": "SAT3",
"value": "SAT3"
},
{
"label": "SAT4",
"value": "SAT4"
},
{
"label": "SAV4",
"value": "SAV4"
},
{
"label": "SCK6",
"value": "SCK6"
},
{
"label": "SMF6",
"value": "SMF6"
},
{
"label": "STL3",
"value": "STL3"
},
{
"label": "SYR1",
"value": "SYR1"
},
{
"label": "TEB4",
"value": "TEB4"
},
{
"label": "TLH2",
"value": "TLH2"
},
{
"label": "TPA4",
"value": "TPA4"
},
{
"label": "TYS1",
"value": "TYS1"
},
{
"label": "YEG2",
"value": "YEG2"
},
{
"label": "YOO1",
"value": "YOO1"
},
{
"label": "YOW3",
"value": "YOW3"
}
],
"whid_source": "YEG2",
"whid_source_options": [
{
"label": "ABQ1",
"value": "ABQ1"
},
{
"label": "AGS1",
"value": "AGS1"
},
{
"label": "AMA1",
"value": "AMA1"
},
{
"label": "AUS2",
"value": "AUS2"
},
{
"label": "BDL4",
"value": "BDL4"
},
{
"label": "BOS3",
"value": "BOS3"
},
{
"label": "DEN4",
"value": "DEN4"
},
{
"label": "DEN8",
"value": "DEN8"
},
{
"label": "DET3",
"value": "DET3"
},
{
"label": "DET6",
"value": "DET6"
},
{
"label": "ELP1",
"value": "ELP1"
},
{
"label": "FAR1",
"value": "FAR1"
},
{
"label": "FAT2",
"value": "FAT2"
},
{
"label": "FOE1",
"value": "FOE1"
},
{
"label": "FSD1",
"value": "FSD1"
},
{
"label": "FTW5",
"value": "FTW5"
},
{
"label": "FWA6",
"value": "FWA6"
},
{
"label": "GEG2",
"value": "GEG2"
},
{
"label": "HOU6",
"value": "HOU6"
},
{
"label": "HOU8",
"value": "HOU8"
},
{
"label": "HSV1",
"value": "HSV1"
},
{
"label": "ICT2",
"value": "ICT2"
},
{
"label": "IGQ1",
"value": "IGQ1"
},
{
"label": "IGQ2",
"value": "IGQ2"
},
{
"label": "ILG1",
"value": "ILG1"
},
{
"label": "LFT1",
"value": "LFT1"
},
{
"label": "LIT1",
"value": "LIT1"
},
{
"label": "LIT2",
"value": "LIT2"
},
{
"label": "LUK2",
"value": "LUK2"
},
{
"label": "MLI1",
"value": "MLI1"
},
{
"label": "MQY1",
"value": "MQY1"
},
{
"label": "MTN1",
"value": "MTN1"
},
{
"label": "OKC2",
"value": "OKC2"
},
{
"label": "ORD5",
"value": "ORD5"
},
{
"label": "ORF3",
"value": "ORF3"
},
{
"label": "PAE2",
"value": "PAE2"
},
{
"label": "RIC4",
"value": "RIC4"
},
{
"label": "ROC1",
"value": "ROC1"
},
{
"label": "SAN3",
"value": "SAN3"
},
{
"label": "SAT3",
"value": "SAT3"
},
{
"label": "SAT4",
"value": "SAT4"
},
{
"label": "SAV4",
"value": "SAV4"
},
{
"label": "SCK6",
"value": "SCK6"
},
{
"label": "SMF6",
"value": "SMF6"
},
{
"label": "STL3",
"value": "STL3"
},
{
"label": "SYR1",
"value": "SYR1"
},
{
"label": "TEB4",
"value": "TEB4"
},
{
"label": "TLH2",
"value": "TLH2"
},
{
"label": "TPA4",
"value": "TPA4"
},
{
"label": "TYS1",
"value": "TYS1"
},
{
"label": "YEG2",
"value": "YEG2"
},
{
"label": "YOO1",
"value": "YOO1"
},
{
"label": "YOW3",
"value": "YOW3"
}
]
},
"events": {
"system": {
"onStartup": {
"config": {
"script": "\t# initialize form via message handler\n\tsystem.perspective.sendMessage(\u0027request_initialize_form\u0027, scope\u003d\u0027view\u0027)\n\t"
},
"scope": "G",
"type": "script"
}
}
},
"params": {
"selected_flow_view": "OUTBOUND",
"selected_site": "MTN1",
"selected_stage": "prod"
},
"propConfig": {
"custom.bucket": {
"binding": {
"config": {
"path": "session.custom.flow_view_config.site_config.s3.bucket_name"
},
"type": "property"
},
"persistent": true
},
"custom.current_flow_view": {
"binding": {
"config": {
"path": "session.custom.flow_view_config.site_config.selected_flow_view"
},
"type": "property"
},
"persistent": true
},
"custom.current_stage": {
"binding": {
"config": {
"path": "session.custom.flow_view_config.stage_config.stage"
},
"type": "property"
},
"persistent": true
},
"custom.enabled_whids": {
"binding": {
"config": {
"path": "session.custom.flow_view_config.site_config.enabled_whids"
},
"type": "property"
},
"persistent": true
},
"custom.flow_view": {
"binding": {
"config": {
"path": "session.custom.flow_view_config.site_config.selected_flow_view"
},
"type": "property"
},
"persistent": true
},
"custom.flow_view_copy_operation": {
"binding": {
"config": {
"expression": "if(isNull({view.custom.stage_source})||!len({view.custom.stage_source})\r\n\t||isNull({view.custom.stage_destination})||!len({view.custom.stage_destination})\r\n//\t||{view.custom.stage_source}\u003d{view.custom.stage_destination}\r\n\t||({view.custom.stage_source}\u003d{view.custom.stage_destination}\r\n\t\t\u0026\u0026{view.custom.whid_source}\u003d{view.custom.whid_destination}\r\n\t\t\u0026\u0026{view.custom.flow_view_source}\u003d{view.custom.flow_view_destination})\r\n\t,null,\r\n\tif({view.custom.whid_source}\u003d\u0027ALL\u0027,\u0027migrate_stages\u0027,\r\n\tif({view.custom.whid_source}\u003d{view.custom.whid_destination}\r\n\t\t\u0026\u0026{view.custom.flow_view_source}\u003d\u0027ALL\u0027,\u0027migrate_stages\u0027,\r\n\tif({view.custom.flow_view_source}\u003d\u0027ALL\u0027,\u0027migrate_sites\u0027,\r\n\t\u0027migrate_flowviews\u0027))))"
},
"type": "expr"
},
"persistent": true
},
"custom.flow_view_copy_option": {
"persistent": true
},
"custom.flow_view_copy_tooltip": {
"binding": {
"config": {
"expression": "{view.custom.stage_source}+{view.custom.stage_destination}\r\n+{view.custom.whid_source}+{view.custom.whid_destination}\r\n+{view.custom.flow_view_source}+{view.custom.flow_view_destination}\r\n+{view.custom.flow_view_copy_operation}+{view.custom.flow_view_copy_option}"
},
"transforms": [
{
"code": "\toperation \u003d self.custom.flow_view_copy_operation\n\tif not operation:\n\t\treturn \u0027\u0027\n\tsrc_stage \u003d self.custom.stage_source\n\tdest_stage \u003d self.custom.stage_destination\n\tsrc_whid \u003d self.custom.whid_source\n\tdest_whid \u003d self.custom.whid_destination\n\tsrc_flowview \u003d self.custom.flow_view_source\n\tdest_flowview \u003d self.custom.flow_view_destination\n\tcopy_option \u003d self.custom.flow_view_copy_option\n\tmsg \u003d \u0027\u0027\n\tif operation \u003d\u003d \u0027migrate_stages\u0027:\n\t\tmsg \u003d (\u0027Migrate all flow view files for whid: %s \\n\u0027\n\t\t\t\u0027From %s stage to %s stage? \\n\u0027\n\t\t\t\u0027This operation may take several minutes\u0027) % (\n\t\t\tsrc_whid, src_stage, dest_stage)\n\telif operation \u003d\u003d \u0027migrate_sites\u0027:\n\t\tmsg \u003d (\u0027Migrate all flow view files for whid: %s to whid: %s \\n\u0027\n\t\t\t\u0027From %s stage to %s stage? \\n\u0027\n\t\t\t\u0027This operation may take several minutes\u0027) % (\n\t\t\tsrc_whid, dest_whid, src_stage, dest_stage)\n\telif operation \u003d\u003d \u0027migrate_flowviews\u0027:\n\t\tif copy_option \u003d\u003d \u0027both\u0027:\n\t\t\tcopy_prompt \u003d \u0027both svg image and config json files\u0027\n\t\telif copy_option \u003d\u003d \u0027svg\u0027:\n\t\t\tcopy_prompt \u003d \u0027svg image file\u0027\n\t\telse:\n\t\t\tcopy_prompt \u003d \u0027config json file\u0027\n\t\tmsg \u003d (\u0027Copy %s for flowview: %s to flowview: %s \\n\u0027\n\t\t\t\u0027From whid: %s to whid: %s \\n\u0027\n\t\t\t\u0027From %s stage to %s stage?\u0027) % (\n\t\t\tcopy_prompt, src_flowview, dest_flowview, \n\t\t\tsrc_whid, dest_whid, src_stage, dest_stage)\n\treturn msg",
"type": "script"
}
],
"type": "expr"
},
"persistent": true
},
"custom.flow_view_destination": {
"persistent": true
},
"custom.flow_view_destination_options": {
"binding": {
"config": {
"expression": "{view.custom.bucket}+{view.custom.site_folder_destination}"
},
"transforms": [
{
"code": "\tfrom s3 import S3API\n\tbucket \u003d self.custom.bucket\n\tprefix \u003d self.custom.site_folder_destination\n\tstage \u003d self.custom.current_stage\n\tusername \u003d self.session.props.auth.user.userName\n\t# DEVNOTE 2023-04-21: force API call to prod\n#\ts3m \u003d S3API(stage, username)\n\t# fetch all files in site folder\n\ts3m \u003d S3API(\u0027prod\u0027, username)\n\tsite_files \u003d s3m.list_objects(prefix\u003dprefix, bucket\u003dbucket)\n\t# parse out flow-view files from the site files\n\tsuffix \u003d self.custom.flow_view_file_suffix\n\tflow_view_files \u003d [x for x in site_files if x[\u0027Key\u0027].startswith(prefix) \n\t\t\t\t\t\tand x[\u0027Key\u0027].endswith(suffix)]\n\t# build-out options from flow-view files, prepending with \u0027ALL\u0027 if user is sadmin\n\tif self.custom.flow_view_edit_mode.sadmin_enabled:\n\t\toptions \u003d [{\u0027value\u0027: \u0027ALL\u0027, \u0027label\u0027: \u0027ALL\u0027}]\n\telse:\n\t\toptions \u003d []\n\toptions.extend([{\u0027value\u0027: x[\u0027Key\u0027].replace(prefix,\u0027\u0027).replace(suffix,\u0027\u0027), \n\t\t\t\u0027label\u0027: x[\u0027Key\u0027].replace(prefix,\u0027\u0027).replace(suffix,\u0027\u0027)} \n\t\t\tfor x in flow_view_files])\n\treturn options",
"type": "script"
}
],
"type": "expr"
},
"persistent": true
},
"custom.flow_view_edit_mode": {
"binding": {
"config": {
"path": "session.custom.flow_view_config.edit_mode"
},
"type": "property"
},
"persistent": true
},
"custom.flow_view_file_suffix": {
"binding": {
"config": {
"path": "session.custom.flow_view_config.site_config.s3.flow_view_file_suffix"
},
"type": "property"
},
"persistent": true
},
"custom.flow_view_files": {
"binding": {
"config": {
"path": "view.custom.site_files"
},
"transforms": [
{
"code": "\tprefix \u003d self.custom.site_folder\n\tsuffix \u003d self.custom.flow_view_file_suffix\n\treturn [x for x in value \n\t\tif x.Key.startswith(prefix) and x.Key.endswith(suffix)]",
"type": "script"
}
],
"type": "property"
}
},
"custom.flow_view_options": {
"binding": {
"config": {
"path": "view.custom.flow_view_files"
},
"transforms": [
{
"code": "\tprefix \u003d self.custom.site_folder\n\tsuffix \u003d self.custom.flow_view_file_suffix\n\tif self.custom.flow_view_edit_mode.sadmin_enabled:\n\t\toptions \u003d [{\u0027value\u0027: \u0027ALL\u0027, \u0027label\u0027: \u0027ALL\u0027}]\n\telse:\n\t\toptions \u003d []\n\toptions.extend([{\u0027value\u0027: x.Key.replace(prefix,\u0027\u0027).replace(suffix,\u0027\u0027), \n\t\t\t\u0027label\u0027: x.Key.replace(prefix,\u0027\u0027).replace(suffix,\u0027\u0027)} \n\t\t\tfor x in value])\n\treturn options",
"type": "script"
}
],
"type": "property"
},
"persistent": true
},
"custom.flow_view_source": {
"persistent": true
},
"custom.flow_view_source_options": {
"binding": {
"config": {
"expression": "{view.custom.bucket}+{view.custom.site_folder_source}"
},
"transforms": [
{
"code": "\tfrom s3 import S3API\n\tbucket \u003d self.custom.bucket\n\tprefix \u003d self.custom.site_folder_source\n\tstage \u003d self.custom.current_stage\n\tusername \u003d self.session.props.auth.user.userName\n\t# DEVNOTE 2023-04-21: force API call to prod\n#\ts3m \u003d S3API(stage, username)\n\t# fetch all files in site folder\n\ts3m \u003d S3API(\u0027prod\u0027, username)\n\tsite_files \u003d s3m.list_objects(prefix\u003dprefix, bucket\u003dbucket)\n\t# parse out flow-view files from the site files\n\tsuffix \u003d self.custom.flow_view_file_suffix\n\tflow_view_files \u003d [x for x in site_files if x[\u0027Key\u0027].startswith(prefix) \n\t\t\t\t\t\tand x[\u0027Key\u0027].endswith(suffix)]\n\t# build-out options from flow-view files, prepending with \u0027ALL\u0027 if user is sadmin\n\tif self.custom.flow_view_edit_mode.sadmin_enabled:\n\t\toptions \u003d [{\u0027value\u0027: \u0027ALL\u0027, \u0027label\u0027: \u0027ALL\u0027}]\n\telse:\n\t\toptions \u003d []\n\toptions.extend([{\u0027value\u0027: x[\u0027Key\u0027].replace(prefix,\u0027\u0027).replace(suffix,\u0027\u0027), \n\t\t\t\u0027label\u0027: x[\u0027Key\u0027].replace(prefix,\u0027\u0027).replace(suffix,\u0027\u0027)} \n\t\t\tfor x in flow_view_files])\n\treturn options",
"type": "script"
}
],
"type": "expr"
},
"persistent": true
},
"custom.instances_file_prefix": {
"binding": {
"config": {
"expression": "stringFormat(\u0027%sinstance_configs/\u0027,{view.custom.site_folder})"
},
"type": "expr"
},
"persistent": true
},
"custom.instances_file_suffix": {
"persistent": true
},
"custom.instances_files": {
"binding": {
"config": {
"path": "view.custom.site_files"
},
"transforms": [
{
"code": "\tprefix \u003d self.custom.instances_file_prefix\n\tsuffix \u003d self.custom.instances_file_suffix\n\treturn [x for x in value \n\t\tif x.Key.startswith(prefix) and x.Key.endswith(suffix)]",
"type": "script"
}
],
"type": "property"
},
"persistent": true
},
"custom.loading": {
"persistent": true
},
"custom.migrate_enabled": {
"binding": {
"config": {
"expression": "!isNull({view.custom.flow_view_copy_operation})\r\n\u0026\u0026\r\n({view.custom.flow_view_edit_mode.sadmin_enabled}\r\n||({view.custom.flow_view_edit_mode.admin_enabled}\r\n\t\u0026\u0026{view.custom.flow_view_copy_operation}\u003d\u0027migrate_flowviews\u0027)\r\n)"
},
"type": "expr"
},
"persistent": true
},
"custom.selected_flow_view": {
"persistent": true
},
"custom.site_files": {
"binding": {
"config": {
"expression": "{view.custom.bucket}+{view.custom.site_folder}"
},
"transforms": [
{
"code": "\tfrom s3 import S3API\n\tbucket \u003d self.custom.bucket\n\tobj_key \u003d self.custom.site_folder\n\tstage \u003d self.custom.current_stage\n\tusername \u003d self.session.props.auth.user.userName\n\t# DEVNOTE 2023-04-21: force API call to prod\n#\ts3m \u003d S3API(stage, username)\n\ts3m \u003d S3API(\u0027prod\u0027, username)\n\treturn s3m.list_objects(prefix\u003dobj_key, bucket\u003dbucket)",
"type": "script"
}
],
"type": "expr"
},
"persistent": true
},
"custom.site_folder": {
"binding": {
"config": {
"path": "session.custom.flow_view_config.site_config.s3.site_obj_prefix"
},
"type": "property"
},
"persistent": true
},
"custom.site_folder_destination": {
"binding": {
"config": {
"expression": "stringFormat(\u0027na-rme-scada-maps-hc/FlowViews-%s/%s/\u0027,\r\n\t{view.custom.stage_destination},{view.custom.whid_destination})"
},
"type": "expr"
},
"persistent": true
},
"custom.site_folder_source": {
"binding": {
"config": {
"expression": "stringFormat(\u0027na-rme-scada-maps-hc/FlowViews-%s/%s/\u0027,\r\n\t{view.custom.stage_source},{view.custom.whid_source})"
},
"type": "expr"
},
"persistent": true
},
"custom.stage_destination": {
"persistent": true
},
"custom.stage_map": {
"binding": {
"config": {
"path": "session.custom.flow_view_config.stage_config.map"
},
"type": "property"
},
"persistent": true
},
"custom.stage_options": {
"binding": {
"config": {
"path": "view.custom.stage_map"
},
"transforms": [
{
"code": "\treturn [{\u0027value\u0027: x, \u0027label\u0027: x.capitalize()} for x in value]",
"type": "script"
}
],
"type": "property"
},
"persistent": true
},
"custom.stage_source": {
"persistent": true
},
"custom.title_text": {
"persistent": true
},
"custom.whid": {
"binding": {
"config": {
"path": "session.custom.flow_view_config.site_config.whid"
},
"type": "property"
},
"persistent": true
},
"custom.whid_destination": {
"persistent": true
},
"custom.whid_destination_options": {
"binding": {
"config": {
"path": "view.custom.stage_destination"
},
"transforms": [
{
"code": "\tfrom s3 import S3API\n\tusername \u003d self.session.props.auth.user.userName\n\t# DEVNOTE 2023-04-21: force API call to prod\n#\ts3m \u003d S3API(api_stage\u003dvalue, username\u003dusername)\n\ts3m \u003d S3API(\u0027prod\u0027, username)\n\tbucket \u003d self.custom.bucket\n\treturn s3m.fetch_site_list_by_stage(bucket, value)\n\t",
"type": "script"
},
{
"code": "\tif self.custom.flow_view_edit_mode.sadmin_enabled:\n\t\toptions \u003d [{\u0027value\u0027: \u0027ALL\u0027, \u0027label\u0027: \u0027ALL\u0027}]\n\telse:\n\t\toptions \u003d []\n\toptions.extend([{\u0027value\u0027: x, \u0027label\u0027: x} for x in value])\n\treturn options",
"type": "script"
}
],
"type": "property"
},
"persistent": true
},
"custom.whid_options": {
"binding": {
"config": {
"path": "view.custom.enabled_whids"
},
"transforms": [
{
"code": "\tif self.custom.flow_view_edit_mode.sadmin_enabled:\n\t\toptions \u003d [{\u0027value\u0027: \u0027ALL\u0027, \u0027label\u0027: \u0027ALL\u0027}]\n\telse:\n\t\toptions \u003d []\n\toptions.extend([{\u0027value\u0027: x, \u0027label\u0027: x} for x in value])\n\treturn options\n",
"type": "script"
}
],
"type": "property"
},
"persistent": true
},
"custom.whid_source": {
"persistent": true
},
"custom.whid_source_options": {
"binding": {
"config": {
"path": "view.custom.stage_source"
},
"transforms": [
{
"code": "\tfrom s3 import S3API\n\tusername \u003d self.session.props.auth.user.userName\n\t# DEVNOTE 2023-04-21: force API call to prod\n#\ts3m \u003d S3API(api_stage\u003dvalue, username\u003dusername)\n\ts3m \u003d S3API(\u0027prod\u0027, username)\n\tbucket \u003d self.custom.bucket\n\treturn s3m.fetch_site_list_by_stage(bucket, value)\n\t",
"type": "script"
},
{
"code": "\tif self.custom.flow_view_edit_mode.sadmin_enabled:\n\t\toptions \u003d [{\u0027value\u0027: \u0027ALL\u0027, \u0027label\u0027: \u0027ALL\u0027}]\n\telse:\n\t\toptions \u003d []\n\toptions.extend([{\u0027value\u0027: x, \u0027label\u0027: x} for x in value])\n\treturn options",
"type": "script"
}
],
"type": "property"
},
"persistent": true
},
"params.selected_flow_view": {
"paramDirection": "input",
"persistent": true
},
"params.selected_site": {
"paramDirection": "input",
"persistent": true
},
"params.selected_stage": {
"paramDirection": "input",
"persistent": true
}
},
"props": {
"defaultSize": {
"height": 140,
"width": 900
}
},
"root": {
"children": [
{
"children": [
{
"children": [
{
"meta": {
"name": "Label"
},
"position": {
"basis": "175px",
"shrink": 0
},
"props": {
"style": {
"classes": "Framework/Card/Label Text/RightAlign_with_Padding",
"paddingLeft": "5px"
},
"text": "Source Stage:"
},
"type": "ia.display.label"
},
{
"meta": {
"name": "Dropdown",
"tooltip": {
"location": "bottom",
"style": {
"whiteSpace": "pre"
},
"text": "Click here to select a different \nstage folder to manage"
}
},
"position": {
"basis": "150px",
"shrink": 0
},
"propConfig": {
"props.options": {
"binding": {
"config": {
"path": "view.custom.stage_options"
},
"type": "property"
}
},
"props.value": {
"binding": {
"config": {
"bidirectional": true,
"path": "view.custom.stage_source"
},
"type": "property"
}
}
},
"props": {
"search": {
"searchParam": "ou"
},
"style": {
"margin": "2px",
"marginRight": "5px"
}
},
"type": "ia.input.dropdown"
}
],
"meta": {
"name": "FlexContainer Source"
},
"position": {
"basis": "50%",
"shrink": 0
},
"type": "ia.container.flex"
},
{
"children": [
{
"meta": {
"name": "Label"
},
"position": {
"basis": "175px",
"shrink": 0
},
"props": {
"style": {
"classes": "Framework/Card/Label Text/RightAlign_with_Padding",
"paddingLeft": "5px"
},
"text": "Destination Stage:"
},
"type": "ia.display.label"
},
{
"meta": {
"name": "Dropdown",
"tooltip": {
"location": "bottom",
"style": {
"whiteSpace": "pre"
},
"text": "Click here to select a different \nstage folder to manage"
}
},
"position": {
"basis": "150px",
"shrink": 0
},
"propConfig": {
"props.enabled": {
"binding": {
"config": {
"expression": "{view.custom.flow_view_edit_mode.admin_enabled}\r\n||{view.custom.flow_view_edit_mode.sadmin_enabled}"
},
"type": "expr"
}
},
"props.options": {
"binding": {
"config": {
"path": "view.custom.stage_options"
},
"type": "property"
}
},
"props.value": {
"binding": {
"config": {
"bidirectional": true,
"path": "view.custom.stage_destination"
},
"type": "property"
}
}
},
"props": {
"search": {
"searchParam": "ou"
},
"style": {
"margin": "2px",
"marginRight": "5px"
}
},
"type": "ia.input.dropdown"
}
],
"meta": {
"name": "FlexContainer Destination"
},
"position": {
"basis": "50%",
"shrink": 0
},
"type": "ia.container.flex"
}
],
"meta": {
"name": "FlexContainer Stages"
},
"position": {
"basis": "30px",
"shrink": 0
},
"type": "ia.container.flex"
},
{
"children": [
{
"children": [
{
"meta": {
"name": "Label"
},
"position": {
"basis": "175px",
"shrink": 0
},
"props": {
"style": {
"classes": "Framework/Card/Label Text/RightAlign_with_Padding",
"paddingLeft": "5px"
},
"text": "Source WHID:"
},
"type": "ia.display.label"
},
{
"meta": {
"name": "Dropdown",
"tooltip": {
"location": "bottom",
"style": {
"whiteSpace": "pre"
},
"text": "Click here to select a different \nstage folder to manage"
}
},
"position": {
"basis": "150px",
"shrink": 0
},
"propConfig": {
"props.options": {
"binding": {
"config": {
"path": "view.custom.whid_source_options"
},
"type": "property"
}
},
"props.value": {
"binding": {
"config": {
"bidirectional": true,
"path": "view.custom.whid_source"
},
"type": "property"
},
"onChange": {
"enabled": null,
"script": "\tif not missedEvents and origin \u003d\u003d \u0027Browser\u0027:\n\t\tif currentValue.value:\n\t\t\tself.view.custom.whid_destination \u003d currentValue.value\n\t\t"
}
}
},
"props": {
"search": {
"searchParam": "smf"
},
"style": {
"margin": "2px",
"marginRight": "5px"
}
},
"type": "ia.input.dropdown"
}
],
"meta": {
"name": "FlexContainer Source"
},
"position": {
"basis": "50%",
"shrink": 0
},
"type": "ia.container.flex"
},
{
"children": [
{
"meta": {
"name": "Label"
},
"position": {
"basis": "175px",
"shrink": 0
},
"props": {
"style": {
"classes": "Framework/Card/Label Text/RightAlign_with_Padding",
"paddingLeft": "5px"
},
"text": "Destination WHID:"
},
"type": "ia.display.label"
},
{
"meta": {
"name": "Dropdown",
"tooltip": {
"location": "bottom",
"style": {
"whiteSpace": "pre"
},
"text": "Click here to select a different \nstage folder to manage"
}
},
"position": {
"basis": "150px",
"shrink": 0
},
"propConfig": {
"props.enabled": {
"binding": {
"config": {
"path": "view.custom.flow_view_edit_mode.sadmin_enabled"
},
"type": "property"
}
},
"props.options": {
"binding": {
"config": {
"path": "view.custom.whid_destination_options"
},
"type": "property"
}
},
"props.value": {
"binding": {
"config": {
"bidirectional": true,
"path": "view.custom.whid_destination"
},
"type": "property"
}
}
},
"props": {
"search": {
"searchParam": "sm"
},
"style": {
"margin": "2px",
"marginRight": "5px"
}
},
"type": "ia.input.dropdown"
}
],
"meta": {
"name": "FlexContainer Destination"
},
"position": {
"basis": "50%",
"shrink": 0
},
"propConfig": {
"position.display": {
"binding": {
"config": {
"expression": "!isNull({view.custom.whid_source})\r\n\u0026\u0026len({view.custom.whid_source})\r\n\u0026\u0026{view.custom.whid_source}!\u003d\u0027ALL\u0027"
},
"type": "expr"
}
}
},
"type": "ia.container.flex"
}
],
"meta": {
"name": "FlexContainer Whids"
},
"position": {
"basis": "30px",
"shrink": 0
},
"type": "ia.container.flex"
},
{
"children": [
{
"children": [
{
"meta": {
"name": "Label"
},
"position": {
"basis": "175px",
"shrink": 0
},
"props": {
"style": {
"classes": "Framework/Card/Label Text/RightAlign_with_Padding",
"paddingLeft": "5px"
},
"text": "Source Flowview:"
},
"type": "ia.display.label"
},
{
"meta": {
"name": "Dropdown",
"tooltip": {
"location": "bottom",
"style": {
"whiteSpace": "pre"
},
"text": "Click here to select a different \nstage folder to manage"
}
},
"position": {
"basis": "250px",
"shrink": 0
},
"propConfig": {
"props.options": {
"binding": {
"config": {
"path": "view.custom.flow_view_source_options"
},
"type": "property"
}
},
"props.value": {
"binding": {
"config": {
"bidirectional": true,
"path": "view.custom.flow_view_source"
},
"type": "property"
},
"onChange": {
"enabled": null,
"script": "\tif not missedEvents and origin \u003d\u003d \u0027Browser\u0027:\n\t\tif currentValue.value:\n\t\t\tself.view.custom.flow_view_destination \u003d currentValue.value\n\t"
}
}
},
"props": {
"search": {
"searchParam": "ou"
},
"style": {
"margin": "2px",
"marginRight": "5px"
}
},
"type": "ia.input.dropdown"
}
],
"meta": {
"name": "FlexContainer Source"
},
"position": {
"basis": "50%",
"shrink": 0
},
"type": "ia.container.flex"
},
{
"children": [
{
"meta": {
"name": "Label"
},
"position": {
"basis": "175px",
"shrink": 0
},
"props": {
"style": {
"classes": "Framework/Card/Label Text/RightAlign_with_Padding",
"paddingLeft": "5px"
},
"text": "Destination Flowview:"
},
"type": "ia.display.label"
},
{
"meta": {
"name": "Dropdown",
"tooltip": {
"location": "bottom",
"style": {
"whiteSpace": "pre"
},
"text": "Click here to select a different \nstage folder to manage"
}
},
"position": {
"basis": "250px",
"shrink": 0
},
"propConfig": {
"props.enabled": {
"binding": {
"config": {
"path": "view.custom.flow_view_edit_mode.sadmin_enabled"
},
"type": "property"
}
},
"props.options": {
"binding": {
"config": {
"path": "view.custom.flow_view_destination_options"
},
"type": "property"
}
},
"props.value": {
"binding": {
"config": {
"bidirectional": true,
"path": "view.custom.flow_view_destination"
},
"type": "property"
}
}
},
"props": {
"search": {
"searchParam": "ou"
},
"style": {
"margin": "2px",
"marginRight": "5px"
}
},
"type": "ia.input.dropdown"
}
],
"meta": {
"name": "FlexContainer Destination"
},
"position": {
"basis": "50%",
"shrink": 0
},
"propConfig": {
"position.display": {
"binding": {
"config": {
"expression": "!isNull({view.custom.flow_view_source})\r\n\u0026\u0026len({view.custom.flow_view_source})\r\n\u0026\u0026{view.custom.flow_view_source}!\u003d\u0027ALL\u0027"
},
"type": "expr"
}
}
},
"type": "ia.container.flex"
}
],
"meta": {
"name": "FlexContainer Flowviews"
},
"position": {
"basis": "30px",
"shrink": 0
},
"type": "ia.container.flex"
},
{
"children": [
{
"children": [
{
"meta": {
"name": "Label"
},
"position": {
"shrink": 0
},
"props": {
"style": {
"classes": "Framework/Card/Label Text/RightAlign_with_Padding",
"paddingLeft": "5px"
},
"text": "Copy:"
},
"type": "ia.display.label"
},
{
"meta": {
"name": "RadioGroup"
},
"position": {
"shrink": 0
},
"propConfig": {
"position.display": {
"binding": {
"config": {
"expression": "!isNull({view.custom.flow_view_source})\r\n\u0026\u0026len({view.custom.flow_view_source})"
},
"type": "expr"
}
},
"props.enabled": {
"binding": {
"config": {
"expression": "{view.custom.flow_view_edit_mode.admin_enabled}\r\n||{view.custom.flow_view_edit_mode.sadmin_enabled}"
},
"type": "expr"
}
},
"props.value": {
"binding": {
"config": {
"bidirectional": true,
"path": "view.custom.flow_view_copy_option"
},
"type": "property"
}
}
},
"props": {
"radioStyle": {
"fontSize": "12px"
},
"radios": [
{
"selected": true,
"text": "Both Files",
"value": "both"
},
{
"selected": false,
"text": "SVG only",
"value": "svg"
},
{
"selected": false,
"text": "JSON only",
"value": "json"
}
]
},
"type": "ia.input.radio-group"
}
],
"meta": {
"name": "FlexContainer Radios"
},
"position": {
"basis": "50%",
"shrink": 0
},
"props": {
"justify": "center"
},
"type": "ia.container.flex"
},
{
"children": [
{
"events": {
"component": {
"onActionPerformed": {
"config": {
"script": "\tsystem.perspective.sendMessage(\u0027request_initialize_form\u0027, scope\u003d\u0027view\u0027)\n\t"
},
"scope": "G",
"type": "script"
}
}
},
"meta": {
"name": "Clear Form"
},
"position": {
"shrink": 0
},
"props": {
"image": {
"icon": {
"path": "material/refresh"
}
},
"primary": false,
"style": {
"margin": "2px",
"padding": "4px"
},
"text": "Reset Form"
},
"type": "ia.input.button"
},
{
"events": {
"component": {
"onActionPerformed": {
"config": {
"script": "\t# call-up the confirm dialog to allow the user to decide if they\n\t# really want to copy/migrate the flow-view files in S3\n\tself.show_confirm_dialog({})"
},
"scope": "G",
"type": "script"
}
}
},
"meta": {
"name": "Copy Files",
"tooltip": {
"enabled": true,
"location": "bottom",
"style": {
"whiteSpace": "pre"
}
}
},
"position": {
"shrink": 0
},
"propConfig": {
"meta.tooltip.text": {
"binding": {
"config": {
"path": "view.custom.flow_view_copy_tooltip"
},
"type": "property"
}
},
"props.enabled": {
"binding": {
"config": {
"path": "view.custom.migrate_enabled"
},
"type": "property"
}
}
},
"props": {
"image": {
"height": 20,
"icon": {
"path": "material/file_copy"
},
"width": 20
},
"style": {
"margin": "2px",
"padding": "4px"
},
"text": "Copy Files"
},
"scripts": {
"customMethods": [
{
"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\"Flow View Files Copied\", \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\t\t"
},
{
"name": "show_warning_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\"warning\", \n\t\t\"Flow View Files NOT Copied\", \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\t\t\t"
},
{
"name": "show_error_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\"error\", \n\t\t\"Flow View Files Copy 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\t{}\n\t)\n\t\t\t\t\t"
},
{
"name": "update_bindings",
"params": [],
"script": "\t\"\"\"\n\t\tAfter data saved to S3, refresh session and view bindings\n\t\"\"\"\n\tself.view.custom.loading \u003d False\n\t\t"
},
{
"name": "copy_operation",
"params": [],
"script": "\t\"\"\"\n\t\tCall s3.S3API().migrate_*() method using user selections\n\t* \u003d [\u0027stages\u0027, \u0027sites\u0027, \u0027flowviews\u0027] depending on user selections\n\t\"\"\"\n\tfrom s3 import S3API\n\tfrom pprint import pformat\n\tfrom helper.helper import sanitize_tree\n\t\n\tstage \u003d self.session.custom.flow_view_config.stage_config.stage\n\tusername \u003d self.session.props.auth.user.userName\n\t# DEVNOTE 2023-04-21: force API call to prod\n#\ts3m \u003d S3API(stage, username)\n\ts3m \u003d S3API(\u0027prod\u0027, username)\n\t# grab local variables from view custom props\n\tsrc_stage \u003d self.view.custom.stage_source\n\tdest_stage \u003d self.view.custom.stage_destination\n\tsrc_whid \u003d self.view.custom.whid_source\n\tdest_whid \u003d self.view.custom.whid_destination\n\tsrc_flowview \u003d self.view.custom.flow_view_source\n\tdest_flowview \u003d self.view.custom.flow_view_destination\n\tcopy_option \u003d self.view.custom.flow_view_copy_option\n\toperation \u003d self.view.custom.flow_view_copy_operation\n\t# pack up params based on operation selected\n\tparams \u003d {}\n\tif operation \u003d\u003d \u0027migrate_stages\u0027:\n\t\t# Lambda expects None for whid param if migrating all stage folder contents\n\t\tif src_whid \u003d\u003d \u0027ALL\u0027:\n\t\t\tsrc_whid \u003d None\n\t\tparams \u003d {\u0027src_stage\u0027: src_stage, \u0027dest_stage\u0027: dest_stage, \u0027whid\u0027: src_whid}\n\telif operation \u003d\u003d \u0027migrate_sites\u0027:\n\t\tparams \u003d {\u0027src_stage\u0027: src_stage, \u0027dest_stage\u0027: dest_stage,\n\t\t\t\t\t\u0027src_whid\u0027: src_whid, \u0027dest_whid\u0027: dest_whid}\n\telif operation \u003d\u003d \u0027migrate_flowviews\u0027:\n\t\tparams \u003d {\u0027src_stage\u0027: src_stage, \u0027dest_stage\u0027: dest_stage,\n\t\t\t\t\t\u0027src_whid\u0027: src_whid, \u0027dest_whid\u0027: dest_whid,\n\t\t\t\t\t\u0027src_flowview\u0027: src_flowview, \u0027dest_flowview\u0027: dest_flowview,\n\t\t\t\t\t\u0027copy_option\u0027: copy_option}\n\ttry:\n\t\tresp \u003d getattr(s3m, operation)(**params)\n\t\tmsg \u003d pformat(sanitize_tree(resp))\n\t\tsystem.perspective.print(msg)\n\t\tself.show_success_dialog(msg)\n\t\tself.update_bindings()\n\texcept:\n\t\timport traceback\n\t\tmsg \u003d \u0027Error executing %s operation! \\nError: %s\u0027 % (\n\t\t\t\toperation, traceback.format_exc())\n\t\tsystem.perspective.print(msg)\n\t\tself.show_error_dialog(msg)\n\t"
},
{
"name": "show_confirm_dialog",
"params": [
"payload\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 payload of data to pass to the popup\n\toperation \u003d self.view.custom.flow_view_copy_operation\n\tsrc_stage \u003d self.view.custom.stage_source\n\tdest_stage \u003d self.view.custom.stage_destination\n\tsrc_whid \u003d self.view.custom.whid_source\n\tdest_whid \u003d self.view.custom.whid_destination\n\tsrc_flowview \u003d self.view.custom.flow_view_source\n\tdest_flowview \u003d self.view.custom.flow_view_destination\n\tcopy_option \u003d self.view.custom.flow_view_copy_option\n\tmsg \u003d \u0027\u0027\n\tif operation \u003d\u003d \u0027migrate_stages\u0027:\n\t\tmsg \u003d (\u0027Migrate all flow view files for whid: %s \\n\u0027\n\t\t\t\u0027From %s stage to %s stage? \\n\u0027\n\t\t\t\u0027This operation may take several minutes\u0027) % (\n\t\t\tsrc_whid, src_stage, dest_stage)\n\telif operation \u003d\u003d \u0027migrate_sites\u0027:\n\t\tmsg \u003d (\u0027Migrate all flow view files for whid: %s to whid: %s \\n\u0027\n\t\t\t\u0027From %s stage to %s stage? \\n\u0027\n\t\t\t\u0027This operation may take several minutes\u0027) % (\n\t\t\tsrc_whid, dest_whid, src_stage, dest_stage)\n\telif operation \u003d\u003d \u0027migrate_flowviews\u0027:\n\t\tif copy_option \u003d\u003d \u0027both\u0027:\n\t\t\tcopy_prompt \u003d \u0027both svg image and config json files\u0027\n\t\telif copy_option \u003d\u003d \u0027svg\u0027:\n\t\t\tcopy_prompt \u003d \u0027svg image file\u0027\n\t\telse:\n\t\t\tcopy_prompt \u003d \u0027config json file\u0027\n\t\tmsg \u003d (\u0027Copy %s for flowview: %s to flowview: %s \\n\u0027\n\t\t\t\u0027From whid: %s to whid: %s \\n\u0027\n\t\t\t\u0027From %s stage to %s stage?\u0027) % (\n\t\t\tcopy_prompt, src_flowview, dest_flowview, \n\t\t\tsrc_whid, dest_whid, src_stage, dest_stage)\n\tpayload \u003d {}\t\t\n\tAlerts.showAlert(\n\t\t\"info\", \n\t\t\"Copy Flow View Files?\", \n\t\tmsg, \n\t\t\"true\",\n\t\t\"Continue\", \n\t\t\"Cancel\", \n\t\t\"file_copy\", \n\t\t\"\", \n\t\t\"right\", \n\t\t\"confirm_copy_operation\", \n\t\t\"closePopup\", \n\t\t\"closePopup\",\n\t\tpayload\n\t)\n\t\t\t"
}
],
"extensionFunctions": null,
"messageHandlers": [
{
"messageType": "confirm_copy_operation",
"pageScope": true,
"script": "\tsystem.perspective.closePopup(\u0027alertDialog\u0027)\n\t# call the copy_operation custom method\n\tself.copy_operation()\n\t\t",
"sessionScope": true,
"viewScope": false
}
]
},
"type": "ia.input.button"
}
],
"meta": {
"name": "FlexContainer Buttons"
},
"position": {
"basis": "50%",
"shrink": 0
},
"props": {
"justify": "center"
},
"type": "ia.container.flex"
}
],
"meta": {
"name": "FlexContainer Controls"
},
"position": {
"shrink": 0
},
"type": "ia.container.flex"
}
],
"meta": {
"name": "root"
},
"props": {
"direction": "column"
},
"scripts": {
"customMethods": [
{
"name": "update_instance_position",
"params": [
"payload\u003dNone"
],
"script": "\t\"\"\"\n\t\tupdate instance position based on payload received\n\t:param payload: dict; payload of values to update from message handler\n\t\"\"\"\n\tfrom helper.helper import sanitize_tree\n\tpos_keys \u003d [\u0027top\u0027,\u0027left\u0027,\u0027width\u0027,\u0027height\u0027]\n\tif not isinstance(payload, dict):\n\t\tmsg \u003d \u0027payload to update_instance_position must be a dictionary object!\u0027\n\t\tsystem.perspective.print(msg)\n\t\tself.show_error_dialog(msg)\n\t\treturn\n\tbad_keys \u003d [k for k in payload.keys() if k not in pos_keys]\n\tif len(bad_keys):\n\t\tmsg \u003d (\u0027Invalid keys: %s found in payload, \u0027,\n\t\t\t\t\u0027cannot be applied to instance.position.\\nValid keys: %s\u0027) % (\n\t\t\t\tbad_keys, pos_keys)\n\t\tsystem.perpsective.print(msg)\n\t\tself.show_error_dialog(msg)\n\t\treturn\n\tinstance \u003d sanitize_tree(self.view.params.instance)\n\tinstance.update(payload)\n\tself.view.params.instance \u003d instance\n\t"
},
{
"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": "update_instance_config",
"params": [],
"script": "\t\"\"\"\n\t\tUpdate the instance config on the parent container\n\t\"\"\"\n\tfrom helper.helper import sanitize_tree\n\tfrom pprint import pformat"
},
{
"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"
},
{
"name": "initialize_form",
"params": [],
"script": "\t# initialize flow-view selections\n\tselected_flow_view \u003d self.session.custom.flow_view_config.site_config.selected_flow_view\n\tself.view.custom.flow_view_source \u003d selected_flow_view\n\tself.view.custom.flow_view_destination \u003d selected_flow_view\n\t# initialize WHID selections\n\tselected_whid \u003d self.session.custom.flow_view_config.site_config.whid\n\tself.view.custom.whid_source \u003d selected_whid\n\tself.view.custom.whid_destination \u003d selected_whid\n\t# initialize stage selections\n\tselected_stage \u003d self.session.custom.flow_view_config.stage_config.stage\n\tself.view.custom.stage_source \u003d selected_stage\n\tself.view.custom.stage_destination \u003d selected_stage\n\t# initialize the flow view copy option\n\tself.view.custom.flow_view_copy_option \u003d \u0027both\u0027\n\t\t"
}
],
"extensionFunctions": null,
"messageHandlers": [
{
"messageType": "request_initialize_form",
"pageScope": false,
"script": "\t# initialize form on call\n\tself.initialize_form()",
"sessionScope": true,
"viewScope": true
}
]
},
"type": "ia.container.flex"
}
}