-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1514 from cityofaustin/2.26.0-release-candidate
2.26.0 Christmas Creek
- Loading branch information
Showing
35 changed files
with
1,249 additions
and
646 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
3 changes: 3 additions & 0 deletions
3
moped-database/migrations/1730324794396_add_moped_user_saved_views_table/down.sql
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
DROP TRIGGER IF EXISTS set_moped_user_saved_views_updated_at ON moped_user_saved_views; | ||
|
||
DROP TABLE moped_user_saved_views; |
36 changes: 36 additions & 0 deletions
36
moped-database/migrations/1730324794396_add_moped_user_saved_views_table/up.sql
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
CREATE TABLE public.moped_user_saved_views ( | ||
id serial NOT NULL, | ||
description text NOT NULL, | ||
url text NOT NULL, | ||
query_filters jsonb NOT NULL, | ||
created_by_user_id int4 NOT NULL, | ||
updated_by_user_id int4 NOT NULL, | ||
created_at timestamptz NOT NULL DEFAULT now(), | ||
updated_at timestamptz NOT NULL DEFAULT now(), | ||
is_deleted boolean NOT NULL DEFAULT false | ||
); | ||
|
||
ALTER TABLE moped_user_saved_views | ||
ADD CONSTRAINT fk_moped_user_saved_views_created_by FOREIGN KEY (created_by_user_id) REFERENCES moped_users (user_id), | ||
ADD CONSTRAINT fk_moped_user_saved_views_updated_by FOREIGN KEY (updated_by_user_id) REFERENCES moped_users (user_id); | ||
|
||
-- Adding comments for audit fields | ||
COMMENT ON COLUMN moped_user_saved_views.description IS 'Description entered by the creator of the view'; | ||
COMMENT ON COLUMN moped_user_saved_views.url IS 'URL string associated with the view (may break if database fields or operators are changed)'; | ||
COMMENT ON COLUMN moped_user_saved_views.query_filters IS 'JSON blob of filters that make up the query'; | ||
COMMENT ON COLUMN moped_user_saved_views.created_by_user_id IS 'User ID of the creator of the view'; | ||
COMMENT ON COLUMN moped_user_saved_views.updated_by_user_id IS 'User ID of the last updater of the view'; | ||
COMMENT ON COLUMN moped_user_saved_views.created_at IS 'Timestamp of when the view was created'; | ||
COMMENT ON COLUMN moped_user_saved_views.updated_at IS 'Timestamp of the last update of the view'; | ||
COMMENT ON COLUMN moped_user_saved_views.is_deleted IS 'Boolean indicating whether the view has been soft deleted and thereby not rendered in the UI'; | ||
|
||
-- Adding comments for moped_user_saved_views constraints | ||
COMMENT ON CONSTRAINT fk_moped_user_saved_views_created_by ON moped_user_saved_views IS 'Foreign key constraint linking created_by_user_id to moped_users table.'; | ||
COMMENT ON CONSTRAINT fk_moped_user_saved_views_updated_by ON moped_user_saved_views IS 'Foreign key constraint linking updated_by_user_id to moped_users table.'; | ||
|
||
CREATE TRIGGER set_moped_user_saved_views_updated_at | ||
BEFORE INSERT OR UPDATE ON moped_user_saved_views | ||
FOR EACH ROW | ||
EXECUTE FUNCTION public.set_updated_at(); | ||
|
||
COMMENT ON TRIGGER set_moped_user_saved_views_updated_at ON public.moped_user_saved_views IS 'Trigger to set updated_at timestamp for each insert or update on moped_user_saved_views'; |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
96 changes: 96 additions & 0 deletions
96
moped-editor/src/components/DataGridPro/DataGridActions.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,96 @@ | ||
import { | ||
GridRowModes, | ||
GridActionsCellItem, | ||
useGridApiContext, | ||
useGridSelector, | ||
} from "@mui/x-data-grid-pro"; | ||
import CheckIcon from "@mui/icons-material/Check"; | ||
import CloseIcon from "@mui/icons-material/Close"; | ||
import { | ||
EditOutlined as EditOutlinedIcon, | ||
DeleteOutline as DeleteOutlineIcon, | ||
} from "@mui/icons-material"; | ||
|
||
import { defaultEditColumnIconStyle } from "src/utils/dataGridHelpers"; | ||
|
||
/** Component for Data Grid table action buttons | ||
* @param {Number} id - Data Grid row id (same as project id) | ||
* @param {Array} requiredFields - fields that are required in order to save row | ||
* @param {Object} rowModesModel - row modes state from data grid | ||
* @param {Function} handleCancelClick - handles cancel button click | ||
* @param {Function} handleDeleteClick - handles delete button click | ||
* @param {Function} handleSaveClick - handles save button click | ||
* @param {Function} handleEditClick - handles edit button click, optional | ||
* @return {JSX.Element} | ||
*/ | ||
|
||
const DataGridActions = ({ | ||
id, | ||
requiredFields = [], | ||
rowModesModel, | ||
handleCancelClick, | ||
handleDeleteOpen, | ||
handleSaveClick, | ||
handleEditClick, | ||
}) => { | ||
const isInEditMode = rowModesModel[id]?.mode === GridRowModes.Edit; | ||
|
||
const apiRef = useGridApiContext(); | ||
|
||
/** | ||
* To make our row re-render while still in edit mode we need the useGridSelector hook | ||
* which establishes a reactive binding with the grid state and allows us to enable the save button | ||
* if we have all the required fields. | ||
* For reference https://mui.com/x/react-data-grid/state/#access-the-state | ||
*/ | ||
const hasRequiredFields = useGridSelector(apiRef, () => { | ||
const editState = apiRef.current.state.editRows; | ||
for (const field of requiredFields) { | ||
if (!editState[id]?.[field]?.value) { | ||
return false; | ||
} | ||
} | ||
return true; | ||
}); | ||
|
||
if (isInEditMode) { | ||
return [ | ||
<GridActionsCellItem | ||
icon={<CheckIcon sx={defaultEditColumnIconStyle} />} | ||
label="Save" | ||
sx={{ | ||
color: "primary.main", | ||
}} | ||
onClick={handleSaveClick(id)} | ||
disabled={!hasRequiredFields} | ||
/>, | ||
<GridActionsCellItem | ||
icon={<CloseIcon sx={defaultEditColumnIconStyle} />} | ||
label="Cancel" | ||
className="textPrimary" | ||
onClick={handleCancelClick(id)} | ||
color="inherit" | ||
/>, | ||
]; | ||
} | ||
return [ | ||
// only render edit button if we were passed an edit handler and are not currently in edit mode | ||
handleEditClick && ( | ||
<GridActionsCellItem | ||
icon={<EditOutlinedIcon sx={defaultEditColumnIconStyle} />} | ||
label="Edit" | ||
className="textPrimary" | ||
onClick={handleEditClick(id)} | ||
color="inherit" | ||
/> | ||
), | ||
<GridActionsCellItem | ||
icon={<DeleteOutlineIcon sx={defaultEditColumnIconStyle} />} | ||
label="Delete" | ||
onClick={handleDeleteOpen(id)} | ||
color="inherit" | ||
/>, | ||
]; | ||
}; | ||
|
||
export default DataGridActions; |
Oops, something went wrong.