Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
659bc02
Upgrade Angular to v10 and remove uncompleted Helium v2
tbonelee Oct 16, 2025
47c4b73
Remove unnecessary protracter
tbonelee Oct 19, 2025
20594ba
Remove helium-vis-example code
tbonelee Oct 19, 2025
749446f
Upgrade Angular (v10 -> v11)
tbonelee Oct 19, 2025
f5ecc6b
Upgrade Angular (v11 -> v12)
tbonelee Oct 19, 2025
24038b5
Upgrade Angular (v12 -> v13)
tbonelee Oct 19, 2025
2bfe1df
Fix styles
tbonelee Oct 20, 2025
f71f9ac
Add development configurations
tbonelee Oct 20, 2025
55d9cab
Rollback monaco editor
tbonelee Oct 21, 2025
6152475
Rename MessageDataTypeMap
tbonelee Oct 21, 2025
1adc2fa
Rename unnecessary NODE_OPTION
tbonelee Oct 21, 2025
d0d9e69
Bump ansi_up from 4.0.4 to 6.0.6
tbonelee Oct 21, 2025
7025272
Bump date-fns from 2.30.0 to 3.6.0
tbonelee Oct 21, 2025
b8f15cd
Bump dotenv from 8.6.0 to 17.2.3
tbonelee Oct 21, 2025
d8b385b
Bump lint-staged from 8.1.6 to 15.5.2
tbonelee Oct 21, 2025
26c9415
Migrate tslint to eslint
tbonelee Oct 21, 2025
49d63fa
Update exclusion rule in pom.xml to use `.browserslistrc`
tbonelee Oct 21, 2025
7563ce7
Clarify type assertion in bindParagraph method
tbonelee Oct 21, 2025
5c2c624
Fix formatting error
tbonelee Oct 22, 2025
452e908
Fix missing EOF newline in .prettierignore
tbonelee Oct 22, 2025
f57c34a
Disable stylistic lint rules (Fix heap out of memory)
tbonelee Oct 22, 2025
6086e50
Add import/no-cycle rule
tbonelee Oct 22, 2025
25e8edf
Migrate eslint config to flat config
tbonelee Oct 23, 2025
dffa51f
Fix ESLint parserOptions.project path resolution with tsconfigRootDir
tbonelee Oct 23, 2025
aa0777d
Revert "Fix ESLint parserOptions.project path resolution with tsconfi…
tbonelee Oct 23, 2025
dd27805
Revert "Migrate eslint config to flat config"
tbonelee Oct 23, 2025
ab553fa
Reorganize TypeScript config files and use ESLint project: true
tbonelee Oct 23, 2025
e57e790
Remove `src/.browserslistrc` file\
tbonelee Oct 23, 2025
b4da5d3
Fix tsConfig path in angular.json
tbonelee Oct 23, 2025
bdfd8a5
Remove custom tslint related files
tbonelee Oct 23, 2025
7b77cb7
Fix webpack LESS loader invalid dependency paths
tbonelee Oct 23, 2025
0c8e7c2
Add path mapping for e2e/* in tsconfig.json
tbonelee Oct 23, 2025
e16bc7a
Remove unused eslint plugins
tbonelee Oct 26, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1031,7 +1031,7 @@

<!-- bundled from zeppelin-web-angular -->
<exclude>**/*.json</exclude>
<exclude>**/browserslist</exclude>
<exclude>**/.browserslistrc</exclude>
<exclude>**/.prettierrc</exclude>
<exclude>**/.prettierignore</exclude>
<exclude>**/.editorconfig</exclude>
Expand Down
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It seems that .browserslistrc exists in both zeppelin-web-angular/ and zeppelin-web-angular/src/. Aside from comments, there doesn’t appear to be any difference between them. So I think it should be fine to keep just one of them.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I removed src/.browserslistrc.

File renamed without changes.
122 changes: 122 additions & 0 deletions zeppelin-web-angular/.eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
{
"extends": ["prettier"],
"root": true,
"ignorePatterns": ["node_modules/**/*", "projects/**/*"],
"overrides": [
{
"files": ["*.ts"],
"parserOptions": {
"project": true,
"createDefaultProgram": true
},
"extends": [
"plugin:@angular-eslint/ng-cli-compat",
"plugin:@angular-eslint/ng-cli-compat--formatting-add-on",
"plugin:@angular-eslint/template/process-inline-templates"
],
"rules": {
"@angular-eslint/component-selector": [
"error",
{
"type": ["element", "attribute"],
"prefix": ["zeppelin"],
"style": "kebab-case"
}
],
"@angular-eslint/directive-selector": [
"error",
{
"type": "attribute",
"prefix": ["zeppelin"],
"style": "kebab-case"
}
],
"@angular-eslint/no-forward-ref": "off",
"@angular-eslint/prefer-output-readonly": "error",
"@typescript-eslint/adjacent-overload-signatures": "off",
"@typescript-eslint/array-type": "off",
"@typescript-eslint/ban-tslint-comment": "off",
"@typescript-eslint/class-literal-property-style": "off",
"@typescript-eslint/consistent-generic-constructors": "off",
"@typescript-eslint/consistent-indexed-object-style": "off",
"@typescript-eslint/consistent-type-assertions": "off",
"@typescript-eslint/consistent-type-definitions": "off",
"@typescript-eslint/no-confusing-non-null-assertion": "off",
"o-empty-function": "off",
"@typescript-eslint/no-empty-function": "off",
"@typescript-eslint/no-inferrable-types": "off",
"@typescript-eslint/prefer-for-of": "off",
"@typescript-eslint/prefer-function-type": "off",
"@typescript-eslint/member-delimiter-style": "off",
"@typescript-eslint/semi": "off",
"@typescript-eslint/type-annotation-spacing": "off",
"@typescript-eslint/ban-types": [
"error",
{
"types": {
"Object": {
"message": "Use {} instead."
},
"String": {
"message": "Use string instead."
},
"Number": {
"message": "Use number instead."
},
"Boolean": {
"message": "Use boolean instead."
},
"Function": {
"message": "Use specific callable interface instead."
}
}
}
],
"@typescript-eslint/member-ordering": "warn",
"@typescript-eslint/explicit-member-accessibility": [
"off",
{
"accessibility": "explicit"
}
],
"@typescript-eslint/no-explicit-any": "error",
"@typescript-eslint/no-floating-promises": "off",
"@typescript-eslint/no-for-in-array": "error",
"@typescript-eslint/naming-convention": "off",
"@typescript-eslint/no-non-null-assertion": "off",
"@typescript-eslint/no-this-alias": "error",
"@typescript-eslint/quotes": "off",
"eol-last": "off",
"import/no-cycle": "error",
"import/no-deprecated": "off",
"import/no-unassigned-import": "error",
"import/order": "error",
"jsdoc/newline-after-description": "off",
"max-len": "off",
"new-parens": "off",
"no-bitwise": "off",
"no-duplicate-imports": "error",
"no-invalid-this": "error",
"no-irregular-whitespace": "error",
"no-magic-numbers": "off",
"no-param-reassign": "error",
"no-redeclare": "error",
"no-sparse-arrays": "error",
"no-template-curly-in-string": "error",
"no-trailing-spaces": "off",
"no-underscore-dangle": "off",
"prefer-arrow/prefer-arrow-functions": "warn",
"prefer-object-spread": "error",
"prefer-template": "error",
"quote-props": "off",
"space-before-function-paren": "off",
"yoda": "error"
}
},
{
"files": ["*.html"],
"extends": ["plugin:@angular-eslint/template/recommended"],
"rules": {}
}
]
}
1 change: 1 addition & 0 deletions zeppelin-web-angular/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ speed-measure-plugin.json
!.vscode/extensions.json

# misc
/.angular/cache
/.sass-cache
/connect.lock
/coverage
Expand Down
2 changes: 2 additions & 0 deletions zeppelin-web-angular/.prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,5 @@ coverage/*
playwright-report/*
playwright-coverage/*
test-results/*

.angular/*
2 changes: 2 additions & 0 deletions zeppelin-web-angular/.prettierrc
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
"tabWidth": 2,
"useTabs": false,
"htmlWhitespaceSensitivity": "ignore",
"trailingComma": "none",
"arrowParens": "avoid",
"overrides": [
{
"files": ".prettierrc",
Expand Down
91 changes: 28 additions & 63 deletions zeppelin-web-angular/angular.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,6 @@
"@schematics/angular:guard": {
"skipTests": true
},
"@schematics/angular:module": {
"skipTests": true
},
"@schematics/angular:pipe": {
"skipTests": true
},
Expand All @@ -47,7 +44,7 @@
"index": "src/index.html",
"main": "src/main.ts",
"polyfills": "src/polyfills.ts",
"tsConfig": "src/tsconfig.app.json",
"tsConfig": "src/tsconfig.json",
"assets": [
"src/favicon.ico",
"src/assets",
Expand Down Expand Up @@ -109,6 +106,14 @@
"extractLicenses": true,
"vendorChunk": false,
"buildOptimizer": false
},
"development": {
"buildOptimizer": false,
"optimization": false,
"vendorChunk": true,
"extractLicenses": false,
"namedChunks": true,
"sourceMap": true
}
}
},
Expand All @@ -120,8 +125,12 @@
"configurations": {
"production": {
"browserTarget": "zeppelin:build:production"
},
"development": {
"browserTarget": "zeppelin:build:development"
}
}
},
"defaultConfiguration": "development"
},
"extract-i18n": {
"builder": "@angular-devkit/build-angular:extract-i18n",
Expand All @@ -130,54 +139,9 @@
}
},
"lint": {
"builder": "@angular-devkit/build-angular:tslint",
"options": {
"tsConfig": ["src/tsconfig.app.json"],
"exclude": ["**/node_modules/**"]
}
}
}
},
"zeppelin-helium": {
"projectType": "library",
"root": "projects/zeppelin-helium",
"sourceRoot": "projects/zeppelin-helium/src",
"prefix": "lib",
"architect": {
"build": {
"builder": "@angular-devkit/build-ng-packagr:build",
"options": {
"tsConfig": "projects/zeppelin-helium/tsconfig.lib.json",
"project": "projects/zeppelin-helium/ng-package.json"
}
},
"lint": {
"builder": "@angular-devkit/build-angular:tslint",
"options": {
"tsConfig": ["projects/zeppelin-helium/tsconfig.lib.json"],
"exclude": ["**/node_modules/**"]
}
}
}
},
"helium-vis-example": {
"projectType": "library",
"root": "projects/helium-vis-example",
"sourceRoot": "projects/helium-vis-example/src",
"prefix": "lib",
"architect": {
"build": {
"builder": "@angular-devkit/build-ng-packagr:build",
"options": {
"tsConfig": "projects/helium-vis-example/tsconfig.lib.json",
"project": "projects/helium-vis-example/ng-package.json"
}
},
"lint": {
"builder": "@angular-devkit/build-angular:tslint",
"builder": "@angular-eslint/builder:lint",
"options": {
"tsConfig": ["projects/helium-vis-example/tsconfig.lib.json"],
"exclude": ["**/node_modules/**"]
"lintFilePatterns": ["src/**/*.ts", "src/**/*.html"]
}
}
}
Expand All @@ -189,17 +153,16 @@
"prefix": "lib",
"architect": {
"build": {
"builder": "@angular-devkit/build-ng-packagr:build",
"builder": "@angular-devkit/build-angular:ng-packagr",
"options": {
"tsConfig": "projects/zeppelin-visualization/tsconfig.lib.json",
"tsConfig": "projects/zeppelin-visualization/tsconfig.json",
"project": "projects/zeppelin-visualization/ng-package.json"
}
},
"lint": {
"builder": "@angular-devkit/build-angular:tslint",
"builder": "@angular-eslint/builder:lint",
"options": {
"tsConfig": ["projects/zeppelin-visualization/tsconfig.lib.json"],
"exclude": ["**/node_modules/**"]
"lintFilePatterns": ["projects/zeppelin-visualization/**/*.ts", "projects/zeppelin-visualization/**/*.html"]
}
}
}
Expand All @@ -211,21 +174,23 @@
"prefix": "lib",
"architect": {
"build": {
"builder": "@angular-devkit/build-ng-packagr:build",
"builder": "@angular-devkit/build-angular:ng-packagr",
"options": {
"tsConfig": "projects/zeppelin-sdk/tsconfig.lib.json",
"tsConfig": "projects/zeppelin-sdk/tsconfig.json",
"project": "projects/zeppelin-sdk/ng-package.json"
}
},
"lint": {
"builder": "@angular-devkit/build-angular:tslint",
"builder": "@angular-eslint/builder:lint",
"options": {
"tsConfig": ["projects/zeppelin-sdk/tsconfig.lib.json"],
"exclude": ["**/node_modules/**"]
"lintFilePatterns": ["projects/zeppelin-sdk/**/*.ts", "projects/zeppelin-sdk/**/*.html"]
}
}
}
}
},
"defaultProject": "zeppelin"
"defaultProject": "zeppelin",
"cli": {
"defaultCollection": "@angular-eslint/schematics"
}
}
6 changes: 2 additions & 4 deletions zeppelin-web-angular/e2e/models/login-page.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,10 +46,8 @@ export class LoginPage extends BasePage {

async getErrorMessageText(): Promise<string> {
return (
(await this.page
.locator("text=The username and password that you entered don't match.")
.first()
.textContent()) || ''
(await this.page.locator("text=The username and password that you entered don't match.").first().textContent()) ||
''
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -175,15 +175,12 @@ export class PublishedParagraphTestUtil {
const url = this.page.url();
const noteIdMatch = url.match(/\/notebook\/([^\/\?]+)/);
if (!noteIdMatch) {
throw new Error('Failed to extract notebook ID from URL: ' + url);
throw new Error(`Failed to extract notebook ID from URL: ${url}`);
}
const noteId = noteIdMatch[1];

// Get first paragraph ID
await this.page
.locator('zeppelin-notebook-paragraph')
.first()
.waitFor({ state: 'visible', timeout: 10000 });
await this.page.locator('zeppelin-notebook-paragraph').first().waitFor({ state: 'visible', timeout: 10000 });
const paragraphContainer = this.page.locator('zeppelin-notebook-paragraph').first();
const dropdownTrigger = paragraphContainer.locator('a[nz-dropdown]');
await dropdownTrigger.click();
Expand Down
6 changes: 3 additions & 3 deletions zeppelin-web-angular/e2e/reporter.coverage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@
*/

// @see https://playwright.dev/docs/test-reporters#custom-reporters
import { FullResult, Reporter, TestCase, TestResult } from '@playwright/test/reporter';
import { promises as fs } from 'fs';
import { flatMap, sortBy } from 'lodash';
import { join } from 'path';
import { FullResult, Reporter, TestCase, TestResult } from '@playwright/test/reporter';
import { flatMap, sortBy } from 'lodash';
import { scanDirectory, Results } from 'scandirectory';
import cfg from './reporter.coverage.config';

Expand All @@ -33,7 +33,7 @@ interface ResultType {
rate: number;
}
type ResultsType = ResultType[];
type TestStatusType = typeof TEST_STATUS[keyof typeof TEST_STATUS];
type TestStatusType = (typeof TEST_STATUS)[keyof typeof TEST_STATUS];
interface TestedPathType {
success: number;
skipped: number;
Expand Down
8 changes: 8 additions & 0 deletions zeppelin-web-angular/e2e/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"e2e/*": ["./*"]
}
}
}
9 changes: 1 addition & 8 deletions zeppelin-web-angular/e2e/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -95,11 +95,6 @@ export const PAGES = {
SCATTER_SETTING: 'src/app/visualizations/common/scatter-setting/scatter-setting.component',
X_AXIS_SETTING: 'src/app/visualizations/common/x-axis-setting/x-axis-setting.component'
}
},

// Projects
PROJECTS: {
JSON_VIS: 'projects/helium-vis-example/src/json-vis.component'
}
} as const;

Expand Down Expand Up @@ -150,9 +145,7 @@ export function getCurrentPath(page: Page): string {
return url.hash || url.pathname;
}

export async function getBasicPageMetadata(
page: Page
): Promise<{
export async function getBasicPageMetadata(page: Page): Promise<{
title: string;
path: string;
}> {
Expand Down
Loading
Loading