Skip to content

Commit

Permalink
add more linting (#982)
Browse files Browse the repository at this point in the history
Add linting for dashboard and add import order linting

Signed-off-by: Teo Koon Peng <[email protected]>
  • Loading branch information
koonpeng authored Aug 1, 2024
1 parent c92f2ba commit 6ab39e9
Show file tree
Hide file tree
Showing 203 changed files with 455 additions and 255 deletions.
2 changes: 2 additions & 0 deletions .github/workflows/dashboard.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ jobs:
with:
package: rmf-dashboard
skip-build: true
- name: lint
run: pnpm lint
- name: unit test
run: pnpm run test:coverage
- name: Upload coverage to Codecov
Expand Down
9 changes: 9 additions & 0 deletions eslint.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { FlatCompat } from '@eslint/eslintrc';
import eslint from '@eslint/js';
import react from 'eslint-plugin-react';
import reactHooks from 'eslint-plugin-react-hooks';
import simpleImportSort from 'eslint-plugin-simple-import-sort';
import storybook from 'eslint-plugin-storybook';
import tseslint from 'typescript-eslint';

Expand All @@ -22,7 +23,15 @@ export default tseslint.config(
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/ban-types': ['error', { types: { '{}': false }, extendDefaults: true }],
'@typescript-eslint/no-loss-of-precision': 'off',
'@typescript-eslint/no-unused-vars': ['warn', { argsIgnorePattern: '^_' }],
},
},
...compat.config(storybook.configs.recommended),
{
plugins: { 'simple-import-sort': simpleImportSort },
rules: {
'simple-import-sort/imports': 'error',
'simple-import-sort/exports': 'error',
},
},
);
5 changes: 3 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,9 @@
},
"devDependencies": {
"eslint": "^8.57.0",
"eslint-plugin-react": "^7.34.1",
"eslint-plugin-react-hooks": "^4.6.0",
"eslint-plugin-react": "^7.35.0",
"eslint-plugin-react-hooks": "^4.6.2",
"eslint-plugin-simple-import-sort": "^12.1.1",
"eslint-plugin-storybook": "^0.8.0",
"husky": "^9.0.11",
"lint-staged": "^15.2.2",
Expand Down
1 change: 1 addition & 0 deletions packages/dashboard/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
"scripts": {
"build": "vite build",
"build-storybook": "storybook build",
"lint": "tsc --build && eslint --max-warnings 0 src",
"start": "concurrently npm:start:rmf-server npm:start:react",
"start:airport": "RMF_DASHBOARD_DEMO_MAP=airport_terminal.launch.xml pnpm run start:sim",
"start:clinic": "RMF_DASHBOARD_DEMO_MAP=clinic.launch.xml pnpm run start:sim",
Expand Down
3 changes: 2 additions & 1 deletion packages/dashboard/src/app-config.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import React from 'react';
import { TaskDefinition, getDefaultTaskDefinition } from 'react-components';
import { getDefaultTaskDefinition, TaskDefinition } from 'react-components';
import { Authenticator, KeycloakAuthenticator, StubAuthenticator } from 'rmf-auth';

import appConfigJson from '../app-config.json';
import { BasePath } from './util/url';

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { Meta, StoryFn } from '@storybook/react';

import { AddPermissionDialog, AddPermissionDialogProps } from './add-permission-dialog';

export default {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { MenuItem, TextField } from '@mui/material';
import { Permission } from 'api-client';
import React from 'react';
import { ConfirmationDialog, useAsync } from 'react-components';

import { AppControllerContext } from '../app-contexts';
import { getActionText, RmfAction } from '../permissions';

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { Meta, StoryFn } from '@storybook/react';

import { CreateRoleDialog, CreateRoleDialogProps } from './create-role-dialog';

export default {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { TextField } from '@mui/material';
import React from 'react';
import { ConfirmationDialog, useAsync } from 'react-components';

import { AppControllerContext } from '../app-contexts';

export interface CreateRoleDialogProps {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { Meta, StoryFn } from '@storybook/react';

import { CreateUserDialog, CreateUserDialogProps } from './create-user-dialog';

export default {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { TextField } from '@mui/material';
import React from 'react';
import { ConfirmationDialog, useAsync } from 'react-components';

import { AppControllerContext } from '../app-contexts';

export interface CreateUserDialogProps {
Expand Down
1 change: 1 addition & 0 deletions packages/dashboard/src/components/admin/drawer.stories.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { Meta, StoryFn } from '@storybook/react';

import { AdminDrawer } from './drawer';

export default {
Expand Down
10 changes: 5 additions & 5 deletions packages/dashboard/src/components/admin/drawer.tsx
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
import { SvgIconComponent } from '@mui/icons-material';
import AccountIcon from '@mui/icons-material/AccountCircle';
import SecurityIcon from '@mui/icons-material/Security';
import {
Drawer,
DrawerProps,
List,
ListItem,
ListItemIcon,
ListItemText,
Toolbar,
styled,
Toolbar,
} from '@mui/material';
import { SvgIconComponent } from '@mui/icons-material';
import AccountIcon from '@mui/icons-material/AccountCircle';
import SecurityIcon from '@mui/icons-material/Security';
import React from 'react';
import { RouteProps, useNavigate, useLocation } from 'react-router';
import { RouteProps, useLocation, useNavigate } from 'react-router';

export type AdminDrawerValues = 'Users' | 'Roles';

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { Meta, StoryFn } from '@storybook/react';

import { ManageRolesCard } from './manage-roles-dialog';
import { RoleListCardProps } from './role-list-card';

Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import SecurityIcon from '@mui/icons-material/Security';
import {
Button,
Card,
Expand All @@ -14,9 +15,9 @@ import {
ListItemText,
styled,
} from '@mui/material';
import SecurityIcon from '@mui/icons-material/Security';
import React from 'react';
import { Loading, TransferList, useAsync } from 'react-components';

import { AppControllerContext } from '../app-contexts';

const prefix = 'manage-roles-dialog';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { Meta, StoryFn } from '@storybook/react';
import { Permission } from 'api-client';

import { PermissionsCard, PermissionsCardProps } from './permissions-card';

export default {
Expand Down
7 changes: 4 additions & 3 deletions packages/dashboard/src/components/admin/permissions-card.tsx
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import AddIcon from '@mui/icons-material/AddCircle';
import DeleteIcon from '@mui/icons-material/Delete';
import {
Button,
IconButton,
Expand All @@ -12,12 +14,11 @@ import {
Toolbar,
Typography,
} from '@mui/material';
import AddIcon from '@mui/icons-material/AddCircle';
import DeleteIcon from '@mui/icons-material/Delete';
import { styled } from '@mui/material';
import { Permission } from 'api-client';
import React from 'react';
import { styled } from '@mui/material';
import { Loading, useAsync } from 'react-components';

import { AppControllerContext } from '../app-contexts';
import { getActionText } from '../permissions';
import { AddPermissionDialog, AddPermissionDialogProps } from './add-permission-dialog';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { Meta, StoryFn } from '@storybook/react';
import { RoleListCard, RoleListCardProps } from './role-list-card';

import { RmfAction } from '../permissions';
import { RoleListCard, RoleListCardProps } from './role-list-card';

export default {
title: 'Admin/Role List Card',
Expand Down
11 changes: 6 additions & 5 deletions packages/dashboard/src/components/admin/role-list-card.tsx
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
import AddIcon from '@mui/icons-material/AddCircle';
import DeleteIcon from '@mui/icons-material/Delete';
import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
import SecurityIcon from '@mui/icons-material/Security';
import {
Accordion,
AccordionDetails,
Expand All @@ -9,16 +13,13 @@ import {
Divider,
Grid,
IconButton,
Typography,
styled,
Typography,
} from '@mui/material';
import AddIcon from '@mui/icons-material/AddCircle';
import DeleteIcon from '@mui/icons-material/Delete';
import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
import SecurityIcon from '@mui/icons-material/Security';
import { Permission } from 'api-client';
import React from 'react';
import { ConfirmationDialog, Loading, useAsync } from 'react-components';

import { AppControllerContext } from '../app-contexts';
import { CreateRoleDialog, CreateRoleDialogProps } from './create-role-dialog';
import { PermissionsCard, PermissionsCardProps } from './permissions-card';
Expand Down
1 change: 1 addition & 0 deletions packages/dashboard/src/components/admin/role-list-page.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import React from 'react';

import { RmfAppContext } from '../rmf-app';
import { getApiErrorMessage } from '../utils';
import { adminPageClasses, AdminPageContainer } from './page-css';
Expand Down
3 changes: 2 additions & 1 deletion packages/dashboard/src/components/admin/router.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { Route, Routes, Navigate, Outlet } from 'react-router-dom';
import { Navigate, Outlet, Route, Routes } from 'react-router-dom';

import { AdminDrawer } from './drawer';
import { RoleListPage } from './role-list-page';
import { UserListPage } from './user-list-page';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { render } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import { describe, expect, it, vi } from 'vitest';

import { RmfAction } from '../../permissions';
import { AddPermissionDialog } from '../add-permission-dialog';

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { render } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import { describe, expect, it, vi } from 'vitest';

import { CreateRoleDialog } from '../create-role-dialog';

describe('CreateRoleDialog', () => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { render } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import { describe, expect, it, vi } from 'vitest';

import { CreateUserDialog } from '../create-user-dialog';

describe('CreateUserDialog', () => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { describe, it } from 'vitest';

import { render } from '../../tests/test-utils';
import { AdminDrawer } from '../drawer';

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { render, waitFor, waitForElementToBeRemoved } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import { describe, expect, it, vi } from 'vitest';

import { ManageRolesCard, ManageRolesDialog } from '../manage-roles-dialog';

describe('ManageRolesCard', () => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import { fireEvent, render, waitFor } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import { afterAll, beforeAll, describe, expect, it, vi } from 'vitest';
import { RmfAction, getActionText } from '../../permissions';

import { getActionText, RmfAction } from '../../permissions';
import { PermissionsCard } from '../permissions-card';

// TODO(AA): To remove after
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { render, waitFor } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import { describe, expect, it } from 'vitest';

import { RoleListCard } from '../role-list-card';

describe('Role List', () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { render, waitFor } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import { MemoryRouter } from 'react-router';
import { describe, expect, it, vi } from 'vitest';

import { UserListCard } from '../user-list-card';

describe('UserListCard', () => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { render, waitFor } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import { describe, expect, it, vi } from 'vitest';

import { UserProfileCard } from '../user-profile';

describe('UserProfileCard', () => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { Meta, StoryFn } from '@storybook/react';
import { MemoryRouter } from 'react-router';

import { UserListCard, UserListCardProps } from './user-list-card';

export default {
Expand Down
11 changes: 6 additions & 5 deletions packages/dashboard/src/components/admin/user-list-card.tsx
Original file line number Diff line number Diff line change
@@ -1,10 +1,15 @@
import AccountIcon from '@mui/icons-material/AccountCircle';
import AddIcon from '@mui/icons-material/AddCircle';
import DeleteIcon from '@mui/icons-material/Delete';
import SearchIcon from '@mui/icons-material/Search';
import {
Button,
Card,
CardHeader,
CardProps,
IconButton,
InputAdornment,
styled,
Table,
TableBody,
TableCell,
Expand All @@ -14,15 +19,11 @@ import {
TableRow,
TextField,
Typography,
styled,
} from '@mui/material';
import AccountIcon from '@mui/icons-material/AccountCircle';
import AddIcon from '@mui/icons-material/AddCircle';
import DeleteIcon from '@mui/icons-material/Delete';
import SearchIcon from '@mui/icons-material/Search';
import React from 'react';
import { ConfirmationDialog, Loading, useAsync } from 'react-components';
import { useNavigate } from 'react-router';

import { AppControllerContext } from '../app-contexts';
import { CreateUserDialog, CreateUserDialogProps } from './create-user-dialog';

Expand Down
1 change: 1 addition & 0 deletions packages/dashboard/src/components/admin/user-list-page.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import React from 'react';

import { RmfAppContext } from '../rmf-app';
import { getApiErrorMessage } from '../utils';
import { adminPageClasses, AdminPageContainer } from './page-css';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import { AxiosError } from 'axios';
import React from 'react';
import { useAsync } from 'react-components';
import { useParams } from 'react-router';

import { RmfAppContext } from '../rmf-app';
import { getApiErrorMessage } from '../utils';
import { ManageRolesCard } from './manage-roles-dialog';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { Meta, StoryFn } from '@storybook/react';
import { User } from 'api-client';
import React from 'react';

import { UserProfileCard, UserProfileCardProps } from './user-profile';

export default {
Expand Down
7 changes: 4 additions & 3 deletions packages/dashboard/src/components/admin/user-profile.tsx
Original file line number Diff line number Diff line change
@@ -1,19 +1,20 @@
import AccountIcon from '@mui/icons-material/AccountCircle';
import MoreIcon from '@mui/icons-material/MoreVert';
import {
Card,
CardProps,
CardHeader,
CardProps,
Checkbox,
FormControlLabel,
IconButton,
Menu,
MenuItem,
styled,
} from '@mui/material';
import AccountIcon from '@mui/icons-material/AccountCircle';
import MoreIcon from '@mui/icons-material/MoreVert';
import { User } from 'api-client';
import React from 'react';
import { useAsync } from 'react-components';

import { AppControllerContext } from '../app-contexts';

const classes = {
Expand Down
Loading

0 comments on commit 6ab39e9

Please sign in to comment.