Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 2 additions & 4 deletions app/constants.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,17 +23,15 @@ const ActivityCategories = [
'Algemeen',
'Sociëteit',
'Vorming',
'Dinsdagkring',
'Woensdagkring',
'Kring',
'ChOOSE',
'IFES',
'OZON',
'Disputen',
'Kiemgroepen',
'Genootschapen',
'Huizen',
'Extern',
'Eerstejaars',
'Curiositates',
];

const OpenQuestionTypes = ['text', 'textarea', 'number'];
Expand Down
31 changes: 24 additions & 7 deletions app/controllers/activities/ical.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
import Controller from '@ember/controller';
import EditController from 'amber-ui/controllers/application/edit';
// eslint-disable-next-line ember/no-computed-properties-in-native-classes
import { computed } from '@ember/object';
import { inject as service } from '@ember/service';
import { ActivityCategories } from 'amber-ui/constants';
import { tracked } from '@glimmer/tracking';

export default class ActivitiesIcalController extends Controller {
export default class ActivitiesIcalController extends EditController {
@service session;

@tracked activityCategoryOptions;

constructor() {
Expand All @@ -24,22 +23,21 @@ export default class ActivitiesIcalController extends Controller {

@computed('[email protected]')
get categoriesParams() {
const selected = this.activityCategoryOptions
return this.activityCategoryOptions
.filter((category) => category.checked)
.map((category) => category.value);
return `categories=${selected.join(',')}`;
}

get iCalBase() {
return `/ical/activities?key=${this.session.currentUser.icalSecretKey}&user_id=${this.session.currentUser.id}`;
}

get iCalURL() {
return `${window.location.origin}${this.iCalBase}&${this.categoriesParams}`;
return `${window.location.origin}${this.iCalBase}`;
}

get webcalURL() {
return `webcal://${window.location.host}${this.iCalBase}&${this.categoriesParams}`;
return `webcal://${window.location.host}${this.iCalBase}`;
}

_activityCategoryToOption(activityCategory) {
Expand All @@ -49,4 +47,23 @@ export default class ActivitiesIcalController extends Controller {
checked: true,
};
}

saveCategories = () => {
const { currentUser } = this.session;
const selectedCategories = this.categoriesParams;

currentUser.set('icalCategories', selectedCategories);

return currentUser
.save()
.then(() => {
this.flashNotice.sendSuccess('Categorieën succesvol opgeslagen!');
})
.catch((error) => {
this.flashNotice.sendError(
'Er ging iets fout bij het opslaan van je categorieën.'
);
console.error('Failed to save categories:', error);
});
};
}
1 change: 1 addition & 0 deletions app/models/user.js
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ export default class User extends Model {
// Security properties
@attr otpRequired;
@attr icalSecretKey;
@attr icalCategories;
@attr password;

// Technical properties
Expand Down
17 changes: 11 additions & 6 deletions app/templates/activities/ical.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,18 @@
<div class='card-body'>
<div class='alert alert-info'>
<p>
Als je de agenda's die je wilt volgen wilt aanpassen, dien je eerst
in je agenda-programma je oude Alpha-agenda te verwijderen voordat
je de nieuwe agenda-url toevoegt.
Als je de agenda's die je wilt volgen wilt aanpassen, update die automatisch
de bestaande agenda's in je agenda-applicatie.
</p>
<p class="mb-0">
Hoe je de agenda in Google Calendar importeert staat
<a href='https://support.google.com/calendar/answer/37100'>hier</a>
uitgelegd.
</p>
</div>

<form class='row' id='activityCategoryForm'>
{{#each activityCategoryOptions as |opt|}}
{{#each this.activityCategoryOptions as |opt|}}
<div class='col-sm-12 col-md-3'>
<div class='form-check'>
<Input
Expand All @@ -34,6 +34,11 @@
</div>
</div>
{{/each}}
<div class="col-12 mt-3">
<button type="button" class="btn btn-primary" {{on "click" this.saveCategories}}>
Opslaan
</button>
</div>
</form>

<hr />
Expand All @@ -51,8 +56,8 @@
anderen.
</b>
</div>
<p><a href='{{webcalURL}}'><code>{{iCalURL}}</code></a> </p>
<p><a href='{{this.webcalURL}}'><code>{{this.iCalURL}}</code></a></p>
</div>
</div>
</div>
</div>
</div>
6 changes: 2 additions & 4 deletions mirage/factories/activity.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,16 +16,14 @@ export default Factory.extend({
'algemeen',
'sociëteit',
'vorming',
'dinsdagkring',
'woensdagkring',
'kring',
'choose',
'ifes',
'ozon',
'disputen',
'kiemgroepen',
'genootschapen',
'huizen',
'extern',
'curiositates',
]),

afterCreate(activity, server) {
Expand Down
Loading