mirror of https://github.com/grafana/grafana
Plugin Extensions: Custom limits for extensions-per-plugin (#69430)
* feat(plugins): remove global limit on extensions per placement * feat: add a way to limit extension per plugin at the getter * test(plugins): fix failing getPluginExtensions test * refactor(panelmenu): put back limit of 2 extensions per plugin * tests: add a test for checking all extensions are returned by default --------- Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>pull/67929/head
parent
d25cea90b0
commit
7b2bd48677
@ -1 +0,0 @@ |
||||
export const MAX_EXTENSIONS_PER_POINT = 2; |
@ -1,33 +0,0 @@ |
||||
import type { PluginExtensionConfig } from '@grafana/data'; |
||||
|
||||
import { MAX_EXTENSIONS_PER_POINT } from './constants'; |
||||
|
||||
export class ExtensionsPerPlugin { |
||||
private extensionsByExtensionPoint: Record<string, string[]> = {}; |
||||
|
||||
allowedToAdd({ extensionPointId, title }: PluginExtensionConfig): boolean { |
||||
if (this.countByExtensionPoint(extensionPointId) >= MAX_EXTENSIONS_PER_POINT) { |
||||
return false; |
||||
} |
||||
|
||||
this.addExtensionToExtensionPoint(extensionPointId, title); |
||||
|
||||
return true; |
||||
} |
||||
|
||||
addExtensionToExtensionPoint(extensionPointId: string, extensionTitle: string) { |
||||
if (!this.extensionsByExtensionPoint[extensionPointId]) { |
||||
this.extensionsByExtensionPoint[extensionPointId] = []; |
||||
} |
||||
|
||||
this.extensionsByExtensionPoint[extensionPointId].push(extensionTitle); |
||||
} |
||||
|
||||
countByExtensionPoint(extensionPointId: string) { |
||||
return this.extensionsByExtensionPoint[extensionPointId]?.length ?? 0; |
||||
} |
||||
|
||||
getExtensionTitlesByExtensionPoint(extensionPointId: string) { |
||||
return this.extensionsByExtensionPoint[extensionPointId]; |
||||
} |
||||
} |
Loading…
Reference in new issue