/*
eslint-disable class-methods-use-this
*/
export class Answer {
getTitle(value) {
return `${value.charAt(0).toUpperCase()}${value.slice(1).toLowerCase()}`.replace(/_\w+$/, '');
}
getDescription() {
return 'posts earn the highest engagement';
}
getChartLabel(value) {
return this.getTitle(value);
}
}
export class DayAnswer extends Answer {
getChartLabel(value) {
return value.charAt(0).toUpperCase();
}
}
export class FrequencyAnswer {
TIMES = { // eslint-disable-line no-undef
1: 'Once',
2: 'Twice',
3: 'Three',
4: 'Four',
5: 'Five',
6: 'Six',
7: 'Seven',
8: 'Eight',
9: 'Nine',
};
getTitle(value) {
let times;
value = Number(value);
if (value === 1 || value === 2) {
times = this.TIMES[value];
} else if (value > 2 && value < 10) {
times = `${this.TIMES[value]} times`;
} else {
times = `${value} times`;
}
return `${times} daily`;
}
getDescription() {
return 'is your most effective posting frequency';
}
getChartLabel(value) {
return this.getTitle(value);
}
}
export default class Answers {
static forType(metricType) {
if (metricType === 'frequency') {
return new FrequencyAnswer();
} else if (metricType === 'day') {
return new DayAnswer();
}
return new Answer();
}
}
|