- Bump version to 1.2.0 for organization-chart-webpart - Add new interfaces and types for SharePoint list configuration - Implement OrganizationChartListDataService to handle SharePoint list data retrieval - Update web part properties to include data source selection and list configuration - Modify rendering logic to accommodate both user profiles and SharePoint list data sources - Enhance property pane with new fields for list configuration - Update localization files for new property labels and messages - Add validation checks for list configuration in the web part
79 lines
4.2 KiB
Markdown
79 lines
4.2 KiB
Markdown
# Organization Chart
|
|
|
|
SPFx-1.4.1-WebPart für SharePoint Server Subscription Edition. Es erstellt aus dem User Profile Service oder einer frei zugeordneten SharePoint-Liste ein Organigramm, das ab einer konfigurierbaren Startperson rekursiv nach unten aufgebaut wird.
|
|
|
|
## Funktionen
|
|
|
|
- aktueller Benutzer oder konfigurierter Manager als Startpunkt
|
|
- wählbare Datenquelle: User Profile Service oder SharePoint-Liste
|
|
- konfigurierbarer WebPart-Titel
|
|
- Startperson über einen SharePoint-People-Picker direkt im WebPart auswählen
|
|
- rekursives Laden aller darunterliegenden Ebenen über `DirectReports`
|
|
- konfigurierbare maximale Tiefe und Personenzahl
|
|
- vollständig sichtbarer Baum ohne separate Auf-/Zuklapp-Schalter
|
|
- Profilbild, Anzeigename, Position, Abteilung und optional Kontaktdaten
|
|
- Teams-ähnliche Personenkarten mit Text links und Profilbild rechts
|
|
- aufklappbare Personendetails direkt in der Karte
|
|
- konfigurierbare Kartenfarben und wahlweise abgerundete Ecken
|
|
- Verlinkung auf die SharePoint-Profilseite
|
|
- kurzzeitiger In-Memory-Profilcache zur Reduzierung wiederholter REST-Aufrufe
|
|
- responsive Baumdarstellung mit automatisch kompakteren Karten bei breiten Organisationsebenen
|
|
- gerade Verbindungslinien zwischen den Hierarchieebenen
|
|
- schattenlose Karten im Teams-Stil
|
|
|
|
## Datenquelle und Voraussetzungen
|
|
|
|
Das WebPart verwendet direkt:
|
|
|
|
```text
|
|
/_api/SP.UserProfiles.PeopleManager/GetPropertiesFor(accountName=@v)
|
|
/_api/SP.UI.ApplicationPages.ClientPeoplePickerWebServiceInterface.clientPeoplePickerSearchUser
|
|
```
|
|
|
|
Es benötigt keine Microsoft-Graph-Berechtigungen. Bei Verwendung des User Profile Service muss die Service Application eingerichtet sein. Benutzerprofile und insbesondere die Profilproperty `Manager` müssen aus dem Active Directory importiert werden, damit SharePoint `DirectReports` korrekt bereitstellt.
|
|
|
|
Alternativ kann im Property Pane eine SharePoint-Liste gewählt werden. Erforderlich sind Spalten für einen eindeutigen Schlüssel, den zugehörigen Manager-Schlüssel und den Anzeigenamen. Position, Abteilung, E-Mail, Standort, Telefon, Bild-URL und Profil-URL sind optional. Schlüssel- und Manager-Spalten können Textspalten oder einzelne Personenfelder sein. Die Startperson wird aus den vorhandenen Listeneinträgen gewählt; ohne Auswahl wird ein Eintrag ohne bekannten Manager automatisch als Wurzel verwendet.
|
|
|
|
Eine mögliche Listenstruktur mit Textspalten ist:
|
|
|
|
| Spalte | Beispiel | Zuordnung |
|
|
|---|---|---|
|
|
| `AccountName` | `CONTOSO\max.mustermann` | eindeutiger Schlüssel |
|
|
| `ManagerAccount` | `CONTOSO\erika.musterfrau` | Manager-Schlüssel |
|
|
| `Title` | `Max Mustermann` | Anzeigename |
|
|
| `JobTitle` | `Teamleiter` | Position, optional |
|
|
| `Department` | `IT` | Abteilung, optional |
|
|
|
|
Alternativ können für Schlüssel und Manager zwei einzelne Personenfelder verwendet werden. Entscheidend ist, dass der aus der Manager-Spalte gelesene Wert mit dem Schlüssel des übergeordneten Listeneintrags übereinstimmt.
|
|
|
|
### Verwendung mit dem Inhaltstyp-Katalog
|
|
|
|
Die Listenfelder koennen ueber den Inhaltstyp-Katalog verteilt werden. Fuer den eindeutigen Personenschluessel
|
|
und die Manager-Beziehung sollten Textspalten oder einzelne Personenfelder verwendet werden. Ein Lookup auf
|
|
eine konkrete Mitarbeiterliste ist dafuer nicht geeignet, weil ein Lookup die Listen-ID der jeweiligen
|
|
Websitesammlung enthaelt. Lookup-Spalten werden deshalb in der Spaltenzuordnung des WebParts nicht angeboten.
|
|
Empfehlenswert sind ein unveraenderlicher Mitarbeiter-/Accountschluessel als Text oder zwei Personenfelder
|
|
mit identischer Login-Darstellung.
|
|
|
|
## Startperson
|
|
|
|
Im Bearbeitungsmodus der modernen Seite wird direkt oberhalb des Organigramms ein People Picker angezeigt. Dort kann die Startperson per Name oder E-Mail-Adresse gesucht werden. Das WebPart akzeptiert nur einen von SharePoint eindeutig aufgelösten Benutzer. Gespeichert werden der kanonische Login und der Accountname als Fallback.
|
|
|
|
Wird die Auswahl entfernt, verwendet das WebPart wieder den angemeldeten Benutzer. Im Anzeigemodus ist der People Picker nicht sichtbar.
|
|
|
|
## Build-Umgebung
|
|
|
|
- Node.js 8.17.0
|
|
- npm 6.13.4
|
|
- SharePoint Framework 1.4.1
|
|
|
|
```powershell
|
|
npm install
|
|
npm test
|
|
gulp clean
|
|
gulp bundle --ship
|
|
gulp package-solution --ship
|
|
```
|
|
|
|
Das Paket wird unter `sharepoint/solution/organization-chart-webpart.sppkg` erzeugt.
|