Commit Graph

91 Commits (b51eef12b7b2a167277c599336afe11e657dfbea)

Author SHA1 Message Date
Ashesh Vashi e9af0c3226
Improved the extendability of the SchemaView and DataGridView. (#7876)
Restructured these modules for ease of maintenance and apply the single
responsibility principle (wherever applicable).

* SchemaView

 - Split the code based on the functionality and responsibility.
 - Introduced a new View 'InlineView' instead of using the
   'nextInline' configuration of the fields to have a better, and
   manageable view.
 - Using the separate class 'SchemaState' for managing the data and
   states of the SchemaView (separated from the 'useSchemaState'
   custom hook).
 - Introduced three new custom hooks 'useFieldValue',
   'useFieldOptions', 'useFieldError' for the individual control to
   use for each Schema Field.
 - Don't pass value as the parameter props, and let the
   'useFieldValue' and other custom hooks to decide, whether to
   rerender the control itself or the whole dialog/view. (single
   responsibility principle)
 - Introduced a new data store with a subscription facility.
 - Moving the field metadata (option) evaluation to a separate place
   for better management, and each option can be defined for a
   particular kind of field (for example - collection, row, cell,
   general, etc).
 - Allow to provide custom control for all kind of Schema field.

* DataGridView

 - Same as SchemaView, split the DataGridView call into smaller,
   manageable chunks. (For example - grid, row, mappedCell, etc).
 - Use context based approach for providing the row and table data
   instead of passing them as parameters to every component
   separately.
 - Have a facility to extend this feature separately in future.
   (for example - selectable cell, column grouping, etc.)
 - Separated the features like deletable, editable, reorder,
   expandable etc. cells using the above feature support.
 - Added ability to provide the CustomHeader, and CustomRow through the
   Schema field, which will extend the ability to customize better.
 - Removed the 'DataGridViewWithHeaderForm' as it has been achieved
   through providing 'CustomHeader', and also introduced
   'DataGridFormHeader' (a custom header) to achieve the same feature
   as 'DataGridViewWithHeaderForm'.
2024-09-09 14:27:31 +05:30
Ashesh Vashi 52af8d3e49
Introduce custom React Hook useSchemaState to simplify SchemaView component. #7776
Changes include: 
- Simplify current SchemaView code
- Add ability to reuse the schema data & state management implementation outside the SchemaDialogView component.
- Further split components in small and manageable separate files.
- Removed the 'DepListenerContext' context as there was no need for separate context.
- Added a reload functionality in the 'useSchemaState'
- Changes in feature tests.
2024-08-02 09:59:01 +05:30
Khushboo Vashi 4f415f9768
Added support for viewing PostgreSQL Server Logs in Text, CSV and JSON formats. #3981 2024-07-03 16:17:29 +05:30
Akshay Joshi 5866da8194 Fixed SonarQube code smells. 2024-06-13 18:48:02 +05:30
Akshay Joshi dea5335ce5 Fixed the following SonarQube code smells:
1) Do not use the Array index in keys.
2) Import from the same module should be merged.
3) Mutable variables should not be exported.
4) Variables should not be initialized to undefined.
5) startswith or endswith method should be used.
6) Unwrap this unnecessarily grouped subpattern.

Additionally, addressed many other SonarQube rules.
2024-06-12 18:09:06 +05:30
Yogesh Mahajan cc999ae5a5
Remove the usage of MUI makeStyles as it doesn't support React 18. #7363 2024-06-06 17:13:12 +05:30
Aditya Toshniwal 5ec6faff13
Upgrade react-table from v7 to v8. #7419 2024-05-07 16:31:04 +05:30
Yogesh Mahajan 102e0a9839
- Update MUI v4 to v5
- Remove the SCSS dependency completely and use MUI for theming.
- Update - date-fns, @date-io, notistack. Remove - popper.js, sass-loader.
- Cleanup webpack config.
- Port PSQL tool to use MUI themes instead of SCSS theme.
- Theme change will reflect realtime without refreshing pgAdmin.
2024-04-09 08:21:14 +05:30
Aditya Toshniwal 7374997425
Fix an issue in table dialog where changing column name was not syncing table constraints appropriately. #7229 2024-03-08 11:45:32 +05:30
Aditya Toshniwal a5530f59f7 Fix sonarqube issues for the rule - 'If' statement should not be the only statement in 'else' block 2024-02-26 11:55:36 +05:30
Akshay Joshi 639a28fbfc Fixed code smell 'Prefer using an optional chain expression instead, as it's more concise and easier to read'. 2024-01-25 16:51:40 +05:30
Akshay Joshi 740ce15bd7 Update copyright notices for 2024 2024-01-01 14:13:48 +05:30
Aditya Toshniwal b11b2a2f50 Continue fixing multiple UI and SonarQube issues found when testing wcDocker changes. #6479 2023-10-27 15:51:45 +05:30
Aditya Toshniwal 862f101772
Significant changes to use ReactJS extensively.
1. Replace the current layout library wcDocker with ReactJS based rc-dock. #6479
2. Have close buttons on individual panel tabs instead of common. #2821
3. Changes in the context menu on panel tabs - Add close, close all and close others menu items. #5394
4. Allow closing all the tabs, including SQL and Properties. #4733
5. Changes in docking behaviour of different tabs based on user requests and remove lock layout menu.
6. Fix an issue where the scroll position of panels was not remembered on Firefox. #2986
7. Reset layout now will not require page refresh and is done spontaneously.
8. Use the zustand store for storing preferences instead of plain JS objects. This will help reflecting preferences immediately.
9. The above fix incorrect format (no indent) of SQL stored functions/procedures. #6720
10. New version check is moved to an async request now instead of app start to improve startup performance.
11. Remove jQuery and Bootstrap completely.
12. Replace jasmine and karma test runner with jest. Migrate all the JS test cases to jest. This will save time in writing and debugging JS tests.
13. Other important code improvements and cleanup.
2023-10-23 17:43:17 +05:30
Pravesh Sharma 73430a2062
Fixed an issue where user was not able to assign new/old columns as primary key once column with primary key is deleted. #5749 2023-10-11 13:29:19 +05:30
Akshay Joshi 6949b41fb9 Ensure that a new row should be added on top in the User Management dialog. Fixes #5817 2023-05-18 13:26:47 +05:30
Pravesh Sharma 097080ba97
Ensure that save button is enabled when registering new server fails due to API error. #6075
Incorporated review comments
2023-04-13 13:02:12 +05:30
Aditya Toshniwal 9924fae378
Nomenclature changes:
1. Rename "Properties..." context menu option of object to "Edit Object...".
2. Rename "Browser" tree to "Object Explorer". #4734
2023-03-28 22:20:14 +05:30
Aditya Toshniwal ec32099d2f
Show appropriate error message when master password is not set instead of 'Crypt key missing'. #5735 2023-03-13 11:51:35 +05:30
Aditya Toshniwal 9abbd30790
Fix an issue where sequence owner is remove on sequence edit. #5810 2023-02-22 14:06:44 +05:30
Aditya Toshniwal 713ddb5f62
Remove usage of jQuery in pgAdmin.
Remove usage of Bootstrap in React components. #5701
2023-02-10 10:28:39 +05:30
Pravesh Sharma 33aea87dea
Incorporated review comments. #5647 2023-01-02 13:30:49 +05:30
Akshay Joshi 98184e5835 Update copyright notices for 2023 2023-01-02 11:53:55 +05:30
Pravesh Sharma 67bc0c23ef
Fixed an issue where row count notification was disappearing automatically. #5647 2023-01-02 10:54:24 +05:30
Pravesh Sharma cc9d519fac
Incorporate review comments. 2022-12-14 15:53:19 +05:30
Pravesh Sharma 3f0eee4c39
Fixed an issue where properties tab was refreshing on tab change even if the selected node is same. #5536 2022-12-14 12:48:24 +05:30
Aditya Toshniwal 201a27e4b3
Fix an issue where save button is enabled when table properties dialog is opened. #5098 2022-10-31 17:51:46 +05:30
Nikhil Mohite b4fcb61d64
Ensure that the save button should be disabled by default on the Sort/Filter dialog in the query tool. #5058 2022-10-20 16:22:40 +05:30
Aditya Toshniwal 406119d96c
Allow reordering table columns using drag and drop in ERD Tool and create table. #4994 2022-10-03 11:18:22 +05:30
Akshay Joshi 1bff94d0ea 1) Ensure that properties should be displayed after the SonarQube fixes. (Patch by: Aditya)
2) Fixed Tablespace wrong path issue. (Patch by: Nikhil)
3) Align the label and drop-down on Graph Visualizer.
2022-09-12 14:05:21 +05:30
Aditya Toshniwal b128ba2f57 Fixed a couple of SonarQube issues. 2022-09-10 14:04:28 +05:30
Nikhil Mohite 5c04f1aa2e 1) Ensure that the autofocus is on the input control for the master password and server password dialogs. Fixes #7633
2) Fixed an XSS vulnerability in the Hostname/Address control in the Server Connection dialog.
2022-08-22 15:58:17 +05:30
Akshay Joshi 271b6d91fc Port User Management dialog to React. Fixes #7345 2022-08-11 10:25:52 +05:30
Yogesh Mahajan 59f5c0d955 Added support for Azure PostgreSQL deployment in server mode. Fixes #7522 2022-07-06 11:43:49 +05:30
Aditya Toshniwal 86b30b3c83 Theme component usage has been fixed, a component should never be wrapped in multiple Theme components. 2022-06-30 15:18:20 +05:30
Khushboo Vashi e1c5a06bf0 Fixed some cloud deployment issues:
- Added High Availability option
 - Server group renamed to pgAdmin server group
 - Removed the Private option from Networking otherwise, it would not be possible to connect the server from pgAdmin.
2022-06-09 14:07:05 +05:30
Aditya Toshniwal 1135821870 Fix Query tool issues:
1. Warning/Confirm dialogs should be inside the query tool.
2. The Help button in View/Edit data should open the corresponding help page.
3. Disable execute options when query tool in transaction.
4. Grid not loading more than 10000 rows. react-data-grid issue, PR sent. Use a fork till then.
5. NOTICE messages should not be part of Notifier success popups.

Fixes #7350
2022-05-09 12:39:29 +05:30
Aditya Toshniwal 25b89f7624 Fixed the following issues for the new query tool:
1) Failed to fetch query history error sometimes.
 2) In copy paste row, if a copied row has [null], then those are pasted as an empty string.
 3) When Data output is empty, show an empty grid.
 4) Schema diff generates a script button resulting in an empty window. Fixes #7306.
 5) Detach the DataOutput panel > Try editing text cell > Text editor is hidden behind the data output panel

refs #6131
2022-04-25 18:11:39 +05:30
Aditya Toshniwal a91762fb30 Ensure that Columns should always be visible in the import/export dialog. Fixes #7252 2022-04-11 17:25:19 +05:30
Aditya Toshniwal b5b9ee46a1 1) Port query tool to React. Fixes #6131
2) Added status bar to the Query Tool. Fixes #3253
3) Ensure that row numbers should be visible in view when scrolling horizontally. Fixes #3989
4) Allow removing a single query history. Refs #4113
5) Partially fixed Macros usability issues. Ref #6969
6) Fixed an issue where the Query tool opens on minimum size if the user opens multiple query tool Window quickly. Fixes #6725
7) Relocate GIS Viewer Button to the Left Side of the Results Table. Fixes #6830
8) Fixed an issue where the connection bar is not visible. Fixes #7188
9) Fixed an issue where an Empty message popup after running a query. Fixes #7260
10) Ensure that Autocomplete should work after changing the connection. Fixes #7262
11) Fixed an issue where the copy and paste row does not work if the first column contains no data. Fixes #7294
2022-04-07 17:36:56 +05:30
Akshay Joshi 38278c179e Ensure that the master password dialog is popped up if the crypt key is missing. Fixes #6960 2022-04-04 17:00:18 +05:30
Aditya Toshniwal 7f2e87b27d Fixed Jasmine test cases. 2022-03-24 12:05:59 +05:30
Nikhil Mohite 74e794b416 Port preferences dialog to React. Fixes #7149 2022-03-21 13:29:26 +05:30
Aditya Toshniwal bc4e8a3c82 Implemented utilities in React to make porting easier for pgAdmin tools. 2022-02-11 10:36:24 +05:30
Aditya Toshniwal bc0b25d995 1) Fixed an issue where a warning message was shown after database creation/modification. Fixes #7142.
2) Added error boundary to schema view which will improve the exception stack trace details.
3) Fixed Jasmine test cases.
2022-01-31 13:41:22 +05:30
Akshay Joshi 1013d7ccdd Fixed code smell reported by SonarQube. 2022-01-20 16:58:21 +05:30
Akshay Joshi e38c38cd58 Fixed following SonarQube code smells:
1) Remove this useless assignment to a variable.
2) Remove the unused local variable.
2022-01-12 14:53:19 +05:30
Nikhil Mohite af6ff20020 Fixed SonarQube issues. 2022-01-07 19:58:19 +05:30
Nikhil Mohite ad862f4084 Port Maintenance dialog to React. Fixes #7019 2022-01-07 12:07:49 +05:30
Rahul Shirsat 6528d086ba Fixed review comments:
1. Split the restore options/backup options into 2 tabs
2. Restore icon changes
3. feature tests issues
4. restore help link broken
5. Comment section not visible

refs #7018
2022-01-06 16:46:44 +05:30