Skip to content
GitLab
    • Explore Projects Groups Topics Snippets
Projects Groups Topics Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Register
  • Sign in
  • D dashboarder
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributor statistics
    • Graph
    • Compare revisions
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Package Registry
    • Terraform modules
  • Monitor
    • Monitor
    • Metrics
    • Incidents
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • thb
  • dashboarder
  • Merge requests
  • !7

Warn for unused panels and pages

  • Review changes

  • Download
  • Patches
  • Plain diff
Merged Robert Beilich requested to merge feat/unused_panel into main 3 years ago
  • Overview 0
  • Commits 1
  • Pipelines 0
  • Changes 1

Fixes #1 (closed)

Edited 3 years ago by Robert Beilich
Compare
  • main (base)

and
  • latest version
    4446deb4
    1 commit, 3 years ago

1 file
+ 20
− 3

    Preferences

    File browser
    Compare changes
src/language-server/dashboarder-validator.ts
+ 20
− 3
  • View file @ 4446deb4

  • Edit in single-file editor

  • Open in Web IDE


import { ValidationAcceptor, ValidationCheck, ValidationRegistry } from 'langium';
import { AstNode, Reference, ValidationAcceptor, ValidationCheck, ValidationRegistry } from 'langium';
import { DashboarderAstType, Page, Panel } from './generated/ast';
import { DashboarderServices } from './dashboarder-module';
import _ from 'lodash';
@@ -13,8 +13,8 @@ export class DashboarderValidationRegistry extends ValidationRegistry {
super(services);
const validator = services.validation.DashboarderValidator;
const checks: DashboarderChecks = {
Panel: [validator.checkPanelStartsWithCapital],
Page: [validator.checkPositionInGrid, validator.checkPanelOverlap],
Panel: [validator.checkPanelStartsWithCapital, validator.checkUnusedPanel],
Page: [validator.checkPositionInGrid, validator.checkPanelOverlap, validator.checkUnusedPage],
};
this.register(checks, validator);
}
@@ -71,6 +71,20 @@ export class DashboarderValidator {
accept('warning', `Panel overlaps with ${value.map(panel => panel.name).join(', ')}`, { node: page, property: 'positions', index });
});
}
checkUnusedPanel(node: Panel, accept: ValidationAcceptor) {
const pages = node.$container.pages;
for (let page of pages) {
if (page.panels.find(isReferenced(node))) return;
}
accept('warning', 'Panel is unused', { node, property: 'name' });
}
checkUnusedPage(node: Page, accept: ValidationAcceptor) {
const sidebar = node.$container.sidebar;
if(sidebar.pages.find(isReferenced(node))) return;
accept('warning', 'Page is unused', { node, property: 'name' });
}
}
interface Position {
@@ -97,3 +111,6 @@ const convertToPosition = (position: string): Position => {
return { rowStart: _.min(rowElements)!, rowEnd: _.max(rowElements)!, columnStart: _.min(columnElements)!, columnEnd: _.max(columnElements)! };
}
export const isReferenced = <T extends AstNode>(node: T) => (ref: Reference<T>): boolean => (ref.ref === node);
Assignee
Robert Beilich's avatar
Robert Beilich
Assign to
Reviewer
Timo Boersch's avatar
Timo Boersch
Request review from
Labels
0
None
0
None
    Assign labels
  • Manage project labels

Milestone
No milestone
None
None
Time tracking
No estimate or time spent
Lock merge request
Unlocked
2
2 Participants
Timo Boersch
Robert Beilich
Reference: thb/dashboarder!7
Source branch: feat/unused_panel

Menu

Explore Projects Groups Topics Snippets