diff --git a/src/pretix/static/pretixcontrol/js/ui/questionnaires/App.vue b/src/pretix/static/pretixcontrol/js/ui/questionnaires/App.vue index 52a1f69a3..86e03c0b9 100644 --- a/src/pretix/static/pretixcontrol/js/ui/questionnaires/App.vue +++ b/src/pretix/static/pretixcontrol/js/ui/questionnaires/App.vue @@ -1,30 +1,32 @@ diff --git a/src/pretix/static/pretixcontrol/js/ui/questionnaires/Question.vue b/src/pretix/static/pretixcontrol/js/ui/questionnaires/Question.vue index 889b4c267..18fe4453b 100644 --- a/src/pretix/static/pretixcontrol/js/ui/questionnaires/Question.vue +++ b/src/pretix/static/pretixcontrol/js/ui/questionnaires/Question.vue @@ -1,47 +1,47 @@ - - + + - - - {{ i18n_any(question.question) }} + + {{ i18n_any(question.label) }} - - - + + + - {{ i18n_any(question.question) }} + {{ i18n_any(question.label) }} - - + + + v-if="df.type === QUESTION_TYPE.CHOICE || df.type === QUESTION_TYPE.CHOICE_MULTIPLE" + :multiple="df.type === QUESTION_TYPE.CHOICE_MULTIPLE" class="form-control"> {{ i18n_any(opt.answer) }} @@ -58,15 +58,15 @@ const editor = ref(); Question - + - Question type + Data field type - + {{ label }} @@ -80,7 +80,8 @@ const editor = ref(); Wenn diese Frage noch weitere Erklärung braucht, können Sie sie hier eintragen. - Close + Save and close + Remove from questionnaire diff --git a/src/pretix/static/pretixcontrol/js/ui/questionnaires/Questionnaire.vue b/src/pretix/static/pretixcontrol/js/ui/questionnaires/Questionnaire.vue new file mode 100644 index 000000000..b800cc091 --- /dev/null +++ b/src/pretix/static/pretixcontrol/js/ui/questionnaires/Questionnaire.vue @@ -0,0 +1,86 @@ + + + + + + + + + + + + + {{ props.questionnaire.internal_name }} + + + + + + + + + Bestehendes Datenfeld hinzufügen + Neues Datenfeld + Zwischenüberschrift + Text + + + + + + + + + Internal name + + + + + + + + Visible on products + + + + + {{ item.internal_name || i18n_any(item.name) }} + + + + + Save and close + Delete + + + diff --git a/src/pretix/static/pretixcontrol/js/ui/questionnaires/api.ts b/src/pretix/static/pretixcontrol/js/ui/questionnaires/api.ts index 371c5676f..baf98be44 100644 --- a/src/pretix/static/pretixcontrol/js/ui/questionnaires/api.ts +++ b/src/pretix/static/pretixcontrol/js/ui/questionnaires/api.ts @@ -1,10 +1,14 @@ const organizer_slug = document.body.getAttribute('data-organizer'), event_slug = document.body.getAttribute('data-event'); -export async function get_questions() { - return await (await fetch(`/api/v1/organizers/${organizer_slug}/events/${event_slug}/questions`)).json(); +export async function get_datafields() { + return await (await fetch(`/api/v1/organizers/${organizer_slug}/events/${event_slug}/datafields/`)).json(); +} + +export async function get_questionnaires() { + return await (await fetch(`/api/v1/organizers/${organizer_slug}/events/${event_slug}/questionnaires/`)).json(); } export async function get_items() { - return await (await fetch(`/api/v1/organizers/${organizer_slug}/events/${event_slug}/items`)).json(); + return await (await fetch(`/api/v1/organizers/${organizer_slug}/events/${event_slug}/items/`)).json(); } diff --git a/src/pretix/static/pretixcontrol/js/ui/questionnaires/helper.js b/src/pretix/static/pretixcontrol/js/ui/questionnaires/helper.js index 73a199bf9..6ec396dbb 100644 --- a/src/pretix/static/pretixcontrol/js/ui/questionnaires/helper.js +++ b/src/pretix/static/pretixcontrol/js/ui/questionnaires/helper.js @@ -1,8 +1,12 @@ export function i18n_any(data) { + if (!data) return null; return Object.values(data)[0]; } +function freezeRec(o) { + return Object.freeze(Object.fromEntries(Object.entries(o).map(([k, v]) => [k, v && Object.getPrototypeOf(v) === Object.prototype ? freezeRec(v) : v]))) +} export const QUESTION_TYPE = { NUMBER: "N", @@ -35,3 +39,13 @@ export const QUESTION_TYPE_LABEL = { COUNTRYCODE: _("Country code (ISO 3166-1 alpha-2)"), PHONENUMBER: _("Phone number"), }; + +export const SYSTEM_DATAFIELDS = freezeRec({ + 'attendee_name_parts': { label: _('Attendee name'), type: QUESTION_TYPE.STRING }, + 'attendee_email': { label: _('Attendee email'), type: QUESTION_TYPE.STRING }, + 'company': { label: _('Company'), type: QUESTION_TYPE.STRING }, + 'street': { label: _('Street'), type: QUESTION_TYPE.STRING }, + 'zipcode': { label: _('ZIP code'), type: QUESTION_TYPE.STRING }, + 'city': { label: _('City'), type: QUESTION_TYPE.STRING }, + 'country': { label: _('Country'), type: QUESTION_TYPE.COUNTRYCODE }, +});
+ Bestehendes Datenfeld hinzufügen + Neues Datenfeld + Zwischenüberschrift + Text +