CB-4719 fix: sql editor shows lock icon only for scripts (not datasets and etc) (#2404)

Co-authored-by: s.teleshev <s.teleshev@mu.se>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
This commit is contained in:
sergeyteleshev
2024-02-22 14:31:35 +03:00
committed by GitHub
co-authored by s.teleshev Daria Marutkina
parent 379e0cb3db
commit 9ba77f112d
@@ -16,7 +16,13 @@ import { useService } from '@cloudbeaver/core-di';
import { ITabData, Tab, TabIcon, TabTitle } from '@cloudbeaver/core-ui';
import { CaptureViewContext } from '@cloudbeaver/core-view';
import type { TabHandlerTabComponent } from '@cloudbeaver/plugin-navigation-tabs';
import { DATA_CONTEXT_SQL_EDITOR_STATE, getSqlEditorName, ISqlEditorTabState, SqlDataSourceService } from '@cloudbeaver/plugin-sql-editor';
import {
DATA_CONTEXT_SQL_EDITOR_STATE,
ESqlDataSourceFeatures,
getSqlEditorName,
ISqlEditorTabState,
SqlDataSourceService,
} from '@cloudbeaver/plugin-sql-editor';
import { DATA_CONTEXT_SQL_EDITOR_TAB } from './DATA_CONTEXT_SQL_EDITOR_TAB';
import sqlEditorTabStyles from './SqlEditorTab.m.css';
@@ -24,13 +30,13 @@ import sqlEditorTabStyles from './SqlEditorTab.m.css';
export const SqlEditorTab: TabHandlerTabComponent<ISqlEditorTabState> = observer(function SqlEditorTab({ tab, onSelect, onClose, style }) {
const viewContext = useContext(CaptureViewContext);
const tabMenuContext = useDataContext(viewContext);
tabMenuContext.set(DATA_CONTEXT_SQL_EDITOR_TAB, true);
tabMenuContext.set(DATA_CONTEXT_SQL_EDITOR_STATE, tab.handlerState);
const sqlDataSourceService = useService(SqlDataSourceService);
const connectionInfo = useService(ConnectionInfoResource);
const translate = useTranslate();
const dataSource = sqlDataSourceService.get(tab.handlerState.editorId);
@@ -44,6 +50,7 @@ export const SqlEditorTab: TabHandlerTabComponent<ISqlEditorTabState> = observer
const name = getSqlEditorName(tab.handlerState, dataSource, connection);
const icon = dataSource?.icon ?? '/icons/sql_script_m.svg';
const saved = dataSource?.isSaved !== false;
const isScript = dataSource?.hasFeature(ESqlDataSourceFeatures.script);
const isReadonly = Boolean(dataSource?.isReadonly());
const hasUnsavedMark = !saved && !isReadonly;
@@ -54,7 +61,9 @@ export const SqlEditorTab: TabHandlerTabComponent<ISqlEditorTabState> = observer
<Tab tabId={tab.id} style={style} title={name} menuContext={tabMenuContext} onOpen={handleSelect} onClose={handleClose}>
<TabIcon icon={icon} />
<TabTitle>{name}</TabTitle>
{isReadonly && <IconOrImage title={translate('ui_readonly')} icon="/icons/lock.png" className={s(sqlEditorTabStyles, { readonlyIcon: true })} />}
{isReadonly && isScript && (
<IconOrImage title={translate('ui_readonly')} icon="/icons/lock.png" className={s(sqlEditorTabStyles, { readonlyIcon: true })} />
)}
{hasUnsavedMark && <unsaved-mark className={s(sqlEditorTabStyles, { unsavedMark: true })} />}
</Tab>,
);