Subsections of Development

Architecture

When designing a Windows Forms application, you have several architectural patterns to choose from. The common ones are:

Model-View-Controller (MVC):

  • Description: MVC separates the application into three components:
    • Model: Represents the data and business logic.
    • View: Handles the presentation and user interface.
    • Controller: Manages user input and communicates between the Model and View.
  • Pros:
    • Clear separation of concerns.
    • Reusable components.
    • Supports unit testing.
  • Cons:
    • Can become complex for small applications.
    • Requires careful design to avoid tight coupling.
  • Use Case: Suitable for medium to large applications with complex interactions.

Clean Architecture:

  • Description: Clean Architecture emphasizes separation of concerns and independence from external frameworks.
  • Entities: Represent core business logic.
  • Use Cases (Interactors): Application-specific business rules.
  • Interfaces (Gateways): Define external interfaces (e.g., database, UI).
    • Frameworks & Drivers: External frameworks and tools (e.g., Windows Forms, databases).
    • Pros:
      • Highly modular and testable.
      • Adaptable to changes in external frameworks.
      • Focuses on business logic.
    • Cons:
      • Initial setup complexity.
      • May be overkill for small projects.
    • Use Case: Suitable for large, long-lived applications with evolving requirements.
May 3, 2024

Subsections of Architecture

Migrations

In .NET 8, when a migration attempts to create a table that already exists in the database, the behavior depends on the state of the migration history and the existing database schema:

Initial Migration

When you apply the initial migration, Entity Framework Core (EF Core) creates the specified tables based on your model. If the table already exists in the database, EF Core will not re-create it. It only creates tables that are not present.

Subsequent Migrations

For subsequent migrations (e.g., adding columns, modifying schema), EF Core generates migration scripts based on the difference between the current model and the previous migration’s snapshot. If a table is already in the database and corresponds to the model, EF Core will not attempt to create it again. However, if the table structure differs from the model (e.g., missing columns), EF Core will generate migration scripts to update the schema.

Migration History

EF Core maintains a special table called __EFMigrationsHistory (or __migrations_History in some databases). This table tracks which migrations have been applied to the database. If a migration has already been applied (recorded in this table), EF Core will skip creating the corresponding tables.

Rollback (Down) Method

The Down method in a migration handles rolling back changes. If you need to undo a migration, the Down method drops the corresponding tables. For example, if you remove a column in a migration, the Down method will drop that column.

Manual Truncation or Deletion

Be cautious when manually truncating or deleting tables (including the __EFMigrationsHistory table). If the migration history is lost, EF Core may treat subsequent migrations as initial migrations, leading to re-creation of existing tables. In summary, EF Core is designed to be aware of the existing database schema and avoid unnecessary table creation. Ensure that the migration history is intact, and avoid manual truncation of the migration history table to prevent unexpected behavior during migrations

Mar 26, 2024

Diversity workbench

Hierarchy

The extraction of the hierarchies in some cases are very time consuming. To speed up the queries including hierarchies these are cached in cache tables. Therefor procedures are available to set the hierarchies in the cache tables to the current state after any changes in the original data.

The example below shows the hierarchy in the table collection in DC. The procedure procRefreshCollectionHierarchyCache checks the function CollectionHierarchyRefillBlocked. In case it returns true, nothing is changed as another process is active. In case of false, the function CollectionHierarchyRefillBlocked is set to true and the data in the cache table are refilled with the current state of the data. As a last step, the function CollectionHierarchyRefillBlocked is set to false.

graph TD;
    Start(Try to set<br>the hierarchy to<br>the current state)
    Cache[<i class="fa-fw fas fa-table"></i> Cache table]
    proc[proc Refresh<br>cache table] 
    procCheck(Check state)
    procSetTrue(Set to true)
    procRefill[Refill<br>cache table<br>with current data]
    procSetFalse(Set to false)
    func{<i class="fa-fw fas fa-eye"></i> function<br>Refill<br>Blocked}
    Start --> func
    func -->|false| proc
    func -->|true| Start
    proc --> |check if false, set to true| procCheck
    procCheck --> func
    procCheck --> |true| Start
    procCheck --> |false| procSetTrue
    procSetTrue --> func
    procSetTrue --> procRefill
    procRefill --> Cache
    procRefill --> procSetFalse
    procSetFalse --> func

The procedure is executed only by users with the necessary permissions. The cache needs an update after any changes to the original data e.g. via an import. So e.g. the ImportWizard should either include the execution of the procedures as a last step after the import or the user should get an according message to update the cache.

Implemented in:

DC

CollectionHierarchy

Jan 30, 2025

Diversity workbench

Keywords

Keywords in Hugo

Die Schlüsselwörter werden zum Test in der Datei keywords_ori_dwb erfasst und dann angepasst in die Datei keywords_dwb kopiert. Hugo übersetzt die dort angegebenen Adressen. Ein Service auf dem Apacheserver übersetzt dies dann in eine Datei keywords.txt mit Paaren aus Schlüsselwort und dem zugehörigen Link. Dies wird dann als Service zur Verfügung gestellt und kann von den Applikationen benutzt werden.

Keywords in den Applikationen

  • die Formulare benötigen einen Helpprovider
  • die Keywords werden als Property vermittelt durch den Helpprovider direkt beim Formular oder in den controls eingetragen

Event handler

Bei der ersten Verwendung von F1 in einem Formular werden durch den KeyDown-Handler des Formulars das Formular und die enthaltenen Controls sofern ein Keyword eingetragen wurde mit einem Eventhandler versorgt die dann für den Aufruf des Manuals sorgen.

Da die Funktion erst beim KeyDown im Formular gestartet wird und asynchron ist bremst sie den Start der Applikationen nicht.

aktuelle Probleme:

  • Beim allerersten Aufruf des Manuals wird auch die Hauptseite für das Formular geöffnet sofern dort ein Keyword hinterlegt ist

Beispiel für Umsetzung anhand DiversityCollection_GUC_8 im Formular FormArtCode:

Code im Formular

in the constructor or in the properties of the form

this.KeyPreview = true;

im Code

link the KeyDown event of the form to the Form_KeyDown event

#region Manual

/// <summary>
/// Adding event deletates to form and controls
/// </summary>
/// <returns></returns>
private async Task InitManual()
{
    try
    {

        DiversityWorkbench.DwbManual.Hugo manual = new Hugo(this.helpProvider, this);
        if (manual != null)
        {
            await manual.addKeyDownF1ToForm();
        }
    }
    catch (Exception ex) { DiversityWorkbench.ExceptionHandling.WriteToErrorLogFile(ex); }
}

/// <summary>
/// ensure that init is only done once
/// </summary>
private bool _InitManualDone = false;


/// <summary>
/// KeyDown of the form adding event deletates to form and controls within the form
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private async void Form_KeyDown(object sender, KeyEventArgs e)
{
    try
    {
        if (!_InitManualDone)
        {
            await this.InitManual();
            _InitManualDone = true;
        }
    }
    catch (Exception ex) { MessageBox.Show(ex.Message); }
}

#endregion

Zentraler code in e.g. Klasse Manual

#region Adding functions

/// <summary>
/// If the control contains a keyword related to the helpprovider of the form
/// </summary>
/// <param name="control"></param>
/// <param name="helpProvider"></param>
/// <returns></returns>
private bool IsControlLinkedToHelpKeyword(Control control, HelpProvider helpProvider) 
{ 
    string helpKeyword = helpProvider.GetHelpKeyword(control); 
    return !string.IsNullOrEmpty(helpKeyword); 
}

/// <summary>
/// If the form contains a keyword related to the helpprovider
/// </summary>
/// <param name="form"></param>
/// <param name="helpProvider"></param>
/// <returns></returns>
private bool IsFormLinkedToHelpKeyword(Form form, HelpProvider helpProvider)
{
    string helpKeyword = helpProvider.GetHelpKeyword(form);
    return !string.IsNullOrEmpty(helpKeyword);
}

/// <summary>
/// Constructor
/// </summary>
/// <param name="helpProvider">The helpprovider of the form</param>
/// <param name="form">The form where the event handlers should be added</param>
public Manual(HelpProvider helpProvider, Form form)
{
    _helpProvider = helpProvider;
    _form = form;
}

/// <summary>
/// HelpProvider of the form
/// </summary>
private HelpProvider _helpProvider;

/// <summary>
/// the form containing the HelpProvider
/// </summary>
private System.Windows.Forms.Form _form;

/// <summary>
/// adding the event delegates to form and controls
/// </summary>
/// <returns></returns>
public async Task addKeyDownF1ToForm()
{
    try
    {
        if (_form != null && _helpProvider != null)
        {
            if (IsFormLinkedToHelpKeyword((Form)_form, _helpProvider))
            {
                _form.KeyUp += new KeyEventHandler(form_KeyDown);
            }
            foreach (System.Windows.Forms.Control C in _form.Controls)
            {
                await addKeyDownF1ToControls(C);
            }
        }
    }
    catch (Exception ex) { MessageBox.Show(ex.Message); }
}

/// <summary>
/// Adding Event delegates to the controls
/// </summary>
/// <param name="Cont">the control to which the delegate should be added it a keyword is present</param>
/// <returns></returns>
private async Task addKeyDownF1ToControls(System.Windows.Forms.Control Cont)
{
    try
    {
        foreach (System.Windows.Forms.Control C in Cont.Controls)
        {
            if (IsControlLinkedToHelpKeyword(C, _helpProvider))
            {
                C.KeyDown += new KeyEventHandler(control_KeyDown);
            }
            await addKeyDownF1ToControls(C);
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

/// <summary>
/// Opening the manual if F1 is pressed within the form
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void form_KeyDown(object sender, KeyEventArgs e)
{
    try
    {
        if (!e.Handled && e.KeyCode == Keys.F1) 
        {
            string Keyword = _helpProvider.GetHelpKeyword(_form);
            OpenManual(Keyword);
        }
    }
    catch (Exception ex) { MessageBox.Show(ex.Message); }
}


/// <summary>
/// Opening the manual if F1 is pressed within the control
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void control_KeyDown(object sender, KeyEventArgs e)
{
    try
    {
        if (e.KeyCode == Keys.F1)
        {
            string Keyword = _helpProvider.GetHelpKeyword((System.Windows.Forms.Control)sender);
            OpenManual(Keyword);
            e.Handled = true;
        }
    }
    catch (Exception ex) { MessageBox.Show(ex.Message); }
}

#endregion

zentrale Funktionen

  • holen keyword Verzeichnis via HtmlAgilityPack
  • öffnen Webseite anhand von Keyword

vorerst mit HtmlAgilityPack gelöst. Service hierzu kommt noch

#region HtmlAgilityPack

/// <summary>
/// Prefix for websites
/// </summary>
private static readonly string HugoManualUrlPrefix = "https://www.diversityworkbench.de";

/// <summary>
/// The URL of the site containing the keywords
/// </summary>
private static readonly string _UrlForKeywords = "https://www.diversityworkbench.de/manual/dwb_latest/diversityworkbench/keywords_dwb/index.html";

private static Dictionary<string, string> _KeywordsFromHugo;

/// <summary>
/// The dictionary of the keyword/Links scraped from the website in the Hugo manual
/// </summary>
private static Dictionary<string, string> KeywordsFromHugo
{
    get
    {
        if (_KeywordsFromHugo == null)
        {
            HtmlWeb HtmlWeb = new HtmlWeb();
            HtmlAgilityPack.HtmlDocument htmlDocument = HtmlWeb.Load(_UrlForKeywords);
            var Links = htmlDocument.DocumentNode.SelectNodes("//html//body//div//main//div//article//ul//a");
            if (Links != null)
            {
                _KeywordsFromHugo = new Dictionary<string, string>();
                foreach (var Link in Links)
                {
                    string Key = Link.InnerText;
                    string URL = HugoManualUrlPrefix + Link.GetAttributeValue("href", string.Empty);
                    if (Key != null && Key.Length > 0 && 
                        URL != null && URL.Length > 0 && 
                        !_KeywordsFromHugo.ContainsKey(Key))
                    {
                        _KeywordsFromHugo.Add(Key, URL);
                    }
                }
            }
        }
        return _KeywordsFromHugo;
    }
}

/// <summary>
/// Open a manual site
/// </summary>
/// <param name="keyword">The keyword linked to the site in the manual</param>
public void OpenHugoManual(string keyword)
{
    if (KeywordsFromHugo == null) { return; }
    if (KeywordsFromHugo.ContainsKey(keyword))
    {
        string Link = DiversityCollection_GUC.Hugo.Manual.KeywordsFromHugo[keyword];
        try
        {
            if (Link.Length > 0)
            {
                Process.Start(new ProcessStartInfo
                {
                    FileName = Link,
                    UseShellExecute = true
                });
            }
        }
        catch (Exception ex) { MessageBox.Show("Error opening URL: " + ex.Message); }
    }
}



#endregion
graph TD;
    Start[Open form]
    Handler["Creation of handlers"]
    Manual[Open the manual]
    F1[Click F1 in form or control]
    Scrape[Using the<br>***HtmlAgilityPack***<br>to scrape the dictionary<br>for the keywords<br>from the<br>Hugo keyword site<br>at first call]
    Key[Use keyword to get link]
    Start --> | using F1 in the form for the first time | Handler 
    Handler --> Scrape
    F1 --> Scrape
    Scrape --> Key
    Key --> Manual

Alternative nicht verwendete Optionen

Im frontmatter der Seiten können für einzelne Kapitel Schlüsselwörter hinterlegt werden:

---
title: ...
linktitle: ...
keywords: 
    - Nachweis_GUC
    - Fundort_GUC
---

Was wir benötigen ist ein Schlüsselwort in der Applikation und dazu ein Link zum Manual. Aus den CHM Dateien lassen sich die bereits jetzt vorhandenen Schlüssel extrahieren (Außer den von Wolfgang umgebauten Modulen DSP und DG).

Eine Alternative zum manuellen Aufbau wäre ein Scan aller vorhandenen Seiten und die Extraktion der verwendeten Links.

Options

Examlpe for GUC

damit werden automatisch die korrekten Links im html erzeugt und könnten dann extrahiert werden

Aktuellen Liste: keywords_dwb

Contact_DA modules/diversitycollection/Contact_DA Agent_DA modules/diversitycollection/Agent_DA Archive_DA modules/diversitycollection/Archive_DA Backup_DA modules/diversitycollection/Backup_DA Contact_DA modules/diversitycollection/Contact_DA DataWithholding_DA modules/diversitycollection/DataWithholding_DA AgentDisplayTypes_DA modules/diversitycollection/AgentDisplayTypes_DA Descriptors_DA modules/diversitycollection/Descriptors_DA ExternalData_DA modules/diversitycollection/ExternalData_DA Feedback_DA modules/diversitycollection/Feedback_DA Hierarchy_DA modules/diversitycollection/Hierarchy_DA History_DA modules/diversitycollection/History_DA Images_DA modules/diversitycollection/Images_DA …

hier müssen die Links noch angepasst werden. Insofern noch nicht wirklich brauchbar

Jan 21, 2025

Roadmap

Umbau auf .Net 8

AspNetCore + Webassembly

Der mobile Client wird als Testprojekt mit AspNetCore für REST und Webassembly für den Client aufgesetzt

Aspire / Webassembly / Blazor

Ein Video dazu. Werd DTN für IPM fertig machen und dann ein entsprechendes Projekt fuer die weitere Diskussion als Beispiel aufsetzen. Ist allerdings erst in preview … das sollte man evtl. abwarten

Avalonia

Zurückgestellt Mit dem Avalonia framework könnte man einfache Clients wie e.g. die Spreadsheets für die Module bereitstellen. Das waere vorallem für Desktop Apps. Ansonsten würde Blazor wohl die einfachere Herangehensweise sein weil es über den Browser alles abdeckt. Sollte auf jeden Fall in separatem Verzeichnis entwickelt werden weil es Einstellungen vornimmt die mit anderen Frameworks nicht kompatibel sind. Ist allerdings noch auf .Net 7. Wird wohl noch ein bisschen dauern bis das fuer .Net 8 nachgezogen ist.

  • Alternativen:
    • MAUI - das unterstützt aber kein Linux und ist was ich gesehen hab auch nicht so performant
    • UNO - hab ich noch nicht genauer angesehen. Wohl ähnlich zu Avalonia aber nicht so verbreitet etc.

Cocona

Für CLI Clients

Beispiele für Diagramme

Note

for demo only - dates are not valid

timeline
    title Diversity Workbench - timeline
    2023-11-15 : Einstieg in Version 8
    2023-12-15 : IPM 
                : WinForm Client 2023-11-15
                : WASM-Client 2023-12-15
    2023-12-20 : WASM-Client 
               : Preview 2024-01-20
               : Workshop 2014-03-22
    2024-02-15 : WASM-Client for DC
gantt
        dateFormat  YYYY-MM-DD
        title IPM
        section IPM Winforms Client
        Completed task            :done,    des1, 2024-01-06,2024-01-08
        Active task               :active,  des2, 2024-01-09, 3d
        Future task               :         des3, after des2, 5d
        Future task2              :         des4, after des3, 5d
        section IPM WASM Client
        Completed task in the critical line :crit, done, 2024-01-06,24h
        Implement parser and jison          :crit, done, after des1, 2d
        Create tests for parser             :crit, active, 3d
        Future task in critical line        :crit, 5d
        Create tests for renderer           :2d
        Add to Mermaid                      :1d
gitGraph
    commit
    commit
    branch develop
    checkout develop
    commit
    commit
    checkout main
    merge develop
    commit
    commit
May 3, 2024

Subsections of Roadmap

Diversity Workbench

Version 8

Permissions

No direct access to tables. Access via views that restrict to user available data and implement permissions that had been set for tables. These views relate to the previous tables and implement the restrictions with a WHERE clause and without any joins.

There may be 2 views: [Table]_Read for content including data with read only access and [Table]_Edit for content the user can edit.

Icons

To ensure that users can distinguish versions 4.x from versions 8.x of the software, the new versions get icons different from the old versions. The colors of the characters reflect the colors of the symbols used in the menu.

Aug 6, 2024

IPM

The DiversityWorkbench provides several applications addressing every IPM related task:

  • Taxonomy of IPM related taxa
  • Identification key for pests
  • Collecting sensor data
  • Editing, collecting, exporting data in a desktop application.
  • A web application for trap inspection (ongoing project)

IPMtaxa

(!!! Heisst des wiklich so?, ist das nicht DTN? Der Kurz-Name ist doch schon TaxRef_SNSB_NHC-Pests? Es ist nicht klug Synonyme zu erzeugen.) -> das sind alles Platzhalter fuer Projekte in C#. TaxRef_SNSB_NHC-Pests ist nix was man als Projektbezeichner verwenden würde. Das ist ein internes Kürzel.

Taxonomic backbone providing 3 lists of taxa related to IPM:

  • Pests
  • Bycatch
  • Beneficials

The data include the taxonomic hierarchy, synonoyms, common names, life stages, links to information and thumbnails of the taxa for inclusion in e.g. tabular lists used for monitoring. Data are provided via a JSON API. For details see IPM

IPMdescriptions or IPMkey

(Gibt es das schon?) -> nein - Platzhalter

Identification key for taxa provided by IPMtaxa

IPMobile

(ongoing project) -> klar - aber das sollte bis September fertig sein. Ongoing ist bei uns alles

Mobile application for collecting taxon observations in traps etc. You can import existing data to ensure continuity and build upon historical information. Data are stored in a local SQLite database and synchronized via an API with the main database to enable offline inspection of the traps, specimen etc.

Zwischengespeicherte Daten für offline Betrieb

  • Taxonliste incl. Vorschaubildern
  • Bilder von Fallen
  • Grundriss

Zugriffsarten

es können alte Daten eingelesen und neue Daten geschrieben werden. Ändern und Löschen nach dem Speichern ist nicht vorgesehen.

  • Lesen
    • Taxonliste
    • Grundrisse
    • Bar- und QR-Codes
  • Schreiben
    • Beobachtungen von Schädlingen (Art, Anzahl, Ort)
    • Eingeben von Anmerkungen
  • Ändern
    • x
  • Löschen
    • x

Einstellungen

Auswahl der Taxa die für die Erfassung berücksichtigt werden sollen

Bereiche

  • Fallen
  • Specimen
  • Sensoren

Funktionen

  • Verortung in Plänen
  • Bilder von Fallen etc.
  • Zuordnung von Detailbildern zu Übersichtsaufnahme und deren Verortung innerhalb der Übersichtsaufnahme
  • Scannen von Codes auf Objekten und automatisches Laden der zugehörigen Daten
  • Eintrag von Notizen

Szenarien

  • Der User will einen Schädling eintragen können den er gerade auf einem Specimen gefunden hat.
  • Der User will eintragen, dass er keinen Schädling gefunden hat auf einem Specimen, Falle, Raum, Sammlung, …
  • Der User hat eine Falle aufgestellt und möchte die Falle anhand des QR-Codes auf der Falle identifizieren und die Position der Falle im Plan vermerken sowie evtl. eine Beschreibung des Standorts eingeben.
  • Der User möchte alle Fallen anhand eines Plans der Aktuellen Etage abgehen und dabei prüfen ob in den Fallen Fänge sind.
  • Der User möchte den aktuellen Zustand der Falle anhand von Bildern mit vorherigen Zuständen vergleichen
  • Der User hat einen Schaden entdeckt und möchte das Objekt anhand des Codes identifizieren sowie den Schaden mit einem Bild dokumentieren und einen kurzen Text schreiben was genau kaputt ist.
  • Über Bestimmungsapp via DD
    • Der User will dem gefunden Schädling einen Namen zuweisen

Tabellen in SQLite

  • lesend

    • Collection
    • CollectionSpecimen
    • CollectionSpecimenPart
    • IdentificationUnit
    • Task
    • CollectionTask_old (oder Marker in Tabelle CollectionTask)
    • CollectionTaskImage_old (oder Marker in Tabelle CollectionTaskImage)
  • schreibend

    • CollectionTask
    • CollectionTaskImage

IPMsensor

Sensors collecting room temperature and moisture values communicate via Bluetooth LE with IPMhubs. IPMhubs communicate with IPMserver via LoRa IPMserver collects sensor data provided by the IPMhubs and stores these data in a Prometheus timeseries database. These data are then provided for import in the main database via LAN.

IPMcollection

  • Spatial: The software provides the option to include floor plans and accurately pinpoint the locations of sensors and traps including the hight within a room. To avoid interference with administrative aspects of a collection, the software includes the option for a second hierarchy according to the positions.
  • Recording: Next to sensor data all events, observations etc. can be recorded for later evaluation aiming at the prediction of the effect of IPM related actions.
  • Customization: You can define templates or create custom task definitions based on your specific IPM requirements. This includes e.g. the typification of traps and treatments. The list of taxa based on the backbone can be adapted based on those taxa that should be included in the recoding.
  • Reports: Generation of reports including charts, floorplans, treatments etc.
  • Actions: Documenation of IPM related treatments of collection specimen, application of beneficial organisms etc.

May 3, 2024

HUGO

Logo of HUGO. See https://gohugo.io/

Installation of HUGO

Update des Themes

um das Theme auf die letzte Version zu bringen kann man den Befehl git submodule update --remote --merge themes/relearn verwenden

Übersetzung des Bestands an html

  • Übersetzung der *.html Seiten mit pandoc in *.md
  • Aufbau einer Ordnerstruktur die dem Index der chm Datei entspricht
  • Das Basisdokument der Ordner wird in die Ordner verschoben und in _index.md umbenannt
    • Dort im Frontmatter steht der Titel der im Menü angezeigt wird, e.g.:
      --- 
      title: Installation 
      ---  

Überarbeitung der md Dateien

  • Korrektur der Bildverweise
    • Ordner mit den Bildern in den Ordner static kopieren
    • von e.g. ![](img/...) in ![](img/...)
    • ACHTUNG - Case sensitiv. Namen müssen stimmen
    • Icons gegebenenfalls freistellen für Darkmode
  • Entfernung aller störenden Formatierungsangaben
  • Entfernung der Kopfzeile (Überschrift wird von HUGO automatisch erzeugt)
  • Korrektur der internen Verweise
    • ändern von [![](img/VideoDE.svg?class=inlineimg)](http://media.snsb.info/Tutorials/dwb/Editing/OeffentlicheKontaktdaten.webm) zu [![Video starten](img/VideoDE.svg?class=inlineimg)](http://media.snsb.info/Tutorials/dwb/Editing/OeffentlicheKontaktdaten.webm)
      • ansonsten wird das Bild gezeigt statt das Video zu starten
    • ändern von
      [Contact](Contact.htm)
      zu e.g.
      [Contact](editingdata/contact)
    • Wenn als Basisadresse in hugo.toml etwas angegeben wurde, e.g. baseURL = "http://www.diversityworkbench.de" dann muss diese auch für Verweise innerhalb der Files verwendet werden.
      • e.g. Bildverweise ![](img/IcoFeedback.gif?class=inlineimg)
      • Dateiverweise [Anmelden](database)
      • HUGO relearn erzeugt für Überschriften Anker die man ansteuern kann, e.g. kann man ### Table **AgentResource** über die Adresse database/database/#table-agentresource erreichen. Ein Index Eintrag dafür wäre e.g. [AgentResource](database/database/#table-agentresource). ACHTUNG - Case sensitiv: ### Table **AgentResource** wird in #table-agentresource übersetzt
    • Kommentare starten mit # ohne folgendes Leerzeichen

Frontmatter

You can change the frontmatter to a default using the documentation tool

  • Steht am Anfang der Datei und ist bei yaml durch --- oben und unten abgegrenzt, e.g.
    ---
    title: Login administration
    linktitle: Logins
    weight: 5
    menuPre: img/Documentation.svg
    alwaysopen: false
    ---
  • Seiten die noch in Entwicklung sind kann man mit draft: true im Frontmatter markieren. Diese werden dann nicht in die Ausgabe übernommen
  • Der Titel wird mit title: Login administration angegeben. Dieser erscheint dann auch in der Seite als Überschrift
  • Der Text im Menü kann abweichend definiert werden mit linktitle: Logins. Ansonsten erscheit der Titel im Menü
  • Die Reihenfolge im Menü kann mit weight: 5 angegeben werden. Ansonsten wird alphabetisch sortiert
  • Ein Logo kann man mit `menuPre: img/LinkedServer.svg
  • Wenn das Untermenue erst beim Anwählen geöffnet werden soll: alwaysopen: false

Template files

Starting with a Dash: If the first line of your Markdown file starts with a dash (-), Hugo might misinterpret it as a YAML delimiter, leading to an error

Bilder

You can adapt the images to a default using the documentation tool

  • Icons die e.g. in den Text integriert werden sollen, müssen folgedermassen eingebaut werden:
    • ![](img/Database.svg?class=inlineimg)
  • Die Bilder am Anfang der Seite werde wie folgt eingebaut:
    • ![](img/LinkedServer.svg?class=headerimg)

mit px wird das Bild mitgezoomt, bei vw bleibt es gleich gross

  • noch nicht zu svg konvertierte Bilder die im Fliesstest erscheinen sollen werden wie folgt eingebunden:
    • ![](img/Delete.svg?class=inlineimg)
  • sonstige Bilder mit
    • ![](img/Delete.svg)

mit der Angabe ...lightbox=false wird verhindert, dass ein Bild beim Anklicken mit der Maus geöffnet wird. Dies sollte bei Bildern die nicht nach svg konvertiert wurden und nicht im Fliesstext erscheinen nicht verwendet werden, damit der User bei kleinen Bildern diese in Originalauflösung betrachten kann. Unten 2 Beispiele

![](img/Delete.svg?class=inlineimg)

![](img/Delete.svg?class=inlineimg)

Für Bilder die aus der Quelle fontawesome kommen kann man hier suchen: fontawesome. Es funktionieren nicht alle die dort bereitstehen. Daher bitte testen!

Für Links innerhalb des Manuals kann man shortcodes verwenden. Dafür entweder auf den Namen der Datei oder auf Links von Überschriften (ab ##) verwenden. Diese müssen innerhalb des Manuals eindeutig sein. Für Header als erstes Zeichen # dann Überschrift und alles lower case und Leerzeichen werden durch - ersetzt. Beispiel:

## Main form of diversityexsiccatae

wird zu sofern es sich in der gleichen Datei befindet: 2 x { und % relref "#main-form-of-diversityexsiccatae" % und 2 x }

Für Links ausserhalb der Datei werden Verweise unter Einschluss des Dateinamens verwendet:

Verweis auf ein Kapitel innerhalb einer Datei 2 x { und % relref "diversityexsiccatae#main-form-of-diversityexsiccatae" % und 2 x }

bzw. nur auf die Datei 2 x { und % relref "diversityexsiccatae" % und 2 x }

Leerzeichen zwischen 2 x { und % und % und 2 x } entfernen

Von ausserhalb kann e.g. eine Überschrift mit https://www.diversityworkbench.demodules/diversityexsiccatae/index.html#main-form-of-diversityexsiccatae aufgerufen werden. Diese können direkt aus dem Manual kopiert werden.

  • hierfür das Logo in den Ordner static kopieren
  • im Ordner layouts einen Ordner partials anlegen
  • dort eine Datei logo.html anlegen
    • in dieser auf das Logo verweisen e.g.:
      <h4><b>DiversityAgents</b></h4>
      <img src="/DA_4D.svg">
  • in static - layouts - partials die Datei menu-footer.html anlegen und anpassen

favicon

Im Ordner static den Ordner images anlegen Datei favicon.ico in der Ordner static/images kopieren

Einschliessen von Dateien

Das Verzeichnis templates enthält Dateien die in andere Dateien über eine shortcode eingeschlossen werden können, e.g.:  2 x { und % include file="templates/template_workbench.md" % und 2 x } Diese Dateien dürfen kein frontmatter enthalten. Shortcodes müssen überprüft werden, da diese in der Regel nicht ausgewertet werden.

ER-Diagramm

dieses kann als Mermaid eingebaut werden, e.g.

 
graph LR;
    A[Agent] --> B[AgentContact<br/>Kontaktdaten der Agents]
    A --> C[AgentReference]
    A --> D[AgentIdentifier]
    A --> E[AgentResource]
    A --> F[AgentExternalID]
    G[AgentExternalDatabase] --> F[AgentExternalID]

soll das Diagramm zoombar sein wird die Version 5.23 des Themes benoetigt. Ausserdem kann der Parameter nur für die Shortcode Version angegeben werden, nicht für die Codefences:

2 x { und % mermaid align="center" zoom="true" % und 2 x }
... 
(remove space between 2 x { und  and < resp > and  und 2 x } in header and footer for correct code)
...
2 x { und % /mermaid % und 2 x }

Anpassung des Themes

  • es werden 2 eigene Themes bereitgestellt

    • im Verzeichnes
      • themes
        • relearn
          • static
            • css:
            • theme-dwb-dark.css
            • theme-dwb.css

    diese an DWB Anforderungen anpassen

    • in \themes\relearn\static\css\theme.css
      #body img.inline {
          display: inline !important;
          margin: 0 !important;
          vertical-align: middle;
          /* vertical-align: bottom; */
      }
    • in \themes\relearn\static\css\theme-dwb.css
      /*--MENU-HEADER-BG-color: rgba( 28, 144, 243, 1 );*/ /* Background color of menu header */
      --MENU-HEADER-BG-color: rgba( 220, 220, 220, 1 ); /* Background color of menu header */
      --MENU-HEADER-BORDER-color: rgba( 51, 161, 255, 1 ); /*Color of menu header border */
      

      –MENU-SEARCH-color: rgba( 255, 255, 255, 1 ); /* Color of search field text / /–MENU-SEARCH-BG-color: rgba( 22, 122, 208, 1 );/ / Search field background color (by default borders + icons) / –MENU-SEARCH-BG-color: rgba( 90, 90, 90, 1 ); / Search field background color (by default borders + icons) / /–MENU-SEARCH-BORDER-color: rgba( 51, 161, 255, 1 );/ / Override search field border color / –MENU-SEARCH-BORDER-color: rgba( 0, 0, 0, 1 ); / Override search field border color */

Konfiguration - in hugo.toml:

```native
baseURL = "http://www.diversityworkbench.de"
languageCode = "en-us"
title = "DiversityAgents"
theme = "relearn"

[outputs] home = ["HTML", "RSS", "SEARCH", "SEARCHPAGE"] section = ["HTML", "RSS", "PRINT"] page = ["HTML", "RSS", "PRINT"]

[params] themeVariant = [ "auto", "dwb", "dwb-dark" ]

</code></pre>
<h2 id="start-des-testservers">Start des Testservers:</h2>
<ul>
<li>mit einem Terminal in das Verzeichnis des Projekts wechseln</li>
<li>dort <code>hugo server </code> eingeben.</li>
<li>bei Problem mit Sonderzeichen: den Inhalt der Datei config.toml in hugo.toml kopieren und config.toml löschen (beide sollten wenn vorhanden UTF8 sein - werden manchmal als UTF16 angelegt - dieses dann nach UTF8 ändern)
<ul>
<li>Error: &ldquo;&hellip;\diversityworkbench\hugo.toml:1:1&rdquo;: unmarshal failed: toml: invalid character at start of key: ÿ</li>
</ul>
</li>
<li>Im Browser an die angegebene Adresse navigieren, e.g. <code>localhost:1313</code></li>
<li>Wenn als Basisadresse in hugo.toml etwas angegeben wurde, e.g. <code>baseURL = &quot;http://www.diversityworkbench.de&quot;</code> dann muss die passende Adresse eingeben werden also e.g. <code>localhost:1313</code></li>
</ul>
Aug 2, 2024

Subsections of HUGO

HUGO

In the HUGO / HTML tab you generate markdown files according to HUGO and the relearn theme.

The conversion and adaptions are explained in a short tutorial: Video starten

For enumeration tables the content can be exported as explained in a short tutorial: Video starten

Nov 27, 2024

HUGO links

In the tab you can fix links in markdown files according to HUGO shortcodes.

The fixes for broken links are explained in a short tutorial: Video starten

The adaptions for links for HUGO as related references are explained in a short tutorial: Video starten

To map the files in the original links to new files in the documentation follow the steps shown in a short tutorial: Video starten

Nov 27, 2024

github

ssh-key

To use this option you may have to install OpenSSH for Windows

To change the authentication mechanism to SSH keys in Visual Studio Code and GitHub, you need to follow these steps:

  • Open the command line and change in your homedirectory if not already done cd %USERPROFILE%
  • Generate an SSH key pair on your local machine using the command ssh-keygen -a3 -t ed25519 -C "your_email@example.com" -f .ssh/id_github.
    • In case you omit the -f option nameing the file where the key should be stored, you will be asked th enter the name of the file where the key should be stored e.g. id_github. Make shure not to overwrite existing keys.
  • Next enter a passphrase (twice)
    • When you generate an SSH key pair, you have the option to add a passphrase to the private key. A passphrase is an extra layer of security that helps protect your private key from unauthorized access. If someone gains access to your private key, they can use it to authenticate as you and perform actions on your behalf. By adding a passphrase, you make it more difficult for someone to use your private key without your permission.
    • When you use an SSH key with a passphrase, you will be prompted to enter the passphrase every time you use the key. This can be inconvenient, but it ensures that only you can use the key to authenticate with remote servers. You can also use an SSH agent to store your passphrase so that you don’t have to enter it every time you use your key .
    • The location of your keys will be shown (e.g. id_github for the private key and id_github.pub for the public key) next to a fingerprint and a randomart image like
      +--[ED25519 256]--+
      |     ..   .+=.o  |
      |      .+ . o+*   |
      |    . +.. ooo.o  |
      |     +.B.+= =.o  |
      |      =+S=o* = o |
      |     . oo*= o o  |
      |      .  .       |
      |        . . o E  |
      |           o .   |
      +----[SHA256]-----+
  • Add the public key to your GitHub account by navigating to your account settings, selecting “SSH and GPG keys”, and clicking “New SSH key”.
  • Copy the contents of the public key file (usually ~/.ssh/id_rsa.pub) and paste it into the “Key” field on the GitHub website.
  • In Visual Studio Code, open the Command Palette (press Ctrl+Shift+P on Windows) and search for Remote-SSH: Open SSH Configuration File.
    • You may need to install the extension Remote-SSH first
  • Select the configuration file you want to edit and add the following lines:
    Host github.com
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa
  • Save the file and close it.
  • Open the Command Palette again and search for Remote-SSH: Connect to Host.
    • you may have to set user and e-mail:
git config --global user.name "YOUR_USERNAME"
git config --global user.email "YOUR_EMAIL_ADDRESS"
  • Select the configuration file you just edited and wait for the connection to be established.
  • You should now be able to use Git with SSH authentication in Visual Studio Code.
Nov 29, 2024

DiversityWorkbench

Icons

Overview for all icons used in the software with an explanation

Modules

  • DiversityWorkbench. Zum Beispiel beim Zugriff auf ein anderes Modul mittels der Remote Query

Software

DA DC DD DE DG DP DR DSP DST DTN

When referred from another module

DA DC DD DE DG DP DR DSP DST DTN

Common

Download, Installation, Login

  • Download
  • Login
  • Download. Überarbeitet und durch eigenes Logo ersetzt

Editing

  • Table
  • Table Editor
  • Template
  • Edit Template

Customization

Archive

  • Archivierung
  • Anlegen eines Archivs
  • Wiederherstellung eines Archivs
  • Schema für ein Archiv beziehungsweise Schema der Tabellen

Database

  • Datenbank

  • eine Datenbank hinzufügen

  • Database Configuration

  • funktionen und Prozeduren in einer Datenbank

  • fehlende Verbindung zur Datenbank

  • Zu einer Datenbank neu verbinden

  • datenbankrolle

  • Einstellungen in einer Datenbank

  • tabellen in einer Datenbank

  • ###

  • ###

  • Database List

  • Sichten in einer Datenbank

  • Datenquellen wie Webservices oder Datenbanken anderer Module innerhalb der Workbench

  • Backup

  • Modell einer Datenbank

  • ER / Information Model

  • SQL

  • SQLite

Cache database

  • Cashdatenbank
  • Filter für den Transfer in die Cash Datenbank

Postgres

  • Postgres

  • Eine Postgres-Datenbank kopieren

  • ###

  • Fehlende Verbindung zu einer Postgresdatenbank

  • Eine Postgres-datenbank ersetzen

  • Postgres Target

  • MountPoint

  • ###

Arrows

Blau

  • Down
  • Down
  • Up
  • Up
  • Vorwärts
  • Zurück
  • fast Forward
  • ###
  • Forward Stopp
  • Stop
  • Höhe
  • ###
  • Next

Schwarz

  • Next
  • back
  • ###
  • ###
  • breite
  • breite

Manual, Documentation

  • Manual
  • Application Description
  • Documentation
  • Bug. Zum Beispiel im Manual wenn ein Fehler im Programm behoben wurde
  • ###
  • ###
  • Video
  • Video DE
  • Video EN
  • HUGO
  • Tutorial

Data handling

  • Kopieren
  • löschen
  • hinzufügen
  • option abgewählt
  • Option ausgewählt
  • editieren
  • kein effektieren möglich oder abgeschaltet

Query

  • ###
  • ###
  • ###
  • ###
  • ###
  • ###
  • ###
  • ###

Export

Import

  • Import
  • Import Wizard
  • Import Wizard Test
  • An vorhandene Daten anhängen
  • Werte übersetzen
  • Anhängen
  • ###
  • Visible
  • Hidden
  • Decision

Replication

  • ServerAdd
  • Upload
  • Clean Database

Hierarchy

  • Die Standarddarstellung der Hierarchie mit den übergeordneten Knoten sowie den Kind Knoten des aktuellen Datensatzes
  • Darstellung der gesamten Hierarchie angefangen am obersten Datensatz
  • Aufbau der Hierarchie von unten nach oben
  • Einschränkung der Hierarchie auf die Kinder des aktuellen Datensatzes
  • Copy Hierarchy
  • Einschränkung der Hierarchie auf die übergeordneten Datensätze des aktuellen Datensatzes
  • aufbau der Hierarchie von oben nach unten
  • Hierarchie aktualisieren
  • No Hierarchie
  • Hierarchy and Synonyms

Feedback - changed to E-mail support

  • Send a feedback as an E-mail to the support address
  • deprecated - now issues in git
  • deprecated - now issues in git

Maps

  • ###
  • Distribution
  • Distribution incl. Organisms
  • TK
  • UTM
  • Gauss Krueger

Images

  • Image
  • Image List
  • Zoom Adapt
  • Zoom to 1:1
  • Zoom Detail
  • Rotate Left
  • Rotate Right
  • Flip Horizontal
  • Flip Vertical

Update

  • Update
  • Update Client
  • UpdateDatabase

Timeout

  • Timeout
  • Timeout Database
  • Timeout Web
  • Group
  • an agent, user etc.
  • create a copy of an agent
  • set the display type of an agent
  • ###

  • Login

  • Logins

  • Login Locked

  • Not Logged in

  • Windows Login

  • Roles

  • Encrypted

Webservice etc.

  • Catalog of Life
  • IndexFungorum
  • Gfbio
  • Webservice
  • Github

System etc.

  • Administration
  • Architektur
  • CC
  • ###

  • ###

  • Error

  • Errorlog

  • No Errorlog

  • Windows

  • Linux

  • TCP

  • Shared Memory

  • Install

  • Installation

  • System Tools

  • System Tools

  • Server

  • Server IO

Module specific

DA

Contact

  • Contact
  • Address

DC

  • Scan Collection
  • Scanner

Agent

  • an anonymous collector in DC

Analysis

  • Analysis
  • Hierarchy
  • Edit DNA

Collection

  • der Code einer Sammlung
  • Eine Sammlung hinzufügen
  • Administrative Hierarchie in einer Sammlung
  • Räumliche Hierarchie in einer Sammlung
  • der Sammlungsmanager
  • der Benutzer einer Sammlung
  • Grundriss

Types

  • Generischer Typ einer Sammlung
Administrativ
  • Institution
    • Department
Räumlich
  • der Ort einer Sammlung
    • Room
    • Rack
    • Cupboard
    • Container
      • Box
      • Drawer
      • Subdevided container
      • Subdevided container
        • Area
    • Freezer
    • Fridge
    • Steellocker
    • Radioactiv
IPM
  • Sensor
  • Trap
  • Hardware

Event

  • Event
  • Event Merge
  • Event Method
  • Event Image
  • Event Assign
  • Remove Event from Series

Series

  • Series
  • Find Series
  • Series Hierarchy
  • Series Image

Localisation

  • ###

  • ###

  • Verbreitung

  • Tiefe

  • Habitat

  • Höhe

  • Plot

  • Plot Hierarchy

Specimen

  • ###
  • Bilder
  • ###
  • ###

Parts

  • ###
  • ###
  • beschreibung
  • SpecimenPart Identifier

Material

  • Medium
    • Drawing or photograph
      • Drawing
      • Image
    • Sound
  • Observation
    • Human Observation
    • Machine Observation
  • Specimen
    • Fossil Specimen
    • Living Specimen
      • Culture
    • Other Specimen
      • Objekttraeger
      • Egg
      • Nest
      • Earth science
      • DNA
        • DNAlyophilized
      • gewebe
    • Preserved Specimen
      • knochen
        • skull
        • single bone
        • Otolith
        • Tooth
      • shell
      • dried Specimen
        • Herbarium sheet
        • Pinned Specimen
      • Vial
      • Fell

Printing

  • ein Etikett
  • viele Etiketten

Units

  • ###
  • bilder
  • ###
  • ###
  • ###
  • ###

Taxonomic groups

Taxa

  • Viren
  • Bacterium
  • Algen
  • Moose
  • Plants
    • Galle
  • pilze
    • Flechten
  • Schleimpilze
  • Tiere
    • Quallen
    • Evertebrata
      • Mollusca
        • Gastropoda
      • arthropoden
        • spinnen
        • Insekten
          • Heteroptera
          • Kaefer
          • Wespe
          • Lepidoptera
          • Fliege
      • Stachelhäuter
    • Vertebrata
      • fische
      • Amphibien
      • reptiles
      • säugetiere
      • säugetiere - Alternative
      • vögel

Terms

  • Boden
  • Bodenhorizont
  • Rock
  • mineral
  • artefact

Transaction

  • transaktionen
  • Transaction Balance
  • Anforderung einer Bestätigung für eine Ausleihe
  • Embargo
  • Tausch
  • Weiterleitung
  • Geschenk
  • gruppe
  • Inventur
  • ausleihe
  • Dauerleihe
  • meine Anfrage
  • Erlaubnis
  • Kauf
  • entfernung
  • Anfrage
  • rücksendung
  • Teilrücksendung
  • Sendung
  • Specimen in Transaction
  • Payment
  • Transaction Management
  • Requestor

Tasks

  • Aufgabe

  • Aufgabe in Sammlung

  • batterie

  • Ladezustand einer Batterie in Prozent

  • Ladezustand einer Batterie in Volt

  • Nützlinge

  • reinigung

  • Poison

  • Reparatur

  • sensor

  • Prometheus

  • Falle

  • Ausstellung

  • IPM

Best practice

  • Plant Parasite
  • Ship
  • Forest Plot
  • Bohrkern
  • Identification Key

Bayern Flora

  • BayernFlora
  • BayernFlora
  • GUC

Bavarikon

  • Bavarikon

DD

Description

  • Description
  • AddDscr
  • AddAllDscr
  • AddDscrs
  • AddCondDesc

Scope

  • Scope
  • Add Scope

Delta

  • Delta
  • Delta Settings

sonstige

  • Type
  • Mandatory
  • Add All
  • alles löschen

DG

DP

  • ###
  • ###

DR

DSP

DST

  • ###
  • ###
  • Representation
  • ###
  • ###

DTN

Checklist

  • ###
  • ###

ToDo

A

  • Hinzufügen mehrere Objekte
  • Audio

B

  • Broken Link
  • suche im Web
  • Ein Vorschlag für das Logo von Diversity References

C

  • Ein Chart als Suchergebnis zum Beispiel für Ergebnisse von Scientific Terms

  • Clipboard

  • einstellung einer Farbe

  • eine Spalte in einer Tabelle

  • Festlegung der Spaltenbreite

  • Festlegung der Spaltenbreite auf Inhalt

  • Festlegung der Spaltenbreite auf Inhalt fixiert

  • ein Konflikt in den Daten beispielsweise bei Synchronisation zwischen 2 Datenbanken

  • Copy Synonym

  • Circle

D

  • ein Dokument
  • doi

E

  • ein Logo für die EU insbesondere in Bezug auf Gesetzgebungen
  • Eine externe Datenquelle

F

  • Aus FontAwesome bezogene Logos

    • code-branch
    • cogs
    • compact-disc
    • laptop-code
  • Ein Verzeichnis, beispielsweise ein Ordner

  • GisEditor

  • ###

  • Grid. Eine spezielle Ausgabe in Diversity Collection

  • History. Ansicht von Daten in den Log Tabellen

  • ###

I

  • Eine ID. In der Regel extern

  • Ein Index in der Datenbank

  • IndExs

  • Am Anfang einfügen

  • In Lines

  • JsonApi

K

  • Kalender
  • Schlüssel
  • Beschreibung
  • Keyword
  • Koordinatenkreuz. Zeigt die Position innerhalb einer Karte beispielsweise Google Maps an

L

  • die Sprache, beispielsweise als Einstellung für die Oberfläche eines Programms
  • Legend
  • ein Link
  • Linked Server. Eine vom Administrator innerhalb von SQL Server eingerichtete Verbindung zu einem Server von dem Daten gelesen werden können
  • Eine Liste
  • ###
  • ###
  • ###
  • ###
  • ###
  • ausblenden einer Liste
  • Eintrag von Daten ins Log
  • Wiederherstellen von Daten aus dem Logverzeichnis
  • Sicherungen von Daten ins Log
  • Detailansicht

M

  • Darstellung von Daten in einer Karte
  • eine Spalte auswählen oder markieren
  • Hochladen von Daten zum SNSB Media Service
  • MediaWiki
  • Das Menü einer Applikation
  • ###
  • ###
  • ###
  • ###
  • Ein Artefakt. Als Taxonomische Gruppe für beispielsweise ein Modell innerhalb von diversity Collection
  • Verbindungen zu anderen diversity Workbench Datenbanken auf dem aktuellen Server
  • ###

N

  • ein Name, zum Beispiel eine Bestimmung oder der Name einer Person

  • Anzeige von akzeptierten Namen

  • eine abhängige Bestimmung hinzufügen. Dies wird insbesondere in diversityCollection für die Charakterisierung von Gesteinen verwendet

  • ein Synonym zu einem Namen

  • Kein Als typus festgelegter Name

  • Einen Namen heraufstufen

  • Einen Namen herabstufen

  • Einen Namen an das Ende setzen

  • Einen Namen bestätigen

  • NamedPipes

  • Netzwerk

  • Einen neuen Datensatz anlegen

  • mehrere neue Datensätze anlegen

  • kein Zugang zu den ausgewählten Daten

  • eine Notiz oder Anmerkung

  • Eine Anmerkung hinzufügen

O

  • eine Beobachtung
  • OK
  • ein Verzeichnis öffnen
  • Optionen. Insbesondere Einstellungen für die Suche
  • Überschreiben

P

  • ###

  • ###

  • Parameter

  • Verwandtschaftsbeziehungen

  • Entfernung einer Beziehung zum übergeordneten Datensatz
  • einfügen einer Beziehung zu einem übergeordneten Datensatz
  • Beschreibung eines teils eines SammlungsObjekts In diversityCollection
  • ###
  • ###
  • ###
  • ###
  • ###
  • ###
  • ###
  • Plant parasite
  • Vorkommen von Organismen innerhalb eines Quadranten von TK25
  • Eine Untersuchungsfläche beziehungsweise das Symbol für das Modul Diversity Sampling Plots
  • ein Drucker beziehungsweise Ausgabe von Daten in gedrucktem Format
  • die Prozessierung von Sammlungsobjekten beispielsweise Trocknung in diversity Collection
  • Projektdaten mit auf ReadOnly beschränktem Zugriff

  • Öffentlich zugängliche Daten

  • Problem

  • ein QR Code

  • Voreingestellte suchen. Wird für Version 8 obsolet

  • Beenden eines Programms

R

  • entfernen von Daten

  • Auswahl einer Option

  • eine Literaturstelle

  • Eine Beziehung innerhalb der Datenbank

  • Eine Beziehung Zu Daten außerhalb der Datenbank

  • Eine Beziehung innerhalb der Datenbank Von anderen Daten auf den aktuellen Datensatz

  • Replace

  • Replication

  • ###

  • Restore from log
  • ###
  • ###
  • Row Height

S

  • ###
  • ###
  • Ein Sender zum Beispiel ein LoraWan Sender in einem Netzwerk für IPM
  • Einstellungen innerhalb der Applikation
  • Sortierung der Ergebnisse einer Suche
  • Sortierung der Ergebnisse einer Suche
  • ###
  • ###
  • ###
  • ###
  • ###

T

  • ###
  • Transfer von Daten. Beispielsweise in ein neues Projekt oder eine Transaktion
  • ###
  • ###
  • Undo
  • Undo all
  • Volume
  • Warnung, zum Beispiel bei Transaktionen wenn ein Teil der erfassten Objekte giftige Substanzen enthält
  • Wartung
  • Maintenance
  • Workflow
Feb 11, 2025