[Jira Ticket created] Drafts UI - Inventory: Add Additional Call Numbers to Items Records

[Jira Ticket created] Drafts UI - Inventory: Add Additional Call Numbers to Items Records

Jira Ticket created

This draft is finished. Further work and discussion will happen in the Jira Ticket:

UIIN-3328: Inventory: Add Additional Call Numbers to Items RecordsBlocked

 

 

User Story

As a librarian, I want to add, edit, delete, and switch between multiple/additioanl call numbers for an item record so I can accurately track an item's location history and manage complex cataloging information.

 

Further User story statement(s):

  1. As a librarian I want to keep an old call number in the record after I assigned a new call number in order to be able to ensure traceability in the future. For example, items are moved from one location to another, and I want to capture the previous call number as well as the current one.

  2. Certain reference works in the reading room (open collection) already have a stacks call number assigned. They'll be moved into the closed stacks some time in the future, e.g. as soon as they are outdated or no longer used on a regular basis.

  3. The current issues of print journals are presented in the reading room, but the older volumes are placed in the stacks. The records of the new issues should already contain the stacks call number under which they will be placed in the future.

Description

Currently, the inventory app only allows one call number to be associated with an item record. This presents challenges when items have additional call numbers due to various reasons, such as different editions, copies in different locations, or historical changes in cataloging. This user story aims to address this limitation by enabling librarians to add, edit, delete, and switch between multiple/additional call numbers for a single item record. This will allow for accurate tracking of an item's location history and simplify the management of items with complex cataloging information.

Acceptance Criteria

  • Adding Call Numbers: Librarians can add additional call numbers to an item record. The system should allow for a reasonable maximum number of additional call numbers.

  • Call Number Types: The system allows specifying the type of call number (e.g., Dewey Decimal, Library of Congress, local call number) for both the primary and additional call numbers.

  • Call Number Components: The system should accommodate different parts of a call number (prefix, number, suffix) for both primary and additional call numbers.

  • Mandatory Fields: The "Call Number" field itself should be mandatory for all additional call numbers.

  • Editing Call Numbers: Librarians can edit existing call numbers (both primary and additional), including their type and components.

  • Deleting Call Numbers: Librarians can delete additional call numbers.

  • Switching Call Numbers: Librarians can easily switch between the primary call number and any additional call number. The UI should clearly indicate which call number is currently primary.

  • Data Integrity: Managing additional call numbers does not corrupt existing data or cause inconsistencies in the database.

  • Error Handling: The system handles errors gracefully, providing informative messages to the user when issues occur.

  • Testing: Thorough testing (unit, integration, and user acceptance testing) is conducted to ensure the functionality works correctly and meets all requirements.

 

Scenarios 

Scenario: Add additional call numbers to an item record

Given I am on the item details page for item "XYZ123" in edit mode

When I add the call number "ABC456" with type "Dewey Decimal"

And I add the call number "DEF789" with type "Library of Congress"

Then the item record should display both call numbers "ABC456" and "DEF789"

And the call numbers should be associated with their respective types

Scenario: Validate mandatory call number field (for additional call numbers)

Given I am on the item details page for item "XYZ123" in edit mode

When I leave the "Call number" field blank

And I attempt to save the changes

Then an error message "Please select to continue" should be displayed

Scenario: Switch between primary and additional call numbers

Given I am on the item details page for item "XYZ123"

And the item has call number "ABC456" (primary) and "DEF789" (additional)

When I switch the primary call number to "DEF789"

Then "DEF789" should be displayed as the primary call number

And "ABC456" should be displayed as an additional call number

Scenario: Delete an additional call number

Given I am on the item details page for item "XYZ123" in edit mode

And the item has call numbers "ABC456" (primary) and "DEF789" (additional)

When I delete the call number "DEF789"

Then the item record should only display the call number "ABC456"

 

Mock-up

View Mode

The following mock-up shows the extension of the view, if an additional call number is added. 

Item - View - 3 call number (1).jpg
Item - View - 2 call number (1).jpg

Alternative Variants

Different Options to show the user, which Item call number is the Primary one. 

Option 1 - Header

As shown in the other mock-ups, the header changes from "Item call number" to "Primary item call number". 

Alternative 1 - Header Primary.jpg

Option 2 - Info-icon with info text

Header "Item call number" stays as it is, but an Info icon gets added, which shows a text when clicked with the mouse, that this is the primary item call number.

Alternative 2 - Info Icon - Info Text ausgeklappt (1).jpg
Alternative 2 - Info Icon (1).jpg

Option 3 - Label "Primary" blue

After the initial header "Item call number" a label in the primary color blue gets added, which says "Primary".

Alternative 3 - Label - blau (1).jpg

Option 4 - Label "Primary" grey

After the initial header "Item call number" a label in the secondary color grey gets added, which says "Primary".

Alternative 4 - Label Grau.jpg

Edit Mode 

One item call number

This shows one Primary item call number and how to add an additional item call number with a button. 

Item - Edit - 1 call number.jpg

 

Additional item call numbers

This mock-ups show the interface, when one or more (three) additional item call numbers are added. 

Item - Edit - 2 call number.jpg
Item - Edit - 4 call number.jpg

Edit Mode - Obligatory input fields

Obligatory input fields and error messages

This mock-ups show the error messages, and how the UI-elements "move", when the now obligatory field "call number" is not filled out. 

Item - Edit - obligatory input 2.jpg

Edit Mode - Pop-up Deleting additional call number

Here is a proposal of a confirmation pop-up as a security measurement, so that call numbers can not be deleted accidentally. If a call number got added, it usually will be kept.

Item - Edit - Delete call number.jpg

 

Translations

English

German

English

German

Change with primary call number

Zur Hauptsignatur machen

Additional call number

Zusätzliche Signatur

Questions

  • How many additional call numbers can you add? Which limit should be set for this?

  • Are there any export functions which need to be addressed in any other apps?

    • e.g. List or Bulk edit?

Comments

  • Is the "exchange" of call numbers (primary and additional) technically feasible? → YES, it is (BM)

  • Blue backgrounds for repeatable fields: presumably this is how unsaved content is marked. → If this is correct, then implement interaction. (There is no mock-up here yet)

  • The Primary Call number should not be mandatory, because that would be a major intervention in existing functions.

  • There still can be Duplicates, because the call numbers are not unambiguously.

Labels

Dependencies

 

Requirement analysis

API-calls

The values of the call number can only be called via the holding-record. 

The challenge will probably be to "exchange" the values of itemLevelCallNumber and itemLevelCallNumberAdditional in two item records. 

  1. The values must be cashed, to avoid deleting a value. 

  2. The additional call numbers must be numbered a least Internally in order to exchange the correct call number, in case there are several ones. 

  3. In the PUT-calls, some mandatory metadata has to be sent additionally to the call number value, Otherwise error-messages occur. 

Example of the values in the body of the PUT-call.  

{ "id": "854e20cf-16ca-4aa9-9a94-cd2f327ba7bd", "_version": 5, "hrid": "it00028681790", "holdingsRecordId": "9680fa07-5fe3-497c-853a-c8ce833d161e", "permanentLoanTypeId": "82b7ad81-c82d-449b-b707-a34b9032fa19", "materialTypeId": "1e5959d9-0582-4e14-843c-b98cfe412e92", "status": { "name": "In process", "date": "2025-01-28T14:33:53.354+00:00" }, "itemLevelCallNumber": "MT 8256 C328", "itemLevelCallNumberPrefix": "Signatur-Präfix", "itemLevelCallNumberSuffix": "Signatur-Suffix", "itemLevelCallNumberTypeId": "a6f592dd-43f0-42b5-a3e7-eb0858e76ee6" }

Example 1: Existing call number with all sub fields 

Existing call number

{     "id": "33ccd696-491e-571b-8e4f-2b3fb19f93c4",     "callNumberTypeId": "a6f592dd-43f0-42b5-a3e7-eb0858e76ee6",     "callNumberPrefix": "Signatur-Präfix",     "callNumber": "Hist.Sax.F.263.wd",     "callNumberSuffix": "Signatur-Suffix",  }

Additional call number (proposal)

{     "id": "33ccd696-491e-571b-8e4f-2b3fb19f93c4",     "CallNumbersAdditional": [         {             "CallNumberAdditional": "MT 8256 C328",             "CallNumberAdditionalPrefix": "Signatur-Präfix",             "CallNumberAdditionalSuffix": "Signatur-Suffix",             "CallNumberAdditionalTypeId": "a6f592dd-43f0-42b5-a3e7-eb0858e76ee6",             "CallNumberAdditionalId": "1"         }     ] }

Additional call numbers (proposal)

{     "id": "33ccd696-491e-571b-8e4f-2b3fb19f93c4",     "CallNumbersAdditional": [         {             "CallNumberAdditional": "MT 8256 C328",             "CallNumberAdditionalPrefix": "Signatur-Präfix",             "CallNumberAdditionalSuffix": "Signatur-Suffix",             "CallNumberAdditionalTypeId": "a6f592dd-43f0-42b5-a3e7-eb0858e76ee6",             "CallNumberAdditionalId": "1"         },         {             "CallNumberAdditional": "Hist.Sax.1268.f",             "CallNumberAdditionalPrefix": "Signatur-Präfix",             "CallNumberAdditionalSuffix": "Signatur-Suffix",             "CallNumberAdditionalTypeId": "a6f592dd-43f0-42b5-a3e7-eb0858e76ee6",             "CallNumberAdditionalId": "2"         }     ] }

Example 2: Existing call number with one sub field

Existing call number

{     "id": "854e20cf-16ca-4aa9-9a94-cd2f327ba7bd",     "itemLevelCallNumber": "2025 8 1234567" }

Additional call number (proposal)

{     "id": "854e20cf-16ca-4aa9-9a94-cd2f327ba7bd",     "itemLevelCallNumberAdditional": "MT 8256 C328" }

 

Related content