Available only in PRO Edition

Formatters-Erweiterung

Diese Funktionalität ist nur in der PRO-Edition verfügbar.

Die gantt.ext.formatters-Erweiterung bietet zwei praktische Methoden zur Formatierung:

Sie können auch einen benutzerdefinierten Formatter erstellen, indem Sie die bereitgestellten als Basis verwenden.

Dauer-Formatter

Die Methode gantt.ext.formatters.durationFormatter(config) erstellt eine neue DurationFormatter-Instanz.

Konfiguration

  • durationFormatter (config): DurationFormatter - initialisiert einen Dauer-Formatter
    • config? - (object) - optional, ein Konfigurationsobjekt mit diesen möglichen Attributen:
      • enter? - (string) - legt das Standardformat für die parse-Methode fest, wenn Eingabewerte keine Einheiten haben. Standard ist "day".
      • store? - (string) - bestimmt, wie Dauerwerte im Gantt gespeichert werden und beeinflusst die Ausgabe der parse-Methode. Standard ist "hour".
      • format? - (string | Array <string>) - definiert, wie der Ausgabe-Wert formatiert wird. Unterstützte Formate sind "auto", "minute", "hour", "day", "week", "month", "year" oder ein Array dieser Werte. Mit "auto" kann der Formatter die am besten geeignete Einheit basierend auf der Wertgröße wählen.
      • short? - (boolean) - ermöglicht kurze Bezeichnungen (Abkürzungen) für Zeiteinheiten. Standard ist false.
      • minutesPerHour? - (number) - legt die Umrechnungsrate zwischen Minuten und Stunden fest. Standard ist 60.
      • hoursPerDay? - (number) - legt die Umrechnungsrate zwischen Stunden und Tagen fest. Standard ist 8.
      • hoursPerWeek? - (number) - legt die Umrechnungsrate zwischen Stunden und Wochen fest. Standard ist 40.
      • daysPerMonth? - (number) - legt die Umrechnungsrate zwischen Tagen und Monaten fest. Standard ist 30.
      • daysPerYear? - (number) - legt die Umrechnungsrate zwischen Tagen und Jahren fest. Standard ist 365.
      • labels? - (object) - passt die Textbezeichnungen für verschiedene Zeiteinheiten an. Diese Bezeichnungen gelten sowohl für geparste als auch formatierte Werte.
        • minute? - (object) - Konfiguration für Minuten
          • full? - (string) - vollständige Bezeichnung für Minuten
          • plural? - (string) - Pluralbezeichnung für Minuten
          • short? - (string) - kurze Bezeichnung für Minuten
        • hour? - (object) - Konfiguration für Stunden
          • full? - (string) - vollständige Bezeichnung für Stunden
          • plural? - (string) - Pluralbezeichnung für Stunden
          • short? - (string) - kurze Bezeichnung für Stunden
        • day? - (object) - Konfiguration für Tage
          • full? - (string) - vollständige Bezeichnung für Tage
          • plural? - (string) - Pluralbezeichnung für Tage
          • short? - (string) - kurze Bezeichnung für Tage
        • week? - (object) - Konfiguration für Wochen
          • full? - (string) - vollständige Bezeichnung für Wochen
          • plural? - (string) - Pluralbezeichnung für Wochen
          • short? - (string) - kurze Bezeichnung für Wochen
        • month? - (object) - Konfiguration für Monate
          • full? - (string) - vollständige Bezeichnung für Monate
          • plural? - (string) - Pluralbezeichnung für Monate
          • short? - (string) - kurze Bezeichnung für Monate
        • year? - (object) - Konfiguration für Jahre
          • full? - (string) - vollständige Bezeichnung für Jahre
          • plural? - (string) - Pluralbezeichnung für Jahre
          • short? - (string) - kurze Bezeichnung für Jahre

Beispiele:

So richten Sie einen Dauer-Formatter mit Standardeinstellungen ein:

const formatter = gantt.ext.formatters.durationFormatter();
// erstellt eine Instanz des Formatter-Objekts mit der Fabrikmethode
  • enter:
formatter.parse("1"); // behandelt den Wert als 1 Tag, wenn enter:"day" (Standard)
formatter.parse("1"); // behandelt den Wert als 1 Stunde, wenn enter:"hour"
  • store:
formatter.parse("1 day"); // speichert den Wert als 8, wenn store:"hour"
formatter.parse("1 day"); // speichert den Wert als 480, wenn store:"minute"
  • format
gantt.ext.formatters.durationFormatter({
    format: ["hour", "minute"],     store:"minute"
}).format(260); // 4 Stunden 20 Minuten
 
gantt.ext.formatters.durationFormatter({
    format: "hour",     store:"minute"  
}).format(260); // 4.33 Stunden
  • short
gantt.ext.formatters.durationFormatter({
    format: ["week", "hour", "minute"],
    store:"minute",
    short: false   }).format(10021); // "4 Wochen 7 Stunden 1 Minute"
 
gantt.ext.formatters.durationFormatter({
    format: ["week", "hour", "minute"],
    store:"minute",
    short: true  }).format(10021); // "4wk 7h 1min"

Hier ist ein Beispiel für eine vollständige Konfiguration:

const formatter = gantt.ext.formatters.durationFormatter({
    // Standardwerte
    enter: "day",
    store: "hour",
    format: "auto",
    short: false,
    minutesPerHour: 60,
    hoursPerDay: 8,
    hoursPerWeek: 40,
    daysPerMonth: 30,
    daysPerYear: 365,
    labels: {
        minute: {
            full: "minute",
            plural: "minutes",
            short: "min"
        },
        hour: {
            full: "hour",
            plural: "hours",
            short: "h"
        },
        day: {
            full: "day",
            plural: "days",
            short: "d"
        },
        week: {
            full: "week",
            plural: "weeks",
            short: "wk"
        },
        month: {
            full: "month",
            plural: "months",
            short: "mon"
        },
        year: {
            full: "year",
            plural: "years",
            short: "y"
        }
    }
});

API

Die DurationFormatter-Instanz bietet folgende Methoden:

  • canParse (value): boolean - prüft, ob der bereitgestellte String in einen Dauerwert geparst werden kann, und gibt true zurück, wenn ja, und false andernfalls.
    • value - (string) - der zu prüfende String
const formatter = gantt.ext.formatters.durationFormatter();
console.log(formatter.canParse("1 day"));
// true
 
console.log(formatter.canParse("abc"));
// false
  • format (value): string - konvertiert einen Dauerwert in eine String-Darstellung.
    • value - (number) - der zu konvertierende Dauerwert
const formatter = gantt.ext.formatters.durationFormatter();
console.log(formatter.format(24));
// 3 days
  • parse (value): number - parst einen String in einen Dauerwert. Wenn das Parsen fehlschlägt, wird ‘null’ zurückgegeben.
    • value - (string) - der zu konvertierende String
const formatter = gantt.ext.formatters.durationFormatter();
console.log(formatter.parse("1 day"));
// 8

Für weitere Details, siehe die durationFormatter-Methode im Artikel Arbeitszeiterfassung.

Link-Formatter

Die Methode gantt.ext.formatters.linkFormatter(config) erstellt eine neue LinkFormatter-Instanz. Sie teilt einige Methoden und Konfigurationsoptionen mit dem Dauer-Formatter.

Konfiguration

  • linkFormatter (config): LinkFormatter - initialisiert einen Link-Formatter
    • config? - (object) - optional, ein Konfigurationsobjekt mit diesen Attributen:
      • durationFormatter? - (DurationFormatter) - eine Instanz von DurationFormatter, erstellt mit gantt.ext.formatters.durationFormatter(). Diese steuert, wie Verzögerungs-/Vorlaufwerte in Links geparst und formatiert werden.
      • labels? - (object) - lokalisierte Bezeichnungen für verschiedene Linktypen:
        • finish_to_start? - (string) - Bezeichnung für Finish-to-Start-Links
        • start_to_start? - (string) - Bezeichnung für Start-to-Start-Links
        • finish_to_finish? - (string) - Bezeichnung für Finish-to-Finish-Links
        • start_to_finish? - (string) - Bezeichnung für Start-to-Finish-Links

Beispiele:

So richten Sie einen Link-Formatter mit Standardeinstellungen ein:

const formatter = gantt.ext.formatters.linkFormatter();
// erstellt eine Instanz des Formatter-Objekts mit der Fabrikmethode
  • short:
gantt.ext.formatters.linkFormatter()
   .format({id:1, type:"1", source: 1, target: 2, lag: 5});
// "1SS+5 days"
 
var durationFormatter = gantt.ext.formatters.durationFormatter({
    short: true
});
gantt.ext.formatters.linkFormatter({durationFormatter: durationFormatter})
    .format({id:1, type:"2", source: 1, target: 2, lag: -1});
// "1FF-1d"
  • labels:
const formatter = gantt.ext.formatters.linkFormatter({
    // Standardwerte
    durationFormatter: gantt.ext.formatters.durationFormatter(),
    labels: {
        finish_to_start: "FS",
        start_to_start: "SS",
        finish_to_finish: "FF",
        start_to_finish: "SF"
    }
});

API

Die LinkFormatter-Instanz bietet folgende Methoden:

  • canParse (value): boolean - prüft, ob der bereitgestellte String in ein Linkobjekt geparst werden kann, und gibt true zurück, wenn ja, und false andernfalls.
    • value - (string) - der zu prüfende String
const formatter = gantt.ext.formatters.linkFormatter();
console.log(formatter.canParse("1FS + 1 day"));
// true
 
console.log(formatter.canParse("abc"));
// false
  • format (link): string - konvertiert ein Linkobjekt in eine String-Darstellung.
    • value - (Link) - das zu konvertierende Linkobjekt
const formatter = gantt.ext.formatters.linkFormatter();
 
formatter.format({id:1, type:"1", source: 1, target: 2, lag: 5});
// "1SS+5 days"
  • parse (value): object - parst einen String in ein Linkobjekt. Wenn das Parsen fehlschlägt, wird ‘null’ zurückgegeben. Hinweis: das link.target wird für den angegebenen Link einen "null"-Wert haben.
    • value - (string) - der zu konvertierende String
const formatter = gantt.ext.formatters.linkFormatter();
 
formatter.parse("1SS+5 days");
// {id:1, type:"1", source: 1, target: null, lag: 5}

Formatinfo

Der LinkFormatter unterstützt zwei Linkformate:

const formatter = gantt.ext.formatters.linkFormatter();
 
console.log(formatter.parse("1.1"));
// {id:1, type:"0", source: 2, target: 3, lag: 0}
 
console.log(formatter.format({id:2, type:"0", source: 1, target: 3, lag: 0}));
// 1.1
  • ${WBS}${TYPE}${LAG} - vollständiges Format
    • ${WBS}: Bezieht sich auf den WBS-Code der Aufgabe.
    • ${TYPE}: Dies ist der Linktyp. Die gültigen Optionen umfassen 'FF', 'FS', 'SS', 'SF' oder beliebige benutzerdefinierte Werte, die in der labels-Konfiguration des LinkFormatter definiert sind.
    • ${LAG}: Stellt die Linkverzögerung dar, die einen positiven oder negativen Wert haben kann, wie +1 day oder -1 day. Das Format für diesen Wert wird durch den durationFormatter-Parameter bestimmt, der dem Konstruktor des LinkFormatter übergeben wird.
const formatter = gantt.ext.formatters.linkFormatter();
 
console.log(formatter.parse("1.1SS + 1 day"));
// {id:1, type:"1", source: 2, target: null, lag: 1}
 
console.log(formatter.format({id:1, type:"1", source: 2, target: 3, lag: 1}));
// 1.1SS + 1 day

Finish-To-Start-Links ohne Verzögerung oder Vorlauf werden im kurzen Format formatiert, während andere Linktypen das vollständige Format verwenden. Ebenso, wenn nur der WBS-Code an die parse-Methode übergeben wird, nimmt der Formatter einen Finish-to-Start-Typ mit null Verzögerung an.

Für weitere Details zur linkFormatter-Methode, siehe den Artikel Inline-Bearbeitung im Raster.


Benutzerdefinierter Formatter

Gantt ermöglicht es, benutzerdefinierte Formatter basierend auf den vorhandenen zu erstellen. Diese benutzerdefinierten Formatter können dem Inline-Editor hinzugefügt werden. Intern speichert Gantt die Daten in seinem Standardformat, aber wenn der Inline-Editor geöffnet wird, zeigt er den Wert im gewünschten Format an.

Benutzerdefinierte Formatter sind Objekte, die zwei Funktionen enthalten: format() und parse().

  • Die format()-Funktion wird verwendet, um eine Zahl (für einen benutzerdefinierten Dauer-Formatter) oder einen Link (für einen benutzerdefinierten Link-Formatter) in das gewünschte Format zu konvertieren.
  • Die parse()-Funktion konvertiert einen formatierten Wert zurück in eine Zahl (für einen benutzerdefinierten Dauer-Formatter) oder einen Link (für einen benutzerdefinierten Link-Formatter).

So sehen benutzerdefinierte Formatter aus:

const customDurationFormatter = {
    format: function (duration) {
        let formattedDuration;
        // Logik, um eine Zahl in das gewünschte Format umzuwandeln
        return formattedDuration;
    },
    parse: function (formattedValue) {
        let duration;
        // Logik, um das gewünschte Format zurück in eine Zahl umzuwandeln
        return duration;
    }
};
 
const customLinkFormatter = {
    format: function (link) {
        let formattedLink;
        // Logik, um ein Linkobjekt in das gewünschte Format umzuwandeln
        return formattedLink;
    },
    parse: function (formattedValue) {
        let link;
        // Logik, um das gewünschte Format zurück in ein Linkobjekt umzuwandeln
        return link;
    }
};

Vorhandene Formatter können auch in benutzerdefinierte Formatter integriert werden, wobei deren Ausgabe bei Bedarf modifiziert wird.

Um benutzerdefinierte Formatter Inline-Editoren zuzuweisen, ist der Vorgang derselbe wie bei Standard-Formatter. Zum Beispiel:

const durationEditor = { 
    type: "duration", map_to: "duration", formatter: customDurationFormatter 
};

Hier ist ein Beispiel, wie benutzerdefinierte Dauer- und Link-Formatter implementiert werden können:

Related sample:  Benutzerdefinierte Dauer- und Link-Formatter


Benutzerdefinierte Regeln für Pluralformen

Die Standardkonfiguration des Dauer-Formatters unterstützt nur eine Pluralform für Substantive, was für Englisch gut funktioniert, da die Pluralbildung normalerweise das Hinzufügen eines Suffixes oder die Veränderung des Substantivs beinhaltet.

Andere Sprachen können jedoch mehrere Pluralformen mit unterschiedlichen Regeln für deren Verwendung haben. Um dies zu adressieren, kann ein benutzerdefinierter Formatter erstellt werden, um die geeigneten Regeln für eine bestimmte Sprache zu definieren. Zum Beispiel, hier ist, wie benutzerdefinierte Pluralisierungsregeln für Japanisch angewendet werden können:

Related sample:  Benutzerdefinierter Dauer-Formatter mit unterschiedlichen Pluralwerten für japanische Lokalisierung

Zurück nach oben