#
# Hinweise fuer ShootbackTargets (Projekt L400)
#
# $Id$
# $HeadURL$
# $Author$
#

N. Thoden, 16.07.2020

Facts
============================================================
- Die Shootbacktargets im Projekt L400 besitzen kaum eigene Intelligenz.
- Einige der Shootbacktargets können sich bewegen.
- Sie haben unterschiedliche Silouetten.
-

Statik
============================================================
Im namespace TargetManagement existieren 3 wesentliche Objekte/Topics:

1) ShootbackTarget
  Es wird "assigned" mit einem Participant aus den ORBAT (Teilnehmerbaum). Diese muss ein WmsTypeClass (TargetVehicle|TargetHuman) haben.
  Beim Zuordnen zu eine  Teilnehmer (aus dem ORBAT) kann/muss eine TargetConfiguration vorgenommen werden: activateLaserDesignation etc.

2) ShootbackArea
  Die Area wird per center, width, height definiert. Ist also nordausgerichtet.

3) TargetAreaAssignment (inkl. (Shootback)-Configuration)
  Das Assignment zw. 1) und 2) beinhaltet zusätzlich die (Shootback)-Configuration, die das Verhalten definiert: PreWarning-interval, hitsToKill etc.
  Diese (Shootback)-Configuration kann per CheckBox "assigned" aktiviert oder deaktiviert werden (DDS: TargetAreaAssignment.isActive())
  !!! Somit hat nicht ein Target nicht genau EINE (Shootback)-Configuration, sondern jedes einzelnes Assignment !!!



Ablauf / Best Practise
============================================================
PreCondition:
Zunächst sollte sichergestellt sein, dass der ORBAT einige Targets enthält. Ggf. sollten entsprechende Typen/template eingefügt werden.

Step 1: TargetConfiguration
Im Dialog "Assign/Configure Targets" kann man die grundsätzliche TargetConfiguration pro Teilnehmer erstellen (activateLaserDesignation etc.)
Anmerkung:
- Es muss nicht für jeden im ORBAT als "Target" konfigurierten Particpant eine TargetConfiguration  erstellt werden.
- Es muss aber für jedes "Target" im ORBAT eine TargetConfiguration  erstellt werden, wenn es einer Area zugeordnet werden soll.

Step 2: ShootbackArea
Im Dialog "Configure Areas" können die Areas erstellt werden.

Step 3: Zuordnungen vornehmen
Hierfür gibt es 3 mögliche Wege:
  Step 3a)
  Shootback Overview
  Dieser Dialog zeigt in Tabellenform alle aktiven Zuordnungen. Zunächst sind keine vorhanden.
  Per Add kann zum einen eine Zuordnung zw. einem Target und einer Area erstellt und andererseits die (Shootback)-Configuration vorgenommen werden.

  Step 3b)
  Assign Area
  Im Target-ÜbersichtsDialog kann ein Target selektiert und dann per Btn "Assign Area" ein weiterführender Dialog geöfnet werden "Edit Areas assigned to <Targetname>"
  Dieser Zuordnungs-Dialog zeigt in Tabellenform nur die für dieses Target relevanten Zuordnungen.
  Es werden die bestehenden mit "Assigned" = "Yes" dargestellt.
  Darüberhinaus sind die noch möglichen Areas mit "Assigned" = "No" aufgeführt. Mit Klick auf "No" wird es assigned.
  Wenn die (Shootback)-Configuration aber ungültig (derzeit == default) ist, wird die Zeile rot hinterlegt und ein "Apply" ist nicht möglich.
  Per "Edit" kann die (Shootback)-Configuration vorgenommen werden.

  Step 3c)
  Assign Target
  Hier verhält es sich analog zu Step 3b):
  Im Area-ÜbersichtsDialog kann ein Area selektiert und dann per Btn "Assign Target" ein weiterführender Dialog geöfnet werden "Edit targets assigned to <Areaname>"
  Dieser Zuordnungs-Dialog zeigt in Tabellenform nur die für dieses Area relevanten Zuordnungen.
  Es werden die bestehenden mit "Assigned" = "Yes" dargestellt.
  Darüberhinaus sind die noch möglichen Targets mit "Assigned" = "No" aufgeführt. Mit Klick auf "No" wird es assigned.
  Wenn die (Shootback)-Configuration aber ungültig (derzeit == default) ist, wird die Zeile rot hinterlegt und ein "Apply" ist nicht möglich.
  Per "Edit" kann die (Shootback)-Configuration vorgenommen werden.

Anmerkungen:
- Für alle Step 3 Varianten gilt: Der ÜbersichtsDialog muss mit "Apply" abgeschlossen werden, um die Daten wirksam zu übernehmen.
- Sowohl eine fehlende TargetConfiguration als auch eine fehlende (Shootback)-Configuration wird in den Tabellen farblich dargestellt.


Convenience
============================================================
- Tooltips in Tabellen, ComboBoxen
- Selektiert man eine Area, Target oder Assignment, so wird in der Karten das zugehörige Objekt per Pfeil markiert (MapObjectIndicator) und selektiert dargestellt.
  Die dem Area oder Target zugeordneten Objekte werden ebenfalls selektiert dargestellt.
  - Per "Center Map" wird die Karten auf das selektiert Objekt zentriert.
    Dies kann auch mit der gedrückten Shift-Taste bei selektieren in der Tabelle erreicht werden.
  - Per "Zoom to " zoomt die die Karten auf das selektiert Objekt und dessen zugeordneten Objekte.

- Einige Dialog haben die Möglichkeit, die Daten in die Library zu exportieren, bzw. von diort zu importieren.
  Beim Importieren werden die aktuellen Daten überschrieben (Warn-Meldung ist vorhanden)

  Um Irritationen zu vermeiden, empfiehlt es sich, erst die Targets und Areas zu importieren und erst danach die Zuordnungen zu importieren.


Todo:
============================================================
- EA:
    - Umbenennung des Topics TargetAreaConfiguration in ShootbackConfiguration  (Done)
    - ForeignKeys entfernen                                      (Done)

    - Die dynamischen Daten "Position" und visibleParticpants evtl. in seperates Topic auslagern.
      (Derzeit im Target)

-SVC:
  - ModulTests anpassen

--->
--->
  - Es ist derzeit die Höhenkarten für Bremen hart programmiert.
    Es muss dafür gesort werden (Ablauf) wie TrainingAreas mit den Basemaps UND
    ElevationMaps augf den System (INKL. Server kommen), damit auch die Services
    diese Dateien nutzen können.
    Derzeit ist dort viel getrickst.... :-(
<-----
<-----


- GUI
  - Yes/No Icons durchgängig machen                              (Done)
  - Filter der LtsDataViews vervollständigen                     (Done, mit Bug)
  - "Name" -> "Designation"
  - Spalten sortieren, umbenennen
  - Silouetten einbinden
  - "ZoomTo" SVG erstellen (ButtonBox)                           (Done)
  - Evtl. "Experten"-Modus beim Dlg "Targets per Area"???
  - I18N

- SOURCEN
  - Konsistenten Datei- und Klassen-Bezeichnungen herstellen. Ist derzeit kaum wartbar.
  - LogMessages auf passenden Level stellen                               (Done)
  - Links zur OnlineHilfe setzen/korrigieren (setOnlineHelpFilename)

- seperate APP erzeugen: "ShootbackApp"


Ideen
============================================================
- Beim Dlg "Assign/Configure Targets" einen Defaultwert eintragen/anzeigen: Takt. Bezeichner des Participants.
  Btn. "Use Tact. Identifier als Designation" kopiert den Wert in das LineEdit...




Known Problems/Bugs:
============================================================
- Einige Filter der LtsDataViews (Dlg "Targets per Area" und "Areas per Target" enthalten Values, die nicht gefiltert werden können.
  Problem in AssignmentParticipantModel::updateColumnFilter()
- Wenn das Target nicht modifiziert werden darf, ist die ComboBox disabled. Leider ist dann auch das Icon dunkel...
  (Label mit Icon statt ComboBox)





