diff --git a/README.md b/README.md index 1d5510e15..960e10681 100644 --- a/README.md +++ b/README.md @@ -85,7 +85,11 @@ You can catch the event like this in your parent directive or controller: ```js $scope.$on('event:dataTableLoaded', function(event, loadedDT) { - // loadedDT === {"id": "foobar", dt: oTable} + // loadedDT === {"id": "foobar", "DataTable": oTable, "dataTable": $oTable} + + // loadedDT.DataTable is the DataTable API instance + // loadedDT.dataTable is the jQuery Object + // See http://datatables.net/manual/api#Accessing-the-API }); ``` diff --git a/demo/partials/getting_started.html b/demo/partials/getting_started.html index 7057e84b8..3b8d87c87 100644 --- a/demo/partials/getting_started.html +++ b/demo/partials/getting_started.html @@ -79,7 +79,11 @@

Additional Notes

$scope.$on('event:dataTableLoaded', function(event, loadedDT) { - // loadedDT === {"id": "foobar", dt: oTable} + // loadedDT === {"id": "foobar", "DataTable": oTable, "dataTable": $oTable} + + // loadedDT.DataTable is the DataTable API instance + // loadedDT.dataTable is the jQuery Object + // See http://datatables.net/manual/api#Accessing-the-API });
diff --git a/dist/angular-datatables.js b/dist/angular-datatables.js index f32e4872d..8ec86c8a5 100644 --- a/dist/angular-datatables.js +++ b/dist/angular-datatables.js @@ -863,9 +863,11 @@ options.destroy = true; } var oTable = $elem.DataTable(options); + // See http://datatables.net/manual/api#Accessing-the-API to understand the difference between DataTable and dataTable $scope.$emit('event:dataTableLoaded', { id: $elem.attr('id'), - dt: oTable + DataTable: oTable, + dataTable: $elem.dataTable() }); return oTable; }, diff --git a/dist/angular-datatables.min.js b/dist/angular-datatables.min.js index e01495862..935c42cf7 100644 --- a/dist/angular-datatables.min.js +++ b/dist/angular-datatables.min.js @@ -3,4 +3,4 @@ * https://github.com/l-lin/angular-datatables * License: MIT */ -!function(a,b,c,d){"use strict";d.module("datatables.bootstrap.tabletools",["datatables.bootstrap.options","datatables.util"]).service("DTBootstrapTableTools",["DTPropertyUtil","DTBootstrapDefaultOptions",function(a,b){var e=!1,f={},g=function(){c.fn.DataTable.TableTools&&(f.TableTools={classes:d.copy(c.fn.DataTable.TableTools.classes),oTags:d.copy(c.fn.DataTable.TableTools.DEFAULTS.oTags)})};this.integrate=function(d){if(!e){if(g(),c.fn.DataTable.TableTools){var f=a.overrideProperties(b.getOptions().TableTools,d?d.TableTools:null);c.extend(!0,c.fn.DataTable.TableTools.classes,f.classes),c.extend(!0,c.fn.DataTable.TableTools.DEFAULTS.oTags,f.DEFAULTS.oTags)}e=!0}},this.deIntegrate=function(){e&&c.fn.DataTable.TableTools&&f.TableTools&&(c.extend(!0,c.fn.DataTable.TableTools.classes,f.TableTools.classes),c.extend(!0,c.fn.DataTable.TableTools.DEFAULTS.oTags,f.TableTools.oTags),e=!1)}}]),d.module("datatables.bootstrap.colvis",["datatables.bootstrap.options","datatables.util"]).service("DTBootstrapColVis",["DTPropertyUtil","DTBootstrapDefaultOptions",function(a,b){var d=!1;this.integrate=function(e,f){if(!d){var g=a.overrideProperties(b.getOptions().ColVis,f?f.ColVis:null);c.fn.DataTable.ColVis&&e(function(){c(".ColVis_MasterButton").attr("class","ColVis_MasterButton "+g.classes.masterButton),c(".ColVis_Button").removeClass("ColVis_Button")}),d=!0}},this.deIntegrate=function(){d&&c.fn.DataTable.ColVis&&(d=!1)}}]),d.module("datatables.bootstrap",["datatables.bootstrap.options","datatables.bootstrap.tabletools","datatables.bootstrap.colvis"]).service("DTBootstrap",["DTBootstrapTableTools","DTBootstrapColVis","DTBootstrapDefaultOptions",function(a,e,f){var g=!1,h=[],i={},j=function(){i.oStdClasses=d.copy(c.fn.dataTableExt.oStdClasses),i.fnPagingInfo=c.fn.dataTableExt.oApi.fnPagingInfo,i.renderer=d.copy(c.fn.DataTable.ext.renderer),c.fn.DataTable.TableTools&&(i.TableTools={classes:d.copy(c.fn.DataTable.TableTools.classes),oTags:d.copy(c.fn.DataTable.TableTools.DEFAULTS.oTags)})},k=function(){c.extend(c.fn.dataTableExt.oStdClasses,i.oStdClasses),c.fn.dataTableExt.oApi.fnPagingInfo=i.fnPagingInfo,c.extend(!0,c.fn.DataTable.ext.renderer,i.renderer)},l=function(){c.extend(c.fn.dataTableExt.oStdClasses,{sWrapper:"dataTables_wrapper form-inline",sFilterInput:"form-control input-sm",sLengthSelect:"form-control input-sm",sFilter:"dataTables_filter",sLength:"dataTables_length"})},m=function(){c.fn.dataTableExt.oApi.fnPagingInfo=function(a){return{iStart:a._iDisplayStart,iEnd:a.fnDisplayEnd(),iLength:a._iDisplayLength,iTotal:a.fnRecordsTotal(),iFilteredTotal:a.fnRecordsDisplay(),iPage:-1===a._iDisplayLength?0:Math.ceil(a._iDisplayStart/a._iDisplayLength),iTotalPages:-1===a._iDisplayLength?0:Math.ceil(a.fnRecordsDisplay()/a._iDisplayLength)}}},n=function(){c.extend(!0,c.fn.DataTable.ext.renderer,{pageButton:{_:function(a,d,e,f,g,h){var i,j,k=a.oClasses,l=a.oLanguage.oPaginate,m=0,n=c("",{"class":"pagination"}),o=function(b,d){var f,p,q,r,s=function(b){b.preventDefault(),c.fn.DataTable.ext.internal._fnPageChange(a,b.data.action,!0)};for(f=0,p=d.length;p>f;f++)if(r=d[f],c.isArray(r)){r.DT_el="li";var t=c("<"+(r.DT_el||"div")+"/>").appendTo(n);o(t,r)}else{i="",j="";var u,v=c("
  • ");switch(r){case"ellipsis":n.append('
  • ');break;case"first":i=l.sFirst,j=r,0>=g&&(v.addClass(k.sPageButtonDisabled),u=!0);break;case"previous":i=l.sPrevious,j=r,0>=g&&(v.addClass(k.sPageButtonDisabled),u=!0);break;case"next":i=l.sNext,j=r,g>=h-1&&(v.addClass(k.sPageButtonDisabled),u=!0);break;case"last":i=l.sLast,j=r,g>=h-1&&(v.addClass(k.sPageButtonDisabled),u=!0);break;default:i=r+1,j="",g===r&&v.addClass(k.sPageButtonActive)}i&&(v.appendTo(n),q=c("",{href:"#","class":j,"aria-controls":a.sTableId,"data-dt-idx":m,tabindex:a.iTabIndex,id:0===e&&"string"==typeof r?a.sTableId+"_"+r:null}).html(i).appendTo(v),c.fn.DataTable.ext.internal._fnBindAction(q,{action:r},s),m++)}};try{var p=c(b.activeElement).data("dt-idx"),q=c(d).empty();n.appendTo(q),o(q,f),null!==p&&c(d).find("[data-dt-idx="+p+"]").focus()}catch(r){}}}})},o=function(a){d.isFunction(a)&&h.push(a)},p=function(){g||(j(),l(),m(),n(),o(function(){c("div.dataTables_filter").find("input").addClass("form-control"),c("div.dataTables_length").find("select").addClass("form-control")}),g=!0)},q=function(a){if(!a.hasOverrideDom){var b=f.getOptions().dom;return a.hasColReorder&&(b="R"+b),a.hasColVis&&(b="C"+b),a.hasTableTools&&(b="T"+b),b}return a.sDom};this.integrate=function(b){p(),a.integrate(b.bootstrap),e.integrate(o,b.bootstrap),b.sDom=q(b),d.isUndefined(b.fnDrawCallback)&&(b.fnDrawCallback=function(){for(var a=0;a<'col-xs-6'f>r>t<'row'<'col-xs-6'i><'col-xs-6'p>>"}).service("DTBootstrapDefaultOptions",["DTDefaultOptions","DTPropertyUtil","DT_BOOTSTRAP_DEFAULT_OPTIONS",function(a,b,c){this.getOptions=function(){return b.overrideProperties(c,a.bootstrapOptions)}}]),d.module("datatables.directive",["datatables.renderer","datatables.options"]).directive("datatable",["DT_DEFAULT_OPTIONS","DTBootstrap","DTRendererFactory","DTRendererService",function(a,b,c,e){return{restrict:"A",scope:{dtOptions:"=",dtColumns:"=",dtColumnDefs:"=",datatable:"@"},compile:function(a){var b=a[0].innerHTML;return function(a,c,d,e){a.$watch("[dtOptions, dtColumns, dtColumnDefs]",function(a,d){a!==d&&e.render(c,e.buildOptions(),b)},!0),e.showLoading(c),e.render(c,e.buildOptions(),b)}},controller:["$scope",function(a){var f;this.showLoading=function(a){e.showLoading(a)},this.buildOptions=function(){var c;return d.isDefined(a.dtOptions)&&(c={},d.extend(c,a.dtOptions),d.isArray(a.dtColumns)&&(c.aoColumns=a.dtColumns),d.isArray(a.dtColumnDefs)&&(c.aoColumnDefs=a.dtColumnDefs),c.integrateBootstrap?b.integrate(c):b.deIntegrate()),c},this.render=function(b,d,e){var g=a.datatable&&"ng"===a.datatable;f?f.withOptions(d).render(a,b,e):f=c.fromOptions(d,g).render(a,b,e)}}]}}]),d.module("datatables.factory",["datatables.bootstrap","datatables.options"]).factory("DTOptionsBuilder",["DT_DEFAULT_OPTIONS",function(a){var b={isPresent:function(){return d.isDefined(this.obj)&&null!==this.obj},orEmptyObj:function(){return this.isPresent()?this.obj:{}},or:function(a){return this.isPresent()?this.obj:a}},c=function(a){var c=Object.create(b);return c.obj=a,c},e={integrateBootstrap:!1,hasColVis:!1,hasColReorder:!1,hasTableTools:!1,hasOverrideDom:!1,reloadData:function(){return this.reload=!0,this},withOption:function(a,b){return d.isString(a)&&(this[a]=b),this},withSource:function(a){return this.sAjaxSource=a,this},withDataProp:function(a){return this.sAjaxDataProp=a,this},withFnServerData:function(a){if(!d.isFunction(a))throw new Error("The parameter must be a function");return this.fnServerData=a,this},withPaginationType:function(a){if(!d.isString(a))throw new Error("The pagination type must be provided");return this.sPaginationType=a,this},withLanguage:function(a){return this.oLanguage=a,this},withLanguageSource:function(a){return this.withLanguage({sUrl:a})},withDisplayLength:function(a){return this.iDisplayLength=a,this},withFnPromise:function(a){return this.fnPromise=a,this},withDOM:function(a){return this.sDom=a,this.hasOverrideDom=!0,this},withBootstrap:function(){return this.integrateBootstrap=!0,d.isObject(this.oClasses)?this.oClasses.sPageButtonActive="active":this.oClasses={sPageButtonActive:"active"},this},withBootstrapOptions:function(a){return this.bootstrap=a,this},withColReorderOption:function(a,b){return d.isString(a)&&(this.oColReorder=c(this.oColReorder).orEmptyObj(),this.oColReorder[a]=b),this},withColReorder:function(){var b="R";return this.sDom=b+c(this.sDom).or(a.dom),this.hasColReorder=!0,this},withColReorderOrder:function(a){return d.isArray(a)&&this.withColReorderOption("aiOrder",a),this},withColReorderCallback:function(a){if(!d.isFunction(a))throw new Error("The reorder callback must be a function");return this.withColReorderOption("fnReorderCallback",a),this},withColVisOption:function(a,b){return d.isString(a)&&(this.oColVis=c(this.oColVis).orEmptyObj(),this.oColVis[a]=b),this},withColVis:function(){var b="C";return this.sDom=b+c(this.sDom).or(a.dom),this.hasColVis=!0,this},withColVisStateChange:function(a){if(!d.isFunction(a))throw new Error("The state change must be a function");return this.withColVisOption("fnStateChange",a),this},withTableToolsOption:function(a,b){return d.isString(a)&&(this.oTableTools=c(this.oTableTools).orEmptyObj(),this.oTableTools[a]=b),this},withTableTools:function(b){var e="T";return this.sDom=e+c(this.sDom).or(a.dom),this.hasTableTools=!0,d.isString(b)&&this.withTableToolsOption("sSwfPath",b),this},withTableToolsButtons:function(a){return d.isArray(a)&&this.withTableToolsOption("aButtons",a),this}};return{newOptions:function(){return Object.create(e)},fromSource:function(a){var b=Object.create(e);return b.sAjaxSource=a,b},fromFnPromise:function(a){var b=Object.create(e);return b.fnPromise=a,b}}}]).factory("DTColumnBuilder",function(){var a={withOption:function(a,b){return d.isString(a)&&(this[a]=b),this},withTitle:function(a){return this.sTitle=a,this},withClass:function(a){return this.sClass=a,this},notVisible:function(){return this.bVisible=!1,this},notSortable:function(){return this.bSortable=!1,this},renderWith:function(a){return this.mRender=a,this}};return{newColumn:function(b,c){if(d.isUndefined(b))throw new Error('The parameter "mData" is not defined!');var e=Object.create(a);return e.mData=b,e.sTitle=c||"",e},DTColumn:a}}).factory("DTColumnDefBuilder",["DTColumnBuilder",function(a){return{newColumnDef:function(b){if(d.isUndefined(b))throw new Error('The parameter "targets" must be defined! See https://datatables.net/reference/option/columnDefs.targets');var c=Object.create(a.DTColumn);return c.aTargets=d.isArray(b)?b:[b],c}}}]).factory("DTLoadingTemplate",function(){return{html:'

    Loading...

    '}}),d.module("datatables",["datatables.directive","datatables.factory","datatables.bootstrap"]).run(function(){c.fn.DataTable.Api&&c.fn.DataTable.Api.register("ngDestroy()",function(b){return b=b||!1,this.iterator("table",function(d){var e,f=d.nTableWrapper.parentNode,g=d.oClasses,h=d.nTable,i=d.nTBody,j=d.nTHead,k=d.nTFoot,l=c(h),m=c(i),n=c(d.nTableWrapper),o=c.map(d.aoData,function(a){return a.nTr});d.bDestroying=!0,c.fn.DataTable.ext.internal._fnCallbackFire(d,"aoDestroyCallback","destroy",[d]),b||new c.fn.DataTable.Api(d).columns().visible(!0),n.unbind(".DT").find(":not(tbody *)").unbind(".DT"),c(a).unbind(".DT-"+d.sInstance),h!==j.parentNode&&(l.children("thead").detach(),l.append(j)),k&&h!==k.parentNode&&(l.children("tfoot").detach(),l.append(k)),l.detach(),n.detach(),d.aaSorting=[],d.aaSortingFixed=[],c.fn.DataTable.ext.internal._fnSortingClasses(d),c(o).removeClass(d.asStripeClasses.join(" ")),c("th, td",j).removeClass(g.sSortable+" "+g.sSortableAsc+" "+g.sSortableDesc+" "+g.sSortableNone),d.bJUI&&(c("th span."+g.sSortIcon+", td span."+g.sSortIcon,j).detach(),c("th, td",j).each(function(){var a=c("div."+g.sSortJUIWrapper,this);c(this).append(a.contents()),a.detach()})),!b&&f&&f.insertBefore(h,d.nTableReinsertBefore),l.css("width",d.sDestroyWidth).removeClass(g.sTable),e=d.asDestroyStripes.length,e&&m.children().each(function(a){c(this).addClass(d.asDestroyStripes[a%e])});var p=c.inArray(d,c.fn.DataTable.settings);-1!==p&&c.fn.DataTable.settings.splice(p,1)})})}),d.module("datatables.options",[]).constant("DT_DEFAULT_OPTIONS",{dom:"lfrtip",sAjaxDataProp:"",aoColumns:[]}).service("DTDefaultOptions",function(){this.bootstrapOptions={},this.setLanguageSource=function(a){return c.extend(c.fn.dataTable.defaults,{oLanguage:{sUrl:a}}),this},this.setLanguage=function(a){return c.extend(!0,c.fn.dataTable.defaults,{oLanguage:a}),this},this.setDisplayLength=function(a){return c.extend(c.fn.dataTable.defaults,{iDisplayLength:a}),this},this.setBootstrapOptions=function(a){return this.bootstrapOptions=a,this}}),d.module("datatables.renderer",["datatables.factory","datatables.options"]).factory("DTRendererService",["DTLoadingTemplate",function(a){var b=d.element(a.html);return{showLoading:function(a){a.after(b),a.hide(),b.show()},hideLoading:function(a){a.show(),b.hide()},renderDataTableAndEmitEvent:function(a,b,d){var e="#"+a.attr("id");c.fn.dataTable.isDataTable(e)&&(b.destroy=!0);var f=a.DataTable(b);return d.$emit("event:dataTableLoaded",{id:a.attr("id"),dt:f}),f},doRenderDataTable:function(a,b,c){return this.hideLoading(a),this.renderDataTableAndEmitEvent(a,b,c)}}}]).factory("DTRenderer",function(){return{withOptions:function(a){return this.options=a,this}}}).factory("DTDefaultRenderer",["$timeout","DTRenderer","DTRendererService",function(a,b,c){return{create:function(d){var e=Object.create(b);return e.options=d,e.render=function(b,d){var e=this;return a(function(){c.doRenderDataTable(d,e.options,b)},0,!1),e},e}}}]).factory("DTNGRenderer",["$compile","$timeout","DTRenderer","DTRendererService",function(a,b,c,d){return{create:function(e){var f=Object.create(c);return f.options=e,f.render=function(c,e,f){var g=this,h=e.find("tbody").html(),i=h.match(/^\s*.+\s+in\s+(\S*)\s*/),j=i[1];if(!i)throw new Error('Expected expression in form of "_item_ in _collection_[ track by _id_]" but got "{0}".',h);var k,l=!1,m=c.$parent;return m.$watchCollection(j,function(){k&&l&&(k.ngDestroy(),e.html(f),a(e.contents())(m)),b(function(){l=!0,k=d.doRenderDataTable(e,g.options,c)},0,!1)},!0),g},f}}}]).factory("DTPromiseRenderer",["$timeout","DTRenderer","DTRendererService",function(a,b,c){return{create:function(e){var f,g=function(b,d,e,g){b.aaData=e,a(function(){c.hideLoading(d),b.bDestroy=!0,f?(f.clear(),f.rows.add(b.aaData).draw()):f=c.renderDataTableAndEmitEvent(d,b,g)},0,!1)},h=Object.create(b);return h.options=e,h.render=function(a,b){var c=this,e=null,f=function(d){g(c.options,b,d,a),e=null},h=function(a){e=d.isFunction(a)?a():a,e.then(f)},i=function(a){e?e.then(function(){h(a)}):h(a)};return a.$watch("dtOptions.fnPromise",function(a){if(!d.isDefined(a))throw new Error("You must provide a promise or a function that returns a promise!");i(a)}),a.$watch("dtOptions.reload",function(b){b&&(a.dtOptions.reload=!1,i(a.dtOptions.fnPromise))}),c},h}}}]).factory("DTAjaxRenderer",["$timeout","DTRenderer","DTRendererService","DT_DEFAULT_OPTIONS",function(a,b,c,e){return{create:function(f){var g,h=function(a,b,c,e){d.isDefined(b)&&(a.sAjaxSource=b,d.isDefined(a.ajax)&&(d.isObject(a.ajax)?a.ajax.url=b:a.ajax={url:b})),i(a,c,e)},i=function(b,d,e){b.bDestroy=!0,a(function(){if(c.hideLoading(d),g){var a=b.sAjaxSource||b.ajax.url||b.ajax;g.ajax.url(a).load()}else g=c.renderDataTableAndEmitEvent(d,b,e)},0,!1)},j=Object.create(b);return j.options=f,j.render=function(a,b){var c=this;return d.isUndefined(c.options.sAjaxDataProp)&&(c.options.sAjaxDataProp=e.sAjaxDataProp),d.isUndefined(c.options.aoColumns)&&(c.options.aoColumns=e.aoColumns),a.$watch("dtOptions.sAjaxSource",function(d,e){d!==e&&h(c.options,d,b,a)},!0),a.$watch("dtOptions.reload",function(c,d){c!==d&&c&&(a.dtOptions.reload=!1,i(f,b,a))},!0),h(c.options,c.options.sAjaxDSource,b,a),this},j}}}]).factory("DTRendererFactory",["DTDefaultRenderer","DTNGRenderer","DTPromiseRenderer","DTAjaxRenderer",function(a,b,c,e){return{fromOptions:function(f,g){return g?b.create(f):d.isDefined(f)?d.isDefined(f.fnPromise)&&null!==f.fnPromise?c.create(f):d.isDefined(f.sAjaxSource)&&null!==f.sAjaxSource||d.isDefined(f.ajax)&&null!==f.ajax?e.create(f):a.create(f):a.create()}}}]),d.module("datatables.util",[]).factory("DTPropertyUtil",function(){return{overrideProperties:function(a,b){var c=d.copy(a);if((d.isUndefined(c)||null===c)&&(c={}),d.isUndefined(b)||null===b)return c;if(d.isObject(b))for(var e in b)b.hasOwnProperty(e)&&(c[e]=this.overrideProperties(c[e],b[e]));else c=d.copy(b);return c}}})}(window,document,jQuery,angular); \ No newline at end of file +!function(a,b,c,d){"use strict";d.module("datatables.bootstrap.tabletools",["datatables.bootstrap.options","datatables.util"]).service("DTBootstrapTableTools",["DTPropertyUtil","DTBootstrapDefaultOptions",function(a,b){var e=!1,f={},g=function(){c.fn.DataTable.TableTools&&(f.TableTools={classes:d.copy(c.fn.DataTable.TableTools.classes),oTags:d.copy(c.fn.DataTable.TableTools.DEFAULTS.oTags)})};this.integrate=function(d){if(!e){if(g(),c.fn.DataTable.TableTools){var f=a.overrideProperties(b.getOptions().TableTools,d?d.TableTools:null);c.extend(!0,c.fn.DataTable.TableTools.classes,f.classes),c.extend(!0,c.fn.DataTable.TableTools.DEFAULTS.oTags,f.DEFAULTS.oTags)}e=!0}},this.deIntegrate=function(){e&&c.fn.DataTable.TableTools&&f.TableTools&&(c.extend(!0,c.fn.DataTable.TableTools.classes,f.TableTools.classes),c.extend(!0,c.fn.DataTable.TableTools.DEFAULTS.oTags,f.TableTools.oTags),e=!1)}}]),d.module("datatables.bootstrap.colvis",["datatables.bootstrap.options","datatables.util"]).service("DTBootstrapColVis",["DTPropertyUtil","DTBootstrapDefaultOptions",function(a,b){var d=!1;this.integrate=function(e,f){if(!d){var g=a.overrideProperties(b.getOptions().ColVis,f?f.ColVis:null);c.fn.DataTable.ColVis&&e(function(){c(".ColVis_MasterButton").attr("class","ColVis_MasterButton "+g.classes.masterButton),c(".ColVis_Button").removeClass("ColVis_Button")}),d=!0}},this.deIntegrate=function(){d&&c.fn.DataTable.ColVis&&(d=!1)}}]),d.module("datatables.bootstrap",["datatables.bootstrap.options","datatables.bootstrap.tabletools","datatables.bootstrap.colvis"]).service("DTBootstrap",["DTBootstrapTableTools","DTBootstrapColVis","DTBootstrapDefaultOptions",function(a,e,f){var g=!1,h=[],i={},j=function(){i.oStdClasses=d.copy(c.fn.dataTableExt.oStdClasses),i.fnPagingInfo=c.fn.dataTableExt.oApi.fnPagingInfo,i.renderer=d.copy(c.fn.DataTable.ext.renderer),c.fn.DataTable.TableTools&&(i.TableTools={classes:d.copy(c.fn.DataTable.TableTools.classes),oTags:d.copy(c.fn.DataTable.TableTools.DEFAULTS.oTags)})},k=function(){c.extend(c.fn.dataTableExt.oStdClasses,i.oStdClasses),c.fn.dataTableExt.oApi.fnPagingInfo=i.fnPagingInfo,c.extend(!0,c.fn.DataTable.ext.renderer,i.renderer)},l=function(){c.extend(c.fn.dataTableExt.oStdClasses,{sWrapper:"dataTables_wrapper form-inline",sFilterInput:"form-control input-sm",sLengthSelect:"form-control input-sm",sFilter:"dataTables_filter",sLength:"dataTables_length"})},m=function(){c.fn.dataTableExt.oApi.fnPagingInfo=function(a){return{iStart:a._iDisplayStart,iEnd:a.fnDisplayEnd(),iLength:a._iDisplayLength,iTotal:a.fnRecordsTotal(),iFilteredTotal:a.fnRecordsDisplay(),iPage:-1===a._iDisplayLength?0:Math.ceil(a._iDisplayStart/a._iDisplayLength),iTotalPages:-1===a._iDisplayLength?0:Math.ceil(a.fnRecordsDisplay()/a._iDisplayLength)}}},n=function(){c.extend(!0,c.fn.DataTable.ext.renderer,{pageButton:{_:function(a,d,e,f,g,h){var i,j,k=a.oClasses,l=a.oLanguage.oPaginate,m=0,n=c("",{"class":"pagination"}),o=function(b,d){var f,p,q,r,s=function(b){b.preventDefault(),c.fn.DataTable.ext.internal._fnPageChange(a,b.data.action,!0)};for(f=0,p=d.length;p>f;f++)if(r=d[f],c.isArray(r)){r.DT_el="li";var t=c("<"+(r.DT_el||"div")+"/>").appendTo(n);o(t,r)}else{i="",j="";var u,v=c("
  • ");switch(r){case"ellipsis":n.append('
  • ');break;case"first":i=l.sFirst,j=r,0>=g&&(v.addClass(k.sPageButtonDisabled),u=!0);break;case"previous":i=l.sPrevious,j=r,0>=g&&(v.addClass(k.sPageButtonDisabled),u=!0);break;case"next":i=l.sNext,j=r,g>=h-1&&(v.addClass(k.sPageButtonDisabled),u=!0);break;case"last":i=l.sLast,j=r,g>=h-1&&(v.addClass(k.sPageButtonDisabled),u=!0);break;default:i=r+1,j="",g===r&&v.addClass(k.sPageButtonActive)}i&&(v.appendTo(n),q=c("",{href:"#","class":j,"aria-controls":a.sTableId,"data-dt-idx":m,tabindex:a.iTabIndex,id:0===e&&"string"==typeof r?a.sTableId+"_"+r:null}).html(i).appendTo(v),c.fn.DataTable.ext.internal._fnBindAction(q,{action:r},s),m++)}};try{var p=c(b.activeElement).data("dt-idx"),q=c(d).empty();n.appendTo(q),o(q,f),null!==p&&c(d).find("[data-dt-idx="+p+"]").focus()}catch(r){}}}})},o=function(a){d.isFunction(a)&&h.push(a)},p=function(){g||(j(),l(),m(),n(),o(function(){c("div.dataTables_filter").find("input").addClass("form-control"),c("div.dataTables_length").find("select").addClass("form-control")}),g=!0)},q=function(a){if(!a.hasOverrideDom){var b=f.getOptions().dom;return a.hasColReorder&&(b="R"+b),a.hasColVis&&(b="C"+b),a.hasTableTools&&(b="T"+b),b}return a.sDom};this.integrate=function(b){p(),a.integrate(b.bootstrap),e.integrate(o,b.bootstrap),b.sDom=q(b),d.isUndefined(b.fnDrawCallback)&&(b.fnDrawCallback=function(){for(var a=0;a<'col-xs-6'f>r>t<'row'<'col-xs-6'i><'col-xs-6'p>>"}).service("DTBootstrapDefaultOptions",["DTDefaultOptions","DTPropertyUtil","DT_BOOTSTRAP_DEFAULT_OPTIONS",function(a,b,c){this.getOptions=function(){return b.overrideProperties(c,a.bootstrapOptions)}}]),d.module("datatables.directive",["datatables.renderer","datatables.options"]).directive("datatable",["DT_DEFAULT_OPTIONS","DTBootstrap","DTRendererFactory","DTRendererService",function(a,b,c,e){return{restrict:"A",scope:{dtOptions:"=",dtColumns:"=",dtColumnDefs:"=",datatable:"@"},compile:function(a){var b=a[0].innerHTML;return function(a,c,d,e){a.$watch("[dtOptions, dtColumns, dtColumnDefs]",function(a,d){a!==d&&e.render(c,e.buildOptions(),b)},!0),e.showLoading(c),e.render(c,e.buildOptions(),b)}},controller:["$scope",function(a){var f;this.showLoading=function(a){e.showLoading(a)},this.buildOptions=function(){var c;return d.isDefined(a.dtOptions)&&(c={},d.extend(c,a.dtOptions),d.isArray(a.dtColumns)&&(c.aoColumns=a.dtColumns),d.isArray(a.dtColumnDefs)&&(c.aoColumnDefs=a.dtColumnDefs),c.integrateBootstrap?b.integrate(c):b.deIntegrate()),c},this.render=function(b,d,e){var g=a.datatable&&"ng"===a.datatable;f?f.withOptions(d).render(a,b,e):f=c.fromOptions(d,g).render(a,b,e)}}]}}]),d.module("datatables.factory",["datatables.bootstrap","datatables.options"]).factory("DTOptionsBuilder",["DT_DEFAULT_OPTIONS",function(a){var b={isPresent:function(){return d.isDefined(this.obj)&&null!==this.obj},orEmptyObj:function(){return this.isPresent()?this.obj:{}},or:function(a){return this.isPresent()?this.obj:a}},c=function(a){var c=Object.create(b);return c.obj=a,c},e={integrateBootstrap:!1,hasColVis:!1,hasColReorder:!1,hasTableTools:!1,hasOverrideDom:!1,reloadData:function(){return this.reload=!0,this},withOption:function(a,b){return d.isString(a)&&(this[a]=b),this},withSource:function(a){return this.sAjaxSource=a,this},withDataProp:function(a){return this.sAjaxDataProp=a,this},withFnServerData:function(a){if(!d.isFunction(a))throw new Error("The parameter must be a function");return this.fnServerData=a,this},withPaginationType:function(a){if(!d.isString(a))throw new Error("The pagination type must be provided");return this.sPaginationType=a,this},withLanguage:function(a){return this.oLanguage=a,this},withLanguageSource:function(a){return this.withLanguage({sUrl:a})},withDisplayLength:function(a){return this.iDisplayLength=a,this},withFnPromise:function(a){return this.fnPromise=a,this},withDOM:function(a){return this.sDom=a,this.hasOverrideDom=!0,this},withBootstrap:function(){return this.integrateBootstrap=!0,d.isObject(this.oClasses)?this.oClasses.sPageButtonActive="active":this.oClasses={sPageButtonActive:"active"},this},withBootstrapOptions:function(a){return this.bootstrap=a,this},withColReorderOption:function(a,b){return d.isString(a)&&(this.oColReorder=c(this.oColReorder).orEmptyObj(),this.oColReorder[a]=b),this},withColReorder:function(){var b="R";return this.sDom=b+c(this.sDom).or(a.dom),this.hasColReorder=!0,this},withColReorderOrder:function(a){return d.isArray(a)&&this.withColReorderOption("aiOrder",a),this},withColReorderCallback:function(a){if(!d.isFunction(a))throw new Error("The reorder callback must be a function");return this.withColReorderOption("fnReorderCallback",a),this},withColVisOption:function(a,b){return d.isString(a)&&(this.oColVis=c(this.oColVis).orEmptyObj(),this.oColVis[a]=b),this},withColVis:function(){var b="C";return this.sDom=b+c(this.sDom).or(a.dom),this.hasColVis=!0,this},withColVisStateChange:function(a){if(!d.isFunction(a))throw new Error("The state change must be a function");return this.withColVisOption("fnStateChange",a),this},withTableToolsOption:function(a,b){return d.isString(a)&&(this.oTableTools=c(this.oTableTools).orEmptyObj(),this.oTableTools[a]=b),this},withTableTools:function(b){var e="T";return this.sDom=e+c(this.sDom).or(a.dom),this.hasTableTools=!0,d.isString(b)&&this.withTableToolsOption("sSwfPath",b),this},withTableToolsButtons:function(a){return d.isArray(a)&&this.withTableToolsOption("aButtons",a),this}};return{newOptions:function(){return Object.create(e)},fromSource:function(a){var b=Object.create(e);return b.sAjaxSource=a,b},fromFnPromise:function(a){var b=Object.create(e);return b.fnPromise=a,b}}}]).factory("DTColumnBuilder",function(){var a={withOption:function(a,b){return d.isString(a)&&(this[a]=b),this},withTitle:function(a){return this.sTitle=a,this},withClass:function(a){return this.sClass=a,this},notVisible:function(){return this.bVisible=!1,this},notSortable:function(){return this.bSortable=!1,this},renderWith:function(a){return this.mRender=a,this}};return{newColumn:function(b,c){if(d.isUndefined(b))throw new Error('The parameter "mData" is not defined!');var e=Object.create(a);return e.mData=b,e.sTitle=c||"",e},DTColumn:a}}).factory("DTColumnDefBuilder",["DTColumnBuilder",function(a){return{newColumnDef:function(b){if(d.isUndefined(b))throw new Error('The parameter "targets" must be defined! See https://datatables.net/reference/option/columnDefs.targets');var c=Object.create(a.DTColumn);return c.aTargets=d.isArray(b)?b:[b],c}}}]).factory("DTLoadingTemplate",function(){return{html:'

    Loading...

    '}}),d.module("datatables",["datatables.directive","datatables.factory","datatables.bootstrap"]).run(function(){c.fn.DataTable.Api&&c.fn.DataTable.Api.register("ngDestroy()",function(b){return b=b||!1,this.iterator("table",function(d){var e,f=d.nTableWrapper.parentNode,g=d.oClasses,h=d.nTable,i=d.nTBody,j=d.nTHead,k=d.nTFoot,l=c(h),m=c(i),n=c(d.nTableWrapper),o=c.map(d.aoData,function(a){return a.nTr});d.bDestroying=!0,c.fn.DataTable.ext.internal._fnCallbackFire(d,"aoDestroyCallback","destroy",[d]),b||new c.fn.DataTable.Api(d).columns().visible(!0),n.unbind(".DT").find(":not(tbody *)").unbind(".DT"),c(a).unbind(".DT-"+d.sInstance),h!==j.parentNode&&(l.children("thead").detach(),l.append(j)),k&&h!==k.parentNode&&(l.children("tfoot").detach(),l.append(k)),l.detach(),n.detach(),d.aaSorting=[],d.aaSortingFixed=[],c.fn.DataTable.ext.internal._fnSortingClasses(d),c(o).removeClass(d.asStripeClasses.join(" ")),c("th, td",j).removeClass(g.sSortable+" "+g.sSortableAsc+" "+g.sSortableDesc+" "+g.sSortableNone),d.bJUI&&(c("th span."+g.sSortIcon+", td span."+g.sSortIcon,j).detach(),c("th, td",j).each(function(){var a=c("div."+g.sSortJUIWrapper,this);c(this).append(a.contents()),a.detach()})),!b&&f&&f.insertBefore(h,d.nTableReinsertBefore),l.css("width",d.sDestroyWidth).removeClass(g.sTable),e=d.asDestroyStripes.length,e&&m.children().each(function(a){c(this).addClass(d.asDestroyStripes[a%e])});var p=c.inArray(d,c.fn.DataTable.settings);-1!==p&&c.fn.DataTable.settings.splice(p,1)})})}),d.module("datatables.options",[]).constant("DT_DEFAULT_OPTIONS",{dom:"lfrtip",sAjaxDataProp:"",aoColumns:[]}).service("DTDefaultOptions",function(){this.bootstrapOptions={},this.setLanguageSource=function(a){return c.extend(c.fn.dataTable.defaults,{oLanguage:{sUrl:a}}),this},this.setLanguage=function(a){return c.extend(!0,c.fn.dataTable.defaults,{oLanguage:a}),this},this.setDisplayLength=function(a){return c.extend(c.fn.dataTable.defaults,{iDisplayLength:a}),this},this.setBootstrapOptions=function(a){return this.bootstrapOptions=a,this}}),d.module("datatables.renderer",["datatables.factory","datatables.options"]).factory("DTRendererService",["DTLoadingTemplate",function(a){var b=d.element(a.html);return{showLoading:function(a){a.after(b),a.hide(),b.show()},hideLoading:function(a){a.show(),b.hide()},renderDataTableAndEmitEvent:function(a,b,d){var e="#"+a.attr("id");c.fn.dataTable.isDataTable(e)&&(b.destroy=!0);var f=a.DataTable(b);return d.$emit("event:dataTableLoaded",{id:a.attr("id"),DataTable:f,dataTable:a.dataTable()}),f},doRenderDataTable:function(a,b,c){return this.hideLoading(a),this.renderDataTableAndEmitEvent(a,b,c)}}}]).factory("DTRenderer",function(){return{withOptions:function(a){return this.options=a,this}}}).factory("DTDefaultRenderer",["$timeout","DTRenderer","DTRendererService",function(a,b,c){return{create:function(d){var e=Object.create(b);return e.options=d,e.render=function(b,d){var e=this;return a(function(){c.doRenderDataTable(d,e.options,b)},0,!1),e},e}}}]).factory("DTNGRenderer",["$compile","$timeout","DTRenderer","DTRendererService",function(a,b,c,d){return{create:function(e){var f=Object.create(c);return f.options=e,f.render=function(c,e,f){var g=this,h=e.find("tbody").html(),i=h.match(/^\s*.+\s+in\s+(\S*)\s*/),j=i[1];if(!i)throw new Error('Expected expression in form of "_item_ in _collection_[ track by _id_]" but got "{0}".',h);var k,l=!1,m=c.$parent;return m.$watchCollection(j,function(){k&&l&&(k.ngDestroy(),e.html(f),a(e.contents())(m)),b(function(){l=!0,k=d.doRenderDataTable(e,g.options,c)},0,!1)},!0),g},f}}}]).factory("DTPromiseRenderer",["$timeout","DTRenderer","DTRendererService",function(a,b,c){return{create:function(e){var f,g=function(b,d,e,g){b.aaData=e,a(function(){c.hideLoading(d),b.bDestroy=!0,f?(f.clear(),f.rows.add(b.aaData).draw()):f=c.renderDataTableAndEmitEvent(d,b,g)},0,!1)},h=Object.create(b);return h.options=e,h.render=function(a,b){var c=this,e=null,f=function(d){g(c.options,b,d,a),e=null},h=function(a){e=d.isFunction(a)?a():a,e.then(f)},i=function(a){e?e.then(function(){h(a)}):h(a)};return a.$watch("dtOptions.fnPromise",function(a){if(!d.isDefined(a))throw new Error("You must provide a promise or a function that returns a promise!");i(a)}),a.$watch("dtOptions.reload",function(b){b&&(a.dtOptions.reload=!1,i(a.dtOptions.fnPromise))}),c},h}}}]).factory("DTAjaxRenderer",["$timeout","DTRenderer","DTRendererService","DT_DEFAULT_OPTIONS",function(a,b,c,e){return{create:function(f){var g,h=function(a,b,c,e){d.isDefined(b)&&(a.sAjaxSource=b,d.isDefined(a.ajax)&&(d.isObject(a.ajax)?a.ajax.url=b:a.ajax={url:b})),i(a,c,e)},i=function(b,d,e){b.bDestroy=!0,a(function(){if(c.hideLoading(d),g){var a=b.sAjaxSource||b.ajax.url||b.ajax;g.ajax.url(a).load()}else g=c.renderDataTableAndEmitEvent(d,b,e)},0,!1)},j=Object.create(b);return j.options=f,j.render=function(a,b){var c=this;return d.isUndefined(c.options.sAjaxDataProp)&&(c.options.sAjaxDataProp=e.sAjaxDataProp),d.isUndefined(c.options.aoColumns)&&(c.options.aoColumns=e.aoColumns),a.$watch("dtOptions.sAjaxSource",function(d,e){d!==e&&h(c.options,d,b,a)},!0),a.$watch("dtOptions.reload",function(c,d){c!==d&&c&&(a.dtOptions.reload=!1,i(f,b,a))},!0),h(c.options,c.options.sAjaxDSource,b,a),this},j}}}]).factory("DTRendererFactory",["DTDefaultRenderer","DTNGRenderer","DTPromiseRenderer","DTAjaxRenderer",function(a,b,c,e){return{fromOptions:function(f,g){return g?b.create(f):d.isDefined(f)?d.isDefined(f.fnPromise)&&null!==f.fnPromise?c.create(f):d.isDefined(f.sAjaxSource)&&null!==f.sAjaxSource||d.isDefined(f.ajax)&&null!==f.ajax?e.create(f):a.create(f):a.create()}}}]),d.module("datatables.util",[]).factory("DTPropertyUtil",function(){return{overrideProperties:function(a,b){var c=d.copy(a);if((d.isUndefined(c)||null===c)&&(c={}),d.isUndefined(b)||null===b)return c;if(d.isObject(b))for(var e in b)b.hasOwnProperty(e)&&(c[e]=this.overrideProperties(c[e],b[e]));else c=d.copy(b);return c}}})}(window,document,jQuery,angular); \ No newline at end of file diff --git a/index.html b/index.html index 29f84cb9f..2f9a712c7 100644 --- a/index.html +++ b/index.html @@ -71,15 +71,15 @@

    - - - - - - - - - + + + + + + + + + diff --git a/src/angular-datatables.renderer.js b/src/angular-datatables.renderer.js index f593da64e..553f7b7b4 100644 --- a/src/angular-datatables.renderer.js +++ b/src/angular-datatables.renderer.js @@ -18,7 +18,8 @@ angular.module('datatables.renderer', ['datatables.factory', 'datatables.options options.destroy = true; } var oTable = $elem.DataTable(options); - $scope.$emit('event:dataTableLoaded', { id: $elem.attr('id'), dt: oTable }); + // See http://datatables.net/manual/api#Accessing-the-API to understand the difference between DataTable and dataTable + $scope.$emit('event:dataTableLoaded', { id: $elem.attr('id'), DataTable: oTable, dataTable: $elem.dataTable() }); return oTable; }, doRenderDataTable: function($elem, options, $scope) {