diff --git a/parseable-backstage-plugin/packages/app/src/components/Root/Root.tsx b/parseable-backstage-plugin/packages/app/src/components/Root/Root.tsx index 0fed94c..822842e 100644 --- a/parseable-backstage-plugin/packages/app/src/components/Root/Root.tsx +++ b/parseable-backstage-plugin/packages/app/src/components/Root/Root.tsx @@ -75,7 +75,7 @@ export const Root = ({ children }: PropsWithChildren<{}>) => ( /> - + {/* End global nav */} diff --git a/parseable-backstage-plugin/plugins/parseable-logstream/CHANGELOG.md b/parseable-backstage-plugin/plugins/parseable-logstream/CHANGELOG.md new file mode 100644 index 0000000..6e0d74b --- /dev/null +++ b/parseable-backstage-plugin/plugins/parseable-logstream/CHANGELOG.md @@ -0,0 +1,26 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +## [0.2.0] - 2025-07-14 + +### Changed +- Updated UI to use "Parseable Dataset" terminology for better clarity +- Fixed Material Table rendering issue with "Cannot use 'in' operator" error +- Updated documentation and references throughout the codebase +- Removed time range controls from the UI for simplicity +- Added proper handling of log data for table rendering + +### Fixed +- Fixed module import/export paths (removed .ts/.tsx extensions) +- Fixed component name consistency across the plugin +- Resolved runtime errors in the table component + +## [0.1.0] - Initial Release + +### Added +- Initial implementation of the Parseable plugin for Backstage +- Support for viewing log streams from Parseable +- Dataset selection functionality +- Search capabilities +- Live tail support diff --git a/parseable-backstage-plugin/plugins/parseable-logstream/README.md b/parseable-backstage-plugin/plugins/parseable-logstream/README.md index df7cb3f..a7db41c 100644 --- a/parseable-backstage-plugin/plugins/parseable-logstream/README.md +++ b/parseable-backstage-plugin/plugins/parseable-logstream/README.md @@ -1,10 +1,10 @@ -# Parseable Logstream Plugin for Backstage +# Parseable Dataset Plugin for Backstage -This plugin allows engineers to pull their own Parseable log-streams directly onto an entity page in Backstage. +This plugin allows engineers to pull their own Parseable datasets directly onto an entity page in Backstage. ## Features -- View log streams from Parseable directly in Backstage +- View datasets from Parseable directly in Backstage - Select from available datasets the user has access to - Live tail support with pause/resume functionality - Copy log entries to clipboard @@ -75,7 +75,7 @@ const serviceEntityPage = ( ### Entity Annotation -To enable the Parseable logstream for an entity, add the following annotation to your `catalog-info.yaml`: +To enable the Parseable dataset for an entity, add the following annotation to your `catalog-info.yaml`: ```yaml apiVersion: backstage.io/v1alpha1 diff --git a/parseable-backstage-plugin/plugins/parseable-logstream/package.json b/parseable-backstage-plugin/plugins/parseable-logstream/package.json index d1664a3..9085ae4 100644 --- a/parseable-backstage-plugin/plugins/parseable-logstream/package.json +++ b/parseable-backstage-plugin/plugins/parseable-logstream/package.json @@ -1,6 +1,6 @@ { "name": "@parseable/backstage-plugin-logstream", - "version": "0.1.0", + "version": "0.2.0", "description": "Backstage plugin for integrating with Parseable log streams", "keywords": ["backstage", "plugin", "parseable", "logs", "monitoring"], "author": "Parseable", diff --git a/parseable-backstage-plugin/plugins/parseable-logstream/src/components/ParseableLogstreamPage.tsx b/parseable-backstage-plugin/plugins/parseable-logstream/src/components/ParseableLogstreamPage.tsx index 6013a8a..4de848a 100644 --- a/parseable-backstage-plugin/plugins/parseable-logstream/src/components/ParseableLogstreamPage.tsx +++ b/parseable-backstage-plugin/plugins/parseable-logstream/src/components/ParseableLogstreamPage.tsx @@ -386,7 +386,12 @@ export const ParseableLogstreamPage = () => { // Safely prepare log data for rendering to avoid 'in' operator errors const prepareLogsForRendering = (logs: LogEntry[]): Record[] => { return logs.map(log => { - const preparedLog: Record = {}; + // Create a new object with safe values for the table + const preparedLog: Record = { + // Add a special property that Material Table needs for the 'in' operator + original: {} + }; + Object.entries(log).forEach(([key, value]) => { // Ensure all values are strings or primitives, not complex objects if (value === null || value === undefined) { @@ -396,15 +401,21 @@ export const ParseableLogstreamPage = () => { } else { preparedLog[key] = String(value); } + + // Also store the original value in the 'original' property + preparedLog.original[key] = value; }); + // Add levelColor separately since it's used for styling if (log.levelColor) { preparedLog.levelColor = log.levelColor; + preparedLog.original.levelColor = log.levelColor; } + return preparedLog; }); }; - + // Format body column content for better readability const formatBodyContent = (value: any): string => { if (!value) return ''; @@ -449,7 +460,7 @@ export const ParseableLogstreamPage = () => { if (error) { return ( - + @@ -462,7 +473,7 @@ export const ParseableLogstreamPage = () => { if (datasets.length === 0) { return ( - + { return ( - + - View your Parseable log streams with advanced search capabilities. + View your Parseable datasets with advanced search capabilities. - + {!entityContext.available && (
@@ -523,7 +534,7 @@ export const ParseableLogstreamPage = () => { -
+ {/*
{ disabled={isLiveTail} size="small" /> -
+
*/}