diff --git a/src/Bundle/ChillPersonBundle/Resources/public/mod/AccompanyingPeriod/setReferrer.js b/src/Bundle/ChillPersonBundle/Resources/public/mod/AccompanyingPeriod/setReferrer.js index b06dba5b9..b73c0afea 100644 --- a/src/Bundle/ChillPersonBundle/Resources/public/mod/AccompanyingPeriod/setReferrer.js +++ b/src/Bundle/ChillPersonBundle/Resources/public/mod/AccompanyingPeriod/setReferrer.js @@ -2,25 +2,44 @@ import {createApp} from 'vue'; import SetReferrer from 'ChillPersonAssets/vuejs/_components/AccompanyingPeriod/SetReferrer.vue'; import {fetchResults} from 'ChillMainAssets/lib/api/apiMethods.js'; +/** + * + * To start this app, add this container into recordAction passed as argument to + * `ChillPerson/AccompanyingPeriod/_list_item.html.twig`: + * + * ```html+twig + * {% if is_granted('CHILL_PERSON_ACCOMPANYING_PERIOD_UPDATE', period) %} + *
  • + * + *
  • + * {% endif %} + * ``` + * + * The app will update the referrer displayed into dedicated span + */ + document.querySelectorAll('[data-set-referrer-app]').forEach(function (el) { let periodId = Number.parseInt(el.dataset.setReferrerAccompanyingPeriodId); const url = `/api/1.0/person/accompanying-course/${periodId}/referrers-suggested.json`; + fetchResults(url).then(suggested => { + const app = createApp({ components: { SetReferrer, }, template: - '', + '', data() { return { - suggested, periodId, + periodId, suggested, original: suggested, } }, methods: { onReferrerSet(ref) { + const bloc = document.querySelector(`[data-accompanying-period-id="${this.periodId}"]`); if (bloc === null) { console.error('bloc not found'); @@ -37,6 +56,7 @@ document.querySelectorAll('[data-set-referrer-app]').forEach(function (el) { label.textContent = ref.text; label.classList.remove('chill-no-data-statement'); + this.suggested = this.original.filter(user => user.id !== ref.id); } } }); diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/AccompanyingPeriod/SetReferrer.vue b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/AccompanyingPeriod/SetReferrer.vue index 049dabff6..3d3675c73 100644 --- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/AccompanyingPeriod/SetReferrer.vue +++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/AccompanyingPeriod/SetReferrer.vue @@ -1,6 +1,6 @@ @@ -11,16 +11,23 @@ import {makeFetch} from 'ChillMainAssets/lib/api/apiMethods.js'; export default { name: "SetReferrer", props: { - suggested: { + suggested: { type: Array, required: false, - default: [], + //default: [], }, periodId: { type: Number, required: true } }, + data() { + return { + /*suggested: [ + {id: 5, text: 'Robert'}, {id: 8, text: 'Monique'}, + ]*/ + } + }, emits: ['referrerSet'], methods: { setReferrer: function(ref) { diff --git a/src/Bundle/ChillPersonBundle/Resources/views/AccompanyingPeriod/_list_item.html.twig b/src/Bundle/ChillPersonBundle/Resources/views/AccompanyingPeriod/_list_item.html.twig index b53631e86..5f12f60f1 100644 --- a/src/Bundle/ChillPersonBundle/Resources/views/AccompanyingPeriod/_list_item.html.twig +++ b/src/Bundle/ChillPersonBundle/Resources/views/AccompanyingPeriod/_list_item.html.twig @@ -1,4 +1,4 @@ -
    +
    @@ -43,6 +43,7 @@
    {% if chill_accompanying_periods.fields.user == 'visible' %} + {# the tags `data-referrer-text` is used by module `@ChillPerson/mod/AccompanyingPeriod/setReferrer.js` #} {% if period.user %} {{ 'Referrer'|trans }}: {{ period.user|chill_entity_render_box }}