<div class="dialog alert" v-if="error">{{ error }}</div>
<List
v-if="op == 'list'"
- :vendors="vendors"
:av_agreement_statuses="agreement_statuses"
:av_agreement_closure_reasons="agreement_closure_reasons"
:av_agreement_renewal_priorities="agreement_renewal_priorities"
<Show
v-if="op == 'show'"
:agreement_id="agreement_id"
- :vendors="vendors"
:av_agreement_statuses="agreement_statuses"
:av_agreement_closure_reasons="agreement_closure_reasons"
:av_agreement_renewal_priorities="agreement_renewal_priorities"
<AddForm
v-if="op == 'add-form'"
:agreement_id="agreement_id"
- :vendors="vendors"
:av_agreement_statuses="agreement_statuses"
:av_agreement_closure_reasons="agreement_closure_reasons"
:av_agreement_renewal_priorities="agreement_renewal_priorities"
import Show from "./AgreementsShow.vue"
import AddForm from "./AgreementsFormAdd.vue"
import ConfirmDeleteForm from "./AgreementsFormConfirmDelete.vue"
+import { ref, reactive, computed } from "vue"
-import { reactive, computed } from "vue"
export default {
data() {
op: "list",
message: null,
error: null,
- vendors: [],
agreement_statuses,
agreement_closure_reasons,
agreement_renewal_priorities,
agreement_license_location,
}
},
- beforeCreate() {
- // FIXME it's not only called on setup, but setup() does not have 'this'.
- const apiUrl = "/api/v1/acquisitions/vendors"
-
- fetch(apiUrl)
- .then((res) => res.json())
- .then(
- (result) => {
- this.vendors = result
- }).catch(
- (error) => {
- this.$emit('set-error', error)
- }
- )
-
- },
methods: {
switchView(view) {
this.message = null
/>
<AgreementLicenses
:agreement_licenses="agreement.agreement_licenses"
- :av_agreement_license_statuses="av_agreement_license_statuses"
+ :av_agreement_license_statuses="
+ av_agreement_license_statuses
+ "
:av_agreement_license_location="
av_agreement_license_location
"
import AgreementPeriods from './AgreementPeriods.vue'
import AgreementUserRoles from './AgreementUserRoles.vue'
import AgreementLicenses from './AgreementLicenses.vue'
+import { useVendorStore } from "../../stores/vendors"
+import { storeToRefs } from "pinia"
export default {
+ setup() {
+ const vendorStore = useVendorStore()
+ const { vendors } = storeToRefs(vendorStore)
+ return {
+ vendors,
+ }
+ },
data() {
return {
agreement: {
emits: ['agreement-created', 'agreement-updated', 'set-error', 'switch-view'],
props: {
agreement_id: Number,
- vendors: Array,
av_agreement_statuses: Array,
av_agreement_closure_reasons: Array,
av_agreement_renewal_priorities: Array,
import ButtonEdit from "./ButtonEdit.vue"
import ButtonDelete from "./ButtonDelete.vue"
import { createVNode, defineComponent, render, resolveComponent } from 'vue'
+import { useVendorStore } from "../../stores/vendors"
+import { storeToRefs } from "pinia"
+
export default {
+ setup() {
+ const vendorStore = useVendorStore()
+ const { vendors } = storeToRefs(vendorStore)
+ return {
+ vendors,
+ }
+ },
created() {
const apiUrl = '/api/v1/erm/agreements'
},
},
props: {
- vendors: Array,
av_agreement_statuses: Array,
av_agreement_closure_reasons: Array,
av_agreement_renewal_priorities: Array,
>
<td>{{ patron_to_html(role.patron) }}</td>
<td>
- {{ get_lib_from_av(av_agreement_user_roles, role.role) }}
+ {{
+ get_lib_from_av(
+ av_agreement_user_roles,
+ role.role
+ )
+ }}
</td>
</tr>
</tbody>
<script>
import AgreementPeriods from './AgreementPeriods.vue'
import AgreementUserRoles from './AgreementUserRoles.vue'
+import { useVendorStore } from "../../stores/vendors"
+import { storeToRefs } from "pinia"
export default {
setup() {
)
return o ? o.lib : ""
}
+ const vendorStore = useVendorStore()
+ const { vendors } = storeToRefs(vendorStore)
+
return {
format_date,
patron_to_html,
- get_lib_from_av
+ get_lib_from_av,
+ vendors,
}
},
data() {
emits: ['set-error', 'switch-view'],
props: {
agreement_id: Number,
- vendors: Array,
av_agreement_statuses: Array,
av_agreement_closure_reasons: Array,
av_agreement_renewal_priorities: Array,
Licenses</router-link
>
</li>
-
</ul>
</div>
</div>
<script>
import Breadcrumb from "./Breadcrumb.vue"
-
-
+import { useVendorStore } from "../../stores/vendors"
import { reactive, computed } from "vue"
export default {
+ setup() {
+ const vendorStore = useVendorStore()
+ return {
+ vendorStore
+ }
+ },
data() {
return {
component: "agreement",
}
},
+ beforeCreate() {
+ const apiUrl = "/api/v1/acquisitions/vendors"
+
+ fetch(apiUrl)
+ .then((res) => res.json())
+ .then(
+ (result) => {
+ this.vendorStore.vendors = result
+ },
+ (error) => {
+ this.$emit("set-error", error)
+ }
+ )
+ },
methods: {
switchComponent(component) {
this.component = component
import { createApp } from "vue";
import { createWebHistory, createRouter } from "vue-router";
+import { createPinia } from 'pinia'
import { library } from "@fortawesome/fontawesome-svg-core";
import { faPlus, faPencil, faTrash } from "@fortawesome/free-solid-svg-icons";
const router = createRouter({ history: createWebHistory(), routes });
createApp(App)
+ .use(createPinia())
.use(router)
.component("font-awesome-icon", FontAwesomeIcon)
- .mount("#erm");
+ .mount("#erm");
\ No newline at end of file
--- /dev/null
+import { defineStore } from 'pinia'
+
+export const useVendorStore = defineStore('vendors', {
+ state: () => ({
+ vendors: [],
+ }),
+})
\ No newline at end of file
"merge-stream": "^2.0.0",
"minimist": "^1.2.5",
"mysql": "^2.18.1",
+ "pinia": "^2.0.13",
"style-loader": "^3.3.1",
"vue": "^3.2.31",
"vue-flatpickr-component": "^9",