{ "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" } }