refactor: simplify CellRenderer by tbouffard · Pull Request #659 · maxGraph/maxGraph · GitHub
Skip to content

refactor: simplify CellRenderer#659

Merged
tbouffard merged 2 commits into
mainfrom
refactor/CellRenderer_explicit_types_and_better_jsdoc
Feb 11, 2025
Merged

refactor: simplify CellRenderer#659
tbouffard merged 2 commits into
mainfrom
refactor/CellRenderer_explicit_types_and_better_jsdoc

Conversation

@tbouffard

@tbouffard tbouffard commented Feb 8, 2025

Copy link
Copy Markdown
Member

Make return type of method explicit to ensure that we have a stable API (the type won't change if the implementation change).
Simplify the implementation of various method and improve the name of variables.
initializeOverlay: generalize type in method signature using Shape instead of ImageShape.
Improve JSDoc

Notes

Covers #28

Summary by CodeRabbit

  • Refactor

    • Enhanced clarity and type safety by adding return types to method signatures in the cell rendering functionality.
    • Cleaned up the code by removing unnecessary commented-out sections.
  • Documentation

    • Updated documentation comments for consistency in parameter descriptions.

Make return type of method explicit to ensure that we have a stable API (the type won't change if the implementation
change).
Simplify the implementation of various method and improve the name of variables.
`initializeOverlay`: generalize type in method signature using Shape instead of ImageShape.
Improve JSDoc
@tbouffard tbouffard added the refactor Code refactoring label Feb 8, 2025
@coderabbitai

coderabbitai Bot commented Feb 8, 2025

Copy link
Copy Markdown

@tbouffard tbouffard marked this pull request as ready for review February 8, 2025 16:06

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (1)
packages/core/src/view/cell/CellRenderer.ts (1)

879-896: Consider enhancing error handling in the check function.

While the type handling improvements are good, consider adding error handling for edge cases:

  • Handle null or undefined values in string conversion
  • Add type guards for the shape property access
 function check(property: string, styleName: string, defaultValue: any) {
   let result = false;
+  if (shape == null) {
+    return false;
+  }
   if (
     styleName === 'spacingTop' ||
     styleName === 'spacingRight' ||
     styleName === 'spacingBottom' ||
     styleName === 'spacingLeft'
   ) {
     result =
-      parseFloat(String(shape[property])) - parseFloat(String(shape.spacing)) !==
+      parseFloat(String(shape[property] ?? 0)) - parseFloat(String(shape.spacing ?? 0)) !==
       (state.style[styleName] || defaultValue);
   } else {
+    const shapeValue = shape[property];
+    if (shapeValue === undefined) {
+      return false;
+    }
-    result = shape[property] !== (state.style[styleName] || defaultValue);
+    result = shapeValue !== (state.style[styleName] || defaultValue);
   }
   return result;
 }
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 22d8a34 and b2a6e02.

📒 Files selected for processing (1)
  • packages/core/src/view/cell/CellRenderer.ts (29 hunks)
🔇 Additional comments (3)
packages/core/src/view/cell/CellRenderer.ts (3)

104-107: Documentation improvements look good!

The updated JSDoc comments provide clearer descriptions of the class properties.

Also applies to: 111-113


503-505: Great improvement in method signature!

The change from ImageShape to Shape in the initializeOverlay method signature makes the method more flexible and follows the Liskov Substitution Principle. This allows for better extensibility and reuse.


463-495: Implementation improvements enhance readability!

The changes to createCellOverlays include:

  • Better variable naming
  • Added type annotations
  • Clearer logic flow

…ter_jsdoc

# Conflicts:
#	packages/core/src/view/cell/CellRenderer.ts
@sonarqubecloud

Copy link
Copy Markdown

@tbouffard tbouffard merged commit 81d5e5a into main Feb 11, 2025
@tbouffard tbouffard deleted the refactor/CellRenderer_explicit_types_and_better_jsdoc branch February 11, 2025 16:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

refactor Code refactoring

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant