Added the ability to have mutliple buy options for product
This commit is contained in:
		@@ -1,75 +1,75 @@
 | 
			
		||||
import {Component, Inject} from '@angular/core';
 | 
			
		||||
import {MatDialogRef, MAT_DIALOG_DATA} from '@angular/material';
 | 
			
		||||
import {AngularFirestore} from 'angularfire2/firestore';
 | 
			
		||||
import {LocalStorage} from '../../../../node_modules/webstorage-decorators';
 | 
			
		||||
import {AppStore} from '../../app.store';
 | 
			
		||||
import {ConvertToGPipe} from '../units.pipe';
 | 
			
		||||
import { Component, Inject } from '@angular/core';
 | 
			
		||||
import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material';
 | 
			
		||||
import { AngularFirestore } from 'angularfire2/firestore';
 | 
			
		||||
import { LocalStorage } from 'webstorage-decorators';
 | 
			
		||||
import { AppStore } from '../../app.store';
 | 
			
		||||
import { ConvertToGPipe } from '../units.pipe';
 | 
			
		||||
 | 
			
		||||
@Component({
 | 
			
		||||
  selector: 'new-formula',
 | 
			
		||||
  templateUrl: './newFormula.component.html'
 | 
			
		||||
	selector: 'new-formula',
 | 
			
		||||
	templateUrl: './newFormula.component.html'
 | 
			
		||||
})
 | 
			
		||||
export class NewFormulaComponent {
 | 
			
		||||
  name: string;
 | 
			
		||||
  amount: number;
 | 
			
		||||
  approved: boolean = false;
 | 
			
		||||
  component: string;
 | 
			
		||||
  components: {component: string; name: string; quantity: number}[] = [];
 | 
			
		||||
  componentsList = [];
 | 
			
		||||
  @LocalStorage({defaultValue: 'kg', fieldName: 'newFormulaUnit'})
 | 
			
		||||
  unit;
 | 
			
		||||
	name: string;
 | 
			
		||||
	amount: number;
 | 
			
		||||
	approved: boolean = false;
 | 
			
		||||
	component: string;
 | 
			
		||||
	components: { component: string; name: string; quantity: number }[] = [];
 | 
			
		||||
	componentsList = [];
 | 
			
		||||
	@LocalStorage({ defaultValue: 'kg', fieldName: 'newFormulaUnit' })
 | 
			
		||||
	unit;
 | 
			
		||||
 | 
			
		||||
  constructor(
 | 
			
		||||
    private dialogRef: MatDialogRef<NewFormulaComponent>,
 | 
			
		||||
    private db: AngularFirestore,
 | 
			
		||||
    private store: AppStore,
 | 
			
		||||
    @Inject(MAT_DIALOG_DATA) public data
 | 
			
		||||
  ) {
 | 
			
		||||
    this.store.components.subscribe(rows => (this.componentsList = rows));
 | 
			
		||||
	constructor(
 | 
			
		||||
		private dialogRef: MatDialogRef<NewFormulaComponent>,
 | 
			
		||||
		private db: AngularFirestore,
 | 
			
		||||
		private store: AppStore,
 | 
			
		||||
		@Inject(MAT_DIALOG_DATA) public data
 | 
			
		||||
	) {
 | 
			
		||||
		this.store.components.subscribe(rows => (this.componentsList = rows));
 | 
			
		||||
 | 
			
		||||
    if (this.data) {
 | 
			
		||||
      this.name = this.data.name;
 | 
			
		||||
      this.approved = this.data.approved;
 | 
			
		||||
      this.components = this.data.components.map(row => {
 | 
			
		||||
        return {component: row.component.id, name: row.component.name, quantity: row.quantity};
 | 
			
		||||
      });
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
		if (this.data) {
 | 
			
		||||
			this.name = this.data.name;
 | 
			
		||||
			this.approved = this.data.approved;
 | 
			
		||||
			this.components = this.data.components.map(row => {
 | 
			
		||||
				return { component: row.component.id, name: row.component.name, quantity: row.quantity };
 | 
			
		||||
			});
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
  add() {
 | 
			
		||||
    let id = this.componentsList.filter(row => row.name == this.component)[0].id;
 | 
			
		||||
    console.log(id);
 | 
			
		||||
    let amount = new ConvertToGPipe().transform(Number(this.amount), this.unit);
 | 
			
		||||
    this.components.push({component: id, name: this.component, quantity: amount});
 | 
			
		||||
    this.component = null;
 | 
			
		||||
    this.amount = null;
 | 
			
		||||
  }
 | 
			
		||||
	add() {
 | 
			
		||||
		let id = this.componentsList.filter(row => row.name == this.component)[0].id;
 | 
			
		||||
		console.log(id);
 | 
			
		||||
		let amount = new ConvertToGPipe().transform(Number(this.amount), this.unit);
 | 
			
		||||
		this.components.push({ component: id, name: this.component, quantity: amount });
 | 
			
		||||
		this.component = null;
 | 
			
		||||
	    this.amount = null;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
  remove(i) {
 | 
			
		||||
    this.components.splice(i, 1);
 | 
			
		||||
  }
 | 
			
		||||
	remove(i) {
 | 
			
		||||
		this.components.splice(i, 1);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
  submit() {
 | 
			
		||||
    let newFormula = {
 | 
			
		||||
      name: this.name,
 | 
			
		||||
      approved: this.approved,
 | 
			
		||||
      components: this.components.map((row: any) => {
 | 
			
		||||
        return {component: this.db.collection('components').doc(row.component).ref, quantity: row.quantity};
 | 
			
		||||
      })
 | 
			
		||||
    };
 | 
			
		||||
	submit() {
 | 
			
		||||
		let newFormula = {
 | 
			
		||||
			name: this.name,
 | 
			
		||||
			approved: this.approved,
 | 
			
		||||
			components: this.components.map((row: any) => {
 | 
			
		||||
				return { component: this.db.collection('components').doc(row.component).ref, quantity: row.quantity };
 | 
			
		||||
			})
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
    if (!this.data) {
 | 
			
		||||
      newFormula['created'] = new Date();
 | 
			
		||||
      this.db
 | 
			
		||||
        .collection('formulas')
 | 
			
		||||
        .add(newFormula)
 | 
			
		||||
        .then(data => this.dialogRef.close());
 | 
			
		||||
    } else {
 | 
			
		||||
      this.data.ref.update(newFormula).then(data => this.dialogRef.close());
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
		if (!this.data) {
 | 
			
		||||
			newFormula['created'] = new Date();
 | 
			
		||||
			this.db
 | 
			
		||||
				.collection('formulas')
 | 
			
		||||
				.add(newFormula)
 | 
			
		||||
				.then(data => this.dialogRef.close());
 | 
			
		||||
		} else {
 | 
			
		||||
			this.data.ref.update(newFormula).then(data => this.dialogRef.close());
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
  total() {
 | 
			
		||||
    return this.components.reduce((acc, row) => acc + row.quantity, 0);
 | 
			
		||||
  }
 | 
			
		||||
	total() {
 | 
			
		||||
		return this.components.reduce((acc, row) => acc + row.quantity, 0);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user