From 6837b794490c4b4262cd56c06e01754224caeeec Mon Sep 17 00:00:00 2001 From: tianshujie Date: Thu, 2 Jun 2022 10:51:32 +0800 Subject: [PATCH 1/2] * Fixed editing RD Kanban error. --- module/execution/view/edit.html.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/module/execution/view/edit.html.php b/module/execution/view/edit.html.php index 1927c31f9d..0e7c0ffa9c 100644 --- a/module/execution/view/edit.html.php +++ b/module/execution/view/edit.html.php @@ -25,11 +25,15 @@
- systemMode == 'new' and isset($project) and $project->model == 'scrum'):?> + systemMode == 'new' and isset($project)):?> + model == 'scrum'):?> + model == 'kanban'):?> + id);?> + From c1abc1988258e56b6ed879316f590196ac3d76fa Mon Sep 17 00:00:00 2001 From: Hao Sun Date: Thu, 2 Jun 2022 04:11:59 +0000 Subject: [PATCH 2/2] * fix virtual rendering not work when kanban enter fullscreen --- module/execution/js/kanban.js | 3 ++- module/execution/js/taskkanban.js | 4 ++-- module/kanban/js/view.js | 39 ++++++++++++++++--------------- www/js/zui/kanban/min.css | 4 ++-- www/js/zui/kanban/min.js | 4 ++-- 5 files changed, 28 insertions(+), 26 deletions(-) diff --git a/module/execution/js/kanban.js b/module/execution/js/kanban.js index d15df83a39..b376760d62 100644 --- a/module/execution/js/kanban.js +++ b/module/execution/js/kanban.js @@ -1232,7 +1232,8 @@ function initKanban($kanban) onRenderCount: renderCount, droppable: groupBy == 'default' ? {target: findDropColumns, finish:handleFinishDrop} : false, virtualize: true, - virtualCardList: true + virtualCardList: true, + virtualRenderOptions: {container: $(window).add($('#kanbanContainer'))} }); $kanban.on('click', '.action-cancel', hideKanbanAction); diff --git a/module/execution/js/taskkanban.js b/module/execution/js/taskkanban.js index ef00356145..9030b82b4e 100644 --- a/module/execution/js/taskkanban.js +++ b/module/execution/js/taskkanban.js @@ -1062,7 +1062,7 @@ $(function() cardsPerRow: window.kanbanScaleSize, virtualize: true, onAction: handleKanbanAction, - virtualRenderOptions: {container: '#kanbanContainer>.panel-body'}, + virtualRenderOptions: {container: '#kanbanContainer>.panel-body,#kanbanContainer'}, virtualCardList: true, droppable: { @@ -1071,7 +1071,7 @@ $(function() }, onRenderHeaderCol: renderHeaderCol, onRenderLaneName: renderLaneName, - onRenderCount: renderColumnCount + onRenderCount: renderColumnCount, }; if(groupBy != 'default') commonOptions.droppable = false; diff --git a/module/kanban/js/view.js b/module/kanban/js/view.js index e11f5e4610..a2e5ee0599 100644 --- a/module/kanban/js/view.js +++ b/module/kanban/js/view.js @@ -1269,25 +1269,26 @@ function initKanban($kanban) $kanban.kanban( { - data: region.groups, - maxColHeight: 510, - calcColHeight: calcColHeight, - fluidBoardWidth: fluidBoard, - minColWidth: 285, - maxColWidth: 285, - cardHeight: 60, - displayCards: displayCards, - createColumnText: kanbanLang.createColumn, - addItemText: '', - itemRender: renderKanbanItem, - onAction: handleKanbanAction, - onRenderKanban: adjustAddBtnPosition, - onRenderLaneName: renderLaneName, - onRenderHeaderCol: renderHeaderCol, - onRenderCount: renderCount, - sortable: handleSortCards, - virtualize: true, - virtualCardList: true, + data: region.groups, + maxColHeight: 510, + calcColHeight: calcColHeight, + fluidBoardWidth: fluidBoard, + minColWidth: 285, + maxColWidth: 285, + cardHeight: 60, + displayCards: displayCards, + createColumnText: kanbanLang.createColumn, + addItemText: '', + itemRender: renderKanbanItem, + onAction: handleKanbanAction, + onRenderKanban: adjustAddBtnPosition, + onRenderLaneName: renderLaneName, + onRenderHeaderCol: renderHeaderCol, + onRenderCount: renderCount, + sortable: handleSortCards, + virtualize: true, + virtualRenderOptions: {container: $(window).add($('#kanbanContainer'))}, + virtualCardList: true, droppable: { target: findDropColumns, diff --git a/www/js/zui/kanban/min.css b/www/js/zui/kanban/min.css index 52876d016c..0a07c5cadd 100644 --- a/www/js/zui/kanban/min.css +++ b/www/js/zui/kanban/min.css @@ -1,6 +1,6 @@ /*! - * ZUI: ZUI Kanban View - v1.10.0 - 2022-05-19 + * ZUI: ZUI Kanban View - v1.10.0 - 2022-06-02 * http://openzui.com * GitHub: https://github.com/easysoft/zui.git * Copyright (c) 2022 cnezsoft.com; Licensed MIT - */.kanban{min-height:300px}.kanban-header{position:relative;z-index:1;background-color:rgba(0,0,0,.07)}.use-flex .kanban-cols{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;min-width:0;flex-direction:row;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-flex:1;-webkit-flex:auto;-ms-flex:auto;flex:auto}.kanban-col{min-width:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.no-flex .kanban-col{position:absolute;top:0;bottom:0}.kanban-col+.kanban-col{border-left:2px solid #fff}.kanban-header-cols{position:absolute;top:0;right:0;bottom:0;left:auto}.kanban-header-col{position:relative}.kanban-header-col>.title>.icon{display:inline-block;vertical-align:middle}.kanban-header-col>.title>.text{display:inline-block;margin:0 5px;overflow:hidden;font-weight:700;text-overflow:clip;white-space:nowrap;vertical-align:middle}.kanban-header-col>.title>.count{position:relative;top:1px;display:inline-block;color:#8b91a2;vertical-align:middle}.kanban-affixed .kanban-header-col>.title>.count{color:#ededed}.use-flex .kanban-header-col{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;min-width:0;min-height:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0 30px;flex-direction:row;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row}.use-flex .kanban-header-col>.title{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;max-width:100%;flex-direction:row;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;-webkit-box-flex:1;-webkit-flex:auto;-ms-flex:auto;flex:auto;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.no-flex .kanban-header-col>.title{position:absolute;top:50%;right:30px;left:30px;margin-top:-10px;line-height:20px;text-align:center;white-space:nowrap}.kanban-header-col>.actions{position:absolute;top:0;right:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.kanban-header-col>.actions>.btn,.kanban-header-col>.actions>a{min-width:20px;padding:5px;border-radius:0}.kanban-header-col>.actions>.btn>.icon,.kanban-header-col>.actions>a>.icon{opacity:.5}.kanban-affixed .kanban-header-col>.actions>.btn,.kanban-affixed .kanban-header-col>.actions>.btn>.icon,.kanban-affixed .kanban-header-col>.actions>a,.kanban-affixed .kanban-header-col>.actions>a>.icon{color:#fff}.kanban-header-parent-col>.kanban-header-col,.kanban-header-parent-col>.kanban-header-sub-cols{height:50%}.use-flex .kanban-header-parent-col{padding:0;flex-direction:column;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch}.kanban-header-sub-cols{position:relative;margin-top:-1px;margin-left:-2px;border-top:2px solid #fff;border-right:none}.use-flex .kanban-header-sub-cols{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;flex-direction:row;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row}.use-flex .kanban-header-sub-cols>.kanban-col{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.kanban-col:first-child>.kanban-header-sub-cols{margin-left:0}.kanban-lane,.kanban-sub-lane{position:relative;background-color:#f1f3f5}.use-flex .kanban-lane,.use-flex .kanban-sub-lane{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;min-height:0;flex-direction:row;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.kanban-lane+.kanban-lane{margin-top:2px}.kanban-lane>*{opacity:1;-webkit-transition:opacity .1s;-o-transition:opacity .1s;transition:opacity .1s}.kanban-lane.virtual-pending>*{opacity:0}.kanban-lane .has-sub-lane{background:0 0}.no-flex .kanban-lane-cols{position:absolute;top:0;right:0;bottom:0}.no-flex .kanban-sub-lane-cols{position:absolute;top:0;right:0;bottom:0;left:0}.kanban-sub-lane{-webkit-box-flex:1;-webkit-flex:auto;-ms-flex:auto;flex:auto}.kanban-lane-name{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:20px;overflow:hidden;color:#fff;text-align:center;background-color:#3dc6fd;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-box-flex:0;-webkit-flex:none;-ms-flex:none;flex:none}.kanban-lane-name>.text{position:absolute;top:5px;bottom:5px;left:0;display:block;overflow:hidden;line-height:20px;text-align:center;white-space:nowrap;-webkit-writing-mode:tb-rl;-ms-writing-mode:tb-rl;writing-mode:tb-rl;-webkit-writing-mode:vertical-rl;writing-mode:vertical-rl}.no-flex .kanban-lane-name{position:absolute;top:0;bottom:0;left:0}.kanban-sub-lanes{min-width:0}.use-flex .kanban-sub-lanes{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;flex-direction:column;-webkit-box-flex:1;-webkit-flex:auto;-ms-flex:auto;flex:auto;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-pack:stretch;-webkit-justify-content:stretch;-ms-flex-pack:stretch;justify-content:stretch;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column}.no-flex .kanban-sub-lanes{position:absolute;top:0;right:0;bottom:0}.kanban-sub-lanes.no-sub-lane{background-color:#f1f3f5}.kanban-dragging .kanban-lane-col{-webkit-transition:-webkit-box-shadow .1s;-o-transition:box-shadow .1s;transition:-webkit-box-shadow .1s;transition:box-shadow .1s;transition:box-shadow .1s,-webkit-box-shadow .1s}.kanban-lane-col.drop-target{-webkit-box-shadow:inset 0 0 0 3px rgba(255,152,0,.25);box-shadow:inset 0 0 0 3px rgba(255,152,0,.25)}.kanban-lane-col.drop-to{-webkit-box-shadow:inset 0 0 1px 4px rgba(255,152,0,.75);box-shadow:inset 0 0 1px 4px rgba(255,152,0,.75)}.kanban-lane-col.drop-to .kanban-lane-actions>.btn{background-color:rgba(255,152,0,.25);border:1px dotted #ff9800}.kanban-lane-col.drop-to .kanban-lane-actions>.btn>span{opacity:0}.kanban-lane-col[data-type=EMPTY]{background-color:#fff}.kanban-lane-items{height:100%;overflow:auto;overflow:overlay!important}.kanban-lane-actions{padding:10px 15px}.use-flex .kanban-items-grid{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-align-content:flex-start;-ms-flex-line-pack:start;align-content:flex-start}.kanban-card{position:relative;padding:8px 10px;background:#fff;border:1px solid #fff;border-radius:4px;-webkit-box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);-webkit-transition:-webkit-box-shadow .2s,-webkit-transform .2s;-o-transition:box-shadow .2s,-o-transform .2s;transition:-webkit-box-shadow .2s,-webkit-transform .2s;transition:box-shadow .2s,transform .2s;transition:box-shadow .2s,transform .2s,-webkit-box-shadow .2s,-webkit-transform .2s,-o-transform .2s}.dragging>.kanban-card{opacity:.2}.kanban-card:hover{border-color:rgba(0,0,0,.1);-webkit-box-shadow:0 4px 10px 0 rgba(0,0,0,.09);box-shadow:0 4px 10px 0 rgba(0,0,0,.09)}.drag-shadow>.kanban-card{z-index:10;border-color:rgba(0,0,0,.2);-webkit-box-shadow:0 4px 10px 0 rgba(0,0,0,.05),0 4px 20px 0 rgba(0,0,0,.3);box-shadow:0 4px 10px 0 rgba(0,0,0,.05),0 4px 20px 0 rgba(0,0,0,.3);opacity:1!important;-webkit-transition:-webkit-box-shadow .2s,-webkit-transform .4s!important;-o-transition:box-shadow .2s,-o-transform .4s!important;transition:-webkit-box-shadow .2s,-webkit-transform .4s!important;transition:box-shadow .2s,transform .4s!important;transition:box-shadow .2s,transform .4s,-webkit-box-shadow .2s,-webkit-transform .4s,-o-transform .4s!important}.drag-shadow>.kanban-card.in{-webkit-transform:scale(1.1) rotate(5deg);-ms-transform:scale(1.1) rotate(5deg);-o-transform:scale(1.1) rotate(5deg);transform:scale(1.1) rotate(5deg)}.drag-shadow>.kanban-card a{pointer-events:none}.kanban-dragging{cursor:move} \ No newline at end of file + */.kanban{min-height:300px}.kanban-header{position:relative;z-index:1;background-color:rgba(0,0,0,.07)}.use-flex .kanban-cols{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;min-width:0;flex-direction:row;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-flex:1;-webkit-flex:auto;-ms-flex:auto;flex:auto}.kanban-col{min-width:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.no-flex .kanban-col{position:absolute;top:0;bottom:0}.kanban-col+.kanban-col{border-left:2px solid #fff}.kanban-header-cols{position:absolute;top:0;right:0;bottom:0;left:auto}.kanban-header-col{position:relative}.kanban-header-col>.title>.icon{display:inline-block;vertical-align:middle}.kanban-header-col>.title>.text{display:inline-block;margin:0 5px;overflow:hidden;font-weight:700;text-overflow:clip;white-space:nowrap;vertical-align:middle}.kanban-header-col>.title>.count{position:relative;top:1px;display:inline-block;color:#8b91a2;vertical-align:middle}.kanban-affixed .kanban-header-col>.title>.count{color:#ededed}.use-flex .kanban-header-col{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;min-width:0;min-height:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0 30px;flex-direction:row;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row}.use-flex .kanban-header-col>.title{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;max-width:100%;flex-direction:row;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;-webkit-box-flex:1;-webkit-flex:auto;-ms-flex:auto;flex:auto;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.no-flex .kanban-header-col>.title{position:absolute;top:50%;right:30px;left:30px;margin-top:-10px;line-height:20px;text-align:center;white-space:nowrap}.kanban-header-col>.actions{position:absolute;top:0;right:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.kanban-header-col>.actions>.btn,.kanban-header-col>.actions>a{min-width:20px;padding:5px;border-radius:0}.kanban-header-col>.actions>.btn>.icon,.kanban-header-col>.actions>a>.icon{opacity:.5}.kanban-affixed .kanban-header-col>.actions>.btn,.kanban-affixed .kanban-header-col>.actions>.btn>.icon,.kanban-affixed .kanban-header-col>.actions>a,.kanban-affixed .kanban-header-col>.actions>a>.icon{color:#fff}.kanban-header-parent-col>.kanban-header-col,.kanban-header-parent-col>.kanban-header-sub-cols{height:50%}.use-flex .kanban-header-parent-col{padding:0;flex-direction:column;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch}.kanban-header-sub-cols{position:relative;margin-top:-1px;margin-left:-2px;border-top:2px solid #fff;border-right:none}.use-flex .kanban-header-sub-cols{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;flex-direction:row;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row}.use-flex .kanban-header-sub-cols>.kanban-col{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.kanban-col:first-child>.kanban-header-sub-cols{margin-left:0}.kanban-lane,.kanban-sub-lane{position:relative;background-color:#f1f3f5}.use-flex .kanban-lane,.use-flex .kanban-sub-lane{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;min-height:0;flex-direction:row;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.kanban-lane+.kanban-lane{margin-top:2px}.kanban-lane>*{opacity:1;-webkit-transition:opacity .1s;-o-transition:opacity .1s;transition:opacity .1s}.kanban-lane.virtual-pending>*{opacity:0}.kanban-lane .has-sub-lane{background:0 0}.no-flex .kanban-lane-cols{position:absolute;top:0;right:0;bottom:0}.no-flex .kanban-sub-lane-cols{position:absolute;top:0;right:0;bottom:0;left:0}.kanban-sub-lane{-webkit-box-flex:1;-webkit-flex:auto;-ms-flex:auto;flex:auto}.kanban-lane-name{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:20px;overflow:hidden;color:#fff;text-align:center;background-color:#3dc6fd;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-box-flex:0;-webkit-flex:none;-ms-flex:none;flex:none}.kanban-lane-name>.text{position:absolute;top:5px;bottom:5px;left:0;display:block;overflow:hidden;line-height:20px;text-align:center;white-space:nowrap;-webkit-writing-mode:tb-rl;-ms-writing-mode:tb-rl;writing-mode:tb-rl;-webkit-writing-mode:vertical-rl;writing-mode:vertical-rl}.no-flex .kanban-lane-name{position:absolute;top:0;bottom:0;left:0}.kanban-sub-lanes{min-width:0}.use-flex .kanban-sub-lanes{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;flex-direction:column;-webkit-box-flex:1;-webkit-flex:auto;-ms-flex:auto;flex:auto;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-pack:stretch;-webkit-justify-content:stretch;-ms-flex-pack:stretch;justify-content:stretch;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column}.no-flex .kanban-sub-lanes{position:absolute;top:0;right:0;bottom:0}.kanban-sub-lanes.no-sub-lane{background-color:#f1f3f5}.kanban-dragging .kanban-lane-col{-webkit-transition:-webkit-box-shadow .1s;-o-transition:box-shadow .1s;transition:-webkit-box-shadow .1s;transition:box-shadow .1s;transition:box-shadow .1s,-webkit-box-shadow .1s}.kanban-lane-col.drop-target{-webkit-box-shadow:inset 0 0 0 3px rgba(255,152,0,.25);box-shadow:inset 0 0 0 3px rgba(255,152,0,.25)}.kanban-lane-col.drop-to{-webkit-box-shadow:inset 0 0 1px 4px rgba(255,152,0,.75);box-shadow:inset 0 0 1px 4px rgba(255,152,0,.75)}.kanban-lane-col.drop-to .kanban-lane-actions>.btn{background-color:rgba(255,152,0,.25);border:1px dotted #ff9800}.kanban-lane-col.drop-to .kanban-lane-actions>.btn>span{opacity:0}.kanban-lane-col[data-type=EMPTY]{background-color:#fff}.kanban-lane-items{height:100%;overflow:auto;overflow:overlay!important}.kanban-lane-actions{padding:10px 15px}.use-flex .kanban-items-grid{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-align-content:flex-start;-ms-flex-line-pack:start;align-content:flex-start}.kanban-card{position:relative;padding:8px 10px;background:#fff;border:1px solid #fff;border-radius:4px;-webkit-box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);-webkit-transition:-webkit-box-shadow .2s,-webkit-transform .2s;-o-transition:box-shadow .2s,-o-transform .2s;transition:-webkit-box-shadow .2s,-webkit-transform .2s;transition:box-shadow .2s,transform .2s;transition:box-shadow .2s,transform .2s,-webkit-box-shadow .2s,-webkit-transform .2s,-o-transform .2s}.dragging>.kanban-card{opacity:.2}.kanban-card:hover{border-color:rgba(0,0,0,.1);-webkit-box-shadow:0 4px 10px 0 rgba(0,0,0,.09);box-shadow:0 4px 10px 0 rgba(0,0,0,.09)}.drag-shadow>.kanban-card{z-index:10;border-color:rgba(0,0,0,.2);-webkit-box-shadow:0 4px 10px 0 rgba(0,0,0,.05),0 4px 20px 0 rgba(0,0,0,.3);box-shadow:0 4px 10px 0 rgba(0,0,0,.05),0 4px 20px 0 rgba(0,0,0,.3);opacity:1!important;-webkit-transition:-webkit-box-shadow .2s,-webkit-transform .4s!important;-o-transition:box-shadow .2s,-o-transform .4s!important;transition:-webkit-box-shadow .2s,-webkit-transform .4s!important;transition:box-shadow .2s,transform .4s!important;transition:box-shadow .2s,transform .4s,-webkit-box-shadow .2s,-webkit-transform .4s,-o-transform .4s!important}.drag-shadow>.kanban-card.in{-webkit-transform:scale(1.1) rotate(5deg);-ms-transform:scale(1.1) rotate(5deg);-o-transform:scale(1.1) rotate(5deg);transform:scale(1.1) rotate(5deg)}.drag-shadow>.kanban-card a{pointer-events:none}.kanban-expired{display:none!important}.kanban-dragging{cursor:move} \ No newline at end of file diff --git a/www/js/zui/kanban/min.js b/www/js/zui/kanban/min.js index 4efa3edb82..f822259879 100644 --- a/www/js/zui/kanban/min.js +++ b/www/js/zui/kanban/min.js @@ -1,7 +1,7 @@ /*! - * ZUI: ZUI Kanban View - v1.10.0 - 2022-05-19 + * ZUI: ZUI Kanban View - v1.10.0 - 2022-06-02 * http://openzui.com * GitHub: https://github.com/easysoft/zui.git * Copyright (c) 2022 cnezsoft.com; Licensed MIT */ -!function(){"use strict";function a(a,e){return n&&!e?requestAnimationFrame(a):setTimeout(a,e||0)}function e(a){return n?cancelAnimationFrame(a):void clearTimeout(a)}var n="function"==typeof window.requestAnimationFrame;$.zui({asap:a,clearAsap:e})}(),function(a){"use strict";function e(e,n){"string"==typeof e&&(e=a(e)),e instanceof a&&(e=e[0]);var t=e.getBoundingClientRect(),r=window.innerHeight||document.documentElement.clientHeight,i=window.innerWidth||document.documentElement.clientWidth;if(n)return t.left>=0&&t.top>=0&&t.left+t.width<=i&&t.top+t.height<=r;var d=t.top<=r&&t.top+t.height>=0,o=t.left<=i&&t.left+t.width>=0;return d&&o}var n="zui.virtualRender",t=function(e,r){"function"==typeof r&&(r={render:r});var i=this;i.name=n,i.$=a(e),i.options=r=a.extend({},t.DEFAULTS,this.$.data(),r),i.rendered=!1;var d=r.container;"function"==typeof d&&(d=d(i));var o=a(d?d:window);i.tryRender()||(i.$container=o,i.scrollListener=i.tryRender.bind(i),r.pendingClass&&i.$.addClass(r.pendingClass),o.on("scroll",i.scrollListener))};t.prototype.tryRender=function(){var n=this;return!(n.rendered||!e(n.$))&&(n.renderTaskID&&a.zui.clearAsap(n.renderTaskID),n.renderTaskID=a.zui.asap(function(){n.renderTaskID=null;var a=n.options.render(n.$);a!==!1&&(n.rendered=!0,n.destroy())},n.options.delay),!0)},t.prototype.destroy=function(){var e=this;e.renderTaskID&&a.zui.clearAsap(e.renderTaskID),e.scrollListener&&(e.$container.off("scroll",e.scrollListener),e.scrollListener=null);var t=e.options.pendingClass;t&&e.$.removeClass(t),e.$.removeData(n)},t.DEFAULTS={pendingClass:"virtual-pending"},a.fn.virtualRender=function(e){return this.each(function(){var r=a(this),i=r.data(n);if(i){if("string"==typeof e)return i[e]();i.destroy()}r.data(n,i=new t(this,e))})},a.zui.isElementInViewport=e}(jQuery),function(a){"use strict";var e="zui.virtuallist",n=function(t,r){"function"==typeof r&&(r={render:r});var i=this;i.name=e,i.$=a(t),i.options=r=a.extend({},n.DEFAULTS,this.$.data(),r),i.render(r.list,r.scrollTop);var d=0;i.$.on("scroll."+e,function(){var e=i.$.scrollTop();e!==i.scrollTop&&(i.scrollTop=e,d&&a.zui.clearAsap(d),d=a.zui.asap(function(){d=0,i.render()}))}),i.$.on("resize."+e,function(){d&&a.zui.clearAsap(d),d=a.zui.asap(function(){d=0,i.render()})})};n.prototype.render=function(e){var n=this;e?n.list=e:e=n.list;var t=n.scrollTop=n.$.scrollTop(),r=n.$,i=n.options.itemClassName,d=n.options.itemHeight,o=n.options.countPerRow,s=Number.parseFloat(r.css("padding-top"),10),l=Array.isArray(e),c="number"==typeof e?e:e.length,u=r.height(),h="virtual-list-item-expired",p=r.children(".virtual-list-holder-top"),b=r.children(".virtual-list-holder-bottom");p.length||(p=a('
').prependTo(r)),b.length||(b=a('
').appendTo(r)),r.children("."+i).addClass(h);var v=Math.max(0,o*Math.floor((t-s)/d)),f=Math.min(c,o*Math.ceil((t-s+u)/d));p.height(v*d/o);for(var m=v;m1&&(i._sortResult=a)}})).triggerHandler(e.event)}},drop:function(a){o.drop&&o.drop(a),r.onAction&&r.onAction("dropItem",a.element,a,i)},start:function(e){i.$.addClass("kanban-dragging"),l&&clearTimeout(l),l=setTimeout(function(){a(e.shadowElement).addClass("in"),l=0},50),o.start&&o.start(e)},always:function(a){i.$.removeClass("kanban-dragging"),l&&(clearTimeout(l),l=0),s&&(i._$sortItems.sortable("destroy").closest(".kanban-col").removeClass("kanban-col-sorting"),a.target&&a.target[0]===a.element.closest(".kanban-lane-col")[0]&&i._sortResult&&s.finish&&s.finish(i._sortResult)),o.always&&o.always(a)}});i.$.droppable(c)}r.onCreate&&r.onCreate(i)};t.prototype.setOptions=function(e){var t=this,r=a.extend({},t.options,{data:t.data},e);t.options=r,r.useFlex&&!n&&(r.useFlex=!1),t.$.toggleClass("no-flex",!r.useFlex).toggleClass("use-flex",!!r.useFlex);var i=!!a.fn.virtualRender&&r.virtualize;return i&&("object"!=typeof i&&(i={lane:!0}),t.virtualize=a.extend({},i)),t.data=r.data||[],t.render(t.data),r},t.prototype.render=function(a){var e=this;a&&(e.data=a),e.data&&!Array.isArray(e.data)&&(e.data=[e.data]);var n=e.options,t=e.data||[];n.beforeRender&&n.beforeRender(e,t),e.$.toggleClass("kanban-readonly",!!n.readonly).toggleClass("kanban-no-lane-name",!!n.noLaneName),e.$.children(".kanban-board").addClass("kanban-expired"),e.maxKanbanBoardWidth=0;for(var r=0;r1&&e.$.children(".kanban-board").css("min-width",e.maxKanbanBoardWidth),n.onRender&&n.onRender(e)},t.prototype.layoutKanban=function(a,e){for(var n=this,t=n.options,r=t.noLaneName?0:t.laneNameWidth,i=0,d={},o=!1,s=[],l=0;l0&&t.subLaneSpace&&(g.$height+=t.subLaneSpace)}}else for(var y=g.items||g.cards||{},C=0;C-1){var r=n.data[t];e=a.extend(r,e),n.data[t]=e}else n.data.push(e)}e.id||(e.id=a.zui.uuid());var i=e.id,d=n.options,o=n.$,s=o.children('.kanban-board[data-id="'+i+'"]');s.length?s.removeClass("kanban-expired"):s=a('
').appendTo(o),n.layoutKanban(e,s),n.renderKanbanHeader(e,s),s.children(".kanban-lane").addClass("kanban-expired");for(var l=e.lanes||[],c=0;c
').prependTo(n),r.useFlex||d.addClass("clearfix")),d.css("height",(i?2:1)*r.headerHeight).toggleClass("kanban-header-has-parent",!!i);var o=d.children(".kanban-cols");o.css("left",e.$layout.laneNameWidth).children(".kanban-col").addClass("kanban-expired");for(var s=e.columns,l=e.$layout.columnsMap||{},c=null,u=null,h=0;h.kanban-col").addClass("kanban-expired"):o=a(['
','
','
','','',d.showCount?'':"","
","
",'
',"
","
"].join("")),s&&s.length?s.after(o):n.prepend(o),o.data("col",e).attr("data-type",e.type);var l=r.$layout.columnWidth;d.useFlex?o.css("flex",e.subs.length+" "+e.subs.length+" "+l*e.subs.length+"%"):o.css({width:l*e.subs.length+"%",left:e.$index*l+"%"});var c=o.children(".kanban-header-col");c.find(".title>.icon").attr("class","icon icon-"+(e.icon||""));var u=c.find(".title>.text").text(e.name).attr("title",e.name);if(e.color&&u.css("color",e.color),d.showCount){var h=void 0!==e.count?e.count:e.$cardsCount;d.showZeroCount||h||(h="");var p=c.find(".title>.count").text(h);d.onRenderCount&&d.onRenderCount(p,h,e,i)}d.onRenderHeaderCol&&d.onRenderHeaderCol(o,e,n,r)},t.prototype.renderHeaderCol=function(e,n,t,r,i){var d=this,o=d.options;if(e.parentType&&t){var s=n.children('.kanban-header-parent-col[data-id="'+t.id+'"]');n=s.children(".kanban-header-sub-cols")}var l=n.children('.kanban-header-col[data-id="'+e.id+'"]'),c=r?n.children('.kanban-header-col[data-id="'+r.id+'"]:not(.kanban-expired)'):null;l.length?l.removeClass("kanban-expired"):l=a(['
','
','','',o.showCount?'':"","
",'
',"
"].join("")),c&&c.length?c.after(l):n.prepend(l),l.data("col",e).attr("data-type",e.type);var u=t?100/t.subs.length:i.$layout.columnWidth;o.useFlex?l.css("flex","1 1 "+u+"%"):l.css({left:(t?e.$subIndex:e.$index)*u+"%",width:u+"%"}),l.find(".title>.icon").attr("class","icon icon-"+(e.icon||""));var h=l.find(".title>.text").text(e.name).attr("title",e.name);if(e.color&&h.css("color",e.color),o.showCount){var p=void 0!==e.count?e.count:e.$cardsCount;o.showZeroCount||p||(p="");var b=l.find(".title>.count").text(p);o.onRenderCount&&o.onRenderCount(b,p,e,d)}o.onRenderHeaderCol&&o.onRenderHeaderCol(l,e,n,i)},t.prototype.renderLane=function(e,t,r,i){var d=this,o=d.options;r=r||d.$.children('.kanban-board[data-id="'+e.kanban+'"]');var s=r.children('.kanban-lane[data-id="'+e.id+'"]');s.length?s.removeClass("kanban-expired"):(s=a('
').appendTo(r),n||s.addClass("clearfix"));var l=e.subLanes?e.subLanes.length:0;s.attr("data-index",e.$index).data("lane",e).toggleClass("has-sub-lane",l>0).css({height:e.$height||"auto"}),d.virtualizeRender(i,"lane",s,function(){if(!o.noLaneName){var n=s.children('.kanban-lane-name[data-id="'+e.id+'"]');n.length||(n=a('
').prependTo(s)),n.empty().css("width",o.laneNameWidth).attr("title",e.name).append(a('').text(e.name)),e.color&&n.css("background-color",e.color),o.onRenderLaneName&&o.onRenderLaneName(n,e,r,t,i)}s.children(".kanban-cols,.kanban-sub-lanes").addClass("kanban-expired");var l;l=e.subLanes?d.renderSubLanes(e,t,s,i):d.renderLaneCols(t,e.items||e.cards||{},s,e,i),o.useFlex||l.css("left",i.$layout.laneNameWidth),s.children(".kanban-expired").remove()},{lane:e,columns:t,kanban:i})},t.prototype.virtualizeRender=function(e,n,t,r,i){var d=this,o=d.virtualize,s=o?o[n]:null;return s?("function"==typeof s&&(s=s(i,t)),"number"==typeof s&&t.height(s),void t.virtualRender(a.extend({render:r},d.options.virtualRenderOptions))):r()},t.prototype.renderSubLanes=function(e,n,t,r){var i=this,d=t.children(".kanban-sub-lanes");d.length?d.removeClass("kanban-expired"):d=a('
').appendTo(t),d.children(".kanban-sub-lane").addClass("kanban-expired");for(var o=0;o
').appendTo(r),n||o.addClass("clearfix")),o.attr("data-index",d).data("lane",e).css({height:e.$height||"auto"}),o.children(".kanban-col").addClass("kanban-expired");var s=e.items||e.cards;s&&this.renderLaneCols(t,s,o,e,i),o.children(".kanban-expired").remove()},t.prototype.renderLaneCols=function(e,n,t,r,i){var d=this,o=t.children(".kanban-cols");o.length?o.removeClass("kanban-expired"):o=a('
').appendTo(t),o.children(".kanban-col").addClass("kanban-expired");for(var s=null,l=0;l0?n[e-1]:null;return d.$index=e,d.$col=a,d.$lane=t,i.renderCard(d,o,s,a,t,r)}})}else for(var c=0;c0?e[c-1]:null;u.$index=c,u.$col=a,u.$lane=t,i.renderCard(u,o,h,a,t,r)}o.css("padding",d.cardSpace/2).toggleClass("kanban-items-grid",s>1).attr("data-cards-per-row",s).data("cards",e),o.children(".kanban-expired").remove()},t.prototype.renderLaneCol=function(e,n,t){var r=this,i=r.options,d=n.children('.kanban-lane-col[data-id="'+e.id+'"]'),o=t?n.children('.kanban-lane-col[data-id="'+t.id+'"]:not(.kanban-expired)'):null;d.length?d.removeClass("kanban-expired"):(d=a(['
','
',"
"].join("")),r.options.readonly||d.append(['
','","
"].join("")),i.laneItemsClass&&d.find(".kanban-lane-items").addClass(i.laneItemsClass),i.laneColClass&&d.addClass(i.laneColClass)),o&&o.length?o.after(d):n.prepend(d),d.attr({"data-parent":e.parentType?e.parentType:null,"data-type":e.type}).data("col",e);var s=e.$kanbanData.$layout.columnWidth;return i.useFlex?d.css("flex","1 1 "+s+"%"):d.css({left:e.$index*s+"%",width:s+"%"}),d},t.prototype.renderCard=function(e,n,t,r,i,d){var o=this.options,s=n.children('.kanban-item[data-id="'+e.id+'"]'),l=t?n.children('.kanban-item[data-id="'+t.id+'"]:not(.kanban-expired)'):null;s.length?s.removeClass("kanban-expired"):(s=a('
'),o.wrapCard&&s.append('
')),l&&l.length?l.after(s):n.prepend(s);var c=r.cardsPerRow||i.cardsPerRow||d.cardsPerRow||o.cardsPerRow;s.data("item",e).css({padding:o.cardSpace/2,width:c>1?100/c+"%":""});var u=o.wrapCard?s.children(".kanban-card"):s;u.css("height",o.cardHeight);var h=o.cardRender||o.itemRender;if(h)h(e,u,r,i,d);else{var p=u.find(".title");p.length||(p=a('
').appendTo(u)),p.text(e.name||e.title)}return s},t.DEFAULTS={minColWidth:100,maxColHeight:400,minColHeight:90,minSubColHeight:40,subLaneSpace:2,laneNameWidth:20,headerHeight:32,cardHeight:40,cardSpace:10,cardsPerRow:1,wrapCard:!0,fluidBoardWidth:!0,addItemText:"添加条目",useFlex:!0,droppable:"auto",laneColClass:"",showCount:!0},a.fn.kanban=function(n){return this.each(function(){var r=a(this),i=r.data(e),d="object"==typeof n&&n;i||r.data(e,i=new t(this,d)),"string"==typeof n&&i[n]()})},t.NAME=e,a.fn.kanban.Constructor=t}(jQuery); \ No newline at end of file +!function(){"use strict";function e(e,a){return n&&!a?requestAnimationFrame(e):setTimeout(e,a||0)}function a(e){return n?cancelAnimationFrame(e):void clearTimeout(e)}var n="function"==typeof window.requestAnimationFrame;$.zui({asap:e,clearAsap:a})}(),function(e){"use strict";function a(a,n){"string"==typeof a&&(a=e(a)),a instanceof e&&(a=a[0]);var t=a.getBoundingClientRect(),r=window.innerHeight||document.documentElement.clientHeight,i=window.innerWidth||document.documentElement.clientWidth;if(n)return t.left>=0&&t.top>=0&&t.left+t.width<=i&&t.top+t.height<=r;var d=t.top<=r&&t.top+t.height>=0,o=t.left<=i&&t.left+t.width>=0;return d&&o}var n="zui.virtualRender",t=function(a,r){"function"==typeof r&&(r={render:r});var i=this;i.name=n,i.$=e(a),i.options=r=e.extend({trigger:"scroll resize"},t.DEFAULTS,this.$.data(),r),i.rendered=!1;var d=r.container;"function"==typeof d&&(d=d(i));var o=e(d?d:window);i.tryRender()||(i.$container=o,i.scrollListener=i.tryRender.bind(i),r.pendingClass&&i.$.addClass(r.pendingClass),o.on(r.trigger,i.scrollListener))};t.prototype.tryRender=function(){var n=this;return!(n.rendered||!a(n.$))&&(n.renderTaskID&&e.zui.clearAsap(n.renderTaskID),n.renderTaskID=e.zui.asap(function(){n.renderTaskID=null;var e=n.options.render(n.$);e!==!1&&(n.rendered=!0,n.destroy())},n.options.delay),!0)},t.prototype.destroy=function(){var a=this;a.renderTaskID&&e.zui.clearAsap(a.renderTaskID),a.scrollListener&&(a.$container.off(a.options.trigger,a.scrollListener),a.scrollListener=null);var t=a.options.pendingClass;t&&a.$.removeClass(t),a.$.removeData(n)},t.DEFAULTS={pendingClass:"virtual-pending"},e.fn.virtualRender=function(a){return this.each(function(){var r=e(this),i=r.data(n);if(i){if("string"==typeof a)return i[a]();i.destroy()}r.data(n,i=new t(this,a))})},e.zui.isElementInViewport=a}(jQuery),function(e){"use strict";var a="zui.virtuallist",n=function(t,r){"function"==typeof r&&(r={render:r});var i=this;i.name=a,i.$=e(t),i.options=r=e.extend({},n.DEFAULTS,this.$.data(),r),i.render(r.list,r.scrollTop);var d=0;i.$.on("scroll."+a,function(){var a=i.$.scrollTop();a!==i.scrollTop&&(i.scrollTop=a,d&&e.zui.clearAsap(d),d=e.zui.asap(function(){d=0,i.render()}))}),i.$.on("resize."+a,function(){d&&e.zui.clearAsap(d),d=e.zui.asap(function(){d=0,i.render()})})};n.prototype.render=function(a,n){var t=this;a?t.list=a:a=t.list,n&&e.extend(this.options,n);var r=t.scrollTop=t.$.scrollTop(),i=t.$,d=t.options.itemClassName,o=t.options.itemHeight,s=t.options.countPerRow,l=Number.parseFloat(i.css("padding-top"),10),c=Array.isArray(a),u="number"==typeof a?a:a.length,h=i.height(),p="virtual-list-item-expired",b=i.children(".virtual-list-holder-top"),v=i.children(".virtual-list-holder-bottom");b.length||(b=e('
').prependTo(i)),v.length||(v=e('
').appendTo(i)),i.children("."+d).addClass(p);var f=Math.max(0,s*Math.floor((r-l)/o)),m=Math.min(u,s*Math.ceil((r-l+h)/o));b.height(f*o/s);for(var g=f;g1&&(i._sortResult=e)}})).triggerHandler(a.event)}},drop:function(e){o.drop&&o.drop(e),r.onAction&&r.onAction("dropItem",e.element,e,i)},start:function(a){i.$.addClass("kanban-dragging"),l&&clearTimeout(l),l=setTimeout(function(){e(a.shadowElement).addClass("in"),l=0},50),o.start&&o.start(a)},always:function(e){i.$.removeClass("kanban-dragging"),l&&(clearTimeout(l),l=0),s&&(i._$sortItems.sortable("destroy").closest(".kanban-col").removeClass("kanban-col-sorting"),e.target&&e.target[0]===e.element.closest(".kanban-lane-col")[0]&&i._sortResult&&s.finish&&s.finish(i._sortResult)),o.always&&o.always(e)}});i.$.droppable(c)}r.onCreate&&r.onCreate(i)};t.prototype.setOptions=function(a){var t=this,r=e.extend({},t.options,{data:t.data},a);t.options=r,r.useFlex&&!n&&(r.useFlex=!1),t.$.toggleClass("no-flex",!r.useFlex).toggleClass("use-flex",!!r.useFlex);var i=!!e.fn.virtualRender&&r.virtualize;return i&&("object"!=typeof i&&(i={lane:!0}),t.virtualize=e.extend({},i)),t.data=r.data||[],t.render(t.data),r},t.prototype.render=function(e){var a=this;e&&(a.data=e),a.data&&!Array.isArray(a.data)&&(a.data=[a.data]);var n=a.options,t=a.data||[];n.beforeRender&&n.beforeRender(a,t),a.$.toggleClass("kanban-readonly",!!n.readonly).toggleClass("kanban-no-lane-name",!!n.noLaneName),a.$.children(".kanban-board").addClass("kanban-expired"),a.maxKanbanBoardWidth=0;for(var r=0;r1&&a.$.children(".kanban-board").css("min-width",a.maxKanbanBoardWidth),n.onRender&&n.onRender(a)},t.prototype.layoutKanban=function(e,a){for(var n=this,t=n.options,r=t.noLaneName?0:t.laneNameWidth,i=0,d={},o=!1,s=[],l=0;l0&&t.subLaneSpace&&(g.$height+=t.subLaneSpace)}}else for(var y=g.items||g.cards||{},C=0;C-1){var r=n.data[t];a=e.extend(r,a),n.data[t]=a}else n.data.push(a)}a.id||(a.id=e.zui.uuid());var i=a.id,d=n.options,o=n.$,s=o.children('.kanban-board[data-id="'+i+'"]');s.length?s.removeClass("kanban-expired"):s=e('
').appendTo(o),n.layoutKanban(a,s),n.renderKanbanHeader(a,s),s.children(".kanban-lane").addClass("kanban-expired");for(var l=a.lanes||[],c=null,u=0;u
').prependTo(n),r.useFlex||d.addClass("clearfix")),d.css("height",(i?2:1)*r.headerHeight).toggleClass("kanban-header-has-parent",!!i);var o=d.children(".kanban-cols");o.css("left",a.$layout.laneNameWidth).children(".kanban-col").addClass("kanban-expired");for(var s=a.columns,l=a.$layout.columnsMap||{},c=null,u=null,h=0;h.kanban-col").addClass("kanban-expired"):o=e(['
','
','
','','',d.showCount?'':"","
","
",'
',"
","
"].join("")),s&&s.length?s.after(o):n.prepend(o),o.data("col",a).attr("data-type",a.type);var l=r.$layout.columnWidth;d.useFlex?o.css("flex",a.subs.length+" "+a.subs.length+" "+l*a.subs.length+"%"):o.css({width:l*a.subs.length+"%",left:a.$index*l+"%"});var c=o.children(".kanban-header-col");c.find(".title>.icon").attr("class","icon icon-"+(a.icon||""));var u=c.find(".title>.text").text(a.name).attr("title",a.name);if(a.color&&u.css("color",a.color),d.showCount){var h=void 0!==a.count?a.count:a.$cardsCount;d.showZeroCount||h||(h="");var p=c.find(".title>.count").text(h);d.onRenderCount&&d.onRenderCount(p,h,a,i)}d.onRenderHeaderCol&&d.onRenderHeaderCol(o,a,n,r)},t.prototype.renderHeaderCol=function(a,n,t,r,i){var d=this,o=d.options;if(a.parentType&&t){var s=n.children('.kanban-header-parent-col[data-id="'+t.id+'"]');n=s.children(".kanban-header-sub-cols")}var l=n.children('.kanban-header-col[data-id="'+a.id+'"]'),c=r?n.children('.kanban-header-col[data-id="'+r.id+'"]:not(.kanban-expired)'):null;l.length?l.removeClass("kanban-expired"):l=e(['
','
','','',o.showCount?'':"","
",'
',"
"].join("")),c&&c.length?c.after(l):n.prepend(l),l.data("col",a).attr("data-type",a.type);var u=t?100/t.subs.length:i.$layout.columnWidth;o.useFlex?l.css("flex","1 1 "+u+"%"):l.css({left:(t?a.$subIndex:a.$index)*u+"%",width:u+"%"}),l.find(".title>.icon").attr("class","icon icon-"+(a.icon||""));var h=l.find(".title>.text").text(a.name).attr("title",a.name);if(a.color&&h.css("color",a.color),o.showCount){var p=void 0!==a.count?a.count:a.$cardsCount;o.showZeroCount||p||(p="");var b=l.find(".title>.count").text(p);o.onRenderCount&&o.onRenderCount(b,p,a,d)}o.onRenderHeaderCol&&o.onRenderHeaderCol(l,a,n,i)},t.prototype.renderLane=function(a,t,r,i,d){var o=this,s=o.options;i=i||o.$.children('.kanban-board[data-id="'+a.kanban+'"]');var l=i.children('.kanban-lane[data-id="'+a.id+'"]'),c=t?i.children('.kanban-lane[data-id="'+t.id+'"]:not(.kanban-expired)'):null;l.length?l.removeClass("kanban-expired"):(l=e('
'),n||l.addClass("clearfix")),c&&c.length?c.after(l):i.children(".kanban-header").after(l);var u=a.subLanes?a.subLanes.length:0;l.attr("data-index",a.$index).data("lane",a).toggleClass("has-sub-lane",u>0).css({height:a.$height||"auto"}),o.virtualizeRender(d,"lane",l,function(){if(!s.noLaneName){var n=l.children('.kanban-lane-name[data-id="'+a.id+'"]');n.length||(n=e('
').prependTo(l)),n.empty().css("width",s.laneNameWidth).attr("title",a.name).append(e('').text(a.name)),a.color&&n.css("background-color",a.color),s.onRenderLaneName&&s.onRenderLaneName(n,a,i,r,d)}l.children(".kanban-cols,.kanban-sub-lanes").addClass("kanban-expired");var t;t=a.subLanes?o.renderSubLanes(a,r,l,d):o.renderLaneCols(r,a.items||a.cards||{},l,a,d),s.useFlex||t.css("left",d.$layout.laneNameWidth),l.children(".kanban-expired").remove()},{lane:a,columns:r,kanban:d})},t.prototype.virtualizeRender=function(a,n,t,r,i){var d=this,o=d.virtualize,s=o?o[n]:null;return s?("function"==typeof s&&(s=s(i,t)),"number"==typeof s&&t.height(s),void t.virtualRender(e.extend({render:r},d.options.virtualRenderOptions))):r()},t.prototype.renderSubLanes=function(a,n,t,r){var i=this,d=t.children(".kanban-sub-lanes");d.length?d.removeClass("kanban-expired"):d=e('
').appendTo(t),d.children(".kanban-sub-lane").addClass("kanban-expired");for(var o=0;o
').appendTo(r),n||o.addClass("clearfix")),o.attr("data-index",d).data("lane",a).css({height:a.$height||"auto"}),o.children(".kanban-col").addClass("kanban-expired");var s=a.items||a.cards;s&&this.renderLaneCols(t,s,o,a,i),o.children(".kanban-expired").remove()},t.prototype.renderLaneCols=function(a,n,t,r,i){var d=this,o=t.children(".kanban-cols");o.length?o.removeClass("kanban-expired"):o=e('
').appendTo(t),o.children(".kanban-col").addClass("kanban-expired");for(var s=null,l=0;l0?n[a-1]:null;return d.$index=a,d.$col=e,d.$lane=t,i.renderCard(d,o,s,e,t,r)}})}else for(var c=0;c0?a[c-1]:null;u.$index=c,u.$col=e,u.$lane=t,i.renderCard(u,o,h,e,t,r)}o.css("padding",d.cardSpace/2).toggleClass("kanban-items-grid",s>1).attr("data-cards-per-row",s).data("cards",a),o.children(".kanban-expired").remove()},t.prototype.renderLaneCol=function(a,n,t){var r=this,i=r.options,d=n.children('.kanban-lane-col[data-id="'+a.id+'"]'),o=t?n.children('.kanban-lane-col[data-id="'+t.id+'"]:not(.kanban-expired)'):null;d.length?d.removeClass("kanban-expired"):(d=e(['
','
',"
"].join("")),r.options.readonly||d.append(['
','","
"].join("")),i.laneItemsClass&&d.find(".kanban-lane-items").addClass(i.laneItemsClass),i.laneColClass&&d.addClass(i.laneColClass)),o&&o.length?o.after(d):n.prepend(d),d.attr({"data-parent":a.parentType?a.parentType:null,"data-type":a.type}).data("col",a);var s=a.$kanbanData.$layout.columnWidth;return i.useFlex?d.css("flex","1 1 "+s+"%"):d.css({left:a.$index*s+"%",width:s+"%"}),d},t.prototype.renderCard=function(a,n,t,r,i,d){var o=this.options,s=n.children('.kanban-item[data-id="'+a.id+'"]'),l=t?n.children('.kanban-item[data-id="'+t.id+'"]:not(.kanban-expired)'):null;s.length?s.removeClass("kanban-expired"):(s=e('
'),o.wrapCard&&s.append('
')),l&&l.length?l.after(s):n.prepend(s);var c=r.cardsPerRow||i.cardsPerRow||d.cardsPerRow||o.cardsPerRow;s.data("item",a).css({padding:o.cardSpace/2,width:c>1?100/c+"%":""});var u=o.wrapCard?s.children(".kanban-card"):s;u.css("height",o.cardHeight);var h=o.cardRender||o.itemRender;if(h)h(a,u,r,i,d);else{var p=u.find(".title");p.length||(p=e('
').appendTo(u)),p.text(a.name||a.title)}return s},t.DEFAULTS={minColWidth:100,maxColHeight:400,minColHeight:90,minSubColHeight:40,subLaneSpace:2,laneNameWidth:20,headerHeight:32,cardHeight:40,cardSpace:10,cardsPerRow:1,wrapCard:!0,fluidBoardWidth:!0,addItemText:"添加条目",useFlex:!0,droppable:"auto",laneColClass:"",showCount:!0},e.fn.kanban=function(n){return this.each(function(){var r=e(this),i=r.data(a),d="object"==typeof n&&n;i||r.data(a,i=new t(this,d)),"string"==typeof n&&i[n]()})},t.NAME=a,e.fn.kanban.Constructor=t}(jQuery); \ No newline at end of file
execution->projectName;?> project, "class='form-control chosen' onchange='changeProject(this.value)' required");?>
execution->name;?>