This commit is contained in:
Jan Prochazka
2021-01-23 07:24:46 +01:00
parent 451af5d09f
commit b9cb8c3a45
22 changed files with 127 additions and 129 deletions

View File

@@ -45,7 +45,7 @@ export function findExistingChangeSetItem(
return [
'inserts',
changeSet.inserts.find(
(x) =>
x =>
x.pureName == definition.pureName &&
x.schemaName == definition.schemaName &&
x.insertedRowIndex == definition.insertedRowIndex
@@ -53,7 +53,7 @@ export function findExistingChangeSetItem(
];
} else {
const inUpdates = changeSet.updates.find(
(x) =>
x =>
x.pureName == definition.pureName &&
x.schemaName == definition.schemaName &&
_.isEqual(x.condition, definition.condition)
@@ -61,7 +61,7 @@ export function findExistingChangeSetItem(
if (inUpdates) return ['updates', inUpdates];
const inDeletes = changeSet.deletes.find(
(x) =>
x =>
x.pureName == definition.pureName &&
x.schemaName == definition.schemaName &&
_.isEqual(x.condition, definition.condition)
@@ -86,7 +86,7 @@ export function setChangeSetValue(
if (existingItem) {
return {
...changeSet,
[fieldName]: changeSet[fieldName].map((item) =>
[fieldName]: changeSet[fieldName].map(item =>
item == existingItem
? {
...item,
@@ -167,8 +167,8 @@ export function batchUpdateChangeSet(
function extractFields(item: ChangeSetItem, allowNulls = true): UpdateField[] {
return _.keys(item.fields)
.filter((targetColumn) => allowNulls || item.fields[targetColumn] != null)
.map((targetColumn) => ({
.filter(targetColumn => allowNulls || item.fields[targetColumn] != null)
.map(targetColumn => ({
targetColumn,
exprType: 'value',
value: item.fields[targetColumn],
@@ -183,11 +183,11 @@ function insertToSql(
if (fields.length == 0) return null;
let autoInc = false;
if (dbinfo) {
const table = dbinfo.tables.find((x) => x.schemaName == item.schemaName && x.pureName == item.pureName);
const table = dbinfo.tables.find(x => x.schemaName == item.schemaName && x.pureName == item.pureName);
if (table) {
const autoIncCol = table.columns.find((x) => x.autoIncrement);
const autoIncCol = table.columns.find(x => x.autoIncrement);
console.log('autoIncCol', autoIncCol);
if (autoIncCol && fields.find((x) => x.targetColumn == autoIncCol.columnName)) {
if (autoIncCol && fields.find(x => x.targetColumn == autoIncCol.columnName)) {
autoInc = true;
}
}
@@ -222,7 +222,7 @@ function insertToSql(
function extractCondition(item: ChangeSetItem): Condition {
return {
conditionType: 'and',
conditions: _.keys(item.condition).map((columnName) => ({
conditions: _.keys(item.condition).map(columnName => ({
conditionType: 'binary',
operator: '=',
left: {
@@ -273,7 +273,7 @@ function deleteToSql(item: ChangeSetItem): Delete {
export function changeSetToSql(changeSet: ChangeSet, dbinfo: DatabaseInfo): Command[] {
return _.compact(
_.flatten([
...changeSet.inserts.map((item) => insertToSql(item, dbinfo)) as any,
...(changeSet.inserts.map(item => insertToSql(item, dbinfo)) as any),
...changeSet.updates.map(updateToSql),
...changeSet.deletes.map(deleteToSql),
])
@@ -289,7 +289,7 @@ export function revertChangeSetRowChanges(changeSet: ChangeSet, definition: Chan
if (item)
return {
...changeSet,
[field]: changeSet[field].filter((x) => x != item),
[field]: changeSet[field].filter(x => x != item),
};
return changeSet;
}
@@ -321,8 +321,8 @@ export function deleteChangeSetRows(changeSet: ChangeSet, definition: ChangeSetR
export function getChangeSetInsertedRows(changeSet: ChangeSet, name?: NamedObjectInfo) {
if (!name) return [];
if (!changeSet) return [];
const rows = changeSet.inserts.filter((x) => x.pureName == name.pureName && x.schemaName == name.schemaName);
const maxIndex = _.maxBy(rows, (x) => x.insertedRowIndex)?.insertedRowIndex;
const rows = changeSet.inserts.filter(x => x.pureName == name.pureName && x.schemaName == name.schemaName);
const maxIndex = _.maxBy(rows, x => x.insertedRowIndex)?.insertedRowIndex;
if (maxIndex == null) return [];
const res = Array(maxIndex + 1).fill({});
for (const row of rows) {

View File

@@ -24,7 +24,7 @@ export class FormViewDisplay {
addFilterColumn(column) {
if (!column) return;
this.setConfig((cfg) => ({
this.setConfig(cfg => ({
...cfg,
formFilterColumns: [...(cfg.formFilterColumns || []), column.uniqueName],
}));
@@ -35,7 +35,7 @@ export class FormViewDisplay {
const value = rowData[column.uniqueName];
const expr = getFilterValueExpression(value, column.dataType);
if (expr) {
this.setConfig((cfg) => ({
this.setConfig(cfg => ({
...cfg,
filters: {
...cfg.filters,
@@ -46,7 +46,7 @@ export class FormViewDisplay {
}
setFilter(uniqueName, value) {
this.setConfig((cfg) => ({
this.setConfig(cfg => ({
...cfg,
filters: {
...cfg.filters,
@@ -58,16 +58,16 @@ export class FormViewDisplay {
removeFilter(uniqueName) {
const reloadRequired = !!this.config.filters[uniqueName];
this.setConfig((cfg) => ({
this.setConfig(cfg => ({
...cfg,
formFilterColumns: (cfg.formFilterColumns || []).filter((x) => x != uniqueName),
formFilterColumns: (cfg.formFilterColumns || []).filter(x => x != uniqueName),
filters: _.omit(cfg.filters || [], uniqueName),
}));
if (reloadRequired) this.reload();
}
reload() {
this.setCache((cache) => ({
this.setCache(cache => ({
// ...cache,
...createGridCache(),
refreshTime: new Date().getTime(),
@@ -84,7 +84,7 @@ export class FormViewDisplay {
requestKeyValue(columnName, value) {
if (this.getKeyValue(columnName) == value) return;
this.setConfig((cfg) => ({
this.setConfig(cfg => ({
...cfg,
formViewKeyRequested: {
...cfg.formViewKey,
@@ -101,13 +101,13 @@ export class FormViewDisplay {
}
const formViewKey = _.pick(
row,
this.baseTable.primaryKey.columns.map((x) => x.columnName)
this.baseTable.primaryKey.columns.map(x => x.columnName)
);
return formViewKey;
}
cancelRequestKey(rowData) {
this.setConfig((cfg) => ({
this.setConfig(cfg => ({
...cfg,
formViewKeyRequested: null,
formViewKey: rowData ? this.extractKey(rowData) : cfg.formViewKey,

View File

@@ -21,15 +21,15 @@ export class FreeTableGridDisplay extends GridDisplay {
getDisplayColumns(model: FreeTableModel) {
return (
model?.structure?.columns
?.map((col) => this.getDisplayColumn(col))
?.map((col) => ({
?.map(col => this.getDisplayColumn(col))
?.map(col => ({
...col,
isChecked: this.isColumnChecked(col),
})) || []
);
}
getDisplayColumn( col: ColumnInfo) {
getDisplayColumn(col: ColumnInfo) {
const uniquePath = [col.columnName];
const uniqueName = uniquePath.join('.');
return {

View File

@@ -71,7 +71,7 @@ export abstract class GridDisplay {
}
focusColumn(uniqueName: string) {
this.setConfig((cfg) => ({
this.setConfig(cfg => ({
...cfg,
focusedColumn: uniqueName,
}));
@@ -90,11 +90,11 @@ export abstract class GridDisplay {
}
get allColumns() {
return this.getColumns(null).filter((col) => col.isChecked || col.uniquePath.length == 1);
return this.getColumns(null).filter(col => col.isChecked || col.uniquePath.length == 1);
}
reload() {
this.setCache((cache) => ({
this.setCache(cache => ({
// ...cache,
...createGridCache(),
refreshTime: new Date().getTime(),
@@ -104,34 +104,34 @@ export abstract class GridDisplay {
includeInColumnSet(field: keyof GridConfigColumns, uniqueName: string, isIncluded: boolean) {
// console.log('includeInColumnSet', field, uniqueName, isIncluded);
if (isIncluded) {
this.setConfig((cfg) => ({
this.setConfig(cfg => ({
...cfg,
[field]: [...(cfg[field] || []), uniqueName],
}));
} else {
this.setConfig((cfg) => ({
this.setConfig(cfg => ({
...cfg,
[field]: (cfg[field] || []).filter((x) => x != uniqueName),
[field]: (cfg[field] || []).filter(x => x != uniqueName),
}));
}
}
showAllColumns() {
this.setConfig((cfg) => ({
this.setConfig(cfg => ({
...cfg,
hiddenColumns: [],
}));
}
hideAllColumns() {
this.setConfig((cfg) => ({
this.setConfig(cfg => ({
...cfg,
hiddenColumns: this.columns.map((x) => x.uniqueName),
hiddenColumns: this.columns.map(x => x.uniqueName),
}));
}
get hiddenColumnIndexes() {
return (this.config.hiddenColumns || []).map((x) => _.findIndex(this.columns, (y) => y.uniqueName == x));
return (this.config.hiddenColumns || []).map(x => _.findIndex(this.columns, y => y.uniqueName == x));
}
isColumnChecked(column: DisplayColumn) {
@@ -179,10 +179,10 @@ export abstract class GridDisplay {
applySortOnSelect(select: Select, displayedColumnInfo: DisplayedColumnInfo) {
if (this.config.sort?.length > 0) {
select.orderBy = this.config.sort
.map((col) => ({ ...col, dispInfo: displayedColumnInfo[col.uniqueName] }))
.map((col) => ({ ...col, expr: select.columns.find((x) => x.alias == col.uniqueName) }))
.filter((col) => col.dispInfo && col.expr)
.map((col) => ({
.map(col => ({ ...col, dispInfo: displayedColumnInfo[col.uniqueName] }))
.map(col => ({ ...col, expr: select.columns.find(x => x.alias == col.uniqueName) }))
.filter(col => col.dispInfo && col.expr)
.map(col => ({
...col.expr,
direction: col.order,
}));
@@ -194,16 +194,14 @@ export abstract class GridDisplay {
}
get groupColumns() {
return this.isGrouped
? _.keys(_.pickBy(this.config.grouping, (v) => v == 'GROUP' || v.startsWith('GROUP:')))
: null;
return this.isGrouped ? _.keys(_.pickBy(this.config.grouping, v => v == 'GROUP' || v.startsWith('GROUP:'))) : null;
}
applyGroupOnSelect(select: Select, displayedColumnInfo: DisplayedColumnInfo) {
const groupColumns = this.groupColumns;
if (groupColumns && groupColumns.length > 0) {
// @ts-ignore
select.groupBy = groupColumns.map((col) => {
select.groupBy = groupColumns.map(col => {
const colExpr: Expression = {
exprType: 'column',
columnName: displayedColumnInfo[col].columnName,
@@ -257,16 +255,16 @@ export abstract class GridDisplay {
};
}
}
select.columns = select.columns.filter((x) => x.alias);
select.columns = select.columns.filter(x => x.alias);
}
}
getColumns(columnFilter) {
return this.columns.filter((col) => filterName(columnFilter, col.columnName));
return this.columns.filter(col => filterName(columnFilter, col.columnName));
}
getGridColumns() {
return this.getColumns(null).filter((x) => this.isColumnChecked(x));
return this.getColumns(null).filter(x => this.isColumnChecked(x));
}
isExpandedColumn(uniqueName: string) {
@@ -282,7 +280,7 @@ export abstract class GridDisplay {
}
setFilter(uniqueName, value) {
this.setConfig((cfg) => ({
this.setConfig(cfg => ({
...cfg,
filters: {
...cfg.filters,
@@ -293,7 +291,7 @@ export abstract class GridDisplay {
}
setFilters(dct) {
this.setConfig((cfg) => ({
this.setConfig(cfg => ({
...cfg,
filters: {
...cfg.filters,
@@ -304,7 +302,7 @@ export abstract class GridDisplay {
}
setSort(uniqueName, order) {
this.setConfig((cfg) => ({
this.setConfig(cfg => ({
...cfg,
sort: [{ uniqueName, order }],
}));
@@ -312,7 +310,7 @@ export abstract class GridDisplay {
}
setGrouping(uniqueName, groupFunc: GroupFunc) {
this.setConfig((cfg) => ({
this.setConfig(cfg => ({
...cfg,
grouping: groupFunc
? {
@@ -327,7 +325,7 @@ export abstract class GridDisplay {
getGrouping(uniqueName): GroupFunc {
if (this.isGrouped) {
if (this.config.grouping[uniqueName]) return this.config.grouping[uniqueName];
const column = this.baseTable.columns.find((x) => x.columnName == uniqueName);
const column = this.baseTable.columns.find(x => x.columnName == uniqueName);
if (isTypeLogical(column?.dataType)) return 'COUNT DISTINCT';
if (column?.autoIncrement) return 'COUNT';
return 'MAX';
@@ -336,7 +334,7 @@ export abstract class GridDisplay {
}
clearGrouping() {
this.setConfig((cfg) => ({
this.setConfig(cfg => ({
...cfg,
grouping: {},
}));
@@ -344,7 +342,7 @@ export abstract class GridDisplay {
}
getSortOrder(uniqueName) {
return this.config.sort.find((x) => x.uniqueName == uniqueName)?.order;
return this.config.sort.find(x => x.uniqueName == uniqueName)?.order;
}
get filterCount() {
@@ -352,7 +350,7 @@ export abstract class GridDisplay {
}
clearFilters() {
this.setConfig((cfg) => ({
this.setConfig(cfg => ({
...cfg,
filters: {},
}));
@@ -365,7 +363,7 @@ export abstract class GridDisplay {
}
getChangeSetField(row, uniqueName, insertedRowIndex): ChangeSetFieldDefinition {
const col = this.columns.find((x) => x.uniqueName == uniqueName);
const col = this.columns.find(x => x.uniqueName == uniqueName);
if (!col) return null;
if (!this.baseTable) return null;
if (this.baseTable.pureName != col.pureName || this.baseTable.schemaName != col.schemaName) return null;
@@ -398,7 +396,7 @@ export abstract class GridDisplay {
const select: Select = {
commandType: 'select',
from: { name, alias: 'basetbl' },
columns: columns.map((col) => ({
columns: columns.map(col => ({
exprType: 'column',
alias: col.columnName,
source: { alias: 'basetbl' },
@@ -413,7 +411,7 @@ export abstract class GridDisplay {
],
};
const displayedColumnInfo = _.keyBy(
this.columns.map((col) => ({ ...col, sourceAlias: 'basetbl' })),
this.columns.map(col => ({ ...col, sourceAlias: 'basetbl' })),
'uniqueName'
);
this.processReferences(select, displayedColumnInfo, options);
@@ -442,7 +440,7 @@ export abstract class GridDisplay {
}
resizeColumn(uniqueName: string, computedSize: number, diff: number) {
this.setConfig((cfg) => {
this.setConfig(cfg => {
const columnWidths = {
...cfg.columnWidths,
};
@@ -495,7 +493,7 @@ export abstract class GridDisplay {
if (!filters) return null;
const conditions = [];
for (const name in filters) {
const column = this.columns.find((x) => (x.columnName = name));
const column = this.columns.find(x => (x.columnName = name));
if (!column) continue;
const filterType = getFilterType(column.dataType);
try {
@@ -525,13 +523,13 @@ export abstract class GridDisplay {
if (!primaryKey) return;
const { columns } = primaryKey;
this.setConfig((cfg) => ({
this.setConfig(cfg => ({
...cfg,
isFormView: true,
formViewKey: rowData
? _.pick(
rowData,
columns.map((x) => x.columnName)
columns.map(x => x.columnName)
)
: null,
formViewKeyRequested: null,

View File

@@ -16,7 +16,7 @@ export class JslGridDisplay extends GridDisplay {
this.filterable = true;
this.columns = columns
.map((col) => ({
.map(col => ({
columnName: col.columnName,
headerText: col.columnName,
uniqueName: col.columnName,
@@ -26,7 +26,7 @@ export class JslGridDisplay extends GridDisplay {
pureName: null,
schemaName: null,
}))
?.map((col) => ({
?.map(col => ({
...col,
isChecked: this.isColumnChecked(col),
}));

View File

@@ -168,7 +168,7 @@ export class TableFormViewDisplay extends FormViewDisplay {
navigate(row) {
const formViewKey = this.extractKey(row);
this.setConfig((cfg) => ({
this.setConfig(cfg => ({
...cfg,
formViewKey,
}));
@@ -226,7 +226,7 @@ export class TableFormViewDisplay extends FormViewDisplay {
}
getChangeSetField(row, uniqueName): ChangeSetFieldDefinition {
const col = this.columns.find((x) => x.uniqueName == uniqueName);
const col = this.columns.find(x => x.uniqueName == uniqueName);
if (!col) return null;
if (!this.baseTable) return null;
if (this.baseTable.pureName != col.pureName || this.baseTable.schemaName != col.schemaName) return null;

View File

@@ -36,8 +36,8 @@ export class TableGridDisplay extends GridDisplay {
this.baseTable = this.table;
if (this.table && this.table.columns) {
this.changeSetKeyFields = this.table.primaryKey
? this.table.primaryKey.columns.map((x) => x.columnName)
: this.table.columns.map((x) => x.columnName);
? this.table.primaryKey.columns.map(x => x.columnName)
: this.table.columns.map(x => x.columnName);
}
}
@@ -45,15 +45,15 @@ export class TableGridDisplay extends GridDisplay {
return (
this.dbinfo &&
this.dbinfo.tables &&
this.dbinfo.tables.find((x) => x.pureName == pureName && x.schemaName == schemaName)
this.dbinfo.tables.find(x => x.pureName == pureName && x.schemaName == schemaName)
);
}
getDisplayColumns(table: TableInfo, parentPath: string[]) {
return (
table?.columns
?.map((col) => this.getDisplayColumn(table, col, parentPath))
?.map((col) => ({
?.map(col => this.getDisplayColumn(table, col, parentPath))
?.map(col => ({
...col,
isChecked: this.isColumnChecked(col),
hintColumnName: col.foreignKey ? `hint_${col.uniqueName}` : null,
@@ -80,7 +80,7 @@ export class TableGridDisplay extends GridDisplay {
addReferenceToSelect(select: Select, parentAlias: string, column: DisplayColumn) {
const childAlias = `${column.uniqueName}_ref`;
if ((select.from.relations || []).find((x) => x.alias == childAlias)) return;
if ((select.from.relations || []).find(x => x.alias == childAlias)) return;
const table = this.getFkTarget(column);
if (table && table.primaryKey) {
select.from.relations = [
@@ -120,7 +120,7 @@ export class TableGridDisplay extends GridDisplay {
}
const table = this.getFkTarget(column);
if (table && table.columns && table.columns.length > 0 && table.primaryKey) {
const hintColumn = table.columns.find((x) => x?.dataType?.toLowerCase()?.includes('char'));
const hintColumn = table.columns.find(x => x?.dataType?.toLowerCase()?.includes('char'));
if (hintColumn) {
const parentUniqueName = column.uniquePath.slice(0, -1).join('.');
this.addReferenceToSelect(select, parentUniqueName ? `${parentUniqueName}_ref` : 'basetbl', column);
@@ -177,7 +177,7 @@ export class TableGridDisplay extends GridDisplay {
}
getColumns(columnFilter) {
return this.enrichExpandedColumns(this.columns.filter((col) => filterName(columnFilter, col.columnName)));
return this.enrichExpandedColumns(this.columns.filter(col => filterName(columnFilter, col.columnName)));
}
getDisplayColumn(table: TableInfo, col: ColumnInfo, parentPath: string[]) {
@@ -191,10 +191,10 @@ export class TableGridDisplay extends GridDisplay {
headerText: uniquePath.length == 1 ? col.columnName : `${table.pureName}.${col.columnName}`,
uniqueName,
uniquePath,
isPrimaryKey: table.primaryKey && !!table.primaryKey.columns.find((x) => x.columnName == col.columnName),
isPrimaryKey: table.primaryKey && !!table.primaryKey.columns.find(x => x.columnName == col.columnName),
foreignKey:
table.foreignKeys &&
table.foreignKeys.find((fk) => fk.columns.length == 1 && fk.columns[0].columnName == col.columnName),
table.foreignKeys.find(fk => fk.columns.length == 1 && fk.columns[0].columnName == col.columnName),
};
}

View File

@@ -23,8 +23,8 @@ export class ViewGridDisplay extends GridDisplay {
getDisplayColumns(view: ViewInfo) {
return (
view?.columns
?.map((col) => this.getDisplayColumn(view, col))
?.map((col) => ({
?.map(col => this.getDisplayColumn(view, col))
?.map(col => ({
...col,
isChecked: this.isColumnChecked(col),
})) || []

View File

@@ -6,17 +6,17 @@ import moment from 'moment';
import { MacroDefinition, MacroSelectedCell } from './MacroDefinition';
const getMacroFunction = {
transformValue: (code) => `
transformValue: code => `
(value, args, modules, rowIndex, row, columnName) => {
${code}
}
`,
transformRows: (code) => `
transformRows: code => `
(rows, args, modules, selectedCells, cols, columns) => {
${code}
}
`,
transformData: (code) => `
transformData: code => `
(rows, args, modules, selectedCells, cols, columns) => {
${code}
}
@@ -83,8 +83,8 @@ function runTramsformValue(
}
function removePreviewRowFlags(rows) {
rows = rows.filter((row) => row.__rowStatus != 'deleted');
rows = rows.map((row) => {
rows = rows.filter(row => row.__rowStatus != 'deleted');
rows = rows.map(row => {
if (row.__rowStatus || row.__modifiedFields || row.__insertedFields || row.__deletedFields)
return _.omit(row, ['__rowStatus', '__modifiedFields', '__insertedFields', '__deletedFields']);
return row;
@@ -107,7 +107,7 @@ function runTramsformRows(
macroArgs,
modules,
selectedCells,
data.structure.columns.map((x) => x.columnName),
data.structure.columns.map(x => x.columnName),
data.structure.columns
);
if (!preview) {
@@ -136,11 +136,11 @@ function runTramsformData(
macroArgs,
modules,
selectedCells,
data.structure.columns.map((x) => x.columnName),
data.structure.columns.map(x => x.columnName),
data.structure.columns
);
if (cols && !columns) {
columns = cols.map((columnName) => ({ columnName }));
columns = cols.map(columnName => ({ columnName }));
}
columns = _.uniqBy(columns, 'columnName');
if (!preview) {