Skip to content

Commit

Permalink
merging with develop
Browse files Browse the repository at this point in the history
  • Loading branch information
Alfred Rubin committed Mar 11, 2024
1 parent 6ca2e4b commit e7d7d98
Show file tree
Hide file tree
Showing 6 changed files with 93 additions and 119 deletions.
4 changes: 2 additions & 2 deletions src/chart/parameter/ParameterSelectCardSettings.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ const ParameterSelectCardSettings = ({ query, database, settings, onReportSettin

const [queryText, setQueryText] = React.useState(query);
const debouncedQueryUpdate = useCallback(debounce(onQueryUpdate, 250), []);
const debouncedRunCypherQuery = useCallback(debounce(connectionModule.runQuery, RUN_QUERY_DELAY_MS), []);
const debouncedRunQuery = useCallback(debounce(connectionModule.runQuery, RUN_QUERY_DELAY_MS), []);

const { manualPropertyNameSpecification } = settings;
const [labelInputText, setLabelInputText] = React.useState(settings.entityType);
Expand Down Expand Up @@ -82,7 +82,7 @@ const ParameterSelectCardSettings = ({ query, database, settings, onReportSettin
setSchema: () => {},
};

debouncedRunCypherQuery(driver, queryParams, queryCallback);
debouncedRunQuery(driver, queryParams, queryCallback);
},
[database]
);
Expand Down
40 changes: 17 additions & 23 deletions src/dashboard/sidebar/modal/DashboardSidebarAccessModal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,10 @@ import { IconButton, Button, Dialog, TextInput } from '@neo4j-ndl/react';
import { Menu, MenuItem, Chip } from '@mui/material';
import { Neo4jContext, Neo4jContextState } from 'use-neo4j/dist/neo4j.context';
import { PlusCircleIconOutline } from '@neo4j-ndl/react/icons';
import { QueryStatus, runCypherQuery } from '../../../report/ReportQueryRunner';
import { createNotificationThunk } from '../../../page/PageThunks';
import { useDispatch } from 'react-redux';
import { runCypherQuery } from '../../../connection/neo4j/runCypherQuery';
import { QueryStatus } from '../../../connection/interfaces';
/**
* Configures setting the current Neo4j database connection for the dashboard.
* @param open - Whether the modal is open or not.
Expand All @@ -15,8 +16,8 @@ import { useDispatch } from 'react-redux';
*/
export const NeoDashboardSidebarAccessModal = ({ open, database, dashboard, handleClose }) => {
const [anchorEl, setAnchorEl] = useState(null);
const [selectedLabels, setSelectedLabels] = useState([]);
const [allLabels, setAllLabels] = useState([]);
const [selectedLabels, setSelectedLabels] = useState<string[]>([]);
const [allLabels, setAllLabels] = useState<string[]>([]);
const [neo4jLabels, setNeo4jLabels] = useState([]);
const [newLabel, setNewLabel] = useState('');
const INITIAL_LABEL = '_Neodash_Dashboard';
Expand All @@ -28,35 +29,30 @@ export const NeoDashboardSidebarAccessModal = ({ open, database, dashboard, hand
if (!open) {
return;
}
runCypherQuery(
runCypherQuery({

Check warning on line 32 in src/dashboard/sidebar/modal/DashboardSidebarAccessModal.tsx

View check run for this annotation

Codecov / codecov/patch

src/dashboard/sidebar/modal/DashboardSidebarAccessModal.tsx#L32

Added line #L32 was not covered by tests
driver,
database,
'CALL db.labels()',
{},
1000,
() => {},
(records) => setNeo4jLabels(records.map((record) => record.get('label')))
);
query: 'CALL db.labels()',
setRecords: (records) => setNeo4jLabels(records.map((record) => record.get('label'))),

Check warning on line 36 in src/dashboard/sidebar/modal/DashboardSidebarAccessModal.tsx

View check run for this annotation

Codecov / codecov/patch

src/dashboard/sidebar/modal/DashboardSidebarAccessModal.tsx#L36

Added line #L36 was not covered by tests
});

const query = `
MATCH (d:${INITIAL_LABEL} {uuid: "${dashboard.uuid}"})
RETURN labels(d) as labels
`;
runCypherQuery(
runCypherQuery({

Check warning on line 43 in src/dashboard/sidebar/modal/DashboardSidebarAccessModal.tsx

View check run for this annotation

Codecov / codecov/patch

src/dashboard/sidebar/modal/DashboardSidebarAccessModal.tsx#L43

Added line #L43 was not covered by tests
driver,
database,
query,
{},
1000,
(error) => {
setError: (error) => {

Check warning on line 47 in src/dashboard/sidebar/modal/DashboardSidebarAccessModal.tsx

View check run for this annotation

Codecov / codecov/patch

src/dashboard/sidebar/modal/DashboardSidebarAccessModal.tsx#L47

Added line #L47 was not covered by tests
console.error(error);
},
(records) => {
setRecords: (records) => {

Check warning on line 50 in src/dashboard/sidebar/modal/DashboardSidebarAccessModal.tsx

View check run for this annotation

Codecov / codecov/patch

src/dashboard/sidebar/modal/DashboardSidebarAccessModal.tsx#L50

Added line #L50 was not covered by tests
// Set the selectedLabels state to the labels of the dashboard
setSelectedLabels(records[0].get('labels'));
setAllLabels(records[0].get('labels'));
}
);
},
});
setFeedback('');
setNewLabel('');
}, [open]);
Expand Down Expand Up @@ -114,13 +110,12 @@ export const NeoDashboardSidebarAccessModal = ({ open, database, dashboard, hand
RETURN 1;
`;

runCypherQuery(
runCypherQuery({

Check warning on line 113 in src/dashboard/sidebar/modal/DashboardSidebarAccessModal.tsx

View check run for this annotation

Codecov / codecov/patch

src/dashboard/sidebar/modal/DashboardSidebarAccessModal.tsx#L113

Added line #L113 was not covered by tests
driver,
database,
query,
{ selectedLabels: selectedLabels },
1000,
(status) => {
parameters: { selectedLabels: selectedLabels },
setStatus: (status) => {

Check warning on line 118 in src/dashboard/sidebar/modal/DashboardSidebarAccessModal.tsx

View check run for this annotation

Codecov / codecov/patch

src/dashboard/sidebar/modal/DashboardSidebarAccessModal.tsx#L118

Added line #L118 was not covered by tests
if (status == QueryStatus.COMPLETE) {
dispatch(
createNotificationThunk(
Expand All @@ -138,8 +133,7 @@ export const NeoDashboardSidebarAccessModal = ({ open, database, dashboard, hand
);
}
},
() => {}
);
});
};

return (
Expand Down
4 changes: 2 additions & 2 deletions src/extensions/forms/chart/NeoForm.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ const NeoForm = (props: ChartProps) => {
const [submitButtonActive, setSubmitButtonActive] = React.useState(true);
const [status, setStatus] = React.useState(FormStatus.DATA_ENTRY);
const [formResults, setFormResults] = React.useState([]);
const debouncedRunCypherQuery = useCallback(debounce(props.queryCallback, RUN_QUERY_DELAY_MS), []);
const debouncedRunQuery = useCallback(debounce(props.queryCallback, RUN_QUERY_DELAY_MS), []);

Check warning on line 33 in src/extensions/forms/chart/NeoForm.tsx

View check run for this annotation

Codecov / codecov/patch

src/extensions/forms/chart/NeoForm.tsx#L33

Added line #L33 was not covered by tests

// Helper function to force a refresh on all reports that depend on the form.
// All reports that use one or more parameters used in the form will be refreshed.
Expand Down Expand Up @@ -87,7 +87,7 @@ const NeoForm = (props: ChartProps) => {
return;
}
setStatus(FormStatus.RUNNING);
debouncedRunCypherQuery(props.query, props.parameters, (records) => {
debouncedRunQuery(props.query, props.parameters, (records) => {

Check warning on line 90 in src/extensions/forms/chart/NeoForm.tsx

View check run for this annotation

Codecov / codecov/patch

src/extensions/forms/chart/NeoForm.tsx#L90

Added line #L90 was not covered by tests
setFormResults(records);
if (records && records[0] && records[0].error) {
setStatus(FormStatus.ERROR);
Expand Down
16 changes: 7 additions & 9 deletions src/extensions/rbac/RBACManagementMenu.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ import React, { useEffect, useState, useContext } from 'react';
import { Menu, MenuItem, MenuItems } from '@neo4j-ndl/react';
import { UserIconOutline } from '@neo4j-ndl/react/icons';
import { Neo4jContext, Neo4jContextState } from 'use-neo4j/dist/neo4j.context';
import { QueryStatus, runCypherQuery } from '../../report/ReportQueryRunner';
import RBACManagementModal from './RBACManagementModal';
import { runCypherQuery } from '../../connection/neo4j/runCypherQuery';

/**
* Component for providing a menu of all the roles in the neo4j database to the user whenever they press on the
Expand All @@ -20,22 +20,20 @@ export const RBACManagementMenu = ({ anchorEl, MenuOpen, handleClose, createNoti
return;
}
const query = `SHOW PRIVILEGES YIELD role, action WHERE role <> "PUBLIC" RETURN role, 'dbms_actions' in collect(action)`;
runCypherQuery(
runCypherQuery({

Check warning on line 23 in src/extensions/rbac/RBACManagementMenu.tsx

View check run for this annotation

Codecov / codecov/patch

src/extensions/rbac/RBACManagementMenu.tsx#L23

Added line #L23 was not covered by tests
driver,
'system',
database: 'system',
query,
{},
1000,
() => {},
(records) => {

setRecords: (records) => {

Check warning on line 28 in src/extensions/rbac/RBACManagementMenu.tsx

View check run for this annotation

Codecov / codecov/patch

src/extensions/rbac/RBACManagementMenu.tsx#L28

Added line #L28 was not covered by tests
if (records[0].error) {
createNotification('Unable to retrieve roles', records[0].error);
return;
}
// Only display roles which are not able to do 'dbms_actions', i.e. they are not admins.
setRoles(records.filter((r) => r._fields[1] == false).map((record) => record._fields[0]));
}
);
},
});
}, [MenuOpen]);

if (roles.length == 0) {
Expand Down
Loading

0 comments on commit e7d7d98

Please sign in to comment.