activity: post new location on-the-fly

This commit is contained in:
nobohan 2021-11-23 17:50:32 +01:00
parent 1b579f7930
commit a2f6f2b5cb
3 changed files with 18 additions and 3 deletions

View File

@ -104,6 +104,7 @@ export default {
if (e.type === 'person' && e.current_household_address !== null){ if (e.type === 'person' && e.current_household_address !== null){
locations.push({ locations.push({
type: 'location', type: 'location',
onthefly: true,
name: e.text, name: e.text,
address: { id: e.current_household_address.id }, address: { id: e.current_household_address.id },
locationType: locationType locationType: locationType
@ -120,6 +121,7 @@ export default {
if (e.type === 'thirdparty' && e.address !== null){ if (e.type === 'thirdparty' && e.address !== null){
locations.push({ locations.push({
type: 'location', type: 'location',
onthefly: true,
name: e.text, name: e.text,
address: { id: e.address.id }, address: { id: e.address.id },
locationType: locationType locationType: locationType
@ -134,7 +136,8 @@ export default {
const accPeriodLocation = this.activity.accompanyingPeriod.location; const accPeriodLocation = this.activity.accompanyingPeriod.location;
return { return {
type: 'location', type: 'location',
name: '__AccompanyingCourseLocation__', //TODO not perfect... onthefly: true,
name: '__AccompanyingCourseLocation__', //TODO not perfect... shoould show the address
address: { id: accPeriodLocation.address_id }, //TODO is the id sufficient? address: { id: accPeriodLocation.address_id }, //TODO is the id sufficient?
locationType: locationType locationType: locationType
} }

View File

@ -246,7 +246,6 @@ export default {
postLocation(body) postLocation(body)
.then( .then(
location => new Promise(resolve => { location => new Promise(resolve => {
console.log('postLocation', location);
this.locations.push(location); this.locations.push(location);
this.$store.dispatch('updateLocation', location); this.$store.dispatch('updateLocation', location);
resolve(); resolve();

View File

@ -1,5 +1,6 @@
import 'es6-promise/auto'; import 'es6-promise/auto';
import { createStore } from 'vuex'; import { createStore } from 'vuex';
import { postLocation } from './api';
const debug = process.env.NODE_ENV !== 'production'; const debug = process.env.NODE_ENV !== 'production';
//console.log('window.activity', window.activity); //console.log('window.activity', window.activity);
@ -303,7 +304,19 @@ const store = createStore({
let hiddenLocation = document.getElementById( let hiddenLocation = document.getElementById(
"chill_activitybundle_activity_location" "chill_activitybundle_activity_location"
); );
hiddenLocation.value = value.id; //TODO post the location if new location on-the-fly
if (value.onthefly) {
postLocation(value)
.then(
location => hiddenLocation.value = location.id
).catch(
err => {
this.errors.push(err.message);
}
);
} else {
hiddenLocation.value = value.id;
}
commit("updateLocation", value); commit("updateLocation", value);
}, },
}, },