diff --git a/CNO8_SCADA/com.inductiveautomation.perspective/views/Windows/Statistics/view.json b/CNO8_SCADA/com.inductiveautomation.perspective/views/Windows/Statistics/view.json index 0480b49..56561e5 100644 --- a/CNO8_SCADA/com.inductiveautomation.perspective/views/Windows/Statistics/view.json +++ b/CNO8_SCADA/com.inductiveautomation.perspective/views/Windows/Statistics/view.json @@ -4615,7 +4615,7 @@ }, "render": "auto", "resizable": true, - "sort": "none", + "sort": "descending", "sortable": true, "strictWidth": false, "style": { @@ -4862,7 +4862,6 @@ } ], "filter": { - "enabled": true, "results": { "enabled": true } @@ -4878,6 +4877,12 @@ "selection": { "enableRowSelection": false }, + "sortOrder": [ + "ULC1" + ], + "style": { + "marginTop": 20 + }, "virtualized": false }, "type": "ia.display.table" @@ -7602,7 +7607,7 @@ "style": { "fontSize": "1.5vmin" }, - "value": "Count" + "value": "Rate" }, "type": "ia.input.dropdown" } @@ -9091,7 +9096,7 @@ "component": { "onActionPerformed": { "config": { - "script": "\tdata \u003d []\n\ttable \u003d []\n\timport datetime\n\tcurrent_datetime\u003ddatetime.datetime.now()\n\tstr_date \u003d current_datetime.strftime(\"%m-%d-%Y %I-%M\")\n\n\n\tif self.getSibling(\"Statistics\").props.currentTabIndex \u003d\u003d 12:\n\t\tresults \u003d self.parent.getChild(\"Statistics\").getChild(\"Induct Details\").getChild(\"Induct Details\").props.filter.results.data\n\t\tif(len(results) \u003e 0):\n\t\t\tif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Count\":\n\t\t\t\theaders \u003d [\"Start Timestamp\", \"End Timestamp\", \"Sorter\",\"Induct\",\"Total (#)\",\"Single Carrier (#)\",\"Double Carrier (#)\"]\n\t\t\t\tfor result in results:\n\t\t\t\t\tdata.append([result[\u0027Startstamp\u0027],result[\u0027Endtstamp\u0027],result[\u0027SorterName\u0027],result[\u0027InductName\u0027],result[\u0027Total_count\u0027],result[\u0027singlecarrier_count\u0027],result[\u0027doublecarrier_count\u0027]])\n\t\t\telif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Percentage\":\n\t\t\t\theaders \u003d [\"Start Timestamp\", \"End Timestamp\", \"Sorter\",\"Induct\",\"Total (%)\",\"Single Carrier (%)\",\"Double Carrier (%)\"]\n\t\t\t\tfor result in results:\n\t\t\t\t\tdata.append([result[\u0027Startstamp\u0027],result[\u0027Endtstamp\u0027],result[\u0027SorterName\u0027],result[\u0027InductName\u0027],result[\u0027Total_perc\u0027],result[\u0027SingleCarrier_perc\u0027],result[\u0027DoubleCarrier_perc\u0027]])\n\t\t\telif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Rate\":\n\t\t\t\theaders \u003d [\"Start Timestamp\", \"End Timestamp\", \"Sorter\",\"Induct\",\"Total (pph)\",\"Single Carrier (pph)\",\"Double Carrier (pph)\"]\n\t\t\t\tfor result in results:\n\t\t\t\t\tdata.append([result[\u0027Startstamp\u0027],result[\u0027Endtstamp\u0027],result[\u0027SorterName\u0027],result[\u0027InductName\u0027],result[\u0027Total_rate\u0027],result[\u0027SingleCarrier_rate\u0027],result[\u0027DoubleCarrier_rate\u0027]])\n\t\t\t\t\n\telif self.getSibling(\"Statistics\").props.currentTabIndex \u003d\u003d 1:\n\t\t\tresults \u003d self.parent.getChild(\"Statistics\").getChild(\"Dumper cycles\").getChild(\"Dumper cycles\").props.filter.results.data\n\t\t\tif(len(results) \u003e 0):\n\t\t\t\tif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Count\":\n\t\t\t\t\theaders \u003d [\"Start Timestamp\",\"Hour\",\"Cycles of ULGL1\",\"Cycles of ULGL2\",\"Cycles of ULGL3\"]\n\t\t\t\t\tfor result in results:\n\t\t\t\t\t\tdata.append([result[\u0027Start Timestamp\u0027],result[\u0027Hour\u0027],result[\u0027Cycles of ULC1\u0027],result[\u0027Cycles of ULC2\u0027],result[\u0027Cycles of ULC3\u0027], result[\u0027Cycles of ULC4\u0027]])\n\t\t\t\telif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Percentage\":\n\t\t\t\t\theaders \u003d [\"Start Timestamp\",\"Hour\",\"Cycles of ULGL1 (%)\",\"Cycles of ULGL2 (%)\",\"Cycles of ULGL3 (%)\"]\n\t\t\t\t\tfor result in results:\n\t\t\t\t\t\tdata.append([result[\u0027Start Timestamp\u0027],result[\u0027Hour\u0027],result[\u0027Cycles of ULGL1 (%)\u0027],result[\u0027Cycles of ULGL2 (%)\u0027],result[\u0027Cycles of ULGL3 (%)\u0027]])\n\t\t\t\telif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Rate\":\n\t\t\t\t\theaders \u003d [\"Start Timestamp\",\"Hour\",\"Cycles of ULC1 (cph)\",\"Cycles of ULC2 (cph)\",\"Cycles of ULC3 (cph)\", \"Cycles of ULC4 (cph)\"]\n\t\t\t\t\tfor result in results:\n\t\t\t\t\t\tdata.append([result[\u0027Start Timestamp\u0027],result[\u0027Hour\u0027],result[\u0027Cycles of ULC1 (cph)\u0027],result[\u0027Cycles of ULC2 (cph)\u0027],result[\u0027Cycles of ULC3 (cph)\u0027], result[\u0027Cycles of ULC4 (cph)\u0027]])\n\t\t\t\t\t\n\t\t\telse:\n\t\t\t\ttest_table \u003d system.dataset.toPyDataSet(self.parent.getChild(\"Statistics\").getChild(\"Dumper cycles\").getChild(\"Dumper cycles\").props.data)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\tif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Count\":\n\t\t\t\t\theaders \u003d [\"Start Timestamp\",\"Hour\",\"Cycles of ULGL1\",\"Cycles of ULGL2\",\"Cycles of ULGL3\"]\n\t\t\t\t\tfor result in test_table:\n\t\t\t\t\t\tdata.append([result[\u0027Start Timestamp\u0027],result[\u0027Hour\u0027],result[\u0027Cycles of ULGL1\u0027],result[\u0027Cycles of ULGL2\u0027],result[\u0027Cycles of ULGL3\u0027]])\n\t\t\t\telif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Percentage\":\n\t\t\t\t\theaders \u003d [\"Start Timestamp\",\"Hour\",\"Cycles of ULGL1 (%)\",\"Cycles of ULGL2 (%)\",\"Cycles of ULGL3 (%)\"]\n\t\t\t\t\tfor result in test_table:\n\t\t\t\t\t\tdata.append([result[\u0027Start Timestamp\u0027],result[\u0027Hour\u0027],result[\u0027Cycles of ULGL1 (%)\u0027],result[\u0027Cycles of ULGL2 (%)\u0027],result[\u0027Cycles of ULGL3 (%)\u0027]])\n\t\t\t\telif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Rate\":\n\t\t\t\t\theaders \u003d [\"Start Timestamp\",\"Hour\",\"Cycles of ULC1 (cph)\",\"Cycles of ULC2 (cph)\",\"Cycles of ULC3 (cph)\", \"Cycles of ULC4 (cph)\"]\n\t\t\t\t\tfor result in results:\n\t\t\t\t\t\tdata.append([result[\u0027Start Timestamp\u0027],result[\u0027Hour\u0027],result[\u0027Cycles of ULC1 (cph)\u0027],result[\u0027Cycles of ULC2 (cph)\u0027],result[\u0027Cycles of ULC3 (cph)\u0027], result[\u0027Cycles of ULC4 (cph)\u0027]])\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\ttable \u003d system.dataset.toDataSet(headers, data)\t\n\t\t\tcsv \u003d system.dataset.toCSV(table,1,0,1)\n\t\t\tsystem.perspective.download(filename \u003d str_date+\u0027 Dumper cycles.csv\u0027, data \u003d csv)\n\t\t\t\t\t\n\t\t\t\t\t\n\n\telif self.getSibling(\"Statistics\").props.currentTabIndex \u003d\u003d 0:\n\t\t\n\t\t\tresults \u003d self.parent.getChild(\"Statistics\").getChild(\"Jam Area\").getChild(\"Jam Area\").props.filter.results.data\n\t\t\tif(len(results) \u003e 0):\n\t\t\t\tif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Count\":\n\t\t\t\t\theaders \u003d [\"Start Stamp\",\"End Stamp\",\"Total Jam (#)\",\"Dumpers Jam (#)\", \"Inbound Jam (#)\",\"Runout Jam (#)\",\"Sorter Recirc Jam (#)\"]\n\t\t\t\t\tfor result in results:\n\t\t\t\t\t\tdata.append([result[\u0027Startstamp\u0027],result[\u0027Endtstamp\u0027],result[\u0027Total_Jam\u0027],result[\u0027Dumpers_jam\u0027],result[\u0027Inbound_jam\u0027],result[\u0027Runout_jam\u0027],result[\u0027Sorter_Recirc_jam\u0027]])\n\t\t\t\telif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Percentage\":\n\t\t\t\t\theaders \u003d [\"Start Stamp\",\"End Stamp\",\"Total Jam (%)\",\"Dumpers Jam (%)\", \"Inbound Jam (%)\",\"Runout Jam (%)\",\"Sorter Recirc Jam (%)\"]\n\t\t\t\t\tfor result in results:\n\t\t\t\t\t\tdata.append([result[\u0027Startstamp\u0027],result[\u0027Endtstamp\u0027],result[\u0027Total_perc\u0027],result[\u0027Dumpers_perc\u0027],result[\u0027Inbound_perc\u0027],result[\u0027Runout_perc\u0027],result[\u0027Sorter_Recirc_perc\u0027]])\n\n\t\t\t\n\t\t\telse:\n\t\t\t\ttest_table \u003d system.dataset.toPyDataSet(self.parent.getChild(\"Statistics\").getChild(\"Jam Area\").getChild(\"Jam Area\").props.data)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\tif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Count\":\n\t\t\t\t\theaders \u003d [\"Start Stamp\",\"End Stamp\",\"Total Jam (#)\",\"Dumpers Jam (#)\", \"Inbound Jam (#)\",\"Runout Jam (#)\",\"Sorter Recirc Jam (#)\"]\n\t\t\t\t\tfor result in test_table:\n\t\t\t\t\t\tdata.append([result[\u0027Startstamp\u0027],result[\u0027Endtstamp\u0027],result[\u0027Total_Jam\u0027],result[\u0027Dumpers_jam\u0027],result[\u0027Inbound_jam\u0027],result[\u0027Runout_jam\u0027],result[\u0027Sorter_Recirc_jam\u0027]])\n\t\t\t\telif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Percentage\":\n\t\t\t\t\theaders \u003d [\"Start Stamp\",\"End Stamp\",\"Total Jam (%)\",\"Dumpers Jam (%)\", \"Inbound Jam (%)\",\"Runout Jam (%)\",\"Sorter Recirc Jam (%)\"]\n\t\t\t\t\tfor result in test_table:\n\t\t\t\t\t\tdata.append([result[\u0027Startstamp\u0027],result[\u0027Endtstamp\u0027],result[\u0027Total_perc\u0027],result[\u0027Dumpers_perc\u0027],result[\u0027Inbound_perc\u0027],result[\u0027Runout_perc\u0027],result[\u0027Sorter_Recirc_perc\u0027]])\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\n\t\t\ttable \u003d system.dataset.toDataSet(headers, data)\t\n\t\t\tcsv \u003d system.dataset.toCSV(table,1,0,1)\n\t\t\tsystem.perspective.download(filename \u003d str_date+\u0027 Jam Areas.csv\u0027, data \u003d csv)\n\t\n#\t\telse:\n#\t\t\ttest_table \u003d system.dataset.toPyDataSet(self.parent.getChild(\"Statistics\").getChild(\"Induct Details\").getChild(\"Induct Details\").props.data)\n#\t\t\n#\t\t\tif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Count\":\n#\t\t\t\theaders \u003d [\"Start Timestamp\", \"End Timestamp\", \"Sorter\",\"Induct\",\"Total (#)\",\"Single Carrier (#)\",\"Double Carrier (#)\"]\n#\t\t\t\tfor result in test_table:\n#\t\t\t\t\tdata.append([result[\u0027Startstamp\u0027],result[\u0027Endtstamp\u0027],result[\u0027SorterName\u0027],result[\u0027InductName\u0027],result[\u0027Total_count\u0027],result[\u0027singlecarrier_count\u0027],result[\u0027doublecarrier_count\u0027]])\n#\t\t\telif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Percentage\":\n#\t\t\t\theaders \u003d [\"Start Timestamp\", \"End Timestamp\", \"Sorter\",\"Induct\",\"Total (%)\",\"Single Carrier (%)\",\"Double Carrier (%)\"]\n#\t\t\t\tfor result in test_table:\n#\t\t\t\t\tdata.append([result[\u0027Startstamp\u0027],result[\u0027Endtstamp\u0027],result[\u0027SorterName\u0027],result[\u0027InductName\u0027],result[\u0027Total_perc\u0027],result[\u0027SingleCarrier_perc\u0027],result[\u0027DoubleCarrier_perc\u0027]])\n#\t\t\telif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Rate\":\n#\t\t\t\theaders \u003d [\"Start Timestamp\", \"End Timestamp\", \"Sorter\",\"Induct\",\"Total (pph)\",\"Single Carrier (pph)\",\"Double Carrier (pph)\"]\n#\t\t\t\tfor result in test_table:\n#\t\t\t\t\tdata.append([result[\u0027Startstamp\u0027],result[\u0027Endtstamp\u0027],result[\u0027SorterName\u0027],result[\u0027InductName\u0027],result[\u0027Total_rate\u0027],result[\u0027SingleCarrier_rate\u0027],result[\u0027DoubleCarrier_rate\u0027]])\n#\t\t\n#\t\ttable \u003d system.dataset.toDataSet(headers, data)\t\n#\t\tcsv \u003d system.dataset.toCSV(table,1,0,1)\n#\t\tsystem.perspective.download(filename \u003d str_date+\u0027 Induct Details.csv\u0027, data \u003d csv)\t\n#\n#\t\n#\telif self.getSibling(\"Statistics\").props.currentTabIndex \u003d\u003d 11:\n#\t\tresults \u003d self.parent.getChild(\"Statistics\").getChild(\"Scanner_Details\").getChild(\"Scanner Details\").props.filter.results.data\n#\t\tif(len(results) \u003e 0):\n#\t\t\tif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Count\":\n#\t\t\t\theaders \u003d [\"Start Timestamp\", \"End Timestamp\", \"Sorter\",\"Scanner\",\"Total (#)\",\"Good Read (#)\",\"No Read (#)\",\"Multi Read (#)\",\"No Code (#)\"]\n#\t\t\t\tfor result in results:\n#\t\t\t\t\tdata.append([result[\u0027Startstamp\u0027],result[\u0027Endtstamp\u0027],result[\u0027SorterName\u0027],result[\u0027ScannerName\u0027],result[\u0027Total_count\u0027],result[\u0027GoodRead_count\u0027],result[\u0027NoRead_count\u0027],result[\u0027MultiLabelRead_count\u0027],result[\u0027NoCode_count\u0027]])\n#\t\t\telif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Percentage\":\n#\t\t\t\theaders \u003d [\"Start Timestamp\", \"End Timestamp\", \"Sorter\",\"Scanner\",\"Total (%)\",\"Good Read (%)\",\"No Read (%)\",\"Multi Read (%)\",\"No Code (%)\"]\n#\t\t\t\tfor result in results:\n#\t\t\t\t\tdata.append([result[\u0027Startstamp\u0027],result[\u0027Endtstamp\u0027],result[\u0027SorterName\u0027],result[\u0027ScannerName\u0027],result[\u0027Total_perc\u0027],result[\u0027GoodRead_perc\u0027],result[\u0027NoRead_perc\u0027],result[\u0027MultiLabelRead_perc\u0027],result[\u0027NoCode_perc\u0027]])\n#\t\t\telif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Rate\":\n#\t\t\t\theaders \u003d [\"Start Timestamp\", \"End Timestamp\", \"Sorter\",\"Scanner\",\"Total (pph)\",\"Good Read (pph)\",\"No Read (pph)\",\"Multi Read (pph)\",\"No Code (pph)\"]\n#\t\t\t\tfor result in results:\n#\t\t\t\t\tdata.append([result[\u0027Startstamp\u0027],result[\u0027Endtstamp\u0027],result[\u0027SorterName\u0027],result[\u0027ScannerName\u0027],result[\u0027Total_rate\u0027],result[\u0027GoodRead_rate\u0027],result[\u0027NoRead_rate\u0027],result[\u0027MultiLabelRead_rate\u0027],result[\u0027NoCode_rate\u0027]])\n#\t\n#\t\telse:\n#\t\t\ttest_table \u003d system.dataset.toPyDataSet(self.parent.getChild(\"Statistics\").getChild(\"Scanner_Details\").getChild(\"Scanner Details\").props.data)\n#\t\t\n#\t\t\tif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Count\":\n#\t\t\t\theaders \u003d [\"Start Timestamp\", \"End Timestamp\", \"Sorter\",\"Scanner\",\"Total (#)\",\"Good Read (#)\",\"No Read (#)\",\"Multi Read (#)\",\"No Code (#)\"]\n#\t\t\t\tfor result in test_table:\n#\t\t\t\t\tdata.append([result[\u0027Startstamp\u0027],result[\u0027Endtstamp\u0027],result[\u0027SorterName\u0027],result[\u0027ScannerName\u0027],result[\u0027Total_count\u0027],result[\u0027GoodRead_count\u0027],result[\u0027NoRead_count\u0027],result[\u0027MultiLabelRead_count\u0027],result[\u0027NoCode_count\u0027]])\n#\t\t\telif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Percentage\":\n#\t\t\t\theaders \u003d [\"Start Timestamp\", \"End Timestamp\", \"Sorter\",\"Scanner\",\"Total (%)\",\"Good Read (%)\",\"No Read (%)\",\"Multi Read (%)\",\"No Code (%)\"]\n#\t\t\t\tfor result in test_table:\n#\t\t\t\t\tdata.append([result[\u0027Startstamp\u0027],result[\u0027Endtstamp\u0027],result[\u0027SorterName\u0027],result[\u0027ScannerName\u0027],result[\u0027Total_perc\u0027],result[\u0027GoodRead_perc\u0027],result[\u0027NoRead_perc\u0027],result[\u0027MultiLabelRead_perc\u0027],result[\u0027NoCode_perc\u0027]])\n#\t\t\telif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Rate\":\n#\t\t\t\theaders \u003d [\"Start Timestamp\", \"End Timestamp\", \"Sorter\",\"Scanner\",\"Total (pph)\",\"Good Read (pph)\",\"No Read (pph)\",\"Multi Read (pph)\",\"No Code (pph)\"]\n#\t\t\t\tfor result in test_table:\n#\t\t\t\t\tdata.append([result[\u0027Startstamp\u0027],result[\u0027Endtstamp\u0027],result[\u0027SorterName\u0027],result[\u0027ScannerName\u0027],result[\u0027Total_rate\u0027],result[\u0027GoodRead_rate\u0027],result[\u0027NoRead_rate\u0027],result[\u0027MultiLabelRead_rate\u0027],result[\u0027NoCode_rate\u0027]])\n#\t\t\t\n#\t\ttable \u003d system.dataset.toDataSet(headers, data)\t\n#\t\tcsv \u003d system.dataset.toCSV(table,1,0,1)\n#\t\tsystem.perspective.download(filename \u003d str_date+\u0027 Scanner Details.csv\u0027, data \u003d csv)\n#\t\n#\t\n#\telif self.getSibling(\"Statistics\").props.currentTabIndex \u003d\u003d 2:\n#\t\tresults \u003d self.parent.getChild(\"Statistics\").getChild(\"Sorter Summary\").getChild(\"Sorter Summary\").props.filter.results.data\n#\t\tif(len(results) \u003e 0):\n#\t\t\tif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Count\":\n#\t\t\t\theaders \u003d [\"Start Timestamp\", \"End Timestamp\", \"Sorter\",\"Inducted (#)\",\"Sorted (#)\",\"Awcs Recirc (#)\",\"Operational Recirc (#)\",\"Machine Recirc (#)\"]\n#\t\t\t\tfor result in results:\n#\t\t\t\t\tdata.append([result[\u0027Startstamp\u0027],result[\u0027Endtstamp\u0027],result[\u0027SorterName\u0027],result[\u0027Induct_count\u0027],result[\u0027Sorted_count\u0027],result[\u0027AWCSRecirc_count\u0027],result[\u0027OperRecirc_count\u0027],result[\u0027MachineRecirc_count\u0027]])\n#\t\t\telif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Percentage\":\n#\t\t\t\theaders \u003d [\"Start Timestamp\", \"End Timestamp\", \"Sorter\",\"Inducted (%)\",\"Sorted (%)\",\"Awcs Recirc (%)\",\"Operational Recirc (%)\",\"Machine Recirc (%)\"]\n#\t\t\t\tfor result in results:\n#\t\t\t\t\tdata.append([result[\u0027Startstamp\u0027],result[\u0027Endtstamp\u0027],result[\u0027SorterName\u0027],result[\u0027Induct_perc\u0027],result[\u0027Sorted_perc\u0027],result[\u0027AWCSRecirc_perc\u0027],result[\u0027OperRecirc_perc\u0027],result[\u0027MachineRecirc_perc\u0027]])\n#\t\t\telif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Rate\":\n#\t\t\t\theaders \u003d [\"Start Timestamp\", \"End Timestamp\", \"Sorter\",\"Inducted (pph)\",\"Sorted (pph)\",\"Awcs Recirc (pph)\",\"Operational Recirc (pph)\",\"Machine Recirc (pph)\"]\n#\t\t\t\tfor result in results:\n#\t\t\t\t\tdata.append([result[\u0027Startstamp\u0027],result[\u0027Endtstamp\u0027],result[\u0027SorterName\u0027],result[\u0027Induct_rate\u0027],result[\u0027Sorted_rate\u0027],result[\u0027AWCSRecirc_rate\u0027],result[\u0027OperRecirc_rate\u0027],result[\u0027MachineRecirc_rate\u0027]])\n#\t\n#\t\telse:\n#\t\t\ttest_table \u003d system.dataset.toPyDataSet(self.parent.getChild(\"Statistics\").getChild(\"Sorter Summary\").getChild(\"Sorter Summary\").props.data)\n#\t\t\n#\t\t\tif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Count\":\n#\t\t\t\theaders \u003d [\"Start Timestamp\", \"End Timestamp\", \"Sorter\",\"Inducted (#)\",\"Sorted (#)\",\"Awcs Recirc (#)\",\"Operational Recirc (#)\",\"Machine Recirc (#)\"]\n#\t\t\t\tfor result in test_table:\n#\t\t\t\t\tdata.append([result[\u0027Startstamp\u0027],result[\u0027Endtstamp\u0027],result[\u0027SorterName\u0027],result[\u0027Induct_count\u0027],result[\u0027Sorted_count\u0027],result[\u0027AWCSRecirc_count\u0027],result[\u0027OperRecirc_count\u0027],result[\u0027MachineRecirc_count\u0027]])\n#\t\t\telif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Percentage\":\n#\t\t\t\theaders \u003d [\"Start Timestamp\", \"End Timestamp\", \"Sorter\",\"Inducted (%)\",\"Sorted (%)\",\"Awcs Recirc (%)\",\"Operational Recirc (%)\",\"Machine Recirc (%)\"]\n#\t\t\t\tfor result in test_table:\n#\t\t\t\t\tdata.append([result[\u0027Startstamp\u0027],result[\u0027Endtstamp\u0027],result[\u0027SorterName\u0027],result[\u0027Induct_perc\u0027],result[\u0027Sorted_perc\u0027],result[\u0027AWCSRecirc_perc\u0027],result[\u0027OperRecirc_perc\u0027],result[\u0027MachineRecirc_perc\u0027]])\n#\t\t\telif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Rate\":\n#\t\t\t\theaders \u003d [\"Start Timestamp\", \"End Timestamp\", \"Sorter\",\"Inducted (pph)\",\"Sorted (pph)\",\"Awcs Recirc (pph)\",\"Operational Recirc (pph)\",\"Machine Recirc (pph)\"]\n#\t\t\t\tfor result in test_table:\n#\t\t\t\t\tdata.append([result[\u0027Startstamp\u0027],result[\u0027Endtstamp\u0027],result[\u0027SorterName\u0027],result[\u0027Induct_rate\u0027],result[\u0027Sorted_rate\u0027],result[\u0027AWCSRecirc_rate\u0027],result[\u0027OperRecirc_rate\u0027],result[\u0027MachineRecirc_rate\u0027]])\n#\t\t\t\n#\t\ttable \u003d system.dataset.toDataSet(headers, data)\t\n#\t\tcsv \u003d system.dataset.toCSV(table,1,0,1)\n#\t\tsystem.perspective.download(filename \u003d str_date+\u0027 Sorter Summary.csv\u0027, data \u003d csv)\n#\n#\t\n#\telif self.getSibling(\"Statistics\").props.currentTabIndex \u003d\u003d 3:\n#\t\tresults \u003d self.parent.getChild(\"Statistics\").getChild(\"Sorter Details\").getChild(\"Sorter Details\").props.filter.results.data\n#\t\tif(len(results) \u003e 0):\n#\t\t\tif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Count\":\n#\t\t\t\theaders \u003d [\"Start Timestamp\", \"End Timestamp\", \"Sorter\",\"Inducted (#)\",\"Sorted (#)\",\"Assigned (#)\",\"Dest Inv (#)\",\"Dest None (#)\",\"Dest Dis (#)\",\"Dest Full (#)\",\"Unexpected (#)\",\"Dest Fault (#)\",\"Div Fail (#)\",\"Gap Err (#)\",\"Lost (#)\",\"Track Err (#)\",\"Unknown (#)\",\"Unsafe (#)\"]\n#\t\t\t\tfor result in results:\n#\t\t\t\t\tdata.append([result[\u0027Startstamp\u0027],result[\u0027Endtstamp\u0027],result[\u0027SorterName\u0027],result[\u0027inducted_count\u0027],result[\u0027sorted_count\u0027],result[\u0027assigned_count\u0027],result[\u0027destinv_count\u0027],result[\u0027destnone_count\u0027],result[\u0027destdis_count\u0027],result[\u0027destfull_count\u0027],result[\u0027unexpected_count\u0027],result[\u0027destfault_count\u0027],result[\u0027divfail_count\u0027],result[\u0027gaperr_count\u0027],result[\u0027lost_count\u0027],result[\u0027trackerr_count\u0027],result[\u0027unknownn_count\u0027],result[\u0027unsafe_count\u0027]])\n#\t\t\telif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Percentage\":\n#\t\t\t\theaders \u003d [\"Start Timestamp\", \"End Timestamp\", \"Sorter\",\"Inducted (%)\",\"Sorted (%)\",\"Assigned (%)\",\"Dest Inv (%)\",\"Dest None (%)\",\"Dest Dis (%)\",\"Dest Full (%)\",\"Unexpected (%)\",\"Dest Fault (%)\",\"Div Fail (%)\",\"Gap Err (%)\",\"Lost (%)\",\"Track Err (%)\",\"Unknown (%)\",\"Unsafe (%)\"]\n#\t\t\t\tfor result in results:\n#\t\t\t\t\tdata.append([result[\u0027Startstamp\u0027],result[\u0027Endtstamp\u0027],result[\u0027SorterName\u0027],result[\u0027inducted_perc\u0027],result[\u0027sorted_perc\u0027],result[\u0027assigned_perc\u0027],result[\u0027destinv_perc\u0027],result[\u0027destnone_perc\u0027],result[\u0027destdis_perc\u0027],result[\u0027destfull_perc\u0027],result[\u0027unexpected_perc\u0027],result[\u0027destfault_perc\u0027],result[\u0027divfail_perc\u0027],result[\u0027gaperr_perc\u0027],result[\u0027lost_perc\u0027],result[\u0027trackerr_perc\u0027],result[\u0027unknown_perc\u0027],result[\u0027unsafe_perc\u0027]])\n#\t\t\telif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Rate\":\n#\t\t\t\theaders \u003d [\"Start Timestamp\", \"End Timestamp\", \"Sorter\",\"Inducted (pph)\",\"Sorted (pph)\",\"Assigned (pph)\",\"Dest Inv (pph)\",\"Dest None (pph)\",\"Dest Dis (pph)\",\"Dest Full (pph)\",\"Unexpected (pph)\",\"Dest Fault (pph)\",\"Div Fail (pph)\",\"Gap Err (pph)\",\"Lost (pph)\",\"Track Err (pph)\",\"Unknown (pph)\",\"Unsafe (pph)\"]\n#\t\t\t\tfor result in results:\n#\t\t\t\t\tdata.append([result[\u0027Startstamp\u0027],result[\u0027Endtstamp\u0027],result[\u0027SorterName\u0027],result[\u0027inducted_rate\u0027],result[\u0027sorted_rate\u0027],result[\u0027assigned_rate\u0027],result[\u0027destinv_rate\u0027],result[\u0027destnone_rate\u0027],result[\u0027destdis_rate\u0027],result[\u0027destfull_rate\u0027],result[\u0027unexpected_rate\u0027],result[\u0027destfault_rate\u0027],result[\u0027divfail_rate\u0027],result[\u0027gaperr_rate\u0027],result[\u0027lost_rate\u0027],result[\u0027trackerr_rate\u0027],result[\u0027unknown_rate\u0027],result[\u0027unsafe_rate\u0027]])\n#\t\t\n#\t\telse:\n#\t\t\ttest_table \u003d system.dataset.toPyDataSet(self.parent.getChild(\"Statistics\").getChild(\"Sorter Details\").getChild(\"Sorter Details\").props.data)\n#\t\t\n#\t\t\tif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Count\":\n#\t\t\t\theaders \u003d [\"Start Timestamp\", \"End Timestamp\", \"Sorter\",\"Inducted (#)\",\"Sorted (#)\",\"Assigned (#)\",\"Dest Inv (#)\",\"Dest None (#)\",\"Dest Dis (#)\",\"Dest Full (#)\",\"Unexpected (#)\",\"Dest Fault (#)\",\"Div Fail (#)\",\"Gap Err (#)\",\"Lost (#)\",\"Track Err (#)\",\"Unknown (#)\",\"Unsafe (#)\"]\n#\t\t\t\tfor result in test_table:\n#\t\t\t\t\tdata.append([result[\u0027Startstamp\u0027],result[\u0027Endtstamp\u0027],result[\u0027SorterName\u0027],result[\u0027inducted_count\u0027],result[\u0027sorted_count\u0027],result[\u0027sorted_count\u0027],result[\u0027destinv_count\u0027],result[\u0027destnone_count\u0027],result[\u0027destdis_count\u0027],result[\u0027destfull_count\u0027],result[\u0027unexpected_count\u0027],result[\u0027destfault_count\u0027],result[\u0027divfail_count\u0027],result[\u0027gaperr_count\u0027],result[\u0027lost_count\u0027],result[\u0027trackerr_count\u0027],result[\u0027unknownn_count\u0027],result[\u0027unsafe_count\u0027]])\n#\t\t\telif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Percentage\":\n#\t\t\t\theaders \u003d [\"Start Timestamp\", \"End Timestamp\", \"Sorter\",\"Inducted (%)\",\"Sorted (%)\",\"Assigned (%)\",\"Dest Inv (%)\",\"Dest None (%)\",\"Dest Dis (%)\",\"Dest Full (%)\",\"Unexpected (%)\",\"Dest Fault (%)\",\"Div Fail (%)\",\"Gap Err (%)\",\"Lost (%)\",\"Track Err (%)\",\"Unknown (%)\",\"Unsafe (%)\"]\n#\t\t\t\tfor result in test_table:\n#\t\t\t\t\tdata.append([result[\u0027Startstamp\u0027],result[\u0027Endtstamp\u0027],result[\u0027SorterName\u0027],result[\u0027inducted_perc\u0027],result[\u0027sorted_perc\u0027],result[\u0027assigned_perc\u0027],result[\u0027destinv_perc\u0027],result[\u0027destnone_perc\u0027],result[\u0027destdis_perc\u0027],result[\u0027destfull_perc\u0027],result[\u0027unexpected_perc\u0027],result[\u0027destfault_perc\u0027],result[\u0027divfail_perc\u0027],result[\u0027gaperr_perc\u0027],result[\u0027lost_perc\u0027],result[\u0027trackerr_perc\u0027],result[\u0027unknown_perc\u0027],result[\u0027unsafe_perc\u0027]])\n#\t\t\telif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Rate\":\n#\t\t\t\theaders \u003d [\"Start Timestamp\", \"End Timestamp\", \"Sorter\",\"Inducted (pph)\",\"Sorted (pph)\",\"Assigned (pph)\",\"Dest Inv (pph)\",\"Dest None (pph)\",\"Dest Dis (pph)\",\"Dest Full (pph)\",\"Unexpected (pph)\",\"Dest Fault (pph)\",\"Div Fail (pph)\",\"Gap Err (pph)\",\"Lost (pph)\",\"Track Err (pph)\",\"Unknown (pph)\",\"Unsafe (pph)\"]\n#\t\t\t\tfor result in test_table:\n#\t\t\t\t\tdata.append([result[\u0027Startstamp\u0027],result[\u0027Endtstamp\u0027],result[\u0027SorterName\u0027],result[\u0027inducted_rate\u0027],result[\u0027sorted_rate\u0027],result[\u0027assigned_rate\u0027],result[\u0027destinv_rate\u0027],result[\u0027destnone_rate\u0027],result[\u0027destdis_rate\u0027],result[\u0027destfull_rate\u0027],result[\u0027unexpected_rate\u0027],result[\u0027destfault_rate\u0027],result[\u0027divfail_rate\u0027],result[\u0027gaperr_rate\u0027],result[\u0027lost_rate\u0027],result[\u0027trackerr_rate\u0027],result[\u0027unknown_rate\u0027],result[\u0027unsafe_rate\u0027]])\n#\t\t\t\n#\t\ttable \u003d system.dataset.toDataSet(headers, data)\t\n#\t\tcsv \u003d system.dataset.toCSV(table,1,0,1)\n#\t\tsystem.perspective.download(filename \u003d str_date+\u0027 Sorter Details.csv\u0027, data \u003d csv)\n#\t\t\n#\t\n#\telif self.getSibling(\"Statistics\").props.currentTabIndex \u003d\u003d 4:\n#\t\t\tresults \u003d self.parent.getChild(\"Statistics\").getChild(\"Lane Details\").getChild(\"Lane Details\").props.filter.results.data\n#\t\t\tif(len(results) \u003e 0):\n#\t\t\t\tif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Count\":\n#\t\t\t\t\theaders \u003d [\"Start Timestamp\", \"End Timestamp\", \"Sorter\",\"Lane\",\"Total (#)\",\"Diverted (#)\",\"Dest Full (#)\",\"Dest Jam (#)\",\"Dest Disabled (#)\",\"Dest Fault (#)\",\"Divert Fail (#)\",\"Lost (#)\",\"Unsafe (#)\",\"Dim Error (#)\",\"Gap Error (#)\",\"Unknown (#)\"]\n#\t\t\t\t\tfor result in results:\n#\t\t\t\t\t\tdata.append([result[\u0027Startstamp\u0027],result[\u0027Endtstamp\u0027],result[\u0027SorterName\u0027],result[\u0027Lane\u0027],result[\u0027Total_count\u0027],result[\u0027Diverted_count\u0027],result[\u0027Destfull_count\u0027],result[\u0027DestJam_count\u0027],result[\u0027DestDis_count\u0027],result[\u0027DestFault_count\u0027],result[\u0027DivertFail_count\u0027],result[\u0027Lost_count\u0027],result[\u0027Unsafe_count\u0027],result[\u0027Dim_count\u0027],result[\u0027GapErr_count\u0027],result[\u0027Unknown_count\u0027]])\n#\t\t\t\telif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Percentage\":\n#\t\t\t\t\theaders \u003d [\"Start Timestamp\", \"End Timestamp\", \"Sorter\",\"Lane\",\"Total (%)\",\"Diverted (%)\",\"Dest Full (%)\",\"Dest Jam (%)\",\"Dest Disabled (%)\",\"Dest Fault (%)\",\"Divert Fail (%)\",\"Lost (%)\",\"Unsafe (%)\",\"Dim Error (%)\",\"Gap Error (%)\",\"Unknown (%)\"]\n#\t\t\t\t\tfor result in results:\n#\t\t\t\t\t\tdata.append([result[\u0027Startstamp\u0027],result[\u0027Endtstamp\u0027],result[\u0027SorterName\u0027],result[\u0027Lane\u0027],result[\u0027total_perc\u0027],result[\u0027Diverted_perc\u0027],result[\u0027destfull_perc\u0027],result[\u0027destjam_perc\u0027],result[\u0027destdisabled_perc\u0027],result[\u0027destfault_perc\u0027],result[\u0027DivertFail_perc\u0027],result[\u0027lost_perc\u0027],result[\u0027unsafe_perc\u0027],result[\u0027dim_perc\u0027],result[\u0027gaperr_perc\u0027],result[\u0027unknown_perc\u0027]])\n#\t\t\t\telif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Rate\":\n#\t\t\t\t\theaders \u003d [\"Start Timestamp\", \"End Timestamp\", \"Sorter\",\"Lane\",\"Total (pph)\",\"Diverted (pph)\",\"Dest Full (pph)\",\"Dest Jam (pph)\",\"Dest Disabled (pph)\",\"Dest Fault (pph)\",\"Divert Fail (pph)\",\"Lost (pph)\",\"Unsafe (pph)\",\"Dim Error (pph)\",\"Gap Error (pph)\",\"Unknown (pph)\"]\n#\t\t\t\t\tfor result in results:\n#\t\t\t\t\t\tdata.append([result[\u0027Startstamp\u0027],result[\u0027Endtstamp\u0027],result[\u0027SorterName\u0027],result[\u0027Lane\u0027],result[\u0027total_rate\u0027],result[\u0027Diverted_rate\u0027],result[\u0027destfull_rate\u0027],result[\u0027destjam_rate\u0027],result[\u0027destdisabled_rate\u0027],result[\u0027destfault_rate\u0027],result[\u0027DivertFail_rate\u0027],result[\u0027lost_rate\u0027],result[\u0027unsafe_rate\u0027],result[\u0027dim_rate\u0027],result[\u0027gaperr_rate\u0027],result[\u0027unknown_rate\u0027]])\n#\t\t\t\n#\t\t\telse:\n#\t\t\t\ttest_table \u003d system.dataset.toPyDataSet(self.parent.getChild(\"Statistics\").getChild(\"Lane Details\").getChild(\"Lane Details\").props.data)\n#\t\t\t\n#\t\t\t\tif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Count\":\n#\t\t\t\t\theaders \u003d [\"Start Timestamp\", \"End Timestamp\", \"Sorter\",\"Lane\",\"Total (#)\",\"Diverted (#)\",\"Dest Full (#)\",\"Dest Jam (#)\",\"Dest Disabled (#)\",\"Dest Fault (#)\",\"Divert Fail (#)\",\"Lost (#)\",\"Unsafe (#)\",\"Dim Error (#)\",\"Gap Error (#)\",\"Unknown (#)\"]\n#\t\t\t\t\tfor result in test_table:\n#\t\t\t\t\t\tdata.append([result[\u0027Startstamp\u0027],result[\u0027Endtstamp\u0027],result[\u0027SorterName\u0027],result[\u0027Lane\u0027],result[\u0027Total_count\u0027],result[\u0027Diverted_count\u0027],result[\u0027Destfull_count\u0027],result[\u0027DestJam_count\u0027],result[\u0027DestDis_count\u0027],result[\u0027DestFault_count\u0027],result[\u0027DivertFail_count\u0027],result[\u0027Lost_count\u0027],result[\u0027Unsafe_count\u0027],result[\u0027Dim_count\u0027],result[\u0027GapErr_count\u0027],result[\u0027Unknown_count\u0027]])\n#\t\t\t\telif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Percentage\":\n#\t\t\t\t\theaders \u003d [\"Start Timestamp\", \"End Timestamp\", \"Sorter\",\"Lane\",\"Total (%)\",\"Diverted (%)\",\"Dest Full (%)\",\"Dest Jam (%)\",\"Dest Disabled (%)\",\"Dest Fault (%)\",\"Divert Fail (%)\",\"Lost (%)\",\"Unsafe (%)\",\"Dim Error (%)\",\"Gap Error (%)\",\"Unknown (%)\"]\n#\t\t\t\t\tfor result in test_table:\n#\t\t\t\t\t\tdata.append([result[\u0027Startstamp\u0027],result[\u0027Endtstamp\u0027],result[\u0027SorterName\u0027],result[\u0027Lane\u0027],result[\u0027total_perc\u0027],result[\u0027Diverted_perc\u0027],result[\u0027destfull_perc\u0027],result[\u0027destjam_perc\u0027],result[\u0027destdisabled_perc\u0027],result[\u0027destfault_perc\u0027],result[\u0027DivertFail_perc\u0027],result[\u0027lost_perc\u0027],result[\u0027unsafe_perc\u0027],result[\u0027dim_perc\u0027],result[\u0027gaperr_perc\u0027],result[\u0027unknown_perc\u0027]])\n#\t\t\t\telif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Rate\":\n#\t\t\t\t\theaders \u003d [\"Start Timestamp\", \"End Timestamp\", \"Sorter\",\"Lane\",\"Total (pph)\",\"Diverted (pph)\",\"Dest Full (pph)\",\"Dest Jam (pph)\",\"Dest Disabled (pph)\",\"Dest Fault (pph)\",\"Divert Fail (pph)\",\"Lost (pph)\",\"Unsafe (pph)\",\"Dim Error (pph)\",\"Gap Error (pph)\",\"Unknown (pph)\"]\n#\t\t\t\t\tfor result in test_table:\n#\t\t\t\t\t\tdata.append([result[\u0027Startstamp\u0027],result[\u0027Endtstamp\u0027],result[\u0027SorterName\u0027],result[\u0027Lane\u0027],result[\u0027total_rate\u0027],result[\u0027Diverted_rate\u0027],result[\u0027destfull_rate\u0027],result[\u0027destjam_rate\u0027],result[\u0027destdisabled_rate\u0027],result[\u0027destfault_rate\u0027],result[\u0027DivertFail_rate\u0027],result[\u0027lost_rate\u0027],result[\u0027unsafe_rate\u0027],result[\u0027dim_rate\u0027],result[\u0027gaperr_rate\u0027],result[\u0027unknown_rate\u0027]])\n#\t\t\t\t\n#\t\t\ttable \u003d system.dataset.toDataSet(headers, data)\t\n#\t\t\tcsv \u003d system.dataset.toCSV(table,1,0,1)\n#\t\t\tsystem.perspective.download(filename \u003d str_date+\u0027 Lane Details.csv\u0027, data \u003d csv)\n#\n#\t\n#\telif self.getSibling(\"Statistics\").props.currentTabIndex \u003d\u003d 5:\n#\t\t\tresults \u003d self.parent.getChild(\"Statistics\").getChild(\"Hourly_Induct\").getChild(\"Hourly_Induct\").props.filter.results.data\n#\t\t\tif(len(results) \u003e 0):\n#\t\t\t\tif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Count\":\n#\t\t\t\t\theaders \u003d [\"Start Timestamp\", \"Hour\", \"Total (#)\",\"Single Carrier (#)\",\"Double Carrier (#)\"]\n#\t\t\t\t\tfor result in results:\n#\t\t\t\t\t\tdata.append([result[\u0027Start Timestamp\u0027],result[\u0027Hour\u0027],result[\u0027Total (#)\u0027],result[\u0027Single Carrier (#)\u0027],result[\u0027Double Carrier (#)\u0027]])\n#\t\t\t\telif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Percentage\":\n#\t\t\t\t\theaders \u003d [\"Start Timestamp\",\"Hour\",\"Total (%)\",\"Single Carrier (%)\",\"Double Carrier (%)\"]\n#\t\t\t\t\tfor result in results:\n#\t\t\t\t\t\tdata.append([result[\u0027Start Timestamp\u0027],result[\u0027Hour\u0027],result[\u0027Total (%\u0027],result[\u0027Single Carrier (%)\u0027],result[\u0027Double Carrier (%)\u0027]])\n#\t\t\t\telif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Rate\":\n#\t\t\t\t\theaders \u003d [\"Start Timestamp\", \"Hour\", \"Total (pph)\",\"Single Carrier (pph)\",\"Double Carrier (pph)\"]\n#\t\t\t\t\tfor result in results:\n#\t\t\t\t\t\tdata.append([result[\u0027Start Timestamp\u0027],result[\u0027Hour\u0027],result[\u0027Total (pph)\u0027],result[\u0027Single Carrier (pph)\u0027],result[\u0027Double Carrier (pph)\u0027]])\n#\t\t\t\n#\t\t\telse:\n#\t\t\t\ttest_table \u003d system.dataset.toPyDataSet(self.parent.getChild(\"Statistics\").getChild(\"Hourly_Induct\").getChild(\"Hourly_Induct\").props.data)\n#\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n#\t\t\t\tif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Count\":\n#\t\t\t\t\theaders \u003d [\"Start Timestamp\", \"Hour\", \"Total (#)\",\"Single Carrier (#)\",\"Double Carrier (#)\"]\n#\t\t\t\t\tfor result in test_table:\n#\t\t\t\t\t\tdata.append([result[\u0027Start Timestamp\u0027],result[\u0027Hour\u0027],result[\u0027Total (#)\u0027],result[\u0027Single Carrier (#)\u0027],result[\u0027Double Carrier (#)\u0027]])\n#\t\t\t\telif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Percentage\":\n#\t\t\t\t\theaders \u003d [\"Start Timestamp\",\"Hour\",\"Total (%)\",\"Single Carrier (%)\",\"Double Carrier (%)\"]\n#\t\t\t\t\tfor result in test_table:\n#\t\t\t\t\t\tdata.append([result[\u0027Start Timestamp\u0027],result[\u0027Hour\u0027],result[\u0027Total (%)\u0027],result[\u0027Single Carrier (%)\u0027],result[\u0027Double Carrier (%)\u0027]])\n#\t\t\t\telif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Rate\":\n#\t\t\t\t\theaders \u003d [\"Start Timestamp\", \"Hour\", \"Total (pph)\",\"Single Carrier (pph)\",\"Double Carrier (pph)\"]\n#\t\t\t\t\tfor result in test_table:\n#\t\t\t\t\t\tdata.append([result[\u0027Start Timestamp\u0027],result[\u0027Hour\u0027],result[\u0027Total (pph)\u0027],result[\u0027Single Carrier (pph)\u0027],result[\u0027Double Carrier (pph)\u0027]])\n#\t\t\t\n#\t\t\ttable \u003d system.dataset.toDataSet(headers, data)\t\n#\t\t\tcsv \u003d system.dataset.toCSV(table,1,0,1)\n#\t\t\tsystem.perspective.download(filename \u003d str_date+\u0027 Hourly Induct.csv\u0027, data \u003d csv)\n#\t\n#\t\n#\telif self.getSibling(\"Statistics\").props.currentTabIndex \u003d\u003d 6:\n#\t\t\tresults \u003d self.parent.getChild(\"Statistics\").getChild(\"Hourly_Scanner\").getChild(\"Hourly_Scanner\").props.filter.results.data\n#\t\t\tif(len(results) \u003e 0):\n#\t\t\t\tif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Count\":\n#\t\t\t\t\theaders \u003d [\"Start Timestamp\", \"Hour\", \"Total (#)\",\"Good Read (#)\",\"No Read (#)\",\"Multi Read (#)\",\"No code (#)\"]\n#\t\t\t\t\tfor result in results:\n#\t\t\t\t\t\tdata.append([result[\u0027Start Timestamp\u0027],result[\u0027Hour\u0027],result[\u0027Total (#)\u0027],result[\u0027Good Read (#)\u0027],result[\u0027No Read (#)\u0027],result[\u0027Multi Read (#)\u0027],result[\u0027No code (#)\u0027]])\n#\t\t\t\telif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Percentage\":\n#\t\t\t\t\theaders \u003d [\"Start Timestamp\", \"Hour\", \"Total (%)\",\"Good Read (%)\",\"No Read (%)\",\"Multi Read (%)\",\"No Code (%)\"]\n#\t\t\t\t\tfor result in results:\n#\t\t\t\t\t\tdata.append([result[\u0027Start Timestamp\u0027],result[\u0027Hour\u0027],result[\u0027Total (%)\u0027],result[\u0027Good Read (%)\u0027],result[\u0027No Read (%)\u0027],result[\u0027Multi Read (%)\u0027],result[\u0027No Code (%)\u0027]])\n#\t\t\t\telif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Rate\":\n#\t\t\t\t\theaders \u003d [\"Start Timestamp\",\"Hour\",\"Total (pph)\",\"Good Read (pph)\",\"No Read (pph)\",\"Multi Read (pph)\",\"No Code (pph)\"]\n#\t\t\t\t\tfor result in results:\n#\t\t\t\t\t\tdata.append([result[\u0027Start Timestamp\u0027],result[\u0027Hour\u0027],result[\u0027Total (pph)\u0027],result[\u0027Good Read (pph)\u0027],result[\u0027No Read (pph)\u0027],result[\u0027Multi Read (pph)\u0027],result[\u0027No Code (pph)\u0027]])\n#\t\t\t\n#\t\t\telse:\n#\t\t\t\ttest_table \u003d system.dataset.toPyDataSet(self.parent.getChild(\"Statistics\").getChild(\"Hourly_Scanner\").getChild(\"Hourly_Scanner\").props.data)\n#\t\t\t\n#\t\t\t\tif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Count\":\n#\t\t\t\t\theaders \u003d [\"Start Timestamp\", \"Hour\", \"Total (#)\",\"Good Read (#)\",\"No Read (#)\",\"Multi Read (#)\",\"No code (#)\"]\n#\t\t\t\t\tfor result in test_table:\n#\t\t\t\t\t\tdata.append([result[\u0027Start Timestamp\u0027],result[\u0027Hour\u0027],result[\u0027Total (#)\u0027],result[\u0027Good Read (#)\u0027],result[\u0027No Read (#)\u0027],result[\u0027Multi Read (#)\u0027],result[\u0027No code (#)\u0027]])\n#\t\t\t\telif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Percentage\":\n#\t\t\t\t\theaders \u003d [\"Start Timestamp\", \"Hour\", \"Total (%)\",\"Good Read (%)\",\"No Read (%)\",\"Multi Read (%)\",\"No Code (%)\"]\n#\t\t\t\t\tfor result in test_table:\n#\t\t\t\t\t\tdata.append([result[\u0027Start Timestamp\u0027],result[\u0027Hour\u0027],result[\u0027Total (%)\u0027],result[\u0027Good Read (%)\u0027],result[\u0027No Read (%)\u0027],result[\u0027Multi Read (%)\u0027],result[\u0027No Code (%)\u0027]])\n#\t\t\t\telif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Rate\":\n#\t\t\t\t\theaders \u003d [\"Start Timestamp\",\"Hour\",\"Total (pph)\",\"Good Read (pph)\",\"No Read (pph)\",\"Multi Read (pph)\",\"No Code (pph)\"]\n#\t\t\t\t\tfor result in test_table:\n#\t\t\t\t\t\tdata.append([result[\u0027Start Timestamp\u0027],result[\u0027Hour\u0027],result[\u0027Total (pph)\u0027],result[\u0027Good Read (pph)\u0027],result[\u0027No Read (pph)\u0027],result[\u0027Multi Read (pph)\u0027],result[\u0027No Code (pph)\u0027]])\n#\t\t\t\t\n#\t\t\ttable \u003d system.dataset.toDataSet(headers, data)\t\n#\t\t\tcsv \u003d system.dataset.toCSV(table,1,0,1)\n#\t\t\tsystem.perspective.download(filename \u003d str_date+\u0027 Hourly Scanner.csv\u0027, data \u003d csv)\n#\t\t\t\n#\t\t\t\n#\telif self.getSibling(\"Statistics\").props.currentTabIndex \u003d\u003d 7:\n#\t\t\tresults \u003d self.parent.getChild(\"Statistics\").getChild(\"Hourly_Sorter_Summary\").getChild(\"Hourly_Sorter_Summary\").props.filter.results.data\n#\t\t\tif(len(results) \u003e 0):\n#\t\t\t\tif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Count\":\n#\t\t\t\t\theaders \u003d [\"Start Timestamp\", \"Hour\",\"Inducted (#)\",\"Sorted (#)\",\"Awcs Recirc (#)\",\"Operational Recirc (#)\",\"Machine Recirc (#)\"]\n#\t\t\t\t\tfor result in results:\n#\t\t\t\t\t\tdata.append([result[\u0027Start Timestamp\u0027],result[\u0027Hour\u0027],result[\u0027Inducted (#)\u0027],result[\u0027Sorted (#)\u0027],result[\u0027Awcs Recirc (#)\u0027],result[\u0027Operational Recirc (#)\u0027],result[\u0027Machine Recirc (#)\u0027]])\n#\t\t\t\telif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Percentage\":\n#\t\t\t\t\theaders \u003d [\"Start Timestamp\", \"Hour\",\"Inducted (%)\",\"Sorted (%)\",\"Awcs Recirc (%)\",\"Operational Recirc (%)\",\"Machine Recirc (%)\"]\n#\t\t\t\t\tfor result in results:\n#\t\t\t\t\t\tdata.append([result[\u0027Start Timestamp\u0027],result[\u0027Hour\u0027],result[\u0027Inducted (%)\u0027],result[\u0027Sorted (%)\u0027],result[\u0027Awcs Recirc (%)\u0027],result[\u0027Operational Recirc (%)\u0027],result[\u0027Machine Recirc (%)\u0027]])\n#\t\t\t\telif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Rate\":\n#\t\t\t\t\theaders \u003d [\"Start Timestamp\", \"Hour\",\"Inducted (pph)\",\"Sorted (pph)\",\"Awcs Recirc (pph)\",\"Operational Recirc (pph)\",\"Machine Recirc (pph)\"]\n#\t\t\t\t\tfor result in results:\n#\t\t\t\t\t\tdata.append([result[\u0027Start Timestamp\u0027],result[\u0027Hour\u0027],result[\u0027Inducted (pph)\u0027],result[\u0027Sorted (pph)\u0027],result[\u0027Awcs Recirc (pph)\u0027],result[\u0027Operational Recirc (pph)\u0027],result[\u0027Machine Recirc (pph)\u0027]])\n#\t\t\n#\t\t\telse:\n#\t\t\t\ttest_table \u003d system.dataset.toPyDataSet(self.parent.getChild(\"Statistics\").getChild(\"Hourly_Sorter_Summary\").getChild(\"Hourly_Sorter_Summary\").props.data)\n#\t\t\t\n#\t\t\t\tif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Count\":\n#\t\t\t\t\theaders \u003d [\"Start Timestamp\", \"Hour\",\"Inducted (#)\",\"Sorted (#)\",\"Awcs Recirc (#)\",\"Operational Recirc (#)\",\"Machine Recirc (#)\"]\n#\t\t\t\t\tfor result in test_table:\n#\t\t\t\t\t\tdata.append([result[\u0027Start Timestamp\u0027],result[\u0027Hour\u0027],result[\u0027Inducted (#)\u0027],result[\u0027Sorted (#)\u0027],result[\u0027Awcs Recirc (#)\u0027],result[\u0027Operational Recirc (#)\u0027],result[\u0027Machine Recirc (#)\u0027]])\n#\t\t\t\telif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Percentage\":\n#\t\t\t\t\theaders \u003d [\"Start Timestamp\", \"Hour\",\"Inducted (%)\",\"Sorted (%)\",\"Awcs Recirc (%)\",\"Operational Recirc (%)\",\"Machine Recirc (%)\"]\n#\t\t\t\t\tfor result in test_table:\n#\t\t\t\t\t\tdata.append([result[\u0027Start Timestamp\u0027],result[\u0027Hour\u0027],result[\u0027Inducted (%)\u0027],result[\u0027Sorted (%)\u0027],result[\u0027Awcs Recirc (%)\u0027],result[\u0027Operational Recirc (%)\u0027],result[\u0027Machine Recirc (%)\u0027]])\n#\t\t\t\telif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Rate\":\n#\t\t\t\t\theaders \u003d [\"Start Timestamp\", \"Hour\",\"Inducted (pph)\",\"Sorted (pph)\",\"Awcs Recirc (pph)\",\"Operational Recirc (pph)\",\"Machine Recirc (pph)\"]\n#\t\t\t\t\tfor result in test_table:\n#\t\t\t\t\t\tdata.append([result[\u0027Start Timestamp\u0027],result[\u0027Hour\u0027],result[\u0027Inducted (pph)\u0027],result[\u0027Sorted (pph)\u0027],result[\u0027Awcs Recirc (pph)\u0027],result[\u0027Operational Recirc (pph)\u0027],result[\u0027Machine Recirc (pph)\u0027]])\n#\t\t\t\t\n#\t\t\ttable \u003d system.dataset.toDataSet(headers, data)\t\n#\t\t\tcsv \u003d system.dataset.toCSV(table,1,0,1)\n#\t\t\tsystem.perspective.download(filename \u003d str_date+\u0027 Hourly Sorter Summary.csv\u0027, data \u003d csv)\n#\t\n#\t\t\n#\telif self.getSibling(\"Statistics\").props.currentTabIndex \u003d\u003d 8:\n#\t\tresults \u003d self.parent.getChild(\"Statistics\").getChild(\"Hourly_Sorter_Details\").getChild(\"Hourly_Sorter_Details\").props.filter.results.data\n#\t\tif(len(results) \u003e 0):\n#\t\t\tif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Count\":\n#\t\t\t\theaders \u003d [\"Start Timestamp\", \"Hour\",\"Inducted (#)\",\"Sorted (#)\",\"Dest Inv (#)\",\"Dest None (#)\",\"Dest Dis (#)\",\"Dest Full (#)\",\"Unexpected (#)\",\"Dest Fault (#)\",\"Div Fail (#)\",\"Gap Err (#)\",\"Lost (#)\",\"Track Err (#)\",\"Unknown (#)\",\"Unsafe (#)\"]\n#\t\t\t\tfor result in results:\n#\t\t\t\t\tdata.append([result[\u0027Start Timestamp\u0027],result[\u0027Hour\u0027],result[\u0027Inducted (#)\u0027],result[\u0027Sorted (#)\u0027],result[\u0027Dest Inv (#)\u0027],result[\u0027Dest None (#)\u0027],result[\u0027Dest Dis (#)\u0027],result[\u0027Dest Full (#)\u0027],result[\u0027Unexpected (#)\u0027],result[\u0027Dest Fault (#)\u0027],result[\u0027Div Fail (#)\u0027],result[\u0027Gap Err (#)\u0027],result[\u0027Lost (#)\u0027],result[\u0027Track Err (#)\u0027],result[\u0027Unknown (#)\u0027],result[\u0027Unsafe (#)\u0027]])\n#\t\t\telif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Percentage\":\n#\t\t\t\theaders \u003d [\"Start Timestamp\", \"Hour\",\"Inducted (%)\",\"Sorted (%)\",\"Dest Inv (%)\",\"Dest None (%)\",\"Dest Dis (%)\",\"Dest Full (%)\",\"Unexpected (%)\",\"Dest Fault (%)\",\"Div Fail (%)\",\"Gap Err (%)\",\"Lost (%)\",\"Track Err (%)\",\"Unknown (%)\",\"Unsafe (%)\"]\n#\t\t\t\tfor result in results:\n#\t\t\t\t\tdata.append([result[\u0027Start Timestamp\u0027],result[\u0027Hour\u0027],result[\u0027Inducted (%)\u0027],result[\u0027Sorted (%)\u0027],result[\u0027Dest Inv (%)\u0027],result[\u0027Dest None (%)\u0027],result[\u0027Dest Dis (%)\u0027],result[\u0027Dest Full (%)\u0027],result[\u0027Unexpected (%)\u0027],result[\u0027Dest Fault (%)\u0027],result[\u0027Div Fail (%)\u0027],result[\u0027Gap Err (%)\u0027],result[\u0027Lost (%)\u0027],result[\u0027Track Err (%)\u0027],result[\u0027Unknown (%)\u0027],result[\u0027Unsafe (%)\u0027]])\n#\t\t\telif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Rate\":\n#\t\t\t\theaders \u003d [\"Start Timestamp\", \"Hour\",\"Inducted (pph)\",\"Sorted (pph)\",\"Dest Inv (pph)\",\"Dest None (pph)\",\"Dest Dis (pph)\",\"Dest Full (pph)\",\"Unexpected (pph)\",\"Dest Fault (pph)\",\"Div Fail (pph)\",\"Gap Err (pph)\",\"Lost (pph)\",\"Track Err (pph)\",\"Unknown (pph)\",\"Unsafe (pph)\"]\n#\t\t\t\tfor result in results:\n#\t\t\t\t\tdata.append([result[\u0027Start Timestamp\u0027],result[\u0027Hour\u0027],result[\u0027Inducted (pph)\u0027],result[\u0027Sorted (pph)\u0027],result[\u0027Dest Inv (pph)\u0027],result[\u0027Dest None (pph)\u0027],result[\u0027Dest Dis (pph)\u0027],result[\u0027Dest Full (pph)\u0027],result[\u0027Unexpected (pph)\u0027],result[\u0027Dest Fault (pph)\u0027],result[\u0027Div Fail (pph)\u0027],result[\u0027Gap Err (pph)\u0027],result[\u0027Lost (pph)\u0027],result[\u0027Track Err (pph)\u0027],result[\u0027Unknown (pph)\u0027],result[\u0027Unsafe (pph)\u0027]])\n#\t\t\n#\t\telse:\n#\t\t\ttest_table \u003d system.dataset.toPyDataSet(self.parent.getChild(\"Statistics\").getChild(\"Hourly_Sorter_Details\").getChild(\"Hourly_Sorter_Details\").props.data)\n#\t\t\n#\t\t\tif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Count\":\n#\t\t\t\theaders \u003d [\"Start Timestamp\", \"Hour\",\"Inducted (#)\",\"Sorted (#)\",\"Dest Inv (#)\",\"Dest None (#)\",\"Dest Dis (#)\",\"Dest Full (#)\",\"Unexpected (#)\",\"Dest Fault (#)\",\"Div Fail (#)\",\"Gap Err (#)\",\"Lost (#)\",\"Track Err (#)\",\"Unknown (#)\",\"Unsafe (#)\"]\n#\t\t\t\tfor result in test_table:\n#\t\t\t\t\tdata.append([result[\u0027Start Timestamp\u0027],result[\u0027Hour\u0027],result[\u0027Inducted (#)\u0027],result[\u0027Sorted (#)\u0027],result[\u0027Dest Inv (#)\u0027],result[\u0027Dest None (#)\u0027],result[\u0027Dest Dis (#)\u0027],result[\u0027Dest Full (#)\u0027],result[\u0027Unexpected (#)\u0027],result[\u0027Dest Fault (#)\u0027],result[\u0027Div Fail (#)\u0027],result[\u0027Gap Err (#)\u0027],result[\u0027Lost (#)\u0027],result[\u0027Track Err (#)\u0027],result[\u0027Unknown (#)\u0027],result[\u0027Unsafe (#)\u0027]])\n#\t\t\telif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Percentage\":\n#\t\t\t\theaders \u003d [\"Start Timestamp\", \"Hour\",\"Inducted (%)\",\"Sorted (%)\",\"Dest Inv (%)\",\"Dest None (%)\",\"Dest Dis (%)\",\"Dest Full (%)\",\"Unexpected (%)\",\"Dest Fault (%)\",\"Div Fail (%)\",\"Gap Err (%)\",\"Lost (%)\",\"Track Err (%)\",\"Unknown (%)\",\"Unsafe (%)\"]\n#\t\t\t\tfor result in test_table:\n#\t\t\t\t\tdata.append([result[\u0027Start Timestamp\u0027],result[\u0027Hour\u0027],result[\u0027Inducted (%)\u0027],result[\u0027Sorted (%)\u0027],result[\u0027Dest Inv (%)\u0027],result[\u0027Dest None (%)\u0027],result[\u0027Dest Dis (%)\u0027],result[\u0027Dest Full (%)\u0027],result[\u0027Unexpected (%)\u0027],result[\u0027Dest Fault (%)\u0027],result[\u0027Div Fail (%)\u0027],result[\u0027Gap Err (%)\u0027],result[\u0027Lost (%)\u0027],result[\u0027Track Err (%)\u0027],result[\u0027Unknown (%)\u0027],result[\u0027Unsafe (%)\u0027]])\n#\t\t\telif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Rate\":\n#\t\t\t\theaders \u003d [\"Start Timestamp\", \"Hour\",\"Inducted (pph)\",\"Sorted (pph)\",\"Dest Inv (pph)\",\"Dest None (pph)\",\"Dest Dis (pph)\",\"Dest Full (pph)\",\"Unexpected (pph)\",\"Dest Fault (pph)\",\"Div Fail (pph)\",\"Gap Err (pph)\",\"Lost (pph)\",\"Track Err (pph)\",\"Unknown (pph)\",\"Unsafe (pph)\"]\n#\t\t\t\tfor result in test_table:\n#\t\t\t\t\tdata.append([result[\u0027Start Timestamp\u0027],result[\u0027Hour\u0027],result[\u0027Inducted (pph)\u0027],result[\u0027Sorted (pph)\u0027],result[\u0027Dest Inv (pph)\u0027],result[\u0027Dest None (pph)\u0027],result[\u0027Dest Dis (pph)\u0027],result[\u0027Dest Full (pph)\u0027],result[\u0027Unexpected (pph)\u0027],result[\u0027Dest Fault (pph)\u0027],result[\u0027Div Fail (pph)\u0027],result[\u0027Gap Err (pph)\u0027],result[\u0027Lost (pph)\u0027],result[\u0027Track Err (pph)\u0027],result[\u0027Unknown (pph)\u0027],result[\u0027Unsafe (pph)\u0027]])\n#\t\t\t\n#\t\ttable \u003d system.dataset.toDataSet(headers, data)\t\n#\t\tcsv \u003d system.dataset.toCSV(table,1,0,1)\n#\t\tsystem.perspective.download(filename \u003d str_date+\u0027 Hourly Sorter Details.csv\u0027, data \u003d csv)\n#\t\t\n#\t\n#\telif self.getSibling(\"Statistics\").props.currentTabIndex \u003d\u003d 9:\n#\t\tresults \u003d self.parent.getChild(\"Statistics\").getChild(\"Hourly_Lane\").getChild(\"Hourly_Lane\").props.filter.results.data\n#\t\tif(len(results) \u003e 0):\n#\t\t\tif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Count\":\n#\t\t\t\theaders \u003d [\"Start Timestamp\", \"Hour\",\"Total (#)\",\"Diverted (#)\",\"Dest Full (#)\",\"Dest Jam (#)\",\"Dest Disabled (#)\",\"Dest Fault (#)\",\"Divert Fail (#)\",\"Lost (#)\",\"Unsafe (#)\",\"Dim Error (#)\",\"Gap Error (#)\",\"Unknown (#)\"]\n#\t\t\t\tfor result in results:\n#\t\t\t\t\tdata.append([result[\u0027endt\u0027],result[\u0027rownumber\u0027],result[\u0027Total_count\u0027],result[\u0027Diverted_count\u0027],result[\u0027Destfull_count\u0027],result[\u0027DestJam_count\u0027],result[\u0027DestDis_count\u0027],result[\u0027DestFault_count\u0027],result[\u0027DivertFail_count\u0027],result[\u0027Lost_count\u0027],result[\u0027Unsafe_count\u0027],result[\u0027Dim_count\u0027],result[\u0027GapErr_count\u0027],result[\u0027Unknown_count\u0027]])\n#\t\t\telif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Percentage\":\n#\t\t\t\theaders \u003d [\"Start Timestamp\", \"Hour\",\"Total (%)\",\"Diverted (%)\",\"Dest Full (%)\",\"Dest Jam (%)\",\"Dest Disabled (%)\",\"Dest Fault (%)\",\"Divert Fail (%)\",\"Lost (%)\",\"Unsafe (%)\",\"Dim Error (%)\",\"Gap Error (%)\",\"Unknown (%)\"]\n#\t\t\t\tfor result in results:\n#\t\t\t\t\tdata.append([result[\u0027endt\u0027],result[\u0027rownumber\u0027],result[\u0027total_perc\u0027],result[\u0027Diverted_perc\u0027],result[\u0027destfull_perc\u0027],result[\u0027destjam_perc\u0027],result[\u0027destdisabled_perc\u0027],result[\u0027destfault_perc\u0027],result[\u0027DivertFail_perc\u0027],result[\u0027lost_perc\u0027],result[\u0027unsafe_perc\u0027],result[\u0027dim_perc\u0027],result[\u0027gaperr_perc\u0027],result[\u0027unknown_perc\u0027]])\n#\t\t\telif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Rate\":\n#\t\t\t\theaders \u003d [\"Start Timestamp\", \"Hour\",\"Total (pph)\",\"Diverted (pph)\",\"Dest Full (pph)\",\"Dest Jam (pph)\",\"Dest Disabled (pph)\",\"Dest Fault (pph)\",\"Divert Fail (pph)\",\"Lost (pph)\",\"Unsafe (pph)\",\"Dim Error (pph)\",\"Gap Error (pph)\",\"Unknown (pph)\"]\n#\t\t\t\tfor result in results:\n#\t\t\t\t\tdata.append([result[\u0027endt\u0027],result[\u0027rownumber\u0027],result[\u0027total_rate\u0027],result[\u0027Diverted_rate\u0027],result[\u0027destfull_rate\u0027],result[\u0027destjam_rate\u0027],result[\u0027destdisabled_rate\u0027],result[\u0027destfault_rate\u0027],result[\u0027DivertFail_rate\u0027],result[\u0027lost_rate\u0027],result[\u0027unsafe_rate\u0027],result[\u0027dim_rate\u0027],result[\u0027gaperr_rate\u0027],result[\u0027unknown_rate\u0027]])\n#\t\t\t\n#\t\telse:\n#\t\t\ttest_table \u003d system.dataset.toPyDataSet(self.parent.getChild(\"Statistics\").getChild(\"Hourly_Lane\").getChild(\"Hourly_Lane\").props.data)\n#\t\t\t\n#\t\t\tif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Count\":\n#\t\t\t\theaders \u003d [\"Start Timestamp\",\"Hour\",\"Total (#)\",\"Diverted (#)\",\"Dest Full (#)\",\"Dest Jam (#)\",\"Dest Disabled (#)\",\"Dest Fault (#)\",\"Divert Fail (#)\",\"Lost (#)\",\"Unsafe (#)\",\"Dim Err (#)\",\"Gap Error (#)\",\"Unknown (#)\"]\n#\t\t\t\tfor result in test_table:\n#\t\t\t\t\tdata.append([result[\u0027Start Timestamp\u0027],result[\u0027Hour\u0027],result[\u0027Total (#)\u0027],result[\u0027Diverted (#)\u0027],result[\u0027Dest Full (#)\u0027],result[\u0027Dest Jam (#)\u0027],result[\u0027Dest Disabled (#)\u0027],result[\u0027Dest Fault (#)\u0027],result[\u0027Divert Fail (#)\u0027],result[\u0027Lost (#)\u0027],result[\u0027Unsafe (#)\u0027],result[\u0027Dim Err (#)\u0027],result[\u0027Gap Err (#)\u0027],result[\u0027Unknown (#)\u0027]])\n#\t\t\telif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Percentage\":\n#\t\t\t\theaders \u003d [\"Start Timestamp\", \"Hour\",\"Total (%)\",\"Diverted (%)\",\"Dest Full (%)\",\"Dest Jam (%)\",\"Dest Disabled (%)\",\"Dest Fault (%)\",\"Divert Fail (%)\",\"Lost (%)\",\"Unsafe (%)\",\"Dim Err (%)\",\"Gap Error (%)\",\"Unknown (%)\"]\n#\t\t\t\tfor result in test_table:\n#\t\t\t\t\tdata.append([result[\u0027Start Timestamp\u0027],result[\u0027Hour\u0027],result[\u0027Total (%)\u0027],result[\u0027Diverted (%)\u0027],result[\u0027Dest Full (%)\u0027],result[\u0027Dest Jam (%)\u0027],result[\u0027Dest Disabled (%)\u0027],result[\u0027Dest Fault (%)\u0027],result[\u0027Divert Fail (%)\u0027],result[\u0027Lost (%)\u0027],result[\u0027Unsafe (%)\u0027],result[\u0027Dim Err (%)\u0027],result[\u0027Gap Err (%)\u0027],result[\u0027Unknown (%)\u0027]])\n#\t\t\telif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Rate\":\n#\t\t\t\theaders \u003d [\"Start Timestamp\", \"Hour\",\"Total (pph)\",\"Diverted (pph)\",\"Dest Full (pph)\",\"Dest Jam (pph)\",\"Dest Disabled (pph)\",\"Dest Fault (pph)\",\"Divert Fail (pph)\",\"Lost (pph)\",\"Unsafe (pph)\",\"Dim Err (pph)\",\"Gap Error (pph)\",\"Unknown (pph)\"]\n#\t\t\t\tfor result in test_table:\n#\t\t\t\t\tdata.append([result[\u0027Start Timestamp\u0027],result[\u0027Hour\u0027],result[\u0027Total (pph)\u0027],result[\u0027Diverted (pph)\u0027],result[\u0027Dest Full (pph)\u0027],result[\u0027Dest Jam (pph)\u0027],result[\u0027Dest Disabled (pph)\u0027],result[\u0027Dest Fault (pph)\u0027],result[\u0027Divert Fail (pph)\u0027],result[\u0027Lost (pph)\u0027],result[\u0027Unsafe (pph)\u0027],result[\u0027Dim Err (pph)\u0027],result[\u0027Gap Err (pph)\u0027],result[\u0027Unknown (pph)\u0027]])\n#\t\t\t\t\n#\t\ttable \u003d system.dataset.toDataSet(headers, data)\t\n#\t\tcsv \u003d system.dataset.toCSV(table,1,0,1)\n#\t\tsystem.perspective.download(filename \u003d str_date+\u0027 Hourly Lane.csv\u0027, data \u003d csv)\n#\t\n#\telif self.getSibling(\"Statistics\").props.currentTabIndex \u003d\u003d 10:\n#\n#\t\t\tresults \u003d self.parent.getChild(\"Statistics\").getChild(\"Total Full1\").getChild(\"Total Full1\").props.filter.results.data\n#\t\t\tif(len(results) \u003e 0):\n#\t\t\t\tif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Count\":\n#\t\t\t\t\theaders \u003d [\"Start Timestamp\",\"Hour\",\"Cycles of ULGL1\",\"Cycles of ULGL2\",\"Cycles of ULGL3\"]\n#\t\t\t\t\tfor result in results:\n#\t\t\t\t\t\tdata.append([result[\u0027Start Timestamp\u0027],result[\u0027Hour\u0027],result[\u0027Cycles of ULGL1\u0027],result[\u0027Cycles of ULGL2\u0027],result[\u0027Cycles of ULGL3\u0027]])\n#\t\t\t\telif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Percentage\":\n#\t\t\t\t\theaders \u003d [\"Start Timestamp\",\"Hour\",\"Cycles of ULGL1 (%)\",\"Cycles of ULGL2 (%)\",\"Cycles of ULGL3 (%)\"]\n#\t\t\t\t\tfor result in results:\n#\t\t\t\t\t\tdata.append([result[\u0027Start Timestamp\u0027],result[\u0027Hour\u0027],result[\u0027Cycles of ULGL1 (%)\u0027],result[\u0027Cycles of ULGL2 (%)\u0027],result[\u0027Cycles of ULGL3 (%)\u0027]])\n#\t\t\t\telif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Rate\":\n#\t\t\t\t\theaders \u003d [\"Start Timestamp\",\"Hour\",\"Cycles of ULGL1 (cph)\",\"Cycles of ULGL2 (cph)\",\"Cycles of ULGL3 (cph)\"]\n#\t\t\t\t\tfor result in results:\n#\t\t\t\t\t\tdata.append([result[\u0027Start Timestamp\u0027],result[\u0027Hour\u0027],result[\u0027Cycles of ULGL1 (cph)\u0027],result[\u0027Cycles of ULGL2 (cph)\u0027],result[\u0027Cycles of ULGL3 (cph)\u0027]])\n#\t\t\t\n#\t\t\telse:\n#\t\t\t\ttest_table \u003d system.dataset.toPyDataSet(self.parent.getChild(\"Statistics\").getChild(\"Total Full1\").getChild(\"Total Full1\").props.data)\n#\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n#\t\t\t\tif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Count\":\n#\t\t\t\t\theaders \u003d [\"Lane\",\"Total (#)\",\"DestFull (#)\"]\n#\t\t\t\t\tfor result in test_table:\n#\t\t\t\t\t\tdata.append([result[\u0027Lane\u0027],result[\u0027Total (#)\u0027],result[\u0027DestFull (#)\u0027]])\n#\t\t\t\telif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Percentage\":\n#\t\t\t\t\theaders \u003d [\"Lane\",\"Total (%)\",\"DestFull (%)\"]\n#\t\t\t\t\tfor result in test_table:\n#\t\t\t\t\t\tdata.append([result[\u0027Lane\u0027],result[\u0027Total (%)\u0027],result[\u0027DestFull (%)\u0027]])\n#\t\t\t\telif self.parent.getChild(\"Aggregation_Mode\").getChild(\"Dropdown_Aggregation_mode\").props.value \u003d\u003d \"Rate\":\n#\t\t\t\t\theaders \u003d [\"Lane\",\"Total (pph)\",\"DestFull (pph)\"]\n#\t\t\t\t\tfor result in test_table:\n#\t\t\t\t\t\tdata.append([result[\u0027Lane\u0027],result[\u0027Total (pph)\u0027],result[\u0027DestFull (pph)\u0027]])\t\t\t\t\t\t\t\n#\t\t\t\n#\t\t\ttable \u003d system.dataset.toDataSet(headers, data)\t\n#\t\t\tcsv \u003d system.dataset.toCSV(table,1,0,1)\n#\t\t\tsystem.perspective.download(filename \u003d str_date+\u0027 Lane Total Full.csv\u0027, data \u003d csv)\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t" + "script": "\t# onActionPerformed\n\tdata \u003d []\n\theaders \u003d []\n\timport datetime\n\tcurrent_datetime \u003d datetime.datetime.now()\n\tstr_date \u003d current_datetime.strftime(\"%m-%d-%Y %I-%M\")\n\t\n\tdef rows_iter(results):\n\t\t\"\"\"\n\t\tReturn something you can iterate over:\n\t\t- If it\u0027s an Ignition Dataset, return a PyDataSet\n\t\t- If it\u0027s already a list of dicts (Perspective Table), return as-is\n\t\t\"\"\"\n\t\ttry:\n\t\t\t# Will succeed only for Dataset types\n\t\t\treturn system.dataset.toPyDataSet(results)\n\t\texcept:\n\t\t\treturn results\n\t\n\ttry:\n\t\t# JAM\n\t\t\n\t\t\n\t\tif self.getSibling(\"Statistics\").props.currentTabIndex \u003d\u003d 0:\n\t\t\tmode \u003d self.parent.getChild(\"Aggregation Mode\").getChild(\"Aggregation Mode DropDown\").props.value\n\t\n\t\t\tif mode \u003d\u003d \"Count\":\n\t\t\t\tresults \u003d self.parent.getChild(\"Statistics\").getChild(\"Jam Area\").getChild(\"Jam Area Count\").props.data\n\t\t\t\theaders \u003d [\"Start Timestamp\",\"End Timestamp\",\"Total\", \"Bulk Inbound (#)\", \"Fluid Inbound MCM02 (#)\", \"Fluid Inbound MCM03 (#)\"]\n\t\n\t\t\t\tfor r in rows_iter(results):\n\t\t\t\t\t# r works with both dict-like (Perspective) and PyRow (Dataset)\n\t\t\t\t\tdata.append([\n\t\t\t\t\t\tr[\u0027StartTimestamp\u0027],\n\t\t\t\t\t\tr[\u0027EndTimestamp\u0027],\n\t\t\t\t\t\tr[\u0027Total\u0027],\n\t\t\t\t\t\tr[\u0027Bulk_Inbound\u0027],\n\t\t\t\t\t\tr[\u0027Fluid_Inbound_MCM02\u0027],\n\t\t\t\t\t\tr[\u0027Fluid_Inbound_MCM03\u0027]\n\t\t\t\t\t])\n\t\n\t\t\telif mode \u003d\u003d \"Percentage\":\n\t\t\t\tresults \u003d self.parent.getChild(\"Statistics\").getChild(\"Jam Area\").getChild(\"Jam Area Percentage\").props.data\n\t\t\t\theaders \u003d [\"Start Timestamp\",\"End Timestamp\",\"Total\",\"Bulk Inbound (%)\", \"Fluid Inbound MCM02 (%)\",\"Fluid Inbound MCM03 (%)\"]\n\t\n\t\t\t\tfor r in rows_iter(results):\n\t\t\t\t\tdata.append([\n\t\t\t\t\t\tr[\u0027StartTimestamp\u0027],\n\t\t\t\t\t\tr[\u0027EndTimestamp\u0027],\n\t\t\t\t\t\tr[\u0027Total\u0027],\n\t\t\t\t\t\tr[\u0027Bulk_Inbound\u0027],\n\t\t\t\t\t\tr[\u0027Fluid_Inbound_MCM02\u0027],\n\t\t\t\t\t\tr[\u0027Fluid_Inbound_MCM03\u0027]\n\t\t\t\t\t])\n\t\n\t\t\t# ---- Build CSV ----\n\t\t\tcsv_content \u003d \",\".join(headers) + \"\\n\"\n\t\n\t\t\tdef clean(v):\n\t\t\t\tif v is None:\n\t\t\t\t\treturn \"\"\n\t\t\t\ts \u003d unicode(v) if hasattr(v, \u0027encode\u0027) else str(v) # Jython-safe\n\t\t\t\t# guard commas/newlines for CSV readability\n\t\t\t\treturn s.replace(\",\", \";\").replace(\"\\r\", \" \").replace(\"\\n\", \" \")\n\t\n\t\t\tif data:\n\t\t\t\tfor row in data:\n\t\t\t\t\tcsv_content +\u003d \",\".join(clean(c) for c in row) + \"\\n\"\n\t\t\telse:\n\t\t\t\tcsv_content +\u003d \"No rows\\n\"\n\t\n\t\t\tcsv_bytes \u003d csv_content.encode(\"utf-8\")\n\t\t\tsystem.perspective.print(\"Exporting rows: {}\".format(len(data)))\n\t\t\tif mode \u003d\u003d \"Count\":\n\t\t\t\tsystem.perspective.download(\n\t\t\t\t\tfilename \u003d \"{} Jam Area Count.csv\".format(str_date),\n\t\t\t\t\tdata \u003d csv_bytes,\n\t\t\t\t\tcontentType \u003d \"text/csv; charset\u003dutf-8\"\n\t\t\t\t)\n\t\t\telse:\n\t\t\t\tsystem.perspective.download(\n\t\t\t\t\tfilename \u003d \"{} Jam Area Percentage.csv\".format(str_date),\n\t\t\t\t\tdata \u003d csv_bytes,\n\t\t\t\t\tcontentType \u003d \"text/csv; charset\u003dutf-8\"\n\t\t\t\t)\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t# Dumper\n\t\t\n\t\tif self.getSibling(\"Statistics\").props.currentTabIndex \u003d\u003d 1:\n\t\t\tmode \u003d self.parent.getChild(\"Aggregation Mode\").getChild(\"Aggregation Mode DropDown\").props.value\n\t\n\t\t\tif mode \u003d\u003d \"Count\":\n\t\t\t\tresults \u003d self.parent.getChild(\"Statistics\").getChild(\"Dumper cycles\").getChild(\"Dumper Cycles Count\").props.data\n\t\t\t\theaders \u003d [\"Start Timestamp\",\"End Timestamp\",\"Total\", \"ULC1 (#)\", \"ULC2 (#)\", \"ULC3 (#)\", \"ULC4 (#)\"]\n\t\n\t\t\t\tfor r in rows_iter(results):\n\t\t\t\t\t# r works with both dict-like (Perspective) and PyRow (Dataset)\n\t\t\t\t\tdata.append([\n\t\t\t\t\t\tr[\u0027StartTimestamp\u0027],\n\t\t\t\t\t\tr[\u0027EndTimestamp\u0027],\n\t\t\t\t\t\tr[\u0027Total\u0027],\n\t\t\t\t\t\tr[\u0027ULC1\u0027],\n\t\t\t\t\t\tr[\u0027ULC2\u0027],\n\t\t\t\t\t\tr[\u0027ULC3\u0027],\n\t\t\t\t\t\tr[\u0027ULC4\u0027]\n\t\t\t\t\t])\n\t\n\t\t\telif mode \u003d\u003d \"Percentage\":\n\t\t\t\tresults \u003d self.parent.getChild(\"Statistics\").getChild(\"Dumper cycles\").getChild(\"Dumper Cycles Percentage\").props.data\n\t\t\t\theaders \u003d [\"Start Timestamp\",\"End Timestamp\",\"Total\", \"ULC1 (%)\", \"ULC2 (%)\", \"ULC3 (%)\", \"ULC4 (%)\"]\n\t\n\t\t\t\tfor r in rows_iter(results):\n\t\t\t\t\tdata.append([\n\t\t\t\t\t\tr[\u0027StartTimestamp\u0027],\n\t\t\t\t\t\tr[\u0027EndTimestamp\u0027],\n\t\t\t\t\t\tr[\u0027Total\u0027],\n\t\t\t\t\t\tr[\u0027ULC1\u0027],\n\t\t\t\t\t\tr[\u0027ULC2\u0027],\n\t\t\t\t\t\tr[\u0027ULC3\u0027],\n\t\t\t\t\t\tr[\u0027ULC4\u0027]\n\t\t\t\t\t])\n\t\n\t\t\telif mode \u003d\u003d \"Rate\":\n\t\t\t\tresults \u003d self.parent.getChild(\"Statistics\").getChild(\"Dumper cycles\").getChild(\"Dumper Cycles Rate\").props.data\n\t\t\t\theaders \u003d [\"Start Timestamp\", \"ULC1 (Cph)\", \"ULC2 (Cph)\", \"ULC3 (Cph)\", \"ULC4 (Cph)\"]\n\t\n\t\t\t\tfor r in rows_iter(results):\n\t\t\t\t\tdata.append([\n\t\t\t\t\t\tr[\u0027StartTimestamp\u0027],\n\t\t\t\t\t\tr[\u0027ULC1\u0027],\n\t\t\t\t\t\tr[\u0027ULC2\u0027],\n\t\t\t\t\t\tr[\u0027ULC3\u0027],\n\t\t\t\t\t\tr[\u0027ULC4\u0027]\n\t\t\t\t\t])\n\t\t\n\t\t\t# ---- Build CSV ----\n\t\t\tcsv_content \u003d \",\".join(headers) + \"\\n\"\n\t\n\t\t\tdef clean(v):\n\t\t\t\tif v is None:\n\t\t\t\t\treturn \"\"\n\t\t\t\ts \u003d unicode(v) if hasattr(v, \u0027encode\u0027) else str(v) # Jython-safe\n\t\t\t\t# guard commas/newlines for CSV readability\n\t\t\t\treturn s.replace(\",\", \";\").replace(\"\\r\", \" \").replace(\"\\n\", \" \")\n\t\n\t\t\tif data:\n\t\t\t\tfor row in data:\n\t\t\t\t\tcsv_content +\u003d \",\".join(clean(c) for c in row) + \"\\n\"\n\t\t\telse:\n\t\t\t\tcsv_content +\u003d \"No rows\\n\"\n\t\n\t\t\tcsv_bytes \u003d csv_content.encode(\"utf-8\")\n\t\t\tsystem.perspective.print(\"Exporting rows: {}\".format(len(data)))\n\t\t\tif mode \u003d\u003d \"Count\":\n\t\t\t\tsystem.perspective.download(\n\t\t\t\t\tfilename \u003d \"{} Dumper Cycles Count.csv\".format(str_date),\n\t\t\t\t\tdata \u003d csv_bytes,\n\t\t\t\t\tcontentType \u003d \"text/csv; charset\u003dutf-8\"\n\t\t\t\t)\n\t\t\telif mode \u003d\u003d \"Percentage\":\n\t\t\t\tsystem.perspective.download(\n\t\t\t\t\tfilename \u003d \"{} Dumper Cycles Percentage.csv\".format(str_date),\n\t\t\t\t\tdata \u003d csv_bytes,\n\t\t\t\t\tcontentType \u003d \"text/csv; charset\u003dutf-8\"\n\t\t\t\t)\n\t\t\telse:\n\t\t\t\tsystem.perspective.download(\n\t\t\t\t\tfilename \u003d \"{} Dumper Cycles Rate.csv\".format(str_date),\n\t\t\t\t\tdata \u003d csv_bytes,\n\t\t\t\t\tcontentType \u003d \"text/csv; charset\u003dutf-8\"\n\t\t\t\t)\n\t\t\t\n\t\n\texcept Exception as e:\n\t\tsystem.perspective.print(\"Statistic export error: \" + str(e))" }, "scope": "G", "type": "script" @@ -9231,7 +9236,7 @@ "style": { "fontSize": "1.5vmin" }, - "value": "Past 8 Hour" + "value": "Custom" }, "type": "ia.input.dropdown" }, @@ -9267,9 +9272,9 @@ "$": [ "ts", 192, - 1760895342300 + 1760978567974 ], - "$ts": 1759851340000 + "$ts": 1759847400000 } }, "events": { @@ -9390,7 +9395,7 @@ }, "props": { "dismissOnSelect": false, - "formattedValue": "Oct 20, 2025 9:49 AM", + "formattedValue": "Oct 7, 2025 6:30 PM", "formattedValues": { "date": "Mar 26, 2021", "datetime": "Mar 26, 2021 12:00 AM", @@ -9407,10 +9412,10 @@ "value": { "$": [ "ts", - 192, - 1760968151054 + 0, + 1760978567962 ], - "$ts": 1760939351000 + "$ts": 1759847400000 } }, "type": "ia.input.date-time-input" @@ -9561,7 +9566,7 @@ }, "props": { "dismissOnSelect": false, - "formattedValue": "Oct 20, 2025 5:49 PM", + "formattedValue": "Oct 14, 2025 6:30 PM", "formattedValues": { "date": "Mar 29, 2021", "datetime": "Mar 29, 2021 1:37 PM", @@ -9579,9 +9584,9 @@ "$": [ "ts", 192, - 1760968151054 + 1760978567974 ], - "$ts": 1760968151000 + "$ts": 1760452200000 } }, "type": "ia.input.date-time-input"