diff --git a/packages/web/public/theme-light.css b/packages/web/public/theme-light.css
index 07aa65596..5da2d1724 100644
--- a/packages/web/public/theme-light.css
+++ b/packages/web/public/theme-light.css
@@ -3,11 +3,21 @@
--theme-font-2: #4d4d4d;
--theme-font-3: #808080;
--theme-font-4: #b3b3b3;
+ --theme-font-hover: #061178; /* blue-9 */
+ --theme-font-link: #10239e; /* blue-8 */
+ --theme-font-alt: #135200; /* green-9 */
+ --theme-bg-0: #fff;
--theme-bg-1: #ededed;
--theme-bg-2: #d4d4d4;
--theme-bg-3: #bbbbbb;
--theme-bg-4: #a2a2a2;
+ --theme-bg-alt: #f0f5ff;
+
+ --theme-bg-gold: #fff1b8; /* gold-2 */
+ --theme-bg-orange: #ffe7ba; /*orange-2 */
+ --theme-bg-green: #d9f7be; /* green-2 */
+ --theme-bg-volcano: #ffd8bf; /* volcano-2 */
--theme-font-inv-1: #FFFFFF;
--theme-font-inv-2: #b3b3b3;
@@ -22,13 +32,14 @@
--theme-border: #ccc;
--theme-bg-hover: #bae7ff;
+ --theme-bg-selected: #91d5ff; /* blue-3 */
--theme-bg-statusbar-inv: blue;
- --theme-icon-blue: #096dd9;
- --theme-icon-green: #237804;
- --theme-icon-red: #cf1322;
- --theme-icon-gold: #d48806;
- --theme-icon-yellow: #d4b106;
- --theme-icon-magenta: #c41d7f;
+ --theme-icon-blue: #096dd9; /* blue-7 */
+ --theme-icon-green: #237804; /* green-7 */
+ --theme-icon-red: #cf1322; /* red-7 */
+ --theme-icon-gold: #d48806; /* gold-7 */
+ --theme-icon-yellow: #d4b106; /* yellow-7 */
+ --theme-icon-magenta: #c41d7f; /* magenta-7 */
}
diff --git a/packages/web/src/datagrid/ColumnHeaderControl.svelte b/packages/web/src/datagrid/ColumnHeaderControl.svelte
index 69af6b3c3..c30638e26 100644
--- a/packages/web/src/datagrid/ColumnHeaderControl.svelte
+++ b/packages/web/src/datagrid/ColumnHeaderControl.svelte
@@ -34,7 +34,7 @@
z-index: 1;
}
.grouping {
- color: green;
+ color: var(--theme-font-alt);
white-space: nowrap;
}
diff --git a/packages/web/src/datagrid/DataGridCell.svelte b/packages/web/src/datagrid/DataGridCell.svelte
new file mode 100644
index 000000000..403d9cd7b
--- /dev/null
+++ b/packages/web/src/datagrid/DataGridCell.svelte
@@ -0,0 +1,127 @@
+
+
+
+
+
+ {#if value == null}
+ (NULL)
+ {:else if _.isDate(value)}
+ {moment(value).format('YYYY-MM-DD HH:mm:ss')}
+ {:else if value === true}
+ 1
+ {:else if value === false}
+ 0
+ {:else if _.isNumber(value)}
+ {#if value >= 10000 || value <= -10000}
+ {value.toLocaleString()}
+ {:else}
+ {value.toString()}
+ {/if}
+ {:else if _.isString(value)}
+ {#if dateTimeRegex.test(value)}
+ {moment(value).format('YYYY-MM-DD HH:mm:ss')}
+ {:else}
+ {highlightSpecialCharacters(value)}
+ {/if}
+ {:else if _.isPlainObject(value)}
+ {#if _.isArray(value.data)}
+ {#if value.data.length == 1 && isTypeLogical(col.dataType)}
+ {value.data[0]}
+ {:else}
+ ({value.data.length} bytes)
+ {/if}
+ {:else}
+ (RAW)
+ {/if}
+ {:else}
+ {value.toString()}
+ {/if}
+
+ {#if hintFieldsAllowed && hintFieldsAllowed.includes(col.uniqueName)}
+ {rowData[col.hintColumnName]}
+ {/if}
+ |
+
+
diff --git a/packages/web/src/datagrid/DataGridCore.svelte b/packages/web/src/datagrid/DataGridCore.svelte
index 99526f444..f600756b0 100644
--- a/packages/web/src/datagrid/DataGridCore.svelte
+++ b/packages/web/src/datagrid/DataGridCore.svelte
@@ -2,6 +2,7 @@
import { GridDisplay } from 'dbgate-datalib';
import _ from 'lodash';
import ColumnHeaderControl from './ColumnHeaderControl.svelte';
+ import DataGridRow from './DataGridRow.svelte';
import { countColumnSizes, countVisibleRealColumns } from './gridutil';
export let loadNextData = undefined;
@@ -55,13 +56,22 @@
{#each visibleRealColumns as col (col.uniqueName)}
-
{/each}
-
+
+ {#each _.range(firstVisibleRowScrollIndex, firstVisibleRowScrollIndex + visibleRowCountUpperBound) as rowIndex (rowIndex)}
+
+ {/each}
+
@@ -84,11 +94,11 @@
outline: none;
}
.header-cell {
- border: 1px solid var(---theme-border);
+ border: 1px solid var(--theme-border);
text-align: left;
padding: 0;
margin: 0;
- background-color: var(---theme-bg-1);
+ background-color: var(--theme-bg-2);
overflow: hidden;
}
.filter-cell {
@@ -104,7 +114,7 @@
}
.row-count-label {
position: absolute;
- background-color: var(---theme-bg-2);
+ background-color: var(--theme-bg-2);
right: 40px;
bottom: 20px;
}
diff --git a/packages/web/src/datagrid/DataGridRow.svelte b/packages/web/src/datagrid/DataGridRow.svelte
new file mode 100644
index 000000000..acc14aa9d
--- /dev/null
+++ b/packages/web/src/datagrid/DataGridRow.svelte
@@ -0,0 +1,40 @@
+
+
+
+
+ {#each visibleRealColumns as col (col.uniqueName)}
+
+ {/each}
+
+
+
diff --git a/packages/web/src/datagrid/RowHeaderCell.svelte b/packages/web/src/datagrid/RowHeaderCell.svelte
new file mode 100644
index 000000000..f423bf088
--- /dev/null
+++ b/packages/web/src/datagrid/RowHeaderCell.svelte
@@ -0,0 +1,18 @@
+
+
+
+ {rowIndex + 1}
+ |
+
+