diff --git a/e2e-tests/cypress/e2e/browse-data.cy.js b/e2e-tests/cypress/e2e/browse-data.cy.js
index d1bf1a492..f269f306d 100644
--- a/e2e-tests/cypress/e2e/browse-data.cy.js
+++ b/e2e-tests/cypress/e2e/browse-data.cy.js
@@ -28,7 +28,7 @@ describe('Data browser data', () => {
cy.contains('Finished job script');
});
- it('Data archive editor', () => {
+ it('Data archive editor - macros', () => {
cy.testid('WidgetIconPanel_archive').click();
cy.contains('Album').click();
cy.testid('DataGrid_itemFilters').click();
@@ -113,4 +113,48 @@ describe('Data browser data', () => {
cy.contains('Check all').click();
cy.screenshot('sqlgen');
});
+
+ it('Macros in DB', () => {
+ cy.contains('MySql-connection').click();
+ cy.contains('MyChinook').click();
+ cy.contains('Customer').click();
+ cy.contains('Leonie').click();
+ cy.contains('Ramos').click({ shiftKey: true });
+ cy.testid('DataGrid_itemColumns').click();
+ cy.testid('DataGrid_itemFilters').click();
+ cy.testid('DataGrid_itemReferences').click();
+ cy.testid('DataGrid_itemMacros').click();
+ cy.contains('Change text case').click();
+ cy.contains('NIELSEN');
+ cy.screenshot('macros');
+ });
+
+ it('Perspectives', () => {
+ cy.contains('MySql-connection').click();
+ cy.contains('MyChinook').click();
+ cy.contains('Artist').rightclick();
+ cy.contains('Design perspective query').click();
+
+ cy.testid('PerspectiveNodeRow_check_Artist_Album').click();
+ cy.testid('PerspectiveNodeRow_expand_Artist_Album').click();
+ cy.testid('PerspectiveNodeRow_check_Artist_Album_Track').click();
+
+ // check track is loaded
+ cy.contains('Put The Finger On You');
+
+ cy.screenshot('perspective1');
+ });
+
+ it.only('Query editor', () => {
+ cy.contains('MySql-connection').click();
+ cy.contains('MyChinook').click();
+ cy.contains('Customer').rightclick();
+ cy.contains('SQL template').click();
+ cy.contains('CREATE TABLE').click();
+ cy.get('body').realPress('PageDown');
+ cy.get('body').realType('select * from Album where Album.');
+ // code completion
+ cy.contains('ArtistId');
+ cy.screenshot('query');
+ });
});
diff --git a/packages/datalib/src/PerspectiveTreeNode.ts b/packages/datalib/src/PerspectiveTreeNode.ts
index 6719c1543..054192d49 100644
--- a/packages/datalib/src/PerspectiveTreeNode.ts
+++ b/packages/datalib/src/PerspectiveTreeNode.ts
@@ -221,6 +221,11 @@ export abstract class PerspectiveTreeNode {
return false;
}
+ get pathIdentifier() {
+ if (this.parentNode) return `${this.parentNode.pathIdentifier}_${this.codeName}`;
+ return this.codeName;
+ }
+
hasDesignerIdInIncestors(designerId: string): boolean {
if (designerId == this.designerId) return true;
return this.parentNode?.hasDesignerIdInIncestors(designerId) || false;
diff --git a/packages/web/src/icons/FontIcon.svelte b/packages/web/src/icons/FontIcon.svelte
index c2875cca8..95feb253f 100644
--- a/packages/web/src/icons/FontIcon.svelte
+++ b/packages/web/src/icons/FontIcon.svelte
@@ -301,7 +301,15 @@
};
-
+