Add Dynamic Poll Web Part with core functionality and styling
- Initialize Gulp build process with gulpfile.js - Create package.json for project dependencies and scripts - Add TypeScript declarations for SCSS modules - Implement DynamicPollWebPart with property pane configuration - Create PollDataService for SharePoint list interactions - Develop core polling logic in PollCore.ts - Define types for polls and answers in PollTypes.ts - Create React components for DynamicPoll UI - Add localization support for English and German - Implement unit tests for core polling functionality - Set up TypeScript and TSLint configurations
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
# 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`, `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 und mindestens einer Option anlegen. `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.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.
|
||||
Reference in New Issue
Block a user