mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
* remove feature toggle + add libraryPaneldefinition
* update doc
* update comments
* Apply suggestions from code review
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
* fix typo
* remove post trim
* update api doc
* solve comments and retrigger the test
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
(cherry picked from commit c59a2e1bcf
)
Co-authored-by: ying-jeanne <74549700+ying-jeanne@users.noreply.github.com>
This commit is contained in:
parent
0d0a795d02
commit
48b74313b5
@ -133,10 +133,6 @@ Family: scuemata.#Family & {
|
||||
|
||||
// The values depend on panel type
|
||||
options: {...}
|
||||
libraryPanel?: {
|
||||
name: string,
|
||||
uid: string
|
||||
}
|
||||
fieldConfig: {
|
||||
defaults: {
|
||||
...
|
||||
|
@ -15,7 +15,7 @@ Dashboards are exported in Grafana JSON format, and contain everything you need
|
||||
|
||||
The export feature is accessed in the share window which you open by clicking the share button in the dashboard menu.
|
||||
|
||||
{{< docs-imagebox img="/img/docs/export/export-modal.png" max-width="800px" >}}
|
||||
{{< docs-imagebox img="/img/docs/export/export-modal-8-0.png" max-width="800px" >}}
|
||||
|
||||
### Making a dashboard portable
|
||||
|
||||
@ -25,7 +25,13 @@ add template variables for things like a metric prefix (use constant variable) a
|
||||
A template variable of the type `Constant` will automatically be hidden in
|
||||
the dashboard, and will also be added as a required input when the dashboard is imported.
|
||||
|
||||
## Importing a dashboard
|
||||
### Export dashboard without default values
|
||||
|
||||
To export a dashboard without the default values in order to reduce the exported JSON file size, check the toggle **Export with default values removed** option.
|
||||
|
||||
During import, the removed default values are automatically added back to the dashboard.
|
||||
|
||||
## Import a dashboard
|
||||
|
||||
To import a dashboard click the + icon in the side menu, and then click **Import**.
|
||||
|
||||
|
@ -440,6 +440,100 @@ Content-Type: application/json
|
||||
## Dashboard Search
|
||||
See [Folder/Dashboard Search API]({{< relref "folder_dashboard_search.md" >}}).
|
||||
|
||||
## Remove default values in dashboard
|
||||
|
||||
`POST /api/dashboards/trim`
|
||||
|
||||
Will remove default values from input dashboard JSON.
|
||||
|
||||
**Example Request for trimming dashboard JSON**:
|
||||
|
||||
```http
|
||||
POST /api/dashboards/uid/trim HTTP/1.1
|
||||
Accept: application/json
|
||||
Content-Type: application/json
|
||||
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
|
||||
|
||||
{
|
||||
"meta": {
|
||||
"isStarred": false,
|
||||
"url": "/d/cIBgcSjkk/production-overview",
|
||||
"folderId": 2,
|
||||
"folderUid": "l3KqBxCMz",
|
||||
"slug": "production-overview"
|
||||
},
|
||||
"dashboard": {
|
||||
"id": 112,
|
||||
"panels": [
|
||||
{
|
||||
"datasource": null,
|
||||
"description": "",
|
||||
"gridPos": {
|
||||
"h": 9,
|
||||
"w": 12,
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"id": 2,
|
||||
"options": {
|
||||
"feedUrl": "https://grafana.com/blog/news.xml",
|
||||
"showImage": true
|
||||
},
|
||||
"pluginVersion": "8.1.0-pre",
|
||||
"title": "Panel Title",
|
||||
"type": "news"
|
||||
}
|
||||
],
|
||||
"title": "test dashboard",
|
||||
"uid": "9lzdzI3Mz",
|
||||
"version": 2
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Example Response**:
|
||||
|
||||
```http
|
||||
HTTP/1.1 200
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"meta": {
|
||||
"folderId": 2,
|
||||
"folderUid": "l3KqBxCMz",
|
||||
"isStarred": false,
|
||||
"slug": "production-overview",
|
||||
"url": "/d/cIBgcSjkk/production-overview"
|
||||
},
|
||||
"dashboard": {
|
||||
"id": 112,
|
||||
"panels": [
|
||||
{
|
||||
"gridPos": {},
|
||||
"id": 2,
|
||||
"options": {
|
||||
"feedUrl": "https://grafana.com/blog/news.xml",
|
||||
"showImage": true
|
||||
},
|
||||
"pluginVersion": "8.1.0-pre",
|
||||
"title": "Panel Title",
|
||||
"type": "news"
|
||||
}
|
||||
],
|
||||
"title": "test dashboard",
|
||||
"uid": "9lzdzI3Mz",
|
||||
"version": 2
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Status Codes:
|
||||
|
||||
- **200** – Trimmed
|
||||
- **400** – Errors (invalid json, missing or invalid fields, etc)
|
||||
- **401** – Unauthorized
|
||||
- **403** – Access denied
|
||||
|
||||
## Deprecated resources
|
||||
Please note that these resource have been deprecated and will be removed in a future release.
|
||||
|
||||
|
@ -52,11 +52,9 @@ func (hs *HTTPServer) TrimDashboard(c *models.ReqContext, cmd models.TrimDashboa
|
||||
meta := cmd.Meta
|
||||
|
||||
trimedResult := *dash
|
||||
if !hs.LoadSchemaService.IsDisabled() {
|
||||
trimedResult, err = hs.LoadSchemaService.DashboardTrimDefaults(*dash)
|
||||
if err != nil {
|
||||
return response.Error(500, "Error while trim default value from dashboard json", err)
|
||||
}
|
||||
trimedResult, err = hs.LoadSchemaService.DashboardTrimDefaults(*dash)
|
||||
if err != nil {
|
||||
return response.Error(500, "Error while trim default value from dashboard json", err)
|
||||
}
|
||||
|
||||
dto := dtos.TrimDashboardFullWithMeta{
|
||||
@ -279,13 +277,6 @@ func (hs *HTTPServer) PostDashboard(c *models.ReqContext, cmd models.SaveDashboa
|
||||
var err error
|
||||
cmd.OrgId = c.OrgId
|
||||
cmd.UserId = c.UserId
|
||||
trimDefaults := c.QueryBoolWithDefault("trimdefaults", false)
|
||||
if trimDefaults && !hs.LoadSchemaService.IsDisabled() {
|
||||
cmd.Dashboard, err = hs.LoadSchemaService.DashboardApplyDefaults(cmd.Dashboard)
|
||||
if err != nil {
|
||||
return response.Error(500, "Error while applying default value to the dashboard json", err)
|
||||
}
|
||||
}
|
||||
if cmd.FolderUid != "" {
|
||||
folders := dashboards.NewFolderService(c.OrgId, c.SignedInUser, hs.SQLStore)
|
||||
folder, err := folders.GetFolderByUID(cmd.FolderUid)
|
||||
|
@ -213,7 +213,7 @@ func (hs *HTTPServer) ImportDashboard(c *models.ReqContext, apiCmd dtos.ImportDa
|
||||
}
|
||||
|
||||
trimDefaults := c.QueryBoolWithDefault("trimdefaults", true)
|
||||
if trimDefaults && !hs.LoadSchemaService.IsDisabled() {
|
||||
if trimDefaults {
|
||||
apiCmd.Dashboard, err = hs.LoadSchemaService.DashboardApplyDefaults(apiCmd.Dashboard)
|
||||
if err != nil {
|
||||
return response.Error(500, "Error while applying default value to the dashboard json", err)
|
||||
|
@ -50,12 +50,6 @@ func (rs *SchemaLoaderService) Init() error {
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (rs *SchemaLoaderService) IsDisabled() bool {
|
||||
if rs.Cfg == nil {
|
||||
return true
|
||||
}
|
||||
return !rs.Cfg.IsTrimDefaultsEnabled()
|
||||
}
|
||||
|
||||
func (rs *SchemaLoaderService) DashboardApplyDefaults(input *simplejson.Json) (*simplejson.Json, error) {
|
||||
val, _ := input.Map()
|
||||
|
@ -391,11 +391,6 @@ func (cfg Cfg) IsNgAlertEnabled() bool {
|
||||
return cfg.FeatureToggles["ngalert"]
|
||||
}
|
||||
|
||||
// IsTrimDefaultsEnabled returns whether the standalone trim dashboard default feature is enabled.
|
||||
func (cfg Cfg) IsTrimDefaultsEnabled() bool {
|
||||
return cfg.FeatureToggles["trimDefaults"]
|
||||
}
|
||||
|
||||
// IsDatabaseMetricsEnabled returns whether the database instrumentation feature is enabled.
|
||||
func (cfg Cfg) IsDatabaseMetricsEnabled() bool {
|
||||
return cfg.FeatureToggles["database_metrics"]
|
||||
|
@ -7,7 +7,6 @@ import { DashboardExporter } from 'app/features/dashboard/components/DashExportM
|
||||
import { appEvents } from 'app/core/core';
|
||||
import { ShowModalReactEvent } from 'app/types/events';
|
||||
import { ViewJsonModal } from './ViewJsonModal';
|
||||
import { config } from '@grafana/runtime';
|
||||
|
||||
interface Props {
|
||||
dashboard: DashboardModel;
|
||||
@ -138,11 +137,9 @@ export class ShareExport extends PureComponent<Props, State> {
|
||||
<Field label="Export for sharing externally">
|
||||
<Switch value={shareExternally} onChange={this.onShareExternallyChange} />
|
||||
</Field>
|
||||
{config.featureToggles.trimDefaults && (
|
||||
<Field label="Export with trimed dashboard json">
|
||||
<Switch value={trimDefaults} onChange={this.onTrimDefaultsChange} />
|
||||
</Field>
|
||||
)}
|
||||
<Field label="Export with default values removed">
|
||||
<Switch value={trimDefaults} onChange={this.onTrimDefaultsChange} />
|
||||
</Field>
|
||||
<Modal.ButtonRow>
|
||||
<Button variant="secondary" onClick={onDismiss} fill="outline">
|
||||
Cancel
|
||||
|
Loading…
Reference in New Issue
Block a user