<template>
- <h2>Agreement #{{ agreement.agreement_id }}</h2>
- <div>
- <fieldset class="rows">
- <ol>
- <li>
- <label>Agreement name:</label>
- <span>
- {{ agreement.name }}
- </span>
- </li>
- <li>
- <label>Vendor:</label>
- <span v-if="agreement.vendor_id">
- {{
- vendors.find((e) => e.id == agreement.vendor_id)
- .name
- }}
- </span>
- </li>
- <li>
- <label>Description: </label>
- <span>
- {{ agreement.description }}
- </span>
- </li>
- <li>
- <label>Status: </label>
- <span>{{
- get_lib_from_av(av_agreement_statuses, agreement.status)
- }}</span>
- </li>
- <li>
- <label>Closure reason:</label>
- <span>{{
- get_lib_from_av(
- av_agreement_closure_reasons,
- agreement.closure_reason
- )
- }}</span>
- </li>
- <li>
- <label>Is perpetual:</label>
- <span v-if="agreement.is_perpetual">Yes</span>
- <span v-else>No</span>
- </li>
- <li>
- <label>Renewal priority:</label>
- <span>{{
- get_lib_from_av(
- av_agreement_renewal_priorities,
- agreement.renewal_priority
- )
- }}</span>
- </li>
- <li>
- <label>License info: </label>
- <span>{{ agreement.license_info }}</span>
- </li>
+ <div v-if="!this.initialized">{{ $t("Loading") }}</div>
+ <div v-else id="agreements_show">
+ <h2>
+ {{ $t("Agreement .id", { id: agreement.agreement_id }) }}
+ <span class="action_links">
+ <router-link
+ :to="`/cgi-bin/koha/erm/agreements/edit/${agreement.agreement_id}`"
+ :title="$t('Edit')"
+ ><i class="fa fa-pencil"></i
+ ></router-link>
- <li>
- <label>Periods</label>
- <table>
- <thead>
- <th>Period start</th>
- <th>Period end</th>
- <th>Cancellation deadline</th>
- <th>Period note</th>
- </thead>
- <tbody>
- <tr
- v-for="(period, counter) in agreement.periods"
- v-bind:key="counter"
- >
- <td>{{ format_date(period.started_on) }}</td>
- <td>{{ format_date(period.ended_on) }}</td>
- <td>
- {{
- format_date(
- period.cancellation_deadline
- )
- }}
- </td>
- <td>{{ period.notes }}</td>
- </tr>
- </tbody>
- </table>
- </li>
+ <router-link
+ :to="`/cgi-bin/koha/erm/agreements/delete/${agreement.agreement_id}`"
+ :title="$t('Delete')"
+ ><i class="fa fa-trash"></i
+ ></router-link>
+ </span>
+ </h2>
+ <div>
+ <fieldset class="rows">
+ <ol>
+ <li>
+ <label>{{ $t("Agreement name") }}:</label>
+ <span>
+ {{ agreement.name }}
+ </span>
+ </li>
+ <li>
+ <label>{{ $t("Vendor") }}:</label>
+ <span v-if="agreement.vendor_id">
+ {{
+ vendors.find((e) => e.id == agreement.vendor_id)
+ .name
+ }}
+ </span>
+ </li>
+ <li>
+ <label>{{ $t("Description") }}:</label>
+ <span>
+ {{ agreement.description }}
+ </span>
+ </li>
+ <li>
+ <label>{{ $t("Status") }}:</label>
+ <span>{{
+ get_lib_from_av(
+ "av_agreement_statuses",
+ agreement.status
+ )
+ }}</span>
+ </li>
+ <li>
+ <label>{{ $t("Closure reason") }}:</label>
+ <span>{{
+ get_lib_from_av(
+ "av_agreement_closure_reasons",
+ agreement.closure_reason
+ )
+ }}</span>
+ </li>
+ <li>
+ <label>{{ $t("Is perpetual") }}:</label>
+ <span v-if="agreement.is_perpetual">Yes</span>
+ <span v-else>No</span>
+ </li>
+ <li>
+ <label>{{ $t("Renewal priority") }}:</label>
+ <span>{{
+ get_lib_from_av(
+ "av_agreement_renewal_priorities",
+ agreement.renewal_priority
+ )
+ }}</span>
+ </li>
+ <li>
+ <label>{{ $t("License info") }}:</label>
+ <span>{{ agreement.license_info }}</span>
+ </li>
- <li>
- <label>Users</label>
- <table>
- <thead>
- <th>Name</th>
- <th>Role</th>
- </thead>
- <tbody>
- <tr
- v-for="(role, counter) in agreement.user_roles"
- v-bind:key="counter"
- >
- <td>{{ patron_to_html(role.patron) }}</td>
- <td>
- {{
- get_lib_from_av(
- av_agreement_user_roles,
- role.role
- )
- }}
- </td>
- </tr>
- </tbody>
- </table>
- </li>
+ <li>
+ <label>{{ $t("Periods") }}</label>
+ <table>
+ <thead>
+ <th>{{ $t("Period start") }}</th>
+ <th>{{ $t("Period end") }}</th>
+ <th>{{ $t("Cancellation deadline") }}</th>
+ <th>{{ $t("Period note") }}</th>
+ </thead>
+ <tbody>
+ <tr
+ v-for="(
+ period, counter
+ ) in agreement.periods"
+ v-bind:key="counter"
+ >
+ <td>
+ {{ format_date(period.started_on) }}
+ </td>
+ <td>{{ format_date(period.ended_on) }}</td>
+ <td>
+ {{
+ format_date(
+ period.cancellation_deadline
+ )
+ }}
+ </td>
+ <td>{{ period.notes }}</td>
+ </tr>
+ </tbody>
+ </table>
+ </li>
+
+ <li>
+ <label>{{ $t("Users") }}</label>
+ <table>
+ <thead>
+ <th>{{ $t("Name") }}</th>
+ <th>{{ $t("Role") }}</th>
+ </thead>
+ <tbody>
+ <tr
+ v-for="(
+ role, counter
+ ) in agreement.user_roles"
+ v-bind:key="counter"
+ >
+ <td>{{ patron_to_html(role.patron) }}</td>
+ <td>
+ {{
+ get_lib_from_av(
+ "av_agreement_user_roles",
+ role.role
+ )
+ }}
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </li>
- <li>
- <label>Licenses</label>
- <table>
- <thead>
- <th>Name</th>
- <th>Status</th>
- <th>Physical location</th>
- <th>Notes</th>
- <th>URI</th>
- </thead>
- <tbody>
- <tr
- v-for="(
- agreement_license, counter
- ) in agreement.agreement_licenses"
- v-bind:key="counter"
+ <li>
+ <label>{{ $t("Licenses") }}</label>
+ <table>
+ <thead>
+ <th>{{ $t("Name") }}</th>
+ <th>{{ $t("Status") }}</th>
+ <th>{{ $t("Physical location") }}</th>
+ <th>{{ $t("Notes") }}</th>
+ <th>{{ $t("URI") }}</th>
+ </thead>
+ <tbody>
+ <tr
+ v-for="(
+ agreement_license, counter
+ ) in agreement.agreement_licenses"
+ v-bind:key="counter"
+ >
+ <td>
+ <router-link
+ :to="`/cgi-bin/koha/erm/licenses/${agreement_license.license_id}`"
+ >
+ {{ agreement_license.license.name }}
+ </router-link>
+ </td>
+ <td>
+ {{
+ get_lib_from_av(
+ "av_agreement_license_statuses",
+ agreement_license.status
+ )
+ }}
+ </td>
+ <td>
+ {{
+ get_lib_from_av(
+ "av_agreement_license_location",
+ agreement_license.physical_location
+ )
+ }}
+ </td>
+ <td>{{ agreement_license.notes }}</td>
+ <td>{{ agreement_license.uri }}</td>
+ </tr>
+ </tbody>
+ </table>
+ </li>
+
+ <li>
+ <label>{{ $t("Related agreements") }}</label>
+ <div
+ v-for="relationship in agreement.agreement_relationships"
+ v-bind:key="relationship.related_agreement_id"
+ >
+ <span
+ ><router-link
+ :to="`/cgi-bin/koha/erm/agreements/${relationship.related_agreement.agreement_id}`"
+ >{{
+ relationship.related_agreement.name
+ }}</router-link
+ ></span
>
- <td>{{ agreement_license.license.name }}</td>
- <td>
- {{
- get_lib_from_av(
- av_agreement_license_statuses,
- agreement_license.status
- )
- }}
- </td>
- <td>
- {{
- get_lib_from_av(
- av_agreement_license_location,
- agreement_license.physical_location
- )
- }}
- </td>
- <td>{{ agreement_license.notes }}</td>
- <td>{{ agreement_license.uri }}</td>
- </tr>
- </tbody>
- </table>
- </li>
- </ol>
- </fieldset>
- <fieldset class="action">
- <a
- role="button"
- class="cancel"
- @click="this.setCurrentView('list')"
- >Close</a
- >
- </fieldset>
+ {{
+ get_lib_from_av(
+ "av_agreement_relationships",
+ relationship.relationship
+ )
+ }}
+ {{ agreement.name }}
+ </div>
+ </li>
+ </ol>
+ </fieldset>
+ <fieldset class="action">
+ <router-link
+ to="/cgi-bin/koha/erm/agreements"
+ role="button"
+ class="cancel"
+ >{{ $t("Close") }}</router-link
+ >
+ </fieldset>
+ </div>
</div>
</template>
import AgreementUserRoles from './AgreementUserRoles.vue'
import { useVendorStore } from "../../stores/vendors"
import { useAVStore } from "../../stores/authorised_values"
-import { useMainStore } from "../../stores/main"
+import { fetchAgreement } from "../../fetch"
import { storeToRefs } from "pinia"
export default {
setup() {
const format_date = $date
const patron_to_html = $patron_to_html
- const get_lib_from_av = function (arr, av) {
- let o = arr.find(
- (e) => e.authorised_value == av
- )
- return o ? o.lib : ""
- }
+
const vendorStore = useVendorStore()
const { vendors } = storeToRefs(vendorStore)
const AVStore = useAVStore()
- const {
- av_agreement_statuses,
- av_agreement_closure_reasons,
- av_agreement_renewal_priorities,
- av_agreement_user_roles,
- av_agreement_license_statuses,
- av_agreement_license_location,
- } = storeToRefs(AVStore)
+ const { get_lib_from_av } = AVStore
- const mainStore = useMainStore()
- const { setError, setCurrentView } = mainStore
return {
format_date,
patron_to_html,
get_lib_from_av,
vendors,
- av_agreement_statuses,
- av_agreement_closure_reasons,
- av_agreement_renewal_priorities,
- av_agreement_user_roles,
- av_agreement_license_statuses,
- av_agreement_license_location,
- setError, setCurrentView,
}
},
data() {
license_info: '',
periods: [],
user_roles: [],
- }
+ },
+ initialized: false,
}
},
- created() {
- if (!this.agreement_id) return
- const apiUrl = '/api/v1/erm/agreements/' + this.agreement_id
-
- fetch(apiUrl, {
- headers: {
- 'x-koha-embed': 'periods,user_roles,user_roles.patron,agreement_licenses,agreement_licenses.license'
- }
+ beforeRouteEnter(to, from, next) {
+ next(vm => {
+ vm.getAgreement(to.params.agreement_id)
})
- .then(res => res.json())
- .then(
- (result) => {
- this.agreement = result
- },
- (error) => {
- this.setError(error)
- }
- )
},
- methods: {
+ beforeRouteUpdate(to, from) {
+ this.agreement = this.getAgreement(to.params.agreement_id)
},
- props: {
- agreement_id: Number,
+ methods: {
+ async getAgreement(agreement_id) {
+ const agreement = await fetchAgreement(agreement_id)
+ this.agreement = agreement
+ this.initialized = true
+ },
},
components: {
AgreementPeriods,
name: "AgreementsShow",
}
</script>
+<style scoped>
+.action_links a {
+ padding-left: 0.2em;
+ font-size: 11px;
+}
+</style>
\ No newline at end of file