{"version":3,"sources":["kendo.gantt.list.js"],"names":["f","define","$","extend","map","proxy","isFunction","ui","kendo","TreeList","outerHeight","_outerHeight","activeElement","_activeElement","keys","mobileOS","support","DATATYPE","attr","BINDING","FORMAT","STRING","NS","DOUBLE_CLICK","FOCUSIN","FOCUSOUT","KEYDOWN","KEYUP","MOUSE_DOWN","BEFORE_EDIT","EDIT","SAVE","CANCEL","RENDER","DOT","defaultDateFormat","getCulture","calendar","patterns","d","titleFromField","title","start","end","percentComplete","parentId","id","orderId","SIZE_CALCULATION_TEMPLATE","listStyles","gridHeader","gridContentWrap","editCell","iconCollapse","iconExpand","GanttList","init","element","options","this","columns","length","push","fn","call","_unbindDataSource","_setWidth","name","autoBind","sortable","selectable","navigatable","editable","move","mode","resizable","renderAllRows","destroy","closeCell","isCancel","tr","model","that","cell","editor","_isIncellEditable","dataItem","_cancelEditor","removeClass","parent","editRow","lockedContent","_relatedRow","_render","trigger","item","data","ns","_adjustRowHeight","css","insertAfter","nodeData","referenceNode","taskInfo","task","updateInfo","insertBefore","_adjustHeight","height","contentWrap","find","header","scrollbar","_isHeightSet","_hasLockedColumns","table","offsetWidth","clientWidth","row1","row2","offsetHeight1","offsetHeight","offsetHeight2","style","el","initialHeight","newHeight","_attachCellEditingEventHandlers","update","_startEditHandler","e","td","currentTarget","column","_columnFromElement","_editCell","_modelFromElement","content","on","_focusInEditableHandler","_focusoutCellHandler","_keydownHandler","_keyupHandler","touch","kendoTouch","filter","touchstart","_mouseDownHandler","doubletap","event","target","classList","contains","_openEditorHandler","_blurActiveElement","nodeName","toLowerCase","blur","_closeCellTimeouted","closest","_columns","_hasExpandable","forEach","expandable","_eachColumn","_columnEditor","field","required","_extractFormat","format","container","fields","validation","dateCompare","message","hide","appendTo","prependTo","kendoDateTimePicker","idx","children","index","resourcesField","isSortable","formatResources","i","value","get","formatedValue","join","hasNestedColumns","indexOf","template","editedCell","modelCopy","dataSource","_createNewModel","toJSON","_restorePageSizeAfterAddChild","_edit","editedColumn","editedColumnIndex","add","lockedTable","first","_createIncellEditor","change","values","preventDefault","_current","clearTimeout","_closeCellTimeout","setTimeout","keyCode","ENTER","key","ESC","row","getByUid","hasClass","isLockedCell","multiple","has","tbody","is","_renderTree","taskTree","addClass","rowHeight","_rowHeight","tasks","append","remove","_setData","listWidth","plugin","window","jQuery","amd","a1","a2","a3"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;CAwBC,SAAUA,EAAGC,QACVA,OAAO,oBACH,iBACA,8BACDD,IACL,WAsaE,MA1ZC,UAAUE,GAAV,GACOC,GAASD,EAAEC,OAAQC,EAAMF,EAAEE,IAAKC,EAAQH,EAAEG,MAAOC,EAAaJ,EAAEI,WAAYC,EAAKC,MAAMD,GAAIE,EAAWF,EAAGE,SAAUC,EAAcF,MAAMG,aAAcC,EAAgBJ,MAAMK,eAAgBC,EAAON,MAAMM,KAAMC,EAAWP,MAAMQ,QAAQD,SAAUE,EAAWT,MAAMU,KAAK,QAASC,EAAUX,MAAMU,KAAK,QAASE,EAASZ,MAAMU,KAAK,UAAWG,EAAS,SAAUC,EAAK,kBAAmBC,EAAe,WAAYC,EAAU,UAAWC,EAAW,WAAYC,EAAU,UAAWC,EAAQ,QAASC,EAAa,YAAaC,EAAc,aAAcC,EAAO,OAAQC,EAAO,OAAQC,EAAS,SAAUC,EAAS,SAAUC,EAAM,IAAKC,EAAoB,MAAQ3B,MAAM4B,aAAaC,SAASC,SAASC,EAAI,IAAKC,GAChrBC,MAAS,QACTC,MAAS,aACTC,IAAO,WACPC,gBAAmB,SACnBC,SAAY,iBACZC,GAAM,KACNC,QAAW,YACZC,EAA4B,wGAA2IC,GACtKC,WAAY,gBACZC,gBAAiB,iBACjBC,SAAU,cACVC,aAAc,eACdC,WAAY,cAEhBC,EAAYhD,EAAGgD,UAAY9C,EAASN,QACpCqD,KAAM,SAAUC,EAASC,GACe,IAAhCC,KAAKD,QAAQE,QAAQC,QACrBF,KAAKD,QAAQE,QAAQE,KAAK,SAE9BrD,EAASsD,GAAGP,KAAKQ,KAAKL,KAAMF,EAASC,GACrCC,KAAKM,oBACLN,KAAKO,aAETR,SACIS,KAAM,YACNC,UAAU,EACVC,UAAU,EACVC,YAAY,EACZC,aAAa,EACbC,UACIC,MAAM,EACNC,KAAM,UAEVC,WAAW,EACXC,eAAe,GAEnBC,QAAS,WACLpE,EAASsD,GAAGc,QAAQb,KAAKL,MACzBnD,MAAMqE,QAAQlB,KAAKF,UAEvBqB,UAAW,SAAUC,GAAV,GAGHC,GACAC,EAHAC,EAAOvB,KACPwB,GAAQD,EAAKE,YAAc3B,OAG1B0B,IAASA,EAAK,IAAOD,EAAKG,sBAG/BJ,EAAQC,EAAKI,SAASH,GACtBD,EAAKK,gBACLJ,EAAKK,YAAYvC,EAAWG,UAC5B4B,EAAKG,EAAKM,SAASD,YAAYvC,EAAWyC,SACtCR,EAAKS,eACLT,EAAKU,YAAYZ,GAAIQ,YAAYvC,EAAWyC,SAE5CX,GACAG,EAAKW,UAETX,EAAKY,QAAQ,cACTC,KAAMf,EACNgB,KAAMf,EACNgB,GAAI1F,IAEJ2E,EAAKS,eACLT,EAAKgB,iBAAiBlB,EAAGmB,IAAI,SAAU,IAAI,GAAIjB,EAAKU,YAAYZ,GAAImB,IAAI,SAAU,IAAI,MAG9FC,YAAa,SAAUC,EAAUC,GAApB,GAILvD,GACAwD,CAJCF,IAAaC,IAGdvD,EAAUuD,EAAcvD,QACxBwD,GAAa1D,SAAUyD,EAAczD,UAErC0D,EAASxD,QADTuD,EAAczD,WAAawD,EAASxD,UAAYyD,EAAcvD,QAAUsD,EAAStD,QAC9DA,EAEAA,EAAU,EAEjCY,KAAKmC,QAAQ,WACTU,KAAMH,EACNI,WAAYF,MAGpBG,aAAc,SAAUL,EAAUC,GAApB,GAINvD,GACAwD,CAJCF,IAAaC,IAGdvD,EAAUuD,EAAcvD,QACxBwD,GAAa1D,SAAUyD,EAAczD,UAErC0D,EAASxD,QADTuD,EAAczD,WAAawD,EAASxD,UAAYyD,EAAcvD,QAAUsD,EAAStD,QAC9DA,EAAU,EAEVA,EAEvBY,KAAKmC,QAAQ,WACTU,KAAMH,EACNI,WAAYF,MAGpBI,cAAe,WAAA,GAIPC,GAHAnD,EAAUE,KAAKF,QACfoD,EAAcpD,EAAQqD,KAAK5E,EAAMe,EAAWE,iBAC5C4D,EAAStD,EAAQqD,KAAK5E,EAAMe,EAAWC,YAEvC8D,EAAYxG,MAAMQ,QAAQgG,WAC1BrD,MAAKsD,aAAaxD,KAClBmD,EAASnD,EAAQmD,SAAWlG,EAAYqG,GACxCF,EAAYD,OAAOA,GACfjD,KAAKuD,oBACLF,EAAYrD,KAAKwD,MAAM,GAAGC,YAAczD,KAAKwD,MAAM1B,SAAS,GAAG4B,YAAcL,EAAY,EACzFrD,KAAKgC,cAAciB,OAAOA,EAASI,MAI/Cd,iBAAkB,SAAUoB,EAAMC,GAAhB,GACVX,GACAY,EAAgBF,EAAKG,aACrBC,EAAgBH,EAAKE,YACrBD,GAAgBE,EAChBd,EAASY,EAAgB,KAClBA,EAAgBE,IACvBd,EAASc,EAAgB,MAEzBd,IACAU,EAAKK,MAAMf,OAASW,EAAKI,MAAMf,OAASA,IAGhDK,aAAc,SAAUW,GACpB,GAAIC,GAAeC,CACnB,SAAIF,EAAG,GAAGD,MAAMf,SAGZiB,EAAgBD,EAAGhB,SAEvBgB,EAAGhB,OAAO,QACVkB,EAAYF,EAAGhB,SACfgB,EAAGhB,OAAO,IACHiB,GAAiBC,IAE5BC,gCAAiC,WAC7B,GAAI7C,GAAOvB,KAAMa,EAAWU,EAAKxB,QAAQc,QACrCU,GAAKG,qBAAuBb,EAASwD,UAAW,IAChD9C,EAAK+C,kBAAoB,SAAUC,GAAV,GACjBC,GAAKD,EAAEE,cAAgBlI,EAAEgI,EAAEE,eAAiBF,EAC5CG,EAASnD,EAAKoD,mBAAmBH,EACjCjD,GAAKV,UAGL6D,GAAUA,EAAO7D,YACjBU,EAAKqD,UAAUJ,EAAIE,EAAQnD,EAAKsD,kBAAkBL,KAG1DjD,EAAKuD,QAAQC,GAAGlH,EAAUF,EAAIjB,EAAM6E,EAAKyD,wBAAyBzD,IAAOwD,GAAGjH,EAAWH,EAAIjB,EAAM6E,EAAK0D,qBAAsB1D,IAAOwD,GAAGhH,EAAUJ,EAAI,+BAAgCjB,EAAM6E,EAAK2D,gBAAiB3D,IAAOwD,GAAG/G,EAAQL,EAAI,+BAAgCjB,EAAM6E,EAAK4D,cAAe5D,IAC3RnE,EAGDmE,EAAK6D,MAAQ7D,EAAKuD,QAAQO,YACtBC,OAAQ,KACRC,WAAY,SAAUhB,GAClBhD,EAAKiE,kBAAkBjB,EAAEa,QAE7BK,UAAW,SAAUlB,GACbA,EAAEmB,MAAMC,OAAOC,UAAUC,SAAS,WAGtCtE,EAAKuE,mBAAmBvB,EAAEa,UAE/B/C,KAAK,cAbRd,EAAKuD,QAAQC,GAAG9G,EAAaN,EAAI,+BAAgCjB,EAAM6E,EAAKiE,kBAAmBjE,IAAOwD,GAAGnH,EAAeD,EAAI,+BAAgCjB,EAAM6E,EAAKuE,mBAAoBvE,MAiBvMwE,mBAAoB,WAChB,GAAI9I,GAAgBJ,MAAMK,gBACtBD,IAA0D,SAAzCA,EAAc+I,SAASC,eACxC1J,EAAEU,GAAeiJ,QAGzBC,oBAAqB,WACjB,GAAI5E,GAAOvB,KAAM2F,EAAS1I,IAAiBwE,EAASF,EAAKE,WAAcD,EAAOC,EAAO3B,OACjF0B,IAAQA,EAAK,IAAMmE,IAAWpJ,EAAEsJ,SAASrE,EAAK,GAAImE,IAAWnE,EAAK,KAAOmE,IAAWpJ,EAAEoJ,GAAQS,QAAQ,0BAA0BlG,QAC5HuB,EAAOzC,OACPuC,EAAKJ,aAIjBkF,SAAU,WACN,GAAI9E,GAAOvB,KAAMC,EAAUD,KAAKD,QAAQE,OACxCsB,GAAK+E,gBAAiB,EACtBrG,EAAQsG,QAAQ,SAAUnE,GAClBA,EAAKoE,aACLjF,EAAK+E,gBAAiB,KAG9B/E,EAAKtB,QAAUsB,EAAKxB,QAAQE,QAAUxD,EAAIwD,EAASvD,EAAM6E,EAAKkF,YAAalF,IAC3EzE,EAASsD,GAAGiG,SAAShG,KAAKkB,IAE9BmF,cAAe,SAAUhC,GACrB,GAAInH,IACAiD,KAAQkE,EAAOiC,MACfC,UAAY,EAKhB,OAHArJ,GAAKC,GAAW,SAAWkH,EAAOiC,MAClCpJ,EAAKD,GAAY,OACjBC,EAAKE,GAAUZ,MAAMgK,eAAenC,EAAOoC,QACpC,SAAUC,EAAWhH,GACxB,GAAIuB,GAAQvB,EAAQuB,MAAOqF,EAAQrF,EAAM0F,OAAOtC,EAAOiC,QAAUrF,EAAMoD,EAAOiC,OAAQM,EAAaN,EAAMM,UACrGA,IAAcA,EAAWC,aAAevK,EAAWsK,EAAWC,cAAgBD,EAAWE,UACzF5K,EAAE,SAAWM,MAAMU,KAAK,OAAS,KAAOmH,EAAOiC,MAAQ,6BAA6BS,OAAOC,SAASN,GACpGxJ,EAAKV,MAAMU,KAAK,oBAAsB0J,EAAWE,SAErD5K,EAAE,wBAAwBgB,KAAKA,GAAM+J,UAAUP,GAAWQ,qBAAsBT,OAAQ/G,EAAQ+G,WAGxGnC,mBAAoB,SAAU7E,GAC1B,GAAI0E,GAAK1E,EAAQsG,QAAQ,MAAO/E,EAAKmD,EAAG1C,SAAU0F,EAAMnG,EAAGoG,WAAWC,MAAMlD,EAC5E,OAAOxE,MAAKC,QAAQuH,IAExBf,YAAa,SAAU/B,GAAV,GACLnD,GAAOvB,KAAM2H,EAAiBpG,EAAKxB,QAAQ4H,eAAgBC,EAAa5H,KAAKD,QAAQW,SACrFY,EAAQ,WACRtB,KAAK2G,MAAQ,GACb3G,KAAKlB,MAAQ,GACbkB,KAAKa,SAAW,WACZ,OAAO,GAEXb,KAAKU,UAAW,GAEhBmH,EAAkB,SAAUhF,GAAV,GAETiF,GADLC,EAAQlF,EAAKmF,IAAIL,OAAuBM,IAC5C,KAASH,EAAI,EAAGA,EAAIC,EAAM7H,OAAQ4H,IAC9BG,EAAc9H,KAAKtD,MAAMiK,OAAO,YAAaiB,EAAMD,GAAGE,IAAI,QAASD,EAAMD,GAAGE,IAAI,kBAEpF,OAAOC,GAAcC,KAAK,MAuC9B,OArCIxD,GAAOzE,UACPsB,EAAK4G,kBAAmB,EACxBzD,EAAOzE,QAAUxD,EAAIiI,EAAOzE,QAASvD,EAAMsD,KAAKyG,YAAazG,cAEtD0E,KAAWhH,IAClBgH,GACIiC,MAAOjC,EACP5F,MAAOD,EAAe6F,KAI1BA,EAAO7D,SADP6D,EAAO7D,YAAa,EACF,WACd,OAAO,GAGO,WACd,OAAO,GAGM,UAAjB6D,EAAOiC,OAAsC,QAAjBjC,EAAOiC,QACnCjC,EAAOoC,OAASjK,MAAM4B,aAAaC,SAASC,SAAS+F,EAAOoC,SAAWpC,EAAOoC,QAAUtI,EACnFkG,EAAOjD,SACJiD,EAAOoC,SAAWtI,GAAqBkG,EAAOoC,OAAOb,cAAcmC,QAAQ,WAC3E1D,EAAOjD,OAASF,EAAKmF,cAAchC,KAI3CA,EAAOiC,QAAUgB,IACjBjD,EAAOhE,UAAW,EAClBgE,EAAO2D,SAAW3D,EAAO2D,UAAYR,GAEpCtG,EAAK+E,gBAAmC,UAAjB5B,EAAOiC,QAC/BjC,EAAO8B,YAAa,GAEpBoB,IAAelD,EAAOhE,WACtBgE,EAAOhE,UAAW,GAEflE,EAAO,GAAI8E,GAASoD,IAE/BE,UAAW,SAAUpD,EAAMkD,EAAQpD,GAC/B,GAA4HgH,GAAxH/G,EAAOvB,KAAM2H,EAAiBpG,EAAKxB,QAAQ4H,eAAgBY,EAAYhH,EAAKiH,WAAWC,gBAAgBnH,EAAMoH,SACjH,OAAIhE,GAAOiC,QAAUgB,MACjBjD,GAAOjD,OAAOD,EAAM+G,GAGhBhH,EAAKY,QAAQjE,GACToD,MAAOA,EACPyF,UAAWvF,QAEfD,GAAKiH,WAAWG,iCAGpBpH,EAAKJ,YACLG,EAAMsH,OAAQ,EACdrH,EAAKK,gBACLL,EAAKW,SACD2G,aAAcnE,EACdoE,kBAAmBtH,EAAKkG,UAE5BY,EAAa/G,EAAKiC,MAAMuF,IAAIxH,EAAKyH,aAAa7F,KAAK5E,EAAMe,EAAWG,UAAUwJ,QAC9E1H,EAAKE,OAASF,EAAK2H,oBAAoBZ,GACnCrI,SAAUyE,GACVpD,MAAOA,EACP6H,OAAQ,SAAU5E,GACVhD,EAAKY,QAAQ/D,GACTgL,OAAQ7E,EAAE6E,OACVrC,UAAWvF,EACXF,MAAOA,KAEXiD,EAAE8E,oBAId9H,EAAK+H,SAAWhB,MAChB/G,GAAKY,QAAQhE,GACT4I,UAAWvF,EACXF,MAAOA,MAInB0D,wBAAyB,SAAUT,GAC/B,GAAIhD,GAAOvB,KAAM2F,EAASpB,EAAEoB,MACvBpJ,GAAEsJ,SAASF,EAAQ1I,OACpBsM,aAAahI,EAAKiI,mBAClBjI,EAAKiI,kBAAoB,OAGjCvE,qBAAsB,SAAUV,GAC5B,GAAIhD,GAAOvB,IACXuB,GAAKiI,kBAAoBC,WAAW,WAChClI,EAAK4E,oBAAoB5B,IAC1B,IAEPW,gBAAiB,SAAUX,GACnBA,EAAEmF,UAAYvM,EAAKwM,OACnBpF,EAAE8E,kBAGVlE,cAAe,SAAUZ,GACrB,GAAkC/C,GAAMF,EAApCC,EAAOvB,KAAM4J,EAAMrF,EAAEmF,OACzB,QAAQE,GACR,IAAKzM,GAAKwM,MACNpI,EAAKwE,qBACLxE,EAAK4E,oBAAoB5B,EACzB,MACJ,KAAKpH,GAAK0M,IACFtI,EAAKE,SACLD,EAAOjF,EAAEgI,EAAEoB,QACXrE,EAAQC,EAAKsD,kBAAkBrD,GAC/BD,EAAKY,QAAQ9D,GACTiD,MAAOA,EACPE,KAAMA,OAMtBqD,kBAAmB,SAAU/E,GACzB,GAAIgK,GAAMhK,EAAQsG,QAAQ,MAAO9E,EAAQtB,KAAKwI,WAAWuB,SAASD,EAAIvM,KAAKV,MAAMU,KAAK,QACtF,OAAO+D,IAEXkE,kBAAmB,SAAUjB,GACzB,GAAIE,GAAgBlI,EAAEgI,EAAEE,cACnBA,GAAcuF,SAAS1K,EAAWG,WACnCO,KAAK+F,sBAGbD,mBAAoB,SAAUvB,GAC1B,GAAIhD,GAAOvB,KAAMwE,EAAKjI,EAAEgI,EAAEE,eAAgBwF,EAAe1I,EAAKyH,aAAexE,EAAG4B,QAAQ,SAAS,KAAO7E,EAAKyH,YAAY,GAAIrI,EAAaY,EAAKZ,YAAcY,EAAKZ,WAAWZ,QAAQmK,QACjL1F,GAAGwF,SAAS1K,EAAWG,WAAa+E,EAAG2F,IAAI,mBAAmBjK,QAAUsE,EAAG2F,IAAI,wBAAwBjK,QAAUsE,EAAG4B,QAAQ,SAAS,KAAO7E,EAAK6I,MAAM,KAAOH,GAAgB1N,EAAEgI,EAAEoB,QAAQ0E,GAAG,WAAa9N,EAAEgI,EAAEoB,QAAQqE,SAAS1K,EAAWK,aAAepD,EAAEgI,EAAEoB,QAAQqE,SAAS1K,EAAWI,gBAGzR6B,EAAKE,OACDF,EAAKE,OAAOzC,QACR2B,GACApE,EAAEU,KAAiBiJ,OAEvB3E,EAAKJ,YACLI,EAAK9B,SAAS+E,IAGlBjD,EAAK9B,SAAS+E,KAGtB8F,YAAa,SAAUC,GACnBzN,EAASsD,GAAG8B,QAAQ7B,KAAKL,MACrBA,KAAKmI,kBACLnI,KAAKF,QAAQ0K,SAAS,mCAEtBD,GAAYA,EAASrK,SAAWqK,EAAS1B,eACrC7I,KAAKD,QAAQ0K,WACbzK,KAAK0K,WAAWH,GAEpBvK,KAAKmC,QAAQ7D,IAEjB0B,KAAKgD,iBAET0H,WAAY,SAAUC,GAClB,GAAmN1H,GAA/M6B,EAAU9E,KAAK8E,QAAS/E,EAAUC,KAAKD,QAAS0K,QAAmB1K,GAAQ0K,YAAc/M,EAASqC,EAAQ0K,UAAY1K,EAAQ0K,UAAY,KAAMjH,EAAQjH,EAAEM,MAAMiK,OAAOzH,EAA2BoL,GACtM3F,GAAQ8F,OAAOpH,GACfP,EAASlG,EAAYyG,EAAML,KAAK,OAChCK,EAAMqH,SACN7K,KAAKF,QAAQqD,KAAK,qBAAqBX,IAAI,SAAUmI,EAAMzK,OAAS+C,EAAS,OAEjF6H,SAAU,SAAUH,GAChB3K,KAAKwI,WAAWnG,KAAKsI,IAEzBpK,UAAW,WACPP,KAAKF,QAAQqD,KAAK,wBAAwBX,IAAI,WAAYxC,KAAKD,QAAQgL,WACvE/K,KAAK8E,QAAQ3B,KAAK,SAASX,IAAI,WAAYxC,KAAKD,QAAQgL,aAGhEnO,GAAGoO,OAAOpL,IACZqL,OAAOpO,MAAMqO,QACRD,OAAOpO,OACE,kBAAVP,SAAwBA,OAAO6O,IAAM7O,OAAS,SAAU8O,EAAIC,EAAIC,IACrEA,GAAMD","file":"kendo.gantt.list.min.js","sourcesContent":["/*!\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n*/\n(function (f, define) {\n define('kendo.gantt.list', [\n 'kendo.treelist',\n 'kendo.treeview.draganddrop'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'gantt.list',\n name: 'Gantt List',\n category: 'web',\n description: 'The Gantt List',\n depends: [\n 'treelist',\n 'treeview.draganddrop'\n ],\n hidden: true\n };\n (function ($) {\n var extend = $.extend, map = $.map, proxy = $.proxy, isFunction = $.isFunction, ui = kendo.ui, TreeList = ui.TreeList, outerHeight = kendo._outerHeight, activeElement = kendo._activeElement, keys = kendo.keys, mobileOS = kendo.support.mobileOS, DATATYPE = kendo.attr('type'), BINDING = kendo.attr('bind'), FORMAT = kendo.attr('format'), STRING = 'string', NS = '.kendoGanttList', DOUBLE_CLICK = 'dblclick', FOCUSIN = 'focusin', FOCUSOUT = 'focusout', KEYDOWN = 'keydown', KEYUP = 'keyup', MOUSE_DOWN = 'mousedown', BEFORE_EDIT = 'beforeEdit', EDIT = 'edit', SAVE = 'save', CANCEL = 'cancel', RENDER = 'render', DOT = '.', defaultDateFormat = '{0:' + kendo.getCulture().calendar.patterns.d + '}', titleFromField = {\n 'title': 'Title',\n 'start': 'Start Time',\n 'end': 'End Time',\n 'percentComplete': '% Done',\n 'parentId': 'Predecessor ID',\n 'id': 'ID',\n 'orderId': 'Order ID'\n }, SIZE_CALCULATION_TEMPLATE = '' + '' + '' + '' + '' + '' + '
 
', listStyles = {\n gridHeader: 'k-grid-header',\n gridContentWrap: 'k-grid-content',\n editCell: 'k-edit-cell',\n iconCollapse: 'k-i-collapse',\n iconExpand: 'k-i-expand'\n };\n var GanttList = ui.GanttList = TreeList.extend({\n init: function (element, options) {\n if (this.options.columns.length === 0) {\n this.options.columns.push('title');\n }\n TreeList.fn.init.call(this, element, options);\n this._unbindDataSource();\n this._setWidth();\n },\n options: {\n name: 'GanttList',\n autoBind: false,\n sortable: true,\n selectable: true,\n navigatable: false,\n editable: {\n move: true,\n mode: 'incell'\n },\n resizable: false,\n renderAllRows: false\n },\n destroy: function () {\n TreeList.fn.destroy.call(this);\n kendo.destroy(this.element);\n },\n closeCell: function (isCancel) {\n var that = this;\n var cell = (that.editor || {}).element;\n var tr;\n var model;\n if (!cell || !cell[0] || !that._isIncellEditable()) {\n return;\n }\n model = that.dataItem(cell);\n that._cancelEditor();\n cell.removeClass(listStyles.editCell);\n tr = cell.parent().removeClass(listStyles.editRow);\n if (that.lockedContent) {\n that._relatedRow(tr).removeClass(listStyles.editRow);\n }\n if (isCancel) {\n that._render();\n }\n that.trigger('itemChange', {\n item: tr,\n data: model,\n ns: ui\n });\n if (that.lockedContent) {\n that._adjustRowHeight(tr.css('height', '')[0], that._relatedRow(tr).css('height', '')[0]);\n }\n },\n insertAfter: function (nodeData, referenceNode) {\n if (!nodeData || !referenceNode) {\n return;\n }\n var orderId = referenceNode.orderId;\n var taskInfo = { parentId: referenceNode.parentId };\n if (referenceNode.parentId === nodeData.parentId && referenceNode.orderId > nodeData.orderId) {\n taskInfo.orderId = orderId;\n } else {\n taskInfo.orderId = orderId + 1;\n }\n this.trigger('reorder', {\n task: nodeData,\n updateInfo: taskInfo\n });\n },\n insertBefore: function (nodeData, referenceNode) {\n if (!nodeData || !referenceNode) {\n return;\n }\n var orderId = referenceNode.orderId;\n var taskInfo = { parentId: referenceNode.parentId };\n if (referenceNode.parentId === nodeData.parentId && referenceNode.orderId > nodeData.orderId) {\n taskInfo.orderId = orderId - 1;\n } else {\n taskInfo.orderId = orderId;\n }\n this.trigger('reorder', {\n task: nodeData,\n updateInfo: taskInfo\n });\n },\n _adjustHeight: function () {\n var element = this.element;\n var contentWrap = element.find(DOT + listStyles.gridContentWrap);\n var header = element.find(DOT + listStyles.gridHeader);\n var height;\n var scrollbar = kendo.support.scrollbar();\n if (this._isHeightSet(element)) {\n height = element.height() - outerHeight(header);\n contentWrap.height(height);\n if (this._hasLockedColumns) {\n scrollbar = this.table[0].offsetWidth > this.table.parent()[0].clientWidth ? scrollbar : 0;\n this.lockedContent.height(height - scrollbar);\n }\n }\n },\n _adjustRowHeight: function (row1, row2) {\n var height;\n var offsetHeight1 = row1.offsetHeight;\n var offsetHeight2 = row2.offsetHeight;\n if (offsetHeight1 > offsetHeight2) {\n height = offsetHeight1 + 'px';\n } else if (offsetHeight1 < offsetHeight2) {\n height = offsetHeight2 + 'px';\n }\n if (height) {\n row1.style.height = row2.style.height = height;\n }\n },\n _isHeightSet: function (el) {\n var initialHeight, newHeight;\n if (el[0].style.height) {\n return true;\n } else {\n initialHeight = el.height();\n }\n el.height('auto');\n newHeight = el.height();\n el.height('');\n return initialHeight != newHeight;\n },\n _attachCellEditingEventHandlers: function () {\n var that = this, editable = that.options.editable;\n if (that._isIncellEditable() && editable.update !== false) {\n that._startEditHandler = function (e) {\n var td = e.currentTarget ? $(e.currentTarget) : e;\n var column = that._columnFromElement(td);\n if (that.editable) {\n return;\n }\n if (column && column.editable()) {\n that._editCell(td, column, that._modelFromElement(td));\n }\n };\n that.content.on(FOCUSIN + NS, proxy(that._focusInEditableHandler, that)).on(FOCUSOUT + NS, proxy(that._focusoutCellHandler, that)).on(KEYDOWN + NS, 'tr:not(.k-grouping-row) > td', proxy(that._keydownHandler, that)).on(KEYUP + NS, 'tr:not(.k-grouping-row) > td', proxy(that._keyupHandler, that));\n if (!mobileOS) {\n that.content.on(MOUSE_DOWN + NS, 'tr:not(.k-grouping-row) > td', proxy(that._mouseDownHandler, that)).on(DOUBLE_CLICK + NS, 'tr:not(.k-grouping-row) > td', proxy(that._openEditorHandler, that));\n } else {\n that.touch = that.content.kendoTouch({\n filter: 'td',\n touchstart: function (e) {\n that._mouseDownHandler(e.touch);\n },\n doubletap: function (e) {\n if (e.event.target.classList.contains('k-icon')) {\n return;\n }\n that._openEditorHandler(e.touch);\n }\n }).data('kendoTouch');\n }\n }\n },\n _blurActiveElement: function () {\n var activeElement = kendo._activeElement();\n if (activeElement && activeElement.nodeName.toLowerCase() !== 'body') {\n $(activeElement).blur();\n }\n },\n _closeCellTimeouted: function () {\n var that = this, target = activeElement(), editor = that.editor || {}, cell = editor.element;\n if (cell && cell[0] && target && !$.contains(cell[0], target) && cell[0] !== target && !$(target).closest('.k-animation-container').length) {\n if (editor.end()) {\n that.closeCell();\n }\n }\n },\n _columns: function () {\n var that = this, columns = this.options.columns;\n that._hasExpandable = false;\n columns.forEach(function (item) {\n if (item.expandable) {\n that._hasExpandable = true;\n }\n });\n that.columns = that.options.columns = map(columns, proxy(that._eachColumn, that));\n TreeList.fn._columns.call(that);\n },\n _columnEditor: function (column) {\n var attr = {\n 'name': column.field,\n 'required': true\n };\n attr[BINDING] = 'value:' + column.field;\n attr[DATATYPE] = 'date';\n attr[FORMAT] = kendo._extractFormat(column.format);\n return function (container, options) {\n var model = options.model, field = model.fields[column.field] || model[column.field], validation = field.validation;\n if (validation && validation.dateCompare && isFunction(validation.dateCompare) && validation.message) {\n $('').hide().appendTo(container);\n attr[kendo.attr('dateCompare-msg')] = validation.message;\n }\n $('').attr(attr).prependTo(container).kendoDateTimePicker({ format: options.format });\n };\n },\n _columnFromElement: function (element) {\n var td = element.closest('td'), tr = td.parent(), idx = tr.children().index(td);\n return this.columns[idx];\n },\n _eachColumn: function (column) {\n var that = this, resourcesField = that.options.resourcesField, isSortable = this.options.sortable;\n var model = function () {\n this.field = '';\n this.title = '';\n this.editable = function () {\n return false;\n };\n this.sortable = false;\n };\n var formatResources = function (task) {\n var value = task.get(resourcesField) || [], formatedValue = [];\n for (var i = 0; i < value.length; i++) {\n formatedValue.push(kendo.format('{0} [{1}]', value[i].get('name'), value[i].get('formatedValue')));\n }\n return formatedValue.join(', ');\n };\n if (column.columns) {\n that.hasNestedColumns = true;\n column.columns = map(column.columns, proxy(this._eachColumn, this));\n }\n if (typeof column === STRING) {\n column = {\n field: column,\n title: titleFromField[column]\n };\n }\n if (column.editable === true) {\n column.editable = function () {\n return true;\n };\n } else {\n column.editable = function () {\n return false;\n };\n }\n if (column.field === 'start' || column.field === 'end') {\n column.format = kendo.getCulture().calendar.patterns[column.format] || column.format || defaultDateFormat;\n if (!column.editor) {\n if (column.format === defaultDateFormat || column.format.toLowerCase().indexOf('h') > -1) {\n column.editor = that._columnEditor(column);\n }\n }\n }\n if (column.field === resourcesField) {\n column.sortable = false;\n column.template = column.template || formatResources;\n }\n if (!that._hasExpandable && column.field === 'title') {\n column.expandable = true;\n }\n if (isSortable && !column.sortable) {\n column.sortable = false;\n }\n return extend(new model(), column);\n },\n _editCell: function (cell, column, model) {\n var that = this, resourcesField = that.options.resourcesField, modelCopy = that.dataSource._createNewModel(model.toJSON()), editedCell;\n if (column.field === resourcesField) {\n column.editor(cell, modelCopy);\n return;\n } else {\n if (that.trigger(BEFORE_EDIT, {\n model: model,\n container: cell\n })) {\n that.dataSource._restorePageSizeAfterAddChild();\n return;\n }\n that.closeCell();\n model._edit = true;\n that._cancelEditor();\n that._render({\n editedColumn: column,\n editedColumnIndex: cell.index()\n });\n editedCell = that.table.add(that.lockedTable).find(DOT + listStyles.editCell).first();\n that.editor = that._createIncellEditor(editedCell, {\n columns: [column],\n model: model,\n change: function (e) {\n if (that.trigger(SAVE, {\n values: e.values,\n container: cell,\n model: model\n })) {\n e.preventDefault();\n }\n }\n });\n that._current = editedCell;\n that.trigger(EDIT, {\n container: cell,\n model: model\n });\n }\n },\n _focusInEditableHandler: function (e) {\n var that = this, target = e.target;\n if (!$.contains(target, activeElement())) {\n clearTimeout(that._closeCellTimeout);\n that._closeCellTimeout = null;\n }\n },\n _focusoutCellHandler: function (e) {\n var that = this;\n that._closeCellTimeout = setTimeout(function () {\n that._closeCellTimeouted(e);\n }, 1);\n },\n _keydownHandler: function (e) {\n if (e.keyCode === keys.ENTER) {\n e.preventDefault();\n }\n },\n _keyupHandler: function (e) {\n var that = this, key = e.keyCode, cell, model;\n switch (key) {\n case keys.ENTER:\n that._blurActiveElement();\n that._closeCellTimeouted(e);\n break;\n case keys.ESC:\n if (that.editor) {\n cell = $(e.target);\n model = that._modelFromElement(cell);\n that.trigger(CANCEL, {\n model: model,\n cell: cell\n });\n }\n break;\n }\n },\n _modelFromElement: function (element) {\n var row = element.closest('tr'), model = this.dataSource.getByUid(row.attr(kendo.attr('uid')));\n return model;\n },\n _mouseDownHandler: function (e) {\n var currentTarget = $(e.currentTarget);\n if (!currentTarget.hasClass(listStyles.editCell)) {\n this._blurActiveElement();\n }\n },\n _openEditorHandler: function (e) {\n var that = this, td = $(e.currentTarget), isLockedCell = that.lockedTable && td.closest('table')[0] === that.lockedTable[0], selectable = that.selectable && that.selectable.options.multiple;\n if (td.hasClass(listStyles.editCell) || td.has('a.k-grid-delete').length || td.has('button.k-grid-delete').length || td.closest('tbody')[0] !== that.tbody[0] && !isLockedCell || $(e.target).is(':input') || $(e.target).hasClass(listStyles.iconExpand) || $(e.target).hasClass(listStyles.iconCollapse)) {\n return;\n }\n if (that.editor) {\n if (that.editor.end()) {\n if (selectable) {\n $(activeElement()).blur();\n }\n that.closeCell();\n that.editCell(td);\n }\n } else {\n that.editCell(td);\n }\n },\n _renderTree: function (taskTree) {\n TreeList.fn._render.call(this);\n if (this.hasNestedColumns) {\n this.element.addClass('k-gantt-treelist-nested-columns');\n }\n if (taskTree && taskTree.length && !taskTree.editedColumn) {\n if (this.options.rowHeight) {\n this._rowHeight(taskTree);\n }\n this.trigger(RENDER);\n }\n this._adjustHeight();\n },\n _rowHeight: function (tasks) {\n var content = this.content, options = this.options, rowHeight = typeof options.rowHeight === STRING ? options.rowHeight : options.rowHeight + 'px', table = $(kendo.format(SIZE_CALCULATION_TEMPLATE, rowHeight)), height;\n content.append(table);\n height = outerHeight(table.find('tr'));\n table.remove();\n this.element.find('[role=\"treegrid\"]').css('height', tasks.length * height + 'px');\n },\n _setData: function (tasks) {\n this.dataSource.data(tasks);\n },\n _setWidth: function () {\n this.element.find('.k-grid-header table').css('minWidth', this.options.listWidth);\n this.content.find('table').css('minWidth', this.options.listWidth);\n }\n });\n ui.plugin(GanttList);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));"]}