mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-26 20:16:00 +00:00
perspective loading indicator
This commit is contained in:
@@ -44,6 +44,15 @@
|
|||||||
tab: 'TableStructureTab',
|
tab: 'TableStructureTab',
|
||||||
icon: 'img table-structure',
|
icon: 'img table-structure',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
label: 'Open perspective',
|
||||||
|
tab: 'PerspectiveTab',
|
||||||
|
forceNewTab: true,
|
||||||
|
icon: 'img perspective',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
divider: true,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
label: 'Drop table',
|
label: 'Drop table',
|
||||||
isDrop: true,
|
isDrop: true,
|
||||||
@@ -121,12 +130,6 @@
|
|||||||
insert: true,
|
insert: true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
|
||||||
label: 'Create perspective',
|
|
||||||
tab: 'PerspectiveTab',
|
|
||||||
forceNewTab: true,
|
|
||||||
icon: 'img perspective',
|
|
||||||
},
|
|
||||||
],
|
],
|
||||||
views: [
|
views: [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -35,14 +35,9 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import _, { isPlainObject, join } from 'lodash';
|
import _ from 'lodash';
|
||||||
import ShowFormButton from '../formview/ShowFormButton.svelte';
|
|
||||||
import { getBoolSettingsValue } from '../settings/settingsTools';
|
import { getBoolSettingsValue } from '../settings/settingsTools';
|
||||||
import { arrayToHexString, isJsonLikeLongString, safeJsonParse } from 'dbgate-tools';
|
import { arrayToHexString } from 'dbgate-tools';
|
||||||
import { showModal } from '../modals/modalTools';
|
|
||||||
import DictionaryLookupModal from '../modals/DictionaryLookupModal.svelte';
|
|
||||||
import { openJsonDocument } from '../tabs/JsonTab.svelte';
|
|
||||||
import openNewTab from '../utility/openNewTab';
|
|
||||||
|
|
||||||
export let rowData;
|
export let rowData;
|
||||||
export let value;
|
export let value;
|
||||||
|
|||||||
@@ -1,10 +1,7 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import _, { isPlainObject, join } from 'lodash';
|
import _ from 'lodash';
|
||||||
import ShowFormButton from '../formview/ShowFormButton.svelte';
|
import ShowFormButton from '../formview/ShowFormButton.svelte';
|
||||||
import { getBoolSettingsValue } from '../settings/settingsTools';
|
import { isJsonLikeLongString, safeJsonParse } from 'dbgate-tools';
|
||||||
import { arrayToHexString, isJsonLikeLongString, safeJsonParse } from 'dbgate-tools';
|
|
||||||
import { showModal } from '../modals/modalTools';
|
|
||||||
import DictionaryLookupModal from '../modals/DictionaryLookupModal.svelte';
|
|
||||||
import { openJsonDocument } from '../tabs/JsonTab.svelte';
|
import { openJsonDocument } from '../tabs/JsonTab.svelte';
|
||||||
import openNewTab from '../utility/openNewTab';
|
import openNewTab from '../utility/openNewTab';
|
||||||
import CellValue from './CellValue.svelte';
|
import CellValue from './CellValue.svelte';
|
||||||
|
|||||||
@@ -0,0 +1,95 @@
|
|||||||
|
<div class="lds-spinner">
|
||||||
|
<div />
|
||||||
|
<div />
|
||||||
|
<div />
|
||||||
|
<div />
|
||||||
|
<div />
|
||||||
|
<div />
|
||||||
|
<div />
|
||||||
|
<div />
|
||||||
|
<div />
|
||||||
|
<div />
|
||||||
|
<div />
|
||||||
|
<div />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.lds-spinner {
|
||||||
|
color: official;
|
||||||
|
display: inline-block;
|
||||||
|
position: relative;
|
||||||
|
width: 80px;
|
||||||
|
height: 80px;
|
||||||
|
}
|
||||||
|
.lds-spinner div {
|
||||||
|
transform-origin: 40px 40px;
|
||||||
|
animation: lds-spinner 1.2s linear infinite;
|
||||||
|
}
|
||||||
|
.lds-spinner div:after {
|
||||||
|
content: ' ';
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
top: 3px;
|
||||||
|
left: 37px;
|
||||||
|
width: 6px;
|
||||||
|
height: 18px;
|
||||||
|
border-radius: 20%;
|
||||||
|
background: var(--theme-font-2);
|
||||||
|
}
|
||||||
|
.lds-spinner div:nth-child(1) {
|
||||||
|
transform: rotate(0deg);
|
||||||
|
animation-delay: -1.1s;
|
||||||
|
}
|
||||||
|
.lds-spinner div:nth-child(2) {
|
||||||
|
transform: rotate(30deg);
|
||||||
|
animation-delay: -1s;
|
||||||
|
}
|
||||||
|
.lds-spinner div:nth-child(3) {
|
||||||
|
transform: rotate(60deg);
|
||||||
|
animation-delay: -0.9s;
|
||||||
|
}
|
||||||
|
.lds-spinner div:nth-child(4) {
|
||||||
|
transform: rotate(90deg);
|
||||||
|
animation-delay: -0.8s;
|
||||||
|
}
|
||||||
|
.lds-spinner div:nth-child(5) {
|
||||||
|
transform: rotate(120deg);
|
||||||
|
animation-delay: -0.7s;
|
||||||
|
}
|
||||||
|
.lds-spinner div:nth-child(6) {
|
||||||
|
transform: rotate(150deg);
|
||||||
|
animation-delay: -0.6s;
|
||||||
|
}
|
||||||
|
.lds-spinner div:nth-child(7) {
|
||||||
|
transform: rotate(180deg);
|
||||||
|
animation-delay: -0.5s;
|
||||||
|
}
|
||||||
|
.lds-spinner div:nth-child(8) {
|
||||||
|
transform: rotate(210deg);
|
||||||
|
animation-delay: -0.4s;
|
||||||
|
}
|
||||||
|
.lds-spinner div:nth-child(9) {
|
||||||
|
transform: rotate(240deg);
|
||||||
|
animation-delay: -0.3s;
|
||||||
|
}
|
||||||
|
.lds-spinner div:nth-child(10) {
|
||||||
|
transform: rotate(270deg);
|
||||||
|
animation-delay: -0.2s;
|
||||||
|
}
|
||||||
|
.lds-spinner div:nth-child(11) {
|
||||||
|
transform: rotate(300deg);
|
||||||
|
animation-delay: -0.1s;
|
||||||
|
}
|
||||||
|
.lds-spinner div:nth-child(12) {
|
||||||
|
transform: rotate(330deg);
|
||||||
|
animation-delay: 0s;
|
||||||
|
}
|
||||||
|
@keyframes lds-spinner {
|
||||||
|
0% {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -27,6 +27,7 @@
|
|||||||
import { openJsonDocument } from '../tabs/JsonTab.svelte';
|
import { openJsonDocument } from '../tabs/JsonTab.svelte';
|
||||||
import PerspectiveCell from './PerspectiveCell.svelte';
|
import PerspectiveCell from './PerspectiveCell.svelte';
|
||||||
import DataGridCell from '../datagrid/DataGridCell.svelte';
|
import DataGridCell from '../datagrid/DataGridCell.svelte';
|
||||||
|
import PerspectiveLoadingIndicator from './PerspectiveLoadingIndicator.svelte';
|
||||||
|
|
||||||
const dbg = debug('dbgate:PerspectivaTable');
|
const dbg = debug('dbgate:PerspectivaTable');
|
||||||
export const activator = createActivator('PerspectiveTable', true);
|
export const activator = createActivator('PerspectiveTable', true);
|
||||||
@@ -38,6 +39,7 @@
|
|||||||
let dataRows;
|
let dataRows;
|
||||||
let domWrapper;
|
let domWrapper;
|
||||||
let errorMessage;
|
let errorMessage;
|
||||||
|
let isLoading = false;
|
||||||
|
|
||||||
async function loadLevelData(node: PerspectiveTreeNode, parentRows: any[], counts) {
|
async function loadLevelData(node: PerspectiveTreeNode, parentRows: any[], counts) {
|
||||||
dbg('load level data', counts);
|
dbg('load level data', counts);
|
||||||
@@ -103,6 +105,7 @@
|
|||||||
// console.log('LOADING', node);
|
// console.log('LOADING', node);
|
||||||
if (!node) return;
|
if (!node) return;
|
||||||
const rows = [];
|
const rows = [];
|
||||||
|
isLoading = true;
|
||||||
try {
|
try {
|
||||||
await loadLevelData(node, rows, counts);
|
await loadLevelData(node, rows, counts);
|
||||||
dataRows = rows;
|
dataRows = rows;
|
||||||
@@ -113,6 +116,7 @@
|
|||||||
errorMessage = err.message;
|
errorMessage = err.message;
|
||||||
dataRows = null;
|
dataRows = null;
|
||||||
}
|
}
|
||||||
|
isLoading = false;
|
||||||
// console.log('DISPLAY ROWS', rows);
|
// console.log('DISPLAY ROWS', rows);
|
||||||
// const rows = await node.loadLevelData();
|
// const rows = await node.loadLevelData();
|
||||||
// for (const child of node.childNodes) {
|
// for (const child of node.childNodes) {
|
||||||
@@ -228,6 +232,12 @@
|
|||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
|
{#if isLoading}
|
||||||
|
<div class="loader">
|
||||||
|
<PerspectiveLoadingIndicator />
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
@@ -293,4 +303,10 @@
|
|||||||
th {
|
th {
|
||||||
border: 1px solid;
|
border: 1px solid;
|
||||||
} */
|
} */
|
||||||
|
|
||||||
|
.loader {
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
Reference in New Issue
Block a user