From 01f9d03b14c32e9af76a2f9bc63c71611bce2abd Mon Sep 17 00:00:00 2001 From: Mathieu Jaumotte Date: Mon, 26 Apr 2021 17:13:40 +0200 Subject: [PATCH 01/62] init vuex store --- .../public/js/AccompanyingCourse/App_test.vue | 19 ++++++++++++++ .../api/accompanyingCourse.js | 25 +++++++++++++++++++ .../AccompanyingCourse/api/participations.js | 5 ++++ .../public/js/AccompanyingCourse/index.js | 20 ++++++++++----- .../public/js/AccompanyingCourse/store/.keep | 0 .../js/AccompanyingCourse/store/index.js | 21 ++++++++++++++++ 6 files changed, 84 insertions(+), 6 deletions(-) create mode 100644 src/Bundle/ChillPersonBundle/Resources/public/js/AccompanyingCourse/App_test.vue create mode 100644 src/Bundle/ChillPersonBundle/Resources/public/js/AccompanyingCourse/api/accompanyingCourse.js create mode 100644 src/Bundle/ChillPersonBundle/Resources/public/js/AccompanyingCourse/api/participations.js delete mode 100644 src/Bundle/ChillPersonBundle/Resources/public/js/AccompanyingCourse/store/.keep create mode 100644 src/Bundle/ChillPersonBundle/Resources/public/js/AccompanyingCourse/store/index.js diff --git a/src/Bundle/ChillPersonBundle/Resources/public/js/AccompanyingCourse/App_test.vue b/src/Bundle/ChillPersonBundle/Resources/public/js/AccompanyingCourse/App_test.vue new file mode 100644 index 000000000..5e8bd0d09 --- /dev/null +++ b/src/Bundle/ChillPersonBundle/Resources/public/js/AccompanyingCourse/App_test.vue @@ -0,0 +1,19 @@ + + + diff --git a/src/Bundle/ChillPersonBundle/Resources/public/js/AccompanyingCourse/api/accompanyingCourse.js b/src/Bundle/ChillPersonBundle/Resources/public/js/AccompanyingCourse/api/accompanyingCourse.js new file mode 100644 index 000000000..1da9261c4 --- /dev/null +++ b/src/Bundle/ChillPersonBundle/Resources/public/js/AccompanyingCourse/api/accompanyingCourse.js @@ -0,0 +1,25 @@ +const + locale = 'fr', + format = 'json', + accompanying_period_id = () => window.accompanyingCourseId +; + +// 1. chill_person_accompanying_course_api_show +let getAccompanyingCourse = (accompanying_period_id) => { + const url = `/${locale}/person/api/1.0/accompanying-course/${accompanying_period_id}/show.${format}`; + return fetch(url).then(response => response.json()); +}; + +// 2. chill_person_accompanying_course_api_add_participation (POST) +let getParticipations = (accompanying_period_id) => { + const url = `/${locale}/person/api/1.0/accompanying-course/${accompanying_period_id}/participation.${format}` + return fetch(url).then(response => response.json()); +}; + +export { getAccompanyingCourse, getParticipations }; + + + +/// +// cfr. promise.all() pour plusieurs promesses +// catch throw sur le dernier then pour capturer l'erreur diff --git a/src/Bundle/ChillPersonBundle/Resources/public/js/AccompanyingCourse/api/participations.js b/src/Bundle/ChillPersonBundle/Resources/public/js/AccompanyingCourse/api/participations.js new file mode 100644 index 000000000..f0341ccd9 --- /dev/null +++ b/src/Bundle/ChillPersonBundle/Resources/public/js/AccompanyingCourse/api/participations.js @@ -0,0 +1,5 @@ + +const _participations = [] + +export default { +} diff --git a/src/Bundle/ChillPersonBundle/Resources/public/js/AccompanyingCourse/index.js b/src/Bundle/ChillPersonBundle/Resources/public/js/AccompanyingCourse/index.js index 4335113f7..6d738de33 100644 --- a/src/Bundle/ChillPersonBundle/Resources/public/js/AccompanyingCourse/index.js +++ b/src/Bundle/ChillPersonBundle/Resources/public/js/AccompanyingCourse/index.js @@ -1,8 +1,16 @@ -import App from './App.vue'; import { createApp } from 'vue'; +import createStore from './store'; +import App from './App_test.vue'; -const app = createApp({ - template: `` -}) -.component('app', App) -.mount('#accompanying-course'); +createStore.then(store => { + + //console.log('store in create_store', store); + console.log('store course', store.state.course); + + const app = createApp({ + template: ``, + }) + .use(store) + .component('app', App) + .mount('#accompanying-course'); +}); diff --git a/src/Bundle/ChillPersonBundle/Resources/public/js/AccompanyingCourse/store/.keep b/src/Bundle/ChillPersonBundle/Resources/public/js/AccompanyingCourse/store/.keep deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/Bundle/ChillPersonBundle/Resources/public/js/AccompanyingCourse/store/index.js b/src/Bundle/ChillPersonBundle/Resources/public/js/AccompanyingCourse/store/index.js new file mode 100644 index 000000000..e9bae629b --- /dev/null +++ b/src/Bundle/ChillPersonBundle/Resources/public/js/AccompanyingCourse/store/index.js @@ -0,0 +1,21 @@ +import 'es6-promise/auto'; +import { createStore } from 'vuex'; +import { getAccompanyingCourse, getParticipations } from '../api/accompanyingCourse'; + +const debug = process.env.NODE_ENV !== 'production'; + +let promise = getAccompanyingCourse(window.accompanyingCourseId) + .then(accompanying_course => new Promise((resolve, reject) => { + let store = createStore({ + state() { + return { + course: accompanying_course + } + }, + strict: debug + }); + //console.log('store', store); + resolve(store); + })); + +export default promise; From c2a4a95eba2675b7a9e78ecb8a6bc50568e29003 Mon Sep 17 00:00:00 2001 From: nobohan Date: Tue, 27 Apr 2021 18:52:37 +0200 Subject: [PATCH 02/62] add a fixture for accompanying period - wip --- .../ORM/LoadAccompanyingPeriod.php | 85 +++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 src/Bundle/ChillPersonBundle/DataFixtures/ORM/LoadAccompanyingPeriod.php diff --git a/src/Bundle/ChillPersonBundle/DataFixtures/ORM/LoadAccompanyingPeriod.php b/src/Bundle/ChillPersonBundle/DataFixtures/ORM/LoadAccompanyingPeriod.php new file mode 100644 index 000000000..74fe55e3c --- /dev/null +++ b/src/Bundle/ChillPersonBundle/DataFixtures/ORM/LoadAccompanyingPeriod.php @@ -0,0 +1,85 @@ +, + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +namespace Chill\PersonBundle\DataFixtures\ORM; + + +//use Doctrine\Bundle\FixturesBundle\Fixture; +use Doctrine\Common\DataFixtures\AbstractFixture; +use Doctrine\Common\DataFixtures\OrderedFixtureInterface; +use Doctrine\Persistence\ObjectManager; +use Symfony\Component\DependencyInjection\ContainerAwareInterface; + +use Chill\PersonBundle\Entity\AccompanyingPeriod; +use Chill\PersonBundle\Entity\Person; + +/** + * Description of LoadAccompanyingPeriod + * + * @author Champs-Libres Coop + */ +class LoadAccompanyingPeriod extends AbstractFixture implements OrderedFixtureInterface, ContainerAwareInterface +{ + use \Symfony\Component\DependencyInjection\ContainerAwareTrait; + + + public const ACCOMPANYING_PERIOD = 'parcours 1'; + + public function getOrder() + { + return 10004; + } + + public static $references = array(); + + public function load(ObjectManager $manager) + { + + // $centerA = $this->getReference('centerA'); + // $centerAId = $centerA->getId(); + // dump($centerA); + // dump($centerAId); + + // $personIds = $this->container->get('doctrine.orm.entity_manager') + // ->createQuery("SELECT person.id FROM ChillPersonBundle:Person person WHERE person.center_id = ".$centerAId." ORDER BY person.id LIMIT 2;") + // ->getScalarResult(); + + // dump($personIds); + + $openingDate = new \DateTime('2020-04-01'); + + // $person1 = $manager->getRepository(Person::class)->find($personIds[0]); + + $a = new AccompanyingPeriod($openingDate); + $a->setClosingDate(new \DateTime('2021-05-01')); + + // $a->addPerson($person1); + + $manager->persist($a); + + $this->addReference(self::ACCOMPANYING_PERIOD, $a); + echo "Adding 1 AccompanyingPeriod\n"; + + + $manager->flush(); + } +} From 4cf77a9b0e7b38d9aa22a8c5327e614de47c8b3e Mon Sep 17 00:00:00 2001 From: Mathieu Jaumotte Date: Tue, 27 Apr 2021 17:27:06 +0200 Subject: [PATCH 03/62] adapt multi components to new store and new api endpoints * base of i18n (yarn add new deps) --- .../public/js/AccompanyingCourse/App.vue | 34 +++------- .../public/js/AccompanyingCourse/App_test.vue | 19 ------ .../api/accompanyingCourse.js | 12 ++-- .../AccompanyingCourse/api/participations.js | 5 -- .../components/AccompanyingCourse.vue | 22 ++++--- .../components/PersonItem.vue | 35 ++++++++--- .../components/PersonsAssociated.vue | 63 +++++++++---------- .../components/Requestor.vue | 8 ++- .../public/js/AccompanyingCourse/index.js | 19 ++++-- .../js/AccompanyingCourse/store/index.js | 18 ++++-- .../Resources/public/js/_components/i18n.js | 57 +++++++++++++++++ 11 files changed, 172 insertions(+), 120 deletions(-) delete mode 100644 src/Bundle/ChillPersonBundle/Resources/public/js/AccompanyingCourse/App_test.vue delete mode 100644 src/Bundle/ChillPersonBundle/Resources/public/js/AccompanyingCourse/api/participations.js create mode 100644 src/Bundle/ChillPersonBundle/Resources/public/js/_components/i18n.js diff --git a/src/Bundle/ChillPersonBundle/Resources/public/js/AccompanyingCourse/App.vue b/src/Bundle/ChillPersonBundle/Resources/public/js/AccompanyingCourse/App.vue index 971eca1c7..3357bffa9 100644 --- a/src/Bundle/ChillPersonBundle/Resources/public/js/AccompanyingCourse/App.vue +++ b/src/Bundle/ChillPersonBundle/Resources/public/js/AccompanyingCourse/App.vue @@ -1,10 +1,12 @@ diff --git a/src/Bundle/ChillPersonBundle/Resources/public/js/AccompanyingCourse/App_test.vue b/src/Bundle/ChillPersonBundle/Resources/public/js/AccompanyingCourse/App_test.vue deleted file mode 100644 index 5e8bd0d09..000000000 --- a/src/Bundle/ChillPersonBundle/Resources/public/js/AccompanyingCourse/App_test.vue +++ /dev/null @@ -1,19 +0,0 @@ - - - diff --git a/src/Bundle/ChillPersonBundle/Resources/public/js/AccompanyingCourse/api/accompanyingCourse.js b/src/Bundle/ChillPersonBundle/Resources/public/js/AccompanyingCourse/api/accompanyingCourse.js index 1da9261c4..0448ba459 100644 --- a/src/Bundle/ChillPersonBundle/Resources/public/js/AccompanyingCourse/api/accompanyingCourse.js +++ b/src/Bundle/ChillPersonBundle/Resources/public/js/AccompanyingCourse/api/accompanyingCourse.js @@ -7,19 +7,21 @@ const // 1. chill_person_accompanying_course_api_show let getAccompanyingCourse = (accompanying_period_id) => { const url = `/${locale}/person/api/1.0/accompanying-course/${accompanying_period_id}/show.${format}`; - return fetch(url).then(response => response.json()); + return fetch(url) + .then(response => response.json()); }; // 2. chill_person_accompanying_course_api_add_participation (POST) let getParticipations = (accompanying_period_id) => { const url = `/${locale}/person/api/1.0/accompanying-course/${accompanying_period_id}/participation.${format}` - return fetch(url).then(response => response.json()); + return fetch(url) + .then(response => response.json()); }; export { getAccompanyingCourse, getParticipations }; -/// -// cfr. promise.all() pour plusieurs promesses -// catch throw sur le dernier then pour capturer l'erreur +/// TODO +// * cfr. promise.all() pour plusieurs promesses +// * catch throw sur le dernier then pour capturer l'erreur diff --git a/src/Bundle/ChillPersonBundle/Resources/public/js/AccompanyingCourse/api/participations.js b/src/Bundle/ChillPersonBundle/Resources/public/js/AccompanyingCourse/api/participations.js deleted file mode 100644 index f0341ccd9..000000000 --- a/src/Bundle/ChillPersonBundle/Resources/public/js/AccompanyingCourse/api/participations.js +++ /dev/null @@ -1,5 +0,0 @@ - -const _participations = [] - -export default { -} diff --git a/src/Bundle/ChillPersonBundle/Resources/public/js/AccompanyingCourse/components/AccompanyingCourse.vue b/src/Bundle/ChillPersonBundle/Resources/public/js/AccompanyingCourse/components/AccompanyingCourse.vue index d08798c00..cecd12917 100644 --- a/src/Bundle/ChillPersonBundle/Resources/public/js/AccompanyingCourse/components/AccompanyingCourse.vue +++ b/src/Bundle/ChillPersonBundle/Resources/public/js/AccompanyingCourse/components/AccompanyingCourse.vue @@ -1,16 +1,16 @@ diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/ModalBootstrap.vue b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/ModalBootstrap.vue deleted file mode 100644 index bb2e04491..000000000 --- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/ModalBootstrap.vue +++ /dev/null @@ -1,36 +0,0 @@ - - - From d18922ed985bce9bda9a8816be3dcb59502138eb Mon Sep 17 00:00:00 2001 From: Mathieu Jaumotte Date: Thu, 29 Apr 2021 12:54:27 +0200 Subject: [PATCH 11/62] permit multiple modals in same component --- .../components/Requestor.vue | 40 +++++++++++++++---- .../public/vuejs/_components/Modal.vue | 2 +- 2 files changed, 34 insertions(+), 8 deletions(-) diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/Requestor.vue b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/Requestor.vue index 89eb4525f..a7d017c04 100644 --- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/Requestor.vue +++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/Requestor.vue @@ -5,11 +5,20 @@ {{ accompanying_course.remark }}

- +
    +
  • + +
  • +
  • + +
  • +
- + @@ -22,7 +31,18 @@

Quisque non erat tincidunt, lacinia justo ut, pulvinar nisl. Nunc id enim ut sem pretium interdum consectetur eu quam. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Etiam posuere erat eget augue finibus luctus. Maecenas auctor, tortor non luctus ultrices, neque neque porttitor ex, nec lacinia lorem ligula et elit. Sed tempor nulla vitae lorem sollicitudin dictum. Vestibulum nec arcu eget elit pulvinar pretium. Phasellus facilisis metus sed diam luctus, feugiat scelerisque velit dignissim.

+
+ + + + + @@ -40,8 +60,14 @@ export default { }, data() { return { - showModal: false, - modalDialogClass: "modal-dialog modal-dialog-scrollable modal-xl" // modal-lg modal-md modal-sm + modal1: { + showModal: false, + modalDialogClass: "modal-dialog modal-dialog-scrollable modal-xl" // modal-lg modal-md modal-sm + }, + modal2: { + showModal: false, + modalDialogClass: "modal-dialog modal-dialog-centered modal-sm" // modal-lg modal-md modal-sm + } } }, computed: { diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/Modal.vue b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/Modal.vue index 04afcd398..2945f9f78 100644 --- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/Modal.vue +++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/Modal.vue @@ -35,7 +35,7 @@ */ export default { name: 'Modal', - props: ['showModal', 'modalDialogClass'], + props: ['modalDialogClass'], emits: ['close'] } From 25bd170f6b0aaef0674a3a6fb8c4349cd35d591a Mon Sep 17 00:00:00 2001 From: Mathieu Jaumotte Date: Thu, 29 Apr 2021 15:42:31 +0200 Subject: [PATCH 12/62] improve modal system, test when a modal call next modal --- .../ChillMainBundle/Resources/public/scss/chillmain.scss | 3 +++ .../vuejs/AccompanyingCourse/components/Requestor.vue | 9 ++++++--- .../Resources/public/vuejs/AccompanyingCourse/js/i18n.js | 5 ++++- .../Resources/public/vuejs/_components/Modal.vue | 7 ++++--- 4 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/Bundle/ChillMainBundle/Resources/public/scss/chillmain.scss b/src/Bundle/ChillMainBundle/Resources/public/scss/chillmain.scss index 25638ec78..033e55dbb 100644 --- a/src/Bundle/ChillMainBundle/Resources/public/scss/chillmain.scss +++ b/src/Bundle/ChillMainBundle/Resources/public/scss/chillmain.scss @@ -70,6 +70,9 @@ div.vue-component { display: table; transition: opacity 0.3s ease; } +.modal-header .close { // bootstrap classes, override sc-button 0 radius + border-top-right-radius: 0.3rem; +} /* * The following styles are auto-applied to elements with diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/Requestor.vue b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/Requestor.vue index a7d017c04..7e082d5b1 100644 --- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/Requestor.vue +++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/Requestor.vue @@ -31,7 +31,8 @@

Quisque non erat tincidunt, lacinia justo ut, pulvinar nisl. Nunc id enim ut sem pretium interdum consectetur eu quam. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Etiam posuere erat eget augue finibus luctus. Maecenas auctor, tortor non luctus ultrices, neque neque porttitor ex, nec lacinia lorem ligula et elit. Sed tempor nulla vitae lorem sollicitudin dictum. Vestibulum nec arcu eget elit pulvinar pretium. Phasellus facilisis metus sed diam luctus, feugiat scelerisque velit dignissim.

@@ -43,6 +44,8 @@

modal 2

@@ -62,11 +65,11 @@ export default { return { modal1: { showModal: false, - modalDialogClass: "modal-dialog modal-dialog-scrollable modal-xl" // modal-lg modal-md modal-sm + modalDialogClass: "modal-dialog-scrollable modal-xl" // modal-lg modal-md modal-sm }, modal2: { showModal: false, - modalDialogClass: "modal-dialog modal-dialog-centered modal-sm" // modal-lg modal-md modal-sm + modalDialogClass: "modal-dialog-centered modal-sm" // modal-lg modal-md modal-sm } } }, diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/js/i18n.js b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/js/i18n.js index 440bd9ff8..9cfa8f10d 100644 --- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/js/i18n.js +++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/js/i18n.js @@ -34,7 +34,10 @@ const messages = { showModal: "Ouvrir une modale", ok: "OK", cancel: "Annuler", - close: "Fermer" + close: "Fermer", + next: "Suivant", + previous: "Précédent", + back: "Retour" } } }; diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/Modal.vue b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/Modal.vue index 2945f9f78..494735e5c 100644 --- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/Modal.vue +++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/Modal.vue @@ -2,11 +2,12 @@