forked from jappel/leistungsbilanz-ts
Improve editor totals and formatting
This commit is contained in:
parent
a04c2c04d4
commit
0180f768ac
8 changed files with 134 additions and 55 deletions
|
|
@ -60,10 +60,9 @@ export const allColumns: ColumnDef[] = [
|
|||
{ key: "equipmentIdentifier", label: "Betriebsmittelkennzeichen", defaultVisible: true, locked: true },
|
||||
{ key: "displayName", label: "Anzeigename", defaultVisible: true },
|
||||
{ key: "quantity", label: "Anzahl", numeric: true, defaultVisible: true },
|
||||
{ key: "powerPerUnit", label: "Leistung / Gerät", numeric: true, defaultVisible: true },
|
||||
{ key: "powerPerUnit", label: "Leistung / Gerät [kW]", numeric: true, defaultVisible: true },
|
||||
{ key: "simultaneityFactor", label: "Gleichzeitigkeit", numeric: true, defaultVisible: true },
|
||||
{ key: "rowTotalPower", label: "Zeilensumme", numeric: true, defaultVisible: true },
|
||||
{ key: "circuitTotalPower", label: "Stromkreissumme", numeric: true, defaultVisible: true },
|
||||
{ key: "rowTotalPower", label: "Gesamtsumme [kW]", numeric: true, defaultVisible: true },
|
||||
{ key: "protectionSummary", label: "Schutz", defaultVisible: true },
|
||||
{ key: "cableSummary", label: "Kabel", defaultVisible: true },
|
||||
{ key: "roomSummary", label: "Raum", defaultVisible: true },
|
||||
|
|
@ -169,13 +168,53 @@ const circuitFieldKeys = new Set<CellKey>([
|
|||
"remark",
|
||||
]);
|
||||
|
||||
export function formatValue(value: GridValue): string {
|
||||
const numberFormatters = new Map<number, Intl.NumberFormat>();
|
||||
|
||||
function formatNumber(value: number, maximumFractionDigits: number): string {
|
||||
let formatter = numberFormatters.get(maximumFractionDigits);
|
||||
if (!formatter) {
|
||||
formatter = new Intl.NumberFormat("de-DE", {
|
||||
maximumFractionDigits,
|
||||
minimumFractionDigits: 0,
|
||||
useGrouping: false,
|
||||
});
|
||||
numberFormatters.set(maximumFractionDigits, formatter);
|
||||
}
|
||||
return formatter.format(value);
|
||||
}
|
||||
|
||||
function getMaximumFractionDigits(key: CellKey | undefined): number {
|
||||
if (
|
||||
key === "powerPerUnit" ||
|
||||
key === "rowTotalPower" ||
|
||||
key === "circuitTotalPower"
|
||||
) {
|
||||
return 3;
|
||||
}
|
||||
if (
|
||||
key === "simultaneityFactor" ||
|
||||
key === "cosPhi" ||
|
||||
key === "protectionRatedCurrent" ||
|
||||
key === "cableLength"
|
||||
) {
|
||||
return 2;
|
||||
}
|
||||
if (key === "voltage") {
|
||||
return 0;
|
||||
}
|
||||
return 3;
|
||||
}
|
||||
|
||||
export function formatValue(value: GridValue, key?: CellKey): string {
|
||||
if (value === undefined || value === null || value === "") {
|
||||
return "-";
|
||||
}
|
||||
if (typeof value === "boolean") {
|
||||
return value ? "Ja" : "Nein";
|
||||
}
|
||||
if (typeof value === "number") {
|
||||
return formatNumber(value, getMaximumFractionDigits(key));
|
||||
}
|
||||
return String(value);
|
||||
}
|
||||
|
||||
|
|
@ -317,12 +356,15 @@ export function getCircuitValue(circuit: CircuitTreeCircuitDto, key: CellKey): G
|
|||
}
|
||||
}
|
||||
|
||||
export function normalizeFilterValue(value: GridValue): string {
|
||||
return formatValue(value);
|
||||
export function normalizeFilterValue(key: CellKey, value: GridValue): string {
|
||||
return formatValue(value, key);
|
||||
}
|
||||
|
||||
export function getBlockSortValue(circuit: CircuitTreeCircuitDto, key: CellKey): GridValue {
|
||||
const firstRow = circuit.deviceRows[0];
|
||||
if (key === "rowTotalPower") {
|
||||
return circuit.circuitTotalPower;
|
||||
}
|
||||
if (circuitOnlyColumns.has(key)) {
|
||||
return getCircuitValue(circuit, key);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -47,16 +47,19 @@ export interface VisibleGridRow {
|
|||
|
||||
function getCircuitBlockFilterValues(circuit: CircuitTreeCircuitDto, key: CellKey): Set<string> {
|
||||
const values = new Set<string>();
|
||||
if (key === "rowTotalPower") {
|
||||
values.add(normalizeFilterValue(key, circuit.circuitTotalPower));
|
||||
}
|
||||
if (circuitOnlyColumns.has(key) || key === "displayName" || key === "remark") {
|
||||
values.add(normalizeFilterValue(getCircuitValue(circuit, key)));
|
||||
values.add(normalizeFilterValue(key, getCircuitValue(circuit, key)));
|
||||
}
|
||||
if (!circuitOnlyColumns.has(key)) {
|
||||
for (const device of circuit.deviceRows) {
|
||||
values.add(normalizeFilterValue(getDeviceValue(device, key)));
|
||||
values.add(normalizeFilterValue(key, getDeviceValue(device, key)));
|
||||
}
|
||||
}
|
||||
if (values.size === 0 && deviceFieldKeys.has(key)) {
|
||||
values.add(normalizeFilterValue(undefined));
|
||||
values.add(normalizeFilterValue(key, undefined));
|
||||
}
|
||||
return values;
|
||||
}
|
||||
|
|
@ -140,10 +143,12 @@ function makeVisibleGridRow(
|
|||
value = getDeviceValue(device, column.key);
|
||||
} else if (kind === "circuitField" && circuit) {
|
||||
value = getCircuitValue(circuit, column.key);
|
||||
} else if (column.key === "circuitTotalPower" && circuit) {
|
||||
value = circuit.circuitTotalPower;
|
||||
} else if (column.key === "rowTotalPower" && device) {
|
||||
value = device.rowTotalPower;
|
||||
} else if (column.key === "rowTotalPower" && circuit) {
|
||||
value = circuit.circuitTotalPower;
|
||||
} else if (column.key === "circuitTotalPower" && circuit) {
|
||||
value = circuit.circuitTotalPower;
|
||||
}
|
||||
|
||||
return { cellKey: column.key, editable, kind, value };
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue