Skip to content

Commit 5c6d1f4

Browse files
authored
Setup eslint (ThatOpen#74)
* πŸ”§ added eslint in viewer folder * 🚨 linted all files in viewer * πŸ‘· added github action to lint viewer/src
1 parent c57fa52 commit 5c6d1f4

File tree

20 files changed

+657
-385
lines changed

20 files changed

+657
-385
lines changed
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
name: ESLint check
2+
3+
on: [pull_request]
4+
jobs:
5+
eslint:
6+
name: runner / eslint
7+
runs-on: ubuntu-latest
8+
steps:
9+
- name: Use Node.js 14
10+
uses: actions/setup-node@v1
11+
with:
12+
node-version: 14
13+
registry-url: https://npm.pkg.github.com
14+
scope: "@novade"
15+
- uses: actions/checkout@v2
16+
17+
# only install dependencies in viewer folder
18+
- run: cd viewer && yarn
19+
- name: eslint
20+
uses: reviewdog/action-eslint@v1
21+
with:
22+
reporter: github-pr-review
23+
workdir: "viewer"
24+
eslint_flags: "src/ --ext .js,.ts"

β€Žviewer/.eslintrc.jsβ€Ž

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
module.exports = {
2+
env: {
3+
browser: true,
4+
es2021: true,
5+
},
6+
extends: [
7+
'airbnb-base',
8+
],
9+
parser: '@typescript-eslint/parser',
10+
parserOptions: {
11+
ecmaVersion: 12,
12+
sourceType: 'module',
13+
},
14+
plugins: [
15+
'@typescript-eslint',
16+
],
17+
rules: {
18+
'lines-between-class-members': 'off',
19+
'eol-last': 'off',
20+
'import/extensions': [
21+
'error',
22+
'ignorePackages',
23+
{
24+
js: 'never',
25+
ts: 'never',
26+
},
27+
],
28+
'import/prefer-default-export': 'off',
29+
'no-plusplus': 'off',
30+
},
31+
settings: {
32+
'import/resolver': {
33+
node: {
34+
extensions: ['.js', '.jsx', '.ts', '.tsx'],
35+
},
36+
},
37+
},
38+
};

β€Žviewer/package.jsonβ€Ž

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,12 @@
3333
"devDependencies": {
3434
"@types/node": "^14.14.31",
3535
"@types/three": "^0.127.1",
36+
"@typescript-eslint/eslint-plugin": "^4.27.0",
37+
"@typescript-eslint/parser": "^4.27.0",
3638
"cpy-cli": "^3.1.1",
39+
"eslint": "^7.28.0",
40+
"eslint-config-airbnb-base": "^14.2.1",
41+
"eslint-plugin-import": "^2.23.4",
3742
"typescript": "^4.2.4"
3843
}
3944
}

β€Žviewer/src/IO/dropbox.tsβ€Ž

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,22 +12,21 @@ type dbChooserResponse = {
1212
};
1313

1414
export class DropboxAPI extends Component {
15-
1615
constructor(viewer: Viewer) {
1716
super(viewer);
1817
this.initializeAPI();
1918
}
2019

2120
loadDropboxIfc() {
22-
//@ts-ignore
21+
// @ts-ignore
2322
Dropbox.choose(this.chooserOptions);
2423
}
2524

2625
private onDBChooserSuccess = async (files: dbChooserResponse[]) => {
2726
const rawResponse = await fetch(files[0].link);
2827
const result = await rawResponse.text();
29-
const ifcBlob = new Blob([result], {type: 'text/plain'});
30-
const ifcFile = new File([ifcBlob], "ifcFile");
28+
const ifcBlob = new Blob([result], { type: 'text/plain' });
29+
const ifcFile = new File([ifcBlob], 'ifcFile');
3130
this.viewer.loadIfc(ifcFile);
3231
}
3332

@@ -37,15 +36,15 @@ export class DropboxAPI extends Component {
3736
linkType: 'direct',
3837
multiselect: false,
3938
extensions: ['.ifc'],
40-
folderselect: false
39+
folderselect: false,
4140
};
4241

4342
private onDBChooserCancel(files: dbChooserResponse[]) {
4443
console.log('Canceled!');
4544
}
4645

4746
private initializeAPI() {
48-
var script = document.createElement('script');
47+
const script = document.createElement('script');
4948
script.type = 'text/javascript';
5049
script.src = 'https://www.dropbox.com/static/api/2/dropins.js';
5150
script.id = 'dropboxjs';

β€Žviewer/src/IO/index.tsβ€Ž

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export * from "./dropbox"
1+
export * from './dropbox';
Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
11
import * as THREE from 'three';
2-
import {Viewer} from '../core';
3-
import { Component } from "./component";
2+
import { Viewer } from '../core';
3+
import { Component } from './component';
44

55
export class Axes extends Component {
6-
76
axes: THREE.AxesHelper;
87

9-
constructor(viewer: Viewer, size?: number){
10-
super(viewer);
11-
this.axes = new THREE.AxesHelper(size);
12-
(this.axes.material as THREE.Material).depthTest = false;
13-
this.axes.renderOrder = 2;
14-
viewer.scene.add(this.axes);
8+
constructor(viewer: Viewer, size?: number) {
9+
super(viewer);
10+
this.axes = new THREE.AxesHelper(size);
11+
(this.axes.material as THREE.Material).depthTest = false;
12+
this.axes.renderOrder = 2;
13+
viewer.scene.add(this.axes);
1514
}
1615
}
Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
1-
import {Viewer} from '../core';
1+
import { Viewer } from '../core';
22

33
export abstract class Component {
4-
54
viewer: Viewer;
65

7-
protected constructor(viewer: Viewer){
8-
viewer.addComponent(this);
9-
this.viewer = viewer;
6+
protected constructor(viewer: Viewer) {
7+
viewer.addComponent(this);
8+
this.viewer = viewer;
109
}
1110

12-
update(_delta: number) { };
11+
update(_delta: number) { }
1312
}
Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
11
import * as THREE from 'three';
2-
import { Component } from "./component";
3-
import {Viewer} from '../core';
2+
import { Component } from './component';
3+
import { Viewer } from '../core';
44

55
export class Grid extends Component {
6-
76
grid: THREE.GridHelper;
87

9-
constructor(viewer: Viewer, size?: number, divisions?: number, colorCenterLine?: THREE.Color, colorGrid?: THREE.Color){
10-
super(viewer);
11-
this.grid = new THREE.GridHelper(size, divisions, colorCenterLine, colorGrid);
12-
(this.grid.material as THREE.Material).depthTest = false;
13-
this.grid.renderOrder = 0;
14-
viewer.scene.add(this.grid);
8+
constructor(viewer: Viewer, size?: number, divisions?: number, colorCenterLine?: THREE.Color, colorGrid?: THREE.Color) {
9+
super(viewer);
10+
this.grid = new THREE.GridHelper(size, divisions, colorCenterLine, colorGrid);
11+
(this.grid.material as THREE.Material).depthTest = false;
12+
this.grid.renderOrder = 0;
13+
viewer.scene.add(this.grid);
1514
}
1615
}
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
export * from "./component";
2-
export * from "./axes";
3-
export * from "./grid";
1+
export * from './component';
2+
export * from './axes';
3+
export * from './grid';

β€Žviewer/src/components/raycaster.tsβ€Ž

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,17 @@ export class IFCRaycaster {
1111
this.canvas = renderer.domElement;
1212
this.ifcModels = ifcModels;
1313
this.raycaster = new THREE.Raycaster();
14-
//@ts-ignore
14+
// @ts-ignore
1515
this.raycaster.firstHitOnly = true;
1616
}
1717

1818
castRay(event: any, onHit: (event: any, item: THREE.Intersection) => any ) {
1919
const mouse = new THREE.Vector2();
2020
const canvasBounds = this.canvas.getBoundingClientRect();
2121
mouse.x = ((event.clientX - canvasBounds.left) / (canvasBounds.right - canvasBounds.left)) * 2 - 1;
22-
mouse.y = -((event.clientY - canvasBounds.top) / (canvasBounds.bottom - canvasBounds.top)) * 2 + 1;
22+
mouse.y = -((event.clientY - canvasBounds.top) / (canvasBounds.bottom - canvasBounds.top)) * 2 + 1;
2323
this.raycaster.setFromCamera(mouse, this.camera);
2424
const result = this.raycaster.intersectObjects(this.ifcModels);
25-
if(result.length > 0) return onHit(event, result[0]);
25+
if (result.length > 0) return onHit(event, result[0]);
2626
}
2727
}

0 commit comments

Comments
Β (0)