Page tree
Skip to end of metadata
Go to start of metadata

Das Gantt-Diagramm und die zugehörige Klasse addon_gantt steht Ihnen erst ab Version 4.8 zur Verfügung.

Zum Einbinden eines Gantt-Diagramms nutzen Sie das Tag <gantt> im Template.

1. Definition

1.1. Eintrag (item)

Ein Eintrag ist ein assoziatives Array, das die folgenden Schlüssel, welche als Klassenkonstanten definiert sind, enthalten kann:

  • addon_gantt::ITEM_ID - (obligatorisch) Eindeutige Identifikation des Eintrages; kann Datentyp String oder Integer sein.

  • addon_gantt::ITEM_TEXT - (obligatorisch) Der Bezeichner des Eintrages.

  • addon_gantt::ITEM_TYPE - Der Typ des Eintrages.

  • addon_gantt::ITEM_START - (obligatorisch) Der Startzeitpunkt. Muss ein Unix Zeitstempel von Datentyp Integer sein.

  • addon_gantt::ITEM_END - (obligatorisch) Der Endzeitpunkt. Muss ein Unix Zeitstempel von Datentyp Integer sein.

  • addon_gantt::ITEM_DURATION - Die Dauer des Eintrages. Kann alternativ zum Endzeitpunkt angegeben werden.

  • addon_gantt::ITEM_PARENT_ITEM_ID - Die eindeutige Identifikation des Elterneintrages; kann Datentyp String oder Integer sein. Wenn sich der Eintrag in der obersten Ebene befinden soll, muss der Wert 0 als Integer sein.

  • addon_gantt::ITEM_PROGRESS - (obligatorisch) Der Fortschritt des Eintrages. Muss ein Fließkommawert zwischen 0 und 1 sein.

  • addon_gantt::ITEM_OPEN - Definiert ob die Kindeinträge des Eintrags zu sehen sind oder nicht. Muss ein boolescher Wert sein.

  • addon_gantt::ITEM_USER_DATA - Ist ein Array mit zusätzlichen Daten, die dem Eintrag übergeben werden sollen.

Für den Schlüssel addon_gantt::ITEM_TYPE stehen die folgenden Werte zur Verfügung:

  • addon_gantt::ITEM_TYPE_TASK - Einfacher Eintrag.

  • addon_gantt::ITEM_TYPE_PROJECT - Ein Projekt.

  • addon_gantt::ITEM_TYPE_MILESTONE - Ein Meilenstein.


1.2. Verknüpfung (link)

Eine Verknüpfung ist ein assoziatives Array welches die folgenden Schlüssel, welche als Klassenkonstanten definiert sind, enthalten kann:

  • addon_gantt::LINK_ID - (obligatorisch) Eindeutige Identifikation der Verknüpfung; kann Datentyp String oder Integer sein.

  • addon_gantt::LINK_SOURCE_ITEM_ID - (obligatorisch) Eindeutige Identifikation des Quell-Eintrages; kann Datentyp String oder Integer sein.

  • addon_gantt::LINK_TARGET_ITEM_ID - (obligatorisch) Eindeutige Identifikation des Ziel-Eintrages; kann Datentyp String oder Integer sein.

  • addon_gantt::LINK_TYPE - (obligatorisch) Der Typ der Verknüpfung.

Für den Schlüssel addon_gantt::LINK_TYPE stehen die folgenden Werte zur Verfügung:

  • addon_gantt::LINK_TYPE_END2START - Die Verknüpfung führt vom Ende des Quell-Eintrages zum Anfang des Ziel-Eintrages.

  • addon_gantt::LINK_TYPE_START2START - Die Verknüpfung führt vom Anfang des Quell-Eintrages zum Anfang des Ziel-Eintrages.

  • addon_gantt::LINK_TYPE_END2END - Die Verknüpfung führt vom Ende des Quell-Eintrages zum Ende des Ziel-Eintrages.

  • addon_gantt::LINK_TYPE_START2END - Die Verknüpfung führt vom Anfang des Quell-Eintrages zum Ende des Ziel-Eintrages.

2. Aufrufreihenfolge

3. Abstrakte Methoden

3.1. get_actions

Syntax:

array get_actions()

Beschreibung:

Erlaubt es Aktionen zu definieren, die im Kontextmenü oder bei Doppelklick genutzt werden können.

Beispiel:

function get_actions()
{
  return array();
}


3.2. get_items

Syntax:

array get_items()

Beschreibung:

Muss die Daten für das Gantt bereitstellen. Benutzen Sie zum Erstellen einzelner Einträge die Hilfsmethode create_item().

Beispiel:

function get_items() : array
{
  return array(
    self::create_item(1, mktime(0, 0, 0, 4, 1, 2013), mktime(0, 0, 0, 4, 18, 2013), "Projekt", 0.3, 0),
    self::create_item(2, mktime(0, 0, 0, 4, 2, 2013), mktime(0, 0, 0, 4, 10, 2013), "Aufgabe 1", 0.9, 1),
    self::create_item(4, mktime(0, 0, 0, 4, 6, 2013), mktime(0, 0, 0, 4, 14, 2013), "Aufgabe 2", 0.3, 1),
    self::create_item(3, mktime(0, 0, 0, 4, 3, 2013), mktime(0, 0, 0, 4, 12, 2013), "Aufgabe 3", 0.3, 1)
  );
}

3.3. get_events

Syntax:

array get_events()

Beschreibung:

Gibt ein assoziatives Array bestehend aus dem Event-Bezeichner als Schlüssel und dem Aktions-Bezeichner als Wert zurück. Die Aktionen werden in get_actions beschrieben. Zur Verfügung stehen die folgenden Events welche durch Klassen-Konstanten zu verwenden sind:

  • EVENT_BEFORE_ITEM_ADD - Wird gefeuert bevor ein Eintrag hinzufügt wird. Durch das Setzen dieses Events wird verhindert, dass sich der modale Dialog zum Erstellen eines Eintrages öffnet.

  • EVENT_BEFORE_ITEM_CHANGE - Wird gefeuert bevor die Änderung eines Eintrags erfolgt. Dieser Event verhindert, dass Änderungen vom Nutzer im Gantt sichtbar sind. Erst durch eine zusätzliche Validierung und entsprechende Rückgabe des aktuellen Eintrags wird die gewünschte Änderung sichtbar.

  • EVENT_BEFORE_ITEM_DELETE - Wird gefeuert bevor der Eintrag gelöscht wird. Dieser Event verhindert, dass der Eintrag gelöscht wird.

  • EVENT_BEFORE_LINK_ADD - Wird gefeuert bevor eine Verknüpfung, für den Nutzer sichtbar, hinzufügt wird. Die Verknüpfung muss anschließend selbst durchgeführt werden, sofern gewünscht. Feuert nicht, wenn use_links() FALSE zurückgibt.

  • EVENT_BEFORE_LINK_CHANGE - Wird gefeuert bevor die Änderung einer Verknüpfung erfolgt. Dieser Event verhindert, dass Änderungen vom Nutzer im Gantt sichtbar sind. Erst durch eine zusätzliche Validierung und entsprechende Rückgabe der aktuellen Verknüpfung wird die gewünschte Änderung sichtbar. Feuert nicht, wenn use_links() FALSE zurückgibt.

  • EVENT_BEFORE_LINK_DELETE - Wird gefeuert bevor die Verknüpfung durch den Nutzer gelöscht wurde. Feuert nicht, wenn use_links() FALSE zurückgibt.

  • EVENT_ITEM_ADD - Wird gefeuert nachdem der Nutzer einen Eintrag hinzugefügt hat.

  • EVENT_ITEM_DELETE - Wird gefeuert nachdem der Nutzer einen Eintrag gelöscht hat.

  • EVENT_ITEM_CHANGE - Wird gefeuert nachdem der Nutzer einen Eintrag geändert hat.

  • EVENT_LINK_ADD - Wird gefeuert nachdem der Nutzer eine Verknüpfung hinzugefügt hat. Feuert nicht, wenn use_links() FALSE zurückgibt.

  • EVENT_LINK_DELETE - Wird gefeuert nachdem der Nutzer eine Verknüpfung gelöscht hat. Feuert nicht, wenn use_links() FALSE zurückgibt.

  • EVENT_LINK_CHANGE - Wird gefeuert nachdem der Nutzer eine Verknüpfung geändert hat. Feuert nicht, wenn use_links() FALSE zurückgibt.

  • EVENT_OPEN_ITEM - Feuert, wenn der Nutzer mit einem Doppelklick einen Eintrag öffnen möchte. Ist dieser Event gesetzt, unterbindet es das Öffnen des modalen Dialogs zum bearbeiten einen Eintrages.

Beispiel:

function get_events() : array
{
  return array(
    self::EVENT_ITEM_ADD    => 'on_item_add'   ,
    self::EVENT_ITEM_DELETE => 'on_item_delete',
    self::EVENT_ITEM_CHANGE => 'on_item_change'
  );
}

4. Optionale Methoden

4.1. add_item

Syntax:

array add_item(string|int $parent_id = null)

Beschreibung:

Muss einen neuen Eintrag gemäß der Definition zurückgeben. Hierfür können Sie ebenfalls sie Hilfsmethode create_item() verwenden. Die Werte die beim Aufruf der Methode übergeben werden, hängen von den übergebenen Parametern der Aktion ab. Wenn Sie keinen Eintrag hinzufügen wollen, geben Sie lediglich ein leeres Array zurück.

Beispiel:

function add_item($parent_id = null) : array
{
  if ($parent_id === null) {
    return array();
  }
 
  return addon_gantt::create_item(
    6,
    mktime(0, 0, 0, 4, 6, 2013),
    mktime(0, 0, 0, 4, 8, 2013),
    "Neuer Eintrag",
    0.9,
    $parent_id,
    array('user1' => 6)
  );
}

Syntax:

array add_link(string|int $source_item_id = null, string|int $target_item_id = null, ?int $type = null)

Beschreibung:

Muss eine neue Verknüpfung gemäß der Definition zurückgeben. Hierfür können Sie ebenfalls sie Hilfsmethode create_link() verwenden. Die Werte die beim Aufruf der Methode übergeben werden, hängen von den übergebenen Parametern der Aktion ab. Wenn Sie keinen Link hinzufügen wollen, geben Sie ein leeres Array zurück.

Beispiel:

function add_link($source_item_id = null, $target_item_id = null, $type = null) : array
{
  if ($source_item_id === null) {
    return array();
  }
   
  return addon_gantt::create_link(5, $source_item_id, 1);
}

4.3. get_columns

Syntax:

array get_links()

Beschreibung:

Muss die Spalten zurückgeben, die in der Tabelle neben dem Gantt-Diagramm angezeigt werden. Benutzen Sie zum Erstellen einzelner Spalten die statische Hilfsmethode create_column(). Für die Erstellung der Spalte mit Baumstruktur steht die gesonderte Hilfsmethode create_column_tree() zur Verfügung.

Beispiel:

function get_columns()
{
  return array(  
    self::create_column_tree($this->get_lang('global_name')),
    self::create_column('start', $this->get_lang('project_label_start'), 'left', 70 , true, self::ITEM_START),
    self::create_column('add'  , '', 'center', 44, false, null, self::COLUMN_OP_ADD)
  );
}

4.4. get_end

Syntax:

int get_end()

Beschreibung:

Gibt den Endzeitpunkt des Gantt-Diagramms an. Diese Methode arbeitet Hand in Hand mit get_start() zusammen und wird nur beachtet, sofern beide Methoden überschrieben wurden. Bei Rückgabe von null  wird der Start- und End-Zeitpunkt mithilfe der Einträge bestimmt.

Beispiel:

function get_end() : ?int
{
  return mktime(0, 0, 0, 5, 11, 2013);
}

Syntax:

array get_links()

Beschreibung:

Muss die Verknüpfungen zwischen den Einträgen zurückgeben, sofern use_links() true zurückgibt. Benutzen Sie zum Erstellen einzelner Verknüpfungen die statische Hilfsmethode create_link().

Beispiel:

function get_links() : array
{
  return array(
    self::create_link(1, 1, 2, self::LINK_TYPE_START2START),
    self::create_link(2, 2, 3, self::LINK_TYPE_END2START  ),
    self::create_link(3, 3, 4, self::LINK_TYPE_END2START  ),
    self::create_link(4, 2, 5, self::LINK_TYPE_END2END    )
  );
}

4.6. get_round_to

Syntax:

int|bool get_round_to()

Beschreibung:

Bestimmt ob die Anfangs- und Endzeitpunkte automatisch gerundet werden sollen. Es kann entweder ein Integer zurückgegeben werden, der aussagt, auf wieviele Minuten genau gerundet werden soll oder ein boolescher Wert. Bei Rückgabe von TRUE  wird stets auf die kleinste Einheit, angegeben in get_unit(), gerundet. Im Falle von FALSE entfällt die Rundung komplett.

Beispiel:

function get_round_to()
{
  return true;
}


4.7. get_start

Syntax:

int get_start()

Beschreibung:

Gibt den Startzeitpunkt des Gantt-Diagramms an. Diese Methode arbeitet Hand in Hand mit get_end() zusammen und wird nur beachtet, sofern beide Methoden überschrieben wurden. Bei Rückgabe von null wird der Start- und End-Zeitpunkt mithilfe der Einträge bestimmt.

Beispiel:

function get_start() : ?int
{
  return mktime(0, 0, 0, 4, 5, 2013);
}

4.8. get_unit

Syntax:

string|array get_unit()

Beschreibung:

Gibt an mit welcher Maßeinheit das Gantt-Diagramm dargestellt werden soll. Das kann eine einzelne Einheit sein oder ein Array von Einheiten, wobei diese von der kleinen zur größten sortiert sein sollten. Davon beeinflusst wird die Y-Skala. Bei einer einzelnen Einheit ist diese einzeilig. Bei mehreren Einheiten mehrzeilig.

Die folgenden Maßeinheiten stehen als Klassenkonstanten zur Verfügung:

  • UNIT_MINUTE - Minuten

  • UNIT_HOUR - Stunden

  • UNIT_DAY - Tage

  • UNIT_WEEK - Kalenderwochen

  • UNIT_QUARTER - Quartal

  • UNIT_MONTH - Monat

  • UNIT_YEAR - Jahr

Beispiel:

// eine einzelne Einheit
function get_unit()
{
  return self::UNIT_DAY;
}
// mehrere Einheiten
function get_unit()
{
  return array(self::UNIT_DAY, self::UNIT_WEEK);
}

Syntax:

bool use_links()

Beschreibung:

Erlaubt es, die Nutzung von Verknüpfungen an- bzw. auszuschalten. Überschreibt man die Methode nicht, wird angenommen, dass Verknüpfungen eingeschalten sind.

Beispiel:

function use_links() : bool
{
  return true;
}

5. Aktionen

5.1. get_add_item_action

Syntax:

addon_util_action get_add_item_action(string $gantt_id, $parent_id = null)

Beschreibung:

Gibt eine Aktion zurück, mit der ein neuer Eintrag im Gantt erzeugt wird. Die Eigenschaften des neuen Eintrages werden in der Methode add_item() beschrieben.

Parameter:

  • $gantt_id - Die Widget-ID des Gantt-Diagramms, das im Template angegeben wurde.

  • $parent_id - Optional die eindeutige Identifikation des Elterneintrages.

Wenn Werte aus den Widgets benötigt werden, können deren IDs mit geschweiften Klammern umschlossen als Wert des Schlüssel-Wert-Paares des assoziativen Arrays vermerkt werden. Feste Werte haben keine geschweiften Klammern.


Syntax:

addon_util_action get_add_link_action(string $gantt_id, $source_item_id = null, $target_item_id = null, $type = null)

Beschreibung:

Gibt eine Aktion zurück, mit welcher eine neue Verknüpfung im Gantt erzeugt wird. Die Eigenschaften des neuen Eintrages werden in der Methode add_link() beschrieben.

Parameter:

  • $gantt_id - Die Widget-ID des Gantt-Diagramms, welche im Template angegeben wurde.

  • $source_item_id - Die eindeutige Identifikation des Quell-Eintrages.

  • $target_item_id - Die eindeutige Identifikation des Ziel-Eintrages.

  • $type - Der Typ der Verknüpfung, siehe create_link().

Wenn Werte aus den Widgets benötigt werden, können deren IDs mit geschweiften Klammern umschlossen als Wert des Schlüssel-Wert-Paares des assoziativen Arrays vermerkt werden. Feste Werte haben keine geschweiften Klammern.


6. Hilfsmethoden

6.1. create_column

Syntax:

static array create_column(string $id, string $label, string $align, int $width, bool $resizeable, ?string $field = null, ?string $operation = null)

Beschreibung:

Erstellt eine Spaltendefinition, aus den übergebenen Parametern und gibt ein Array zurück, welches in der Methode get_columns() gebraucht wird.

Parameter:

  • $id - Eindeutige Identfikation der Spalte

  • $label - Bezeichner der Spalte, die der Nutzer sehen kann.

  • $align - Ausrichtung des Spalteninhaltes. Kann "left" für eine Linksausrichtung, "right" für eine Rechtsausrichtung oder "center" für eine zentrierte Ausrichtung sein.

  • $width - Breite der Spalte in Pixeln. Die Gesamtbreite der Tabelle wird ermittelt indem die Breiten aller Spalten addiert werden.

  • $resizeable - Erlaubt oder verbietet es dem Nutzer, die Breite der Spalte zu ändern.

  • $field - Der eindeutige Bezeichner des Feldes, das die Daten beinhaltet. Darf null sein, wenn als $operation COLUMN_OP_ADD oder COLUMN_OP_TREE gewählt wurde.

  • $operation - Die Funktion der Spalte. Die folgenden Funktionen stehen zur Nutzung als Klassenkonstanten bereit:

    • COLUMN_OP_ADD - Eine Spalte die Buttons zum einfügen neuer Einträge bereitstellt.

    • COLUMN_OP_USER - Stellt Werte aus den User-Data-Array dar. Der Schlüssel wird durch den Parameter $field bestimmt.

    • COLUMN_OP_TREE - Stellt die hierarchische Baumansicht in der Spalte dar. Der Inhalt der Spalte kommt aus dem Feld text, welchem Methode create_item() als Parameter übergeben wird.

    • COLUMN_OP_FIELD - Stellt Werte aus den Standard-Feldern der Einträge dar.

Beispiel:

// Erstellen einer Spalte, welche das Startdatum des Eintrages anzeigt
self::create_column('start', $this->get_lang('project_label_start'), 'left', 70, true, self::ITEM_START);
 
// Erstellen einer Spalte, welche dem Hinzufügen neuer Einträge dient
self::create_column('add', '', 'center', 44, false, null, self::COLUMN_OP_ADD);
 
// Erstellen einer Spalte, welche Daten aus dem User-Data-Array anzeigt
self::create_column('user_column', 'Meine Daten', 'left', 100, true, 'user1', self::COLUMN_OP_USER);

6.2. create_column_tree

Syntax:

static array create_column_tree(string $label)

Beschreibung:

Erstellt eine Spaltendefinition für die Baumspalte aus den übergebenen Parametern und gibt ein Array zurück, das in der Methode get_columns() gebraucht wird.

Parameter:

  • $label - Bezeichner der Spalte, welche der Nutzer sehen kann.

Beispiel:

// Erstellen der Tree-Spalte mit Titel "Baum"
self::create_column_tree("Baum");

6.3. create_item

Syntax:

static array create_item(int|string $id, int $start, int $end, string $text, int|string $parent = 0, float $progress, array $user_data = [], bool $open = true)

Beschreibung:

Erstellt einen Eintrag für das Gantt-Diagramm. Die Methode ist hilfreich, wenn Sie Einträge mit get_items() initial hinzufügen oder im nachhinein mithilfe eines AJAX-Requests.

Parameter:

  • $id - Eine eindeutige Identifikation des Eintrags. Muss Datentyp Integer oder ein String sein.

  • $start - Der Startzeitpunkt des Eintrags.

  • $end - Der Endzeitpunkt des Eintrags.

  • $text - Der Bezeichner des Eintrags, der im Gantt-Diagramm dargestellt wird.

  • $parent - Der Elterneintrag des Eintrages. Wenn dieser mit 0 angeben wird, befindet sich der Eintrag in der obersten Ebene. Ist kein Eintrag mit der angegebenen ID vorhanden, bleibt der Eintrag im Gantt-Diagramm unsichtbar.

  • $progress - Fortschritt des Eintrages. Werte zwischen 0,0 und 1,0.

  • $user_data - Das User-Data-Array, das mit eigenen Daten bestückt werden kann. Diese können zur Darstellung oder die weitere serverseitige Verarbeitung genutzt werden. Die Darstellung erfolgt mithilfe der Spalten-Operation COLUMN_OP_USER.

  • $open - Wenn dieser Parameter auf TRUE gesetzt ist, werden potentiell vorhandene Kindeinträge angezeigt, ohne dass der Nutzer den Eintrag vorher öffnen muss.

Beispiel:

// Erstellen eines Eintrags in der obersten Ebene
self::create_item('a', mktime(0, 0, 0, 4, 1, 2013), mktime(0, 0, 0, 4, 18, 2013), "Projekt", 0.3, 0, ['user1' => 'a']);
 
// Erstellen eines Eintrags als Kindeintrag
self::create_item('b', mktime(0, 0, 0, 4, 2, 2013), mktime(0, 0, 0, 4, 10, 2013), "Task 2", 0.9, 'a', ['user1' => 'b']);
 
// Erstellen des gleichen Eintrags mit einer anderen ID
self::create_item(3, mktime(0, 0, 0, 4, 2, 2013), mktime(0, 0, 0, 4, 10, 2013), "Task 2", 0.9, 'a', ['user1' => 'b']);
             
// Initialisierung eines Eintrags außerhalb der Klasse
addon_gantt::create_item(3, mktime(0, 0, 0, 4, 2, 2013), mktime(0, 0, 0, 4, 10, 2013), "Task 2", 0.9, 'a', ['user1' => 'b']);
             

Syntax:

static array create_link(int|string $id, int|string $source_item_id, int|string $target_item_id, ?int $type = null)

Beschreibung:

Erstellt eine Verknüpfung zwischen 2 Einträgen für das Gantt-Diagramm. Die Methode ist hilfreich, wenn Sie Verknüpfungen mit get_links() initial hinzufügen oder im nachhinein mithilfe eines AJAX-Requests.

Parameter:

  • $id - Eine eindeutige Identifikation der Verknüpfung. Muss Datentyp Integer oder ein String sein.

  • $source_item_id - Die eindeutige Identifikation des Quell-Eintrages.

  • $target_item_id - Die eindeutige Identifikation des Ziel-Eintrages.

  • $type - Der Typ der Verknüpfung. Wird kein Typ angegeben, ist der Typ LINK_TYPE_END2START. Die Typen sind in der Definition beschrieben.

Beispiel:

// Erstellen einer Verknüpfung, die vom Ende des Quell-Eintrages auf den Anfang des Ziel-Eintrages verweist
self::create_item(1, 'a', 'b');
 
// Erstellen einer Verknüpfung, die vom Anfang des Quell-Eintrages auf das Ende des Ziel-Eintrages verweist
self::create_item(2, 'b', 1, self::LINK_TYPE_START2END);
 
// Erstellen einer Verknüpfung - außerhalb der Klasse - die vom Anfang des Quell-Eintrages auf das Ende des Ziel-Eintrages verweist
addon_gantt::create_item(2, 'b', 1, addon_gantt::LINK_TYPE_START2END);

7. Vererbte Methoden

  • No labels