Merge branch 'ng-init' into 'dev'

integrate Ng init

See merge request framasoft/framadate/funky-framadate-front!1
This commit is contained in:
ty kayn 2019-10-03 15:21:42 +02:00
commit cccf894e56
45 changed files with 8300 additions and 430 deletions

View File

@ -1,25 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
<file source-language="en" datatype="plaintext" original="ng2.template">
<body>
<trans-unit id="a38ca9be0d4cc826d1962ced6959714844cd8b5f" datatype="html">
<source>
Bienvenue sur Framadate
</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/app.component.html</context>
<context context-type="linenumber">3</context>
</context-group>
</trans-unit>
<trans-unit id="9cc3aa4a9c50ffaaed035c7f7d1dbcefb54954ea" datatype="html">
<source>
Ceci est une démo
</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/app.component.html</context>
<context context-type="linenumber">6</context>
</context-group>
</trans-unit>
</body>
</file>
</xliff>

26
package-lock.json generated
View File

@ -1,6 +1,6 @@
{
"name": "framadate",
"version": "0.0.0",
"name": "framadate-funky-frontend",
"version": "0.1.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@ -1192,6 +1192,22 @@
"webpack-sources": "1.3.0"
}
},
"@ngx-translate/core": {
"version": "11.0.1",
"resolved": "https://registry.npmjs.org/@ngx-translate/core/-/core-11.0.1.tgz",
"integrity": "sha512-nBCa1ZD9fAUY/3eskP3Lql2fNg8OMrYIej1/5GRsfcutx9tG/5fZLCv9m6UCw1aS+u4uK/vXjv1ctG/FdMvaWg==",
"requires": {
"tslib": "^1.9.0"
}
},
"@ngx-translate/http-loader": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/@ngx-translate/http-loader/-/http-loader-4.0.0.tgz",
"integrity": "sha512-x8LumqydWD7eX9yQTAVeoCM9gFUIGVTUjZqbxdAUavAA3qVnk9wCQux7iHLPXpydl8vyQmLoPQR+fFU+DUDOMA==",
"requires": {
"tslib": "^1.9.0"
}
},
"@schematics/angular": {
"version": "8.2.1",
"resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-8.2.1.tgz",
@ -4310,9 +4326,9 @@
"dev": true
},
"handlebars": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz",
"integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==",
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.4.0.tgz",
"integrity": "sha512-xkRtOt3/3DzTKMOt3xahj2M/EqNhY988T+imYSlMgs5fVhLN2fmKVVj0LtEGmb+3UUYV5Qmm1052Mm3dIQxOvw==",
"dev": true,
"requires": {
"neo-async": "^2.6.0",

View File

@ -1,47 +1,50 @@
{
"name": "framadate",
"version": "0.0.0",
"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e"
},
"private": true,
"dependencies": {
"@angular/animations": "~8.2.0",
"@angular/common": "~8.2.0",
"@angular/compiler": "~8.2.0",
"@angular/core": "~8.2.0",
"@angular/forms": "~8.2.0",
"@angular/platform-browser": "~8.2.0",
"@angular/platform-browser-dynamic": "~8.2.0",
"@angular/router": "~8.2.0",
"rxjs": "~6.4.0",
"tslib": "^1.10.0",
"zone.js": "~0.9.1"
},
"devDependencies": {
"@angular-devkit/build-angular": "~0.802.1",
"@angular/cli": "~8.2.1",
"@angular/compiler-cli": "~8.2.0",
"@angular/language-service": "~8.2.0",
"@types/node": "~8.9.4",
"@types/jasmine": "~3.3.8",
"@types/jasminewd2": "~2.0.3",
"codelyzer": "^5.0.0",
"jasmine-core": "~3.4.0",
"jasmine-spec-reporter": "~4.2.1",
"karma": "~4.1.0",
"karma-chrome-launcher": "~2.2.0",
"karma-coverage-istanbul-reporter": "~2.0.1",
"karma-jasmine": "~2.0.1",
"karma-jasmine-html-reporter": "^1.4.0",
"protractor": "~5.4.0",
"ts-node": "~7.0.0",
"tslint": "~5.15.0",
"typescript": "~3.5.3"
}
"name": "framadate-funky-frontend",
"version": "0.1.0",
"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e",
"trans": "ng xi18n --output-path=src/locale --i18n-locale=fr"
},
"private": true,
"dependencies": {
"@angular/animations": "~8.2.0",
"@angular/common": "~8.2.0",
"@angular/compiler": "~8.2.0",
"@angular/core": "~8.2.0",
"@angular/forms": "~8.2.0",
"@angular/platform-browser": "~8.2.0",
"@angular/platform-browser-dynamic": "~8.2.0",
"@angular/router": "~8.2.0",
"@ngx-translate/core": "^11.0.1",
"@ngx-translate/http-loader": "^4.0.0",
"rxjs": "~6.4.0",
"tslib": "^1.10.0",
"zone.js": "~0.9.1"
},
"devDependencies": {
"@angular-devkit/build-angular": "~0.802.1",
"@angular/cli": "~8.2.1",
"@angular/compiler-cli": "~8.2.0",
"@angular/language-service": "~8.2.0",
"@types/node": "~8.9.4",
"@types/jasmine": "~3.3.8",
"@types/jasminewd2": "~2.0.3",
"codelyzer": "^5.0.0",
"jasmine-core": "~3.4.0",
"jasmine-spec-reporter": "~4.2.1",
"karma": "~4.1.0",
"karma-chrome-launcher": "~2.2.0",
"karma-coverage-istanbul-reporter": "~2.0.1",
"karma-jasmine": "~2.0.1",
"karma-jasmine-html-reporter": "^1.4.0",
"protractor": "~5.4.0",
"ts-node": "~7.0.0",
"tslint": "~5.15.0",
"typescript": "~3.5.3"
}
}

View File

@ -1,17 +1,25 @@
<header style="text-align:center">
<a [routerLink]="'home'" class="home_link" aria-roledescription="home">
<h1>
<span class="logo_first">Frama</span>
<span class="logo_second">date</span>
</h1>
<i i18n>
Ceci est une démo
</i>
</a>
<a [routerLink]="'home'" class="home_link" aria-roledescription="home">
<h1>
<span class="logo_first">Frama</span>
<span class="logo_second">date</span>
</h1>
</a>
<div id="translate_example">
<div class="lang-choices">
<button class="btn btn-info" (click)="switchLanguage('en')">en</button>
<button class="btn btn-info" (click)="switchLanguage('fr')">fr</button>
</div>
<h1 translate>Title</h1>
<div>
{{ 'Intro' | translate:user }}
</div>
</div>
</header>
<framadate-navigation></framadate-navigation>
<main>
<router-outlet></router-outlet>
<router-outlet></router-outlet>
</main>
<framadate-debugger></framadate-debugger>
<framadate-debugger></framadate-debugger>

View File

@ -1,10 +1,26 @@
import { Component } from '@angular/core';
import {Component} from '@angular/core';
import {TranslateService} from "@ngx-translate/core";
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
})
export class AppComponent {
title = 'framadate';
title = 'framadate';
//translation demo:
minutes = 12;
user = {
name: 'Arthur',
age: 42
};
constructor(private translate: TranslateService) {
this.translate.setDefaultLang('fr');
}
switchLanguage(language: string) {
this.translate.use(language);
}
}

View File

@ -3,7 +3,6 @@ import {NgModule} from '@angular/core';
import {AppRoutingModule} from './app-routing.module';
import {AppComponent} from './app.component';
import {FormContainerComponent} from './form-container/form-container.component';
import {BaseComponent} from './pages/base-page/base.component';
import {KindComponent} from './pages/kind/kind.component';
import {HeaderComponent} from './header/header.component';
@ -11,50 +10,91 @@ import {FormsModule} from '@angular/forms';
import {NavigationComponent} from './ui/navigation/navigation.component';
import {RouterModule} from '@angular/router';
import {Routes} from './config/Routes';
import {CommonModule} from '@angular/common';
import { DatesComponent } from './pages/dates/dates.component';
import { DebuggerComponent } from './debugger/debugger.component';
import { VisibilityComponent } from './pages/visibility/visibility.component';
import { ResumeComponent } from './pages/resume/resume.component';
import { PicturesComponent } from './pages/pictures/pictures.component';
import { AnswersComponent } from './pages/answers/answers.component';
import { EndConfirmationComponent } from './pages/end-confirmation/end-confirmation.component';
import { CreateOrRetrieveComponent } from './pages/create-or-retrieve/create-or-retrieve.component';
import { CalendarComponent } from './calendar/calendar.component';
import { registerLocaleData } from '@angular/common';
import {CommonModule, registerLocaleData} from '@angular/common';
import {DatesComponent} from './pages/dates/dates.component';
import {DebuggerComponent} from './debugger/debugger.component';
import {VisibilityComponent} from './pages/visibility/visibility.component';
import {ResumeComponent} from './pages/resume/resume.component';
import {PicturesComponent} from './pages/pictures/pictures.component';
import {AnswersComponent} from './pages/answers/answers.component';
import {EndConfirmationComponent} from './pages/end-confirmation/end-confirmation.component';
import {CreateOrRetrieveComponent} from './pages/create-or-retrieve/create-or-retrieve.component';
import {CalendarComponent} from './calendar/calendar.component';
import localeFr from '@angular/common/locales/fr';
import localeEn from '@angular/common/locales/en';
import {VotingSummaryComponent} from './pages/voting-summary/voting-summary.component';
import {VotingGraphComponent} from './pages/voting-graph/voting-graph.component';
import {VotingChoiceComponent} from './pages/voting-choice/voting-choice.component';
import {PasswordComponent} from './pages/password/password.component';
import {HomeComponent} from './pages/home/home.component';
import {HttpClient, HttpClientModule} from '@angular/common/http';
import {
MissingTranslationHandler,
MissingTranslationHandlerParams,
TranslateLoader,
TranslateModule,
TranslateService
} from '@ngx-translate/core';
import {TranslateHttpLoader} from '@ngx-translate/http-loader';
export class MyMissingTranslationHandler implements MissingTranslationHandler {
handle(params: MissingTranslationHandlerParams) {
return 'some value';
}
}
registerLocaleData(localeFr, 'fr');
registerLocaleData(localeEn, 'en');
export function HttpLoaderFactory(http: HttpClient) {
return new TranslateHttpLoader(http);
}
@NgModule({
declarations: [
AppComponent,
FormContainerComponent,
BaseComponent,
KindComponent,
HeaderComponent,
NavigationComponent,
DatesComponent,
DebuggerComponent,
VisibilityComponent,
ResumeComponent,
PicturesComponent,
AnswersComponent,
EndConfirmationComponent,
CreateOrRetrieveComponent,
CalendarComponent,
declarations: [
AppComponent,
BaseComponent,
KindComponent,
HeaderComponent,
NavigationComponent,
DatesComponent,
DebuggerComponent,
VisibilityComponent,
ResumeComponent,
PicturesComponent,
AnswersComponent,
EndConfirmationComponent,
CreateOrRetrieveComponent,
CalendarComponent,
VotingSummaryComponent,
VotingGraphComponent,
VotingChoiceComponent,
PasswordComponent,
HomeComponent,
],
imports: [
CommonModule,
BrowserModule,
AppRoutingModule,
FormsModule,
RouterModule.forRoot(Routes)
],
providers: [],
bootstrap: [AppComponent]
],
imports: [
CommonModule,
BrowserModule,
AppRoutingModule,
TranslateModule.forRoot({
missingTranslationHandler: {
provide: MissingTranslationHandler,
useClass: MyMissingTranslationHandler,
},
// useDefaultLang: false,
loader: {
provide: TranslateLoader,
useFactory: HttpLoaderFactory,
deps: [HttpClient]
}
}),
HttpClientModule,
FormsModule,
RouterModule.forRoot(Routes)
],
providers: [TranslateService],
bootstrap: [AppComponent]
})
export class AppModule {
}

View File

@ -1,4 +1,3 @@
import {FormContainerComponent} from '../form-container/form-container.component';
import {KindComponent} from '../pages/kind/kind.component';
import {DatesComponent} from '../pages/dates/dates.component';
import {VisibilityComponent} from '../pages/visibility/visibility.component';
@ -8,6 +7,7 @@ import {EndConfirmationComponent} from '../pages/end-confirmation/end-confirmati
import {AnswersComponent} from '../pages/answers/answers.component';
import {CreateOrRetrieveComponent} from '../pages/create-or-retrieve/create-or-retrieve.component';
import {BaseComponent} from '../pages/base-page/base.component';
import {HomeComponent} from "../pages/home/home.component";
/**
* each step in the form is a component
@ -15,7 +15,7 @@ import {BaseComponent} from '../pages/base-page/base.component';
export const Routes =
[
{path: '', component: CreateOrRetrieveComponent},
{path: 'home', component: FormContainerComponent},
{path: 'home', component: HomeComponent},
{path: 'base', component: BaseComponent},
{path: 'step/creation', component: CreateOrRetrieveComponent},
{path: 'step/date', component: DatesComponent},

View File

@ -1,66 +1,36 @@
<div class="well debug">
<strong>
<h2 i18n>
infos de debug
</h2>
</strong>
<ul>
<li>
étape actuelle {{config.step}} / {{config.stepMax}}
</li>
<li>
formulaire valide : {{formIsValid}}
</li>
<li>
type de formulaire: {{config.pollType}}
</li>
<li>
config:
<pre>
<strong>
<h2 i18n>
infos de debug
</h2>
<span class="demo">
{{"config.demo"|translate}}
</span>
</strong>
<ul>
<li>
étape actuelle {{config.step}} / {{config.stepMax}}
</li>
<li>
formulaire valide : {{formIsValid}}
</li>
<li>
type de formulaire: {{config.pollType}}
</li>
<li>
config:
<pre>
{{config|json}}
</pre>
</li>
</ul>
</li>
</ul>
</div>
<span i18n>
Choix cornélien syncronisé:
</span>
<!-- todo: factoriser les boutons-->
<button
(click)="config.set('pollType' , 'classic')"
[class.active]="config.pollType == 'classic'"
[disabled]="!formIsValid"
class="btn btn-primary next"
class="btn"
i18n
(click)="config.sendForm()"
>
<span i18n>
sondage classique
</span>
<span *ngIf="config.pollType == 'classic'">
[x]
</span>
</button>
<button
(click)="selectOption('pollType' ,'dates')"
[class.active]="config.pollType == 'dates'"
[disabled]="!formIsValid"
class="btn btn-primary next"
>
<span i18n>
sondage spécial date
</span>
<span *ngIf="config.pollType == 'dates'">
[x]
</span>
</button>
<button
class="btn"
i18n
(click)="config.sendForm()"
>
Envoyer le formulaire
Envoyer le formulaire
</button>

View File

@ -1,86 +0,0 @@
<div class="description">
<router-outlet></router-outlet>
<h1 i18n>
Pour commencer
</h1>
<span
class="pre-selector"
i18n
>
Je veux créer un sondage
</span>
<select
id="selector"
name="selector"
autofocus="autofocus"
[(ngModel)]="config.pollType"
>
<option value="dates">
spécial dates
</option>
<option value="classic">
classique
</option>
</select>
<span class="post-selector">
</span>
<div>
<label
for="poll_title"
class="title-label"
i18n
>
Dont le titre sera
</label>
<input
type="text"
id="poll_title"
name="poll_title"
placeholder="titre"
[(ngModel)]="config.title"
>
</div>
<div>
<label for="my_name">
Je peux aussi préciser mon nom si je le souhaite :
</label>
<input
type="text"
name="my_name"
id="my_name"
placeholder="mon nom"
[(ngModel)]="config.myName"
>
</div>
<div>
<label
for="poll_description"
class="title-label"
i18n
>
et la description serait
</label>
<textarea
id="poll_description"
name="poll_description"
[(ngModel)]="config.description"
placeholder="description"
cols="50"
lines="5"
></textarea>
</div>
<a
[routerLink]="'/step/answers'"
class="btn btn-block"
i18n
>
Continuer
</a>
<hr>
</div>

View File

@ -1,25 +0,0 @@
import {Component, OnInit} from '@angular/core';
import {ConfigService} from '../config.service';
// import {PollConfig} from '../config/PollConfig';
@Component({
selector: 'framadate-form-container',
templateUrl: './form-container.component.html',
styleUrls: ['./form-container.component.scss']
})
/**
* gestion de la progression dans le formulaire.
* à chaque étape correspond un composant de page
*/
export class FormContainerComponent implements OnInit {
constructor(public config: ConfigService) {
}
ngOnInit() {
}
}

View File

@ -1,30 +1,30 @@
<div class="answers">
<h1 i18n>
Choisir les propositions
</h1>
<h1 i18n>
Choisir les propositions
</h1>
<p class="subtitle" i18n>
vous pouvez utiliser la syntaxe markdown
</p>
<p class="subtitle" i18n>
vous pouvez utiliser la syntaxe markdown
</p>
<ol>
<li #answers *ngFor="let answer of config.answers; index as i;trackBy trackFunction"
class="answer-item">
<input
type="text"
class="answer"
[(ngModel)]="answer.text"
placeholder="réponse"
>
<button (click)="config.answers.splice(i,1)">X</button>
</li>
</ol>
<ol>
<li #answers *ngFor="let answer of config.answers; index as i;trackBy trackFunction"
class="answer-item">
<input
[(ngModel)]="answer.text"
class="answer"
placeholder="réponse"
type="text"
>
<button (click)="config.answers.splice(i,1)">X</button>
</li>
</ol>
<button
class="btn-outline btn-block"
(click)="addAnswer()">
Ajouter
</button>
<button
(click)="addAnswer()"
class="btn-outline btn-block">
Ajouter
</button>
<a [routerLink]="'/step/resume'" class="btn btn-block">Voyons ce que ça donne</a>
<a [routerLink]="'/step/resume'" class="btn btn-block">Voyons ce que ça donne</a>
</div>

View File

@ -1,2 +1,4 @@
<h1>Ce composant est celui de base pour les pages</h1>
<a [routerLink]="'/step/end'" class="btn btn-block">C'est parfait!</a>
<a [routerLink]="'/step/end'" class="btn btn-block" i18n="@@confirm">
{{"config.perfect"|translate}}
</a>

View File

@ -1,56 +1,54 @@
<section class="creation">
<h1 i18n>
Créer un sondage
</h1>
<p
class="description"
i18n
>
Planifiez des rendez-vous avec vos amis ou votre famille ou créez un sondage avec du texte, des images ou des
liens… un sondage quoi !
</p>
<div class="btn-next">
<a
[routerLink]="'/home'"
>
<h1>
{{"creation.title"|translate}}
</h1>
<p
class="description"
i18n
>
{{"config.title"|translate}}
</p>
<div class="btn-next">
<a
[routerLink]="'/home'"
>
<span
class="text"
i18n
>
C'est parti
class="text"
i18n
>
{{"config.letsgo"|translate}}
</span>
<span class="icon right">
<span class="icon right">
>
</span>
</a>
</div>
</a>
</div>
</section>
<section class="recuperation">
<h1 i18n>
Où sont mes sondages ?
</h1>
<form
action="https://framadate.org/find_polls.php"
method="post"
>
<label
class="description"
for="email"
i18n
>
Je cherche les sondages qui correspondent à mon mail :
</label>
<input
type="email"
name="mail"
id="email"
autofocus="autofocus"
/>
<input
type="submit"
class="btn btn-block"
i18n
value="Retrouver mes sondages"
/>
</form>
<h1>
{{"config.find_my_polls"|translate}}
</h1>
<form
action="https://framadate.org/find_polls.php"
method="post"
>
<label
class="description"
for="email"
i18n
>
{{"config.find_helper"|translate}} :
</label>
<input
type="email"
name="mail"
id="email"
autofocus="autofocus"
/>
<input
type="submit"
class="btn btn-block"
i18n-value="'config.find_button'|translate"
/>
</form>
</section>

View File

@ -1,15 +1,19 @@
import { Component, OnInit } from '@angular/core';
import {BaseComponent} from "../base-page/base.component";
import {ConfigService} from "../../config.service";
@Component({
selector: 'framadate-create-or-retrieve',
templateUrl: './create-or-retrieve.component.html',
styleUrls: ['./create-or-retrieve.component.scss']
})
export class CreateOrRetrieveComponent implements OnInit {
export class CreateOrRetrieveComponent extends BaseComponent implements OnInit {
constructor() { }
constructor(public config: ConfigService) {
super(config);
}
ngOnInit() {
ngOnInit() {
}
}

View File

@ -1,58 +1,58 @@
<div i18n>
Config spécialement pour les dates
Config spécialement pour les dates
</div>
<div>
<select
name="multi_hours"
id="multi_hours"
[(ngModel)]="config.allowSeveralHours"
>
<option value="true">possiblement différents</option>
<option value="false">identiques</option>
</select>
<select
name="multi_hours"
id="multi_hours"
[(ngModel)]="config.allowSeveralHours"
>
<option value="true">possiblement différents</option>
<option value="false">identiques</option>
</select>
<label for="multi_hours">
<label for="multi_hours">
<span i18n>
Je souhaite mettre des créneaux horaires
</span>
<span i18n>
<span i18n>
pour chaque journée
</span>
</label>
</label>
</div>
<button
class="btn btn-primary"
(click)="addDate()"
i18n
class="btn btn-primary"
(click)="addDate()"
i18n
>
Ajouter une plage de dates
Ajouter une plage de dates
</button>
<div class="dates-list">
{{config.dateList.length}}
<span i18n>
{{config.dateList.length}}
<span i18n>
choix de Dates
</span>
<div
*ngFor="let choice of config.dateList; index as id"
class="date-choice"
>
<input
type="text"
name="dateChoices[]"
[(ngModel)]="choice.literal"
>
<div
*ngFor="let choice of config.dateList; index as id"
class="date-choice"
>
<input
type="text"
name="dateChoices[]"
[(ngModel)]="choice.literal"
>
<button (click)="config.dateList.splice(id, 1)">X</button>
</div>
<button (click)="config.dateList.splice(id, 1)">X</button>
</div>
</div>
<a
[routerLink]="'/step/end'"
class="btn btn-block"
[routerLink]="'/step/end'"
class="btn btn-block"
>
C'est parfait!
C'est parfait!
</a>

View File

@ -1,5 +1,5 @@
<h1 i18n>
Et c'est tout pour nous!
Et c'est tout pour nous!
</h1>
<h2 i18n>Coté administrateur-ice-eux</h2>
<h2 i18n>Coté sondés</h2>

View File

@ -1,15 +1,19 @@
import { Component, OnInit } from '@angular/core';
import {BaseComponent} from "../base-page/base.component";
import {ConfigService} from "../../config.service";
@Component({
selector: 'framadate-end-confirmation',
templateUrl: './end-confirmation.component.html',
styleUrls: ['./end-confirmation.component.scss']
})
export class EndConfirmationComponent implements OnInit {
export class EndConfirmationComponent extends BaseComponent implements OnInit {
constructor() { }
constructor(public config: ConfigService) {
super(config);
}
ngOnInit() {
ngOnInit() {
}
}

View File

@ -0,0 +1,86 @@
<div class="description">
<router-outlet></router-outlet>
<h1 i18n>
{{"creation.title"|translate}}
</h1>
<span
class="pre-selector"
i18n
>
{{"creation.want"|translate}}
</span>
<select
id="selector"
name="selector"
autofocus="autofocus"
[(ngModel)]="config.pollType"
>
<option value="dates">
{{"creation.kind.date"|translate}}
</option>
<option value="classic">
{{"creation.kind.classic"|translate}}
</option>
</select>
<span class="post-selector">
</span>
<div>
<label
for="poll_title"
class="title-label"
i18n
>
{{"creation.choose_title"|translate}}
</label>
<input
type="text"
id="poll_title"
name="poll_title"
placeholder="titre"
[(ngModel)]="config.title"
>
</div>
<div>
<label for="my_name">
{{"creation.name"|translate}} :
</label>
<input
type="text"
name="my_name"
id="my_name"
placeholder="mon nom"
[(ngModel)]="config.myName"
>
</div>
<div>
<label
for="poll_description"
class="title-label"
i18n
>
{{"creation.description"|translate}}
</label>
<textarea
id="poll_description"
name="poll_description"
[(ngModel)]="config.description"
placeholder="description"
cols="50"
lines="5"
></textarea>
</div>
<a
[routerLink]="'/step/answers'"
class="btn btn-block"
i18n
>
Continuer
</a>
<hr>
</div>

View File

@ -0,0 +1,25 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { HomeComponent } from './home.component';
describe('HomeComponent', () => {
let component: HomeComponent;
let fixture: ComponentFixture<HomeComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ HomeComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(HomeComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

View File

@ -0,0 +1,19 @@
import {Component, OnInit} from '@angular/core';
import {ConfigService} from "../../config.service";
import {BaseComponent} from "../base-page/base.component";
@Component({
selector: 'framadate-home',
templateUrl: './home.component.html',
styleUrls: ['./home.component.scss']
})
export class HomeComponent extends BaseComponent implements OnInit {
constructor(public config: ConfigService) {
super(config);
}
ngOnInit() {
}
}

View File

@ -1,4 +1,4 @@
<h1>page de démo</h1>
<p>cette étape est en cours de développement. <br> S'inspirer de la page de FormContainer pour réaliser d'autres pages
<p>cette étape est en cours de développement. <br> S'inspirer de la page de Home pour réaliser d'autres pages
</p>
<a [routerLink]="'/step/end'" class="btn btn-block">C'est parfait!</a>
<a [routerLink]="'/step/end'" class="btn btn-block" i18n="@@confirm">C'est parfait!</a>

View File

@ -0,0 +1 @@
<p>password works!</p>

View File

@ -0,0 +1,25 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { PasswordComponent } from './password.component';
describe('PasswordComponent', () => {
let component: PasswordComponent;
let fixture: ComponentFixture<PasswordComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ PasswordComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(PasswordComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

View File

@ -0,0 +1,19 @@
import { Component, OnInit } from '@angular/core';
import {BaseComponent} from "../base-page/base.component";
import {ConfigService} from "../../config.service";
@Component({
selector: 'framadate-password',
templateUrl: './password.component.html',
styleUrls: ['./password.component.scss']
})
export class PasswordComponent extends BaseComponent implements OnInit {
constructor(public config: ConfigService) {
super(config);
}
ngOnInit() {
}
}

View File

@ -1,5 +1,6 @@
<!--ceci est la popup pour ajouter une image-->
<h1 i18n>
Images
Images
</h1>
<a [routerLink]="'/step/visibility'" class="btn btn-block">ok</a>

View File

@ -1,10 +1,10 @@
<h1 i18n>
Résumé avant validation
Résumé avant validation
</h1>
<section>
TODO
<pre>
TODO
<pre>
{{config |json}}
</pre>
</section>
<a [routerLink]="'/step/end'" class="btn btn-block">C'est parfait!</a>
<a [routerLink]="'/step/end'" class="btn btn-block" i18n="@@confirm">C'est parfait!</a>

View File

@ -1,14 +1,14 @@
<h1 i18n>
Visibilité des réponses
Visibilité des réponses
</h1>
<h1 i18n>
Votes
Votes
</h1>
<h1 i18n>
Archivage
Archivage
</h1>
<h1 i18n>
Accès au sondage
Accès au sondage
</h1>
<a [routerLink]="'/step/end'" class="btn btn-block">C'est parfait!</a>
<a [routerLink]="'/step/end'" class="btn btn-block" i18n="@@confirm">C'est parfait!</a>

View File

@ -0,0 +1 @@
<p>voting-choice works!</p>

View File

@ -0,0 +1,25 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { VotingChoiceComponent } from './voting-choice.component';
describe('VotingChoiceComponent', () => {
let component: VotingChoiceComponent;
let fixture: ComponentFixture<VotingChoiceComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ VotingChoiceComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(VotingChoiceComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

View File

@ -0,0 +1,20 @@
import { Component, OnInit } from '@angular/core';
import {BaseComponent} from "../base-page/base.component";
import {ConfigService} from "../../config.service";
@Component({
selector: 'framadate-voting-choice',
templateUrl: './voting-choice.component.html',
styleUrls: ['./voting-choice.component.scss']
})
export class VotingChoiceComponent extends BaseComponent implements OnInit {
constructor(public config: ConfigService) {
super(config);
}
ngOnInit() {
}
}

View File

@ -0,0 +1 @@
<p>voting-graph works!</p>

View File

@ -0,0 +1,25 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { VotingGraphComponent } from './voting-graph.component';
describe('VotingGraphComponent', () => {
let component: VotingGraphComponent;
let fixture: ComponentFixture<VotingGraphComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ VotingGraphComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(VotingGraphComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

View File

@ -0,0 +1,19 @@
import { Component, OnInit } from '@angular/core';
import {BaseComponent} from "../base-page/base.component";
import {ConfigService} from "../../config.service";
@Component({
selector: 'framadate-voting-graph',
templateUrl: './voting-graph.component.html',
styleUrls: ['./voting-graph.component.scss']
})
export class VotingGraphComponent extends BaseComponent implements OnInit {
constructor(public config: ConfigService) {
super(config);
}
ngOnInit() {
}
}

View File

@ -0,0 +1 @@
<p>voting-summary works!</p>

View File

@ -1,20 +1,20 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { FormContainerComponent } from './form-container.component';
import { VotingSummaryComponent } from './voting-summary.component';
describe('FormContainerComponent', () => {
let component: FormContainerComponent;
let fixture: ComponentFixture<FormContainerComponent>;
describe('VotingSummaryComponent', () => {
let component: VotingSummaryComponent;
let fixture: ComponentFixture<VotingSummaryComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ FormContainerComponent ]
declarations: [ VotingSummaryComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(FormContainerComponent);
fixture = TestBed.createComponent(VotingSummaryComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});

View File

@ -0,0 +1,19 @@
import { Component, OnInit } from '@angular/core';
import {BaseComponent} from "../base-page/base.component";
import {ConfigService} from "../../config.service";
@Component({
selector: 'framadate-voting-summary',
templateUrl: './voting-summary.component.html',
styleUrls: ['./voting-summary.component.scss']
})
export class VotingSummaryComponent extends BaseComponent implements OnInit {
constructor(public config: ConfigService) {
super(config);
}
ngOnInit() {
}
}

64
src/assets/i18n/en.json Normal file
View File

@ -0,0 +1,64 @@
{
"Title": "Translation example",
"Intro": "Hello I am {{name}}, I am {{age}} years old.",
"home": {
"title": "home's title"
},
"config": {
"demo": "this is a demo",
"demo_other": "this is an other demo",
"continue": "Continue",
"perfect": "That's perfect",
"title": "Create a poll",
"letsgo": "Lets go!",
"description": "Planifiez des rendez-vous avec vos amis ou votre famille ou créez un sondage avec du texte, des images ou des liens… un sondage quoi !",
"find_my_polls": "Where are my polls ?",
"find_helper": "I am looking for polls linked to my email",
"find_button": "Find my polls"
},
"creation": {
"title": "To begin with",
"want": "I want to create a poll",
"kind": {
"classic": "classic",
"date": "special dates"
},
"choose_title": "Whom title will be",
"choose_title_placeholder": "title",
"name": "I can also specify my name if i want",
"name_placeholder": "my name",
"description": "and the description would be",
"description_placeholder": "summary of the poll's purpose"
},
"dates": {
"title": "Config spécialement pour les dates ",
"hours_different": "Je souhaite mettre des créneaux horaires pour chaque journée",
"multiple": {
"identical": "identiques",
"different": "possiblement différentes"
},
"add": "Ajouter une plage de dates",
"count_dates": "choix de dates"
},
"choices": {
"title": "Choisir les propositions",
"helper": "vous pouvez utiliser la syntaxe markdown ",
"answer_preset_1": "réponse de démo 1",
"answer_preset_2": "réponse 2",
"answer_preset_3": "la réponse D",
"add": "Ajouter",
"continue": "Voyons ce que ça donne"
},
"resume": {
"title": "Et c'est tout pour nous!",
"admins": "Coté administrateur-ice-eux",
"users": "Coté sondés",
"links_mail": "recevoir les liens par e-mail"
},
"visibility": {
"title": "Visibilité des réponses",
"votes": "Votes",
"archiving": "Archivage",
"access": "Accès au sondage"
}
}

64
src/assets/i18n/fr.json Normal file
View File

@ -0,0 +1,64 @@
{
"Title": "Example de traduction",
"Intro": "Bonjour je m'appelle {{name}}, j'ai {{age}} ans.",
"home": {
"title": "le titre de la home"
},
"config": {
"demo": "C'est une démo traduite en Français",
"demo_other": "C'est une <strong>autre</strong> démo traduite en Français",
"continue": "Continuer",
"perfect": "C'est parfait",
"title": "Créer un sondage",
"letsgo": "C'est parti'",
"description": "Planifiez des rendez-vous avec vos amis ou votre famille ou créez un sondage avec du texte, des images ou des liens… un sondage quoi !",
"find_my_polls": "Où sont mes sondages ?",
"find_helper": "Je cherche les sondages qui correspondent à mon mail",
"find_button": "Retrouver mes sondages"
},
"creation": {
"title": "Pour commencer ",
"want": "Je veux créer un sondage",
"kind": {
"classic": "classique",
"date": "spécial dates"
},
"choose_title": "Dont le titre sera",
"choose_title_placeholder": "titre",
"name": "Je peux aussi préciser mon nom si je le souhaite",
"name_placeholder": "mon nom",
"description": "et la description serait",
"description_placeholder": "description"
},
"dates": {
"title": "Config spécialement pour les dates ",
"hours_different": "Je souhaite mettre des créneaux horaires pour chaque journée",
"multiple": {
"identical": "identiques",
"different": "possiblement différentes"
},
"add": "Ajouter une plage de dates",
"count_dates": "choix de dates"
},
"choices": {
"title": "Choisir les propositions",
"helper": "vous pouvez utiliser la syntaxe markdown ",
"answer_preset_1": "réponse de démo 1",
"answer_preset_2": "réponse 2",
"answer_preset_3": "la réponse D",
"add": "Ajouter",
"continue": "Voyons ce que ça donne"
},
"resume": {
"title": "Et c'est tout pour nous!",
"admins": "Coté administrateur-ice-eux",
"users": "Coté sondés",
"links_mail": "recevoir les liens par e-mail"
},
"visibility": {
"title": "Visibilité des réponses",
"votes": "Votes",
"archiving": "Archivage",
"access": "Accès au sondage"
}
}

343
src/locale/messages.xlf Normal file
View File

@ -0,0 +1,343 @@
<?xml version="1.0" encoding="UTF-8" ?>
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
<file source-language="fr" datatype="plaintext" original="ng2.template">
<body>
<trans-unit id="demo" datatype="html">
<source>
Ceci est une démo
</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/app.component.html</context>
<context context-type="linenumber">7</context>
</context-group>
<note priority="1" from="description">introduction header saying just demo </note>
<note priority="1" from="meaning">demo title</note>
</trans-unit>
<trans-unit id="plural_example" datatype="html">
<source>
Updated <x id="ICU" equiv-text="{minutes, plural, =0 {...} =1 {...} other {...}}"/>
</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/app.component.html</context>
<context context-type="linenumber">10</context>
</context-group>
</trans-unit>
<trans-unit id="5a134dee893586d02bffc9611056b9cadf9abfad" datatype="html">
<source>{VAR_PLURAL, plural, =0 {just now} =1 {one minute ago} other {<x id="INTERPOLATION" equiv-text="{{minutes}}"/> minutes ago} }</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/app.component.html</context>
<context context-type="linenumber">11</context>
</context-group>
</trans-unit>
<trans-unit id="c279d3eb8220c1a0b77adb0a520b3e81f086d046" datatype="html">
<source>placeholder à traduire</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/app.component.html</context>
<context context-type="linenumber">13</context>
</context-group>
</trans-unit>
<trans-unit id="confirm" datatype="html">
<source>C&apos;est parfait!</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/pages/base-page/base.component.html</context>
<context context-type="linenumber">2</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/pages/kind/kind.component.html</context>
<context context-type="linenumber">4</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/pages/visibility/visibility.component.html</context>
<context context-type="linenumber">14</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/pages/resume/resume.component.html</context>
<context context-type="linenumber">10</context>
</context-group>
</trans-unit>
<trans-unit id="8dfa2af2946c94200a9c49226ac8221ddec0834d" datatype="html">
<source>
Config spécialement pour les dates
</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/pages/dates/dates.component.html</context>
<context context-type="linenumber">1</context>
</context-group>
</trans-unit>
<trans-unit id="05c94bdaeec38467e5d8ec67ef06ae02bc2721fd" datatype="html">
<source>
Je souhaite mettre des créneaux horaires
</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/pages/dates/dates.component.html</context>
<context context-type="linenumber">16</context>
</context-group>
</trans-unit>
<trans-unit id="3da20d71c6eacf0bf933e2ebefcc8581b77fcd07" datatype="html">
<source>
pour chaque journée
</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/pages/dates/dates.component.html</context>
<context context-type="linenumber">20</context>
</context-group>
</trans-unit>
<trans-unit id="0bd3bae4b21407cbd1ab7f12f2516aba84ee8cd5" datatype="html">
<source>
Ajouter une plage de dates
</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/pages/dates/dates.component.html</context>
<context context-type="linenumber">30</context>
</context-group>
</trans-unit>
<trans-unit id="d5ac5c6775ece9a7d33e5dc3519806c6edfb87bc" datatype="html">
<source>
choix de Dates
</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/pages/dates/dates.component.html</context>
<context context-type="linenumber">35</context>
</context-group>
</trans-unit>
<trans-unit id="6387b579b9b1bdb74c3dfd9d63387adb40076376" datatype="html">
<source>
infos de debug
</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/debugger/debugger.component.html</context>
<context context-type="linenumber">4</context>
</context-group>
</trans-unit>
<trans-unit id="ddacf8feec398fe7fcda34b82a7aa4d71e10e755" datatype="html">
<source>
Choix cornélien syncronisé:
</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/debugger/debugger.component.html</context>
<context context-type="linenumber">27</context>
</context-group>
</trans-unit>
<trans-unit id="d146b7d3598f0f99412cb115c4c9b9dc6724a3db" datatype="html">
<source>
sondage classique
</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/debugger/debugger.component.html</context>
<context context-type="linenumber">37</context>
</context-group>
</trans-unit>
<trans-unit id="9e1841dca6f43cec422f009746b78fa72021aed3" datatype="html">
<source>
sondage spécial date
</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/debugger/debugger.component.html</context>
<context context-type="linenumber">51</context>
</context-group>
</trans-unit>
<trans-unit id="9dffbece2b62a762cc013cd9a092a45386644395" datatype="html">
<source>
Envoyer le formulaire
</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/debugger/debugger.component.html</context>
<context context-type="linenumber">64</context>
</context-group>
</trans-unit>
<trans-unit id="a2e46fcfdbcd6457dd6dda15896ff772a4cccb59" datatype="html">
<source>
Visibilité des réponses
</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/pages/visibility/visibility.component.html</context>
<context context-type="linenumber">1</context>
</context-group>
</trans-unit>
<trans-unit id="f3fa123ec08a0f55d20203474e459cb166171530" datatype="html">
<source>
Votes
</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/pages/visibility/visibility.component.html</context>
<context context-type="linenumber">4</context>
</context-group>
</trans-unit>
<trans-unit id="07056464cc8e77270490824db1c119774a9605d8" datatype="html">
<source>
Archivage
</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/pages/visibility/visibility.component.html</context>
<context context-type="linenumber">7</context>
</context-group>
</trans-unit>
<trans-unit id="e89a47f338845c2bc853956b810455622ea70d18" datatype="html">
<source>
Accès au sondage
</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/pages/visibility/visibility.component.html</context>
<context context-type="linenumber">11</context>
</context-group>
</trans-unit>
<trans-unit id="575c777901e66582920b91544ddfc3f1cff6dfdd" datatype="html">
<source>
Résumé avant validation
</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/pages/resume/resume.component.html</context>
<context context-type="linenumber">1</context>
</context-group>
</trans-unit>
<trans-unit id="e73989397fa8b6b2a516ec090b7653d7ca8a9f2d" datatype="html">
<source>
Images
</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/pages/pictures/pictures.component.html</context>
<context context-type="linenumber">2</context>
</context-group>
</trans-unit>
<trans-unit id="f6d82bb9d11a1a8fbfbc8dd54388b068db42fd4a" datatype="html">
<source>
Choisir les propositions
</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/pages/answers/answers.component.html</context>
<context context-type="linenumber">2</context>
</context-group>
</trans-unit>
<trans-unit id="aa15ed6f3664a52d0532b4caccc5e3862eceaff6" datatype="html">
<source>
vous pouvez utiliser la syntaxe markdown
</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/pages/answers/answers.component.html</context>
<context context-type="linenumber">6</context>
</context-group>
</trans-unit>
<trans-unit id="8c8496fbdf12a4a3ef88119cd37deca10bf6c661" datatype="html">
<source>
Et c&apos;est tout pour nous!
</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/pages/end-confirmation/end-confirmation.component.html</context>
<context context-type="linenumber">1</context>
</context-group>
</trans-unit>
<trans-unit id="c434b3773c35a5d55a1f5648433e7521e4424aea" datatype="html">
<source>Coté administrateur-ice-eux</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/pages/end-confirmation/end-confirmation.component.html</context>
<context context-type="linenumber">4</context>
</context-group>
</trans-unit>
<trans-unit id="d0225bc631b962e0c6696ebc3e26cc90ecf15387" datatype="html">
<source>Coté sondés</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/pages/end-confirmation/end-confirmation.component.html</context>
<context context-type="linenumber">5</context>
</context-group>
</trans-unit>
<trans-unit id="585c8fc362784c1de91b02f0e69e08c6993f9dd2" datatype="html">
<source>recevoir les liens par e-mail</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/pages/end-confirmation/end-confirmation.component.html</context>
<context context-type="linenumber">6</context>
</context-group>
</trans-unit>
<trans-unit id="f74e29e3e6b015dc4163c3d43002088d0e1da5dc" datatype="html">
<source>
Créer un sondage
</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/pages/create-or-retrieve/create-or-retrieve.component.html</context>
<context context-type="linenumber">2</context>
</context-group>
</trans-unit>
<trans-unit id="36ab2505621b4451317833191d6a4c2d7c214b3c" datatype="html">
<source>
Planifiez des rendez-vous avec vos amis ou votre famille ou créez un sondage avec du texte, des images ou des
liens… un sondage quoi !
</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/pages/create-or-retrieve/create-or-retrieve.component.html</context>
<context context-type="linenumber">8</context>
</context-group>
</trans-unit>
<trans-unit id="c3781d8c21f3eba04fe803a3fe0a4560401491d5" datatype="html">
<source>
C&apos;est parti
</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/pages/create-or-retrieve/create-or-retrieve.component.html</context>
<context context-type="linenumber">19</context>
</context-group>
</trans-unit>
<trans-unit id="9e1fa5a7ae3c13a9fa4a657d94085e239066377a" datatype="html">
<source>
Où sont mes sondages ?
</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/pages/create-or-retrieve/create-or-retrieve.component.html</context>
<context context-type="linenumber">29</context>
</context-group>
</trans-unit>
<trans-unit id="b291d9e84fc9afe337b3450266847c430523bcc5" datatype="html">
<source>
Je cherche les sondages qui correspondent à mon mail :
</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/pages/create-or-retrieve/create-or-retrieve.component.html</context>
<context context-type="linenumber">40</context>
</context-group>
</trans-unit>
<trans-unit id="9606f1c734851ad834d5f9eca4fbc79fad2cf406" datatype="html">
<source>
Pour commencer
</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/pages/home/home.component.html</context>
<context context-type="linenumber">4</context>
</context-group>
</trans-unit>
<trans-unit id="e40f615c5bada8d5458ede5b03812bdb8074d7d7" datatype="html">
<source>
Je veux créer un sondage
</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/pages/home/home.component.html</context>
<context context-type="linenumber">10</context>
</context-group>
</trans-unit>
<trans-unit id="99eef0ca99f5a0e0aee806ffdefb5ca1ca318b07" datatype="html">
<source>
Dont le titre sera
</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/pages/home/home.component.html</context>
<context context-type="linenumber">34</context>
</context-group>
</trans-unit>
<trans-unit id="77100ae0f206a821d33d9582dd2962f379eaeac7" datatype="html">
<source>
et la description serait
</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/pages/home/home.component.html</context>
<context context-type="linenumber">64</context>
</context-group>
</trans-unit>
<trans-unit id="114007b6744088dc57d792702b19f91f68f7926e" datatype="html">
<source>
Continuer
</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/pages/home/home.component.html</context>
<context context-type="linenumber">82</context>
</context-group>
</trans-unit>
</body>
</file>
</xliff>

7187
yarn.lock Normal file

File diff suppressed because it is too large Load Diff