├── .gitignore ├── CNAME ├── CONTRIBUTING.md ├── LICENSE.md ├── README.md ├── SUPPORT.md ├── bower.json ├── composer.json ├── dist ├── c3_renderers.js ├── c3_renderers.js.map ├── c3_renderers.min.js ├── c3_renderers.min.js.map ├── d3_renderers.js ├── d3_renderers.js.map ├── d3_renderers.min.js ├── d3_renderers.min.js.map ├── export_renderers.js ├── export_renderers.js.map ├── export_renderers.min.js ├── export_renderers.min.js.map ├── gchart_renderers.js ├── gchart_renderers.js.map ├── gchart_renderers.min.js ├── gchart_renderers.min.js.map ├── pivot.cs.js ├── pivot.cs.js.map ├── pivot.cs.min.js ├── pivot.cs.min.js.map ├── pivot.css ├── pivot.da.js ├── pivot.da.js.map ├── pivot.da.min.js ├── pivot.da.min.js.map ├── pivot.de.js ├── pivot.de.js.map ├── pivot.de.min.js ├── pivot.de.min.js.map ├── pivot.es.js ├── pivot.es.js.map ├── pivot.es.min.js ├── pivot.es.min.js.map ├── pivot.fr.js ├── pivot.fr.js.map ├── pivot.fr.min.js ├── pivot.fr.min.js.map ├── pivot.it.js ├── pivot.it.js.map ├── pivot.it.min.js ├── pivot.it.min.js.map ├── pivot.jp.js ├── pivot.jp.js.map ├── pivot.jp.min.js ├── pivot.jp.min.js.map ├── pivot.js ├── pivot.js.map ├── pivot.min.css ├── pivot.min.js ├── pivot.min.js.map ├── pivot.nl.js ├── pivot.nl.js.map ├── pivot.nl.min.js ├── pivot.nl.min.js.map ├── pivot.pl.js ├── pivot.pl.js.map ├── pivot.pl.min.js ├── pivot.pl.min.js.map ├── pivot.pt.js ├── pivot.pt.js.map ├── pivot.pt.min.js ├── pivot.pt.min.js.map ├── pivot.ru.js ├── pivot.ru.js.map ├── pivot.ru.min.js ├── pivot.ru.min.js.map ├── pivot.sq.js ├── pivot.sq.js.map ├── pivot.sq.min.js ├── pivot.sq.min.js.map ├── pivot.tr.js ├── pivot.tr.js.map ├── pivot.tr.min.js ├── pivot.tr.min.js.map ├── pivot.zh.js ├── pivot.zh.js.map ├── pivot.zh.min.js ├── pivot.zh.min.js.map ├── pivot_spec.js ├── pivot_spec.js.map ├── pivot_spec.min.js ├── pivot_spec.min.js.map ├── plotly_renderers.js ├── plotly_renderers.js.map ├── plotly_renderers.min.js ├── plotly_renderers.min.js.map └── tips_data.min.js ├── examples ├── c3.html ├── d3.html ├── fully_loaded.html ├── gchart.html ├── gh-fork-ribbon.css ├── gh-fork-ribbon.ie.css ├── index.html ├── local.html ├── montreal_2014.csv ├── montreal_2014.html ├── mps.csv ├── mps.html ├── mps.json ├── mps_agg.html ├── mps_csv.html ├── mps_export.html ├── mps_fr.html ├── mps_prepop.html ├── mps_rename.html ├── onrefresh.html ├── perf.html ├── plotly.html ├── rcsvs.html ├── save_restore.html ├── scatter.html ├── show_code.js ├── simple.html ├── simple_agg.html ├── simple_function.html ├── simple_ui.html ├── simple_ui_from_table.html └── text_config.html ├── gulpFile.js ├── images ├── animation.gif ├── cdnjs.svg ├── filters.png ├── gender_age_bins.png ├── gender_imbalance.png ├── gender_imbalance_instructions.png ├── initial_state.png ├── license.svg ├── npm.svg ├── province_x_party_heatmap.png ├── province_x_party_heatmap_instructions.png ├── simple.png ├── simple_ui.png ├── tests.svg └── whats_what.png ├── index.html ├── locales ├── pivot.cs.coffee ├── pivot.da.coffee ├── pivot.de.coffee ├── pivot.es.coffee ├── pivot.fr.coffee ├── pivot.it.coffee ├── pivot.jp.coffee ├── pivot.nl.coffee ├── pivot.pl.coffee ├── pivot.pt.coffee ├── pivot.ru.coffee ├── pivot.sq.coffee ├── pivot.tr.coffee └── pivot.zh.coffee ├── package-lock.json ├── package.json ├── src ├── c3_renderers.coffee ├── d3_renderers.coffee ├── export_renderers.coffee ├── gchart_renderers.coffee ├── pivot.coffee └── plotly_renderers.coffee └── tests ├── index.html └── pivot_spec.coffee /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | bower_components 3 | .idea/ 4 | Rdatasets 5 | /vendor/ 6 | composer.lock 7 | 8 | yarn.lock 9 | -------------------------------------------------------------------------------- /CNAME: -------------------------------------------------------------------------------- 1 | pivottable.js.org 2 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | ## Issues 2 | 3 | [Issues](https://github.com/nicolaskruchten/pivottable/issues/new) are the preferred way to communicate with the author and users of PivotTable.js, rather than private email. 4 | 5 | * Please read this repo's [guidelines regarding issues](https://github.com/nicolaskruchten/pivottable/blob/master/SUPPORT.md). 6 | 7 | ## Pull Requests 8 | 9 | [Pull requests](https://help.github.com/articles/using-pull-requests) to this project are very welcome! They are most likely to be merged in if they conform to this project's basic goals, scope and structure: 10 | 11 | * If accepted, you agree that your pull-requests will be released to the world under the same license as the rest of the code: the [MIT license](LICENSE.md). 12 | * It's probably best to [log an issue](https://github.com/nicolaskruchten/pivottable/issues/new) to report a bug or ask how something was meant to be done before jumping in and modifying the code, if only to confirm that there isn't another way to do what you're aiming for, and to increase the odds that your pull request will be merged :) 13 | * Multiple small pull requests which aim to solve clearly-stated problems are preferable to large pull requests which make many unrelated changes 14 | * The code for this project is written in CoffeeScript and thereafter compiled to Javascript, so it would be best to submit modifications to the CoffeeScript source files rather than to the automatically-generated Javascript source files (please reach out if you've made some neat modifications to the Javascript and want help 'porting' back up to the CoffeeScript version). 15 | * Releases for this project are built using the Gulp build system, and the resulting build products (located under `dist`) are tested with the Jasmine test suite under `tests`. See the building/test section of the main [ReadMe](https://github.com/nicolaskruchten/pivottable/blob/master/ReadMe.md) for details. 16 | * The aim of this project is to have an extensible core component that fits into a single smallish file ([pivot.coffee](https://github.com/nicolaskruchten/pivottable/blob/master/src/pivot.coffee)), which depends only on the jQuery and jQueryUI core. If you want to submit changes which depend on other libraries, please submit them as separate 'plugin' files like the Google Chart or D3 renderers. 17 | * This is a cross-browser, client-side library with very little (if any) browser-specific shim code, so please try to submit modifications that work with as many browsers as possible and which don't require any server-side components 18 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2012 Nicolas Kruchten, Datacratic, other contributors 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 10 | -------------------------------------------------------------------------------- /SUPPORT.md: -------------------------------------------------------------------------------- 1 | ## Issues 2 | 3 | [Issues](https://github.com/nicolaskruchten/pivottable/issues/new) are the preferred way to communicate with the author and users of PivotTable.js, rather than private email. 4 | 5 | * Please remember that this project was built almost entirely in unpaid time, and that all support requests are responded to on a volunteer basis. This means that even if your request is very important to you and you urgently need help, this will likely not translate into urgency for the people responding. 6 | * Please read the [Frequently Asked Questions](https://github.com/nicolaskruchten/pivottable/wiki/Frequently-Asked-Questions) before creating an issue. 7 | * If you have multiple questions, please create multiple issues. 8 | * Please avoid adding a comment to an existing issue to ask an unrelated question, especially if it's already closed. Instead, create a new issue and refer to the older one if it's related. 9 | * When creating issue to report a problem, please try to provide a replicable test case (code, a set of steps and/or a URL demonstrating the problem) so that others can help you. 10 | * When showing your code, please use *text* rather than screenshots of code! 11 | -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pivottable", 3 | "description": "Javascript Pivot Table (aka Pivot Grid, Pivot Chart, Cross-Tab) implementation with drag'n'drop", 4 | "version": "2.23.0", 5 | "main": [ 6 | "dist/pivot.js", 7 | "dist/pivot.css" 8 | ], 9 | "license": "MIT", 10 | "ignore": [ 11 | "examples" 12 | ], 13 | "keywords": [ 14 | "pivot", 15 | "crosstab", 16 | "grid", 17 | "table", 18 | "pivottable", 19 | "pivotgrid", 20 | "pivotchart", 21 | "jquery" 22 | ], 23 | "homepage": "https://pivottable.js.org", 24 | "repository": { 25 | "type": "git", 26 | "url": "git://github.com/nicolaskruchten/pivottable.git" 27 | }, 28 | "dependencies": { 29 | "jquery": ">=1.9.0" 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nicolaskruchten/pivottable", 3 | "description": "Javascript Pivot Table (aka Pivot Grid, Pivot Chart, Cross-Tab) implementation with drag'n'drop.", 4 | "keywords": [ 5 | "pivot", 6 | "crosstab", 7 | "grid", 8 | "table", 9 | "pivottable", 10 | "pivotgrid", 11 | "pivotchart", 12 | "jquery", 13 | "jquery-plugin" 14 | ], 15 | "minimum-stability": "stable", 16 | "homepage": "https://pivottable.js.org/", 17 | "require": { 18 | "components/jquery": ">=1.9" 19 | }, 20 | "license": "MIT", 21 | "authors": [ 22 | { 23 | "name": "Nicolas Kruchten", 24 | "email": "nicolas@kruchten.com" 25 | } 26 | ] 27 | } 28 | -------------------------------------------------------------------------------- /dist/c3_renderers.min.js: -------------------------------------------------------------------------------- 1 | (function(){var t;(t=function(t){return"object"==typeof exports&&"object"==typeof module?t(require("jquery"),require("c3")):"function"==typeof define&&define.amd?define(["jquery","c3"],t):t(jQuery,c3)})(function(t,e){var n;return n=function(n){return null==n&&(n={}),function(r,a){var o,l,i,u,s,c,h,g,p,d,f,y,v,x,b,j,m,z,w,k,A,C,S,q,B,H,_,F,K,T,L,N,Q,R,U,W,D,E,G,I,J,M,O,P,V,X,Y,Z,$,tt,et,nt,rt,at,ot,lt,it,ut;if(m={localeStrings:{vs:"vs",by:"by"},c3:{}},a=t.extend(!0,{},m,a),null==(i=a.c3).size&&(i.size={}),null==(u=a.c3.size).width&&(u.width=window.innerWidth/1.4),null==(s=a.c3.size).height&&(s.height=window.innerHeight/1.4-50),null==n.type&&(n.type="line"),null==n.horizontal&&(n.horizontal=!1),null==n.stacked&&(n.stacked=!1),Y=r.getRowKeys(),0===Y.length&&Y.push([]),x=r.getColKeys(),0===x.length&&x.push([]),S=function(){var t,e,n;for(n=[],t=0,e=x.length;t50&&(O=45),b=[],_=0,L=Y.length;_",{style:"text-align: center; font-weight: bold"}),et.text(nt),z=r.getAggregator([],[]).format,W={axis:{rotated:n.horizontal,y:{label:rt,tick:{}},x:{label:C,tick:{rotate:O,multiline:!1}}},data:{type:n.type,order:null},tooltip:{grouped:!1},color:{pattern:["#3366cc","#dc3912","#ff9900","#109618","#990099","#0099c6","#dd4477","#66aa00","#b82e2e","#316395","#994499","#22aa99","#aaaa11","#6633cc","#e67300","#8b0707","#651067","#329262","#5574a6","#3b3eac"]}},W=t.extend(!0,{},W,a.c3),"scatter"===n.type){it={},U=0,j=[];for(Z in $.x)U+=1,it[Z]=Z+"_x",j.push([Z+"_x"].concat($.x[Z])),j.push([Z].concat($.y[Z]));W.data.xs=it,W.data.columns=j,W.axis.x.tick={fit:!1},1===U&&(W.legend={show:!1}),W.tooltip.format={title:function(){return w},name:function(){return""},value:function(t,e,n,r,a){var o;return o=a[0],tt=o.name,ut=o.value,lt=o.x,z($.t[tt][lt][ut])}}}else W.axis.x.type="category",null==(d=W.axis.y.tick).format&&(d.format=function(t){return z(t)}),W.tooltip.format={value:function(t){return z(t)}},n.horizontal?(y=function(){var t,e,n;for(n=[],e=0,t=b.length;e",{style:"display:none;"}).appendTo(t("body")),M=t("
").appendTo(J),W.bindto=M[0],e.generate(W),M.detach(),J.remove(),t("
").append(et,M)}},t.pivotUtilities.c3_renderers={"Horizontal Bar Chart":n({type:"bar",horizontal:!0}),"Horizontal Stacked Bar Chart":n({type:"bar",stacked:!0,horizontal:!0}),"Bar Chart":n({type:"bar"}),"Stacked Bar Chart":n({type:"bar",stacked:!0}),"Line Chart":n(),"Area Chart":n({type:"area",stacked:!0}),"Scatter Chart":n({type:"scatter"})}})}).call(this); 2 | //# sourceMappingURL=c3_renderers.min.js.map 3 | -------------------------------------------------------------------------------- /dist/d3_renderers.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | var callWithJQuery; 3 | 4 | callWithJQuery = function(pivotModule) { 5 | if (typeof exports === "object" && typeof module === "object") { 6 | return pivotModule(require("jquery"), require("d3")); 7 | } else if (typeof define === "function" && define.amd) { 8 | return define(["jquery", "d3"], pivotModule); 9 | } else { 10 | return pivotModule(jQuery, d3); 11 | } 12 | }; 13 | 14 | callWithJQuery(function($, d3) { 15 | return $.pivotUtilities.d3_renderers = { 16 | Treemap: function(pivotData, opts) { 17 | var addToTree, color, defaults, height, i, len, ref, result, rowKey, tree, treemap, value, width; 18 | defaults = { 19 | localeStrings: {}, 20 | d3: { 21 | width: function() { 22 | return $(window).width() / 1.4; 23 | }, 24 | height: function() { 25 | return $(window).height() / 1.4; 26 | } 27 | } 28 | }; 29 | opts = $.extend(true, {}, defaults, opts); 30 | result = $("
").css({ 31 | width: "100%", 32 | height: "100%" 33 | }); 34 | tree = { 35 | name: "All", 36 | children: [] 37 | }; 38 | addToTree = function(tree, path, value) { 39 | var child, i, len, newChild, ref, x; 40 | if (path.length === 0) { 41 | tree.value = value; 42 | return; 43 | } 44 | if (tree.children == null) { 45 | tree.children = []; 46 | } 47 | x = path.shift(); 48 | ref = tree.children; 49 | for (i = 0, len = ref.length; i < len; i++) { 50 | child = ref[i]; 51 | if (!(child.name === x)) { 52 | continue; 53 | } 54 | addToTree(child, path, value); 55 | return; 56 | } 57 | newChild = { 58 | name: x 59 | }; 60 | addToTree(newChild, path, value); 61 | return tree.children.push(newChild); 62 | }; 63 | ref = pivotData.getRowKeys(); 64 | for (i = 0, len = ref.length; i < len; i++) { 65 | rowKey = ref[i]; 66 | value = pivotData.getAggregator(rowKey, []).value(); 67 | if (value != null) { 68 | addToTree(tree, rowKey, value); 69 | } 70 | } 71 | color = d3.scale.category10(); 72 | width = opts.d3.width(); 73 | height = opts.d3.height(); 74 | treemap = d3.layout.treemap().size([width, height]).sticky(true).value(function(d) { 75 | return d.size; 76 | }); 77 | d3.select(result[0]).append("div").style("position", "relative").style("width", width + "px").style("height", height + "px").datum(tree).selectAll(".node").data(treemap.padding([15, 0, 0, 0]).value(function(d) { 78 | return d.value; 79 | }).nodes).enter().append("div").attr("class", "node").style("background", function(d) { 80 | if (d.children != null) { 81 | return "lightgrey"; 82 | } else { 83 | return color(d.name); 84 | } 85 | }).text(function(d) { 86 | return d.name; 87 | }).call(function() { 88 | this.style("left", function(d) { 89 | return d.x + "px"; 90 | }).style("top", function(d) { 91 | return d.y + "px"; 92 | }).style("width", function(d) { 93 | return Math.max(0, d.dx - 1) + "px"; 94 | }).style("height", function(d) { 95 | return Math.max(0, d.dy - 1) + "px"; 96 | }); 97 | }); 98 | return result; 99 | } 100 | }; 101 | }); 102 | 103 | }).call(this); 104 | 105 | //# sourceMappingURL=d3_renderers.js.map 106 | -------------------------------------------------------------------------------- /dist/d3_renderers.min.js: -------------------------------------------------------------------------------- 1 | (function(){var e;(e=function(e){return"object"==typeof exports&&"object"==typeof module?e(require("jquery"),require("d3")):"function"==typeof define&&define.amd?define(["jquery","d3"],e):e(jQuery,d3)})(function(e,t){return e.pivotUtilities.d3_renderers={Treemap:function(n,i){var r,u,l,d,o,a,c,h,f,s,p,y,g;for(l={localeStrings:{},d3:{width:function(){return e(window).width()/1.4},height:function(){return e(window).height()/1.4}}},i=e.extend(!0,{},l,i),h=e("
").css({width:"100%",height:"100%"}),s={name:"All",children:[]},r=function(e,t,n){var i,u,l,d,o,a;if(0===t.length)return void(e.value=n);for(null==e.children&&(e.children=[]),a=t.shift(),o=e.children,u=0,l=o.length;u").text(text).css({ 71 | width: ($(window).width() / 2) + "px", 72 | height: ($(window).height() / 2) + "px" 73 | }); 74 | } 75 | }; 76 | }); 77 | 78 | }).call(this); 79 | 80 | //# sourceMappingURL=export_renderers.js.map 81 | -------------------------------------------------------------------------------- /dist/export_renderers.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"export_renderers.js","sources":["export_renderers.coffee"],"names":[],"mappings":"AAAA;AAAA,MAAA;;EAAA,cAAA,GAAiB,SAAC,WAAD;IACb,IAAG,OAAO,OAAP,KAAkB,QAAlB,IAA+B,OAAO,MAAP,KAAiB,QAAnD;aACI,WAAA,CAAY,OAAA,CAAQ,QAAR,CAAZ,EADJ;KAAA,MAEK,IAAG,OAAO,MAAP,KAAiB,UAAjB,IAAgC,MAAM,CAAC,GAA1C;aACD,MAAA,CAAO,CAAC,QAAD,CAAP,EAAmB,WAAnB,EADC;KAAA,MAAA;aAID,WAAA,CAAY,MAAZ,EAJC;;EAHQ;;EASjB,cAAA,CAAe,SAAC,CAAD;WAEX,CAAC,CAAC,cAAc,CAAC,gBAAjB,GAAoC;MAAA,YAAA,EAAc,SAAC,SAAD,EAAY,IAAZ;AAC9C,YAAA;QAAA,QAAA,GAAW;UAAA,aAAA,EAAe,EAAf;;QAEX,IAAA,GAAO,CAAC,CAAC,MAAF,CAAS,IAAT,EAAe,EAAf,EAAmB,QAAnB,EAA6B,IAA7B;QAEP,OAAA,GAAU,SAAS,CAAC,UAAV,CAAA;QACV,IAAmB,OAAO,CAAC,MAAR,KAAkB,CAArC;UAAA,OAAO,CAAC,IAAR,CAAa,EAAb,EAAA;;QACA,OAAA,GAAU,SAAS,CAAC,UAAV,CAAA;QACV,IAAmB,OAAO,CAAC,MAAR,KAAkB,CAArC;UAAA,OAAO,CAAC,IAAR,CAAa,EAAb,EAAA;;QACA,QAAA,GAAW,SAAS,CAAC;QACrB,QAAA,GAAW,SAAS,CAAC;QAErB,MAAA,GAAS;QAET,GAAA,GAAM;AACN,aAAA,0CAAA;;UACI,GAAG,CAAC,IAAJ,CAAS,OAAT;AADJ;QAEA,IAAG,OAAO,CAAC,MAAR,KAAkB,CAAlB,IAAwB,OAAQ,CAAA,CAAA,CAAE,CAAC,MAAX,KAAqB,CAAhD;UACI,GAAG,CAAC,IAAJ,CAAS,SAAS,CAAC,cAAnB,EADJ;SAAA,MAAA;AAGI,eAAA,2CAAA;;YACI,GAAG,CAAC,IAAJ,CAAS,MAAM,CAAC,IAAP,CAAY,GAAZ,CAAT;AADJ,WAHJ;;QAMA,MAAM,CAAC,IAAP,CAAY,GAAZ;AAEA,aAAA,2CAAA;;UACI,GAAA,GAAM;AACN,eAAA,0CAAA;;YACI,GAAG,CAAC,IAAJ,CAAS,CAAT;AADJ;AAGA,eAAA,2CAAA;;YACI,GAAA,GAAM,SAAS,CAAC,aAAV,CAAwB,MAAxB,EAAgC,MAAhC;YACN,IAAG,mBAAH;cACI,GAAG,CAAC,IAAJ,CAAS,GAAG,CAAC,KAAJ,CAAA,CAAT,EADJ;aAAA,MAAA;cAGI,GAAG,CAAC,IAAJ,CAAS,EAAT,EAHJ;;AAFJ;UAMA,MAAM,CAAC,IAAP,CAAY,GAAZ;AAXJ;QAYA,IAAA,GAAO;AACP,aAAA,0CAAA;;UACI,IAAA,IAAQ,CAAC,CAAC,IAAF,CAAO,IAAP,CAAA,GAAa;AADzB;AAGA,eAAO,CAAA,CAAE,YAAF,CAAe,CAAC,IAAhB,CAAqB,IAArB,CAA0B,CAAC,GAA3B,CACC;UAAA,KAAA,EAAO,CAAC,CAAA,CAAE,MAAF,CAAS,CAAC,KAAV,CAAA,CAAA,GAAoB,CAArB,CAAA,GAA0B,IAAjC;UACA,MAAA,EAAQ,CAAC,CAAA,CAAE,MAAF,CAAS,CAAC,MAAV,CAAA,CAAA,GAAqB,CAAtB,CAAA,GAA2B,IADnC;SADD;MAzCuC,CAAd;;EAFzB,CAAf;AATA","sourcesContent":["callWithJQuery = (pivotModule) ->\n if typeof exports is \"object\" and typeof module is \"object\" # CommonJS\n pivotModule require(\"jquery\")\n else if typeof define is \"function\" and define.amd # AMD\n define [\"jquery\"], pivotModule\n # Plain browser env\n else\n pivotModule jQuery\n\ncallWithJQuery ($) ->\n\n $.pivotUtilities.export_renderers = \"TSV Export\": (pivotData, opts) ->\n defaults = localeStrings: {}\n\n opts = $.extend(true, {}, defaults, opts)\n\n rowKeys = pivotData.getRowKeys()\n rowKeys.push [] if rowKeys.length == 0\n colKeys = pivotData.getColKeys()\n colKeys.push [] if colKeys.length == 0\n rowAttrs = pivotData.rowAttrs\n colAttrs = pivotData.colAttrs\n\n result = []\n\n row = []\n for rowAttr in rowAttrs\n row.push rowAttr\n if colKeys.length == 1 and colKeys[0].length == 0\n row.push pivotData.aggregatorName\n else\n for colKey in colKeys\n row.push colKey.join(\"-\")\n\n result.push row\n\n for rowKey in rowKeys\n row = []\n for r in rowKey\n row.push r\n\n for colKey in colKeys\n agg = pivotData.getAggregator(rowKey, colKey)\n if agg.value()?\n row.push agg.value()\n else\n row.push \"\"\n result.push row\n text = \"\"\n for r in result\n text += r.join(\"\\t\")+\"\\n\"\n\n return $(\" 52 |
53 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /examples/perf.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Pivot Demo 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 20 | 21 | 22 | 74 | 75 |

« back to PivotTable.js examples

76 | 77 |

78 | 
79 |     
80 | 
81 | 


--------------------------------------------------------------------------------
/examples/plotly.html:
--------------------------------------------------------------------------------
 1 | 
 2 | 
 3 |     
 4 |         Pivot Demo
 5 |         
 6 |         
 7 |         
 8 |         
 9 | 
10 |         
11 |         
12 |         
13 |         
14 |         
17 | 
18 |         
19 |         
20 | 
21 |         
22 |         
23 |     
24 |     
25 |         
44 | 
45 |         

« back to PivotTable.js examples

46 | 47 |
48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /examples/save_restore.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Pivot Demo 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 53 | 54 |

« back to PivotTable.js examples

55 |
56 | 57 | 58 |


59 |
60 |
61 | 62 | 63 | 64 | -------------------------------------------------------------------------------- /examples/scatter.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Pivot Demo 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 54 | 55 |

« back to PivotTable.js examples

56 | 57 |
58 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /examples/show_code.js: -------------------------------------------------------------------------------- 1 | $(function(){ 2 | $.getScript("https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.1.0/highlight.min.js", function(){ 3 | $("head").append( 4 | $(''), 5 | $("") 6 | ); 7 | $("body script").each(function(){ 8 | $("#output").before($("
").append(
 9 |                 $("").text($(this).text())
10 |                 .css({"font-family": "Source Code Pro"})
11 |             ));
12 |             $('pre code').each(function(i, block) {
13 |                 hljs.highlightBlock(block);
14 |               });        
15 |         });
16 |     });
17 | });


--------------------------------------------------------------------------------
/examples/simple.html:
--------------------------------------------------------------------------------
 1 | 
 2 | 
 3 |     
 4 |         Pivot Demo
 5 |         
 6 |         
 7 | 
 8 |         
 9 |         
10 |         
11 |         
14 | 
15 |         
16 |         
17 |     
18 |     
19 |         
35 | 
36 |         

« back to PivotTable.js examples

37 | 38 |
39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /examples/simple_agg.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Pivot Demo 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 15 | 16 | 17 | 18 | 19 | 20 | 45 | 46 |

« back to PivotTable.js examples

47 | 48 |
49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /examples/simple_function.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Pivot Demo 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 50 | 51 |

« back to PivotTable.js examples

52 | 53 |
54 | 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /examples/simple_ui.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Pivot Demo 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 39 | 40 |

« back to PivotTable.js examples

41 | 42 |
43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /examples/simple_ui_from_table.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Pivot Demo 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 34 | 35 |

« back to PivotTable.js examples

36 | 37 |
38 | 39 |
40 |

Input table:

41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 |
colorshape
blue
red
61 | 62 | 63 | 64 | -------------------------------------------------------------------------------- /examples/text_config.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Pivot Demo 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 62 | 63 |

« back to PivotTable.js examples

64 |
65 | 66 | 67 | 68 | -------------------------------------------------------------------------------- /gulpFile.js: -------------------------------------------------------------------------------- 1 | var gulp = require('gulp'), 2 | git = require('gulp-git'), 3 | bump = require('gulp-bump'), 4 | filter = require('gulp-filter'), 5 | tag_version = require('gulp-tag-version'), 6 | runSequence = require('run-sequence').use(gulp), 7 | spawn = require('child_process').spawn, 8 | coffee = require('gulp-coffee'), 9 | gutil = require('gulp-util'), 10 | uglify = require("gulp-uglify"), 11 | rename = require('gulp-rename'), 12 | sourcemaps = require('gulp-sourcemaps'), 13 | concat = require('gulp-concat'), 14 | minifyCSS = require('gulp-minify-css'), 15 | serve = require('gulp-serve'); 16 | 17 | gulp.task('makeCss', function() { 18 | gulp.src('./dist/pivot.css') 19 | .pipe(minifyCSS()) 20 | .pipe(concat('pivot.min.css'))//trick to output to new file 21 | .pipe(gulp.dest('./dist/')) 22 | }); 23 | 24 | 25 | gulp.task('makeJs', function() { 26 | 27 | gulp.src(['./src/*.coffee', './locales/*.coffee', './tests/*.coffee']) 28 | //compile to js (and create map files) 29 | .pipe(sourcemaps.init()) 30 | .pipe(coffee()).on('error', gutil.log) 31 | .pipe(sourcemaps.write('./')) 32 | .pipe(gulp.dest('./dist')) 33 | 34 | //minify js files as well 35 | .pipe(filter('*.js'))//filter, to avoid doing this processing on the map files generated above 36 | .pipe(rename({ 37 | suffix: '.min' 38 | })) 39 | .pipe(sourcemaps.init({loadMaps: true}))//load the source maps generated in the first step 40 | .pipe(uglify()) 41 | .pipe(sourcemaps.write('./')) 42 | .pipe(gulp.dest('./dist')); 43 | }); 44 | 45 | 46 | 47 | function inc(importance) { 48 | // get all the files to bump version in 49 | return gulp.src(['./package.json', './bower.json', './pivottable.jquery.json']) 50 | // bump the version number in those files 51 | .pipe(bump({type: importance})) 52 | // save it back to filesystem 53 | .pipe(gulp.dest('./')); 54 | } 55 | 56 | gulp.task('publish', function (done) { 57 | spawn('npm', ['publish'], { stdio: 'inherit' }).on('close', done); 58 | }); 59 | 60 | gulp.task('push', function (done) { 61 | git.push('origin', 'master', {args: '--tags'}, function (err) { 62 | if (err) throw err; 63 | }); 64 | }); 65 | 66 | 67 | gulp.task('tag', function() { 68 | return gulp.src(['./package.json', './bower.json', './pivottable.jquery.json']) 69 | .pipe(git.commit('version bump')) 70 | // read only one file to get the version number 71 | .pipe(filter('package.json')) 72 | .pipe(tag_version()); 73 | }); 74 | 75 | 76 | gulp.task('bumpPatch', function() { return inc('patch'); }) 77 | gulp.task('bumpMinor', function() { return inc('minor'); }) 78 | gulp.task('bumpMajor', function() { return inc('major'); }) 79 | 80 | gulp.task('patch', function() { 81 | runSequence('bumpPatch', 'default', 'tag', 'publish', 'push'); 82 | }); 83 | gulp.task('minor', function() { 84 | runSequence('bumpMinor', 'default', 'tag', 'publish', 'push'); 85 | }); 86 | gulp.task('major', function() { 87 | runSequence('bumpMajor', 'default', 'tag', 'publish', 'push'); 88 | }); 89 | 90 | gulp.task('serve', serve('.')); 91 | 92 | gulp.task('watch', function() { 93 | gulp.watch(['./src/*.coffee', './locales/*.coffee', './tests/*.coffee'], ['makeJs']); 94 | gulp.watch('./dist/pivot.css', ['makeCss']); 95 | }); 96 | 97 | gulp.task('default', ['makeJs', 'makeCss']); 98 | 99 | -------------------------------------------------------------------------------- /images/animation.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nicolaskruchten/pivottable/838ec2fc38747749c28d2fd1cb6c4ace9e9cc520/images/animation.gif -------------------------------------------------------------------------------- /images/cdnjs.svg: -------------------------------------------------------------------------------- 1 | cdnjscdnjspivottablepivottable -------------------------------------------------------------------------------- /images/filters.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nicolaskruchten/pivottable/838ec2fc38747749c28d2fd1cb6c4ace9e9cc520/images/filters.png -------------------------------------------------------------------------------- /images/gender_age_bins.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nicolaskruchten/pivottable/838ec2fc38747749c28d2fd1cb6c4ace9e9cc520/images/gender_age_bins.png -------------------------------------------------------------------------------- /images/gender_imbalance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nicolaskruchten/pivottable/838ec2fc38747749c28d2fd1cb6c4ace9e9cc520/images/gender_imbalance.png -------------------------------------------------------------------------------- /images/gender_imbalance_instructions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nicolaskruchten/pivottable/838ec2fc38747749c28d2fd1cb6c4ace9e9cc520/images/gender_imbalance_instructions.png -------------------------------------------------------------------------------- /images/initial_state.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nicolaskruchten/pivottable/838ec2fc38747749c28d2fd1cb6c4ace9e9cc520/images/initial_state.png -------------------------------------------------------------------------------- /images/license.svg: -------------------------------------------------------------------------------- 1 | licenselicensemitmit -------------------------------------------------------------------------------- /images/npm.svg: -------------------------------------------------------------------------------- 1 | npmnpmpivottablepivottable -------------------------------------------------------------------------------- /images/province_x_party_heatmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nicolaskruchten/pivottable/838ec2fc38747749c28d2fd1cb6c4ace9e9cc520/images/province_x_party_heatmap.png -------------------------------------------------------------------------------- /images/province_x_party_heatmap_instructions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nicolaskruchten/pivottable/838ec2fc38747749c28d2fd1cb6c4ace9e9cc520/images/province_x_party_heatmap_instructions.png -------------------------------------------------------------------------------- /images/simple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nicolaskruchten/pivottable/838ec2fc38747749c28d2fd1cb6c4ace9e9cc520/images/simple.png -------------------------------------------------------------------------------- /images/simple_ui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nicolaskruchten/pivottable/838ec2fc38747749c28d2fd1cb6c4ace9e9cc520/images/simple_ui.png -------------------------------------------------------------------------------- /images/tests.svg: -------------------------------------------------------------------------------- 1 | teststestsjasminejasmine -------------------------------------------------------------------------------- /images/whats_what.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nicolaskruchten/pivottable/838ec2fc38747749c28d2fd1cb6c4ace9e9cc520/images/whats_what.png -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 9 | Page Redirection 10 | 11 | 12 | If you are not redirected automatically, follow the link to the main page 13 | 14 | 15 | -------------------------------------------------------------------------------- /locales/pivot.cs.coffee: -------------------------------------------------------------------------------- 1 | callWithJQuery = (pivotModule) -> 2 | if typeof exports is "object" and typeof module is "object" # CommonJS 3 | pivotModule require("jquery") 4 | else if typeof define is "function" and define.amd # AMD 5 | define ["jquery"], pivotModule 6 | # Plain browser env 7 | else 8 | pivotModule jQuery 9 | 10 | callWithJQuery ($) -> 11 | nf = $.pivotUtilities.numberFormat 12 | tpl = $.pivotUtilities.aggregatorTemplates 13 | 14 | csFmt = nf(thousandsSep: " ", decimalSep: ",") 15 | csFmtInt = nf(digitsAfterDecimal: 0, thousandsSep: " ", decimalSep: ",") 16 | csFmtPct = nf(digitsAfterDecimal: 1, scaler: 100, suffix: "%", thousandsSep: " ", decimalSep: ",") 17 | 18 | $.pivotUtilities.locales.cs = 19 | localeStrings: 20 | renderError: "Došlo k chybě při vykreslování výsledků PivotTable." 21 | computeError: "Došlo k chybě při výpočtu výsledků PivotTable." 22 | uiRenderError: "Došlo k chybě při vykreslování PivotTable UI." 23 | selectAll: "Vybrat vše" 24 | selectNone: "Zrušit výběr" 25 | tooMany: "(příliš mnoho položek)" 26 | filterResults: "Hodnoty pro filtr" 27 | apply: "Použít" 28 | cancel: "Zrušit" 29 | totals: "Celkem" 30 | vs: "ku" 31 | by: "z" 32 | 33 | aggregators: 34 | "Počet": tpl.count(csFmtInt) 35 | "Počet unikátních hodnot": tpl.countUnique(csFmtInt) 36 | "Výčet unikátních hodnot": tpl.listUnique(", ") 37 | "Součet": tpl.sum(csFmt) 38 | "Celočíselný součet": tpl.sum(csFmtInt) 39 | "Průměr": tpl.average(csFmt) 40 | "Medián": tpl.median(csFmt), 41 | "Rozptyl": tpl["var"](1, csFmt), 42 | "Směrodatná odchylka": tpl.stdev(1, csFmt), 43 | "Minimum": tpl.min(csFmt) 44 | "Maximum": tpl.max(csFmt) 45 | "První": tpl.first(csFmt) 46 | "Poslední": tpl.last(csFmt) 47 | "Součet přes součet": tpl.sumOverSum(csFmt) 48 | "80% horní hranice": tpl.sumOverSumBound80(true, csFmt) 49 | "80% spodní hranice": tpl.sumOverSumBound80(false, csFmt) 50 | "Součet jako poměr z celku": tpl.fractionOf(tpl.sum(), "total", csFmtPct) 51 | "Součet jako poměr z řádků": tpl.fractionOf(tpl.sum(), "row", csFmtPct) 52 | "Součet jako poměr ze sloupců": tpl.fractionOf(tpl.sum(), "col", csFmtPct) 53 | "Počet jako poměr z celku": tpl.fractionOf(tpl.count(), "total", csFmtPct) 54 | "Počet jako poměr z řádků": tpl.fractionOf(tpl.count(), "row", csFmtPct) 55 | "Počet jako poměr ze sloupců": tpl.fractionOf(tpl.count(), "col", csFmtPct) 56 | 57 | renderers: 58 | "Tabulka": $.pivotUtilities.renderers["Table"] 59 | "Tabulka se sloupcovým grafem": $.pivotUtilities.renderers["Table Barchart"] 60 | "Teplotní mapa": $.pivotUtilities.renderers["Heatmap"] 61 | "Teplotní mapa z řádků": $.pivotUtilities.renderers["Row Heatmap"] 62 | "Teplotní mapa ze sloupců": $.pivotUtilities.renderers["Col Heatmap"] 63 | -------------------------------------------------------------------------------- /locales/pivot.da.coffee: -------------------------------------------------------------------------------- 1 | callWithJQuery = (pivotModule) -> 2 | if typeof exports is "object" and typeof module is "object" # CommonJS 3 | pivotModule require("jquery") 4 | else if typeof define is "function" and define.amd # AMD 5 | define ["jquery"], pivotModule 6 | # Plain browser env 7 | else 8 | pivotModule jQuery 9 | 10 | callWithJQuery ($) -> 11 | nf = $.pivotUtilities.numberFormat 12 | tpl = $.pivotUtilities.aggregatorTemplates 13 | 14 | r = nf({ 15 | thousandsSep: ".", 16 | decimalSep: "," 17 | }) 18 | 19 | t = nf({ 20 | digitsAfterDecimal: 0, 21 | thousandsSep: ".", 22 | decimalSep: "," 23 | }) 24 | 25 | o = nf({ 26 | digitsAfterDecimal: 1, 27 | scaler: 100, 28 | suffix: "%", 29 | thousandsSep: ".", 30 | decimalSep: "," 31 | }) 32 | 33 | $.pivotUtilities.locales.da = 34 | localeStrings: 35 | renderError: "Der opstod en fejl, mens du trak i feltet", 36 | computeError: "Der opstod en fejl ved beregningen af feltet", 37 | uiRenderError: "Der opstod en fejl, mens den grafiske brugerflade blev beregnet", 38 | selectAll: "Vælg alle", 39 | selectNone: "Vælg ingen", 40 | tooMany: "(for mange værdier til at vise)", 41 | filterResults: "Filter værdier", 42 | totals: "I alt", 43 | vs: "vs", 44 | by: "af" 45 | aggregators: 46 | "Antal": tpl.count(t), 47 | "Antal Unikke værdier": tpl.countUnique(t), 48 | "Liste unikke værdier": tpl.listUnique(", "), 49 | "Sum": tpl.sum(r), 50 | "Sum i heltal": tpl.sum(t), 51 | "Gennemsnit": tpl.average(r), 52 | "Minimum": tpl.min(r), 53 | "Maximum": tpl.max(r), 54 | "Sum iforhold til sum": tpl.sumOverSum(r), 55 | "Sum iforhold til sum, øverst 80%": tpl.sumOverSumBound80(!0, r), 56 | "Sum iforhold til sum, lavest 80%": tpl.sumOverSumBound80(!1, r), 57 | "Andel af i alt sum": tpl.fractionOf(tpl.sum(), "total", o), 58 | "Andel af række sum": tpl.fractionOf(tpl.sum(), "row", o), 59 | "Andel af kolonner sum": tpl.fractionOf(tpl.sum(), "col", o), 60 | "Andel af i alt antal": tpl.fractionOf(tpl.count(), "total", o), 61 | "Andel af række antal": tpl.fractionOf(tpl.count(), "row", o), 62 | "Andel af kolonner antal": tpl.fractionOf(tpl.count(), "col", o) 63 | renderers: 64 | "Tabel": $.pivotUtilities.renderers.Table, 65 | "Tabel med søjler": $.pivotUtilities.renderers["Table Barchart"], 66 | "Heatmap": $.pivotUtilities.renderers.Heatmap, 67 | "Heatmap per række": $.pivotUtilities.renderers["Row Heatmap"], 68 | "Heatmap per kolonne": $.pivotUtilities.renderers["Col Heatmap"] 69 | -------------------------------------------------------------------------------- /locales/pivot.de.coffee: -------------------------------------------------------------------------------- 1 | callWithJQuery = (pivotModule) -> 2 | if typeof exports is "object" and typeof module is "object" # CommonJS 3 | pivotModule require("jquery") 4 | else if typeof define is "function" and define.amd # AMD 5 | define ["jquery"], pivotModule 6 | # Plain browser env 7 | else 8 | pivotModule jQuery 9 | 10 | callWithJQuery ($) -> 11 | nf = $.pivotUtilities.numberFormat 12 | tpl = $.pivotUtilities.aggregatorTemplates 13 | 14 | frFmt = nf(thousandsSep: " ", decimalSep: ",") 15 | frFmtInt = nf(digitsAfterDecimal: 0, thousandsSep: " ", decimalSep: ",") 16 | frFmtPct = nf(digitsAfterDecimal: 1, scaler: 100, suffix: "%", thousandsSep: " ", decimalSep: ",") 17 | 18 | $.pivotUtilities.locales.de = 19 | localeStrings: 20 | renderError: "Bei der Darstellung der Pivot-Tabelle ist ein Fehler aufgetreten." 21 | computeError: "Bei der Berechnung der Pivot-Tabelle ist ein Fehler aufgetreten." 22 | uiRenderError: "Bei der Darstellung Oberfläche der Pivot-Tabelle ist ein Fehler aufgetreten." 23 | selectAll: "Alles auswählen" 24 | selectNone: "Nichts auswählen" 25 | tooMany: "(zu viele für Liste)" 26 | filterResults: "Ergebnisse filtern" 27 | totals: "Gesamt" 28 | vs: "gegen" 29 | by: "pro" 30 | 31 | aggregators: 32 | "Anzahl": tpl.count(frFmtInt) 33 | "Anzahl eindeutiger Werte": tpl.countUnique(frFmtInt) 34 | "Liste eindeutiger Werte": tpl.listUnique(", ") 35 | "Summe": tpl.sum(frFmt) 36 | "Ganzzahlige Summe": tpl.sum(frFmtInt) 37 | "Durchschnitt": tpl.average(frFmt) 38 | "Minimum": tpl.min(frFmt) 39 | "Maximum": tpl.max(frFmt) 40 | "Summe über Summe": tpl.sumOverSum(frFmt) 41 | "80% Obergrenze": tpl.sumOverSumBound80(true, frFmt) 42 | "80% Untergrenze": tpl.sumOverSumBound80(false, frFmt) 43 | "Summe als Anteil von Gesamt": tpl.fractionOf(tpl.sum(), "total", frFmtPct) 44 | "Summe als Anteil von Zeile": tpl.fractionOf(tpl.sum(), "row", frFmtPct) 45 | "Summe als Anteil von Spalte": tpl.fractionOf(tpl.sum(), "col", frFmtPct) 46 | "Anzahl als Anteil von Gesamt": tpl.fractionOf(tpl.count(), "total", frFmtPct) 47 | "Anzahl als Anteil von Zeile": tpl.fractionOf(tpl.count(), "row", frFmtPct) 48 | "Anzahl als Anteil von Spalte": tpl.fractionOf(tpl.count(), "col", frFmtPct) 49 | 50 | renderers: 51 | "Tabelle": $.pivotUtilities.renderers["Table"] 52 | "Tabelle mit Balkendiagramm": $.pivotUtilities.renderers["Table Barchart"] 53 | "Heatmap": $.pivotUtilities.renderers["Heatmap"] 54 | "Heatmap pro Zeile": $.pivotUtilities.renderers["Row Heatmap"] 55 | "Heatmap pro Spalte": $.pivotUtilities.renderers["Col Heatmap"] 56 | -------------------------------------------------------------------------------- /locales/pivot.es.coffee: -------------------------------------------------------------------------------- 1 | callWithJQuery = (pivotModule) -> 2 | if typeof exports is "object" and typeof module is "object" # CommonJS 3 | pivotModule require("jquery") 4 | else if typeof define is "function" and define.amd # AMD 5 | define ["jquery"], pivotModule 6 | # Plain browser env 7 | else 8 | pivotModule jQuery 9 | 10 | callWithJQuery ($) -> 11 | nf = $.pivotUtilities.numberFormat 12 | tpl = $.pivotUtilities.aggregatorTemplates 13 | 14 | frFmt = nf(thousandsSep: " ", decimalSep: ",") 15 | frFmtInt = nf(digitsAfterDecimal: 0, thousandsSep: " ", decimalSep: ",") 16 | frFmtPct = nf(digitsAfterDecimal: 1, scaler: 100, suffix: "%", thousandsSep: " ", decimalSep: ",") 17 | 18 | $.pivotUtilities.locales.es = 19 | 20 | localeStrings: 21 | renderError: "Ocurrió un error durante la interpretación de la tabla dinámica." 22 | computeError: "Ocurrió un error durante el cálculo de la tabla dinámica." 23 | uiRenderError: "Ocurrió un error durante el dibujado de la tabla dinámica." 24 | selectAll: "Seleccionar todo" 25 | selectNone: "Deseleccionar todo" 26 | tooMany: "(demasiados valores)" 27 | filterResults: "Filtrar resultados" 28 | totals: "Totales" 29 | vs: "vs" 30 | by: "por" 31 | apply: "Aplicar" 32 | cancel: "Cancelar" 33 | 34 | aggregators: 35 | "Cuenta": tpl.count(frFmtInt) 36 | "Cuenta de valores únicos": tpl.countUnique(frFmtInt) 37 | "Lista de valores únicos": tpl.listUnique(", ") 38 | "Suma": tpl.sum(frFmt) 39 | "Suma de enteros": tpl.sum(frFmtInt) 40 | "Promedio": tpl.average(frFmt) 41 | "Mediana": tpl.median(frFmt) 42 | "Diferencia": tpl.var(1, frFmt) 43 | "Desviación estándar de la muestra": tpl.stdev(1, frFmt) 44 | "Mínimo": tpl.min(frFmt) 45 | "Máximo": tpl.max(frFmt) 46 | "Primero": tpl.first(frFmt), 47 | "Pasado": tpl.last(frFmt), 48 | "Suma de sumas": tpl.sumOverSum(frFmt) 49 | "Cota 80% superior": tpl.sumOverSumBound80(true, frFmt) 50 | "Cota 80% inferior": tpl.sumOverSumBound80(false, frFmt) 51 | "Proporción del total (suma)": tpl.fractionOf(tpl.sum(), "total", frFmtPct) 52 | "Proporción de la fila (suma)": tpl.fractionOf(tpl.sum(), "row", frFmtPct) 53 | "Proporción de la columna (suma)": tpl.fractionOf(tpl.sum(), "col", frFmtPct) 54 | "Proporción del total (cuenta)": tpl.fractionOf(tpl.count(), "total", frFmtPct) 55 | "Proporción de la fila (cuenta)": tpl.fractionOf(tpl.count(), "row", frFmtPct) 56 | "Proporción de la columna (cuenta)": tpl.fractionOf(tpl.count(), "col", frFmtPct) 57 | 58 | renderers: 59 | "Tabla": $.pivotUtilities.renderers["Table"] 60 | "Tabla con barras": $.pivotUtilities.renderers["Table Barchart"] 61 | "Heatmap": $.pivotUtilities.renderers["Heatmap"] 62 | "Heatmap por filas": $.pivotUtilities.renderers["Row Heatmap"] 63 | "Heatmap por columnas": $.pivotUtilities.renderers["Col Heatmap"] 64 | 65 | 66 | -------------------------------------------------------------------------------- /locales/pivot.fr.coffee: -------------------------------------------------------------------------------- 1 | callWithJQuery = (pivotModule) -> 2 | if typeof exports is "object" and typeof module is "object" # CommonJS 3 | pivotModule require("jquery") 4 | else if typeof define is "function" and define.amd # AMD 5 | define ["jquery"], pivotModule 6 | # Plain browser env 7 | else 8 | pivotModule jQuery 9 | 10 | callWithJQuery ($) -> 11 | nf = $.pivotUtilities.numberFormat 12 | tpl = $.pivotUtilities.aggregatorTemplates 13 | 14 | frFmt = nf(thousandsSep: " ", decimalSep: ",") 15 | frFmtInt = nf(digitsAfterDecimal: 0, thousandsSep: " ", decimalSep: ",") 16 | frFmtPct = nf(digitsAfterDecimal: 1, scaler: 100, suffix: "%", thousandsSep: " ", decimalSep: ",") 17 | 18 | $.pivotUtilities.locales.fr = 19 | localeStrings: 20 | renderError: "Une erreur est survenue en dessinant le tableau croisé." 21 | computeError: "Une erreur est survenue en calculant le tableau croisé." 22 | uiRenderError: "Une erreur est survenue en dessinant l'interface du tableau croisé dynamique." 23 | selectAll: "Sélectionner tout" 24 | selectNone: "Sélectionner rien" 25 | tooMany: "(trop de valeurs à afficher)" 26 | filterResults: "Filtrer les valeurs" 27 | totals: "Totaux" 28 | vs: "sur" 29 | by: "par" 30 | apply: "Appliquer" 31 | cancel: "Annuler" 32 | 33 | aggregators: 34 | "Nombre": tpl.count(frFmtInt) 35 | "Nombre de valeurs uniques": tpl.countUnique(frFmtInt) 36 | "Liste de valeurs uniques": tpl.listUnique(", ") 37 | "Somme": tpl.sum(frFmt) 38 | "Somme en entiers": tpl.sum(frFmtInt) 39 | "Moyenne": tpl.average(frFmt) 40 | "Minimum": tpl.min(frFmt) 41 | "Maximum": tpl.max(frFmt) 42 | "Premier": tpl.first(frFmt) 43 | "Dernier": tpl.last(frFmt) 44 | "Ratio de sommes": tpl.sumOverSum(frFmt) 45 | "Borne supérieure 80%": tpl.sumOverSumBound80(true, frFmt) 46 | "Borne inférieure 80%": tpl.sumOverSumBound80(false, frFmt) 47 | "Somme en proportion du totale": tpl.fractionOf(tpl.sum(), "total", frFmtPct) 48 | "Somme en proportion de la ligne": tpl.fractionOf(tpl.sum(), "row", frFmtPct) 49 | "Somme en proportion de la colonne": tpl.fractionOf(tpl.sum(), "col", frFmtPct) 50 | "Nombre en proportion du totale": tpl.fractionOf(tpl.count(), "total", frFmtPct) 51 | "Nombre en proportion de la ligne": tpl.fractionOf(tpl.count(), "row", frFmtPct) 52 | "Nombre en proportion de la colonne": tpl.fractionOf(tpl.count(), "col", frFmtPct) 53 | 54 | renderers: 55 | "Table": $.pivotUtilities.renderers["Table"] 56 | "Table avec barres": $.pivotUtilities.renderers["Table Barchart"] 57 | "Carte de chaleur": $.pivotUtilities.renderers["Heatmap"] 58 | "Carte de chaleur par ligne": $.pivotUtilities.renderers["Row Heatmap"] 59 | "Carte de chaleur par colonne": $.pivotUtilities.renderers["Col Heatmap"] 60 | 61 | 62 | -------------------------------------------------------------------------------- /locales/pivot.it.coffee: -------------------------------------------------------------------------------- 1 | callWithJQuery = (pivotModule) -> 2 | if typeof exports is "object" and typeof module is "object" # CommonJS 3 | pivotModule require("jquery") 4 | else if typeof define is "function" and define.amd # AMD 5 | define ["jquery"], pivotModule 6 | # Plain browser env 7 | else 8 | pivotModule jQuery 9 | 10 | callWithJQuery ($) -> 11 | nf = $.pivotUtilities.numberFormat 12 | tpl = $.pivotUtilities.aggregatorTemplates 13 | 14 | frFmt = nf(thousandsSep: " ", decimalSep: ",") 15 | frFmtInt = nf(digitsAfterDecimal: 0, thousandsSep: " ", decimalSep: ",") 16 | frFmtPct = nf(digitsAfterDecimal: 1, scaler: 100, suffix: "%", thousandsSep: " ", decimalSep: ",") 17 | 18 | $.pivotUtilities.locales.it = 19 | localeStrings: 20 | renderError: "Si è verificato un errore durante la creazione della tabella." 21 | computeError: "Si è verificato un errore di calcolo nella tabella." 22 | uiRenderError: "Si è verificato un errore durante il disegno di interfaccia della tabella pivot." 23 | selectAll: "Seleziona tutto" 24 | selectNone: "Deseleziona tutto" 25 | tooMany: "(troppi valori da visualizzare)" 26 | filterResults: "Filtra i valori" 27 | apply: "Applica" 28 | cancel: "Annulla" 29 | totals: "Totali" 30 | vs: "su" 31 | by: "da" 32 | 33 | aggregators: 34 | "Numero": tpl.count(frFmtInt) 35 | "Numero di valori unici": tpl.countUnique(frFmtInt) 36 | "Elenco di valori unici": tpl.listUnique(", ") 37 | "Somma": tpl.sum(frFmt) 38 | "Somma intera": tpl.sum(frFmtInt) 39 | "Media": tpl.average(frFmt) 40 | "Minimo": tpl.min(frFmt) 41 | "Massimo": tpl.max(frFmt) 42 | "Rapporto": tpl.sumOverSum(frFmt) 43 | "Limite superiore 80%": tpl.sumOverSumBound80(true, frFmt) 44 | "limite inferiore 80%": tpl.sumOverSumBound80(false, frFmt) 45 | "Somma proporzionale al totale": tpl.fractionOf(tpl.sum(), "total", frFmtPct) 46 | "Somma proporzionale alla riga": tpl.fractionOf(tpl.sum(), "row", frFmtPct) 47 | "Somma proporzionale alla colonna": tpl.fractionOf(tpl.sum(), "col", frFmtPct) 48 | "Numero proporzionale al totale": tpl.fractionOf(tpl.count(), "total", frFmtPct) 49 | "Numero proporzionale alla riga": tpl.fractionOf(tpl.count(), "row", frFmtPct) 50 | "Numero proporzionale alla colonna": tpl.fractionOf(tpl.count(), "col", frFmtPct) 51 | 52 | renderers: 53 | "Tabella": $.pivotUtilities.renderers["Table"] 54 | "Tabella con grafico": $.pivotUtilities.renderers["Table Barchart"] 55 | "Mappa di calore": $.pivotUtilities.renderers["Heatmap"] 56 | "Mappa di calore per righe": $.pivotUtilities.renderers["Row Heatmap"] 57 | "Mappa di calore per colonne": $.pivotUtilities.renderers["Col Heatmap"] 58 | 59 | 60 | -------------------------------------------------------------------------------- /locales/pivot.jp.coffee: -------------------------------------------------------------------------------- 1 | callWithJQuery = (pivotModule) -> 2 | if typeof exports is "object" and typeof module is "object" # CommonJS 3 | pivotModule require("jquery") 4 | else if typeof define is "function" and define.amd # AMD 5 | define ["jquery"], pivotModule 6 | # Plain browser env 7 | else 8 | pivotModule jQuery 9 | 10 | callWithJQuery ($) -> 11 | nf = $.pivotUtilities.numberFormat 12 | tpl = $.pivotUtilities.aggregatorTemplates 13 | 14 | jpFmt = nf(thousandsSep: ",", decimalSep: ".") 15 | jpFmtInt = nf(digitsAfterDecimal: 0, thousandsSep: ",", decimalSep: ".") 16 | jpFmtPct = nf(digitsAfterDecimal: 1, scaler: 100, suffix: "%", thousandsSep: ",", decimalSep: ".") 17 | 18 | $.pivotUtilities.locales.ja = 19 | localeStrings: 20 | renderError: "描画処理でエラーが発生しました。" 21 | computeError: "処理中にエラーが発生しました。" 22 | uiRenderError: "表示処理中にエラーが発生しました。" 23 | selectAll: "全選択" 24 | selectNone: "選択解除" 25 | tooMany: "項目が多すぎます" 26 | filterResults: "項目を検索する" 27 | totals: "合計" 28 | vs: "vs" 29 | by: "per" 30 | apply: "適用する" 31 | cancel: "キャンセル" 32 | 33 | aggregators: 34 | "件数": tpl.count(jpFmtInt) 35 | "件数(ユニーク)": tpl.countUnique(jpFmtInt) 36 | "ユニーク値を表示 (CSV)": tpl.listUnique(", ") 37 | "合計": tpl.sum(jpFmt) 38 | "合計(整数)": tpl.sum(jpFmtInt) 39 | "平均": tpl.average(jpFmt) 40 | "最小": tpl.min(jpFmt) 41 | "最大": tpl.max(jpFmt) 42 | "選択2項目の比率": tpl.sumOverSum(jpFmt) 43 | "選択2項目の比率(上限80%)": tpl.sumOverSumBound80(true, jpFmt) 44 | "選択2項目の比率(下限80%)": tpl.sumOverSumBound80(false, jpFmt) 45 | "合計割合": tpl.fractionOf(tpl.sum(), "total", jpFmtPct) 46 | "合計割合(行)": tpl.fractionOf(tpl.sum(), "row", jpFmtPct) 47 | "合計割合(列)": tpl.fractionOf(tpl.sum(), "col", jpFmtPct) 48 | "件数割合": tpl.fractionOf(tpl.count(), "total", jpFmtPct) 49 | "件数割合(行)": tpl.fractionOf(tpl.count(), "row", jpFmtPct) 50 | "件数割合(列)": tpl.fractionOf(tpl.count(), "col", jpFmtPct) 51 | 52 | renderers: 53 | "表": $.pivotUtilities.renderers["Table"] 54 | "表(棒グラフ)": $.pivotUtilities.renderers["Table Barchart"] 55 | "ヒートマップ": $.pivotUtilities.renderers["Heatmap"] 56 | "ヒートマップ(行)": $.pivotUtilities.renderers["Row Heatmap"] 57 | "ヒートマップ(列)": $.pivotUtilities.renderers["Col Heatmap"] 58 | 59 | 60 | -------------------------------------------------------------------------------- /locales/pivot.nl.coffee: -------------------------------------------------------------------------------- 1 | callWithJQuery = (pivotModule) -> 2 | if typeof exports is "object" and typeof module is "object" # CommonJS 3 | pivotModule require("jquery") 4 | else if typeof define is "function" and define.amd # AMD 5 | define ["jquery"], pivotModule 6 | # Plain browser env 7 | else 8 | pivotModule jQuery 9 | 10 | callWithJQuery ($) -> 11 | nf = $.pivotUtilities.numberFormat 12 | tpl = $.pivotUtilities.aggregatorTemplates 13 | 14 | frFmt = nf(thousandsSep: " ", decimalSep: ",") 15 | frFmtInt = nf(digitsAfterDecimal: 0, thousandsSep: " ", decimalSep: ",") 16 | frFmtPct = nf(digitsAfterDecimal: 1, scaler: 100, suffix: "%", thousandsSep: " ", decimalSep: ",") 17 | 18 | $.pivotUtilities.locales.nl = 19 | localeStrings: 20 | renderError: "Er is een fout opgetreden bij het renderen van de kruistabel." 21 | computeError: "Er is een fout opgetreden bij het berekenen van de kruistabel." 22 | uiRenderError: "Er is een fout opgetreden bij het tekenen van de interface van de kruistabel." 23 | selectAll: "Alles selecteren" 24 | selectNone: "Niets selecteren" 25 | tooMany: "(te veel waarden om weer te geven)" 26 | filterResults: "Filter resultaten" 27 | totals: "Totaal" 28 | vs: "versus" 29 | by: "per" 30 | 31 | aggregators: 32 | "Aantal": tpl.count(frFmtInt) 33 | "Aantal unieke waarden": tpl.countUnique(frFmtInt) 34 | "Lijst unieke waarden": tpl.listUnique(", ") 35 | "Som": tpl.sum(frFmt) 36 | "Som van gehele getallen": tpl.sum(frFmtInt) 37 | "Gemiddelde": tpl.average(frFmt) 38 | "Minimum": tpl.min(frFmt) 39 | "Maximum": tpl.max(frFmt) 40 | "Eerste": tpl.first(frFmt) 41 | "Laatste": tpl.last(frFmt) 42 | "Som over som": tpl.sumOverSum(frFmt) 43 | "80% bovengrens": tpl.sumOverSumBound80(true, frFmt) 44 | "80% ondergrens": tpl.sumOverSumBound80(false, frFmt) 45 | "Som in verhouding tot het totaal": tpl.fractionOf(tpl.sum(), "total", frFmtPct) 46 | "Som in verhouding tot de rij": tpl.fractionOf(tpl.sum(), "row", frFmtPct) 47 | "Som in verhouding tot de kolom": tpl.fractionOf(tpl.sum(), "col", frFmtPct) 48 | "Aantal in verhouding tot het totaal": tpl.fractionOf(tpl.count(), "total", frFmtPct) 49 | "Aantal in verhouding tot de rij": tpl.fractionOf(tpl.count(), "row", frFmtPct) 50 | "Aantal in verhouding tot de kolom": tpl.fractionOf(tpl.count(), "col", frFmtPct) 51 | 52 | renderers: 53 | "Tabel": $.pivotUtilities.renderers["Table"] 54 | "Tabel met staafdiagrammen": $.pivotUtilities.renderers["Table Barchart"] 55 | "Warmtekaart": $.pivotUtilities.renderers["Heatmap"] 56 | "Warmtekaart per rij": $.pivotUtilities.renderers["Row Heatmap"] 57 | "Warmtekaart per kolom": $.pivotUtilities.renderers["Col Heatmap"] 58 | -------------------------------------------------------------------------------- /locales/pivot.pl.coffee: -------------------------------------------------------------------------------- 1 | callWithJQuery = (pivotModule) -> 2 | if typeof exports is "object" and typeof module is "object" # CommonJS 3 | pivotModule require("jquery") 4 | else if typeof define is "function" and define.amd # AMD 5 | define ["jquery"], pivotModule 6 | # Plain browser env 7 | else 8 | pivotModule jQuery 9 | 10 | callWithJQuery ($) -> 11 | nf = $.pivotUtilities.numberFormat 12 | tpl = $.pivotUtilities.aggregatorTemplates 13 | 14 | plFmt = nf(thousandsSep: " ", decimalSep: ",") 15 | plFmtInt = nf(digitsAfterDecimal: 0, thousandsSep: " ", decimalSep: ",") 16 | plFmtPct = nf(digitsAfterDecimal: 1, scaler: 100, suffix: "%", thousandsSep: " ", decimalSep: ",") 17 | 18 | $.pivotUtilities.locales.pl = 19 | localeStrings: 20 | renderError: "Wystąpił błąd podczas renderowania wyników PivotTable." 21 | computeError: "Wystąpił błąd podczas obliczania wyników PivotTable." 22 | uiRenderError: "Wystąpił błąd podczas renderowania UI PivotTable." 23 | selectAll: "Zaznacz wszystko" 24 | selectNone: "Odznacz wszystkie" 25 | tooMany: "(za dużo do wylistowania)" 26 | filterResults: "Filtruj wartości" 27 | apply: "Zastosuj" 28 | cancel: "Anuluj" 29 | totals: "Podsumowanie" 30 | vs: "vs" 31 | by: "przez" 32 | 33 | aggregators: 34 | "Liczba": tpl.count(plFmtInt) 35 | "Liczba Unikatowych Wartości": tpl.countUnique(plFmtInt) 36 | "Lista Unikatowych Wartości": tpl.listUnique(", ") 37 | "Suma": tpl.sum(plFmt) 38 | "Całkowita Suma": tpl.sum(plFmtInt) 39 | "Średnia": tpl.average(plFmt) 40 | "Minimum": tpl.min(plFmt) 41 | "Maksimum": tpl.max(plFmt) 42 | "Pierwszy": tpl.first(plFmt) 43 | "Ostatni": tpl.last(plFmt) 44 | "Suma po Sumie": tpl.sumOverSum(plFmt) 45 | "80% Kres Dolny": tpl.sumOverSumBound80(true, plFmt) 46 | "80% Kres Górny": tpl.sumOverSumBound80(false, plFmt) 47 | "Suma jako Ułamek Całości": tpl.fractionOf(tpl.sum(), "total", plFmtPct) 48 | "Suma jako Ułamek w Wierszach": tpl.fractionOf(tpl.sum(), "row", plFmtPct) 49 | "Suma jako Ułamek w Kolumnach": tpl.fractionOf(tpl.sum(), "col", plFmtPct) 50 | "Liczba jako Ułamek Całości": tpl.fractionOf(tpl.count(), "total", plFmtPct) 51 | "Liczba jako Ułamek w Wierszach": tpl.fractionOf(tpl.count(), "row", plFmtPct) 52 | "Liczba jako Ułamek w Kolumnach": tpl.fractionOf(tpl.count(), "col", plFmtPct) 53 | 54 | renderers: 55 | "Tabela": $.pivotUtilities.renderers["Table"] 56 | "Tabela z Wykresem Słupkowym": $.pivotUtilities.renderers["Table Barchart"] 57 | "Mapa cieplna": $.pivotUtilities.renderers["Heatmap"] 58 | "Mapa cieplna po Wierszach": $.pivotUtilities.renderers["Row Heatmap"] 59 | "Mapa cieplna po Kolumnach": $.pivotUtilities.renderers["Col Heatmap"] 60 | -------------------------------------------------------------------------------- /locales/pivot.ru.coffee: -------------------------------------------------------------------------------- 1 | callWithJQuery = (pivotModule) -> 2 | if typeof exports is "object" and typeof module is "object" # CommonJS 3 | pivotModule require("jquery") 4 | else if typeof define is "function" and define.amd # AMD 5 | define ["jquery"], pivotModule 6 | # Plain browser env 7 | else 8 | pivotModule jQuery 9 | 10 | callWithJQuery ($) -> 11 | nf = $.pivotUtilities.numberFormat 12 | tpl = $.pivotUtilities.aggregatorTemplates 13 | 14 | frFmt = nf(thousandsSep: " ", decimalSep: ",") 15 | frFmtInt = nf(digitsAfterDecimal: 0, thousandsSep: " ", decimalSep: ",") 16 | frFmtPct = nf(digitsAfterDecimal: 1, scaler: 100, suffix: "%", thousandsSep: " ", decimalSep: ",") 17 | 18 | $.pivotUtilities.locales.ru = 19 | localeStrings: 20 | renderError: "Ошибка рендеринга страницы.", 21 | computeError: "Ошибка табличных расчетов.", 22 | uiRenderError: "Ошибка во время прорисовки и динамического расчета таблицы.", 23 | selectAll: "Выбрать все", 24 | selectNone: "Снять выделение", 25 | tooMany: "(Выбрано слишком много значений)", 26 | filterResults: "Возможные значения", 27 | totals: "Всего", 28 | vs: "на", 29 | by: "с" 30 | 31 | aggregators: 32 | "Кол-во": tpl.count(frFmtInt), 33 | "Кол-во уникальных": tpl.countUnique(frFmtInt), 34 | "Список уникальных": tpl.listUnique(", "), 35 | "Сумма": tpl.sum(frFmt), 36 | "Сумма целых": tpl.sum(frFmtInt), 37 | "Среднее": tpl.average(frFmt), 38 | "Минимум": tpl.min(frFmt), 39 | "Максимум": tpl.max(frFmt), 40 | "Сумма по сумме": tpl.sumOverSum(frFmt), 41 | "80% верхней границы": tpl.sumOverSumBound80(true, frFmt), 42 | "80% нижней границы": tpl.sumOverSumBound80(false, frFmt), 43 | "Доля по всему": tpl.fractionOf(tpl.sum(), "total", frFmtPct), 44 | "Доля по строке": tpl.fractionOf(tpl.sum(), "row", frFmtPct), 45 | "Доля по столбцу": tpl.fractionOf(tpl.sum(), "col", frFmtPct), 46 | "Кол-во по всему": tpl.fractionOf(tpl.count(), "total", frFmtPct), 47 | "Кол-во по строке": tpl.fractionOf(tpl.count(), "row", frFmtPct), 48 | "Кол-во по столбцу": tpl.fractionOf(tpl.count(), "col", frFmtPct) 49 | 50 | renderers: 51 | "Таблица": $.pivotUtilities.renderers["Table"] 52 | "График столбцы": $.pivotUtilities.renderers["Table Barchart"] # TODO придумать более понятный вариант 53 | "Тепловая карта": $.pivotUtilities.renderers["Heatmap"] 54 | "Тепловая карта по строке": $.pivotUtilities.renderers["Row Heatmap"] 55 | "Тепловая карта по столбцу": $.pivotUtilities.renderers["Col Heatmap"] 56 | 57 | -------------------------------------------------------------------------------- /locales/pivot.sq.coffee: -------------------------------------------------------------------------------- 1 | callWithJQuery = (pivotModule) -> 2 | if typeof exports is "object" and typeof module is "object" # CommonJS 3 | pivotModule require("jquery") 4 | else if typeof define is "function" and define.amd # AMD 5 | define ["jquery"], pivotModule 6 | # Plain browser env 7 | else 8 | pivotModule jQuery 9 | 10 | callWithJQuery ($) -> 11 | nf = $.pivotUtilities.numberFormat 12 | tpl = $.pivotUtilities.aggregatorTemplates 13 | 14 | frFmt = nf(thousandsSep: " ", decimalSep: ",") 15 | frFmtInt = nf(digitsAfterDecimal: 0, thousandsSep: " ", decimalSep: ",") 16 | frFmtPct = nf(digitsAfterDecimal: 1, scaler: 100, suffix: "%", thousandsSep: " ", decimalSep: ",") 17 | 18 | $.pivotUtilities.locales.sq = 19 | localeStrings: 20 | renderError: "Ka ndodhur një gabim gjatë shfaqjes së rezultateve të PivotTable." 21 | computeError: "Ka ndodhur një gabim gjatë llogaritjes së rezultateve të PivotTable." 22 | uiRenderError: "Ka ndodhur një gabim gjatë shfaqjes së ndërfaqes së PivotTable." 23 | selectAll: "Përzgjedh të gjitha" 24 | selectNone: "Mos përzgjedh asnjërën" 25 | tooMany: "(shumë për t'u listuar)" 26 | filterResults: "Filtro vlerat" 27 | totals: "Totalet" 28 | vs: "kundër" 29 | by: "për" 30 | 31 | aggregators: 32 | "Numëro": tpl.count(frFmtInt) 33 | "Numëro vlerat unike": tpl.countUnique(frFmtInt) 34 | "Listo vlerat unike": tpl.listUnique(", ") 35 | "Shuma": tpl.sum(frFmt) 36 | "Shuma si numër i plotë": tpl.sum(frFmtInt) 37 | "Mesatarja": tpl.average(frFmt) 38 | "Minimumi": tpl.min(frFmt) 39 | "Maksimumi": tpl.max(frFmt) 40 | "Shuma mbi shumë": tpl.sumOverSum(frFmt) 41 | "80% kufiri i sipërm": tpl.sumOverSumBound80(true, frFmt) 42 | "80% kufiri i poshtëm": tpl.sumOverSumBound80(false, frFmt) 43 | "Shuma si thyesë e totalit": tpl.fractionOf(tpl.sum(), "total", frFmtPct) 44 | "Shuma si thyesë e rreshtave": tpl.fractionOf(tpl.sum(), "row", frFmtPct) 45 | "Shuma si thyesë e kolonave": tpl.fractionOf(tpl.sum(), "col", frFmtPct) 46 | "Numërimi si thyesë e totalit": tpl.fractionOf(tpl.count(), "total", frFmtPct) 47 | "Numërimi si thyesë e rreshtave": tpl.fractionOf(tpl.count(), "row", frFmtPct) 48 | "Numërimi si thyesë e kolonave": tpl.fractionOf(tpl.count(), "col", frFmtPct) 49 | 50 | renderers: 51 | "Tabela": $.pivotUtilities.renderers["Table"] 52 | "Tabela me diagram vertikal": $.pivotUtilities.renderers["Table Barchart"] 53 | "Heatmap": $.pivotUtilities.renderers["Heatmap"] 54 | "Heatmap për rresht": $.pivotUtilities.renderers["Row Heatmap"] 55 | "Heatmap për kolonë": $.pivotUtilities.renderers["Col Heatmap"] 56 | -------------------------------------------------------------------------------- /locales/pivot.tr.coffee: -------------------------------------------------------------------------------- 1 | callWithJQuery = (pivotModule) -> 2 | if typeof exports is "object" and typeof module is "object" # CommonJS 3 | pivotModule require("jquery") 4 | else if typeof define is "function" and define.amd # AMD 5 | define ["jquery"], pivotModule 6 | # Plain browser env 7 | else 8 | pivotModule jQuery 9 | 10 | callWithJQuery ($) -> 11 | nf = $.pivotUtilities.numberFormat 12 | tpl = $.pivotUtilities.aggregatorTemplates 13 | r = $.pivotUtilities.renderers 14 | gcr = $.pivotUtilities.gchart_renderers 15 | d3r = $.pivotUtilities.d3_renderers 16 | c3r = $.pivotUtilities.c3_renderers 17 | 18 | frFmt = nf(thousandsSep: ".", decimalSep: ",") 19 | frFmtInt = nf(digitsAfterDecimal: 0, thousandsSep: ".", decimalSep: ",") 20 | frFmtPct = nf(digitsAfterDecimal: 2, scaler: 100, suffix: "%", thousandsSep: ".", decimalSep: ",") 21 | 22 | $.pivotUtilities.locales.tr = 23 | 24 | localeStrings: 25 | renderError: "PivotTable sonuçlarını oluştuturken hata oluştu" 26 | computeError: "PivotTable sonuçlarını işlerken hata oluştu" 27 | uiRenderError: "PivotTable UI sonuçlarını oluştuturken hata oluştu" 28 | selectAll: "Tümünü Seç" 29 | selectNone: "Tümünü Bırak" 30 | tooMany: "(listelemek için fazla)" 31 | filterResults: "Sonuçları filtrele" 32 | totals: "Toplam" 33 | vs: "vs" 34 | by: "ile" 35 | 36 | aggregators: 37 | "Sayı": tpl.count(frFmtInt) 38 | "Benzersiz değerler sayısı": tpl.countUnique(frFmtInt) 39 | "Benzersiz değerler listesi": tpl.listUnique(", ") 40 | "Toplam": tpl.sum(frFmt) 41 | "Toplam (tam sayı)": tpl.sum(frFmtInt) 42 | "Ortalama": tpl.average(frFmt) 43 | "Min": tpl.min(frFmt) 44 | "Maks": tpl.max(frFmt) 45 | "Miktarların toplamı": tpl.sumOverSum(frFmt) 46 | "%80 daha yüksek": tpl.sumOverSumBound80(true, frFmt) 47 | "%80 daha düşük": tpl.sumOverSumBound80(false, frFmt) 48 | "Toplam oranı (toplam)": tpl.fractionOf(tpl.sum(), "total", frFmtPct) 49 | "Satır oranı (toplam)": tpl.fractionOf(tpl.sum(), "row", frFmtPct) 50 | "Sütunun oranı (toplam)": tpl.fractionOf(tpl.sum(), "col", frFmtPct) 51 | "Toplam oranı (sayı)": tpl.fractionOf(tpl.count(), "total", frFmtPct) 52 | "Satır oranı (sayı)": tpl.fractionOf(tpl.count(), "row", frFmtPct) 53 | "Sütunun oranı (sayı)": tpl.fractionOf(tpl.count(), "col", frFmtPct) 54 | 55 | renderers: 56 | "Tablo": r["Table"] 57 | "Tablo (Çubuklar)": r["Table Barchart"] 58 | "İlgi haritası": r["Heatmap"] 59 | "Satır ilgi haritası": r["Row Heatmap"] 60 | "Sütun ilgi haritası": r["Col Heatmap"] 61 | if gcr 62 | $.pivotUtilities.locales.tr.gchart_renderers = 63 | "Çizgi Grafiği": gcr["Line Chart"] 64 | "Bar Grafiği": gcr["Bar Chart"] 65 | "Yığılmış Çubuk Grafik ": gcr["Stacked Bar Chart"] 66 | "Alan Grafiği": gcr["Area Chart"] 67 | 68 | if d3r 69 | $.pivotUtilities.locales.tr.d3_renderers = 70 | "Hiyerarşik Alan Grafiği (Treemap)": d3r["Treemap"] 71 | 72 | if c3r 73 | $.pivotUtilities.locales.tr.c3_renderers = 74 | "Çizgi Grafiği": c3r["Line Chart"] 75 | "Bar Grafiği": c3r["Bar Chart"] 76 | "Yığılmış Çubuk Grafik ": c3r["Stacked Bar Chart"] 77 | "Alan Grafiği": c3r["Area Chart"] 78 | 79 | return $.pivotUtilities.locales.tr 80 | 81 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pivottable", 3 | "version": "2.23.0", 4 | "description": "Javascript Pivot Table (aka Pivot Grid, Pivot Chart, Cross-Tab) implementation with drag'n'drop", 5 | "main": "dist/pivot.js", 6 | "files": [ 7 | "dist" 8 | ], 9 | "style": "dist/pivot.css", 10 | "keywords": [ 11 | "pivot", 12 | "crosstab", 13 | "grid", 14 | "table", 15 | "pivottable", 16 | "pivotgrid", 17 | "pivotchart", 18 | "jquery", 19 | "jquery-plugin" 20 | ], 21 | "repository": { 22 | "type": "git", 23 | "url": "git://github.com/nicolaskruchten/pivottable.git" 24 | }, 25 | "author": "Nicolas Kruchten", 26 | "license": "MIT", 27 | "bugs": { 28 | "url": "https://github.com/nicolaskruchten/pivottable/issues" 29 | }, 30 | "homepage": "https://github.com/nicolaskruchten/pivottable", 31 | "dependencies": { 32 | "jquery": ">=1.9.0" 33 | }, 34 | "devDependencies": { 35 | "gulp-coffee": "^2.2.0", 36 | "gulp-uglify": "^1.0.2", 37 | "gulp-sourcemaps": "^1.2.8", 38 | "gulp-serve": "^1.2.0", 39 | "gulp": "^3.8.10", 40 | "run-sequence": "^1.0.2", 41 | "gulp-tag-version": "^1.2.1", 42 | "gulp-git": "^0.5.5", 43 | "gulp-bump": "^0.1.11", 44 | "gulp-filter": "^1.0.2", 45 | "gulp-util": "^3.0.1", 46 | "gulp-rename": "^1.2.0", 47 | "gulp-minify-css": "^0.3.11", 48 | "gulp-concat": "^2.4.2" 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/d3_renderers.coffee: -------------------------------------------------------------------------------- 1 | callWithJQuery = (pivotModule) -> 2 | if typeof exports is "object" and typeof module is "object" # CommonJS 3 | pivotModule require("jquery"), require("d3") 4 | else if typeof define is "function" and define.amd # AMD 5 | define ["jquery", "d3"], pivotModule 6 | # Plain browser env 7 | else 8 | pivotModule jQuery, d3 9 | 10 | callWithJQuery ($, d3) -> 11 | 12 | $.pivotUtilities.d3_renderers = Treemap: (pivotData, opts) -> 13 | defaults = 14 | localeStrings: {} 15 | d3: 16 | width: -> $(window).width() / 1.4 17 | height: -> $(window).height() / 1.4 18 | 19 | opts = $.extend(true, {}, defaults, opts) 20 | 21 | 22 | result = $("
").css(width: "100%", height: "100%") 23 | 24 | tree = name: "All", children: [] 25 | addToTree = (tree, path, value) -> 26 | if path.length == 0 27 | tree.value = value 28 | return 29 | tree.children ?= [] 30 | x = path.shift() 31 | for child in tree.children when child.name == x 32 | addToTree(child, path, value) 33 | return 34 | newChild = name: x 35 | addToTree(newChild, path, value) 36 | tree.children.push newChild 37 | 38 | for rowKey in pivotData.getRowKeys() 39 | value = pivotData.getAggregator(rowKey, []).value() 40 | if value? 41 | addToTree(tree, rowKey, value) 42 | 43 | color = d3.scale.category10() 44 | width = opts.d3.width() 45 | height = opts.d3.height() 46 | 47 | treemap = d3.layout.treemap() 48 | .size([width, height]) 49 | .sticky(true) 50 | .value( (d) -> d.size ) 51 | 52 | d3.select(result[0]) 53 | .append("div") 54 | .style("position", "relative") 55 | .style("width", width + "px") 56 | .style("height", height + "px") 57 | .datum(tree).selectAll(".node") 58 | .data(treemap.padding([15,0,0,0]).value( (d) -> d.value ).nodes) 59 | .enter().append("div") 60 | .attr("class", "node") 61 | .style("background", (d) -> if d.children? then "lightgrey" else color(d.name) ) 62 | .text( (d) -> d.name ) 63 | .call -> 64 | this.style("left", (d) -> d.x+"px" ) 65 | .style("top", (d) -> d.y+"px" ) 66 | .style("width", (d) -> Math.max(0, d.dx - 1)+"px" ) 67 | .style("height",(d) -> Math.max(0, d.dy - 1)+"px" ) 68 | return 69 | 70 | return result 71 | 72 | 73 | 74 | -------------------------------------------------------------------------------- /src/export_renderers.coffee: -------------------------------------------------------------------------------- 1 | callWithJQuery = (pivotModule) -> 2 | if typeof exports is "object" and typeof module is "object" # CommonJS 3 | pivotModule require("jquery") 4 | else if typeof define is "function" and define.amd # AMD 5 | define ["jquery"], pivotModule 6 | # Plain browser env 7 | else 8 | pivotModule jQuery 9 | 10 | callWithJQuery ($) -> 11 | 12 | $.pivotUtilities.export_renderers = "TSV Export": (pivotData, opts) -> 13 | defaults = localeStrings: {} 14 | 15 | opts = $.extend(true, {}, defaults, opts) 16 | 17 | rowKeys = pivotData.getRowKeys() 18 | rowKeys.push [] if rowKeys.length == 0 19 | colKeys = pivotData.getColKeys() 20 | colKeys.push [] if colKeys.length == 0 21 | rowAttrs = pivotData.rowAttrs 22 | colAttrs = pivotData.colAttrs 23 | 24 | result = [] 25 | 26 | row = [] 27 | for rowAttr in rowAttrs 28 | row.push rowAttr 29 | if colKeys.length == 1 and colKeys[0].length == 0 30 | row.push pivotData.aggregatorName 31 | else 32 | for colKey in colKeys 33 | row.push colKey.join("-") 34 | 35 | result.push row 36 | 37 | for rowKey in rowKeys 38 | row = [] 39 | for r in rowKey 40 | row.push r 41 | 42 | for colKey in colKeys 43 | agg = pivotData.getAggregator(rowKey, colKey) 44 | if agg.value()? 45 | row.push agg.value() 46 | else 47 | row.push "" 48 | result.push row 49 | text = "" 50 | for r in result 51 | text += r.join("\t")+"\n" 52 | 53 | return $("