Document Library

We migrated our data collection activities from a SharePoint-based system due to the enhanced abilities of Knack when it comes to data visualization. However, one thing that Knack is lacking is the ability to create a document library. If we had this ability, we could move all of our activities to Knack, but for now we have to maintain our SharePoint site only for their file storage abilities.

I know you can create an object with just a single file field, but that's not what we need since it would become unwieldy and cluttered very quickly as we added files without any organizational structure. We need to be able to create an organizational structure using folders and sub-folders similar to how you would on your own computer. That way our users could quickly find the documents they need instead of having to search every time.

Option 1: Use Tags

The easiest approach is to not do a folder hierarchy but instead use "tags", i.e. a single level of organization.  Just create a new table of tags and a connection of many tags to one document, then use a form to add the connections.

Option 2: Create a Folder Structure with a Table and Connections

To create a real hierarchy is more tricky but is possible, I discovered how to do it with experimentation with text formulas.  You need to decide ahead of time how many levels of hierarchy to support, in my case 4, and you need a document at each level before the next lower level will appear in navigation.

Create a folders table and a connection between document and folders.  Also create a connection between folder and folder, and call it parent folder.  Then use text formulas to create levels of folder name with a bracket, like so:

For a four-level structure you need to create three "level" formulas, and then a "Name with Hierarchy" formula which is the same thing.  Then under settings, set Display Field to Name With Hierarchy.

Here are all the fields you will end up with (including an additional formula to display subfolders with a document count):

And here is what it looks like in practice once you enter some data:

Now you can create a page to display the top level of folders.  Add a list or table, and filter it on Parent Folder is blank.  This will give you only the top level.

It will look like so:

Create a page to display the document list within the folder, and use the various fields to give navigation to parent and sub folders:

The only problem I have run into with this approach is that when creating a connection on the same table, you cannot use it directly on pages.  Therefore, if there are multiple documents in one subfolder, the subfolder display, which is actually using documents, shows multiple entries.  I haven't figured out yet if there is a way to eliminate duplicate subfolders, or if there is another way to display them that will work better, besides some inefficient jQuery.