diff --git a/angular.json b/angular.json index 375890f2..f9451678 100644 --- a/angular.json +++ b/angular.json @@ -12,7 +12,7 @@ }, "root": "", "sourceRoot": "src", - "prefix": "framadate", + "prefix": "app", "architect": { "build": { "builder": "@angular-devkit/build-angular:browser", @@ -23,16 +23,13 @@ "polyfills": "src/polyfills.ts", "tsConfig": "tsconfig.app.json", "aot": true, - "assets": [ - "src/favicon.ico", - "src/assets" - ], + "assets": ["src/favicon.ico", "src/assets"], "styles": [ + "node_modules/fork-awesome/css/fork-awesome.min.css", "node_modules/primeicons/primeicons.css", - "node_modules/font-awesome/css/font-awesome.css", "node_modules/primeng/resources/themes/nova-light/theme.css", "node_modules/primeng/resources/primeng.min.css", - "src/assets/scss/styles.scss" + "src/styles.scss" ], "scripts": [ "node_modules/marked/lib/marked.js", @@ -90,20 +87,13 @@ }, "test": { "builder": "@angular-builders/jest:run", - "options": { - } + "options": {} }, "lint": { "builder": "@angular-devkit/build-angular:tslint", "options": { - "tsConfig": [ - "tsconfig.app.json", - "tsconfig.spec.json", - "e2e/tsconfig.json" - ], - "exclude": [ - "**/node_modules/**" - ] + "tsConfig": ["tsconfig.app.json", "tsconfig.spec.json", "e2e/tsconfig.json"], + "exclude": ["**/node_modules/**"] } }, "e2e": { @@ -121,5 +111,8 @@ } } }, - "defaultProject": "framadate" + "defaultProject": "framadate", + "cli": { + "analytics": "0ba9c0a9-850f-4c5f-8124-cbe6f4c79ef1" + } } diff --git a/babel.config.json b/babel.config.json new file mode 100644 index 00000000..526ddfd8 --- /dev/null +++ b/babel.config.json @@ -0,0 +1,3 @@ +{ + "presets": ["@babel/preset-env"] +} diff --git a/backend-api-endpoints-doc.md b/backend-api-endpoints-doc.md index 2f337e05..63e99b0c 100644 --- a/backend-api-endpoints-doc.md +++ b/backend-api-endpoints-doc.md @@ -1,3 +1,5 @@ +// TODO: File to be deleted : just temporary documentation of backend API endpoints + /** * * -------------------------- -------- -------- ------ ------------------------------------------------ diff --git a/jest.config.js b/jest.config.js deleted file mode 100644 index 6f6675dd..00000000 --- a/jest.config.js +++ /dev/null @@ -1,11 +0,0 @@ -import 'jest-preset-angular'; -// const { defaults } = require('jest-config'); - -// -// module.exports = { -// verbose: true, -// collectCoverage: true, -// // collectCoverageFrom: ['src/**/*.ts'], -// collectCoverageFrom: ['src/app/pages/admin/*.ts'], -// }; -Error.stackTraceLimit = 2; diff --git a/package.json b/package.json index 81d1677e..f71a5d2c 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "framadate-funky-frontend", "version": "1.0.0", - "licence": "AGPL-3.0-or-later", + "license": "AGPL-3.0-or-later", "scripts": { "ng": "ng", "start": "ng serve", @@ -41,17 +41,14 @@ "bulma": "^0.8.2", "chart.js": "^2.8.0", "date-fns": "^2.12.0", - "font-awesome": "^4.7.0", - "jest-preset-angular": "^8.1.3", - "karma-coverage": "^2.0.1", - "karma-firefox-launcher": "^1.3.0", - "karma-phantomjs-launcher": "^1.0.4", + "fork-awesome": "^1.1.7", "locale-enum": "^1.1.0", "ngx-clipboard": "^13.0.0", "ngx-markdown": "^9.0.0", "ngx-toaster": "^1.0.1", + "ngx-webstorage": "^5.0.0", "primeicons": "^2.0.0", - "primeng": "^9.0.5", + "primeng": "^9.0.6", "quill": "^1.3.7", "rxjs": "^6.5.5", "rxjs-compat": "^6.5.5", @@ -61,35 +58,39 @@ }, "devDependencies": { "@angular-builders/jest": "^9.0.1", - "@angular-devkit/build-angular": "^0.901.1", - "@angular/cli": "^9.0.7", + "@angular-devkit/build-angular": "^0.901.2", + "@angular/cli": "^9.1.2", "@angular/compiler-cli": "^9.1.1", "@angular/language-service": "^9.0.7", "@babel/core": "^7.9.0", + "@babel/preset-env": "^7.9.5", "@storybook/addon-actions": "^5.3.18", "@storybook/addon-links": "^5.3.18", "@storybook/addon-notes": "^5.3.18", "@storybook/addons": "^5.3.18", "@storybook/angular": "^5.3.18", - "@types/jasminewd2": "~2.0.8", "@types/jest": "^25.2.1", - "@types/node": "^13.11.1", + "@types/node": "^13.13.2", "@types/uuid": "^7.0.2", "@typescript-eslint/eslint-plugin": "^2.27.0", "@typescript-eslint/parser": "^2.27.0", + "babel-jest": "^25.4.0", "babel-loader": "^8.1.0", + "babel-polyfill": "^6.26.0", "compodoc": "^0.0.41", "eslint": "^6.8.0", - "eslint-config-prettier": "^6.10.1", + "eslint-config-prettier": "^6.11.0", "eslint-plugin-prettier": "^3.1.3", "husky": "^4.2.5", - "jasmine-core": "~3.5.0", - "jasmine-spec-reporter": "~5.0.1", - "jest": "^25.3.0", - "lint-staged": "^10.1.3", - "prettier": "^2.0.4", + "jest": "^25.4.0", + "jest-environment-jsdom-sixteen": "^1.0.3", + "jest-preset-angular": "^8.1.3", + "lint-staged": "^10.1.7", + "prettier": "^2.0.5", "protractor": "~5.4.3", - "ts-node": "~8.8.2", + "ts-jest": "^25.4.0", + "ts-mockito": "^2.5.0", + "ts-node": "~8.9.0", "typescript": "~3.8.3" }, "husky": { @@ -106,6 +107,13 @@ }, "jest": { "preset": "jest-preset-angular", - "setupFilesAfterEnv": "./jest.config.js" + "setupFilesAfterEnv": [ + "/src/jest.setup.ts" + ], + "testEnvironment": "jest-environment-jsdom-sixteen", + "transform": { + "^.+\\.(ts|html)$": "ts-jest", + "^.+\\.jsx?$": "babel-jest" + } } } diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index 3bd0ec77..917948fe 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -1,22 +1,23 @@ import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; +import { PageNotFoundComponent } from './core/components/page-not-found/page-not-found.component'; import { AdminComponent } from './pages/admin/admin.component'; import { AnswersComponent } from './pages/answers/answers.component'; -import { BaseComponent } from './pages/example/base-page/base.component'; import { CreateOrRetrieveComponent } from './pages/create-or-retrieve/create-or-retrieve.component'; import { DatesComponent } from './pages/dates/dates.component'; import { EndConfirmationComponent } from './pages/end-confirmation/end-confirmation.component'; -import { HomeComponent } from './pages/home/home.component'; +import { BaseComponent } from './pages/example/base-page/base.component'; import { KindComponent } from './pages/example/kind/kind.component'; -import { PasswordComponent } from './pages/password/password.component'; import { PicturesComponent } from './pages/example/pictures/pictures.component'; +import { HomeComponent } from './pages/home/home.component'; +import { PasswordComponent } from './pages/password/password.component'; import { PollDisplayComponent } from './pages/poll/poll-display/poll-display.component'; +import { PollGraphicComponent } from './pages/poll/poll-graphic/poll-graphic.component'; import { ResumeComponent } from './pages/resume/resume.component'; import { VisibilityComponent } from './pages/visibility/visibility.component'; import { VotingChoiceComponent } from './pages/voting/voting-choice/voting-choice.component'; import { VotingComponent } from './pages/voting/voting.component'; -import { PollGraphicComponent } from './pages/poll/poll-graphic/poll-graphic.component'; const routes: Routes = [ { path: '', redirectTo: 'step/creation', pathMatch: 'full' }, @@ -39,7 +40,16 @@ const routes: Routes = [ { path: 'votingchoice', component: VotingChoiceComponent }, { path: 'voting', component: VotingComponent }, { path: 'step/password', component: PasswordComponent }, - { path: '**', redirectTo: '/home', pathMatch: 'full' }, + { + path: 'administration', + loadChildren: () => + import('./features/administration/administration.module').then((m) => m.AdministrationModule), + }, + { + path: 'participation', + loadChildren: () => import('./features/participation/participation.module').then((m) => m.ParticipationModule), + }, + { path: '**', component: PageNotFoundComponent }, ]; @NgModule({ diff --git a/src/app/app.component.html b/src/app/app.component.html index a1039ab2..30173eef 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -1,12 +1,25 @@ -
+
-
-
- +
+
+ menu icon +
+ Menu
- + +
+
+ +
+
+
@@ -14,12 +27,10 @@
-
+
- - - - + +
diff --git a/src/app/app.component.ts b/src/app/app.component.ts index b758854d..be38d5b2 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -1,34 +1,67 @@ -import { Component, Inject } from '@angular/core'; -import { TranslateService } from '@ngx-translate/core'; -import { NavigationStart, Router } from '@angular/router'; import { DOCUMENT } from '@angular/common'; +import { Component, Inject, OnInit, OnDestroy } from '@angular/core'; +import { Title } from '@angular/platform-browser'; +import { NavigationStart, Router } from '@angular/router'; +import { Observable, Subscription } from 'rxjs'; import { filter } from 'rxjs/operators'; -import { ConfigService } from './services/config.service'; + import { environment } from '../environments/environment'; +import { Theme } from './core/enums/theme.enum'; +import { ThemeService } from './core/services/theme.service'; +import { ConfigService } from './services/config.service'; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.scss'], }) -export class AppComponent { - step: string; - isDevelopmentEnv = false; +export class AppComponent implements OnInit, OnDestroy { + public appTitle: string = environment.appTitle; + public themeClass: string; + public isDebugMode = false; + private themeSubscription: Subscription; + + public step: string; constructor( - private translate: TranslateService, + private titleService: Title, + private themeService: ThemeService, public config: ConfigService, @Inject(DOCUMENT) private document, - private route: Router - ) { - this.detectCurrentTabOnRouteChange(); + private router: Router + ) {} - this.isDevelopmentEnv = !environment.production; + ngOnInit(): void { + if (!environment.production) { + this.isDebugMode = true; + this.appTitle += ' | DEV'; + console.info(' ######### framadate | DEV ######### we are NOT in production env, filling with mock values'); + } + this.titleService.setTitle(this.appTitle); + this.themeSubscription = this.themeService.theme.subscribe((theme: Theme) => { + switch (theme) { + case Theme.DARK: + this.themeClass = 'theme-dark-crystal'; + break; + case Theme.RED: + this.themeClass = 'theme-hot-covid'; + break; + default: + this.themeClass = 'theme-light-watermelon'; + } + }); + + this.detectCurrentTabOnRouteChange(); } - detectCurrentTabOnRouteChange() { - this.route.events.subscribe((event: any) => {}); - this.route.events + ngOnDestroy(): void { + if (this.themeSubscription) { + this.themeSubscription.unsubscribe(); + } + } + + public detectCurrentTabOnRouteChange(): void { + this.router.events .pipe(filter((event) => event instanceof NavigationStart)) .subscribe((event: NavigationStart) => { this.scrollGoToTop(); @@ -38,18 +71,19 @@ export class AppComponent { }); } - scrollGoToTop() { + public scrollGoToTop(): void { this.document.documentElement.scrollTop = 0; } - updateCurrentTab(event) { + public updateCurrentTab(event): void { if (event.url) { - const tab = event.url.split('/'); - if (tab && tab[2]) { - this.step = tab[2]; - } else { - this.step = 'home'; - } + const tab: string[] = event.url.split('/'); + this.step = tab && tab[2] ? tab[2] : 'home'; } } + + public toggleMenu(): void { + // TODO: move this logic elsewhere, probably in Navbar component + this.config.menuVisible = !this.config.menuVisible; + } } diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 2129d80b..af931889 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -1,10 +1,8 @@ -import { CommonModule, registerLocaleData } from '@angular/common'; +import { CommonModule } from '@angular/common'; import { HttpClient, HttpClientModule } from '@angular/common/http'; -import localeEn from '@angular/common/locales/en'; -import localeFr from '@angular/common/locales/fr'; import { NgModule } from '@angular/core'; import { FormsModule } from '@angular/forms'; -import { BrowserModule } from '@angular/platform-browser'; +import { BrowserModule, Title } from '@angular/platform-browser'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { MissingTranslationHandler, @@ -16,27 +14,29 @@ import { import { TranslateHttpLoader } from '@ngx-translate/http-loader'; import { ClipboardModule } from 'ngx-clipboard'; import { MarkdownModule } from 'ngx-markdown'; +import { NgxWebstorageModule } from 'ngx-webstorage'; import { ConfirmationService, MessageModule, MessageService } from 'primeng'; import { ConfirmDialogModule } from 'primeng/confirmdialog'; import { DialogModule } from 'primeng/dialog'; import { ToastModule } from 'primeng/toast'; +import { environment } from '../environments/environment'; import { AppRoutingModule } from './app-routing.module'; import { AppComponent } from './app.component'; +import { CoreModule } from './core/core.module'; import { DateValueAccessorModule } from './custom-lib/date-value-accessor'; -import { DebuggerComponent } from './ui/debugger/debugger.component'; -import { HeaderComponent } from './ui/navigation/header/header.component'; import { AdminComponent } from './pages/admin/admin.component'; import { AnswersComponent } from './pages/answers/answers.component'; -import { BaseComponent } from './pages/example/base-page/base.component'; import { CreateOrRetrieveComponent } from './pages/create-or-retrieve/create-or-retrieve.component'; import { DatesComponent } from './pages/dates/dates.component'; import { EndConfirmationComponent } from './pages/end-confirmation/end-confirmation.component'; -import { HomeComponent } from './pages/home/home.component'; +import { BaseComponent } from './pages/example/base-page/base.component'; import { KindComponent } from './pages/example/kind/kind.component'; -import { PasswordComponent } from './pages/password/password.component'; import { PicturesComponent } from './pages/example/pictures/pictures.component'; +import { HomeComponent } from './pages/home/home.component'; +import { PasswordComponent } from './pages/password/password.component'; import { PollDisplayComponent } from './pages/poll/poll-display/poll-display.component'; +import { PollGraphicComponent } from './pages/poll/poll-graphic/poll-graphic.component'; import { ResumeComponent } from './pages/resume/resume.component'; import { VisibilityComponent } from './pages/visibility/visibility.component'; import { ChoicesListComponent } from './pages/voting/choices-list/choices-list.component'; @@ -47,96 +47,92 @@ import { VotingGraphComponent } from './pages/voting/voting-graph/voting-graph.c import { VotingNavigationComponent } from './pages/voting/voting-navigation/voting-navigation.component'; import { VotingSummaryComponent } from './pages/voting/voting-summary/voting-summary.component'; import { VotingComponent } from './pages/voting/voting.component'; -import { PollGraphicComponent } from './pages/poll/poll-graphic/poll-graphic.component'; import { ConfigService } from './services/config.service'; +import { SharedModule } from './shared/shared.module'; import { CopyTextComponent } from './ui/copy-text/copy-text.component'; +import { DebuggerComponent } from './ui/debugger/debugger.component'; import { ResettableInputDirective } from './ui/directives/resettable-input.directive'; import { ErasableInputComponent } from './ui/erasable-input/erasable-input.component'; -import { MasterHeadComponent } from './ui/navigation/master-head/master-head.component'; import { NavigationComponent } from './ui/navigation/navigation.component'; -import { LanguageComponent } from './ui/selector/language/language.component'; -import { SelectorComponent } from './ui/selector/selector.component'; -import { ThemeSelectorComponent } from './ui/selector/theme-selector/theme-selector.component'; import { TwoLinksComponent } from './ui/navigation/two-links/two-links.component'; +import { LanguageSelectorComponent } from './ui/selectors/language-selector/language-selector.component'; +import { ThemeSelectorComponent } from './ui/selectors/theme-selector/theme-selector.component'; export class MyMissingTranslationHandler implements MissingTranslationHandler { - handle(params: MissingTranslationHandlerParams) { - return 'some value'; + public handle(params: MissingTranslationHandlerParams): string { + return `MISSING TRANSLATION FOR [${params.key}]`; } } -registerLocaleData(localeFr, 'fr'); -registerLocaleData(localeEn, 'en'); - export function HttpLoaderFactory(http: HttpClient): TranslateHttpLoader { return new TranslateHttpLoader(http); } @NgModule({ declarations: [ + AdminComponent, + AnswersComponent, AppComponent, BaseComponent, - KindComponent, - HeaderComponent, - NavigationComponent, + ChoicesListComponent, + CommentsListComponent, + CopyTextComponent, + CreateOrRetrieveComponent, DatesComponent, DebuggerComponent, - VisibilityComponent, - ResumeComponent, - PicturesComponent, - AnswersComponent, EndConfirmationComponent, - CreateOrRetrieveComponent, - VotingSummaryComponent, - VotingGraphComponent, - VotingChoiceComponent, - PasswordComponent, + ErasableInputComponent, HomeComponent, - PollGraphicComponent, - AdminComponent, - SelectorComponent, + KindComponent, + NavigationComponent, + PasswordComponent, + PicturesComponent, PollDisplayComponent, + PollGraphicComponent, + ResettableInputDirective, + ResumeComponent, + ThemeSelectorComponent, + TwoLinksComponent, + VisibilityComponent, + VotingChoiceComponent, + VotingGraphComponent, VotingComponent, VotingCommentComponent, - ResettableInputDirective, - ErasableInputComponent, - CopyTextComponent, - CommentsListComponent, - ChoicesListComponent, + VotingSummaryComponent, VotingNavigationComponent, - ThemeSelectorComponent, - MasterHeadComponent, - LanguageComponent, - TwoLinksComponent, + LanguageSelectorComponent, ], imports: [ - ConfirmDialogModule, + AppRoutingModule, + BrowserAnimationsModule, + BrowserModule, ClipboardModule, CommonModule, - BrowserModule, - DialogModule, + ConfirmDialogModule, + CoreModule, DateValueAccessorModule, - BrowserAnimationsModule, - AppRoutingModule, - ToastModule, - MessageModule, + DialogModule, + FormsModule, + HttpClientModule, MarkdownModule.forRoot(), + MessageModule, + NgxWebstorageModule.forRoot({ prefix: environment.localStorage.key }), + SharedModule, + ToastModule, TranslateModule.forRoot({ - missingTranslationHandler: { - provide: MissingTranslationHandler, - useClass: MyMissingTranslationHandler, - }, - // useDefaultLang: false, loader: { provide: TranslateLoader, useFactory: HttpLoaderFactory, deps: [HttpClient], }, + missingTranslationHandler: { + provide: MissingTranslationHandler, + useClass: MyMissingTranslationHandler, + }, + useDefaultLang: false, }), - HttpClientModule, - FormsModule, ], - providers: [TranslateService, ConfigService, MessageService, ConfirmationService], + providers: [ConfigService, ConfirmationService, MessageService, Title, TranslateService], bootstrap: [AppComponent], }) export class AppModule {} diff --git a/src/app/config/PollConfig.ts b/src/app/config/PollConfig.ts index e063a9dc..12e576b1 100644 --- a/src/app/config/PollConfig.ts +++ b/src/app/config/PollConfig.ts @@ -57,8 +57,8 @@ export class PollConfig { customUrl = ''; // custom slug in the url, must be unique customUrlIsUnique = null; // given by the backend urlSlugPublic = null; - urlPublic = environment.production ? '' : window.location.origin + '/#/poll/id/4'; - urlAdmin = window.location.origin + '/#/admin/d65es45fd45sdf45sd345f312sdf31sgfd345'; + urlPublic = environment.production ? '' : document.location.href + '/#/poll/id/4'; + urlAdmin = document.location.href + '/#/admin/d65es45fd45sdf45sd345f312sdf31sgfd345'; adminKey = ''; // key to change config of the poll owner_modifier_token = ''; // key to change a vote stack canModifyAnswers = true; // bool for the frontend selector @@ -68,10 +68,6 @@ export class PollConfig { timeList: DateChoice[] = otherDefaultDates; // ranges of time expressed as strings answers: PollAnswer[] = defaultAnswers; - // front end choices - themeChoices: string[] = ['light-watermelon', 'dark-crystal', 'hot-covid']; - themeSelected = 0; - themeClass = 'theme-light-watermelon'; // modals displayConfirmVoteModalAdmin = false; diff --git a/src/app/core/components/footer/footer.component.html b/src/app/core/components/footer/footer.component.html new file mode 100644 index 00000000..28c0d7d7 --- /dev/null +++ b/src/app/core/components/footer/footer.component.html @@ -0,0 +1 @@ +

footer works!

diff --git a/src/app/ui/navigation/header/header.component.scss b/src/app/core/components/footer/footer.component.scss similarity index 100% rename from src/app/ui/navigation/header/header.component.scss rename to src/app/core/components/footer/footer.component.scss diff --git a/src/app/ui/navigation/header/header.component.spec.ts b/src/app/core/components/footer/footer.component.spec.ts similarity index 56% rename from src/app/ui/navigation/header/header.component.spec.ts rename to src/app/core/components/footer/footer.component.spec.ts index 9f373039..525ec46b 100644 --- a/src/app/ui/navigation/header/header.component.spec.ts +++ b/src/app/core/components/footer/footer.component.spec.ts @@ -1,19 +1,19 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { HeaderComponent } from './header.component'; +import { FooterComponent } from './footer.component'; -describe('HeaderComponent', () => { - let component: HeaderComponent; - let fixture: ComponentFixture; +describe('FooterComponent', () => { + let component: FooterComponent; + let fixture: ComponentFixture; beforeEach(async(() => { TestBed.configureTestingModule({ - declarations: [HeaderComponent], + declarations: [FooterComponent], }).compileComponents(); })); beforeEach(() => { - fixture = TestBed.createComponent(HeaderComponent); + fixture = TestBed.createComponent(FooterComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/src/app/core/components/footer/footer.component.ts b/src/app/core/components/footer/footer.component.ts new file mode 100644 index 00000000..8a83f1ec --- /dev/null +++ b/src/app/core/components/footer/footer.component.ts @@ -0,0 +1,12 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-footer', + templateUrl: './footer.component.html', + styleUrls: ['./footer.component.scss'], +}) +export class FooterComponent implements OnInit { + constructor() {} + + ngOnInit(): void {} +} diff --git a/src/app/ui/navigation/master-head/master-head.component.html b/src/app/core/components/logo/logo.component.html similarity index 50% rename from src/app/ui/navigation/master-head/master-head.component.html rename to src/app/core/components/logo/logo.component.html index 173c8082..ee9476c9 100644 --- a/src/app/ui/navigation/master-head/master-head.component.html +++ b/src/app/core/components/logo/logo.component.html @@ -1,14 +1,13 @@ diff --git a/src/app/ui/navigation/master-head/master-head.component.scss b/src/app/core/components/logo/logo.component.scss similarity index 100% rename from src/app/ui/navigation/master-head/master-head.component.scss rename to src/app/core/components/logo/logo.component.scss diff --git a/src/app/ui/selector/selector.component.spec.ts b/src/app/core/components/logo/logo.component.spec.ts similarity index 54% rename from src/app/ui/selector/selector.component.spec.ts rename to src/app/core/components/logo/logo.component.spec.ts index 742b8307..a8479ff8 100644 --- a/src/app/ui/selector/selector.component.spec.ts +++ b/src/app/core/components/logo/logo.component.spec.ts @@ -1,19 +1,19 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { SelectorComponent } from './selector.component'; +import { LogoComponent } from './logo.component'; -describe('SelectorComponent', () => { - let component: SelectorComponent; - let fixture: ComponentFixture; +describe('LogoComponent', () => { + let component: LogoComponent; + let fixture: ComponentFixture; beforeEach(async(() => { TestBed.configureTestingModule({ - declarations: [SelectorComponent], + declarations: [LogoComponent], }).compileComponents(); })); beforeEach(() => { - fixture = TestBed.createComponent(SelectorComponent); + fixture = TestBed.createComponent(LogoComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/src/app/core/components/logo/logo.component.ts b/src/app/core/components/logo/logo.component.ts new file mode 100644 index 00000000..3e4896ca --- /dev/null +++ b/src/app/core/components/logo/logo.component.ts @@ -0,0 +1,8 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-logo', + templateUrl: './logo.component.html', + styleUrls: ['./logo.component.scss'], +}) +export class LogoComponent {} diff --git a/src/app/core/components/navbar/navbar.component.html b/src/app/core/components/navbar/navbar.component.html new file mode 100644 index 00000000..6bbf8eea --- /dev/null +++ b/src/app/core/components/navbar/navbar.component.html @@ -0,0 +1 @@ +

navbar works!

diff --git a/src/app/ui/selector/language/language.component.scss b/src/app/core/components/navbar/navbar.component.scss similarity index 100% rename from src/app/ui/selector/language/language.component.scss rename to src/app/core/components/navbar/navbar.component.scss diff --git a/src/app/ui/selector/language/language.component.spec.ts b/src/app/core/components/navbar/navbar.component.spec.ts similarity index 54% rename from src/app/ui/selector/language/language.component.spec.ts rename to src/app/core/components/navbar/navbar.component.spec.ts index 449fbbac..e5f5deac 100644 --- a/src/app/ui/selector/language/language.component.spec.ts +++ b/src/app/core/components/navbar/navbar.component.spec.ts @@ -1,19 +1,19 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { LanguageComponent } from './language.component'; +import { NavbarComponent } from './navbar.component'; -describe('LanguageComponent', () => { - let component: LanguageComponent; - let fixture: ComponentFixture; +describe('NavbarComponent', () => { + let component: NavbarComponent; + let fixture: ComponentFixture; beforeEach(async(() => { TestBed.configureTestingModule({ - declarations: [LanguageComponent], + declarations: [NavbarComponent], }).compileComponents(); })); beforeEach(() => { - fixture = TestBed.createComponent(LanguageComponent); + fixture = TestBed.createComponent(NavbarComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/src/app/core/components/navbar/navbar.component.ts b/src/app/core/components/navbar/navbar.component.ts new file mode 100644 index 00000000..7a8a48ac --- /dev/null +++ b/src/app/core/components/navbar/navbar.component.ts @@ -0,0 +1,12 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-navbar', + templateUrl: './navbar.component.html', + styleUrls: ['./navbar.component.scss'], +}) +export class NavbarComponent implements OnInit { + constructor() {} + + ngOnInit(): void {} +} diff --git a/src/app/core/components/page-not-found/page-not-found.component.html b/src/app/core/components/page-not-found/page-not-found.component.html new file mode 100644 index 00000000..7c633e58 --- /dev/null +++ b/src/app/core/components/page-not-found/page-not-found.component.html @@ -0,0 +1,3 @@ +
+ This page doesn't exist. +
diff --git a/src/app/ui/selector/selector.component.scss b/src/app/core/components/page-not-found/page-not-found.component.scss similarity index 100% rename from src/app/ui/selector/selector.component.scss rename to src/app/core/components/page-not-found/page-not-found.component.scss diff --git a/src/app/ui/navigation/master-head/master-head.component.spec.ts b/src/app/core/components/page-not-found/page-not-found.component.spec.ts similarity index 52% rename from src/app/ui/navigation/master-head/master-head.component.spec.ts rename to src/app/core/components/page-not-found/page-not-found.component.spec.ts index ef228573..b2b88ffd 100644 --- a/src/app/ui/navigation/master-head/master-head.component.spec.ts +++ b/src/app/core/components/page-not-found/page-not-found.component.spec.ts @@ -1,19 +1,19 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { MasterHeadComponent } from './master-head.component'; +import { PageNotFoundComponent } from './page-not-found.component'; -describe('MasterHeadComponent', () => { - let component: MasterHeadComponent; - let fixture: ComponentFixture; +describe('PageNotFoundComponent', () => { + let component: PageNotFoundComponent; + let fixture: ComponentFixture; beforeEach(async(() => { TestBed.configureTestingModule({ - declarations: [MasterHeadComponent], + declarations: [PageNotFoundComponent], }).compileComponents(); })); beforeEach(() => { - fixture = TestBed.createComponent(MasterHeadComponent); + fixture = TestBed.createComponent(PageNotFoundComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/src/app/core/components/page-not-found/page-not-found.component.ts b/src/app/core/components/page-not-found/page-not-found.component.ts new file mode 100644 index 00000000..fdf9f5fb --- /dev/null +++ b/src/app/core/components/page-not-found/page-not-found.component.ts @@ -0,0 +1,8 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-page-not-found', + templateUrl: './page-not-found.component.html', + styleUrls: ['./page-not-found.component.scss'], +}) +export class PageNotFoundComponent {} diff --git a/src/app/core/core.module.ts b/src/app/core/core.module.ts new file mode 100644 index 00000000..63540816 --- /dev/null +++ b/src/app/core/core.module.ts @@ -0,0 +1,20 @@ +import { CommonModule } from '@angular/common'; +import { NgModule, Optional, SkipSelf } from '@angular/core'; +import { RouterModule } from '@angular/router'; + +import { FooterComponent } from './components/footer/footer.component'; +import { LogoComponent } from './components/logo/logo.component'; +import { NavbarComponent } from './components/navbar/navbar.component'; +import { PageNotFoundComponent } from './components/page-not-found/page-not-found.component'; +import { throwIfAlreadyLoaded } from './guards/module-import.guard'; + +@NgModule({ + declarations: [FooterComponent, LogoComponent, NavbarComponent, PageNotFoundComponent], + imports: [CommonModule, RouterModule], + exports: [FooterComponent, LogoComponent, NavbarComponent, PageNotFoundComponent], +}) +export class CoreModule { + constructor(@Optional() @SkipSelf() parentModule: CoreModule) { + throwIfAlreadyLoaded(parentModule, 'CoreModule'); + } +} diff --git a/src/app/shared/enums/answer-granularity.enum.ts b/src/app/core/enums/answer-granularity.enum.ts similarity index 100% rename from src/app/shared/enums/answer-granularity.enum.ts rename to src/app/core/enums/answer-granularity.enum.ts diff --git a/src/app/shared/enums/answer-type.enum.ts b/src/app/core/enums/answer-type.enum.ts similarity index 100% rename from src/app/shared/enums/answer-type.enum.ts rename to src/app/core/enums/answer-type.enum.ts diff --git a/src/app/core/enums/language.enum.ts b/src/app/core/enums/language.enum.ts new file mode 100644 index 00000000..0d954327 --- /dev/null +++ b/src/app/core/enums/language.enum.ts @@ -0,0 +1,4 @@ +export enum Language { + FR = 'FR', + EN = 'EN', +} diff --git a/src/app/shared/enums/poll-type.enum.ts b/src/app/core/enums/poll-type.enum.ts similarity index 100% rename from src/app/shared/enums/poll-type.enum.ts rename to src/app/core/enums/poll-type.enum.ts diff --git a/src/app/core/enums/theme.enum.ts b/src/app/core/enums/theme.enum.ts new file mode 100644 index 00000000..e94adb8f --- /dev/null +++ b/src/app/core/enums/theme.enum.ts @@ -0,0 +1,5 @@ +export enum Theme { + LIGHT = 'LIGHT', + DARK = 'DARK', + RED = 'RED', +} diff --git a/src/app/core/guards/module-import.guard.ts b/src/app/core/guards/module-import.guard.ts new file mode 100644 index 00000000..b3fe3f41 --- /dev/null +++ b/src/app/core/guards/module-import.guard.ts @@ -0,0 +1,5 @@ +export function throwIfAlreadyLoaded(parentModule: any, moduleName: string): void { + if (parentModule) { + throw new Error(`${moduleName} has already been loaded. Import ${moduleName} in the AppModule only.`); + } +} diff --git a/src/app/shared/interfaces/date-options.interface.ts b/src/app/core/interfaces/date-options.interface.ts similarity index 100% rename from src/app/shared/interfaces/date-options.interface.ts rename to src/app/core/interfaces/date-options.interface.ts diff --git a/src/app/shared/models/answer.model.ts b/src/app/core/models/answer.model.ts similarity index 100% rename from src/app/shared/models/answer.model.ts rename to src/app/core/models/answer.model.ts diff --git a/src/app/shared/models/poll-config.model.ts b/src/app/core/models/poll-config.model.ts similarity index 100% rename from src/app/shared/models/poll-config.model.ts rename to src/app/core/models/poll-config.model.ts diff --git a/src/app/shared/models/poll-options.model.ts b/src/app/core/models/poll-options.model.ts similarity index 100% rename from src/app/shared/models/poll-options.model.ts rename to src/app/core/models/poll-options.model.ts diff --git a/src/app/shared/models/poll.model.ts b/src/app/core/models/poll.model.ts similarity index 100% rename from src/app/shared/models/poll.model.ts rename to src/app/core/models/poll.model.ts diff --git a/src/app/shared/models/user.model.ts b/src/app/core/models/user.model.ts similarity index 100% rename from src/app/shared/models/user.model.ts rename to src/app/core/models/user.model.ts diff --git a/src/app/shared/services/api.service.spec.ts b/src/app/core/services/api.service.spec.ts similarity index 100% rename from src/app/shared/services/api.service.spec.ts rename to src/app/core/services/api.service.spec.ts diff --git a/src/app/shared/services/api.service.ts b/src/app/core/services/api.service.ts similarity index 100% rename from src/app/shared/services/api.service.ts rename to src/app/core/services/api.service.ts diff --git a/src/app/shared/services/comment.service.spec.ts b/src/app/core/services/comment.service.spec.ts similarity index 100% rename from src/app/shared/services/comment.service.spec.ts rename to src/app/core/services/comment.service.spec.ts diff --git a/src/app/shared/services/comment.service.ts b/src/app/core/services/comment.service.ts similarity index 100% rename from src/app/shared/services/comment.service.ts rename to src/app/core/services/comment.service.ts diff --git a/src/app/shared/services/poll.service.spec.ts b/src/app/core/services/poll.service.spec.ts similarity index 100% rename from src/app/shared/services/poll.service.spec.ts rename to src/app/core/services/poll.service.spec.ts diff --git a/src/app/shared/services/poll.service.ts b/src/app/core/services/poll.service.ts similarity index 91% rename from src/app/shared/services/poll.service.ts rename to src/app/core/services/poll.service.ts index 04c61da1..c53de5ec 100644 --- a/src/app/shared/services/poll.service.ts +++ b/src/app/core/services/poll.service.ts @@ -9,13 +9,10 @@ import { ApiService } from './api.service'; }) export class PollService { private _poll: BehaviorSubject = new BehaviorSubject(undefined); + public readonly poll: Observable = this._poll.asObservable(); constructor(private apiService: ApiService) {} - public get poll(): Observable { - return this._poll.asObservable(); - } - public updateCurrentPoll(poll: Poll): void { this._poll.next(poll); } diff --git a/src/app/core/services/storage.service.spec.ts b/src/app/core/services/storage.service.spec.ts new file mode 100644 index 00000000..abc72574 --- /dev/null +++ b/src/app/core/services/storage.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { StorageService } from './storage.service'; + +describe('StorageService', () => { + let service: StorageService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(StorageService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/core/services/storage.service.ts b/src/app/core/services/storage.service.ts new file mode 100644 index 00000000..80e40596 --- /dev/null +++ b/src/app/core/services/storage.service.ts @@ -0,0 +1,19 @@ +import { Injectable } from '@angular/core'; +import { LocalStorage } from 'ngx-webstorage'; + +import { Language } from '../enums/language.enum'; +import { Theme } from '../enums/theme.enum'; + +@Injectable({ + providedIn: 'root', +}) +export class StorageService { + @LocalStorage() + public theme: Theme; + + @LocalStorage() + public language: Language; + + @LocalStorage() + public userPollsIds: string[]; +} diff --git a/src/app/shared/services/theme.service.spec.ts b/src/app/core/services/theme.service.spec.ts similarity index 100% rename from src/app/shared/services/theme.service.spec.ts rename to src/app/core/services/theme.service.spec.ts diff --git a/src/app/core/services/theme.service.ts b/src/app/core/services/theme.service.ts new file mode 100644 index 00000000..d15407cf --- /dev/null +++ b/src/app/core/services/theme.service.ts @@ -0,0 +1,15 @@ +import { Injectable } from '@angular/core'; +import { BehaviorSubject, Observable } from 'rxjs'; +import { Theme } from '../enums/theme.enum'; + +@Injectable({ + providedIn: 'root', +}) +export class ThemeService { + private _theme: BehaviorSubject = new BehaviorSubject(Theme.LIGHT); + public readonly theme: Observable = this._theme.asObservable(); + + public selectTheme(theme: Theme): void { + this._theme.next(theme); + } +} diff --git a/src/app/shared/services/user.service.spec.ts b/src/app/core/services/user.service.spec.ts similarity index 100% rename from src/app/shared/services/user.service.spec.ts rename to src/app/core/services/user.service.spec.ts diff --git a/src/app/shared/services/user.service.ts b/src/app/core/services/user.service.ts similarity index 80% rename from src/app/shared/services/user.service.ts rename to src/app/core/services/user.service.ts index cddb84e9..f0aafd2d 100644 --- a/src/app/shared/services/user.service.ts +++ b/src/app/core/services/user.service.ts @@ -8,10 +8,7 @@ import { User } from '../models/user.model'; }) export class UserService { private _user: BehaviorSubject = new BehaviorSubject(undefined); - - public get user(): Observable { - return this._user.asObservable(); - } + public readonly user: Observable = this._user.asObservable(); public updateUser(user: User): void { this._user.next(user); diff --git a/src/app/shared/services/vote.service.spec.ts b/src/app/core/services/vote.service.spec.ts similarity index 100% rename from src/app/shared/services/vote.service.spec.ts rename to src/app/core/services/vote.service.spec.ts diff --git a/src/app/shared/services/vote.service.ts b/src/app/core/services/vote.service.ts similarity index 100% rename from src/app/shared/services/vote.service.ts rename to src/app/core/services/vote.service.ts diff --git a/src/app/shared/services/date-utils.service.spec.ts b/src/app/core/utils/date-utils.service.spec.ts similarity index 100% rename from src/app/shared/services/date-utils.service.spec.ts rename to src/app/core/utils/date-utils.service.spec.ts diff --git a/src/app/shared/services/date-utils.service.ts b/src/app/core/utils/date-utils.service.ts similarity index 100% rename from src/app/shared/services/date-utils.service.ts rename to src/app/core/utils/date-utils.service.ts diff --git a/src/app/shared/services/poll-utils.service.spec.ts b/src/app/core/utils/poll-utils.service.spec.ts similarity index 100% rename from src/app/shared/services/poll-utils.service.spec.ts rename to src/app/core/utils/poll-utils.service.spec.ts diff --git a/src/app/shared/services/poll-utils.service.ts b/src/app/core/utils/poll-utils.service.ts similarity index 100% rename from src/app/shared/services/poll-utils.service.ts rename to src/app/core/utils/poll-utils.service.ts diff --git a/src/app/features/administration/administration-routing.module.ts b/src/app/features/administration/administration-routing.module.ts new file mode 100644 index 00000000..d8c4166d --- /dev/null +++ b/src/app/features/administration/administration-routing.module.ts @@ -0,0 +1,12 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { AdministrationComponent } from './administration.component'; + +const routes: Routes = [{ path: '', component: AdministrationComponent }]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class AdministrationRoutingModule {} diff --git a/src/app/features/administration/administration.component.html b/src/app/features/administration/administration.component.html new file mode 100644 index 00000000..8c3c50ed --- /dev/null +++ b/src/app/features/administration/administration.component.html @@ -0,0 +1 @@ +

administration works!

diff --git a/src/app/features/administration/administration.component.scss b/src/app/features/administration/administration.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/src/app/features/administration/administration.component.spec.ts b/src/app/features/administration/administration.component.spec.ts new file mode 100644 index 00000000..3d34972b --- /dev/null +++ b/src/app/features/administration/administration.component.spec.ts @@ -0,0 +1,24 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AdministrationComponent } from './administration.component'; + +describe('AdministrationComponent', () => { + let component: AdministrationComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [AdministrationComponent], + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AdministrationComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/features/administration/administration.component.ts b/src/app/features/administration/administration.component.ts new file mode 100644 index 00000000..10e5dd33 --- /dev/null +++ b/src/app/features/administration/administration.component.ts @@ -0,0 +1,12 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-administration', + templateUrl: './administration.component.html', + styleUrls: ['./administration.component.scss'], +}) +export class AdministrationComponent implements OnInit { + constructor() {} + + ngOnInit(): void {} +} diff --git a/src/app/features/administration/administration.module.ts b/src/app/features/administration/administration.module.ts new file mode 100644 index 00000000..fc7a2008 --- /dev/null +++ b/src/app/features/administration/administration.module.ts @@ -0,0 +1,13 @@ +import { CommonModule } from '@angular/common'; +import { NgModule } from '@angular/core'; +import { TranslateModule } from '@ngx-translate/core'; + +import { SharedModule } from '../../shared/shared.module'; +import { AdministrationRoutingModule } from './administration-routing.module'; +import { AdministrationComponent } from './administration.component'; + +@NgModule({ + declarations: [AdministrationComponent], + imports: [CommonModule, AdministrationRoutingModule, SharedModule, TranslateModule.forChild({ extend: true })], +}) +export class AdministrationModule {} diff --git a/src/app/features/participation/participation-routing.module.ts b/src/app/features/participation/participation-routing.module.ts new file mode 100644 index 00000000..e8492812 --- /dev/null +++ b/src/app/features/participation/participation-routing.module.ts @@ -0,0 +1,12 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { ParticipationComponent } from './participation.component'; + +const routes: Routes = [{ path: '', component: ParticipationComponent }]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class ParticipationRoutingModule {} diff --git a/src/app/features/participation/participation.component.html b/src/app/features/participation/participation.component.html new file mode 100644 index 00000000..d735bdee --- /dev/null +++ b/src/app/features/participation/participation.component.html @@ -0,0 +1,2 @@ +

participation works!

+

It should display an existing poll, which user wants to participate by voting.

diff --git a/src/app/features/participation/participation.component.scss b/src/app/features/participation/participation.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/src/app/features/participation/participation.component.spec.ts b/src/app/features/participation/participation.component.spec.ts new file mode 100644 index 00000000..3a4632e6 --- /dev/null +++ b/src/app/features/participation/participation.component.spec.ts @@ -0,0 +1,24 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ParticipationComponent } from './participation.component'; + +describe('ParticipationComponent', () => { + let component: ParticipationComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ParticipationComponent], + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ParticipationComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/features/participation/participation.component.ts b/src/app/features/participation/participation.component.ts new file mode 100644 index 00000000..5deed108 --- /dev/null +++ b/src/app/features/participation/participation.component.ts @@ -0,0 +1,12 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-participation', + templateUrl: './participation.component.html', + styleUrls: ['./participation.component.scss'], +}) +export class ParticipationComponent implements OnInit { + constructor() {} + + ngOnInit(): void {} +} diff --git a/src/app/features/participation/participation.module.ts b/src/app/features/participation/participation.module.ts new file mode 100644 index 00000000..37790cec --- /dev/null +++ b/src/app/features/participation/participation.module.ts @@ -0,0 +1,13 @@ +import { CommonModule } from '@angular/common'; +import { NgModule } from '@angular/core'; +import { TranslateModule } from '@ngx-translate/core'; + +import { SharedModule } from '../../shared/shared.module'; +import { ParticipationRoutingModule } from './participation-routing.module'; +import { ParticipationComponent } from './participation.component'; + +@NgModule({ + declarations: [ParticipationComponent], + imports: [CommonModule, ParticipationRoutingModule, SharedModule, TranslateModule.forChild({ extend: true })], +}) +export class ParticipationModule {} diff --git a/src/app/pages/admin/admin.component.ts b/src/app/pages/admin/admin.component.ts index fbd04817..b4d33ee4 100644 --- a/src/app/pages/admin/admin.component.ts +++ b/src/app/pages/admin/admin.component.ts @@ -6,7 +6,7 @@ import { PollUtilities } from '../../config/PollUtilities'; import { environment } from '../../../environments/environment'; @Component({ - selector: 'framadate-admin', + selector: 'app-admin', templateUrl: './admin.component.html', styleUrls: ['./admin.component.scss'], }) diff --git a/src/app/pages/answers/answers.component.ts b/src/app/pages/answers/answers.component.ts index bfa52148..8b939f75 100644 --- a/src/app/pages/answers/answers.component.ts +++ b/src/app/pages/answers/answers.component.ts @@ -5,7 +5,7 @@ import { ConfigService } from '../../services/config.service'; import { DOCUMENT } from '@angular/common'; @Component({ - selector: 'framadate-answers', + selector: 'app-answers', templateUrl: './answers.component.html', styleUrls: ['./answers.component.scss'], }) diff --git a/src/app/pages/create-or-retrieve/create-or-retrieve.component.html b/src/app/pages/create-or-retrieve/create-or-retrieve.component.html index 1ed9272a..4207bcfc 100644 --- a/src/app/pages/create-or-retrieve/create-or-retrieve.component.html +++ b/src/app/pages/create-or-retrieve/create-or-retrieve.component.html @@ -64,7 +64,7 @@
- +
diff --git a/src/app/pages/create-or-retrieve/create-or-retrieve.component.ts b/src/app/pages/create-or-retrieve/create-or-retrieve.component.ts index 1588cd56..d1b2ba53 100644 --- a/src/app/pages/create-or-retrieve/create-or-retrieve.component.ts +++ b/src/app/pages/create-or-retrieve/create-or-retrieve.component.ts @@ -3,7 +3,7 @@ import { BaseComponent } from '../example/base-page/base.component'; import { ConfigService } from '../../services/config.service'; @Component({ - selector: 'framadate-create-or-retrieve', + selector: 'app-create-or-retrieve', templateUrl: './create-or-retrieve.component.html', styleUrls: ['./create-or-retrieve.component.scss'], }) diff --git a/src/app/pages/dates/dates.component.html b/src/app/pages/dates/dates.component.html index 2e889291..e970bdf9 100644 --- a/src/app/pages/dates/dates.component.html +++ b/src/app/pages/dates/dates.component.html @@ -156,7 +156,7 @@
- +
diff --git a/src/app/pages/dates/dates.component.ts b/src/app/pages/dates/dates.component.ts index 89358009..4a888794 100644 --- a/src/app/pages/dates/dates.component.ts +++ b/src/app/pages/dates/dates.component.ts @@ -7,7 +7,7 @@ import { otherDefaultDates } from '../../config/defaultConfigs'; import { DateUtilities } from '../../config/DateUtilities'; @Component({ - selector: 'framadate-dates', + selector: 'app-dates', templateUrl: './dates.component.html', styleUrls: ['./dates.component.scss'], }) diff --git a/src/app/pages/end-confirmation/end-confirmation.component.html b/src/app/pages/end-confirmation/end-confirmation.component.html index 709efe03..3c7d44a7 100644 --- a/src/app/pages/end-confirmation/end-confirmation.component.html +++ b/src/app/pages/end-confirmation/end-confirmation.component.html @@ -19,7 +19,7 @@ Pour accéder au sondage et à tous ses paramètres : {{ config.urlAdmin }}

- + Voir le sondage coté administrateur·ice @@ -34,7 +34,7 @@ Pour accéder au sondage : {{ config.urlPublic }}

- + Voir le sondage diff --git a/src/app/pages/end-confirmation/end-confirmation.component.ts b/src/app/pages/end-confirmation/end-confirmation.component.ts index 97e0afc6..370cb6a4 100644 --- a/src/app/pages/end-confirmation/end-confirmation.component.ts +++ b/src/app/pages/end-confirmation/end-confirmation.component.ts @@ -5,7 +5,7 @@ import { ConfigService } from '../../services/config.service'; import { MessageService } from 'primeng/api'; @Component({ - selector: 'framadate-end-confirmation', + selector: 'app-end-confirmation', templateUrl: './end-confirmation.component.html', styleUrls: ['./end-confirmation.component.scss'], }) diff --git a/src/app/pages/example/base-page/base.component.ts b/src/app/pages/example/base-page/base.component.ts index a270d7af..8eac5a09 100644 --- a/src/app/pages/example/base-page/base.component.ts +++ b/src/app/pages/example/base-page/base.component.ts @@ -1,8 +1,9 @@ import { Component, OnInit } from '@angular/core'; + import { ConfigService } from '../../../services/config.service'; @Component({ - selector: 'framadate-base-page', + selector: 'app-base-page', templateUrl: './base.component.html', styleUrls: ['./base.component.scss'], }) @@ -12,15 +13,15 @@ import { ConfigService } from '../../../services/config.service'; export class BaseComponent implements OnInit { constructor(public config: ConfigService) {} - ngOnInit() {} + ngOnInit(): void {} - checkValidity() { + public checkValidity(): boolean { // TODO with form controls this.config.todo(); return true; } - displayErrorMessage() { + public displayErrorMessage(): boolean { // TODO this.config.todo(); return true; diff --git a/src/app/pages/example/kind/kind.component.html b/src/app/pages/example/kind/kind.component.html index 736b17a8..35bb97e1 100644 --- a/src/app/pages/example/kind/kind.component.html +++ b/src/app/pages/example/kind/kind.component.html @@ -186,7 +186,7 @@

Molecules

- +

Useful classes

diff --git a/src/app/pages/example/kind/kind.component.ts b/src/app/pages/example/kind/kind.component.ts index 204c4632..99be4932 100644 --- a/src/app/pages/example/kind/kind.component.ts +++ b/src/app/pages/example/kind/kind.component.ts @@ -3,7 +3,7 @@ import { BaseComponent } from '../base-page/base.component'; import { ConfigService } from '../../../services/config.service'; @Component({ - selector: 'framadate-page-kind', + selector: 'app-page-kind', templateUrl: './kind.component.html', styleUrls: ['./kind.component.scss'], }) diff --git a/src/app/pages/example/pictures/pictures.component.ts b/src/app/pages/example/pictures/pictures.component.ts index 243b1852..f7baa6b5 100644 --- a/src/app/pages/example/pictures/pictures.component.ts +++ b/src/app/pages/example/pictures/pictures.component.ts @@ -3,7 +3,7 @@ import { ConfigService } from '../../../services/config.service'; import { BaseComponent } from '../base-page/base.component'; @Component({ - selector: 'framadate-pictures', + selector: 'app-pictures', templateUrl: './pictures.component.html', styleUrls: ['./pictures.component.scss'], }) diff --git a/src/app/pages/home/home.component.html b/src/app/pages/home/home.component.html index bc83f09f..52161912 100644 --- a/src/app/pages/home/home.component.html +++ b/src/app/pages/home/home.component.html @@ -32,7 +32,7 @@ placeholder="{{ 'creation.choose_title_placeholder' | translate }}" type="name" /> - +
@@ -44,13 +44,13 @@ placeholder="{{ 'creation.name_placeholder' | translate }}" type="name" /> - +