better column selection

This commit is contained in:
Jan Prochazka
2021-12-30 21:16:20 +01:00
parent 250d52131c
commit 9f3f4bdbd4
2 changed files with 18 additions and 7 deletions

View File

@@ -1,5 +1,5 @@
<script lang="ts"> <script lang="ts">
import _, { indexOf } from 'lodash'; import _, { indexOf, range } from 'lodash';
import { GridDisplay } from 'dbgate-datalib'; import { GridDisplay } from 'dbgate-datalib';
import { filterName } from 'dbgate-tools'; import { filterName } from 'dbgate-tools';
import CloseSearchButton from '../elements/CloseSearchButton.svelte'; import CloseSearchButton from '../elements/CloseSearchButton.svelte';
@@ -129,12 +129,17 @@
currentColumnUniqueName = column.uniqueName; currentColumnUniqueName = column.uniqueName;
}} }}
on:mousemove={e => { on:mousemove={e => {
if (e.buttons == 1 && !selectedColumns.includes(column.uniqueName)) { if (e.buttons == 1 && dragStartColumnIndex != null && dragStartColumnIndex >= 0) {
selectedColumns = [...selectedColumns, column.uniqueName]; const index = _.findIndex(items, x => x.uniqueName == column.uniqueName);
if (domFocusField) domFocusField.focus(); if (index >= 0) {
currentColumnUniqueName = column.uniqueName; selectedColumns = _.range(
if (!isJsonView) { Math.min(dragStartColumnIndex, index),
display.focusColumn(column.uniqueName); Math.max(dragStartColumnIndex, index) + 1
).map(i => items[i].uniqueName);
currentColumnUniqueName = column.uniqueName;
if (!isJsonView) {
display.focusColumn(column.uniqueName);
}
} }
} }
}} }}
@@ -143,6 +148,9 @@
selectedColumns = [column.uniqueName]; selectedColumns = [column.uniqueName];
if (domFocusField) domFocusField.focus(); if (domFocusField) domFocusField.focus();
currentColumnUniqueName = column.uniqueName; currentColumnUniqueName = column.uniqueName;
if (!isJsonView) {
display.focusColumn(column.uniqueName);
}
}} }}
on:setvisibility={e => { on:setvisibility={e => {
for (const name of selectedColumns) { for (const name of selectedColumns) {

View File

@@ -42,6 +42,9 @@
on:click={e => { on:click={e => {
e.stopPropagation(); e.stopPropagation();
}} }}
on:mousedown={e => {
e.stopPropagation();
}}
on:change={() => { on:change={() => {
const newValue = !column.isChecked; const newValue = !column.isChecked;
display.setColumnVisibility(column.uniquePath, newValue); display.setColumnVisibility(column.uniquePath, newValue);