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 });