mirror of
https://github.com/Kingsrook/qqq-frontend-material-dashboard.git
synced 2025-07-18 13:20:43 +00:00
@ -88,7 +88,7 @@ function ColumnStats({tableMetaData, fieldMetaData, fieldTableName, filter}: Pro
|
||||
}
|
||||
const processResult = await qController.processRun("columnStats", formData);
|
||||
|
||||
setStatusString(null)
|
||||
setStatusString(null);
|
||||
if (processResult instanceof QJobError)
|
||||
{
|
||||
const jobError = processResult as QJobError;
|
||||
@ -107,7 +107,7 @@ function ColumnStats({tableMetaData, fieldMetaData, fieldTableName, filter}: Pro
|
||||
const newStatsFields = [] as QFieldMetaData[];
|
||||
for(let i = 0; i<statFieldObjects.length; i++)
|
||||
{
|
||||
newStatsFields.push(new QFieldMetaData(statFieldObjects[i]))
|
||||
newStatsFields.push(new QFieldMetaData(statFieldObjects[i]));
|
||||
}
|
||||
setStatsFields(newStatsFields);
|
||||
}
|
||||
@ -139,15 +139,15 @@ function ColumnStats({tableMetaData, fieldMetaData, fieldTableName, filter}: Pro
|
||||
fakeTableMetaData.fields = new Map<string, QFieldMetaData>();
|
||||
fakeTableMetaData.fields.set(fieldMetaData.name, fieldMetaData);
|
||||
fakeTableMetaData.fields.set("count", new QFieldMetaData({name: "count", label: "Count", type: "INTEGER"}));
|
||||
fakeTableMetaData.fields.set("percent", new QFieldMetaData({name: "percent", label: "Percent", type: "DECIMAL"}));
|
||||
fakeTableMetaData.sections = [] as QTableSection[];
|
||||
fakeTableMetaData.sections.push(new QTableSection({fieldNames: [fieldMetaData.name, "count"]}));
|
||||
fakeTableMetaData.sections.push(new QTableSection({fieldNames: [fieldMetaData.name, "count", "percent"]}));
|
||||
|
||||
const rows = DataGridUtils.makeRows(valueCounts, fakeTableMetaData);
|
||||
const columns = DataGridUtils.setupGridColumns(fakeTableMetaData, null, null, "bySection");
|
||||
|
||||
columns.forEach((c) =>
|
||||
{
|
||||
c.width = 200;
|
||||
c.filterable = false;
|
||||
c.hideable = false;
|
||||
})
|
||||
@ -162,7 +162,7 @@ function ColumnStats({tableMetaData, fieldMetaData, fieldTableName, filter}: Pro
|
||||
function CustomPagination()
|
||||
{
|
||||
return (
|
||||
<Box pr={3}>
|
||||
<Box pr={3} fontSize="0.85rem">
|
||||
{rows && rows.length && countDistinct && rows.length < countDistinct ? <span>Showing the first {rows.length.toLocaleString()} of {countDistinct.toLocaleString()} values</span> : <></>}
|
||||
{rows && rows.length && countDistinct && rows.length >= countDistinct && rows.length == 1 ? <span>Showing the only value</span> : <></>}
|
||||
{rows && rows.length && countDistinct && rows.length >= countDistinct && rows.length > 1 ? <span>Showing all {rows.length.toLocaleString()} values</span> : <></>}
|
||||
@ -172,9 +172,9 @@ function ColumnStats({tableMetaData, fieldMetaData, fieldTableName, filter}: Pro
|
||||
|
||||
const refresh = () =>
|
||||
{
|
||||
setLoading(true)
|
||||
setStatusString("Refreshing...")
|
||||
}
|
||||
setLoading(true);
|
||||
setStatusString("Refreshing...");
|
||||
};
|
||||
|
||||
const doExport = () =>
|
||||
{
|
||||
@ -188,7 +188,7 @@ function ColumnStats({tableMetaData, fieldMetaData, fieldTableName, filter}: Pro
|
||||
|
||||
const fileName = tableMetaData.label + " - " + fieldMetaData.label + " Column Stats " + ValueUtils.formatDateTimeForFileName(new Date()) + ".csv";
|
||||
HtmlUtils.download(fileName, csv);
|
||||
}
|
||||
};
|
||||
|
||||
function Loading()
|
||||
{
|
||||
|
@ -259,7 +259,6 @@ export default class DataGridUtils
|
||||
public static makeColumnFromField = (field: QFieldMetaData, tableMetaData: QTableMetaData, namePrefix?: string, labelPrefix?: string): GridColDef =>
|
||||
{
|
||||
let columnType = "string";
|
||||
let columnWidth = 200;
|
||||
let filterOperators: GridFilterOperator<any>[] = QGridStringOperators;
|
||||
|
||||
if (field.possibleValueSourceName)
|
||||
@ -273,28 +272,18 @@ export default class DataGridUtils
|
||||
case QFieldType.DECIMAL:
|
||||
case QFieldType.INTEGER:
|
||||
columnType = "number";
|
||||
columnWidth = 100;
|
||||
|
||||
if (field.name === tableMetaData.primaryKeyField && field.label.length < 3)
|
||||
{
|
||||
columnWidth = 75;
|
||||
}
|
||||
|
||||
filterOperators = QGridNumericOperators;
|
||||
break;
|
||||
case QFieldType.DATE:
|
||||
columnType = "date";
|
||||
columnWidth = 100;
|
||||
filterOperators = QGridDateOperators;
|
||||
break;
|
||||
case QFieldType.DATE_TIME:
|
||||
columnType = "dateTime";
|
||||
columnWidth = 200;
|
||||
filterOperators = QGridDateTimeOperators;
|
||||
break;
|
||||
case QFieldType.BOOLEAN:
|
||||
columnType = "string"; // using boolean gives an odd 'no' for nulls.
|
||||
columnWidth = 75;
|
||||
filterOperators = QGridBooleanOperators;
|
||||
break;
|
||||
case QFieldType.BLOB:
|
||||
@ -305,6 +294,31 @@ export default class DataGridUtils
|
||||
}
|
||||
}
|
||||
|
||||
let headerName = labelPrefix ? labelPrefix + field.label : field.label;
|
||||
let fieldName = namePrefix ? namePrefix + field.name : field.name;
|
||||
|
||||
const column: GridColDef = {
|
||||
field: fieldName,
|
||||
type: columnType,
|
||||
headerName: headerName,
|
||||
width: DataGridUtils.getColumnWidthForField(field, tableMetaData),
|
||||
renderCell: null as any,
|
||||
filterOperators: filterOperators,
|
||||
};
|
||||
|
||||
column.renderCell = (cellValues: any) => (
|
||||
(cellValues.value)
|
||||
);
|
||||
|
||||
return (column);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
*******************************************************************************/
|
||||
public static getColumnWidthForField = (field: QFieldMetaData, table?: QTableMetaData): number =>
|
||||
{
|
||||
if (field.hasAdornment(AdornmentType.SIZE))
|
||||
{
|
||||
const sizeAdornment = field.getAdornment(AdornmentType.SIZE);
|
||||
@ -318,7 +332,7 @@ export default class DataGridUtils
|
||||
]);
|
||||
if (widths.has(width))
|
||||
{
|
||||
columnWidth = widths.get(width);
|
||||
return widths.get(width);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -326,23 +340,31 @@ export default class DataGridUtils
|
||||
}
|
||||
}
|
||||
|
||||
let headerName = labelPrefix ? labelPrefix + field.label : field.label;
|
||||
let fieldName = namePrefix ? namePrefix + field.name : field.name;
|
||||
if(field.possibleValueSourceName)
|
||||
{
|
||||
return (200);
|
||||
}
|
||||
|
||||
const column: GridColDef = {
|
||||
field: fieldName,
|
||||
type: columnType,
|
||||
headerName: headerName,
|
||||
width: columnWidth,
|
||||
renderCell: null as any,
|
||||
filterOperators: filterOperators,
|
||||
};
|
||||
switch (field.type)
|
||||
{
|
||||
case QFieldType.DECIMAL:
|
||||
case QFieldType.INTEGER:
|
||||
|
||||
column.renderCell = (cellValues: any) => (
|
||||
(cellValues.value)
|
||||
);
|
||||
if (table && field.name === table.primaryKeyField && field.label.length < 3)
|
||||
{
|
||||
return (75);
|
||||
}
|
||||
|
||||
return (column);
|
||||
return (100);
|
||||
case QFieldType.DATE:
|
||||
return (100);
|
||||
case QFieldType.DATE_TIME:
|
||||
return (200);
|
||||
case QFieldType.BOOLEAN:
|
||||
return (75);
|
||||
}
|
||||
|
||||
return (200);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -449,12 +449,15 @@ class FilterUtils
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// replace objects that look like expressions with expression instances //
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
for(let i = 0; i < values.length; i++)
|
||||
if(values && values.length)
|
||||
{
|
||||
const expression = this.gridCriteriaValueToExpression(values[i])
|
||||
if(expression)
|
||||
for (let i = 0; i < values.length; i++)
|
||||
{
|
||||
values[i] = expression;
|
||||
const expression = this.gridCriteriaValueToExpression(values[i])
|
||||
if (expression)
|
||||
{
|
||||
values[i] = expression;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user