Chicken Tracking with QB
Here's my latest cause for Quick Base celebration: A while back I made a Quick Base app for tracking my flock of chickens and supply inventory, but just incorporated RFID scanning to help move toward automatically tracking egg production instead of manually tapping URL formula buttons. Very much still a work in progress, but here's what it does so far and how it works: The app keeps records of what chickens are in the flock, egg production, store health records, supply purchasing/use, and a journal to write entries about any or all of the chickens. One night I was browsing my favorite overseas merchant website and came across these leg bands for fowl that contain an RFID chip. They were about $.27 a piece, so I bought a bunch, and a cheap USB RFID reader too. I created a table of all of the RFID tags, and a table for scanner entries, and linked each chicken to an RFID number, so that when one was scanned the entries table would "know" who the chicken was. Then I needed the scanner to be in a stationary place ready to scan anytime, so I wrote a little Python script that sits and waits for a scan, and when it detects one creates a record in the entries table using the Quick Base API. I decided to put the scanner in the nest box to find out who was laying eggs and when. It's also a confined space where I thought I'd have the most luck with the RFID system, which is the low-frequency passive type (chosen because they're cheap and don't require batteries or charging. The trade off, however, is that they only get scanned when they are close enough to receive power from the scanner). After hiding the scanner under some straw on the side of the nest near where the banded leg would be, the Raspberry Pi was put outside of the nest on a nearby shelf. With everything set up, connected to the network and seemingly working, it was time to put the bands on the chickens: Over the next few days of anxiously awaiting email notifications of scans, I finally got about 40 one morning over the course of about 45 minutes, all from the same chicken. I've had some luck so far, but have been looking into a more powerful scanner that would ensure scans without the RFID chip needing to be so close to the scanner. (Since putting in the scanner I've also found a couple of bushes the chickens have been laying eggs under since they have the run of the yard in summer, but with winter coming they should be laying more inside). I'd also like to add more scanners in various locations, but that may depend on what can be done to find a scanner that could read at a longer distance. I also need to find a better way to display some of this data, especially if its coming from multiple scanners. I'm thinking a summary type table that would group by location and calculate duration to show how long a chicken was in a given spot over the course of a day. A way to detect if an egg is actually laid, and automatically log that in the egg table for the correct chicken is also a future addition once the best way to do that is figured out. Ultimately, it'd be cool to have scanners that could also track various spots to get an idea of how they spend their days, and know when they're all inside for the evening and automatically close the coop door for the night. If anyone has any ideas about any of this, or experience working with RFID or Raspberry Pis and Quick Base, I'd love to hear about it! ------------------------------ steve. ------------------------------85Views11likes13CommentsIs it possible to create a ""Save and Keep Working"" button from a formula URL field?
I realize the "Save and Keep Working" button was introduced by Quickbase, but I am wanting to add it somewhere in the middle of my form. I've seen posts relating to this kind of thing, but all of theme were published prior to the introduction of the "Save and Keep Working Button" and I can't seem to get any of them to work. Any thoughts?196Views7likes39Comments- 61Views7likes28Comments
How To Dialog?
How To Dialog? This demo demonstrates eight different examples of invoking a Dialog Box through a Button to (1) display selected information to a user, (2) rapidly make quick changes to fields in a record, or (3) initiate more complex processing tasks. Motivation: There are a tremendous number of use cases where a user wants to seamless perform an action without extra navigational steps or page reloads. These actions might be as simple as displaying record information in a compact manner or rapidly editing specific fields. Additionally, when some actions require user input as a parameter to that action, it is often undesirable to store those parameters in a field or create faux relationships to fit the action into a native capability. Finally, complex processing tasks that manipulate multiple tables, records and fields and can be made more accessible by binding those actions to a Button rather than separately loading a HTML code page that contains its own interface and controls. This demo is large only because it jams eight different examples into one application. How To Dialog? ~ Clients Table Dashboard https://haversineconsulting.quickbase.com/db/bnrxb4mma?a=td Pastie Database https://haversineconsulting.quickbase.com/db/bgcwm2m4g?a=dr&rid=662 Button 1 ~ Display Static Instructions (Full HTML Allowed) ======================================== Button 2 ~ Display Field Information With Clipboard Copy ======================================== Button 3~ Display Lots of Field Information ======================================== Button 4 ~ Display Parent and Child Informaiton ======================================== Button 5 ~ Rapidly Edit Status Without Page Load ======================================== Button 6 ~ Rapidly Edit Date With Inline Calendar Widget ======================================== Button 7 ~ Rapidly Edit Child Records (Delay Meeting Date) ======================================== Button 8 ~ Rapidly Edit Child Records (Reset Meeting Time) Notes: I would normally add technical notes here but they are potentially so extensive that I am not going to be able to add them in the initial post before someone cuts off my opportunity by commenting. Add your comments or questions and I will follow up separately with detailed notes.41Views4likes15CommentsCommand Line Interface for Quickbase
Quickbase is a no-code platform that problem-solvers use to build powerful business applications regardless of their technical ability, but that doesn't mean software developers can't have fun, too! For example, Quickbase has robust and powerful APIs that enable coders to extend and automate Quickbase. In fact, API requests make up a higher percentage of traffic to Quickbase than one might think. In that spirit, I want to introduce you to the Command Line Interface for Quickbase, which makes it even easier to interact with and automate Quickbase through its APIs. https://github.com/QuickBase/quickbase-cli Graphical interfaces like web browsers make it possible for a wide range of people to use software and simplify tasks. With that said, how many times has your index finger felt like it was going to fall off while fighting sleep as you repeatedly perform some monotonous task in Quickbase through the browser? It's situations like this where the command line can save you hours, not to mention your sanity. You can find examples of how to use the tool in the repository's README. Hopefully, it inspires ideas on how you might use it to save time automating your Quickbase tasks. The CLI tool is one of many capabilities in the Quickbase platform that help you automate repetitive tasks. Here are some guidelines to help point you towards the best tool for your task: Use Pipelines and consume the API directly if you are automating a task in response to an action that happens in Quickbase or another system. Consume the API directly with the language of your choice when building a non-Quickbase application that connects to your Quickbase app. Use the Quickbase CLI to perform app setup/admin tasks and ad-hoc calls to the API. Finally, the Quickbase CLI is released as an open source project, which means you can submit enhancements, bug fixes, and documentation through GitHub pull requests if you can write code. Installation instructions, examples, and tips are provided in the README. The tool is subject to the permissive MIT license, so you can freely use it as you see fit inclusive of use in proprietary applications, provided that you maintain the copyright and license with the code. The license also states that the code is provided as-is without warranty, so unlike the Quickbase platform, the tool is not subject to assistance through Quickbase support entitlements. However, contact with the authors is only a GitHub issue away, so please post and feedback, bugs, and questions through the repository's normal GitHub channels as per the guidelines. Happy building! ------------------------------ Chris Pliakas ------------------------------12Views4likes0CommentsQuick Base Certification should be made portable from one job to another.
When I obtained my Quick Base "Builder and Expert" certification, I was working at one organization. After I changed jobs I am no longer able to access this certification. Without redoing the entire exams, how can I continue my certification? I am now at a different organization.2Views3likes2CommentsSave & Keep Working Button while using ifv=
Has anyone figured out a way to implement a Save & Keep Working option while working within the ifv= option that removes the QB interface? The native buttons are gone and if you try to use the onclick#saveandkeepworkingmenuoption deal, it doesn't work with the QB interface removed. I can save records. I can save and redirect somewhere else (a predetermined URL). I cannot save and redirect to the same record while staying in edit mode and continuing to use ifv=. If I use DoSave() or DoSaveAdd(), it saves the record but then returns the user to display record mode without the ifv= appended. One thing I noticed when I do this, it appends "r=" and then two random characters to the resulting URL, which is some kind of breadcrumb thing that QB uses but I don't know how to replicate that. I think if I could replicate that somehow, that might solve my problem. I should add that I am particularly challenged here because I would like this Save & Keeping Working option to work while the user is creating a new record, so no Record ID exists yet at this state. Otherwise I could punch in the redirect to simply go to the existing record. Essentially the process is that the user creates a new record, fills in data, then I want them to be able to Save & Keeping Working, so that they can add a child record. But they can't add a child until the parent is saved first.11Views3likes0CommentsMost powerful examples of javascript/jquery with IOL technique
We are beginning to refine our QuickBase application, which until this point has relied solely on native-QB UI. Using the IOL technique I now have some very basic jQuery code applied to some UI elements in my application. I'm eager to learn more, and I'm wondering just how far others have been able to take this approach to enhance QB's native UI. Would any of you be willing to share some links to examples of what you consider the most powerful UI enhancements using javascript/jquery via IOL? Thanks in advance!14Views3likes7CommentsHow best can I obfuscate/encrypt URL query parameters that are passed to a code page on our database?
Hi all! I was asked to develop an app that can present records associated with a particular user in a printable 8.5x11" worksheet-style form. As of now, I accomplish this with a URL button field that links to a code page with a "?userEmail=abcde@email.com" tacked onto the end. My javascript code takes the email from the URL, inserts it into an API_DoQuery, and uses the results to populate the worksheet. My question is: what's the best way I can keep a user from changing the URL to see somebody else's records? My initial thought was to change the URL parameter and base64 encode the email to get something more like "?x=YWJjZGVAZW1haWwuY29t" which is probably obfuscated enough considering that most of the users wouldn't be savvy or interested enough to figure out how to look at other people's records. Honestly none of the records contain terribly sensitive information. Simple base64 obfuscation would probably serve fine. But maybe one of you has a more secure method of accomplishing this outcome! Maybe using an application variable as a key? I don't know but I'm interested in finding out. Thanks in advance for the help!36Views3likes0Comments