View | Details | Raw Unified | Return to bug 32898
Collapse All | Expand All

(-)a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/AgreementsFormAdd.vue (-1 / +2 lines)
Lines 190-196 import AgreementLicenses from "./AgreementLicenses.vue" Link Here
190
import AgreementRelationships from "./AgreementRelationships.vue"
190
import AgreementRelationships from "./AgreementRelationships.vue"
191
import Documents from "./Documents.vue"
191
import Documents from "./Documents.vue"
192
import { setMessage, setError, setWarning } from "../../messages"
192
import { setMessage, setError, setWarning } from "../../messages"
193
import { fetchAgreement } from "../../fetch"
193
import { fetchAgreement, checkError } from "../../fetch"
194
import { storeToRefs } from "pinia"
194
import { storeToRefs } from "pinia"
195
195
196
export default {
196
export default {
Lines 384-389 export default { Link Here
384
            }
384
            }
385
385
386
            fetch(apiUrl, options)
386
            fetch(apiUrl, options)
387
                .then(response => checkError(response, 1))
387
                .then(response => {
388
                .then(response => {
388
                    if (response.status == 200) {
389
                    if (response.status == 200) {
389
                        this.$router.push("/cgi-bin/koha/erm/agreements")
390
                        this.$router.push("/cgi-bin/koha/erm/agreements")
(-)a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/AgreementsFormConfirmDelete.vue (-1 / +2 lines)
Lines 36-42 Link Here
36
</template>
36
</template>
37
37
38
<script>
38
<script>
39
import { fetchAgreement } from "../../fetch"
39
import { fetchAgreement, checkError } from "../../fetch"
40
import { setMessage, setError } from "../../messages"
40
import { setMessage, setError } from "../../messages"
41
41
42
export default {
42
export default {
Lines 70-75 export default { Link Here
70
            }
70
            }
71
71
72
            fetch(apiUrl, options)
72
            fetch(apiUrl, options)
73
                .then(response => checkError(response, 1))
73
                .then(response => {
74
                .then(response => {
74
                    if (response.status == 204) {
75
                    if (response.status == 204) {
75
                        setMessage(this.$__("Agreement deleted"))
76
                        setMessage(this.$__("Agreement deleted"))
(-)a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/EHoldingsEBSCOPackagesList.vue (-2 / +2 lines)
Lines 62-68 Link Here
62
<script>
62
<script>
63
import { inject, createVNode, render } from "vue"
63
import { inject, createVNode, render } from "vue"
64
import { storeToRefs } from "pinia"
64
import { storeToRefs } from "pinia"
65
import { fetchCountLocalPackages } from "./../../fetch"
65
import { fetchLocalPackageCount } from "./../../fetch"
66
import {
66
import {
67
    useDataTable,
67
    useDataTable,
68
    build_url_params,
68
    build_url_params,
Lines 136-142 export default { Link Here
136
                .DataTable()
136
                .DataTable()
137
                .draw()
137
                .draw()
138
            if (this.erm_providers.includes("local")) {
138
            if (this.erm_providers.includes("local")) {
139
                this.local_count_packages = await fetchCountLocalPackages(
139
                this.local_count_packages = await fetchLocalPackageCount(
140
                    this.filters
140
                    this.filters
141
                )
141
                )
142
            }
142
            }
(-)a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/EHoldingsLocalPackagesFormAdd.vue (-5 / +10 lines)
Lines 88-94 Link Here
88
import { inject } from "vue"
88
import { inject } from "vue"
89
import EHoldingsPackageAgreements from "./EHoldingsLocalPackageAgreements.vue"
89
import EHoldingsPackageAgreements from "./EHoldingsLocalPackageAgreements.vue"
90
import { setMessage, setError, setWarning } from "../../messages"
90
import { setMessage, setError, setWarning } from "../../messages"
91
import { fetchLocalPackage, createPackage, editPackage } from "../../fetch"
91
import {
92
    fetchLocalPackage,
93
    createPackage,
94
    editPackage,
95
    checkError,
96
} from "../../fetch"
92
import { storeToRefs } from "pinia"
97
import { storeToRefs } from "pinia"
93
98
94
export default {
99
export default {
Lines 165-187 export default { Link Here
165
170
166
            if (erm_package.package_id) {
171
            if (erm_package.package_id) {
167
                editPackage(erm_package).then(response => {
172
                editPackage(erm_package).then(response => {
168
                    if (response.status == 200) {
173
                    if (response && response.status == 200) {
169
                        this.$router.push(
174
                        this.$router.push(
170
                            "/cgi-bin/koha/erm/eholdings/local/packages"
175
                            "/cgi-bin/koha/erm/eholdings/local/packages"
171
                        )
176
                        )
172
                        setMessage(this.$__("Package updated"))
177
                        setMessage(this.$__("Package updated"))
173
                    } else {
178
                    } else if (response) {
174
                        setError(response.message || response.statusText)
179
                        setError(response.message || response.statusText)
175
                    }
180
                    }
176
                })
181
                })
177
            } else {
182
            } else {
178
                createPackage(erm_package).then(response => {
183
                createPackage(erm_package).then(response => {
179
                    if (response.status == 201) {
184
                    if (response && response.status == 201) {
180
                        this.$router.push(
185
                        this.$router.push(
181
                            "/cgi-bin/koha/erm/eholdings/local/packages"
186
                            "/cgi-bin/koha/erm/eholdings/local/packages"
182
                        )
187
                        )
183
                        setMessage(this.$__("Package created"))
188
                        setMessage(this.$__("Package created"))
184
                    } else {
189
                    } else if (response) {
185
                        setError(response.message || response.statusText)
190
                        setError(response.message || response.statusText)
186
                    }
191
                    }
187
                })
192
                })
(-)a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/EHoldingsLocalPackagesFormConfirmDelete.vue (-1 / +2 lines)
Lines 31-37 Link Here
31
</template>
31
</template>
32
32
33
<script>
33
<script>
34
import { fetchLocalPackage } from "../../fetch"
34
import { fetchLocalPackage, checkError } from "../../fetch"
35
import { setMessage, setError } from "../../messages"
35
import { setMessage, setError } from "../../messages"
36
36
37
export default {
37
export default {
Lines 67-72 export default { Link Here
67
            }
67
            }
68
68
69
            fetch(apiUrl, options)
69
            fetch(apiUrl, options)
70
                .then(response => checkError(response, 1))
70
                .then(response => {
71
                .then(response => {
71
                    if (response.status == 204) {
72
                    if (response.status == 204) {
72
                        setMessage(this.$__("Package deleted"))
73
                        setMessage(this.$__("Package deleted"))
(-)a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/EHoldingsLocalPackagesList.vue (-8 / +7 lines)
Lines 1-10 Link Here
1
<template>
1
<template>
2
    <div>
2
    <div>
3
        <div v-if="!initialized">{{ $__("Loading") }}</div>
3
        <div v-if="!initialized">{{ $__("Loading") }}</div>
4
        <div v-else-if="packages" id="packages_list">
4
        <div v-else-if="package_count" id="packages_list">
5
            <Toolbar />
5
            <Toolbar />
6
            <div
6
            <div
7
                v-if="packages.length"
7
                v-if="package_count > 0"
8
                id="package_list_result"
8
                id="package_list_result"
9
                class="page-section"
9
                class="page-section"
10
            >
10
            >
Lines 21-27 Link Here
21
import Toolbar from "./EHoldingsLocalPackagesToolbar.vue"
21
import Toolbar from "./EHoldingsLocalPackagesToolbar.vue"
22
import { inject, createVNode, render } from "vue"
22
import { inject, createVNode, render } from "vue"
23
import { storeToRefs } from "pinia"
23
import { storeToRefs } from "pinia"
24
import { fetchLocalPackages } from "../../fetch"
24
import { fetchLocalPackageCount } from "../../fetch"
25
import { useDataTable } from "../../composables/datatables"
25
import { useDataTable } from "../../composables/datatables"
26
26
27
export default {
27
export default {
Lines 44-50 export default { Link Here
44
    },
44
    },
45
    data: function () {
45
    data: function () {
46
        return {
46
        return {
47
            packages: [],
47
            package_count: [],
48
            initialized: false,
48
            initialized: false,
49
            filters: {
49
            filters: {
50
                package_name: this.$route.query.package_name || "",
50
                package_name: this.$route.query.package_name || "",
Lines 54-66 export default { Link Here
54
    },
54
    },
55
    beforeRouteEnter(to, from, next) {
55
    beforeRouteEnter(to, from, next) {
56
        next(vm => {
56
        next(vm => {
57
            vm.getPackages().then(() => vm.build_datatable())
57
            vm.getPackageCount().then(() => vm.build_datatable())
58
        })
58
        })
59
    },
59
    },
60
    methods: {
60
    methods: {
61
        async getPackages() {
61
        async getPackageCount() {
62
            const packages = await fetchLocalPackages()
62
            this.package_count = await fetchLocalPackageCount()
63
            this.packages = packages
64
            this.initialized = true
63
            this.initialized = true
65
        },
64
        },
66
        show_package: function (package_id) {
65
        show_package: function (package_id) {
(-)a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/EHoldingsLocalTitlesFormAdd.vue (-4 / +5 lines)
Lines 388-394 Link Here
388
import { inject } from "vue"
388
import { inject } from "vue"
389
import EHoldingsTitlesFormAddResources from "./EHoldingsLocalTitlesFormAddResources.vue"
389
import EHoldingsTitlesFormAddResources from "./EHoldingsLocalTitlesFormAddResources.vue"
390
import { setMessage, setError, setWarning } from "../../messages"
390
import { setMessage, setError, setWarning } from "../../messages"
391
import { fetchLocalTitle } from "../../fetch"
391
import { fetchLocalTitle, checkError } from "../../fetch"
392
import { storeToRefs } from "pinia"
392
import { storeToRefs } from "pinia"
393
393
394
export default {
394
export default {
Lines 506-524 export default { Link Here
506
            }
506
            }
507
507
508
            fetch(apiUrl, options)
508
            fetch(apiUrl, options)
509
                .then(response => checkError(response, 1))
509
                .then(
510
                .then(
510
                    response => {
511
                    response => {
511
                        if (response.status == 200) {
512
                        if (response && response.status == 200) {
512
                            this.$router.push(
513
                            this.$router.push(
513
                                "/cgi-bin/koha/erm/eholdings/local/titles"
514
                                "/cgi-bin/koha/erm/eholdings/local/titles"
514
                            )
515
                            )
515
                            setMessage(this.$__("Title updated"))
516
                            setMessage(this.$__("Title updated"))
516
                        } else if (response.status == 201) {
517
                        } else if (response && response.status == 201) {
517
                            this.$router.push(
518
                            this.$router.push(
518
                                "/cgi-bin/koha/erm/eholdings/local/titles"
519
                                "/cgi-bin/koha/erm/eholdings/local/titles"
519
                            )
520
                            )
520
                            setMessage(this.$__("Title created"))
521
                            setMessage(this.$__("Title created"))
521
                        } else {
522
                        } else if (response) {
522
                            setError(response.message || response.statusText)
523
                            setError(response.message || response.statusText)
523
                        }
524
                        }
524
                    },
525
                    },
(-)a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/EHoldingsLocalTitlesFormConfirmDelete.vue (-1 / +2 lines)
Lines 31-37 Link Here
31
</template>
31
</template>
32
32
33
<script>
33
<script>
34
import { fetchLocalTitle } from "../../fetch"
34
import { fetchLocalTitle, checkError } from "../../fetch"
35
import { setMessage, setError } from "../../messages"
35
import { setMessage, setError } from "../../messages"
36
36
37
export default {
37
export default {
Lines 66-71 export default { Link Here
66
            }
66
            }
67
67
68
            fetch(apiUrl, options)
68
            fetch(apiUrl, options)
69
                .then(response => checkError(response, 1))
69
                .then(response => {
70
                .then(response => {
70
                    if (response.status == 204) {
71
                    if (response.status == 204) {
71
                        setMessage(this.$__("Title deleted"))
72
                        setMessage(this.$__("Title deleted"))
(-)a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/EHoldingsLocalTitlesList.vue (-2 / +6 lines)
Lines 3-10 Link Here
3
        <div v-if="!initialized">{{ $__("Loading") }}</div>
3
        <div v-if="!initialized">{{ $__("Loading") }}</div>
4
        <div v-else-if="title_count" id="titles_list">
4
        <div v-else-if="title_count" id="titles_list">
5
            <Toolbar />
5
            <Toolbar />
6
            <div v-if="title_count" id="title_list_result" class="page-section">
6
            <div
7
                <table v-if="title_count" :id="table_id"></table>
7
                v-if="title_count > 0"
8
                id="title_list_result"
9
                class="page-section"
10
            >
11
                <table :id="table_id"></table>
8
            </div>
12
            </div>
9
            <div v-else-if="initialized" class="dialog message">
13
            <div v-else-if="initialized" class="dialog message">
10
                {{ $__("There are no titles defined") }}
14
                {{ $__("There are no titles defined") }}
(-)a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/LicensesFormAdd.vue (-1 / +2 lines)
Lines 150-156 import flatPickr from "vue-flatpickr-component" Link Here
150
import UserRoles from "./UserRoles.vue"
150
import UserRoles from "./UserRoles.vue"
151
import Documents from "./Documents.vue"
151
import Documents from "./Documents.vue"
152
import { setMessage, setError, setWarning } from "../../messages"
152
import { setMessage, setError, setWarning } from "../../messages"
153
import { fetchLicense } from "../../fetch"
153
import { fetchLicense, checkError } from "../../fetch"
154
import { storeToRefs } from "pinia"
154
import { storeToRefs } from "pinia"
155
155
156
export default {
156
export default {
Lines 265-270 export default { Link Here
265
            }
265
            }
266
266
267
            fetch(apiUrl, options)
267
            fetch(apiUrl, options)
268
                .then(response => checkError(response, 1))
268
                .then(
269
                .then(
269
                    response => {
270
                    response => {
270
                        if (response.status == 200) {
271
                        if (response.status == 200) {
(-)a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/LicensesFormConfirmDelete.vue (-1 / +2 lines)
Lines 35-41 Link Here
35
</template>
35
</template>
36
36
37
<script>
37
<script>
38
import { fetchLicense } from "../../fetch"
38
import { fetchLicense, checkError } from "../../fetch"
39
import { setMessage, setError } from "../../messages"
39
import { setMessage, setError } from "../../messages"
40
40
41
export default {
41
export default {
Lines 70-75 export default { Link Here
70
            }
70
            }
71
71
72
            fetch(apiUrl, options)
72
            fetch(apiUrl, options)
73
                .then(response => checkError(response, 1))
73
                .then(response => {
74
                .then(response => {
74
                    if (response.status == 204) {
75
                    if (response.status == 204) {
75
                        this.$router.push("/cgi-bin/koha/erm/licenses")
76
                        this.$router.push("/cgi-bin/koha/erm/licenses")
(-)a/koha-tmpl/intranet-tmpl/prog/js/vue/fetch.js (-178 / +65 lines)
Lines 3-115 import { setError } from "./messages"; Link Here
3
export const fetchAgreement = async function (agreement_id) {
3
export const fetchAgreement = async function (agreement_id) {
4
    if (!agreement_id) return;
4
    if (!agreement_id) return;
5
    const apiUrl = "/api/v1/erm/agreements/" + agreement_id;
5
    const apiUrl = "/api/v1/erm/agreements/" + agreement_id;
6
    let agreement;
6
    return await myFetch(apiUrl, {
7
    await fetch(apiUrl, {
8
        headers: {
7
        headers: {
9
            "x-koha-embed":
8
            "x-koha-embed":
10
                "periods,user_roles,user_roles.patron,agreement_licenses,agreement_licenses.license,agreement_relationships,agreement_relationships.related_agreement,documents,agreement_packages,agreement_packages.package,vendor",
9
                "periods,user_roles,user_roles.patron,agreement_licenses,agreement_licenses.license,agreement_relationships,agreement_relationships.related_agreement,documents,agreement_packages,agreement_packages.package,vendor",
11
        },
10
        },
12
    })
11
    });
13
        .then(checkError)
14
        .then(
15
            (result) => {
16
                agreement = result;
17
            },
18
            (error) => {
19
                setError(error);
20
            }
21
        );
22
    return agreement;
23
};
12
};
24
13
25
export const fetchAgreements = async function () {
14
export const fetchAgreements = async function () {
26
    const apiUrl = "/api/v1/erm/agreements?_per_page=-1";
15
    const apiUrl = "/api/v1/erm/agreements?_per_page=-1";
27
    let agreements;
16
    return await myFetch(apiUrl);
28
    await fetch(apiUrl)
29
        .then(checkError)
30
        .then(
31
            (result) => {
32
                agreements = result;
33
            },
34
            (error) => {
35
                setError(error);
36
            }
37
        );
38
    return agreements;
39
};
17
};
40
18
41
export const fetchLicense = async function (license_id) {
19
export const fetchLicense = async function (license_id) {
42
    if (!license_id) return;
20
    if (!license_id) return;
43
    const apiUrl = "/api/v1/erm/licenses/" + license_id;
21
    const apiUrl = "/api/v1/erm/licenses/" + license_id;
44
    let license;
22
    return await myFetch(apiUrl, {
45
    await fetch(apiUrl, {
46
        headers: {
23
        headers: {
47
            "x-koha-embed": "user_roles,user_roles.patron,vendor,documents",
24
            "x-koha-embed": "user_roles,user_roles.patron,vendor,documents",
48
        },
25
        },
49
    })
26
    });
50
        .then(checkError)
51
        .then(
52
            (result) => {
53
                license = result;
54
            },
55
            (error) => {
56
                setError(error);
57
            }
58
        );
59
    return license;
60
};
27
};
61
28
62
export const fetchLicenses = async function () {
29
export const fetchLicenses = async function () {
63
    const apiUrl = "/api/v1/erm/licenses?_per_page=-1";
30
    const apiUrl = "/api/v1/erm/licenses?_per_page=-1";
64
    let licenses;
31
    return await myFetch(apiUrl, {
65
    await fetch(apiUrl, {
66
        headers: {
32
        headers: {
67
            "x-koha-embed": "vendor.name",
33
            "x-koha-embed": "vendor.name",
68
        },
34
        },
69
    })
35
    });
70
        .then(checkError)
71
        .then(
72
            (result) => {
73
                licenses = result;
74
            },
75
            (error) => {
76
                setError(error);
77
            }
78
        );
79
    return licenses;
80
};
36
};
81
37
82
export const fetchPatron = async function (patron_id) {
38
export const fetchPatron = async function (patron_id) {
83
    if (!patron_id) return;
39
    if (!patron_id) return;
84
    const apiUrl = "/api/v1/patrons/" + patron_id;
40
    const apiUrl = "/api/v1/patrons/" + patron_id;
85
    let patron;
41
    return await myFetch(apiUrl);
86
    await fetch(apiUrl)
87
        .then(checkError)
88
        .then(
89
            (result) => {
90
                patron = result;
91
            },
92
            (error) => {
93
                setError(error);
94
            }
95
        );
96
    return patron;
97
};
42
};
98
43
99
export const fetchVendors = async function () {
44
export const fetchVendors = async function () {
100
    const apiUrl = "/api/v1/acquisitions/vendors?_per_page=-1";
45
    const apiUrl = "/api/v1/acquisitions/vendors?_per_page=-1";
101
    let vendors;
46
    return await myFetch(apiUrl);
102
    await fetch(apiUrl)
103
        .then(checkError)
104
        .then(
105
            (result) => {
106
                vendors = result;
107
            },
108
            (error) => {
109
                setError(error);
110
            }
111
        );
112
    return vendors;
113
};
47
};
114
48
115
const _createEditPackage = async function (method, erm_package) {
49
const _createEditPackage = async function (method, erm_package) {
Lines 136-155 const _createEditPackage = async function (method, erm_package) { Link Here
136
        },
70
        },
137
    };
71
    };
138
72
139
    let r;
73
    return await myFetch(apiUrl, options, 1);
140
    await fetch(apiUrl, options)
141
        .then(
142
            (response) => {
143
                r = response;
144
            },
145
            (error) => {
146
                setError(error);
147
            }
148
        )
149
        .catch((e) => {
150
            console.log(e);
151
        });
152
    return r;
153
};
74
};
154
75
155
export const createPackage = function (erm_package) {
76
export const createPackage = function (erm_package) {
Lines 161-183 export const editPackage = function (erm_package) { Link Here
161
82
162
const _fetchPackage = async function (apiUrl, package_id) {
83
const _fetchPackage = async function (apiUrl, package_id) {
163
    if (!package_id) return;
84
    if (!package_id) return;
164
    let erm_package;
85
    return await myFetch(apiUrl, {
165
    await fetch(apiUrl, {
166
        headers: {
86
        headers: {
167
            "x-koha-embed":
87
            "x-koha-embed":
168
                "package_agreements,package_agreements.agreement,resources+count,vendor",
88
                "package_agreements,package_agreements.agreement,resources+count,vendor",
169
        },
89
        },
170
    })
90
    });
171
        .then(checkError)
172
        .then(
173
            (result) => {
174
                erm_package = result;
175
            },
176
            (error) => {
177
                setError(error);
178
            }
179
        );
180
    return erm_package;
181
};
91
};
182
export const fetchLocalPackage = function (package_id) {
92
export const fetchLocalPackage = function (package_id) {
183
    const apiUrl = "/api/v1/erm/eholdings/local/packages/" + package_id;
93
    const apiUrl = "/api/v1/erm/eholdings/local/packages/" + package_id;
Lines 190-210 export const fetchEBSCOPackage = function (package_id) { Link Here
190
100
191
export const _fetchPackages = async function (apiUrl) {
101
export const _fetchPackages = async function (apiUrl) {
192
    let packages;
102
    let packages;
193
    await fetch(apiUrl, {
103
    return await myFetch(apiUrl, {
194
        headers: {
104
        headers: {
195
            "x-koha-embed": "resources+count,vendor.name",
105
            "x-koha-embed": "resources+count,vendor.name",
196
        },
106
        },
197
    })
107
    });
198
        .then(checkError)
199
        .then(
200
            (result) => {
201
                packages = result;
202
            },
203
            (error) => {
204
                setError(error);
205
            }
206
        );
207
    return packages;
208
};
108
};
209
export const fetchLocalPackages = function () {
109
export const fetchLocalPackages = function () {
210
    const apiUrl = "/api/v1/erm/eholdings/local/packages?_per_page=-1";
110
    const apiUrl = "/api/v1/erm/eholdings/local/packages?_per_page=-1";
Lines 215-262 export const fetchEBSCOPackages = function () { Link Here
215
    return _fetchPackages(apiUrl);
115
    return _fetchPackages(apiUrl);
216
};
116
};
217
117
218
export const fetchCountLocalPackages = async function (filters) {
118
export const fetchLocalPackageCount = async function (filters) {
219
    const q = {
119
    const q = filters
220
        "me.name": { like: "%" + filters.package_name + "%" },
120
        ? {
221
        ...(filters.content_type
121
              "me.name": { like: "%" + filters.package_name + "%" },
222
            ? { "me.content_type": filters.content_type }
122
              ...(filters.content_type
223
            : {}),
123
                  ? { "me.content_type": filters.content_type }
224
    };
124
                  : {}),
125
          }
126
        : {};
225
127
226
    const params = {
128
    const params = {
227
        _page: 1,
129
        _page: 1,
228
        _per_page: 1,
130
        _per_page: 1,
229
        q: JSON.stringify(q),
131
        q: JSON.stringify(q),
230
    };
132
    };
231
    let count_local_packages;
232
    var apiUrl = "/api/v1/erm/eholdings/local/packages";
133
    var apiUrl = "/api/v1/erm/eholdings/local/packages";
233
    await fetch(apiUrl + "?" + new URLSearchParams(params))
134
    return await myFetchTotal(apiUrl + "?" + new URLSearchParams(params));
234
        //.then(checkError)
235
        .then(
236
            (response) =>
237
                (count_local_packages = response.headers.get("X-Total-Count"))
238
        );
239
    return count_local_packages;
240
};
135
};
241
136
242
export const _fetchTitle = async function (apiUrl, title_id) {
137
export const _fetchTitle = async function (apiUrl, title_id) {
243
    if (!title_id) return;
138
    if (!title_id) return;
244
    let title;
139
    return await myFetch(apiUrl, {
245
    await fetch(apiUrl, {
246
        headers: {
140
        headers: {
247
            "x-koha-embed": "resources,resources.package",
141
            "x-koha-embed": "resources,resources.package",
248
        },
142
        },
249
    })
143
    });
250
        .then(checkError)
251
        .then(
252
            (result) => {
253
                title = result;
254
            },
255
            (error) => {
256
                setError(error);
257
            }
258
        );
259
    return title;
260
};
144
};
261
export const fetchLocalTitle = function (title_id) {
145
export const fetchLocalTitle = function (title_id) {
262
    const apiUrl = "/api/v1/erm/eholdings/local/titles/" + title_id;
146
    const apiUrl = "/api/v1/erm/eholdings/local/titles/" + title_id;
Lines 287-321 export const fetchLocalTitleCount = async function (filters) { Link Here
287
        _per_page: 1,
171
        _per_page: 1,
288
        ...(q ? { q: JSON.stringify(q) } : {}),
172
        ...(q ? { q: JSON.stringify(q) } : {}),
289
    };
173
    };
290
    let count_local_titles;
291
    var apiUrl = "/api/v1/erm/eholdings/local/titles";
174
    var apiUrl = "/api/v1/erm/eholdings/local/titles";
292
    await fetch(apiUrl + "?" + new URLSearchParams(params))
175
    return await myFetchTotal(apiUrl + "?" + new URLSearchParams(params));
293
        //.then(checkError)
294
        .then(
295
            (response) =>
296
                (count_local_titles = response.headers.get("X-Total-Count"))
297
        );
298
    return count_local_titles;
299
};
176
};
300
177
301
export const _fetchResource = async function (apiUrl, resource_id) {
178
export const _fetchResource = async function (apiUrl, resource_id) {
302
    if (!resource_id) return;
179
    if (!resource_id) return;
303
    let resource;
180
    return await myFetch(apiUrl, {
304
    await fetch(apiUrl, {
305
        headers: {
181
        headers: {
306
            "x-koha-embed": "title,package,vendor",
182
            "x-koha-embed": "title,package,vendor",
307
        },
183
        },
308
    })
184
    });
309
        .then(checkError)
310
        .then(
311
            (result) => {
312
                resource = result;
313
            },
314
            (error) => {
315
                setError(error);
316
            }
317
        );
318
    return resource;
319
};
185
};
320
export const fetchLocalResource = function (resource_id) {
186
export const fetchLocalResource = function (resource_id) {
321
    const apiUrl = "/api/v1/erm/eholdings/local/resources/" + resource_id;
187
    const apiUrl = "/api/v1/erm/eholdings/local/resources/" + resource_id;
Lines 327-344 export const fetchEBSCOResource = function (resource_id) { Link Here
327
};
193
};
328
194
329
export const _fetchResources = async function (apiUrl) {
195
export const _fetchResources = async function (apiUrl) {
330
    let resources;
196
    return await myFetch(apiUrl);
331
    await fetch(apiUrl)
332
        .then(checkError)
333
        .then(
334
            (result) => {
335
                resources = result;
336
            },
337
            (error) => {
338
                setError(error);
339
            }
340
        );
341
    return resources;
342
};
197
};
343
198
344
export const fetchLocalResources = function () {
199
export const fetchLocalResources = function () {
Lines 350-361 export const fetchEBSCOResources = function () { Link Here
350
    return _fetchResources(apiUrl);
205
    return _fetchResources(apiUrl);
351
};
206
};
352
207
353
export const checkError = function (response) {
208
export const myFetch = async function (url, options, return_response) {
209
    let r;
210
    await fetch(url, options || {})
211
        .then((response) => checkError(response, return_response))
212
        .then(
213
            (result) => {
214
                r = result;
215
            },
216
            (error) => {
217
                setError(error.toString());
218
            }
219
        )
220
        .catch((error) => {
221
            setError(error);
222
        });
223
    return r;
224
};
225
export const myFetchTotal = async function (url, options) {
226
    let r;
227
    await myFetch(url, options, 1).then(
228
        (response) => {
229
            if (response) {
230
                r = response.headers.get("X-Total-Count");
231
            }
232
        },
233
        (error) => {
234
            setError(error.toString());
235
        }
236
    );
237
    return r;
238
};
239
240
export const checkError = function (response, return_response) {
354
    if (response.status >= 200 && response.status <= 299) {
241
    if (response.status >= 200 && response.status <= 299) {
355
        return response.json();
242
        return return_response ? response : response.json();
356
    } else {
243
    } else {
357
        console.log("Server returned an error:");
244
        console.log("Server returned an error:");
358
        console.log(response);
245
        console.log(response);
359
        setError("%s (%s)".format(response.statusText, response.status));
246
        throw Error("%s (%s)".format(response.statusText, response.status));
360
    }
247
    }
361
};
248
};
(-)a/t/cypress/integration/Agreements_spec.ts (-3 / +3 lines)
Lines 286-292 describe("Agreement CRUD operations", () => { Link Here
286
        });
286
        });
287
        cy.get("#agreements_add").contains("Submit").click();
287
        cy.get("#agreements_add").contains("Submit").click();
288
        cy.get("main div[class='dialog alert']").contains(
288
        cy.get("main div[class='dialog alert']").contains(
289
            "Something went wrong: Internal Server Error"
289
            "Something went wrong: Error: Internal Server Error"
290
        );
290
        );
291
291
292
        // Submit the form, success!
292
        // Submit the form, success!
Lines 432-438 describe("Agreement CRUD operations", () => { Link Here
432
        });
432
        });
433
        cy.get("#agreements_add").contains("Submit").click();
433
        cy.get("#agreements_add").contains("Submit").click();
434
        cy.get("main div[class='dialog alert']").contains(
434
        cy.get("main div[class='dialog alert']").contains(
435
            "Something went wrong: Internal Server Error"
435
            "Something went wrong: Error: Internal Server Error"
436
        );
436
        );
437
437
438
        // Submit the form, success!
438
        // Submit the form, success!
Lines 511-517 describe("Agreement CRUD operations", () => { Link Here
511
        });
511
        });
512
        cy.contains("Yes, delete").click();
512
        cy.contains("Yes, delete").click();
513
        cy.get("main div[class='dialog alert']").contains(
513
        cy.get("main div[class='dialog alert']").contains(
514
            "Something went wrong: Internal Server Error"
514
            "Something went wrong: Error: Internal Server Error"
515
        );
515
        );
516
516
517
        // Submit the form, success!
517
        // Submit the form, success!
(-)a/t/cypress/integration/Licenses_spec.ts (-3 / +3 lines)
Lines 131-137 describe("License CRUD operations", () => { Link Here
131
        });
131
        });
132
        cy.get("#licenses_add").contains("Submit").click();
132
        cy.get("#licenses_add").contains("Submit").click();
133
        cy.get("main div[class='dialog alert']").contains(
133
        cy.get("main div[class='dialog alert']").contains(
134
            "Something went wrong: Internal Server Error"
134
            "Something went wrong: Error: Internal Server Error"
135
        );
135
        );
136
136
137
        // Submit the form, success!
137
        // Submit the form, success!
Lines 189-195 describe("License CRUD operations", () => { Link Here
189
        });
189
        });
190
        cy.get("#licenses_add").contains("Submit").click();
190
        cy.get("#licenses_add").contains("Submit").click();
191
        cy.get("main div[class='dialog alert']").contains(
191
        cy.get("main div[class='dialog alert']").contains(
192
            "Something went wrong: Internal Server Error"
192
            "Something went wrong: Error: Internal Server Error"
193
        );
193
        );
194
194
195
        // Submit the form, success!
195
        // Submit the form, success!
Lines 263-269 describe("License CRUD operations", () => { Link Here
263
        });
263
        });
264
        cy.contains("Yes, delete").click();
264
        cy.contains("Yes, delete").click();
265
        cy.get("main div[class='dialog alert']").contains(
265
        cy.get("main div[class='dialog alert']").contains(
266
            "Something went wrong: Internal Server Error"
266
            "Something went wrong: Error: Internal Server Error"
267
        );
267
        );
268
268
269
        // Submit the form, success!
269
        // Submit the form, success!
(-)a/t/cypress/integration/Packages_spec.ts (-4 / +11 lines)
Lines 51-57 describe("Package CRUD operations", () => { Link Here
51
        );
51
        );
52
52
53
        // GET packages returns empty list
53
        // GET packages returns empty list
54
        cy.intercept("GET", "/api/v1/erm/eholdings/local/packages*", []);
54
        cy.intercept("GET", "/api/v1/erm/eholdings/local/packages*", {
55
            statusCode: 200,
56
            body: [],
57
            headers: {
58
                "X-Base-Total-Count": "0",
59
                "X-Total-Count": "0",
60
            },
61
        });
55
        cy.visit("/cgi-bin/koha/erm/eholdings/local/packages");
62
        cy.visit("/cgi-bin/koha/erm/eholdings/local/packages");
56
        cy.get("#packages_list").contains("There are no packages defined");
63
        cy.get("#packages_list").contains("There are no packages defined");
57
64
Lines 114-120 describe("Package CRUD operations", () => { Link Here
114
        });
121
        });
115
        cy.get("#packages_add").contains("Submit").click();
122
        cy.get("#packages_add").contains("Submit").click();
116
        cy.get("main div[class='dialog alert']").contains(
123
        cy.get("main div[class='dialog alert']").contains(
117
            "Something went wrong: Internal Server Error"
124
            "Something went wrong: Error: Internal Server Error"
118
        );
125
        );
119
126
120
        // Submit the form, success!
127
        // Submit the form, success!
Lines 183-189 describe("Package CRUD operations", () => { Link Here
183
        });
190
        });
184
        cy.get("#packages_add").contains("Submit").click();
191
        cy.get("#packages_add").contains("Submit").click();
185
        cy.get("main div[class='dialog alert']").contains(
192
        cy.get("main div[class='dialog alert']").contains(
186
            "Something went wrong: Internal Server Error"
193
            "Something went wrong: Error: Internal Server Error"
187
        );
194
        );
188
195
189
        // Submit the form, success!
196
        // Submit the form, success!
Lines 298-304 describe("Package CRUD operations", () => { Link Here
298
        });
305
        });
299
        cy.contains("Yes, delete").click();
306
        cy.contains("Yes, delete").click();
300
        cy.get("main div[class='dialog alert']").contains(
307
        cy.get("main div[class='dialog alert']").contains(
301
            "Something went wrong: Internal Server Error"
308
            "Something went wrong: Error: Internal Server Error"
302
        );
309
        );
303
310
304
        // Submit the form, success!
311
        // Submit the form, success!
(-)a/t/cypress/integration/Titles_spec.ts (-5 / +11 lines)
Lines 134-140 describe("Title CRUD operations", () => { Link Here
134
        );
134
        );
135
135
136
        // GET titles returns empty list
136
        // GET titles returns empty list
137
        cy.intercept("GET", "/api/v1/erm/eholdings/local/titles*", []);
137
        cy.intercept("GET", "/api/v1/erm/eholdings/local/titles*", {
138
            statusCode: 200,
139
            body: [],
140
            headers: {
141
                "X-Base-Total-Count": "0",
142
                "X-Total-Count": "0",
143
            },
144
        });
138
        cy.visit("/cgi-bin/koha/erm/eholdings/local/titles");
145
        cy.visit("/cgi-bin/koha/erm/eholdings/local/titles");
139
        cy.get("#titles_list").contains("There are no titles defined");
146
        cy.get("#titles_list").contains("There are no titles defined");
140
147
Lines 223-229 describe("Title CRUD operations", () => { Link Here
223
        });
230
        });
224
        cy.get("#titles_add").contains("Submit").click();
231
        cy.get("#titles_add").contains("Submit").click();
225
        cy.get("main div[class='dialog alert']").contains(
232
        cy.get("main div[class='dialog alert']").contains(
226
            "Something went wrong: Internal Server Error"
233
            "Something went wrong: Error: Internal Server Error"
227
        );
234
        );
228
235
229
        // Submit the form, success!
236
        // Submit the form, success!
Lines 314-320 describe("Title CRUD operations", () => { Link Here
314
        });
321
        });
315
        cy.get("#titles_add").contains("Submit").click();
322
        cy.get("#titles_add").contains("Submit").click();
316
        cy.get("main div[class='dialog alert']").contains(
323
        cy.get("main div[class='dialog alert']").contains(
317
            "Something went wrong: Internal Server Error"
324
            "Something went wrong: Error: Internal Server Error"
318
        );
325
        );
319
326
320
        // Submit the form, success!
327
        // Submit the form, success!
Lines 431-437 describe("Title CRUD operations", () => { Link Here
431
        });
438
        });
432
        cy.contains("Yes, delete").click();
439
        cy.contains("Yes, delete").click();
433
        cy.get("main div[class='dialog alert']").contains(
440
        cy.get("main div[class='dialog alert']").contains(
434
            "Something went wrong: Internal Server Error"
441
            "Something went wrong: Error: Internal Server Error"
435
        );
442
        );
436
443
437
        // Submit the form, success!
444
        // Submit the form, success!
438
- 

Return to bug 32898