mirror of
https://github.com/dbgate/dbgate
synced 2024-11-07 20:26:23 +00:00
fixed Data import from files #633
This commit is contained in:
parent
c75ae033ba
commit
a98d5d29ca
48
packages/datalib/src/FreeTableGridDisplay.ts
Normal file
48
packages/datalib/src/FreeTableGridDisplay.ts
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
import _ from 'lodash';
|
||||||
|
import type { EngineDriver, ViewInfo, ColumnInfo } from 'dbgate-types';
|
||||||
|
import { GridDisplay, ChangeCacheFunc, ChangeConfigFunc } from './GridDisplay';
|
||||||
|
import { GridConfig, GridCache } from './GridConfig';
|
||||||
|
import { FreeTableModel } from './FreeTableModel';
|
||||||
|
import { analyseCollectionDisplayColumns } from '.';
|
||||||
|
|
||||||
|
export class FreeTableGridDisplay extends GridDisplay {
|
||||||
|
constructor(
|
||||||
|
public model: FreeTableModel,
|
||||||
|
config: GridConfig,
|
||||||
|
setConfig: ChangeConfigFunc,
|
||||||
|
cache: GridCache,
|
||||||
|
setCache: ChangeCacheFunc
|
||||||
|
) {
|
||||||
|
super(config, setConfig, cache, setCache);
|
||||||
|
this.columns = model?.structure?.__isDynamicStructure
|
||||||
|
? analyseCollectionDisplayColumns(model?.rows, this)
|
||||||
|
: this.getDisplayColumns(model);
|
||||||
|
this.filterable = false;
|
||||||
|
this.sortable = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
getDisplayColumns(model: FreeTableModel) {
|
||||||
|
return _.uniqBy(
|
||||||
|
model?.structure?.columns
|
||||||
|
?.map(col => this.getDisplayColumn(col))
|
||||||
|
?.map(col => ({
|
||||||
|
...col,
|
||||||
|
isChecked: this.isColumnChecked(col),
|
||||||
|
})) || [],
|
||||||
|
col => col.uniqueName
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
getDisplayColumn(col: ColumnInfo) {
|
||||||
|
const uniquePath = [col.columnName];
|
||||||
|
const uniqueName = uniquePath.join('.');
|
||||||
|
return {
|
||||||
|
...col,
|
||||||
|
pureName: 'data',
|
||||||
|
schemaName: '',
|
||||||
|
headerText: col.columnName,
|
||||||
|
uniqueName,
|
||||||
|
uniquePath,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
27
packages/datalib/src/FreeTableModel.ts
Normal file
27
packages/datalib/src/FreeTableModel.ts
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
import type { TableInfo } from 'dbgate-types';
|
||||||
|
|
||||||
|
export interface FreeTableModel {
|
||||||
|
structure: TableInfo;
|
||||||
|
rows: any[];
|
||||||
|
}
|
||||||
|
|
||||||
|
export function createFreeTableModel() {
|
||||||
|
return {
|
||||||
|
structure: {
|
||||||
|
columns: [
|
||||||
|
{
|
||||||
|
columnName: 'col1',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
foreignKeys: [],
|
||||||
|
},
|
||||||
|
rows: [
|
||||||
|
{
|
||||||
|
col1: 'val1',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
col1: 'val2',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
}
|
@ -19,3 +19,5 @@ export * from './PerspectiveDataPattern';
|
|||||||
export * from './PerspectiveDataLoader';
|
export * from './PerspectiveDataLoader';
|
||||||
export * from './perspectiveTools';
|
export * from './perspectiveTools';
|
||||||
export * from './DataDuplicator';
|
export * from './DataDuplicator';
|
||||||
|
export * from './FreeTableGridDisplay';
|
||||||
|
export * from './FreeTableModel';
|
||||||
|
Loading…
Reference in New Issue
Block a user