opentechschool-leipzig / poll_app Goto Github PK
View Code? Open in Web Editor NEWA Vue WebApp for creating polls or surveys for workshop evaluation
Home Page: https://poll-app.netlify.com/
A Vue WebApp for creating polls or surveys for workshop evaluation
Home Page: https://poll-app.netlify.com/
When you click on a question list item, it will expand and show some details.
Right now the component has only minimal styling and is not showing all information.
This should be reworked!
Thanks to the work of @nycuma we now got all the information at hand 😊
What is left to do is work on improving the design of the question list and the display of information in this list
Now that we created some charts as results, we should also allow the admins to download them for further usage.
jsPDF seems to be the standard way for creating PDFs on the frontend.
https://stackoverflow.com/questions/47668546/generate-pdf-with-jspdf-and-vue-js
https://parall.ax/products/jspdf
I prepared a first, really basic implementation, but the document doesn't have any styling yet and the charts are missing.
This is the most importent Issue for the deployement of a first test version for the upcoming django girls workshop:
The view for a single Poll has to be improved so that it can be used for the workshops evaluation. This includes adjustments to the AnswerPoll.vue
view and the PollQuestion.vue
component.
Tasks for the PollQuestion.vue
component
Tasks for the AnswerPoll.vue
component
As the issue is a little bigger it would of course be fine if you just want to work on one or two parts of it. 😊
Following the thought of #38, I'd like to give the app a nice and not to generic name.
So I'd like to collect idea's in this issue and maybe we could do a poll afterwards to select the most favored option.
If you like to, you could take the main purpose of the app - to collect feedback - as a starting point for naming ideas, but this clearly isn't required. All ideas are welcomend! 😊
Editor View um Fragen anzulegen
We could validate the date on "Create Poll" and at least warn about creating a poll with a date in the past. I think this would be a good first issue for new contributors, too.
Testfragen in Firebase anlegen, um diese in generisches Formular zu laden.
Create a nice and rewarding success view for the "End User Flow" as roughly described in #34.
On the View should be displayed a "Thank You" message and the title and date of the related workshop. It has to be responsive of course.
How could we maintain the best performance for the app?
We might use route level code splitting to seperate the view for the participiants from the admin views. But since the different admin views have a lot of shared components, it might not be the best solution to implement code splitting for every route. Can we improve this with nested routing?
Are there any components where we can make use lazy loading and prefetching?
I would be thankful for any advise! 😊
Listen mit:
Features
Answering all questions except the ones with type "multiple choice" does not trigger the confirmation / warning on sending the answers.
https://router.vuejs.org/guide/essentials/dynamic-matching.html#reacting-to-params-changes
generate poll from data
send answers to firebase
There is one big challange that is yet to solve before the app can be tested publicly: right now I blocked all requests to firebase for unauthenticated users. But the people that should answer the survey shouldn't have to sign up to see and answer their polls.
I guess that an easy and secure way to set this up, would be to create a new collection especially for the active polls, that only admins can write to but everybody is allowed to read. I imagine it to be written automatically whenever an admin changes a poll's status to 'active'. It should also contain all related questions data (not just the id's as it is stored now) and idealy all admin related data (creator, timestamps) should be removed. Once the poll's status is changed to closed, the poll should be removed from the active polls collection,
Although this could be set up in the frontend, I guess this would be a good use case for cloud functions. What do you think?
I hope to be able to start working on this tomorow. But I'd like to hear if anyone has a better idea to solve this challange.
I managed to create a cloudFunction that writes the desired document 😊 As I am not really an expert with promises, there might be cleaner and more efficient ways to set this function up and any improvement ideas are most welcome! Besides that the following tasks remain:
We are now able to store the participants answers to the poll but don't use this data yet.
For each Poll there should be a statistics view, which shows detailed information about the related answers.
basic information
detailed information per question
The poll and answer data is now available on the statistics view. So you could go right ahead and do calculations and charts based on that! 😊
I installed ApexCharts and played around with different Chart types and set up some basic statistics for Multiple Choice and Scale Questions. There is still a lot of room for improvements - and we could also explore different aproaches. If you want to work on this feel free to join me! 😊
I think that chart.js or apexcharts.js might be good options. There are vue wrappers around for both libarieres, while on the first glance I think that the apexcharts wrapper is more convenient to use. apexcharts also seems to have the better documentation, while on the other charts.js has a bigger comunity and it's bundle size is half of apex'.
What do you think?
Da bin ich gerade drüber gestolpert:
https://vueschool.io/articles/vuejs-tutorials/globally-load-sass-into-your-vue-js-applications/
ziemlich easy! :)
Hier könnte sich jemand design technisch noch völlig austoben! ;)
Vorlagen für die Umfragen müssen sich speichern, laden und bearbeiten lassen.
Bonus: Highligthing nötiger Anpassungen (Titel + Datum)
Add functionality to load and update polls as long as they aren't active or closed. (This should work analogous to the templates)
Is it posible to protect active/closed polls from mutation via firebase rules? => it is: https://firebase.google.com/docs/rules/data-validation?authuser=0#use_existing_data_in
disable the option to change state back to draft once there are answers.
I'd like to have a more native app feeling for the app and would therefore replace the navbar with an interesting menu. I had something like this in mind: https://codepen.io/james_zedd/pen/ZKVZWp
but you're absolutly free to propose other ideas!
choose Icons from font-awesome
Icons:
Formular aus einem Array von Question-IDs generieren
add question
componentcurrently we only can add the additional text field for exlanations and comments on multiple choice questions. This option should also be available for scale queustions, which shouldn't require a lot of changes.
Register base components globally:
https://vuejs.org/v2/guide/components-registration.html
Set up the manifest and Service worker.
How to update data? How to delay db requests? How to send notifications? What other configurations are needed?
Input types used so far (besides the questionInpus)
Add later:
Test v-tooltip plugin (https://github.com/Akryum/v-tooltip)
I already implemented sorting options for the questionlist and created some helperfunctions. This could be easily adopted for the poll / template list.
But maybe you have a better idea for the sorting functionality =)
I'm no expert on surveys (and also not a native english speaker) but I got the feeling, that that naming of the app and it's components is a little misleading regarding conventions for the words poll, survey and evaluation form.
Here is my impression for the conceptions of these terms:
I guess that the general expactation for a poll is that it only contains one question (and is embeded on a website/forum). While surveys are concieved to include multiple questions and are common tools for science (e.g. social sciences and psychology) and economy (e.g. market surveys). An evaluation form is more specialized and bound to a specific event and date.
The guiding idea behind the webapp was to provide a tool to evaluate workshops and track the feedback over multiple worshops or events. But we also wanted it to be more general and be usable for all kind of questionaires.
Having that in mind the name poll feels very missleading for the purpose of the application.
Now I have to ideas working on that:
Give the app a more general name like "feedback" and add options for three variants:
Keeping our focus straight on event evaluation and adjust our namings regarding that.
As I'm actually not sure about these asumptions about polls and surveys I'd really appreciate your feedback and your ideas about how we should continue with the application!
Right now the userlist has only minimal styling and doesn't deliver a good user experience.
It should show a button and use the confirmation modal
Right now error or success messeges are only loged to the console but they need to be displayed for the user.
It might be smart to use vuex for managing the message content. I'd also like to use a transition group for smooth animations.
maybe kinda like this package:
https://www.npmjs.com/package/vue-notification
Thanks to @Twissi we now have a great basic solution for displaying notifications, with more improvements to follow😊 We now should used it for all error handling
Netlify loves open source projects
We're delighted to give all open source projects a generous free tier of our services. Starting in March 2020, we'll have new terms of service for open source projects we sponsor, including new requirements for a code of conduct, an approved license and badge. If you're currently running an open source account on Netlify or have a future project, please review the new policy and submit the information about your project by March 9, 2020.
Please test the updated demo and comment if you find any bugs.
You can also comment on improvement ideas that aren't covered by existing issues yet.
Is there any problem that prevents from testing the app on sunday? Please let us know! 😊
Admin Tool nur für registrierte Admins freigeben. => Abfrage nach custom claims?
FirebaseUI oder REST API?
set rules for firestore?
build Route Guard
set custom claims? => admin SDK (with node.js server?)
Create Login View / request access View
The redirection isn't working properly when a user token exists:
The route guard redirects the user before the token is evaluated. Then the auth Observer gets triggered before the route meta data for the new route exists and the logged in user finds himself on the login screen.
I think the ideal option is to make the route guard wait for the evaluation of the firebase token before it redirects.
Bisher sind die Components noch sehr unsortiert. Hier sollte besser gleich eine gute Struktur entstehen. :)
As the app is mainly made for learning purposes, you're invited to add your own ideas to the project and work on those aspect you want to learn about! 😊
This Issue is meant to collect ideas for features to work on, that aren't covered by other issues yet.
You wan't to learn how to set up file upload with firebase? You could add a feature to upload avatar images for the team. You'd rather like to work on customization? Allow the admins to select a color schema for their surveys. You got some other ideas? Feel free to comment on all features you would like to see in the app!
Globaler State für Fragen und Polls?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.