-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathxfilter.min.js
11 lines (10 loc) · 5.09 KB
/
xfilter.min.js
1
2
3
4
5
6
7
8
9
10
11
/*!
* xfilter 0.2.3
* http://att.github.io/xfilter/
* Copyright (c) 2012-2013 AT&T Intellectual Property
*
* Licensed under the MIT License
* https://github.com/att/xfilter/blob/master/LICENSE
*/
!function(){function e(){"use strict";function e(e){var t,n,r,i={},u={},o=17;function a(t){return e+"/"+t}var f={};function c(e,t){return e.key<t.key?-1:e.key>t.key?1:e.key>=t.key?0:NaN}return f.dimension=function(e){if(!Object.keys(n).length)throw new Error("no schema (not started)");if(!n[e])throw new Error("field "+e+" not found in schema");function t(n){return r[e]?n instanceof Array?n.map(t):r[e].to(n):n}return{filter:function(t){if(null!==t)throw new Error("unexpected non-null filter()");return delete i[e],this},filterExact:function(n){return n=t(n),i[e]={type:"set",target:[n]},this},filterMultiple:function(n){return n=t(n),i[e]={type:"set",target:n},this},filterRange:function(n){return n=t(n),i[e]={type:"interval",target:n},this},filterFunction:function(){throw new Error("filter functions not allowed")},dispose:function(){return this.filter(null),this},group:function(){return function(e){var t=o++,n={id:t,dimension:e,values:null,splitter:"a"};u[t]=n;var r={categorical:function(){return this},dispose:function(){return delete u[t],n.values=null,this},all:function(){return n.values}};return f.engine().augment_group&&(r=f.engine().augment_group(n,r)),r}(e)}}},f.commit=function(){var e=Object.keys(u),t=[];for(var n in u)t.push(f.engine().do_query(a,i,u[n]));return Promise.all(t).then(function(n){if(n.length!==t.length)throw new Error("unexpected number of results "+n.length);for(var i=0;i<n.length;++i){var o=n[i],a=e[i],s=u[a],l=r[s.dimension];s.values=f.engine().unpack_result(o).sort(c).map(function(e){return{key:l?l.fro(e.key,s.state):e.key,value:e.value}})}return function(e){function t(){for(var t=e,n=0;n<arguments.length;++n){if(!t[arguments[n]])return console.log("expected data."+Array.prototype.slice.call(arguments,0,n).join(".")),!1;t=t[arguments[n]]}return!0}t("layers"),t("root","children")}(o)&&o,n})},f.engine=function(e){return arguments.length?(t=e,f):t},f.start=function(){return f.engine().fetch_schema(a).then(function(e){({fields:n,xform:r}=e),r=r||{}})},f}return e.version="0.2.3",e.nanocube_queries=function(){var e,t;return{do_query:function(e,t,n){var r=["count"];for(var i in t)if(!n||n.dimension!==i){var u;switch(t[i].type){case"set":u="set("+t[i].target.join(",")+")";break;case"interval":u="interval("+t[i].target.join(",")+")"}r.push('.r("'+i+'",'+u+")")}return n.state&&r.push("."+n.state.splitter+'("'+n.dimension+'",'+n.state.print()+")"),d3.json(e(r.join("")))},unpack_result:function(e){return e.root.children.map(function(e){return{key:e.path[0],value:e.val}})},fetch_schema:function(n){return d3.json(n("schema")).then(function(n){var r={},i={};return n.fields.forEach(function(n){if(r[n.name]=n,/^nc_dim_cat_/.test(n.type)){var u=[];for(var o in n.valnames)u[n.valnames[o]]=o;i[n.name]={to:function(e){return n.valnames[e]},fro:function(e){return u[e]||"foo"}}}else/^nc_dim_time_/.test(n.type)&&(i[n.name]={to:function(n){return Math.round((n.getTime()-e)/t)},fro:function(n,r){return new Date(r.start*t+e+n*r.binwid*t)}})}),n.metadata.forEach(function(n){if("tbin"===n.key){var r,i=n.value.split("_");if(e=Date.parse(i[0]+" "+i[1]),r=/^([0-9]+)([a-z]+)$/.exec(i[2])){var u=function(e){var t=1;switch(e){case"w":t*=7;case"d":t*=24;case"h":t*=60;case"m":t*=60;case"s":return 1e3*t;default:return NaN}}(r[2]);t=+r[1]*u}}}),{fields:r,xform:i}})},augment_group:function(n,r){function i(e){var t=Array.prototype.slice.call(arguments,1);return function(){return e+"("+t.map(JSON.stringify).join(",")+")"}}return Object.assign({},r,{dive:function(e,t){return n.state=function(e,t){return{bins:e,depth:t,splitter:"a",print:i("dive",e,t)}}(e,t),this},mt_interval_sequence:function(e,t,r){return n.state=function(e,t,n){return{start:e,binwid:t,len:n,splitter:"r",print:i("mt_interval_sequence",e,t,n)}}(e,t,r),this},time:function(n,r,i){n=n?n.getTime():e,r=r||t,i=i||3650;var u=(n-e)/t,o=r/t;return this.mt_interval_sequence(u,o,i)},categorical:function(){return r.categorical(),this.dive([],1)}})}}},e.fgb_queries=function(){return{do_query:function(e,t,n){var r={filter:{},groupby:[n.dimension]};for(var i in t)if(!n||n.dimension!==i){if("set"!==t[i].type)throw new Error("don't know how to handle filter type "+t[i].type);r.filter[i]=t[i].target}return d3.json(e("query"),{method:"POST",headers:{"Content-type":"application/json; charset=UTF-8"},body:JSON.stringify(r)})},unpack_result:function(e){return e.map(function(e){return{key:e[0],value:e[1]}})},fetch_schema:function(e){return d3.text(e("")).then(function(e){var t=e.indexOf(" ");e.slice(0,t);return{fields:JSON.parse(e.slice(t+1).replace(/'/g,'"')).reduce(function(e,t){return e[t]=!0,e},{}),xform:{}}})}}},e.filter_handler=function(e,t){return 0===t.length?e.filter(null):1!==t.length||t[0].isFiltered?1===t.length&&"RangedFilter"===t[0].filterType?e.filterRange(t[0]):e.filterMultiple(t):e.filterExact(t[0]),t},e}"function"==typeof define&&define.amd?define([],e):"object"==typeof module&&module.exports?module.exports=e():this.xfilter=e()}();
//# sourceMappingURL=xfilter.min.js.map