Code Monkey home page Code Monkey logo

noqueue's Introduction

noqueue

NoQueue - Digitalisierte Warteschlange

NoQueue - Digital Queue

Installations anweisungen

Installationsanweisungen befinden sich in der WIKI

Installation instructions on WIKI

Showcase

Eine Vorschau zum testen und rumspielen (mit Backend verbunden) ist über die IonicView app möglich:

Android: https://play.google.com/store/apps/details?id=com.ionic.viewapp

IOS: https://itunes.apple.com/us/app/ionic-view/id849930087?mt=8

Die AppID um die APP in IonicView zu starten ist: A80DBDC5

A preview is avalaible to test and discover (connected to a backend) by Downloading the IonicViewApp:

Android: https://play.google.com/store/apps/details?id=com.ionic.viewapp

IOS: https://itunes.apple.com/us/app/ionic-view/id849930087?mt=8

The AppID to view the app is: A80DBDC5

noqueue's People

Contributors

bschurian avatar christophknabe avatar dkaatz avatar robertdimitrov avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

bschurian

noqueue's Issues

#7010 -- Consistency of Providers

Some of the Providers have non-consistent parameter names right now. For example:

// ShopsProvider
getShop(id: any)
editShop(shopID: any, ...)

#1120 -- MyQueues, MyQueueSingle / delete pages

This pages are no longer needed, as we are going to instead show their information in My-Shops and My-Shop-Single.
In order to delete them properly, you have to go to app/app.module.ts and remove them from:

  • the import lines
  • the declarations[] inside NgModule
  • the entryComponents[] inside NgModule

And to remove them from their calling stations (dashboard.ts):

  • import
  • entryComponents inside of the @Component declaration
  • delete the methods that are telling the NavCtrl to jump to these pages

#5000 -- PushNotifications

Check how the Cordova plugin for push notifications works (ionic-docs/native).
We could inform the users N Minutes before their appointment.
Implementation (idea):

  1. A new push-notifications-provider.ts that can send push notifications with message: string
  2. Get the appointment's start (GET My Queue Position)
  3. An Event Listener / some sort of function / ? - that checks if time < N minutes
  4. Disable this function after sending the Notification

Create REST definition

Definition der Resourcen und der dazugehörigen REST-Schnittstellen Documentation/Definition.
Evtl. mit Swagger.io ?!

AnbieterAnlegen

  1. Fachlogik für anbieter anlegen implementieren
  2. action implementieren
  3. benötigte DAL opetrationen implementieren

#1021 -- ServicesProvider / getService(id)

Obsolete and not supported by the backend - find it's usage in the pages (probably only service-single.ts) and replace it by sending the service in the navParams when switching from Shop-Single to Service-Single.
This should be actually already done, but my IDE says that some page is using the getService method - so please check.

#1150 -- Settings / theme selection

There seems to be a problem with the Theme Selection (dark or light), as the Ionic .scss files are being prerendered and cannot be updated while the application is running.
Please remove this functionality from settings.html and setting.ts, as well from providers/user-configuration-provider.ts.

#1110 -- Coworkers / map users[]

After reloading the Coworkers modify the users array by setting a manager or employee flag on the users whose id matches the manager.anwender.id / employee.anwender.id (no guarantee for the right names of the properties).

#1140 -- ServiceSingle / employees not loading

I don't know if this is a problem on the Backend, but at our last meeting I had to comment the getNextAvailableSlots in reloadData() (which should return an array of employees and their next slots) and used the getEmployees() instead (which returns only the employees).

#3001 -- Validation Errors

Better User Feedback if he enters non-valid parameters.
Idea: for each method in ValidatorProvider, make a string property, which describes the Regex-rule (minimize redundancy).

#2002 -- No Network Connection

Before showing a given page (ionViewWillEnter()) / before sending a request / do you have a better idea when this should be done? :

Check if the device is connected to the internet (providers/connectivity-provider.ts)

If not, show a Toast / modify the page.

#1030 -- ShopsProvider / obsolete methods

Delete getAllShops(), getNearbyShos() and the commented getShops() method.
The same applies to promote() and demote(). There seem the be some classes using them though, so update them also (probably coworkers.ts and my-shop-single.ts).

#9000 -- Deployment

If the backend is deployed on the real university server, we can also upload NoQueue to the Ionic View App. This way, we will be able to test the application on our real devices.

#1111 -- Coworkers / fireManager and fireEmployee

The server endpoints probably expect the managerID (not the userID). The HTML template is now giving the userID to the fireManager/Employee function?
Please check the server's expectations for the request.

Setup Projects ( Kanban Boards )

Um die Arbeit zu Organisieren und Überblick über den Fortschritt zu haben sollten wir 2 Projekte für das Frontend und das Backend erstellen.

#1161 -- FAQ

Think out some appropriate content for the FAQ-Page.

#3003 -- SplashScreen

Create a SplashScreen with the NoQueue Logo, which is shown until the AuthenticationProvider is done with it's async setup.

#7000 -- Clean-Up

After implementing the application:

  • remove all console.log
  • remove non-used code

#3002 -- OnBoarding

Create On-Boarding Slides that are shown the first time a user opens the application.

Profil Bearbeiten

  1. Fachlogik für Profil bearbeiten implementieren
  2. action implementieren
  3. benötigte DAL opetrationen implementieren

#1100 -- Dashboard / asyncSetup --- (later!)

Each time the DashboardPage is being prepared to be shown, we are calling an async setup of the AuthenticationProvider (reading the Token from the Storage and stuff). Maybe that's not the best place to make it, as the navigator visits this page quite often.
Better idea - move this to app/app.component.ts.

Update - There is a big chance that there will be a SplashScreenPage that will call this setup and jump to DashboardPage after finished, so don't move this method yet.

#2000 -- User that has a Queue Position wants to line up for a second service

  1. Check if users has a queue position:

    • by sending a GET My Queue Position request
    • or by keeping this info in the Storage:
    import { Storage } from '@ionic/storage'
    ...
    constructor(public storage: Storage){
    	// async operation with Promise return 
    	this.storage.get('isLinedUp')
    		.then(
    			(isLinedUp) => ...,
    			(couldntFind) => ...
    		)
    }
  2. Disable "Line Up" button in pages/service-single.ts

  3. Inform the user that he can not be lined up in two queues simultaneously / offer him to visit the MyQueuePositionPage (in order to cancel his first booking, if needed)

#7011 -- Consistency of Pages

Guidelines for consitent formatting of the Components (TypeScript classes):

import ionic/angular stuff;
import providers;
import other pages;
...
class {
	// declare variables used by the HTML template (ViewModel):
	shop: any;
	employees = [];
	...
	
	// constructor and lifecycle-events (chronological order):
	constructor(){}
	ionViewWillEnter(){}
	ionViewDidEnter(){}
	ionViewWillLeave(){}
	
	// ViewModel logic (working with the data)
	reloadData(){}
	registerError(){}
	checkInput(){}
	...
	
	// ViewController logic (reacting to events)
	editShop()
	showService()
	jumpToOtherPage()
}

#6001 -- Testing[Http]

I made some tests last year, but deleted them after Rewriting the Frontend, because they didn't match the new architecture.
However, you can use them as a basis for your tests: Link to old tests.
You just have to create a file ending on .spec.ts and it will be recognized as a test file by Karma.


If you wish, you can also test the functionality of the different http-providers (ShopsProvider,AuthenticationProvider ...).

#2001 -- Line Up - only when Logged In

Disable the "Line Up" button in pages/service-single.ts if the user isn't logged in:

import { AuthenticationProvider } from ...
...
isLoggedIn: bool;

constructor(public auth: AuthProvider){
}

ionViewWillEnter(){
	this.isLoggedIn = this.auth.isLoggedIn();
}

ProfilAnzeigen

  1. Fachlogik für Profil anzeigen implementieren
  2. action implementieren
  3. benötigte DAL opetrationen implementieren

#6000 -- Testing [Validator]

I made some tests last year, but deleted them after Rewriting the Frontend, because they didn't match the new architecture.
However, you can use them as a basis for your tests: Link to old tests.
You just have to create a file ending on .spec.ts and it will be recognized as a test file by Karma.


Make sure that the RegEx are working properly.

#2003 -- Lining-Up after several minutes on the page

During this time, the next available time slots could have changed on the server:

  • reload every N seconds, or:
  • send new GET Time Slots request right before Lining Up and check if the result matches the stored info; if not - inform the user that changes have been made & reload the Page / ?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.