/* * Kendo UI v2011.3.1129 (http://kendoui.com) * Copyright 2011 Telerik AD. All rights reserved. * * Kendo UI commercial licenses may be obtained at http://kendoui.com/license. * If you do not own a commercial license, this file shall be governed by the * GNU General Public License (GPL) version 3. For GPL requirements, please * review: http://www.gnu.org/copyleft/gpl.html */ (function(a,b){function T(a){return Array(a+1).join('')}var c=window.kendo,d=c.ui,e=c.data.DataSource,f=d.Groupable,g=c.support.tbodyInnerHtml,h=d.Widget,i=c.keys,j=a.isPlainObject,k=a.extend,l=a.map,m=a.isArray,n=a.proxy,o=a.isFunction,p=Math,q="requestStart",r="error",s="tbody>tr:not(.k-grouping-row,.k-detail-row):visible",t=":not(.k-group-cell,.k-hierarchy-cell):visible",u=s+">td"+t,v=u+":first",w="edit",x="save",y="remove",z="detailInit",A="change",B="saveChanges",C="modelChange",D="dataBound",E="detailExpand",F="detailCollapse",G="k-state-focused",H="k-focusable",I="k-state-selected",J="click",K="height",L="tabIndex",M="function",N="string",O="Are you sure you want to delete this record?",P=/\}/ig,Q=/#/ig,R='#=text#',S=h.extend({init:function(a,b){var c=this;h.fn.init.call(c,a,b),c.dataSource=b.dataSource,c.dataSource.bind(A,n(c.refresh,c)),c.wrap()},options:{name:"VirtualScrollable",itemHeight:a.noop},wrap:function(){var b=this,d=c.support.scrollbar()+1,e=b.element;e.css({width:"auto",paddingRight:d,overflow:"hidden"}),b.content=e.children().first(),b.wrapper=b.content.wrap('
').parent().bind("DOMMouseScroll",n(b._wheelScroll,b)).bind("mousewheel",n(b._wheelScroll,b)),b.verticalScrollbar=a('
').css({width:d}).appendTo(e).bind("scroll",n(b._scroll,b))},_wheelScroll:function(b){var c=this,d=c.verticalScrollbar.scrollTop(),e=b.originalEvent,f;b.preventDefault(),e.wheelDelta?f=e.wheelDelta:e.detail?f=-e.detail:a.browser.opera&&(f=-e.wheelDelta),c.verticalScrollbar.scrollTop(d+ -f)},_scroll:function(a){var b=this,c=a.currentTarget.scrollTop,d=b.dataSource,e=b.itemHeight,f=d.skip()||0,g=b._rangeStart||f,h=b.element.innerHeight(),i=!!(b._scrollbarTop&&b._scrollbarTop>c),j=p.max(p.floor(c/e),0),k=p.max(j+p.floor(h/e),0);b._scrollTop=c-g*e,b._scrollbarTop=c,b._fetch(j,k,i)||(b.wrapper[0].scrollTop=b._scrollTop)},_fetch:function(a,b,c){var d=this,e=d.dataSource,f=d.itemHeight,g=e.take(),h=d._rangeStart||e.skip()||0,i=p.floor(a/g)*g,j=!1,k=.33;a=h+g&&!c?(j=!0,h=a,d._scrollTop=f,d._page(h,g)):d._fetching||(ag&&e.prefetch(i-g,g),b>i+g*k&&e.prefetch(i+g,g));return j},_page:function(a,b){var d=this,e=d.dataSource;clearTimeout(d._timeout),d._fetching=!0,d._rangeStart=a,e.inRange(a,b)?e.range(a,b):(c.ui.progress(d.wrapper,!0),d._timeout=setTimeout(function(){e.range(a,b)},100))},refresh:function(){var a=this,b="",d=25e4,e=a.dataSource,f=a._rangeStart,g=c.support.scrollbar(),h=a.wrapper[0],i,j,k;c.ui.progress(a.wrapper,!1),clearTimeout(a._timeout),k=a.itemHeight=a.options.itemHeight()||0;var l=h.scrollWidth>h.offsetWidth?g:0;i=e.total()*k+l;for(j=0;j
';i%d&&(b+='
'),a.verticalScrollbar.html(b),h.scrollTop=a._scrollTop,f&&!a._fetching&&(a._rangeStart=e.skip()),a._fetching=!1}}),U={create:{text:"Add new record",imageClass:"k-add",className:"k-grid-add"},cancel:{text:"Cancel changes",imageClass:"k-cancel",className:"k-grid-cancel-changes"},save:{text:"Save changes",imageClass:"k-update",className:"k-grid-save-changes"},destroy:{text:"Delete",imageClass:"k-delete",className:"k-grid-delete"}},V=h.extend({init:function(a,b){var c=this;b=m(b)?{dataSource:b}:b,h.fn.init.call(c,a,b),c._element(),c._columns(c.options.columns),c._dataSource(),c._tbody(),c._pageable(),c._groupable(),c._toolbar(),c.bind([A,D,E,F,z,w,x,y,B],c.options),c._thead(),c._templates(),c._navigatable(),c._selectable(),c._details(),c._editable(),c.options.autoBind&&c.dataSource.fetch()},options:{name:"Grid",columns:[],autoBind:!0,scrollable:!0,groupable:!1,dataSource:{}},_element:function(){var b=this,c=b.element;c.is("table")||(c=a("").appendTo(b.element)),b.table=c.attr("cellspacing",0),b._wrapper()},cellIndex:function(b){return a(b).parent().find("td:not(.k-group-cell,.k-hierarchy-cell)").index(b)},_modelForContainer:function(a){var b=(a.is("tr")?a:a.closest("tr")).attr(c.attr("id"));return this.dataSource.get(b)},_editable:function(){var b=this,c,d,e,f=b.options.editable,g=function(){var c=document.activeElement,d=b._editContainer;d&&!a.contains(d[0],c)&&d[0]!==c&&!a(c).closest(".k-animation-container").length&&b.editable.end()&&b.closeCell()};f&&(f.update!==!1&&(b.wrapper.delegate("tr:not(.k-grouping-row) > td:not(.k-hierarchy-cell,.k-detail-cell,.k-group-cell,.k-edit-cell,:has(a.k-grid-delete))",J,function(c){var d=a(this);d.closest("tbody")[0]===b.tbody[0]&&!a(c.target).is(":input")&&(b.editable?b.editable.end()&&(b.closeCell(),b.editCell(d)):b.editCell(d))}),b.wrapper.bind("focusin",function(a){clearTimeout(b.timer),b.timer=null}),b.wrapper.bind("focusout",function(a){b.timer=setTimeout(g,1)})),f.destroy!==!1&&b.wrapper.delegate("tbody>tr:not(.k-detail-row,.k-grouping-row):visible a.k-grid-delete","click",function(c){c.preventDefault(),b.removeRow(a(this).closest("tr"))}))},editCell:function(a){var b=this,c=b.columns[b.cellIndex(a)],d=b._modelForContainer(a);d.editable(c.field)&&!a.has("a.k-grid-delete").length&&(b._editContainer=a,b.editable=a.addClass("k-edit-cell").kendoEditable({fields:{field:c.field,format:c.format},model:d,change:function(c){b.trigger(x,{values:c.values,container:a,model:d})&&c.preventDefault()}}).data("kendoEditable"),a.parent().addClass("k-grid-edit-row"),b.trigger(w,{container:a,model:d}))},_distroyEditable:function(){var a=this;a.editable&&(a.editable.distroy(),delete a.editable,a._editContainer=null)},closeCell:function(){var b=this,d=b._editContainer.removeClass("k-edit-cell"),e=d.closest("tr").attr(c.attr("id")),f=b.columns[b.cellIndex(d)],g=b.dataSource.get(e);d.parent().removeClass("k-grid-edit-row"),b._displayCell(d,f,g.data),f.field in(g.changes()||{})&&a('').prependTo(d),b._distroyEditable()},_displayCell:function(a,b,d){var e=this,f={storage:{},count:0},g=k({},c.Template,e.options.templateSettings),h=c.template(e._cellTmpl(b,f),g);f.count>0&&(h=n(h,f.storage)),a.empty().html(h(d))},removeRow:function(b){var c=this,d;!c._confirmation()||(b=a(b).hide(),d=c._modelForContainer(b),d&&!c.trigger(y,{row:b,model:d})&&c.dataSource.remove(d))},_showMessage:function(a){return confirm(a)},_confirmation:function(){var a=this;confirmation=a.options.editable===!0?O:a.options.editable.confirmation;return confirmation!==!1?a._showMessage(confirmation):!0},cancelChanges:function(){this.dataSource.cancelChanges()},saveChanges:function(){var a=this;(a.editable&&a.editable.end()||!a.editable)&&!a.trigger(B)&&a.dataSource.sync()},addRow:function(){var a=this,b=a.dataSource;if(a.editable&&a.editable.end()||!a.editable){var d=b.indexOf((b.view()||[])[0])||0,e=b.insert(d,{}),f=e.id(),g=a.table.find("tr["+c.attr("id")+"="+f+"] > td:not(.k-group-cell,.k-hierarchy-cell)").first();g.length&&a.editCell(g)}},_toolbar:function(){var b=this,d=b.wrapper,e=b.options.toolbar,f;e&&(e=o(e)?e({}):typeof e===N?e:b._toolbarTmpl(e).replace(Q,"\\#"),f=n(c.template(e),b),a('
').html(f({})).prependTo(d).delegate(".k-grid-add",J,function(a){a.preventDefault(),b.addRow()}).delegate(".k-grid-cancel-changes",J,function(a){a.preventDefault(),b.cancelChanges()}).delegate(".k-grid-save-changes",J,function(a){a.preventDefault(),b.saveChanges()}))},_toolbarTmpl:function(a){var b=this,c,d,e="",f,g,h,i;if(m(a))for(c=0,d=a.length;c").addClass("k-grouping-header").html(" ").prependTo(d),b.groupable=new f(d,{filter:"th:not(.k-group-cell)["+c.attr("field")+"]",groupContainer:"div.k-grouping-header",dataSource:b.dataSource})),b.table.delegate(".k-grouping-row .k-collapse, .k-grouping-row .k-expand",J,function(c){var d=a(this),e=d.closest("tr");d.hasClass("k-collapse")?b.collapseGroup(e):b.expandGroup(e),c.preventDefault()})},_selectable:function(){var a=this,b,d,e=a.options.selectable;e&&(b=typeof e===N&&e.toLowerCase().indexOf("multiple")>-1,d=typeof e===N&&e.toLowerCase().indexOf("cell")>-1,a.selectable=new c.ui.Selectable(a.table,{filter:d?u:s,multiple:b,change:function(){a.trigger(A)}}),a.options.navigatable&&a.wrapper.keydown(function(c){var e=a.current();c.keyCode===i.SPACEBAR&&!e.hasClass("k-edit-cell")&&(c.preventDefault(),e=d?e:e.parent(),b?c.ctrlKey?e.hasClass(I)&&(e.removeClass(I),e=null):a.selectable.clear():a.selectable.clear(),a.selectable.value(e))}))},clearSelection:function(){var a=this;a.selectable.clear(),a.trigger(A)},select:function(b){var c=this,d=c.selectable;b=a(b);if(b.length)d.options.multiple||(d.clear(),b=b.first()),d.value(b);else return d.value()},current:function(a){var c=this,d=c._current;a!==b&&a.length&&(!d||d[0]!==a[0])&&(a.addClass(G),d&&d.removeClass(G),c._current=a,c._scrollTo(a.parent()[0]));return c._current},_scrollTo:function(a){if(!!a&&!!this.options.scrollable){var b=a.offsetTop,c=this.content[0],d=a.offsetHeight,e=c.scrollTop,f=c.clientHeight,g=b+d;c.scrollTop=e>b?b:g>e+f?g-f:e}},_navigatable:function(){var b=this,c=b.wrapper,d=b.table.addClass(H),e=n(b.current,b),f="."+H+" "+u,g=a.browser,h=function(b){e(a(b.currentTarget)),b.type==J&&!a(b.target).is(":button,a,:input,a>.k-icon,textarea")&&c.focus()};b.options.navigatable&&(c.bind({focus:function(){var a=b._current;a&&a.is(":visible")?a.addClass(G):e(b.table.find(v))},focusout:function(){b._current&&b._current.removeClass(G)},keydown:function(f){var h=f.keyCode,j=b.current(),k=f.shiftKey,l=b.dataSource,m=b.options.pageable,n=!a(f.target).is(":button,a,:input,a>.t-icon"),o=!1;if(n&&i.UP===h)e(j?j.parent().prevAll(s).last().children(":eq("+j.index()+"),:eq(0)").last():d.find(v)),o=!0;else if(n&&i.DOWN===h)e(j?j.parent().nextAll(s).first().children(":eq("+j.index()+"),:eq(0)").last():d.find(v)),o=!0;else if(n&&i.LEFT===h)e(j?j.prevAll(t+":first"):d.find(v)),o=!0;else if(n&&i.RIGHT===h)e(j?j.nextAll(":visible:first"):d.find(v)),o=!0;else if(n&&m&&i.PAGEDOWN==h)b._current=null,l.page(l.page()+1),o=!0;else if(n&&m&&i.PAGEUP==h)b._current=null,l.page(l.page()-1),o=!0;else if(b.options.editable)if(i.ENTER==h||i.F12==h)b._handleEditing(j),o=!0;else if(i.TAB==h){var p=k?j.prevAll(t+":first"):j.nextAll(":visible:first");p.length||(p=j.parent()[k?"prevAll":"nextAll"]("tr:not(.k-grouping-row,.k-detail-row):visible").children(t+(k?":last":":first"))),p.length&&(b._handleEditing(j,p),o=!0)}else i.ESC==h&&j.hasClass("k-edit-cell")&&(b.closeCell(),g.msie&&parseInt(g.version)<9&&document.body.focus(),c.focus(),o=!0);o&&f.preventDefault()}}),c.delegate(f,g.msie?J:"mousedown",h))},_handleEditing:function(b,c){var d=this,e=b.hasClass("k-edit-cell");if(d.editable){a.contains(d._editContainer[0],document.activeElement)&&document.activeElement.blur();if(d.editable.end())d.closeCell();else{d.current(d._editContainer),d._editContainer.find(":input:visible:first").focus();return}}c&&d.current(c),d.wrapper.focus(),(!e&&!c||c)&&d.editCell(d.current())},_wrapper:function(){var a=this,b=a.table,c=a.options.height,d=a.element;d.is("div")||(d=d.wrap("
").parent()),a.wrapper=d.addClass("k-grid k-widget").attr(L,p.max(b.attr(L)||0,0)),b.removeAttr(L),c&&(a.wrapper.css(K,c),b.css(K,"auto"))},_tbody:function(){var b=this,c=b.table,d;d=c.find(">tbody"),d.length||(d=a("
").appendTo(c)),b.tbody=d},_scrollable:function(){var b=this,d,e,f=b.options,g=b.wrapper.innerHeight(),h=f.scrollable,i=c.support.scrollbar();if(h){d=b.wrapper.children().filter(".k-grid-header"),d[0]||(d=a('
').insertBefore(b.table)),d.css("padding-right",h.virtual?i+1:i),e=a('
'),e.append(b.thead),d.empty().append(a('
').append(e)),b.content=b.table.parent(),b.content.is(".k-virtual-scrollable-wrap")&&(b.content=b.content.parent()),b.content.is(".k-grid-content, .k-virtual-scrollable-wrap")||(b.content=b.table.wrap('
').parent(),h!==!0&&h.virtual&&new S(b.content,{dataSource:b.dataSource,itemHeight:n(b._averageRowHeight,b)})),g-=d.outerHeight(),b.pager&&(g-=b.pager.element.outerHeight()),f.groupable&&(g-=a(".k-grouping-header").outerHeight()),f.toolbar&&(g-=a(".k-grid-toolbar").outerHeight()),b.content.height(g);var j=d.find(">.k-grid-header-wrap");h.virtual?b.content.find(">.k-virtual-scrollable-wrap").bind("scroll",function(){j.scrollLeft(this.scrollLeft)}):b.content.bind("scroll",function(){j.scrollLeft(this.scrollLeft)})}},_averageRowHeight:function(){var a=this,b=a._rowHeight;a._rowHeight||(a._rowHeight=b=a.table.outerHeight()/a.table[0].rows.length,a._sum=b,a._measures=1,totalHeight=p.round(a.dataSource.total()*b));var c=a.table.outerHeight()/a.table[0].rows.length;b!==c&&(a._measures++,a._sum+=c,a._rowHeight=a._sum/a._measures);return b},_dataSource:function(){var a=this,c=a.options,d,f=c.dataSource;f=m(f)?{data:f}:f,j(f)&&(k(f,{table:a.table,fields:a.columns}),d=c.pageable,j(d)&&d.pageSize!==b&&(f.pageSize=d.pageSize)),a.dataSource=e.create(f).bind(A,n(a.refresh,a)).bind(q,n(a._requestStart,a)).bind(r,n(a._error,a)).bind(C,n(a._modelChange,a))},_error:function(){this._progress(!1)},_requestStart:function(){this._progress(!0)},_modelChange:function(b){var d=this,e=d.tbody.find("tr["+c.attr("id")+"="+b.id()+"]"),f=b.changes()||{},g,h,i=e.hasClass("k-alt");e.has(".k-edit-cell")?e.find(">td:not(.k-group-cell,.k-hierarchy-cell,.k-edit-cell)").each(function(){g=a(this),h=d.columns[d.cellIndex(g)],h.field in f&&(d._displayCell(g,h,b.data),a('').prependTo(g))}):e.replaceWith(a((i?d.altRowTemplate:d.rowTemplate)(b.data)))},_pageable:function(){var b=this,d,e=b.options.pageable;e&&(d=b.wrapper.children("div.k-grid-pager"),d.length||(d=a('
').appendTo(b.wrapper)),typeof e=="object"&&e instanceof c.ui.Pager?b.pager=e:b.pager=new c.ui.Pager(d,k({},e,{dataSource:b.dataSource})))},_filterable:function(){var b=this,c=b.columns,d=b.options.filterable;d&&b.thead.find("th:not(.k-hierarchy-cell)").each(function(e){c[e].filterable!==!1&&a(this).kendoFilterMenu(k(!0,{},d,c[e].filterable,{dataSource:b.dataSource}))})},_sortable:function(){var b=this,c=b.columns,d,e=b.options.sortable;e&&b.thead.find("th:not(.k-hierarchy-cell)").each(function(f){d=c[f],d.sortable!==!1&&!d.command&&a(this).kendoSortable(k({},e,{dataSource:b.dataSource}))})},_columns:function(b){var d=this,e=d.table,f,g=e.find("col"),h=d.options.dataSource;b=b.length?b:l(e.find("th"),function(b,d){var b=a(b),e=b.attr(c.attr("sortable"));filterable=b.attr(c.attr("filterable")),field=b.attr(c.attr("field")),field||(field=b.text().replace(/\s|[^A-z0-9]/g,""));return{field:field,sortable:e!=="false",filterable:filterable!=="false",template:b.attr(c.attr("template")),width:g.eq(d).css("width")}}),f=!(d.table.find("tbody tr").length>0&&(!h||!h.transport)),d.columns=l(b,function(a){a=typeof a===N?{field:a}:a;return k({encoded:f},a)})},_tmpl:function(a,b){var d=this,e=k({},c.Template,d.options.templateSettings),f=e.paramName,g,h=d.columns.length,i,j=d.dataSource.options.schema.model,l={storage:{},count:0},m,o,p,q=d._hasDetails(),r=[],s=d.dataSource.group().length;if(!a){a="",s>0&&(a+=T(s)),q&&(a+='
');for(g=0;g";a+=""}a=c.template(a,e);if(l.count>0)return n(a,l.storage);return a},_cellTmpl:function(a,b){var d=this,e=k({},c.Template,d.options.templateSettings),f=a.template,g=e.paramName,h="",i=a.format,j=typeof f;if(a.command)return d._createButton(a.command).replace(Q,"\\#");j===M?(b.storage["tmpl"+b.count]=f,h+="#=this.tmpl"+b.count+"("+g+")#",b.count++):j===N?h+=f:(h+=a.encoded?"${":"#=",i&&(h+='kendo.format("'+i.replace(P,"\\}")+'",'),e.useWithBlock||(h+=g+"."),h+=a.field,i&&(h+=")"),h+=a.encoded?"}":"#");return h},_templates:function(){var a=this,b=a.options;a.rowTemplate=a._tmpl(b.rowTemplate),a.altRowTemplate=a._tmpl(b.altRowTemplate||b.rowTemplate,!0),a._hasDetails()&&(a.detailTemplate=a._detailTmpl(b.detailTemplate||""))},_detailTmpl:function(a){var b=this,d="",e=k({},c.Template,b.options.templateSettings),f=e.paramName,g={},h=0,i=b.dataSource.group().length,j=b.columns.length,l=typeof a;d+='',i>0&&(d+=T(i)),d+='",d=c.template(d,e);if(h>0)return n(d,g);return d},_hasDetails:function(){var a=this;return a.options.detailTemplate!==b||(a._events[z]||[]).length},_details:function(){var b=this;b.table.delegate(".k-hierarchy-cell .k-plus, .k-hierarchy-cell .k-minus",J,function(c){var d=a(this),e=d.hasClass("k-plus"),f=d.closest("tr.k-master-row"),g,h=b.detailTemplate,i,j=b._hasDetails();d.toggleClass("k-plus",!e).toggleClass("k-minus",e),j&&!f.next().hasClass("k-detail-row")&&(i=b.dataItem(f),a(h(i)).insertAfter(f),b.trigger(z,{masterRow:f,detailRow:f.next(),data:i,detailCell:f.next().find(".k-detail-cell")})),g=f.next(),b.trigger(e?E:F,{masterRow:f,detailRow:g}),g.toggle(e),c.preventDefault();return!1})},dataItem:function(b){return this._data[this.tbody.find("> tr:not(.k-grouping-row,.k-detail-row)").index(a(b))]},expandRow:function(b){a(b).find("> td .k-plus, > td .k-expand").click()},collapseRow:function(b){a(b).find("> td .k-minus, > td .k-plus").click()},_thead:function(){var b=this,d=b.columns,e,f,g="",h=b.table.find("thead"),i,j;h.length||(h=a("").insertBefore(b.tbody)),i=b.table.find("tr").filter(":has(th)"),i.length||(i=h.children().first(),i.length||(i=a("")));if(!i.children().length){b._hasDetails()&&d.length&&(g+='');for(e=0,f=d.length;e"+(j.title||"")+"":(g+="");i.html(g)}i.find("th").addClass("k-header"),b.options.scrollable||h.addClass("k-grid-header"),i.appendTo(h),b.thead=h,b._sortable(),b._filterable(),b._scrollable(),b._updateCols()},_updateCols:function(){var b=this,d=b.thead.parent().add(b.table),e=d.find("colgroup"),f,g=l(b.columns,function(a){f=a.width;if(f&&parseInt(f)!=0)return c.format('',typeof f===N?f:f+"px");return""}),h=b.dataSource.group().length;b._hasDetails()&&g.splice(0,0,''),e.length&&e.remove(),e=a("").append(a(Array(h+1).join('')+g.join(""))),d.prepend(e)},_autoColumns:function(a){if(a){var b=this,c;for(c in a)b.columns.push({field:c});b._thead(),b._templates()}},_rowsHtml:function(a){var b=this,c="",d,e,f=b.rowTemplate,g=b.altRowTemplate;for(d=0,e=a.length;d'+T(e)+'";if(b.hasSubgroups)for(h=0,i=m.length;he?a(Array(b-e+1).join('')).prependTo(c.thead.find("tr")):bb})).remove())},_firstDataItem:function(a,b){a&&b&&(a.hasSubgroups?a=this._firstDataItem(a.items[0],b):a=a.items[0]);return a},_progress:function(a){var b=this,d=b.element.is("table")?b.element.parent():b.content&&b.content.length?b.content:b.element;c.ui.progress(d,a)},refresh:function(){var b=this,c,d,e="",f=b.dataSource.view(),h,i,j=(b.dataSource.group()||[]).length,k=j+b.columns.length;b._distroyEditable(),b._progress(!1),b._data=[],b.columns.length||(b._autoColumns(b._firstDataItem(f[0],j)),k=j+b.columns.length),b._group=j>0||b._group,b._group&&(b._templates(),b._updateCols(),b._updateHeader(j),b._group=j>0);if(j>0){b.detailTemplate&&k++;for(d=0,c=f.length;d"+e+"
",l===M?(g["tmpl"+h]=a,d+="#=this.tmpl"+h+"("+f+")#",h++):d+=a,d+="
 "+(j.title||j.field||"")+"
'+'

'+''+(k.title||j)+": "+l+"

 
",h=i.firstChild.firstChild,b.table[0].replaceChild(h,b.tbody[0]),b.tbody=a(h)),b.trigger(D)}});d.plugin(V),d.plugin(S)})(jQuery)