diff --git a/src/qqq/pages/records/query/ColumnStats.tsx b/src/qqq/pages/records/query/ColumnStats.tsx
index e84dab0..6e48eaa 100644
--- a/src/qqq/pages/records/query/ColumnStats.tsx
+++ b/src/qqq/pages/records/query/ColumnStats.tsx
@@ -54,6 +54,21 @@ ColumnStats.defaultProps = {
const qController = Client.getInstance();
+// todo - merge w/ same function in TableWidget
+function download(filename: string, text: string)
+{
+ var element = document.createElement("a");
+ element.setAttribute("href", "data:text/plain;charset=utf-8," + encodeURIComponent(text));
+ element.setAttribute("download", filename);
+
+ element.style.display = "none";
+ document.body.appendChild(element);
+
+ element.click();
+
+ document.body.removeChild(element);
+}
+
function ColumnStats({tableMetaData, fieldMetaData, fieldTableName, filter}: Props): JSX.Element
{
const [statusString, setStatusString] = useState("Calculating statistics...");
@@ -97,6 +112,8 @@ function ColumnStats({tableMetaData, fieldMetaData, fieldTableName, filter}: Pro
}
else
{
+ // todo - job running!
+
const result = processResult as QJobComplete;
const statFieldObjects = result.values.statsFields;
@@ -174,6 +191,24 @@ function ColumnStats({tableMetaData, fieldMetaData, fieldTableName, filter}: Pro
setStatusString("Refreshing...")
}
+ const doExport = () =>
+ {
+ let csv = `"${fieldMetaData.label}","Count"\n`;
+ for (let i = 0; i < valueCounts.length; i++)
+ {
+ let fieldValue = valueCounts[i].displayValues.get(fieldMetaData.name);
+ if(fieldValue === undefined)
+ {
+ fieldValue = "";
+ }
+
+ csv += `"${fieldValue}",${valueCounts[i].values.get("count")}\n`;
+ }
+
+ const fileName = tableMetaData.label + " - " + fieldMetaData.label + " Column Stats " + ValueUtils.formatDateTimeForFileName(new Date()) + ".csv";
+ download(fileName, csv);
+ }
+
function Loading()
{
return (
@@ -200,9 +235,14 @@ function ColumnStats({tableMetaData, fieldMetaData, fieldTableName, filter}: Pro
{statusString ?? <> >}
-
+
+
+
+
diff --git a/src/qqq/utils/qqq/ValueUtils.tsx b/src/qqq/utils/qqq/ValueUtils.tsx
index c6de9b1..ccb68d0 100644
--- a/src/qqq/utils/qqq/ValueUtils.tsx
+++ b/src/qqq/utils/qqq/ValueUtils.tsx
@@ -278,7 +278,7 @@ class ValueUtils
const zp = (value: number): string => (value < 10 ? `0${value}` : `${value}`);
const d = new Date();
const dateString = `${d.getFullYear()}-${zp(d.getMonth() + 1)}-${zp(d.getDate())} ${zp(d.getHours())}${zp(d.getMinutes())}`;
- return (date);
+ return (dateString);
}
public static getFullWeekday(date: Date)