9 lines
15 KiB
JavaScript
9 lines
15 KiB
JavaScript
/*
|
|
* Kendo UI v2015.3.1111 (http://www.telerik.com/kendo-ui)
|
|
* Copyright 2015 Telerik AD. All rights reserved.
|
|
*
|
|
* Kendo UI commercial licenses may be obtained at
|
|
* http://www.telerik.com/purchase/license-agreement/kendo-ui-complete
|
|
* If you do not own a commercial license, this file shall be governed by the trial license terms.
|
|
*/
|
|
!function(e,define){define(["./kendo.dom.min","./kendo.touch.min","./kendo.draganddrop.min","./kendo.columnsorter.min","./kendo.datetimepicker.min","./kendo.editable.min"],e)}(function(){return function(e){function t(e){var t,n,i=[],o=e.className;for(t=0,n=e.level;n>t;t++)i.push(r("span",{className:o}));return i}function n(){var t=i._activeElement();"body"!==t.nodeName.toLowerCase()&&e(t).blur()}var i=window.kendo,o=i.dom,r=o.element,s=o.text,a=i.support.browser,l=i.support.mobileOS,c=i.ui,u=c.Widget,h=e.extend,d=e.map,f=e.isFunction,p=a.msie&&9>a.version,g=i.keys,m={title:"Title",start:"Start Time",end:"End Time",percentComplete:"% Done",parentId:"Predecessor ID",id:"ID",orderId:"Order ID"},v="string",_=".kendoGanttList",w="click",y=".",b="<table style='visibility: hidden;'><tbody><tr style='height:{0}'><td> </td></tr></tbody></table>",x={wrapper:"k-treelist k-grid k-widget",header:"k-header",alt:"k-alt",editCell:"k-edit-cell",group:"k-treelist-group",gridHeader:"k-grid-header",gridHeaderWrap:"k-grid-header-wrap",gridContent:"k-grid-content",gridContentWrap:"k-grid-content",selected:"k-state-selected",icon:"k-icon",iconCollapse:"k-i-collapse",iconExpand:"k-i-expand",iconHidden:"k-i-none",iconPlaceHolder:"k-icon k-i-none",input:"k-input",link:"k-link",resizeHandle:"k-resize-handle",resizeHandleInner:"k-resize-handle-inner",dropPositions:"k-insert-top k-insert-bottom k-add k-insert-middle",dropTop:"k-insert-top",dropBottom:"k-insert-bottom",dropAdd:"k-add",dropMiddle:"k-insert-middle",dropDenied:"k-denied",dragStatus:"k-drag-status",dragClue:"k-drag-clue",dragClueText:"k-clue-text"},k=c.GanttList=u.extend({init:function(t,n){u.fn.init.call(this,t,n),0===this.options.columns.length&&this.options.columns.push("title"),this.dataSource=this.options.dataSource,this._columns(),this._layout(),this._domTrees(),this._header(),this._sortable(),this._editable(),this._selectable(),this._draggable(),this._resizable(),this._attachEvents(),this._adjustHeight(),this.bind("render",function(){var t,n;this.options.resizable&&(t=this.header.find("col"),n=this.content.find("col"),this.header.find("th").not(":last").each(function(i){var o=e(this).outerWidth();t.eq(i).width(o),n.eq(i).width(o)}),t.last().css("width","auto"),n.last().css("width","auto"))},!0)},_adjustHeight:function(){this.content.height(this.element.height()-this.header.parent().outerHeight())},destroy:function(){u.fn.destroy.call(this),this._reorderDraggable&&this._reorderDraggable.destroy(),this._tableDropArea&&this._tableDropArea.destroy(),this._contentDropArea&&this._contentDropArea.destroy(),this._columnResizable&&this._columnResizable.destroy(),this.touch&&this.touch.destroy(),this.timer&&clearTimeout(this.timer),this.content.off(_),this.header.find("thead").off(_),this.header.find(y+k.link).off(_),this.header=null,this.content=null,this.levels=null,i.destroy(this.element)},options:{name:"GanttList",selectable:!0,editable:!0,resizable:!1},_attachEvents:function(){var t=this,n=k.styles;t.content.on(w+_,"td > span."+n.icon+":not(."+n.iconHidden+")",function(n){var i=e(this),o=t._modelFromElement(i);o.set("expanded",!o.get("expanded")),n.stopPropagation()})},_domTrees:function(){this.headerTree=new o.Tree(this.header[0]),this.contentTree=new o.Tree(this.content[0])},_columns:function(){var e=this.options.columns,t=function(){this.field="",this.title="",this.editable=!1,this.sortable=!1};this.columns=d(e,function(e){return e=typeof e===v?{field:e,title:m[e]}:e,h(new t,e)})},_layout:function(){var t=this,n=this.options,o=this.element,r=k.styles,s=function(){var o,r=typeof n.rowHeight===v?n.rowHeight:n.rowHeight+"px",s=e(i.format(b,r));return t.content.append(s),o=s.find("tr").outerHeight(),s.remove(),o};o.addClass(r.wrapper).append("<div class='"+r.gridHeader+"'><div class='"+r.gridHeaderWrap+"'></div></div>").append("<div class='"+r.gridContentWrap+"'></div>"),this.header=o.find(y+r.gridHeaderWrap),this.content=o.find(y+r.gridContent),n.rowHeight&&(this._rowHeight=s())},_header:function(){var e=this.headerTree,t=r("colgroup",null,this._cols()),n=r("thead",{role:"rowgroup"},[r("tr",{role:"row"},this._ths())]),i=r("table",{style:{minWidth:this.options.listWidth+"px"},role:"grid"},[t,n]);e.render([i])},_render:function(e){var t,n,i,o={style:{minWidth:this.options.listWidth+"px"},tabIndex:0,role:"treegrid"};this._rowHeight&&(o.style.height=e.length*this._rowHeight+"px"),this.levels=[{field:null,value:0}],t=r("colgroup",null,this._cols()),n=r("tbody",{role:"rowgroup"},this._trs(e)),i=r("table",o,[t,n]),this.contentTree.render([i]),this.trigger("render")},_ths:function(){var e,t,n,i,o=this.columns,a=[];for(n=0,i=o.length;i>n;n++)e=o[n],t={"data-field":e.field,"data-title":e.title,className:k.styles.header,role:"columnheader"},a.push(r("th",t,[s(e.title)]));return this.options.resizable&&a.push(r("th",{className:k.styles.header,role:"columnheader"})),a},_cols:function(){var e,t,n,i,o,s=this.columns,a=[];for(i=0,o=s.length;o>i;i++)e=s[i],n=e.width,t=n&&0!==parseInt(n,10)?{style:{width:typeof n===v?n:n+"px"}}:null,a.push(r("col",t,[]));return this.options.resizable&&a.push(r("col",{style:{width:"1px"}})),a},_trs:function(e){var t,n,i,o,r,s=[],a=[],l=k.styles;for(o=0,r=e.length;r>o;o++)t=e[o],i=this._levels({idx:t.parentId,id:t.id,summary:t.summary}),n={"data-uid":t.uid,"data-level":i,role:"row"},t.summary&&(n["aria-expanded"]=t.expanded),o%2!==0&&a.push(l.alt),t.summary&&a.push(l.group),a.length&&(n.className=a.join(" ")),s.push(this._tds({task:t,attr:n,level:i})),a=[];return s},_tds:function(e){var t,n,i,o=[],s=this.columns;for(n=0,i=s.length;i>n;n++)t=s[n],o.push(this._td({task:e.task,column:t,level:e.level}));return this.options.resizable&&o.push(r("td",{role:"gridcell"})),r("tr",e.attr,o)},_td:function(e){var n,o,a,l=[],c=this.options.resourcesField,u=k.styles,h=e.task,d=e.column,f=h.get(d.field)||[];if(d.field==c){for(n=[],a=0;f.length>a;a++)n.push(i.format("{0} [{1}]",f[a].get("name"),f[a].get("formatedValue")));n=n.join(", ")}else n=d.format?i.format(d.format,f):f;return"title"===d.field&&(l=t({level:e.level,className:u.iconPlaceHolder}),l.push(r("span",{className:u.icon+" "+(h.summary?h.expanded?u.iconCollapse:u.iconExpand:u.iconHidden)})),o=i.format("{0}, {1:P0}",n,h.percentComplete)),l.push(r("span",{"aria-label":o},[s(n)])),r("td",{role:"gridcell"},l)},_levels:function(e){var t,n,i,o=this.levels,r=e.summary,s=e.idx,a=e.id;for(n=0,i=o.length;i>n;n++)if(t=o[n],t.field==s)return r&&o.push({field:a,value:t.value+1}),t.value},_sortable:function(){var e,t,n,o,r,s=this,a=this.options.resourcesField,l=this.columns,c=this.header.find("th["+i.attr("field")+"]"),u=function(e){s.editable&&s.editable.trigger("validate")&&(e.preventDefault(),e.stopImmediatePropagation())};for(o=0,r=c.length;r>o;o++)e=l[o],e.sortable&&e.field!==a&&(n=c.eq(o),t=n.data("kendoColumnSorter"),t&&t.destroy(),n.attr("data-"+i.ns+"field",e.field).kendoColumnSorter({dataSource:this.dataSource}).find(y+k.link).on("click"+_,u));c=null},_selectable:function(){var t=this,n=this.options.selectable;n&&this.content.on(w+_,"tr",function(n){var i=e(this);t.editable&&t.editable.trigger("validate"),n.ctrlKey?t.clearSelection():t.select(i)})},select:function(e){var t=this.content.find(e),n=k.styles.selected;return t.length?(t.siblings(y+n).removeClass(n).attr("aria-selected",!1).end().addClass(n).attr("aria-selected",!0),void this.trigger("change")):this.content.find(y+n)},clearSelection:function(){var e=this.select();e.length&&(e.removeClass(k.styles.selected),this.trigger("change"))},_setDataSource:function(e){this.dataSource=e},_editable:function(){var t=this,i=k.styles,o="span."+i.icon+":not("+i.iconHidden+")",r=function(){var e=t.editable;e&&(e.end()?t._closeCell():e.trigger("validate"))},s=function(t){var o=e(t.currentTarget);o.hasClass(i.editCell)||n()};this.options.editable&&(this._startEditHandler=function(n){var i=n.currentTarget?e(n.currentTarget):n,o=t._columnFromElement(i);t.editable||o&&o.editable&&t._editCell({cell:i,column:o})},t.content.on("focusin"+_,function(){clearTimeout(t.timer),t.timer=null}).on("focusout"+_,function(){t.timer=setTimeout(r,1)}).on("keydown"+_,function(e){e.keyCode===g.ENTER&&e.preventDefault()}).on("keyup"+_,function(e){var i,o,s=e.keyCode;switch(s){case g.ENTER:n(),r();break;case g.ESC:t.editable&&(i=t._editableContainer,o=t._modelFromElement(i),t.trigger("cancel",{model:o,cell:i})||t._closeCell(!0))}}),l?t.touch=t.content.kendoTouch({filter:"td",touchstart:function(e){s(e.touch)},doubletap:function(n){e(n.touch.initialTouch).is(o)||t._startEditHandler(n.touch)}}).data("kendoTouch"):t.content.on("mousedown"+_,"td",function(e){s(e)}).on("dblclick"+_,"td",function(n){e(n.target).is(o)||t._startEditHandler(n)}))},_editCell:function(t){var n,o=this.options.resourcesField,r=k.styles,s=t.cell,a=t.column,l=this._modelFromElement(s),c=this.dataSource._createNewModel(l.toJSON()),u=c.fields[a.field]||c[a.field],h=u.validation,d=i.attr("type"),g=i.attr("bind"),m=i.attr("format"),v={name:a.field,required:u.validation?u.validation.required===!0:!1};return a.field===o?void a.editor(s,c):(this._editableContent=s.children().detach(),this._editableContainer=s,s.data("modelCopy",c),"date"!==u.type&&"date"!==e.type(u)||a.format&&!/H|m|s|F|g|u/.test(a.format)||(v[g]="value:"+a.field,v[d]="date",a.format&&(v[m]=i._extractFormat(a.format)),n=function(t,n){e('<input type="text"/>').attr(v).appendTo(t).kendoDateTimePicker({format:n.format})}),this.editable=s.addClass(r.editCell).kendoEditable({fields:{field:a.field,format:a.format,editor:a.editor||n},model:c,clearContainer:!1}).data("kendoEditable"),h&&h.dateCompare&&f(h.dateCompare)&&h.message&&(e("<span "+i.attr("for")+'="'+a.field+'" class="k-invalid-msg"/>').hide().appendTo(s),s.find("[name="+a.field+"]").attr(i.attr("dateCompare-msg"),h.message)),this.trigger("edit",{model:l,cell:s})&&this._closeCell(!0),void this.editable.bind("validate",function(e){var t=this.element.find(":kendoFocusable:first").focus();p&&t.focus(),e.preventDefault()}))},_closeCell:function(e){var t=k.styles,n=this._editableContainer,i=this._modelFromElement(n),o=this._columnFromElement(n),r=o.field,s=n.data("modelCopy"),a={};a[r]=s.get(r),n.empty().removeData("modelCopy").removeClass(t.editCell).append(this._editableContent),this.editable.unbind(),this.editable.destroy(),this.editable=null,this._editableContainer=null,this._editableContent=null,e||("start"===r&&(a.end=new Date(a.start.getTime()+i.duration())),this.trigger("update",{task:i,updateInfo:a}))},_draggable:function(){var t,n=this,o=null,r=!0,s=k.styles,a="tr["+i.attr("level")+" = 0]:last",c={},u=function(){o=null,t=null,r=!0,c={}},d=function(e){for(var t=e;t;){if(o.get("id")===t.get("id")){r=!1;break}t=n.dataSource.taskParent(t)}},f=function(){var n=e(t).height(),o=i.getOffset(t).top;h(t,{beforeLimit:o+.25*n,afterLimit:o+.75*n})},p=function(e){var n,o=e.location,r=s.dropAdd,a="add",l=parseInt(t.attr(i.attr("level")),10);t.beforeLimit>=o?(n=t.prev(),r=s.dropTop,a="insert-before"):o>=t.afterLimit&&(n=t.next(),r=s.dropBottom,a="insert-after"),n&&parseInt(n.attr(i.attr("level")),10)===l&&(r=s.dropMiddle),c.className=r,c.command=a},g=function(){return n._reorderDraggable.hint.children(y+s.dragStatus).removeClass(s.dropPositions)};this.options.editable&&(this._reorderDraggable=this.content.kendoDraggable({distance:10,holdToDrag:l,group:"listGroup",filter:"tr[data-uid]",ignore:y+s.input,hint:function(t){return e('<div class="'+s.header+" "+s.dragClue+'"/>').css({width:300,paddingLeft:t.css("paddingLeft"),paddingRight:t.css("paddingRight"),lineHeight:t.height()+"px",paddingTop:t.css("paddingTop"),paddingBottom:t.css("paddingBottom")}).append('<span class="'+s.icon+" "+s.dragStatus+'" /><span class="'+s.dragClueText+'"/>')},cursorOffset:{top:-20,left:0},container:this.content,dragstart:function(e){return n.editable&&n.editable.trigger("validate")?void e.preventDefault():(o=n._modelFromElement(e.currentTarget),void this.hint.children(y+s.dragClueText).text(o.get("title")))},drag:function(e){r&&(p(e.y),g().addClass(c.className))},dragend:function(){u()},dragcancel:function(){u()}}).data("kendoDraggable"),this._tableDropArea=this.content.kendoDropTargetArea({distance:0,group:"listGroup",filter:"tr[data-uid]",dragenter:function(e){t=e.dropTarget,d(n._modelFromElement(t)),f(),g().toggleClass(s.dropDenied,!r)},dragleave:function(){r=!0,g()},drop:function(){var e=n._modelFromElement(t),i=e.orderId,s={parentId:e.parentId};if(r){switch(c.command){case"add":s.parentId=e.id;break;case"insert-before":s.orderId=e.parentId===o.parentId&&e.orderId>o.orderId?i-1:i;break;case"insert-after":s.orderId=e.parentId===o.parentId&&e.orderId>o.orderId?i:i+1}n.trigger("update",{task:o,updateInfo:s})}}}).data("kendoDropTargetArea"),this._contentDropArea=this.element.kendoDropTargetArea({distance:0,group:"listGroup",filter:y+s.gridContent,drop:function(){var e=n._modelFromElement(n.content.find(a)),t=e.orderId,i={parentId:null,orderId:null!==o.parentId?t+1:t};n.trigger("update",{task:o,updateInfo:i})}}).data("kendoDropTargetArea"))},_resizable:function(){var t=this,n=k.styles,i=function(i){var o,r,s=e(i.currentTarget),a=t.resizeHandle,l=s.position(),c=l.left,u=s.outerWidth(),h=s.closest("div"),d=i.clientX+e(window).scrollLeft(),f=t.options.columnResizeHandleWidth;return c+=h.scrollLeft(),a||(a=t.resizeHandle=e('<div class="'+n.resizeHandle+'"><div class="'+n.resizeHandleInner+'" /></div>')),o=s.offset().left+u,(r=d>o-f&&o+f>d)?(h.append(a),void a.show().css({top:l.top,left:c+u-f-1,height:s.outerHeight(),width:3*f}).data("th",s)):void a.hide()};this.options.resizable&&(this._columnResizable&&this._columnResizable.destroy(),this.header.find("thead").on("mousemove"+_,"th",i),this._columnResizable=this.header.kendoResizable({handle:y+n.resizeHandle,start:function(n){var i=e(n.currentTarget).data("th"),o="col:eq("+i.index()+")",r=t.header.find("table"),s=t.content.find("table");t.element.addClass("k-grid-column-resizing"),this.col=s.children("colgroup").find(o).add(r.find(o)),this.th=i,this.startLocation=n.x.location,this.columnWidth=i.outerWidth(),this.table=r.add(s),this.totalWidth=this.table.width()-r.find("th:last").outerWidth()},resize:function(e){var t=11,n=e.x.location-this.startLocation;t>this.columnWidth+n&&(n=t-this.columnWidth),this.table.css({minWidth:this.totalWidth+n}),this.col.width(this.columnWidth+n)},resizeend:function(){var e,n,i;t.element.removeClass("k-grid-column-resizing"),e=Math.floor(this.columnWidth),n=Math.floor(this.th.outerWidth()),i=t.columns[this.th.index()],t.trigger("columnResize",{column:i,oldWidth:e,newWidth:n}),this.table=this.col=this.th=null}}).data("kendoResizable"))},_modelFromElement:function(e){var t=e.closest("tr"),n=this.dataSource.getByUid(t.attr(i.attr("uid")));return n},_columnFromElement:function(e){var t=e.closest("td"),n=t.parent(),i=n.children().index(t);return this.columns[i]}});h(!0,c.GanttList,{styles:x})}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t){t()}); |