AddAddress option buttonType: component manage button in edit or create context

This commit is contained in:
Mathieu Jaumotte 2021-08-17 15:41:03 +02:00
parent 43f9e50100
commit cdc6cf211a
9 changed files with 35 additions and 49 deletions

View File

@ -50,7 +50,6 @@ export default {
create: window.buttonText || null, create: window.buttonText || null,
edit: window.buttonText || null edit: window.buttonText || null
}, },
type: window.buttonType || null,
size: window.buttonSize || null, size: window.buttonSize || null,
displayText: window.buttonDisplayText //boolean, default: true displayText: window.buttonDisplayText //boolean, default: true
}, },

View File

@ -145,7 +145,7 @@ export default {
default: { default: {
button: { button: {
text: { create: 'add_an_address_title', edit: 'edit_address' }, text: { create: 'add_an_address_title', edit: 'edit_address' },
type: 'btn-create', type: { create: 'btn-create', edit: 'btn-update'},
displayText: true displayText: true
}, },
title: { create: 'add_an_address_title', edit: 'edit_address' }, title: { create: 'add_an_address_title', edit: 'edit_address' },
@ -223,13 +223,10 @@ export default {
return (this.context.edit) ? this.default.button.text.edit : this.default.button.text.create; return (this.context.edit) ? this.default.button.text.edit : this.default.button.text.create;
}, },
getClassButton() { getClassButton() {
let type = this.default.button.type, let type = (this.context.edit) ? this.default.button.type.edit : this.default.button.type.create;
size = ''; let size = (typeof this.options.button !== 'undefined' && this.options.button.size !== null) ?
if (typeof this.options.button !== 'undefined') { `${this.options.button.size} ` : '';
type = this.options.button.type !== null ? this.options.button.type : type; return `${size}${type}`;
size = this.options.button.size !== null ? this.options.button.size : size;
}
return size ? `${size} ${type}` : type;
}, },
displayTextButton() { displayTextButton() {
return (typeof this.options.button !== 'undefined' && typeof this.options.button.displayText !== 'undefined') ? return (typeof this.options.button !== 'undefined' && typeof this.options.button.displayText !== 'undefined') ?

View File

@ -3,8 +3,6 @@ import App from './App.vue';
import { _createI18n } from 'ChillMainAssets/vuejs/_js/i18n'; import { _createI18n } from 'ChillMainAssets/vuejs/_js/i18n';
import { addressMessages } from './i18n'; import { addressMessages } from './i18n';
//import { createI18n } from 'vue-i18n';
//const i18n = createI18n();
const i18n = _createI18n( addressMessages ); const i18n = _createI18n( addressMessages );
const app = createApp({ const app = createApp({

View File

@ -4,12 +4,12 @@
* *
* @id integer - id of accompanyingCourse * @id integer - id of accompanyingCourse
*/ */
const getAccompanyingCourse = (id) => { const getAccompanyingCourse = (id) => {
const url = `/api/1.0/person/accompanying-course/${id}.json`; const url = `/api/1.0/person/accompanying-course/${id}.json`;
return fetch(url) return fetch(url)
.then(response => { .then(response => {
if (response.ok) { return response.json(); } if (response.ok) { return response.json(); }
throw Error('Error with request resource response'); throw Error('Error with request resource response');
}); });
}; };
@ -20,8 +20,8 @@ const getAccompanyingCourse = (id) => {
* @id integer - id of accompanyingCourse * @id integer - id of accompanyingCourse
* @body Object - dictionary with changes to post * @body Object - dictionary with changes to post
*/ */
const patchAccompanyingCourse = (id, body) => { const patchAccompanyingCourse = (id, body) => {
console.log('body', body); //console.log('body', body);
const url = `/api/1.0/person/accompanying-course/${id}.json`; const url = `/api/1.0/person/accompanying-course/${id}.json`;
return fetch(url, { return fetch(url, {
method: 'PATCH', method: 'PATCH',
@ -32,7 +32,7 @@ const patchAccompanyingCourse = (id, body) => {
}) })
.then(response => { .then(response => {
if (response.ok) { return response.json(); } if (response.ok) { return response.json(); }
throw Error('Error with request resource response'); throw Error('Error with request resource response');
}); });
}; };
@ -47,24 +47,24 @@ const confirmAccompanyingCourse = (id) => {
}) })
.then(response => { .then(response => {
if (response.ok) { return response.json(); } if (response.ok) { return response.json(); }
throw Error('Error with request resource response'); throw Error('Error with request resource response');
}); });
}; };
/* /*
* Endpoint * Endpoint
*/ */
const getSocialIssues = () => { const getSocialIssues = () => {
const url = `/api/1.0/person/social-work/social-issue.json`; const url = `/api/1.0/person/social-work/social-issue.json`;
return fetch(url) return fetch(url)
.then(response => { .then(response => {
if (response.ok) { return response.json(); } if (response.ok) { return response.json(); }
throw Error('Error with request resource response'); throw Error('Error with request resource response');
}); });
}; };
/* /*
* Endpoint v.2 chill_api_single_accompanying_course_participation, * Endpoint v.2 chill_api_single_accompanying_course_participation,
* method POST/DELETE, add/close a participation to the accompanyingCourse * method POST/DELETE, add/close a participation to the accompanyingCourse
* *
* @id integer - id of accompanyingCourse * @id integer - id of accompanyingCourse
@ -83,12 +83,12 @@ const postParticipation = (id, payload, method) => {
}) })
.then(response => { .then(response => {
if (response.ok) { return response.json(); } if (response.ok) { return response.json(); }
throw Error('Error with request resource response'); throw Error('Error with request resource response');
}); });
}; };
/* /*
* Endpoint v.2 chill_api_single_accompanying_course_requestor, * Endpoint v.2 chill_api_single_accompanying_course_requestor,
* method POST/DELETE, add/close a requestor to the accompanyingCourse * method POST/DELETE, add/close a requestor to the accompanyingCourse
* *
* @id integer - id of accompanyingCourse * @id integer - id of accompanyingCourse
@ -109,12 +109,12 @@ const postRequestor = (id, payload, method) => {
}) })
.then(response => { .then(response => {
if (response.ok) { return response.json(); } if (response.ok) { return response.json(); }
throw Error('Error with request resource response'); throw Error('Error with request resource response');
}); });
}; };
/* /*
* Endpoint v.2 chill_api_single_accompanying_course_resource, * Endpoint v.2 chill_api_single_accompanying_course_resource,
* method POST/DELETE, add/remove a resource to the accompanyingCourse * method POST/DELETE, add/remove a resource to the accompanyingCourse
* *
* @id integer - id of accompanyingCourse * @id integer - id of accompanyingCourse
@ -126,11 +126,11 @@ const postResource = (id, payload, method) => {
const body = { type: "accompanying_period_resource" }; const body = { type: "accompanying_period_resource" };
switch (method) { switch (method) {
case 'DELETE': case 'DELETE':
body['id'] = payload.id; body['id'] = payload.id;
break; break;
default: default:
body['resource'] = { type: payload.type, id: payload.id }; body['resource'] = { type: payload.type, id: payload.id };
} }
//console.log('body', body); //console.log('body', body);
const url = `/api/1.0/person/accompanying-course/${id}/resource.json`; const url = `/api/1.0/person/accompanying-course/${id}/resource.json`;
return fetch(url, { return fetch(url, {
@ -142,7 +142,7 @@ const postResource = (id, payload, method) => {
}) })
.then(response => { .then(response => {
if (response.ok) { return response.json(); } if (response.ok) { return response.json(); }
throw Error('Error with request resource response'); throw Error('Error with request resource response');
}); });
}; };
@ -150,7 +150,7 @@ const postResource = (id, payload, method) => {
* Endpoint to Add/remove SocialIssue * Endpoint to Add/remove SocialIssue
*/ */
const postSocialIssue = (id, body, method) => { const postSocialIssue = (id, body, method) => {
//console.log('api body and method', body, method); //console.log('api body and method', body, method);
const url = `/api/1.0/person/accompanying-course/${id}/socialissue.json`; const url = `/api/1.0/person/accompanying-course/${id}/socialissue.json`;
return fetch(url, { return fetch(url, {
method: method, method: method,
@ -161,7 +161,7 @@ const postSocialIssue = (id, body, method) => {
}) })
.then(response => { .then(response => {
if (response.ok) { return response.json(); } if (response.ok) { return response.json(); }
throw Error('Error with request resource response'); throw Error('Error with request resource response');
}); });
}; };
@ -170,7 +170,7 @@ const getUsers = () => {
return fetch(url) return fetch(url)
.then(response => { .then(response => {
if (response.ok) { return response.json(); } if (response.ok) { return response.json(); }
throw Error('Error with request resource response'); throw Error('Error with request resource response');
}); });
}; };
@ -179,7 +179,7 @@ const whoami = () => {
return fetch(url) return fetch(url)
.then(response => { .then(response => {
if (response.ok) { return response.json(); } if (response.ok) { return response.json(); }
throw Error('Error with request resource response'); throw Error('Error with request resource response');
}); });
}; };
@ -188,11 +188,11 @@ const getListOrigins = () => {
return fetch(url) return fetch(url)
.then(response => { .then(response => {
if (response.ok) { return response.json(); } if (response.ok) { return response.json(); }
throw Error('Error with request resource response'); throw Error('Error with request resource response');
}); });
} }
export { export {
getAccompanyingCourse, getAccompanyingCourse,
patchAccompanyingCourse, patchAccompanyingCourse,
confirmAccompanyingCourse, confirmAccompanyingCourse,

View File

@ -32,7 +32,7 @@
ref="addAddress"> ref="addAddress">
</add-address> </add-address>
</li> </li>
<li v-if="isContextEdit && isPersonLocation"> <li v-if="isPersonLocation">
<button <button
class="btn btn-remove" class="btn btn-remove"
@click="removeAddress" @click="removeAddress"
@ -112,10 +112,6 @@ export default {
} }
this.$store.commit('setAddressContext', context); this.$store.commit('setAddressContext', context);
}, },
initAddressOptions() {
// here button.type is a contextual option
this.$refs.addAddress.$data.default.button.type = this.isContextEdit ? 'btn-update' : '';
},
removeAddress() { removeAddress() {
console.log('remove address'); console.log('remove address');
let payload = { let payload = {
@ -133,11 +129,11 @@ export default {
let payload = this.$refs.addAddress.submitNewAddress(); let payload = this.$refs.addAddress.submitNewAddress();
payload['locationStatusTo'] = 'address'; // <== temporary, not none, not person payload['locationStatusTo'] = 'address'; // <== temporary, not none, not person
this.$store.dispatch('updateLocation', payload); this.$store.dispatch('updateLocation', payload);
this.$store.commit('setEditContextTrue');
} }
}, },
mounted() { mounted() {
this.initAddressContext(); this.initAddressContext();
this.initAddressOptions();
console.log('ac.locationStatus', this.accompanyingCourse.locationStatus); console.log('ac.locationStatus', this.accompanyingCourse.locationStatus);
console.log('ac.location (temporary location)', this.accompanyingCourse.location); console.log('ac.location (temporary location)', this.accompanyingCourse.location);

View File

@ -104,6 +104,10 @@ let initPromise = getAccompanyingCourse(id)
state.accompanyingCourse.location = r.location; state.accompanyingCourse.location = r.location;
state.accompanyingCourse.locationStatus = r.locationStatus; state.accompanyingCourse.locationStatus = r.locationStatus;
state.accompanyingCourse.personLocation = r.personLocation; state.accompanyingCourse.personLocation = r.personLocation;
},
setEditContextTrue(state) {
console.log('### mutation: set edit context = true');
state.addressContext.edit = true;
} }
}, },
actions: { actions: {
@ -221,9 +225,8 @@ let initPromise = getAccompanyingCourse(id)
resolve(); resolve();
})).catch((error) => { commit('catchError', error) }); })).catch((error) => { commit('catchError', error) });
}, },
/////
updateLocation({ commit }, payload) { updateLocation({ commit }, payload) {
console.log('## action: updateLocation', payload); console.log('## action: updateLocation', payload.locationStatusTo);
let body = { 'type': payload.entity, 'id': payload.entityId }; let body = { 'type': payload.entity, 'id': payload.entityId };
let location = {}; let location = {};
if (payload.locationStatusTo === 'person') { // patch for person address (don't remove addressLocation) if (payload.locationStatusTo === 'person') { // patch for person address (don't remove addressLocation)
@ -246,7 +249,6 @@ let initPromise = getAccompanyingCourse(id)
resolve(); resolve();
})).catch((error) => { commit('catchError', error) }); })).catch((error) => { commit('catchError', error) });
}, },
/////
confirmAccompanyingCourse({ commit }) { confirmAccompanyingCourse({ commit }) {
//console.log('## action: confirmAccompanyingCourse'); //console.log('## action: confirmAccompanyingCourse');
confirmAccompanyingCourse(id) confirmAccompanyingCourse(id)

View File

@ -19,7 +19,7 @@
<div class="accompanyingcourse-resume"> <div class="accompanyingcourse-resume">
{% if 'DRAFT' == accompanyingCourse.step %} {% if 'DRAFT' == accompanyingCourse.step %}
<div class="col-8 alert alert-danger flash_message mb-5"> <div class="alert alert-danger flash_message mb-5">
<span> <span>
{{ 'This accompanying course is still a draft'|trans }} {{ 'This accompanying course is still a draft'|trans }}
<a href="{{ path('chill_person_accompanying_course_edit', { 'accompanying_period_id': accompanyingCourse.id } ) }}"> <a href="{{ path('chill_person_accompanying_course_edit', { 'accompanying_period_id': accompanyingCourse.id } ) }}">

View File

@ -8,7 +8,6 @@
* backUrl twig route: path('route', {parameters}) * backUrl twig route: path('route', {parameters})
* modalTitle twig translated chain * modalTitle twig translated chain
* buttonText twig translated chain * buttonText twig translated chain
* buttonType chill class like 'btn-update'
* buttonSize bootstrap class like 'btn-sm' * buttonSize bootstrap class like 'btn-sm'
#} #}
@ -52,10 +51,6 @@
window.buttonText = '{{ buttonText|trans|e('js') }}'; window.buttonText = '{{ buttonText|trans|e('js') }}';
{% endif %} {% endif %}
{% if buttonType is defined %}
window.buttonType = '{{ buttonType|e('js') }}';
{% endif %}
{% if buttonSize is defined %} {% if buttonSize is defined %}
window.buttonSize = '{{ buttonSize|e('js') }}'; window.buttonSize = '{{ buttonSize|e('js') }}';
{% endif %} {% endif %}

View File

@ -206,7 +206,6 @@ This view should receive those arguments:
address_id: person.lastAddress.id, address_id: person.lastAddress.id,
backUrl: path('chill_person_view', { 'person_id': person.id }), backUrl: path('chill_person_view', { 'person_id': person.id }),
modalTitle: 'Edit address', buttonText: 'Edit address', modalTitle: 'Edit address', buttonText: 'Edit address',
buttonType: 'btn-update',
buttonSize: 'btn-sm', buttonSize: 'btn-sm',
buttonDisplayText: false buttonDisplayText: false
} %} } %}