diff --git a/packages/datalib/src/GridDisplay.ts b/packages/datalib/src/GridDisplay.ts index c3f5476fd..7f012324d 100644 --- a/packages/datalib/src/GridDisplay.ts +++ b/packages/datalib/src/GridDisplay.ts @@ -483,6 +483,22 @@ export abstract class GridDisplay { processReferences(select: Select, displayedColumnInfo: DisplayedColumnInfo, options) {} + createColumnExpression(col, source, alias?) { + let expr = null; + if (this.dialect.createColumnViewExpression) { + expr = this.dialect.createColumnViewExpression(col.columnName, col.dataType, source, alias); + if (expr) { + return expr; + } + } + return { + exprType: 'column', + alias: alias || col.columnName, + source, + ...col, + }; + } + createSelectBase(name: NamedObjectInfo, columns: ColumnInfo[], options) { if (!columns) return null; const orderColumnName = columns[0].columnName; @@ -492,12 +508,7 @@ export abstract class GridDisplay { name: _.pick(name, ['schemaName', 'pureName']), alias: 'basetbl', }, - columns: columns.map(col => ({ - exprType: 'column', - alias: col.columnName, - source: { alias: 'basetbl' }, - ...col, - })), + columns: columns.map(col => this.createColumnExpression(col, { alias: 'basetbl' })), orderBy: [ { exprType: 'column', diff --git a/packages/datalib/src/TableGridDisplay.ts b/packages/datalib/src/TableGridDisplay.ts index fc0472071..9252c5ab2 100644 --- a/packages/datalib/src/TableGridDisplay.ts +++ b/packages/datalib/src/TableGridDisplay.ts @@ -267,12 +267,9 @@ export class TableGridDisplay extends GridDisplay { ) { for (const column of columns) { if (this.addAllExpandedColumnsToSelected || this.config.addedColumns.includes(column.uniqueName)) { - select.columns.push({ - exprType: 'column', - columnName: column.columnName, - alias: column.uniqueName, - source: { name: column, alias: parentAlias }, - }); + select.columns.push( + this.createColumnExpression(column, { name: column, alias: parentAlias }, column.uniqueName) + ); displayedColumnInfo[column.uniqueName] = { ...column, sourceAlias: parentAlias, diff --git a/packages/tools/src/stringTools.ts b/packages/tools/src/stringTools.ts index dc8fa14dd..9e3d2d0f4 100644 --- a/packages/tools/src/stringTools.ts +++ b/packages/tools/src/stringTools.ts @@ -84,3 +84,18 @@ export function getIconForRedisType(type) { return null; } } + +export function isWktGeometry(s) { + if (!_isString(s)) return false; + + return ( + s.startsWith('POINT(') || + s.startsWith('LINESTRING(') || + s.startsWith('POLYGON(') || + s.startsWith('MULTIPOINT(') || + s.startsWith('MULTILINESTRING(') || + s.startsWith('MULTIPOLYGON(') || + s.startsWith('GEOMCOLLECTION(') || + s.startsWith('GEOMETRYCOLLECTION(') + ); +} diff --git a/packages/types/dialect.d.ts b/packages/types/dialect.d.ts index d42366159..70b241f1f 100644 --- a/packages/types/dialect.d.ts +++ b/packages/types/dialect.d.ts @@ -34,4 +34,7 @@ export interface SqlDialect { disableExplicitTransaction?: boolean; predefinedDataTypes: string[]; + + // create sql-tree expression + createColumnViewExpression(columnName: string, dataType: string, source: { alias: string }, alias?: string): any; } diff --git a/packages/web/package.json b/packages/web/package.json index 8a28f23d0..371109fea 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -57,6 +57,8 @@ "dependencies": { "chartjs-plugin-zoom": "^1.2.0", "date-fns": "^2.28.0", - "interval-operations": "^1.0.7" + "interval-operations": "^1.0.7", + "leaflet": "^1.8.0", + "wellknown": "^0.5.0" } } diff --git a/packages/web/src/celldata/MapCellView.svelte b/packages/web/src/celldata/MapCellView.svelte new file mode 100644 index 000000000..b38a42dcc --- /dev/null +++ b/packages/web/src/celldata/MapCellView.svelte @@ -0,0 +1,111 @@ + + +
diff --git a/packages/web/src/widgets/CellDataWidget.svelte b/packages/web/src/widgets/CellDataWidget.svelte index 06e391bdf..0829726ea 100644 --- a/packages/web/src/widgets/CellDataWidget.svelte +++ b/packages/web/src/widgets/CellDataWidget.svelte @@ -1,4 +1,6 @@