diff --git a/packages/datalib/src/GridDisplay.ts b/packages/datalib/src/GridDisplay.ts
index a622cb9cf..c3f5476fd 100644
--- a/packages/datalib/src/GridDisplay.ts
+++ b/packages/datalib/src/GridDisplay.ts
@@ -372,6 +372,22 @@ export abstract class GridDisplay {
this.reload();
}
+ addToSort(uniqueName, order) {
+ this.setConfig(cfg => ({
+ ...cfg,
+ sort: [...(cfg.sort || []), { uniqueName, order }],
+ }));
+ this.reload();
+ }
+
+ clearSort() {
+ this.setConfig(cfg => ({
+ ...cfg,
+ sort: [],
+ }));
+ this.reload();
+ }
+
setGrouping(uniqueName, groupFunc: GroupFunc) {
this.setConfig(cfg => ({
...cfg,
@@ -408,6 +424,15 @@ export abstract class GridDisplay {
return this.config.sort.find(x => x.uniqueName == uniqueName)?.order;
}
+ getSortOrderIndex(uniqueName) {
+ if (this.config.sort.length <= 1) return -1;
+ return _.findIndex(this.config.sort, x => x.uniqueName == uniqueName);
+ }
+
+ isSortDefined() {
+ return (this.config.sort || []).length > 0;
+ }
+
get filterCount() {
return _.compact(_.values(this.config.filters)).length;
}
diff --git a/packages/web/src/datagrid/ColumnHeaderControl.svelte b/packages/web/src/datagrid/ColumnHeaderControl.svelte
index 0160348a9..9e367a0fa 100644
--- a/packages/web/src/datagrid/ColumnHeaderControl.svelte
+++ b/packages/web/src/datagrid/ColumnHeaderControl.svelte
@@ -14,9 +14,13 @@
export let column;
export let conid = undefined;
export let database = undefined;
- export let setSort;
+ export let setSort = undefined;
+ export let addToSort = undefined;
+ export let clearSort = undefined;
export let grouping = undefined;
export let order = undefined;
+ export let orderIndex = undefined;
+ export let isSortDefined = false;
export let allowDefineVirtualReferences = false;
export let setGrouping;
@@ -44,6 +48,9 @@
return [
setSort && { onClick: () => setSort('ASC'), text: 'Sort ascending' },
setSort && { onClick: () => setSort('DESC'), text: 'Sort descending' },
+ isSortDefined && addToSort && !order && { onClick: () => addToSort('ASC'), text: 'Add to sort - ascending' },
+ isSortDefined && addToSort && !order && { onClick: () => addToSort('DESC'), text: 'Add to sort - descending' },
+ order && clearSort && { onClick: () => clearSort(), text: 'Clear sort criteria' },
{ onClick: () => copyTextToClipboard(column.columnName), text: 'Copy column name' },
column.foreignKey && [{ divider: true }, { onClick: openReferencedTable, text: column.foreignKey.refTableName }],
@@ -90,11 +97,17 @@
{#if order == 'ASC'}
+ {#if orderIndex >= 0}
+ {orderIndex + 1}
+ {/if}
{/if}
{#if order == 'DESC'}
+ {#if orderIndex >= 0}
+ {orderIndex + 1}
+ {/if}
{/if}
@@ -106,6 +119,13 @@
display: flex;
flex-wrap: nowrap;
}
+ .order-index {
+ font-size: 10pt;
+ margin-left: -3px;
+ margin-right: 2px;
+ top: -1px;
+ position: relative;
+ }
.label {
flex: 1;
min-width: 10px;
diff --git a/packages/web/src/datagrid/DataGridCore.svelte b/packages/web/src/datagrid/DataGridCore.svelte
index e34c88fad..f2406e4e5 100644
--- a/packages/web/src/datagrid/DataGridCore.svelte
+++ b/packages/web/src/datagrid/DataGridCore.svelte
@@ -1526,7 +1526,11 @@
{conid}
{database}
setSort={display.sortable ? order => display.setSort(col.uniqueName, order) : null}
- order={display.getSortOrder(col.uniqueName)}
+ addToSort={display.sortable ? order => display.addToSort(col.uniqueName, order) : null}
+ order={display.sortable ? display.getSortOrder(col.uniqueName) : null}
+ orderIndex={display.sortable ? display.getSortOrderIndex(col.uniqueName) : -1}
+ isSortDefined={display.sortable ? display.isSortDefined() : false}
+ clearSort={display.sortable ? () => display.clearSort() : null}
on:resizeSplitter={e => {
// @ts-ignore
display.resizeColumn(col.uniqueName, col.width, e.detail);
diff --git a/plugins/dbgate-plugin-mssql/src/backend/driver.js b/plugins/dbgate-plugin-mssql/src/backend/driver.js
index 2c2caae15..0f6a00140 100644
--- a/plugins/dbgate-plugin-mssql/src/backend/driver.js
+++ b/plugins/dbgate-plugin-mssql/src/backend/driver.js
@@ -41,7 +41,7 @@ const windowsAuthTypes = [
disabledFields: ['port'],
},
{
- title: 'NodeJs portable driver (tedious)',
+ title: 'NodeJs portable driver (tedious) - recomended',
name: 'tedious',
},
];