Pedro Amorim
1610a1d163
It makes it so that any changes to the local property is also reflected in the store and other components are made aware of the new value. No need to explicitly change both local property and store property values. Signed-off-by: Pedro Amorim <pedro.amorim@ptfs-europe.com> Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
287 lines
11 KiB
Vue
287 lines
11 KiB
Vue
<template>
|
|
<div v-if="initialized && sysprefs.ERMModule == 1">
|
|
<div id="sub-header">
|
|
<Breadcrumb />
|
|
<Help />
|
|
</div>
|
|
<div class="main container-fluid">
|
|
<div class="row">
|
|
<div class="col-sm-10 col-sm-push-2">
|
|
<main>
|
|
<Dialog />
|
|
<router-view />
|
|
</main>
|
|
</div>
|
|
|
|
<div class="col-sm-2 col-sm-pull-10">
|
|
<aside>
|
|
<div id="navmenu">
|
|
<div id="navmenulist">
|
|
<h5>{{ $__("E-resource management") }}</h5>
|
|
<ul>
|
|
<li>
|
|
<router-link
|
|
to="/cgi-bin/koha/erm/agreements"
|
|
>
|
|
<i class="fa fa-check-circle-o"></i>
|
|
{{ $__("Agreements") }}</router-link
|
|
>
|
|
</li>
|
|
<li>
|
|
<router-link
|
|
to="/cgi-bin/koha/erm/licenses"
|
|
>
|
|
<i class="fa fa-gavel"></i>
|
|
{{ $__("Licenses") }}</router-link
|
|
>
|
|
</li>
|
|
<li>
|
|
<router-link
|
|
to="/cgi-bin/koha/erm/eholdings"
|
|
class="disabled"
|
|
>
|
|
<i class="fa fa-crosshairs"></i>
|
|
{{ $__("eHoldings") }}
|
|
</router-link>
|
|
</li>
|
|
|
|
<li>
|
|
<ul>
|
|
<li
|
|
v-for="provider in providers"
|
|
:key="provider"
|
|
>
|
|
<router-link
|
|
v-if="provider == 'local'"
|
|
:to="`/cgi-bin/koha/erm/eholdings/local`"
|
|
class="disabled"
|
|
>
|
|
<i
|
|
class="fa fa-map-marker"
|
|
></i>
|
|
{{
|
|
$__("Local")
|
|
}}</router-link
|
|
>
|
|
<router-link
|
|
v-else-if="
|
|
provider == 'ebsco'
|
|
"
|
|
:to="`/cgi-bin/koha/erm/eholdings/ebsco`"
|
|
class="disabled"
|
|
>
|
|
<i class="fa fa-globe"></i>
|
|
{{
|
|
$__("EBSCO")
|
|
}}</router-link
|
|
>
|
|
<ul>
|
|
<li>
|
|
<router-link
|
|
:to="`/cgi-bin/koha/erm/eholdings/${provider}/packages`"
|
|
>
|
|
<i
|
|
class="fa fa-archive"
|
|
></i>
|
|
{{
|
|
$__("Packages")
|
|
}}</router-link
|
|
>
|
|
</li>
|
|
<li>
|
|
<router-link
|
|
:to="`/cgi-bin/koha/erm/eholdings/${provider}/titles`"
|
|
>
|
|
<i
|
|
class="fa fa-sort-alpha-asc"
|
|
></i>
|
|
{{
|
|
$__("Titles")
|
|
}}</router-link
|
|
>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</aside>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="main container-fluid" v-else>
|
|
<Dialog />
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import { inject } from "vue"
|
|
import Breadcrumb from "../../components/Breadcrumb.vue"
|
|
import Help from "../../components/Help.vue"
|
|
import Dialog from "../../components/Dialog.vue"
|
|
import { APIClient } from "../../fetch/api-client.js"
|
|
import "vue-select/dist/vue-select.css"
|
|
import { storeToRefs } from "pinia"
|
|
|
|
export default {
|
|
setup() {
|
|
const vendorStore = inject("vendorStore")
|
|
|
|
const AVStore = inject("AVStore")
|
|
|
|
const mainStore = inject("mainStore")
|
|
|
|
const { loading, loaded, setError } = mainStore
|
|
|
|
const ERMStore = inject("ERMStore")
|
|
|
|
const { sysprefs, providers } = storeToRefs(ERMStore)
|
|
|
|
return {
|
|
vendorStore,
|
|
AVStore,
|
|
ERMStore,
|
|
sysprefs,
|
|
providers,
|
|
setError,
|
|
loading,
|
|
loaded,
|
|
}
|
|
},
|
|
data() {
|
|
return {
|
|
component: "agreement",
|
|
initialized: false,
|
|
}
|
|
},
|
|
beforeCreate() {
|
|
this.loading()
|
|
|
|
const fetch_config = () => {
|
|
let promises = []
|
|
|
|
const acq_client = APIClient.acquisition
|
|
promises.push(
|
|
acq_client.vendors.getAll().then(
|
|
vendors => {
|
|
this.vendorStore.vendors = vendors
|
|
},
|
|
error => {}
|
|
)
|
|
)
|
|
|
|
const av_client = APIClient.authorised_values
|
|
const authorised_values = {
|
|
av_agreement_statuses: "ERM_AGREEMENT_STATUS",
|
|
av_agreement_closure_reasons: "ERM_AGREEMENT_CLOSURE_REASON",
|
|
av_agreement_renewal_priorities:
|
|
"ERM_AGREEMENT_RENEWAL_PRIORITY",
|
|
av_user_roles: "ERM_USER_ROLES",
|
|
av_license_types: "ERM_LICENSE_TYPE",
|
|
av_license_statuses: "ERM_LICENSE_STATUS",
|
|
av_agreement_license_statuses: "ERM_AGREEMENT_LICENSE_STATUS",
|
|
av_agreement_license_location: "ERM_AGREEMENT_LICENSE_LOCATION",
|
|
av_package_types: "ERM_PACKAGE_TYPE",
|
|
av_package_content_types: "ERM_PACKAGE_CONTENT_TYPE",
|
|
av_title_publication_types: "ERM_TITLE_PUBLICATION_TYPE",
|
|
}
|
|
|
|
let av_cat_array = Object.keys(authorised_values).map(function (
|
|
av_cat
|
|
) {
|
|
return '"' + authorised_values[av_cat] + '"'
|
|
})
|
|
|
|
promises.push(
|
|
av_client.values
|
|
.getCategoriesWithValues(av_cat_array)
|
|
.then(av_categories => {
|
|
Object.entries(authorised_values).forEach(
|
|
([av_var, av_cat]) => {
|
|
const av_match = av_categories.find(
|
|
element => element.category_name == av_cat
|
|
)
|
|
this.AVStore[av_var] =
|
|
av_match.authorised_values
|
|
}
|
|
)
|
|
})
|
|
)
|
|
|
|
promises.push(
|
|
sysprefs_client.sysprefs.get("ERMProviders").then(
|
|
providers => {
|
|
this.providers = providers.value.split(",")
|
|
},
|
|
error => {}
|
|
)
|
|
)
|
|
return Promise.all(promises)
|
|
}
|
|
|
|
const sysprefs_client = APIClient.sysprefs
|
|
sysprefs_client.sysprefs
|
|
.get("ERMModule")
|
|
.then(value => {
|
|
this.sysprefs.ERMModule = value.value
|
|
if (this.sysprefs.ERMModule != 1) {
|
|
return this.setError(
|
|
this.$__(
|
|
'The e-resource management module is disabled, turn on <a href="/cgi-bin/koha/admin/preferences.pl?tab=&op=search&searchfield=ERMModule">ERMModule</a> to use it'
|
|
),
|
|
false
|
|
)
|
|
}
|
|
return fetch_config()
|
|
})
|
|
.then(() => {
|
|
this.loaded()
|
|
this.initialized = true
|
|
})
|
|
},
|
|
components: {
|
|
Breadcrumb,
|
|
Dialog,
|
|
Help,
|
|
},
|
|
}
|
|
</script>
|
|
|
|
<style>
|
|
#menu ul ul,
|
|
#navmenulist ul ul {
|
|
padding-left: 2em;
|
|
font-size: 100%;
|
|
}
|
|
|
|
form .v-select {
|
|
display: inline-block;
|
|
background-color: white;
|
|
width: 30%;
|
|
}
|
|
|
|
.v-select,
|
|
input:not([type="submit"]):not([type="search"]):not([type="button"]):not([type="checkbox"]),
|
|
textarea {
|
|
border-color: rgba(60, 60, 60, 0.26);
|
|
border-width: 1px;
|
|
border-radius: 4px;
|
|
min-width: 30%;
|
|
}
|
|
.flatpickr-input {
|
|
width: 30%;
|
|
}
|
|
#navmenulist ul li a.current.disabled {
|
|
background-color: inherit;
|
|
border-left: 5px solid #e6e6e6;
|
|
color: #000;
|
|
}
|
|
#navmenulist ul li a.disabled {
|
|
color: #666;
|
|
pointer-events: none;
|
|
font-weight: 700;
|
|
}
|
|
</style>
|