Skip to content

Components

Krish Majumdar edited this page Oct 23, 2022 · 45 revisions

Components are one of the two base entities in the database (the other being actions). A component is defined as one of the following:

  • a single physical object (for example, a geometry board)
  • a group or assembly of physical objects that can itself be considered as a singular entity (for example, a shipment of geometry boards, or a fully assembled APA). The objects making up the group or assembly do not have to be identical, nor do they have to be single components already recorded in the database

Each individual component that is entered into the database has a corresponding 'component record', which is a JSON-formatted document containing all of the information relating to the component ... whether user-defined (via the component type form) or provided automatically by the database itself. Please see the Component Record Fields page of this Wiki for a full description of the possible information that a single component record may contain.

Identifiers

Full UUID
The primary identifier for any component is the full UUID - a 32 character long alphanumeric string of the form xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. A component's full UUID is generated automatically by the database when that component is first created, and immediately saved into the component record. The full UUID remains uniquely associated with the component regardless of any later editing of the component record (i.e. it is common across all versions of a single component), and cannot be changed after it has been generated and associated with the component.

The full UUID is designated as the primary component identifier because it is the only piece of information that is guaranteed to be available for, and unique to, each and every individual component in the database, regardless of component type and/or any user-defined information.

Short UUID
Another component identifier is the short UUID - a 20 to 22 character long alphanumeric string, which is translated directly from the full UUID described above. While this compactness might appear to make the short UUID more approachable, due to technical limitations with the software used for this translation, the reduced number of characters does mean that it cannot in principle be guaranteed that every full UUID will correspond to a unique short UUID and/or vice versa, and therefore the short UUID is designated as a 'secondary' identifier - it should only be used as a 'backup', for when the full UUID is not available. That being said, the probability of a non-unique short UUID being generated from any given full UUID is extremely small, so short and full UUIDs can be taken as being uniquely paired for all practical purposes.

QR Code
To reduce the complexity of the database, the short UUID is never directly used - i.e. it cannot be searched for (unlike the full UUID), nor will it ever be displayed in the interface (although it is still viewable in the component record). Instead, the short UUID's only use is in a component's QR code. In a general sense, QR codes can be used to encode character strings in a compact visual format, and for this database specifically, the encoded character string is a URL that redirects to a particular component's information page (with part of this URL string being the short UUID).

Component QR codes may be printed out, laser-etched onto a surface, and/or otherwise made displayable, and any device which is both equipped with a camera and capable of running the interface in a web browser can be used to scan a QR code, in order to display the corresponding component information page. The QR code scanning must be performed through the database interface, not through the device's native QR code scanning software. (This is because only the interface contains the bespoke software that is required to correctly decode the QR code, extract the short UUID, translate it back to a full UUID, and finally direct the user to the corresponding component information page.)

Others
Depending on component type and/or user-defined information, certain components may have additional identifiers associated with them. For example, geometry boards can also be identified using their 'UKID' numbers, and each assembled APA has an associated 'DUNE PID'. Such component-specific identifiers should be created, assigned and formatted at the discretion of database managers and users, and the database development team will not attempt to control and/or otherwise dictate their usage (although we can of course offer guidance on the most efficient approaches to such identifiers).

Interface Pages

Create a New Component of a given Type
A new component of a particular component type can be created by pressing the [Create a New Component of this Type] button found on various pages in the interface. This button will always be associated with a single, specific component type, depending on which interface page it is found on, and leads to a page where user-defined information about the component may be entered into the (initially empty) type form. The specific information that may be entered depends entirely on the schema of the component type form being used. The component creation page also displays some other information relating to the component record, such as version number, type form ID and name, etc. - this information cannot be changed by users.

Once all relevant information about the new component is entered and the 'Submit' button pressed, a new component record will be created, and the user will be redirected to the component's information page.

Component Information Page
Each component in the database has a corresponding component information page, which displays key information about the component, as well as its QR code and a history of any actions that have been performed on it. New actions may also be performed on the component directly from its information page as well. Note that the component information page does not display the entire contents of the component record - only the most important and generally useful information from it. Component information pages can be accessed by either clicking on any hyperlinked full UUID in the interface, or by scanning a component's QR code.

View a Component Record
A component's full and complete database record may be viewed by pressing the [View JSON Record] button that can be found on any component information page, as well as various other pages in the interface. (Note that the same button is also used in certain places for viewing action and/or workflow database records.) The resulting page will show the entire JSON-formatted document for the component, but please note that the component record cannot be edited from this page.

Edit a Component Record
User-defined component information - that is, the information that is entered into a component's type form at creation - can be edited at any time, and as many times as needed, by pressing the [Edit Component] button found on any component information page. This leads to the same page as is used for component creation, but now with the current component information already filled in and available to be changed. Only user-defined component information can be edited - it is not possible for users to change record information that is automatically added by the database itself.

Once all desired changes to the component information have been made and the 'Submit' button pressed, the component record will be updated, and the user will be redirected back to the component's information page.

View and Print QR Codes
If multiple component QR codes are required to be printed, the [Print a set of the component's QR codes] button found on the component information page provides a page of six QR codes for the corresponding component. All six QR codes are identical, and the page itself is pre-formatted and arranged for best layout on standard A4 paper - the user then only needs to print the page directly from their web browser.

View and Print a Component Summary
A component summary provides a simplified overview of a particular component, together with summaries of any actions that have been performed on it. Such summaries may be useful for printing out and keeping with a component during transportation, or as a convenient offline report of a completed assembly and its past activities, for example. The [View and print the component's summary]* button found on any component information page leads to the component's summary page, which has been pre-formatted and arranged for best layout on standard A4 paper - the user then only needs to print the page directly from their web browser.

At the time of this writing (October 2022), all component types share the same summary template, but it is possible - and indeed, probably more useful - for different component types to use bespoke summary templates, depending on what information is relevant and most useful for each one. If this is something that you would like implemented, please contact one of the database development team.

Clone this wiki locally