I was inspired by Airtable's Remote asset tracking base template, which is handy if you have Items with multiple Units, each in various conditions. The template shows each unit's current condition and who currently "owns" that unit. But I thought to myself: what if I wanted to know who had possession of that unit before its current owner? At what point did this unit go from "good" condition to "poor"? Then I realized the potential a custom block could have to help manage a unit/inventory check-out/check-in system, and thus this block was born.

What it does

This block is a customizable wizard which, in its most basic form, allows users to select a Unit record and create a new linked record in a Log table detailing when that record was "checked out" with relevant fields pre-filled to save time. The wizard just as easily allows users to check that unit back in to close out the log and make that unit available for selection once more. Advanced features include tracking a unit's condition over time (i.e. the unit was in "great" condition when it was checked out, but was in "poor" condition when it was checked back in), and the ability to enable an Items table for bases structured where each unit is an instance of a type of item (i.e. 5 "Macbook Pros", 6 "Samsung 32-inch TVs", etc.).

This block will make day-to-day data entry for inventory managers, IT departments, librarians, equipment rental businesses, and more all that much easier!

How I built it

With a lot of trial and error.

Challenges I ran into

The number one challenge was avoiding errors which may arise from copying one single select field's value to another single select field, namely if one option exists in one field but not the other. This block circumvents that error by filtering out all unique select options, so only "shared" options can be copied over.

Accomplishments that I'm proud of

This block had quite a quick turnaround (less than a week) to become fully functional and customizable to fit multiple use cases.

What I learned

Every time I write a new Javascript project I learn a new use case for the spread operator. This block was no exception: I learned to conditionally pass key/value pairs to an object. This came in handy for the .createRecordAsync and .updateRecordAsync functions which pass certain field values only if the user has enabled that functionality in the settings menu.

What's next for Check Out Block

Tooltip components are slightly buggy at the moment. This block will improve when Tooltips are updated to play nicely with disabled buttons without a workaround.

Share this project: