diff --git a/CHANGELOG.md b/CHANGELOG.md
index ea37d35f..436f9c1a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added
- Column totals for Grouped rows will now be shown inside the groups instead of on a seperate row ([#583][#583]).
+- Table actions: Copy to clipboard and Export to CSV directly from the button above the Analysis and Database table ([#589]).
### Changed
@@ -384,6 +385,7 @@ Skipped due to adopting odd numbering for pre releases and even number for relea
[#582]: https://github.com/certinia/debug-log-analyzer/issues/582
[#588]: https://github.com/certinia/debug-log-analyzer/issues/588
[#583]: https://github.com/certinia/debug-log-analyzer/issues/583
+[#589]: https://github.com/certinia/debug-log-analyzer/issues/589
diff --git a/README.md b/README.md
index ab53ab08..515f27b6 100644
--- a/README.md
+++ b/README.md
@@ -7,6 +7,8 @@
Apex Log Analyzer makes performance analysis of Salesforce debug logs much easier and quicker. Visualize code execution via a Flame chart and Call Tree, identify and resolve performance and SOQL/DML problems via Method and Database Analysis.
+Visualize code execution via a Flame chart and identify performance and SOQL/DML problems via Method and Database analysis
+

## WARNING
@@ -163,8 +165,8 @@ The rows can be grouped by Type or Namespace
#### Export to CSV + copy to clipboard
-Click the header menu,`⋮`, and use `Export to CSV` to save the table content to a file.
-Focus the Analysis table and use `CMD / CTRL + c` to copy the table content to clipboard. This can then be pasted into a spreadsheet or other file.
+Use `Export to CSV` above the table to save the table content to a file or `Copy to Clipboard`.
+You can also focus the Analysis table and use `CMD / CTRL + c` to copy the table content to clipboard. This can then be pasted into a spreadsheet or other file.
### Database
@@ -202,8 +204,8 @@ For SOQL rows, to the right of the Call Stack is SOQL Analysis which shows infor
#### Export to CSV + copy to clipboard
-Click the header menu,`⋮`, and use `Export to CSV` to save the table content to a file.
-Focus the Analysis table and use `CMD / CTRL + c` to copy the table content to clipboard. This can then be pasted into a spreadsheet or other file.
+Use `Export to CSV` above the table to save the table content to a file or `Copy to Clipboard`.
+You can also focus the DML/ SOQL tables and use `CMD / CTRL + c` to copy the table content to clipboard. This can then be pasted into a spreadsheet or other file.
### Find
diff --git a/lana-docs-site/docs/docs/features.md b/lana-docs-site/docs/docs/features.md
index 4383fdd5..3c886ed2 100644
--- a/lana-docs-site/docs/docs/features.md
+++ b/lana-docs-site/docs/docs/features.md
@@ -91,8 +91,8 @@ The rows can be grouped by Type or Namespace
### Export to CSV + copy to clipboard
-Click the header menu,`⋮`, and use `Export to CSV` to save the table content to a file.
-Focus the Analysis table and use `CMD / CTRL + c` to copy the table content to clipboard. This can then be pasted into a spreadsheet or other file.
+Use `Export to CSV` above the table to save the table content to a file or `Copy to Clipboard`.
+You can also focus the Analysis tables and use `CMD / CTRL + c` to copy the table content to clipboard. This can then be pasted into a spreadsheet or other file.
## 💾 Database
@@ -130,8 +130,8 @@ For SOQL rows, to the right of the Call Stack is SOQL Analysis which shows infor
### Export to CSV + copy to clipboard
-Click the header menu,`⋮`, and use `Export to CSV` to save the table content to a file.
-Focus the Analysis table and use `CMD / CTRL + c` to copy the table content to clipboard. This can then be pasted into a spreadsheet or other file.
+Use `Export to CSV` above the table to save the table content to a file or `Copy to Clipboard`.
+You can also focus the DML/ SOQL tables and use `CMD / CTRL + c` to copy the table content to clipboard. This can then be pasted into a spreadsheet or other file.
## 🔍 Find
diff --git a/log-viewer/modules/components/analysis-view/AnalysisView.ts b/log-viewer/modules/components/analysis-view/AnalysisView.ts
index 019fa6ea..343cb693 100644
--- a/log-viewer/modules/components/analysis-view/AnalysisView.ts
+++ b/log-viewer/modules/components/analysis-view/AnalysisView.ts
@@ -3,39 +3,47 @@
*/
import {
provideVSCodeDesignSystem,
+ vsCodeButton,
vsCodeCheckbox,
vsCodeDropdown,
vsCodeOption,
} from '@vscode/webview-ui-toolkit';
import { LitElement, css, html, unsafeCSS, type PropertyValues } from 'lit';
import { customElement, property } from 'lit/decorators.js';
-import { Tabulator, type ColumnComponent, type RowComponent } from 'tabulator-tables';
-import * as CommonModules from '../../datagrid/module/CommonModules.js';
-
-import NumberAccessor from '../../datagrid/dataaccessor/Number.js';
-import { progressFormatter } from '../../datagrid/format/Progress.js';
-import { RowKeyboardNavigation } from '../../datagrid/module/RowKeyboardNavigation.js';
-import dataGridStyles from '../../datagrid/style/DataGrid.scss';
import { ApexLog, LogLine } from '../../parsers/ApexLogParser.js';
import { vscodeMessenger } from '../../services/VSCodeExtensionMessenger.js';
import { globalStyles } from '../../styles/global.styles.js';
-import { isVisible } from '../../Util.js';
+// Tabulator custom modules, imports + styles
+import { Tabulator, type RowComponent } from 'tabulator-tables';
+import { isVisible } from '../../Util.js';
+import NumberAccessor from '../../datagrid/dataaccessor/Number.js';
+import { progressFormatter } from '../../datagrid/format/Progress.js';
+import { GroupCalcs } from '../../datagrid/group-calcs/GroupCalcs.js';
+import * as CommonModules from '../../datagrid/module/CommonModules.js';
+import { RowKeyboardNavigation } from '../../datagrid/module/RowKeyboardNavigation.js';
import { RowNavigation } from '../../datagrid/module/RowNavigation.js';
+import dataGridStyles from '../../datagrid/style/DataGrid.scss';
+import codiconStyles from '../../styles/codicon.css';
import { Find, formatter } from '../calltree-view/module/Find.js';
import { callStackSum } from './column-calcs/CallStackSum.js';
-import { GroupCalcs } from '../../datagrid/group-calcs/GroupCalcs.js';
-
// Components
+import '../datagrid/datagrid-filter-bar.js';
import '../skeleton/GridSkeleton.js';
-provideVSCodeDesignSystem().register(vsCodeCheckbox(), vsCodeDropdown(), vsCodeOption());
+provideVSCodeDesignSystem().register(
+ vsCodeButton(),
+ vsCodeCheckbox(),
+ vsCodeDropdown(),
+ vsCodeOption(),
+);
@customElement('analysis-view')
export class AnalysisView extends LitElement {
static styles = [
unsafeCSS(dataGridStyles),
+ unsafeCSS(codiconStyles),
globalStyles,
css`
:host {
@@ -58,15 +66,15 @@ export class AnalysisView extends LitElement {
flex-flow: column nowrap;
align-items: flex-start;
justify-content: flex-start;
- }
- .dropdown-container label {
- display: block;
- color: var(--vscode-foreground);
- cursor: pointer;
- font-size: var(--vscode-font-size);
- line-height: normal;
- margin-bottom: 2px;
+ label {
+ display: block;
+ color: var(--vscode-foreground);
+ cursor: pointer;
+ font-size: var(--vscode-font-size);
+ line-height: normal;
+ margin-bottom: 2px;
+ }
}
`,
];
@@ -106,16 +114,36 @@ export class AnalysisView extends LitElement {
const skeleton = !this.timelineRoot ? html`