65 lines
2.9 KiB
Markdown
65 lines
2.9 KiB
Markdown
# Dynamic Poll
|
|
|
|
Ein eigenstaendiges, mit SharePoint Server Subscription Edition kompatibles SPFx-1.4.1-WebPart fuer einfache Umfragen. Die Funktion orientiert sich am PnP-Beispiel `react-dynamic-poll`, ist aber fuer die vorhandene Legacy-Toolchain und klassische SharePoint-REST-Endpunkte umgesetzt.
|
|
|
|
## Funktionen
|
|
|
|
- aktive Umfrage anhand von Aktiv-Flag sowie optionalem Start- und Enddatum
|
|
- genau eine Antwort je angemeldetem Benutzer und Umfrage
|
|
- unmittelbare Ergebnisanzeige mit Stimmen und Prozentwerten
|
|
- optional sichtbare Ergebnisse vor der eigenen Abstimmung
|
|
- konfigurierbares Aktualisierungsintervall
|
|
- barrierearme Radio-Auswahl, Statusmeldungen und Ergebnisbalken
|
|
- SharePoint-Theme-Farben statt fest verdrahteter Portal-Farben
|
|
|
|
## Voraussetzungen
|
|
|
|
- SharePoint Server Subscription Edition mit SPFx 1.4.1
|
|
- Node.js 8.17.0 und npm 6.x fuer den Build
|
|
- SharePoint Management Shell fuer die Listenbereitstellung
|
|
|
|
## Listen bereitstellen
|
|
|
|
In der SharePoint Management Shell auf einem SharePoint-Server ausfuehren:
|
|
|
|
```powershell
|
|
.\deployment\Initialize-DynamicPollLists.ps1 `
|
|
-SiteUrl 'http://portal.contoso.local/sites/DEINE-SITE'
|
|
```
|
|
|
|
Das Skript ist idempotent und legt standardmaessig diese Listen an:
|
|
|
|
- `Polls`: `Title`, `Question`, `Options` (mehrzeiliger Nur-Text), `StartDate`, `EndDate`, `IsActive`
|
|
- `Poll Answers`: `Title` (Benutzerschluessel), `Poll` (Lookup), `Answer`
|
|
|
|
Die Benutzer des WebParts benoetigen Leserechte auf `Polls` sowie Lese- und Hinzufuegerechte auf `Poll Answers`. Fuer die Ergebnisberechnung muessen sie die vorhandenen Antworten lesen koennen.
|
|
|
|
## Umfrage anlegen
|
|
|
|
In `Polls` ein Element mit Frage anlegen und in `Options` jede Antwortmoeglichkeit in eine eigene Zeile schreiben, zum Beispiel:
|
|
|
|
```text
|
|
Ja
|
|
Nein
|
|
Anderer Termin
|
|
```
|
|
|
|
Leerzeilen und doppelte Eintraege werden ignoriert. `IsActive` aktivieren; Start- und Enddatum koennen leer bleiben. Sind mehrere Umfragen gleichzeitig aktiv, wird die mit dem neuesten Startdatum verwendet.
|
|
|
|
Danach das WebPart auf einer modernen Seite einfuegen und im Property Pane die Listen `Polls` und `Poll Answers` auswaehlen.
|
|
|
|
## Paket bauen
|
|
|
|
```powershell
|
|
npm install
|
|
npm run package
|
|
```
|
|
|
|
Das fertige Paket liegt unter `sharepoint/solution/dynamic-poll-web-part.sppkg`.
|
|
|
|
## Hinweise
|
|
|
|
Der Benutzerschluessel wird in der `Title`-Spalte der Antwortliste gespeichert. Die doppelte Stimmabgabe wird vor dem Schreiben geprueft. Zwei exakt gleichzeitige Requests desselben Benutzers lassen sich ohne serverseitige Eindeutigkeitsregel dennoch nicht vollstaendig ausschliessen.
|
|
|
|
Nach einem Upgrade von der bisherigen Choice-Spalte muss das Provisionierungsskript erneut ausgefuehrt werden. Es legt das neue Feld `OptionsText` mit dem Anzeigenamen `Options` an, uebernimmt vorhandene Choice-Werte und blendet die alte Spalte als `Options (legacy)` in den Formularen aus. Das WebPart kann waehrend der Umstellung weiterhin das alte Choice-Feld lesen.
|