ng-be / 2016-app-ng-be-org Goto Github PK
View Code? Open in Web Editor NEWNG-BE 2016 pwa
License: Apache License 2.0
NG-BE 2016 pwa
License: Apache License 2.0
The session item for a list should be designed properly, not just using a basic list item.
Wouldn't it be nice if we used app.ng-be.be instead of the firebase URL?
codelyzer could enforce the Angular2 styleguide. Might be a nice addition to add that.
See ng-be/app-ng-be-org#4 (comment) for the context.
Hey guys,
I was looking at your app and wanted to do some try-and-error refactoring and create a PR if I manage to refactor it.
However, It would be awesome if I could run the app using some kind of dummy data, afaik their is a call to addDemoSessions()
comment out: https://github.com/ng-be/2016-app-ng-be-org/blob/master/src/services/conference-data.service.ts#L126
However, I do not see any way to uncomment this line as the method does not exist.
Do you have any firebase test account or something I can use to populate my own firebase ?
Ps: I know the readme says to open an issue before creating a PR. But I'm okay with the PR not getting merged if you dislike it or are already working on it . :)
Thanks !
@jvandemo told us it didn't work for his iPhone. We should check this.
ionic 2 rc 4 is out, we need to update
The speaker item for a detail view should be designed properly showing:
all information about the speaker & link to his details
a link to his session
..
Currently, the app doesn't load when offline
After a session has ended, a logged in user should be able to rate the session by providing a typical 'star score' and an optional textual review.
Requirements:
Todo:
Alright, this might be a little bit hard to explain, I'll do my best :).
So yesterday, I dived more into Ionic 2. I like how easy it is to get something good looking on the screen. What I dislike however is the structure. Pages are just components, nothing more nothing less. Why? Why aren't they modules that encapsulates everything from within that page. It could even encapsulate child pages... In my opinion, that would make much more sense.
Let's give you an example.
The schedule page has quite some html in the template file. Normally, you would work with dumb components to split everything apart. For instance, the session list is written like this.
<ion-item-sliding *ngFor="let session of group.sessions" #slidingItem [attr.tag]="session.tags[0]"
[hidden]="session.hidden">
<ion-item (click)="goToSessionDetail(session)">
<h3>{{session.title}}</h3>
<p>
{{session.startDate.format('HH:mm')}} —
{{session.endDate.format('HH:mm')}}:
{{session.room.name}}
</p>
<ul class="tags">
<li *ngFor="let tag of session.tags" [attr.tag]="tag" class="tag">
{{tag}}
</li>
</ul>
<ion-icon name="bookmark" item-right color="primary" *ngIf="!session.favorite && segment ==='all'"></ion-icon>
<ion-icon name="bookmark" item-right color="secondary"
*ngIf="session.favorite && segment ==='all'"></ion-icon>
</ion-item>
<ion-item-options>
<button ion-button color="favorite" (click)="toggleFavorite(slidingItem, session)" *ngIf="segment === 'all'">
<span *ngIf="!session.favorite">Favorite session</span>
<span *ngIf="session.favorite">Defavorite session</span>
</button>
</ion-item-options>
</ion-item-sliding>
It would be much cleaner if we extracted the session item to a separate dumb component and work with a session
input or something like that.
<ion-item-sliding *ngFor="let session of group.sessions" #slidingItem [attr.tag]="session.tags[0]"
[hidden]="session.hidden">
<session-item [session]="session"></session-item>
<ion-item-options>
<button ion-button color="favorite" (click)="toggleFavorite(slidingItem, session)" *ngIf="segment === 'all'">
<span *ngIf="!session.favorite">Favorite session</span>
<span *ngIf="session.favorite">Defavorite session</span>
</button>
</ion-item-options>
</ion-item-sliding>
And embed the ion-item
component inside the session-item
.
With the current structure however, this would require us to actually bootstrap the SessionItemComponent
at the root module of our application. Dirty!
ScheduleModule
which encapsulates everything inside the schedule page. You could add services, other components, pipes, etc without having to bootstrap them at the root for everyone.import { SchedulePage } from './schedule';
@NgModule({
declarations: [
SchedulePage
],
entryComponents: [
SchedulePage
]
})
export class ScheduleModule { }
index
barrel file that exports the module and the page. We need the page so we can navigate to it.export { ScheduleModule } from './schedule.module';
export { SchedulePage } from './schedule.page';
AppModule
and remove SchedulePage
from entryComponents
.That's basically it. In my opinion, a much better separation which allows you to easily create extra dumb components in order to keep your code clean. The ConnectionService
can now be part of the ScheduleModule
(if we don't need it somewhere else) and follows the Angular 2 way of thinking.
Let me know what you think.
Favoriting can be done on:
A user should only be able to favorite when he has logged in using one of the social providers
A logged in user should be able to build up a personal schedule using favorites.
As soon as a user favorites a session, it should appear in it's own timelime/schedule.
The manifest and other PWA resources are in the root of the application src.
When building the dist not all necessary files get copied to the distributable. The task is to hook into the ionic build process to make sure all those necessary files are in the dist before uploading it to firebase.
Rating can be done on:
A user should only be able to rate a session when he has logged in using one of the social providers
I ran across this blogpost https://developers.google.com/web/updates/2016/10/navigator-share. It allows you to invoke the native share dialog on Android.
Might be to close to integrate now as we also have to subscribe for this feature to get a token. Let me know and I could have a look (or not).
Steps to reproduce:
after first login we can favorite items
when logging out and loggin back in the favorites are only shown when favoriting or defavoriting an item.
The session item for a detail view should be designed properly showing:
Update the share button en tweet button
A user should be able to login using social providers and keep a state ( of for example his schedule / favorites & rating, tbd )
In an ideal scenario, we would want these users to be 'synchronized' when they login in subsequently using different social providers. For example:
I think this matching can only be done if the used emailadresses are the same:
The following visuals need to be updated:
ionic final was released recently, update the project!
Ionic 2 can automatically render splash & icon images based on a template.
The generation for android is working, not for iOs:
Would it make sense if we hide the favorite button for let's say the continental breakfast?
The app should be updated with the current conference planning:
If you press the login button on the sessions page, the tabbed pane at the bottom is still visible. If you press the login button in the navigation drawer, this is not the case.
The speaker item for a list should be designed properly, not just using a basic list item.
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.