Bug 32030: Add 'Loading...' until the data is fetched

Signed-off-by: Jonathan Field <jonathan.field@ptfs-europe.com>

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
This commit is contained in:
Jonathan Druart 2022-05-11 11:07:43 +02:00 committed by Tomas Cohen Arazi
parent 7a1b35c9d0
commit 0cdaba2dad
Signed by: tomascohen
GPG key ID: 0A272EA1B2F3C15F
9 changed files with 654 additions and 573 deletions

View file

@ -1,189 +1,197 @@
<template>
<h2 v-if="agreement.agreement_id">Edit agreement</h2>
<h2 v-else>New agreement</h2>
<div>
<form @submit="onSubmit($event)">
<fieldset class="rows">
<ol>
<li>
<label class="required" for="agreement_name"
>Agreement name:</label
>
<input
id="agreement_name"
v-model="agreement.name"
placeholder="Agreement name"
required
/>
<span class="required">Required</span>
</li>
<li>
<label for="agreement_vendor_id">Vendor:</label>
<select
id="agreement_vendor_id"
v-model="agreement.vendor_id"
>
<option value=""></option>
<option
v-for="vendor in vendors"
:key="vendor.vendor_id"
:value="vendor.id"
:selected="
vendor.id == agreement.vendor_id
? true
: false
"
<div v-if="!this.initialized">Loading...</div>
<div v-else>
<h2 v-if="agreement.agreement_id">
Edit agreement #{{ agreement.agreement_id }}
</h2>
<h2 v-else>New agreement</h2>
<div>
<form @submit="onSubmit($event)">
<fieldset class="rows">
<ol>
<li>
<label class="required" for="agreement_name"
>Agreement name:</label
>
{{ vendor.name }}
</option>
</select>
</li>
<li>
<label for="agreement_description">Description: </label>
<textarea
id="agreement_description"
v-model="agreement.description"
placeholder="Description"
rows="10"
cols="50"
required
/>
<span class="required">Required</span>
</li>
<li>
<label for="agreement_status">Status: </label>
<select
id="agreement_status"
v-model="agreement.status"
@change="onStatusChange($event)"
required
>
<option value=""></option>
<option
v-for="status in av_agreement_statuses"
:key="status.authorised_values"
:value="status.authorised_value"
:selected="
status.authorised_value == agreement.status
? true
: false
"
>
{{ status.lib }}
</option>
</select>
<span class="required">Required</span>
</li>
<li>
<label for="agreement_closure_reason"
>Closure reason:</label
>
<select
id="agreement_closure_reason"
v-model="agreement.closure_reason"
:disabled="
agreement.status == 'closed' ? false : true
"
>
<option value=""></option>
<option
v-for="r in av_agreement_closure_reasons"
:key="r.authorised_values"
:value="r.authorised_value"
:selected="
r.authorised_value ==
agreement.closure_reason
? true
: false
"
>
{{ r.lib }}
</option>
</select>
</li>
<li>
<label for="agreement_is_perpetual" class="radio"
>Is perpetual:</label
>
<label for="agreement_is_perpetual_yes">
<input
type="radio"
name="is_perpetual"
id="agreement_is_perpetual_yes"
:value="true"
v-model="agreement.is_perpetual"
id="agreement_name"
v-model="agreement.name"
placeholder="Agreement name"
required
/>
Yes
</label>
<label for="agreement_is_perpetual_no">
<input
type="radio"
name="is_perpetual"
id="agreement_is_perpetual_no"
:value="false"
v-model="agreement.is_perpetual"
<span class="required">Required</span>
</li>
<li>
<label for="agreement_vendor_id">Vendor:</label>
<select
id="agreement_vendor_id"
v-model="agreement.vendor_id"
>
<option value=""></option>
<option
v-for="vendor in vendors"
:key="vendor.vendor_id"
:value="vendor.id"
:selected="
vendor.id == agreement.vendor_id
? true
: false
"
>
{{ vendor.name }}
</option>
</select>
</li>
<li>
<label for="agreement_description"
>Description:
</label>
<textarea
id="agreement_description"
v-model="agreement.description"
placeholder="Description"
rows="10"
cols="50"
required
/>
No
</label>
</li>
<li>
<label for="agreement_renewal_priority"
>Renewal priority:</label
>
<select v-model="agreement.renewal_priority">
<option value=""></option>
<option
v-for="p in av_agreement_renewal_priorities"
:key="p.authorised_values"
:value="p.authorised_value"
:selected="
p.authorised_value ==
agreement.renewal_priority
? true
: false
<span class="required">Required</span>
</li>
<li>
<label for="agreement_status">Status: </label>
<select
id="agreement_status"
v-model="agreement.status"
@change="onStatusChange($event)"
required
>
<option value=""></option>
<option
v-for="status in av_agreement_statuses"
:key="status.authorised_values"
:value="status.authorised_value"
:selected="
status.authorised_value ==
agreement.status
? true
: false
"
>
{{ status.lib }}
</option>
</select>
<span class="required">Required</span>
</li>
<li>
<label for="agreement_closure_reason"
>Closure reason:</label
>
<select
id="agreement_closure_reason"
v-model="agreement.closure_reason"
:disabled="
agreement.status == 'closed' ? false : true
"
>
{{ p.lib }}
</option>
</select>
</li>
<li>
<label for="agreement_license_info"
>License info:
</label>
<textarea
id="agreement_license_info"
v-model="agreement.license_info"
placeholder="License info"
/>
</li>
<option value=""></option>
<option
v-for="r in av_agreement_closure_reasons"
:key="r.authorised_values"
:value="r.authorised_value"
:selected="
r.authorised_value ==
agreement.closure_reason
? true
: false
"
>
{{ r.lib }}
</option>
</select>
</li>
<li>
<label for="agreement_is_perpetual" class="radio"
>Is perpetual:</label
>
<label for="agreement_is_perpetual_yes">
<input
type="radio"
name="is_perpetual"
id="agreement_is_perpetual_yes"
:value="true"
v-model="agreement.is_perpetual"
/>
Yes
</label>
<label for="agreement_is_perpetual_no">
<input
type="radio"
name="is_perpetual"
id="agreement_is_perpetual_no"
:value="false"
v-model="agreement.is_perpetual"
/>
No
</label>
</li>
<li>
<label for="agreement_renewal_priority"
>Renewal priority:</label
>
<select v-model="agreement.renewal_priority">
<option value=""></option>
<option
v-for="p in av_agreement_renewal_priorities"
:key="p.authorised_values"
:value="p.authorised_value"
:selected="
p.authorised_value ==
agreement.renewal_priority
? true
: false
"
>
{{ p.lib }}
</option>
</select>
</li>
<li>
<label for="agreement_license_info"
>License info:
</label>
<textarea
id="agreement_license_info"
v-model="agreement.license_info"
placeholder="License info"
/>
</li>
<AgreementPeriods :periods="agreement.periods" />
<AgreementUserRoles
:user_roles="agreement.user_roles"
:av_agreement_user_roles="av_agreement_user_roles"
/>
<AgreementLicenses
:agreement_licenses="agreement.agreement_licenses"
:av_agreement_license_statuses="
av_agreement_license_statuses
"
:av_agreement_license_location="
av_agreement_license_location
"
/>
</ol>
</fieldset>
<fieldset class="action">
<input type="submit" value="Submit" />
<router-link
to="/cgi-bin/koha/erm/agreements"
role="button"
class="cancel"
>Cancel</router-link
>
</fieldset>
</form>
<AgreementPeriods :periods="agreement.periods" />
<AgreementUserRoles
:user_roles="agreement.user_roles"
:av_agreement_user_roles="av_agreement_user_roles"
/>
<AgreementLicenses
:agreement_licenses="agreement.agreement_licenses"
:av_agreement_license_statuses="
av_agreement_license_statuses
"
:av_agreement_license_location="
av_agreement_license_location
"
/>
</ol>
</fieldset>
<fieldset class="action">
<input type="submit" value="Submit" />
<router-link
to="/cgi-bin/koha/erm/agreements"
role="button"
class="cancel"
>Cancel</router-link
>
</fieldset>
</form>
</div>
</div>
</template>
@ -240,22 +248,24 @@ export default {
periods: [],
user_roles: [],
agreement_licenses: [],
}
},
initialized: false,
}
},
beforeRouteEnter(to, from, next) {
if (to.params.agreement_id) {
next(vm => {
next(vm => {
if (to.params.agreement_id) {
vm.agreement = vm.getAgreement(to.params.agreement_id)
})
} else {
next()
}
} else {
vm.initialized = true
}
})
},
methods: {
async getAgreement(agreement_id) {
const agreement = await fetchAgreement(agreement_id)
this.agreement = agreement
this.initialized = true
},
onSubmit(e) {
e.preventDefault()

View file

@ -1,30 +1,37 @@
<template>
<h2>Delete agreement</h2>
<div>
<form @submit="onSubmit($event)">
<fieldset class="rows">
<ol>
<li>
Agreement name:
{{ agreement.name }}
</li>
<li>Vendor:{{ agreement.vendor_id }}</li>
<li>
Description:
{{ agreement.description }}
</li>
</ol>
</fieldset>
<fieldset class="action">
<input type="submit" variant="primary" value="Yes, delete" />
<router-link
to="/cgi-bin/koha/erm/agreements"
role="button"
class="cancel"
>No, do not delete</router-link
>
</fieldset>
</form>
<div v-if="!this.initialized">Loading...</div>
<div v-else>
<h2>Delete agreement</h2>
<div>
<form @submit="onSubmit($event)">
<fieldset class="rows">
<ol>
<li>
Agreement name:
{{ agreement.name }}
</li>
<li>Vendor:{{ agreement.vendor_id }}</li>
<li>
Description:
{{ agreement.description }}
</li>
</ol>
</fieldset>
<fieldset class="action">
<input
type="submit"
variant="primary"
value="Yes, delete"
/>
<router-link
to="/cgi-bin/koha/erm/agreements"
role="button"
class="cancel"
>No, do not delete</router-link
>
</fieldset>
</form>
</div>
</div>
</template>
@ -43,6 +50,7 @@ export default {
data() {
return {
agreement: {},
initialized: false,
}
},
beforeRouteEnter(to, from, next) {
@ -54,6 +62,7 @@ export default {
async getAgreement(agreement_id) {
const agreement = await fetchAgreement(agreement_id)
this.agreement = agreement
this.initialized = true
},
onSubmit(e) {
e.preventDefault()

View file

@ -1,10 +1,10 @@
<template>
<div>
<div v-if="!this.initialized">Loading...</div>
<div v-else>
<table v-if="agreements.length" id="agreement_list"></table>
<div v-else-if="this.initialized" class="dialog message">
There are no agreements defined.
</div>
<div v-else>Loading...</div>
</div>
</template>
@ -15,6 +15,7 @@ import { createVNode, defineComponent, render, resolveComponent } from 'vue'
import { useVendorStore } from "../../stores/vendors"
import { useAVStore } from "../../stores/authorised_values"
import { storeToRefs } from "pinia"
import { fetchAgreements } from "../../fetch"
export default {
setup() {
@ -47,6 +48,17 @@ export default {
}
)
},
beforeRouteEnter(to, from, next) {
next(vm => {
vm.getAgreements()
})
},
methods: {
async getAgreements() {
const agreements = await fetchAgreements()
this.agreements = agreements
},
},
updated() {
let show_agreement = this.show_agreement
let edit_agreement = this.edit_agreement

View file

@ -1,168 +1,182 @@
<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">Loading...</div>
<div v-else>
<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>
<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>
<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>
<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>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>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"
>
<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">
<router-link
to="/cgi-bin/koha/erm/agreements"
role="button"
class="cancel"
>Close</router-link
>
</fieldset>
<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"
>
<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">
<router-link
to="/cgi-bin/koha/erm/agreements"
role="button"
class="cancel"
>Close</router-link
>
</fieldset>
</div>
</div>
</template>
@ -229,7 +243,8 @@ export default {
license_info: '',
periods: [],
user_roles: [],
}
},
initialized: false,
}
},
beforeRouteEnter(to, from, next) {
@ -241,6 +256,7 @@ export default {
async getAgreement(agreement_id) {
const agreement = await fetchAgreement(agreement_id)
this.agreement = agreement
this.initialized = true
},
},
components: {

View file

@ -1,109 +1,117 @@
<template>
<h2 v-if="license.license_id">Edit license</h2>
<h2 v-else>New license</h2>
<div>
<form @submit="onSubmit($event)">
<fieldset class="rows">
<ol>
<li>
<label class="required" for="license_name"
>License name:</label
>
<input
id="license_name"
v-model="license.name"
placeholder="License name"
required
/>
<span class="required">Required</span>
</li>
<li>
<label for="license_description">Description: </label>
<textarea
id="license_description"
v-model="license.description"
placeholder="Description"
rows="10"
cols="50"
required
/>
<span class="required">Required</span>
</li>
<li>
<label for="license_type">Type: </label>
<select
id="license_type"
v-model="license.type"
required
>
<option value=""></option>
<option
v-for="type in av_license_types"
:key="type.authorised_values"
:value="type.authorised_value"
:selected="
type.authorised_value == license.type
? true
: false
"
<div v-if="!this.initialized">Loading...</div>
<div v-else>
<h2 v-if="license.license_id">
Edit license #{{ license.license_id }}
</h2>
<h2 v-else>New license</h2>
<div>
<form @submit="onSubmit($event)">
<fieldset class="rows">
<ol>
<li>
<label class="required" for="license_name"
>License name:</label
>
{{ type.lib }}
</option>
</select>
<span class="required">Required</span>
</li>
<li>
<label for="license_status">Status: </label>
<select
id="license_status"
v-model="license.status"
required
>
<option value=""></option>
<option
v-for="status in av_license_statuses"
:key="status.authorised_values"
:value="status.authorised_value"
:selected="
status.authorised_value == license.status
? true
: false
"
<input
id="license_name"
v-model="license.name"
placeholder="License name"
required
/>
<span class="required">Required</span>
</li>
<li>
<label for="license_description"
>Description:
</label>
<textarea
id="license_description"
v-model="license.description"
placeholder="Description"
rows="10"
cols="50"
required
/>
<span class="required">Required</span>
</li>
<li>
<label for="license_type">Type: </label>
<select
id="license_type"
v-model="license.type"
required
>
{{ status.lib }}
</option>
</select>
<span class="required">Required</span>
</li>
<li>
<label for="started_on">Start date: </label>
<flat-pickr
id="started_on"
v-model="license.started_on"
:config="fp_config"
data-date_to="ended_on"
/>
</li>
<li>
<label for="ended_on">End date: </label>
<flat-pickr
id="ended_on"
v-model="license.ended_on"
:config="fp_config"
/>
</li>
</ol>
</fieldset>
<fieldset class="action">
<input type="submit" value="Submit" />
<router-link
to="/cgi-bin/koha/erm/licenses"
role="button"
class="cancel"
>Cancel</router-link
>
</fieldset>
</form>
<option value=""></option>
<option
v-for="type in av_license_types"
:key="type.authorised_values"
:value="type.authorised_value"
:selected="
type.authorised_value == license.type
? true
: false
"
>
{{ type.lib }}
</option>
</select>
<span class="required">Required</span>
</li>
<li>
<label for="license_status">Status: </label>
<select
id="license_status"
v-model="license.status"
required
>
<option value=""></option>
<option
v-for="status in av_license_statuses"
:key="status.authorised_values"
:value="status.authorised_value"
:selected="
status.authorised_value ==
license.status
? true
: false
"
>
{{ status.lib }}
</option>
</select>
<span class="required">Required</span>
</li>
<li>
<label for="started_on">Start date: </label>
<flat-pickr
id="started_on"
v-model="license.started_on"
:config="fp_config"
data-date_to="ended_on"
/>
</li>
<li>
<label for="ended_on">End date: </label>
<flat-pickr
id="ended_on"
v-model="license.ended_on"
:config="fp_config"
/>
</li>
</ol>
</fieldset>
<fieldset class="action">
<input type="submit" value="Submit" />
<router-link
to="/cgi-bin/koha/erm/licenses"
role="button"
class="cancel"
>Cancel</router-link
>
</fieldset>
</form>
</div>
</div>
</template>
@ -144,7 +152,8 @@ export default {
status: '',
started_on: undefined,
ended_on: undefined,
}
},
initialized: false,
}
},
beforeUpdate() {
@ -155,18 +164,19 @@ export default {
}
},
beforeRouteEnter(to, from, next) {
if (to.params.license_id) {
next(vm => {
next(vm => {
if (to.params.license_id) {
vm.license = vm.getLicense(to.params.license_id)
})
} else {
next()
}
} else {
vm.initialized = true
}
})
},
methods: {
async getLicense(license_id) {
const license = await fetchLicense(license_id)
this.license = license
this.initialized = true
},
onSubmit(e) {
e.preventDefault()

View file

@ -1,29 +1,36 @@
<template>
<h2>Delete license</h2>
<div>
<form @submit="onSubmit($event)">
<fieldset class="rows">
<ol>
<li>
License name:
{{ license.name }}
</li>
<li>
Description:
{{ license.description }}
</li>
</ol>
</fieldset>
<fieldset class="action">
<input type="submit" variant="primary" value="Yes, delete" />
<router-link
to="/cgi-bin/koha/erm/licenses"
role="button"
class="cancel"
>No, do not delete</router-link
>
</fieldset>
</form>
<div v-if="!this.initialized">Loading...</div>
<div v-else>
<h2>Delete license</h2>
<div>
<form @submit="onSubmit($event)">
<fieldset class="rows">
<ol>
<li>
License name:
{{ license.name }}
</li>
<li>
Description:
{{ license.description }}
</li>
</ol>
</fieldset>
<fieldset class="action">
<input
type="submit"
variant="primary"
value="Yes, delete"
/>
<router-link
to="/cgi-bin/koha/erm/licenses"
role="button"
class="cancel"
>No, do not delete</router-link
>
</fieldset>
</form>
</div>
</div>
</template>
@ -42,21 +49,20 @@ export default {
data() {
return {
license: {},
initialized: false,
}
},
beforeRouteEnter(to, from, next) {
if (to.params.license_id) {
next(vm => {
vm.license = vm.getLicense(to.params.license_id)
})
} else {
next()
}
next(vm => {
vm.license = vm.getLicense(to.params.license_id)
vm.initialized = true
})
},
methods: {
async getLicense(license_id) {
const license = await fetchLicense(license_id)
this.license = license
this.initialized = true
},
onSubmit(e) {
e.preventDefault()

View file

@ -1,10 +1,10 @@
<template>
<div>
<div v-if="!this.initialized">Loading...</div>
<div v-else>
<table v-if="licenses.length" id="license_list"></table>
<div v-else-if="this.initialized" class="dialog message">
There are no licenses defined.
</div>
<div v-else>Loading...</div>
</div>
</template>

View file

@ -1,52 +1,55 @@
<template>
<h2>License #{{ license.license_id }}</h2>
<div>
<fieldset class="rows">
<ol>
<li>
<label>License name:</label>
<span>
{{ license.name }}
</span>
</li>
<li>
<label>Description: </label>
<span>
{{ license.description }}
</span>
</li>
<li>
<label>Type: </label>
<span>{{
get_lib_from_av(av_license_types, license.type)
}}</span>
</li>
<li>
<label>Status: </label>
<span>{{
get_lib_from_av(av_license_statuses, license.status)
}}</span>
</li>
<div v-if="!this.initialized">Loading...</div>
<div v-else>
<h2>License #{{ license.license_id }}</h2>
<div>
<fieldset class="rows">
<ol>
<li>
<label>License name:</label>
<span>
{{ license.name }}
</span>
</li>
<li>
<label>Description: </label>
<span>
{{ license.description }}
</span>
</li>
<li>
<label>Type: </label>
<span>{{
get_lib_from_av(av_license_types, license.type)
}}</span>
</li>
<li>
<label>Status: </label>
<span>{{
get_lib_from_av(av_license_statuses, license.status)
}}</span>
</li>
<li>
<label>Started on:</label>
<span>{{ format_date(license.started_on) }}</span>
</li>
<li>
<label>Started on:</label>
<span>{{ format_date(license.started_on) }}</span>
</li>
<li>
<label>Ended on:</label>
<span>{{ format_date(license.ended_on) }}</span>
</li>
</ol>
</fieldset>
<fieldset class="action">
<router-link
to="/cgi-bin/koha/erm/licenses"
role="button"
class="cancel"
>Close</router-link
>
</fieldset>
<li>
<label>Ended on:</label>
<span>{{ format_date(license.ended_on) }}</span>
</li>
</ol>
</fieldset>
<fieldset class="action">
<router-link
to="/cgi-bin/koha/erm/licenses"
role="button"
class="cancel"
>Close</router-link
>
</fieldset>
</div>
</div>
</template>
@ -93,22 +96,21 @@ export default {
status: '',
started_on: undefined,
ended_on: undefined,
}
},
initialized: false,
}
},
beforeRouteEnter(to, from, next) {
if (to.params.license_id) {
next(vm => {
vm.license = vm.getLicense(to.params.license_id)
})
} else {
next()
}
next(vm => {
vm.license = vm.getLicense(to.params.license_id)
vm.initialized = true
})
},
methods: {
async getLicense(license_id) {
const license = await fetchLicense(license_id)
this.license = license
this.initialized = true
},
},
components: {

View file

@ -20,6 +20,22 @@ export const fetchAgreement = async function (agreement_id) {
return agreement;
};
export const fetchAgreements = async function () {
const apiUrl = "/api/v1/erm/agreements"
let agreements;
await fetch(apiUrl)
.then((res) => res.json())
.then(
(result) => {
agreements = result;
},
(error) => {
this.setError(error);
}
);
return agreements;
};
export const fetchLicense = async function (license_id) {
if (!license_id) return;
const apiUrl = "/api/v1/erm/licenses/" + license_id;