parent
							
								
									af9ac976dc
								
							
						
					
					
						commit
						4dbfcfa98b
					
				
					 6 changed files with 31 additions and 53 deletions
				
			
		|  | @ -11,6 +11,7 @@ export default Component.extend({ | |||
|     this._super(...arguments); | ||||
|     const model = this.get('model'); | ||||
|     const validations = this.get('validations'); | ||||
|     const hasMany = this.get('hasMany'); | ||||
| 
 | ||||
|     let changesets = {}; | ||||
|     changesets['new'] = []; | ||||
|  | @ -20,72 +21,43 @@ export default Component.extend({ | |||
|                                         lookupValidator(validations['collection']), | ||||
|                                         validations['collection']); | ||||
| 
 | ||||
|     let collectionSpeciesChangesets = []; | ||||
|     const collectionSpecies = model.get('collectionSpecies'); | ||||
|     collectionSpecies.forEach((cs) => { | ||||
|       const changeset = new Changeset(cs, | ||||
|                                       lookupValidator(validations['collectionSpecies']), | ||||
|                                       validations['collectionSpecies']); | ||||
|       collectionSpeciesChangesets.push({ model: cs, changeset: changeset }); | ||||
|     hasMany.forEach((hasMany) => { | ||||
|       let relatedChangesets = []; | ||||
|       let validation = validations[hasMany]; | ||||
|       const related = model.get(hasMany); | ||||
|       related.forEach((r) => { | ||||
|         const changeset = new Changeset(r, lookupValidator(validation), | ||||
|                                         validation); | ||||
|         relatedChangesets.push({ model: r, changeset: changeset }); | ||||
|       }); | ||||
|       changesets['hasMany'][hasMany] = relatedChangesets; | ||||
|     }); | ||||
|     changesets['hasMany']['collectionSpecies'] = collectionSpeciesChangesets; | ||||
| 
 | ||||
|     let datasheetsChangesets = []; | ||||
|     const datasheets = model.get('datasheets'); | ||||
|     datasheets.forEach((d) => { | ||||
|       const changeset = new Changeset(d, | ||||
|                                       lookupValidator(validations['datasheet']), | ||||
|                                       validations['datasheet']); | ||||
|       datasheetsChangesets.push({ model: d, changeset: changeset }); | ||||
|     }); | ||||
|     changesets['hasMany']['datasheets'] = datasheetsChangesets; | ||||
| 
 | ||||
|     this.set('changesets', changesets); | ||||
|   }, | ||||
| 
 | ||||
|   actions: { | ||||
|     addCollectionSpecies() { | ||||
|     addHasMany(modelName, relatedName) { | ||||
|       const store = this.get('store'); | ||||
|       let changesets = this.get('changesets'); | ||||
|       const validations = this.get('validations'); | ||||
|       const collection = this.get('model'); | ||||
|       const cs = store.createRecord('collection-species', { collection: collection }); | ||||
|       collection.get('collectionSpecies').pushObject(cs); | ||||
|       changesets['new'].pushObject(cs); | ||||
|       const changeset = new Changeset(cs, | ||||
|                                       lookupValidator(validations['collectionSpecies']), | ||||
|                                       validations['collectionSpecies']); | ||||
|       changesets['hasMany']['collectionSpecies'].pushObject({ model: cs, changeset: changeset }); | ||||
|       const validation = validations[relatedName]; | ||||
|       const model = this.get('model'); | ||||
|       const related = store.createRecord(modelName, { collection: model }); | ||||
|       model.get(relatedName).pushObject(related); | ||||
|       changesets['new'].pushObject(related); | ||||
|       const changeset = new Changeset(related, lookupValidator(validation), validation); | ||||
|       changesets['hasMany'][relatedName].pushObject({ model: related, changeset: changeset }); | ||||
|     }, | ||||
| 
 | ||||
|     deleteCollectionSpecies(changesetRecord) { | ||||
|     deleteHasMany(changesetRecord, relatedName) { | ||||
|       let changesets = this.get('changesets'); | ||||
|       changesets['delete'].pushObject(changesetRecord.model); | ||||
|       changesets['hasMany']['collectionSpecies'].removeObject(changesetRecord); | ||||
|       changesets['hasMany'][relatedName].removeObject(changesetRecord); | ||||
|     }, | ||||
| 
 | ||||
|     updateDatasheet(changeset, event) { | ||||
|       changeset.set('datasheet', event.target.files[0]); | ||||
|     }, | ||||
| 
 | ||||
|     addDatasheet() { | ||||
|       const store = this.get('store'); | ||||
|       let changesets = this.get('changesets'); | ||||
|       const validations = this.get('validations'); | ||||
|       const collection = this.get('model'); | ||||
|       const d = store.createRecord('datasheet-attachment', { collection: collection }); | ||||
|       collection.get('datasheets').pushObject(d); | ||||
|       changesets['new'].pushObject(d); | ||||
|       const changeset = new Changeset(d, | ||||
|                                       lookupValidator(validations['datasheets']), | ||||
|                                       validations['datasheets']); | ||||
|       changesets['hasMany']['datasheets'].pushObject({ model: d, changeset: changeset }); | ||||
|     }, | ||||
| 
 | ||||
|     deleteDatasheet(changesetRecord) { | ||||
|       let changesets = this.get('changesets'); | ||||
|       changesets['delete'].pushObject(changesetRecord.model); | ||||
|       changesets['hasMany']['datasheets'].removeObject(changesetRecord); | ||||
|     }, | ||||
|   }, | ||||
| }); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 GitHub
							GitHub