parse-dashboard 7.3.0-alpha.2 → 7.3.0-alpha.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -61,19 +61,23 @@ Parse Dashboard is a standalone dashboard for managing your [Parse Server](https
61
61
  - [Data Browser](#data-browser)
62
62
  - [Filters](#filters)
63
63
  - [Info Panel](#info-panel)
64
- - [Segments](#segments)
65
- - [Text Item](#text-item)
66
- - [Key-Value Item](#key-value-item)
67
- - [Table Item](#table-item)
68
- - [Image Item](#image-item)
69
- - [Video Item](#video-item)
70
- - [Audio Item](#audio-item)
71
- - [Button Item](#button-item)
72
- - [Panel Item](#panel-item)
64
+ - [Response](#response)
65
+ - [Segments](#segments)
66
+ - [Text Item](#text-item)
67
+ - [Key-Value Item](#key-value-item)
68
+ - [Table Item](#table-item)
69
+ - [Image Item](#image-item)
70
+ - [Video Item](#video-item)
71
+ - [Audio Item](#audio-item)
72
+ - [Button Item](#button-item)
73
+ - [Panel Item](#panel-item)
74
+ - [Prefetching](#prefetching)
75
+ - [Freeze Columns](#freeze-columns)
73
76
  - [Browse as User](#browse-as-user)
74
77
  - [Change Pointer Key](#change-pointer-key)
75
78
  - [Limitations](#limitations)
76
79
  - [CSV Export](#csv-export)
80
+ - [Views](#views)
77
81
  - [Contributing](#contributing)
78
82
 
79
83
  # Getting Started
@@ -138,6 +142,8 @@ Parse Dashboard is continuously tested with the most recent releases of Node.js
138
142
  | `infoPanel[*].title` | String | no | - | `User Details` | The panel title. |
139
143
  | `infoPanel[*].classes` | Array<String> | no | - | `["_User"]` | The classes for which the info panel should be displayed. |
140
144
  | `infoPanel[*].cloudCodeFunction` | String | no | - | `getUserDetails` | The Cloud Code Function which received the selected object in the data browser and returns the response to be displayed in the info panel. |
145
+ | `infoPanel[*].prefetchObjects` | Number | yes | `0` | `2` | Number of next rows to prefetch when browsing sequential rows. For example, `2` means the next 2 rows will be fetched in advance. |
146
+ | `infoPanel[*].prefetchStale` | Number | yes | `0` | `10` | Duration in seconds after which prefetched data is discarded as stale. |
141
147
  | `apps.scripts` | Array<Object> | yes | `[]` | `[{ ... }, { ... }]` | The scripts that can be executed for that app. |
142
148
  | `apps.scripts.title` | String | no | - | `'Delete User'` | The title that will be displayed in the data browser context menu and the script run confirmation dialog. |
143
149
  | `apps.scripts.classes` | Array<String> | no | - | `['_User']` | The classes of Parse Objects for which the scripts can be executed. |
@@ -871,7 +877,9 @@ The following example dashboard configuration shows an info panel for the `_User
871
877
  {
872
878
  "title": "User Details",
873
879
  "classes": ["_User"],
874
- "cloudCodeFunction": "getUserDetails"
880
+ "cloudCodeFunction": "getUserDetails",
881
+ "prefetchObjects": 2,
882
+ "prefetchStale": 10
875
883
  }
876
884
  ]
877
885
  }
@@ -880,7 +888,9 @@ The following example dashboard configuration shows an info panel for the `_User
880
888
 
881
889
  The Cloud Code Function receives the selected object in the payload and returns a response that can include various items.
882
890
 
883
- #### Segments
891
+ #### Response
892
+
893
+ ##### Segments
884
894
 
885
895
  The info panel can contain multiple segments to display different groups of information.
886
896
 
@@ -916,7 +926,7 @@ Example:
916
926
 
917
927
  The items array can include various types of content such as text, key-value pairs, tables, images, videos, audios, and buttons. Each type offers a different way to display information within the info panel, allowing for a customizable and rich user experience. Below is a detailed explanation of each type.
918
928
 
919
- #### Text Item
929
+ ##### Text Item
920
930
 
921
931
  A simple text field.
922
932
 
@@ -936,7 +946,7 @@ Example:
936
946
  }
937
947
  ```
938
948
 
939
- #### Key-Value Item
949
+ ##### Key-Value Item
940
950
 
941
951
  A text item that consists of a key and a value. The value can optionally be linked to a URL.
942
952
 
@@ -947,6 +957,7 @@ A text item that consists of a key and a value. The value can optionally be link
947
957
  | `value` | String | - | No | The value text to display. |
948
958
  | `url` | String | `undefined` | Yes | The URL that will be opened in a new browser tab when clicking on the value text. It can be set to an absolute URL or a relative URL in which case the base URL is `<PROTOCOL>://<HOST>/<MOUNT_PATH>/`. |
949
959
  | `isRelativeUrl` | Boolean | `false` | Yes | Set this to `true` when linking to another dashboard page, in which case the base URL for the relative URL will be `<PROTOCOL>://<HOST>/<MOUNT_PATH>/apps/<APP_NAME>/`. |
960
+ | `values` | Array | - | Yes | Additional values to display after `value`. Each item is an object with `value`, optional `url` and `isRelativeUrl`. |
950
961
  | `style` | Object | - | Yes | The CSS style definition. |
951
962
 
952
963
  Examples:
@@ -979,6 +990,17 @@ Examples:
979
990
  }
980
991
  ```
981
992
 
993
+ ```json
994
+ {
995
+ "type": "keyValue",
996
+ "key": "Purchase Value",
997
+ "value": "123",
998
+ "url": "browser/Purchase",
999
+ "isRelativeUrl": true,
1000
+ "values": [{ "value": "456" }]
1001
+ }
1002
+ ```
1003
+
982
1004
  To navigate to a specific object using a relative URL, the query parameters must be URL encoded:
983
1005
 
984
1006
  ```js
@@ -995,7 +1017,7 @@ const item = {
995
1017
  }
996
1018
  ```
997
1019
 
998
- #### Table Item
1020
+ ##### Table Item
999
1021
 
1000
1022
  A table with columns and rows to display data in a structured format.
1001
1023
 
@@ -1037,7 +1059,7 @@ Example:
1037
1059
  }
1038
1060
  ```
1039
1061
 
1040
- #### Image Item
1062
+ ##### Image Item
1041
1063
 
1042
1064
  An image to be displayed in the panel.
1043
1065
 
@@ -1057,7 +1079,7 @@ Example:
1057
1079
  }
1058
1080
  ```
1059
1081
 
1060
- #### Video Item
1082
+ ##### Video Item
1061
1083
 
1062
1084
  A video to be displayed in the panel.
1063
1085
 
@@ -1077,7 +1099,7 @@ Example:
1077
1099
  }
1078
1100
  ```
1079
1101
 
1080
- #### Audio Item
1102
+ ##### Audio Item
1081
1103
 
1082
1104
  An audio file to be played in the panel.
1083
1105
 
@@ -1097,7 +1119,7 @@ Example:
1097
1119
  }
1098
1120
  ```
1099
1121
 
1100
- #### Button Item
1122
+ ##### Button Item
1101
1123
 
1102
1124
  A button that triggers an action when clicked.
1103
1125
 
@@ -1132,7 +1154,7 @@ Example:
1132
1154
  }
1133
1155
  ```
1134
1156
 
1135
- #### Panel Item
1157
+ ##### Panel Item
1136
1158
 
1137
1159
  A sub-panel whose data is loaded on-demand by expanding the item.
1138
1160
 
@@ -1154,6 +1176,23 @@ Example:
1154
1176
  }
1155
1177
  ```
1156
1178
 
1179
+ #### Prefetching
1180
+
1181
+ To reduce the time for info panel data to appear, data can be prefetched.
1182
+
1183
+ | Parameter | Type | Optional | Default | Example | Description |
1184
+ |--------------------------------|--------|----------|---------|---------|-----------------------------------------------------------------------------------------------------------------------------------|
1185
+ | `infoPanel[*].prefetchObjects` | Number | yes | `0` | `2` | Number of next rows to prefetch when browsing sequential rows. For example, `2` means the next 2 rows will be fetched in advance. |
1186
+ | `infoPanel[*].prefetchStale` | Number | yes | `0` | `10` | Duration in seconds after which prefetched data is discarded as stale. |
1187
+
1188
+ Prefetching is particularly useful when navigating through lists of objects. To optimize performance and avoid unnecessary data loading, prefetching is triggered only after the user has moved through 3 consecutive rows using the keyboard down-arrow key or by mouse click.
1189
+
1190
+ ### Freeze Columns
1191
+
1192
+ ▶️ *Core > Browser > Freeze column*
1193
+
1194
+ Right-click on a table column header to freeze columns from the left up to the clicked column in the data browser. When scrolling horizontally, the frozen columns remain visible while the other columns scroll underneath.
1195
+
1157
1196
  ## Browse as User
1158
1197
 
1159
1198
  ▶️ *Core > Browser > Browse*
@@ -1182,6 +1221,12 @@ This feature allows you to change how a pointer is represented in the browser. B
1182
1221
  This feature will take either selected rows or all rows of an individual class and saves them to a CSV file, which is then downloaded. CSV headers are added to the top of the file matching the column names.
1183
1222
 
1184
1223
  > ⚠️ There is currently a 10,000 row limit when exporting all data. If more than 10,000 rows are present in the class, the CSV file will only contain 10,000 rows.
1224
+ ## Views
1225
+
1226
+ ▶️ *Core > Views*
1227
+
1228
+ Views are saved queries that display aggregated data from your classes. Create a view by providing a name, selecting a class and defining an aggregation pipeline. Optionally enable the object counter to show how many items match the view. Saved views appear in the sidebar, where you can select, edit, or delete them.
1229
+
1185
1230
 
1186
1231
  # Contributing
1187
1232
 
@@ -1193,4 +1238,4 @@ As of April 5, 2017, Parse, LLC has transferred this code to the parse-community
1193
1238
 
1194
1239
  [license-svg]: https://img.shields.io/badge/license-BSD-lightgrey.svg
1195
1240
  [license-link]: LICENSE
1196
- [open-collective-link]: https://opencollective.com/parse-server
1241
+ [open-collective-link]: https://opencollective.com/parse-server
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "parse-dashboard",
3
- "version": "7.3.0-alpha.2",
3
+ "version": "7.3.0-alpha.20",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/parse-community/parse-dashboard"
@@ -49,7 +49,7 @@
49
49
  "fast-deep-equal": "3.1.3",
50
50
  "graphiql": "2.0.8",
51
51
  "graphql": "16.11.0",
52
- "immutable": "5.1.2",
52
+ "immutable": "5.1.3",
53
53
  "immutable-devtools": "0.1.5",
54
54
  "inquirer": "12.6.3",
55
55
  "js-beautify": "1.15.4",
@@ -77,9 +77,9 @@
77
77
  "devDependencies": {
78
78
  "@actions/core": "1.11.1",
79
79
  "@babel/core": "7.27.4",
80
- "@babel/eslint-parser": "7.27.5",
80
+ "@babel/eslint-parser": "7.28.0",
81
81
  "@babel/plugin-proposal-decorators": "7.27.1",
82
- "@babel/plugin-transform-runtime": "7.27.3",
82
+ "@babel/plugin-transform-runtime": "7.28.0",
83
83
  "@babel/preset-env": "7.27.2",
84
84
  "@babel/preset-react": "7.27.1",
85
85
  "@eslint/compat": "1.2.9",
@@ -95,7 +95,7 @@
95
95
  "babel-loader": "10.0.0",
96
96
  "css-loader": "6.7.3",
97
97
  "eslint": "9.28.0",
98
- "eslint-plugin-jest": "28.14.0",
98
+ "eslint-plugin-jest": "29.0.1",
99
99
  "eslint-plugin-react": "7.37.5",
100
100
  "globals": "16.2.0",
101
101
  "http-server": "14.1.1",
@@ -106,13 +106,13 @@
106
106
  "marked": "15.0.12",
107
107
  "null-loader": "4.0.1",
108
108
  "prettier": "3.5.3",
109
- "puppeteer": "24.9.0",
109
+ "puppeteer": "24.12.1",
110
110
  "react-test-renderer": "16.13.1",
111
111
  "request": "2.88.2",
112
- "request-promise": "4.2.5",
113
- "sass": "1.89.1",
112
+ "request-promise": "4.2.6",
113
+ "sass": "1.89.2",
114
114
  "sass-loader": "13.2.0",
115
- "semantic-release": "24.2.3",
115
+ "semantic-release": "24.2.7",
116
116
  "semver": "7.7.2",
117
117
  "style-loader": "3.3.1",
118
118
  "svg-prep": "1.0.4",