123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- export class Label {
- constructor() {
- this._usedUpperLabels = [];
- this._usedLowerLabels = [];
- }
- draw(lower = false) {
- if (lower) {
- return this.pushLower();
- } else {
- return this.pushUpper();
- }
- }
- pushLower(label) {
- if (label == undefined) {
- label = this._generateLabel(this._usedLowerLabels.length + 1);
- while (this._usedLowerLabels.includes(this.label)) {
- label = this._generateLabel(this._usedLowerLabels.length + 1);
- }
- }
- this._usedLowerLabels.push(label);
- return label.toLowerCase();
- }
- pushUpper(label) {
- if (label == undefined) {
- label = this._generateLabel(this._usedUpperLabels.length + 1);
- while (this._usedUpperLabels.includes(this.label)) {
- label = this._generateLabel(this._usedUpperLabels.length + 1);
- }
- }
- this._usedUpperLabels.push(label);
- return label.toUpperCase();
- }
- _generateLabel(n) {
- let label = "";
- let labelNumber = n;
- while (labelNumber > 0) {
- const letterNumber = (labelNumber - 1) % 26;
- const currentLetter = String.fromCharCode(letterNumber + 65);
- label = currentLetter + label;
- labelNumber = (labelNumber - (letterNumber + 1)) / 26;
- }
- return label;
- }
- }
- export const label = new Label();
|