Changed history export to csv file.

This commit is contained in:
Salijoghli 2025-06-20 18:39:28 +04:00
parent 6682cea030
commit 88bdae9da4

View File

@ -692,22 +692,7 @@
"children": [
{
"custom": {
"rawData": [
{
"style": {
"backgroundColor": "#ffeb3b"
},
"value": {
"Description": "MCM01 Hello world",
"Duration": "01:42:53",
"EventTimestamp": "2025-06-20 15:07:03",
"Location": "MCM01",
"NumberID": 35,
"Priority": "Low",
"Tag": "MCM01.HMI.Beacon_Light"
}
}
]
"rawData": []
},
"meta": {
"name": "Table"
@ -1404,7 +1389,10 @@
}
},
"filter": {
"enabled": true
"enabled": true,
"results": {
"enabled": true
}
},
"selection": {
"mode": "multiple interval"
@ -2434,17 +2422,17 @@
"$": [
"ts",
192,
1750417660924
1750428991104
],
"$ts": 1750417660924
"$ts": 1750428991104
},
"startDate": {
"$": [
"ts",
192,
1750417660924
1750428991104
],
"$ts": 1750414060924
"$ts": 1750414591104
}
},
"meta": {
@ -2617,7 +2605,7 @@
}
},
"props": {
"formattedValue": "Jun 20, 2025 2:07 PM",
"formattedValue": "Jun 20, 2025 2:16 PM",
"style": {
"margin": 15
}
@ -2702,7 +2690,7 @@
}
},
"props": {
"formattedValue": "Jun 20, 2025 3:07 PM",
"formattedValue": "Jun 20, 2025 6:16 PM",
"maxDate": {
"$": [
"ts",
@ -2718,9 +2706,9 @@
"$": [
"ts",
192,
1750417660924
1750428991104
],
"$ts": 1750417660924
"$ts": 1750428991104
}
},
"scripts": {
@ -2910,17 +2898,17 @@
"$": [
"ts",
192,
1750417660924
1750428991105
],
"$ts": 1750414060924
"$ts": 1750414591104
},
"time_to_filter": {
"$": [
"ts",
192,
1750417660924
1750428991105
],
"$ts": 1750417660924
"$ts": 1750428991104
}
},
"meta": {
@ -3721,6 +3709,36 @@
"enabled": true,
"results": {
"data": [
{
"Description": "MCM01 - Hello world",
"Duration": "00:00:32",
"EndTimestamp": 1750427866000,
"ID": 39,
"Location": "MCM01",
"Priority": "Low",
"StartTimestamp": 1750427834000,
"Tag": "MCM01.HMI.Beacon_Light"
},
{
"Description": "MCM01 - Hello world",
"Duration": "02:49:21",
"EndTimestamp": 1750427784000,
"ID": 35,
"Location": "MCM01",
"Priority": "Low",
"StartTimestamp": 1750417623000,
"Tag": "MCM01.HMI.Beacon_Light"
},
{
"Description": "MCM01 - Hello world",
"Duration": "02:49:21",
"EndTimestamp": 1750427784000,
"ID": 36,
"Location": "MCM01",
"Priority": "Low",
"StartTimestamp": 1750417623000,
"Tag": "MCM01.HMI.Beacon_Light"
},
{
"Description": "MCM01 - Hello world",
"Duration": "00:00:06",
@ -4212,12 +4230,12 @@
"data": [
{
"Description": "MCM01 - Hello world",
"Duration": "01:42:53",
"EndTimestamp": null,
"ID": 35,
"Duration": "00:00:32",
"EndTimestamp": 1750427866000,
"ID": 39,
"Location": "MCM01",
"Priority": "Low",
"StartTimestamp": 1750417623000,
"StartTimestamp": 1750427834000,
"Tag": "MCM01.HMI.Beacon_Light"
}
],
@ -4346,17 +4364,17 @@
"$": [
"ts",
192,
1750417660924
1750428991105
],
"$ts": 1750414060924
"$ts": 1750414591104
},
"time_to_filter": {
"$": [
"ts",
192,
1750417660924
1750428991105
],
"$ts": 1750417660924
"$ts": 1750428991104
},
"type_filters": null
},
@ -4364,7 +4382,7 @@
"component": {
"onActionPerformed": {
"config": {
"script": " try:\n # Get filtered data from table (array of dicts)\n filtered_results \u003d self.parent.parent.getChild(\"Table\").getChild(\"Table\").props.filter.results\n filtered_data \u003d filtered_results.data\n \n # Ensure data is valid\n if not filtered_data:\n return\n \n # Get columns from first record\n columns \u003d filtered_data[0].keys()\n \n # Create a list of rows\n rows \u003d []\n for i in range(len(filtered_data)):\n row_dict \u003d filtered_data[i]\n row \u003d [row_dict.get(col) for col in columns]\n rows.append(row)\n \n # Convert to dataset and export\n dataset \u003d system.dataset.toDataSet(columns, rows)\n html_data \u003d system.dataset.dataSetToHTML(1, dataset, \"Filtered Results\")\n system.perspective.download(\"filtered_alarms_history.html\", html_data)\n \n print \"Export completed successfully! Exported\", len(rows), \"records.\"\n \n except Exception as e:\n print \"Export failed:\", str(e)\n\n\t"
"script": "\n from datetime import datetime\n def format_date(value):\n\t\tif isinstance(value, (int, long)) and value \u003e 10000000:\n\t\t\ttimestamp \u003d system.date.fromMillis(value)\n\t\t\treturn system.date.format(timestamp, \"yyyy-MM-dd HH:mm:ss\")\n\t\t\t\n\t\t# If value is not a valid timestamp, return as-is\n\t\treturn str(value)\n \n try:\n\n # Get filtered data\n table \u003d self.parent.parent.getChild(\"Table\").getChild(\"Table\")\n filtered_data \u003d table.props.filter.results.data\n\n if not filtered_data or len(filtered_data) \u003d\u003d 0:\n system.perspective.print(\"No filtered data to export.\")\n return\n\n # Get correct column order from the table\u0027s column config\n column_order \u003d [col[\"field\"] for col in table.props.columns if \"field\" in col]\n\n csv_content \u003d \",\".join(column_order) + \"\\n\"\n\n # Build rows\n for row_dict in filtered_data:\n row \u003d []\n for col in column_order:\n raw_val \u003d row_dict.get(col, \"\")\n value \u003d format_date(raw_val)\n value \u003d value.replace(\",\", \";\") # CSV safety\n row.append(value)\n csv_content +\u003d \",\".join(row) + \"\\n\"\n\n # Export CSV\n csv_bytes \u003d csv_content.encode(\"utf-8\")\n system.perspective.download(\"filtered_alarms_history.csv\", csv_bytes)\n\n system.perspective.print(\"CSV export completed successfully. Exported %d records.\" % len(filtered_data))\n\n except Exception as e:\n system.perspective.print(\"Export failed: \" + str(e))"
},
"scope": "G",
"type": "script"