hino / app / controllers / approval-input-configuration / edit.js
edit.js
Raw
import Controller from '@ember/controller';
import { inject as service } from '@ember/service';

export default Controller.extend({
	approvalInputConfiguration : service(),
	approvalInputConfigurationData : service(),
	formData : service(),
	fieldData : service(),
	approvalInputConfigurationDetailData : service(),
	approvalInputConfigurationDetailActionData : service(),
	session : service(),
	errors : service(),
	didValidate: false,
	rightActionInProgress: false,

	forms: Array(),
	fields: Array(),
	fieldsArray: Array(),

	formConfig : {
		approvalName : { isEditable : true }, 
		description : { isEditable : true }, 
		approvalInputConfigurationDetail : { 
			approvalInputConfiguration : { isEditable : true }, 
			form : { isEditable : true }, 
			field : { isEditable : true }, 
		},
		approvalInputConfigurationDetailAction : { 
			approvalInputConfiguration : { isEditable : true }, 
			form : { isEditable : true }, 
			isShowApprove : { isEditable : true }, 
			isShowReject : { isEditable : true }, 
			isShowRevise : { isEditable : true }, 
			isShowAccept : { isEditable : true }, 
			isShowRepropose : { isEditable : true }, 
		},
	},
	init() {
		this._super(...arguments);
		var forms = this.formData.getList();
		this.set("forms", forms);

		var fields = this.fieldData.getList();
		this.set("fields", fields);
	},

	actions: {
		onChangeCombo(propertyName, itemCollection) {
			// this.set(propertyName, itemCollection);
			if (propertyName == "form") {
				this.reloadField();
			}
		},

		async saveApprovalInputConfiguration() {
			this.set("rightActionInProgress", true);
			this.get('model')
				.validate()
				.then(async ({ validations }) => {
					this.set('didValidate', true); 
					if (validations.get('isValid')) {
						this.set('approvalInputConfiguration.model.isApprovalData', false);
						this.approvalInputConfigurationData.save(this.approvalInputConfiguration.model).then(response => {
							if (response != undefined) {
								this.transitionToRoute('approval-input-configuration.detail', response.id); 
								this.set("rightActionInProgress", false);
							}
						})
						.catch((e) => {
							this.set("rightActionInProgress", false);
							this.set('errorMessages', this.errors.getErrorMessages(e));
							window.scrollTo(0, 0);
						});
					} else {
						this.set("rightActionInProgress", false);
					}
			}); 
		},

		addRowData(modal_type) {
			if (modal_type == "approval-input-configuration-detail") {
				let data = this.approvalInputConfigurationDetailData.createRecord();
				this.approvalInputConfiguration.addRow(data, "approvalInputConfigurationDetail");
			}
			if (modal_type == "approval-input-configuration-detail-action") {
				let data = this.approvalInputConfigurationDetailActionData.createRecord();
				this.approvalInputConfiguration.addRow(data, "approvalInputConfigurationDetailAction");
			}
		},
		deleteRowData(modal_type, data) {
			if (modal_type == "approval-input-configuration-detail") {
				this.approvalInputConfiguration.deleteRow(data, "approvalInputConfigurationDetail");
			}
			if (modal_type == "approval-input-configuration-detail-action") {
				this.approvalInputConfiguration.deleteRow(data, "approvalInputConfigurationDetailAction");
			}
		},
	},

	reloadField() {
		let index = this.approvalInputConfiguration.getIndex();
		let filter = this.approvalInputConfiguration.buildFilter(index);
		if (filter != null && filter != '') {
			filter = '{' + filter + '}';
			filter = JSON.parse(filter);
		}
		let fields = this.fieldData.getList({filter: filter}).then(result=>{
			this.set("fields", null);
			this.set("fields", result);
			// this.set("fieldsArray.0", null);
			// this.set("fieldsArray.0", result);
			// this.roleManagement.refreshBranches();
		});
	},

	fieldsArrayAt(index){
		let array = this.fieldsArray;
		console.log("BENTUK ARRAY", array);
		console.log("ARRAY by DYNAMIC INDEX", array.get(index));
		let arr_return = array.get(index);
		return arr_return;
	}
});