mirror of
https://github.com/Kingsrook/qqq-frontend-material-dashboard.git
synced 2025-07-18 05:10:45 +00:00
Add export to ColumnStats; fix formatDateTimeForFileName
This commit is contained in:
@ -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 ?? <> </>}
|
||||
</Typography>
|
||||
</Typography>
|
||||
<Button onClick={() => refresh()} startIcon={<Icon>refresh</Icon>}>
|
||||
Refresh
|
||||
</Button>
|
||||
<Box>
|
||||
<Button onClick={() => refresh()} startIcon={<Icon>refresh</Icon>}>
|
||||
Refresh
|
||||
</Button>
|
||||
<Button onClick={() => doExport()} startIcon={<Icon>save_alt</Icon>} disabled={valueCounts == null || valueCounts.length == 0}>
|
||||
Export
|
||||
</Button>
|
||||
</Box>
|
||||
</Box>
|
||||
<Grid container>
|
||||
<Grid item xs={8}>
|
||||
|
Reference in New Issue
Block a user