Merge pull request #27 from Kingsrook/dev

dev into sprint-30
This commit is contained in:
2023-08-01 18:46:03 -05:00
committed by GitHub
7 changed files with 271 additions and 40 deletions

View File

@ -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()
{

View File

@ -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);
}
}

View File

@ -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;
}
}
}