diff --git a/packages/web/src/datagrid/DataGridCore.js b/packages/web/src/datagrid/DataGridCore.js
index c8bb756b8..8fbb48f47 100644
--- a/packages/web/src/datagrid/DataGridCore.js
+++ b/packages/web/src/datagrid/DataGridCore.js
@@ -31,6 +31,7 @@ import useTheme from '../theme/useTheme';
import { useShowMenu } from '../modals/showMenu';
import useOpenNewTab from '../utility/useOpenNewTab';
import axios from '../utility/axios';
+import openReferenceForm from '../formview/openReferenceForm';
const GridContainer = styled.div`
position: absolute;
@@ -305,33 +306,7 @@ export default function DataGridCore(props) {
formViewAvailable && display.baseTable && display.baseTable.primaryKey
? (rowData, column) => {
if (column) {
- const formViewKey = _.fromPairs(
- column.foreignKey.columns.map(({ refColumnName, columnName }) => [refColumnName, rowData[columnName]])
- );
- console.log('formViewKey', formViewKey);
- openNewTab(
- {
- title: column.foreignKey.refTableName,
- icon: 'img table',
- tabComponent: 'TableDataTab',
- props: {
- schemaName: column.foreignKey.refSchemaName,
- pureName: column.foreignKey.refTableName,
- conid,
- database,
- objectTypeField: 'tables',
- },
- },
- {
- grid: {
- isFormView: true,
- formViewKey,
- },
- },
- {
- forceNewTab: true,
- }
- );
+ openReferenceForm(rowData, column, openNewTab, conid, database);
} else {
display.switchToFormView(rowData);
}
diff --git a/packages/web/src/datagrid/DataGridRow.js b/packages/web/src/datagrid/DataGridRow.js
index c59583f24..a70d1c1d6 100644
--- a/packages/web/src/datagrid/DataGridRow.js
+++ b/packages/web/src/datagrid/DataGridRow.js
@@ -129,7 +129,7 @@ const AutoFillPoint = styled.div`
cursor: crosshair;
`;
-const ShowFormButton = styled.div`
+export const ShowFormButton = styled.div`
position: absolute;
right: 0px;
top: 1px;
diff --git a/packages/web/src/formview/FormView.js b/packages/web/src/formview/FormView.js
index 741164f7d..b9afa5386 100644
--- a/packages/web/src/formview/FormView.js
+++ b/packages/web/src/formview/FormView.js
@@ -12,10 +12,13 @@ import FormViewToolbar from './FormViewToolbar';
import { useShowMenu } from '../modals/showMenu';
import FormViewContextMenu from './FormViewContextMenu';
import keycodes from '../utility/keycodes';
-import { CellFormattedValue } from '../datagrid/DataGridRow';
+import { CellFormattedValue, ShowFormButton } from '../datagrid/DataGridRow';
import { cellFromEvent } from '../datagrid/selection';
import InplaceEditor from '../datagrid/InplaceEditor';
import { copyTextToClipboard } from '../utility/clipboard';
+import { FontIcon } from '../icons';
+import openReferenceForm from './openReferenceForm';
+import useOpenNewTab from '../utility/useOpenNewTab';
const Table = styled.table`
border-collapse: collapse;
@@ -132,6 +135,7 @@ export default function FormView(props) {
const focusFieldRef = React.useRef(null);
const [currentCell, setCurrentCell] = React.useState([0, 0]);
const cellRefs = React.useRef({});
+ const openNewTab = useOpenNewTab();
const rowCount = Math.floor((wrapperHeight - 20) / rowHeight);
const columnChunks = _.chunk(formDisplay.columns, rowCount);
@@ -476,12 +480,28 @@ export default function FormView(props) {
/>
) : (
<>
-
+
{!!col.hintColumnName &&
rowData &&
!(rowStatus.modifiedFields && rowStatus.modifiedFields.has(col.uniqueName)) && (
{rowData[col.hintColumnName]}
)}
+ {col.foreignKey && rowData && rowData[col.uniqueName] && (
+ {
+ e.stopPropagation();
+ openReferenceForm(rowData, col, openNewTab, conid, database);
+ }}
+ >
+
+
+ )}
>
)}
diff --git a/packages/web/src/formview/openReferenceForm.js b/packages/web/src/formview/openReferenceForm.js
new file mode 100644
index 000000000..00bffeffd
--- /dev/null
+++ b/packages/web/src/formview/openReferenceForm.js
@@ -0,0 +1,30 @@
+import _ from 'lodash';
+
+export default function openReferenceForm(rowData, column, openNewTab, conid, database) {
+ const formViewKey = _.fromPairs(
+ column.foreignKey.columns.map(({ refColumnName, columnName }) => [refColumnName, rowData[columnName]])
+ );
+ openNewTab(
+ {
+ title: column.foreignKey.refTableName,
+ icon: 'img table',
+ tabComponent: 'TableDataTab',
+ props: {
+ schemaName: column.foreignKey.refSchemaName,
+ pureName: column.foreignKey.refTableName,
+ conid,
+ database,
+ objectTypeField: 'tables',
+ },
+ },
+ {
+ grid: {
+ isFormView: true,
+ formViewKey,
+ },
+ },
+ {
+ forceNewTab: true,
+ }
+ );
+}