# 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 - alle aktiven Umfragen anhand von Aktiv-Flag sowie optionalem Start- und Enddatum - umschaltbare Darstellung mehrerer aktiver Umfragen als Accordion oder Slider mit Punktenavigation - 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, werden sie nach Startdatum sortiert und entsprechend dem im Property Pane gewählten Accordion- oder Slider-Modus angezeigt. 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.