mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-05-01 13:13:58 +00:00
use of createRef instead of not working { corrent: xxx }
This commit is contained in:
@@ -177,6 +177,7 @@
|
|||||||
import axiosInstance from '../utility/axiosInstance';
|
import axiosInstance from '../utility/axiosInstance';
|
||||||
import { copyTextToClipboard } from '../utility/clipboard';
|
import { copyTextToClipboard } from '../utility/clipboard';
|
||||||
import invalidateCommands from '../commands/invalidateCommands';
|
import invalidateCommands from '../commands/invalidateCommands';
|
||||||
|
import createRef from '../utility/createRef';
|
||||||
|
|
||||||
export let onLoadNextData = undefined;
|
export let onLoadNextData = undefined;
|
||||||
export let grider = undefined;
|
export let grider = undefined;
|
||||||
@@ -416,15 +417,15 @@
|
|||||||
domFocusField.focus();
|
domFocusField.focus();
|
||||||
}
|
}
|
||||||
|
|
||||||
const lastPublishledRef = { current: '' };
|
const lastPublishledRef = createRef('');
|
||||||
$: if (onSelectionChanged) {
|
$: if (onSelectionChanged) {
|
||||||
const published = getCellsPublished(selectedCells);
|
const published = getCellsPublished(selectedCells);
|
||||||
const stringified = stableStringify(published);
|
const stringified = stableStringify(published);
|
||||||
if (lastPublishledRef.current != stringified) {
|
if (lastPublishledRef.get() != stringified) {
|
||||||
// console.log('PUBLISH', published);
|
// console.log('PUBLISH', published);
|
||||||
// console.log('lastPublishledRef.current', lastPublishledRef.current);
|
// console.log('lastPublishledRef.current', lastPublishledRef.current);
|
||||||
// console.log('stringified', stringified);
|
// console.log('stringified', stringified);
|
||||||
lastPublishledRef.current = stringified;
|
lastPublishledRef.set(stringified);
|
||||||
onSelectionChanged(published);
|
onSelectionChanged(published);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import keycodes from '../utility/keycodes';
|
import keycodes from '../utility/keycodes';
|
||||||
import { onMount } from 'svelte';
|
import { onMount } from 'svelte';
|
||||||
|
import createRef from '../utility/createRef';
|
||||||
|
|
||||||
export let inplaceEditorState;
|
export let inplaceEditorState;
|
||||||
export let dispatchInsplaceEditor;
|
export let dispatchInsplaceEditor;
|
||||||
@@ -12,29 +13,29 @@
|
|||||||
|
|
||||||
const widthCopy = width;
|
const widthCopy = width;
|
||||||
|
|
||||||
const isChangedRef = { current: !!inplaceEditorState.text };
|
const isChangedRef = createRef(!!inplaceEditorState.text);
|
||||||
|
|
||||||
function handleKeyDown(event) {
|
function handleKeyDown(event) {
|
||||||
switch (event.keyCode) {
|
switch (event.keyCode) {
|
||||||
case keycodes.escape:
|
case keycodes.escape:
|
||||||
isChangedRef.current = false;
|
isChangedRef.set(false);
|
||||||
dispatchInsplaceEditor({ type: 'close' });
|
dispatchInsplaceEditor({ type: 'close' });
|
||||||
break;
|
break;
|
||||||
case keycodes.enter:
|
case keycodes.enter:
|
||||||
if (isChangedRef.current) {
|
if (isChangedRef.get()) {
|
||||||
// grider.setCellValue(rowIndex, uniqueName, editor.value);
|
// grider.setCellValue(rowIndex, uniqueName, editor.value);
|
||||||
onSetValue(domEditor.value);
|
onSetValue(domEditor.value);
|
||||||
isChangedRef.current = false;
|
isChangedRef.set(false);
|
||||||
}
|
}
|
||||||
domEditor.blur();
|
domEditor.blur();
|
||||||
dispatchInsplaceEditor({ type: 'close', mode: 'enter' });
|
dispatchInsplaceEditor({ type: 'close', mode: 'enter' });
|
||||||
break;
|
break;
|
||||||
case keycodes.s:
|
case keycodes.s:
|
||||||
if (event.ctrlKey) {
|
if (event.ctrlKey) {
|
||||||
if (isChangedRef.current) {
|
if (isChangedRef.get()) {
|
||||||
onSetValue(domEditor.value);
|
onSetValue(domEditor.value);
|
||||||
// grider.setCellValue(rowIndex, uniqueName, editor.value);
|
// grider.setCellValue(rowIndex, uniqueName, editor.value);
|
||||||
isChangedRef.current = false;
|
isChangedRef.set(false);
|
||||||
}
|
}
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
dispatchInsplaceEditor({ type: 'close', mode: 'save' });
|
dispatchInsplaceEditor({ type: 'close', mode: 'save' });
|
||||||
@@ -44,10 +45,10 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
function handleBlur() {
|
function handleBlur() {
|
||||||
if (isChangedRef.current) {
|
if (isChangedRef.get()) {
|
||||||
onSetValue(domEditor.value);
|
onSetValue(domEditor.value);
|
||||||
// grider.setCellValue(rowIndex, uniqueName, editor.value);
|
// grider.setCellValue(rowIndex, uniqueName, editor.value);
|
||||||
isChangedRef.current = false;
|
isChangedRef.set(false);
|
||||||
}
|
}
|
||||||
dispatchInsplaceEditor({ type: 'close' });
|
dispatchInsplaceEditor({ type: 'close' });
|
||||||
}
|
}
|
||||||
@@ -63,7 +64,7 @@
|
|||||||
|
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
on:change={() => (isChangedRef.current = true)}
|
on:change={() => isChangedRef.set(true)}
|
||||||
on:keydown={handleKeyDown}
|
on:keydown={handleKeyDown}
|
||||||
on:blur={handleBlur}
|
on:blur={handleBlur}
|
||||||
bind:this={domEditor}
|
bind:this={domEditor}
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
|
import createRef from '../utility/createRef';
|
||||||
|
|
||||||
import DataGridCore from './DataGridCore.svelte';
|
import DataGridCore from './DataGridCore.svelte';
|
||||||
|
|
||||||
export let loadDataPage;
|
export let loadDataPage;
|
||||||
@@ -17,8 +19,8 @@
|
|||||||
let errorMessage = null;
|
let errorMessage = null;
|
||||||
let domGrid;
|
let domGrid;
|
||||||
|
|
||||||
const loadNextDataRef = { current: false };
|
const loadNextDataRef = createRef(false);
|
||||||
const loadedTimeRef = { current: null };
|
const loadedTimeRef = createRef(null);
|
||||||
|
|
||||||
export function resetLoadedAll() {
|
export function resetLoadedAll() {
|
||||||
isLoadedAll = false;
|
isLoadedAll = false;
|
||||||
@@ -32,17 +34,17 @@
|
|||||||
|
|
||||||
async function loadNextData() {
|
async function loadNextData() {
|
||||||
if (isLoading) return;
|
if (isLoading) return;
|
||||||
loadNextDataRef.current = false;
|
loadNextDataRef.set(false);
|
||||||
isLoading = true;
|
isLoading = true;
|
||||||
|
|
||||||
const loadStart = new Date().getTime();
|
const loadStart = new Date().getTime();
|
||||||
// await new Promise(resolve => setTimeout(resolve, 5000));
|
// await new Promise(resolve => setTimeout(resolve, 5000));
|
||||||
|
|
||||||
loadedTimeRef.current = loadStart;
|
loadedTimeRef.set(loadStart);
|
||||||
// console.log('LOAD NEXT ROWS', loadedRows);
|
// console.log('LOAD NEXT ROWS', loadedRows);
|
||||||
|
|
||||||
const nextRows = await loadDataPage($$props, loadedRows.length, 100);
|
const nextRows = await loadDataPage($$props, loadedRows.length, 100);
|
||||||
if (loadedTimeRef.current !== loadStart) {
|
if (loadedTimeRef.get() !== loadStart) {
|
||||||
// new load was dispatched
|
// new load was dispatched
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -68,7 +70,7 @@
|
|||||||
// }));
|
// }));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (loadNextDataRef.current) {
|
if (loadNextDataRef.get()) {
|
||||||
loadNextData();
|
loadNextData();
|
||||||
}
|
}
|
||||||
// console.log('LOADED', nextRows, loadedRows);
|
// console.log('LOADED', nextRows, loadedRows);
|
||||||
@@ -93,7 +95,7 @@
|
|||||||
isLoadedAll = false;
|
isLoadedAll = false;
|
||||||
loadedTime = new Date().getTime();
|
loadedTime = new Date().getTime();
|
||||||
errorMessage = null;
|
errorMessage = null;
|
||||||
loadNextDataRef.current = false;
|
loadNextDataRef.set(false);
|
||||||
// loadNextDataToken = 0;
|
// loadNextDataToken = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import FormFieldTemplateLarge from '../modals/FormFieldTemplateLarge.svelte';
|
import FormFieldTemplateLarge from '../modals/FormFieldTemplateLarge.svelte';
|
||||||
|
import createRef from '../utility/createRef';
|
||||||
|
|
||||||
import keycodes from '../utility/keycodes';
|
import keycodes from '../utility/keycodes';
|
||||||
|
|
||||||
@@ -24,15 +25,15 @@
|
|||||||
values,
|
values,
|
||||||
template,
|
template,
|
||||||
setFieldValue,
|
setFieldValue,
|
||||||
submitActionRef: { current: null },
|
submitActionRef: createRef(null),
|
||||||
};
|
};
|
||||||
|
|
||||||
setContext(contextKey, context);
|
setContext(contextKey, context);
|
||||||
|
|
||||||
function handleEnter(e) {
|
function handleEnter(e) {
|
||||||
if (e.keyCode == keycodes.enter && context.submitActionRef.current) {
|
if (e.keyCode == keycodes.enter && context.submitActionRef.get()) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
context.submitActionRef.current(values);
|
context.submitActionRef.get()(values);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -12,9 +12,9 @@
|
|||||||
dispatch('click', $values);
|
dispatch('click', $values);
|
||||||
}
|
}
|
||||||
|
|
||||||
submitActionRef.current = () => {
|
submitActionRef.set(() => {
|
||||||
handleClick();
|
handleClick();
|
||||||
};
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<FormStyledButton type="submit" on:click={handleClick} {...$$props} />
|
<FormStyledButton type="submit" on:click={handleClick} {...$$props} />
|
||||||
|
|||||||
@@ -13,27 +13,28 @@
|
|||||||
|
|
||||||
import ModalBase from './ModalBase.svelte';
|
import ModalBase from './ModalBase.svelte';
|
||||||
import { closeCurrentModal, closeModal } from './modalTools';
|
import { closeCurrentModal, closeModal } from './modalTools';
|
||||||
|
import createRef from '../utility/createRef';
|
||||||
|
|
||||||
export let connection;
|
export let connection;
|
||||||
|
|
||||||
let isTesting;
|
let isTesting;
|
||||||
let sqlConnectResult;
|
let sqlConnectResult;
|
||||||
|
|
||||||
const testIdRef = { current: 0 };
|
const testIdRef = createRef(0);
|
||||||
|
|
||||||
async function handleTest(e) {
|
async function handleTest(e) {
|
||||||
isTesting = true;
|
isTesting = true;
|
||||||
testIdRef.current += 1;
|
testIdRef.update(x => x + 1);
|
||||||
const testid = testIdRef.current;
|
const testid = testIdRef.get();
|
||||||
const resp = await axiosInstance.post('connections/test', e.detail);
|
const resp = await axiosInstance.post('connections/test', e.detail);
|
||||||
if (testIdRef.current != testid) return;
|
if (testIdRef.get() != testid) return;
|
||||||
|
|
||||||
isTesting = false;
|
isTesting = false;
|
||||||
sqlConnectResult = resp.data;
|
sqlConnectResult = resp.data;
|
||||||
}
|
}
|
||||||
|
|
||||||
function handleCancelTest() {
|
function handleCancelTest() {
|
||||||
testIdRef.current += 1; // invalidate current test
|
testIdRef.update(x => x + 1); // invalidate current test
|
||||||
isTesting = false;
|
isTesting = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -15,6 +15,7 @@
|
|||||||
import SocketMessageView from '../query/SocketMessageView.svelte';
|
import SocketMessageView from '../query/SocketMessageView.svelte';
|
||||||
import { currentArchive, extensions, selectedWidget } from '../stores';
|
import { currentArchive, extensions, selectedWidget } from '../stores';
|
||||||
import axiosInstance from '../utility/axiosInstance';
|
import axiosInstance from '../utility/axiosInstance';
|
||||||
|
import createRef from '../utility/createRef';
|
||||||
import openNewTab from '../utility/openNewTab';
|
import openNewTab from '../utility/openNewTab';
|
||||||
import socket from '../utility/socket';
|
import socket from '../utility/socket';
|
||||||
import useEffect from '../utility/useEffect';
|
import useEffect from '../utility/useEffect';
|
||||||
@@ -33,7 +34,7 @@
|
|||||||
export let openedFile = undefined;
|
export let openedFile = undefined;
|
||||||
export let importToArchive = false;
|
export let importToArchive = false;
|
||||||
|
|
||||||
const refreshArchiveFolderRef = { current: null };
|
const refreshArchiveFolderRef = createRef(null);
|
||||||
|
|
||||||
$: targetArchiveFolder = importToArchive ? `import-${moment().format('YYYY-MM-DD-hh-mm-ss')}` : $currentArchive;
|
$: targetArchiveFolder = importToArchive ? `import-${moment().format('YYYY-MM-DD-hh-mm-ss')}` : $currentArchive;
|
||||||
|
|
||||||
@@ -54,10 +55,10 @@
|
|||||||
|
|
||||||
const handleRunnerDone = () => {
|
const handleRunnerDone = () => {
|
||||||
busy = false;
|
busy = false;
|
||||||
if (refreshArchiveFolderRef.current) {
|
if (refreshArchiveFolderRef.get()) {
|
||||||
axiosInstance.post('archive/refresh-folders', {});
|
axiosInstance.post('archive/refresh-folders', {});
|
||||||
axiosInstance.post('archive/refresh-files', { folder: refreshArchiveFolderRef.current });
|
axiosInstance.post('archive/refresh-files', { folder: refreshArchiveFolderRef.get() });
|
||||||
$currentArchive = refreshArchiveFolderRef.current;
|
$currentArchive = refreshArchiveFolderRef.get();
|
||||||
$selectedWidget = 'archive';
|
$selectedWidget = 'archive';
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -87,9 +88,9 @@
|
|||||||
runnerId = runid;
|
runnerId = runid;
|
||||||
|
|
||||||
if (values.targetStorageType == 'archive') {
|
if (values.targetStorageType == 'archive') {
|
||||||
refreshArchiveFolderRef.current = values.targetArchiveFolder;
|
refreshArchiveFolderRef.set(values.targetArchiveFolder);
|
||||||
} else {
|
} else {
|
||||||
refreshArchiveFolderRef.current = null;
|
refreshArchiveFolderRef.set(null);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
import ErrorInfo from '../elements/ErrorInfo.svelte';
|
import ErrorInfo from '../elements/ErrorInfo.svelte';
|
||||||
|
import createRef from '../utility/createRef';
|
||||||
|
|
||||||
import socket from '../utility/socket';
|
import socket from '../utility/socket';
|
||||||
|
|
||||||
@@ -13,16 +14,16 @@
|
|||||||
export let eventName;
|
export let eventName;
|
||||||
export let executeNumber;
|
export let executeNumber;
|
||||||
|
|
||||||
const cachedMessagesRef = { current: [] };
|
const cachedMessagesRef = createRef([]);
|
||||||
|
|
||||||
let displayedMessages = [];
|
let displayedMessages = [];
|
||||||
|
|
||||||
const displayCachedMessages = _.throttle(() => {
|
const displayCachedMessages = _.throttle(() => {
|
||||||
displayedMessages = [...cachedMessagesRef.current];
|
displayedMessages = [...cachedMessagesRef.get()];
|
||||||
}, 500);
|
}, 500);
|
||||||
|
|
||||||
const handleInfo = info => {
|
const handleInfo = info => {
|
||||||
cachedMessagesRef.current.push(info);
|
cachedMessagesRef.get().push(info);
|
||||||
displayCachedMessages();
|
displayCachedMessages();
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -39,7 +40,7 @@
|
|||||||
$: {
|
$: {
|
||||||
if (executeNumber >= 0) {
|
if (executeNumber >= 0) {
|
||||||
displayedMessages = [];
|
displayedMessages = [];
|
||||||
cachedMessagesRef.current = [];
|
cachedMessagesRef.set([]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
26
packages/web/src/utility/createRef.ts
Normal file
26
packages/web/src/utility/createRef.ts
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
interface Reference<T> {
|
||||||
|
set(value: T);
|
||||||
|
get(): T;
|
||||||
|
reset(): void;
|
||||||
|
update(func: (arg: T) => T);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default function createRef<T>(value: T): Reference<T> {
|
||||||
|
return {
|
||||||
|
value,
|
||||||
|
initValue: value,
|
||||||
|
|
||||||
|
set(value) {
|
||||||
|
this.value = value;
|
||||||
|
},
|
||||||
|
reset() {
|
||||||
|
this.value = this.initValue;
|
||||||
|
},
|
||||||
|
get() {
|
||||||
|
return this.value;
|
||||||
|
},
|
||||||
|
update(func) {
|
||||||
|
this.value = func(this.value);
|
||||||
|
},
|
||||||
|
} as Reference<T>;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user