save using ctrl+s

This commit is contained in:
Jan Prochazka
2020-12-07 19:49:37 +01:00
parent fd2747d166
commit fc6355126f
7 changed files with 41 additions and 12 deletions

View File

@@ -89,13 +89,7 @@ export default function ChartEditor({ data, config, setConfig, sql, conid, datab
{/* <option value="bubble">Bubble</option> {/* <option value="bubble">Bubble</option>
<option value="scatter">Scatter</option> */} <option value="scatter">Scatter</option> */}
</FormSelectField> </FormSelectField>
<FormSelectField label="Color set" name="colorSeed"> <FormTextField label="Color set" name="colorSeed" />
<option value="a">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</FormSelectField>
<FormSelectField label="Truncate from" name="truncateFrom"> <FormSelectField label="Truncate from" name="truncateFrom">
<option value="begin">Begin</option> <option value="begin">Begin</option>
<option value="end">End (most recent data for datetime)</option> <option value="end">End (most recent data for datetime)</option>

View File

@@ -66,7 +66,7 @@ export default function DataChart({ data }) {
key={`${values.chartType}|${containerWidth}|${containerHeight}`} key={`${values.chartType}|${containerWidth}|${containerHeight}`}
width={containerWidth} width={containerWidth}
height={containerHeight} height={containerHeight}
data={createChartData(data, labelColumn, dataColumns, values.colorSeed || 1, values.chartType)} data={createChartData(data, labelColumn, dataColumns, values.colorSeed || '5', values.chartType)}
type={values.chartType} type={values.chartType}
/> />
</ChartWrapper> </ChartWrapper>

View File

@@ -19,7 +19,7 @@ export default function SaveFileModal({ data, folder, format, modalState, name,
<ModalHeader modalState={modalState}>Save file</ModalHeader> <ModalHeader modalState={modalState}>Save file</ModalHeader>
<FormProvider initialValues={{ name }}> <FormProvider initialValues={{ name }}>
<ModalContent> <ModalContent>
<FormTextField label="File name" name="name" /> <FormTextField label="File name" name="name" focused/>
</ModalContent> </ModalContent>
<ModalFooter> <ModalFooter>
<FormSubmit value="Save" onClick={handleSubmit} /> <FormSubmit value="Save" onClick={handleSubmit} />

View File

@@ -1,15 +1,35 @@
import React from 'react'; import React from 'react';
import { changeTab } from '../utility/common'; import { changeTab } from '../utility/common';
import { useOpenedTabs, useSetOpenedTabs } from '../utility/globalState'; import { useOpenedTabs, useSetOpenedTabs } from '../utility/globalState';
import keycodes from '../utility/keycodes';
import SaveFileModal from './SaveFileModal'; import SaveFileModal from './SaveFileModal';
export default function SaveTabModal({ data, folder, format, modalState, tabid }) { export default function SaveTabModal({ data, folder, format, modalState, tabid, tabVisible }) {
const setOpenedTabs = useSetOpenedTabs(); const setOpenedTabs = useSetOpenedTabs();
const openedTabs = useOpenedTabs(); const openedTabs = useOpenedTabs();
const name = openedTabs.find((x) => x.tabid == tabid).title; const name = openedTabs.find((x) => x.tabid == tabid).title;
const onSave = (name) => changeTab(tabid, setOpenedTabs, (tab) => ({ ...tab, title: name })); const onSave = (name) => changeTab(tabid, setOpenedTabs, (tab) => ({ ...tab, title: name }));
const handleKeyboard = React.useCallback(
(e) => {
if (e.keyCode == keycodes.s && e.ctrlKey) {
e.preventDefault();
modalState.open();
}
},
[modalState]
);
React.useEffect(() => {
if (tabVisible) {
document.addEventListener('keydown', handleKeyboard);
return () => {
document.removeEventListener('keydown', handleKeyboard);
};
}
}, [tabVisible, handleKeyboard]);
return ( return (
<SaveFileModal data={data} folder={folder} format={format} modalState={modalState} name={name} onSave={onSave} /> <SaveFileModal data={data} folder={folder} format={format} modalState={modalState} name={name} onSave={onSave} />
); );

View File

@@ -61,6 +61,7 @@ export default function ChartTab({ tabVisible, toolbarPortalRef, conid, database
/> />
<SaveTabModal <SaveTabModal
modalState={saveFileModalState} modalState={saveFileModalState}
tabVisible={tabVisible}
data={modelState.value} data={modelState.value}
format="json" format="json"
folder="charts" folder="charts"

View File

@@ -165,7 +165,14 @@ export default function QueryTab({ tabid, conid, database, initialArgs, tabVisib
/>, />,
toolbarPortalRef.current toolbarPortalRef.current
)} )}
<SaveTabModal modalState={saveFileModalState} data={editorData} format="text" folder="sql" tabid={tabid} /> <SaveTabModal
modalState={saveFileModalState}
tabVisible={tabVisible}
data={editorData}
format="text"
folder="sql"
tabid={tabid}
/>
</> </>
); );
} }

View File

@@ -124,7 +124,14 @@ export default function ShellTab({ tabid, tabVisible, toolbarPortalRef, ...other
/>, />,
toolbarPortalRef.current toolbarPortalRef.current
)} )}
<SaveTabModal modalState={saveFileModalState} data={editorData} format="text" folder="shell" tabid={tabid} /> <SaveTabModal
modalState={saveFileModalState}
tabVisible={tabVisible}
data={editorData}
format="text"
folder="shell"
tabid={tabid}
/>
</> </>
); );
} }