Koha/koha-tmpl/intranet-tmpl/prog/js/vue/routes.js
Jonathan Druart 94c67c439e
Bug 32030: Create eHolding titles from a list
Add the ability to create new titles and attach them to a package.
The MARC to KBART2 mapping is the following (based on
https://github.com/adambuttrick/marc_to_kbart/blob/master/convert.py):

publication_title = biblio.title
print_identifier  = 020$a||020$z||022$a||022$y
online_identifier = 020$a||020$z||022$a||022$y
date_first_issue_online = 866$a (before '-')
date_last_issue_online  = 866$a (after '-')
num_first_vol_online    = 863$a (before '-')
num_last_vol_online     = 863$a (after '-')
num_first_issue_online  = ?
num_last_issue_online   = ?
title_url = 856$u
first_author = biblio.first_author
embargo_info = ?
coverage_depth = title_url ? 'fulltext' : 'print'
notes = $852$z
publisher_name = 260$b
publication_type = ?
date_monograph_published_print = ?
date_monograph_published_online = ?
monograph_volume = ?
monograph_edition = ?
first_editor = ?
parent_publication_title_id = ?
preceeding_publication_title_id = ?
access_type = ?

Note that title is not created (and so the resource) if a title from
this package already has a link to this bibliographic record.
Is that correct, or should we create another resource?

Should the import screen also have "start date" and "end date" to set for the
resource?

QA note: Ideally we would like to fetch the list from the REST API but the routes
are not there yet.

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>
2022-11-08 09:44:20 -03:00

562 lines
24 KiB
JavaScript

import { h } from "vue";
import { RouterView } from "vue-router";
import ERMHome from "./components/ERM/ERMHome.vue";
import AgreementsList from "./components/ERM/AgreementsList.vue";
import AgreementsShow from "./components/ERM/AgreementsShow.vue";
import AgreementsFormAdd from "./components/ERM/AgreementsFormAdd.vue";
import AgreementsFormConfirmDelete from "./components/ERM/AgreementsFormConfirmDelete.vue";
import EHoldingsMain from "./components/ERM/EHoldingsMain.vue";
import EHoldingsLocalHome from "./components/ERM/EHoldingsLocalHome.vue";
import EHoldingsLocalPackagesFormAdd from "./components/ERM/EHoldingsLocalPackagesFormAdd.vue";
import EHoldingsLocalTitlesFormConfirmDelete from "./components/ERM/EHoldingsLocalTitlesFormConfirmDelete.vue";
import EHoldingsLocalTitlesFormAdd from "./components/ERM/EHoldingsLocalTitlesFormAdd.vue";
import EHoldingsLocalTitlesFormImport from "./components/ERM/EHoldingsLocalTitlesFormImport.vue";
import EHoldingsLocalPackagesList from "./components/ERM/EHoldingsLocalPackagesList.vue";
import EHoldingsLocalPackagesShow from "./components/ERM/EHoldingsLocalPackagesShow.vue";
import EHoldingsLocalPackagesFormConfirmDelete from "./components/ERM/EHoldingsLocalPackagesFormConfirmDelete.vue";
import EHoldingsLocalResourcesShow from "./components/ERM/EHoldingsLocalResourcesShow.vue";
import EHoldingsLocalTitlesList from "./components/ERM/EHoldingsLocalTitlesList.vue";
import EHoldingsLocalTitlesShow from "./components/ERM/EHoldingsLocalTitlesShow.vue";
import EHoldingsEBSCOHome from "./components/ERM/EHoldingsEBSCOHome.vue";
import EHoldingsEBSCOPackagesList from "./components/ERM/EHoldingsEBSCOPackagesList.vue";
import EHoldingsEBSCOPackagesShow from "./components/ERM/EHoldingsEBSCOPackagesShow.vue";
import EHoldingsEBSCOResourcesShow from "./components/ERM/EHoldingsEBSCOResourcesShow.vue";
import EHoldingsEBSCOTitlesList from "./components/ERM/EHoldingsEBSCOTitlesList.vue";
import EHoldingsEBSCOTitlesShow from "./components/ERM/EHoldingsEBSCOTitlesShow.vue";
import LicensesList from "./components/ERM/LicensesList.vue";
import LicensesShow from "./components/ERM/LicensesShow.vue";
import LicensesFormAdd from "./components/ERM/LicensesFormAdd.vue";
import LicensesFormConfirmDelete from "./components/ERM/LicensesFormConfirmDelete.vue";
const breadcrumbs = {
home: {
text: "Home", // $t("Home")
path: "/cgi-bin/koha/mainpage.pl",
},
erm_home: {
text: "E-Resource management", // $t("E-Resource management")
path: "/cgi-bin/koha/erm/erm.pl",
},
agreements: {
text: "Agreements", // $t("Agreements")
path: "/cgi-bin/koha/erm/agreements",
},
eholdings: {
home: {
text: "eHoldings", // $t("eHoldings")
path: "/cgi-bin/koha/erm/eholdings",
},
local: {
home: {
text: "Local", // $t("Local")
path: "/cgi-bin/koha/erm/eholdings/local",
},
titles: {
text: "Titles", // $t("Titles")
path: "/cgi-bin/koha/erm/eholdings/local/titles",
},
packages: {
text: "Packages", // $t("Packages")
path: "/cgi-bin/koha/erm/eholdings/local/packages",
},
},
ebsco: {
home: {
text: "EBSCO", // $t("EBSCO")
path: "/cgi-bin/koha/erm/eholdings/ebsco",
},
titles: {
text: "Titles", // $t("Titles")
path: "/cgi-bin/koha/erm/eholdings/ebsco/titles",
},
packages: {
text: "Packages", // $t("Packages")
path: "/cgi-bin/koha/erm/eholdings/ebsco/packages",
},
},
},
licenses: {
text: "Licenses", // $t("Licenses")
path: "/cgi-bin/koha/erm/licenses",
},
};
const breadcrumb_paths = {
agreements: [
breadcrumbs.home,
breadcrumbs.erm_home,
breadcrumbs.agreements,
],
eholdings: [
breadcrumbs.home,
breadcrumbs.erm_home,
breadcrumbs.eholdings.home,
],
eholdings_local: [
breadcrumbs.home,
breadcrumbs.erm_home,
breadcrumbs.eholdings.home,
breadcrumbs.eholdings.local.home,
],
eholdings_ebsco: [
breadcrumbs.home,
breadcrumbs.erm_home,
breadcrumbs.eholdings.home,
breadcrumbs.eholdings.ebsco.home,
],
licenses: [breadcrumbs.home, breadcrumbs.erm_home, breadcrumbs.licenses],
};
function build_breadcrumb(parent_breadcrumb, current) {
let breadcrumb = parent_breadcrumb.flat(Infinity);
if (current) {
breadcrumb.push({
text: current,
});
}
return breadcrumb;
}
export const routes = [
{
path: "/cgi-bin/koha/mainpage.pl",
beforeEnter(to, from, next) {
window.location.href = "/cgi-bin/koha/mainpage.pl";
},
},
{
path: "/cgi-bin/koha/admin/background_jobs/:id",
beforeEnter(to, from, next) {
window.location.href =
"/cgi-bin/koha/admin/background_jobs.pl?op=view&id=" +
to.params.id;
},
},
{
path: "/cgi-bin/koha/erm/erm.pl",
component: ERMHome,
meta: {
breadcrumb: () => [breadcrumbs.home, breadcrumbs.erm_home],
},
},
{
path: "/cgi-bin/koha/erm/agreements",
component: { render: () => h(RouterView) },
children: [
{
path: "",
component: AgreementsList,
meta: {
breadcrumb: () => breadcrumb_paths.agreements,
},
},
{
path: ":agreement_id",
component: AgreementsShow,
meta: {
breadcrumb: () =>
build_breadcrumb(
breadcrumb_paths.agreements,
"Show agreement" // $t("Show agreement")
),
},
},
{
path: "delete/:agreement_id",
component: AgreementsFormConfirmDelete,
meta: {
breadcrumb: () =>
build_breadcrumb(
breadcrumb_paths.agreements,
"Delete agreement" // $t("Delete agreement")
),
},
},
{
path: "add",
component: AgreementsFormAdd,
meta: {
breadcrumb: () =>
build_breadcrumb(
breadcrumb_paths.agreements,
"Add agreement" // $t("Add agreement")
),
},
},
{
path: "edit/:agreement_id",
component: AgreementsFormAdd,
meta: {
breadcrumb: () =>
build_breadcrumb(
breadcrumb_paths.agreements,
"Edit agreement" // $t("Edit agreement")
),
},
},
],
},
{
path: "/cgi-bin/koha/erm/eholdings",
component: { render: () => h(RouterView) },
meta: {
breadcrumb: () => breadcrumb_paths.eholdings,
},
children: [
{
path: "",
component: EHoldingsMain,
meta: {
breadcrumb: () => breadcrumb_paths.eholdings,
},
},
{
path: "local",
component: { render: () => h(RouterView) },
children: [
{
path: "",
component: EHoldingsLocalHome,
meta: {
breadcrumb: () => breadcrumb_paths.eholdings_local,
},
},
{
path: "packages",
component: { render: () => h(RouterView) },
children: [
{
path: "",
component: EHoldingsLocalPackagesList,
meta: {
breadcrumb: () =>
build_breadcrumb([
breadcrumb_paths.eholdings_local,
breadcrumbs.eholdings.local
.packages,
]),
},
},
{
path: ":package_id",
component: EHoldingsLocalPackagesShow,
meta: {
breadcrumb: () =>
build_breadcrumb(
[
breadcrumb_paths.eholdings_local,
breadcrumbs.eholdings.local
.packages,
],
"Show package" // $t("Show package")
),
},
},
{
path: "delete/:package_id",
component:
EHoldingsLocalPackagesFormConfirmDelete,
meta: {
breadcrumb: () =>
build_breadcrumb(
[
breadcrumb_paths.eholdings_local,
breadcrumbs.eholdings.local
.packages,
],
"Delete package" // $t("Delete package")
),
},
},
{
path: "add",
component: EHoldingsLocalPackagesFormAdd,
meta: {
breadcrumb: () =>
build_breadcrumb(
[
breadcrumb_paths.eholdings_local,
breadcrumbs.eholdings.local
.packages,
],
"Add package" // $t("Add package")
),
},
},
{
path: "edit/:package_id",
component: EHoldingsLocalPackagesFormAdd,
meta: {
breadcrumb: () =>
build_breadcrumb(
[
breadcrumb_paths.eholdings_local,
breadcrumbs.eholdings.local
.packages,
],
"Edit package" // $t("Edit package")
),
},
},
],
},
{
path: "titles",
component: { render: () => h(RouterView) },
children: [
{
path: "",
component: EHoldingsLocalTitlesList,
meta: {
breadcrumb: () =>
build_breadcrumb([
breadcrumb_paths.eholdings_local,
breadcrumbs.eholdings.local.titles,
]),
},
},
{
path: ":title_id",
component: EHoldingsLocalTitlesShow,
meta: {
breadcrumb: () =>
build_breadcrumb(
[
breadcrumb_paths.eholdings_local,
breadcrumbs.eholdings.local
.titles,
],
"Show title" // $t("Show title")
),
},
},
{
path: "delete/:title_id",
component:
EHoldingsLocalTitlesFormConfirmDelete,
meta: {
breadcrumb: () =>
build_breadcrumb(
[
breadcrumb_paths.eholdings_local,
breadcrumbs.eholdings.local
.titles,
],
"Delete title" // $t("Delete title")
),
},
},
{
path: "add",
component: EHoldingsLocalTitlesFormAdd,
meta: {
breadcrumb: () =>
build_breadcrumb(
[
breadcrumb_paths.eholdings_local,
breadcrumbs.eholdings.local
.titles,
],
"Add title" // $t("Add title")
),
},
},
{
path: "edit/:title_id",
component: EHoldingsLocalTitlesFormAdd,
meta: {
breadcrumb: () =>
build_breadcrumb(
[
breadcrumb_paths.eholdings_local,
breadcrumbs.eholdings.local
.titles,
],
"Edit title" // $t("Edit title")
),
},
},
{
path: "import",
component: EHoldingsLocalTitlesFormImport,
meta: {
breadcrumb: () =>
build_breadcrumb(
[
breadcrumb_paths.eholdings_local,
breadcrumbs.eholdings.local
.titles,
],
"Import from a list" // $t("Import from a list")
),
},
},
],
},
{
path: "resources/:resource_id",
component: EHoldingsLocalResourcesShow,
meta: {
breadcrumb: () =>
build_breadcrumb(
[
breadcrumb_paths.eholdings_local,
breadcrumbs.eholdings.local.titles,
],
"Resource" // $t("Resource")
),
},
},
],
},
{
path: "ebsco",
component: { render: () => h(RouterView) },
children: [
{
path: "",
component: EHoldingsEBSCOHome,
meta: {
breadcrumb: () => breadcrumb_paths.eholdings_ebsco,
},
},
{
path: "packages",
component: { render: () => h(RouterView) },
children: [
{
path: "",
component: EHoldingsEBSCOPackagesList,
meta: {
breadcrumb: () =>
build_breadcrumb([
breadcrumb_paths.eholdings_ebsco,
breadcrumbs.eholdings.ebsco
.packages,
]),
},
},
{
path: ":package_id",
component: EHoldingsEBSCOPackagesShow,
meta: {
breadcrumb: () =>
build_breadcrumb(
[
breadcrumb_paths.eholdings_ebsco,
breadcrumbs.eholdings.ebsco
.packages,
],
"Show package" // $t("Show package")
),
},
},
],
},
{
path: "titles",
component: { render: () => h(RouterView) },
children: [
{
path: "",
component: EHoldingsEBSCOTitlesList,
meta: {
breadcrumb: () =>
build_breadcrumb([
breadcrumb_paths.eholdings_ebsco,
breadcrumbs.eholdings.ebsco.titles,
]),
},
},
{
path: ":title_id",
component: EHoldingsEBSCOTitlesShow,
meta: {
breadcrumb: () =>
build_breadcrumb(
[
breadcrumb_paths.eholdings_ebsco,
breadcrumbs.eholdings.ebsco
.titles,
],
"Show title" // $t("Show title")
),
},
},
],
},
{
path: "resources/:resource_id",
component: EHoldingsEBSCOResourcesShow,
meta: {
breadcrumb: () =>
build_breadcrumb(
[
breadcrumb_paths.eholdings_ebsco,
breadcrumbs.eholdings.ebsco.titles,
],
"Resource" // $t("Resource")
),
},
},
],
},
],
},
{
path: "/cgi-bin/koha/erm/licenses",
component: { render: () => h(RouterView) },
children: [
{
path: "",
component: LicensesList,
meta: {
breadcrumb: () => breadcrumb_paths.licenses,
},
},
{
path: ":license_id",
component: LicensesShow,
meta: {
breadcrumb: () =>
build_breadcrumb(
breadcrumb_paths.licenses,
"Show license" // $t("Show license")
),
},
},
{
path: "delete/:license_id",
component: LicensesFormConfirmDelete,
meta: {
breadcrumb: () =>
build_breadcrumb(
breadcrumb_paths.licenses,
"Delete license" // $t("Delete license")
),
},
},
{
path: "add",
component: LicensesFormAdd,
meta: {
breadcrumb: () =>
build_breadcrumb(
breadcrumb_paths.licenses,
"Add license" // $t("Add license")
),
},
},
{
path: "edit/:license_id",
component: LicensesFormAdd,
meta: {
breadcrumb: () =>
build_breadcrumb(
breadcrumb_paths.licenses,
"Edit license" // $t("Edit license")
),
},
},
],
},
];