Skip to content

Commit

Permalink
feat: survey scheme settings overrides (V4-1239)
Browse files Browse the repository at this point in the history
  • Loading branch information
lukashroch committed Aug 29, 2024
1 parent c778166 commit bfdfa46
Show file tree
Hide file tree
Showing 19 changed files with 281 additions and 185 deletions.
14 changes: 7 additions & 7 deletions apps/admin/src/components/prompts/partials/prompt-actions.vue
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@
<v-select
v-model="action.type"
hide-details="auto"
:items="actionList"
:items="actions"
:label="$t('survey-schemes.actions.types._')"
outlined
/>
Expand All @@ -64,7 +64,7 @@
{{ $t('survey-schemes.actions.layouts._') }}
</div>
<v-checkbox
v-for="layout in layoutList"
v-for="layout in layouts"
:key="layout.value"
v-model="action.layout"
class="mr-2"
Expand All @@ -76,7 +76,7 @@
v-model="action.variant"
class="mb-4"
hide-details="auto"
:items="actionVariantsList"
:items="actionVariants"
:label="$t('survey-schemes.actions.variants._')"
outlined
/>
Expand Down Expand Up @@ -201,13 +201,13 @@ export default defineComponent({
emits: ['update:actions'],
setup() {
const { actionList, actionVariantsList, colors, layoutList } = useSelects();
const { actions, actionVariants, colors, layouts } = useSelects();
return {
actionList,
actionVariantsList,
actions,
actionVariants,
colors,
layoutList,
layouts,
};
},
Expand Down
128 changes: 54 additions & 74 deletions apps/admin/src/composables/use-selects.ts
Original file line number Diff line number Diff line change
@@ -1,101 +1,81 @@
import orderBy from 'lodash/orderBy';
import { computed } from 'vue';

import { actionTypes, actionVariants, promptLayouts } from '@intake24/common/prompts';
import { actionTypes as actionTypeRefs, actionVariants as actionVariantRefs, promptLayouts } from '@intake24/common/prompts';
import { recordVisibilities } from '@intake24/common/security';
import { recallFlows as recallFlowRefs, schemeTypes as schemeTypeRefs } from '@intake24/common/surveys';
import { colors as themeColors } from '@intake24/common/theme';
import { textDirections } from '@intake24/common/types';
import { textDirections as textDirectionRefs } from '@intake24/common/types';
import { useI18n } from '@intake24/i18n';

export function useSelects() {
const { i18n } = useI18n();

const actionList = computed(() =>
actionTypes.map(value => ({
value,
text: i18n.t(`survey-schemes.actions.types.${value}`).toString(),
})),
);
const actions = actionTypeRefs.map(value => ({
value,
text: i18n.t(`survey-schemes.actions.types.${value}`).toString(),
}));

const actionVariantsList = computed(() =>
actionVariants.map(value => ({
value,
text: i18n.t(`survey-schemes.actions.variants.${value}`).toString(),
})),
);
const actionVariants = actionVariantRefs.map(value => ({
value,
text: i18n.t(`survey-schemes.actions.variants.${value}`).toString(),
}));

const colors = Object.entries(themeColors).map(([key, color]) => ({
value: key,
text: key.toUpperCase(),
color,
}));

const colors = computed(() =>
Object.entries(themeColors).map(([key, color]) => ({
const flags = orderBy(
Object.entries(i18n.messages[i18n.locale].flags).map(([key, value]) => ({
value: key,
text: key.toUpperCase(),
color,
text: value,
})),
'text',
);

const flags = computed(() =>
orderBy(
Object.entries(i18n.messages[i18n.locale].flags).map(([key, value]) => ({
value: key,
text: value,
})),
'text',
),
);
const layouts = promptLayouts.map(value => ({
value,
text: i18n.t(`survey-schemes.actions.layouts.${value}`).toString(),
}));

const layoutList = computed(() =>
promptLayouts.map(value => ({
value,
text: i18n.t(`survey-schemes.actions.layouts.${value}`).toString(),
})),
);
const orientations = ['column', 'row'].map(value => ({
text: i18n.t(`survey-schemes.prompts.orientation.${value}`),
value,
}));

const orientations = computed(() =>
['column', 'row'].map(value => ({
text: i18n.t(`survey-schemes.prompts.orientation.${value}`),
value,
})),
);
const textDirections = textDirectionRefs.map(value => ({
value,
text: i18n.t(`languages.textDirections.${value}`).toString(),
icon: value === 'ltr' ? 'fas fa-right-long' : 'fas fa-left-long',
}));

const properties = computed(() =>
['recallNumber', 'userName'].map(value => ({
value,
text: i18n.t(`survey-schemes.conditions.properties.${value}`).toString(),
})),
);
const visibilities = recordVisibilities.map(value => ({
value,
text: i18n.t(`securables.visibility.${value}`).toString(),
icon: value === 'restricted' ? 'fas fa-eye-slash' : 'fas fa-eye',
}));

const sections = computed(() =>
['food', 'meal', 'survey'].map(value => ({
value,
text: i18n.t(`survey-schemes.conditions.sections.${value}`).toString(),
})),
);
const schemeTypes = schemeTypeRefs.map(value => ({
value,
text: i18n.t(`survey-schemes.settings.types.${value}`),
}));

const textDirectionList = computed(() =>
textDirections.map(value => ({
value,
text: i18n.t(`languages.textDirections.${value}`).toString(),
icon: value === 'ltr' ? 'fas fa-right-long' : 'fas fa-left-long',
})),
);

const visibilityList = computed(() =>
recordVisibilities.map(value => ({
value,
text: i18n.t(`securables.visibility.${value}`).toString(),
icon: value === 'restricted' ? 'fas fa-eye-slash' : 'fas fa-eye',
})),
);
const recallFlows = recallFlowRefs.map(value => ({
value,
text: i18n.t(`survey-schemes.settings.flows.${value}`),
}));

return {
actionList,
actionVariantsList,
actions,
actionVariants,
colors,
flags,
layoutList,
layouts,
orientations,
properties,
sections,
textDirectionList,
visibilityList,
textDirections,
visibilities,
recallFlows,
schemeTypes,
};
}
6 changes: 3 additions & 3 deletions apps/admin/src/views/feedback-schemes/form.vue
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@
class="mb-4"
:error-messages="form.errors.get('visibility')"
hide-details="auto"
:items="visibilityList"
:items="visibilities"
:label="$t('securables.visibility._')"
name="visibility"
outlined
Expand Down Expand Up @@ -249,7 +249,7 @@ export default defineComponent({
setup(props) {
const { i18n } = useI18n();
const { visibilityList } = useSelects();
const { visibilities } = useSelects();
const types = feedbackTypes.map(value => ({
value,
Expand Down Expand Up @@ -371,7 +371,7 @@ export default defineComponent({
routeLeave,
submit,
requiredPhysicalDataFields,
visibilityList,
visibilities,
};
},
});
Expand Down
10 changes: 5 additions & 5 deletions apps/admin/src/views/languages/form.vue
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@
v-model="form.textDirection"
:error-messages="form.errors.get('textDirection')"
hide-details="auto"
:items="textDirectionList"
:items="textDirections"
:label="$t('languages.textDirections._')"
name="textDirection"
outlined
Expand All @@ -87,7 +87,7 @@
v-model="form.visibility"
:error-messages="form.errors.get('visibility')"
hide-details="auto"
:items="visibilityList"
:items="visibilities"
:label="$t('securables.visibility._')"
name="visibility"
outlined
Expand Down Expand Up @@ -139,7 +139,7 @@ export default defineComponent({
mixins: [formMixin],
setup(props) {
const { flags, textDirectionList, visibilityList } = useSelects();
const { flags, textDirections, visibilities } = useSelects();
const { entry, entryLoaded, isEdit } = useEntry<LanguageEntry>(props);
useEntryFetch(props);
Expand Down Expand Up @@ -167,8 +167,8 @@ export default defineComponent({
form,
routeLeave,
submit,
textDirectionList,
visibilityList,
textDirections,
visibilities,
};
},
});
Expand Down
10 changes: 5 additions & 5 deletions apps/admin/src/views/locales/form.vue
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@
v-model="form.textDirection"
:error-messages="form.errors.get('textDirection')"
hide-details="auto"
:items="textDirectionList"
:items="textDirections"
:label="$t('languages.textDirections._')"
name="textDirection"
outlined
Expand All @@ -127,7 +127,7 @@
v-model="form.visibility"
:error-messages="form.errors.get('visibility')"
hide-details="auto"
:items="visibilityList"
:items="visibilities"
:label="$t('securables.visibility._')"
name="visibility"
outlined
Expand Down Expand Up @@ -218,7 +218,7 @@ export default defineComponent({
mixins: [formMixin],
setup(props) {
const { flags, textDirectionList, visibilityList } = useSelects();
const { flags, textDirections, visibilities } = useSelects();
const { entry, entryLoaded, isEdit, refs, refsLoaded } = useEntry<LocaleEntry, LocaleRefs>(
props,
Expand Down Expand Up @@ -252,8 +252,8 @@ export default defineComponent({
form,
routeLeave,
submit,
textDirectionList,
visibilityList,
textDirections,
visibilities,
};
},
Expand Down
Loading

0 comments on commit bfdfa46

Please sign in to comment.