Equipment Access Project

From i3Detroit
Jump to: navigation, search
Equipment Access Project
Leader(s) Jamie Burdeski

This is the documentation page for the Equipment Access Project. It is championed by Jamie, with input from various wiki-savvy Zone Coordinators and members of i3.


The goal of this project is to create an easy way for Zone Coordinators to keep track of equipment users and equipment trainers in their zone, all contained within the wiki ecosystem. It is loosely related to the idea of tying member keys to physical tool access, but depending on the direction of that project, this implementation might not be used in the Final Unified Super-Awesome Magical Tool Access System.

The purpose of this project is

  1. A stopgap measure. While the physical access project is progressing, it is useful to have something in place to start training member's habits.
  2. A way to gather feedback and usage data. This system is close enough to the final system that Zone Coordinators and other users can give their feedback, and changes can be made relatively quickly in the wiki interface.
  3. A loose model for the final system, since coming up with the underlying structure was by far the hardest part of this project.

Exporting Data

Clicking on the following link will download a CSV file of all equipment users. The link address can be copied for use in an auto-download script. The link is generated with a pretty simple semantic query. To see the code, edit/view this section's source.



Most people put bugs and feature requests on the Wiki ToDo list. Feedback is hugely important for this project, and the system is actually pretty easy to change, so if you have a gripe, I may be able to fix it for you quickly!

Usage Instructions

Zone Coordinators (or the people they delegate) are the primary audience for this system. If you want someone to set it up for you, ask User:pajamapuma, and once she's set it up, skip to Step 3.

  1. Create an "Equipment Access Page" for each piece of equipment in your zone that you want to be access-controlled.
    1. Go to the Equipment Access Form Landing Page. It will prompt you to enter a page name to edit with the form
    2. Enter the name of the page you want to create. The page name here doesn't matter overly much, it's just a placeholder that separates the access control from the main equipment page. Names like "Rostock Access" or "Bumblebee Access" work well to easily tell what the page's purpose is.
    3. In the form itself. populate the fields at the top with the Zone Name and Equipment Name. The fields should autocomplete and find existing zones/equipment.
    4. Under the "Trained Users for this equipment" section, click the "Add another user" button to add the first user
    5. All of the users are tied to the full names of members as entered in their Member infobox on their userpage. For example, you would enter "Jamie Burdeski", not "Jamie" or "Jamie B" or "pajamapuma". The "user name" and "trained by" fields will both autocomplete on existing names, but you can enter a name that doesn't exist yet also (good for guests or new members).
    6. Choose the date the user was trained from the calendar pop-up.
    7. Follow similar instructions for the "Certified Trainers for this Equipment" section
    8. You can delete unwanted entries by clicking the "X" icon on the far right of each entry. You can also come back to this form at any time and edit any of the entries.
    9. Add any comments you want to the "Summary" box and click the "save page" button
    10. You should see a simple page with 2 tables, one for the users and one for the trainers. The form saves this data in a way that can be called and displayed on any other page in the wiki.
  2. Create a "Zone Access Page" to collect all the equipment access data from the access-controlled equipment in your zone.
    1. Create a new page with a simple name like "Fab Lab Access". The name here doesn't really matter, but it should be something reasonable.
    2. Enter the following into the page source:
      {{Zone Access | Zone=Zone Name}}
      This calls a template that will populate the entire page- you don't need to put anything else in the page source!
    3. You should replace "Zone Name" with the name of your Zone, like Fab Lab, Kiln Zone, etc. It is very important that this name matches EXACTLY the name of the zone as it appears in the [[Category:Zone Name]] tag and main page for the zone.
    4. You should see a list of equipment/access pages, then a heading for each piece of access-controlled equipment with the user and trainer tables, as well as a button to edit the users for that piece of equipment.
  3. For everyday use, you can bookmark your Zone Access page and use that as a landing page to monitor and edit the users for each piece of equipment from there. You can also edit the equipment users from the Equipment page by clicking on the button under the displayed user/trainer list.

How it Works

(Under construction as of 1/14/15, bug Jamie if she doesn't update it soon)

This (soon to be uploaded) flowchart shows visually the relationship between all the template and form pages.

Pages that support this project

How the Input Works

There is a separate page for each piece of equipment's access. The starting point for creating/editing each equipment access page is the form definition page: Form:Equipment Access. Since forms and template are almost inseparable in SMW (Semantic Mediawiki, the extension that gives wikis cool superpowers), there is a corresponding template: Template:Equipment Access. The form has a couple fields at the top for basic information, then has 2 sets of embedded multi-instance templates, which are Template:Equipment User and Template:Equipment Trainer. The templates all do two things: define semantic objects (like variables), and control how the objects display on the page.

How Information is Displayed

On the Equipment Access Page itself

Template:Equipment Access goes with Form:Equipment Access to display the inputs of the form.

Template:Equipment User and Template:Equipment Trainer are both called by Template:Equipment Access. They are sub-templates that each display one user on one row of a table.

On a master Zone Access page

The container to display all Equipment Access in a Zone is the Template:Zone Access. This template embeds calls to another template, Template:Zone Access Equipment Display. The reason that there are two templates is that there's a query within a query and SMW doesn't do that very cleanly.

On an Equipment Page

Template:Equipment, which is used on all Equipment pages, has a semantic query that calls Template:Equipment Access Display. The code in both pages is very similar to Template:Zone Access and Template:Zone Access Equipment Display, but it's just different enough to require a new set of templates, which is awesome and not at all inconvenient for the developer.

Semantic Properties Created with this project

List of all Semantic Properties on the i3 wiki and their definition pages are here: Special:Properties

These properties are single-use on each equipment access page, and are created in Template:Equipment Access.

  • Has Associated Equipment
  • Is Zone Access Page For

These ones are actually Subobjects, so they're allowed/designed to have multiple instances in a single page

  • Subobjects for each Equipment User, created in Template:Equipment User
    • UserName
    • TrainedBy
    • TrainedDate
    • UserType (is either User or Trainer)
  • Subobjects for each Trainer, created in Template:Equipment Trainer
    • TrainerName
    • CertifiedDate
    • UserType (is either User or Trainer)