postrest 0.0.3 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/app.rb +1 -1
- data/public/index.htm +116 -0
- data/public/node_modules/pivottable/CONTRIBUTING.md +19 -0
- data/public/node_modules/pivottable/LICENSE.md +9 -0
- data/public/node_modules/pivottable/ReadMe.md +155 -0
- data/public/node_modules/pivottable/bower.json +31 -0
- data/public/node_modules/pivottable/c3_renderers.coffee +155 -0
- data/public/node_modules/pivottable/d3_renderers.coffee +73 -0
- data/public/node_modules/pivottable/dist/c3_renderers.js +256 -0
- data/public/node_modules/pivottable/dist/c3_renderers.js.map +1 -0
- data/public/node_modules/pivottable/dist/c3_renderers.min.js +2 -0
- data/public/node_modules/pivottable/dist/c3_renderers.min.js.map +1 -0
- data/public/node_modules/pivottable/dist/d3_renderers.js +105 -0
- data/public/node_modules/pivottable/dist/d3_renderers.js.map +1 -0
- data/public/node_modules/pivottable/dist/d3_renderers.min.js +2 -0
- data/public/node_modules/pivottable/dist/d3_renderers.min.js.map +1 -0
- data/public/node_modules/pivottable/dist/export_renderers.js +80 -0
- data/public/node_modules/pivottable/dist/export_renderers.js.map +1 -0
- data/public/node_modules/pivottable/dist/export_renderers.min.js +2 -0
- data/public/node_modules/pivottable/dist/export_renderers.min.js.map +1 -0
- data/public/node_modules/pivottable/dist/gchart_renderers.js +183 -0
- data/public/node_modules/pivottable/dist/gchart_renderers.js.map +1 -0
- data/public/node_modules/pivottable/dist/gchart_renderers.min.js +2 -0
- data/public/node_modules/pivottable/dist/gchart_renderers.min.js.map +1 -0
- data/public/node_modules/pivottable/dist/pivot.css +97 -0
- data/public/node_modules/pivottable/dist/pivot.es.js +78 -0
- data/public/node_modules/pivottable/dist/pivot.es.js.map +1 -0
- data/public/node_modules/pivottable/dist/pivot.es.min.js +2 -0
- data/public/node_modules/pivottable/dist/pivot.es.min.js.map +1 -0
- data/public/node_modules/pivottable/dist/pivot.fr.js +78 -0
- data/public/node_modules/pivottable/dist/pivot.fr.js.map +1 -0
- data/public/node_modules/pivottable/dist/pivot.fr.min.js +2 -0
- data/public/node_modules/pivottable/dist/pivot.fr.min.js.map +1 -0
- data/public/node_modules/pivottable/dist/pivot.js +1511 -0
- data/public/node_modules/pivottable/dist/pivot.js.map +1 -0
- data/public/node_modules/pivottable/dist/pivot.min.css +1 -0
- data/public/node_modules/pivottable/dist/pivot.min.js +2 -0
- data/public/node_modules/pivottable/dist/pivot.min.js.map +1 -0
- data/public/node_modules/pivottable/dist/pivot.nl.js +78 -0
- data/public/node_modules/pivottable/dist/pivot.nl.js.map +1 -0
- data/public/node_modules/pivottable/dist/pivot.nl.min.js +2 -0
- data/public/node_modules/pivottable/dist/pivot.nl.min.js.map +1 -0
- data/public/node_modules/pivottable/dist/pivot.pt.js +104 -0
- data/public/node_modules/pivottable/dist/pivot.pt.js.map +1 -0
- data/public/node_modules/pivottable/dist/pivot.pt.min.js +2 -0
- data/public/node_modules/pivottable/dist/pivot.pt.min.js.map +1 -0
- data/public/node_modules/pivottable/dist/pivot.ru.js +78 -0
- data/public/node_modules/pivottable/dist/pivot.ru.js.map +1 -0
- data/public/node_modules/pivottable/dist/pivot.ru.min.js +2 -0
- data/public/node_modules/pivottable/dist/pivot.ru.min.js.map +1 -0
- data/public/node_modules/pivottable/dist/pivot.tr.js +104 -0
- data/public/node_modules/pivottable/dist/pivot.tr.js.map +1 -0
- data/public/node_modules/pivottable/dist/pivot.tr.min.js +2 -0
- data/public/node_modules/pivottable/dist/pivot.tr.min.js.map +1 -0
- data/public/node_modules/pivottable/dist/tips_data.min.js +247 -0
- data/public/node_modules/pivottable/examples/c3.html +61 -0
- data/public/node_modules/pivottable/examples/d3.html +49 -0
- data/public/node_modules/pivottable/examples/fully_loaded.html +80 -0
- data/public/node_modules/pivottable/examples/gchart.html +53 -0
- data/public/node_modules/pivottable/examples/gh-fork-ribbon.css +140 -0
- data/public/node_modules/pivottable/examples/gh-fork-ribbon.ie.css +78 -0
- data/public/node_modules/pivottable/examples/index.html +85 -0
- data/public/node_modules/pivottable/examples/local.html +74 -0
- data/public/node_modules/pivottable/examples/montreal_2014.csv +366 -0
- data/public/node_modules/pivottable/examples/montreal_2014.html +106 -0
- data/public/node_modules/pivottable/examples/mps.csv +309 -0
- data/public/node_modules/pivottable/examples/mps.html +45 -0
- data/public/node_modules/pivottable/examples/mps.json +1 -0
- data/public/node_modules/pivottable/examples/mps_agg.html +44 -0
- data/public/node_modules/pivottable/examples/mps_csv.html +42 -0
- data/public/node_modules/pivottable/examples/mps_export.html +44 -0
- data/public/node_modules/pivottable/examples/mps_fr.html +40 -0
- data/public/node_modules/pivottable/examples/mps_prepop.html +42 -0
- data/public/node_modules/pivottable/examples/onrefresh.html +52 -0
- data/public/node_modules/pivottable/examples/rcsvs.html +87 -0
- data/public/node_modules/pivottable/examples/scatter.html +53 -0
- data/public/node_modules/pivottable/examples/show_code.js +17 -0
- data/public/node_modules/pivottable/examples/simple.html +41 -0
- data/public/node_modules/pivottable/examples/simple_agg.html +51 -0
- data/public/node_modules/pivottable/examples/simple_function.html +57 -0
- data/public/node_modules/pivottable/examples/simple_ui.html +42 -0
- data/public/node_modules/pivottable/examples/simple_ui_from_table.html +60 -0
- data/public/node_modules/pivottable/export_renderers.coffee +57 -0
- data/public/node_modules/pivottable/gchart_renderers.coffee +111 -0
- data/public/node_modules/pivottable/gulpFile.js +95 -0
- data/public/node_modules/pivottable/images/animation.gif +0 -0
- data/public/node_modules/pivottable/images/filters.png +0 -0
- data/public/node_modules/pivottable/images/gender_age_bins.png +0 -0
- data/public/node_modules/pivottable/images/gender_imbalance.png +0 -0
- data/public/node_modules/pivottable/images/gender_imbalance_instructions.png +0 -0
- data/public/node_modules/pivottable/images/initial_state.png +0 -0
- data/public/node_modules/pivottable/images/province_x_party_heatmap.png +0 -0
- data/public/node_modules/pivottable/images/province_x_party_heatmap_instructions.png +0 -0
- data/public/node_modules/pivottable/images/simple.png +0 -0
- data/public/node_modules/pivottable/images/simple_ui.png +0 -0
- data/public/node_modules/pivottable/images/whats_what.png +0 -0
- data/public/node_modules/pivottable/index.html +14 -0
- data/public/node_modules/pivottable/node_modules/jquery/AUTHORS.txt +278 -0
- data/public/node_modules/pivottable/node_modules/jquery/LICENSE.txt +36 -0
- data/public/node_modules/pivottable/node_modules/jquery/README.md +65 -0
- data/public/node_modules/pivottable/node_modules/jquery/bower.json +14 -0
- data/public/node_modules/pivottable/node_modules/jquery/dist/jquery.js +9842 -0
- data/public/node_modules/pivottable/node_modules/jquery/dist/jquery.min.js +4 -0
- data/public/node_modules/pivottable/node_modules/jquery/dist/jquery.min.map +1 -0
- data/public/node_modules/pivottable/node_modules/jquery/dist/jquery.slim.js +7877 -0
- data/public/node_modules/pivottable/node_modules/jquery/dist/jquery.slim.min.js +4 -0
- data/public/node_modules/pivottable/node_modules/jquery/dist/jquery.slim.min.map +1 -0
- data/public/node_modules/pivottable/node_modules/jquery/package.json +122 -0
- data/public/node_modules/pivottable/node_modules/jquery/sizzle/LICENSE.txt +36 -0
- data/public/node_modules/pivottable/node_modules/jquery/sizzle/dist/sizzle.js +2143 -0
- data/public/node_modules/pivottable/node_modules/jquery/sizzle/dist/sizzle.min.js +3 -0
- data/public/node_modules/pivottable/node_modules/jquery/sizzle/dist/sizzle.min.map +1 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/ajax.js +845 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/ajax/jsonp.js +100 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/ajax/load.js +83 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/ajax/parseJSON.js +13 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/ajax/parseXML.js +27 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/ajax/script.js +68 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/ajax/var/location.js +3 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/ajax/var/nonce.js +5 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/ajax/var/rquery.js +3 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/ajax/xhr.js +167 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/attributes.js +11 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/attributes/attr.js +142 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/attributes/classes.js +177 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/attributes/prop.js +125 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/attributes/support.js +36 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/attributes/val.js +177 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/callbacks.js +232 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/core.js +494 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/core/DOMEval.js +14 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/core/access.js +65 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/core/init.js +134 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/core/parseHTML.js +41 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/core/ready.js +103 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/core/support.js +18 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/core/var/rsingleTag.js +5 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/css.js +515 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/css/addGetHookIf.js +24 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/css/adjustCSS.js +65 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/css/curCSS.js +60 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/css/defaultDisplay.js +72 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/css/hiddenVisibleSelectors.js +18 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/css/showHide.js +48 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/css/support.js +121 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/css/var/cssExpand.js +3 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/css/var/getStyles.js +15 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/css/var/isHidden.js +16 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/css/var/rmargin.js +3 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/css/var/rnumnonpx.js +5 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/css/var/swap.js +24 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/data.js +187 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/data/Data.js +200 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/data/accepts.js +20 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/data/support.js +23 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/data/var/acceptData.js +18 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/data/var/dataPriv.js +5 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/data/var/dataUser.js +5 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/deferred.js +158 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/deferred/exceptionHook.js +19 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/deprecated.js +32 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/dimensions.js +54 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/effects.js +629 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/effects/Tween.js +121 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/effects/animatedSelector.js +13 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/effects/support.js +58 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/event.js +710 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/event/ajax.js +20 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/event/alias.js +27 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/event/focusin.js +53 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/event/support.js +9 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/event/trigger.js +199 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/exports/amd.js +24 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/exports/global.js +26 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/intro.js +44 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/jquery.js +37 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/manipulation.js +481 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/manipulation/_evalUrl.js +20 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/manipulation/buildFragment.js +102 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/manipulation/createSafeFragment.js +20 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/manipulation/getAll.js +21 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/manipulation/setGlobalEval.js +20 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/manipulation/support.js +33 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/manipulation/var/nodeNames.js +5 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/manipulation/var/rcheckableType.js +3 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/manipulation/var/rleadingWhitespace.js +3 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/manipulation/var/rscriptType.js +3 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/manipulation/var/rtagName.js +3 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/manipulation/wrapMap.js +27 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/offset.js +218 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/outro.js +2 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/queue.js +143 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/queue/delay.js +22 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/selector-native.js +211 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/selector-sizzle.js +14 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/selector.js +1 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/serialize.js +125 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/support.js +63 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/traversing.js +175 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/traversing/findFilter.js +100 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/traversing/var/dir.js +20 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/traversing/var/rneedsContext.js +6 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/traversing/var/siblings.js +15 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/var/arr.js +3 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/var/class2type.js +5 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/var/concat.js +5 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/var/deletedIds.js +3 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/var/document.js +3 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/var/documentElement.js +5 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/var/hasOwn.js +5 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/var/indexOf.js +5 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/var/pnum.js +3 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/var/push.js +5 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/var/rcssNum.js +7 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/var/rnotwhite.js +3 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/var/slice.js +5 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/var/support.js +5 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/var/toString.js +5 -0
- data/public/node_modules/pivottable/node_modules/jquery/src/wrap.js +79 -0
- data/public/node_modules/pivottable/package.json +70 -0
- data/public/node_modules/pivottable/pivot.coffee +957 -0
- data/public/node_modules/pivottable/pivot.es.coffee +57 -0
- data/public/node_modules/pivottable/pivot.fr.coffee +57 -0
- data/public/node_modules/pivottable/pivot.nl.coffee +55 -0
- data/public/node_modules/pivottable/pivot.pt.coffee +80 -0
- data/public/node_modules/pivottable/pivot.ru.coffee +56 -0
- data/public/node_modules/pivottable/pivot.tr.coffee +80 -0
- data/public/node_modules/pivottable/pivottable.jquery.json +33 -0
- data/public/node_modules/pivottable/tests/boot.js +152 -0
- data/public/node_modules/pivottable/tests/index.html +35 -0
- data/public/node_modules/pivottable/tests/pivot_spec.coffee +458 -0
- data/public/vendor.js +5 -0
- metadata +232 -1
@@ -0,0 +1,35 @@
|
|
1
|
+
|
2
|
+
<!DOCTYPE html>
|
3
|
+
<html>
|
4
|
+
<head>
|
5
|
+
<meta charset="utf-8">
|
6
|
+
<title>Jasmine Spec Runner</title>
|
7
|
+
|
8
|
+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.4.1/jasmine.css">
|
9
|
+
|
10
|
+
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.4.1/jasmine.js"></script>
|
11
|
+
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.4.1/jasmine-html.js"></script>
|
12
|
+
|
13
|
+
<!-- boot.js is patched to not execute env, so we can execute after compilation of tests -->
|
14
|
+
<script type="text/javascript" src="boot.js"></script>
|
15
|
+
|
16
|
+
<script type="text/javascript" src="http://coffeescript.org/extras/coffee-script.js"></script>
|
17
|
+
|
18
|
+
<!-- include source files here... -->
|
19
|
+
|
20
|
+
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
|
21
|
+
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
|
22
|
+
<script src="../dist/pivot.js"></script>
|
23
|
+
|
24
|
+
<!-- include spec files here... -->
|
25
|
+
<script type="text/coffeescript" src="pivot_spec.coffee"></script>
|
26
|
+
|
27
|
+
<script type="text/coffeescript">
|
28
|
+
$ -> jasmine.getEnv().execute()
|
29
|
+
</script>
|
30
|
+
|
31
|
+
</head>
|
32
|
+
|
33
|
+
<body>
|
34
|
+
</body>
|
35
|
+
</html>
|
@@ -0,0 +1,458 @@
|
|
1
|
+
fixtureData = [
|
2
|
+
["name", "gender", "colour", "birthday", "trials", "successes"],
|
3
|
+
["Nick", "male", "blue", "1982-11-07", 103, 12],
|
4
|
+
["Jane", "female", "red", "1982-11-08", 95, 25],
|
5
|
+
["John", "male", "blue", "1982-12-08", 112, 30],
|
6
|
+
["Carol", "female", "yellow", "1983-12-08", 102, 14]
|
7
|
+
]
|
8
|
+
|
9
|
+
|
10
|
+
describe "$.pivotUI()", ->
|
11
|
+
describe "with no rows/cols, default count aggregator, default TableRenderer", ->
|
12
|
+
table = null
|
13
|
+
|
14
|
+
beforeEach (done) ->
|
15
|
+
table = $("<div>").pivotUI fixtureData, onRefresh: done
|
16
|
+
it "has all the basic UI elements", (done) ->
|
17
|
+
expect table.find("td.pvtAxisContainer").length
|
18
|
+
.toBe 3
|
19
|
+
expect table.find("td.pvtRendererArea").length
|
20
|
+
.toBe 1
|
21
|
+
expect table.find("td.pvtVals").length
|
22
|
+
.toBe 1
|
23
|
+
expect table.find("select.pvtRenderer").length
|
24
|
+
.toBe 1
|
25
|
+
expect table.find("select.pvtAggregator").length
|
26
|
+
.toBe 1
|
27
|
+
expect table.find("span.pvtAttr").length
|
28
|
+
.toBe 6
|
29
|
+
done()
|
30
|
+
|
31
|
+
it "reflects its inputs", (done) ->
|
32
|
+
expect table.find("td.pvtUnused span.pvtAttr").length
|
33
|
+
.toBe 6
|
34
|
+
expect table.find("select.pvtRenderer").val()
|
35
|
+
.toBe "Table"
|
36
|
+
expect table.find("select.pvtAggregator").val()
|
37
|
+
.toBe "Count"
|
38
|
+
done()
|
39
|
+
|
40
|
+
it "renders a table", (done) ->
|
41
|
+
expect table.find("table.pvtTable").length
|
42
|
+
.toBe 1
|
43
|
+
done()
|
44
|
+
|
45
|
+
|
46
|
+
describe "its renderer output", ->
|
47
|
+
it "has the correct type and number of cells", (done) ->
|
48
|
+
expect table.find("th.pvtTotalLabel").length
|
49
|
+
.toBe 1
|
50
|
+
expect table.find("td.pvtGrandTotal").length
|
51
|
+
.toBe 1
|
52
|
+
done()
|
53
|
+
|
54
|
+
it "has the correct textual representation", (done) ->
|
55
|
+
expect table.find("table.pvtTable").text()
|
56
|
+
.toBe ["Totals", "4"].join("")
|
57
|
+
done()
|
58
|
+
|
59
|
+
it "has a correct grand total with data value", (done) ->
|
60
|
+
expect table.find("td.pvtGrandTotal").text()
|
61
|
+
.toBe "4"
|
62
|
+
expect table.find("td.pvtGrandTotal").data("value")
|
63
|
+
.toBe 4
|
64
|
+
done()
|
65
|
+
|
66
|
+
describe "with rows/cols, sum-over-sum aggregator, Heatmap renderer", ->
|
67
|
+
table = null
|
68
|
+
|
69
|
+
beforeEach (done) ->
|
70
|
+
table = $("<div>").pivotUI fixtureData,
|
71
|
+
rows: ["gender"], cols: ["colour"]
|
72
|
+
aggregatorName: "Sum over Sum"
|
73
|
+
vals: ["successes", "trials"]
|
74
|
+
rendererName: "Heatmap"
|
75
|
+
onRefresh: done
|
76
|
+
|
77
|
+
it "has all the basic UI elements", (done) ->
|
78
|
+
expect table.find("td.pvtAxisContainer").length
|
79
|
+
.toBe 3
|
80
|
+
expect table.find("td.pvtRendererArea").length
|
81
|
+
.toBe 1
|
82
|
+
expect table.find("td.pvtVals").length
|
83
|
+
.toBe 1
|
84
|
+
expect table.find("select.pvtRenderer").length
|
85
|
+
.toBe 1
|
86
|
+
expect table.find("select.pvtAggregator").length
|
87
|
+
.toBe 1
|
88
|
+
expect table.find("span.pvtAttr").length
|
89
|
+
.toBe 6
|
90
|
+
done()
|
91
|
+
|
92
|
+
it "reflects its inputs", (done) ->
|
93
|
+
expect table.find("td.pvtUnused span.pvtAttr").length
|
94
|
+
.toBe 4
|
95
|
+
expect table.find("td.pvtRows span.pvtAttr").length
|
96
|
+
.toBe 1
|
97
|
+
expect table.find("td.pvtCols span.pvtAttr").length
|
98
|
+
.toBe 1
|
99
|
+
expect table.find("select.pvtRenderer").val()
|
100
|
+
.toBe "Heatmap"
|
101
|
+
expect table.find("select.pvtAggregator").val()
|
102
|
+
.toBe "Sum over Sum"
|
103
|
+
done()
|
104
|
+
|
105
|
+
it "renders a table", (done) ->
|
106
|
+
expect table.find("table.pvtTable").length
|
107
|
+
.toBe 1
|
108
|
+
done()
|
109
|
+
|
110
|
+
describe "its renderer output", ->
|
111
|
+
it "has the correct type and number of cells", (done) ->
|
112
|
+
expect table.find("th.pvtAxisLabel").length
|
113
|
+
.toBe 2
|
114
|
+
expect table.find("th.pvtRowLabel").length
|
115
|
+
.toBe 2
|
116
|
+
expect table.find("th.pvtColLabel").length
|
117
|
+
.toBe 3
|
118
|
+
expect table.find("th.pvtTotalLabel").length
|
119
|
+
.toBe 2
|
120
|
+
expect table.find("td.pvtVal").length
|
121
|
+
.toBe 6
|
122
|
+
expect table.find("td.pvtTotal").length
|
123
|
+
.toBe 5
|
124
|
+
expect table.find("td.pvtGrandTotal").length
|
125
|
+
.toBe 1
|
126
|
+
done()
|
127
|
+
|
128
|
+
it "has the correct textual representation", (done) ->
|
129
|
+
expect table.find("table.pvtTable").text()
|
130
|
+
.toBe [
|
131
|
+
"colour", "blue", "red", "yellow", "Totals",
|
132
|
+
"gender",
|
133
|
+
"female", "0.26", "0.14", "0.20",
|
134
|
+
"male", "0.20", "0.20",
|
135
|
+
"Totals", "0.20", "0.26", "0.14", "0.20"
|
136
|
+
].join("")
|
137
|
+
done()
|
138
|
+
|
139
|
+
it "has a correct spot-checked cell with data value", (done) ->
|
140
|
+
expect table.find("td.col0.row1").text()
|
141
|
+
.toBe "0.20"
|
142
|
+
expect table.find("td.col0.row1").data("value")
|
143
|
+
.toBe (12+30)/(103+112)
|
144
|
+
done()
|
145
|
+
|
146
|
+
describe "$.pivot()", ->
|
147
|
+
|
148
|
+
describe "with no rows/cols, default count aggregator, default TableRenderer", ->
|
149
|
+
table = $("<div>").pivot fixtureData
|
150
|
+
|
151
|
+
it "renders a table", ->
|
152
|
+
expect table.find("table.pvtTable").length
|
153
|
+
.toBe 1
|
154
|
+
|
155
|
+
describe "its renderer output", ->
|
156
|
+
|
157
|
+
it "has the correct textual representation", ->
|
158
|
+
expect table.find("table.pvtTable").text()
|
159
|
+
.toBe ["Totals", "4"].join("")
|
160
|
+
|
161
|
+
it "has a correct grand total with data value", ->
|
162
|
+
expect table.find("td.pvtGrandTotal").text()
|
163
|
+
.toBe "4"
|
164
|
+
expect table.find("td.pvtGrandTotal").data("value")
|
165
|
+
.toBe 4
|
166
|
+
|
167
|
+
describe "with rows/cols, sum aggregator, derivedAttributes, filter and sorters", ->
|
168
|
+
{sortAs, derivers, aggregators} = $.pivotUtilities
|
169
|
+
table = $("<div>").pivot fixtureData,
|
170
|
+
rows: ["gender"], cols: ["birthyear"], aggregator: aggregators["Sum"](["trialbins"])
|
171
|
+
filter: (record) -> record.name != "Nick"
|
172
|
+
derivedAttributes:
|
173
|
+
birthyear: derivers.dateFormat "birthday", "%y"
|
174
|
+
trialbins: derivers.bin "trials", 10
|
175
|
+
sorters: (attr) ->
|
176
|
+
if attr == "gender" then return sortAs(["male", "female"])
|
177
|
+
|
178
|
+
it "renders a table with the correct textual representation", ->
|
179
|
+
expect table.find("table.pvtTable").text()
|
180
|
+
.toBe [
|
181
|
+
"birthyear", "1982", "1983", "Totals"
|
182
|
+
"gender",
|
183
|
+
"male", "110.00", "110.00"
|
184
|
+
"female", "90.00", "100.00", "190.00"
|
185
|
+
"Totals", "200.00", "100.00", "300.00"
|
186
|
+
].join("")
|
187
|
+
|
188
|
+
describe "with rows/cols, fraction-of aggregator", ->
|
189
|
+
{aggregators} = $.pivotUtilities
|
190
|
+
table = $("<div>").pivot fixtureData,
|
191
|
+
rows: ["gender"]
|
192
|
+
aggregator: aggregators["Sum as Fraction of Total"](["trials"])
|
193
|
+
|
194
|
+
it "renders a table with the correct textual representation", ->
|
195
|
+
expect table.find("table.pvtTable").text()
|
196
|
+
.toBe [
|
197
|
+
"gender", "Totals"
|
198
|
+
"female", "47.8%"
|
199
|
+
"male", "52.2%"
|
200
|
+
"Totals", "100.0%"
|
201
|
+
].join("")
|
202
|
+
|
203
|
+
describe "with rows/cols, custom aggregator, custom renderer with options", ->
|
204
|
+
received_PivotData = null
|
205
|
+
received_rendererOptions = null
|
206
|
+
|
207
|
+
table = $("<div>").pivot fixtureData,
|
208
|
+
rows: ["name", "colour"], cols: ["trials", "successes"]
|
209
|
+
aggregator: ->
|
210
|
+
count2x: 0
|
211
|
+
push: -> @count2x +=2
|
212
|
+
value: -> @count2x
|
213
|
+
format: (x) -> "formatted " + x
|
214
|
+
renderer: (a,b) ->
|
215
|
+
received_PivotData = a
|
216
|
+
received_rendererOptions = b
|
217
|
+
return $("<div>").addClass(b.greeting).text("world")
|
218
|
+
rendererOptions: {greeting:"hithere"}
|
219
|
+
|
220
|
+
it "renders the custom renderer as per options", ->
|
221
|
+
expect table.find("div.hithere").length
|
222
|
+
.toBe 1
|
223
|
+
|
224
|
+
describe "its received PivotData object", ->
|
225
|
+
it "has a correct grand total value and format for custom aggregator", ->
|
226
|
+
agg = received_PivotData.getAggregator([],[])
|
227
|
+
val = agg.value()
|
228
|
+
expect(val).toBe 8
|
229
|
+
expect(agg.format(val)).toBe "formatted 8"
|
230
|
+
|
231
|
+
describe "$.pivotUtilities", ->
|
232
|
+
|
233
|
+
describe ".PivotData()", ->
|
234
|
+
sumOverSumOpts =
|
235
|
+
rows: [], cols: []
|
236
|
+
aggregator: $.pivotUtilities.aggregators["Sum over Sum"](["a","b"])
|
237
|
+
filter: -> true
|
238
|
+
sorters: ->
|
239
|
+
|
240
|
+
describe "with array-of-array input", ->
|
241
|
+
aoaInput = [ ["a","b"], [1,2], [3,4] ]
|
242
|
+
pd = new $.pivotUtilities.PivotData aoaInput, sumOverSumOpts
|
243
|
+
|
244
|
+
it "has the correct grand total value", ->
|
245
|
+
expect pd.getAggregator([],[]).value()
|
246
|
+
.toBe (1+3)/(2+4)
|
247
|
+
|
248
|
+
describe "with array-of-object input", ->
|
249
|
+
aosInput = [ {a:1, b:2}, {a:3, b:4} ]
|
250
|
+
pd = new $.pivotUtilities.PivotData aosInput, sumOverSumOpts
|
251
|
+
|
252
|
+
it "has the correct grand total value", ->
|
253
|
+
expect pd.getAggregator([],[]).value()
|
254
|
+
.toBe (1+3)/(2+4)
|
255
|
+
|
256
|
+
describe "with function input", ->
|
257
|
+
functionInput = (record) ->
|
258
|
+
record a:1, b:2
|
259
|
+
record a:3, b:4
|
260
|
+
pd = new $.pivotUtilities.PivotData functionInput, sumOverSumOpts
|
261
|
+
|
262
|
+
it "has the correct grand total value", ->
|
263
|
+
expect pd.getAggregator([],[]).value()
|
264
|
+
.toBe (1+3)/(2+4)
|
265
|
+
|
266
|
+
describe "with jQuery table element input", ->
|
267
|
+
tableInput = $ """
|
268
|
+
<table>
|
269
|
+
<thead>
|
270
|
+
<tr> <th>a</th><th>b</th> </tr>
|
271
|
+
</thead>
|
272
|
+
<tbody>
|
273
|
+
<tr> <td>1</td> <td>2</td> </tr>
|
274
|
+
<tr> <td>3</td> <td>4</td> </tr>
|
275
|
+
</tbody>
|
276
|
+
</table>
|
277
|
+
"""
|
278
|
+
|
279
|
+
pd = new $.pivotUtilities.PivotData tableInput, sumOverSumOpts
|
280
|
+
|
281
|
+
it "has the correct grand total value", ->
|
282
|
+
expect pd.getAggregator([],[]).value()
|
283
|
+
.toBe (1+3)/(2+4)
|
284
|
+
|
285
|
+
|
286
|
+
describe "with rows/cols, no filters/sorters, count aggregator", ->
|
287
|
+
pd = new $.pivotUtilities.PivotData fixtureData,
|
288
|
+
rows: ["name", "colour"],
|
289
|
+
cols: ["trials", "successes"],
|
290
|
+
aggregator: $.pivotUtilities.aggregators["Count"](),
|
291
|
+
filter: -> true
|
292
|
+
sorters: ->
|
293
|
+
|
294
|
+
it "has correctly-ordered row keys", ->
|
295
|
+
expect pd.getRowKeys()
|
296
|
+
.toEqual [ [ 'Carol', 'yellow' ], [ 'Jane', 'red' ], [ 'John', 'blue' ], [ 'Nick', 'blue' ] ]
|
297
|
+
|
298
|
+
it "has correctly-ordered col keys", ->
|
299
|
+
expect pd.getColKeys()
|
300
|
+
.toEqual [ [ 95, 25 ], [ 102, 14 ], [ 103, 12 ], [ 112, 30 ] ]
|
301
|
+
|
302
|
+
it "can be iterated over", ->
|
303
|
+
numNotNull = 0
|
304
|
+
numNull = 0
|
305
|
+
for r in pd.getRowKeys()
|
306
|
+
for c in pd.getColKeys()
|
307
|
+
if pd.getAggregator(r, c).value()?
|
308
|
+
numNotNull++
|
309
|
+
else
|
310
|
+
numNull++
|
311
|
+
expect numNotNull
|
312
|
+
.toBe 4
|
313
|
+
expect numNull
|
314
|
+
.toBe 12
|
315
|
+
|
316
|
+
it "has a correct spot-checked aggregator", ->
|
317
|
+
agg = pd.getAggregator([ 'Carol', 'yellow' ],[ 102, 14 ])
|
318
|
+
val = agg.value()
|
319
|
+
expect(val).toBe 1
|
320
|
+
expect(agg.format(val)).toBe "1"
|
321
|
+
|
322
|
+
it "has a correct grand total aggregator", ->
|
323
|
+
agg = pd.getAggregator([],[])
|
324
|
+
val = agg.value()
|
325
|
+
expect(val).toBe 4
|
326
|
+
expect(agg.format(val)).toBe "4"
|
327
|
+
|
328
|
+
describe ".naturalSort()", ->
|
329
|
+
naturalSort = $.pivotUtilities.naturalSort
|
330
|
+
|
331
|
+
it "sorts numbers", ->
|
332
|
+
expect [2,1,3,4,0].sort naturalSort
|
333
|
+
.toEqual [0,1,2,3,4]
|
334
|
+
|
335
|
+
it "sorts strings", ->
|
336
|
+
expect ['b','a','c','d'].sort naturalSort
|
337
|
+
.toEqual ['a','b','c','d']
|
338
|
+
|
339
|
+
it "sorts numbers in strings", ->
|
340
|
+
expect ['1','12','2','10','11','112'].sort naturalSort
|
341
|
+
.toEqual ['1','2','10','11','12','112']
|
342
|
+
|
343
|
+
it "sorts 0-padded numbers", ->
|
344
|
+
expect ['02','01','10','11'].sort naturalSort
|
345
|
+
.toEqual ['01','02','10','11']
|
346
|
+
|
347
|
+
describe ".sortAs()", ->
|
348
|
+
sortAs = $.pivotUtilities.sortAs
|
349
|
+
|
350
|
+
it "sorts with unknown values sorted at the end", ->
|
351
|
+
expect [5,2,3,4,1].sort sortAs([4,3,2])
|
352
|
+
.toEqual [4,3,2,1,5]
|
353
|
+
|
354
|
+
describe ".numberFormat()", ->
|
355
|
+
numberFormat = $.pivotUtilities.numberFormat
|
356
|
+
|
357
|
+
it "formats numbers", ->
|
358
|
+
nf = numberFormat()
|
359
|
+
expect nf 1234567.89123456
|
360
|
+
.toEqual "1,234,567.89"
|
361
|
+
|
362
|
+
it "formats booleans", ->
|
363
|
+
nf = numberFormat()
|
364
|
+
expect nf true
|
365
|
+
.toEqual "1.00"
|
366
|
+
|
367
|
+
it "formats numbers in strings", ->
|
368
|
+
nf = numberFormat()
|
369
|
+
expect nf "1234567.89123456"
|
370
|
+
.toEqual "1,234,567.89"
|
371
|
+
|
372
|
+
it "doesn't formats strings", ->
|
373
|
+
nf = numberFormat()
|
374
|
+
expect nf "hi there"
|
375
|
+
.toEqual ""
|
376
|
+
|
377
|
+
it "doesn't formats objects", ->
|
378
|
+
nf = numberFormat()
|
379
|
+
expect nf {a:1}
|
380
|
+
.toEqual ""
|
381
|
+
|
382
|
+
it "formats percentages", ->
|
383
|
+
nf = numberFormat(scaler: 100, suffix: "%")
|
384
|
+
expect nf 0.12345
|
385
|
+
.toEqual "12.35%"
|
386
|
+
|
387
|
+
it "adds separators", ->
|
388
|
+
nf = numberFormat(thousandsSep: "a", decimalSep: "b")
|
389
|
+
expect nf 1234567.89123456
|
390
|
+
.toEqual "1a234a567b89"
|
391
|
+
|
392
|
+
it "adds prefixes and suffixes", ->
|
393
|
+
nf = numberFormat(prefix: "a", suffix: "b")
|
394
|
+
expect nf 1234567.89123456
|
395
|
+
.toEqual "a1,234,567.89b"
|
396
|
+
|
397
|
+
it "scales and rounds", ->
|
398
|
+
nf = numberFormat(digitsAfterDecimal: 3, scaler: 1000)
|
399
|
+
expect nf 1234567.89123456
|
400
|
+
.toEqual "1,234,567,891.235"
|
401
|
+
|
402
|
+
it "shows and hides zero", ->
|
403
|
+
nf = numberFormat(showZero: true)
|
404
|
+
expect nf 0
|
405
|
+
.toEqual "0.00"
|
406
|
+
|
407
|
+
nf = numberFormat(showZero: false)
|
408
|
+
expect nf 0
|
409
|
+
.toEqual ""
|
410
|
+
|
411
|
+
describe ".derivers", ->
|
412
|
+
describe ".dateFormat()", ->
|
413
|
+
df = $.pivotUtilities.derivers.dateFormat "x", "abc % %% %%% %a %y %m %n %d %w %x %H %M %S", true
|
414
|
+
|
415
|
+
it "formats date objects", ->
|
416
|
+
expect df {x: new Date("2015-01-02T23:43:11Z")}
|
417
|
+
.toBe 'abc % %% %%% %a 2015 01 Jan 02 Fri 5 23 43 11'
|
418
|
+
|
419
|
+
it "formats input parsed by Date.parse()", ->
|
420
|
+
expect df {x: "2015-01-02T23:43:11Z"}
|
421
|
+
.toBe 'abc % %% %%% %a 2015 01 Jan 02 Fri 5 23 43 11'
|
422
|
+
|
423
|
+
expect df {x: "bla"}
|
424
|
+
.toBe ''
|
425
|
+
|
426
|
+
describe ".bin()", ->
|
427
|
+
binner = $.pivotUtilities.derivers.bin "x", 10
|
428
|
+
|
429
|
+
it "bins numbers", ->
|
430
|
+
expect binner {x: 11}
|
431
|
+
.toBe 10
|
432
|
+
|
433
|
+
expect binner {x: 9}
|
434
|
+
.toBe 0
|
435
|
+
|
436
|
+
expect binner {x: 111}
|
437
|
+
.toBe 110
|
438
|
+
|
439
|
+
it "bins booleans", ->
|
440
|
+
expect binner {x: true}
|
441
|
+
.toBe 0
|
442
|
+
|
443
|
+
it "bins negative numbers", ->
|
444
|
+
expect binner {x: -12}
|
445
|
+
.toBe -10
|
446
|
+
|
447
|
+
it "doesn't bin strings", ->
|
448
|
+
expect binner {x: "a"}
|
449
|
+
.toBeNaN()
|
450
|
+
|
451
|
+
it "doesn't bin objects", ->
|
452
|
+
expect binner {x: {a:1}}
|
453
|
+
.toBeNaN()
|
454
|
+
|
455
|
+
# todo
|
456
|
+
# agg templates
|
457
|
+
# date.parse -> date() ?
|
458
|
+
# default options for PivotData, including filter
|