{ "custom": { "key": { "alt_pageid": "library", "pageid": "library", "start_time": { "$": [ "ts", 192, 1702653666845 ], "$ts": 1702653102761 } } }, "events": { "system": { "onStartup": { "config": { "script": "\t#############################################################################################\n\t# Purpose:\tThis script searches the current views in the parent project. Script compares \t#\n\t#\t\t\tthe information from S3 to make sure the correct paths and information is\t\t#\n\t#\t\t\tdisplayed to the child objects. Where the path is the key for the JSON\t\t\t#\n\t# Login: \t\t\tDate:\t\t\t\t#Comment:\t\t\t\t\t\t\t\tVersion:\t# \n\t# dmamani\t\t\t1/4/23\t\t\t\tRelease to Production\t\t\t\t\tV1\t\t\t#\n\t# \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t#\n\t#############################################################################################\n\t\t\n\t# - Params to Force Filters to show all symbols on the custom properties\n\tself.session.custom.alarm_filter.show_running \u003d True\n\tself.session.custom.alarm_filter.show_safety \u003d True\n\tself.session.custom.alarm_filter.show_diagnostic \u003d True\n\tself.session.custom.alarm_filter.show_gateways \u003d True\n\tself.session.custom.alarm_filter.show_low_alarm \u003d True\n\tfrom SymbolLibrary import list_categories, fetch_library, update_symbol_library\n\t# - Default Symbol JSON structure definitions\n\tdefault_symbol_info \u003d {\"description\": \"\",\t\"name\": \"\",\t\"category\": \"\",\"info\": \"\"} \n\t# - Get all Symbol Views and write them to tags\n\tproject_info \u003d system.perspective.getProjectInfo()\n\tviews \u003d project_info.get(\u0027views\u0027,[])\n\t# - Define criterias\n\tfilter_criterion \u003d \"Symbol-Views\"\n\tfilter_criterion2 \u003d \"Symbol-Library-Views\"\n\tfilter_criterion3 \u003d \"Controller-Views\"\n\tfilter_criterion4 \u003d \"Symbol-Views/Equipment-Views/Test\"\n\t# - Filter views that are not necessary for the symbol library and ensure the correct path\n\tfiltered_views \u003d [\n\t\tview for view in views \n\t\tif filter_criterion in view.get(\u0027path\u0027,\u0027\u0027) \n\t\tand not filter_criterion2 in view.get(\u0027path\u0027,\u0027\u0027) \n\t\tand not filter_criterion3 in view.get(\u0027path\u0027,\u0027\u0027)\n\t\tand not filter_criterion4 in view.get(\u0027path\u0027,\u0027\u0027)\n\t\t]\n\t# - Create JSON from the list \n\tjson_structure \u003d []\n\tsymbol_view_list \u003d []\n\tfor view in filtered_views:\n\t\tinstance \u003d {\n\t\t\t\"instanceStyle\": {\n\t\t\t\t\"classes\": \"\"\n\t\t\t},\n\t\t\t\"instancePosition\": {},\n\t\t\t\"Path\": view.get(\u0027path\u0027,\u0027\u0027),\n\t\t\t\"forceRunning\": 3,\n\t\t\t\"forceFault\": None\n\t\t}\n\t\tjson_structure.append(instance)\n\t\tsymbol_view_list.append(view.get(\u0027path\u0027,\u0027\u0027))\n\tjson_structure.sort(key \u003d lambda x:x[\u0027Path\u0027].split(\"/\")[len(x[\u0027Path\u0027].split(\"/\"))-1])\n\t# - Encode JSON for igniton variables to populate correctly\n\tjson_result \u003d system.util.jsonEncode(json_structure)\n\tself.params.Dataset \u003d filtered_views\n\tself.params.FilteredViews \u003d json_structure\n\tsystem.perspective.print(filtered_views)\n\t\n\t# - Get all Symbol Categories from JSON Dictionary\t\n\tremote_json \u003d fetch_library(username\u003dself.session.props.auth.user.userName)\n\tfor path in json_structure:\n\t\tif path[\"Path\"] not in remote_json:\n\t\t\tupdate_symbol_library(path[\"Path\"], username\u003dself.session.props.auth.user.userName, **default_symbol_info)\n\t\t\tremote_json[path[\"Path\"]] \u003d default_symbol_info\n\t# - Remove by key in case symbol does not exist in Folder Structure\n\tself.params.SymbolLibrary \u003d {k: v for k, v in remote_json.items() if k in symbol_view_list}\n\tcategory_data \u003d [{\"Category\": category} for category in list_categories(self.params.SymbolLibrary)]\n\tself.params.CategoryList \u003d category_data\n" }, "scope": "G", "type": "script" } } }, "params": { "CategoryList": [ { "Category": "ALL" }, { "Category": "Control" }, { "Category": "Device Status" }, { "Category": "Equipment Status" }, { "Category": "Field Device" }, { "Category": "Machine" }, { "Category": "Network" }, { "Category": "Not in use" }, { "Category": "Safety" } ], "SelectedCategory": "", "SelectedDescription": "", "SelectedInfo": "", "SelectedPath": "", "SelectedRow": "ALL", "SymbolDetails": { "ARSAW": { "category": "", "description": "", "info": "Test", "path": "Symbol-Views/Equipment-Views/ARSAW" }, "AUS": { "category": "A", "description": "AUS DESCRIPTION AUS DESCRIPTIONAUS DESCRIPTIONAUS DESCRIPTIONAUS DESCRIPTIONAUS DESCRIPTIONAUS DESCRIPTIONAUS DESCRIPTIONAUS DESCRIPTIONAUS DESCRIPTIONAUS DESCRIPTIONAUS DESCRIPTIONAUS DESCRIPTIONAUS DESCRIPTIONAUS DESCRIPTIONAUS DESCRIPTIONAUS DESCRIPTIONAUS DESCRIPTION", "info": "AUS INFO AUS INFO AUS INFO AUS INFO AUS INFO AUS INFO AUS INFO AUS INFO AUS INFO AUS INFO ", "path": "Symbol-Views/Equipment-Views/AUS" }, "Camera": { "category": "", "description": "", "info": "", "path": "Symbol-Views/Equipment-Views/Camera" }, "ControlCabinet": { "category": "", "description": "", "info": "### Symbol Information\nDate Created: 12/20/21\n\nCreated By: amazonuser\n\nSize: 10X10", "path": "Symbol-Views/Equipment-Views/ControlCabinet" }, "DeviceStatus": { "category": "B", "description": "", "info": "", "path": "Symbol-Views/Device-Views/DeviceStatus" }, "DeviceStatus_old": { "category": "", "description": "", "info": "", "path": "Symbol-Views/Device-Views/DeviceStatus_old" }, "Estop": { "category": "C", "description": "E-stop description, E-stop description, E-stop description, E-stop description, E-stop description", "info": "E-stop info, E-stop info, E-stop info, E-stop info, E-stop info, E-stop info, E-stop info", "path": "Symbol-Views/Equipment-Views/Estop" }, "GoodsLift": { "category": "", "description": "", "info": "", "path": "Symbol-Views/Equipment-Views/GoodsLift" }, "JAM": { "category": "", "description": "", "info": "", "path": "Symbol-Views/Equipment-Views/JAM" }, "Light_Curtain": { "category": "B", "description": "", "info": "", "path": "Symbol-Views/Equipment-Views/Light_Curtain" }, "Main_Panel": { "category": "", "description": "", "info": "", "path": "Symbol-Views/Equipment-Views/Main_Panel" }, "Network": { "category": "", "description": "", "info": "", "path": "Symbol-Views/Equipment-Views/Network" }, "Pointer": { "category": "", "description": "", "info": "", "path": "Symbol-Views/Equipment-Views/Pointer" }, "PressureSwitch": { "category": "", "description": "", "info": "", "path": "Symbol-Views/Equipment-Views/PressureSwitch" }, "PullChord": { "category": "", "description": "", "info": "", "path": "Symbol-Views/Equipment-Views/PullChord" }, "PullChord_End": { "category": "", "description": "", "info": "", "path": "Symbol-Views/Equipment-Views/PullChord_End" }, "PullChord_Line": { "category": "", "description": "", "info": "", "path": "Symbol-Views/Equipment-Views/PullChord_Line" }, "PullChord_Line_Vertical": { "category": "", "description": "", "info": "", "path": "Symbol-Views/Equipment-Views/PullChord_Line_Vertical" }, "RFID": { "category": "", "description": "", "info": "", "path": "Symbol-Views/Equipment-Views/RFID" }, "Robot": { "category": "", "description": "", "info": "", "path": "Symbol-Views/Equipment-Views/Robot" }, "SLAMs": { "category": "", "description": "", "info": "", "path": "Symbol-Views/Equipment-Views/SLAMs" }, "SafetyGate": { "category": "", "description": "", "info": "", "path": "Symbol-Views/Equipment-Views/SafetyGate" }, "Stacker_Destacker": { "category": "", "description": "", "info": "", "path": "Symbol-Views/Equipment-Views/Stacker_Destacker" }, "Status": { "category": "", "description": "", "info": "", "path": "Symbol-Views/Equipment-Views/Status" }, "StatusNonPowered": { "category": "", "description": "", "info": "", "path": "Symbol-Views/Equipment-Views/StatusNonPowered" }, "StatusNonPowered_NS": { "category": "", "description": "", "info": "", "path": "Symbol-Views/Equipment-Views/StatusNonPowered_NS" }, "Status_NS": { "category": "", "description": "", "info": "", "path": "Symbol-Views/Equipment-Views/Status_NS" }, "THEA": { "category": "", "description": "", "info": "", "path": "Symbol-Views/Equipment-Views/THEA" } }, "SymbolLibrary": "" }, "propConfig": { "custom.key": { "persistent": true }, "params.CategoryList": { "binding": { "config": { "bidirectional": true, "path": "/root/Dashboard.props.widgets[0].viewParams.Categories" }, "type": "property" }, "paramDirection": "inout", "persistent": true }, "params.Dataset": { "binding": { "config": { "path": "/root/Dashboard.props.widgets[3].viewParams.Dataset" }, "type": "property" } }, "params.FilteredViews": { "binding": { "config": { "bidirectional": true, "path": "/root/Dashboard.props.widgets[3].viewParams.FilteredViews" }, "type": "property" } }, "params.SelectedCategory": { "paramDirection": "input", "persistent": true }, "params.SelectedDescription": { "binding": { "config": { "bidirectional": true, "path": "/root/Dashboard.props.widgets[1].viewParams.Description" }, "type": "property" }, "paramDirection": "inout", "persistent": true }, "params.SelectedInfo": { "binding": { "config": { "bidirectional": true, "path": "/root/Dashboard.props.widgets[2].viewParams.Information" }, "type": "property" }, "paramDirection": "inout", "persistent": true }, "params.SelectedPath": { "paramDirection": "input", "persistent": true }, "params.SelectedRow": { "onChange": { "enabled": null, "script": "\tfrom SymbolLibrary import search_items\n\tsystem.perspective.print(currentValue.value)\n\titems \u003d [{\t\"instanceStyle\": {\n\t\t\t\t\"classes\": \"\"\n\t\t\t\t\t},\n\t\t\t\t\t\"instancePosition\": {},\n\t\t\t\t\t\"forceRunning\": 3,\n\t\t\t\t\t\"forceFault\": None,\n\t\t\t\t\"Path\": item} for item in search_items(self.params.SymbolLibrary,currentValue.value)]\n\tsystem.perspective.print(items)\n\tself.params.FilteredViews \u003d items\n\t\n\t" }, "paramDirection": "inout", "persistent": true }, "params.SymbolDetails": { "binding": { "config": { "path": "" }, "enabled": false, "transforms": [ { "code": "\tfrom SymbolLibrary import library_items\n\treturn library_items", "type": "script" } ], "type": "property" }, "paramDirection": "inout", "persistent": true }, "params.SymbolLibrary": { "binding": { "config": { "path": "/root/Dashboard.props.widgets[3].viewParams.SymbolLibrary" }, "type": "property" }, "paramDirection": "inout", "persistent": true } }, "props": { "defaultSize": { "height": 786, "width": 1196 } }, "root": { "children": [ { "events": { "dom": { "onDoubleClick": { "config": { "draggable": true, "id": "editItem", "modal": false, "overlayDismiss": false, "resizable": true, "showCloseIcon": true, "type": "open", "viewParams": { "btnTextPrimary": "Submit Changes", "btnTextSecondary": "", "editField1": "{view.params.SelectedCategory}", "editField2": "{view.params.SelectedInfo}", "editField3": "{view.params.SelectedDescription}", "field1Description": "Category", "field2Description": "Information", "field3Description": "Description", "message": " ", "path": "{view.params.SelectedPath}", "showCloseBtn": "False", "title": "Update Symbol Details" }, "viewPath": "PopUp-Views/EditItem", "viewportBound": false }, "scope": "C", "type": "popup" } } }, "meta": { "name": "Dashboard" }, "position": { "basis": "400px", "grow": 1 }, "propConfig": { "props.widgets[0].viewParams.Dataset": { "binding": { "config": { "path": "view.params.Dataset" }, "type": "property" } } }, "props": { "editingToggle": false, "stretch": { "rowCount": 5 }, "widgets": [ { "body": { "style": { "classes": "" } }, "header": { "enabled": true, "style": { "classes": "" }, "title": "Category" }, "isConfigurable": false, "minSize": { "columnSpan": 1, "rowSpan": 1 }, "name": "Category", "position": { "columnEnd": 3, "columnStart": 1, "rowEnd": 3, "rowStart": 1 }, "style": { "classes": "" }, "viewParams": { "Categories": [ { "Category": "ALL" }, { "Category": "Control" }, { "Category": "Device Status" }, { "Category": "Equipment Status" }, { "Category": "Field Device" }, { "Category": "Machine" }, { "Category": "Network" }, { "Category": "Not in use" }, { "Category": "Safety" } ], "SelectedRow": "" }, "viewPath": "Symbol-Views/Symbol-Library-Views/Symbol-Filter-View" }, { "body": { "style": { "classes": "" } }, "header": { "enabled": true, "style": { "classes": "" }, "title": "Symbol Description" }, "isConfigurable": false, "minSize": { "columnSpan": 1, "rowSpan": 1 }, "name": "Description", "position": { "columnEnd": 9, "columnStart": 3, "rowEnd": 6, "rowStart": 4 }, "style": { "classes": "" }, "viewParams": { "Description": "" }, "viewPath": "Symbol-Views/Symbol-Library-Views/Selected-Symbol-Description" }, { "body": { "style": { "classes": "" } }, "header": { "enabled": true, "style": { "classes": "" }, "title": "Symbol Information" }, "isConfigurable": false, "minSize": { "columnSpan": 1, "rowSpan": 1 }, "name": "Information", "position": { "columnEnd": 3, "columnStart": 1, "rowEnd": 6, "rowStart": 3 }, "style": { "classes": "" }, "viewParams": { "Information": "" }, "viewPath": "Symbol-Views/Symbol-Library-Views/Symbol-Information-View" }, { "body": { "style": { "classes": "" } }, "header": { "enabled": true, "style": { "classes": "" }, "title": "Symbol Library - All Available Symbols" }, "isConfigurable": false, "minSize": { "columnSpan": 1, "rowSpan": 1 }, "name": "Description", "position": { "columnEnd": 9, "columnStart": 3, "rowEnd": 4, "rowStart": 1 }, "style": { "classes": "" }, "viewParams": { "Dataset": [ { "path": "Symbol-Views/Device-Views/DeviceStatus" }, { "path": "Symbol-Views/Device-Views/DeviceStatus_old" }, { "path": "Symbol-Views/Device-Views/Estop" }, { "path": "Symbol-Views/Equipment-Views/ARSAW" }, { "path": "Symbol-Views/Equipment-Views/AUS" }, { "path": "Symbol-Views/Equipment-Views/Camera" }, { "path": "Symbol-Views/Equipment-Views/ControlCabinet" }, { "path": "Symbol-Views/Equipment-Views/Estop" }, { "path": "Symbol-Views/Equipment-Views/GoodsLift" }, { "path": "Symbol-Views/Equipment-Views/JAM" }, { "path": "Symbol-Views/Equipment-Views/Light_Curtain" }, { "path": "Symbol-Views/Equipment-Views/Main_Panel" }, { "path": "Symbol-Views/Equipment-Views/Network" }, { "path": "Symbol-Views/Equipment-Views/Pointer" }, { "path": "Symbol-Views/Equipment-Views/PressureSwitch" }, { "path": "Symbol-Views/Equipment-Views/PullChord" }, { "path": "Symbol-Views/Equipment-Views/PullChord_End" }, { "path": "Symbol-Views/Equipment-Views/PullChord_Line" }, { "path": "Symbol-Views/Equipment-Views/PullChord_Line_Vertical" }, { "path": "Symbol-Views/Equipment-Views/RFID" }, { "path": "Symbol-Views/Equipment-Views/Robot" }, { "path": "Symbol-Views/Equipment-Views/SLAMs" }, { "path": "Symbol-Views/Equipment-Views/SafetyGate" }, { "path": "Symbol-Views/Equipment-Views/Stacker_Destacker" }, { "path": "Symbol-Views/Equipment-Views/Status" }, { "path": "Symbol-Views/Equipment-Views/StatusNonPowered" }, { "path": "Symbol-Views/Equipment-Views/StatusNonPowered_NS" }, { "path": "Symbol-Views/Equipment-Views/Status_NS" }, { "path": "Symbol-Views/Equipment-Views/THEA" }, { "path": "Symbol-Views/Equipment-Views/Test" } ], "FilteredViews": [ { "Path": "Symbol-Views/Equipment-Views/ARSAW", "forceFault": null, "forceRunning": 3, "instancePosition": {}, "instanceStyle": { "classes": "" } }, { "Path": "Symbol-Views/Equipment-Views/AUS", "forceFault": null, "forceRunning": 3, "instancePosition": {}, "instanceStyle": { "classes": "" } }, { "Path": "Symbol-Views/Equipment-Views/Camera", "forceFault": null, "forceRunning": 3, "instancePosition": {}, "instanceStyle": { "classes": "" } }, { "Path": "Symbol-Views/Equipment-Views/CognexCamera", "forceFault": null, "forceRunning": 3, "instancePosition": {}, "instanceStyle": { "classes": "" } }, { "Path": "Symbol-Views/Equipment-Views/ControlCabinet", "forceFault": null, "forceRunning": 3, "instancePosition": {}, "instanceStyle": { "classes": "" } }, { "Path": "Symbol-Views/Device-Views/DeviceStatus", "forceFault": null, "forceRunning": 3, "instancePosition": {}, "instanceStyle": { "classes": "" } }, { "Path": "Symbol-Views/Device-Views/DeviceStatus_old", "forceFault": null, "forceRunning": 3, "instancePosition": {}, "instanceStyle": { "classes": "" } }, { "Path": "Symbol-Views/Device-Views/Estop", "forceFault": null, "forceRunning": 3, "instancePosition": {}, "instanceStyle": { "classes": "" } }, { "Path": "Symbol-Views/Equipment-Views/Estop", "forceFault": null, "forceRunning": 3, "instancePosition": {}, "instanceStyle": { "classes": "" } }, { "Path": "Symbol-Views/Equipment-Views/GoodsLift", "forceFault": null, "forceRunning": 3, "instancePosition": {}, "instanceStyle": { "classes": "" } }, { "Path": "Symbol-Views/Equipment-Views/JAM", "forceFault": null, "forceRunning": 3, "instancePosition": {}, "instanceStyle": { "classes": "" } }, { "Path": "Symbol-Views/Equipment-Views/Light_Curtain", "forceFault": null, "forceRunning": 3, "instancePosition": {}, "instanceStyle": { "classes": "" } }, { "Path": "Symbol-Views/Equipment-Views/Main_Panel", "forceFault": null, "forceRunning": 3, "instancePosition": {}, "instanceStyle": { "classes": "" } }, { "Path": "Symbol-Views/Equipment-Views/Network", "forceFault": null, "forceRunning": 3, "instancePosition": {}, "instanceStyle": { "classes": "" } }, { "Path": "Symbol-Views/Equipment-Views/Pointer", "forceFault": null, "forceRunning": 3, "instancePosition": {}, "instanceStyle": { "classes": "" } }, { "Path": "Symbol-Views/Equipment-Views/PressureSwitch", "forceFault": null, "forceRunning": 3, "instancePosition": {}, "instanceStyle": { "classes": "" } }, { "Path": "Symbol-Views/Equipment-Views/PullChord", "forceFault": null, "forceRunning": 3, "instancePosition": {}, "instanceStyle": { "classes": "" } }, { "Path": "Symbol-Views/Equipment-Views/PullChord_End", "forceFault": null, "forceRunning": 3, "instancePosition": {}, "instanceStyle": { "classes": "" } }, { "Path": "Symbol-Views/Equipment-Views/PullChord_Line", "forceFault": null, "forceRunning": 3, "instancePosition": {}, "instanceStyle": { "classes": "" } }, { "Path": "Symbol-Views/Equipment-Views/PullChord_Line_Vertical", "forceFault": null, "forceRunning": 3, "instancePosition": {}, "instanceStyle": { "classes": "" } }, { "Path": "Symbol-Views/Equipment-Views/RFID", "forceFault": null, "forceRunning": 3, "instancePosition": {}, "instanceStyle": { "classes": "" } }, { "Path": "Symbol-Views/Equipment-Views/Robot", "forceFault": null, "forceRunning": 3, "instancePosition": {}, "instanceStyle": { "classes": "" } }, { "Path": "Symbol-Views/Equipment-Views/SLAMs", "forceFault": null, "forceRunning": 3, "instancePosition": {}, "instanceStyle": { "classes": "" } }, { "Path": "Symbol-Views/Equipment-Views/SafetyGate", "forceFault": null, "forceRunning": 3, "instancePosition": {}, "instanceStyle": { "classes": "" } }, { "Path": "Symbol-Views/Equipment-Views/Stacker_Destacker", "forceFault": null, "forceRunning": 3, "instancePosition": {}, "instanceStyle": { "classes": "" } }, { "Path": "Symbol-Views/Equipment-Views/Status", "forceFault": null, "forceRunning": 3, "instancePosition": {}, "instanceStyle": { "classes": "" } }, { "Path": "Symbol-Views/Equipment-Views/StatusNonPowered", "forceFault": null, "forceRunning": 3, "instancePosition": {}, "instanceStyle": { "classes": "" } }, { "Path": "Symbol-Views/Equipment-Views/StatusNonPowered_NS", "forceFault": null, "forceRunning": 3, "instancePosition": {}, "instanceStyle": { "classes": "" } }, { "Path": "Symbol-Views/Equipment-Views/Status_NS", "forceFault": null, "forceRunning": 3, "instancePosition": {}, "instanceStyle": { "classes": "" } }, { "Path": "Symbol-Views/Equipment-Views/THEA", "forceFault": null, "forceRunning": 3, "instancePosition": {}, "instanceStyle": { "classes": "" } } ], "SelectedValue": "", "SymbolLibrary": "", "key": "" }, "viewPath": "Symbol-Views/Symbol-Library-Views/Symbol-Icons-View" } ] }, "type": "ia.display.dashboard" } ], "meta": { "name": "root" }, "scripts": { "customMethods": [], "extensionFunctions": null, "messageHandlers": [ { "messageType": "UserClickInfo", "pageScope": true, "script": "\tfrom pprint import pformat\n\tSymbolPath \u003d payload[\"UserClickPath\"]\n\tsystem.perspective.print(pformat(self.view.params.SymbolLibrary[SymbolPath]))\n\tself.view.params.SelectedInfo \u003d self.view.params.SymbolLibrary[SymbolPath][\u0027info\u0027]\n\tself.view.params.SelectedDescription \u003d self.view.params.SymbolLibrary[SymbolPath][\u0027description\u0027]\n\tself.view.params.SelectedPath \u003d SymbolPath \n\tself.view.params.SelectedCategory \u003d self.view.params.SymbolLibrary[SymbolPath][\u0027category\u0027]\n\tsystem.perspective.print(SymbolPath)\n", "sessionScope": false, "viewScope": false }, { "messageType": "UserClickCategory", "pageScope": true, "script": "\n\tSelectedRow \u003d payload[\"UserClickData\"]\n\tself.view.params.SelectedRow \u003d SelectedRow", "sessionScope": false, "viewScope": false }, { "messageType": "UserClickRefresh", "pageScope": true, "script": "\tfrom SymbolLibrary import list_categories, fetch_library\n\t\n\t#Get all Symbol Views and write them to tags\n\tproject_info \u003d system.perspective.getProjectInfo()\n\tviews \u003d project_info.get(\u0027views\u0027,[])\n\t# - Define criterias\n\tfilter_criterion \u003d \"Symbol-Views\"\n\tfilter_criterion2 \u003d \"Symbol-Library-Views\"\n\tfilter_criterion3 \u003d \"Controller-Views\"\n\tfilter_criterion4 \u003d \"Symbol-Views/Equipment-Views/Test\"\n\t# - Filter views that are not necessary for the symbol library and ensure the correct path\n\tfiltered_views \u003d [\n\t\tview for view in views \n\t\tif filter_criterion in view.get(\u0027path\u0027,\u0027\u0027) \n\t\tand not filter_criterion2 in view.get(\u0027path\u0027,\u0027\u0027) \n\t\tand not filter_criterion3 in view.get(\u0027path\u0027,\u0027\u0027)\n\t\tand not filter_criterion4 in view.get(\u0027path\u0027,\u0027\u0027)\n\t\t]\n\t# - Create JSON from the list \n\tjson_structure \u003d []\n\tsymbol_view_list \u003d []\n\tfor view in filtered_views:\n\t\tinstance \u003d {\n\t\t\t\"instanceStyle\": {\n\t\t\t\t\"classes\": \"\"\n\t\t\t},\n\t\t\t\"instancePosition\": {},\n\t\t\t\"Path\": view.get(\u0027path\u0027,\u0027\u0027),\n\t\t\t\"forceRunning\": 3,\n\t\t\t\"forceFault\": None\n\t\t}\n\t\tjson_structure.append(instance)\n\t\tsymbol_view_list.append(view.get(\u0027path\u0027,\u0027\u0027))\n\tjson_structure.sort(key \u003d lambda x:x[\u0027Path\u0027].split(\"/\")[len(x[\u0027Path\u0027].split(\"/\"))-1])\t\n\t# - Encode JSON for igniton variables to populate correctly\n\tjson_result \u003d system.util.jsonEncode(json_structure)\n\tself.view.params.Dataset \u003d filtered_views\n\tself.view.params.FilteredViews \u003d json_structure\n\tsystem.perspective.print(filtered_views)\n\t\n\t# - Get all Symbol Categories from JSON Dictionary\t\n\tremote_json \u003d fetch_library(username\u003dself.session.props.auth.user.userName)\n\tself.view.params.SymbolLibrary \u003d {k: v for k, v in remote_json.items() if k in symbol_view_list}\n\tcategory_data \u003d [{\"Category\": category} for category in list_categories(self.view.params.SymbolLibrary)]\n\tself.view.params.CategoryList \u003d category_data\n\tself.view.params.SelectedRow \u003d \u0027ALL\u0027\n\tself.view.params.SelectedDescription \u003d \"\"\n\tself.view.params.SelectedInfo \u003d \"\"", "sessionScope": false, "viewScope": false } ] }, "type": "ia.container.flex" } }