framadate-responsive/src/app/config/PollConfig.ts

81 lines
3.0 KiB
TypeScript
Raw Normal View History

/**
* une option de date dans les sondages spéciaux
*/
import { environment } from '../../environments/environment';
import { DateChoice, defaultAnswers, otherDefaultDates, PollAnswer } from './defaultConfigs';
export interface DateOption {
2020-04-21 10:50:26 +02:00
timeList: any;
literal: string;
date_object?: object;
}
const baseConfigValues = {
2020-04-21 10:50:26 +02:00
pollType: 'dates',
title: '',
description: '',
myName: '',
myEmail: '',
};
2019-11-15 15:19:42 +01:00
/**
2019-08-10 17:41:01 +02:00
* configuration of the poll, add new fields at will
*/
export class PollConfig {
2020-04-21 10:50:26 +02:00
menuVisible = true;
2020-04-21 10:50:26 +02:00
expiracyDateDefaultInDays = 60;
deletionDateAfterLastModification = 180;
step = 0; // step in the progress of creating a poll
stepMax = 3; // step max in the progress of creating a poll
pollType = 'dates'; // classic or dates
2020-04-21 10:50:26 +02:00
title: string = environment.production ? '' : 'titre';
description: string = environment.production ? '' : 'ma description';
myName: string = environment.production ? '' : 'mon pseudo';
myComment: string = environment.production ? '' : 'wouah trop bien framadate!';
isAdmin = !environment.production;
myVoteStack: any;
myTempVoteStack = 0;
myEmail: string = environment.production ? '' : 'tktest@tktest.com';
myPolls: any = []; // list of retrieved polls from the backend api
/*
2020-04-11 16:16:25 +02:00
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
*/
2020-04-21 10:50:26 +02:00
allowSeveralHours = 'true';
// access
visibility = 'link_only'; // visible to anyone with the link:
voteChoices = 'only_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; // current poll selected with createPoll or getPoll of ConfigService
passwordAccess = 0;
password = '';
customUrl = ''; // custom slug in the url, must be unique
customUrlIsUnique = null; // given by the backend
urlSlugPublic = null;
2020-04-22 12:56:18 +02:00
urlPublic = environment.production ? '' : document.location.href + '/#/poll/id/4';
urlAdmin = document.location.href + '/#/admin/d65es45fd45sdf45sd345f312sdf31sgfd345';
2020-04-21 10:50:26 +02:00
adminKey = ''; // key to change config of the poll
owner_modifier_token = ''; // key to change a vote stack
canModifyAnswers = true; // bool for the frontend selector
whoModifiesAnswers = 'everybody'; // everybody, self, nobody (= just admin)
whoCanChangeAnswers = 'everybody'; // everybody, self, nobody (= just admin)
dateList: any = otherDefaultDates; // sets of days as strings, config to set identical time for days in a special days poll
timeList: DateChoice[] = otherDefaultDates; // ranges of time expressed as strings
2020-04-21 10:50:26 +02:00
answers: PollAnswer[] = defaultAnswers;
// modals
displayConfirmVoteModalAdmin = false;
2019-08-10 17:41:01 +02:00
2020-04-21 10:50:26 +02:00
resetConfig() {
const self = this;
Object.keys(baseConfigValues).forEach((key) => {
self[key] = baseConfigValues[key];
});
}
}