{"metadata":{"version":1,"view":"all"},"components":[{"type":"md","name":"md2","visible":true,"text":"\n### The Data component\n\n* The `data` component serves as the interface to a single plain old javascript object - anything that can be represented as JSON.\n\n* That means, the data represented can be a hierarchy of arrays and objects, with numbers, strings, booleans, and nulls as the leaves. Circular references are not allowed.\n\n* The data can come in a number of forms that permit a vareity of display modes. The different forms are:\n\n- `[{\"a\":1,\"b\":2},{\"a\":3,\"b\":4}]` - list of objects\n- `[[1,2],[3,4]]` - list of lists\n- `[1,2,3]` - list\n- `{\"a\":1,\"b\":2,\"c\":3}` - object\n- other, consisting of anything else that does not fit those forms\n\n* Take a look at the data components to the left named `listOfObjects`, etc. to see examples of these forms and their allowable display modes.\n\n* The allowable display modes are JSON, YAML, CSV, TSV, GUI, READONLY, and SUMMARY - see the compatibility table below for the forms that admit these modes:\n","display":"codemirror","mode":"default","runOnBlur":true,"runOnLoad":true},{"type":"html","name":"table","visible":false,"text":"<table>\n\t<tr>\n\t\t<td></td>\n\t\t<td>[ { } ]</td>\n\t\t<td>[ [ ] ]</td>\n\t\t<td>[ ]</td>\n\t\t<td>{ }</td>\n\t\t<td>other</td>\n\t</tr>\n\t<tr>\n\t\t<th></th>\n\t\t<th>listOfObjects</th>\n\t\t<th>listOfLists</th>\n\t\t<th>list</th>\n\t\t<th>object</th>\n\t\t<th>other</th>\n\t</tr>\n\t<tr>\n\t\t<td>JSON</td>\n\t\t<td>x</td>\n\t\t<td>x</td>\n\t\t<td>x</td>\n\t\t<td>x</td>\n\t\t<td>x</td>\n\t</tr>\n\t<tr>\n\t\t<td>YAML</td>\n\t\t<td>x</td>\n\t\t<td>x</td>\n\t\t<td>x</td>\n\t\t<td>x</td>\n\t\t<td>x</td>\n\t</tr>\n\t<tr>\n\t\t<td>TSV</td>\n\t\t<td>x</td>\n\t\t<td>x</td>\n\t\t<td>x</td>\n\t\t<td></td>\n\t\t<td></td>\n\t</tr>\n\t<tr>\n\t\t<td>CSV</td>\n\t\t<td>x</td>\n\t\t<td>x</td>\n\t\t<td>x</td>\n\t\t<td></td>\n\t\t<td></td>\n\t</tr>\n\t<tr>\n\t\t<td>GUI</td>\n\t\t<td></td>\n\t\t<td></td>\n\t\t<td></td>\n\t\t<td>x</td>\n\t\t<td></td>\n\t</tr>\n\t<tr>\n\t\t<td>READONLY</td>\n\t\t<td>x</td>\n\t\t<td>x</td>\n\t\t<td>x</td>\n\t\t<td>x</td>\n\t\t<td>x</td>\n\t</tr>\n\t<tr>\n\t\t<td>SUMMARY</td>\n\t\t<td>x</td>\n\t\t<td>x</td>\n\t\t<td>x</td>\n\t\t<td>x</td>\n\t\t<td>x</td>\n\t</tr>\n</table>","display":"codemirror","mode":"default","runOnBlur":true,"runOnLoad":true},{"type":"md","name":"md1","visible":false,"text":"\n* Any valid data object can be represented as JSON or YAML, and READONLY and SUMMARY views are available for a more lightweight view.\n\n* GUI representations are limited to data that is simply an object of primitives - `{a:1,b:2}`, for example. The GUI has widgets like slider bars and checkboxes that let you manipulate the data in helpful ways.\n\n* CSV and TSV representations are limited to a subset of valid data - roughly, anything that can be sanely represented as a table. That means an array of objects of primitives, an array of arrays of primitives, or an array of primitives - `[{}]` or `[[]]` or `[]`.\n\n - `[{a:1,b:2},{a:3,b:4}]` - allowed\n - `[[1,2],[3,4]]` - allowed\n - `[1,2,3]` - allowed\n - `[{a:{b:1}}]` - not allowed - only two levels of nesting are permitted\n - `[1,{a:2}]` - not allowed - all items in the top level array must be the same type - primitive, object, or array\n\n* The CSV/TSV parser determines the data type of the entries (string, number, boolean, or null), and does a limited amount of processing - right now it's limited to accepting numbers expressed as percentages - 5% will be converted to 0.05.\n\n* By default, CSV/TSV data is parsed as an array of objects, with the top row of entries (the header) serving as the object keys.\n\n* If you want your data to be interpreted as an array of arrays, put 0,1,2,etc as the header row.\n\n* If you want your data to be interpreted as a flat array of primitives, make sure every row has only one entry. So 'a\\nb\\nc' will parse to `[\"a\",\"b\",\"c\"]`.\n\n* That means that it is impossible to express an object of the form `[[\"a\"],[\"b\"],[\"c\"]]` - sorry.\n\n* Blank rows will parse to `null` or `[null]`, not to `[]`.\n\n* **Hyperdeck does not parse dates. If you want a data entry to be interpreted as a date, you will have to parse it yourself, as in new Date(\"2016-01-01\")**\n\n","display":"codemirror","mode":"default","runOnBlur":true,"runOnLoad":true},{"type":"css","name":"css1","visible":false,"text":"table { border-collapse : collapse ; margin : 1em }\nth { border : 1px solid gray ; padding : 0.2em ; text-align : center }\ntd { border : 1px solid gray ; padding : 0.2em ; text-align : center }\ntd:nth-child(1) { width : 6em }\ntd:nth-child(2) { width : 6em }\ntd:nth-child(3) { width : 6em }\ntd:nth-child(4) { width : 6em }\ntd:nth-child(5) { width : 6em }\ntd:nth-child(6) { width : 6em }\n","display":"codemirror","mode":"default","runOnBlur":true,"runOnLoad":true},{"type":"data","name":"listOfObjects","visible":false,"data":[[1,2],[3,4]],"params":{"format":"headerList","display":"json","form":"listOfObjects","headers":["A","B"],"afterChange":""}},{"type":"data","name":"listOfLists","visible":false,"data":[[1,2],[3,4]],"params":{"format":"json","display":"json","form":"listOfLists","headers":[0,1],"afterChange":""}},{"type":"data","name":"list","visible":false,"data":[1,2,3],"params":{"format":"json","display":"json","form":"list","headers":null,"afterChange":""}},{"type":"data","name":"object","visible":false,"data":{"A":1,"B":"foo","C":true},"params":{"format":"json","display":"json","form":"object","headers":["A","B","C"],"afterChange":""}},{"type":"data","name":"other","visible":false,"data":{"A":{"B":1}},"params":{"format":"json","display":"json","form":"other","headers":null,"afterChange":""}}]}