Bug 32030: ERM - link licenses to an agreement
authorJonathan Druart <jonathan.druart@bugs.koha-community.org>
Wed, 4 May 2022 14:13:14 +0000 (16:13 +0200)
committerTomas Cohen Arazi <tomascohen@theke.io>
Tue, 8 Nov 2022 12:43:45 +0000 (09:43 -0300)
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>
18 files changed:
Koha/ERM/Agreement.pm
Koha/ERM/Agreement/License.pm
Koha/REST/V1/ERM/Agreements.pm
api/v1/swagger/definitions/erm_agreement.yaml
api/v1/swagger/definitions/erm_agreement_license.yaml [new file with mode: 0644]
api/v1/swagger/definitions/erm_license_agreement.yaml
api/v1/swagger/paths/erm_agreements.yaml
koha-tmpl/intranet-tmpl/prog/en/modules/erm/erm.tt
koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/AgreementLicenses.vue [new file with mode: 0644]
koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/AgreementUserRoles.vue
koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/Agreements.vue
koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/AgreementsFormAdd.vue
koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/AgreementsList.vue
koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/AgreementsShow.vue
koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/Licenses.vue
koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/LicensesFormAdd.vue
koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/LicensesList.vue
koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/LicensesShow.vue

index 5ca06e3..1e4c073 100644 (file)
@@ -23,6 +23,7 @@ use base qw(Koha::Object);
 
 use Koha::ERM::Agreement::Periods;
 use Koha::ERM::Agreement::UserRoles;
+use Koha::ERM::Agreement::Licenses;
 
 =head1 NAME
 
@@ -85,6 +86,31 @@ sub user_roles {
     return Koha::ERM::Agreement::UserRoles->_new_from_dbic($user_roles_rs);
 }
 
+=head3 agreement_licenses
+
+Returns the agreement_licenses for this agreement
+
+=cut
+
+sub agreement_licenses {
+    my ( $self, $agreement_licenses ) = @_;
+
+    if ( $agreement_licenses ) {
+        my $schema = $self->_result->result_source->schema;
+        $schema->txn_do(
+            sub {
+                $self->agreement_licenses->delete;
+
+                for my $agreement_license (@$agreement_licenses) {
+                    $self->_result->add_to_erm_agreement_licenses($agreement_license);
+                }
+            }
+        );
+    }
+    my $agreement_licenses_rs = $self->_result->erm_agreement_licenses;
+    return Koha::ERM::Agreement::Licenses->_new_from_dbic($agreement_licenses_rs);
+}
+
 =head2 Internal methods
 
 =head3 _type
index 9f34ae4..35ae9c3 100644 (file)
@@ -19,8 +19,8 @@ use Modern::Perl;
 
 use Koha::Database;
 
-use Koha::Agreements;
-use Koha::Licenses;
+use Koha::ERM::Agreements;
+use Koha::ERM::Licenses;
 
 use base qw(Koha::Object);
 
index 999881f..09110f5 100644 (file)
@@ -93,10 +93,12 @@ sub add {
 
                 my $periods    = delete $body->{periods} // [];
                 my $user_roles = delete $body->{user_roles} // [];
+                my $agreement_licenses = delete $body->{agreement_licenses} // [];
 
                 my $agreement = Koha::ERM::Agreement->new_from_api($body)->store;
                 $agreement->periods($periods);
                 $agreement->user_roles($user_roles);
+                $agreement->agreement_licenses($agreement_licenses);
 
                 $c->res->headers->location($c->req->url->to_string . '/' . $agreement->agreement_id);
                 return $c->render(
@@ -170,10 +172,12 @@ sub update {
 
                 my $periods    = delete $body->{periods} // [];
                 my $user_roles = delete $body->{user_roles} // [];
+                my $agreement_licenses = delete $body->{agreement_licenses} // [];
 
                 $agreement->set_from_api($body)->store;
                 $agreement->periods($periods);
                 $agreement->user_roles($user_roles);
+                $agreement->agreement_licenses($agreement_licenses);
 
                 $c->res->headers->location($c->req->url->to_string . '/' . $agreement->agreement_id);
                 return $c->render(
index 7451901..2c23a49 100644 (file)
@@ -49,6 +49,12 @@ properties:
     description: role for users
     items:
       $ref: erm_agreement_user_role.yaml
+  agreement_licenses:
+    type: array
+    description: agreement licenses
+    items:
+      $ref: erm_agreement_license.yaml
+
 additionalProperties: false
 required:
   - agreement_id
diff --git a/api/v1/swagger/definitions/erm_agreement_license.yaml b/api/v1/swagger/definitions/erm_agreement_license.yaml
new file mode 100644 (file)
index 0000000..69ca722
--- /dev/null
@@ -0,0 +1,30 @@
+---
+type: object
+properties:
+  agreement_license_id:
+    type: integer
+    description: Internal agreement license identifier
+  agreement_id:
+    type: integer
+    description: Internal agreement identifier
+  license_id:
+    type: integer
+    description: Internal license identifier
+  status:
+    type: string
+  physical_location:
+    type:
+      - string
+      - "null"
+  notes:
+    type:
+      - string
+      - "null"
+  uri:
+    type:
+      - string
+      - "null"
+additionalProperties: false
+required:
+  - license_id
+  - status
index 0db0606..8c2c31b 100644 (file)
       - periods
       - user_roles
       - user_roles.patron
+      - agreement_licenses
+      - agreement_licenses.license
   put:
     x-mojo-to: ERM::Agreements#update
     operationId: updateErmAgreements
     x-koha-embed:
       - periods
       - user_roles
+      - agreement_licenses
   delete:
     x-mojo-to: ERM::Agreements#delete
     operationId: deleteErmAgreements
index 2960f8d..f6f75b2 100644 (file)
@@ -60,6 +60,9 @@
             licenses_table_url += 'q='+ encodeURIComponent(JSON.stringify(license_name_filter));
         [% END %]
 
+        const agreement_license_statuses = [% To.json(AuthorisedValues.Get('ERM_AGREEMENT_LICENSE_STATUS')) | $raw %];
+        const agreement_license_location = [% To.json(AuthorisedValues.Get('ERM_AGREEMENT_LICENSE_LOCATION')) | $raw %];
+
     </script>
 
     [% Asset.js("js/vue/dist/main.js") | $raw %]
diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/AgreementLicenses.vue b/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/AgreementLicenses.vue
new file mode 100644 (file)
index 0000000..70a7d50
--- /dev/null
@@ -0,0 +1,147 @@
+<template>
+    <fieldset class="rows" id="agreement_licenses">
+        <legend>Licenses</legend>
+        <fieldset
+            class="rows"
+            v-for="(agreement_license, counter) in agreement_licenses"
+            v-bind:key="counter"
+        >
+            <legend>
+                Agreement license {{ counter + 1 }}
+                <a href="#" @click.prevent="deleteLicense(counter)"
+                    ><i class="fa fa-trash"></i> Remove this license</a
+                >
+            </legend>
+            <ol>
+                <li>
+                    <label :for="`license_id_${counter}`">License: </label>
+                    <select
+                        :id="`license_id_${counter}`"
+                        v-model="agreement_license.license_id"
+                        required
+                    >
+                        <option value=""></option>
+                        <option
+                            v-for="license in licenses"
+                            :key="license.license_id"
+                            :value="license.license_id"
+                            :selected="
+                                license.license_id ==
+                                agreement_license.license_id
+                                    ? true
+                                    : false
+                            "
+                        >
+                            {{ license.name }}
+                        </option>
+                    </select>
+                    <span class="required">Required</span>
+                </li>
+                <li>
+                    <label :for="`license_status_${counter}`">Status: </label>
+                    <select v-model="agreement_license.status" required>
+                        <option value=""></option>
+                        <option
+                            v-for="r in av_agreement_license_statuses"
+                            :key="r.authorised_values"
+                            :value="r.authorised_value"
+                            :selected="
+                                r.authorised_value == agreement_license.status
+                                    ? true
+                                    : false
+                            "
+                        >
+                            {{ r.lib }}
+                        </option>
+                    </select>
+                    <span class="required">Required</span>
+                </li>
+                <li>
+                    <label :for="`license_location_${counter}`"
+                        >Physical location:
+                    </label>
+                    <select v-model="agreement_license.physical_location">
+                        <option value=""></option>
+                        <option
+                            v-for="r in av_agreement_license_location"
+                            :key="r.authorised_values"
+                            :value="r.authorised_value"
+                            :selected="
+                                r.authorised_value ==
+                                agreement_license.physical_location
+                                    ? true
+                                    : false
+                            "
+                        >
+                            {{ r.lib }}
+                        </option>
+                    </select>
+                </li>
+                <li>
+                    <label :for="`license_notes_${counter}`">Notes:</label>
+                    <input
+                        :id="`license_notes_${counter}`"
+                        v-model="agreement_license.notes"
+                        placeholder="Notes"
+                    />
+                </li>
+                <li>
+                    <label :for="`license_uri_${counter}`">URI:</label>
+                    <input
+                        :id="`license_uri_${counter}`"
+                        v-model="agreement_license.uri"
+                        placeholder="URI"
+                    />
+                </li>
+            </ol>
+        </fieldset>
+        <a class="btn btn-default" @click="addLicense"
+            ><font-awesome-icon icon="plus" /> Add new license</a
+        >
+    </fieldset>
+</template>
+
+<script>
+export default {
+    name: 'AgreementLicenses',
+    data() {
+        return {
+            licenses: [],
+        }
+    },
+    props: {
+        av_agreement_license_statuses: Array,
+        av_agreement_license_location: Array,
+        agreement_licenses: Array,
+    },
+    beforeCreate() {
+        // FIXME it's not called on setup, but setup() does not have 'this'.
+        const apiUrl = "/api/v1/erm/licenses"
+
+        fetch(apiUrl)
+            .then((res) => res.json())
+            .then(
+                (result) => {
+                    this.licenses = result
+                },
+                (error) => {
+                    this.$emit("set-error", error)
+                }
+            )
+    },
+    methods: {
+        addLicense() {
+            this.agreement_licenses.push({
+                license_id: null,
+                status: null,
+                physical_location: null,
+                notes: '',
+                uri: '',
+            })
+        },
+        deleteLicense(counter) {
+            this.agreement_licenses.splice(counter, 1)
+        },
+    },
+}
+</script>
index 4c8759a..7257eeb 100644 (file)
@@ -30,7 +30,7 @@
                     <select v-model="user_role.role" required>
                         <option value=""></option>
                         <option
-                            v-for="r in av_user_roles"
+                            v-for="r in av_agreement_user_roles"
                             :key="r.authorised_values"
                             :value="r.authorised_value"
                             :selected="
@@ -61,7 +61,7 @@
 export default {
     name: 'AgreementUserRoles',
     props: {
-        av_user_roles: Array,
+        av_agreement_user_roles: Array,
         user_roles: Array,
     },
     beforeUpdate() {
index f5ca28b..37615a5 100644 (file)
@@ -5,9 +5,9 @@
     <List
         v-if="op == 'list'"
         :vendors="vendors"
-        :av_statuses="statuses"
-        :av_closure_reasons="closure_reasons"
-        :av_renewal_priorities="renewal_priorities"
+        :av_agreement_statuses="agreement_statuses"
+        :av_agreement_closure_reasons="agreement_closure_reasons"
+        :av_agreement_renewal_priorities="agreement_renewal_priorities"
         @set-current-agreement-id="setCurrentAgreementID"
         @switch-view="switchView"
         @set-error="setError"
         v-if="op == 'show'"
         :agreement_id="agreement_id"
         :vendors="vendors"
-        :av_statuses="statuses"
-        :av_closure_reasons="closure_reasons"
-        :av_renewal_priorities="renewal_priorities"
-        :av_user_roles="user_roles"
+        :av_agreement_statuses="agreement_statuses"
+        :av_agreement_closure_reasons="agreement_closure_reasons"
+        :av_agreement_renewal_priorities="agreement_renewal_priorities"
+        :av_agreement_user_roles="agreement_user_roles"
+        :av_agreement_license_statuses="agreement_license_statuses"
+        :av_agreement_license_location="agreement_license_location"
         @switch-view="switchView"
         @set-error="setError"
     />
         v-if="op == 'add-form'"
         :agreement_id="agreement_id"
         :vendors="vendors"
-        :av_statuses="statuses"
-        :av_closure_reasons="closure_reasons"
-        :av_renewal_priorities="renewal_priorities"
-        :av_user_roles="user_roles"
+        :av_agreement_statuses="agreement_statuses"
+        :av_agreement_closure_reasons="agreement_closure_reasons"
+        :av_agreement_renewal_priorities="agreement_renewal_priorities"
+        :av_agreement_user_roles="agreement_user_roles"
+        :av_agreement_license_statuses="agreement_license_statuses"
+        :av_agreement_license_location="agreement_license_location"
         @agreement-created="agreementCreated"
         @agreement-updated="agreementUpdated"
         @switch-view="switchView"
@@ -62,10 +66,12 @@ export default {
             message: null,
             error: null,
             vendors: [],
-            statuses: agreement_statuses,
-            closure_reasons: agreement_closure_reasons,
-            renewal_priorities: agreement_renewal_priorities,
-            user_roles: agreement_user_roles,
+            agreement_statuses,
+            agreement_closure_reasons,
+            agreement_renewal_priorities,
+            agreement_user_roles,
+            agreement_license_statuses,
+            agreement_license_location,
         }
     },
     beforeCreate() {
index a1d2e5a..cdfc2a2 100644 (file)
@@ -60,7 +60,7 @@
                         >
                             <option value=""></option>
                             <option
-                                v-for="status in av_statuses"
+                                v-for="status in av_agreement_statuses"
                                 :key="status.authorised_values"
                                 :value="status.authorised_value"
                                 :selected="
@@ -87,7 +87,7 @@
                         >
                             <option value=""></option>
                             <option
-                                v-for="r in av_closure_reasons"
+                                v-for="r in av_agreement_closure_reasons"
                                 :key="r.authorised_values"
                                 :value="r.authorised_value"
                                 :selected="
                         <select v-model="agreement.renewal_priority">
                             <option value=""></option>
                             <option
-                                v-for="p in av_renewal_priorities"
+                                v-for="p in av_agreement_renewal_priorities"
                                 :key="p.authorised_values"
                                 :value="p.authorised_value"
                                 :selected="
                     <AgreementPeriods :periods="agreement.periods" />
                     <AgreementUserRoles
                         :user_roles="agreement.user_roles"
-                        :av_user_roles="av_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" />
-                <a role="button" class="cancel" @click="$emit('switch-view', 'list')"
+                <a
+                    role="button"
+                    class="cancel"
+                    @click="$emit('switch-view', 'list')"
                     >Cancel</a
                 >
             </fieldset>
 <script>
 import AgreementPeriods from './AgreementPeriods.vue'
 import AgreementUserRoles from './AgreementUserRoles.vue'
+import AgreementLicenses from './AgreementLicenses.vue'
 
 export default {
     data() {
@@ -194,6 +205,7 @@ export default {
                 license_info: '',
                 periods: [],
                 user_roles: [],
+                agreement_licenses: [],
             }
         }
     },
@@ -203,7 +215,7 @@ export default {
 
         fetch(apiUrl, {
             headers: {
-                'x-koha-embed': 'periods,user_roles,user_roles.patron'
+                'x-koha-embed': 'periods,user_roles,user_roles.patron,agreement_licenses,agreement_licenses.license'
             }
         })
             .then(res => res.json())
@@ -239,6 +251,8 @@ export default {
 
             agreement.user_roles = agreement.user_roles.map(({ patron, patron_str, ...keepAttrs }) => keepAttrs)
 
+            agreement.agreement_licenses = agreement.agreement_licenses.map(({ license, agreement_id, agreement_license_id, ...keepAttrs }) => keepAttrs)
+
             const options = {
                 method: method,
                 body: JSON.stringify(agreement),
@@ -272,14 +286,17 @@ export default {
     props: {
         agreement_id: Number,
         vendors: Array,
-        av_statuses: Array,
-        av_closure_reasons: Array,
-        av_renewal_priorities: Array,
-        av_user_roles: Array,
+        av_agreement_statuses: Array,
+        av_agreement_closure_reasons: Array,
+        av_agreement_renewal_priorities: Array,
+        av_agreement_user_roles: Array,
+        av_agreement_license_statuses: Array,
+        av_agreement_license_location: Array,
     },
     components: {
         AgreementPeriods,
-        AgreementUserRoles
+        AgreementUserRoles,
+        AgreementLicenses,
     },
     name: "AgreementsFormAdd",
 }
index 1ceb85b..d542a8a 100644 (file)
@@ -33,7 +33,7 @@ export default {
         let show_agreement = this.show_agreement
         let edit_agreement = this.edit_agreement
         let delete_agreement = this.delete_agreement
-        window['agreements_av_vendors'] = this.vendors.map(e => {
+        window['vendors'] = this.vendors.map(e => {
             e['_id'] = e['id']
             e['_str'] = e['name']
             return e
@@ -42,34 +42,34 @@ export default {
             map[e.id] = e
             return map
         }, {})
-        window['agreements_av_statuses'] = this.av_statuses.map(e => {
+        window['av_agreement_statuses'] = this.av_agreement_statuses.map(e => {
             e['_id'] = e['authorised_value']
             e['_str'] = e['lib']
             return e
         })
-        let statuses_map = this.av_statuses.reduce((map, e) => {
+        let av_agreement_statuses_map = this.av_agreement_statuses.reduce((map, e) => {
             map[e.authorised_value] = e
             return map
         }, {})
-        window['agreements_av_closure_reasons'] = this.av_closure_reasons.map(e => {
+        window['av_agreement_closure_reasons'] = this.av_agreement_closure_reasons.map(e => {
             e['_id'] = e['authorised_value']
             e['_str'] = e['lib']
             return e
         })
-        let closure_reasons_map = this.av_closure_reasons.reduce((map, e) => {
+        let av_agreement_closure_reasons_map = this.av_agreement_closure_reasons.reduce((map, e) => {
             map[e.authorised_value] = e
             return map
         }, {})
-        window['agreements_av_renewal_priorities'] = this.av_renewal_priorities.map(e => {
+        window['av_agreement_renewal_priorities'] = this.av_agreement_renewal_priorities.map(e => {
             e['_id'] = e['authorised_value']
             e['_str'] = e['lib']
             return e
         })
-        let renewal_priorities_map = this.av_renewal_priorities.reduce((map, e) => {
+        let av_agreement_renewal_priorities_map = this.av_agreement_renewal_priorities.reduce((map, e) => {
             map[e.authorised_value] = e
             return map
         }, {})
-        window['agreements_av_is_perpetual'] = [{ _id: 0, _str: _('No') }, { _id: 1, _str: _("Yes") }]
+        window['av_agreement_is_perpetual'] = [{ _id: 0, _str: _('No') }, { _id: 1, _str: _("Yes") }]
 
         $('#agreement_list').kohaTable({
             "ajax": {
@@ -114,7 +114,7 @@ export default {
                     "searchable": true,
                     "orderable": true,
                     "render": function (data, type, row, meta) {
-                        return escape_str(statuses_map[row.status].lib)
+                        return escape_str(av_agreement_statuses_map[row.status].lib)
                     }
                 },
                 {
@@ -123,7 +123,7 @@ export default {
                     "searchable": true,
                     "orderable": true,
                     "render": function (data, type, row, meta) {
-                        return row.closure_reason != undefined && row.closure_reason != "" ? escape_str(closure_reasons_map[row.closure_reason].lib) : ""
+                        return row.closure_reason != undefined && row.closure_reason != "" ? escape_str(av_agreement_closure_reasons_map[row.closure_reason].lib) : ""
                     }
                 },
                 {
@@ -141,7 +141,7 @@ export default {
                     "searchable": true,
                     "orderable": true,
                     "render": function (data, type, row, meta) {
-                        return row.renewal_priority != undefined && row.renewal_priority != "" ? escape_str(renewal_priorities_map[row.renewal_priority].lib) : ""
+                        return row.renewal_priority != undefined && row.renewal_priority != "" ? escape_str(av_agreement_renewal_priorities_map[row.renewal_priority].lib) : ""
                     }
                 },
                 {
@@ -174,8 +174,9 @@ export default {
                     render(n, e)
                 })
 
-                $.each($(this).find("tr td:eq(0)"), function (index, e) {
+                $.each($(this).find("tbody tr td:first-child"), function (index, e) {
                     let row = api.row(index).data()
+                    if (!row) return // Happen if the table is empty
                     let n = createVNode("a", {
                         role: "button",
                         onClick: () => {
@@ -189,11 +190,11 @@ export default {
             },
             preDrawCallback: function (settings) {
                 var table_id = settings.nTable.id
-                $("#" + table_id).find("thead th").eq(1).attr('data-filter', 'agreements_av_vendors')
-                $("#" + table_id).find("thead th").eq(3).attr('data-filter', 'agreements_av_statuses')
-                $("#" + table_id).find("thead th").eq(4).attr('data-filter', 'agreements_av_closure_reasons')
-                $("#" + table_id).find("thead th").eq(5).attr('data-filter', 'agreements_av_is_perpetual')
-                $("#" + table_id).find("thead th").eq(6).attr('data-filter', 'agreements_av_renewal_priorities')
+                $("#" + table_id).find("thead th").eq(1).attr('data-filter', 'vendors')
+                $("#" + table_id).find("thead th").eq(3).attr('data-filter', 'av_agreement_statuses')
+                $("#" + table_id).find("thead th").eq(4).attr('data-filter', 'av_agreement_closure_reasons')
+                $("#" + table_id).find("thead th").eq(5).attr('data-filter', 'av_agreement_is_perpetual')
+                $("#" + table_id).find("thead th").eq(6).attr('data-filter', 'av_agreement_renewal_priorities')
             }
 
         }, table_settings, 1)
@@ -225,9 +226,9 @@ export default {
     },
     props: {
         vendors: Array,
-        av_statuses: Array,
-        av_closure_reasons: Array,
-        av_renewal_priorities: Array,
+        av_agreement_statuses: Array,
+        av_agreement_closure_reasons: Array,
+        av_agreement_renewal_priorities: Array,
     },
     name: "AgreementsList",
 }
index 0ef818f..41714fe 100644 (file)
                                 <td>{{ patron_to_html(role.patron) }}</td>
                                 <td>
                                     {{
-                                        av_user_roles.find(
+                                        av_agreement_user_roles.find(
                                             (r) =>
                                                 r.authorised_value == role.role
                                         ).lib
@@ -188,10 +188,10 @@ export default {
     props: {
         agreement_id: Number,
         vendors: Array,
-        av_statuses: Array,
-        av_closure_reasons: Array,
-        av_renewal_priorities: Array,
-        av_user_roles: Array,
+        av_agreement_statuses: Array,
+        av_agreement_closure_reasons: Array,
+        av_agreement_renewal_priorities: Array,
+        av_agreement_user_roles: Array,
     },
     components: {
         AgreementPeriods,
index 72a37a4..f6a1e40 100644 (file)
@@ -4,8 +4,8 @@
     <div class="dialog alert" v-if="error">{{ error }}</div>
     <List
         v-if="op == 'list'"
-        :av_types="types"
-        :av_statuses="statuses"
+        :av_license_types="license_types"
+        :av_license_statuses="license_statuses"
         @set-current-license-id="setCurrentLicenseID"
         @switch-view="switchView"
         @set-error="setError"
     <Show
         v-if="op == 'show'"
         :license_id="license_id"
-        :av_types="types"
-        :av_statuses="statuses"
+        :av_license_types="license_types"
+        :av_license_statuses="license_statuses"
         @switch-view="switchView"
         @set-error="setError"
     />
     <AddForm
         v-if="op == 'add-form'"
         :license_id="license_id"
-        :av_types="types"
-        :av_statuses="statuses"
+        :av_license_types="license_types"
+        :av_license_statuses="license_statuses"
         @license-created="licenseCreated"
         @license-updated="licenseUpdated"
         @switch-view="switchView"
@@ -53,8 +53,8 @@ export default {
             op: "list",
             message: null,
             error: null,
-            types: license_types,
-            statuses: license_statuses,
+            license_types,
+            license_statuses,
         }
     },
     methods: {
index 736c96b..4585cdc 100644 (file)
@@ -38,7 +38,7 @@
                         >
                             <option value=""></option>
                             <option
-                                v-for="type in av_types"
+                                v-for="type in av_license_types"
                                 :key="type.authorised_values"
                                 :value="type.authorised_value"
                                 :selected="
@@ -61,7 +61,7 @@
                         >
                             <option value=""></option>
                             <option
-                                v-for="status in av_statuses"
+                                v-for="status in av_license_statuses"
                                 :key="status.authorised_values"
                                 :value="status.authorised_value"
                                 :selected="
@@ -194,8 +194,8 @@ export default {
     emits: ['license-created', 'license-updated', 'set-error', 'switch-view'],
     props: {
         license_id: Number,
-        av_types: Array,
-        av_statuses: Array,
+        av_license_types: Array,
+        av_license_statuses: Array,
     },
     components: {
         flatPickr
index a8d284f..6de3ee4 100644 (file)
@@ -32,21 +32,21 @@ export default {
         let show_license = this.show_license
         let edit_license = this.edit_license
         let delete_license = this.delete_license
-        window['licenses_av_types'] = this.av_types.map(e => {
+        window['av_license_types'] = this.av_license_types.map(e => {
             e['_id'] = e['authorised_value']
             e['_str'] = e['lib']
             return e
         })
-        let types_map = this.av_types.reduce((map, e) => {
+        let av_license_types_map = this.av_license_types.reduce((map, e) => {
             map[e.authorised_value] = e
             return map
         }, {})
-        window['licenses_av_statuses'] = this.av_statuses.map(e => {
+        window['av_license_statuses'] = this.av_license_statuses.map(e => {
             e['_id'] = e['authorised_value']
             e['_str'] = e['lib']
             return e
         })
-        let statuses_map = this.av_statuses.reduce((map, e) => {
+        let av_license_statuses_map = this.av_license_statuses.reduce((map, e) => {
             map[e.authorised_value] = e
             return map
         }, {})
@@ -85,7 +85,7 @@ export default {
                     "searchable": true,
                     "orderable": true,
                     "render": function (data, type, row, meta) {
-                        return escape_str(types_map[row.type].lib)
+                        return escape_str(av_license_types_map[row.type].lib)
                     }
                 },
                 {
@@ -94,7 +94,7 @@ export default {
                     "searchable": true,
                     "orderable": true,
                     "render": function (data, type, row, meta) {
-                        return escape_str(statuses_map[row.status].lib)
+                        return escape_str(av_license_statuses_map[row.status].lib)
                     }
                 },
                 {
@@ -161,8 +161,8 @@ export default {
             },
             preDrawCallback: function (settings) {
                 var table_id = settings.nTable.id
-                $("#" + table_id).find("thead th").eq(2).attr('data-filter', 'licenses_av_types')
-                $("#" + table_id).find("thead th").eq(3).attr('data-filter', 'licenses_av_statuses')
+                $("#" + table_id).find("thead th").eq(2).attr('data-filter', 'av_license_types')
+                $("#" + table_id).find("thead th").eq(3).attr('data-filter', 'av_license_statuses')
             }
 
         }, table_settings, 1)
@@ -193,8 +193,8 @@ export default {
         },
     },
     props: {
-        av_types: Array,
-        av_statuses: Array,
+        av_license_types: Array,
+        av_license_statuses: Array,
     },
     name: "LicensesList",
 }
index 59d6ffb..df507b6 100644 (file)
                 <li>
                     <label>Type: </label>
                     <span>{{
-                        get_lib_from_av(av_types, license.type)
+                        get_lib_from_av(av_license_types, license.type)
                     }}</span>
                 </li>
                 <li>
                     <label>Status: </label>
                     <span>{{
-                        get_lib_from_av(av_statuses, license.status)
+                        get_lib_from_av(av_license_statuses, license.status)
                     }}</span>
                 </li>
 
@@ -104,8 +104,8 @@ export default {
     emits: ['set-error', 'switch-view'],
     props: {
         license_id: Number,
-        av_types: Array,
-        av_statuses: Array,
+        av_license_types: Array,
+        av_license_statuses: Array,
     },
     components: {
     },