diff --git a/.gitignore b/.gitignore index 72b6d40b..0362f23d 100644 --- a/.gitignore +++ b/.gitignore @@ -16,6 +16,7 @@ __pycache__/ *.pyc *.swp *.lock +/dist/ # due to using tox and pytest .tox .cache diff --git a/cypress.config.ts b/cypress.config.ts new file mode 100644 index 00000000..17161e32 --- /dev/null +++ b/cypress.config.ts @@ -0,0 +1,9 @@ +import { defineConfig } from "cypress"; + +export default defineConfig({ + e2e: { + setupNodeEvents(on, config) { + // implement node event listeners here + }, + }, +}); diff --git a/cypress/fixtures/example.json b/cypress/fixtures/example.json new file mode 100644 index 00000000..02e42543 --- /dev/null +++ b/cypress/fixtures/example.json @@ -0,0 +1,5 @@ +{ + "name": "Using fixtures to represent data", + "email": "hello@cypress.io", + "body": "Fixtures are a great way to mock data for responses to routes" +} diff --git a/cypress/support/commands.js b/cypress/support/commands.js new file mode 100644 index 00000000..698b01a4 --- /dev/null +++ b/cypress/support/commands.js @@ -0,0 +1,37 @@ +/// +// *********************************************** +// This example commands.ts shows you how to +// create various custom commands and overwrite +// existing commands. +// +// For more comprehensive examples of custom +// commands please read more here: +// https://on.cypress.io/custom-commands +// *********************************************** +// +// +// -- This is a parent command -- +// Cypress.Commands.add('login', (email, password) => { ... }) +// +// +// -- This is a child command -- +// Cypress.Commands.add('drag', { prevSubject: 'element'}, (subject, options) => { ... }) +// +// +// -- This is a dual command -- +// Cypress.Commands.add('dismiss', { prevSubject: 'optional'}, (subject, options) => { ... }) +// +// +// -- This will overwrite an existing command -- +// Cypress.Commands.overwrite('visit', (originalFn, url, options) => { ... }) +// +// declare global { +// namespace Cypress { +// interface Chainable { +// login(email: string, password: string): Chainable +// drag(subject: string, options?: Partial): Chainable +// dismiss(subject: string, options?: Partial): Chainable +// visit(originalFn: CommandOriginalFn, url: string, options: Partial): Chainable +// } +// } +// } \ No newline at end of file diff --git a/cypress/support/e2e.js b/cypress/support/e2e.js new file mode 100644 index 00000000..f80f74f8 --- /dev/null +++ b/cypress/support/e2e.js @@ -0,0 +1,20 @@ +// *********************************************************** +// This example support/e2e.ts is processed and +// loaded automatically before your test files. +// +// This is a great place to put global configuration and +// behavior that modifies Cypress. +// +// You can change the location of this file or turn off +// automatically serving support files with the +// 'supportFile' configuration option. +// +// You can read more here: +// https://on.cypress.io/configuration +// *********************************************************** + +// Import commands.js using ES2015 syntax: +import './commands' + +// Alternatively you can use CommonJS syntax: +// require('./commands') \ No newline at end of file diff --git a/dist/menu/DatasetCard.d.ts b/dist/menu/DatasetCard.d.ts index 836b542b..2587b238 100644 --- a/dist/menu/DatasetCard.d.ts +++ b/dist/menu/DatasetCard.d.ts @@ -1,3 +1,4 @@ +/// import { IPublicDbStartMenuDatasetSectionDesc } from '../base/extensions'; export default function DatasetCard({ name, icon, tabs, startViewId, dataSource, cssClass, tokenSeparators }: IPublicDbStartMenuDatasetSectionDesc): JSX.Element; //# sourceMappingURL=DatasetCard.d.ts.map \ No newline at end of file diff --git a/dist/menu/DatasetCard.d.ts.map b/dist/menu/DatasetCard.d.ts.map index ca009ec8..1a52e87c 100644 --- a/dist/menu/DatasetCard.d.ts.map +++ b/dist/menu/DatasetCard.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"DatasetCard.d.ts","sourceRoot":"","sources":["../../src/menu/DatasetCard.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,oCAAoC,EAAE,MAAM,oBAAoB,CAAC;AAI1E,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAE,EAAE,oCAAoC,eA+MjJ"} \ No newline at end of file +{"version":3,"file":"DatasetCard.d.ts","sourceRoot":"","sources":["../../src/menu/DatasetCard.tsx"],"names":[],"mappings":";AAKA,OAAO,EAAE,oCAAoC,EAAE,MAAM,oBAAoB,CAAC;AAI1E,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAE,EAAE,oCAAoC,eA+MjJ"} \ No newline at end of file diff --git a/dist/phovea.d.ts.map b/dist/phovea.d.ts.map index 22b3916f..af44ac3c 100644 --- a/dist/phovea.d.ts.map +++ b/dist/phovea.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"phovea.d.ts","sourceRoot":"","sources":["../src/phovea.ts"],"names":[],"mappings":"AAYA,MAAM,CAAC,OAAO,WAAW,QAAQ,KAAA,QAwuChC"} \ No newline at end of file +{"version":3,"file":"phovea.d.ts","sourceRoot":"","sources":["../src/phovea.ts"],"names":[],"mappings":"AAYA,MAAM,CAAC,OAAO,WAAW,QAAQ,KAAA,QAqzChC"} \ No newline at end of file diff --git a/dist/phovea.js b/dist/phovea.js index 6a4656cc..bd78f5a5 100644 --- a/dist/phovea.js +++ b/dist/phovea.js @@ -701,7 +701,7 @@ export default function (registry) { name: 'Ordino Welcome Tour', description: 'Learn the basic features of Ordino in a short welcome tour.', preview() { - return import('./assets/previews/expression.jpg'); // TODO update preview image + return import('./assets/previews/tourOrdinoWelcome.png'); }, multiPage: true, level: 'beginner', @@ -714,7 +714,7 @@ export default function (registry) { name: 'Overview of Start Menu', description: 'This tour provides an overview of the Ordino start menu.', preview() { - return import('./assets/previews/expression.jpg'); // TODO update preview image + return import('./assets/previews/tourStartMenu.png'); }, multiPage: true, level: 'beginner', @@ -727,7 +727,59 @@ export default function (registry) { name: 'Adding Data Columns', description: 'Learn how to add data columns to rankings in Ordino.', preview() { - return import('./assets/previews/expression.jpg'); // TODO update preview image + return import('./assets/previews/tourAddColumn.png'); + }, + multiPage: true, + level: 'beginner', + canJumpAround: false, + }); + registry.push('tdpTour', 'ordinoAssessBCCellLinesTour', function () { + return import('./tours').then((t) => t.AssessBCCellLinesTour); + }, { + factory: 'createTour', + name: 'Assessment of Breast Cancer Cell Lines', + description: 'This case study summarizes an analysis session carried out by a scientist working in a drug discovery team at a pharmaceutical company.', + preview() { + return import('./assets/previews/tourBreastCancerCL.png'); + }, + multiPage: true, + level: 'beginner', + canJumpAround: false, + }); + registry.push('tdpTour', 'ordinoPredictionTP53Tour', function () { + return import('./tours').then((t) => t.PredictionTP53Tour); + }, { + factory: 'createTour', + name: 'Prediction of TP53 Mutation Status', + description: 'This case study summarizes another analysis session, this time involving the prediction of the mutation status for TP53.', + preview() { + return import('./assets/previews/tourTP53Predictor.png'); + }, + multiPage: true, + level: 'beginner', + canJumpAround: false, + }); + registry.push('tdpTour', 'ordinoPredictionTP53Tour2', function () { + return import('./tours').then((t) => t.PredictionTP53Tour2); + }, { + factory: 'createTour', + name: 'Prediction of TP53 Mutation Status: Continued', + description: 'This case study serves as a continuation of the initial tour "Prediction of TP53 Mutation Status".', + preview() { + return import('./assets/previews/tourTP53Predictor.png'); + }, + multiPage: true, + level: 'beginner', + canJumpAround: false, + }); + registry.push('tdpTour', 'ordinoDrugTargetDiscoveryTour', function () { + return import('./tours').then((t) => t.DrugTargetDiscoveryTour); + }, { + factory: 'createTour', + name: 'Drug Target Discovery', + description: 'A demonstration of Taggle (integrated into the Ordino Target Discovery Platform) by means of a case study conducted on complex genomics data for the purpose of drug target discovery.', + preview() { + return import('./assets/previews/tourDrugDiscovery.png'); }, multiPage: true, level: 'beginner', diff --git a/dist/phovea.js.map b/dist/phovea.js.map index 5ca23226..b9c4c5d0 100644 --- a/dist/phovea.js.map +++ b/dist/phovea.js.map @@ -1 +1 @@ -{"version":3,"file":"phovea.js","sourceRoot":"","sources":["../src/phovea.ts"],"names":[],"mappings":"AAAA;;;;gFAIgF;AAEhF,OAAO,EAAE,mCAAmC,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAiB,cAAc,EAAE,MAAM,YAAY,CAAC;AAClF,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAGzD,sEAAsE;AACtE,MAAM,CAAC,OAAO,WAAW,QAAQ;IAC/B,8GAA8G;IAC9G,yBAAyB;IAEzB,yBAAyB;IACzB,QAAQ,CAAC,IAAI,CAAC,mCAAmC,EAAE,2BAA2B,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,uBAAuB,CAAC,EAEpH;QACC,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,kBAAkB;QAC5B,WAAW,EAAE,qBAAqB;QAClC,MAAM,EAAE,UAAU;QAClB,UAAU,EAAE,QAAQ;QACpB,eAAe,EAAE,aAAa;QAC9B,WAAW,EAAE,kBAAkB;QAC/B,IAAI,EAAE;YACJ,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE;YACnD,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,sBAAsB,EAAE;SAC7D;KACF,CAAC,CAAC;IAEH,QAAQ,CAAC,IAAI,CAAC,mCAAmC,EAAE,wBAAwB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,uBAAuB,CAAC,EAEjH;QACC,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,gBAAgB;QAC1B,WAAW,EAAE,wBAAwB;QACrC,MAAM,EAAE,QAAQ;QAChB,UAAU,EAAE,MAAM;QAClB,eAAe,EAAE,aAAa;QAC9B,WAAW,EAAE,eAAe;QAC5B,IAAI,EAAE;YACJ,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE;YACnD,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,sBAAsB,EAAE;SAC7D;KACF,CAAC,CAAC;IAEH,QAAQ,CAAC,IAAI,CAAC,mCAAmC,EAAE,wBAAwB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,uBAAuB,CAAC,EAEjH;QACC,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,eAAe;QACzB,WAAW,EAAE,kBAAkB;QAC/B,MAAM,EAAE,SAAS;QACjB,UAAU,EAAE,IAAI;QAChB,eAAe,EAAE,WAAW;QAC5B,WAAW,EAAE,WAAW;QACxB,IAAI,EAAE;YACJ,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE;YACnD,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,sBAAsB,EAAE;SAC7D;KACF,CAAC,CAAC;IACH,UAAU;IAEV,aAAa;IACb,QAAQ,CAAC,IAAI,CACX,SAAS,EACT,kBAAkB,EAClB;QACE,OAAO,MAAM,CAAC,qBAAqB,CAAC,CAAC;IACvC,CAAC,EACD;QACE,OAAO,EAAE,cAAc;QACvB,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,MAAM;KAClB,CACF,CAAC;IAEF,QAAQ,CAAC,IAAI,CACX,SAAS,EACT,iBAAiB,EACjB;QACE,OAAO,MAAM,CAAC,iCAAiC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;IACvF,CAAC,EACD;QACE,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,sCAAsC;QAC/C,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,MAAM;QACjB,OAAO;YACL,OAAO,MAAM,CAAC,kCAAkC,CAAC,CAAC;QACpD,CAAC;QACD,KAAK,EAAE;YACL,IAAI,EAAE,iBAAiB;YACvB,KAAK,EAAE,EAAE;SACV;QACD,WAAW,EAAE,wCAAwC;QACrD,MAAM,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,CAAC;KACrD,CACF,CAAC;IAEF,QAAQ,CAAC,IAAI,CACX,SAAS,EACT,iBAAiB,EACjB;QACE,OAAO,MAAM,CAAC,iCAAiC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;IACvF,CAAC,EACD;QACE,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,sCAAsC;QAC/C,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,MAAM;QACjB,OAAO;YACL,OAAO,MAAM,CAAC,mCAAmC,CAAC,CAAC;QACrD,CAAC;QACD,KAAK,EAAE;YACL,IAAI,EAAE,iBAAiB;YACvB,KAAK,EAAE,CAAC;SACT;QACD,WAAW,EAAE,yCAAyC;QACtD,MAAM,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,CAAC;KACtD,CACF,CAAC;IAEF,QAAQ,CAAC,IAAI,CACX,SAAS,EACT,eAAe,EACf;QACE,OAAO,MAAM,CAAC,iCAAiC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;IACvF,CAAC,EACD;QACE,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,oCAAoC;QAC7C,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,MAAM;QACjB,OAAO;YACL,OAAO,MAAM,CAAC,gCAAgC,CAAC,CAAC;QAClD,CAAC;QACD,KAAK,EAAE;YACL,IAAI,EAAE,iBAAiB;YACvB,KAAK,EAAE,EAAE;SACV;QACD,WAAW,EAAE,sCAAsC;QACnD,MAAM,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC;KACnD,CACF,CAAC;IAEF,QAAQ,CAAC,IAAI,CACX,SAAS,EACT,0BAA0B,EAC1B;QACE,OAAO,MAAM,CAAC,sBAAsB,CAAC,CAAC;IACxC,CAAC,EACD;QACE,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,mBAAmB;QAC5B,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,UAAU;QACrB,OAAO;YACL,OAAO,MAAM,CAAC,qCAAqC,CAAC,CAAC;QACvD,CAAC;QACD,KAAK,EAAE;YACL,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,CAAC;SACT;QACD,WAAW,EAAE,gEAAgE;QAC7E,MAAM,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC;KAChC,CACF,CAAC;IAEF,QAAQ,CAAC,IAAI,CACX,gBAAgB,EAChB,mBAAmB,EACnB;QACE,OAAO,MAAM,CAAC,4BAA4B,CAAC,CAAC;IAC9C,CAAC,EACD;QACE,OAAO,EAAE,qBAAqB;QAC9B,IAAI,EAAE,eAAe;QACrB,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,UAAU;QACrB,WAAW,EAAE,gEAAgE;KAC9E,CACF,CAAC;IAEF,QAAQ,CAAC,IAAI,CACX,SAAS,EACT,uBAAuB,EACvB;QACE,OAAO,MAAM,CAAC,sBAAsB,CAAC,CAAC;IACxC,CAAC,EACD;QACE,OAAO,EAAE,eAAe;QACxB,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,MAAM;QACjB,OAAO;YACL,OAAO,MAAM,CAAC,kCAAkC,CAAC,CAAC;QACpD,CAAC;QACD,KAAK,EAAE;YACL,IAAI,EAAE,iBAAiB;YACvB,KAAK,EAAE,EAAE;SACV;QACD,WAAW,EAAE,iCAAiC;QAC9C,MAAM,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,CAAC;KAChF,CACF,CAAC;IAEF,QAAQ,CAAC,IAAI,CACX,SAAS,EACT,qCAAqC,EACrC;QACE,OAAO,MAAM,CAAC,mCAAmC,CAAC,CAAC;IACrD,CAAC,EACD;QACE,OAAO,EAAE,4BAA4B;QACrC,IAAI,EAAE,4BAA4B;QAClC,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,MAAM;QACjB,OAAO;YACL,OAAO,MAAM,CAAC,gDAAgD,CAAC,CAAC;QAClE,CAAC;QACD,KAAK,EAAE;YACL,IAAI,EAAE,eAAe;YACrB,KAAK,EAAE,EAAE;SACV;QACD,WAAW,EAAE,6FAA6F;QAC1G,MAAM,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,CAAC;KACpE,CACF,CAAC;IAEF,QAAQ,CAAC,IAAI,CACX,SAAS,EACT,0BAA0B,EAC1B;QACE,OAAO,MAAM,CAAC,yBAAyB,CAAC,CAAC;IAC3C,CAAC,EACD;QACE,OAAO,EAAE,kBAAkB;QAC3B,IAAI,EAAE,eAAe;QACrB,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,MAAM;QACjB,OAAO;YACL,OAAO,MAAM,CAAC,qCAAqC,CAAC,CAAC;QACvD,CAAC;QACD,KAAK,EAAE;YACL,IAAI,EAAE,eAAe;YACrB,KAAK,EAAE,CAAC;SACT;QACD,WAAW,EAAE,4FAA4F;QACzG,MAAM,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,CAAC;KACrD,CACF,CAAC;IAEF,QAAQ,CAAC,IAAI,CACX,SAAS,EACT,sBAAsB,EACtB;QACE,OAAO,MAAM,CAAC,yCAAyC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC;IACvG,CAAC,EACD;QACE,OAAO,EAAE,oCAAoC;QAC7C,IAAI,EAAE,eAAe;QACrB,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,MAAM;QACjB,OAAO;YACL,OAAO,MAAM,CAAC,qCAAqC,CAAC,CAAC;QACvD,CAAC;QACD,KAAK,EAAE;YACL,IAAI,EAAE,iBAAiB;YACvB,KAAK,EAAE,EAAE;SACV;QACD,MAAM,EAAE;YACN,OAAO,EAAE,OAAO;SACjB;QACD,WAAW,EAAE,kEAAkE;QAC/E,MAAM,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,CAAC;KAChF,CACF,CAAC;IAEF,2BAA2B;IAC3B,QAAQ,CAAC,IAAI,CACX,gBAAgB,EAChB,YAAY,EACZ;QACE,OAAO,MAAM,CAAC,mCAAmC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;IACvF,CAAC,EACD;QACE,OAAO,EAAE,OAAO;QAChB,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE,kBAAkB;QAC1B,OAAO,EAAE;YACP,UAAU,EAAE,YAAY;SACzB;KACF,CACF,CAAC;IAEF,4FAA4F;IAC5F,QAAQ,CAAC,IAAI,CACX,mCAAmC,EACnC,gBAAgB,EAChB;QACE,OAAO,MAAM,CAAC,iCAAiC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IACnF,CAAC,EACD;QACE,OAAO,EAAE,uBAAuB;QAChC,MAAM,EAAE,SAAS;KAClB,CACF,CAAC;IAEF,kFAAkF;IAClF,QAAQ,CAAC,IAAI,CACX,6BAA6B,EAC7B,UAAU,EACV;QACE,OAAO,MAAM,CAAC,iCAAiC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IACnF,CAAC,EACD;QACE,OAAO,EAAE,iBAAiB;QAC1B,MAAM,EAAE,SAAS;KAClB,CACF,CAAC;IACF,UAAU;IAEV,yBAAyB;IACzB,QAAQ,CAAC,IAAI,CACX,sBAAsB,EACtB,MAAM,EACN;QACE,OAAO,MAAM,CAAC,mCAAmC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;IACvF,CAAC,EACD;QACE,OAAO,EAAE,YAAY;QACrB,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,OAAO;KACd,CACF,CAAC;IACF,UAAU;IAEV,QAAQ,CAAC,IAAI,CACX,SAAS,EACT,qBAAqB,EACrB;QACE,OAAO,MAAM,CAAC,yBAAyB,CAAC,CAAC;IAC3C,CAAC,EACD;QACE,OAAO,EAAE,kBAAkB;QAC3B,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE,UAAU;QAClB,SAAS,EAAE,MAAM;QACjB,UAAU,EAAE,UAAU;KACvB,CACF,CAAC;IACF,QAAQ,CAAC,IAAI,CACX,SAAS,EACT,wBAAwB,EACxB;QACE,OAAO,MAAM,CAAC,uBAAuB,CAAC,CAAC;IACzC,CAAC,EACD;QACE,OAAO,EAAE,gBAAgB;QACzB,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,QAAQ;QAChB,SAAS,EAAE,MAAM;QACjB,UAAU,EAAE,QAAQ;KACrB,CACF,CAAC;IAEF,iBAAiB;IACjB,QAAQ,CAAC,IAAI,CACX,SAAS,EACT,QAAQ,EACR;QACE,OAAO,MAAM,CAAC,4BAA4B,CAAC,CAAC;IAC9C,CAAC,EACD;QACE,OAAO,EAAE,qBAAqB;QAC9B,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,gFAAgF;QACtF,QAAQ,EAAE,UAAU;QACpB,MAAM,EAAE,UAAU;QAClB,SAAS,EAAE,SAAS;QACpB,OAAO;YACL,OAAO,MAAM,CAAC,8BAA8B,CAAC,CAAC;QAChD,CAAC;QACD,KAAK,EAAE;YACL,IAAI,EAAE,oBAAoB;YAC1B,YAAY;SACb;QACD,MAAM,EAAE;YACN,OAAO,EAAE,OAAO;SACjB;QACD,WAAW,EAAE,6CAA6C;QAC1D,MAAM,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC;KACjC,CACF,CAAC;IAEF,4BAA4B;IAC5B,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,UAAU,MAAM;QAC7C,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC;QAE7D,QAAQ,CAAC,IAAI,CACX,SAAS,EACT,GAAG,KAAK,2BAA2B,EACnC;YACE,OAAO,MAAM,CAAC,+BAA+B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;QACnF,CAAC,EACD;YACE,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,oCAAoC;YAC7C,MAAM,EAAE,MAAM;YACd,UAAU,EAAE,MAAM;YAClB,SAAS,EAAE,MAAM;YACjB,OAAO;gBACL,OAAO,MAAM,CAAC,kCAAkC,CAAC,CAAC;YACpD,CAAC;YACD,KAAK,EAAE;gBACL,IAAI,EAAE,eAAe;gBACrB,KAAK,EAAE,EAAE;aACV;YACD,WAAW,EAAE,4CAA4C;YACzD,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,CAAC;SACtC,CACF,CAAC;QAEF,QAAQ,CAAC,IAAI,CACX,SAAS,EACT,GAAG,KAAK,2BAA2B,EACnC;YACE,OAAO,MAAM,CAAC,+BAA+B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;QACnF,CAAC,EACD;YACE,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,oCAAoC;YAC7C,MAAM,EAAE,MAAM;YACd,UAAU,EAAE,MAAM;YAClB,SAAS,EAAE,MAAM;YACjB,OAAO;gBACL,OAAO,MAAM,CAAC,mCAAmC,CAAC,CAAC;YACrD,CAAC;YACD,KAAK,EAAE;gBACL,IAAI,EAAE,eAAe;gBACrB,KAAK,EAAE,CAAC;aACT;YACD,WAAW,EAAE,yCAAyC;YACtD,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC;SACvC,CACF,CAAC;QAEF,QAAQ,CAAC,IAAI,CACX,SAAS,EACT,GAAG,KAAK,yBAAyB,EACjC;YACE,OAAO,MAAM,CAAC,+BAA+B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;QACnF,CAAC,EACD;YACE,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,kCAAkC;YAC3C,MAAM,EAAE,MAAM;YACd,UAAU,EAAE,MAAM;YAClB,SAAS,EAAE,MAAM;YACjB,OAAO;gBACL,OAAO,MAAM,CAAC,gCAAgC,CAAC,CAAC;YAClD,CAAC;YACD,KAAK,EAAE;gBACL,IAAI,EAAE,eAAe;gBACrB,KAAK,EAAE,EAAE;aACV;YACD,WAAW,EAAE,sCAAsC;YACnD,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC;SACpC,CACF,CAAC;QAEF,QAAQ,CAAC,IAAI,CACX,SAAS,EACT,GAAG,KAAK,kBAAkB,EAC1B;YACE,OAAO,MAAM,CAAC,uCAAuC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC;QACnG,CAAC,EACD;YACE,OAAO,EAAE,kCAAkC;YAC3C,IAAI,EAAE,eAAe;YACrB,MAAM,EAAE,MAAM;YACd,SAAS,EAAE,MAAM;YACjB,OAAO;gBACL,OAAO,MAAM,CAAC,qCAAqC,CAAC,CAAC;YACvD,CAAC;YACD,KAAK,EAAE;gBACL,IAAI,EAAE,eAAe;gBACrB,KAAK,EAAE,EAAE;aACV;YACD,MAAM,EAAE;gBACN,OAAO,EAAE,OAAO;aACjB;YACD,WAAW,EAAE,kEAAkE;YAC/E,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,CAAC;SACjE,CACF,CAAC;QAEF,QAAQ,CAAC,IAAI,CACX,SAAS,EACT,GAAG,KAAK,sBAAsB,EAC9B;YACE,OAAO,MAAM,CAAC,sBAAsB,CAAC,CAAC;QACxC,CAAC,EACD;YACE,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,OAAO,MAAM,WAAW;YACjC,MAAM,EAAE,MAAM;YACd,SAAS,EAAE,UAAU;YACrB,OAAO;gBACL,OAAO,MAAM,CAAC,qCAAqC,CAAC,CAAC;YACvD,CAAC;YACD,KAAK,EAAE;gBACL,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,CAAC;aACT;YACD,WAAW,EAAE,yCAAyC;YACtD,MAAM,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC;SAC/B,CACF,CAAC;QAEF,yBAAyB;QACzB,QAAQ,CAAC,IAAI,CACX,sBAAsB,EACtB,MAAM,CAAC,WAAW,EAAE,EACpB;YACE,OAAO,MAAM,CAAC,mCAAmC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;QACvF,CAAC,EACD;YACE,OAAO,EAAE,SAAS,MAAM,EAAE;YAC1B,MAAM;YACN,IAAI,EAAE,KAAK;SACZ,CACF,CAAC;QACF,UAAU;QAEV,QAAQ,CAAC,IAAI,CACX,gBAAgB,EAChB,GAAG,KAAK,gBAAgB,EACxB;YACE,OAAO,MAAM,CAAC,+BAA+B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;QAC/E,CAAC,EACD;YACE,IAAI,EAAE,GAAG,KAAK,kBAAkB;YAChC,OAAO,EAAE,sBAAsB;YAC/B,MAAM;YACN,OAAO,EAAE;gBACP,UAAU,EAAE,MAAM;aACnB;SACF,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,SAAS;IAET,wBAAwB;IACxB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,UAAU,cAAc;QACrD,MAAM,MAAM,GAAG,QAAQ,cAAc,CAAC,WAAW,EAAE,EAAE,CAAC;QACtD,MAAM,KAAK,GAAG,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC;QAE1E,QAAQ,CAAC,IAAI,CACX,UAAU,EACV,GAAG,MAAM,eAAe,EACxB;YACE,OAAO,MAAM,CAAC,+BAA+B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;QAClF,CAAC,EACD;YACE,IAAI,EAAE,GAAG,KAAK,iBAAiB;YAC/B,OAAO,EAAE,QAAQ;YACjB,MAAM,EAAE,SAAS;YACjB,WAAW,EAAE,SAAS;YACtB,YAAY,EAAE,cAAc;SAC7B,CACF,CAAC;QACF,QAAQ,CAAC,IAAI,CACX,cAAc,EACd,GAAG,MAAM,eAAe,EACxB;YACE,OAAO,MAAM,CAAC,yBAAyB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QACtE,CAAC,EACD;YACE,OAAO,EAAE,aAAa;YACtB,WAAW,EAAE,SAAS;YACtB,YAAY,EAAE,cAAc;SAC7B,CACF,CAAC;QAEF,QAAQ,CAAC,IAAI,CACX,UAAU,EACV,GAAG,MAAM,mBAAmB,EAC5B;YACE,OAAO,MAAM,CAAC,kCAAkC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;QACxF,CAAC,EACD;YACE,IAAI,EAAE,GAAG,KAAK,qBAAqB;YACnC,OAAO,EAAE,QAAQ;YACjB,MAAM,EAAE,SAAS;YACjB,WAAW,EAAE,SAAS;YACtB,YAAY,EAAE,cAAc;SAC7B,CACF,CAAC;QACF,QAAQ,CAAC,IAAI,CACX,cAAc,EACd,GAAG,MAAM,mBAAmB,EAC5B;YACE,OAAO,MAAM,CAAC,6BAA6B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;QAC9E,CAAC,EACD;YACE,OAAO,EAAE,iCAAiC;YAC1C,WAAW,EAAE,SAAS;YACtB,YAAY,EAAE,cAAc;SAC7B,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,+BAA+B;IAC/B,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,UAAU,MAAM;QAC7C,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC;QAE9C,QAAQ,CAAC,IAAI,CACX,UAAU,EACV,GAAG,MAAM,eAAe,EACxB;YACE,OAAO,MAAM,CAAC,+BAA+B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;QAClF,CAAC,EACD;YACE,IAAI,EAAE,qBAAqB;YAC3B,OAAO,EAAE,QAAQ;YACjB,MAAM,EAAE,MAAM;YACd,WAAW,EAAE,MAAM;YACnB,YAAY,EAAE,SAAS;SACxB,CACF,CAAC;QACF,QAAQ,CAAC,IAAI,CACX,cAAc,EACd,GAAG,MAAM,eAAe,EACxB;YACE,OAAO,MAAM,CAAC,yBAAyB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QACtE,CAAC,EACD;YACE,OAAO,EAAE,aAAa;YACtB,WAAW,EAAE,MAAM;YACnB,YAAY,EAAE,SAAS;SACxB,CACF,CAAC;QAEF,QAAQ,CAAC,IAAI,CACX,UAAU,EACV,GAAG,MAAM,mBAAmB,EAC5B;YACE,OAAO,MAAM,CAAC,kCAAkC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;QACxF,CAAC,EACD;YACE,IAAI,EAAE,yBAAyB;YAC/B,OAAO,EAAE,QAAQ;YACjB,MAAM,EAAE,MAAM;YACd,WAAW,EAAE,MAAM;YACnB,YAAY,EAAE,SAAS;SACxB,CACF,CAAC;QACF,QAAQ,CAAC,IAAI,CACX,cAAc,EACd,GAAG,MAAM,mBAAmB,EAC5B;YACE,OAAO,MAAM,CAAC,6BAA6B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;QAC9E,CAAC,EACD;YACE,OAAO,EAAE,iCAAiC;YAC1C,WAAW,EAAE,MAAM;YACnB,YAAY,EAAE,SAAS;SACxB,CACF,CAAC;QAEF,QAAQ,CAAC,IAAI,CACX,UAAU,EACV,GAAG,MAAM,kBAAkB,EAC3B;YACE,OAAO,MAAM,CAAC,gCAAgC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;QACpF,CAAC,EACD;YACE,OAAO,EAAE,2BAA2B;YACpC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,sBAAsB;SAC7B,CACF,CAAC;QAEF,QAAQ,CAAC,IAAI,CACX,cAAc,EACd,GAAG,MAAM,kBAAkB,EAC3B;YACE,OAAO,MAAM,CAAC,gCAAgC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;QACpF,CAAC,EACD;YACE,OAAO,EAAE,0BAA0B;YACnC,WAAW,EAAE,MAAM;SACpB,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,IAAI,CACX,eAAe,EACf,sBAAsB,EACtB;QACE,iBAAiB;IACnB,CAAC,EACD;QACE,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,CAAC;aACT;YACD;gBACE,IAAI,EAAE,iBAAiB;gBACvB,KAAK,EAAE,EAAE;aACV;YACD;gBACE,IAAI,EAAE,eAAe;gBACrB,KAAK,EAAE,EAAE;aACV;YACD;gBACE,IAAI,EAAE,eAAe;gBACrB,KAAK,EAAE,EAAE;aACV;YACD;gBACE,IAAI,EAAE,oBAAoB;gBAC1B,KAAK,EAAE,EAAE;aACV;YACD;gBACE,IAAI,EAAE,oBAAoB;gBAC1B,KAAK,EAAE,EAAE;aACV;SACF;KACF,CACF,CAAC;IAEF,QAAQ,CAAC,IAAI,CACX,SAAS,EACT,cAAc,EACd;QACE,OAAO,MAAM,CAAC,0BAA0B,CAAC,CAAC;IAC5C,CAAC,EACD;QACE,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,mBAAmB;QAC5B,IAAI,EAAE,oDAAoD;QAC1D,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,UAAU;QACrB,KAAK,EAAE;YACL,IAAI,EAAE,oBAAoB;YAC1B,aAAa;SACd;QACD,MAAM,EAAE;YACN,OAAO,EAAE,OAAO;SACjB;KACF,CACF,CAAC;IAEF,QAAQ,CAAC,IAAI,CACX,SAAS,EACT,iBAAiB,EACjB;QACE,OAAO,MAAM,CAAC,2BAA2B,CAAC,CAAC;IAC7C,CAAC,EACD;QACE,IAAI,EAAE,4BAA4B;QAClC,OAAO,EAAE,oBAAoB;QAC7B,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,UAAU;QACrB,KAAK,EAAE;YACL,IAAI,EAAE,oBAAoB;YAC1B,aAAa;SACd;QACD,MAAM,EAAE;YACN,OAAO,EAAE,OAAO;SACjB;KACF,CACF,CAAC;IAEF,QAAQ,CAAC,IAAI,CACX,SAAS,EACT,0BAA0B,EAC1B;QACE,OAAO,MAAM,CAAC,0BAA0B,CAAC,CAAC;IAC5C,CAAC,EACD;QACE,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,mBAAmB;QAC5B,IAAI,EAAE,kEAAkE;QACxE,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,UAAU;QACrB,KAAK,EAAE;YACL,IAAI,EAAE,oBAAoB;YAC1B,aAAa;SACd;QACD,MAAM,EAAE;YACN,OAAO,EAAE,OAAO;SACjB;KACF,CACF,CAAC;IACF,QAAQ,CAAC,IAAI,CACX,SAAS,EACT,QAAQ,EACR;QACE,OAAO,MAAM,CAAC,gCAAgC,CAAC,CAAC;IAClD,CAAC,EACD;QACE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,yBAAyB;QAClC,IAAI,EAAE,iDAAiD;QACvD,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,SAAS;QACjB,cAAc,EAAE,IAAI;QACpB,SAAS,EAAE,SAAS;QACpB,OAAO;YACL,OAAO,MAAM,CAAC,8BAA8B,CAAC,CAAC;QAChD,CAAC;QACD,KAAK,EAAE;YACL,IAAI,EAAE,oBAAoB;YAC1B,YAAY;SACb;QACD,WAAW,EAAE,6CAA6C;KAC3D,CACF,CAAC;IAEF,+BAA+B;IAC/B,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,UAAU,MAAM;QACnC,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC;QAE9C,QAAQ,CAAC,IAAI,CACX,UAAU,EACV,GAAG,MAAM,yBAAyB,EAClC;YACE,OAAO,MAAM,CAAC,+BAA+B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;QAClF,CAAC,EACD;YACE,IAAI,EAAE,iCAAiC;YACvC,MAAM,EAAE,MAAM;YACd,WAAW,EAAE,MAAM;YACnB,YAAY,EAAE,SAAS;YACvB,OAAO,EAAE,kCAAkC;SAC5C,CACF,CAAC;QACF,QAAQ,CAAC,IAAI,CACX,cAAc,EACd,GAAG,MAAM,yBAAyB,EAClC;YACE,OAAO,MAAM,CAAC,yBAAyB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;QAC/E,CAAC,EACD;YACE,OAAO,EAAE,4BAA4B;YACrC,WAAW,EAAE,MAAM;YACnB,YAAY,EAAE,SAAS;SACxB,CACF,CAAC;QAEF,QAAQ,CAAC,IAAI,CACX,UAAU,EACV,GAAG,MAAM,6BAA6B,EACtC;YACE,OAAO,MAAM,CAAC,kCAAkC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;QACxF,CAAC,EACD;YACE,IAAI,EAAE,qCAAqC;YAC3C,MAAM,EAAE,MAAM;YACd,WAAW,EAAE,MAAM;YACnB,YAAY,EAAE,SAAS;YACvB,OAAO,EAAE,sCAAsC;SAChD,CACF,CAAC;QACF,QAAQ,CAAC,IAAI,CACX,cAAc,EACd,GAAG,MAAM,6BAA6B,EACtC;YACE,OAAO,MAAM,CAAC,6BAA6B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC;QACvF,CAAC,EACD;YACE,WAAW,EAAE,MAAM;YACnB,YAAY,EAAE,SAAS;YACvB,OAAO,EAAE,gCAAgC;SAC1C,CACF,CAAC;QAEF,QAAQ,CAAC,IAAI,CACX,UAAU,EACV,GAAG,MAAM,0BAA0B,EACnC;YACE,OAAO,MAAM,CAAC,+BAA+B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;QAClF,CAAC,EACD;YACE,IAAI,EAAE,mBAAmB;YACzB,MAAM,EAAE,MAAM;YACd,WAAW,EAAE,MAAM;YACnB,YAAY,EAAE,MAAM;YACpB,OAAO,EAAE,6BAA6B;SACvC,CACF,CAAC;QAEF,QAAQ,CAAC,IAAI,CACX,cAAc,EACd,GAAG,MAAM,0BAA0B,EACnC;YACE,OAAO,MAAM,CAAC,yBAAyB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;QAC1E,CAAC,EACD;YACE,OAAO,EAAE,uBAAuB;YAChC,WAAW,EAAE,MAAM;YACnB,YAAY,EAAE,MAAM;SACrB,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,wBAAwB;IACxB,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,UAAU,cAAc;QAC3C,MAAM,MAAM,GAAG,QAAQ,cAAc,CAAC,WAAW,EAAE,EAAE,CAAC;QAEtD,QAAQ,CAAC,IAAI,CACX,UAAU,EACV,GAAG,MAAM,yBAAyB,EAClC;YACE,OAAO,MAAM,CAAC,+BAA+B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;QAClF,CAAC,EACD;YACE,IAAI,EAAE,iCAAiC;YACvC,MAAM,EAAE,SAAS;YACjB,WAAW,EAAE,SAAS;YACtB,YAAY,EAAE,cAAc;YAC5B,OAAO,EAAE,kCAAkC;SAC5C,CACF,CAAC;QACF,QAAQ,CAAC,IAAI,CACX,cAAc,EACd,GAAG,MAAM,yBAAyB,EAClC;YACE,OAAO,MAAM,CAAC,yBAAyB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;QAC/E,CAAC,EACD;YACE,OAAO,EAAE,4BAA4B;YACrC,WAAW,EAAE,SAAS;YACtB,YAAY,EAAE,cAAc;SAC7B,CACF,CAAC;QAEF,QAAQ,CAAC,IAAI,CACX,UAAU,EACV,GAAG,MAAM,6BAA6B,EACtC;YACE,OAAO,MAAM,CAAC,kCAAkC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;QACxF,CAAC,EACD;YACE,IAAI,EAAE,qCAAqC;YAC3C,MAAM,EAAE,SAAS;YACjB,WAAW,EAAE,SAAS;YACtB,YAAY,EAAE,cAAc;YAC5B,OAAO,EAAE,sCAAsC;SAChD,CACF,CAAC;QACF,QAAQ,CAAC,IAAI,CACX,cAAc,EACd,GAAG,MAAM,6BAA6B,EACtC;YACE,OAAO,MAAM,CAAC,6BAA6B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC;QACvF,CAAC,EACD;YACE,WAAW,EAAE,SAAS;YACtB,YAAY,EAAE,cAAc;YAC5B,OAAO,EAAE,gCAAgC;SAC1C,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,gCAAgC;IAChC,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,OAAO,CAAC,UAAU,MAAM;QACxD,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,QAAQ,CAAC;QACxG,QAAQ,CAAC,IAAI,CACX,UAAU,EACV,GAAG,MAAM,kBAAkB,EAC3B;YACE,OAAO,MAAM,CAAC,8BAA8B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;QAChF,CAAC,EACD;YACE,OAAO,EAAE,wBAAwB;YACjC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,GAAG,KAAK,aAAa;SAC5B,CACF,CAAC;QAEF,QAAQ,CAAC,IAAI,CACX,cAAc,EACd,GAAG,MAAM,kBAAkB,EAC3B;YACE,OAAO,MAAM,CAAC,8BAA8B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;QAChF,CAAC,EACD;YACE,OAAO,EAAE,6BAA6B;YACtC,WAAW,EAAE,MAAM;SACpB,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,yBAAyB;IACzB,QAAQ,CAAC,IAAI,CACX,SAAS,EACT,mBAAmB,EACnB;QACE,OAAO,MAAM,CAAC,wBAAwB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IACrE,CAAC,EACD;QACE,OAAO,EAAE,YAAY;QACrB,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,6DAA6D;QAC1E,OAAO;YACL,OAAO,MAAM,CAAC,kCAAkC,CAAC,CAAC,CAAC,4BAA4B;QACjF,CAAC;QACD,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,UAAU;QACjB,aAAa,EAAE,KAAK;KACrB,CACF,CAAC;IAEF,QAAQ,CAAC,IAAI,CACX,SAAS,EACT,qBAAqB,EACrB;QACE,OAAO,MAAM,CAAC,0BAA0B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;IACzE,CAAC,EACD;QACE,OAAO,EAAE,YAAY;QACrB,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EAAE,0DAA0D;QACvE,OAAO;YACL,OAAO,MAAM,CAAC,kCAAkC,CAAC,CAAC,CAAC,4BAA4B;QACjF,CAAC;QACD,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,UAAU;QACjB,aAAa,EAAE,KAAK;KACrB,CACF,CAAC;IAEF,QAAQ,CAAC,IAAI,CACX,SAAS,EACT,+BAA+B,EAC/B;QACE,OAAO,MAAM,CAAC,oCAAoC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC;IAC7F,CAAC,EACD;QACE,OAAO,EAAE,YAAY;QACrB,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,sDAAsD;QACnE,OAAO;YACL,OAAO,MAAM,CAAC,kCAAkC,CAAC,CAAC,CAAC,4BAA4B;QACjF,CAAC;QACD,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,UAAU;QACjB,aAAa,EAAE,KAAK;KACrB,CACF,CAAC;IACF,UAAU;IAEV,QAAQ,CAAC,IAAI,CACX,qBAAqB,EACrB,qBAAqB,EACrB;QACE,OAAO,MAAM,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,CAAC;IACvF,CAAC,EACc;QACb,EAAE,EAAE,KAAK;KACV,CACF,CAAC;IAEF,SAAS,OAAO,CAAC,EAAU,EAAE,MAAiB,EAAE,IAAS,EAAE,GAAG,KAAK;QACjE,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,cAAc;IACd,OAAO,CAAC,aAAa,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,0BAA0B,CAAC,EAAE;QAC/D,OAAO,EAAE,mBAAmB;QAC5B,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,qDAAqD;QAC3D,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,SAAS;QACpB,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,+BAA+B,CAAC;QACtD,KAAK,EAAE;YACL,IAAI,EAAE,oBAAoB;YAC1B,YAAY;SACb;QACD,WAAW,EAAE,kDAAkD;QAC/D,MAAM,EAAE,CAAC,UAAU,CAAC;KACrB,CAAC,CAAC;IAEH,wBAAwB;IACxB,gEAAgE;IAChE,oBAAoB;IACpB,uEAAuE;IACvE,sBAAsB;IACtB,uBAAuB;IACvB,0BAA0B;IAC1B,2DAA2D;IAC3D,aAAa;IACb,iCAAiC;IACjC,oBAAoB;IACpB,OAAO;IACP,cAAc;IACd,uBAAuB;IACvB,OAAO;IACP,yEAAyE;IACzE,yBAAyB;IACzB,MAAM;IAEN,OAAO,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,6BAA6B,CAAC,EAAE;QAC9D,OAAO,EAAE,sBAAsB;QAC/B,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,yCAAyC;QAC/C,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,SAAS;QACpB,cAAc,EAAE,IAAI;QACpB,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,+BAA+B,CAAC;QACtD,KAAK,EAAE;YACL,IAAI,EAAE,oBAAoB;YAC1B,aAAa;SACd;QACD,WAAW,EAAE,8CAA8C;QAC3D,MAAM,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;KAChC,CAAC,CAAC;IAEH,OAAO,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,0BAA0B,CAAC,EAAE;QACpE,OAAO,EAAE,mBAAmB;QAC5B,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,gDAAgD;QACtD,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,SAAS;QACpB,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,oCAAoC,CAAC;QAC3D,KAAK,EAAE;YACL,IAAI,EAAE,oBAAoB;YAC1B,aAAa;SACd;QACD,MAAM,EAAE;YACN,OAAO,EAAE,OAAO;SACjB;QACD,WAAW,EAAE,mDAAmD;QAChE,MAAM,EAAE,CAAC,UAAU,CAAC;KACrB,CAAC,CAAC;IAEH,OAAO,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,0BAA0B,CAAC,EAAE;QACpE,OAAO,EAAE,mBAAmB;QAC5B,IAAI,EAAE,qBAAqB;QAC3B,IAAI,EAAE,iCAAiC;QACvC,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,SAAS;QACpB,cAAc,EAAE,IAAI;QACpB,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,2CAA2C,CAAC;QAClE,KAAK,EAAE;YACL,IAAI,EAAE,oBAAoB;YAC1B,aAAa;SACd;QACD,MAAM,EAAE;YACN,OAAO,EAAE,OAAO;SACjB;QACD,WAAW,EAAE,8DAA8D;QAC3E,MAAM,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;KAChC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG;QACb,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,YAAY;QACpB,cAAc,EAAE,YAAY;QAC5B,SAAS,EAAE,SAAS;QACpB,KAAK,EAAE;YACL,IAAI,EAAE,oBAAoB;YAC1B,aAAa;SACd;QACD,MAAM,EAAE;YACN,OAAO,EAAE,OAAO;SACjB;QACD,MAAM,EAAE,CAAC,UAAU,CAAC;KACrB,CAAC;IAEF,sFAAsF;IACtF,gCAAgC;IAChC,uEAAuE;IACvE,0DAA0D;IAC1D,qEAAqE;IACrE,+DAA+D;IAC/D,eAAe;IACf,0BAA0B;IAC1B,kCAAkC;IAClC,oCAAoC;IACpC,MAAM;IAEN,OAAO,CACL,WAAW,EACX,GAAG,EAAE,CAAC,MAAM,CAAC,sCAAsC,CAAC,EACpD;QACE,OAAO,EAAE,sBAAsB;QAC/B,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,mEAAmE;QACzE,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,iCAAiC,CAAC;QACxD,WAAW,EAAE,kCAAkC;QAC/C,OAAO,EAAE,0CAA0C;KACpD,EACD,MAAM,CACP,CAAC;IAEF,OAAO,CACL,SAAS,EACT,GAAG,EAAE,CAAC,MAAM,CAAC,sCAAsC,CAAC,EACpD;QACE,OAAO,EAAE,sBAAsB;QAC/B,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,mDAAmD;QACzD,OAAO,EAAE,6CAA6C;QACtD,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,+BAA+B,CAAC;QACtD,WAAW,EAAE,+EAA+E;KAC7F,EACD,MAAM,CACP,CAAC;IAEF,OAAO,CACL,aAAa,EACb,GAAG,EAAE,CAAC,MAAM,CAAC,sCAAsC,CAAC,EACpD;QACE,OAAO,EAAE,sBAAsB;QAC/B,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,sEAAsE;QAC5E,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,qCAAqC,CAAC;QAC5D,WAAW,EAAE,0CAA0C;QACvD,OAAO,EAAE,0CAA0C;KACpD,EACD,MAAM,EACN;QACE,MAAM,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC;KAC/B,CACF,CAAC;IAEF,QAAQ,CAAC,IAAI,CAAC,qBAAqB,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE;QACjH,OAAO,EAAE,4BAA4B;KACtC,CAAC,CAAC;IAEH,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,eAAe,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE;QAC/G,OAAO,EAAE,eAAe;KACzB,CAAC,CAAC;IAEH,QAAQ,CAAC,IAAI,CACX,gBAAgB,EAChB,sBAAsB,EACtB,GAAG,EAAE;QACH,OAAO,MAAM,CAAC,mCAAmC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;IACvF,CAAC,EACD;QACE,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,oBAAoB;QAC7B,MAAM,EAAE,SAAS;KAClB,CACF,CAAC;IACF,uBAAuB;AACzB,CAAC"} \ No newline at end of file +{"version":3,"file":"phovea.js","sourceRoot":"","sources":["../src/phovea.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/tours/AddColumnToGeneListTour.d.ts.map b/dist/tours/AddColumnToGeneListTour.d.ts.map index 626fd2bc..8d4694bc 100644 --- a/dist/tours/AddColumnToGeneListTour.d.ts.map +++ b/dist/tours/AddColumnToGeneListTour.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"AddColumnToGeneListTour.d.ts","sourceRoot":"","sources":["../../src/tours/AddColumnToGeneListTour.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAa,MAAM,UAAU,CAAC;AAE5C,qBAAa,uBAAuB;IAClC,MAAM,CAAC,UAAU,IAAI,KAAK,EAAE;CAqQ7B"} \ No newline at end of file +{"version":3,"file":"AddColumnToGeneListTour.d.ts","sourceRoot":"","sources":["../../src/tours/AddColumnToGeneListTour.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAa,MAAM,UAAU,CAAC;AAG5C,qBAAa,uBAAuB;IAClC,MAAM,CAAC,UAAU,IAAI,KAAK,EAAE;CAiQ7B"} \ No newline at end of file diff --git a/dist/tours/AddColumnToGeneListTour.js b/dist/tours/AddColumnToGeneListTour.js index 8aabad3b..9ed04561 100644 --- a/dist/tours/AddColumnToGeneListTour.js +++ b/dist/tours/AddColumnToGeneListTour.js @@ -1,4 +1,5 @@ import { TourUtils } from 'tdp_core'; +import { openAddColumPanel } from './utils'; export class AddColumnToGeneListTour { static createTour() { return [ @@ -61,7 +62,7 @@ export class AddColumnToGeneListTour { selector: '.lu-side-panel-wrapper .lu-adder > button', html: `Additional columns can be added using the plus sign.`, placement: 'centered', - postAction: TourUtils.clickSelector, + postAction: openAddColumPanel, }, { selector: '.lu-search ul', @@ -87,7 +88,7 @@ export class AddColumnToGeneListTour {

In this example, we select 'Strand'

`, placement: 'centered', preAction: () => TourUtils.waitFor('.modal.show').then(() => TourUtils.wait(250)), - postAction: () => TourUtils.setValueAndTrigger('.col > select', 'strand', 'change'), + postAction: () => TourUtils.setValueAndTrigger('.show .col > select', 'strand', 'change'), }, { selector: '.modal.show .modal-footer button[type=submit]', @@ -123,9 +124,7 @@ export class AddColumnToGeneListTour { selector: '.lu-search .lu-search-group .lu-search-item', placement: 'centered', html: `Now, we want to add two columns containing the copy number information of two specific cell lines. To do so, we open the 'Cell Line Score (Single)' dialog`, - preAction: () => { - TourUtils.click('.lu-side-panel-wrapper .lu-adder > button'); - }, + preAction: openAddColumPanel, postAction: () => { TourUtils.click('.lu-search .lu-search-group .lu-search-item'); TourUtils.toggleClass('.lu-adder.once', 'once', false); @@ -145,7 +144,7 @@ export class AddColumnToGeneListTour { placement: 'centered', html: `As data type, we choose 'Relative Copy Number'`, postAction: () => { - TourUtils.setValueAndTrigger('.col > select', 'copy_number-relativecopynumber', 'change'); + TourUtils.setValueAndTrigger('.show .col > select', 'copy_number-relativecopynumber', 'change'); }, }, { @@ -165,9 +164,7 @@ export class AddColumnToGeneListTour { placement: 'centered', html: `Finally, we want to add an aggregated column containing the mean/average copy number values of all breast cancer cell lines. To do so, we open the 'Cell Line Score (Aggregated)' dialog`, - preAction: () => { - TourUtils.click('.lu-side-panel-wrapper .lu-adder > button'); - }, + preAction: openAddColumPanel, postAction: () => { TourUtils.click('.lu-search .lu-search-group .lu-search-item:nth-child(2)'); TourUtils.toggleClass('.lu-adder.once', 'once', false); @@ -180,38 +177,38 @@ export class AddColumnToGeneListTour { preAction: () => TourUtils.waitFor('.modal.show .modal-content').then(() => TourUtils.wait(250)), }, { - selector: '.modal-body form > .col-sm-12:nth-child(1) .row:nth-child(1) div:nth-child(1) select', + selector: '.show .modal-body form > .col-sm-12:nth-child(1) .row:nth-child(1) div:nth-child(1) select', html: `

First, we need to define the subset of cell lines which we want to aggregate.

For the filter attribute we select 'Tumor Type'

`, placement: 'centered', postAction: () => { - TourUtils.setValueAndTrigger('.modal-body form > div:nth-child(1) .row:nth-child(1) div:nth-child(1) select', 'tumortype', 'change'); + TourUtils.setValueAndTrigger('.show .modal-body form > div:nth-child(1) .row:nth-child(1) div:nth-child(1) select', 'tumortype', 'change'); }, }, { - selector: '.modal-body form > .col-sm-12:nth-child(1) .row:nth-child(1) .row:nth-child(1) > div:nth-child(2) .select2', + selector: '.show .modal-body form > .col-sm-12:nth-child(1) .row:nth-child(1) .row:nth-child(1) > div:nth-child(2) .select2', html: `… and for the filter value we select 'breast carcinoma'.`, placement: 'centered', - preAction: () => TourUtils.waitFor('.modal-body form > .col-sm-12:nth-child(1) .row:nth-child(1) .row:nth-child(1) > div:nth-child(2) .select2').then(() => TourUtils.wait(250)), + preAction: () => TourUtils.waitFor('.show .modal-body form > .col-sm-12:nth-child(1) .row:nth-child(1) .row:nth-child(1) > div:nth-child(2) .select2').then(() => TourUtils.wait(250)), postAction: () => { - TourUtils.setValueAndTrigger('.modal-body form > .col-sm-12:nth-child(1) .row:nth-child(1) .row:nth-child(1) > div:nth-child(2) select', 'breast carcinoma', 'change'); + TourUtils.setValueAndTrigger('.show .modal-body form > .col-sm-12:nth-child(1) .row:nth-child(1) .row:nth-child(1) > div:nth-child(2) select', 'breast carcinoma', 'change'); }, }, { - selector: '.modal-body form > .col-sm-12:nth-child(2) .row:nth-child(1) .select2', + selector: '.show .modal-body form > .col-sm-12:nth-child(2) .row:nth-child(1) .select2', placement: 'centered', html: `As data type, we choose 'Relative Copy Number' …`, postAction: () => { - TourUtils.setValueAndTrigger('.modal-body form > .col-sm-12:nth-child(2) select', 'copy_number-relativecopynumber', 'change'); + TourUtils.setValueAndTrigger('.show .modal-body form > .col-sm-12:nth-child(2) select', 'copy_number-relativecopynumber', 'change'); }, }, { - selector: '.modal-body form > .col-sm-12:nth-child(3) select', + selector: '.show .modal-body form > .col-sm-12:nth-child(3) select', placement: 'centered', html: `

… and as type of aggregation we choose 'Average'

FYI: other types of aggregation are, for instance, 'Min', 'Max', 'Median', 'Count', and 'Boxplot'.`, postAction: () => { - TourUtils.setValueAndTrigger('.modal-body form > .col-sm-12:nth-child(3) > select', 'avg', 'change'); + TourUtils.setValueAndTrigger('.show .modal-body form > .col-sm-12:nth-child(3) > select', 'avg', 'change'); }, }, { diff --git a/dist/tours/AddColumnToGeneListTour.js.map b/dist/tours/AddColumnToGeneListTour.js.map index a0074a21..f25c4790 100644 --- a/dist/tours/AddColumnToGeneListTour.js.map +++ b/dist/tours/AddColumnToGeneListTour.js.map @@ -1 +1 @@ -{"version":3,"file":"AddColumnToGeneListTour.js","sourceRoot":"","sources":["../../src/tours/AddColumnToGeneListTour.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,SAAS,EAAE,MAAM,UAAU,CAAC;AAE5C,MAAM,OAAO,uBAAuB;IAClC,MAAM,CAAC,UAAU;QACf,OAAO;YACL;gBACE,IAAI,EAAE;;;;;;;;;aASD;aACN;YACD;gBACE,QAAQ,EAAE,iDAAiD;gBAC3D,IAAI,EAAE,6HAA6H;gBACnI,SAAS,EAAE,UAAU;gBACrB,SAAS,EAAE,GAAG,EAAE;oBACd,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,8CAA8C,CAAgB,CAAC;oBACzG,IAAI,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;wBAC3C,OAAO;qBACR;oBACD,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACvD,CAAC;gBACD,UAAU,EAAE,GAAG,EAAE;oBACf,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,8CAA8C,CAAgB,CAAC;oBACzG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;wBAC5C,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;wBACxD,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;qBACvC;oBACD,OAAO,SAAS,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,8DAA8D,CAAC,CAAC,CAAC;gBACxJ,CAAC;aACF;YACD;gBACE,QAAQ,EAAE,0EAA0E;gBACpF,IAAI,EAAE,8EAA8E;gBACpF,SAAS,EAAE,UAAU;gBACrB,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,0EAA0E,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC9I,UAAU,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,8DAA8D,CAAC;aAClG;YACD;gBACE,QAAQ,EAAE,wFAAwF;gBAClG,IAAI,EAAE,gIAAgI;gBACtI,SAAS,EAAE,UAAU;gBACrB,UAAU,EAAE,GAAG,EAAE;oBACf,OAAO,SAAS,CAAC,OAAO,CAAC,wFAAwF,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBAC3I,CAAC;gBACD,SAAS,EAAE,QAAQ;aACpB;YAED;gBACE,QAAQ,EAAE,4BAA4B;gBACtC,SAAS,EAAE,UAAU;gBACrB,IAAI,EAAE;4EAC8D;gBACpE,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,4BAA4B,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aAC3G;YAED;gBACE,QAAQ,EAAE,2CAA2C;gBACrD,IAAI,EAAE,sDAAsD;gBAC5D,SAAS,EAAE,UAAU;gBACrB,UAAU,EAAE,SAAS,CAAC,aAAa;aACpC;YAED;gBACE,QAAQ,EAAE,eAAe;gBACzB,IAAI,EAAE;;;;8EAIgE;gBACtE,SAAS,EAAE,UAAU;aACtB;YAED;gBACE,QAAQ,EAAE,4BAA4B;gBACtC,IAAI,EAAE,4CAA4C;gBAClD,SAAS,EAAE,UAAU;gBACrB,UAAU,EAAE,GAAG,EAAE;oBACf,SAAS,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;oBAC9C,SAAS,CAAC,WAAW,CAAC,gBAAgB,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;gBACzD,CAAC;aACF;YAED;gBACE,QAAQ,EAAE,6BAA6B;gBACvC,IAAI,EAAE;mEACqD;gBAC3D,SAAS,EAAE,UAAU;gBACrB,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACjF,UAAU,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,kBAAkB,CAAC,eAAe,EAAE,QAAQ,EAAE,QAAQ,CAAC;aACpF;YAED;gBACE,QAAQ,EAAE,+CAA+C;gBACzD,IAAI,EAAE,iCAAiC;gBACvC,SAAS,EAAE,UAAU;gBACrB,UAAU,EAAE,SAAS,CAAC,aAAa;aACpC;YAED;gBACE,QAAQ,EAAE,kCAAkC;gBAC5C,SAAS,EAAE,UAAU;gBACrB,IAAI,EAAE,kDAAkD;gBACxD,SAAS,EAAE,SAAS,CAAC,eAAe;aACrC;YAED;gBACE,QAAQ,EAAE,6BAA6B;gBACvC,IAAI,EAAE;;;;;;;;;wIAS0H;gBAChI,SAAS,EAAE,UAAU;gBACrB,SAAS,EAAE,KAAK,IAAI,EAAE;oBACpB,MAAM,SAAS,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;oBACvD,SAAS,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;gBAC/D,CAAC;aACF;YAED;gBACE,QAAQ,EAAE,6CAA6C;gBACvD,SAAS,EAAE,UAAU;gBACrB,IAAI,EAAE,mKAAmK;gBACzK,SAAS,EAAE,GAAG,EAAE;oBACd,SAAS,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;gBAC/D,CAAC;gBACD,UAAU,EAAE,GAAG,EAAE;oBACf,SAAS,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;oBAC/D,SAAS,CAAC,WAAW,CAAC,gBAAgB,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;gBACzD,CAAC;aACF;YAED;gBACE,QAAQ,EAAE,6BAA6B;gBACvC,SAAS,EAAE,UAAU;gBACrB,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACjF,IAAI,EAAE,+DAA+D;gBACrE,UAAU,EAAE,GAAG,EAAE;oBACf,SAAS,CAAC,kBAAkB,CAAC,kDAAkD,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAC;gBAC9G,CAAC;aACF;YAED;gBACE,QAAQ,EAAE,6BAA6B;gBACvC,SAAS,EAAE,UAAU;gBACrB,IAAI,EAAE,uDAAuD;gBAC7D,UAAU,EAAE,GAAG,EAAE;oBACf,SAAS,CAAC,kBAAkB,CAAC,eAAe,EAAE,gCAAgC,EAAE,QAAQ,CAAC,CAAC;gBAC5F,CAAC;aACF;YAED;gBACE,QAAQ,EAAE,+CAA+C;gBACzD,IAAI,EAAE,6BAA6B;gBACnC,SAAS,EAAE,UAAU;gBACrB,UAAU,EAAE,SAAS,CAAC,aAAa;aACpC;YAED;gBACE,QAAQ,EAAE,CAAC,+DAA+D,CAAC;gBAC3E,SAAS,EAAE,UAAU;gBACrB,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,+BAA+B,EAAE,KAAK,CAAC;gBAC1E,IAAI,EAAE,iGAAiG;aACxG;YAED;gBACE,QAAQ,EAAE,0DAA0D;gBACpE,SAAS,EAAE,UAAU;gBACrB,IAAI,EAAE;2EAC6D;gBACnE,SAAS,EAAE,GAAG,EAAE;oBACd,SAAS,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;gBAC/D,CAAC;gBACD,UAAU,EAAE,GAAG,EAAE;oBACf,SAAS,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;oBAC5E,SAAS,CAAC,WAAW,CAAC,gBAAgB,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;gBACzD,CAAC;aACF;YAED;gBACE,QAAQ,EAAE,4BAA4B;gBACtC,IAAI,EAAE,mFAAmF;gBACzF,SAAS,EAAE,UAAU;gBACrB,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACjG;YAED;gBACE,QAAQ,EAAE,sFAAsF;gBAChG,IAAI,EAAE;+EACiE;gBACvE,SAAS,EAAE,UAAU;gBACrB,UAAU,EAAE,GAAG,EAAE;oBACf,SAAS,CAAC,kBAAkB,CAAC,+EAA+E,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;gBACvI,CAAC;aACF;YAED;gBACE,QAAQ,EAAE,4GAA4G;gBACtH,IAAI,EAAE,wEAAwE;gBAC9E,SAAS,EAAE,UAAU;gBACrB,SAAS,EAAE,GAAG,EAAE,CACd,SAAS,CAAC,OAAO,CAAC,4GAA4G,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CACxI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CACpB;gBACH,UAAU,EAAE,GAAG,EAAE;oBACf,SAAS,CAAC,kBAAkB,CAC1B,0GAA0G,EAC1G,kBAAkB,EAClB,QAAQ,CACT,CAAC;gBACJ,CAAC;aACF;YAED;gBACE,QAAQ,EAAE,uEAAuE;gBACjF,SAAS,EAAE,UAAU;gBACrB,IAAI,EAAE,gEAAgE;gBACtE,UAAU,EAAE,GAAG,EAAE;oBACf,SAAS,CAAC,kBAAkB,CAAC,mDAAmD,EAAE,gCAAgC,EAAE,QAAQ,CAAC,CAAC;gBAChI,CAAC;aACF;YAED;gBACE,QAAQ,EAAE,mDAAmD;gBAC7D,SAAS,EAAE,UAAU;gBACrB,IAAI,EAAE;iJACmI;gBACzI,UAAU,EAAE,GAAG,EAAE;oBACf,SAAS,CAAC,kBAAkB,CAAC,qDAAqD,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;gBACvG,CAAC;aACF;YAED;gBACE,QAAQ,EAAE,+CAA+C;gBACzD,IAAI,EAAE,gCAAgC;gBACtC,SAAS,EAAE,UAAU;gBACrB,UAAU,EAAE,SAAS,CAAC,aAAa;aACpC;YAED;gBACE,QAAQ,EAAE,gCAAgC;gBAC1C,SAAS,EAAE,UAAU;gBACrB,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,gCAAgC,EAAE,KAAK,CAAC;gBAC3E,IAAI,EAAE,oIAAoI;aAC3I;YAED;gBACE,IAAI,EAAE;gEACkD;aACzD;SACF,CAAC;IACJ,CAAC;CACF"} \ No newline at end of file +{"version":3,"file":"AddColumnToGeneListTour.js","sourceRoot":"","sources":["../../src/tours/AddColumnToGeneListTour.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/tours/AssessBCCellLines.d.ts b/dist/tours/AssessBCCellLines.d.ts new file mode 100644 index 00000000..552fa06d --- /dev/null +++ b/dist/tours/AssessBCCellLines.d.ts @@ -0,0 +1,5 @@ +import { IStep } from 'tdp_core'; +export declare class AssessBCCellLines { + static createTour(): IStep[]; +} +//# sourceMappingURL=AssessBCCellLines.d.ts.map \ No newline at end of file diff --git a/dist/tours/AssessBCCellLines.d.ts.map b/dist/tours/AssessBCCellLines.d.ts.map new file mode 100644 index 00000000..b7d689e1 --- /dev/null +++ b/dist/tours/AssessBCCellLines.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"AssessBCCellLines.d.ts","sourceRoot":"","sources":["../../src/tours/AssessBCCellLines.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAmB,MAAM,UAAU,CAAC;AAElD,qBAAa,iBAAiB;IAC5B,MAAM,CAAC,UAAU,IAAI,KAAK,EAAE;CAqW7B"} \ No newline at end of file diff --git a/dist/tours/AssessBCCellLines.js b/dist/tours/AssessBCCellLines.js new file mode 100644 index 00000000..1b81b8d5 --- /dev/null +++ b/dist/tours/AssessBCCellLines.js @@ -0,0 +1,346 @@ +import { TourUtils } from 'tdp_core'; +export class AssessBCCellLines { + static createTour() { + return [ + { + html: `

Welcome to this short tour showing the assessment of breast cancer cell lines!

+

+ Use the "Next" button to iterate through all the steps. You can use the + "Cancel" button at any time to stop the tour and to interact with Ordino. + Please note that the tour will load a new analysis session and the current + one will be discarded. +

`, + }, + { + selector: 'ul[data-header="mainMenu"] > li:first-child > a', + html: `To start an analysis, click on the 'Datasets' tab. Subsequently, you can define the list of entities you want to work with`, + placement: 'centered', + preAction: () => { + const datasetTab = document.querySelector('ul[data-header="mainMenu"] > li:nth-child(1)'); + if (!datasetTab.classList.contains('active')) { + datasetTab.querySelector('a').classList.add('hover'); + } + }, + postAction: () => { + const datasetTab = document.querySelector('ul[data-header="mainMenu"] > li:nth-child(1)'); + if (!datasetTab.classList.contains('active')) { + datasetTab.querySelector('a').classList.remove('hover'); + datasetTab.querySelector('a').click(); + } + return TourUtils.waitFor('.ordino-dataset.genes-dataset').then(() => TourUtils.click('#ordino_dataset_tab > .ordino-scrollspy-nav > a:nth-child(3)')); + }, + pageBreak: 'manual', + }, + { + selector: '.ordino-dataset.genes-dataset > .card', + html: `

You can choose between the three entity types 'Cell Lines', 'Tissue Samples', and 'Genes'.

In this example we will work with a list of genes

`, + placement: 'centered', + preAction: () => TourUtils.waitFor('#ordino_dataset_tab > .ordino-scrollspy-container .genes-dataset > .card').then(() => TourUtils.wait(600)), + postAction: () => TourUtils.click('.ordino-dataset.genes-dataset .session-tab > li:first-child'), + }, + { + selector: '[data-testid="normal-chromosome-protein-coding-human-genes-button"]', + html: `The scientist starts by loading the list of all protein coding genes.`, + placement: 'centered', + postAction: () => { + return TourUtils.waitFor('.ordino-dataset.genes-dataset .dataset-entry button[title^="Name: normal chromosome protein coding human genes"]').then(TourUtils.click); + }, + pageBreak: 'manual', + }, + { + selector: '.le.le-multi.lineup-engine', + placement: 'centered', + html: `The information is presented in a tabular format. Additionally to the gene ID, a set of columns containing some basic information is shown by default.`, + preAction: () => TourUtils.waitFor('.le.le-multi.lineup-engine', Infinity).then(() => TourUtils.wait(600)), + }, + { + selector: '.lu-side-panel-wrapper .lu-adder > button', + html: `Additional columns can be added using the plus sign.`, + placement: 'centered', + postAction: TourUtils.clickSelector, + }, + { + selector: '[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(1) > span', + html: `First, we want to add a new column`, + placement: 'centered', + postAction: () => { + TourUtils.click('[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(1) > span'); + TourUtils.toggleClass('.lu-adder.once', 'once', false); + }, + }, + { + selector: '.modal.show .col > .select3', + placement: 'centered', + preAction: () => TourUtils.waitFor('.modal.show').then(() => TourUtils.wait(250)), + html: `We select the Cell Line`, + postAction: () => { + TourUtils.setValueAndTrigger('.modal.show .select3 input.select2-search__field', 'HCC1954;', 'input'); + }, + }, + { + selector: '.modal.show .col > .select2', + placement: 'centered', + html: `and the data type`, + postAction: () => { + TourUtils.setValueAndTrigger('.show .col > select', 'copy_number-relativecopynumber', 'change'); + }, + }, + { + selector: '.modal.show .modal-footer button[type=submit]', + html: `… and click 'Add'`, + placement: 'centered', + postAction: TourUtils.clickSelector, + }, + { + selector: '.le header [data-col-id="col8"]', + placement: 'centered', + html: `The new column was added here`, + preAction: TourUtils.waitForSelector, + }, + { + selector: '.le [data-col-id="col8"] .lu-action-sort', + placement: 'centered', + html: `Now, we want to sort by this column`, + postAction: () => { + TourUtils.click('.le [data-col-id="col8"] .lu-action-sort'); + }, + }, + { + selector: '.le.le-multi.lineup-engine', + placement: 'centered', + html: `Now everything was sorted!`, + }, + { + selector: '.le.le-multi.lineup-engine', + placement: 'centered', + html: `After sorting by this column, the analyst observes + that about 15 genes on chromosome 17 are affected by a large genomic amplification.`, + }, + { + selector: '.lu-side-panel-wrapper .lu-adder > button', + html: `In order to identify the most relevant gene of these, the analyst adds a column with the gene expression (a measure of activity) in HCC1954`, + placement: 'centered', + postAction: TourUtils.clickSelector, + }, + { + selector: '[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(1) > span', + html: `We want to add a 2nd new column`, + placement: 'centered', + postAction: () => { + TourUtils.click('[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(1) > span'); + TourUtils.toggleClass('.lu-adder.once', 'once', false); + }, + }, + { + selector: '.modal.show .col > .select3', + placement: 'centered', + preAction: () => TourUtils.waitFor('.modal.show').then(() => TourUtils.wait(250)), + html: `We select the 2nd Cell Line`, + postAction: () => { + TourUtils.setValueAndTrigger('.modal.show .select3 input.select2-search__field', 'HCC1954;', 'input'); + }, + }, + { + selector: '.modal.show .col > .select2', + placement: 'centered', + html: `and the 2nd data type`, + postAction: () => { + TourUtils.setValueAndTrigger('.show .col > select', 'expression-tpm', 'change'); + }, + }, + { + selector: '.modal.show .modal-footer button[type=submit]', + html: `… and click 'Add'`, + placement: 'centered', + postAction: TourUtils.clickSelector, + }, + { + selector: '.lu-side-panel-wrapper .lu-adder > button', + html: `They also add a gene sensitivity score (a measure of importance for cell survival) for HCC1954 (RSA scores obtained from DRIVE data set [4]).`, + placement: 'centered', + postAction: TourUtils.clickSelector, + }, + { + selector: '[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(5) > span', + html: `We want to add a 3rd new column`, + placement: 'centered', + postAction: () => { + TourUtils.click('[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(5) > span'); + TourUtils.toggleClass('.lu-adder.once', 'once', false); + }, + }, + { + selector: '.modal.show .col > .select3', + placement: 'centered', + preAction: () => TourUtils.waitFor('.modal.show').then(() => TourUtils.wait(250)), + html: `We select the 3rd Cell Line`, + postAction: () => { + TourUtils.setValueAndTrigger('.modal.show .select3 input.select2-search__field', 'HCC1954;', 'input'); + }, + }, + { + selector: '.modal.show .col > .select2', + placement: 'centered', + html: `and the 3rd data type`, + postAction: () => { + TourUtils.setValueAndTrigger('.show .col > select', 'depletion-rsa', 'change'); + }, + }, + { + selector: '.modal.show .modal-footer button[type=submit]', + html: `… and click 'Add'`, + placement: 'centered', + postAction: TourUtils.clickSelector, + }, + { + selector: '[data-id="col10"] > .lu-toolbar > .lu-action-more', + html: `We now want to invert the linear scaling of the depletion screen score to improve the scale's readability.`, + placement: 'centered', + postAction: () => { + TourUtils.click('[data-id="col10"] > .lu-toolbar > .lu-action-more'); + TourUtils.click('.lu-action-data-mapping > span'); + TourUtils.setValueAndTrigger('.browser-default', 'linear_invert', 'change'); + TourUtils.click('.lu-dialog-buttons > [type="submit"]'); + }, + }, + { + selector: '[data-index="0"]', + placement: 'centered', + html: `Observe: Of the highly amplified genes, ERBB2 (HER2) has the highest expression and the lowest sensitivity score. Therefore, it is probably the most relevant gene of this amplicon.`, + }, + { + selector: '.le header [data-col-id="col9"], .le header [data-col-id="col10"]', + html: `

Combine both score columns to obtain stacked bars.

+

Observe: Combining the columns highlights the importance of ERBB2.

+

It is therefore probably the most relevant gene within this amplified genomic region.

`, + placement: 'centered', + }, + { + selector: '.le header [data-col-id="col10"]', + html: `

This finding leads the scientist to the question whether ERBB2 is also highly expressed and frequently amplified in other breast cancer cell lines.

+

To investigate this, the analyst adds the following columns: +

    +
  • A column with the average gene expression
  • +
  • A column with the gene copy number distribution
  • +
  • A column with the gene amplification frequency across all breast cancer cell lines
  • +
+

`, + placement: 'centered', + }, + { + selector: '.lu-side-panel-wrapper .lu-adder > button', + html: `1. A column with the average gene expression`, + placement: 'centered', + postAction: () => { + // Add the average gene expression column + TourUtils.click('.lu-side-panel-wrapper .lu-adder > button'); + TourUtils.click('[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(2) > span'); + TourUtils.toggleClass('.lu-adder.once', 'once', false); + TourUtils.waitFor('.show .modal-body form > div:nth-child(1) .row:nth-child(1) div:nth-child(1) select').then(() => { + TourUtils.setValueAndTrigger('.show .modal-body form > div:nth-child(1) .row:nth-child(1) div:nth-child(1) select', 'tumortype', 'change'); + TourUtils.setValueAndTrigger('.show .modal-body form > .col-sm-12:nth-child(1) .row:nth-child(1) .row:nth-child(1) > div:nth-child(2) select', 'breast carcinoma', 'change'); + TourUtils.setValueAndTrigger('.show .modal-body form > .col-sm-12:nth-child(2) select', 'expression-tpm', 'change'); + TourUtils.setValueAndTrigger('.show [data-testid="aggregation"] select', 'avg', 'change'); + TourUtils.wait(1000).then(() => TourUtils.click('.modal.show .modal-footer button[type=submit]')); + }); + }, + }, + { + selector: '.lu-side-panel-wrapper .lu-adder > button', + html: `2. A column with the gene copy number distribution`, + placement: 'centered', + postAction: () => { + // Add the average gene expression column + TourUtils.click('.lu-side-panel-wrapper .lu-adder > button'); + TourUtils.click('[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(2) > span'); + TourUtils.toggleClass('.lu-adder.once', 'once', false); + TourUtils.waitFor('.show .modal-body form > div:nth-child(1) .row:nth-child(1) div:nth-child(1) select').then(() => { + TourUtils.setValueAndTrigger('.show .modal-body form > div:nth-child(1) .row:nth-child(1) div:nth-child(1) select', 'tumortype', 'change'); + TourUtils.setValueAndTrigger('.show .modal-body form > .col-sm-12:nth-child(1) .row:nth-child(1) .row:nth-child(1) > div:nth-child(2) select', 'breast carcinoma', 'change'); + TourUtils.setValueAndTrigger('.show .modal-body form > .col-sm-12:nth-child(2) select', 'copy_number-relativecopynumber', 'change'); + TourUtils.setValueAndTrigger('.show [data-testid="aggregation"] select', 'boxplot', 'change'); + TourUtils.wait(1000).then(() => TourUtils.click('.modal.show .modal-footer button[type=submit]')); + }); + }, + }, + { + selector: '.lu-side-panel-wrapper .lu-adder > button', + html: `3. A column with the gene amplification frequency across all breast cancer cell lines`, + placement: 'centered', + postAction: () => { + // Add the average gene expression column + TourUtils.click('.lu-side-panel-wrapper .lu-adder > button'); + TourUtils.click('[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(2) > span'); + TourUtils.toggleClass('.lu-adder.once', 'once', false); + TourUtils.waitFor('.show .modal-body form > div:nth-child(1) .row:nth-child(1) div:nth-child(1) select').then(() => { + TourUtils.setValueAndTrigger('.show .modal-body form > div:nth-child(1) .row:nth-child(1) div:nth-child(1) select', 'tumortype', 'change'); + TourUtils.setValueAndTrigger('.show .modal-body form > .col-sm-12:nth-child(1) .row:nth-child(1) .row:nth-child(1) > div:nth-child(2) select', 'breast carcinoma', 'change'); + TourUtils.setValueAndTrigger('.show .modal-body form > .col-sm-12:nth-child(2) select', 'copy_number-relativecopynumber', 'change'); + TourUtils.setValueAndTrigger('.show [data-testid="aggregation"] select', 'frequency', 'change'); + TourUtils.waitFor('.show [data-testid="Comparison Operator"]').then(() => { + TourUtils.setValueAndTrigger('.show [data-testid="comparison-operator"] select', '>', 'change'); + TourUtils.setValueAndTrigger('.show [type="number"]', '4', 'input'); + }); + TourUtils.wait(1000).then(() => TourUtils.click('.modal.show .modal-footer button[type=submit]')); + }); + }, + }, + { + selector: '.le.le-multi.lineup-engine', + html: `Observe: ERBB2 is amplified in almost 25% of all assessed breast cancer cell lines. Further, it is highly expressed.`, + placement: 'centered', + }, + { + selector: '.le.le-multi.lineup-engine', + html: `

The aim is now to get more information about ERBB2.

+

Select ERBB2 in the list.

`, + placement: 'centered', + }, + { + selector: '.le.le-multi.lineup-engine', + placement: 'centered', + html: `TOUR IS HERE SO FAR.`, + }, + { + selector: '.le header section[title^=HCC] i[title^=Sort]', + placement: 'centered', + html: `For example, you can use this icon to sort all genes by their copy number in the cell line 'HCC-827'`, + postAction: TourUtils.clickSelector, + }, + { + selector: '.le-tr[data-index="0"]', + placement: 'centered', + html: `In order to obtain additional information about one or more genes, click on the respective line or use the checkboxes`, + preAction: () => TourUtils.waitFor(() => { + const r = document.querySelector('.le-tr[data-index="0"]'); + if (!r) { + return null; + } + // has a string renderered EGFR entry + if (!Array.from(r.querySelectorAll('div[data-renderer="string"]')).some((d) => d.textContent === 'EGFR')) { + return null; + } + return r; + }, Infinity).then(() => TourUtils.wait(500)), + postAction: TourUtils.clickSelector, + }, + { + selector: '.viewWrapper .chooser:not(.hidden)', + placement: 'centered', + html: `Various 'Detail Views', providing additional information, are available.`, + preAction: TourUtils.waitForSelector, + }, + { + selector: '.viewWrapper .chooser button[data-viewid="celllinedb_expression_vs_copynumber"]', + placement: 'centered', + html: `For instance, clicking on 'Expression vs Copy Number' opens a scatter plot showing the relation of the two types of data`, + postAction: TourUtils.clickSelector, + }, + { + html: `

Thanks for joining this tour demonstrating the basic features of Ordino.

+

There are many more features to discover. Enjoy!

`, + }, + ]; + } +} +//# sourceMappingURL=AssessBCCellLines.js.map \ No newline at end of file diff --git a/dist/tours/AssessBCCellLines.js.map b/dist/tours/AssessBCCellLines.js.map new file mode 100644 index 00000000..97a5da6e --- /dev/null +++ b/dist/tours/AssessBCCellLines.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AssessBCCellLines.js","sourceRoot":"","sources":["../../src/tours/AssessBCCellLines.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/tours/WelcomeTour.d.ts.map b/dist/tours/WelcomeTour.d.ts.map index b1882c68..ccfba649 100644 --- a/dist/tours/WelcomeTour.d.ts.map +++ b/dist/tours/WelcomeTour.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"WelcomeTour.d.ts","sourceRoot":"","sources":["../../src/tours/WelcomeTour.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAa,MAAM,UAAU,CAAC;AAE5C,qBAAa,WAAW;IACtB,MAAM,CAAC,UAAU,IAAI,KAAK,EAAE;CA+K7B"} \ No newline at end of file +{"version":3,"file":"WelcomeTour.d.ts","sourceRoot":"","sources":["../../src/tours/WelcomeTour.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAa,MAAM,UAAU,CAAC;AAG5C,qBAAa,WAAW;IACtB,MAAM,CAAC,UAAU,IAAI,KAAK,EAAE;CA+K7B"} \ No newline at end of file diff --git a/dist/tours/WelcomeTour.js b/dist/tours/WelcomeTour.js index 9a0e18a5..eb8e4e7d 100644 --- a/dist/tours/WelcomeTour.js +++ b/dist/tours/WelcomeTour.js @@ -1,4 +1,5 @@ import { TourUtils } from 'tdp_core'; +import { openAddColumPanel } from './utils'; export class WelcomeTour { static createTour() { return [ @@ -57,7 +58,7 @@ export class WelcomeTour { selector: '.lu-side-panel-wrapper .lu-adder > button', html: `Additional columns can be added using the plus sign.`, placement: 'centered', - postAction: TourUtils.clickSelector, + postAction: openAddColumPanel, }, { selector: '.lu-search .lu-search-item', diff --git a/dist/tours/WelcomeTour.js.map b/dist/tours/WelcomeTour.js.map index 0957a44f..f1433c3e 100644 --- a/dist/tours/WelcomeTour.js.map +++ b/dist/tours/WelcomeTour.js.map @@ -1 +1 @@ -{"version":3,"file":"WelcomeTour.js","sourceRoot":"","sources":["../../src/tours/WelcomeTour.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"WelcomeTour.js","sourceRoot":"","sources":["../../src/tours/WelcomeTour.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/tours/index.d.ts b/dist/tours/index.d.ts index 7ef18030..7f2f9116 100644 --- a/dist/tours/index.d.ts +++ b/dist/tours/index.d.ts @@ -1,4 +1,8 @@ export * from './WelcomeTour'; export * from './AddColumnToGeneListTour'; export * from './StartMenuTour'; +export * from './AssessBCCellLinesTour'; +export * from './PredictionTP53Tour'; +export * from './PredictionTP53Tour2'; +export * from './DrugTargetDiscoveryTour'; //# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/dist/tours/index.d.ts.map b/dist/tours/index.d.ts.map index 4d518b17..878fdb0f 100644 --- a/dist/tours/index.d.ts.map +++ b/dist/tours/index.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tours/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC"} \ No newline at end of file +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tours/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC"} \ No newline at end of file diff --git a/dist/tours/index.js b/dist/tours/index.js index 1d5ea8d4..c91f02b2 100644 --- a/dist/tours/index.js +++ b/dist/tours/index.js @@ -1,4 +1,8 @@ export * from './WelcomeTour'; export * from './AddColumnToGeneListTour'; export * from './StartMenuTour'; +export * from './AssessBCCellLinesTour'; +export * from './PredictionTP53Tour'; +export * from './PredictionTP53Tour2'; +export * from './DrugTargetDiscoveryTour'; //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/tours/index.js.map b/dist/tours/index.js.map index b1d7eaa5..a2cb0eff 100644 --- a/dist/tours/index.js.map +++ b/dist/tours/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tours/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tours/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC"} \ No newline at end of file diff --git a/package.json b/package.json index d95b899b..30ce7f20 100644 --- a/package.json +++ b/package.json @@ -57,6 +57,7 @@ "dependencies": { "jquery-ui": "1.12.1", "jstat": "^1.9.4", + "react-select-event": "^5.5.1", "react-highlight-words": "^0.17.0", "react-select": "^4.1.0", "react-select-async-paginate": "^0.5.3", diff --git a/src/assets/previews/tourAddColumn.png b/src/assets/previews/tourAddColumn.png new file mode 100644 index 00000000..f6bf7c6c Binary files /dev/null and b/src/assets/previews/tourAddColumn.png differ diff --git a/src/assets/previews/tourBreastCancerCL.png b/src/assets/previews/tourBreastCancerCL.png new file mode 100644 index 00000000..247c9481 Binary files /dev/null and b/src/assets/previews/tourBreastCancerCL.png differ diff --git a/src/assets/previews/tourDrugDiscovery.png b/src/assets/previews/tourDrugDiscovery.png new file mode 100644 index 00000000..ffdfc18f Binary files /dev/null and b/src/assets/previews/tourDrugDiscovery.png differ diff --git a/src/assets/previews/tourOrdinoWelcome.png b/src/assets/previews/tourOrdinoWelcome.png new file mode 100644 index 00000000..348042c0 Binary files /dev/null and b/src/assets/previews/tourOrdinoWelcome.png differ diff --git a/src/assets/previews/tourStartMenu.png b/src/assets/previews/tourStartMenu.png new file mode 100644 index 00000000..c5401b45 Binary files /dev/null and b/src/assets/previews/tourStartMenu.png differ diff --git a/src/assets/previews/tourTP53Predictor.png b/src/assets/previews/tourTP53Predictor.png new file mode 100644 index 00000000..2a6d2848 Binary files /dev/null and b/src/assets/previews/tourTP53Predictor.png differ diff --git a/src/phovea.ts b/src/phovea.ts index fbf17085..ebf57363 100644 --- a/src/phovea.ts +++ b/src/phovea.ts @@ -1019,7 +1019,7 @@ export default function (registry) { name: 'Ordino Welcome Tour', description: 'Learn the basic features of Ordino in a short welcome tour.', preview() { - return import('./assets/previews/expression.jpg'); // TODO update preview image + return import('./assets/previews/tourOrdinoWelcome.png'); }, multiPage: true, level: 'beginner', @@ -1038,7 +1038,7 @@ export default function (registry) { name: 'Overview of Start Menu', description: 'This tour provides an overview of the Ordino start menu.', preview() { - return import('./assets/previews/expression.jpg'); // TODO update preview image + return import('./assets/previews/tourStartMenu.png'); }, multiPage: true, level: 'beginner', @@ -1057,7 +1057,84 @@ export default function (registry) { name: 'Adding Data Columns', description: 'Learn how to add data columns to rankings in Ordino.', preview() { - return import('./assets/previews/expression.jpg'); // TODO update preview image + return import('./assets/previews/tourAddColumn.png'); + }, + multiPage: true, + level: 'beginner', + canJumpAround: false, + }, + ); + + registry.push( + 'tdpTour', + 'ordinoAssessBCCellLinesTour', + function () { + return import('./tours').then((t) => t.AssessBCCellLinesTour); + }, + { + factory: 'createTour', + name: 'Assessment of Breast Cancer Cell Lines', + description: 'This case study summarizes an analysis session carried out by a scientist working in a drug discovery team at a pharmaceutical company.', + preview() { + return import('./assets/previews/tourBreastCancerCL.png'); + }, + multiPage: true, + level: 'beginner', + canJumpAround: false, + }, + ); + + registry.push( + 'tdpTour', + 'ordinoPredictionTP53Tour', + function () { + return import('./tours').then((t) => t.PredictionTP53Tour); + }, + { + factory: 'createTour', + name: 'Prediction of TP53 Mutation Status (Part 1)', + description: 'This case study summarizes another analysis session, this time involving the prediction of the mutation status for TP53.', + preview() { + return import('./assets/previews/tourTP53Predictor.png'); + }, + multiPage: true, + level: 'beginner', + canJumpAround: false, + }, + ); + + registry.push( + 'tdpTour', + 'ordinoPredictionTP53Tour2', + function () { + return import('./tours').then((t) => t.PredictionTP53Tour2); + }, + { + factory: 'createTour', + name: 'Prediction of TP53 Mutation Status (Part 2)', + description: 'This case study serves as a continuation of the initial tour "Prediction of TP53 Mutation Status".', + preview() { + return import('./assets/previews/tourTP53Predictor.png'); + }, + multiPage: true, + level: 'beginner', + canJumpAround: false, + }, + ); + + registry.push( + 'tdpTour', + 'ordinoDrugTargetDiscoveryTour', + function () { + return import('./tours').then((t) => t.DrugTargetDiscoveryTour); + }, + { + factory: 'createTour', + name: 'Drug Target Discovery', + description: + 'A demonstration of Taggle (integrated into the Ordino Target Discovery Platform) by means of a case study conducted on complex genomics data for the purpose of drug target discovery.', + preview() { + return import('./assets/previews/tourDrugDiscovery.png'); }, multiPage: true, level: 'beginner', diff --git a/src/tours/AddColumnToGeneListTour.ts b/src/tours/AddColumnToGeneListTour.ts index 79c04473..fdcf0a1b 100644 --- a/src/tours/AddColumnToGeneListTour.ts +++ b/src/tours/AddColumnToGeneListTour.ts @@ -1,4 +1,5 @@ import { IStep, TourUtils } from 'tdp_core'; +import { openAddColumPanel } from './utils'; export class AddColumnToGeneListTour { static createTour(): IStep[] { @@ -64,7 +65,7 @@ export class AddColumnToGeneListTour { selector: '.lu-side-panel-wrapper .lu-adder > button', html: `Additional columns can be added using the plus sign.`, placement: 'centered', - postAction: TourUtils.clickSelector, + postAction: openAddColumPanel, }, { @@ -93,7 +94,7 @@ export class AddColumnToGeneListTour {

In this example, we select 'Strand'

`, placement: 'centered', preAction: () => TourUtils.waitFor('.modal.show').then(() => TourUtils.wait(250)), - postAction: () => TourUtils.setValueAndTrigger('.col > select', 'strand', 'change'), + postAction: () => TourUtils.setValueAndTrigger('.show .col > select', 'strand', 'change'), }, { @@ -133,9 +134,7 @@ export class AddColumnToGeneListTour { selector: '.lu-search .lu-search-group .lu-search-item', placement: 'centered', html: `Now, we want to add two columns containing the copy number information of two specific cell lines. To do so, we open the 'Cell Line Score (Single)' dialog`, - preAction: () => { - TourUtils.click('.lu-side-panel-wrapper .lu-adder > button'); - }, + preAction: openAddColumPanel, postAction: () => { TourUtils.click('.lu-search .lu-search-group .lu-search-item'); TourUtils.toggleClass('.lu-adder.once', 'once', false); @@ -157,7 +156,7 @@ export class AddColumnToGeneListTour { placement: 'centered', html: `As data type, we choose 'Relative Copy Number'`, postAction: () => { - TourUtils.setValueAndTrigger('.col > select', 'copy_number-relativecopynumber', 'change'); + TourUtils.setValueAndTrigger('.show .col > select', 'copy_number-relativecopynumber', 'change'); }, }, @@ -180,9 +179,7 @@ export class AddColumnToGeneListTour { placement: 'centered', html: `Finally, we want to add an aggregated column containing the mean/average copy number values of all breast cancer cell lines. To do so, we open the 'Cell Line Score (Aggregated)' dialog`, - preAction: () => { - TourUtils.click('.lu-side-panel-wrapper .lu-adder > button'); - }, + preAction: openAddColumPanel, postAction: () => { TourUtils.click('.lu-search .lu-search-group .lu-search-item:nth-child(2)'); TourUtils.toggleClass('.lu-adder.once', 'once', false); @@ -197,26 +194,26 @@ export class AddColumnToGeneListTour { }, { - selector: '.modal-body form > .col-sm-12:nth-child(1) .row:nth-child(1) div:nth-child(1) select', + selector: '.show .modal-body form > .col-sm-12:nth-child(1) .row:nth-child(1) div:nth-child(1) select', html: `

First, we need to define the subset of cell lines which we want to aggregate.

For the filter attribute we select 'Tumor Type'

`, placement: 'centered', postAction: () => { - TourUtils.setValueAndTrigger('.modal-body form > div:nth-child(1) .row:nth-child(1) div:nth-child(1) select', 'tumortype', 'change'); + TourUtils.setValueAndTrigger('.show .modal-body form > div:nth-child(1) .row:nth-child(1) div:nth-child(1) select', 'tumortype', 'change'); }, }, { - selector: '.modal-body form > .col-sm-12:nth-child(1) .row:nth-child(1) .row:nth-child(1) > div:nth-child(2) .select2', + selector: '.show .modal-body form > .col-sm-12:nth-child(1) .row:nth-child(1) .row:nth-child(1) > div:nth-child(2) .select2', html: `… and for the filter value we select 'breast carcinoma'.`, placement: 'centered', preAction: () => - TourUtils.waitFor('.modal-body form > .col-sm-12:nth-child(1) .row:nth-child(1) .row:nth-child(1) > div:nth-child(2) .select2').then(() => + TourUtils.waitFor('.show .modal-body form > .col-sm-12:nth-child(1) .row:nth-child(1) .row:nth-child(1) > div:nth-child(2) .select2').then(() => TourUtils.wait(250), ), postAction: () => { TourUtils.setValueAndTrigger( - '.modal-body form > .col-sm-12:nth-child(1) .row:nth-child(1) .row:nth-child(1) > div:nth-child(2) select', + '.show .modal-body form > .col-sm-12:nth-child(1) .row:nth-child(1) .row:nth-child(1) > div:nth-child(2) select', 'breast carcinoma', 'change', ); @@ -224,21 +221,21 @@ export class AddColumnToGeneListTour { }, { - selector: '.modal-body form > .col-sm-12:nth-child(2) .row:nth-child(1) .select2', + selector: '.show .modal-body form > .col-sm-12:nth-child(2) .row:nth-child(1) .select2', placement: 'centered', html: `As data type, we choose 'Relative Copy Number' …`, postAction: () => { - TourUtils.setValueAndTrigger('.modal-body form > .col-sm-12:nth-child(2) select', 'copy_number-relativecopynumber', 'change'); + TourUtils.setValueAndTrigger('.show .modal-body form > .col-sm-12:nth-child(2) select', 'copy_number-relativecopynumber', 'change'); }, }, { - selector: '.modal-body form > .col-sm-12:nth-child(3) select', + selector: '.show .modal-body form > .col-sm-12:nth-child(3) select', placement: 'centered', html: `

… and as type of aggregation we choose 'Average'

FYI: other types of aggregation are, for instance, 'Min', 'Max', 'Median', 'Count', and 'Boxplot'.`, postAction: () => { - TourUtils.setValueAndTrigger('.modal-body form > .col-sm-12:nth-child(3) > select', 'avg', 'change'); + TourUtils.setValueAndTrigger('.show .modal-body form > .col-sm-12:nth-child(3) > select', 'avg', 'change'); }, }, diff --git a/src/tours/AssessBCCellLinesTour.ts b/src/tours/AssessBCCellLinesTour.ts new file mode 100644 index 00000000..cd25c628 --- /dev/null +++ b/src/tours/AssessBCCellLinesTour.ts @@ -0,0 +1,463 @@ +import { IStep, TourUtils } from 'tdp_core'; +import { openAddColumPanel, setNextActive } from './utils'; + +export class AssessBCCellLinesTour { + static createTour(): IStep[] { + return [ + { + html: `

Welcome to this short tour showing the assessment of breast cancer cell lines!

+

This tour will follow an analysis session from the perspective of a drug discovery team at a pharmaceutical company.

+

+ Use the "Next" button to iterate through all the steps. You can use the + "Cancel" button at any time to stop the tour and to interact with Ordino. + Please note that the tour will load a new analysis session and the current + one will be discarded. +

`, + }, + { + selector: 'ul[data-header="mainMenu"] > li:first-child > a', + html: `To start the analysis, the team clicks on the 'Datasets' tab.`, + placement: 'centered', + preAction: () => { + const datasetTab = document.querySelector('ul[data-header="mainMenu"] > li:nth-child(1)') as HTMLElement; + if (!datasetTab.classList.contains('active')) { + datasetTab.querySelector('a').classList.add('hover'); + } + }, + postAction: async () => { + const datasetTab = document.querySelector('ul[data-header="mainMenu"] > li:nth-child(1)') as HTMLElement; + if (!datasetTab.classList.contains('active')) { + datasetTab.querySelector('a').classList.remove('hover'); + datasetTab.querySelector('a').click(); + } + return TourUtils.waitFor('.ordino-dataset.genes-dataset').then(() => TourUtils.click('#ordino_dataset_tab > .ordino-scrollspy-nav > a:nth-child(3)')); + }, + pageBreak: 'manual', + }, + { + selector: '.ordino-dataset.genes-dataset > .card', + html: `

Here they choose between the three entity types 'Cell Lines', 'Tissue Samples', and 'Genes'.

+

In this example they choose to work with a list of genes.

`, + placement: 'centered', + preAction: () => TourUtils.waitFor('#ordino_dataset_tab > .ordino-scrollspy-container .genes-dataset > .card').then(() => TourUtils.wait(1000)), + postAction: () => TourUtils.click('.ordino-dataset.genes-dataset .session-tab > li:first-child'), + }, + { + selector: '[data-testid="normal-chromosome-protein-coding-human-genes-button"]', + html: `The scientists start by loading the list of all protein coding genes for humans.`, + placement: 'centered', + postAction: async () => { + return TourUtils.waitFor('.ordino-dataset.genes-dataset .dataset-entry button[title^="Name: normal chromosome protein coding human genes"]').then( + TourUtils.click, + ); + }, + pageBreak: 'manual', + }, + { + selector: '.le.le-multi.lineup-engine', + placement: 'centered', + preAction: () => TourUtils.waitFor('.le.le-multi.lineup-engine', Infinity).then(() => TourUtils.wait(2000)), + html: `The information is presented in a tabular format. Additionally to the gene ID, a set of columns containing some basic information is shown by default.`, + }, + { + selector: '.lu-side-panel-wrapper .lu-adder > button', + html: `They begin by adding an additional column, done so by clicking on the plus icon shown here.`, + placement: 'centered', + postAction: openAddColumPanel, + }, + { + selector: '[data-testid="lu-adder-div"] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(1) > span', + html: `They choose to add a column for a single cell line score.`, + placement: 'centered', + postAction: async () => { + TourUtils.click('[data-testid="lu-adder-div"] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(1) > span'); + TourUtils.toggleClass('.lu-adder.once', 'once', false); + return Promise.resolve(); + }, + }, + { + selector: '.modal.show .col > .select3', + placement: 'centered', + preAction: () => TourUtils.waitFor('.modal.show', Infinity).then(() => TourUtils.wait(150)), + html: `Now they select the cell line 'HCC1954' …`, + postAction: () => { + TourUtils.setValueAndTrigger('.modal.show .select3 input.select2-search__field', 'HCC1954;', 'input'); + }, + }, + { + selector: '.modal.show .col > .select2', + placement: 'centered', + html: `… and the data type as 'Relative Copy Number' …`, + postAction: () => { + TourUtils.setValueAndTrigger('.show .col > select', 'copy_number-relativecopynumber', 'change'); + }, + }, + { + selector: '.modal.show .modal-footer button[type=submit]', + html: `… and click 'Add'.`, + placement: 'centered', + postAction: TourUtils.clickSelector, + }, + { + selector: '.le [data-col-id="col8"] .lu-action-sort', + placement: 'centered', + html: `They want to sort by this newly added column, so they click on the sort button in the column header.`, + preAction: () => TourUtils.waitFor('.le-tr[data-index="0"] [data-id="col8"].lu-renderer-number', Infinity), + postAction: () => { + TourUtils.click('.le [data-col-id="col8"] .lu-action-sort'); + }, + }, + { + selector: ['[data-index="0"].le-tr, [data-index="14"].le-tr'], + placement: 'centered', + html: `After sorting by this column, the analyst observes that about 15 genes on chromosome 17 are affected by a large genomic amplification.`, + preAction: () => TourUtils.waitFor('[data-index="0"].le-tr', Infinity).then(() => TourUtils.wait(2000)), + }, + { + selector: '.lu-side-panel-wrapper .lu-adder > button', + html: `

In order to identify the most relevant of these genes, the analyst adds a column with the Normalized Gene Expression (a measure of activity) for cell line HCC1954

+

Individual steps for adding a column have been skipped this time.

`, + placement: 'centered', + postAction: async () => { + TourUtils.click('.lu-side-panel-wrapper .lu-adder > button'); + TourUtils.click('[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(1) > span'); + TourUtils.toggleClass('.lu-adder.once', 'once', false); + await TourUtils.waitFor('.modal.show').then(async () => { + TourUtils.setValueAndTrigger('.modal.show .select3 input.select2-search__field', 'HCC1954;', 'input'); + TourUtils.setValueAndTrigger('.show .col > select', 'expression-tpm', 'change'); + await TourUtils.wait(1000); + TourUtils.click('.modal.show .modal-footer button[type=submit]'); + }); + }, + }, + { + selector: '.lu-side-panel-wrapper .lu-adder > button', + html: `They also add a column with a Gene Sensitivity Score (a measure of importance for cell survival) for HCC1954.`, + placement: 'centered', + preAction: () => TourUtils.waitFor('.le-tr[data-index="0"] [data-id="col9"].lu-renderer-number', Infinity), + postAction: () => { + TourUtils.click('.lu-side-panel-wrapper .lu-adder > button'); + }, + }, + { + selector: '[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(5) > span', + html: `

To do so, they select to add a 'Depletion Screen Score (Single)' column.

+

Similarly, the specific steps for adding a column have been skipped this time.

`, + placement: 'centered', + postAction: () => { + TourUtils.click('[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(5) > span'); + TourUtils.toggleClass('.lu-adder.once', 'once', false); + TourUtils.waitFor('.modal.show').then(() => { + TourUtils.setValueAndTrigger('.modal.show .select3 input.select2-search__field', 'HCC1954;', 'input'); + TourUtils.setValueAndTrigger('.show .col > select', 'depletion-rsa', 'change'); + TourUtils.wait(1000).then(() => TourUtils.click('.modal.show .modal-footer button[type=submit]')); + }); + }, + }, + { + selector: '[data-id="col10"] > .lu-toolbar > .lu-action-more', + html: `

In an effort to improve the depletion score's readability, they decide to invert the linear scaling.

+

To do this, they click on the three dots for more column options.

`, + placement: 'centered', + preAction: () => TourUtils.waitFor('.le-tr[data-index="0"] [data-id="col10"].lu-renderer-number', Infinity), + postAction: TourUtils.clickSelector, + }, + { + selector: '.lu-action-data-mapping > span', + html: `They now click on 'Data Mapping'.`, + placement: 'centered', + postAction: TourUtils.clickSelector, + }, + { + selector: ['.browser-default, .lu-dialog-buttons > [type="submit"]'], + html: `They select the 'Invert' option in the Normalization Scaling dropdown and then click on the tick at the bottom right to apply the new mapping.`, + placement: 'centered', + postAction: () => { + TourUtils.setValueAndTrigger('.browser-default', 'linear_invert', 'change'); + TourUtils.click('.lu-dialog-buttons > [type="submit"]'); + }, + }, + { + selector: '[data-index="0"]', + placement: 'centered', + html: `Observe: Of the highly amplified genes, they notice that ERBB2 (HER2) has the highest expression and the lowest sensitivity score. Therefore, it is probably the most relevant gene of this amplicon.`, + }, + { + selector: ['.le header [data-col-id="col9"], .le header [data-col-id="col10"]'], + html: `

They can combine both score columns by dragging them together to obtain stacked bars.

+

Observe: Combining the columns highlights the importance of ERBB2.

+

It is therefore probably the most relevant gene within this amplified genomic region.

`, + placement: 'centered', + allowUserInteraction: true, + }, + { + selector: '[data-index="0"]', + html: `

This finding leads the scientist to the question whether ERBB2 is also highly expressed and frequently amplified in other breast cancer cell lines.

+

To investigate this, the analyst adds the following columns: +

    +
  • A column with the average gene expression for breast cancer cell lines
  • +
  • A column with the gene copy number distribution for breast cancer cell lines in boxplot format
  • +
  • A column with the gene amplification frequency (>4) across all breast cancer cell lines
  • +
+

`, + placement: 'centered', + }, + { + selector: '.lu-side-panel-wrapper .lu-adder > button', + html: `1. A column with the average gene expression for breast cancer cell lines`, + placement: 'centered', + postAction: () => { + TourUtils.click('.lu-side-panel-wrapper .lu-adder > button'); + TourUtils.click('[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(2) > span'); + TourUtils.toggleClass('.lu-adder.once', 'once', false); + TourUtils.waitFor('.show .modal-body form > div:nth-child(1) .row:nth-child(1) div:nth-child(1) select').then(async () => { + TourUtils.setValueAndTrigger('.show .modal-body form > div:nth-child(1) .row:nth-child(1) div:nth-child(1) select', 'tumortype', 'change'); + await TourUtils.wait(500); + TourUtils.setValueAndTrigger( + '.show .modal-body form > .col-sm-12:nth-child(1) .row:nth-child(1) .row:nth-child(1) > div:nth-child(2) select', + 'breast carcinoma', + 'change', + ); + TourUtils.setValueAndTrigger('.show .modal-body form > .col-sm-12:nth-child(2) select', 'expression-tpm', 'change'); + TourUtils.setValueAndTrigger('.show [data-testid="aggregation"] select', 'avg', 'change'); + TourUtils.wait(1000).then(() => { + TourUtils.click('.modal.show .modal-footer button[type=submit]'); + }); + }); + }, + }, + { + selector: '.lu-side-panel-wrapper .lu-adder > button', + html: `2. A column with the gene copy number distribution for breast cancer cell lines in boxplot format`, + placement: 'centered', + preAction: () => TourUtils.waitFor('.le-tr:nth-of-type(1) [data-id="col11"].lu-renderer-number', Infinity), + postAction: () => { + TourUtils.click('.lu-side-panel-wrapper .lu-adder > button'); + TourUtils.click('[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(2) > span'); + TourUtils.toggleClass('.lu-adder.once', 'once', false); + TourUtils.waitFor('.show .modal-body form > div:nth-child(1) .row:nth-child(1) div:nth-child(1) select').then(async () => { + TourUtils.setValueAndTrigger('.show .modal-body form > div:nth-child(1) .row:nth-child(1) div:nth-child(1) select', 'tumortype', 'change'); + await TourUtils.wait(500); + TourUtils.setValueAndTrigger( + '.show .modal-body form > .col-sm-12:nth-child(1) .row:nth-child(1) .row:nth-child(1) > div:nth-child(2) select', + 'breast carcinoma', + 'change', + ); + TourUtils.setValueAndTrigger('.show .modal-body form > .col-sm-12:nth-child(2) select', 'copy_number-relativecopynumber', 'change'); + TourUtils.setValueAndTrigger('.show [data-testid="aggregation"] select', 'boxplot', 'change'); + TourUtils.wait(1000).then(() => { + TourUtils.click('.modal.show .modal-footer button[type=submit]'); + }); + }); + }, + }, + { + selector: '.lu-side-panel-wrapper .lu-adder > button', + html: `3. A column with the gene amplification frequency (>4) across all breast cancer cell lines`, + placement: 'centered', + preAction: () => TourUtils.waitFor('.le-tr:nth-of-type(1) [data-id="col12"].lu-renderer-boxplot', Infinity), + postAction: () => { + TourUtils.click('.lu-side-panel-wrapper .lu-adder > button'); + TourUtils.click('[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(2) > span'); + TourUtils.toggleClass('.lu-adder.once', 'once', false); + TourUtils.waitFor('.show .modal-body form > div:nth-child(1) .row:nth-child(1) div:nth-child(1) select').then(async () => { + TourUtils.setValueAndTrigger('.show .modal-body form > div:nth-child(1) .row:nth-child(1) div:nth-child(1) select', 'tumortype', 'change'); + await TourUtils.wait(500); + TourUtils.setValueAndTrigger( + '.show .modal-body form > .col-sm-12:nth-child(1) .row:nth-child(1) .row:nth-child(1) > div:nth-child(2) select', + 'breast carcinoma', + 'change', + ); + TourUtils.setValueAndTrigger('.show .modal-body form > .col-sm-12:nth-child(2) select', 'copy_number-relativecopynumber', 'change'); + TourUtils.setValueAndTrigger('.show [data-testid="aggregation"] select', 'frequency', 'change'); + TourUtils.waitFor('.show [data-testid="Comparison Operator"]').then(() => { + TourUtils.setValueAndTrigger('.show [data-testid="comparison-operator"] select', '>', 'change'); + TourUtils.setValueAndTrigger('.show [type="number"]', '4', 'input'); + }); + TourUtils.wait(1000).then(() => { + TourUtils.click('.modal.show .modal-footer button[type=submit]'); + }); + }); + }, + }, + { + selector: '.le.le-multi.lineup-engine', + html: `Observe: They notice that ERBB2 is amplified in almost 25% of all assessed breast cancer cell lines. Further, it is highly expressed.`, + placement: 'centered', + preAction: () => TourUtils.waitFor('.le-tr:nth-of-type(1) [title="0.25"]', Infinity), + }, + { + selector: '[data-index="0"] .lu-renderer-selection', + html: `

The aim is now to get more information about ERBB2.

+

They select ERBB2 in the list.

`, + placement: 'centered', + postAction: TourUtils.clickSelector, + }, + { + selector: '[data-viewid="celllinedb_expression_vs_copynumber"]', + html: `They open the Expression vs Copy Number detail view.`, + placement: 'centered', + preAction: TourUtils.waitForSelector, + postAction: TourUtils.clickSelector, + }, + { + selector: '.tdp-view.expressionVsCopyNumber .ids', + html: `Here they observe the direct correlation between copy number and expression of ERBB2.`, + placement: 'centered', + preAction: () => TourUtils.waitFor('.tdp-view.expressionVsCopyNumber .ids').then(() => TourUtils.wait(300)), + }, + { + selector: '[data-viewid="targetvalidation"]', + preAction: TourUtils.clickSelector, + html: `To find more information, they open the 'Open Targets' detail view …`, + placement: 'centered', + waitFor: () => TourUtils.waitFor('iframe [title="ERBB2"]').then(setNextActive), + }, + { + selector: '[data-viewid="pubmed"]', + html: `… and then the 'PubMed' detail view.`, + placement: 'centered', + preAction: TourUtils.clickSelector, + waitFor: () => TourUtils.waitFor('.tdp-view.proxy_view ').then(setNextActive), + }, + { + selector: '', + html: `Their question is now: In what cell lines is ERBB2 amplified?`, + placement: 'centered', + }, + { + selector: '[data-viewid="copynumbertable"]', + html: `They continue by opening the Copy Number detail view …`, + placement: 'centered', + postAction: TourUtils.clickSelector, + }, + { + selector: '[data-id="col7"] .lu-action-sort', + html: `… and then sorting by the copy number.`, + placement: 'centered', + preAction: TourUtils.waitForSelector, + postAction: TourUtils.clickSelector, + }, + { + selector: '[data-testid="viewWrapper-1"] [data-id="col4"] .lu-action-filter', + html: `They want to filter for breast cancer via the column menu of column 'Tumor Type', while also filtering out cell lines with unknown tumor types.`, + placement: 'centered', + postAction: TourUtils.clickSelector, + }, + { + selector: '.lu-dialog .lu-dialog-table', + html: `First they select only the "breast carcinoma" tumor type.`, + placement: 'centered', + postAction: () => { + TourUtils.wait(100) + .then(() => { + TourUtils.click('.lu-dialog-table .lu-checkbox:first-child'); + }) + .then(() => { + TourUtils.wait(500).then(() => { + TourUtils.click('input[type="checkbox"][data-cat="breast carcinoma"]'); + }); + }); + }, + }, + { + selector: ['.lu-dialog .lu-dialog-table, .lu-dialog-button[title="Apply"]'], + html: `Then they filter out cell lines with unknown types (the missing value rows) and submit the filter.`, + placement: 'centered', + postAction: () => { + TourUtils.wait(100) + .then(() => { + TourUtils.click('.lu-dialog > .lu-checkbox input'); + }) + .then(() => { + TourUtils.wait(500).then(() => { + TourUtils.click('.lu-dialog-button[type="submit"]'); + }); + }); + }, + }, + { + selector: '[data-testid="viewWrapper-1"] .lu-side-panel-wrapper .lu-adder > button', + html: `They now want to add the BRCA gene score columns.`, + placement: 'centered', + postAction: openAddColumPanel, + }, + { + selector: '[data-testid="viewWrapper-1"] [data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(1) > span', + html: `Once again, they use the plus icon to add a new column.`, + placement: 'centered', + postAction: () => { + TourUtils.click( + '[data-testid="viewWrapper-1"] [data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(1) > span', + ); + TourUtils.toggleClass('.lu-adder.once', 'once', false); + }, + }, + { + selector: '.modal.show .col > .select3', + placement: 'centered', + preAction: () => TourUtils.waitFor('.modal.show').then(() => TourUtils.wait(150)), + html: `Here they select the BRCA1 and BRCA2 cell lines …`, + postAction: () => { + TourUtils.setValueAndTrigger('.modal.show .select3 input.select2-search__field', 'BRCA1;', 'input'); + TourUtils.wait(400).then(() => { + TourUtils.setValueAndTrigger('.modal.show .select3 input.select2-search__field', 'BRCA2;', 'input'); + }); + }, + }, + { + selector: '.modal.show .col > .select2', + placement: 'centered', + html: `… and then they set the data type to AA Mutated …`, + postAction: () => { + TourUtils.setValueAndTrigger('.show .col > select', 'mutation-aa_mutated', 'change'); + }, + }, + { + selector: '.modal.show .modal-footer button[type=submit]', + html: `… and click 'Add'.`, + placement: 'centered', + postAction: TourUtils.clickSelector, + }, + { + selector: ['[data-testid="viewWrapper-1"] [data-index="0"].le-tr, [data-testid="viewWrapper-1"] [data-index="2"].le-tr'], + html: `

Observe:

+

HCC1954 has the highest ERBB2 amplification among BRCA1 mutated cell lines.

+

HCC1569 has the highest ERBB2 amplification among BRCA2 mutated cell lines.

`, + placement: 'centered', + preAction: () => TourUtils.waitFor('.le-tr:nth-of-type(1) [data-id="col8"][data-renderer="categorical"]'), + }, + { + selector: '', + html: `Finally, their aim is to find information provided by COSMIC about these two cell lines.`, + placement: 'centered', + }, + { + selector: ['[data-testid="viewWrapper-1"] [data-index="0"].le-tr, [data-testid="viewWrapper-1"] [data-index="2"].le-tr'], + html: `They select HCC1954 and HCC1569 …`, + placement: 'centered', + postAction: () => { + TourUtils.click('[data-testid="viewWrapper-1"] [data-index="0"] .lu-renderer-selection'); + TourUtils.click('[data-testid="viewWrapper-1"] [data-index="2"] .lu-renderer-selection'); + }, + }, + { + selector: '[data-testid="viewWrapper-1"] [data-viewid="cosmic"]', + html: `… and open the COSMIC detail view.`, + placement: 'centered', + preAction: TourUtils.waitForSelector, + postAction: TourUtils.clickSelector, + }, + { + selector: '[data-testid="viewWrapper-2"] select', + html: `Here they can use the drop-down menu to switch between the two cell lines.`, + placement: 'centered', + preAction: () => TourUtils.waitFor('[data-testid="viewWrapper-2"] select').then(() => TourUtils.wait(1000)), + }, + { + html: `

Thanks for joining this tour demonstrating the assessment of breast cancer cell lines.

+

There are still many more features to discover. Enjoy!

`, + }, + ]; + } +} diff --git a/src/tours/DrugTargetDiscoveryTour.ts b/src/tours/DrugTargetDiscoveryTour.ts new file mode 100644 index 00000000..231e5a30 --- /dev/null +++ b/src/tours/DrugTargetDiscoveryTour.ts @@ -0,0 +1,431 @@ +// import {ToursSection} from 'ordino'; +import { IStep, TourUtils } from 'tdp_core'; +import { openAddColumPanel } from './utils'; + +export class DrugTargetDiscoveryTour { + static createTour(): IStep[] { + return [ + { + html: `

Welcome to this short tour showing the assessment of breast cancer cell lines!

+

This tour will follow an analysis session from the perspective of a drug discovery team at a pharmaceutical company.

+

+ Use the "Next" button to iterate through all the steps. You can use the + "Cancel" button at any time to stop the tour and to interact with Ordino. + Please note that the tour will load a new analysis session and the current + one will be discarded. +

`, + }, + { + selector: 'ul[data-header="mainMenu"] > li:first-child > a', + html: `To start the analysis, the team clicks on the 'Datasets' tab.`, + placement: 'centered', + preAction: () => { + const datasetTab = document.querySelector('ul[data-header="mainMenu"] > li:nth-child(1)') as HTMLElement; + if (!datasetTab.classList.contains('active')) { + datasetTab.querySelector('a').classList.add('hover'); + } + }, + postAction: () => { + const datasetTab = document.querySelector('ul[data-header="mainMenu"] > li:nth-child(1)') as HTMLElement; + if (!datasetTab.classList.contains('active')) { + datasetTab.querySelector('a').classList.remove('hover'); + datasetTab.querySelector('a').click(); + } + return TourUtils.waitFor('.ordino-dataset.cellline-dataset').then(() => + TourUtils.click('#ordino_dataset_tab > .ordino-scrollspy-nav > a:nth-child(1)'), + ); + }, + pageBreak: 'manual', + }, + { + selector: '.ordino-dataset.cellline-dataset > .card [data-testid="ccle-button"]', + html: `The analyst begins by loading a list of 1009 cell lines from the public CCLE dataset.`, + placement: 'centered', + preAction: () => TourUtils.waitFor('.ordino-dataset.cellline-dataset > .card [data-testid="ccle-button"]').then(() => TourUtils.wait(600)), + postAction: TourUtils.clickSelector, + pageBreak: 'manual', + }, + { + selector: '.le.le-multi.lineup-engine', + placement: 'centered', + html: `The information is presented in a tabular format. Additionally to the gene ID, a set of columns containing some basic information is shown by default.`, + preAction: () => TourUtils.waitFor('.le.le-multi.lineup-engine', Infinity).then(() => TourUtils.wait(1500)), + }, + { + selector: '[data-id="col4"] .lu-action-filter', + placement: 'centered', + html: `Since only a subset of tumor types is of interest, the analyst decides to filter the data.`, + postAction: TourUtils.clickSelector, + }, + { + selector: '.lu-dialog .lu-dialog-table', + html: `Here they select only the following filters: astrocytoma/glioblastoma (type of cancer of the brain), bone sarcoma, melanoma, and non-small-cell lung cancer (NSCLC).`, + placement: 'centered', + postAction: () => { + TourUtils.wait(100) + .then(() => { + TourUtils.click('.lu-dialog-table .lu-checkbox:first-child'); + }) + .then(() => { + TourUtils.wait(500).then(() => { + TourUtils.click('input[type="checkbox"][data-cat="astrocytoma/glioblastoma"]'); + TourUtils.click('input[type="checkbox"][data-cat="bone sarcoma"]'); + TourUtils.click('input[type="checkbox"][data-cat="melanoma"]'); + TourUtils.click('input[type="checkbox"][data-cat="NSCLC"]'); + TourUtils.click('.lu-dialog > .lu-checkbox input'); + }); + }); + }, + }, + { + selector: ['.lu-dialog .lu-dialog-table, .lu-dialog-button[title="Apply"]'], + html: `They now apply the filter, after which only 255 cell lines remain.`, + placement: 'centered', + postAction: () => { + TourUtils.click('.lu-dialog-button[type="submit"]'); + }, + }, + { + selector: '.lu-side-panel-wrapper .lu-adder > button', + html: `As the analyst wants to investigate the TP53 gene, he decides to add a categorical column with the mutation status (mutated vs non mutated).`, + placement: 'centered', + preAction: TourUtils.waitForSelector, + postAction: openAddColumPanel, + }, + { + selector: '[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(1) > span', + html: `They do this by adding a column for a single cell line score.`, + placement: 'centered', + postAction: () => { + TourUtils.click('[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(1) > span'); + TourUtils.toggleClass('.lu-adder.once', 'once', false); + }, + }, + { + selector: '.modal.show .col > .select3', + placement: 'centered', + preAction: () => TourUtils.waitFor('.modal.show').then(() => TourUtils.wait(150)), + html: `Now they select the cell line 'TP53' …`, + postAction: () => { + TourUtils.setValueAndTrigger('.modal.show .select3 input.select2-search__field', 'TP53;', 'input'); + }, + }, + { + selector: '.modal.show .col > .select2', + placement: 'centered', + html: `… and the data type as 'AA Mutated' …`, + postAction: () => { + TourUtils.setValueAndTrigger('.show .col > select', 'mutation-aa_mutated', 'change'); + }, + }, + { + selector: '.modal.show .modal-footer button[type=submit]', + html: `… and click 'Add'.`, + placement: 'centered', + postAction: TourUtils.clickSelector, + }, + { + selector: '[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(1) > span', + html: `

Additionally, they decide to add a textual column that provides further details about the mutation (if present).

+

This is done by repeating the same steps to add a column, but choosing "AA Mutation" as the data type this time instead.

+

Individual steps for adding a column have been skipped this time.

`, + placement: 'centered', + preAction: openAddColumPanel, + postAction: () => { + TourUtils.click('.lu-side-panel-wrapper .lu-adder > button'); + TourUtils.click('[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(1) > span'); + TourUtils.toggleClass('.lu-adder.once', 'once', false); + TourUtils.waitFor('.modal.show').then(() => { + TourUtils.setValueAndTrigger('.modal.show .select3 input.select2-search__field', 'TP53;', 'input'); + TourUtils.setValueAndTrigger('.show .col > select', 'mutation-aamutation', 'change'); + TourUtils.wait(2000).then(() => TourUtils.click('.modal.show .modal-footer button[type=submit]')); + }); + }, + }, + { + selector: '.lu-side-panel-wrapper .lu-adder > button', + html: `To investigate the effectiveness of the 13 genes in predicting the TP53 status, the analyst loads the average expression of these genes together with a matrix column containing the individual expression values.`, + placement: 'centered', + preAction: () => TourUtils.waitFor('.le [data-col-id="col8"]').then(() => TourUtils.wait(600)), + }, + { + selector: '.lu-side-panel-wrapper .lu-adder > button', + html: `They begin by adding a new column.`, + placement: 'centered', + postAction: openAddColumPanel, + }, + { + selector: '[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(2) > span', + html: `Firstly the column with the average expression is added. This is done by adding a 'Gene Score (Aggregated)' column`, + placement: 'centered', + postAction: () => { + TourUtils.click('[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(2) > span'); + TourUtils.toggleClass('.lu-adder.once', 'once', false); + }, + }, + { + selector: '[data-testid="Filter"] [data-testid="row-1"] .form-select', + html: `They select 'Gene Symbol' in the drop down and then enter the list of genes used for the TP53 Predictor …`, + placement: 'centered', + preAction: () => TourUtils.waitFor('.show .modal-body form > div:nth-child(1) .row:nth-child(1) div:nth-child(1) select'), + postAction: async () => { + // Ensure that the list of inputs is empty first + TourUtils.setValueAndTrigger('.show .modal-body form > div:nth-child(1) .row:nth-child(1) div:nth-child(1) select', 'ensg', 'change'); + await TourUtils.wait(1500); + TourUtils.click('[data-testid="Filter"] [data-testid="close-button"]'); + await TourUtils.wait(1500); + TourUtils.setValueAndTrigger('.show .modal-body form > div:nth-child(1) .row:nth-child(1) div:nth-child(1) select', 'ensg', 'change'); + await TourUtils.wait(1500); + + // Now add the list of 13 genes here instead + TourUtils.setValueAndTrigger( + '.modal-dialog [data-testid="row-2"] .select2 input', + 'AEN,BAX,CCNG1,CDKN1A,DDB2,FDXR,MDM2,RPS27L,RRM2B,SESN1,TNFRSF10B,XPC,ZMAT3', + 'input', + ); + await TourUtils.wait(1020); + + // Inspect if the checkbox is checked, if so then uncheck it + const checkboxTest = document.querySelector('.modal-dialog [data-testid="form-checkbox"]') as HTMLInputElement; + if (!checkboxTest.checked) { + TourUtils.click('.modal-dialog [data-testid="form-checkbox"]'); + } + }, + }, + { + selector: '.show .modal-body form > .col-sm-12:nth-child(2) select', + html: `… then set the 'Data Type' to 'Normalized Gene Expression (TPM Values)' …`, + placement: 'centered', + postAction: () => { + TourUtils.setValueAndTrigger('.show .modal-body form > .col-sm-12:nth-child(2) select', 'expression-tpm', 'change'); + }, + }, + { + selector: '.show [data-testid="aggregation"] select', + html: `… and set the 'Aggregation' to 'Average' …`, + placement: 'centered', + postAction: () => { + TourUtils.setValueAndTrigger('.show [data-testid="aggregation"] select', 'avg', 'change'); + }, + }, + { + selector: '.modal.show .modal-footer button[type=submit]', + html: `… and finally click 'Add'.`, + placement: 'centered', + postAction: () => { + TourUtils.click('.modal.show .modal-footer button[type=submit]'); + }, + }, + { + selector: '[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(2) > span', + html: `Similarly, they add a matrix column with all of the individual expression values.`, + placement: 'centered', + preAction: openAddColumPanel, + postAction: async () => { + TourUtils.click('.lu-side-panel-wrapper .lu-adder > button'); + TourUtils.click('[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(2) > span'); + TourUtils.toggleClass('.lu-adder.once', 'once', false); + await TourUtils.wait(500); + + TourUtils.setValueAndTrigger('.show .modal-body form > div:nth-child(1) .row:nth-child(1) div:nth-child(1) select', 'ensg', 'change'); + await TourUtils.wait(1500); + TourUtils.click('[data-testid="Filter"] [data-testid="close-button"]'); + await TourUtils.wait(1500); + TourUtils.setValueAndTrigger('.show .modal-body form > div:nth-child(1) .row:nth-child(1) div:nth-child(1) select', 'ensg', 'change'); + await TourUtils.wait(1500); + + // Now add the list of 13 genes here instead + TourUtils.setValueAndTrigger( + '.modal-dialog [data-testid="row-2"] .select2 input', + 'AEN,BAX,CCNG1,CDKN1A,DDB2,FDXR,MDM2,RPS27L,RRM2B,SESN1,TNFRSF10B,XPC,ZMAT3', + 'input', + ); + await TourUtils.wait(1020); + + TourUtils.setValueAndTrigger('.show .modal-body form > .col-sm-12:nth-child(2) select', 'expression-tpm', 'change'); + TourUtils.setValueAndTrigger('.show [data-testid="aggregation"] select', 'numbers', 'change'); + + // Inspect if the checkbox is checked, if so then uncheck it + const checkboxTest = document.querySelector('.modal-dialog [data-testid="form-checkbox"]') as HTMLInputElement; + if (!checkboxTest.checked) { + TourUtils.click('.modal-dialog [data-testid="form-checkbox"]'); + } + await TourUtils.wait(1000); + TourUtils.click('.modal.show .modal-footer button[type=submit]'); + await TourUtils.wait(1000); // Button must be pressed twice because of the warning that is thrown + TourUtils.click('.modal.show .modal-footer button[type=submit]'); + }, + }, + { + selector: '[data-id="col7"] .lu-action-filter', + html: `Furthermore, they decide to hide all cell lines with unknown mutation status.`, + placement: 'centered', + // preAction: // ??? Wait for the matrix load + postAction: () => { + TourUtils.click('[data-id="col7"] .lu-action-filter'); + TourUtils.waitFor('.lu-dialog > .lu-checkbox input').then(() => { + TourUtils.click('.lu-dialog > .lu-checkbox input'); + TourUtils.click('.lu-dialog-button[type="submit"]'); + }); + }, + }, + { + selector: '.le [data-col-id="col9"] .lu-action-sort', + html: `Next, they sort the list in descending order based on the average gene expression column that was added …`, + placement: 'centered', + postAction: TourUtils.clickSelector, + }, + { + selector: '[data-testid="en/disable-overview-button"]', + html: `… and then swap to the overview.`, + placement: 'centered', + postAction: TourUtils.clickSelector, + }, + { + selector: '.le.le-multi.lineup-engine', + html: `Looking at the overview, the analyst observes the overall good correlation between expression and mutation status: there is a clear enrichment of TP53 mutants among the cell lines with a low score.`, + placement: 'centered', + }, + { + selector: '.le [data-col-id="col4"] .lu-action-group', + html: `In order to test whether the correlation is present for all selected tumor types, the analyst groups the table by tumor type.`, + placement: 'centered', + postAction: TourUtils.clickSelector, + }, + { + selector: '.le.le-multi.lineup-engine', + html: `They observe that the prediction seems to work particularly well for the astrocytoma/glioblastoma cell lines (almost perfect separation between mutated and non mutated).`, + placement: 'centered', + }, + { + selector: '.le [data-col-id="col7"] .lu-action-more', + html: `They further investigate this observation by also stratifying by mutation status and aggregating all groups.`, + placement: 'centered', + postAction: TourUtils.clickSelector, + }, + { + selector: '.lu-dialog.lu-more-options .lu-action-group', + html: `To do so, they click 'Group By' …`, + placement: 'centered', + postAction: TourUtils.clickSelector, + }, + { + selector: '.lu-dialog input[value="true"]', + html: `… then select 'Enabled' …`, + placement: 'centered', + postAction: TourUtils.clickSelector, + }, + { + selector: '.lu-dialog-buttons > [type="submit"]', + html: `… and then hit apply.`, + placement: 'centered', + postAction: TourUtils.clickSelector, + }, + { + selector: '[title="Collapse All Groups"]:nth-child(2)', + html: `Lastly, they aggregate all of the groups.`, + placement: 'centered', + postAction: TourUtils.clickSelector, + }, + { + selector: '.le.le-multi.lineup-engine', + html: `

The expression box plots show good separation for astrocytoma/glioblastoma and melanoma, whereas the expression ranges are overlapping for NSCLC.

+

Having confirmed that the prediction of the TP53 mutation status works reasonably well in several tumor types, the analyst wants to select a set of cell lines for a wet-lab experiment. He is interested in melanoma cell lines that have no TP53 mutation. Furthermore, the activity of CDKN2A, another important tumor suppressor gene, should be impaired due to a reduced number of CDKN2A gene copies in the genome.

`, + placement: 'centered', + }, + { + selector: '.le [data-col-id="col7"] .lu-action-group', + html: `The analyst now removes the mutation status grouping, …`, + placement: 'centered', + postAction: TourUtils.clickSelector, + }, + { + selector: '.le [data-col-id="col7"] .lu-action-filter', + html: `… includes cell lines for which it is unclear whether TP53 is mutated, …`, + placement: 'centered', + postAction: () => { + TourUtils.click('.le [data-col-id="col7"] .lu-action-filter'); + TourUtils.click('.lu-dialog > .lu-checkbox input'); + TourUtils.wait(1000).then(() => TourUtils.click('.lu-dialog-buttons > [type="submit"]')); + }, + }, + { + selector: '', + html: `… and unfolds the melanoma cell lines group.`, + placement: 'centered', + postAction: () => { + TourUtils.click('[data-testid="en/disable-overview-button"]'); + TourUtils.click('[title="Collapse All Groups"]:nth-child(1)'); + TourUtils.click('.le-tr[data-index="2"] .lu-agg-expand'); + }, + }, + { + selector: '.le.le-multi.lineup-engine', + html: `Based on the ranking, he decides to consider all cell lines with unknown TP53 mutation status and a TP53 predictor score greater than 110 as non mutated.`, + placement: 'centered', + }, + { + selector: '[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(1) > span', + html: `He adds a column with the CDKN2A relative copy number, …`, + placement: 'centered', + preAction: openAddColumPanel, + postAction: () => { + TourUtils.click('.lu-side-panel-wrapper .lu-adder > button'); + TourUtils.click('[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(1) > span'); + TourUtils.toggleClass('.lu-adder.once', 'once', false); + TourUtils.waitFor('.modal.show').then(() => { + TourUtils.setValueAndTrigger('.modal.show .select3 input.select2-search__field', 'CDKN2A;', 'input'); + TourUtils.setValueAndTrigger('.show .col > select', null, 'change'); // clear previous value + TourUtils.setValueAndTrigger('.show .col > select', 'copy_number-relativecopynumber', 'change'); + TourUtils.wait(2000).then(() => TourUtils.click('.modal.show .modal-footer button[type=submit]')); + }); + }, + }, + { + selector: '.le [data-col-id="col11"] .lu-action-sort', + html: `… sorts by it in ascending order, …`, + placement: 'centered', + preAction: () => TourUtils.waitFor('.le [data-col-id="col11"] .lu-action-sort').then(() => TourUtils.wait(600)), + postAction: () => { + TourUtils.click('.le [data-col-id="col11"] .lu-action-sort'); + TourUtils.click('.le [data-col-id="col11"] .lu-action-sort'); + }, + }, + { + selector: '.le [data-col-id="col11"] .lu-action-filter', + html: `… and filters out missing data.`, + placement: 'centered', + postAction: () => { + TourUtils.click('.le [data-col-id="col11"] .lu-action-filter'); + TourUtils.click('.lu-dialog > .lu-summary .lu-checkbox input'); + TourUtils.wait(1000).then(() => TourUtils.click('.lu-dialog-buttons > [type="submit"]')); + }, + }, + { + selector: ['.le-tr[data-index="2"] .lu-renderer-selection, .le-tr[data-index="20"] .lu-renderer-selection'], + html: `Finally, he selects the top hits of the resulting list (see Figure 11). All these cell lines fulfill the analyst's requirements.`, + placement: 'centered', + postAction: () => { + TourUtils.click('.le-tr[data-index="2"] .lu-renderer-selection'); + TourUtils.click('.le-tr[data-index="3"] .lu-renderer-selection'); + TourUtils.click('.le-tr[data-index="4"] .lu-renderer-selection'); + TourUtils.click('.le-tr[data-index="5"] .lu-renderer-selection'); + TourUtils.click('.le-tr[data-index="6"] .lu-renderer-selection'); + TourUtils.click('.le-tr[data-index="7"] .lu-renderer-selection'); + TourUtils.click('.le-tr[data-index="8"] .lu-renderer-selection'); + TourUtils.click('.le-tr[data-index="9"] .lu-renderer-selection'); + TourUtils.click('.le-tr[data-index="10"] .lu-renderer-selection'); + TourUtils.click('.le-tr[data-index="11"] .lu-renderer-selection'); + TourUtils.click('.le-tr[data-index="12"] .lu-renderer-selection'); + TourUtils.click('.le-tr[data-index="13"] .lu-renderer-selection'); + TourUtils.click('.le-tr[data-index="14"] .lu-renderer-selection'); + TourUtils.click('.le-tr[data-index="15"] .lu-renderer-selection'); + }, + }, + { + html: `

Thanks for joining this tour demonstrating a typical analysis session by a drug discovery team at a pharmaceutical company.

+

There are still many more features to discover. Enjoy!

`, + }, + ]; + } +} diff --git a/src/tours/PredictionTP53Tour.ts b/src/tours/PredictionTP53Tour.ts new file mode 100644 index 00000000..7d4d99e0 --- /dev/null +++ b/src/tours/PredictionTP53Tour.ts @@ -0,0 +1,190 @@ +// import {ToursSection} from 'ordino'; +import { IStep } from 'tdp_core'; +import { TourUtils } from 'tdp_core/src/tour/TourUtils'; +import { openAddColumPanel } from './utils'; + +export class PredictionTP53Tour { + static createTour(): IStep[] { + return [ + { + html: ` +

+ This case study summarizes another analysis session carried out by a + research scientist working in a drug discovery team at a pharmaceutical company. +

+ +

+ In order to identify potential drug targets in a set of tumor + types, the analyst performs experiments with cancer cell lines—cultured cells that are derived from + tumors and that can proliferate indefinitely in the laboratory. +

+ +

+ These cell lines are characterized by various properties, such as tumor type (lung cancer, prostate cancer, etc.) + and the set of genes that are mutated. One very important gene in the context of cancer is TP53. It encodes the + p53 protein, whose presence is known to suppress the uncontrolled division of cells. +

+ +

+ Use the "Next" button to iterate through all the steps. You can use the + "Cancel" button at any time to stop the tour and to interact with Ordino. + Please note that the tour will load a new analysis session and the current + one will be discarded. +

`, + }, + { + selector: 'ul[data-header="mainMenu"] > li:first-child > a', + html: `To start the analysis, the team clicks on the 'Datasets' tab.`, + placement: 'centered', + preAction: () => { + const datasetTab = document.querySelector('ul[data-header="mainMenu"] > li:nth-child(1)') as HTMLElement; + if (!datasetTab.classList.contains('active')) { + datasetTab.querySelector('a').classList.add('hover'); + } + }, + postAction: async () => { + const datasetTab = document.querySelector('ul[data-header="mainMenu"] > li:nth-child(1)') as HTMLElement; + if (!datasetTab.classList.contains('active')) { + datasetTab.querySelector('a').classList.remove('hover'); + datasetTab.querySelector('a').click(); + } + + await TourUtils.waitFor('.ordino-dataset.tissue-dataset').then(async () => { + TourUtils.click('#ordino_dataset_tab > .ordino-scrollspy-nav > a:nth-child(2)'); + await TourUtils.wait(1000); + }); + }, + pageBreak: 'manual', + }, + { + selector: '.ordino-dataset.tissue-dataset > .card', + html: `

Here they can choose between the three entity types 'Cell Lines', 'Tissue Samples', and 'Genes'.

+

They aim to test the applicability of the gene signature using TCGA tumor samples.

`, + placement: 'centered', + }, + { + selector: '.ordino-dataset.tissue-dataset [data-testid="tcga-tumors-button"]', + html: `They start by opening a list of all TCGA tumors.`, + placement: 'centered', + postAction: TourUtils.clickSelector, + pageBreak: 'manual', + }, + { + selector: '.le.le-multi.lineup-engine', + placement: 'centered', + html: `The information is presented in a tabular format. Additionally to the gene ID, a set of columns containing some basic information is shown by default.`, + preAction: () => TourUtils.waitFor('.le-tr:nth-of-type(1)', Infinity).then(() => TourUtils.wait(1500)), + }, + { + selector: '[data-testid="viewWrapper-0"] [data-id="col4"] .lu-action-filter', + html: `First, they choose to filter the tumor type by colon adenocarcinoma`, + placement: 'centered', + postAction: async () => { + TourUtils.click('[data-testid="viewWrapper-0"] [data-id="col4"] .lu-action-filter'); + await TourUtils.wait(500); + TourUtils.click('.lu-dialog-table .lu-checkbox:first-child'); + await TourUtils.wait(500); + TourUtils.click('input[type="checkbox"][data-cat="colon adenocarcinoma"]'); + await TourUtils.wait(500); + TourUtils.click('.lu-dialog-button[type="submit"]'); + }, + }, + { + selector: '[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(1) > span', + html: `

Now they add a single gene score for the following:

+

Gene: TP53

+

Data Type: AA Mutated

`, + placement: 'centered', + preAction: openAddColumPanel, + postAction: async () => { + TourUtils.click('[data-testid="add-column-button"]'); + await TourUtils.wait(500); + TourUtils.click('[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(1) > span'); + TourUtils.toggleClass('.lu-adder.once', 'once', false); + await TourUtils.waitFor('.modal.show').then(async () => { + TourUtils.setValueAndTrigger('.modal.show .select3 input.select2-search__field', 'TP53;', 'input'); + TourUtils.setValueAndTrigger('.show .col > select', 'mutation-aa_mutated', 'change'); + await TourUtils.wait(500); + TourUtils.click('.modal.show .modal-footer button[type=submit]'); + }); + }, + }, + { + selector: '[data-testid="viewWrapper-0"] [data-id="col7"] .lu-action-filter', + html: `They filter out the samples with an unknown TP53 mutation status.`, + placement: 'centered', + preAction: TourUtils.waitForSelector, + postAction: async () => { + TourUtils.click('[data-testid="viewWrapper-0"] [data-id="col7"] .lu-action-filter'); + await TourUtils.wait(500); + TourUtils.click('.lu-dialog > .lu-checkbox input'); + await TourUtils.wait(500); + TourUtils.click('.lu-dialog-button[type="submit"]'); + }, + }, + { + selector: '[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(2) > span', + html: `

Next they add an aggregated gene score with the following criteria:

+

Filter: My Named Sets = TP53 Predictor

+

Data Type: Expression (TPM)

+

Aggregation: Average

+

Compute score only for current sample subset

`, + placement: 'centered', + preAction: async () => { + await TourUtils.waitFor('.le-tr:nth-of-type(1) [data-id="col7"] [style="background-color: rgb(170, 170, 170);"]', Infinity); + openAddColumPanel(); + }, + postAction: async () => { + TourUtils.click('.lu-side-panel-wrapper .lu-adder > button'); + TourUtils.click('[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(2) > span'); + TourUtils.toggleClass('.lu-adder.once', 'once', false); + await TourUtils.wait(500); + + TourUtils.setValueAndTrigger('.show .modal-body form > div:nth-child(1) .row:nth-child(1) div:nth-child(1) select', 'ensg', 'change'); + await TourUtils.wait(1500); + TourUtils.click('[data-testid="Filter"] [data-testid="close-button"]'); + await TourUtils.wait(1500); + TourUtils.setValueAndTrigger('.show .modal-body form > div:nth-child(1) .row:nth-child(1) div:nth-child(1) select', 'ensg', 'change'); + await TourUtils.wait(1500); + + // Now add the list of 13 genes here instead + TourUtils.setValueAndTrigger( + '.modal-dialog [data-testid="row-2"] .select2 input', + 'AEN,BAX,CCNG1,CDKN1A,DDB2,FDXR,MDM2,RPS27L,RRM2B,SESN1,TNFRSF10B,XPC,ZMAT3', + 'input', + ); + await TourUtils.wait(1020); + + TourUtils.setValueAndTrigger('.show .modal-body form > .col-sm-12:nth-child(2) select', 'expression-tpm', 'change'); + TourUtils.setValueAndTrigger('.show [data-testid="aggregation"] select', 'avg', 'change'); + + const checkboxTest = document.querySelector('.modal-dialog [data-testid="form-checkbox"]') as HTMLInputElement; + if (!checkboxTest.checked) { + TourUtils.click('.modal-dialog [data-testid="form-checkbox"]'); + } + + await TourUtils.wait(1000); + TourUtils.click('.modal.show .modal-footer button[type=submit]'); + }, + }, + { + selector: '[data-id="col8"] .lu-action-sort', + html: `They sort by this newly-added gene expression column.`, + placement: 'centered', + preAction: TourUtils.waitForSelector, + postAction: TourUtils.clickSelector, + }, + { + selector: ['[data-id="col7"], [data-id="col8"]'], + html: `

Observe: There is a clear correlation between gene expression signature and mutation status of + TP53: Of the 50 samples with the highest expression only 3 are TP53 mutated, whereas of the 50 + samples with the lowest expression 35 are TP53 mutated.

`, + placement: 'centered', + }, + { + html: `

Thanks for joining this tour demonstrating the creation and basic testing of the TP53 Predictor Score.

+

There are still many more features to discover. Enjoy!

`, + }, + ]; + } +} diff --git a/src/tours/PredictionTP53Tour2.ts b/src/tours/PredictionTP53Tour2.ts new file mode 100644 index 00000000..264f1c7f --- /dev/null +++ b/src/tours/PredictionTP53Tour2.ts @@ -0,0 +1,269 @@ +// import {ToursSection} from 'ordino'; +import { IStep } from 'tdp_core'; +import { TourUtils } from 'tdp_core/src/tour/TourUtils'; +import { openAddColumPanel } from './utils'; + +export class PredictionTP53Tour2 { + static createTour(): IStep[] { + return [ + { + html: ` +

+ The following is a continuation of the tour investigating the TP53 Predictor Score, this + time in conjunction with the MDM2 sensitivity score, compared against all cell lines. +

+

+ Use the "Next" button to iterate through all the steps. You can use the + "Cancel" button at any time to stop the tour and to interact with Ordino. + Please note that the tour will load a new analysis session and the current + one will be discarded. +

+ `, + }, + { + selector: 'ul[data-header="mainMenu"] > li:first-child > a', + html: `They start by opening the dataset tab, in order to find the relevant dataset to begin working with.`, + placement: 'centered', + preAction: () => { + const datasetTab = document.querySelector('ul[data-header="mainMenu"] > li:nth-child(1)') as HTMLElement; + if (!datasetTab.classList.contains('active')) { + datasetTab.querySelector('a').classList.add('hover'); + } + }, + postAction: async () => { + const datasetTab = document.querySelector('ul[data-header="mainMenu"] > li:nth-child(1)') as HTMLElement; + if (!datasetTab.classList.contains('active')) { + datasetTab.querySelector('a').classList.remove('hover'); + datasetTab.querySelector('a').click(); + } + await TourUtils.waitFor('.ordino-dataset.genes-dataset').then(async () => { + TourUtils.click('#ordino_dataset_tab > .ordino-scrollspy-nav > a:nth-child(1)'); + await TourUtils.wait(1000); + }); + }, + }, + { + selector: '.ordino-dataset.cellline-dataset [data-testid="all-button"]', + html: `They open the list of ALL cell lines.`, + placement: 'centered', + postAction: TourUtils.clickSelector, + pageBreak: 'manual', + }, + { + selector: '[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(1) > span', + html: `

They add a single gene score for the following:

+

Gene: TP53

+

Data Type: AA Mutated and AA Mutation

`, + placement: 'centered', + preAction: async () => { + await TourUtils.waitFor('.le-tr:nth-of-type(1)', Infinity).then(() => TourUtils.wait(1500)); + openAddColumPanel(); + }, + postAction: async () => { + TourUtils.click('[data-testid="add-column-button"]'); + await TourUtils.wait(500); + TourUtils.click('[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(1) > span'); + TourUtils.toggleClass('.lu-adder.once', 'once', false); + await TourUtils.waitFor('.modal.show'); + + TourUtils.setValueAndTrigger('.modal.show .select3 input.select2-search__field', 'TP53;', 'input'); + await TourUtils.wait(500); + + // Check if data types were remembered and remove + while (document.querySelector('[data-testid="Data Type"] span.select2-selection__choice__remove') !== null) { + TourUtils.click('[data-testid="Data Type"] span.select2-selection__choice__remove:nth-of-type(1)'); + } + + // Now check if the pesky dropdown menu has shown up, and remove + if (document.querySelector('span.select2-dropdown') !== null) { + TourUtils.click('[data-testid="Data Type"] .select2-search--inline > input.select2-search__field'); + } + await TourUtils.wait(200); + + // KNOWN BUG: (Sometimes) If either of the following options were selected the last time a single gene score column was added, they won't be + // selected when running this tour the first time around. This can be fixed by simply restarting the tour. + + const selection1 = document.querySelector('option[value="mutation-aa_mutated"]'); + selection1.setAttribute('selected', 'selected'); + + const selection2 = document.querySelector('option[value="mutation-aamutation"]'); + selection2.setAttribute('selected', 'selected'); + + await TourUtils.wait(1500); + TourUtils.click('.modal.show .modal-footer button[type=submit]'); + }, + }, + { + selector: '[data-testid="viewWrapper-0"] [data-id="col7"] .lu-action-filter', + html: `They once again filter out the samples with an unknown TP53 mutation status.`, + placement: 'centered', + preAction: () => TourUtils.waitFor('.le-tr:nth-of-type(1) [data-id="col8"].lu-missing', Infinity), + postAction: async () => { + TourUtils.click('[data-testid="viewWrapper-0"] [data-id="col7"] .lu-action-filter'); + await TourUtils.wait(500); + TourUtils.click('.lu-dialog > .lu-checkbox input'); + await TourUtils.wait(500); + TourUtils.click('.lu-dialog-button[type="submit"]'); + }, + }, + { + selector: '[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(2) > span', + html: `

Next they add an aggregated gene score with the following criteria:

+

Filter: Gene Symbol = AEN, BAX, CCNG1, CDKN1A, DDB2, FDXR, MDM2, RPS27L, RRM2B, SESN1, TNFRSF10B, XPC, + ZMAT3

+

Data Type: Expression (TPM)

+

Aggregation: Average

+

Compute score for all cell lines, not only the selected subset

`, + placement: 'centered', + preAction: async () => { + await TourUtils.waitFor('.le-tr:nth-of-type(1) [data-id="col7"] [style="background-color: rgb(27, 166, 78);"]', Infinity); + openAddColumPanel(); + }, + postAction: async () => { + TourUtils.click('.lu-side-panel-wrapper .lu-adder > button'); + TourUtils.click('[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(2) > span'); + TourUtils.toggleClass('.lu-adder.once', 'once', false); + await TourUtils.wait(500); + + TourUtils.setValueAndTrigger('.show .modal-body form > div:nth-child(1) .row:nth-child(1) div:nth-child(1) select', 'ensg', 'change'); + await TourUtils.wait(1500); + TourUtils.click('[data-testid="Filter"] [data-testid="close-button"]'); + await TourUtils.wait(1500); + TourUtils.setValueAndTrigger('.show .modal-body form > div:nth-child(1) .row:nth-child(1) div:nth-child(1) select', 'ensg', 'change'); + await TourUtils.wait(1500); + + // Now add the list of 13 genes here instead + TourUtils.setValueAndTrigger( + '.modal-dialog [data-testid="row-2"] .select2 input', + 'AEN,BAX,CCNG1,CDKN1A,DDB2,FDXR,MDM2,RPS27L,RRM2B,SESN1,TNFRSF10B,XPC,ZMAT3', + 'input', + ); + await TourUtils.wait(1020); + + TourUtils.setValueAndTrigger('.show .modal-body form > .col-sm-12:nth-child(2) select', 'expression-tpm', 'change'); + TourUtils.setValueAndTrigger('.show [data-testid="aggregation"] select', 'avg', 'change'); + + // Inspect if the checkbox is checked, if so then uncheck it + const checkboxTest = document.querySelector('.modal-dialog [data-testid="form-checkbox"]') as HTMLInputElement; + if (checkboxTest?.checked) { + TourUtils.click('.modal-dialog [data-testid="form-checkbox"]'); + } + await TourUtils.wait(1000); + TourUtils.click('.modal.show .modal-footer button[type=submit]'); + }, + }, + { + selector: '[data-id="col9"] > .lu-toolbar > .lu-action-more', + html: `

They decide to rename the new column to "TP53 Predictor Score".

`, + placement: 'centered', + postAction: async () => { + TourUtils.click('[data-id="col9"] > .lu-toolbar > .lu-action-more'); + await TourUtils.wait(500); + TourUtils.click('.lu-action-rename > span'); + await TourUtils.waitFor('.lu-dialog-rename input[placeholder="name"]'); + TourUtils.setValueAndTrigger('.lu-dialog-rename input[placeholder="name"]', 'TP53 Predictor Score', 'change'); + await TourUtils.wait(500); + TourUtils.click('.lu-dialog-buttons > [type="submit"]'); + }, + }, + { + selector: '[data-id="col9"] .lu-action-filter', + html: `They now filter out the samples with an unknown TP53 Predictor Score …`, + placement: 'centered', + postAction: async () => { + TourUtils.click('[data-id="col9"] .lu-action-filter'); + await TourUtils.wait(500); + TourUtils.click('.lu-dialog .lu-checkbox input'); + await TourUtils.wait(500); + TourUtils.click('.lu-dialog-button[type="submit"]'); + }, + }, + { + selector: '[data-id="col9"] .lu-action-sort', + html: `… and sort by this column.`, + placement: 'centered', + postAction: TourUtils.clickSelector, + }, + { + selector: '.le-tbody.le-tbody', + html: `

Observe: There is a clear enrichment of TP53 non-mutated among the cell lines with high score.

`, + placement: 'centered', + preAction: () => TourUtils.waitFor('[data-id="col9"].lu-renderer-number', Infinity), + postAction: async () => { + await TourUtils.wait(500); + }, + }, + { + selector: '[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(4) > span', + html: `

Next, they choose to add a 'Depletion Screen Score (Single)' using the following:

+

Gene: MDM2

+

Data type: DRIVE RSA (NB: the lower this value, the more sensitive a cell line is to the depletion of the gene of interest)

`, + placement: 'centered', + preAction: openAddColumPanel, + postAction: async () => { + TourUtils.click('.lu-side-panel-wrapper .lu-adder > button'); + TourUtils.click('[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(4) > span'); + TourUtils.toggleClass('.lu-adder.once', 'once', false); + await TourUtils.waitFor('.modal.show').then(() => TourUtils.wait(500)); + TourUtils.setValueAndTrigger('.modal.show .select3 input.select2-search__field', 'MDM2;', 'input'); + TourUtils.setValueAndTrigger('.show .col > select', 'depletion-rsa', 'change'); + const checkboxTest = document.querySelector('.modal-dialog [data-testid="form-checkbox"]') as HTMLInputElement; + if (!checkboxTest.checked) { + TourUtils.click('.modal-dialog [data-testid="form-checkbox"]'); + } + await TourUtils.wait(1000); + TourUtils.click('.modal.show .modal-footer button[type=submit]'); + }, + }, + { + selector: '[data-id="col10"] > .lu-toolbar > .lu-action-more', + html: `

To amplify the visibility of the added depletion score's significance, they decide to invert the scaling via the data mapping.

`, + placement: 'centered', + preAction: () => TourUtils.waitFor('.le-tr [data-id="col10"].lu-renderer-number', Infinity), + postAction: async () => { + TourUtils.click('[data-id="col10"] > .lu-toolbar > .lu-action-more'); + await TourUtils.wait(500); + TourUtils.click('.lu-action-data-mapping > span'); + TourUtils.setValueAndTrigger('.browser-default', 'linear_invert', 'change'); + await TourUtils.wait(500); + TourUtils.click('.lu-dialog-buttons > [type="submit"]'); + }, + }, + { + selector: '[data-id="col10"] .lu-action-filter', + html: `They filter out this MDM2 column's missing values …`, + placement: 'centered', + postAction: async () => { + TourUtils.click('[data-id="col10"] .lu-action-filter'); + await TourUtils.wait(500); + TourUtils.click('.lu-dialog .lu-checkbox input'); + await TourUtils.wait(500); + TourUtils.click('.lu-dialog-button[type="submit"]'); + }, + }, + { + selector: '[data-id="col10"] .lu-action-sort', + html: `… and sort by this column.`, + placement: 'centered', + preAction: () => TourUtils.waitFor('.le-tr:nth-of-type(1) [title="−1.00"]', Infinity), + postAction: TourUtils.clickSelector, + }, + { + selector: '.le.le-multi.lineup-engine', + html: `

Observe: Small MDM2 RSA values (large bars) are correlated to the expression score (TP53 predictor score) and the TP53 mutation status

`, + placement: 'centered', + preAction: () => TourUtils.waitFor('.le-tr:nth-of-type(1) [title="−7.14"]', Infinity), + postAction: () => TourUtils.wait(500), + }, + // Can't do the drag operation for this final step in the aim + // Remaining two aims are also primarily just observations, but rely on the combined score column; What to do? + { + selector: ['section[data-col-id="col9"]', 'section[data-col-id="col10"]'], + html: `

Conclusion: When combining the TP53 Predictor Score column and the MDM2 Gene Sensitivity Score, the new weighted sum column serves as an even more accurate predictor.

+

Thanks for joining this tour taking a deeper look into the TP53 Predictor Score.

+

There are still many more features to discover. Enjoy!

`, + placement: 'centered', + }, + ]; + } +} diff --git a/src/tours/WelcomeTour.ts b/src/tours/WelcomeTour.ts index 57ed70f0..49d0eafd 100644 --- a/src/tours/WelcomeTour.ts +++ b/src/tours/WelcomeTour.ts @@ -1,4 +1,5 @@ import { IStep, TourUtils } from 'tdp_core'; +import { openAddColumPanel } from './utils'; export class WelcomeTour { static createTour(): IStep[] { @@ -58,7 +59,7 @@ export class WelcomeTour { selector: '.lu-side-panel-wrapper .lu-adder > button', html: `Additional columns can be added using the plus sign.`, placement: 'centered', - postAction: TourUtils.clickSelector, + postAction: openAddColumPanel, }, { selector: '.lu-search .lu-search-item', diff --git a/src/tours/index.ts b/src/tours/index.ts index 62ba5110..49afb11a 100644 --- a/src/tours/index.ts +++ b/src/tours/index.ts @@ -1,3 +1,7 @@ export * from './WelcomeTour'; export * from './AddColumnToGeneListTour'; export * from './StartMenuTour'; +export * from './AssessBCCellLinesTour'; +export * from './PredictionTP53Tour'; +export * from './PredictionTP53Tour2'; +export * from './DrugTargetDiscoveryTour'; diff --git a/src/tours/utils.ts b/src/tours/utils.ts new file mode 100644 index 00000000..12585de7 --- /dev/null +++ b/src/tours/utils.ts @@ -0,0 +1,16 @@ +import { TourUtils } from 'tdp_core'; + +/** + * Set the next button to active after the promise is resolved + * @example + * waitFor: ()=> TourUtils.wait(500).then(setNextActive) + */ +export const setNextActive = async (): Promise<'enable'> => 'enable'; + +/** + * Clicks the add column button and prevents the score list from closing + */ +export function openAddColumPanel() { + TourUtils.click('.viewWrapper.t-focus .lu-side-panel-wrapper .lu-adder > button'); + (document.querySelector('.viewWrapper.t-focus .lu-search-input') as HTMLInputElement).onblur = (ev) => ev.preventDefault(); +}