100 lines
2.6 KiB
JavaScript
100 lines
2.6 KiB
JavaScript
import ngModule from '../module';
|
|
import Section from 'salix/components/section';
|
|
class Controller extends Section {
|
|
get item() {
|
|
return this._item;
|
|
}
|
|
|
|
set item(value) {
|
|
this._item = value;
|
|
if (value)
|
|
this.getBotanicalData();
|
|
}
|
|
|
|
showGenus(event) {
|
|
if (event.defaultPrevented) return;
|
|
event.preventDefault();
|
|
|
|
this.$.genus.show();
|
|
}
|
|
|
|
showSpecies(event) {
|
|
if (event.defaultPrevented) return;
|
|
event.preventDefault();
|
|
|
|
this.$.species.show();
|
|
}
|
|
|
|
onGenusAccept() {
|
|
try {
|
|
if (!this.data.name)
|
|
throw new Error(`The name of the genus can't be empty`);
|
|
|
|
this.$http.post(`genera`, this.data).then(res => {
|
|
this.vnApp.showMessage(this.$t('The genus has been created'));
|
|
this.emit('response', {$response: res.data});
|
|
this.onGenusResponse(res.data);
|
|
});
|
|
} catch (e) {
|
|
this.vnApp.showError(this.$t(e.message));
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
onSpeciesAccept() {
|
|
try {
|
|
if (!this.data.name)
|
|
throw new Error(`The name of the species can't be empty`);
|
|
|
|
this.$http.post(`species`, this.data).then(res => {
|
|
this.vnApp.showMessage(this.$t('The species has been created'));
|
|
this.emit('response', {$response: res.data});
|
|
this.onSpeciesResponse(res.data);
|
|
});
|
|
} catch (e) {
|
|
this.vnApp.showError(this.$t(e.message));
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
getBotanicalData() {
|
|
const filter = {
|
|
where: {itemFk: this.item.id}
|
|
};
|
|
const filterParams = encodeURIComponent(JSON.stringify(filter));
|
|
this.$http.get(`ItemBotanicals?filter=${filterParams}`).then(res => {
|
|
if (res.data[0])
|
|
this.botanical = res.data[0];
|
|
|
|
else
|
|
this.botanical = {itemFk: this.item.id};
|
|
});
|
|
}
|
|
|
|
onSubmit() {
|
|
this.$.watcher.check();
|
|
this.$http.patch(`ItemBotanicals`, this.botanical).then(() => {
|
|
this.$.watcher.notifySaved();
|
|
this.$.watcher.updateOriginalData();
|
|
});
|
|
}
|
|
|
|
onGenusResponse(response) {
|
|
this.botanical.genusFk = response.id;
|
|
}
|
|
|
|
onSpeciesResponse(response) {
|
|
this.botanical.specieFk = response.id;
|
|
}
|
|
}
|
|
|
|
ngModule.vnComponent('vnItemBotanical', {
|
|
template: require('./index.html'),
|
|
bindings: {
|
|
item: '<'
|
|
},
|
|
controller: Controller
|
|
});
|