mirror of
https://framagit.org/framasoft/framadate/funky-framadate-front.git
synced 2023-08-25 13:53:14 +02:00
Merge branch 'creation-form' of https://framagit.org/framasoft/framadate/funky-framadate-front into creation-form
This commit is contained in:
commit
b46b57eeba
@ -73,7 +73,8 @@
|
||||
"serve": {
|
||||
"builder": "@angular-devkit/build-angular:dev-server",
|
||||
"options": {
|
||||
"browserTarget": "framadate:build"
|
||||
"browserTarget": "framadate:build",
|
||||
"proxyConfig": "src/proxy.conf.json"
|
||||
},
|
||||
"configurations": {
|
||||
"production": {
|
||||
|
@ -5,11 +5,17 @@ export class PollConfiguration {
|
||||
constructor(
|
||||
public isAboutDate: boolean = false,
|
||||
public isProtectedByPassword: boolean = false,
|
||||
public password: string = '',
|
||||
public isOwnerNotifiedByEmailOnNewVote: boolean = false,
|
||||
public isOwnerNotifiedByEmailOnNewComment: boolean = false,
|
||||
public isMaybeAnswerAvailable: boolean = false,
|
||||
public areResultsPublic: boolean = true,
|
||||
public isAllowingtoChangeOwnAnswers: boolean = true,
|
||||
public whoCanChangeAnswers: string = 'everybody',
|
||||
public dateCreated: Date = new Date(Date.now()),
|
||||
public expiresDaysDelay: number = environment.poll.defaultConfig.expiracyInDays,
|
||||
public expiracyAfterLastModificationInDays: number = environment.poll.defaultConfig
|
||||
.expiracyAfterLastModificationInDays,
|
||||
public expires: Date = DateService.addDaysToDate(
|
||||
environment.poll.defaultConfig.expiracyInDays,
|
||||
new Date(Date.now())
|
||||
|
@ -13,7 +13,9 @@ export class Poll {
|
||||
public description?: string,
|
||||
public configuration: PollConfiguration = new PollConfiguration(),
|
||||
public comments: Comment[] = [],
|
||||
public choices: Choice[] = []
|
||||
public choices: Choice[] = [],
|
||||
public dateChoices: Choice[] = [],
|
||||
public timeChoices: Choice[] = []
|
||||
) {}
|
||||
|
||||
public getAdministrationUrl(): string {
|
||||
|
@ -37,14 +37,16 @@ export class ApiService {
|
||||
this.axiosInstance.defaults.timeout = 2500;
|
||||
this.axiosInstance.defaults.headers.post['Content-Type'] = 'application/json';
|
||||
this.axiosInstance.defaults.headers.post['Accept'] = 'application/json';
|
||||
this.axiosInstance.defaults.headers.post['Charset'] = 'UTF-8';
|
||||
this.axiosInstance.defaults.headers.post['Access-Control-Allow-Methods'] = 'GET, POST, PUT, DELETE, OPTIONS';
|
||||
this.axiosInstance.defaults.headers.post['Access-Control-Allow-Origin'] = '*';
|
||||
this.axiosInstance.defaults.headers.post['Charset'] = 'UTF-8';
|
||||
console.log('this.axiosInstance.defaults.headers', this.axiosInstance.defaults.headers);
|
||||
}
|
||||
|
||||
//////////////////////
|
||||
// CREATE OR UPDATE //
|
||||
//////////////////////
|
||||
|
||||
public async createPoll(poll: Poll): Promise<Subscription> {
|
||||
// this.loader.setStatus(true);
|
||||
console.log('config', poll);
|
||||
@ -68,7 +70,9 @@ export class ApiService {
|
||||
|
||||
try {
|
||||
console.log('currentApiRoutes', currentApiRoutes);
|
||||
return await this.axiosInstance.post(`${apiBaseHref}${currentApiRoutes['api_new_poll']}`, poll);
|
||||
return await this.axiosInstance.post(`${apiBaseHref}${currentApiRoutes['api_new_poll']}`, {
|
||||
data: poll,
|
||||
});
|
||||
} catch (error) {
|
||||
ApiService.handleError(error);
|
||||
}
|
||||
|
@ -182,12 +182,62 @@ export class PollService implements Resolve<Poll> {
|
||||
return list;
|
||||
}
|
||||
|
||||
newPollFromForm(form: any): Poll {
|
||||
newPollFromForm(form: any): any {
|
||||
const newpoll = new Poll(
|
||||
this.userService.getCurrentUser(),
|
||||
this.uuidService.getUUID(),
|
||||
form.controls.title.value
|
||||
);
|
||||
return newpoll;
|
||||
/**
|
||||
* convert to API version 1 config poll
|
||||
*/
|
||||
const apiV1Poll = {
|
||||
menuVisible: true,
|
||||
expiracyDateDefaultInDays: newpoll.configuration.expiresDaysDelay,
|
||||
deletionDateAfterLastModification: newpoll.configuration.expiracyAfterLastModificationInDays,
|
||||
pollType: newpoll.configuration.isAboutDate ? 'dates' : 'classic', // classic or dates
|
||||
title: newpoll.title,
|
||||
description: newpoll.description,
|
||||
myName: newpoll.owner.pseudo,
|
||||
myComment: '',
|
||||
isAdmin: true, // when we create a poll, we are admin on it
|
||||
myVoteStack: {},
|
||||
myTempVoteStack: 0,
|
||||
myEmail: newpoll.owner.email,
|
||||
myPolls: [], // list of retrieved polls from the backend api
|
||||
/*
|
||||
date specific poll, we have the choice to setup different hours (timeList) for all possible dates (dateList), or use the same hours for all dates
|
||||
*/
|
||||
allowSeveralHours: 'true',
|
||||
// access
|
||||
visibility: newpoll.configuration.areResultsPublic, // visible to one with the link:
|
||||
voteChoices: newpoll.configuration.isMaybeAnswerAvailable ? 'yes, maybe, no' : 'yes', // possible answers to a vote choice: only "yes", "yes, maybe, no"
|
||||
creationDate: new Date(),
|
||||
expirationDate: '', // expiracy date
|
||||
voteStackId: null, // id of the vote stack to update
|
||||
pollId: null, // id of the current poll when created. data given by the backend api
|
||||
pollSlug: null, // id of the current poll when created. data given by the backend api
|
||||
currentPoll: null, // current poll selected with createPoll or getPoll of ConfigService
|
||||
passwordAccess: newpoll.configuration.isProtectedByPassword,
|
||||
password: newpoll.configuration.password,
|
||||
customUrl: newpoll.slug, // custom slug in the url, must be unique
|
||||
customUrlIsUnique: null, // given by the backend
|
||||
urlSlugPublic: null,
|
||||
urlPublic: null,
|
||||
urlAdmin: null,
|
||||
adminKey: '', // key to change config of the poll
|
||||
owner_modifier_token: '', // key to change a vote stack
|
||||
canModifyAnswers: newpoll.configuration.isAllowingtoChangeOwnAnswers, // bool for the frontend selector
|
||||
whoModifiesAnswers: newpoll.configuration.whoCanChangeAnswers, // everybody, self, nobody (: just admin)
|
||||
whoCanChangeAnswers: newpoll.configuration.whoCanChangeAnswers, // everybody, self, nobody (: just admin)
|
||||
dateList: newpoll.dateChoices, // sets of days as strings, config to set identical time for days in a special days poll
|
||||
timeList: newpoll.timeChoices, // ranges of time expressed as strings
|
||||
|
||||
answers: newpoll.choices,
|
||||
// modals
|
||||
displayConfirmVoteModalAdmin: false,
|
||||
};
|
||||
console.log('apiV1Poll', apiV1Poll);
|
||||
return apiV1Poll;
|
||||
}
|
||||
}
|
||||
|
@ -58,7 +58,9 @@ export class FormComponent implements OnInit {
|
||||
|
||||
public createPoll(): void {
|
||||
console.log('this.form', this.form);
|
||||
this.apiService.createPoll(this.pollService.newPollFromForm(this.form));
|
||||
const newpoll = this.pollService.newPollFromForm(this.form);
|
||||
console.log('newpoll', newpoll);
|
||||
this.apiService.createPoll(newpoll);
|
||||
// if (this.form.valid) {
|
||||
// console.log('Le sondage est correctement rempli, prêt à enregistrer.');
|
||||
// const newpoll = this.pollService.newPollFromForm(this.form);
|
||||
|
7
src/proxy.conf.json
Normal file
7
src/proxy.conf.json
Normal file
@ -0,0 +1,7 @@
|
||||
{
|
||||
"/api/*": {
|
||||
"target": "http://localhost:8000",
|
||||
"secure": false,
|
||||
"logLevel": "debug"
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user