├── README.md ├── boring-theory-1 ├── README.md └── resources │ ├── Angular_full_color_logo.svg.png │ ├── NavMap.png │ ├── angular_ecosystem.png │ ├── angular_npmtrend.png │ ├── angular_stats.png │ ├── augury.png │ ├── boring1.png │ ├── cli.png │ ├── comeback.png │ ├── competitors.png │ ├── component_template.png │ ├── cs.png │ ├── dart.png │ ├── exam.png │ ├── header.png │ ├── ivo.png │ ├── javaA.png │ ├── jquery.png │ ├── jshistory.png │ ├── l1.jpeg │ ├── l2.jpeg │ ├── l3.jpeg │ ├── l4.jpeg │ ├── longlive.png │ ├── ngmodule.png │ ├── node.png │ ├── road.png │ ├── sad.jpg │ ├── services_components.png │ ├── ts.png │ ├── vscode.png │ └── you_are_expert.png ├── boring-theory-2 ├── README.md └── resources │ ├── boring2.png │ ├── celebration.jpg │ ├── codingtime.jpg │ ├── cubes.jpg │ ├── huges.png │ ├── mug.png │ ├── sense.png │ └── solid.png ├── lab-01 ├── README.md ├── app │ ├── .editorconfig │ ├── .gitignore │ ├── .vscode │ │ ├── extensions.json │ │ └── settings.json │ ├── README.md │ ├── angular.json │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.e2e.json │ ├── package-lock.json │ ├── package.json │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.html │ │ │ ├── app.component.scss │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── landing-page │ │ │ │ ├── landing-page.component.html │ │ │ │ ├── landing-page.component.scss │ │ │ │ ├── landing-page.component.spec.ts │ │ │ │ └── landing-page.component.ts │ │ │ └── toolbar │ │ │ │ ├── toolbar.component.html │ │ │ │ ├── toolbar.component.scss │ │ │ │ ├── toolbar.component.spec.ts │ │ │ │ └── toolbar.component.ts │ │ ├── assets │ │ │ └── .gitkeep │ │ ├── browserslist │ │ ├── environments │ │ │ ├── environment.prod.ts │ │ │ └── environment.ts │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── karma.conf.js │ │ ├── main.ts │ │ ├── polyfills.ts │ │ ├── styles.scss │ │ ├── test.ts │ │ ├── tsconfig.app.json │ │ ├── tsconfig.spec.json │ │ └── tslint.json │ ├── stylelintrc.json │ ├── tsconfig.json │ └── tslint.json └── resources │ ├── angularWelcome.png │ ├── appModule.png │ ├── codingtime.png │ ├── folderStructure.png │ ├── landingComponent.png │ ├── landingFolder.png │ ├── landingPage.png │ ├── landingPageTheme.png │ ├── landingPageToolbar.png │ ├── ngModule.PNG │ └── rootFilesStructure.png ├── lab-02 ├── README.md ├── app │ ├── .editorconfig │ ├── .gitignore │ ├── .vscode │ │ ├── extensions.json │ │ └── settings.json │ ├── README.md │ ├── angular.json │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.e2e.json │ ├── package-lock.json │ ├── package.json │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.html │ │ │ ├── app.component.scss │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── event-details │ │ │ │ ├── event-details.component.html │ │ │ │ ├── event-details.component.scss │ │ │ │ ├── event-details.component.spec.ts │ │ │ │ └── event-details.component.ts │ │ │ ├── event-list │ │ │ │ ├── event-list.component.html │ │ │ │ ├── event-list.component.scss │ │ │ │ ├── event-list.component.spec.ts │ │ │ │ └── event-list.component.ts │ │ │ ├── landing-page │ │ │ │ ├── landing-page.component.html │ │ │ │ ├── landing-page.component.scss │ │ │ │ ├── landing-page.component.spec.ts │ │ │ │ └── landing-page.component.ts │ │ │ ├── models │ │ │ │ └── event.ts │ │ │ └── toolbar │ │ │ │ ├── toolbar.component.html │ │ │ │ ├── toolbar.component.scss │ │ │ │ ├── toolbar.component.spec.ts │ │ │ │ └── toolbar.component.ts │ │ ├── assets │ │ │ └── .gitkeep │ │ ├── browserslist │ │ ├── environments │ │ │ ├── environment.prod.ts │ │ │ └── environment.ts │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── karma.conf.js │ │ ├── main.ts │ │ ├── polyfills.ts │ │ ├── styles.scss │ │ ├── test.ts │ │ ├── tsconfig.app.json │ │ ├── tsconfig.spec.json │ │ └── tslint.json │ ├── stylelintrc.json │ ├── tsconfig.json │ └── tslint.json └── resources │ ├── eventList.png │ ├── eventListDetails01.png │ ├── eventListDetails02.png │ └── eventModelFolder.png ├── lab-03 ├── README.md └── app │ ├── .editorconfig │ ├── .gitignore │ ├── .vscode │ ├── extensions.json │ └── settings.json │ ├── README.md │ ├── angular.json │ ├── e2e │ ├── protractor.conf.js │ ├── src │ │ ├── app.e2e-spec.ts │ │ └── app.po.ts │ └── tsconfig.e2e.json │ ├── package-lock.json │ ├── package.json │ ├── src │ ├── app │ │ ├── app-routing.module.ts │ │ ├── app.component.html │ │ ├── app.component.scss │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ ├── app.module.ts │ │ ├── events │ │ │ ├── event-details │ │ │ │ ├── event-details.component.html │ │ │ │ ├── event-details.component.scss │ │ │ │ ├── event-details.component.spec.ts │ │ │ │ └── event-details.component.ts │ │ │ ├── event-list │ │ │ │ ├── event-list.component.html │ │ │ │ ├── event-list.component.scss │ │ │ │ ├── event-list.component.spec.ts │ │ │ │ └── event-list.component.ts │ │ │ └── events.module.ts │ │ ├── landing-page │ │ │ ├── landing-page.component.html │ │ │ ├── landing-page.component.scss │ │ │ ├── landing-page.component.spec.ts │ │ │ └── landing-page.component.ts │ │ ├── login │ │ │ ├── login.component.html │ │ │ ├── login.component.scss │ │ │ ├── login.component.spec.ts │ │ │ ├── login.component.ts │ │ │ └── login.module.ts │ │ ├── models │ │ │ └── event.ts │ │ ├── page-not-found │ │ │ ├── page-not-found.component.html │ │ │ ├── page-not-found.component.scss │ │ │ ├── page-not-found.component.spec.ts │ │ │ └── page-not-found.component.ts │ │ ├── profile │ │ │ ├── profile.component.html │ │ │ ├── profile.component.scss │ │ │ ├── profile.component.spec.ts │ │ │ ├── profile.component.ts │ │ │ └── profile.module.ts │ │ ├── shared │ │ │ └── shared.module.ts │ │ └── toolbar │ │ │ ├── toolbar.component.html │ │ │ ├── toolbar.component.scss │ │ │ ├── toolbar.component.spec.ts │ │ │ └── toolbar.component.ts │ ├── assets │ │ └── .gitkeep │ ├── browserslist │ ├── environments │ │ ├── environment.prod.ts │ │ └── environment.ts │ ├── favicon.ico │ ├── index.html │ ├── karma.conf.js │ ├── main.ts │ ├── polyfills.ts │ ├── styles.scss │ ├── test.ts │ ├── tsconfig.app.json │ ├── tsconfig.spec.json │ └── tslint.json │ ├── stylelintrc.json │ ├── tsconfig.json │ └── tslint.json ├── lab-04 ├── README.md ├── app │ ├── .editorconfig │ ├── .gitignore │ ├── .vscode │ │ ├── extensions.json │ │ └── settings.json │ ├── README.md │ ├── angular.json │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.e2e.json │ ├── package-lock.json │ ├── package.json │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.html │ │ │ ├── app.component.scss │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── core.module.ts │ │ │ │ ├── event.service.spec.ts │ │ │ │ └── event.service.ts │ │ │ ├── events │ │ │ │ ├── event-details │ │ │ │ │ ├── event-details.component.html │ │ │ │ │ ├── event-details.component.scss │ │ │ │ │ ├── event-details.component.spec.ts │ │ │ │ │ └── event-details.component.ts │ │ │ │ ├── event-list │ │ │ │ │ ├── event-list.component.html │ │ │ │ │ ├── event-list.component.scss │ │ │ │ │ ├── event-list.component.spec.ts │ │ │ │ │ └── event-list.component.ts │ │ │ │ └── events.module.ts │ │ │ ├── landing-page │ │ │ │ ├── landing-page.component.html │ │ │ │ ├── landing-page.component.scss │ │ │ │ ├── landing-page.component.spec.ts │ │ │ │ └── landing-page.component.ts │ │ │ ├── login │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.scss │ │ │ │ ├── login.component.spec.ts │ │ │ │ ├── login.component.ts │ │ │ │ └── login.module.ts │ │ │ ├── models │ │ │ │ └── event.ts │ │ │ ├── page-not-found │ │ │ │ ├── page-not-found.component.html │ │ │ │ ├── page-not-found.component.scss │ │ │ │ ├── page-not-found.component.spec.ts │ │ │ │ └── page-not-found.component.ts │ │ │ ├── profile │ │ │ │ ├── profile.component.html │ │ │ │ ├── profile.component.scss │ │ │ │ ├── profile.component.spec.ts │ │ │ │ ├── profile.component.ts │ │ │ │ └── profile.module.ts │ │ │ ├── shared │ │ │ │ └── shared.module.ts │ │ │ └── toolbar │ │ │ │ ├── toolbar.component.html │ │ │ │ ├── toolbar.component.scss │ │ │ │ ├── toolbar.component.spec.ts │ │ │ │ └── toolbar.component.ts │ │ ├── assets │ │ │ ├── .gitkeep │ │ │ └── events.json │ │ ├── browserslist │ │ ├── environments │ │ │ ├── environment.prod.ts │ │ │ └── environment.ts │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── karma.conf.js │ │ ├── main.ts │ │ ├── polyfills.ts │ │ ├── styles.scss │ │ ├── test.ts │ │ ├── tsconfig.app.json │ │ ├── tsconfig.spec.json │ │ └── tslint.json │ ├── stylelintrc.json │ ├── tsconfig.json │ └── tslint.json ├── db.json └── resources │ ├── dependency-injection.png │ └── jsonServerRunning.png ├── lab-05 ├── README.md ├── app │ ├── .editorconfig │ ├── .gitignore │ ├── .vscode │ │ ├── extensions.json │ │ └── settings.json │ ├── README.md │ ├── angular.json │ ├── db.json │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.e2e.json │ ├── package-lock.json │ ├── package.json │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.html │ │ │ ├── app.component.scss │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── core.module.ts │ │ │ │ ├── event.service.spec.ts │ │ │ │ ├── event.service.ts │ │ │ │ └── user.service.ts │ │ │ ├── events │ │ │ │ ├── add-edit-event │ │ │ │ │ ├── add-edit-event.component.html │ │ │ │ │ ├── add-edit-event.component.scss │ │ │ │ │ ├── add-edit-event.component.spec.ts │ │ │ │ │ └── add-edit-event.component.ts │ │ │ │ ├── event-details │ │ │ │ │ ├── event-details.component.html │ │ │ │ │ ├── event-details.component.scss │ │ │ │ │ ├── event-details.component.spec.ts │ │ │ │ │ └── event-details.component.ts │ │ │ │ ├── event-list │ │ │ │ │ ├── event-list.component.html │ │ │ │ │ ├── event-list.component.scss │ │ │ │ │ ├── event-list.component.spec.ts │ │ │ │ │ └── event-list.component.ts │ │ │ │ └── events.module.ts │ │ │ ├── landing-page │ │ │ │ ├── landing-page.component.html │ │ │ │ ├── landing-page.component.scss │ │ │ │ ├── landing-page.component.spec.ts │ │ │ │ └── landing-page.component.ts │ │ │ ├── login │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.scss │ │ │ │ ├── login.component.spec.ts │ │ │ │ ├── login.component.ts │ │ │ │ ├── login.module.ts │ │ │ │ └── signup │ │ │ │ │ ├── signup.component.html │ │ │ │ │ ├── signup.component.scss │ │ │ │ │ ├── signup.component.spec.ts │ │ │ │ │ └── signup.component.ts │ │ │ ├── models │ │ │ │ ├── event.ts │ │ │ │ └── user.ts │ │ │ ├── page-not-found │ │ │ │ ├── page-not-found.component.html │ │ │ │ ├── page-not-found.component.scss │ │ │ │ ├── page-not-found.component.spec.ts │ │ │ │ └── page-not-found.component.ts │ │ │ ├── profile │ │ │ │ ├── profile.component.html │ │ │ │ ├── profile.component.scss │ │ │ │ ├── profile.component.spec.ts │ │ │ │ ├── profile.component.ts │ │ │ │ └── profile.module.ts │ │ │ ├── shared │ │ │ │ └── shared.module.ts │ │ │ └── toolbar │ │ │ │ ├── toolbar.component.html │ │ │ │ ├── toolbar.component.scss │ │ │ │ ├── toolbar.component.spec.ts │ │ │ │ └── toolbar.component.ts │ │ ├── assets │ │ │ ├── .gitkeep │ │ │ └── events.json │ │ ├── browserslist │ │ ├── environments │ │ │ ├── environment.prod.ts │ │ │ └── environment.ts │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── karma.conf.js │ │ ├── main.ts │ │ ├── polyfills.ts │ │ ├── styles.scss │ │ ├── test.ts │ │ ├── tsconfig.app.json │ │ ├── tsconfig.spec.json │ │ └── tslint.json │ ├── stylelintrc.json │ ├── tsconfig.json │ └── tslint.json └── resources │ ├── logged-in.png │ ├── logged-out.png │ ├── profile-view.png │ └── signup_link.png ├── lab-06 ├── README.md ├── app │ ├── .editorconfig │ ├── .gitignore │ ├── .vscode │ │ ├── extensions.json │ │ └── settings.json │ ├── README.md │ ├── angular.json │ ├── db.json │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.e2e.json │ ├── package-lock.json │ ├── package.json │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.html │ │ │ ├── app.component.scss │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── app.store.ts │ │ │ ├── core │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── core.module.ts │ │ │ │ ├── event.service.spec.ts │ │ │ │ ├── event.service.ts │ │ │ │ └── user.service.ts │ │ │ ├── events │ │ │ │ ├── add-edit-event │ │ │ │ │ ├── add-edit-event.component.html │ │ │ │ │ ├── add-edit-event.component.scss │ │ │ │ │ ├── add-edit-event.component.spec.ts │ │ │ │ │ └── add-edit-event.component.ts │ │ │ │ ├── event-details │ │ │ │ │ ├── event-details.component.html │ │ │ │ │ ├── event-details.component.scss │ │ │ │ │ ├── event-details.component.spec.ts │ │ │ │ │ └── event-details.component.ts │ │ │ │ ├── event-list │ │ │ │ │ ├── event-list.component.html │ │ │ │ │ ├── event-list.component.scss │ │ │ │ │ ├── event-list.component.spec.ts │ │ │ │ │ └── event-list.component.ts │ │ │ │ └── events.module.ts │ │ │ ├── landing-page │ │ │ │ ├── landing-page.component.html │ │ │ │ ├── landing-page.component.scss │ │ │ │ ├── landing-page.component.spec.ts │ │ │ │ └── landing-page.component.ts │ │ │ ├── login │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.scss │ │ │ │ ├── login.component.spec.ts │ │ │ │ ├── login.component.ts │ │ │ │ ├── login.module.ts │ │ │ │ └── signup │ │ │ │ │ ├── signup.component.html │ │ │ │ │ ├── signup.component.scss │ │ │ │ │ ├── signup.component.spec.ts │ │ │ │ │ └── signup.component.ts │ │ │ ├── models │ │ │ │ ├── event.ts │ │ │ │ └── user.ts │ │ │ ├── page-not-found │ │ │ │ ├── page-not-found.component.html │ │ │ │ ├── page-not-found.component.scss │ │ │ │ ├── page-not-found.component.spec.ts │ │ │ │ └── page-not-found.component.ts │ │ │ ├── profile │ │ │ │ ├── profile.component.html │ │ │ │ ├── profile.component.scss │ │ │ │ ├── profile.component.spec.ts │ │ │ │ ├── profile.component.ts │ │ │ │ └── profile.module.ts │ │ │ ├── shared │ │ │ │ └── shared.module.ts │ │ │ ├── store │ │ │ │ ├── layout │ │ │ │ │ ├── layout.actions.ts │ │ │ │ │ ├── layout.effects.ts │ │ │ │ │ └── layout.redux.ts │ │ │ │ └── login │ │ │ │ │ ├── login.actions.ts │ │ │ │ │ └── login.redux.ts │ │ │ └── toolbar │ │ │ │ ├── toolbar.component.html │ │ │ │ ├── toolbar.component.scss │ │ │ │ ├── toolbar.component.spec.ts │ │ │ │ └── toolbar.component.ts │ │ ├── assets │ │ │ ├── .gitkeep │ │ │ └── events.json │ │ ├── browserslist │ │ ├── environments │ │ │ ├── environment.prod.ts │ │ │ └── environment.ts │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── karma.conf.js │ │ ├── main.ts │ │ ├── polyfills.ts │ │ ├── styles.scss │ │ ├── test.ts │ │ ├── tsconfig.app.json │ │ ├── tsconfig.spec.json │ │ └── tslint.json │ ├── stylelintrc.json │ ├── tsconfig.json │ └── tslint.json └── resources │ ├── CentralState.png │ ├── CentralStateEffects.png │ ├── breadcrumbs.jpg │ └── new_structure_store.png ├── lab-07 ├── README.md ├── app │ ├── .editorconfig │ ├── .gitignore │ ├── .vscode │ │ ├── extensions.json │ │ └── settings.json │ ├── README.md │ ├── angular.json │ ├── db.json │ ├── dist │ │ └── open-events-front │ │ │ ├── 3rdpartylicenses.txt │ │ │ ├── assets │ │ │ ├── events.json │ │ │ ├── fonts │ │ │ │ └── graphik │ │ │ │ │ ├── Graphik-Black.eot │ │ │ │ │ ├── Graphik-Black.svg │ │ │ │ │ ├── Graphik-Black.woff │ │ │ │ │ ├── Graphik-Black.woff2 │ │ │ │ │ ├── Graphik-Bold.eot │ │ │ │ │ ├── Graphik-Bold.svg │ │ │ │ │ ├── Graphik-Bold.woff │ │ │ │ │ ├── Graphik-Bold.woff2 │ │ │ │ │ ├── Graphik-Extralight.eot │ │ │ │ │ ├── Graphik-Extralight.svg │ │ │ │ │ ├── Graphik-Extralight.woff │ │ │ │ │ ├── Graphik-Extralight.woff2 │ │ │ │ │ ├── Graphik-Light.eot │ │ │ │ │ ├── Graphik-Light.svg │ │ │ │ │ ├── Graphik-Light.woff │ │ │ │ │ ├── Graphik-Light.woff2 │ │ │ │ │ ├── Graphik-Medium.eot │ │ │ │ │ ├── Graphik-Medium.svg │ │ │ │ │ ├── Graphik-Medium.woff │ │ │ │ │ ├── Graphik-Medium.woff2 │ │ │ │ │ ├── Graphik-Regular.eot │ │ │ │ │ ├── Graphik-Regular.svg │ │ │ │ │ ├── Graphik-Regular.woff │ │ │ │ │ ├── Graphik-Regular.woff2 │ │ │ │ │ ├── Graphik-RegularItalic.eot │ │ │ │ │ ├── Graphik-RegularItalic.svg │ │ │ │ │ ├── Graphik-RegularItalic.woff │ │ │ │ │ ├── Graphik-RegularItalic.woff2 │ │ │ │ │ ├── Graphik-Semibold.eot │ │ │ │ │ ├── Graphik-Semibold.svg │ │ │ │ │ ├── Graphik-Semibold.woff │ │ │ │ │ ├── Graphik-Semibold.woff2 │ │ │ │ │ ├── Graphik-Super.eot │ │ │ │ │ ├── Graphik-Super.svg │ │ │ │ │ ├── Graphik-Super.woff │ │ │ │ │ ├── Graphik-Super.woff2 │ │ │ │ │ ├── Graphik-Thin.eot │ │ │ │ │ ├── Graphik-Thin.svg │ │ │ │ │ ├── Graphik-Thin.woff │ │ │ │ │ └── Graphik-Thin.woff2 │ │ │ └── imgs │ │ │ │ ├── logo_open_eng.png │ │ │ │ ├── patt1.png │ │ │ │ ├── patt2.png │ │ │ │ ├── patt3.png │ │ │ │ ├── patt4.png │ │ │ │ └── patt5.png │ │ │ ├── es2015-polyfills.c5dd28b362270c767b34.js │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.0b684b9c5f97fc8dca23.js │ │ │ ├── polyfills.8bbb231b43165d65d357.js │ │ │ ├── runtime.26209474bfa8dc87a77c.js │ │ │ └── styles.7ce36399ae365cd311e0.css │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.e2e.json │ ├── package-lock.json │ ├── package.json │ ├── server.js │ ├── src │ │ ├── app │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.html │ │ │ ├── app.component.scss │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── app.store.ts │ │ │ ├── core │ │ │ │ ├── auth-guard.service.ts │ │ │ │ ├── core.module.ts │ │ │ │ ├── event.service.spec.ts │ │ │ │ ├── event.service.ts │ │ │ │ ├── images.service.ts │ │ │ │ └── user.service.ts │ │ │ ├── events │ │ │ │ ├── add-edit-event │ │ │ │ │ ├── add-edit-event.component.html │ │ │ │ │ ├── add-edit-event.component.scss │ │ │ │ │ ├── add-edit-event.component.spec.ts │ │ │ │ │ └── add-edit-event.component.ts │ │ │ │ ├── event-details │ │ │ │ │ ├── event-details.component.html │ │ │ │ │ ├── event-details.component.scss │ │ │ │ │ ├── event-details.component.spec.ts │ │ │ │ │ └── event-details.component.ts │ │ │ │ ├── event-list │ │ │ │ │ ├── event-list.component.html │ │ │ │ │ ├── event-list.component.scss │ │ │ │ │ ├── event-list.component.spec.ts │ │ │ │ │ └── event-list.component.ts │ │ │ │ └── events.module.ts │ │ │ ├── landing-page │ │ │ │ ├── landing-page.component.html │ │ │ │ ├── landing-page.component.scss │ │ │ │ ├── landing-page.component.spec.ts │ │ │ │ └── landing-page.component.ts │ │ │ ├── login │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.scss │ │ │ │ ├── login.component.spec.ts │ │ │ │ ├── login.component.ts │ │ │ │ ├── login.module.ts │ │ │ │ └── signup │ │ │ │ │ ├── signup.component.html │ │ │ │ │ ├── signup.component.scss │ │ │ │ │ ├── signup.component.spec.ts │ │ │ │ │ └── signup.component.ts │ │ │ ├── models │ │ │ │ ├── event.ts │ │ │ │ └── user.ts │ │ │ ├── page-not-found │ │ │ │ ├── page-not-found.component.html │ │ │ │ ├── page-not-found.component.scss │ │ │ │ ├── page-not-found.component.spec.ts │ │ │ │ └── page-not-found.component.ts │ │ │ ├── profile │ │ │ │ ├── profile.component.html │ │ │ │ ├── profile.component.scss │ │ │ │ ├── profile.component.spec.ts │ │ │ │ ├── profile.component.ts │ │ │ │ └── profile.module.ts │ │ │ ├── shared │ │ │ │ ├── shared.module.ts │ │ │ │ └── styles │ │ │ │ │ ├── colors.scss │ │ │ │ │ ├── fonts.scss │ │ │ │ │ ├── material.scss │ │ │ │ │ └── variables.scss │ │ │ ├── store │ │ │ │ ├── layout │ │ │ │ │ ├── layout.actions.ts │ │ │ │ │ ├── layout.effects.ts │ │ │ │ │ └── layout.redux.ts │ │ │ │ └── login │ │ │ │ │ ├── login.actions.ts │ │ │ │ │ └── login.redux.ts │ │ │ └── toolbar │ │ │ │ ├── toolbar.component.html │ │ │ │ ├── toolbar.component.scss │ │ │ │ ├── toolbar.component.spec.ts │ │ │ │ └── toolbar.component.ts │ │ ├── assets │ │ │ ├── .gitkeep │ │ │ ├── events.json │ │ │ ├── fonts │ │ │ │ └── graphik │ │ │ │ │ ├── Graphik-Black.eot │ │ │ │ │ ├── Graphik-Black.svg │ │ │ │ │ ├── Graphik-Black.woff │ │ │ │ │ ├── Graphik-Black.woff2 │ │ │ │ │ ├── Graphik-Bold.eot │ │ │ │ │ ├── Graphik-Bold.svg │ │ │ │ │ ├── Graphik-Bold.woff │ │ │ │ │ ├── Graphik-Bold.woff2 │ │ │ │ │ ├── Graphik-Extralight.eot │ │ │ │ │ ├── Graphik-Extralight.svg │ │ │ │ │ ├── Graphik-Extralight.woff │ │ │ │ │ ├── Graphik-Extralight.woff2 │ │ │ │ │ ├── Graphik-Light.eot │ │ │ │ │ ├── Graphik-Light.svg │ │ │ │ │ ├── Graphik-Light.woff │ │ │ │ │ ├── Graphik-Light.woff2 │ │ │ │ │ ├── Graphik-Medium.eot │ │ │ │ │ ├── Graphik-Medium.svg │ │ │ │ │ ├── Graphik-Medium.woff │ │ │ │ │ ├── Graphik-Medium.woff2 │ │ │ │ │ ├── Graphik-Regular.eot │ │ │ │ │ ├── Graphik-Regular.svg │ │ │ │ │ ├── Graphik-Regular.woff │ │ │ │ │ ├── Graphik-Regular.woff2 │ │ │ │ │ ├── Graphik-RegularItalic.eot │ │ │ │ │ ├── Graphik-RegularItalic.svg │ │ │ │ │ ├── Graphik-RegularItalic.woff │ │ │ │ │ ├── Graphik-RegularItalic.woff2 │ │ │ │ │ ├── Graphik-Semibold.eot │ │ │ │ │ ├── Graphik-Semibold.svg │ │ │ │ │ ├── Graphik-Semibold.woff │ │ │ │ │ ├── Graphik-Semibold.woff2 │ │ │ │ │ ├── Graphik-Super.eot │ │ │ │ │ ├── Graphik-Super.svg │ │ │ │ │ ├── Graphik-Super.woff │ │ │ │ │ ├── Graphik-Super.woff2 │ │ │ │ │ ├── Graphik-Thin.eot │ │ │ │ │ ├── Graphik-Thin.svg │ │ │ │ │ ├── Graphik-Thin.woff │ │ │ │ │ └── Graphik-Thin.woff2 │ │ │ └── imgs │ │ │ │ ├── logo_open_eng.png │ │ │ │ ├── patt1.png │ │ │ │ ├── patt2.png │ │ │ │ ├── patt3.png │ │ │ │ ├── patt4.png │ │ │ │ └── patt5.png │ │ ├── browserslist │ │ ├── environments │ │ │ ├── environment.prod.ts │ │ │ └── environment.ts │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── karma.conf.js │ │ ├── main.ts │ │ ├── polyfills.ts │ │ ├── styles.scss │ │ ├── test.ts │ │ ├── tsconfig.app.json │ │ ├── tsconfig.spec.json │ │ └── tslint.json │ ├── stylelintrc.json │ ├── tsconfig.json │ └── tslint.json └── resources │ ├── 01_Landing_page.jpg │ ├── 02_Events.jpg │ ├── 03_Event_details.jpg │ ├── 04_Event_add.jpg │ ├── bash-ec2.png │ ├── ec2-dashboard.png │ ├── launch-instance.png │ └── oef.png └── openathon_day ├── README.md ├── task01-ReactiveForms └── README.md └── task02-animations └── README.md /boring-theory-1/resources/Angular_full_color_logo.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/boring-theory-1/resources/Angular_full_color_logo.svg.png -------------------------------------------------------------------------------- /boring-theory-1/resources/NavMap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/boring-theory-1/resources/NavMap.png -------------------------------------------------------------------------------- /boring-theory-1/resources/angular_ecosystem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/boring-theory-1/resources/angular_ecosystem.png -------------------------------------------------------------------------------- /boring-theory-1/resources/angular_npmtrend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/boring-theory-1/resources/angular_npmtrend.png -------------------------------------------------------------------------------- /boring-theory-1/resources/angular_stats.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/boring-theory-1/resources/angular_stats.png -------------------------------------------------------------------------------- /boring-theory-1/resources/augury.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/boring-theory-1/resources/augury.png -------------------------------------------------------------------------------- /boring-theory-1/resources/boring1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/boring-theory-1/resources/boring1.png -------------------------------------------------------------------------------- /boring-theory-1/resources/cli.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/boring-theory-1/resources/cli.png -------------------------------------------------------------------------------- /boring-theory-1/resources/comeback.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/boring-theory-1/resources/comeback.png -------------------------------------------------------------------------------- /boring-theory-1/resources/competitors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/boring-theory-1/resources/competitors.png -------------------------------------------------------------------------------- /boring-theory-1/resources/component_template.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/boring-theory-1/resources/component_template.png -------------------------------------------------------------------------------- /boring-theory-1/resources/cs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/boring-theory-1/resources/cs.png -------------------------------------------------------------------------------- /boring-theory-1/resources/dart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/boring-theory-1/resources/dart.png -------------------------------------------------------------------------------- /boring-theory-1/resources/exam.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/boring-theory-1/resources/exam.png -------------------------------------------------------------------------------- /boring-theory-1/resources/header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/boring-theory-1/resources/header.png -------------------------------------------------------------------------------- /boring-theory-1/resources/ivo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/boring-theory-1/resources/ivo.png -------------------------------------------------------------------------------- /boring-theory-1/resources/javaA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/boring-theory-1/resources/javaA.png -------------------------------------------------------------------------------- /boring-theory-1/resources/jquery.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/boring-theory-1/resources/jquery.png -------------------------------------------------------------------------------- /boring-theory-1/resources/jshistory.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/boring-theory-1/resources/jshistory.png -------------------------------------------------------------------------------- /boring-theory-1/resources/l1.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/boring-theory-1/resources/l1.jpeg -------------------------------------------------------------------------------- /boring-theory-1/resources/l2.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/boring-theory-1/resources/l2.jpeg -------------------------------------------------------------------------------- /boring-theory-1/resources/l3.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/boring-theory-1/resources/l3.jpeg -------------------------------------------------------------------------------- /boring-theory-1/resources/l4.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/boring-theory-1/resources/l4.jpeg -------------------------------------------------------------------------------- /boring-theory-1/resources/longlive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/boring-theory-1/resources/longlive.png -------------------------------------------------------------------------------- /boring-theory-1/resources/ngmodule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/boring-theory-1/resources/ngmodule.png -------------------------------------------------------------------------------- /boring-theory-1/resources/node.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/boring-theory-1/resources/node.png -------------------------------------------------------------------------------- /boring-theory-1/resources/road.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/boring-theory-1/resources/road.png -------------------------------------------------------------------------------- /boring-theory-1/resources/sad.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/boring-theory-1/resources/sad.jpg -------------------------------------------------------------------------------- /boring-theory-1/resources/services_components.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/boring-theory-1/resources/services_components.png -------------------------------------------------------------------------------- /boring-theory-1/resources/ts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/boring-theory-1/resources/ts.png -------------------------------------------------------------------------------- /boring-theory-1/resources/vscode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/boring-theory-1/resources/vscode.png -------------------------------------------------------------------------------- /boring-theory-1/resources/you_are_expert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/boring-theory-1/resources/you_are_expert.png -------------------------------------------------------------------------------- /boring-theory-2/resources/boring2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/boring-theory-2/resources/boring2.png -------------------------------------------------------------------------------- /boring-theory-2/resources/celebration.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/boring-theory-2/resources/celebration.jpg -------------------------------------------------------------------------------- /boring-theory-2/resources/codingtime.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/boring-theory-2/resources/codingtime.jpg -------------------------------------------------------------------------------- /boring-theory-2/resources/cubes.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/boring-theory-2/resources/cubes.jpg -------------------------------------------------------------------------------- /boring-theory-2/resources/huges.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/boring-theory-2/resources/huges.png -------------------------------------------------------------------------------- /boring-theory-2/resources/mug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/boring-theory-2/resources/mug.png -------------------------------------------------------------------------------- /boring-theory-2/resources/sense.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/boring-theory-2/resources/sense.png -------------------------------------------------------------------------------- /boring-theory-2/resources/solid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/boring-theory-2/resources/solid.png -------------------------------------------------------------------------------- /lab-01/app/.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see https://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | max_line_length = off 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /lab-01/app/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "johnpapa.angular-essentials", 4 | "PKief.material-icon-theme", 5 | "rbbit.typescript-hero" 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /lab-01/app/e2e/src/app.e2e-spec.ts: -------------------------------------------------------------------------------- 1 | import { AppPage } from './app.po'; 2 | import { browser, logging } from 'protractor'; 3 | 4 | describe('workspace-project App', () => { 5 | let page: AppPage; 6 | 7 | beforeEach(() => { 8 | page = new AppPage(); 9 | }); 10 | 11 | it('should display welcome message', () => { 12 | page.navigateTo(); 13 | expect(page.getTitleText()).toEqual('Welcome to open-events-front!'); 14 | }); 15 | 16 | afterEach(async () => { 17 | // Assert that there are no errors emitted from the browser 18 | const logs = await browser.manage().logs().get(logging.Type.BROWSER); 19 | expect(logs).not.toContain(jasmine.objectContaining({ 20 | level: logging.Level.SEVERE, 21 | } as logging.Entry)); 22 | }); 23 | }); 24 | -------------------------------------------------------------------------------- /lab-01/app/e2e/src/app.po.ts: -------------------------------------------------------------------------------- 1 | import { browser, by, element } from 'protractor'; 2 | 3 | export class AppPage { 4 | navigateTo() { 5 | return browser.get(browser.baseUrl) as Promise; 6 | } 7 | 8 | getTitleText() { 9 | return element(by.css('oevents-root h1')).getText() as Promise; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /lab-01/app/e2e/tsconfig.e2e.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/app", 5 | "module": "commonjs", 6 | "target": "es5", 7 | "types": [ 8 | "jasmine", 9 | "jasminewd2", 10 | "node" 11 | ] 12 | } 13 | } -------------------------------------------------------------------------------- /lab-01/app/src/app/app-routing.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from "@angular/core"; 2 | import { Routes, RouterModule } from "@angular/router"; 3 | 4 | const routes: Routes = []; 5 | 6 | @NgModule({ 7 | imports: [RouterModule.forRoot(routes)], 8 | exports: [RouterModule] 9 | }) 10 | export class AppRoutingModule {} 11 | -------------------------------------------------------------------------------- /lab-01/app/src/app/app.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 |
-------------------------------------------------------------------------------- /lab-01/app/src/app/app.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-01/app/src/app/app.component.scss -------------------------------------------------------------------------------- /lab-01/app/src/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'oevents-root', 5 | templateUrl: './app.component.html', 6 | styleUrls: ['./app.component.scss'] 7 | }) 8 | export class AppComponent { 9 | title = 'open-events-front'; 10 | } 11 | -------------------------------------------------------------------------------- /lab-01/app/src/app/landing-page/landing-page.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |

Open Events App

4 |
5 | 6 |
7 |

All our events

8 |
9 | 10 |
11 |

12 | A new and fresh application to host all our tech events crafted from 13 | Accenture Openathons 14 |

15 |
16 |
17 | -------------------------------------------------------------------------------- /lab-01/app/src/app/landing-page/landing-page.component.scss: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | flex-flow: column; 4 | text-align: center; 5 | } 6 | 7 | .title, 8 | .subtitle, 9 | .message { 10 | padding: 1rem; 11 | } 12 | 13 | .title { 14 | color: #8bc34a; 15 | } 16 | 17 | .subtitle { 18 | } 19 | 20 | .message { 21 | } 22 | -------------------------------------------------------------------------------- /lab-01/app/src/app/landing-page/landing-page.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'oevents-landing-page', 5 | templateUrl: './landing-page.component.html', 6 | styleUrls: ['./landing-page.component.scss'] 7 | }) 8 | export class LandingPageComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /lab-01/app/src/app/toolbar/toolbar.component.html: -------------------------------------------------------------------------------- 1 | 2 | Home 3 | Events 4 | Profile 5 | Login 6 | -------------------------------------------------------------------------------- /lab-01/app/src/app/toolbar/toolbar.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-01/app/src/app/toolbar/toolbar.component.scss -------------------------------------------------------------------------------- /lab-01/app/src/app/toolbar/toolbar.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { ToolbarComponent } from './toolbar.component'; 4 | 5 | describe('ToolbarComponent', () => { 6 | let component: ToolbarComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ ToolbarComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(ToolbarComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /lab-01/app/src/app/toolbar/toolbar.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'oevents-toolbar', 5 | templateUrl: './toolbar.component.html', 6 | styleUrls: ['./toolbar.component.scss'] 7 | }) 8 | export class ToolbarComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /lab-01/app/src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-01/app/src/assets/.gitkeep -------------------------------------------------------------------------------- /lab-01/app/src/browserslist: -------------------------------------------------------------------------------- 1 | # This file is currently used by autoprefixer to adjust CSS to support the below specified browsers 2 | # For additional information regarding the format and rule options, please see: 3 | # https://github.com/browserslist/browserslist#queries 4 | # 5 | # For IE 9-11 support, please remove 'not' from the last line of the file and adjust as needed 6 | 7 | > 0.5% 8 | last 2 versions 9 | Firefox ESR 10 | not dead 11 | not IE 9-11 -------------------------------------------------------------------------------- /lab-01/app/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /lab-01/app/src/environments/environment.ts: -------------------------------------------------------------------------------- 1 | // This file can be replaced during build by using the `fileReplacements` array. 2 | // `ng build --prod` replaces `environment.ts` with `environment.prod.ts`. 3 | // The list of file replacements can be found in `angular.json`. 4 | 5 | export const environment = { 6 | production: false 7 | }; 8 | 9 | /* 10 | * For easier debugging in development mode, you can import the following file 11 | * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. 12 | * 13 | * This import should be commented out in production mode because it will have a negative impact 14 | * on performance if an error is thrown. 15 | */ 16 | // import 'zone.js/dist/zone-error'; // Included with Angular CLI. 17 | -------------------------------------------------------------------------------- /lab-01/app/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-01/app/src/favicon.ico -------------------------------------------------------------------------------- /lab-01/app/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | OpenEventsFront 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /lab-01/app/src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic().bootstrapModule(AppModule) 12 | .catch(err => console.error(err)); 13 | -------------------------------------------------------------------------------- /lab-01/app/src/styles.scss: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | @import '@angular/material/prebuilt-themes/indigo-pink.css'; -------------------------------------------------------------------------------- /lab-01/app/src/test.ts: -------------------------------------------------------------------------------- 1 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files 2 | 3 | import 'zone.js/dist/zone-testing'; 4 | import { getTestBed } from '@angular/core/testing'; 5 | import { 6 | BrowserDynamicTestingModule, 7 | platformBrowserDynamicTesting 8 | } from '@angular/platform-browser-dynamic/testing'; 9 | 10 | declare const require: any; 11 | 12 | // First, initialize the Angular testing environment. 13 | getTestBed().initTestEnvironment( 14 | BrowserDynamicTestingModule, 15 | platformBrowserDynamicTesting() 16 | ); 17 | // Then we find all the tests. 18 | const context = require.context('./', true, /\.spec\.ts$/); 19 | // And load the modules. 20 | context.keys().map(context); 21 | -------------------------------------------------------------------------------- /lab-01/app/src/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/app", 5 | "types": [] 6 | }, 7 | "exclude": [ 8 | "test.ts", 9 | "**/*.spec.ts" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /lab-01/app/src/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/spec", 5 | "types": [ 6 | "jasmine", 7 | "node" 8 | ] 9 | }, 10 | "files": [ 11 | "test.ts", 12 | "polyfills.ts" 13 | ], 14 | "include": [ 15 | "**/*.spec.ts", 16 | "**/*.d.ts" 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /lab-01/app/src/tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tslint.json", 3 | "rules": { 4 | "directive-selector": [ 5 | true, 6 | "attribute", 7 | "oevents", 8 | "camelCase" 9 | ], 10 | "component-selector": [ 11 | true, 12 | "element", 13 | "oevents", 14 | "kebab-case" 15 | ] 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /lab-01/app/stylelintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "stylelint-config-standard", 3 | "rules": { 4 | "at-rule-no-unknown": [true, 5 | "ignoreAtRules": ["include"] 6 | ], 7 | "at-rule-no-vendor-prefix": true, 8 | "declaration-no-important": true, 9 | "font-family-name-quotes": "always-where-recommended", 10 | "function-url-quotes": "always", 11 | "max-nesting-depth": 2, 12 | "media-feature-name-no-vendor-prefix": true, 13 | "property-no-vendor-prefix": true, 14 | "property-no-unknown": true, 15 | "selector-attribute-quotes": "always", 16 | "selector-max-compound-selectors": 4, 17 | "selector-no-vendor-prefix": true, 18 | "unit-whitelist": ["px", "%", "deg", "ms", "s", "rem", "vh", "vw"], 19 | "value-no-vendor-prefix": true 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /lab-01/app/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compileOnSave": false, 3 | "compilerOptions": { 4 | "baseUrl": "./", 5 | "outDir": "./dist/out-tsc", 6 | "sourceMap": true, 7 | "declaration": false, 8 | "module": "es2015", 9 | "moduleResolution": "node", 10 | "emitDecoratorMetadata": true, 11 | "experimentalDecorators": true, 12 | "importHelpers": true, 13 | "target": "es5", 14 | "typeRoots": [ 15 | "node_modules/@types" 16 | ], 17 | "lib": [ 18 | "es2018", 19 | "dom" 20 | ] 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /lab-01/resources/angularWelcome.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-01/resources/angularWelcome.png -------------------------------------------------------------------------------- /lab-01/resources/appModule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-01/resources/appModule.png -------------------------------------------------------------------------------- /lab-01/resources/codingtime.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-01/resources/codingtime.png -------------------------------------------------------------------------------- /lab-01/resources/folderStructure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-01/resources/folderStructure.png -------------------------------------------------------------------------------- /lab-01/resources/landingComponent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-01/resources/landingComponent.png -------------------------------------------------------------------------------- /lab-01/resources/landingFolder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-01/resources/landingFolder.png -------------------------------------------------------------------------------- /lab-01/resources/landingPage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-01/resources/landingPage.png -------------------------------------------------------------------------------- /lab-01/resources/landingPageTheme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-01/resources/landingPageTheme.png -------------------------------------------------------------------------------- /lab-01/resources/landingPageToolbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-01/resources/landingPageToolbar.png -------------------------------------------------------------------------------- /lab-01/resources/ngModule.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-01/resources/ngModule.PNG -------------------------------------------------------------------------------- /lab-01/resources/rootFilesStructure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-01/resources/rootFilesStructure.png -------------------------------------------------------------------------------- /lab-02/app/.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see https://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | max_line_length = off 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /lab-02/app/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "johnpapa.angular-essentials", 4 | "PKief.material-icon-theme", 5 | "rbbit.typescript-hero" 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /lab-02/app/e2e/src/app.e2e-spec.ts: -------------------------------------------------------------------------------- 1 | import { AppPage } from './app.po'; 2 | import { browser, logging } from 'protractor'; 3 | 4 | describe('workspace-project App', () => { 5 | let page: AppPage; 6 | 7 | beforeEach(() => { 8 | page = new AppPage(); 9 | }); 10 | 11 | it('should display welcome message', () => { 12 | page.navigateTo(); 13 | expect(page.getTitleText()).toEqual('Welcome to open-events-front!'); 14 | }); 15 | 16 | afterEach(async () => { 17 | // Assert that there are no errors emitted from the browser 18 | const logs = await browser.manage().logs().get(logging.Type.BROWSER); 19 | expect(logs).not.toContain(jasmine.objectContaining({ 20 | level: logging.Level.SEVERE, 21 | } as logging.Entry)); 22 | }); 23 | }); 24 | -------------------------------------------------------------------------------- /lab-02/app/e2e/src/app.po.ts: -------------------------------------------------------------------------------- 1 | import { browser, by, element } from 'protractor'; 2 | 3 | export class AppPage { 4 | navigateTo() { 5 | return browser.get(browser.baseUrl) as Promise; 6 | } 7 | 8 | getTitleText() { 9 | return element(by.css('oevents-root h1')).getText() as Promise; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /lab-02/app/e2e/tsconfig.e2e.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/app", 5 | "module": "commonjs", 6 | "target": "es5", 7 | "types": [ 8 | "jasmine", 9 | "jasminewd2", 10 | "node" 11 | ] 12 | } 13 | } -------------------------------------------------------------------------------- /lab-02/app/src/app/app-routing.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from "@angular/core"; 2 | import { Routes, RouterModule } from "@angular/router"; 3 | 4 | const routes: Routes = []; 5 | 6 | @NgModule({ 7 | imports: [RouterModule.forRoot(routes)], 8 | exports: [RouterModule] 9 | }) 10 | export class AppRoutingModule {} 11 | -------------------------------------------------------------------------------- /lab-02/app/src/app/app.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 |
-------------------------------------------------------------------------------- /lab-02/app/src/app/app.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-02/app/src/app/app.component.scss -------------------------------------------------------------------------------- /lab-02/app/src/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'oevents-root', 5 | templateUrl: './app.component.html', 6 | styleUrls: ['./app.component.scss'] 7 | }) 8 | export class AppComponent { 9 | title = 'open-events-front'; 10 | } 11 | -------------------------------------------------------------------------------- /lab-02/app/src/app/event-details/event-details.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |

{{event.title | uppercase}}

5 |
6 | 7 |

{{event.location}} - {{event.date | date: 'dd/MM/yyyy'}}

8 |
9 |
10 | 11 | 12 |

{{event.description}} 13 |

14 |
15 |
-------------------------------------------------------------------------------- /lab-02/app/src/app/event-details/event-details.component.scss: -------------------------------------------------------------------------------- 1 | #eventDetails{ 2 | max-width: 600px; 3 | } 4 | -------------------------------------------------------------------------------- /lab-02/app/src/app/event-details/event-details.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit, Input } from '@angular/core'; 2 | import { Event } from '../models/event'; 3 | 4 | @Component({ 5 | selector: 'oevents-event-details', 6 | templateUrl: './event-details.component.html', 7 | styleUrls: ['./event-details.component.scss'] 8 | }) 9 | export class EventDetailsComponent implements OnInit { 10 | 11 | @Input() 12 | event: Event; 13 | 14 | constructor() { } 15 | 16 | ngOnInit() { 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /lab-02/app/src/app/event-list/event-list.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 | 6 | 7 | 8 |
-------------------------------------------------------------------------------- /lab-02/app/src/app/event-list/event-list.component.scss: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | justify-content: center; 4 | } 5 | #eventDetails{ 6 | max-width: 600px; 7 | } 8 | -------------------------------------------------------------------------------- /lab-02/app/src/app/event-list/event-list.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { EventListComponent } from './event-list.component'; 4 | 5 | describe('EventListComponent', () => { 6 | let component: EventListComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ EventListComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(EventListComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /lab-02/app/src/app/landing-page/landing-page.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |

Open Events App

4 |
5 | 6 |
7 |

All our events

8 |
9 | 10 |
11 |

12 | A new and fresh application to host all our tech events crafted from 13 | Accenture Openathons 14 |

15 |
16 |
17 | -------------------------------------------------------------------------------- /lab-02/app/src/app/landing-page/landing-page.component.scss: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | flex-flow: column; 4 | text-align: center; 5 | } 6 | 7 | .title, 8 | .subtitle, 9 | .message { 10 | padding: 1rem; 11 | } 12 | 13 | .title { 14 | color: #8bc34a; 15 | } 16 | 17 | .subtitle { 18 | } 19 | 20 | .message { 21 | } 22 | -------------------------------------------------------------------------------- /lab-02/app/src/app/landing-page/landing-page.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'oevents-landing-page', 5 | templateUrl: './landing-page.component.html', 6 | styleUrls: ['./landing-page.component.scss'] 7 | }) 8 | export class LandingPageComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /lab-02/app/src/app/models/event.ts: -------------------------------------------------------------------------------- 1 | export class Event { 2 | id: string; 3 | title: string; 4 | location: string; 5 | date: Date; 6 | description: string; 7 | addedBy: string; 8 | } 9 | -------------------------------------------------------------------------------- /lab-02/app/src/app/toolbar/toolbar.component.html: -------------------------------------------------------------------------------- 1 | 2 | Home 3 | Events 4 | Profile 5 | Login 6 | -------------------------------------------------------------------------------- /lab-02/app/src/app/toolbar/toolbar.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-02/app/src/app/toolbar/toolbar.component.scss -------------------------------------------------------------------------------- /lab-02/app/src/app/toolbar/toolbar.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { ToolbarComponent } from './toolbar.component'; 4 | 5 | describe('ToolbarComponent', () => { 6 | let component: ToolbarComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ ToolbarComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(ToolbarComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /lab-02/app/src/app/toolbar/toolbar.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'oevents-toolbar', 5 | templateUrl: './toolbar.component.html', 6 | styleUrls: ['./toolbar.component.scss'] 7 | }) 8 | export class ToolbarComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /lab-02/app/src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-02/app/src/assets/.gitkeep -------------------------------------------------------------------------------- /lab-02/app/src/browserslist: -------------------------------------------------------------------------------- 1 | # This file is currently used by autoprefixer to adjust CSS to support the below specified browsers 2 | # For additional information regarding the format and rule options, please see: 3 | # https://github.com/browserslist/browserslist#queries 4 | # 5 | # For IE 9-11 support, please remove 'not' from the last line of the file and adjust as needed 6 | 7 | > 0.5% 8 | last 2 versions 9 | Firefox ESR 10 | not dead 11 | not IE 9-11 -------------------------------------------------------------------------------- /lab-02/app/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /lab-02/app/src/environments/environment.ts: -------------------------------------------------------------------------------- 1 | // This file can be replaced during build by using the `fileReplacements` array. 2 | // `ng build --prod` replaces `environment.ts` with `environment.prod.ts`. 3 | // The list of file replacements can be found in `angular.json`. 4 | 5 | export const environment = { 6 | production: false 7 | }; 8 | 9 | /* 10 | * For easier debugging in development mode, you can import the following file 11 | * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. 12 | * 13 | * This import should be commented out in production mode because it will have a negative impact 14 | * on performance if an error is thrown. 15 | */ 16 | // import 'zone.js/dist/zone-error'; // Included with Angular CLI. 17 | -------------------------------------------------------------------------------- /lab-02/app/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-02/app/src/favicon.ico -------------------------------------------------------------------------------- /lab-02/app/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | OpenEventsFront 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /lab-02/app/src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic().bootstrapModule(AppModule) 12 | .catch(err => console.error(err)); 13 | -------------------------------------------------------------------------------- /lab-02/app/src/styles.scss: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | @import '@angular/material/prebuilt-themes/indigo-pink.css'; -------------------------------------------------------------------------------- /lab-02/app/src/test.ts: -------------------------------------------------------------------------------- 1 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files 2 | 3 | import 'zone.js/dist/zone-testing'; 4 | import { getTestBed } from '@angular/core/testing'; 5 | import { 6 | BrowserDynamicTestingModule, 7 | platformBrowserDynamicTesting 8 | } from '@angular/platform-browser-dynamic/testing'; 9 | 10 | declare const require: any; 11 | 12 | // First, initialize the Angular testing environment. 13 | getTestBed().initTestEnvironment( 14 | BrowserDynamicTestingModule, 15 | platformBrowserDynamicTesting() 16 | ); 17 | // Then we find all the tests. 18 | const context = require.context('./', true, /\.spec\.ts$/); 19 | // And load the modules. 20 | context.keys().map(context); 21 | -------------------------------------------------------------------------------- /lab-02/app/src/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/app", 5 | "types": [] 6 | }, 7 | "exclude": [ 8 | "test.ts", 9 | "**/*.spec.ts" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /lab-02/app/src/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/spec", 5 | "types": [ 6 | "jasmine", 7 | "node" 8 | ] 9 | }, 10 | "files": [ 11 | "test.ts", 12 | "polyfills.ts" 13 | ], 14 | "include": [ 15 | "**/*.spec.ts", 16 | "**/*.d.ts" 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /lab-02/app/src/tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tslint.json", 3 | "rules": { 4 | "directive-selector": [ 5 | true, 6 | "attribute", 7 | "oevents", 8 | "camelCase" 9 | ], 10 | "component-selector": [ 11 | true, 12 | "element", 13 | "oevents", 14 | "kebab-case" 15 | ] 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /lab-02/app/stylelintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "stylelint-config-standard", 3 | "rules": { 4 | "at-rule-no-unknown": [true, 5 | "ignoreAtRules": ["include"] 6 | ], 7 | "at-rule-no-vendor-prefix": true, 8 | "declaration-no-important": true, 9 | "font-family-name-quotes": "always-where-recommended", 10 | "function-url-quotes": "always", 11 | "max-nesting-depth": 2, 12 | "media-feature-name-no-vendor-prefix": true, 13 | "property-no-vendor-prefix": true, 14 | "property-no-unknown": true, 15 | "selector-attribute-quotes": "always", 16 | "selector-max-compound-selectors": 4, 17 | "selector-no-vendor-prefix": true, 18 | "unit-whitelist": ["px", "%", "deg", "ms", "s", "rem", "vh", "vw"], 19 | "value-no-vendor-prefix": true 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /lab-02/app/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compileOnSave": false, 3 | "compilerOptions": { 4 | "baseUrl": "./", 5 | "outDir": "./dist/out-tsc", 6 | "sourceMap": true, 7 | "declaration": false, 8 | "module": "es2015", 9 | "moduleResolution": "node", 10 | "emitDecoratorMetadata": true, 11 | "experimentalDecorators": true, 12 | "importHelpers": true, 13 | "target": "es5", 14 | "typeRoots": [ 15 | "node_modules/@types" 16 | ], 17 | "lib": [ 18 | "es2018", 19 | "dom" 20 | ] 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /lab-02/resources/eventList.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-02/resources/eventList.png -------------------------------------------------------------------------------- /lab-02/resources/eventListDetails01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-02/resources/eventListDetails01.png -------------------------------------------------------------------------------- /lab-02/resources/eventListDetails02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-02/resources/eventListDetails02.png -------------------------------------------------------------------------------- /lab-02/resources/eventModelFolder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-02/resources/eventModelFolder.png -------------------------------------------------------------------------------- /lab-03/app/.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see https://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | max_line_length = off 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /lab-03/app/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "johnpapa.angular-essentials", 4 | "PKief.material-icon-theme", 5 | "rbbit.typescript-hero" 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /lab-03/app/e2e/src/app.e2e-spec.ts: -------------------------------------------------------------------------------- 1 | import { AppPage } from './app.po'; 2 | import { browser, logging } from 'protractor'; 3 | 4 | describe('workspace-project App', () => { 5 | let page: AppPage; 6 | 7 | beforeEach(() => { 8 | page = new AppPage(); 9 | }); 10 | 11 | it('should display welcome message', () => { 12 | page.navigateTo(); 13 | expect(page.getTitleText()).toEqual('Welcome to open-events-front!'); 14 | }); 15 | 16 | afterEach(async () => { 17 | // Assert that there are no errors emitted from the browser 18 | const logs = await browser.manage().logs().get(logging.Type.BROWSER); 19 | expect(logs).not.toContain(jasmine.objectContaining({ 20 | level: logging.Level.SEVERE, 21 | } as logging.Entry)); 22 | }); 23 | }); 24 | -------------------------------------------------------------------------------- /lab-03/app/e2e/src/app.po.ts: -------------------------------------------------------------------------------- 1 | import { browser, by, element } from 'protractor'; 2 | 3 | export class AppPage { 4 | navigateTo() { 5 | return browser.get(browser.baseUrl) as Promise; 6 | } 7 | 8 | getTitleText() { 9 | return element(by.css('oevents-root h1')).getText() as Promise; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /lab-03/app/e2e/tsconfig.e2e.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/app", 5 | "module": "commonjs", 6 | "target": "es5", 7 | "types": [ 8 | "jasmine", 9 | "jasminewd2", 10 | "node" 11 | ] 12 | } 13 | } -------------------------------------------------------------------------------- /lab-03/app/src/app/app.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 |
5 | -------------------------------------------------------------------------------- /lab-03/app/src/app/app.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-03/app/src/app/app.component.scss -------------------------------------------------------------------------------- /lab-03/app/src/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'oevents-root', 5 | templateUrl: './app.component.html', 6 | styleUrls: ['./app.component.scss'] 7 | }) 8 | export class AppComponent { 9 | title = 'open-events-front'; 10 | } 11 | -------------------------------------------------------------------------------- /lab-03/app/src/app/events/event-details/event-details.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |

{{event.title | uppercase}}

5 |
6 | 7 |

{{event.location}} - {{event.date | date: 'dd/MM/yyyy'}}

8 |
9 |
10 | 11 | 12 |

{{event.description}} 13 |

14 |
15 |
-------------------------------------------------------------------------------- /lab-03/app/src/app/events/event-details/event-details.component.scss: -------------------------------------------------------------------------------- 1 | #eventDetails{ 2 | max-width: 600px; 3 | } 4 | -------------------------------------------------------------------------------- /lab-03/app/src/app/events/event-details/event-details.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit, Input } from "@angular/core"; 2 | import { Event } from "../../models/event"; 3 | 4 | @Component({ 5 | selector: "oevents-event-details", 6 | templateUrl: "./event-details.component.html", 7 | styleUrls: ["./event-details.component.scss"] 8 | }) 9 | export class EventDetailsComponent implements OnInit { 10 | @Input() 11 | event: Event; 12 | 13 | constructor() {} 14 | 15 | ngOnInit() {} 16 | } 17 | -------------------------------------------------------------------------------- /lab-03/app/src/app/events/event-list/event-list.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 | 6 | 7 | 8 |
-------------------------------------------------------------------------------- /lab-03/app/src/app/events/event-list/event-list.component.scss: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | justify-content: center; 4 | } 5 | #eventDetails{ 6 | max-width: 600px; 7 | } 8 | -------------------------------------------------------------------------------- /lab-03/app/src/app/events/event-list/event-list.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { EventListComponent } from './event-list.component'; 4 | 5 | describe('EventListComponent', () => { 6 | let component: EventListComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ EventListComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(EventListComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /lab-03/app/src/app/events/events.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from "@angular/core"; 2 | import { CommonModule } from "@angular/common"; 3 | 4 | //Modules 5 | import { SharedModule } from "../shared/shared.module"; 6 | 7 | // Components 8 | import { EventListComponent } from "./event-list/event-list.component"; 9 | import { EventDetailsComponent } from "./event-details/event-details.component"; 10 | 11 | @NgModule({ 12 | imports: [CommonModule, SharedModule], 13 | declarations: [EventListComponent, EventDetailsComponent] 14 | }) 15 | export class EventsModule {} 16 | -------------------------------------------------------------------------------- /lab-03/app/src/app/landing-page/landing-page.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |

Open Events App

4 |
5 | 6 |
7 |

All our events

8 |
9 | 10 |
11 |

12 | A new and fresh application to host all our tech events crafted from 13 | Accenture Openathons 14 |

15 |
16 |
17 | -------------------------------------------------------------------------------- /lab-03/app/src/app/landing-page/landing-page.component.scss: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | flex-flow: column; 4 | text-align: center; 5 | } 6 | 7 | .title, 8 | .subtitle, 9 | .message { 10 | padding: 1rem; 11 | } 12 | 13 | .title { 14 | color: #8bc34a; 15 | } 16 | 17 | .subtitle { 18 | } 19 | 20 | .message { 21 | } 22 | -------------------------------------------------------------------------------- /lab-03/app/src/app/landing-page/landing-page.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'oevents-landing-page', 5 | templateUrl: './landing-page.component.html', 6 | styleUrls: ['./landing-page.component.scss'] 7 | }) 8 | export class LandingPageComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /lab-03/app/src/app/login/login.component.html: -------------------------------------------------------------------------------- 1 |

2 | login works! 3 |

4 | -------------------------------------------------------------------------------- /lab-03/app/src/app/login/login.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-03/app/src/app/login/login.component.scss -------------------------------------------------------------------------------- /lab-03/app/src/app/login/login.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { LoginComponent } from './login.component'; 4 | 5 | describe('LoginComponent', () => { 6 | let component: LoginComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ LoginComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(LoginComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /lab-03/app/src/app/login/login.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'oevents-login', 5 | templateUrl: './login.component.html', 6 | styleUrls: ['./login.component.scss'] 7 | }) 8 | export class LoginComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /lab-03/app/src/app/login/login.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { CommonModule } from '@angular/common'; 3 | import { LoginComponent } from './login.component'; 4 | 5 | @NgModule({ 6 | declarations: [LoginComponent], 7 | imports: [ 8 | CommonModule 9 | ] 10 | }) 11 | export class LoginModule { } 12 | -------------------------------------------------------------------------------- /lab-03/app/src/app/models/event.ts: -------------------------------------------------------------------------------- 1 | export interface Event { 2 | id: string; 3 | title: string; 4 | location: string; 5 | date: Date; 6 | description: string; 7 | addedBy: string; 8 | } 9 | -------------------------------------------------------------------------------- /lab-03/app/src/app/page-not-found/page-not-found.component.html: -------------------------------------------------------------------------------- 1 |

2 | Page no found! 3 |

4 | -------------------------------------------------------------------------------- /lab-03/app/src/app/page-not-found/page-not-found.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-03/app/src/app/page-not-found/page-not-found.component.scss -------------------------------------------------------------------------------- /lab-03/app/src/app/page-not-found/page-not-found.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'oevents-page-not-found', 5 | templateUrl: './page-not-found.component.html', 6 | styleUrls: ['./page-not-found.component.scss'] 7 | }) 8 | export class PageNotFoundComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /lab-03/app/src/app/profile/profile.component.html: -------------------------------------------------------------------------------- 1 |

2 | profile works! 3 |

4 | -------------------------------------------------------------------------------- /lab-03/app/src/app/profile/profile.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-03/app/src/app/profile/profile.component.scss -------------------------------------------------------------------------------- /lab-03/app/src/app/profile/profile.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { ProfileComponent } from './profile.component'; 4 | 5 | describe('ProfileComponent', () => { 6 | let component: ProfileComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ ProfileComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(ProfileComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /lab-03/app/src/app/profile/profile.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'oevents-profile', 5 | templateUrl: './profile.component.html', 6 | styleUrls: ['./profile.component.scss'] 7 | }) 8 | export class ProfileComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /lab-03/app/src/app/profile/profile.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { CommonModule } from '@angular/common'; 3 | import { ProfileComponent } from './profile.component'; 4 | 5 | @NgModule({ 6 | declarations: [ProfileComponent], 7 | imports: [ 8 | CommonModule 9 | ] 10 | }) 11 | export class ProfileModule { } 12 | -------------------------------------------------------------------------------- /lab-03/app/src/app/toolbar/toolbar.component.html: -------------------------------------------------------------------------------- 1 | 2 | Home 3 | Events 4 | Profile 5 | Login 6 | 7 | -------------------------------------------------------------------------------- /lab-03/app/src/app/toolbar/toolbar.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-03/app/src/app/toolbar/toolbar.component.scss -------------------------------------------------------------------------------- /lab-03/app/src/app/toolbar/toolbar.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { ToolbarComponent } from './toolbar.component'; 4 | 5 | describe('ToolbarComponent', () => { 6 | let component: ToolbarComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ ToolbarComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(ToolbarComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /lab-03/app/src/app/toolbar/toolbar.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'oevents-toolbar', 5 | templateUrl: './toolbar.component.html', 6 | styleUrls: ['./toolbar.component.scss'] 7 | }) 8 | export class ToolbarComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /lab-03/app/src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-03/app/src/assets/.gitkeep -------------------------------------------------------------------------------- /lab-03/app/src/browserslist: -------------------------------------------------------------------------------- 1 | # This file is currently used by autoprefixer to adjust CSS to support the below specified browsers 2 | # For additional information regarding the format and rule options, please see: 3 | # https://github.com/browserslist/browserslist#queries 4 | # 5 | # For IE 9-11 support, please remove 'not' from the last line of the file and adjust as needed 6 | 7 | > 0.5% 8 | last 2 versions 9 | Firefox ESR 10 | not dead 11 | not IE 9-11 -------------------------------------------------------------------------------- /lab-03/app/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /lab-03/app/src/environments/environment.ts: -------------------------------------------------------------------------------- 1 | // This file can be replaced during build by using the `fileReplacements` array. 2 | // `ng build --prod` replaces `environment.ts` with `environment.prod.ts`. 3 | // The list of file replacements can be found in `angular.json`. 4 | 5 | export const environment = { 6 | production: false 7 | }; 8 | 9 | /* 10 | * For easier debugging in development mode, you can import the following file 11 | * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. 12 | * 13 | * This import should be commented out in production mode because it will have a negative impact 14 | * on performance if an error is thrown. 15 | */ 16 | // import 'zone.js/dist/zone-error'; // Included with Angular CLI. 17 | -------------------------------------------------------------------------------- /lab-03/app/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-03/app/src/favicon.ico -------------------------------------------------------------------------------- /lab-03/app/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | OpenEventsFront 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /lab-03/app/src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic().bootstrapModule(AppModule) 12 | .catch(err => console.error(err)); 13 | -------------------------------------------------------------------------------- /lab-03/app/src/styles.scss: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | @import "@angular/material/prebuilt-themes/indigo-pink.css"; 3 | 4 | * { 5 | box-sizing: border-box; 6 | } 7 | 8 | .activeLink { 9 | color: #f95151; 10 | } 11 | -------------------------------------------------------------------------------- /lab-03/app/src/test.ts: -------------------------------------------------------------------------------- 1 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files 2 | 3 | import 'zone.js/dist/zone-testing'; 4 | import { getTestBed } from '@angular/core/testing'; 5 | import { 6 | BrowserDynamicTestingModule, 7 | platformBrowserDynamicTesting 8 | } from '@angular/platform-browser-dynamic/testing'; 9 | 10 | declare const require: any; 11 | 12 | // First, initialize the Angular testing environment. 13 | getTestBed().initTestEnvironment( 14 | BrowserDynamicTestingModule, 15 | platformBrowserDynamicTesting() 16 | ); 17 | // Then we find all the tests. 18 | const context = require.context('./', true, /\.spec\.ts$/); 19 | // And load the modules. 20 | context.keys().map(context); 21 | -------------------------------------------------------------------------------- /lab-03/app/src/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/app", 5 | "types": [] 6 | }, 7 | "exclude": [ 8 | "test.ts", 9 | "**/*.spec.ts" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /lab-03/app/src/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/spec", 5 | "types": [ 6 | "jasmine", 7 | "node" 8 | ] 9 | }, 10 | "files": [ 11 | "test.ts", 12 | "polyfills.ts" 13 | ], 14 | "include": [ 15 | "**/*.spec.ts", 16 | "**/*.d.ts" 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /lab-03/app/src/tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tslint.json", 3 | "rules": { 4 | "directive-selector": [ 5 | true, 6 | "attribute", 7 | "oevents", 8 | "camelCase" 9 | ], 10 | "component-selector": [ 11 | true, 12 | "element", 13 | "oevents", 14 | "kebab-case" 15 | ] 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /lab-03/app/stylelintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "stylelint-config-standard", 3 | "rules": { 4 | "at-rule-no-unknown": [true, 5 | "ignoreAtRules": ["include"] 6 | ], 7 | "at-rule-no-vendor-prefix": true, 8 | "declaration-no-important": true, 9 | "font-family-name-quotes": "always-where-recommended", 10 | "function-url-quotes": "always", 11 | "max-nesting-depth": 2, 12 | "media-feature-name-no-vendor-prefix": true, 13 | "property-no-vendor-prefix": true, 14 | "property-no-unknown": true, 15 | "selector-attribute-quotes": "always", 16 | "selector-max-compound-selectors": 4, 17 | "selector-no-vendor-prefix": true, 18 | "unit-whitelist": ["px", "%", "deg", "ms", "s", "rem", "vh", "vw"], 19 | "value-no-vendor-prefix": true 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /lab-03/app/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compileOnSave": false, 3 | "compilerOptions": { 4 | "baseUrl": "./", 5 | "outDir": "./dist/out-tsc", 6 | "sourceMap": true, 7 | "declaration": false, 8 | "module": "es2015", 9 | "moduleResolution": "node", 10 | "emitDecoratorMetadata": true, 11 | "experimentalDecorators": true, 12 | "importHelpers": true, 13 | "target": "es5", 14 | "typeRoots": [ 15 | "node_modules/@types" 16 | ], 17 | "lib": [ 18 | "es2018", 19 | "dom" 20 | ] 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /lab-04/app/.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see https://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | max_line_length = off 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /lab-04/app/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "johnpapa.angular-essentials", 4 | "PKief.material-icon-theme", 5 | "rbbit.typescript-hero" 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /lab-04/app/e2e/src/app.e2e-spec.ts: -------------------------------------------------------------------------------- 1 | import { AppPage } from './app.po'; 2 | import { browser, logging } from 'protractor'; 3 | 4 | describe('workspace-project App', () => { 5 | let page: AppPage; 6 | 7 | beforeEach(() => { 8 | page = new AppPage(); 9 | }); 10 | 11 | it('should display welcome message', () => { 12 | page.navigateTo(); 13 | expect(page.getTitleText()).toEqual('Welcome to open-events-front!'); 14 | }); 15 | 16 | afterEach(async () => { 17 | // Assert that there are no errors emitted from the browser 18 | const logs = await browser.manage().logs().get(logging.Type.BROWSER); 19 | expect(logs).not.toContain(jasmine.objectContaining({ 20 | level: logging.Level.SEVERE, 21 | } as logging.Entry)); 22 | }); 23 | }); 24 | -------------------------------------------------------------------------------- /lab-04/app/e2e/src/app.po.ts: -------------------------------------------------------------------------------- 1 | import { browser, by, element } from 'protractor'; 2 | 3 | export class AppPage { 4 | navigateTo() { 5 | return browser.get(browser.baseUrl) as Promise; 6 | } 7 | 8 | getTitleText() { 9 | return element(by.css('oevents-root h1')).getText() as Promise; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /lab-04/app/e2e/tsconfig.e2e.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/app", 5 | "module": "commonjs", 6 | "target": "es5", 7 | "types": [ 8 | "jasmine", 9 | "jasminewd2", 10 | "node" 11 | ] 12 | } 13 | } -------------------------------------------------------------------------------- /lab-04/app/src/app/app.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 |
5 | -------------------------------------------------------------------------------- /lab-04/app/src/app/app.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-04/app/src/app/app.component.scss -------------------------------------------------------------------------------- /lab-04/app/src/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'oevents-root', 5 | templateUrl: './app.component.html', 6 | styleUrls: ['./app.component.scss'] 7 | }) 8 | export class AppComponent { 9 | title = 'open-events-front'; 10 | } 11 | -------------------------------------------------------------------------------- /lab-04/app/src/app/core/core.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from "@angular/core"; 2 | import { CommonModule } from "@angular/common"; 3 | import { HttpClientModule } from "@angular/common/http"; 4 | 5 | import { EventService } from "./event.service"; 6 | 7 | @NgModule({ 8 | declarations: [], 9 | imports: [CommonModule, HttpClientModule], 10 | providers: [EventService] 11 | }) 12 | export class CoreModule {} 13 | -------------------------------------------------------------------------------- /lab-04/app/src/app/core/event.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed } from '@angular/core/testing'; 2 | 3 | import { EventService } from './event.service'; 4 | 5 | describe('EventService', () => { 6 | beforeEach(() => TestBed.configureTestingModule({})); 7 | 8 | it('should be created', () => { 9 | const service: EventService = TestBed.get(EventService); 10 | expect(service).toBeTruthy(); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /lab-04/app/src/app/events/event-details/event-details.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |

{{event.title | uppercase}}

5 |
6 | 7 |

{{event.location}} - {{event.date | date: 'dd/MM/yyyy'}}

8 |
9 |
10 | 11 | 12 |

{{event.description}} 13 |

14 |
15 |
-------------------------------------------------------------------------------- /lab-04/app/src/app/events/event-details/event-details.component.scss: -------------------------------------------------------------------------------- 1 | #eventDetails{ 2 | max-width: 600px; 3 | } 4 | -------------------------------------------------------------------------------- /lab-04/app/src/app/events/event-details/event-details.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit, Input } from "@angular/core"; 2 | import { Event } from "../../models/event"; 3 | 4 | @Component({ 5 | selector: "oevents-event-details", 6 | templateUrl: "./event-details.component.html", 7 | styleUrls: ["./event-details.component.scss"] 8 | }) 9 | export class EventDetailsComponent implements OnInit { 10 | @Input() 11 | event: Event; 12 | 13 | constructor() {} 14 | 15 | ngOnInit() {} 16 | } 17 | -------------------------------------------------------------------------------- /lab-04/app/src/app/events/event-list/event-list.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 | 6 | 7 | 8 |
-------------------------------------------------------------------------------- /lab-04/app/src/app/events/event-list/event-list.component.scss: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | justify-content: center; 4 | } 5 | #eventDetails{ 6 | max-width: 600px; 7 | } 8 | -------------------------------------------------------------------------------- /lab-04/app/src/app/events/events.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from "@angular/core"; 2 | import { CommonModule } from "@angular/common"; 3 | 4 | //Modules 5 | import { SharedModule } from "../shared/shared.module"; 6 | 7 | // Components 8 | import { EventListComponent } from "./event-list/event-list.component"; 9 | import { EventDetailsComponent } from "./event-details/event-details.component"; 10 | 11 | @NgModule({ 12 | imports: [CommonModule, SharedModule], 13 | declarations: [EventListComponent, EventDetailsComponent] 14 | }) 15 | export class EventsModule {} 16 | -------------------------------------------------------------------------------- /lab-04/app/src/app/landing-page/landing-page.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |

Open Events App

4 |
5 | 6 |
7 |

All our events

8 |
9 | 10 |
11 |

12 | A new and fresh application to host all our tech events crafted from 13 | Accenture Openathons 14 |

15 |
16 |
17 | -------------------------------------------------------------------------------- /lab-04/app/src/app/landing-page/landing-page.component.scss: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | flex-flow: column; 4 | text-align: center; 5 | } 6 | 7 | .title, 8 | .subtitle, 9 | .message { 10 | padding: 1rem; 11 | } 12 | 13 | .title { 14 | color: #8bc34a; 15 | } 16 | 17 | .subtitle { 18 | } 19 | 20 | .message { 21 | } 22 | -------------------------------------------------------------------------------- /lab-04/app/src/app/landing-page/landing-page.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'oevents-landing-page', 5 | templateUrl: './landing-page.component.html', 6 | styleUrls: ['./landing-page.component.scss'] 7 | }) 8 | export class LandingPageComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /lab-04/app/src/app/login/login.component.html: -------------------------------------------------------------------------------- 1 |

2 | login works! 3 |

4 | -------------------------------------------------------------------------------- /lab-04/app/src/app/login/login.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-04/app/src/app/login/login.component.scss -------------------------------------------------------------------------------- /lab-04/app/src/app/login/login.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { LoginComponent } from './login.component'; 4 | 5 | describe('LoginComponent', () => { 6 | let component: LoginComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ LoginComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(LoginComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /lab-04/app/src/app/login/login.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'oevents-login', 5 | templateUrl: './login.component.html', 6 | styleUrls: ['./login.component.scss'] 7 | }) 8 | export class LoginComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /lab-04/app/src/app/login/login.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { CommonModule } from '@angular/common'; 3 | import { LoginComponent } from './login.component'; 4 | 5 | @NgModule({ 6 | declarations: [LoginComponent], 7 | imports: [ 8 | CommonModule 9 | ] 10 | }) 11 | export class LoginModule { } 12 | -------------------------------------------------------------------------------- /lab-04/app/src/app/models/event.ts: -------------------------------------------------------------------------------- 1 | export interface Event { 2 | id: string; 3 | title: string; 4 | location: string; 5 | date: Date; 6 | description: string; 7 | addedBy: string; 8 | } 9 | -------------------------------------------------------------------------------- /lab-04/app/src/app/page-not-found/page-not-found.component.html: -------------------------------------------------------------------------------- 1 |

2 | Page no found! 3 |

4 | -------------------------------------------------------------------------------- /lab-04/app/src/app/page-not-found/page-not-found.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-04/app/src/app/page-not-found/page-not-found.component.scss -------------------------------------------------------------------------------- /lab-04/app/src/app/page-not-found/page-not-found.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'oevents-page-not-found', 5 | templateUrl: './page-not-found.component.html', 6 | styleUrls: ['./page-not-found.component.scss'] 7 | }) 8 | export class PageNotFoundComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /lab-04/app/src/app/profile/profile.component.html: -------------------------------------------------------------------------------- 1 |

2 | profile works! 3 |

4 | -------------------------------------------------------------------------------- /lab-04/app/src/app/profile/profile.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-04/app/src/app/profile/profile.component.scss -------------------------------------------------------------------------------- /lab-04/app/src/app/profile/profile.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { ProfileComponent } from './profile.component'; 4 | 5 | describe('ProfileComponent', () => { 6 | let component: ProfileComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ ProfileComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(ProfileComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /lab-04/app/src/app/profile/profile.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'oevents-profile', 5 | templateUrl: './profile.component.html', 6 | styleUrls: ['./profile.component.scss'] 7 | }) 8 | export class ProfileComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /lab-04/app/src/app/profile/profile.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { CommonModule } from '@angular/common'; 3 | import { ProfileComponent } from './profile.component'; 4 | 5 | @NgModule({ 6 | declarations: [ProfileComponent], 7 | imports: [ 8 | CommonModule 9 | ] 10 | }) 11 | export class ProfileModule { } 12 | -------------------------------------------------------------------------------- /lab-04/app/src/app/toolbar/toolbar.component.html: -------------------------------------------------------------------------------- 1 | 2 | Home 3 | Events 4 | Profile 5 | Login 6 | 7 | -------------------------------------------------------------------------------- /lab-04/app/src/app/toolbar/toolbar.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-04/app/src/app/toolbar/toolbar.component.scss -------------------------------------------------------------------------------- /lab-04/app/src/app/toolbar/toolbar.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { ToolbarComponent } from './toolbar.component'; 4 | 5 | describe('ToolbarComponent', () => { 6 | let component: ToolbarComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ ToolbarComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(ToolbarComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /lab-04/app/src/app/toolbar/toolbar.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'oevents-toolbar', 5 | templateUrl: './toolbar.component.html', 6 | styleUrls: ['./toolbar.component.scss'] 7 | }) 8 | export class ToolbarComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /lab-04/app/src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-04/app/src/assets/.gitkeep -------------------------------------------------------------------------------- /lab-04/app/src/browserslist: -------------------------------------------------------------------------------- 1 | # This file is currently used by autoprefixer to adjust CSS to support the below specified browsers 2 | # For additional information regarding the format and rule options, please see: 3 | # https://github.com/browserslist/browserslist#queries 4 | # 5 | # For IE 9-11 support, please remove 'not' from the last line of the file and adjust as needed 6 | 7 | > 0.5% 8 | last 2 versions 9 | Firefox ESR 10 | not dead 11 | not IE 9-11 -------------------------------------------------------------------------------- /lab-04/app/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true, 3 | apiURL: "prod_url" 4 | }; 5 | -------------------------------------------------------------------------------- /lab-04/app/src/environments/environment.ts: -------------------------------------------------------------------------------- 1 | // This file can be replaced during build by using the `fileReplacements` array. 2 | // `ng build --prod` replaces `environment.ts` with `environment.prod.ts`. 3 | // The list of file replacements can be found in `angular.json`. 4 | 5 | export const environment = { 6 | production: false, 7 | apiURL: "http://localhost:3000/" 8 | }; 9 | 10 | /* 11 | * For easier debugging in development mode, you can import the following file 12 | * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. 13 | * 14 | * This import should be commented out in production mode because it will have a negative impact 15 | * on performance if an error is thrown. 16 | */ 17 | // import 'zone.js/dist/zone-error'; // Included with Angular CLI. 18 | -------------------------------------------------------------------------------- /lab-04/app/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-04/app/src/favicon.ico -------------------------------------------------------------------------------- /lab-04/app/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | OpenEventsFront 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /lab-04/app/src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic().bootstrapModule(AppModule) 12 | .catch(err => console.error(err)); 13 | -------------------------------------------------------------------------------- /lab-04/app/src/styles.scss: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | @import "@angular/material/prebuilt-themes/indigo-pink.css"; 3 | 4 | * { 5 | box-sizing: border-box; 6 | } 7 | 8 | .activeLink { 9 | color: #f95151; 10 | } 11 | -------------------------------------------------------------------------------- /lab-04/app/src/test.ts: -------------------------------------------------------------------------------- 1 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files 2 | 3 | import 'zone.js/dist/zone-testing'; 4 | import { getTestBed } from '@angular/core/testing'; 5 | import { 6 | BrowserDynamicTestingModule, 7 | platformBrowserDynamicTesting 8 | } from '@angular/platform-browser-dynamic/testing'; 9 | 10 | declare const require: any; 11 | 12 | // First, initialize the Angular testing environment. 13 | getTestBed().initTestEnvironment( 14 | BrowserDynamicTestingModule, 15 | platformBrowserDynamicTesting() 16 | ); 17 | // Then we find all the tests. 18 | const context = require.context('./', true, /\.spec\.ts$/); 19 | // And load the modules. 20 | context.keys().map(context); 21 | -------------------------------------------------------------------------------- /lab-04/app/src/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/app", 5 | "types": [] 6 | }, 7 | "exclude": [ 8 | "test.ts", 9 | "**/*.spec.ts" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /lab-04/app/src/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/spec", 5 | "types": [ 6 | "jasmine", 7 | "node" 8 | ] 9 | }, 10 | "files": [ 11 | "test.ts", 12 | "polyfills.ts" 13 | ], 14 | "include": [ 15 | "**/*.spec.ts", 16 | "**/*.d.ts" 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /lab-04/app/src/tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tslint.json", 3 | "rules": { 4 | "directive-selector": [ 5 | true, 6 | "attribute", 7 | "oevents", 8 | "camelCase" 9 | ], 10 | "component-selector": [ 11 | true, 12 | "element", 13 | "oevents", 14 | "kebab-case" 15 | ] 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /lab-04/app/stylelintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "stylelint-config-standard", 3 | "rules": { 4 | "at-rule-no-unknown": [true, 5 | "ignoreAtRules": ["include"] 6 | ], 7 | "at-rule-no-vendor-prefix": true, 8 | "declaration-no-important": true, 9 | "font-family-name-quotes": "always-where-recommended", 10 | "function-url-quotes": "always", 11 | "max-nesting-depth": 2, 12 | "media-feature-name-no-vendor-prefix": true, 13 | "property-no-vendor-prefix": true, 14 | "property-no-unknown": true, 15 | "selector-attribute-quotes": "always", 16 | "selector-max-compound-selectors": 4, 17 | "selector-no-vendor-prefix": true, 18 | "unit-whitelist": ["px", "%", "deg", "ms", "s", "rem", "vh", "vw"], 19 | "value-no-vendor-prefix": true 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /lab-04/app/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compileOnSave": false, 3 | "compilerOptions": { 4 | "baseUrl": "./", 5 | "outDir": "./dist/out-tsc", 6 | "sourceMap": true, 7 | "declaration": false, 8 | "module": "es2015", 9 | "moduleResolution": "node", 10 | "emitDecoratorMetadata": true, 11 | "experimentalDecorators": true, 12 | "importHelpers": true, 13 | "target": "es5", 14 | "typeRoots": [ 15 | "node_modules/@types" 16 | ], 17 | "lib": [ 18 | "es2018", 19 | "dom" 20 | ] 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /lab-04/resources/dependency-injection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-04/resources/dependency-injection.png -------------------------------------------------------------------------------- /lab-04/resources/jsonServerRunning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-04/resources/jsonServerRunning.png -------------------------------------------------------------------------------- /lab-05/app/.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see https://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | max_line_length = off 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /lab-05/app/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "johnpapa.angular-essentials", 4 | "PKief.material-icon-theme", 5 | "rbbit.typescript-hero" 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /lab-05/app/e2e/src/app.e2e-spec.ts: -------------------------------------------------------------------------------- 1 | import { AppPage } from './app.po'; 2 | import { browser, logging } from 'protractor'; 3 | 4 | describe('workspace-project App', () => { 5 | let page: AppPage; 6 | 7 | beforeEach(() => { 8 | page = new AppPage(); 9 | }); 10 | 11 | it('should display welcome message', () => { 12 | page.navigateTo(); 13 | expect(page.getTitleText()).toEqual('Welcome to open-events-front!'); 14 | }); 15 | 16 | afterEach(async () => { 17 | // Assert that there are no errors emitted from the browser 18 | const logs = await browser.manage().logs().get(logging.Type.BROWSER); 19 | expect(logs).not.toContain(jasmine.objectContaining({ 20 | level: logging.Level.SEVERE, 21 | } as logging.Entry)); 22 | }); 23 | }); 24 | -------------------------------------------------------------------------------- /lab-05/app/e2e/src/app.po.ts: -------------------------------------------------------------------------------- 1 | import { browser, by, element } from 'protractor'; 2 | 3 | export class AppPage { 4 | navigateTo() { 5 | return browser.get(browser.baseUrl) as Promise; 6 | } 7 | 8 | getTitleText() { 9 | return element(by.css('oevents-root h1')).getText() as Promise; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /lab-05/app/e2e/tsconfig.e2e.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/app", 5 | "module": "commonjs", 6 | "target": "es5", 7 | "types": [ 8 | "jasmine", 9 | "jasminewd2", 10 | "node" 11 | ] 12 | } 13 | } -------------------------------------------------------------------------------- /lab-05/app/src/app/app.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 |
5 | -------------------------------------------------------------------------------- /lab-05/app/src/app/app.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-05/app/src/app/app.component.scss -------------------------------------------------------------------------------- /lab-05/app/src/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'oevents-root', 5 | templateUrl: './app.component.html', 6 | styleUrls: ['./app.component.scss'] 7 | }) 8 | export class AppComponent { 9 | title = 'open-events-front'; 10 | } 11 | -------------------------------------------------------------------------------- /lab-05/app/src/app/core/auth-guard.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | import { CanActivate, Router } from '@angular/router'; 3 | import { UserService } from "../core/user.service"; 4 | 5 | 6 | @Injectable() 7 | export class AuthGuard implements CanActivate { 8 | 9 | constructor( 10 | public router: Router, 11 | private userService: UserService 12 | ) {} 13 | 14 | canActivate(): boolean { 15 | return this.checkLogin(); 16 | } 17 | 18 | checkLogin(): boolean { 19 | if(this.userService.checkUser()) { 20 | return true; 21 | } else { 22 | this.router.navigate(['/login']); 23 | return false; 24 | } 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /lab-05/app/src/app/core/core.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from "@angular/core"; 2 | import { CommonModule } from "@angular/common"; 3 | import { HttpClientModule } from "@angular/common/http"; 4 | 5 | import { EventService } from "./event.service"; 6 | import { UserService } from "./user.service"; 7 | 8 | @NgModule({ 9 | declarations: [], 10 | imports: [CommonModule, HttpClientModule], 11 | providers: [EventService, UserService] 12 | }) 13 | export class CoreModule {} 14 | -------------------------------------------------------------------------------- /lab-05/app/src/app/core/event.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed } from '@angular/core/testing'; 2 | 3 | import { EventService } from './event.service'; 4 | 5 | describe('EventService', () => { 6 | beforeEach(() => TestBed.configureTestingModule({})); 7 | 8 | it('should be created', () => { 9 | const service: EventService = TestBed.get(EventService); 10 | expect(service).toBeTruthy(); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /lab-05/app/src/app/events/add-edit-event/add-edit-event.component.scss: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | justify-content: center; 4 | flex-direction: column; 5 | align-items: center; 6 | justify-content: center; 7 | } 8 | form { 9 | display: flex; 10 | flex-flow: column; 11 | width: 40%; 12 | } 13 | 14 | #save-btn { 15 | display: flex; 16 | justify-content: flex-end; 17 | } 18 | -------------------------------------------------------------------------------- /lab-05/app/src/app/events/event-details/event-details.component.scss: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | justify-content: center; 4 | flex-direction: column; 5 | align-items: center; 6 | justify-content: center; 7 | } 8 | 9 | #event-card-details { 10 | display: flex; 11 | flex: 1; 12 | flex-flow: column; 13 | margin: 2%; 14 | max-width: 800px; 15 | } 16 | 17 | #edit-event-btn { 18 | display: flex; 19 | justify-content: flex-end; 20 | margin-bottom: 15px; 21 | } 22 | 23 | #delete-btn { 24 | margin-right: 5px; 25 | } 26 | -------------------------------------------------------------------------------- /lab-05/app/src/app/events/event-list/event-list.component.scss: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | justify-content: center; 4 | flex-flow: column; 5 | margin: 10%; 6 | margin-top: 2%; 7 | } 8 | 9 | #add-event-btn { 10 | display: flex; 11 | justify-content: flex-end; 12 | } 13 | 14 | button { 15 | max-width: 100px; 16 | } 17 | 18 | table { 19 | width: 100%; 20 | margin-top: 10px; 21 | } 22 | -------------------------------------------------------------------------------- /lab-05/app/src/app/events/events.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from "@angular/core"; 2 | import { CommonModule } from "@angular/common"; 3 | 4 | //Modules 5 | import { SharedModule } from "../shared/shared.module"; 6 | 7 | // Components 8 | import { EventListComponent } from "./event-list/event-list.component"; 9 | import { EventDetailsComponent } from "./event-details/event-details.component"; 10 | import { AddEditEventComponent } from "./add-edit-event/add-edit-event.component"; 11 | // import { AppRoutingModule } from "../app-routing.module"; 12 | 13 | @NgModule({ 14 | imports: [CommonModule, SharedModule], 15 | declarations: [ 16 | EventListComponent, 17 | EventDetailsComponent, 18 | AddEditEventComponent 19 | ] 20 | }) 21 | export class EventsModule {} 22 | -------------------------------------------------------------------------------- /lab-05/app/src/app/landing-page/landing-page.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |

Open Events App

4 |
5 | 6 |
7 |

All our events

8 |
9 | 10 |
11 |

12 | A new and fresh application to host all our tech events crafted from 13 | Accenture Openathons 14 |

15 |
16 |
17 | -------------------------------------------------------------------------------- /lab-05/app/src/app/landing-page/landing-page.component.scss: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | flex-flow: column; 4 | text-align: center; 5 | } 6 | 7 | .title, 8 | .subtitle, 9 | .message { 10 | padding: 1rem; 11 | } 12 | 13 | .title { 14 | color: #8bc34a; 15 | } 16 | 17 | .subtitle { 18 | } 19 | 20 | .message { 21 | } 22 | -------------------------------------------------------------------------------- /lab-05/app/src/app/landing-page/landing-page.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'oevents-landing-page', 5 | templateUrl: './landing-page.component.html', 6 | styleUrls: ['./landing-page.component.scss'] 7 | }) 8 | export class LandingPageComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /lab-05/app/src/app/login/login.component.scss: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | justify-content: center; 4 | flex-direction: column; 5 | align-items: center; 6 | justify-content: center; 7 | } 8 | 9 | .form-login { 10 | display: flex; 11 | flex-flow: column; 12 | width: 40%; 13 | } 14 | 15 | 16 | -------------------------------------------------------------------------------- /lab-05/app/src/app/login/login.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { LoginComponent } from './login.component'; 4 | 5 | describe('LoginComponent', () => { 6 | let component: LoginComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ LoginComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(LoginComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /lab-05/app/src/app/login/login.module.ts: -------------------------------------------------------------------------------- 1 | //Modules 2 | import { SharedModule } from "../shared/shared.module"; 3 | import { NgModule } from '@angular/core'; 4 | import { CommonModule } from '@angular/common'; 5 | 6 | 7 | //Components 8 | import { LoginComponent } from './login.component'; 9 | import { SignupComponent } from './signup/signup.component'; 10 | 11 | @NgModule({ 12 | declarations: [LoginComponent, SignupComponent], 13 | imports: [ 14 | CommonModule, 15 | SharedModule 16 | ] 17 | }) 18 | export class LoginModule { } 19 | -------------------------------------------------------------------------------- /lab-05/app/src/app/login/signup/signup.component.html: -------------------------------------------------------------------------------- 1 |
2 |

Signup

3 | 4 | 19 |
20 | -------------------------------------------------------------------------------- /lab-05/app/src/app/login/signup/signup.component.scss: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | justify-content: center; 4 | flex-direction: column; 5 | align-items: center; 6 | justify-content: center; 7 | } 8 | 9 | .form-signup { 10 | display: flex; 11 | flex-flow: column; 12 | width: 40%; 13 | } 14 | -------------------------------------------------------------------------------- /lab-05/app/src/app/login/signup/signup.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { SignupComponent } from './signup.component'; 4 | 5 | describe('SignupComponent', () => { 6 | let component: SignupComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ SignupComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(SignupComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /lab-05/app/src/app/models/event.ts: -------------------------------------------------------------------------------- 1 | export interface Event { 2 | id: string; 3 | title: string; 4 | location: string; 5 | date: Date; 6 | description: string; 7 | addedBy: string; 8 | } 9 | -------------------------------------------------------------------------------- /lab-05/app/src/app/models/user.ts: -------------------------------------------------------------------------------- 1 | export interface User { 2 | id: string; 3 | email: string; 4 | password: string; 5 | } 6 | -------------------------------------------------------------------------------- /lab-05/app/src/app/page-not-found/page-not-found.component.html: -------------------------------------------------------------------------------- 1 |

2 | Page no found! 3 |

4 | -------------------------------------------------------------------------------- /lab-05/app/src/app/page-not-found/page-not-found.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-05/app/src/app/page-not-found/page-not-found.component.scss -------------------------------------------------------------------------------- /lab-05/app/src/app/page-not-found/page-not-found.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'oevents-page-not-found', 5 | templateUrl: './page-not-found.component.html', 6 | styleUrls: ['./page-not-found.component.scss'] 7 | }) 8 | export class PageNotFoundComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /lab-05/app/src/app/profile/profile.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |

ID:

5 | {{user.id}} 6 |
7 | 8 |
9 |

Email:

10 | {{user.email}} 11 |
12 |
13 |
14 | -------------------------------------------------------------------------------- /lab-05/app/src/app/profile/profile.component.scss: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | justify-content: center; 4 | align-items: center; 5 | } 6 | 7 | .userData { 8 | margin-top: 5rem; 9 | 10 | h4 { 11 | display: inline-block; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /lab-05/app/src/app/profile/profile.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { ProfileComponent } from './profile.component'; 4 | 5 | describe('ProfileComponent', () => { 6 | let component: ProfileComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ ProfileComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(ProfileComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /lab-05/app/src/app/profile/profile.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import { UserService } from "../core/user.service"; 3 | import { User } from '../models/user'; 4 | 5 | 6 | @Component({ 7 | selector: 'oevents-profile', 8 | templateUrl: './profile.component.html', 9 | styleUrls: ['./profile.component.scss'] 10 | }) 11 | export class ProfileComponent implements OnInit { 12 | user: User; 13 | 14 | constructor(private userService: UserService) { } 15 | 16 | ngOnInit() { 17 | this.getUser(); 18 | } 19 | 20 | getUser() { 21 | this.user = JSON.parse(localStorage.getItem("user")); 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /lab-05/app/src/app/profile/profile.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { CommonModule } from '@angular/common'; 3 | import { ProfileComponent } from './profile.component'; 4 | 5 | @NgModule({ 6 | declarations: [ProfileComponent], 7 | imports: [ 8 | CommonModule 9 | ] 10 | }) 11 | export class ProfileModule { } 12 | -------------------------------------------------------------------------------- /lab-05/app/src/app/toolbar/toolbar.component.html: -------------------------------------------------------------------------------- 1 | 2 | Home 3 | Events 4 | Profile 5 | Login 6 | {{user.email}} - Logout 7 | 8 | -------------------------------------------------------------------------------- /lab-05/app/src/app/toolbar/toolbar.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-05/app/src/app/toolbar/toolbar.component.scss -------------------------------------------------------------------------------- /lab-05/app/src/app/toolbar/toolbar.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { ToolbarComponent } from './toolbar.component'; 4 | 5 | describe('ToolbarComponent', () => { 6 | let component: ToolbarComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ ToolbarComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(ToolbarComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /lab-05/app/src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-05/app/src/assets/.gitkeep -------------------------------------------------------------------------------- /lab-05/app/src/browserslist: -------------------------------------------------------------------------------- 1 | # This file is currently used by autoprefixer to adjust CSS to support the below specified browsers 2 | # For additional information regarding the format and rule options, please see: 3 | # https://github.com/browserslist/browserslist#queries 4 | # 5 | # For IE 9-11 support, please remove 'not' from the last line of the file and adjust as needed 6 | 7 | > 0.5% 8 | last 2 versions 9 | Firefox ESR 10 | not dead 11 | not IE 9-11 -------------------------------------------------------------------------------- /lab-05/app/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true, 3 | apiURL: "prod_url" 4 | }; 5 | -------------------------------------------------------------------------------- /lab-05/app/src/environments/environment.ts: -------------------------------------------------------------------------------- 1 | // This file can be replaced during build by using the `fileReplacements` array. 2 | // `ng build --prod` replaces `environment.ts` with `environment.prod.ts`. 3 | // The list of file replacements can be found in `angular.json`. 4 | 5 | export const environment = { 6 | production: false, 7 | apiURL: "http://localhost:3000/" 8 | }; 9 | 10 | /* 11 | * For easier debugging in development mode, you can import the following file 12 | * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. 13 | * 14 | * This import should be commented out in production mode because it will have a negative impact 15 | * on performance if an error is thrown. 16 | */ 17 | // import 'zone.js/dist/zone-error'; // Included with Angular CLI. 18 | -------------------------------------------------------------------------------- /lab-05/app/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-05/app/src/favicon.ico -------------------------------------------------------------------------------- /lab-05/app/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | OpenEventsFront 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /lab-05/app/src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic().bootstrapModule(AppModule) 12 | .catch(err => console.error(err)); 13 | -------------------------------------------------------------------------------- /lab-05/app/src/styles.scss: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | @import "@angular/material/prebuilt-themes/indigo-pink.css"; 3 | 4 | * { 5 | box-sizing: border-box; 6 | } 7 | 8 | .activeLink { 9 | color: #f95151; 10 | } 11 | -------------------------------------------------------------------------------- /lab-05/app/src/test.ts: -------------------------------------------------------------------------------- 1 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files 2 | 3 | import 'zone.js/dist/zone-testing'; 4 | import { getTestBed } from '@angular/core/testing'; 5 | import { 6 | BrowserDynamicTestingModule, 7 | platformBrowserDynamicTesting 8 | } from '@angular/platform-browser-dynamic/testing'; 9 | 10 | declare const require: any; 11 | 12 | // First, initialize the Angular testing environment. 13 | getTestBed().initTestEnvironment( 14 | BrowserDynamicTestingModule, 15 | platformBrowserDynamicTesting() 16 | ); 17 | // Then we find all the tests. 18 | const context = require.context('./', true, /\.spec\.ts$/); 19 | // And load the modules. 20 | context.keys().map(context); 21 | -------------------------------------------------------------------------------- /lab-05/app/src/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/app", 5 | "types": [] 6 | }, 7 | "exclude": [ 8 | "test.ts", 9 | "**/*.spec.ts" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /lab-05/app/src/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/spec", 5 | "types": [ 6 | "jasmine", 7 | "node" 8 | ] 9 | }, 10 | "files": [ 11 | "test.ts", 12 | "polyfills.ts" 13 | ], 14 | "include": [ 15 | "**/*.spec.ts", 16 | "**/*.d.ts" 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /lab-05/app/src/tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tslint.json", 3 | "rules": { 4 | "directive-selector": [ 5 | true, 6 | "attribute", 7 | "oevents", 8 | "camelCase" 9 | ], 10 | "component-selector": [ 11 | true, 12 | "element", 13 | "oevents", 14 | "kebab-case" 15 | ] 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /lab-05/app/stylelintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "stylelint-config-standard", 3 | "rules": { 4 | "at-rule-no-unknown": [true, 5 | "ignoreAtRules": ["include"] 6 | ], 7 | "at-rule-no-vendor-prefix": true, 8 | "declaration-no-important": true, 9 | "font-family-name-quotes": "always-where-recommended", 10 | "function-url-quotes": "always", 11 | "max-nesting-depth": 2, 12 | "media-feature-name-no-vendor-prefix": true, 13 | "property-no-vendor-prefix": true, 14 | "property-no-unknown": true, 15 | "selector-attribute-quotes": "always", 16 | "selector-max-compound-selectors": 4, 17 | "selector-no-vendor-prefix": true, 18 | "unit-whitelist": ["px", "%", "deg", "ms", "s", "rem", "vh", "vw"], 19 | "value-no-vendor-prefix": true 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /lab-05/app/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compileOnSave": false, 3 | "compilerOptions": { 4 | "baseUrl": "./", 5 | "outDir": "./dist/out-tsc", 6 | "sourceMap": true, 7 | "declaration": false, 8 | "module": "es2015", 9 | "moduleResolution": "node", 10 | "emitDecoratorMetadata": true, 11 | "experimentalDecorators": true, 12 | "importHelpers": true, 13 | "target": "es5", 14 | "typeRoots": [ 15 | "node_modules/@types" 16 | ], 17 | "lib": [ 18 | "es2018", 19 | "dom" 20 | ] 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /lab-05/resources/logged-in.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-05/resources/logged-in.png -------------------------------------------------------------------------------- /lab-05/resources/logged-out.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-05/resources/logged-out.png -------------------------------------------------------------------------------- /lab-05/resources/profile-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-05/resources/profile-view.png -------------------------------------------------------------------------------- /lab-05/resources/signup_link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-05/resources/signup_link.png -------------------------------------------------------------------------------- /lab-06/app/.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see https://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | max_line_length = off 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /lab-06/app/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "johnpapa.angular-essentials", 4 | "PKief.material-icon-theme", 5 | "rbbit.typescript-hero" 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /lab-06/app/e2e/src/app.e2e-spec.ts: -------------------------------------------------------------------------------- 1 | import { AppPage } from './app.po'; 2 | import { browser, logging } from 'protractor'; 3 | 4 | describe('workspace-project App', () => { 5 | let page: AppPage; 6 | 7 | beforeEach(() => { 8 | page = new AppPage(); 9 | }); 10 | 11 | it('should display welcome message', () => { 12 | page.navigateTo(); 13 | expect(page.getTitleText()).toEqual('Welcome to open-events-front!'); 14 | }); 15 | 16 | afterEach(async () => { 17 | // Assert that there are no errors emitted from the browser 18 | const logs = await browser.manage().logs().get(logging.Type.BROWSER); 19 | expect(logs).not.toContain(jasmine.objectContaining({ 20 | level: logging.Level.SEVERE, 21 | } as logging.Entry)); 22 | }); 23 | }); 24 | -------------------------------------------------------------------------------- /lab-06/app/e2e/src/app.po.ts: -------------------------------------------------------------------------------- 1 | import { browser, by, element } from 'protractor'; 2 | 3 | export class AppPage { 4 | navigateTo() { 5 | return browser.get(browser.baseUrl) as Promise; 6 | } 7 | 8 | getTitleText() { 9 | return element(by.css('oevents-root h1')).getText() as Promise; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /lab-06/app/e2e/tsconfig.e2e.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/app", 5 | "module": "commonjs", 6 | "target": "es5", 7 | "types": [ 8 | "jasmine", 9 | "jasminewd2", 10 | "node" 11 | ] 12 | } 13 | } -------------------------------------------------------------------------------- /lab-06/app/src/app/app.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 |
5 | -------------------------------------------------------------------------------- /lab-06/app/src/app/app.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-06/app/src/app/app.component.scss -------------------------------------------------------------------------------- /lab-06/app/src/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { Store } from '@ngrx/store'; 3 | import * as login from './store/login/login.actions'; 4 | import { UserService } from "./core/user.service"; 5 | 6 | @Component({ 7 | selector: 'oevents-root', 8 | templateUrl: './app.component.html', 9 | styleUrls: ['./app.component.scss'] 10 | }) 11 | export class AppComponent { 12 | title = 'open-events-front'; 13 | 14 | constructor( 15 | private userService: UserService, 16 | private store: Store 17 | ) { 18 | this.userService.checkUser() ? this.store.dispatch(new login.Logged(true)) : this.store.dispatch(new login.Logged(false)) 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /lab-06/app/src/app/app.store.ts: -------------------------------------------------------------------------------- 1 | import { ActionReducerMap } from '@ngrx/store'; 2 | 3 | import * as loginReducer from './store/login/login.redux'; 4 | import * as layoutReducer from './store/layout/layout.redux'; 5 | 6 | 7 | export interface State { 8 | login: loginReducer.State; 9 | layout: layoutReducer.State; 10 | } 11 | 12 | export const reducers: ActionReducerMap = { 13 | login: loginReducer.reducer, 14 | layout: layoutReducer.reducer 15 | } 16 | -------------------------------------------------------------------------------- /lab-06/app/src/app/core/auth-guard.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | import { CanActivate, Router } from '@angular/router'; 3 | import { UserService } from "../core/user.service"; 4 | 5 | 6 | @Injectable() 7 | export class AuthGuard implements CanActivate { 8 | 9 | constructor( 10 | public router: Router, 11 | private userService: UserService 12 | ) {} 13 | 14 | canActivate(): boolean { 15 | return this.checkLogin(); 16 | } 17 | 18 | checkLogin(): boolean { 19 | if(this.userService.checkUser()) { 20 | return true; 21 | } else { 22 | this.router.navigate(['/login']); 23 | return false; 24 | } 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /lab-06/app/src/app/core/core.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from "@angular/core"; 2 | import { CommonModule } from "@angular/common"; 3 | import { HttpClientModule } from "@angular/common/http"; 4 | 5 | import { EventService } from "./event.service"; 6 | import { UserService } from "./user.service"; 7 | 8 | @NgModule({ 9 | declarations: [], 10 | imports: [CommonModule, HttpClientModule], 11 | providers: [EventService, UserService] 12 | }) 13 | export class CoreModule {} 14 | -------------------------------------------------------------------------------- /lab-06/app/src/app/core/event.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed } from '@angular/core/testing'; 2 | 3 | import { EventService } from './event.service'; 4 | 5 | describe('EventService', () => { 6 | beforeEach(() => TestBed.configureTestingModule({})); 7 | 8 | it('should be created', () => { 9 | const service: EventService = TestBed.get(EventService); 10 | expect(service).toBeTruthy(); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /lab-06/app/src/app/events/add-edit-event/add-edit-event.component.scss: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | justify-content: center; 4 | flex-direction: column; 5 | align-items: center; 6 | justify-content: center; 7 | } 8 | form { 9 | display: flex; 10 | flex-flow: column; 11 | width: 40%; 12 | } 13 | 14 | #save-btn { 15 | display: flex; 16 | justify-content: flex-end; 17 | } 18 | -------------------------------------------------------------------------------- /lab-06/app/src/app/events/event-details/event-details.component.scss: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | justify-content: center; 4 | flex-direction: column; 5 | align-items: center; 6 | justify-content: center; 7 | } 8 | 9 | #event-card-details { 10 | display: flex; 11 | flex: 1; 12 | flex-flow: column; 13 | margin: 2%; 14 | max-width: 800px; 15 | } 16 | 17 | #edit-event-btn { 18 | display: flex; 19 | justify-content: flex-end; 20 | margin-bottom: 15px; 21 | } 22 | 23 | #delete-btn { 24 | margin-right: 5px; 25 | } 26 | -------------------------------------------------------------------------------- /lab-06/app/src/app/events/event-list/event-list.component.scss: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | justify-content: center; 4 | flex-flow: column; 5 | margin: 10%; 6 | margin-top: 2%; 7 | } 8 | 9 | #add-event-btn { 10 | display: flex; 11 | justify-content: flex-end; 12 | } 13 | 14 | button { 15 | max-width: 100px; 16 | } 17 | 18 | table { 19 | width: 100%; 20 | margin-top: 10px; 21 | } 22 | -------------------------------------------------------------------------------- /lab-06/app/src/app/events/events.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from "@angular/core"; 2 | import { CommonModule } from "@angular/common"; 3 | 4 | //Modules 5 | import { SharedModule } from "../shared/shared.module"; 6 | 7 | // Components 8 | import { EventListComponent } from "./event-list/event-list.component"; 9 | import { EventDetailsComponent } from "./event-details/event-details.component"; 10 | import { AddEditEventComponent } from "./add-edit-event/add-edit-event.component"; 11 | // import { AppRoutingModule } from "../app-routing.module"; 12 | 13 | @NgModule({ 14 | imports: [CommonModule, SharedModule], 15 | declarations: [ 16 | EventListComponent, 17 | EventDetailsComponent, 18 | AddEditEventComponent 19 | ] 20 | }) 21 | export class EventsModule {} 22 | -------------------------------------------------------------------------------- /lab-06/app/src/app/landing-page/landing-page.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |

Open Events App

4 |
5 | 6 |
7 |

All our events

8 |
9 | 10 |
11 |

12 | A new and fresh application to host all our tech events crafted from 13 | Accenture Openathons 14 |

15 |
16 |
17 | -------------------------------------------------------------------------------- /lab-06/app/src/app/landing-page/landing-page.component.scss: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | flex-flow: column; 4 | text-align: center; 5 | } 6 | 7 | .title, 8 | .subtitle, 9 | .message { 10 | padding: 1rem; 11 | } 12 | 13 | .title { 14 | color: #8bc34a; 15 | } 16 | 17 | .subtitle { 18 | } 19 | 20 | .message { 21 | } 22 | -------------------------------------------------------------------------------- /lab-06/app/src/app/landing-page/landing-page.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'oevents-landing-page', 5 | templateUrl: './landing-page.component.html', 6 | styleUrls: ['./landing-page.component.scss'] 7 | }) 8 | export class LandingPageComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /lab-06/app/src/app/login/login.component.scss: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | justify-content: center; 4 | flex-direction: column; 5 | align-items: center; 6 | justify-content: center; 7 | } 8 | 9 | .form-login { 10 | display: flex; 11 | flex-flow: column; 12 | width: 40%; 13 | } 14 | 15 | 16 | -------------------------------------------------------------------------------- /lab-06/app/src/app/login/login.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { LoginComponent } from './login.component'; 4 | 5 | describe('LoginComponent', () => { 6 | let component: LoginComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ LoginComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(LoginComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /lab-06/app/src/app/login/login.module.ts: -------------------------------------------------------------------------------- 1 | //Modules 2 | import { SharedModule } from "../shared/shared.module"; 3 | import { NgModule } from '@angular/core'; 4 | import { CommonModule } from '@angular/common'; 5 | 6 | 7 | //Components 8 | import { LoginComponent } from './login.component'; 9 | import { SignupComponent } from './signup/signup.component'; 10 | 11 | @NgModule({ 12 | declarations: [LoginComponent, SignupComponent], 13 | imports: [ 14 | CommonModule, 15 | SharedModule 16 | ] 17 | }) 18 | export class LoginModule { } 19 | -------------------------------------------------------------------------------- /lab-06/app/src/app/login/signup/signup.component.html: -------------------------------------------------------------------------------- 1 |
2 |

Signup

3 | 4 | 19 |
20 | -------------------------------------------------------------------------------- /lab-06/app/src/app/login/signup/signup.component.scss: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | justify-content: center; 4 | flex-direction: column; 5 | align-items: center; 6 | justify-content: center; 7 | } 8 | 9 | .form-signup { 10 | display: flex; 11 | flex-flow: column; 12 | width: 40%; 13 | } 14 | -------------------------------------------------------------------------------- /lab-06/app/src/app/login/signup/signup.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { SignupComponent } from './signup.component'; 4 | 5 | describe('SignupComponent', () => { 6 | let component: SignupComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ SignupComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(SignupComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /lab-06/app/src/app/models/event.ts: -------------------------------------------------------------------------------- 1 | export interface Event { 2 | id: string; 3 | title: string; 4 | location: string; 5 | date: Date; 6 | description: string; 7 | addedBy: string; 8 | } 9 | -------------------------------------------------------------------------------- /lab-06/app/src/app/models/user.ts: -------------------------------------------------------------------------------- 1 | export interface User { 2 | id: string; 3 | email: string; 4 | password: string; 5 | } 6 | -------------------------------------------------------------------------------- /lab-06/app/src/app/page-not-found/page-not-found.component.html: -------------------------------------------------------------------------------- 1 |

2 | Page no found! 3 |

4 | -------------------------------------------------------------------------------- /lab-06/app/src/app/page-not-found/page-not-found.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-06/app/src/app/page-not-found/page-not-found.component.scss -------------------------------------------------------------------------------- /lab-06/app/src/app/page-not-found/page-not-found.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'oevents-page-not-found', 5 | templateUrl: './page-not-found.component.html', 6 | styleUrls: ['./page-not-found.component.scss'] 7 | }) 8 | export class PageNotFoundComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /lab-06/app/src/app/profile/profile.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |

ID:

5 | {{user.id}} 6 |
7 | 8 |
9 |

Email:

10 | {{user.email}} 11 |
12 |
13 |
14 | -------------------------------------------------------------------------------- /lab-06/app/src/app/profile/profile.component.scss: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | justify-content: center; 4 | align-items: center; 5 | } 6 | 7 | .userData { 8 | margin-top: 5rem; 9 | 10 | h4 { 11 | display: inline-block; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /lab-06/app/src/app/profile/profile.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { ProfileComponent } from './profile.component'; 4 | 5 | describe('ProfileComponent', () => { 6 | let component: ProfileComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ ProfileComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(ProfileComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /lab-06/app/src/app/profile/profile.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import { UserService } from "../core/user.service"; 3 | import { User } from '../models/user'; 4 | 5 | 6 | @Component({ 7 | selector: 'oevents-profile', 8 | templateUrl: './profile.component.html', 9 | styleUrls: ['./profile.component.scss'] 10 | }) 11 | export class ProfileComponent implements OnInit { 12 | user: User; 13 | 14 | constructor(private userService: UserService) { } 15 | 16 | ngOnInit() { 17 | this.getUser(); 18 | } 19 | 20 | getUser() { 21 | this.user = JSON.parse(localStorage.getItem("user")); 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /lab-06/app/src/app/profile/profile.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { CommonModule } from '@angular/common'; 3 | import { ProfileComponent } from './profile.component'; 4 | 5 | @NgModule({ 6 | declarations: [ProfileComponent], 7 | imports: [ 8 | CommonModule 9 | ] 10 | }) 11 | export class ProfileModule { } 12 | -------------------------------------------------------------------------------- /lab-06/app/src/app/store/login/login.actions.ts: -------------------------------------------------------------------------------- 1 | import { Action } from '@ngrx/store' 2 | 3 | export const LOGGED = 'login/logged' 4 | 5 | export class Logged implements Action { 6 | readonly type = LOGGED; 7 | 8 | constructor(public payload: boolean) {} 9 | } 10 | 11 | 12 | export type Actions = Logged; 13 | -------------------------------------------------------------------------------- /lab-06/app/src/app/store/login/login.redux.ts: -------------------------------------------------------------------------------- 1 | import * as login from './login.actions'; 2 | 3 | export interface State { 4 | logged: boolean; 5 | } 6 | 7 | export const initialState: State = { 8 | logged: false 9 | } 10 | 11 | export function reducer(state: State = initialState, action: login.Actions): State { 12 | switch (action.type) { 13 | case login.LOGGED: 14 | return { 15 | ...state, 16 | logged: action.payload 17 | } 18 | 19 | default: 20 | return state; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /lab-06/app/src/app/toolbar/toolbar.component.html: -------------------------------------------------------------------------------- 1 | 2 | Home 3 | Events 4 | Profile 5 | Login 6 | {{user.email}} - Logout 7 | 8 | -------------------------------------------------------------------------------- /lab-06/app/src/app/toolbar/toolbar.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-06/app/src/app/toolbar/toolbar.component.scss -------------------------------------------------------------------------------- /lab-06/app/src/app/toolbar/toolbar.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { ToolbarComponent } from './toolbar.component'; 4 | 5 | describe('ToolbarComponent', () => { 6 | let component: ToolbarComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ ToolbarComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(ToolbarComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /lab-06/app/src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-06/app/src/assets/.gitkeep -------------------------------------------------------------------------------- /lab-06/app/src/browserslist: -------------------------------------------------------------------------------- 1 | # This file is currently used by autoprefixer to adjust CSS to support the below specified browsers 2 | # For additional information regarding the format and rule options, please see: 3 | # https://github.com/browserslist/browserslist#queries 4 | # 5 | # For IE 9-11 support, please remove 'not' from the last line of the file and adjust as needed 6 | 7 | > 0.5% 8 | last 2 versions 9 | Firefox ESR 10 | not dead 11 | not IE 9-11 -------------------------------------------------------------------------------- /lab-06/app/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true, 3 | apiURL: "prod_url" 4 | }; 5 | -------------------------------------------------------------------------------- /lab-06/app/src/environments/environment.ts: -------------------------------------------------------------------------------- 1 | // This file can be replaced during build by using the `fileReplacements` array. 2 | // `ng build --prod` replaces `environment.ts` with `environment.prod.ts`. 3 | // The list of file replacements can be found in `angular.json`. 4 | 5 | export const environment = { 6 | production: false, 7 | apiURL: "http://localhost:3000/" 8 | }; 9 | 10 | /* 11 | * For easier debugging in development mode, you can import the following file 12 | * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. 13 | * 14 | * This import should be commented out in production mode because it will have a negative impact 15 | * on performance if an error is thrown. 16 | */ 17 | // import 'zone.js/dist/zone-error'; // Included with Angular CLI. 18 | -------------------------------------------------------------------------------- /lab-06/app/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-06/app/src/favicon.ico -------------------------------------------------------------------------------- /lab-06/app/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | OpenEventsFront 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /lab-06/app/src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic().bootstrapModule(AppModule) 12 | .catch(err => console.error(err)); 13 | -------------------------------------------------------------------------------- /lab-06/app/src/styles.scss: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | @import "@angular/material/prebuilt-themes/indigo-pink.css"; 3 | 4 | * { 5 | box-sizing: border-box; 6 | } 7 | 8 | .activeLink { 9 | color: #f95151; 10 | } 11 | -------------------------------------------------------------------------------- /lab-06/app/src/test.ts: -------------------------------------------------------------------------------- 1 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files 2 | 3 | import 'zone.js/dist/zone-testing'; 4 | import { getTestBed } from '@angular/core/testing'; 5 | import { 6 | BrowserDynamicTestingModule, 7 | platformBrowserDynamicTesting 8 | } from '@angular/platform-browser-dynamic/testing'; 9 | 10 | declare const require: any; 11 | 12 | // First, initialize the Angular testing environment. 13 | getTestBed().initTestEnvironment( 14 | BrowserDynamicTestingModule, 15 | platformBrowserDynamicTesting() 16 | ); 17 | // Then we find all the tests. 18 | const context = require.context('./', true, /\.spec\.ts$/); 19 | // And load the modules. 20 | context.keys().map(context); 21 | -------------------------------------------------------------------------------- /lab-06/app/src/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/app", 5 | "types": [] 6 | }, 7 | "exclude": [ 8 | "test.ts", 9 | "**/*.spec.ts" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /lab-06/app/src/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/spec", 5 | "types": [ 6 | "jasmine", 7 | "node" 8 | ] 9 | }, 10 | "files": [ 11 | "test.ts", 12 | "polyfills.ts" 13 | ], 14 | "include": [ 15 | "**/*.spec.ts", 16 | "**/*.d.ts" 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /lab-06/app/src/tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tslint.json", 3 | "rules": { 4 | "directive-selector": [ 5 | true, 6 | "attribute", 7 | "oevents", 8 | "camelCase" 9 | ], 10 | "component-selector": [ 11 | true, 12 | "element", 13 | "oevents", 14 | "kebab-case" 15 | ] 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /lab-06/app/stylelintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "stylelint-config-standard", 3 | "rules": { 4 | "at-rule-no-unknown": [true, 5 | "ignoreAtRules": ["include"] 6 | ], 7 | "at-rule-no-vendor-prefix": true, 8 | "declaration-no-important": true, 9 | "font-family-name-quotes": "always-where-recommended", 10 | "function-url-quotes": "always", 11 | "max-nesting-depth": 2, 12 | "media-feature-name-no-vendor-prefix": true, 13 | "property-no-vendor-prefix": true, 14 | "property-no-unknown": true, 15 | "selector-attribute-quotes": "always", 16 | "selector-max-compound-selectors": 4, 17 | "selector-no-vendor-prefix": true, 18 | "unit-whitelist": ["px", "%", "deg", "ms", "s", "rem", "vh", "vw"], 19 | "value-no-vendor-prefix": true 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /lab-06/app/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compileOnSave": false, 3 | "compilerOptions": { 4 | "baseUrl": "./", 5 | "outDir": "./dist/out-tsc", 6 | "sourceMap": true, 7 | "declaration": false, 8 | "module": "es2015", 9 | "moduleResolution": "node", 10 | "emitDecoratorMetadata": true, 11 | "experimentalDecorators": true, 12 | "importHelpers": true, 13 | "target": "es5", 14 | "typeRoots": [ 15 | "node_modules/@types" 16 | ], 17 | "lib": [ 18 | "es2018", 19 | "dom" 20 | ] 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /lab-06/resources/CentralState.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-06/resources/CentralState.png -------------------------------------------------------------------------------- /lab-06/resources/CentralStateEffects.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-06/resources/CentralStateEffects.png -------------------------------------------------------------------------------- /lab-06/resources/breadcrumbs.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-06/resources/breadcrumbs.jpg -------------------------------------------------------------------------------- /lab-06/resources/new_structure_store.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-06/resources/new_structure_store.png -------------------------------------------------------------------------------- /lab-07/app/.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see https://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | max_line_length = off 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /lab-07/app/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "johnpapa.angular-essentials", 4 | "PKief.material-icon-theme", 5 | "rbbit.typescript-hero" 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Black.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Black.eot -------------------------------------------------------------------------------- /lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Black.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Black.woff -------------------------------------------------------------------------------- /lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Black.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Black.woff2 -------------------------------------------------------------------------------- /lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Bold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Bold.eot -------------------------------------------------------------------------------- /lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Bold.woff -------------------------------------------------------------------------------- /lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Bold.woff2 -------------------------------------------------------------------------------- /lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Extralight.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Extralight.eot -------------------------------------------------------------------------------- /lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Extralight.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Extralight.woff -------------------------------------------------------------------------------- /lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Extralight.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Extralight.woff2 -------------------------------------------------------------------------------- /lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Light.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Light.eot -------------------------------------------------------------------------------- /lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Light.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Light.woff -------------------------------------------------------------------------------- /lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Light.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Light.woff2 -------------------------------------------------------------------------------- /lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Medium.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Medium.eot -------------------------------------------------------------------------------- /lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Medium.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Medium.woff -------------------------------------------------------------------------------- /lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Medium.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Medium.woff2 -------------------------------------------------------------------------------- /lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Regular.eot -------------------------------------------------------------------------------- /lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Regular.woff -------------------------------------------------------------------------------- /lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Regular.woff2 -------------------------------------------------------------------------------- /lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-RegularItalic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-RegularItalic.eot -------------------------------------------------------------------------------- /lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-RegularItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-RegularItalic.woff -------------------------------------------------------------------------------- /lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-RegularItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-RegularItalic.woff2 -------------------------------------------------------------------------------- /lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Semibold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Semibold.eot -------------------------------------------------------------------------------- /lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Semibold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Semibold.woff -------------------------------------------------------------------------------- /lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Semibold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Semibold.woff2 -------------------------------------------------------------------------------- /lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Super.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Super.eot -------------------------------------------------------------------------------- /lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Super.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Super.woff -------------------------------------------------------------------------------- /lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Super.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Super.woff2 -------------------------------------------------------------------------------- /lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Thin.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Thin.eot -------------------------------------------------------------------------------- /lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Thin.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Thin.woff -------------------------------------------------------------------------------- /lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Thin.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/dist/open-events-front/assets/fonts/graphik/Graphik-Thin.woff2 -------------------------------------------------------------------------------- /lab-07/app/dist/open-events-front/assets/imgs/logo_open_eng.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/dist/open-events-front/assets/imgs/logo_open_eng.png -------------------------------------------------------------------------------- /lab-07/app/dist/open-events-front/assets/imgs/patt1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/dist/open-events-front/assets/imgs/patt1.png -------------------------------------------------------------------------------- /lab-07/app/dist/open-events-front/assets/imgs/patt2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/dist/open-events-front/assets/imgs/patt2.png -------------------------------------------------------------------------------- /lab-07/app/dist/open-events-front/assets/imgs/patt3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/dist/open-events-front/assets/imgs/patt3.png -------------------------------------------------------------------------------- /lab-07/app/dist/open-events-front/assets/imgs/patt4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/dist/open-events-front/assets/imgs/patt4.png -------------------------------------------------------------------------------- /lab-07/app/dist/open-events-front/assets/imgs/patt5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/dist/open-events-front/assets/imgs/patt5.png -------------------------------------------------------------------------------- /lab-07/app/dist/open-events-front/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/dist/open-events-front/favicon.ico -------------------------------------------------------------------------------- /lab-07/app/e2e/src/app.e2e-spec.ts: -------------------------------------------------------------------------------- 1 | import { AppPage } from './app.po'; 2 | import { browser, logging } from 'protractor'; 3 | 4 | describe('workspace-project App', () => { 5 | let page: AppPage; 6 | 7 | beforeEach(() => { 8 | page = new AppPage(); 9 | }); 10 | 11 | it('should display welcome message', () => { 12 | page.navigateTo(); 13 | expect(page.getTitleText()).toEqual('Welcome to open-events-front!'); 14 | }); 15 | 16 | afterEach(async () => { 17 | // Assert that there are no errors emitted from the browser 18 | const logs = await browser.manage().logs().get(logging.Type.BROWSER); 19 | expect(logs).not.toContain(jasmine.objectContaining({ 20 | level: logging.Level.SEVERE, 21 | } as logging.Entry)); 22 | }); 23 | }); 24 | -------------------------------------------------------------------------------- /lab-07/app/e2e/src/app.po.ts: -------------------------------------------------------------------------------- 1 | import { browser, by, element } from 'protractor'; 2 | 3 | export class AppPage { 4 | navigateTo() { 5 | return browser.get(browser.baseUrl) as Promise; 6 | } 7 | 8 | getTitleText() { 9 | return element(by.css('oevents-root h1')).getText() as Promise; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /lab-07/app/e2e/tsconfig.e2e.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/app", 5 | "module": "commonjs", 6 | "target": "es5", 7 | "types": [ 8 | "jasmine", 9 | "jasminewd2", 10 | "node" 11 | ] 12 | } 13 | } -------------------------------------------------------------------------------- /lab-07/app/server.js: -------------------------------------------------------------------------------- 1 | const jsonServer = require('json-server') 2 | const server = jsonServer.create() 3 | const router = jsonServer.router('db.json') 4 | const middlewares = jsonServer.defaults() 5 | 6 | server.use(middlewares) 7 | server.use(router) 8 | server.listen(3000, () => { 9 | console.log('JSON Server is running') 10 | }) 11 | -------------------------------------------------------------------------------- /lab-07/app/src/app/app.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | 5 |
6 |
7 | -------------------------------------------------------------------------------- /lab-07/app/src/app/app.component.scss: -------------------------------------------------------------------------------- 1 | @import './shared/styles/variables'; 2 | 3 | 4 | .container { 5 | width: 100%; 6 | height: 100%; 7 | } 8 | 9 | .content { 10 | height: calc(100% - 64px); 11 | 12 | @media(max-width: $screen-sm) { 13 | height: calc(100% - 56px); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /lab-07/app/src/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { Store } from '@ngrx/store'; 3 | import * as login from './store/login/login.actions'; 4 | import { UserService } from "./core/user.service"; 5 | 6 | @Component({ 7 | selector: 'oevents-root', 8 | templateUrl: './app.component.html', 9 | styleUrls: ['./app.component.scss'] 10 | }) 11 | export class AppComponent { 12 | title = 'open-events-front'; 13 | 14 | constructor( 15 | private userService: UserService, 16 | private store: Store 17 | ) { 18 | this.userService.checkUser() ? this.store.dispatch(new login.Logged(true)) : this.store.dispatch(new login.Logged(false)) 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /lab-07/app/src/app/app.store.ts: -------------------------------------------------------------------------------- 1 | import { ActionReducerMap } from '@ngrx/store'; 2 | 3 | import * as loginReducer from './store/login/login.redux'; 4 | import * as layoutReducer from './store/layout/layout.redux'; 5 | 6 | 7 | export interface State { 8 | login: loginReducer.State; 9 | layout: layoutReducer.State; 10 | } 11 | 12 | export const reducers: ActionReducerMap = { 13 | login: loginReducer.reducer, 14 | layout: layoutReducer.reducer 15 | } 16 | -------------------------------------------------------------------------------- /lab-07/app/src/app/core/auth-guard.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | import { CanActivate, Router } from '@angular/router'; 3 | import { UserService } from "../core/user.service"; 4 | 5 | 6 | @Injectable() 7 | export class AuthGuard implements CanActivate { 8 | 9 | constructor( 10 | public router: Router, 11 | private userService: UserService 12 | ) {} 13 | 14 | canActivate(): boolean { 15 | return this.checkLogin(); 16 | } 17 | 18 | checkLogin(): boolean { 19 | if(this.userService.checkUser()) { 20 | return true; 21 | } else { 22 | this.router.navigate(['/login']); 23 | return false; 24 | } 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /lab-07/app/src/app/core/core.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from "@angular/core"; 2 | import { CommonModule } from "@angular/common"; 3 | import { HttpClientModule } from "@angular/common/http"; 4 | 5 | import { EventService } from "./event.service"; 6 | import { UserService } from "./user.service"; 7 | import { ImagesService } from "./images.service"; 8 | 9 | @NgModule({ 10 | declarations: [], 11 | imports: [CommonModule, HttpClientModule], 12 | providers: [EventService, UserService, ImagesService] 13 | }) 14 | export class CoreModule {} 15 | -------------------------------------------------------------------------------- /lab-07/app/src/app/core/event.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed } from '@angular/core/testing'; 2 | 3 | import { EventService } from './event.service'; 4 | 5 | describe('EventService', () => { 6 | beforeEach(() => TestBed.configureTestingModule({})); 7 | 8 | it('should be created', () => { 9 | const service: EventService = TestBed.get(EventService); 10 | expect(service).toBeTruthy(); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /lab-07/app/src/app/events/add-edit-event/add-edit-event.component.scss: -------------------------------------------------------------------------------- 1 | // @import '../../shared/styles/colors'; 2 | @import '../../shared/styles/variables'; 3 | 4 | .container { 5 | @include container(); 6 | @include background('/assets/imgs/patt4.png', center, cover); 7 | } 8 | 9 | .form { 10 | display: flex; 11 | justify-content: center; 12 | } 13 | 14 | form { 15 | display: flex; 16 | flex-flow: column; 17 | width: 40%; 18 | font-family: $acn-font; 19 | } 20 | 21 | .save-btn { 22 | display: flex; 23 | justify-content: flex-end; 24 | } 25 | -------------------------------------------------------------------------------- /lab-07/app/src/app/events/events.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from "@angular/core"; 2 | import { CommonModule } from "@angular/common"; 3 | 4 | //Modules 5 | import { SharedModule } from "../shared/shared.module"; 6 | 7 | // Components 8 | import { EventListComponent } from "./event-list/event-list.component"; 9 | import { EventDetailsComponent } from "./event-details/event-details.component"; 10 | import { AddEditEventComponent } from "./add-edit-event/add-edit-event.component"; 11 | // import { AppRoutingModule } from "../app-routing.module"; 12 | 13 | @NgModule({ 14 | imports: [CommonModule, SharedModule], 15 | declarations: [ 16 | EventListComponent, 17 | EventDetailsComponent, 18 | AddEditEventComponent 19 | ] 20 | }) 21 | export class EventsModule {} 22 | -------------------------------------------------------------------------------- /lab-07/app/src/app/landing-page/landing-page.component.html: -------------------------------------------------------------------------------- 1 |
2 | 5 | 6 |
7 |

Open Events

8 |
9 | 10 |
11 |

All our events

12 |
13 | 14 |
15 |

16 | A new and fresh application to host all our tech events crafted from 17 | Accenture Openathons 18 |

19 |
20 |
21 | -------------------------------------------------------------------------------- /lab-07/app/src/app/landing-page/landing-page.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'oevents-landing-page', 5 | templateUrl: './landing-page.component.html', 6 | styleUrls: ['./landing-page.component.scss'] 7 | }) 8 | export class LandingPageComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /lab-07/app/src/app/login/login.component.scss: -------------------------------------------------------------------------------- 1 | // @import '../shared/styles/colors'; 2 | @import '../shared/styles/variables'; 3 | 4 | 5 | .container { 6 | @include container(); 7 | @include background('/assets/imgs/patt5.png', center, contain); 8 | } 9 | 10 | .form { 11 | display: flex; 12 | justify-content: center; 13 | } 14 | 15 | .form-login { 16 | display: flex; 17 | flex-flow: column; 18 | width: 40%; 19 | padding: 1rem; 20 | background-color: rgba(255,255,255,0.9); 21 | } 22 | 23 | .login-btn { 24 | text-align: right; 25 | margin-top: 2rem; 26 | 27 | .sign-up { 28 | font-size: 12px; 29 | margin-bottom: 0.5rem; 30 | 31 | a { 32 | font-weight: 600; 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /lab-07/app/src/app/login/login.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { LoginComponent } from './login.component'; 4 | 5 | describe('LoginComponent', () => { 6 | let component: LoginComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ LoginComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(LoginComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /lab-07/app/src/app/login/login.module.ts: -------------------------------------------------------------------------------- 1 | //Modules 2 | import { SharedModule } from "../shared/shared.module"; 3 | import { NgModule } from '@angular/core'; 4 | import { CommonModule } from '@angular/common'; 5 | 6 | 7 | //Components 8 | import { LoginComponent } from './login.component'; 9 | import { SignupComponent } from './signup/signup.component'; 10 | 11 | @NgModule({ 12 | declarations: [LoginComponent, SignupComponent], 13 | imports: [ 14 | CommonModule, 15 | SharedModule 16 | ] 17 | }) 18 | export class LoginModule { } 19 | -------------------------------------------------------------------------------- /lab-07/app/src/app/login/signup/signup.component.scss: -------------------------------------------------------------------------------- 1 | // @import '../../shared/styles/colors'; 2 | @import '../../shared/styles/variables'; 3 | 4 | 5 | .container { 6 | @include container(); 7 | @include background('/assets/imgs/patt5.png', center, contain); 8 | } 9 | 10 | .form { 11 | display: flex; 12 | justify-content: center; 13 | } 14 | 15 | .form-signup { 16 | display: flex; 17 | flex-flow: column; 18 | width: 40%; 19 | padding: 1rem; 20 | background-color: rgba(255,255,255,0.9); 21 | } 22 | 23 | .login-btn { 24 | text-align: right; 25 | margin-top: 2rem; 26 | 27 | .login { 28 | font-size: 12px; 29 | margin-bottom: 0.5rem; 30 | 31 | a { 32 | font-weight: 600; 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /lab-07/app/src/app/login/signup/signup.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { SignupComponent } from './signup.component'; 4 | 5 | describe('SignupComponent', () => { 6 | let component: SignupComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ SignupComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(SignupComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /lab-07/app/src/app/models/event.ts: -------------------------------------------------------------------------------- 1 | export interface Event { 2 | id: string; 3 | title: string; 4 | location: string; 5 | date: Date; 6 | description: string; 7 | addedBy: string; 8 | } 9 | -------------------------------------------------------------------------------- /lab-07/app/src/app/models/user.ts: -------------------------------------------------------------------------------- 1 | export interface User { 2 | id: string; 3 | email: string; 4 | password: string; 5 | } 6 | -------------------------------------------------------------------------------- /lab-07/app/src/app/page-not-found/page-not-found.component.html: -------------------------------------------------------------------------------- 1 |

2 | Page no found! 3 |

4 | -------------------------------------------------------------------------------- /lab-07/app/src/app/page-not-found/page-not-found.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/src/app/page-not-found/page-not-found.component.scss -------------------------------------------------------------------------------- /lab-07/app/src/app/page-not-found/page-not-found.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'oevents-page-not-found', 5 | templateUrl: './page-not-found.component.html', 6 | styleUrls: ['./page-not-found.component.scss'] 7 | }) 8 | export class PageNotFoundComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /lab-07/app/src/app/profile/profile.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |

User profile

4 |
5 | 6 |
7 |
8 |
9 |

ID:

10 | {{user.id}} 11 |
12 | 13 |
14 |

Email:

15 | {{user.email}} 16 |
17 |
18 |
19 |
20 | -------------------------------------------------------------------------------- /lab-07/app/src/app/profile/profile.component.scss: -------------------------------------------------------------------------------- 1 | // @import '../shared/styles/colors'; 2 | @import '../shared/styles/variables'; 3 | 4 | .container { 5 | @include container(); 6 | @include background('/assets/imgs/patt5.png', center, contain); 7 | } 8 | 9 | .wrap { 10 | display: flex; 11 | justify-content: center; 12 | } 13 | 14 | .userData { 15 | margin-top: 5rem; 16 | padding: 1rem; 17 | background-color: rgba(255,255,255,0.9); 18 | 19 | h4 { 20 | display: inline-block; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /lab-07/app/src/app/profile/profile.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { ProfileComponent } from './profile.component'; 4 | 5 | describe('ProfileComponent', () => { 6 | let component: ProfileComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ ProfileComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(ProfileComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /lab-07/app/src/app/profile/profile.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import { UserService } from "../core/user.service"; 3 | import { User } from '../models/user'; 4 | 5 | 6 | @Component({ 7 | selector: 'oevents-profile', 8 | templateUrl: './profile.component.html', 9 | styleUrls: ['./profile.component.scss'] 10 | }) 11 | export class ProfileComponent implements OnInit { 12 | user: User; 13 | 14 | constructor(private userService: UserService) { } 15 | 16 | ngOnInit() { 17 | this.getUser(); 18 | } 19 | 20 | getUser() { 21 | this.user = JSON.parse(localStorage.getItem("user")); 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /lab-07/app/src/app/profile/profile.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { CommonModule } from '@angular/common'; 3 | import { ProfileComponent } from './profile.component'; 4 | 5 | @NgModule({ 6 | declarations: [ProfileComponent], 7 | imports: [ 8 | CommonModule 9 | ] 10 | }) 11 | export class ProfileModule { } 12 | -------------------------------------------------------------------------------- /lab-07/app/src/app/shared/styles/colors.scss: -------------------------------------------------------------------------------- 1 | 2 | $black: #222222; 3 | $gray-white: #f7f7f7; 4 | $gray: #797979; 5 | $red: #e94343; 6 | $acn-green: #45E400; 7 | 8 | -------------------------------------------------------------------------------- /lab-07/app/src/app/shared/styles/material.scss: -------------------------------------------------------------------------------- 1 | @import '~@angular/material/theming'; 2 | @include mat-core(); 3 | 4 | $acn-primary: mat-palette($mat-grey, 900); 5 | $acn-accent: mat-palette($mat-green, 500, 900, A100); 6 | $acn-warn: mat-palette($mat-deep-orange); 7 | $acn-theme: mat-light-theme($acn-primary, $acn-accent, $acn-warn); 8 | @include angular-material-theme($acn-theme); 9 | -------------------------------------------------------------------------------- /lab-07/app/src/app/store/login/login.actions.ts: -------------------------------------------------------------------------------- 1 | import { Action } from '@ngrx/store' 2 | 3 | export const LOGGED = 'login/logged' 4 | 5 | export class Logged implements Action { 6 | readonly type = LOGGED; 7 | 8 | constructor(public payload: boolean) {} 9 | } 10 | 11 | 12 | export type Actions = Logged; 13 | -------------------------------------------------------------------------------- /lab-07/app/src/app/store/login/login.redux.ts: -------------------------------------------------------------------------------- 1 | import * as login from './login.actions'; 2 | 3 | export interface State { 4 | logged: boolean; 5 | } 6 | 7 | export const initialState: State = { 8 | logged: false 9 | } 10 | 11 | export function reducer(state: State = initialState, action: login.Actions): State { 12 | switch (action.type) { 13 | case login.LOGGED: 14 | return { 15 | ...state, 16 | logged: action.payload 17 | } 18 | 19 | default: 20 | return state; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /lab-07/app/src/app/toolbar/toolbar.component.html: -------------------------------------------------------------------------------- 1 | 2 | Home 3 | Events 4 | Profile 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /lab-07/app/src/app/toolbar/toolbar.component.scss: -------------------------------------------------------------------------------- 1 | .toolbar { 2 | 3 | .login { 4 | margin-left: auto; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /lab-07/app/src/app/toolbar/toolbar.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { ToolbarComponent } from './toolbar.component'; 4 | 5 | describe('ToolbarComponent', () => { 6 | let component: ToolbarComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ ToolbarComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(ToolbarComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /lab-07/app/src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/src/assets/.gitkeep -------------------------------------------------------------------------------- /lab-07/app/src/assets/fonts/graphik/Graphik-Black.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/src/assets/fonts/graphik/Graphik-Black.eot -------------------------------------------------------------------------------- /lab-07/app/src/assets/fonts/graphik/Graphik-Black.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/src/assets/fonts/graphik/Graphik-Black.woff -------------------------------------------------------------------------------- /lab-07/app/src/assets/fonts/graphik/Graphik-Black.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/src/assets/fonts/graphik/Graphik-Black.woff2 -------------------------------------------------------------------------------- /lab-07/app/src/assets/fonts/graphik/Graphik-Bold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/src/assets/fonts/graphik/Graphik-Bold.eot -------------------------------------------------------------------------------- /lab-07/app/src/assets/fonts/graphik/Graphik-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/src/assets/fonts/graphik/Graphik-Bold.woff -------------------------------------------------------------------------------- /lab-07/app/src/assets/fonts/graphik/Graphik-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/src/assets/fonts/graphik/Graphik-Bold.woff2 -------------------------------------------------------------------------------- /lab-07/app/src/assets/fonts/graphik/Graphik-Extralight.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/src/assets/fonts/graphik/Graphik-Extralight.eot -------------------------------------------------------------------------------- /lab-07/app/src/assets/fonts/graphik/Graphik-Extralight.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/src/assets/fonts/graphik/Graphik-Extralight.woff -------------------------------------------------------------------------------- /lab-07/app/src/assets/fonts/graphik/Graphik-Extralight.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/src/assets/fonts/graphik/Graphik-Extralight.woff2 -------------------------------------------------------------------------------- /lab-07/app/src/assets/fonts/graphik/Graphik-Light.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/src/assets/fonts/graphik/Graphik-Light.eot -------------------------------------------------------------------------------- /lab-07/app/src/assets/fonts/graphik/Graphik-Light.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/src/assets/fonts/graphik/Graphik-Light.woff -------------------------------------------------------------------------------- /lab-07/app/src/assets/fonts/graphik/Graphik-Light.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/src/assets/fonts/graphik/Graphik-Light.woff2 -------------------------------------------------------------------------------- /lab-07/app/src/assets/fonts/graphik/Graphik-Medium.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/src/assets/fonts/graphik/Graphik-Medium.eot -------------------------------------------------------------------------------- /lab-07/app/src/assets/fonts/graphik/Graphik-Medium.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/src/assets/fonts/graphik/Graphik-Medium.woff -------------------------------------------------------------------------------- /lab-07/app/src/assets/fonts/graphik/Graphik-Medium.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/src/assets/fonts/graphik/Graphik-Medium.woff2 -------------------------------------------------------------------------------- /lab-07/app/src/assets/fonts/graphik/Graphik-Regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/src/assets/fonts/graphik/Graphik-Regular.eot -------------------------------------------------------------------------------- /lab-07/app/src/assets/fonts/graphik/Graphik-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/src/assets/fonts/graphik/Graphik-Regular.woff -------------------------------------------------------------------------------- /lab-07/app/src/assets/fonts/graphik/Graphik-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/src/assets/fonts/graphik/Graphik-Regular.woff2 -------------------------------------------------------------------------------- /lab-07/app/src/assets/fonts/graphik/Graphik-RegularItalic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/src/assets/fonts/graphik/Graphik-RegularItalic.eot -------------------------------------------------------------------------------- /lab-07/app/src/assets/fonts/graphik/Graphik-RegularItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/src/assets/fonts/graphik/Graphik-RegularItalic.woff -------------------------------------------------------------------------------- /lab-07/app/src/assets/fonts/graphik/Graphik-RegularItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/src/assets/fonts/graphik/Graphik-RegularItalic.woff2 -------------------------------------------------------------------------------- /lab-07/app/src/assets/fonts/graphik/Graphik-Semibold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/src/assets/fonts/graphik/Graphik-Semibold.eot -------------------------------------------------------------------------------- /lab-07/app/src/assets/fonts/graphik/Graphik-Semibold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/src/assets/fonts/graphik/Graphik-Semibold.woff -------------------------------------------------------------------------------- /lab-07/app/src/assets/fonts/graphik/Graphik-Semibold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/src/assets/fonts/graphik/Graphik-Semibold.woff2 -------------------------------------------------------------------------------- /lab-07/app/src/assets/fonts/graphik/Graphik-Super.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/src/assets/fonts/graphik/Graphik-Super.eot -------------------------------------------------------------------------------- /lab-07/app/src/assets/fonts/graphik/Graphik-Super.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/src/assets/fonts/graphik/Graphik-Super.woff -------------------------------------------------------------------------------- /lab-07/app/src/assets/fonts/graphik/Graphik-Super.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/src/assets/fonts/graphik/Graphik-Super.woff2 -------------------------------------------------------------------------------- /lab-07/app/src/assets/fonts/graphik/Graphik-Thin.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/src/assets/fonts/graphik/Graphik-Thin.eot -------------------------------------------------------------------------------- /lab-07/app/src/assets/fonts/graphik/Graphik-Thin.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/src/assets/fonts/graphik/Graphik-Thin.woff -------------------------------------------------------------------------------- /lab-07/app/src/assets/fonts/graphik/Graphik-Thin.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/src/assets/fonts/graphik/Graphik-Thin.woff2 -------------------------------------------------------------------------------- /lab-07/app/src/assets/imgs/logo_open_eng.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/src/assets/imgs/logo_open_eng.png -------------------------------------------------------------------------------- /lab-07/app/src/assets/imgs/patt1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/src/assets/imgs/patt1.png -------------------------------------------------------------------------------- /lab-07/app/src/assets/imgs/patt2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/src/assets/imgs/patt2.png -------------------------------------------------------------------------------- /lab-07/app/src/assets/imgs/patt3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/src/assets/imgs/patt3.png -------------------------------------------------------------------------------- /lab-07/app/src/assets/imgs/patt4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/src/assets/imgs/patt4.png -------------------------------------------------------------------------------- /lab-07/app/src/assets/imgs/patt5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/src/assets/imgs/patt5.png -------------------------------------------------------------------------------- /lab-07/app/src/browserslist: -------------------------------------------------------------------------------- 1 | # This file is currently used by autoprefixer to adjust CSS to support the below specified browsers 2 | # For additional information regarding the format and rule options, please see: 3 | # https://github.com/browserslist/browserslist#queries 4 | # 5 | # For IE 9-11 support, please remove 'not' from the last line of the file and adjust as needed 6 | 7 | > 0.5% 8 | last 2 versions 9 | Firefox ESR 10 | not dead 11 | not IE 9-11 -------------------------------------------------------------------------------- /lab-07/app/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true, 3 | apiURL: "http://server.open-events.site/" 4 | }; 5 | -------------------------------------------------------------------------------- /lab-07/app/src/environments/environment.ts: -------------------------------------------------------------------------------- 1 | // This file can be replaced during build by using the `fileReplacements` array. 2 | // `ng build --prod` replaces `environment.ts` with `environment.prod.ts`. 3 | // The list of file replacements can be found in `angular.json`. 4 | 5 | export const environment = { 6 | production: false, 7 | apiURL: "http://localhost:3000/" 8 | }; 9 | 10 | /* 11 | * For easier debugging in development mode, you can import the following file 12 | * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. 13 | * 14 | * This import should be commented out in production mode because it will have a negative impact 15 | * on performance if an error is thrown. 16 | */ 17 | // import 'zone.js/dist/zone-error'; // Included with Angular CLI. 18 | -------------------------------------------------------------------------------- /lab-07/app/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/app/src/favicon.ico -------------------------------------------------------------------------------- /lab-07/app/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | OpenEventsFront 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /lab-07/app/src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic().bootstrapModule(AppModule) 12 | .catch(err => console.error(err)); 13 | -------------------------------------------------------------------------------- /lab-07/app/src/test.ts: -------------------------------------------------------------------------------- 1 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files 2 | 3 | import 'zone.js/dist/zone-testing'; 4 | import { getTestBed } from '@angular/core/testing'; 5 | import { 6 | BrowserDynamicTestingModule, 7 | platformBrowserDynamicTesting 8 | } from '@angular/platform-browser-dynamic/testing'; 9 | 10 | declare const require: any; 11 | 12 | // First, initialize the Angular testing environment. 13 | getTestBed().initTestEnvironment( 14 | BrowserDynamicTestingModule, 15 | platformBrowserDynamicTesting() 16 | ); 17 | // Then we find all the tests. 18 | const context = require.context('./', true, /\.spec\.ts$/); 19 | // And load the modules. 20 | context.keys().map(context); 21 | -------------------------------------------------------------------------------- /lab-07/app/src/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/app", 5 | "types": [] 6 | }, 7 | "exclude": [ 8 | "test.ts", 9 | "**/*.spec.ts" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /lab-07/app/src/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/spec", 5 | "types": [ 6 | "jasmine", 7 | "node" 8 | ] 9 | }, 10 | "files": [ 11 | "test.ts", 12 | "polyfills.ts" 13 | ], 14 | "include": [ 15 | "**/*.spec.ts", 16 | "**/*.d.ts" 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /lab-07/app/src/tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tslint.json", 3 | "rules": { 4 | "directive-selector": [ 5 | true, 6 | "attribute", 7 | "oevents", 8 | "camelCase" 9 | ], 10 | "component-selector": [ 11 | true, 12 | "element", 13 | "oevents", 14 | "kebab-case" 15 | ] 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /lab-07/app/stylelintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "stylelint-config-standard", 3 | "rules": { 4 | "at-rule-no-unknown": [true, 5 | "ignoreAtRules": ["include"] 6 | ], 7 | "at-rule-no-vendor-prefix": true, 8 | "declaration-no-important": true, 9 | "font-family-name-quotes": "always-where-recommended", 10 | "function-url-quotes": "always", 11 | "max-nesting-depth": 2, 12 | "media-feature-name-no-vendor-prefix": true, 13 | "property-no-vendor-prefix": true, 14 | "property-no-unknown": true, 15 | "selector-attribute-quotes": "always", 16 | "selector-max-compound-selectors": 4, 17 | "selector-no-vendor-prefix": true, 18 | "unit-whitelist": ["px", "%", "deg", "ms", "s", "rem", "vh", "vw"], 19 | "value-no-vendor-prefix": true 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /lab-07/app/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compileOnSave": false, 3 | "compilerOptions": { 4 | "baseUrl": "./", 5 | "outDir": "./dist/out-tsc", 6 | "sourceMap": true, 7 | "declaration": false, 8 | "module": "es2015", 9 | "moduleResolution": "node", 10 | "emitDecoratorMetadata": true, 11 | "experimentalDecorators": true, 12 | "importHelpers": true, 13 | "target": "es5", 14 | "typeRoots": [ 15 | "node_modules/@types" 16 | ], 17 | "lib": [ 18 | "es2018", 19 | "dom" 20 | ] 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /lab-07/resources/01_Landing_page.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/resources/01_Landing_page.jpg -------------------------------------------------------------------------------- /lab-07/resources/02_Events.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/resources/02_Events.jpg -------------------------------------------------------------------------------- /lab-07/resources/03_Event_details.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/resources/03_Event_details.jpg -------------------------------------------------------------------------------- /lab-07/resources/04_Event_add.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/resources/04_Event_add.jpg -------------------------------------------------------------------------------- /lab-07/resources/bash-ec2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/resources/bash-ec2.png -------------------------------------------------------------------------------- /lab-07/resources/ec2-dashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/resources/ec2-dashboard.png -------------------------------------------------------------------------------- /lab-07/resources/launch-instance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/resources/launch-instance.png -------------------------------------------------------------------------------- /lab-07/resources/oef.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Accenture/openathon-2019-angular/da5aef9c8735775014104268250c257feb8005af/lab-07/resources/oef.png -------------------------------------------------------------------------------- /openathon_day/README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 |

4 | 5 | # Openathon - 6 | 7 | 8 | 9 |

10 | 11 |

--------------------------------------------------------------------------------