Compare commits

...

3 Commits

Author SHA1 Message Date
3e7c79d6ce test app async working 2021-04-23 12:10:37 +02:00
bc1f624e14 fix dummy controller 2021-04-23 10:49:15 +02:00
f73d3bf320 test app 2021-04-22 20:42:48 +02:00
10 changed files with 185 additions and 96 deletions

View File

@@ -1,7 +0,0 @@
import Vue from 'vue'
import App from 'ChillPersonAssets/js/AccompanyingCourse.vue'
new Vue({
el: '#app',
render: h => h(App)
})

View File

@@ -56,7 +56,7 @@ module.exports = function(encore, entries)
// Chill2 new assets
encore.addEntry('forkawesome', __dirname + '/Resources/public/modules/forkawesome/index.js');
encore.addEntry('bootstrap', __dirname + '/Resources/public/modules/bootstrap/index.js');
encore.addEntry('vuejs', __dirname + '/Resources/public/modules/vue/index.js');
//encore.addEntry('vuejs', __dirname + '/Resources/public/modules/vue/index.js');
// CKEditor5
buildCKEditor(encore);

View File

@@ -96,18 +96,21 @@ class AccompanyingCourseController extends Controller
$data = [
'id' => $accompanyingCourse->getId(),
'remark' => $accompanyingCourse->getRemark(),
'closing_motive' => $accompanyingCourse->getClosingMotive()->getName()['fr'],
'closing_motive' => $accompanyingCourse->getClosingMotive() ? $accompanyingCourse->getClosingMotive()->getName()['fr'] : null,
'opening_date' => ($accompanyingCourse->getOpeningDate()) ? $accompanyingCourse->getOpeningDate()->format('Y-m-d') : null,
'closing_date' => ($accompanyingCourse->getClosingDate()) ? $accompanyingCourse->getClosingDate()->format('Y-m-d') : null,
'persons' => $persons
];
/**
$normalizer = [new ObjectNormalizer()];
$encoder = [new JsonEncoder()];
$serializer = new Serializer($normalizer, $encoder);
$serialized = $serializer->serialize($data,'json', []);
*
*/
$serialized = \json_encode($data);
$response = new Response($serialized);
$response->headers->set('Content-Type', 'application/json');
return $response;

View File

@@ -0,0 +1,20 @@
import Vue from 'vue';
const AccompanyingCourseComponent = {
data() {
return {
id: 7,
persons_associated: []
};
},
};
let app = Vue.CreateApp({
delimiters: ['${', '}']
})
.component(AccompanyingCourseComponent)
;
app.mount('#app');

View File

@@ -1,19 +1,105 @@
<template>
<div id="app">
<persons_associated></persons_associated>
<div id="kkk">
<h3>Usagers concernés</h3>
<dl>
<dt>id</dt>
<dd>{{ course.id }}</dd>
<dt>opening_date</dt>
<dd>{{ course.opening_date }}</dd>
<dt>closing_date</dt>
<dd>{{ course.closing_date }}</dd>
<dt>remarkzzzzz</dt>
<dd>{{ course.remark }}</dd>
<dt>closing_motive</dt>
<dd>{{ course.closing_motive }}</dd>
</dl>
<label>{{counter}} usagers concernés</label>
<table class="rounded">
<thead>
<tr>
<th class="chill-orange">firstname</th>
<th class="chill-orange">lastname</th>
<th class="chill-orange">startdate</th>
<th class="chill-orange">enddate</th>
<th class="chill-orange">actions</th>
</tr>
</thead>
<tbody>
<tr v-for="person in course.persons">
<td>{{ person.firstname }}</td>
<td>{{ person.lastname }}</td>
<td>{{ person.startdate }}</td>
<td>{{ person.enddate }}</td>
<td>
<ul class="record_actions">
<li><a class="sc-button bt-show"></a></li>
<li><a class="sc-button bt-update"></a></li>
<li><a class="sc-button bt-delete"></a></li>
</ul>
</td>
</tr>
</tbody>
</table>
<ul class="record_actions">
<li>
<button class="sc-button bt-create" @click="addPerson">Add Person</button>
</li>
</ul>
</div>
</template>
<script>
import persons_associated from './components/PersonsAssociated.vue'
import { createApp } from 'vue';
export default {
name: 'app',
components: {
persons_associated,
const App = {
name: 'AppAccompanyingCourse',
//delimiters: ['${', '}'], works only for template "in browser", not for template in vue files
data() {
return { course:
{
id: 50,
opening_date: null,
closing_date: null,
remark: 'bim',
closing_motive: 'bam',
counter: 0,
persons: []
}
};
},
computed: {
courseId() {
return window.courseId;
}
},
async mounted() {
console.log('mounted');
console.log(this.data);
console.log(this.courseId);
await this.getCourse();
console.log(this.data);
console.log('mounted stop');
},
methods: {
async getCourse() {
console.log('get course start');
console.log(this);
courseId = this.courseId;
let data_;
return fetch(`/fr/api/parcours/${courseId}/show`)
.then(response => response.json())
.then(data => {
console.log(data);
console.log(this);
this.$data.course = data;
console.log(this.data);
console.log('get course finish');
});
}
}
};
export default App;
</script>
<style>
</style>
<style></style>

View File

@@ -0,0 +1,35 @@
import Vue from 'vue'
import VueResource from 'vue-resource'
Vue.use(VueResource);
export default {
template: '#vue-usagers',
delimiters: ['${', '}'],
data () {
return {
persons_associated: []
};
},
http: {
root: 'http://localhost:8001/fr/api'
},
methods: {
addPerson(){
this.persons_associated.persons.push({"firstname": "Lisa", "lastname": "Simpson", "startdate": "1975-09-15", "enddate": "2021-04-20" })
}
},
computed: {
counter() {
return this.persons_associated.persons.length;
}
},
created() {
this.$resource('parcours/270/show').get().then((response) => {
this.persons_associated = response.data
}, (response) => {
console.log('erreur', response);
});
}
};

View File

@@ -1,60 +1,12 @@
<template>
<div class="vue-component">
<h3>Usagers concernés</h3>
<dl>
<dt>id</dt>
<dd>{{ persons_associated.id }}</dd>
<dt>opening_date</dt>
<dd>{{ persons_associated.opening_date }}</dd>
<dt>closing_date</dt>
<dd>{{ persons_associated.closing_date }}</dd>
<dt>remark</dt>
<dd>{{ persons_associated.remark }}</dd>
<dt>closing_motive</dt>
<dd>{{ persons_associated.closing_motive }}</dd>
</dl>
<label>{{counter}} usagers concernés</label>
<table class="rounded">
<thead>
<tr>
<th class="chill-orange">firstname</th>
<th class="chill-orange">lastname</th>
<th class="chill-orange">startdate</th>
<th class="chill-orange">enddate</th>
<th class="chill-orange">actions</th>
</tr>
</thead>
<tbody>
<tr v-for="person in persons_associated.persons">
<td>{{ person.firstname }}</td>
<td>{{ person.lastname }}</td>
<td>{{ person.startdate }}</td>
<td>{{ person.enddate }}</td>
<td>
<ul class="record_actions">
<li><a class="sc-button bt-show"></a></li>
<li><a class="sc-button bt-update"></a></li>
<li><a class="sc-button bt-delete"></a></li>
</ul>
</td>
</tr>
</tbody>
</table>
<ul class="record_actions">
<li>
<button class="sc-button bt-create" @click="addPerson">Add Person</button>
</li>
</ul>
</div>
</template>
<script>
import Vue from 'vue'
import VueResource from 'vue-resource'
Vue.use(VueResource)
export default {
template: '#vue-usagers',
delimiters: ['${', '}'],
data () {
return {
persons_associated: []
@@ -74,15 +26,12 @@
}
},
created() {
this.$resource('parcours/861/show').get().then((response) => {
this.$resource('parcours/270/show').get().then((response) => {
this.persons_associated = response.data
}, (response) => {
console.log('erreur', response);
})
}
}
</script>
<style>
</style>

View File

@@ -0,0 +1,10 @@
import AccompanyingCourseComponent from './AccompanyingCourse.vue';
import { createApp } from 'vue';
const app = createApp({
name: 'AccCourseGlobal',
template: '<div class="abcde"><accompanying-course></accompanying-course></div>',
})
.component('accompanying-course', AccompanyingCourseComponent)
.mount('#app');

View File

@@ -8,24 +8,14 @@
<h1>{{ block('title') }}</h1>
{#
<pre>
{{ accompanyingCourse.id }}
{{ accompanyingCourse.openingDate|format_date('short') }}
{{ accompanyingCourse.closingDate|format_date('short') }}
{{ accompanyingCourse.closingMotive|chill_entity_render_box }}
{{ accompanyingCourse.remark|raw }}
{{ accompanyingCourse.user }}
usagers:
{% for p in accompanyingCourse.participations %}
{{ p.person.id }} | <a href="{{ path('chill_person_accompanying_period_list', { person_id: p.person.id }) }}">{{ p.person.fullnamecanonical }}</a> | {{ p.startdate|format_date('short') }} | {{ p.enddate|format_date('short') }}
{% endfor %}
</pre>
{{ dump() }}
{% verbatim %}{% endverbatim %}
#}
<script type="text/javascript">
window.courseId = {{ accompanyingCourse.id|e('js') }};
console.log(window.courseId);
</script>
<div id="app" data-name="{{ accompanyingCourse.id }}"></div>
{{ encore_entry_script_tags('vuejs') }}
<div id="app"></div>
{{ encore_entry_script_tags('accompanying_course') }}
{% endblock %}

View File

@@ -7,4 +7,7 @@ module.exports = function(encore, entries)
encore.addAliases({
ChillPersonAssets: __dirname + '/Resources/public'
});
encore.addEntry('accompanying_course', __dirname + '/Resources/public/js/index.js');
};