@perses-dev/dashboards 0.54.0-beta.5 → 0.54.0-beta.7

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.
Files changed (101) hide show
  1. package/dist/cjs/components/Annotations/AnnotationsEditor.js +302 -0
  2. package/dist/cjs/components/Annotations/EditAnnotationsButton.js +83 -0
  3. package/dist/cjs/components/DashboardToolbar/DashboardToolbar.js +3 -1
  4. package/dist/cjs/components/Variables/VariableEditor.js +2 -2
  5. package/dist/cjs/constants/user-interface-text.js +1 -0
  6. package/dist/cjs/context/AnnotationProvider/AnnotationHydrationWrapper.js +50 -0
  7. package/dist/cjs/context/AnnotationProvider/AnnotationProvider.js +145 -0
  8. package/dist/cjs/{model/DashboardResource.js → context/AnnotationProvider/index.js} +14 -0
  9. package/dist/cjs/context/DatasourceStoreProvider.js +34 -4
  10. package/dist/cjs/context/index.js +1 -0
  11. package/dist/cjs/context/useDashboard.js +8 -0
  12. package/dist/cjs/model/index.js +0 -1
  13. package/dist/cjs/views/ViewDashboard/DashboardApp.js +2 -1
  14. package/dist/cjs/views/ViewDashboard/ViewDashboard.js +29 -25
  15. package/dist/components/Annotations/AnnotationsEditor.d.ts +8 -0
  16. package/dist/components/Annotations/AnnotationsEditor.d.ts.map +1 -0
  17. package/dist/components/Annotations/AnnotationsEditor.js +289 -0
  18. package/dist/components/Annotations/AnnotationsEditor.js.map +1 -0
  19. package/dist/components/Annotations/EditAnnotationsButton.d.ts +18 -0
  20. package/dist/components/Annotations/EditAnnotationsButton.d.ts.map +1 -0
  21. package/dist/components/Annotations/EditAnnotationsButton.js +70 -0
  22. package/dist/components/Annotations/EditAnnotationsButton.js.map +1 -0
  23. package/dist/components/DashboardToolbar/DashboardToolbar.d.ts +1 -0
  24. package/dist/components/DashboardToolbar/DashboardToolbar.d.ts.map +1 -1
  25. package/dist/components/DashboardToolbar/DashboardToolbar.js +3 -1
  26. package/dist/components/DashboardToolbar/DashboardToolbar.js.map +1 -1
  27. package/dist/components/Datasources/DatasourceEditor.d.ts.map +1 -1
  28. package/dist/components/Datasources/DatasourceEditor.js.map +1 -1
  29. package/dist/components/DownloadButton/serializeDashboard.d.ts +1 -1
  30. package/dist/components/DownloadButton/serializeDashboard.d.ts.map +1 -1
  31. package/dist/components/DownloadButton/serializeDashboard.js.map +1 -1
  32. package/dist/components/LeaveDialog/LeaveDialog.d.ts +1 -1
  33. package/dist/components/LeaveDialog/LeaveDialog.d.ts.map +1 -1
  34. package/dist/components/LeaveDialog/LeaveDialog.js.map +1 -1
  35. package/dist/components/PanelDrawer/PanelEditorForm.d.ts +1 -1
  36. package/dist/components/PanelDrawer/PanelEditorForm.d.ts.map +1 -1
  37. package/dist/components/PanelDrawer/PanelEditorForm.js.map +1 -1
  38. package/dist/components/Variables/VariableEditor.d.ts.map +1 -1
  39. package/dist/components/Variables/VariableEditor.js +2 -2
  40. package/dist/components/Variables/VariableEditor.js.map +1 -1
  41. package/dist/constants/user-interface-text.d.ts +1 -0
  42. package/dist/constants/user-interface-text.d.ts.map +1 -1
  43. package/dist/constants/user-interface-text.js +1 -0
  44. package/dist/constants/user-interface-text.js.map +1 -1
  45. package/dist/context/AnnotationProvider/AnnotationHydrationWrapper.d.ts +7 -0
  46. package/dist/context/AnnotationProvider/AnnotationHydrationWrapper.d.ts.map +1 -0
  47. package/dist/context/AnnotationProvider/AnnotationHydrationWrapper.js +48 -0
  48. package/dist/context/AnnotationProvider/AnnotationHydrationWrapper.js.map +1 -0
  49. package/dist/context/AnnotationProvider/AnnotationProvider.d.ts +40 -0
  50. package/dist/context/AnnotationProvider/AnnotationProvider.d.ts.map +1 -0
  51. package/dist/context/AnnotationProvider/AnnotationProvider.js +114 -0
  52. package/dist/context/AnnotationProvider/AnnotationProvider.js.map +1 -0
  53. package/dist/context/AnnotationProvider/index.d.ts +2 -0
  54. package/dist/context/AnnotationProvider/index.d.ts.map +1 -0
  55. package/dist/{model/DashboardResource.js → context/AnnotationProvider/index.js} +2 -2
  56. package/dist/context/AnnotationProvider/index.js.map +1 -0
  57. package/dist/context/DashboardProvider/DashboardProvider.d.ts +1 -2
  58. package/dist/context/DashboardProvider/DashboardProvider.d.ts.map +1 -1
  59. package/dist/context/DashboardProvider/DashboardProvider.js.map +1 -1
  60. package/dist/context/DashboardProvider/common.d.ts +1 -1
  61. package/dist/context/DashboardProvider/common.d.ts.map +1 -1
  62. package/dist/context/DashboardProvider/common.js.map +1 -1
  63. package/dist/context/DashboardProvider/dashboard-provider-api.d.ts +2 -1
  64. package/dist/context/DashboardProvider/dashboard-provider-api.d.ts.map +1 -1
  65. package/dist/context/DashboardProvider/dashboard-provider-api.js.map +1 -1
  66. package/dist/context/DashboardProvider/panel-editor-slice.d.ts +1 -1
  67. package/dist/context/DashboardProvider/panel-editor-slice.d.ts.map +1 -1
  68. package/dist/context/DashboardProvider/panel-editor-slice.js.map +1 -1
  69. package/dist/context/DatasourceStoreProvider.d.ts +1 -2
  70. package/dist/context/DatasourceStoreProvider.d.ts.map +1 -1
  71. package/dist/context/DatasourceStoreProvider.js +35 -5
  72. package/dist/context/DatasourceStoreProvider.js.map +1 -1
  73. package/dist/context/index.d.ts +1 -0
  74. package/dist/context/index.d.ts.map +1 -1
  75. package/dist/context/index.js +1 -0
  76. package/dist/context/index.js.map +1 -1
  77. package/dist/context/useDashboard.d.ts +1 -1
  78. package/dist/context/useDashboard.d.ts.map +1 -1
  79. package/dist/context/useDashboard.js +8 -0
  80. package/dist/context/useDashboard.js.map +1 -1
  81. package/dist/model/index.d.ts +0 -1
  82. package/dist/model/index.d.ts.map +1 -1
  83. package/dist/model/index.js +0 -1
  84. package/dist/model/index.js.map +1 -1
  85. package/dist/test/dashboard-provider.d.ts +1 -1
  86. package/dist/test/dashboard-provider.d.ts.map +1 -1
  87. package/dist/test/dashboard-provider.js.map +1 -1
  88. package/dist/test/testDashboard.d.ts +1 -1
  89. package/dist/test/testDashboard.d.ts.map +1 -1
  90. package/dist/test/testDashboard.js.map +1 -1
  91. package/dist/views/ViewDashboard/DashboardApp.d.ts +2 -1
  92. package/dist/views/ViewDashboard/DashboardApp.d.ts.map +1 -1
  93. package/dist/views/ViewDashboard/DashboardApp.js +2 -1
  94. package/dist/views/ViewDashboard/DashboardApp.js.map +1 -1
  95. package/dist/views/ViewDashboard/ViewDashboard.d.ts.map +1 -1
  96. package/dist/views/ViewDashboard/ViewDashboard.js +30 -26
  97. package/dist/views/ViewDashboard/ViewDashboard.js.map +1 -1
  98. package/package.json +5 -4
  99. package/dist/model/DashboardResource.d.ts +0 -9
  100. package/dist/model/DashboardResource.d.ts.map +0 -1
  101. package/dist/model/DashboardResource.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/context/useDashboard.tsx"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { createPanelRef, DashboardSpec, DurationString, GridDefinition, PanelGroupId } from '@perses-dev/spec';\nimport { DashboardResource, PanelGroupDefinition } from '../model';\n\nimport { useDashboardStore } from './DashboardProvider';\nimport { useVariableDefinitionActions, useVariableDefinitions } from './VariableProvider';\n\ntype DashboardType = Omit<DashboardResource, 'spec'> & { spec: DashboardSpec & { ttl?: DurationString } };\nexport function useDashboard(): {\n dashboard: DashboardType;\n setDashboard: (dashboardResource: DashboardResource) => void;\n} {\n const {\n panels,\n panelGroups,\n panelGroupOrder,\n setDashboard: setDashboardResource,\n kind,\n metadata,\n display,\n duration,\n refreshInterval,\n datasources,\n links,\n ttl,\n } = useDashboardStore(\n ({\n panels,\n panelGroups,\n panelGroupOrder,\n setDashboard,\n kind,\n metadata,\n display,\n duration,\n refreshInterval,\n datasources,\n links,\n ttl,\n }) => ({\n panels,\n panelGroups,\n panelGroupOrder,\n setDashboard,\n kind,\n metadata,\n display,\n duration,\n refreshInterval,\n datasources,\n links,\n ttl,\n })\n );\n const { setVariableDefinitions } = useVariableDefinitionActions();\n const variables = useVariableDefinitions();\n const layouts = convertPanelGroupsToLayouts(panelGroups, panelGroupOrder);\n\n const dashboard: DashboardType =\n kind === 'Dashboard'\n ? {\n kind,\n metadata,\n spec: {\n display,\n panels,\n layouts,\n variables,\n duration,\n refreshInterval,\n datasources,\n links,\n },\n }\n : {\n kind,\n metadata,\n spec: {\n display,\n panels,\n layouts,\n variables,\n duration,\n refreshInterval,\n datasources,\n links,\n ttl,\n },\n };\n\n const setDashboard = (dashboardResource: DashboardResource): void => {\n setVariableDefinitions(dashboardResource.spec.variables);\n setDashboardResource(dashboardResource);\n };\n\n return {\n dashboard,\n setDashboard,\n };\n}\n\nfunction convertPanelGroupsToLayouts(\n panelGroups: Record<number, PanelGroupDefinition>,\n panelGroupOrder: PanelGroupId[]\n): GridDefinition[] {\n const layouts: GridDefinition[] = [];\n panelGroupOrder.map((groupOrderId) => {\n const group = panelGroups[groupOrderId];\n if (group === undefined) {\n throw new Error('panel group not found');\n }\n const { title, isCollapsed, repeatVariable, itemLayouts, itemPanelKeys } = group;\n let display = undefined;\n if (title || isCollapsed !== undefined) {\n display = {\n title: title ?? '',\n collapse: {\n open: !isCollapsed,\n },\n };\n }\n const layout: GridDefinition = {\n kind: 'Grid',\n spec: {\n display,\n items: itemLayouts.map((layout) => {\n const panelKey = itemPanelKeys[layout.i];\n if (panelKey === undefined) {\n throw new Error(`Missing panel key of layout ${layout.i}`);\n }\n return {\n x: layout.x,\n y: layout.y,\n width: layout.w,\n height: layout.h,\n content: createPanelRef(panelKey),\n };\n }),\n repeatVariable: repeatVariable,\n },\n };\n layouts.push(layout);\n });\n\n return layouts;\n}\n"],"names":["createPanelRef","useDashboardStore","useVariableDefinitionActions","useVariableDefinitions","useDashboard","panels","panelGroups","panelGroupOrder","setDashboard","setDashboardResource","kind","metadata","display","duration","refreshInterval","datasources","links","ttl","setVariableDefinitions","variables","layouts","convertPanelGroupsToLayouts","dashboard","spec","dashboardResource","map","groupOrderId","group","undefined","Error","title","isCollapsed","repeatVariable","itemLayouts","itemPanelKeys","collapse","open","layout","items","panelKey","i","x","y","width","w","height","h","content","push"],"mappings":"AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,SAASA,cAAc,QAAqE,mBAAmB;AAG/G,SAASC,iBAAiB,QAAQ,sBAAsB;AACxD,SAASC,4BAA4B,EAAEC,sBAAsB,QAAQ,qBAAqB;AAG1F,OAAO,SAASC;IAId,MAAM,EACJC,MAAM,EACNC,WAAW,EACXC,eAAe,EACfC,cAAcC,oBAAoB,EAClCC,IAAI,EACJC,QAAQ,EACRC,OAAO,EACPC,QAAQ,EACRC,eAAe,EACfC,WAAW,EACXC,KAAK,EACLC,GAAG,EACJ,GAAGhB,kBACF,CAAC,EACCI,MAAM,EACNC,WAAW,EACXC,eAAe,EACfC,YAAY,EACZE,IAAI,EACJC,QAAQ,EACRC,OAAO,EACPC,QAAQ,EACRC,eAAe,EACfC,WAAW,EACXC,KAAK,EACLC,GAAG,EACJ,GAAM,CAAA;YACLZ;YACAC;YACAC;YACAC;YACAE;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;QACF,CAAA;IAEF,MAAM,EAAEC,sBAAsB,EAAE,GAAGhB;IACnC,MAAMiB,YAAYhB;IAClB,MAAMiB,UAAUC,4BAA4Bf,aAAaC;IAEzD,MAAMe,YACJZ,SAAS,cACL;QACEA;QACAC;QACAY,MAAM;YACJX;YACAP;YACAe;YACAD;YACAN;YACAC;YACAC;YACAC;QACF;IACF,IACA;QACEN;QACAC;QACAY,MAAM;YACJX;YACAP;YACAe;YACAD;YACAN;YACAC;YACAC;YACAC;YACAC;QACF;IACF;IAEN,MAAMT,eAAe,CAACgB;QACpBN,uBAAuBM,kBAAkBD,IAAI,CAACJ,SAAS;QACvDV,qBAAqBe;IACvB;IAEA,OAAO;QACLF;QACAd;IACF;AACF;AAEA,SAASa,4BACPf,WAAiD,EACjDC,eAA+B;IAE/B,MAAMa,UAA4B,EAAE;IACpCb,gBAAgBkB,GAAG,CAAC,CAACC;QACnB,MAAMC,QAAQrB,WAAW,CAACoB,aAAa;QACvC,IAAIC,UAAUC,WAAW;YACvB,MAAM,IAAIC,MAAM;QAClB;QACA,MAAM,EAAEC,KAAK,EAAEC,WAAW,EAAEC,cAAc,EAAEC,WAAW,EAAEC,aAAa,EAAE,GAAGP;QAC3E,IAAIf,UAAUgB;QACd,IAAIE,SAASC,gBAAgBH,WAAW;YACtChB,UAAU;gBACRkB,OAAOA,SAAS;gBAChBK,UAAU;oBACRC,MAAM,CAACL;gBACT;YACF;QACF;QACA,MAAMM,SAAyB;YAC7B3B,MAAM;YACNa,MAAM;gBACJX;gBACA0B,OAAOL,YAAYR,GAAG,CAAC,CAACY;oBACtB,MAAME,WAAWL,aAAa,CAACG,OAAOG,CAAC,CAAC;oBACxC,IAAID,aAAaX,WAAW;wBAC1B,MAAM,IAAIC,MAAM,CAAC,4BAA4B,EAAEQ,OAAOG,CAAC,EAAE;oBAC3D;oBACA,OAAO;wBACLC,GAAGJ,OAAOI,CAAC;wBACXC,GAAGL,OAAOK,CAAC;wBACXC,OAAON,OAAOO,CAAC;wBACfC,QAAQR,OAAOS,CAAC;wBAChBC,SAAS/C,eAAeuC;oBAC1B;gBACF;gBACAP,gBAAgBA;YAClB;QACF;QACAZ,QAAQ4B,IAAI,CAACX;IACf;IAEA,OAAOjB;AACT"}
1
+ {"version":3,"sources":["../../src/context/useDashboard.tsx"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { createPanelRef, DashboardSpec, DurationString, GridDefinition, PanelGroupId } from '@perses-dev/spec';\nimport { DashboardResource } from '@perses-dev/client';\nimport { PanelGroupDefinition } from '../model';\n\nimport { useDashboardStore } from './DashboardProvider';\nimport { useVariableDefinitionActions, useVariableDefinitions } from './VariableProvider';\nimport { useAnnotationActions, useAnnotationSpecs } from './AnnotationProvider';\n\ntype DashboardType = Omit<DashboardResource, 'spec'> & { spec: DashboardSpec & { ttl?: DurationString } };\nexport function useDashboard(): {\n dashboard: DashboardType;\n setDashboard: (dashboardResource: DashboardResource) => void;\n} {\n const {\n panels,\n panelGroups,\n panelGroupOrder,\n setDashboard: setDashboardResource,\n kind,\n metadata,\n display,\n duration,\n refreshInterval,\n datasources,\n links,\n ttl,\n } = useDashboardStore(\n ({\n panels,\n panelGroups,\n panelGroupOrder,\n setDashboard,\n kind,\n metadata,\n display,\n duration,\n refreshInterval,\n datasources,\n links,\n ttl,\n }) => ({\n panels,\n panelGroups,\n panelGroupOrder,\n setDashboard,\n kind,\n metadata,\n display,\n duration,\n refreshInterval,\n datasources,\n links,\n ttl,\n })\n );\n const { setVariableDefinitions } = useVariableDefinitionActions();\n const { setAnnotationSpecs } = useAnnotationActions();\n const variables = useVariableDefinitions();\n const annotations = useAnnotationSpecs();\n const layouts = convertPanelGroupsToLayouts(panelGroups, panelGroupOrder);\n\n const dashboard: DashboardType =\n kind === 'Dashboard'\n ? {\n kind,\n metadata,\n spec: {\n display,\n panels,\n layouts,\n variables,\n annotations,\n duration,\n refreshInterval,\n datasources,\n links,\n },\n }\n : {\n kind,\n metadata,\n spec: {\n display,\n panels,\n layouts,\n variables,\n annotations,\n duration,\n refreshInterval,\n datasources,\n links,\n ttl,\n },\n };\n\n const setDashboard = (dashboardResource: DashboardResource): void => {\n setVariableDefinitions(dashboardResource.spec.variables);\n if (dashboardResource.spec.annotations) {\n setAnnotationSpecs(dashboardResource.spec.annotations);\n }\n setDashboardResource(dashboardResource);\n };\n\n return {\n dashboard,\n setDashboard,\n };\n}\n\nfunction convertPanelGroupsToLayouts(\n panelGroups: Record<number, PanelGroupDefinition>,\n panelGroupOrder: PanelGroupId[]\n): GridDefinition[] {\n const layouts: GridDefinition[] = [];\n panelGroupOrder.map((groupOrderId) => {\n const group = panelGroups[groupOrderId];\n if (group === undefined) {\n throw new Error('panel group not found');\n }\n const { title, isCollapsed, repeatVariable, itemLayouts, itemPanelKeys } = group;\n let display = undefined;\n if (title || isCollapsed !== undefined) {\n display = {\n title: title ?? '',\n collapse: {\n open: !isCollapsed,\n },\n };\n }\n const layout: GridDefinition = {\n kind: 'Grid',\n spec: {\n display,\n items: itemLayouts.map((layout) => {\n const panelKey = itemPanelKeys[layout.i];\n if (panelKey === undefined) {\n throw new Error(`Missing panel key of layout ${layout.i}`);\n }\n return {\n x: layout.x,\n y: layout.y,\n width: layout.w,\n height: layout.h,\n content: createPanelRef(panelKey),\n };\n }),\n repeatVariable: repeatVariable,\n },\n };\n layouts.push(layout);\n });\n\n return layouts;\n}\n"],"names":["createPanelRef","useDashboardStore","useVariableDefinitionActions","useVariableDefinitions","useAnnotationActions","useAnnotationSpecs","useDashboard","panels","panelGroups","panelGroupOrder","setDashboard","setDashboardResource","kind","metadata","display","duration","refreshInterval","datasources","links","ttl","setVariableDefinitions","setAnnotationSpecs","variables","annotations","layouts","convertPanelGroupsToLayouts","dashboard","spec","dashboardResource","map","groupOrderId","group","undefined","Error","title","isCollapsed","repeatVariable","itemLayouts","itemPanelKeys","collapse","open","layout","items","panelKey","i","x","y","width","w","height","h","content","push"],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- export * from './DashboardResource';
2
1
  export * from './PanelGroupDefinition';
3
2
  export * from './VariableDefinition';
4
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/model/index.ts"],"names":[],"mappings":"AAaA,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/model/index.ts"],"names":[],"mappings":"AAaA,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC"}
@@ -10,7 +10,6 @@
10
10
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
11
  // See the License for the specific language governing permissions and
12
12
  // limitations under the License.
13
- export * from './DashboardResource';
14
13
  export * from './PanelGroupDefinition';
15
14
  export * from './VariableDefinition';
16
15
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/model/index.ts"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nexport * from './DashboardResource';\nexport * from './PanelGroupDefinition';\nexport * from './VariableDefinition';\n"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,cAAc,sBAAsB;AACpC,cAAc,yBAAyB;AACvC,cAAc,uBAAuB"}
1
+ {"version":3,"sources":["../../src/model/index.ts"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nexport * from './PanelGroupDefinition';\nexport * from './VariableDefinition';\n"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,cAAc,yBAAyB;AACvC,cAAc,uBAAuB"}
@@ -1,6 +1,6 @@
1
1
  import { StoreApi } from 'zustand';
2
+ import { DashboardResource } from '@perses-dev/client';
2
3
  import { DashboardStoreState } from '../context';
3
- import { DashboardResource } from '../model';
4
4
  /**
5
5
  * Helper to get a test dashboard resource.
6
6
  */
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard-provider.d.ts","sourceRoot":"","sources":["../../src/test/dashboard-provider.tsx"],"names":[],"mappings":"AAcA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAoB,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAG7C;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,iBAAiB,CAGpD;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,IAAI;IAC5C,oBAAoB,EAAE,MAAM,IAAI,CAAC;IACjC,KAAK,EAAE;QAAE,KAAK,CAAC,EAAE,QAAQ,CAAC,mBAAmB,CAAC,CAAA;KAAE,CAAC;CAClD,CAcA"}
1
+ {"version":3,"file":"dashboard-provider.d.ts","sourceRoot":"","sources":["../../src/test/dashboard-provider.tsx"],"names":[],"mappings":"AAcA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAoB,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAGnE;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,iBAAiB,CAGpD;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,IAAI;IAC5C,oBAAoB,EAAE,MAAM,IAAI,CAAC;IACjC,KAAK,EAAE;QAAE,KAAK,CAAC,EAAE,QAAQ,CAAC,mBAAmB,CAAC,CAAA;KAAE,CAAC;CAClD,CAcA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/test/dashboard-provider.tsx"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { useContext } from 'react';\nimport { StoreApi } from 'zustand';\nimport { DashboardContext, DashboardStoreState } from '../context';\nimport { DashboardResource } from '../model';\nimport testDashboard from './testDashboard';\n\n/**\n * Helper to get a test dashboard resource.\n */\nexport function getTestDashboard(): DashboardResource {\n // TODO: Should we be cloning this to create a new object each time?\n return testDashboard;\n}\n\n/**\n * Test helper to create a \"spy\" component that will capture the DashboardProvider's store, allowing you to inspect\n * its state in tests. Be sure to render the DashboardProviderSpy component that's returned in the component test\n * underneath the DashboardProvider.\n */\nexport function createDashboardProviderSpy(): {\n DashboardProviderSpy: () => null;\n store: { value?: StoreApi<DashboardStoreState> };\n} {\n const store: { value?: StoreApi<DashboardStoreState> } = {};\n\n // Spy component just captures the store value so it can be inspected in tests\n function DashboardProviderSpy(): null {\n const ctx = useContext(DashboardContext);\n store.value = ctx;\n return null;\n }\n\n return {\n DashboardProviderSpy,\n store,\n };\n}\n"],"names":["useContext","DashboardContext","testDashboard","getTestDashboard","createDashboardProviderSpy","store","DashboardProviderSpy","ctx","value"],"mappings":"AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,SAASA,UAAU,QAAQ,QAAQ;AAEnC,SAASC,gBAAgB,QAA6B,aAAa;AAEnE,OAAOC,mBAAmB,kBAAkB;AAE5C;;CAEC,GACD,OAAO,SAASC;IACd,oEAAoE;IACpE,OAAOD;AACT;AAEA;;;;CAIC,GACD,OAAO,SAASE;IAId,MAAMC,QAAmD,CAAC;IAE1D,8EAA8E;IAC9E,SAASC;QACP,MAAMC,MAAMP,WAAWC;QACvBI,MAAMG,KAAK,GAAGD;QACd,OAAO;IACT;IAEA,OAAO;QACLD;QACAD;IACF;AACF"}
1
+ {"version":3,"sources":["../../src/test/dashboard-provider.tsx"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { useContext } from 'react';\nimport { StoreApi } from 'zustand';\nimport { DashboardResource } from '@perses-dev/client';\nimport { DashboardContext, DashboardStoreState } from '../context';\nimport testDashboard from './testDashboard';\n\n/**\n * Helper to get a test dashboard resource.\n */\nexport function getTestDashboard(): DashboardResource {\n // TODO: Should we be cloning this to create a new object each time?\n return testDashboard;\n}\n\n/**\n * Test helper to create a \"spy\" component that will capture the DashboardProvider's store, allowing you to inspect\n * its state in tests. Be sure to render the DashboardProviderSpy component that's returned in the component test\n * underneath the DashboardProvider.\n */\nexport function createDashboardProviderSpy(): {\n DashboardProviderSpy: () => null;\n store: { value?: StoreApi<DashboardStoreState> };\n} {\n const store: { value?: StoreApi<DashboardStoreState> } = {};\n\n // Spy component just captures the store value so it can be inspected in tests\n function DashboardProviderSpy(): null {\n const ctx = useContext(DashboardContext);\n store.value = ctx;\n return null;\n }\n\n return {\n DashboardProviderSpy,\n store,\n };\n}\n"],"names":["useContext","DashboardContext","testDashboard","getTestDashboard","createDashboardProviderSpy","store","DashboardProviderSpy","ctx","value"],"mappings":"AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,SAASA,UAAU,QAAQ,QAAQ;AAGnC,SAASC,gBAAgB,QAA6B,aAAa;AACnE,OAAOC,mBAAmB,kBAAkB;AAE5C;;CAEC,GACD,OAAO,SAASC;IACd,oEAAoE;IACpE,OAAOD;AACT;AAEA;;;;CAIC,GACD,OAAO,SAASE;IAId,MAAMC,QAAmD,CAAC;IAE1D,8EAA8E;IAC9E,SAASC;QACP,MAAMC,MAAMP,WAAWC;QACvBI,MAAMG,KAAK,GAAGD;QACd,OAAO;IACT;IAEA,OAAO;QACLD;QACAD;IACF;AACF"}
@@ -1,4 +1,4 @@
1
- import { DashboardResource } from '../model';
1
+ import { DashboardResource } from '@perses-dev/client';
2
2
  type DashboardResourceTest = Omit<DashboardResource, 'metadata'> & {
3
3
  metadata: {
4
4
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"testDashboard.d.ts","sourceRoot":"","sources":["../../src/test/testDashboard.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,KAAK,qBAAqB,GAAG,IAAI,CAAC,iBAAiB,EAAE,UAAU,CAAC,GAAG;IACjE,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH,CAAC;AAEF,QAAA,MAAM,aAAa,EAAE,qBA0PpB,CAAC;AAEF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"testDashboard.d.ts","sourceRoot":"","sources":["../../src/test/testDashboard.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,KAAK,qBAAqB,GAAG,IAAI,CAAC,iBAAiB,EAAE,UAAU,CAAC,GAAG;IACjE,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH,CAAC;AAEF,QAAA,MAAM,aAAa,EAAE,qBA0PpB,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/test/testDashboard.ts"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { DashboardResource } from '../model';\n\ntype DashboardResourceTest = Omit<DashboardResource, 'metadata'> & {\n metadata: {\n name: string;\n project: string;\n createdAt: string;\n updatedAt: string;\n version: number;\n };\n};\n\nconst testDashboard: DashboardResourceTest = {\n kind: 'Dashboard',\n metadata: {\n name: 'Node Stats',\n project: 'perses',\n createdAt: '2021-11-09',\n updatedAt: '2021-11-09',\n version: 0,\n },\n spec: {\n duration: '30m',\n refreshInterval: '0s',\n variables: [\n {\n kind: 'TextVariable',\n spec: {\n name: 'job',\n value: 'node',\n },\n },\n {\n kind: 'TextVariable',\n spec: {\n name: 'instance',\n value: 'demo.do.prometheus.io:9100',\n },\n },\n {\n kind: 'TextVariable',\n spec: {\n name: 'interval',\n value: '1m',\n },\n },\n ],\n panels: {\n cpu: {\n kind: 'Panel',\n spec: {\n display: { name: 'CPU' },\n plugin: {\n kind: 'TimeSeriesChart',\n spec: {\n format: { unit: '%' },\n },\n },\n queries: [\n {\n kind: 'TimeSeriesQuery',\n spec: {\n plugin: {\n kind: 'PrometheusTimeSeriesQuery',\n spec: {\n query:\n 'avg without (cpu)(rate(node_cpu_seconds_total{job=\"node\",instance=\"$instance\",mode!=\"idle\"}[$interval]))',\n },\n },\n },\n },\n ],\n },\n },\n memory: {\n kind: 'Panel',\n spec: {\n display: { name: 'Memory' },\n plugin: {\n kind: 'TimeSeriesChart',\n spec: {\n format: { unit: 'bytes' },\n },\n },\n queries: [\n {\n kind: 'TimeSeriesQuery',\n spec: {\n plugin: {\n kind: 'PrometheusTimeSeriesQuery',\n spec: {\n query:\n 'node_memory_MemTotal_bytes{job=\"node\",instance=\"$instance\"} - node_memory_MemFree_bytes{job=\"node\",instance=\"$instance\"} - node_memory_Buffers_bytes{job=\"node\",instance=\"$instance\"} - node_memory_Cached_bytes{job=\"node\",instance=\"$instance\"}',\n },\n },\n },\n },\n {\n kind: 'TimeSeriesQuery',\n spec: {\n plugin: {\n kind: 'PrometheusTimeSeriesQuery',\n spec: {\n query: 'node_memory_Buffers_bytes{job=\"node\",instance=\"$instance\"}',\n },\n },\n },\n },\n {\n kind: 'TimeSeriesQuery',\n spec: {\n plugin: {\n kind: 'PrometheusTimeSeriesQuery',\n spec: {\n query: 'node_memory_Cached_bytes{job=\"node\",instance=\"$instance\"}',\n },\n },\n },\n },\n {\n kind: 'TimeSeriesQuery',\n spec: {\n plugin: {\n kind: 'PrometheusTimeSeriesQuery',\n spec: {\n query: 'node_memory_MemFree_bytes{job=\"node\",instance=\"$instance\"}',\n },\n },\n },\n },\n ],\n },\n },\n // This panel is referenced in more than one layout below\n diskIO: {\n kind: 'Panel',\n spec: {\n display: { name: 'Disk I/O Utilization' },\n plugin: {\n kind: 'TimeSeriesChart',\n spec: {\n format: { unit: 'percent' },\n },\n },\n queries: [\n {\n kind: 'TimeSeriesQuery',\n spec: {\n plugin: {\n kind: 'PrometheusTimeSeriesQuery',\n spec: {\n query:\n 'rate(node_disk_io_time_seconds_total{job=\"node\",instance=\"$instance\",device!~\"^(md\\\\\\\\d+$|dm-)\"}[$interval])',\n },\n },\n },\n },\n ],\n },\n },\n filesystemFullness: {\n kind: 'Panel',\n spec: {\n display: { name: 'Filesystem Fullness' },\n plugin: {\n kind: 'TimeSeriesChart',\n spec: {\n format: { unit: 'percent' },\n },\n },\n queries: [\n {\n kind: 'TimeSeriesQuery',\n spec: {\n plugin: {\n kind: 'PrometheusTimeSeriesQuery',\n spec: {\n query:\n '1 - node_filesystem_free_bytes{job=\"node\",instance=\"$instance\",fstype!=\"rootfs\",mountpoint!~\"/(run|var).*\",mountpoint!=\"\"} / node_filesystem_size_bytes{job=\"node\",instance=\"$instance\"}',\n },\n },\n },\n },\n ],\n },\n },\n },\n layouts: [\n // Regular Title, no collapse enabled\n {\n kind: 'Grid',\n spec: {\n display: {\n title: 'CPU Stats',\n collapse: {\n open: true,\n },\n },\n items: [\n // First Row\n {\n x: 0,\n y: 0,\n width: 12,\n height: 4,\n content: { $ref: '#/spec/panels/cpu' },\n },\n {\n x: 0,\n y: 5,\n width: 6,\n height: 2,\n content: { $ref: '#/spec/panels/diskIO' },\n },\n ],\n },\n },\n // No title,\n {\n kind: 'Grid',\n spec: {\n items: [\n {\n x: 0,\n y: 0,\n width: 6,\n height: 2,\n content: { $ref: '#/spec/panels/diskIO' },\n },\n {\n x: 8,\n y: 0,\n width: 8,\n height: 3,\n content: { $ref: '#/spec/panels/memory' },\n },\n ],\n },\n },\n // Collapsed\n {\n kind: 'Grid',\n spec: {\n display: {\n title: 'Disk Stats',\n collapse: {\n open: false,\n },\n },\n items: [\n {\n x: 18,\n y: 0,\n width: 6,\n height: 2,\n content: { $ref: '#/spec/panels/filesystemFullness' },\n },\n ],\n },\n },\n ],\n },\n};\n\nexport default testDashboard;\n"],"names":["testDashboard","kind","metadata","name","project","createdAt","updatedAt","version","spec","duration","refreshInterval","variables","value","panels","cpu","display","plugin","format","unit","queries","query","memory","diskIO","filesystemFullness","layouts","title","collapse","open","items","x","y","width","height","content","$ref"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/test/testDashboard.ts"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { DashboardResource } from '@perses-dev/client';\n\ntype DashboardResourceTest = Omit<DashboardResource, 'metadata'> & {\n metadata: {\n name: string;\n project: string;\n createdAt: string;\n updatedAt: string;\n version: number;\n };\n};\n\nconst testDashboard: DashboardResourceTest = {\n kind: 'Dashboard',\n metadata: {\n name: 'Node Stats',\n project: 'perses',\n createdAt: '2021-11-09',\n updatedAt: '2021-11-09',\n version: 0,\n },\n spec: {\n duration: '30m',\n refreshInterval: '0s',\n variables: [\n {\n kind: 'TextVariable',\n spec: {\n name: 'job',\n value: 'node',\n },\n },\n {\n kind: 'TextVariable',\n spec: {\n name: 'instance',\n value: 'demo.do.prometheus.io:9100',\n },\n },\n {\n kind: 'TextVariable',\n spec: {\n name: 'interval',\n value: '1m',\n },\n },\n ],\n panels: {\n cpu: {\n kind: 'Panel',\n spec: {\n display: { name: 'CPU' },\n plugin: {\n kind: 'TimeSeriesChart',\n spec: {\n format: { unit: '%' },\n },\n },\n queries: [\n {\n kind: 'TimeSeriesQuery',\n spec: {\n plugin: {\n kind: 'PrometheusTimeSeriesQuery',\n spec: {\n query:\n 'avg without (cpu)(rate(node_cpu_seconds_total{job=\"node\",instance=\"$instance\",mode!=\"idle\"}[$interval]))',\n },\n },\n },\n },\n ],\n },\n },\n memory: {\n kind: 'Panel',\n spec: {\n display: { name: 'Memory' },\n plugin: {\n kind: 'TimeSeriesChart',\n spec: {\n format: { unit: 'bytes' },\n },\n },\n queries: [\n {\n kind: 'TimeSeriesQuery',\n spec: {\n plugin: {\n kind: 'PrometheusTimeSeriesQuery',\n spec: {\n query:\n 'node_memory_MemTotal_bytes{job=\"node\",instance=\"$instance\"} - node_memory_MemFree_bytes{job=\"node\",instance=\"$instance\"} - node_memory_Buffers_bytes{job=\"node\",instance=\"$instance\"} - node_memory_Cached_bytes{job=\"node\",instance=\"$instance\"}',\n },\n },\n },\n },\n {\n kind: 'TimeSeriesQuery',\n spec: {\n plugin: {\n kind: 'PrometheusTimeSeriesQuery',\n spec: {\n query: 'node_memory_Buffers_bytes{job=\"node\",instance=\"$instance\"}',\n },\n },\n },\n },\n {\n kind: 'TimeSeriesQuery',\n spec: {\n plugin: {\n kind: 'PrometheusTimeSeriesQuery',\n spec: {\n query: 'node_memory_Cached_bytes{job=\"node\",instance=\"$instance\"}',\n },\n },\n },\n },\n {\n kind: 'TimeSeriesQuery',\n spec: {\n plugin: {\n kind: 'PrometheusTimeSeriesQuery',\n spec: {\n query: 'node_memory_MemFree_bytes{job=\"node\",instance=\"$instance\"}',\n },\n },\n },\n },\n ],\n },\n },\n // This panel is referenced in more than one layout below\n diskIO: {\n kind: 'Panel',\n spec: {\n display: { name: 'Disk I/O Utilization' },\n plugin: {\n kind: 'TimeSeriesChart',\n spec: {\n format: { unit: 'percent' },\n },\n },\n queries: [\n {\n kind: 'TimeSeriesQuery',\n spec: {\n plugin: {\n kind: 'PrometheusTimeSeriesQuery',\n spec: {\n query:\n 'rate(node_disk_io_time_seconds_total{job=\"node\",instance=\"$instance\",device!~\"^(md\\\\\\\\d+$|dm-)\"}[$interval])',\n },\n },\n },\n },\n ],\n },\n },\n filesystemFullness: {\n kind: 'Panel',\n spec: {\n display: { name: 'Filesystem Fullness' },\n plugin: {\n kind: 'TimeSeriesChart',\n spec: {\n format: { unit: 'percent' },\n },\n },\n queries: [\n {\n kind: 'TimeSeriesQuery',\n spec: {\n plugin: {\n kind: 'PrometheusTimeSeriesQuery',\n spec: {\n query:\n '1 - node_filesystem_free_bytes{job=\"node\",instance=\"$instance\",fstype!=\"rootfs\",mountpoint!~\"/(run|var).*\",mountpoint!=\"\"} / node_filesystem_size_bytes{job=\"node\",instance=\"$instance\"}',\n },\n },\n },\n },\n ],\n },\n },\n },\n layouts: [\n // Regular Title, no collapse enabled\n {\n kind: 'Grid',\n spec: {\n display: {\n title: 'CPU Stats',\n collapse: {\n open: true,\n },\n },\n items: [\n // First Row\n {\n x: 0,\n y: 0,\n width: 12,\n height: 4,\n content: { $ref: '#/spec/panels/cpu' },\n },\n {\n x: 0,\n y: 5,\n width: 6,\n height: 2,\n content: { $ref: '#/spec/panels/diskIO' },\n },\n ],\n },\n },\n // No title,\n {\n kind: 'Grid',\n spec: {\n items: [\n {\n x: 0,\n y: 0,\n width: 6,\n height: 2,\n content: { $ref: '#/spec/panels/diskIO' },\n },\n {\n x: 8,\n y: 0,\n width: 8,\n height: 3,\n content: { $ref: '#/spec/panels/memory' },\n },\n ],\n },\n },\n // Collapsed\n {\n kind: 'Grid',\n spec: {\n display: {\n title: 'Disk Stats',\n collapse: {\n open: false,\n },\n },\n items: [\n {\n x: 18,\n y: 0,\n width: 6,\n height: 2,\n content: { $ref: '#/spec/panels/filesystemFullness' },\n },\n ],\n },\n },\n ],\n },\n};\n\nexport default testDashboard;\n"],"names":["testDashboard","kind","metadata","name","project","createdAt","updatedAt","version","spec","duration","refreshInterval","variables","value","panels","cpu","display","plugin","format","unit","queries","query","memory","diskIO","filesystemFullness","layouts","title","collapse","open","items","x","y","width","height","content","$ref"],"mappings":"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"}
@@ -1,13 +1,14 @@
1
1
  import { ReactElement, ReactNode } from 'react';
2
2
  import { DashboardSpec } from '@perses-dev/spec';
3
+ import { DashboardResource } from '@perses-dev/client';
3
4
  import { EmptyDashboardProps } from '../../components';
4
5
  import { OnSaveDashboard } from '../../context';
5
- import { DashboardResource } from '../../model';
6
6
  export interface DashboardAppProps {
7
7
  dashboardResource: DashboardResource;
8
8
  emptyDashboardProps?: Partial<EmptyDashboardProps>;
9
9
  isReadonly: boolean;
10
10
  isVariableEnabled: boolean;
11
+ isAnnotationEnabled: boolean;
11
12
  isDatasourceEnabled: boolean;
12
13
  disableShortcuts?: boolean;
13
14
  isCreating?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"DashboardApp.d.ts","sourceRoot":"","sources":["../../../src/views/ViewDashboard/DashboardApp.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAY,MAAM,OAAO,CAAC;AAI1D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EASL,mBAAmB,EAIpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAkE,MAAM,eAAe,CAAC;AAEhH,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,WAAW,iBAAiB;IAChC,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,mBAAmB,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACnD,UAAU,EAAE,OAAO,CAAC;IACpB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAElC,6BAA6B,CAAC,EAAE,OAAO,CAAC;IACxC,uBAAuB,CAAC,EAAE,SAAS,CAAC;IACpC,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;CACzD;AAED,eAAO,MAAM,YAAY,UAAW,iBAAiB,KAAG,YAMvD,CAAC"}
1
+ {"version":3,"file":"DashboardApp.d.ts","sourceRoot":"","sources":["../../../src/views/ViewDashboard/DashboardApp.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAY,MAAM,OAAO,CAAC;AAI1D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EASL,mBAAmB,EAIpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAkE,MAAM,eAAe,CAAC;AAGhH,MAAM,WAAW,iBAAiB;IAChC,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,mBAAmB,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACnD,UAAU,EAAE,OAAO,CAAC;IACpB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAElC,6BAA6B,CAAC,EAAE,OAAO,CAAC;IACxC,uBAAuB,CAAC,EAAE,SAAS,CAAC;IACpC,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;CACzD;AAED,eAAO,MAAM,YAAY,UAAW,iBAAiB,KAAG,YAMvD,CAAC"}
@@ -26,7 +26,7 @@ export const DashboardApp = (props)=>{
26
26
  });
27
27
  };
28
28
  const DashboardAppContent = (props)=>{
29
- const { dashboardResource, emptyDashboardProps, isReadonly, isVariableEnabled, isDatasourceEnabled, disableShortcuts, isCreating, isInitialVariableSticky, isLeavingConfirmDialogEnabled, dashboardTitleComponent, onSave, onDiscard } = props;
29
+ const { dashboardResource, emptyDashboardProps, isReadonly, isVariableEnabled, isAnnotationEnabled, isDatasourceEnabled, disableShortcuts, isCreating, isInitialVariableSticky, isLeavingConfirmDialogEnabled, dashboardTitleComponent, onSave, onDiscard } = props;
30
30
  const chartsTheme = useChartsTheme();
31
31
  const { isEditMode, setEditMode } = useEditMode();
32
32
  const { dashboard, setDashboard } = useDashboard();
@@ -87,6 +87,7 @@ const DashboardAppContent = (props)=>{
87
87
  onSave: onSave,
88
88
  isReadonly: isReadonly,
89
89
  isVariableEnabled: isVariableEnabled,
90
+ isAnnotationEnabled: isAnnotationEnabled,
90
91
  isDatasourceEnabled: isDatasourceEnabled,
91
92
  onEditButtonClick: onEditButtonClick,
92
93
  onCancelButtonClick: onCancelButtonClick
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/views/ViewDashboard/DashboardApp.tsx"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { ReactElement, ReactNode, useState } from 'react';\nimport { Box } from '@mui/material';\nimport { ChartsProvider, ErrorAlert, ErrorBoundary, useChartsTheme } from '@perses-dev/components';\nimport { useDatasourceStore } from '@perses-dev/plugin-system';\nimport { DashboardSpec } from '@perses-dev/spec';\nimport {\n PanelDrawer,\n Dashboard,\n useDashboardShortcuts,\n PanelGroupDialog,\n DeletePanelGroupDialog,\n DashboardDiscardChangesConfirmationDialog,\n DashboardToolbar,\n DeletePanelDialog,\n EmptyDashboardProps,\n EditJsonDialog,\n SaveChangesConfirmationDialog,\n LeaveDialog,\n} from '../../components';\nimport { OnSaveDashboard, useDashboard, useDiscardChangesConfirmationDialog, useEditMode } from '../../context';\nimport { PanelFocusProvider } from '../../keyboard-shortcuts';\nimport { DashboardResource } from '../../model';\n\nexport interface DashboardAppProps {\n dashboardResource: DashboardResource;\n emptyDashboardProps?: Partial<EmptyDashboardProps>;\n isReadonly: boolean;\n isVariableEnabled: boolean;\n isDatasourceEnabled: boolean;\n disableShortcuts?: boolean;\n isCreating?: boolean;\n isInitialVariableSticky?: boolean;\n // If true, browser confirmation dialog will be shown when navigating away with unsaved changes (closing tab, ...).\n isLeavingConfirmDialogEnabled?: boolean;\n dashboardTitleComponent?: ReactNode;\n onSave?: OnSaveDashboard;\n onDiscard?: (name: string, spec: DashboardSpec) => void;\n}\n\nexport const DashboardApp = (props: DashboardAppProps): ReactElement => {\n return (\n <PanelFocusProvider>\n <DashboardAppContent {...props} />\n </PanelFocusProvider>\n );\n};\n\nconst DashboardAppContent = (props: DashboardAppProps): ReactElement => {\n const {\n dashboardResource,\n emptyDashboardProps,\n isReadonly,\n isVariableEnabled,\n isDatasourceEnabled,\n disableShortcuts,\n isCreating,\n isInitialVariableSticky,\n isLeavingConfirmDialogEnabled,\n dashboardTitleComponent,\n onSave,\n onDiscard,\n } = props;\n\n const chartsTheme = useChartsTheme();\n\n const { isEditMode, setEditMode } = useEditMode();\n\n const { dashboard, setDashboard } = useDashboard();\n const [originalDashboard, setOriginalDashboard] = useState<DashboardResource | undefined>(undefined);\n\n const { setSavedDatasources } = useDatasourceStore();\n\n const { openDiscardChangesConfirmationDialog, closeDiscardChangesConfirmationDialog } =\n useDiscardChangesConfirmationDialog();\n\n const handleDiscardChanges = (): void => {\n // Reset to the original spec and exit edit mode\n if (originalDashboard) {\n setDashboard(originalDashboard);\n }\n setEditMode(false);\n closeDiscardChangesConfirmationDialog();\n if (onDiscard) {\n onDiscard(dashboard.metadata.name, dashboard.spec);\n }\n };\n\n const onEditButtonClick = (): void => {\n setEditMode(true);\n setOriginalDashboard(dashboard);\n setSavedDatasources(dashboard.spec.datasources ?? {});\n };\n\n const onCancelButtonClick = (): void => {\n // check if dashboard has been modified\n if (JSON.stringify(dashboard) === JSON.stringify(originalDashboard)) {\n setEditMode(false);\n } else {\n openDiscardChangesConfirmationDialog({\n onDiscardChanges: () => {\n handleDiscardChanges();\n },\n onCancel: () => {\n closeDiscardChangesConfirmationDialog();\n },\n });\n }\n };\n\n useDashboardShortcuts({\n onSave,\n isReadonly,\n onEditButtonClick,\n onCancelButtonClick,\n disabled: disableShortcuts,\n });\n\n return (\n <Box\n sx={{\n flexGrow: 1,\n overflowX: 'hidden',\n overflowY: 'auto',\n display: 'flex',\n flexDirection: 'column',\n }}\n >\n <DashboardToolbar\n dashboardName={dashboardResource.metadata.name}\n dashboardTitleComponent={dashboardTitleComponent}\n initialVariableIsSticky={isInitialVariableSticky}\n onSave={onSave}\n isReadonly={isReadonly}\n isVariableEnabled={isVariableEnabled}\n isDatasourceEnabled={isDatasourceEnabled}\n onEditButtonClick={onEditButtonClick}\n onCancelButtonClick={onCancelButtonClick}\n />\n <Box sx={{ paddingTop: 2, paddingX: 2, height: '100%' }}>\n <ErrorBoundary FallbackComponent={ErrorAlert}>\n <Dashboard\n emptyDashboardProps={{\n onEditButtonClick,\n ...emptyDashboardProps,\n }}\n />\n </ErrorBoundary>\n <ChartsProvider chartsTheme={chartsTheme} enablePinning={false} enableSyncGrouping={false}>\n <PanelDrawer />\n </ChartsProvider>\n <PanelGroupDialog />\n <DeletePanelGroupDialog />\n <DeletePanelDialog />\n <DashboardDiscardChangesConfirmationDialog />\n <EditJsonDialog isReadonly={!isEditMode} disableMetadataEdition={!isCreating} />\n <SaveChangesConfirmationDialog />\n {isLeavingConfirmDialogEnabled && isEditMode && (\n <LeaveDialog original={originalDashboard} current={dashboard} />\n )}\n </Box>\n </Box>\n );\n};\n"],"names":["useState","Box","ChartsProvider","ErrorAlert","ErrorBoundary","useChartsTheme","useDatasourceStore","PanelDrawer","Dashboard","useDashboardShortcuts","PanelGroupDialog","DeletePanelGroupDialog","DashboardDiscardChangesConfirmationDialog","DashboardToolbar","DeletePanelDialog","EditJsonDialog","SaveChangesConfirmationDialog","LeaveDialog","useDashboard","useDiscardChangesConfirmationDialog","useEditMode","PanelFocusProvider","DashboardApp","props","DashboardAppContent","dashboardResource","emptyDashboardProps","isReadonly","isVariableEnabled","isDatasourceEnabled","disableShortcuts","isCreating","isInitialVariableSticky","isLeavingConfirmDialogEnabled","dashboardTitleComponent","onSave","onDiscard","chartsTheme","isEditMode","setEditMode","dashboard","setDashboard","originalDashboard","setOriginalDashboard","undefined","setSavedDatasources","openDiscardChangesConfirmationDialog","closeDiscardChangesConfirmationDialog","handleDiscardChanges","metadata","name","spec","onEditButtonClick","datasources","onCancelButtonClick","JSON","stringify","onDiscardChanges","onCancel","disabled","sx","flexGrow","overflowX","overflowY","display","flexDirection","dashboardName","initialVariableIsSticky","paddingTop","paddingX","height","FallbackComponent","enablePinning","enableSyncGrouping","disableMetadataEdition","original","current"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/views/ViewDashboard/DashboardApp.tsx"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { ReactElement, ReactNode, useState } from 'react';\nimport { Box } from '@mui/material';\nimport { ChartsProvider, ErrorAlert, ErrorBoundary, useChartsTheme } from '@perses-dev/components';\nimport { useDatasourceStore } from '@perses-dev/plugin-system';\nimport { DashboardSpec } from '@perses-dev/spec';\nimport { DashboardResource } from '@perses-dev/client';\nimport {\n PanelDrawer,\n Dashboard,\n useDashboardShortcuts,\n PanelGroupDialog,\n DeletePanelGroupDialog,\n DashboardDiscardChangesConfirmationDialog,\n DashboardToolbar,\n DeletePanelDialog,\n EmptyDashboardProps,\n EditJsonDialog,\n SaveChangesConfirmationDialog,\n LeaveDialog,\n} from '../../components';\nimport { OnSaveDashboard, useDashboard, useDiscardChangesConfirmationDialog, useEditMode } from '../../context';\nimport { PanelFocusProvider } from '../../keyboard-shortcuts';\n\nexport interface DashboardAppProps {\n dashboardResource: DashboardResource;\n emptyDashboardProps?: Partial<EmptyDashboardProps>;\n isReadonly: boolean;\n isVariableEnabled: boolean;\n isAnnotationEnabled: boolean;\n isDatasourceEnabled: boolean;\n disableShortcuts?: boolean;\n isCreating?: boolean;\n isInitialVariableSticky?: boolean;\n // If true, browser confirmation dialog will be shown when navigating away with unsaved changes (closing tab, ...).\n isLeavingConfirmDialogEnabled?: boolean;\n dashboardTitleComponent?: ReactNode;\n onSave?: OnSaveDashboard;\n onDiscard?: (name: string, spec: DashboardSpec) => void;\n}\n\nexport const DashboardApp = (props: DashboardAppProps): ReactElement => {\n return (\n <PanelFocusProvider>\n <DashboardAppContent {...props} />\n </PanelFocusProvider>\n );\n};\n\nconst DashboardAppContent = (props: DashboardAppProps): ReactElement => {\n const {\n dashboardResource,\n emptyDashboardProps,\n isReadonly,\n isVariableEnabled,\n isAnnotationEnabled,\n isDatasourceEnabled,\n disableShortcuts,\n isCreating,\n isInitialVariableSticky,\n isLeavingConfirmDialogEnabled,\n dashboardTitleComponent,\n onSave,\n onDiscard,\n } = props;\n\n const chartsTheme = useChartsTheme();\n\n const { isEditMode, setEditMode } = useEditMode();\n\n const { dashboard, setDashboard } = useDashboard();\n const [originalDashboard, setOriginalDashboard] = useState<DashboardResource | undefined>(undefined);\n\n const { setSavedDatasources } = useDatasourceStore();\n\n const { openDiscardChangesConfirmationDialog, closeDiscardChangesConfirmationDialog } =\n useDiscardChangesConfirmationDialog();\n\n const handleDiscardChanges = (): void => {\n // Reset to the original spec and exit edit mode\n if (originalDashboard) {\n setDashboard(originalDashboard);\n }\n setEditMode(false);\n closeDiscardChangesConfirmationDialog();\n if (onDiscard) {\n onDiscard(dashboard.metadata.name, dashboard.spec);\n }\n };\n\n const onEditButtonClick = (): void => {\n setEditMode(true);\n setOriginalDashboard(dashboard);\n setSavedDatasources(dashboard.spec.datasources ?? {});\n };\n\n const onCancelButtonClick = (): void => {\n // check if dashboard has been modified\n if (JSON.stringify(dashboard) === JSON.stringify(originalDashboard)) {\n setEditMode(false);\n } else {\n openDiscardChangesConfirmationDialog({\n onDiscardChanges: () => {\n handleDiscardChanges();\n },\n onCancel: () => {\n closeDiscardChangesConfirmationDialog();\n },\n });\n }\n };\n\n useDashboardShortcuts({\n onSave,\n isReadonly,\n onEditButtonClick,\n onCancelButtonClick,\n disabled: disableShortcuts,\n });\n\n return (\n <Box\n sx={{\n flexGrow: 1,\n overflowX: 'hidden',\n overflowY: 'auto',\n display: 'flex',\n flexDirection: 'column',\n }}\n >\n <DashboardToolbar\n dashboardName={dashboardResource.metadata.name}\n dashboardTitleComponent={dashboardTitleComponent}\n initialVariableIsSticky={isInitialVariableSticky}\n onSave={onSave}\n isReadonly={isReadonly}\n isVariableEnabled={isVariableEnabled}\n isAnnotationEnabled={isAnnotationEnabled}\n isDatasourceEnabled={isDatasourceEnabled}\n onEditButtonClick={onEditButtonClick}\n onCancelButtonClick={onCancelButtonClick}\n />\n <Box sx={{ paddingTop: 2, paddingX: 2, height: '100%' }}>\n <ErrorBoundary FallbackComponent={ErrorAlert}>\n <Dashboard\n emptyDashboardProps={{\n onEditButtonClick,\n ...emptyDashboardProps,\n }}\n />\n </ErrorBoundary>\n <ChartsProvider chartsTheme={chartsTheme} enablePinning={false} enableSyncGrouping={false}>\n <PanelDrawer />\n </ChartsProvider>\n <PanelGroupDialog />\n <DeletePanelGroupDialog />\n <DeletePanelDialog />\n <DashboardDiscardChangesConfirmationDialog />\n <EditJsonDialog isReadonly={!isEditMode} disableMetadataEdition={!isCreating} />\n <SaveChangesConfirmationDialog />\n {isLeavingConfirmDialogEnabled && isEditMode && (\n <LeaveDialog original={originalDashboard} current={dashboard} />\n )}\n </Box>\n </Box>\n );\n};\n"],"names":["useState","Box","ChartsProvider","ErrorAlert","ErrorBoundary","useChartsTheme","useDatasourceStore","PanelDrawer","Dashboard","useDashboardShortcuts","PanelGroupDialog","DeletePanelGroupDialog","DashboardDiscardChangesConfirmationDialog","DashboardToolbar","DeletePanelDialog","EditJsonDialog","SaveChangesConfirmationDialog","LeaveDialog","useDashboard","useDiscardChangesConfirmationDialog","useEditMode","PanelFocusProvider","DashboardApp","props","DashboardAppContent","dashboardResource","emptyDashboardProps","isReadonly","isVariableEnabled","isAnnotationEnabled","isDatasourceEnabled","disableShortcuts","isCreating","isInitialVariableSticky","isLeavingConfirmDialogEnabled","dashboardTitleComponent","onSave","onDiscard","chartsTheme","isEditMode","setEditMode","dashboard","setDashboard","originalDashboard","setOriginalDashboard","undefined","setSavedDatasources","openDiscardChangesConfirmationDialog","closeDiscardChangesConfirmationDialog","handleDiscardChanges","metadata","name","spec","onEditButtonClick","datasources","onCancelButtonClick","JSON","stringify","onDiscardChanges","onCancel","disabled","sx","flexGrow","overflowX","overflowY","display","flexDirection","dashboardName","initialVariableIsSticky","paddingTop","paddingX","height","FallbackComponent","enablePinning","enableSyncGrouping","disableMetadataEdition","original","current"],"mappings":";AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,SAAkCA,QAAQ,QAAQ,QAAQ;AAC1D,SAASC,GAAG,QAAQ,gBAAgB;AACpC,SAASC,cAAc,EAAEC,UAAU,EAAEC,aAAa,EAAEC,cAAc,QAAQ,yBAAyB;AACnG,SAASC,kBAAkB,QAAQ,4BAA4B;AAG/D,SACEC,WAAW,EACXC,SAAS,EACTC,qBAAqB,EACrBC,gBAAgB,EAChBC,sBAAsB,EACtBC,yCAAyC,EACzCC,gBAAgB,EAChBC,iBAAiB,EAEjBC,cAAc,EACdC,6BAA6B,EAC7BC,WAAW,QACN,mBAAmB;AAC1B,SAA0BC,YAAY,EAAEC,mCAAmC,EAAEC,WAAW,QAAQ,gBAAgB;AAChH,SAASC,kBAAkB,QAAQ,2BAA2B;AAmB9D,OAAO,MAAMC,eAAe,CAACC;IAC3B,qBACE,KAACF;kBACC,cAAA,KAACG;YAAqB,GAAGD,KAAK;;;AAGpC,EAAE;AAEF,MAAMC,sBAAsB,CAACD;IAC3B,MAAM,EACJE,iBAAiB,EACjBC,mBAAmB,EACnBC,UAAU,EACVC,iBAAiB,EACjBC,mBAAmB,EACnBC,mBAAmB,EACnBC,gBAAgB,EAChBC,UAAU,EACVC,uBAAuB,EACvBC,6BAA6B,EAC7BC,uBAAuB,EACvBC,MAAM,EACNC,SAAS,EACV,GAAGd;IAEJ,MAAMe,cAAcjC;IAEpB,MAAM,EAAEkC,UAAU,EAAEC,WAAW,EAAE,GAAGpB;IAEpC,MAAM,EAAEqB,SAAS,EAAEC,YAAY,EAAE,GAAGxB;IACpC,MAAM,CAACyB,mBAAmBC,qBAAqB,GAAG5C,SAAwC6C;IAE1F,MAAM,EAAEC,mBAAmB,EAAE,GAAGxC;IAEhC,MAAM,EAAEyC,oCAAoC,EAAEC,qCAAqC,EAAE,GACnF7B;IAEF,MAAM8B,uBAAuB;QAC3B,gDAAgD;QAChD,IAAIN,mBAAmB;YACrBD,aAAaC;QACf;QACAH,YAAY;QACZQ;QACA,IAAIX,WAAW;YACbA,UAAUI,UAAUS,QAAQ,CAACC,IAAI,EAAEV,UAAUW,IAAI;QACnD;IACF;IAEA,MAAMC,oBAAoB;QACxBb,YAAY;QACZI,qBAAqBH;QACrBK,oBAAoBL,UAAUW,IAAI,CAACE,WAAW,IAAI,CAAC;IACrD;IAEA,MAAMC,sBAAsB;QAC1B,uCAAuC;QACvC,IAAIC,KAAKC,SAAS,CAAChB,eAAee,KAAKC,SAAS,CAACd,oBAAoB;YACnEH,YAAY;QACd,OAAO;YACLO,qCAAqC;gBACnCW,kBAAkB;oBAChBT;gBACF;gBACAU,UAAU;oBACRX;gBACF;YACF;QACF;IACF;IAEAvC,sBAAsB;QACpB2B;QACAT;QACA0B;QACAE;QACAK,UAAU7B;IACZ;IAEA,qBACE,MAAC9B;QACC4D,IAAI;YACFC,UAAU;YACVC,WAAW;YACXC,WAAW;YACXC,SAAS;YACTC,eAAe;QACjB;;0BAEA,KAACrD;gBACCsD,eAAe1C,kBAAkByB,QAAQ,CAACC,IAAI;gBAC9ChB,yBAAyBA;gBACzBiC,yBAAyBnC;gBACzBG,QAAQA;gBACRT,YAAYA;gBACZC,mBAAmBA;gBACnBC,qBAAqBA;gBACrBC,qBAAqBA;gBACrBuB,mBAAmBA;gBACnBE,qBAAqBA;;0BAEvB,MAACtD;gBAAI4D,IAAI;oBAAEQ,YAAY;oBAAGC,UAAU;oBAAGC,QAAQ;gBAAO;;kCACpD,KAACnE;wBAAcoE,mBAAmBrE;kCAChC,cAAA,KAACK;4BACCkB,qBAAqB;gCACnB2B;gCACA,GAAG3B,mBAAmB;4BACxB;;;kCAGJ,KAACxB;wBAAeoC,aAAaA;wBAAamC,eAAe;wBAAOC,oBAAoB;kCAClF,cAAA,KAACnE;;kCAEH,KAACG;kCACD,KAACC;kCACD,KAACG;kCACD,KAACF;kCACD,KAACG;wBAAeY,YAAY,CAACY;wBAAYoC,wBAAwB,CAAC3C;;kCAClE,KAAChB;oBACAkB,iCAAiCK,4BAChC,KAACtB;wBAAY2D,UAAUjC;wBAAmBkC,SAASpC;;;;;;AAK7D"}
@@ -1 +1 @@
1
- {"version":3,"file":"ViewDashboard.d.ts","sourceRoot":"","sources":["../../../src/views/ViewDashboard/ViewDashboard.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAO,QAAQ,EAAE,MAAM,eAAe,CAAC;AAS9C,OAAO,EAAE,YAAY,EAAW,MAAM,OAAO,CAAC;AAE9C,OAAO,EACL,4BAA4B,EAE5B,qBAAqB,EAEtB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAgB,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEjE,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,iBAAiB;IACvF,aAAa,EAAE,4BAA4B,CAAC,eAAe,CAAC,CAAC;IAC7D,2BAA2B,CAAC,EAAE,qBAAqB,CAAC,6BAA6B,CAAC,CAAC;IACnF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,YAAY,CAkHrE"}
1
+ {"version":3,"file":"ViewDashboard.d.ts","sourceRoot":"","sources":["../../../src/views/ViewDashboard/ViewDashboard.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAO,QAAQ,EAAE,MAAM,eAAe,CAAC;AAS9C,OAAO,EAAE,YAAY,EAAW,MAAM,OAAO,CAAC;AAE9C,OAAO,EACL,4BAA4B,EAE5B,qBAAqB,EAGtB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAgB,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEjE,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,iBAAiB;IACvF,aAAa,EAAE,4BAA4B,CAAC,eAAe,CAAC,CAAC;IAC7D,2BAA2B,CAAC,EAAE,qBAAqB,CAAC,6BAA6B,CAAC,CAAC;IACnF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,YAAY,CAsHrE"}
@@ -16,13 +16,13 @@ import { ErrorBoundary, ErrorAlert, combineSx } from '@perses-dev/components';
16
16
  import { TimeRangeProviderWithQueryParams, useInitialRefreshInterval, useInitialTimeRange, usePluginBuiltinVariableDefinitions } from '@perses-dev/plugin-system';
17
17
  import { useMemo } from 'react';
18
18
  import { DEFAULT_DASHBOARD_DURATION, DEFAULT_REFRESH_INTERVAL } from '../../constants';
19
- import { DatasourceStoreProvider, VariableProviderWithQueryParams } from '../../context';
19
+ import { DatasourceStoreProvider, VariableProviderWithQueryParams, AnnotationProvider } from '../../context';
20
20
  import { DashboardProviderWithQueryParams } from '../../context/DashboardProvider/DashboardProviderWithQueryParams';
21
21
  import { DashboardApp } from './DashboardApp';
22
22
  /**
23
23
  * The View for displaying a Dashboard, along with the UI for selecting variable values.
24
24
  */ export function ViewDashboard(props) {
25
- const { dashboardResource, datasourceApi, externalVariableDefinitions, emptyDashboardProps, isReadonly, isVariableEnabled, isDatasourceEnabled, disableShortcuts, isEditing, isCreating, isInitialVariableSticky, isLeavingConfirmDialogEnabled, dashboardTitleComponent, onSave, onDiscard, sx, ...others } = props;
25
+ const { dashboardResource, datasourceApi, externalVariableDefinitions, emptyDashboardProps, isReadonly, isVariableEnabled, isAnnotationEnabled, isDatasourceEnabled, disableShortcuts, isEditing, isCreating, isInitialVariableSticky, isLeavingConfirmDialogEnabled, dashboardTitleComponent, onSave, onDiscard, sx, ...others } = props;
26
26
  const { spec } = dashboardResource;
27
27
  const dashboardDuration = spec.duration ?? DEFAULT_DASHBOARD_DURATION;
28
28
  const dashboardRefreshInterval = spec.refreshInterval ?? DEFAULT_REFRESH_INTERVAL;
@@ -82,30 +82,34 @@ import { DashboardApp } from './DashboardApp';
82
82
  initialVariableDefinitions: spec.variables,
83
83
  externalVariableDefinitions: externalVariableDefinitions,
84
84
  builtinVariableDefinitions: builtinVariables,
85
- children: /*#__PURE__*/ _jsx(Box, {
86
- sx: combineSx({
87
- display: 'flex',
88
- width: '100%',
89
- height: '100%',
90
- position: 'relative',
91
- overflow: 'hidden'
92
- }, sx),
93
- ...others,
94
- children: /*#__PURE__*/ _jsx(ErrorBoundary, {
95
- FallbackComponent: ErrorAlert,
96
- children: /*#__PURE__*/ _jsx(DashboardApp, {
97
- dashboardResource: dashboardResource,
98
- emptyDashboardProps: emptyDashboardProps,
99
- isReadonly: isReadonly,
100
- isVariableEnabled: isVariableEnabled,
101
- isDatasourceEnabled: isDatasourceEnabled,
102
- disableShortcuts: disableShortcuts,
103
- isCreating: isCreating,
104
- isInitialVariableSticky: isInitialVariableSticky,
105
- isLeavingConfirmDialogEnabled: isLeavingConfirmDialogEnabled,
106
- dashboardTitleComponent: dashboardTitleComponent,
107
- onSave: onSave,
108
- onDiscard: onDiscard
85
+ children: /*#__PURE__*/ _jsx(AnnotationProvider, {
86
+ initialAnnotationSpecs: spec.annotations ?? [],
87
+ children: /*#__PURE__*/ _jsx(Box, {
88
+ sx: combineSx({
89
+ display: 'flex',
90
+ width: '100%',
91
+ height: '100%',
92
+ position: 'relative',
93
+ overflow: 'hidden'
94
+ }, sx),
95
+ ...others,
96
+ children: /*#__PURE__*/ _jsx(ErrorBoundary, {
97
+ FallbackComponent: ErrorAlert,
98
+ children: /*#__PURE__*/ _jsx(DashboardApp, {
99
+ dashboardResource: dashboardResource,
100
+ emptyDashboardProps: emptyDashboardProps,
101
+ isReadonly: isReadonly,
102
+ isVariableEnabled: isVariableEnabled,
103
+ isAnnotationEnabled: isAnnotationEnabled,
104
+ isDatasourceEnabled: isDatasourceEnabled,
105
+ disableShortcuts: disableShortcuts,
106
+ isCreating: isCreating,
107
+ isInitialVariableSticky: isInitialVariableSticky,
108
+ isLeavingConfirmDialogEnabled: isLeavingConfirmDialogEnabled,
109
+ dashboardTitleComponent: dashboardTitleComponent,
110
+ onSave: onSave,
111
+ onDiscard: onDiscard
112
+ })
109
113
  })
110
114
  })
111
115
  })
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/views/ViewDashboard/ViewDashboard.tsx"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { Box, BoxProps } from '@mui/material';\nimport { BuiltinVariableDefinition } from '@perses-dev/spec';\nimport { ErrorBoundary, ErrorAlert, combineSx } from '@perses-dev/components';\nimport {\n TimeRangeProviderWithQueryParams,\n useInitialRefreshInterval,\n useInitialTimeRange,\n usePluginBuiltinVariableDefinitions,\n} from '@perses-dev/plugin-system';\nimport { ReactElement, useMemo } from 'react';\nimport { DEFAULT_DASHBOARD_DURATION, DEFAULT_REFRESH_INTERVAL } from '../../constants';\nimport {\n DatasourceStoreProviderProps,\n DatasourceStoreProvider,\n VariableProviderProps,\n VariableProviderWithQueryParams,\n} from '../../context';\nimport { DashboardProviderWithQueryParams } from '../../context/DashboardProvider/DashboardProviderWithQueryParams';\nimport { DashboardApp, DashboardAppProps } from './DashboardApp';\n\nexport interface ViewDashboardProps extends Omit<BoxProps, 'children'>, DashboardAppProps {\n datasourceApi: DatasourceStoreProviderProps['datasourceApi'];\n externalVariableDefinitions?: VariableProviderProps['externalVariableDefinitions'];\n isEditing?: boolean;\n isCreating?: boolean;\n}\n\n/**\n * The View for displaying a Dashboard, along with the UI for selecting variable values.\n */\nexport function ViewDashboard(props: ViewDashboardProps): ReactElement {\n const {\n dashboardResource,\n datasourceApi,\n externalVariableDefinitions,\n emptyDashboardProps,\n isReadonly,\n isVariableEnabled,\n isDatasourceEnabled,\n disableShortcuts,\n isEditing,\n isCreating,\n isInitialVariableSticky,\n isLeavingConfirmDialogEnabled,\n dashboardTitleComponent,\n onSave,\n onDiscard,\n sx,\n ...others\n } = props;\n const { spec } = dashboardResource;\n const dashboardDuration = spec.duration ?? DEFAULT_DASHBOARD_DURATION;\n const dashboardRefreshInterval = spec.refreshInterval ?? DEFAULT_REFRESH_INTERVAL;\n const initialTimeRange = useInitialTimeRange(dashboardDuration);\n const initialRefreshInterval = useInitialRefreshInterval(dashboardRefreshInterval);\n const { data } = usePluginBuiltinVariableDefinitions();\n\n const builtinVariables = useMemo(() => {\n const result = [\n {\n kind: 'BuiltinVariable',\n spec: {\n name: '__dashboard',\n value: () => dashboardResource.metadata.name,\n source: 'Dashboard',\n display: {\n name: '__dashboard',\n description: 'The name of the current dashboard',\n hidden: true,\n },\n },\n } as BuiltinVariableDefinition,\n {\n kind: 'BuiltinVariable',\n spec: {\n name: '__project',\n value: () => dashboardResource.metadata.project,\n source: 'Dashboard',\n display: {\n name: '__project',\n description: 'The name of the current dashboard project',\n hidden: true,\n },\n },\n } as BuiltinVariableDefinition,\n ];\n if (data) {\n data.forEach((def: BuiltinVariableDefinition) => result.push(def));\n }\n return result;\n }, [dashboardResource.metadata.name, dashboardResource.metadata.project, data]);\n\n return (\n <DatasourceStoreProvider dashboardResource={dashboardResource} datasourceApi={datasourceApi}>\n <DashboardProviderWithQueryParams\n initialState={{\n isEditMode: !!isEditing,\n dashboardResource,\n }}\n >\n <TimeRangeProviderWithQueryParams\n initialTimeRange={initialTimeRange}\n initialRefreshInterval={initialRefreshInterval}\n >\n <VariableProviderWithQueryParams\n initialVariableDefinitions={spec.variables}\n externalVariableDefinitions={externalVariableDefinitions}\n builtinVariableDefinitions={builtinVariables}\n >\n <Box\n sx={combineSx(\n {\n display: 'flex',\n width: '100%',\n height: '100%',\n position: 'relative',\n overflow: 'hidden',\n },\n sx\n )}\n {...others}\n >\n <ErrorBoundary FallbackComponent={ErrorAlert}>\n <DashboardApp\n dashboardResource={dashboardResource}\n emptyDashboardProps={emptyDashboardProps}\n isReadonly={isReadonly}\n isVariableEnabled={isVariableEnabled}\n isDatasourceEnabled={isDatasourceEnabled}\n disableShortcuts={disableShortcuts}\n isCreating={isCreating}\n isInitialVariableSticky={isInitialVariableSticky}\n isLeavingConfirmDialogEnabled={isLeavingConfirmDialogEnabled}\n dashboardTitleComponent={dashboardTitleComponent}\n onSave={onSave}\n onDiscard={onDiscard}\n />\n </ErrorBoundary>\n </Box>\n </VariableProviderWithQueryParams>\n </TimeRangeProviderWithQueryParams>\n </DashboardProviderWithQueryParams>\n </DatasourceStoreProvider>\n );\n}\n"],"names":["Box","ErrorBoundary","ErrorAlert","combineSx","TimeRangeProviderWithQueryParams","useInitialRefreshInterval","useInitialTimeRange","usePluginBuiltinVariableDefinitions","useMemo","DEFAULT_DASHBOARD_DURATION","DEFAULT_REFRESH_INTERVAL","DatasourceStoreProvider","VariableProviderWithQueryParams","DashboardProviderWithQueryParams","DashboardApp","ViewDashboard","props","dashboardResource","datasourceApi","externalVariableDefinitions","emptyDashboardProps","isReadonly","isVariableEnabled","isDatasourceEnabled","disableShortcuts","isEditing","isCreating","isInitialVariableSticky","isLeavingConfirmDialogEnabled","dashboardTitleComponent","onSave","onDiscard","sx","others","spec","dashboardDuration","duration","dashboardRefreshInterval","refreshInterval","initialTimeRange","initialRefreshInterval","data","builtinVariables","result","kind","name","value","metadata","source","display","description","hidden","project","forEach","def","push","initialState","isEditMode","initialVariableDefinitions","variables","builtinVariableDefinitions","width","height","position","overflow","FallbackComponent"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/views/ViewDashboard/ViewDashboard.tsx"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { Box, BoxProps } from '@mui/material';\nimport { BuiltinVariableDefinition } from '@perses-dev/spec';\nimport { ErrorBoundary, ErrorAlert, combineSx } from '@perses-dev/components';\nimport {\n TimeRangeProviderWithQueryParams,\n useInitialRefreshInterval,\n useInitialTimeRange,\n usePluginBuiltinVariableDefinitions,\n} from '@perses-dev/plugin-system';\nimport { ReactElement, useMemo } from 'react';\nimport { DEFAULT_DASHBOARD_DURATION, DEFAULT_REFRESH_INTERVAL } from '../../constants';\nimport {\n DatasourceStoreProviderProps,\n DatasourceStoreProvider,\n VariableProviderProps,\n VariableProviderWithQueryParams,\n AnnotationProvider,\n} from '../../context';\nimport { DashboardProviderWithQueryParams } from '../../context/DashboardProvider/DashboardProviderWithQueryParams';\nimport { DashboardApp, DashboardAppProps } from './DashboardApp';\n\nexport interface ViewDashboardProps extends Omit<BoxProps, 'children'>, DashboardAppProps {\n datasourceApi: DatasourceStoreProviderProps['datasourceApi'];\n externalVariableDefinitions?: VariableProviderProps['externalVariableDefinitions'];\n isEditing?: boolean;\n isCreating?: boolean;\n}\n\n/**\n * The View for displaying a Dashboard, along with the UI for selecting variable values.\n */\nexport function ViewDashboard(props: ViewDashboardProps): ReactElement {\n const {\n dashboardResource,\n datasourceApi,\n externalVariableDefinitions,\n emptyDashboardProps,\n isReadonly,\n isVariableEnabled,\n isAnnotationEnabled,\n isDatasourceEnabled,\n disableShortcuts,\n isEditing,\n isCreating,\n isInitialVariableSticky,\n isLeavingConfirmDialogEnabled,\n dashboardTitleComponent,\n onSave,\n onDiscard,\n sx,\n ...others\n } = props;\n const { spec } = dashboardResource;\n const dashboardDuration = spec.duration ?? DEFAULT_DASHBOARD_DURATION;\n const dashboardRefreshInterval = spec.refreshInterval ?? DEFAULT_REFRESH_INTERVAL;\n const initialTimeRange = useInitialTimeRange(dashboardDuration);\n const initialRefreshInterval = useInitialRefreshInterval(dashboardRefreshInterval);\n const { data } = usePluginBuiltinVariableDefinitions();\n\n const builtinVariables = useMemo(() => {\n const result = [\n {\n kind: 'BuiltinVariable',\n spec: {\n name: '__dashboard',\n value: () => dashboardResource.metadata.name,\n source: 'Dashboard',\n display: {\n name: '__dashboard',\n description: 'The name of the current dashboard',\n hidden: true,\n },\n },\n } as BuiltinVariableDefinition,\n {\n kind: 'BuiltinVariable',\n spec: {\n name: '__project',\n value: () => dashboardResource.metadata.project,\n source: 'Dashboard',\n display: {\n name: '__project',\n description: 'The name of the current dashboard project',\n hidden: true,\n },\n },\n } as BuiltinVariableDefinition,\n ];\n if (data) {\n data.forEach((def: BuiltinVariableDefinition) => result.push(def));\n }\n return result;\n }, [dashboardResource.metadata.name, dashboardResource.metadata.project, data]);\n\n return (\n <DatasourceStoreProvider dashboardResource={dashboardResource} datasourceApi={datasourceApi}>\n <DashboardProviderWithQueryParams\n initialState={{\n isEditMode: !!isEditing,\n dashboardResource,\n }}\n >\n <TimeRangeProviderWithQueryParams\n initialTimeRange={initialTimeRange}\n initialRefreshInterval={initialRefreshInterval}\n >\n <VariableProviderWithQueryParams\n initialVariableDefinitions={spec.variables}\n externalVariableDefinitions={externalVariableDefinitions}\n builtinVariableDefinitions={builtinVariables}\n >\n <AnnotationProvider initialAnnotationSpecs={spec.annotations ?? []}>\n <Box\n sx={combineSx(\n {\n display: 'flex',\n width: '100%',\n height: '100%',\n position: 'relative',\n overflow: 'hidden',\n },\n sx\n )}\n {...others}\n >\n <ErrorBoundary FallbackComponent={ErrorAlert}>\n <DashboardApp\n dashboardResource={dashboardResource}\n emptyDashboardProps={emptyDashboardProps}\n isReadonly={isReadonly}\n isVariableEnabled={isVariableEnabled}\n isAnnotationEnabled={isAnnotationEnabled}\n isDatasourceEnabled={isDatasourceEnabled}\n disableShortcuts={disableShortcuts}\n isCreating={isCreating}\n isInitialVariableSticky={isInitialVariableSticky}\n isLeavingConfirmDialogEnabled={isLeavingConfirmDialogEnabled}\n dashboardTitleComponent={dashboardTitleComponent}\n onSave={onSave}\n onDiscard={onDiscard}\n />\n </ErrorBoundary>\n </Box>\n </AnnotationProvider>\n </VariableProviderWithQueryParams>\n </TimeRangeProviderWithQueryParams>\n </DashboardProviderWithQueryParams>\n </DatasourceStoreProvider>\n );\n}\n"],"names":["Box","ErrorBoundary","ErrorAlert","combineSx","TimeRangeProviderWithQueryParams","useInitialRefreshInterval","useInitialTimeRange","usePluginBuiltinVariableDefinitions","useMemo","DEFAULT_DASHBOARD_DURATION","DEFAULT_REFRESH_INTERVAL","DatasourceStoreProvider","VariableProviderWithQueryParams","AnnotationProvider","DashboardProviderWithQueryParams","DashboardApp","ViewDashboard","props","dashboardResource","datasourceApi","externalVariableDefinitions","emptyDashboardProps","isReadonly","isVariableEnabled","isAnnotationEnabled","isDatasourceEnabled","disableShortcuts","isEditing","isCreating","isInitialVariableSticky","isLeavingConfirmDialogEnabled","dashboardTitleComponent","onSave","onDiscard","sx","others","spec","dashboardDuration","duration","dashboardRefreshInterval","refreshInterval","initialTimeRange","initialRefreshInterval","data","builtinVariables","result","kind","name","value","metadata","source","display","description","hidden","project","forEach","def","push","initialState","isEditMode","initialVariableDefinitions","variables","builtinVariableDefinitions","initialAnnotationSpecs","annotations","width","height","position","overflow","FallbackComponent"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@perses-dev/dashboards",
3
- "version": "0.54.0-beta.5",
3
+ "version": "0.54.0-beta.7",
4
4
  "description": "The dashboards feature in Perses",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://github.com/perses/perses/blob/main/README.md",
@@ -29,9 +29,10 @@
29
29
  "lint:fix": "eslint --fix src --ext .ts,.tsx"
30
30
  },
31
31
  "dependencies": {
32
- "@perses-dev/components": "0.54.0-beta.5",
33
- "@perses-dev/plugin-system": "0.54.0-beta.5",
34
- "@perses-dev/spec": "0.2.0-beta.2",
32
+ "@perses-dev/components": "0.54.0-beta.7",
33
+ "@perses-dev/plugin-system": "0.54.0-beta.7",
34
+ "@perses-dev/spec": "0.2.0-beta.3",
35
+ "@perses-dev/client": "0.54.0-beta.7",
35
36
  "@tanstack/hotkeys": "^0.8.0",
36
37
  "@tanstack/react-hotkeys": "^0.9.1",
37
38
  "immer": "^10.1.1",
@@ -1,9 +0,0 @@
1
- import { ProjectMetadata } from '@perses-dev/client';
2
- import { DashboardSpec } from '@perses-dev/spec';
3
- export type DashboardKind = 'Dashboard' | 'EphemeralDashboard';
4
- export interface DashboardResource {
5
- kind: DashboardKind;
6
- spec: DashboardSpec;
7
- metadata: ProjectMetadata;
8
- }
9
- //# sourceMappingURL=DashboardResource.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DashboardResource.d.ts","sourceRoot":"","sources":["../../src/model/DashboardResource.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,oBAAoB,CAAC;AAE/D,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE,aAAa,CAAC;IACpB,QAAQ,EAAE,eAAe,CAAC;CAC3B"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/model/DashboardResource.ts"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { ProjectMetadata } from '@perses-dev/client';\nimport { DashboardSpec } from '@perses-dev/spec';\n\nexport type DashboardKind = 'Dashboard' | 'EphemeralDashboard';\n\nexport interface DashboardResource {\n kind: DashboardKind;\n spec: DashboardSpec;\n metadata: ProjectMetadata;\n}\n"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAOjC,WAIC"}