blob: 94f67d5d4472a7a31765f2c2b92f4eccb7e17e76 [file] [log] [blame]
<template>
<div>
<b-btn v-b-modal.modal-new-project variant="primary">
<slot> New Project <i class="fa fa-plus" aria-hidden="true"></i> </slot>
</b-btn>
<b-modal
id="modal-new-project"
ref="modalNewProject"
title="Create New Project"
v-on:ok="onOkClicked"
v-bind:ok-disabled="okDisabled"
@cancel="onCancelNewProject"
>
<project-editor
v-model="newProject"
ref="projectEditor"
@save="onCreateProject"
@valid="valid = true"
@invalid="valid = false"
>
<div slot="title"></div>
</project-editor>
</b-modal>
</div>
</template>
<script>
import { models, services } from "django-airavata-api";
import ProjectEditor from "./ProjectEditor.vue";
export default {
name: "project-button-new",
data() {
return {
valid: false,
newProject: new models.Project(),
};
},
components: {
ProjectEditor,
},
methods: {
onCreateProject: function () {
if (!this.valid) {
return;
}
services.ProjectService.create({ data: this.newProject }).then(
(result) => {
this.$refs.modalNewProject.hide();
this.$emit("new-project", result);
// Reset state
this.newProject = new models.Project();
this.$refs.projectEditor.reset();
}
);
},
onOkClicked(event) {
// Prevent hiding modal, hide it programmatically when project gets created
event.preventDefault();
this.onCreateProject();
},
onCancelNewProject() {
this.newProject = new models.Project();
this.$refs.projectEditor.reset();
},
},
computed: {
okDisabled: function () {
return !this.valid;
},
},
};
</script>