From 1748362b411c54ea0382135521ffe382e47825a8 Mon Sep 17 00:00:00 2001 From: n2ref Date: Tue, 16 Apr 2024 23:17:15 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dist/coreui-table.min.css | 2 +- dist/coreui-table.min.css.map | 2 +- dist/coreui-table.min.js | 2 +- dist/coreui-table.min.js.map | 2 +- index.html | 4 ++++ 5 files changed, 8 insertions(+), 4 deletions(-) diff --git a/dist/coreui-table.min.css b/dist/coreui-table.min.css index cf879e0..29d7465 100644 --- a/dist/coreui-table.min.css +++ b/dist/coreui-table.min.css @@ -1,2 +1,2 @@ -.coreui-table>.coreui-table__container{--bs-bg-opacity: 1;background-color:#fff;border:var(--bs-border-width) solid #c4c8cb;border-radius:.25rem}.coreui-table>.coreui-table__container>.coreui-table__header{background-color:#fff;border-bottom:var(--bs-border-width) solid #c4c8cb;border-top-right-radius:.25rem;border-top-left-radius:.25rem}.coreui-table>.coreui-table__container>.coreui-table__wrapper{border-radius:.25rem}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table{min-height:55px}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tbody{border-color:#c4c8cb}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table.empty-tfoot>tbody>tr:last-child>td{border-bottom:0}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table.table-sm>tbody>tr>td{padding:.2rem .25rem}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>thead>tr>td{font-weight:600}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tbody>tr>td{font-size:14px}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>thead>tr>td,.coreui-table>.coreui-table__container>.coreui-table__wrapper>.coreui-table__header,.coreui-table>.coreui-table__container>.coreui-table__wrapper>.coreui-table__search .col-form-label{font-size:14px}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tfoot>tr>td,.coreui-table>.coreui-table__container>.coreui-table__wrapper>.coreui-table__footer{font-size:12px}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>thead{position:sticky;top:0;z-index:1}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tfoot{position:sticky;bottom:0;z-index:1}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>thead>tr>td::before,.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>thead>tr>td::after,.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tfoot>tr>td::before,.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tfoot>tr>td::after{content:"";position:absolute;left:0;width:100%;height:1px}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>thead>tr>td::before{top:0;box-shadow:0 -1px 0 #c4c8cb,0 0 0 #c4c8cb}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>thead>tr>td::after{bottom:0;box-shadow:0 1px 0 #c4c8cb,0 0 0 #c4c8cb}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table.table-bordered>thead>tr>td{border:1px solid #c4c8cb;background-color:#fff}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table.table-bordered>thead>tr>td .coreui-table__column-description{cursor:help}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>thead>tr:first-child,.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>thead>tr:first-child>td{border-top:none;background-color:#fff}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tbody>tr:first-child,.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tbody>tr:first-child>td{border-top:none}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tfoot>tr>td::before{top:0;box-shadow:0 -1px 0 #c4c8cb}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tfoot>tr>td::after{top:0;right:0;width:1px;height:100%;box-shadow:-1px 0px 0 0px #c4c8cb;z-index:1}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table.table-bordered>tfoot>tr>td{border:1px solid #c4c8cb;border-bottom:0}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tfoot tr:last-child,.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tfoot tr:last-child>td,.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tbody>tr:last-child,.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tbody>tr:last-child>td,.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tbody>tr:last-child>td{border-bottom:0}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>thead>tr>td,.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tfoot>tr>td{position:relative}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>thead>tr>td.coreui-table__fixed_left,.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tbody>tr>td.coreui-table__fixed_left{position:sticky;left:0}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>thead>tr>td.coreui-table__fixed_right,.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tbody>tr>td.coreui-table__fixed_right{position:sticky;right:0}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>thead>tr:last-child>td.coreui-table__fixed_left{z-index:2}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>thead>tr>td.coreui-table__fixed_left{box-shadow:1px 0 0 #c4c8cb,0 1px 0 #c4c8cb}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>thead>tr>td.coreui-table__sortable:hover{text-decoration:underline;cursor:pointer}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tbody>tr>td.coreui-table__fixed_left::after{content:"";position:absolute;right:0;top:0;height:100%;width:1px;box-shadow:1px 0 0 #c4c8cb,0 1px 0 #c4c8cb}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tbody>tr>td.coreui-table__fixed_right::before{content:"";position:absolute;left:0;top:0;height:100%;width:1px;box-shadow:-1px 0 0 #c4c8cb,0 1px 0 #c4c8cb}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table:not(.table-bordered)>tbody>tr>td.coreui-table__fixed_right::before{content:"";position:absolute;left:0;top:0;height:100%;width:1px;box-shadow:1px 0 0 #c4c8cb,0 1px 0 #c4c8cb}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tbody>tr>td.coreui_table__no-wrap{max-width:0;position:relative}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tbody>tr>td.coreui_table__no-wrap>div{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tbody>tr>td.coreui_table__no-wrap>div+i.toggle{display:none;width:15px;height:15px;cursor:pointer;font-size:10px;position:absolute;right:0;top:0;text-align:center;color:#ccc}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tbody>tr>td.coreui_table__no-wrap>div+i.toggle:hover{color:#444}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tbody>tr>td.coreui_table__no-wrap:hover>div+i.toggle{display:inline-block}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tbody>tr>td.coreui_table__no-wrap.shown>div{overflow:visible;white-space:normal}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>thead>tr>td:first-child,.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tbody>tr>td:first-child,.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tfoot>tr>td:first-child{border-left:none}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>thead>tr>td:last-child,.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tbody>tr>td:last-child,.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tfoot>tr>td:last-child{border-right:none}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>thead>tr>td,.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tbody>tr.coreui-table__record:not(.table-primary)>td{background-color:rgba(var(--bs-white-rgb), var(--bs-bg-opacity))}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tbody>tr>td>.form-switch{padding-left:0}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tbody>tr>td>.form-switch .form-check-input{margin-left:0}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tfoot>tr>td{background-color:#fff}.coreui-table .coreui-table__control .coreui-table__page_jump_container input{width:65px}.coreui-table .coreui-table-lock{z-index:2}.coreui-table .coreui-table-lock .coreui-table-message{width:200px}.coreui-table .coreui-table-lock .spinner-border{--bs-spinner-width: 1.5rem;--bs-spinner-height: 1.5rem}.coreui-table .coreui-table_pointer{cursor:pointer}.coreui-table .coreui-table__cursor_help{cursor:help} +.coreui-table>.coreui-table__container{--bs-bg-opacity: 1;background-color:#fff;border:var(--bs-border-width) solid #c4c8cb;border-radius:.25rem}.coreui-table>.coreui-table__container>.coreui-table__header{background-color:#fff;border-bottom:var(--bs-border-width) solid #c4c8cb;border-top-right-radius:.25rem;border-top-left-radius:.25rem}.coreui-table>.coreui-table__container>.coreui-table__wrapper{border-radius:.25rem}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table{min-height:55px}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tbody{border-color:#c4c8cb}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table.empty-tfoot>tbody>tr:last-child>td{border-bottom:0}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table.table-sm>tbody>tr>td{padding:.2rem .25rem}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>thead>tr>td{font-weight:600}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tbody>tr>td{font-size:14px}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>thead>tr>td,.coreui-table>.coreui-table__container>.coreui-table__wrapper>.coreui-table__header,.coreui-table>.coreui-table__container>.coreui-table__wrapper>.coreui-table__search .col-form-label{font-size:14px}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tfoot>tr>td,.coreui-table>.coreui-table__container>.coreui-table__wrapper>.coreui-table__footer{font-size:12px}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>thead{position:sticky;top:0;z-index:1}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tfoot{position:sticky;bottom:0;z-index:1}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>thead>tr>td::before,.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>thead>tr>td::after,.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tfoot>tr>td::before,.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tfoot>tr>td::after{content:"";position:absolute;left:0;width:100%;height:1px}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>thead>tr>td::before{top:0;box-shadow:0 -1px 0 #c4c8cb,0 0 0 #c4c8cb}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>thead>tr>td::after{bottom:0;box-shadow:0 1px 0 #c4c8cb,0 0 0 #c4c8cb}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table.table-bordered>thead>tr>td{border:1px solid #c4c8cb;background-color:#fff}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table.table-bordered>thead>tr>td .coreui-table__column-description{cursor:help}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>thead>tr:first-child,.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>thead>tr:first-child>td{border-top:none;background-color:#fff}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tbody>tr:first-child,.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tbody>tr:first-child>td{border-top:none}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tfoot>tr>td::before{top:0;box-shadow:0 -1px 0 #c4c8cb}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tfoot>tr>td::after{top:0;right:0;width:1px;height:100%;box-shadow:-1px 0px 0 0px #c4c8cb;z-index:1}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table.table-bordered>tfoot>tr>td{border:1px solid #c4c8cb;border-bottom:0}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tfoot tr:last-child,.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tfoot tr:last-child>td,.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tbody>tr:last-child,.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tbody>tr:last-child>td,.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tbody>tr:last-child>td{border-bottom:0}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>thead>tr>td,.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tfoot>tr>td{position:relative}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>thead>tr>td.coreui-table__fixed_left,.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tbody>tr>td.coreui-table__fixed_left{position:sticky;left:0}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>thead>tr>td.coreui-table__fixed_right,.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tbody>tr>td.coreui-table__fixed_right{position:sticky;right:0}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>thead>tr:last-child>td.coreui-table__fixed_left{z-index:2}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>thead>tr>td.coreui-table__fixed_left{box-shadow:1px 0 0 #c4c8cb,0 1px 0 #c4c8cb}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>thead>tr>td.coreui-table__sortable:hover{text-decoration:underline;cursor:pointer}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tbody>tr>td.coreui-table__fixed_left::after{content:"";position:absolute;right:0;top:0;height:100%;width:1px;box-shadow:1px 0 0 #c4c8cb,0 1px 0 #c4c8cb}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tbody>tr>td.coreui-table__fixed_right::before{content:"";position:absolute;left:0;top:0;height:100%;width:1px;box-shadow:-1px 0 0 #c4c8cb,0 1px 0 #c4c8cb}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table:not(.table-bordered)>tbody>tr>td.coreui-table__fixed_right::before{content:"";position:absolute;left:0;top:0;height:100%;width:1px;box-shadow:1px 0 0 #c4c8cb,0 1px 0 #c4c8cb}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tbody>tr>td.coreui_table__no-wrap{max-width:0;position:relative}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tbody>tr>td.coreui_table__no-wrap>div{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tbody>tr>td.coreui_table__no-wrap>div+i.toggle{display:none;width:15px;height:15px;cursor:pointer;font-size:10px;position:absolute;right:0;top:0;text-align:center;color:#ccc}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tbody>tr>td.coreui_table__no-wrap>div+i.toggle:hover{color:#444}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tbody>tr>td.coreui_table__no-wrap:hover>div+i.toggle{display:inline-block}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tbody>tr>td.coreui_table__no-wrap.shown>div{overflow:visible;white-space:normal}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>thead>tr>td:first-child,.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tbody>tr>td:first-child,.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tfoot>tr>td:first-child{border-left:none}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>thead>tr>td:last-child,.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tbody>tr>td:last-child,.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tfoot>tr>td:last-child{border-right:none}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>thead>tr>td,.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tbody>tr.coreui-table__record:not(.table-primary)>td{background-color:rgba(var(--bs-white-rgb), var(--bs-bg-opacity))}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tbody>tr>td>.form-switch{padding-left:0}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tbody>tr>td>.form-switch .form-check-input{margin-left:0}.coreui-table>.coreui-table__container>.coreui-table__wrapper>table>tfoot>tr>td{background-color:#fff}.coreui-table.coreui-table__no_border .coreui-table__container{border:none}.coreui-table.coreui-table__no_border>.coreui-table__container>.coreui-table__wrapper>table>thead>tr>td::before{box-shadow:none}.coreui-table .coreui-table__control .coreui-table__page_jump_container input{width:65px}.coreui-table .coreui-table-lock{z-index:2}.coreui-table .coreui-table-lock .coreui-table-message{width:200px}.coreui-table .coreui-table-lock .spinner-border{--bs-spinner-width: 1.5rem;--bs-spinner-height: 1.5rem}.coreui-table .coreui-table_pointer{cursor:pointer}.coreui-table .coreui-table__cursor_help{cursor:help} /*# sourceMappingURL=coreui-table.min.css.map */ diff --git a/dist/coreui-table.min.css.map b/dist/coreui-table.min.css.map index e253803..b4de6d8 100644 --- a/dist/coreui-table.min.css.map +++ b/dist/coreui-table.min.css.map @@ -1 +1 @@ -{"version":3,"sources":["coreui.table.scss","vars.scss"],"names":[],"mappings":"AAEI,uCACI,mBACA,iBCFgB,KDGhB,4CACA,cCIqB,ODDzB,6DACI,iBCTgB,KDUhB,mDACA,wBCFqB,ODGrB,uBCHqB,ODMzB,8DACI,cCPqB,ODWrB,oEACI,gBAEJ,0EACI,aChBgB,QDkBpB,uGACI,gBAEJ,yFACI,qBAEJ,gFACI,YCrBe,IDuBnB,gFACI,UCtBa,KDwBjB,wQAGI,UC3Ba,KD6BjB,oKAEI,UC7BoB,KDgCxB,0EACI,gBACA,MACA,UAEJ,0EACI,gBACA,SACA,UAEJ,8VAII,WACA,kBACA,OACA,WACA,WAIJ,wFACI,MACA,0CAEJ,uFACI,SACA,yCAEJ,+FACI,yBACA,iBChFY,KDkFZ,iIACI,YAGR,qLAEI,gBACA,iBCzFY,KD2FhB,qLAEI,gBAIJ,wFACI,MACA,4BAEJ,uFACI,MACA,QACA,UACA,YACA,kCACA,UAEJ,+FACI,yBACA,gBAEJ,icAKI,gBAGJ,gKAEI,kBAEJ,kNAEI,gBACA,OAEJ,oNAEI,gBACA,QAEJ,oHACI,UAEJ,yGACI,2CAEJ,6GACI,0BACA,eAEJ,gHACI,WACA,kBACA,QACA,MACA,YACA,UACA,2CAEJ,kHACI,WACA,kBACA,OACA,MACA,YACA,UACA,4CAEJ,uIACI,WACA,kBACA,OACA,MACA,YACA,UACA,2CAEJ,sGACI,YACA,kBAEA,0GACI,gBACA,mBACA,uBAEA,mHACI,aACA,WACA,YACA,eACA,eACA,kBACA,QACA,MACA,kBACA,WAEJ,yHACI,WAGR,yHACI,qBAIA,gHACI,iBACA,mBAKZ,oRAGI,iBAEJ,iRAGI,kBAGJ,yMAEI,iEAEJ,6FACI,eAEJ,+GACI,cAGA,gFACI,iBCtOQ,KD6OZ,8EACI,WAKZ,iCACI,UAEA,uDACI,YAEJ,iDACI,2BACA,4BAIR,oCACI,eAGJ,yCACI","file":"coreui-table.min.css","sourcesContent":["\r\n.coreui-table {\r\n > .coreui-table__container {\r\n --bs-bg-opacity: 1;\r\n background-color: $coreui-table-tbody-bg;\r\n border: var(--bs-border-width) solid $coreui-table-border-color;\r\n border-radius: $coreui-table-border-radius;\r\n }\r\n\r\n > .coreui-table__container > .coreui-table__header {\r\n background-color: $coreui-table-thead-bg;\r\n border-bottom: var(--bs-border-width) solid $coreui-table-border-color;\r\n border-top-right-radius: $coreui-table-border-radius;\r\n border-top-left-radius: $coreui-table-border-radius;\r\n }\r\n\r\n > .coreui-table__container > .coreui-table__wrapper {\r\n border-radius: $coreui-table-border-radius;\r\n }\r\n\r\n > .coreui-table__container > .coreui-table__wrapper > {\r\n table {\r\n min-height: 55px;\r\n }\r\n table > tbody {\r\n border-color: $coreui-table-border-color;\r\n }\r\n table.empty-tfoot > tbody > tr:last-child > td {\r\n border-bottom: 0;\r\n }\r\n table.table-sm > tbody > tr > td {\r\n padding: 0.2rem 0.25rem;\r\n }\r\n table > thead > tr > td {\r\n font-weight: $coreui-table-font-weight;\r\n }\r\n table > tbody > tr > td {\r\n font-size: $coreui-table-font-size;\r\n }\r\n table > thead > tr > td,\r\n .coreui-table__header,\r\n .coreui-table__search .col-form-label {\r\n font-size: $coreui-table-font-size-header;\r\n }\r\n table > tfoot > tr > td,\r\n .coreui-table__footer {\r\n font-size: $coreui-table-font-size-footer;\r\n }\r\n\r\n table > thead {\r\n position: sticky;\r\n top: 0;\r\n z-index: 1;\r\n }\r\n table > tfoot {\r\n position: sticky;\r\n bottom: 0;\r\n z-index: 1;\r\n }\r\n table > thead > tr > td::before,\r\n table > thead > tr > td::after,\r\n table > tfoot > tr > td::before,\r\n table > tfoot > tr > td::after {\r\n content: '';\r\n position: absolute;\r\n left: 0;\r\n width: 100%;\r\n height: 1px;\r\n }\r\n\r\n\r\n table > thead > tr > td::before {\r\n top: 0;\r\n box-shadow: 0 -1px 0 $coreui-table-border-color, 0 0 0 $coreui-table-border-color;\r\n }\r\n table > thead > tr > td::after {\r\n bottom: 0;\r\n box-shadow: 0 1px 0 $coreui-table-border-color, 0 0 0 $coreui-table-border-color;\r\n }\r\n table.table-bordered > thead > tr > td {\r\n border: 1px solid $coreui-table-border-color;\r\n background-color: $coreui-table-thead-bg;\r\n\r\n .coreui-table__column-description {\r\n cursor: help;\r\n }\r\n }\r\n table > thead > tr:first-child,\r\n table > thead > tr:first-child > td {\r\n border-top: none;\r\n background-color: $coreui-table-thead-bg;\r\n }\r\n table > tbody > tr:first-child,\r\n table > tbody > tr:first-child > td {\r\n border-top: none;\r\n }\r\n\r\n\r\n table > tfoot > tr > td::before {\r\n top: 0;\r\n box-shadow: 0 -1px 0 $coreui-table-border-color;\r\n }\r\n table > tfoot > tr > td::after {\r\n top: 0;\r\n right: 0;\r\n width: 1px;\r\n height: 100%;\r\n box-shadow: -1px 0px 0 0px #c4c8cb;\r\n z-index: 1;\r\n }\r\n table.table-bordered > tfoot > tr > td {\r\n border: 1px solid $coreui-table-border-color;\r\n border-bottom: 0;\r\n }\r\n table > tfoot tr:last-child,\r\n table > tfoot tr:last-child > td,\r\n table > tbody > tr:last-child,\r\n table > tbody > tr:last-child > td,\r\n table > tbody > tr:last-child > td {\r\n border-bottom: 0;\r\n }\r\n\r\n table > thead > tr > td,\r\n table > tfoot > tr > td {\r\n position: relative;\r\n }\r\n table > thead > tr > td.coreui-table__fixed_left,\r\n table > tbody > tr > td.coreui-table__fixed_left {\r\n position: sticky;\r\n left: 0;\r\n }\r\n table > thead > tr > td.coreui-table__fixed_right,\r\n table > tbody > tr > td.coreui-table__fixed_right {\r\n position: sticky;\r\n right: 0;\r\n }\r\n table > thead > tr:last-child > td.coreui-table__fixed_left {\r\n z-index: 2;\r\n }\r\n table > thead > tr > td.coreui-table__fixed_left {\r\n box-shadow: 1px 0 0 $coreui-table-border-color, 0 1px 0 $coreui-table-border-color;\r\n }\r\n table > thead > tr > td.coreui-table__sortable:hover {\r\n text-decoration: underline;\r\n cursor: pointer;\r\n }\r\n table > tbody > tr > td.coreui-table__fixed_left::after {\r\n content: '';\r\n position: absolute;\r\n right: 0;\r\n top: 0;\r\n height: 100%;\r\n width: 1px;\r\n box-shadow: 1px 0 0 $coreui-table-border-color, 0 1px 0 $coreui-table-border-color;\r\n }\r\n table > tbody > tr > td.coreui-table__fixed_right::before {\r\n content: '';\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n height: 100%;\r\n width: 1px;\r\n box-shadow: -1px 0 0 $coreui-table-border-color, 0 1px 0 $coreui-table-border-color;\r\n }\r\n table:not(.table-bordered) > tbody > tr > td.coreui-table__fixed_right::before {\r\n content: '';\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n height: 100%;\r\n width: 1px;\r\n box-shadow: 1px 0 0 $coreui-table-border-color, 0 1px 0 $coreui-table-border-color;\r\n }\r\n table > tbody > tr > td.coreui_table__no-wrap {\r\n max-width: 0;\r\n position: relative;\r\n\r\n > div {\r\n overflow: hidden;\r\n white-space: nowrap;\r\n text-overflow: ellipsis;\r\n\r\n + i.toggle {\r\n display: none;\r\n width: 15px;\r\n height: 15px;\r\n cursor: pointer;\r\n font-size: 10px;\r\n position: absolute;\r\n right: 0;\r\n top: 0;\r\n text-align: center;\r\n color: #ccc;\r\n }\r\n + i.toggle:hover {\r\n color: #444;\r\n }\r\n }\r\n &:hover > div + i.toggle {\r\n display: inline-block;\r\n }\r\n\r\n &.shown {\r\n > div {\r\n overflow: visible;\r\n white-space: normal;\r\n }\r\n }\r\n }\r\n\r\n table > thead > tr > td:first-child,\r\n table > tbody > tr > td:first-child,\r\n table > tfoot > tr > td:first-child {\r\n border-left: none;\r\n }\r\n table > thead > tr > td:last-child,\r\n table > tbody > tr > td:last-child,\r\n table > tfoot > tr > td:last-child {\r\n border-right: none;\r\n }\r\n\r\n table > thead > tr > td,\r\n table > tbody > tr.coreui-table__record:not(.table-primary) > td {\r\n background-color: rgba(var(--bs-white-rgb),var(--bs-bg-opacity));\r\n }\r\n table > tbody > tr > td > .form-switch {\r\n padding-left: 0;\r\n }\r\n table > tbody > tr > td > .form-switch .form-check-input {\r\n margin-left: 0;\r\n }\r\n table > tfoot {\r\n > tr > td {\r\n background-color: $coreui-table-tfoot-bg;\r\n }\r\n }\r\n }\r\n\r\n .coreui-table__control {\r\n .coreui-table__page_jump_container {\r\n input {\r\n width: 65px;\r\n }\r\n }\r\n }\r\n\r\n .coreui-table-lock {\r\n z-index: 2;\r\n\r\n .coreui-table-message {\r\n width: 200px;\r\n }\r\n .spinner-border {\r\n --bs-spinner-width: 1.5rem;\r\n --bs-spinner-height: 1.5rem;\r\n }\r\n }\r\n\r\n .coreui-table_pointer {\r\n cursor: pointer;\r\n }\r\n\r\n .coreui-table__cursor_help {\r\n cursor: help;\r\n }\r\n}\r\n\r\n\r\n\r\n","\r\n$coreui-table-thead-bg: #FFF;\r\n$coreui-table-tbody-bg: #FFF;\r\n$coreui-table-tfoot-bg: #FFF;\r\n\r\n$coreui-table-thead-color: #212529;\r\n$coreui-table-tbody-color: #212529;\r\n$coreui-table-tfoot-color: #212529;\r\n\r\n$coreui-table-border-color: #c4c8cb;\r\n$coreui-table-border-radius: 0.25rem;\r\n\r\n\r\n$coreui-table-font-weight: 600;\r\n\r\n$coreui-table-font-size: 14px;\r\n$coreui-table-font-size-header: $coreui-table-font-size;\r\n$coreui-table-font-size-footer: 12px;\r\n\r\n\r\n$coreui-table-control-padding-x: 5px;\r\n$coreui-table-control-padding-y: 2px;\r\n\r\n$coreui-table-control-padding-header-x: $coreui-table-control-padding-x;\r\n$coreui-table-control-padding-header-y: $coreui-table-control-padding-y;\r\n\r\n$coreui-table-control-padding-footer-x: $coreui-table-control-padding-x;\r\n$coreui-table-control-padding-footer-y: $coreui-table-control-padding-y;\r\n"]} \ No newline at end of file +{"version":3,"sources":["coreui.table.scss","vars.scss"],"names":[],"mappings":"AAEI,uCACI,mBACA,iBCFgB,KDGhB,4CACA,cCIqB,ODDzB,6DACI,iBCTgB,KDUhB,mDACA,wBCFqB,ODGrB,uBCHqB,ODMzB,8DACI,cCPqB,ODWrB,oEACI,gBAEJ,0EACI,aChBgB,QDkBpB,uGACI,gBAEJ,yFACI,qBAEJ,gFACI,YCrBe,IDuBnB,gFACI,UCtBa,KDwBjB,wQAGI,UC3Ba,KD6BjB,oKAEI,UC7BoB,KDgCxB,0EACI,gBACA,MACA,UAEJ,0EACI,gBACA,SACA,UAEJ,8VAII,WACA,kBACA,OACA,WACA,WAIJ,wFACI,MACA,0CAEJ,uFACI,SACA,yCAEJ,+FACI,yBACA,iBChFY,KDkFZ,iIACI,YAGR,qLAEI,gBACA,iBCzFY,KD2FhB,qLAEI,gBAIJ,wFACI,MACA,4BAEJ,uFACI,MACA,QACA,UACA,YACA,kCACA,UAEJ,+FACI,yBACA,gBAEJ,icAKI,gBAGJ,gKAEI,kBAEJ,kNAEI,gBACA,OAEJ,oNAEI,gBACA,QAEJ,oHACI,UAEJ,yGACI,2CAEJ,6GACI,0BACA,eAEJ,gHACI,WACA,kBACA,QACA,MACA,YACA,UACA,2CAEJ,kHACI,WACA,kBACA,OACA,MACA,YACA,UACA,4CAEJ,uIACI,WACA,kBACA,OACA,MACA,YACA,UACA,2CAEJ,sGACI,YACA,kBAEA,0GACI,gBACA,mBACA,uBAEA,mHACI,aACA,WACA,YACA,eACA,eACA,kBACA,QACA,MACA,kBACA,WAEJ,yHACI,WAGR,yHACI,qBAIA,gHACI,iBACA,mBAKZ,oRAGI,iBAEJ,iRAGI,kBAGJ,yMAEI,iEAEJ,6FACI,eAEJ,+GACI,cAGA,gFACI,iBCtOQ,KD6OhB,+DACI,YAGJ,gHACI,gBAMA,8EACI,WAKZ,iCACI,UAEA,uDACI,YAEJ,iDACI,2BACA,4BAIR,oCACI,eAGJ,yCACI","file":"coreui-table.min.css","sourcesContent":["\r\n.coreui-table {\r\n > .coreui-table__container {\r\n --bs-bg-opacity: 1;\r\n background-color: $coreui-table-tbody-bg;\r\n border: var(--bs-border-width) solid $coreui-table-border-color;\r\n border-radius: $coreui-table-border-radius;\r\n }\r\n\r\n > .coreui-table__container > .coreui-table__header {\r\n background-color: $coreui-table-thead-bg;\r\n border-bottom: var(--bs-border-width) solid $coreui-table-border-color;\r\n border-top-right-radius: $coreui-table-border-radius;\r\n border-top-left-radius: $coreui-table-border-radius;\r\n }\r\n\r\n > .coreui-table__container > .coreui-table__wrapper {\r\n border-radius: $coreui-table-border-radius;\r\n }\r\n\r\n > .coreui-table__container > .coreui-table__wrapper > {\r\n table {\r\n min-height: 55px;\r\n }\r\n table > tbody {\r\n border-color: $coreui-table-border-color;\r\n }\r\n table.empty-tfoot > tbody > tr:last-child > td {\r\n border-bottom: 0;\r\n }\r\n table.table-sm > tbody > tr > td {\r\n padding: 0.2rem 0.25rem;\r\n }\r\n table > thead > tr > td {\r\n font-weight: $coreui-table-font-weight;\r\n }\r\n table > tbody > tr > td {\r\n font-size: $coreui-table-font-size;\r\n }\r\n table > thead > tr > td,\r\n .coreui-table__header,\r\n .coreui-table__search .col-form-label {\r\n font-size: $coreui-table-font-size-header;\r\n }\r\n table > tfoot > tr > td,\r\n .coreui-table__footer {\r\n font-size: $coreui-table-font-size-footer;\r\n }\r\n\r\n table > thead {\r\n position: sticky;\r\n top: 0;\r\n z-index: 1;\r\n }\r\n table > tfoot {\r\n position: sticky;\r\n bottom: 0;\r\n z-index: 1;\r\n }\r\n table > thead > tr > td::before,\r\n table > thead > tr > td::after,\r\n table > tfoot > tr > td::before,\r\n table > tfoot > tr > td::after {\r\n content: \"\";\r\n position: absolute;\r\n left: 0;\r\n width: 100%;\r\n height: 1px;\r\n }\r\n\r\n\r\n table > thead > tr > td::before {\r\n top: 0;\r\n box-shadow: 0 -1px 0 $coreui-table-border-color, 0 0 0 $coreui-table-border-color;\r\n }\r\n table > thead > tr > td::after {\r\n bottom: 0;\r\n box-shadow: 0 1px 0 $coreui-table-border-color, 0 0 0 $coreui-table-border-color;\r\n }\r\n table.table-bordered > thead > tr > td {\r\n border: 1px solid $coreui-table-border-color;\r\n background-color: $coreui-table-thead-bg;\r\n\r\n .coreui-table__column-description {\r\n cursor: help;\r\n }\r\n }\r\n table > thead > tr:first-child,\r\n table > thead > tr:first-child > td {\r\n border-top: none;\r\n background-color: $coreui-table-thead-bg;\r\n }\r\n table > tbody > tr:first-child,\r\n table > tbody > tr:first-child > td {\r\n border-top: none;\r\n }\r\n\r\n\r\n table > tfoot > tr > td::before {\r\n top: 0;\r\n box-shadow: 0 -1px 0 $coreui-table-border-color;\r\n }\r\n table > tfoot > tr > td::after {\r\n top: 0;\r\n right: 0;\r\n width: 1px;\r\n height: 100%;\r\n box-shadow: -1px 0px 0 0px #c4c8cb;\r\n z-index: 1;\r\n }\r\n table.table-bordered > tfoot > tr > td {\r\n border: 1px solid $coreui-table-border-color;\r\n border-bottom: 0;\r\n }\r\n table > tfoot tr:last-child,\r\n table > tfoot tr:last-child > td,\r\n table > tbody > tr:last-child,\r\n table > tbody > tr:last-child > td,\r\n table > tbody > tr:last-child > td {\r\n border-bottom: 0;\r\n }\r\n\r\n table > thead > tr > td,\r\n table > tfoot > tr > td {\r\n position: relative;\r\n }\r\n table > thead > tr > td.coreui-table__fixed_left,\r\n table > tbody > tr > td.coreui-table__fixed_left {\r\n position: sticky;\r\n left: 0;\r\n }\r\n table > thead > tr > td.coreui-table__fixed_right,\r\n table > tbody > tr > td.coreui-table__fixed_right {\r\n position: sticky;\r\n right: 0;\r\n }\r\n table > thead > tr:last-child > td.coreui-table__fixed_left {\r\n z-index: 2;\r\n }\r\n table > thead > tr > td.coreui-table__fixed_left {\r\n box-shadow: 1px 0 0 $coreui-table-border-color, 0 1px 0 $coreui-table-border-color;\r\n }\r\n table > thead > tr > td.coreui-table__sortable:hover {\r\n text-decoration: underline;\r\n cursor: pointer;\r\n }\r\n table > tbody > tr > td.coreui-table__fixed_left::after {\r\n content: \"\";\r\n position: absolute;\r\n right: 0;\r\n top: 0;\r\n height: 100%;\r\n width: 1px;\r\n box-shadow: 1px 0 0 $coreui-table-border-color, 0 1px 0 $coreui-table-border-color;\r\n }\r\n table > tbody > tr > td.coreui-table__fixed_right::before {\r\n content: \"\";\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n height: 100%;\r\n width: 1px;\r\n box-shadow: -1px 0 0 $coreui-table-border-color, 0 1px 0 $coreui-table-border-color;\r\n }\r\n table:not(.table-bordered) > tbody > tr > td.coreui-table__fixed_right::before {\r\n content: \"\";\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n height: 100%;\r\n width: 1px;\r\n box-shadow: 1px 0 0 $coreui-table-border-color, 0 1px 0 $coreui-table-border-color;\r\n }\r\n table > tbody > tr > td.coreui_table__no-wrap {\r\n max-width: 0;\r\n position: relative;\r\n\r\n > div {\r\n overflow: hidden;\r\n white-space: nowrap;\r\n text-overflow: ellipsis;\r\n\r\n + i.toggle {\r\n display: none;\r\n width: 15px;\r\n height: 15px;\r\n cursor: pointer;\r\n font-size: 10px;\r\n position: absolute;\r\n right: 0;\r\n top: 0;\r\n text-align: center;\r\n color: #ccc;\r\n }\r\n + i.toggle:hover {\r\n color: #444;\r\n }\r\n }\r\n &:hover > div + i.toggle {\r\n display: inline-block;\r\n }\r\n\r\n &.shown {\r\n > div {\r\n overflow: visible;\r\n white-space: normal;\r\n }\r\n }\r\n }\r\n\r\n table > thead > tr > td:first-child,\r\n table > tbody > tr > td:first-child,\r\n table > tfoot > tr > td:first-child {\r\n border-left: none;\r\n }\r\n table > thead > tr > td:last-child,\r\n table > tbody > tr > td:last-child,\r\n table > tfoot > tr > td:last-child {\r\n border-right: none;\r\n }\r\n\r\n table > thead > tr > td,\r\n table > tbody > tr.coreui-table__record:not(.table-primary) > td {\r\n background-color: rgba(var(--bs-white-rgb),var(--bs-bg-opacity));\r\n }\r\n table > tbody > tr > td > .form-switch {\r\n padding-left: 0;\r\n }\r\n table > tbody > tr > td > .form-switch .form-check-input {\r\n margin-left: 0;\r\n }\r\n table > tfoot {\r\n > tr > td {\r\n background-color: $coreui-table-tfoot-bg;\r\n }\r\n }\r\n }\r\n\r\n\r\n &.coreui-table__no_border {\r\n .coreui-table__container {\r\n border: none;\r\n }\r\n\r\n > .coreui-table__container > .coreui-table__wrapper > table > thead > tr > td::before {\r\n box-shadow: none;\r\n }\r\n }\r\n\r\n .coreui-table__control {\r\n .coreui-table__page_jump_container {\r\n input {\r\n width: 65px;\r\n }\r\n }\r\n }\r\n\r\n .coreui-table-lock {\r\n z-index: 2;\r\n\r\n .coreui-table-message {\r\n width: 200px;\r\n }\r\n .spinner-border {\r\n --bs-spinner-width: 1.5rem;\r\n --bs-spinner-height: 1.5rem;\r\n }\r\n }\r\n\r\n .coreui-table_pointer {\r\n cursor: pointer;\r\n }\r\n\r\n .coreui-table__cursor_help {\r\n cursor: help;\r\n }\r\n}\r\n\r\n\r\n\r\n","\r\n$coreui-table-thead-bg: #FFF;\r\n$coreui-table-tbody-bg: #FFF;\r\n$coreui-table-tfoot-bg: #FFF;\r\n\r\n$coreui-table-thead-color: #212529;\r\n$coreui-table-tbody-color: #212529;\r\n$coreui-table-tfoot-color: #212529;\r\n\r\n$coreui-table-border-color: #c4c8cb;\r\n$coreui-table-border-radius: 0.25rem;\r\n\r\n\r\n$coreui-table-font-weight: 600;\r\n\r\n$coreui-table-font-size: 14px;\r\n$coreui-table-font-size-header: $coreui-table-font-size;\r\n$coreui-table-font-size-footer: 12px;\r\n\r\n\r\n$coreui-table-control-padding-x: 5px;\r\n$coreui-table-control-padding-y: 2px;\r\n\r\n$coreui-table-control-padding-header-x: $coreui-table-control-padding-x;\r\n$coreui-table-control-padding-header-y: $coreui-table-control-padding-y;\r\n\r\n$coreui-table-control-padding-footer-x: $coreui-table-control-padding-x;\r\n$coreui-table-control-padding-footer-y: $coreui-table-control-padding-y;\r\n"]} \ No newline at end of file diff --git a/dist/coreui-table.min.js b/dist/coreui-table.min.js index e640c03..3a509ba 100644 --- a/dist/coreui-table.min.js +++ b/dist/coreui-table.min.js @@ -1,2 +1,2 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t.CoreUI=t.CoreUI||{},t.CoreUI.table=e())}(this,function(){"use strict";function _(t){return(_="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}!function(t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).ejs=t()}(function(){return function i(o,s,r){function l(e,t){if(!s[e]){if(!o[e]){var n="function"==typeof require&&require;if(!t&&n)return n(e,!0);if(a)return a(e,!0);throw(t=new Error("Cannot find module '"+e+"'")).code="MODULE_NOT_FOUND",t}n=s[e]={exports:{}},o[e][0].call(n.exports,function(t){return l(o[e][1][t]||t)},n,n.exports,i,o,s,r)}return s[e].exports}for(var a="function"==typeof require&&require,t=0;t> ":" ")+e+"| "+t}).join("\n");throw t.path=o,t.message=(o||"ejs")+":"+i+"\n"+n+"\n\n"+t.message,t}function b(t){return t.replace(/;(\s*$)/,"$1")}function y(t,e){e=e||u.createNullProtoObjWherePossible();var n=u.createNullProtoObjWherePossible();this.templateText=t,this.mode=null,this.truncate=!1,this.currentLine=1,this.source="",n.client=e.client||!1,n.escapeFunction=e.escape||e.escapeFunction||u.escapeXML,n.compileDebug=!1!==e.compileDebug,n.debug=!!e.debug,n.filename=e.filename,n.openDelimiter=e.openDelimiter||a.openDelimiter||"<",n.closeDelimiter=e.closeDelimiter||a.closeDelimiter||">",n.delimiter=e.delimiter||a.delimiter||"%",n.strict=e.strict||!1,n.context=e.context,n.cache=e.cache||!1,n.rmWhitespace=e.rmWhitespace,n.root=e.root,n.includer=e.includer,n.outputFunctionName=e.outputFunctionName,n.localsName=e.localsName||a.localsName||"locals",n.views=e.views,n.async=e.async,n.destructuredLocals=e.destructuredLocals,n.legacyInclude=void 0===e.legacyInclude||!!e.legacyInclude,n.strict?n._with=!1:n._with=void 0===e._with||e._with,this.opts=n,this.regex=this.createRegex()}a.cache=u.cache,a.fileLoader=s.readFileSync,a.localsName="locals",a.promiseImpl=new Function("return this;")().Promise,a.resolveInclude=function(t,e,n){var i=h.dirname,o=h.extname,n=(0,h.resolve)(n?e:i(e),t);return o(t)||(n+=".ejs"),n},a.compile=function(t,e){return e&&e.scope&&(n||(console.warn("`scope` option is deprecated and will be removed in EJS 3"),n=!0),e.context||(e.context=e.scope),delete e.scope),new y(t,e).compile()},a.render=function(t,e,n){e=e||u.createNullProtoObjWherePossible(),n=n||u.createNullProtoObjWherePossible();return 2==arguments.length&&u.shallowCopyFromList(n,e,i),d(n,t)(e)},a.renderFile=function(){var t,e,n,i=Array.prototype.slice.call(arguments),o=i.shift(),s={filename:o},r=("function"==typeof arguments[arguments.length-1]&&(t=i.pop()),i.length?(e=i.shift(),i.length?u.shallowCopy(s,i.pop()):(e.settings&&(e.settings.views&&(s.views=e.settings.views),e.settings["view cache"]&&(s.cache=!0),i=e.settings["view options"])&&u.shallowCopy(s,i),u.shallowCopyFromList(s,e,c)),s.filename=o):e=u.createNullProtoObjWherePossible(),s),l=e,i=t;if(!i){if("function"==typeof a.promiseImpl)return new a.promiseImpl(function(t,e){try{t(n=d(r)(l))}catch(t){e(t)}});throw new Error("Please provide a callback function")}try{n=d(r)(l)}catch(t){return i(t)}i(null,n)},a.Template=y,a.clearCache=function(){a.cache.reset()},y.modes={EVAL:"eval",ESCAPED:"escaped",RAW:"raw",COMMENT:"comment",LITERAL:"literal"},y.prototype={createRegex:function(){var t="(<%%|%%>|<%=|<%-|<%_|<%#|<%|%>|-%>|_%>)",e=u.escapeRegExpChars(this.opts.delimiter),n=u.escapeRegExpChars(this.opts.openDelimiter),i=u.escapeRegExpChars(this.opts.closeDelimiter),t=t.replace(/%/g,e).replace(//g,i);return new RegExp(t)},compile:function(){var t,o=this.opts,e="",n="",s=o.escapeFunction,i=o.filename?JSON.stringify(o.filename):"undefined";if(!this.source){if(this.generateSource(),e+=' var __output = "";\n function __append(s) { if (s !== undefined && s !== null) __output += s }\n',o.outputFunctionName){if(!p.test(o.outputFunctionName))throw new Error("outputFunctionName is not a valid JS identifier.");e+=" var "+o.outputFunctionName+" = __append;\n"}if(o.localsName&&!p.test(o.localsName))throw new Error("localsName is not a valid JS identifier.");if(o.destructuredLocals&&o.destructuredLocals.length){for(var r=" var __locals = ("+o.localsName+" || {}),\n",l=0;l[ \t]*/gm,"_%>");var n=this,i=this.parseTemplateText(),o=this.opts.delimiter,s=this.opts.openDelimiter,r=this.opts.closeDelimiter;i&&i.length&&i.forEach(function(t,e){if(0===t.indexOf(s+o)&&0!==t.indexOf(s+o+o)&&(e=i[e+2])!=o+r&&e!="-"+o+r&&e!="_"+o+r)throw new Error('Could not find matching close tag for "'+t+'".');n.scanLine(t)})},parseTemplateText:function(){for(var t,e=this.templateText,n=this.regex,i=n.exec(e),o=[];i;)0!==(t=i.index)&&(o.push(e.substring(0,t)),e=e.slice(t)),o.push(i[0]),e=e.slice(i[0].length),i=n.exec(e);return e&&o.push(e),o},_addOutput:function(t){if(this.truncate&&(t=t.replace(/^(?:\r\n|\r|\n)/,""),this.truncate=!1),!t)return t;t=(t=(t=(t=t.replace(/\\/g,"\\\\")).replace(/\n/g,"\\n")).replace(/\r/g,"\\r")).replace(/"/g,'\\"'),this.source+=' ; __append("'+t+'")\n'},scanLine:function(t){var e=this.opts.delimiter,n=this.opts.openDelimiter,i=this.opts.closeDelimiter,o=t.split("\n").length-1;switch(t){case n+e:case n+e+"_":this.mode=y.modes.EVAL;break;case n+e+"=":this.mode=y.modes.ESCAPED;break;case n+e+"-":this.mode=y.modes.RAW;break;case n+e+"#":this.mode=y.modes.COMMENT;break;case n+e+e:this.mode=y.modes.LITERAL,this.source+=' ; __append("'+t.replace(n+e+e,n+e)+'")\n';break;case e+e+i:this.mode=y.modes.LITERAL,this.source+=' ; __append("'+t.replace(e+e+i,e+i)+'")\n';break;case e+i:case"-"+e+i:case"_"+e+i:this.mode==y.modes.LITERAL&&this._addOutput(t),this.mode=null,this.truncate=0===t.indexOf("-")||0===t.indexOf("_");break;default:if(this.mode){switch(this.mode){case y.modes.EVAL:case y.modes.ESCAPED:case y.modes.RAW:t.lastIndexOf("//")>t.lastIndexOf("\n")&&(t+="\n")}switch(this.mode){case y.modes.EVAL:this.source+=" ; "+t+"\n";break;case y.modes.ESCAPED:this.source+=" ; __append(escapeFn("+b(t)+"))\n";break;case y.modes.RAW:this.source+=" ; __append("+b(t)+")\n";break;case y.modes.COMMENT:break;case y.modes.LITERAL:this._addOutput(t)}}else this._addOutput(t)}this.opts.compileDebug&&o&&(this.currentLine+=o,this.source+=" ; __line = "+this.currentLine+"\n")}},a.escapeXML=u.escapeXML,a.__express=a.renderFile,a.VERSION=t,a.name="ejs","undefined"!=typeof window&&(window.ejs=a)},{"../package.json":6,"./utils":2,fs:3,path:4}],2:[function(t,e,n){function s(t,e){return o.apply(t,[e])}var i=/[|\\{}()[\]^$+*?.]/g,o=Object.prototype.hasOwnProperty,r=(n.escapeRegExpChars=function(t){return t?String(t).replace(i,"\\$&"):""},{"&":"&","<":"<",">":">",'"':""","'":"'"}),l=/[&<>'"]/g;function a(t){return r[t]||t}function c(){return Function.prototype.toString.call(this)+';\nvar _ENCODE_HTML_RULES = {\n "&": "&"\n , "<": "<"\n , ">": ">"\n , \'"\': """\n , "\'": "'"\n }\n , _MATCH_HTML = /[&<>\'"]/g;\nfunction encode_char(c) {\n return _ENCODE_HTML_RULES[c] || c;\n};\n'}n.escapeXML=function(t){return null==t?"":String(t).replace(l,a)};try{"function"==typeof Object.defineProperty?Object.defineProperty(n.escapeXML,"toString",{value:c}):n.escapeXML.toString=c}catch(t){console.warn("Unable to set escapeXML.toString (is the Function prototype frozen?)")}n.shallowCopy=function(t,e){if(e=e||{},null!=t)for(var n in e)s(e,n)&&"__proto__"!==n&&"constructor"!==n&&(t[n]=e[n]);return t},n.shallowCopyFromList=function(t,e,n){if(n=n||[],e=e||{},null!=t)for(var i=0;i (http://fleegix.org)",license:"Apache-2.0",bin:{ejs:"./bin/cli.js"},main:"./lib/ejs.js",jsdelivr:"ejs.min.js",unpkg:"ejs.min.js",repository:{type:"git",url:"git://github.com/mde/ejs.git"},bugs:"https://github.com/mde/ejs/issues",homepage:"https://github.com/mde/ejs",dependencies:{jake:"^10.8.5"},devDependencies:{browserify:"^16.5.1",eslint:"^6.8.0","git-directory-deploy":"^1.5.1",jsdoc:"^4.0.2","lru-cache":"^4.0.1",mocha:"^10.2.0","uglify-js":"^3.3.16"},engines:{node:">=0.10.0"},scripts:{test:"mocha -u tdd"}}},{}]},{},[1])(1)});var f=Object.create(null),g=(f["columns/badge.html"]='<%= text %>',f["columns/button.html"]='',f["columns/link.html"]="><%- content %>",f["columns/menu.html"]='
',f["columns/select_label.html"]='',f["columns/select.html"]='',f["columns/switch.html"]='
checked<% } %><% if (disabled) { %> disabled<% } %>>
',f["controls/button_group.html"]='
<% $.each(buttons, function(key, button) { %> <% if (button.type === \'link\') { %> ><%= button.content %> <% } else if (button.type === \'button\') { %> <% } else if (button.type === \'dropdown\') { %>
<% } %> <% }) %>
',f["controls/button.html"]='',f["controls/caption.html"]='
<%= title %> <% if (description) { %> <% } %> <%= value %>
',f["controls/columns-container.html"]='
<% $.each(columns, function(key, column) { %>
<% }); %>
',f["controls/columns.html"]='',f["controls/dropdown.html"]='
',f["controls/link.html"]='><%- content %>',f["controls/page-jump.html"]='
>
',f["controls/page-size.html"]=" ",f["controls/pages.html"]=' ',f["controls/search-clear.html"]=' ',f["controls/search-container.html"]=' ',f["controls/search.html"]='
<%- btnClear %>
',f["controls/total.html"]='
> <%= lang.total %>: <%= recordsTotal %>
',f["filters/checkbox.html"]='
<% if (label) { %> <%= label %> <% } %> <% $.each(items, function(key, item) { %> > <% }); %>
',f["filters/clear.html"]=' ',f["filters/date_month.html"]='
<% if (label) { %> <%= label %> <% } %> >
',f["filters/date_range.html"]='
<% if (label) { %> <%= label %> <% } %> > >
',f["filters/date.html"]='
<% if (label) { %> <%= label %> <% } %> >
',f["filters/datetime_range.html"]='
<% if (label) { %> <%= label %> <% } %> > >
',f["filters/datetime.html"]='
<% if (label) { %> <%= label %> <% } %> >
',f["filters/number.html"]='
<% if (label) { %> <%= label %> <% } %> > >
',f["filters/radio.html"]='
<% if (label) { %> <%= label %> <% } %> <% $.each(items, function(key, item) { %> > <% }); %>
',f["filters/select.html"]='
<% if (label) { %> <%= label %> <% } %>
',f["filters/switch.html"]='
> <% if (label != \'\') { %> <% } %>
',f["filters/text.html"]='
<% if (label) { %> <%= label %> <% } %> >
',f["search/checkbox.html"]=' <% $.each(options, function(key, option) { %>
<% }); %>',f["search/date_month.html"]=' >',f["search/date_range.html"]=' > >',f["search/date.html"]=' >',f["search/datetime_range.html"]=' > >',f["search/datetime.html"]=' >',f["search/number.html"]=' > >',f["search/radio.html"]='
<% $.each(options, function(key, option) { %>
<% }); %>',f["search/select.html"]=" ",f["search/switch.html"]='
>
',f["search/text.html"]=' >',f["table-columns-footer.html"]=" <% $.each(columns, function(key, column) { %> ><%- column.content %> <% }); %> ",f["table-columns-header.html"]=' <% $.each(columns, function(key, column) { %> ><%- column.content %> <% }); %> ',f["table-columns.html"]=' <% $.each(columns, function(key, column) { %> > <%- column.label %> <% if (column.description) { %> <% } %> <% if (column.sortable === \'asc\') { %> <% } else if (column.sortable === \'desc\') { %> <% } %> <% }); %> ',f["table-control.html"]='
',f["table-controls-footer-out.html"]=' ',f["table-controls-footer.html"]=' ',f["table-controls-header-out.html"]='
<% if (controlsLeft.length) { %>
<% } %> <% if (controlsCenter.length) { %>
<% } %> <% if (controlsRight.length) { %>
<% } %>
',f["table-controls-header.html"]='
<% if (controlsLeft.length) { %>
<% } %> <% if (controlsCenter.length) { %>
<% } %> <% if (controlsRight.length) { %>
<% } %>
',f["table-loader.html"]='
<%= lang.loading %>
',f["table-record-expand.html"]=' ',f["table-record-group.html"]='> ',f["table-record.html"]=' data-record-index="<%= record.index %>"> <% $.each(record.fields, function(key2, field) { %> > <% }); %> ',f["table-records-empty.html"]=' <%= lang.emptyRecords %> ',f["table-wrapper.html"]='
style="<%= widthSizes.join(\';\') %>"<% } %>>
style="<%= heightSizes.join(\';\') %>"<% } %>>
',f["table.html"]=' <% $.each(colGroups, function(key, columnGroup) { %> style="<%= columnGroup.style %>"<% } %>/> <% }); %> <% if (columnHeaders) { %> <%- theadAttr %>"<% } %>> <%- columnGroupsHeader %> <%- columns %> <% } %> <% if (columnGroupsFooter != \'\') { %> <%- columnGroupsFooter %> <% } %>
',{mergeAttr:function(t,e){var n=Object.assign({},t);return"object"===_(e)&&$.each(e,function(t,e){n.hasOwnProperty(t)?"class"===t?n[t]+=" "+e:"style"===t?n[t]+=";"+e:n[t]=e:n[t]=e}),n},isNumeric:function(t){return("number"==typeof t||"string"==typeof t&&""!==t.trim())&&!isNaN(t)},hashCode:function(){return this.crc32(((new Date).getTime()+Math.random()).toString()).toString(16)},isObject:function(t){return"object"===_(t)&&!Array.isArray(t)&&null!==t},crc32:function(t){for(var e=[],n=0;n<256;n++){for(var i=n,o=0;o<8;o++)i=1&i?3988292384^i>>>1:i>>>1;e[n]=i}for(var s=-1,r=0;r>>8^e[255&(s^t.charCodeAt(r))];return(-1^s)>>>0}}),b={renderTable:function(r){var n,o,t=r.getOptions(),e=[],i="",s="",l=[],a=[],c=(0 td:eq("+t+")").html(e.content)}),l},renderField:function(t,e,n){var i=e.getOptions(),o="string"==typeof i.field?i.field:null,s=null,r=n.meta&&n.meta.hasOwnProperty("fields")&&n.meta.fields.hasOwnProperty(o)?n.meta.fields[o]:null,l=i.hasOwnProperty("attr")&&g.isObject(i.attr)?i.attr:{};if(r&&g.isObject(r)){if(r&&r.hasOwnProperty("show")&&!r.show)return null;g.isObject(r.attr)&&(l=g.mergeAttr(l,r.attr))}i.hasOwnProperty("fixed")&&"string"==typeof i.fixed&&(l=g.mergeAttr(l,{class:"coreui-table__fixed_"+i.fixed})),s="function"==typeof i.render?i.render({data:n.data,meta:n.meta,index:n.index},t):o&&n.data.hasOwnProperty(o)?n.data[o]:null;var s=e.render(s,n),a=[];return $.each(l,function(t,e){a.push(t+'="'+e+'"')}),{attr:0 td").html(t),i},renderExpand:function(t,e){"object"===_(e)&&(e=b.renderComponents(t,e,"record_expand_show"));var n=$(ejs.render(f["table-record-expand.html"],{colspan:t._countColumnsShow}));return 0<=["string","number"].indexOf(_(e))?n.find("td").html(e):Array.isArray(e)&&$.each(e,function(t,e){(0<=["string","number"].indexOf(_(e))||e instanceof HTMLElement||window.hasOwnProperty("jQuery")&&e instanceof jQuery)&&n.find("td").append(e)}),n},renderControl:function(t,e){var n;if(g.isObject(e))return(n=$(ejs.render(f["table-control.html"],{id:e.getId()}))).append(e.render()),e.hasOwnProperty("initEvents")&&"function"==typeof e.initEvents&&t.on("container_show",function(){e.initEvents()}),n},renderComponents:function(t,e,n){var i=[];if(e instanceof Object){Array.isArray(e)||(e=[e]);for(var o,s=0;so[e.field])return s=!1}else if(i&&e.value.end'):e.append(''))})},getStorage:function(t){var e=localStorage.getItem("coreui_table");try{return"string"==typeof e&&e&&(e=JSON.parse(e),g.isObject(e))?t&&"string"==typeof t?e.hasOwnProperty(t)?e[t]:null:e:null}catch(t){return null}},setStorage:function(t,e){var n;"string"==typeof t&&t&&(n=this.getStorage(),g.isObject(n)&&(n.hasOwnProperty(t)?e?n[t]=e:delete n[t]:e&&(n[t]=e)),localStorage.setItem("coreui_table",JSON.stringify(n||{})))},getStorageField:function(t,e){t=this.getStorage(t)||{};return t.hasOwnProperty(e)?t[e]:null},setStorageField:function(t,e,n){var i=this.getStorage(t)||{};null===n?i.hasOwnProperty(e)&&delete i[e]:i[e]=n,this.setStorage(t,i)}},a={getContainer:function(t){return $("#coreui-table-"+t+" > .coreui-table__container")},getLock:function(t){return $("#coreui-table-"+t+" > .coreui-table__container > .coreui-table-lock")},getWrapper:function(t){return $("#coreui-table-"+t+" > .coreui-table__container > .coreui-table__wrapper")},getSearchContainer:function(t){return $("#coreui-table-"+t+" > .coreui-table__container > .coreui-table__wrapper > .coreui-table__search")},getColumnsContainer:function(t){return $("#coreui-table-"+t+" > .coreui-table__container > .coreui-table__wrapper > .coreui-table__columns")},getSearchControl:function(t,e){return $("#coreui-table-"+t+" > .coreui-table__container > .coreui-table__wrapper > .coreui-table__search .search-control-"+e)},getControl:function(t,e){return $("#coreui-table-"+t+" #coreui-table-control-"+e)},getTable:function(t){return $("#coreui-table-"+t+" > .coreui-table__container > .coreui-table__wrapper > table")},getTableTbody:function(t){return $("#coreui-table-"+t+" > .coreui-table__container > .coreui-table__wrapper > table > tbody")},getTableThead:function(t){return $("#coreui-table-"+t+" > .coreui-table__container > .coreui-table__wrapper > table > thead")},getTableSortable:function(t){return $("#coreui-table-"+t+" > .coreui-table__container > .coreui-table__wrapper > table > thead > tr > td.coreui-table__sortable")},getTrRecords:function(t){return $("#coreui-table-"+t+" > .coreui-table__container > .coreui-table__wrapper > table > tbody > tr.coreui-table__record")},getTrByIndex:function(t,e){return $("#coreui-table-"+t+' > .coreui-table__container > .coreui-table__wrapper > table > tbody > tr[data-record-index="'+e+'"]')},getExpandRow:function(t){return t.next().hasClass("coreui-table__record-expanded")?t.next():null},addExpandRow:function(t,e,n){n=b.renderExpand(t,n,"record_expand_show"),e.after(n),e.next().show("fast"),e.addClass("record-expanded"),n=e.data("record-index");r._trigger(t,"record_expand_show",[n])},hideExpandRow:function(t){t.hide("fast")},showExpandRow:function(t){t.show("fast")},removeExpandRow:function(t){t.hide("fast",function(){$(this).remove()})},getSelectedIndexes:function(t){var n=[];return $("#coreui-table-"+t+" > .coreui-table__container > .coreui-table__wrapper > table > tbody > tr.coreui-table__record > td.coreui-table__select_container > .coreui-table__select:checked").each(function(t,e){n.push($(e).val())}),n},getRowsSwitches:function(t){return $("#coreui-table-"+t+" > .coreui-table__container > .coreui-table__wrapper > table > tbody > tr.coreui-table__record > td.coreui-table__switch_container")},getRowsSelects:function(t){return $("#coreui-table-"+t+" > .coreui-table__container > .coreui-table__wrapper > table > tbody > tr.coreui-table__record > td.coreui-table__select_container")},getRowsSelectAll:function(t){return $("#coreui-table-"+t+" > .coreui-table__container > .coreui-table__wrapper > table > thead > tr > td .coreui-table__select-all")},getNoWrapToggles:function(t){return $("#coreui-table-"+t+" > .coreui-table__container > .coreui-table__wrapper > table > tbody > tr > td.coreui_table__no-wrap > i.toggle")},selectTr:function(t){t.addClass("table-primary"),$(".coreui-table__select",t).prop("checked",!0)},selectTrAll:function(t){t="#coreui-table-"+t+" > .coreui-table__container > .coreui-table__wrapper > table";$(t+" > thead > tr > td > .coreui-table__select-all").prop("checked",!0),$(t+" > tbody > tr.coreui-table__record").addClass("table-primary"),$(t+" > tbody > tr.coreui-table__record > td > .coreui-table__select").prop("checked",!0)},unselectTr:function(t){$(t).removeClass("table-primary"),$(".coreui-table__select",t).prop("checked",!1)},unselectTrAll:function(t){t="#coreui-table-"+t+" > .coreui-table__container > .coreui-table__wrapper > table";$(t+" > thead > tr > td > .coreui-table__select-all").prop("checked",!1),$(t+" > tbody > tr.coreui-table__record").removeClass("table-primary"),$(t+" > tbody > tr.coreui-table__record > td.coreui-table__select_container > .coreui-table__select").prop("checked",!1)},fixedColsLeft:function(t){var e="#coreui-table-"+t+" > .coreui-table__container > .coreui-table__wrapper",n=0;$(e+" > table > thead > tr:last-child > td.coreui-table__fixed_left").each(function(){var t=$(this).index()+1;1!==t&&($(e+" > table > thead > tr:last-child > td:nth-child("+t+")").css("left",n+"px"),$(e+" > table > tbody > tr > td:nth-child("+t+")").css("left",n+"px")),n+=$(this).outerWidth()})},fixedColsRight:function(t){var e="#coreui-table-"+t+" > .coreui-table__container > .coreui-table__wrapper",n=0;$($(e+" > table > thead > tr:last-child > td.coreui-table__fixed_right").get().reverse()).each(function(){var t=$(this).index()+1;1!==t&&($(e+" > table > thead > tr:last-child > td:nth-child("+t+")").css("right",n+"px"),$(e+" > table > tbody > tr > td:nth-child("+t+")").css("right",n+"px")),n+=$(this).outerWidth()})}},i={_options:{id:null,class:"",primaryKey:"id",lang:"en",langList:{},width:null,minWidth:null,maxWidth:null,height:null,minHeight:null,naxHeight:null,overflow:!1,page:1,recordsPerPage:25,theadTop:0,saveState:!1,noWrap:!1,noWrapToggle:!1,columnHeaders:!0,recordsRequest:{method:"GET",url:null,params:{page:"page",count:"count",start:"start",end:"end",sort:"sort",search:"search",filter:"filter"}},group:{field:null,attr:{},render:null},onClick:null,onClickUrl:null,sort:[],header:[],footer:[],columnGroupsHeader:[],search:{labelWidth:200,controls:[]},columns:[],columnGroupsFooter:[],records:[]},_id:"",_page:1,_recordsIndex:1,_recordsPerPage:25,_recordsTotal:0,_recordsNumber:1,_seq:1,_isRecordsRequest:!1,_countColumnsShow:0,_records:[],_sort:[],_columns:[],_search:[],_filters:[],_controls:[],_controlsPositions:{header:[],footer:[]},_events:{},_init:function(t){this._options=$.extend(!0,{},this._options,t),this._events={},this._id=this._options.hasOwnProperty("id")&&"string"==typeof this._options.id&&this._options.id?this._options.id:g.hashCode(),0',attr:{class:"btn btn-outline-secondary"}},btnComplete:{attr:{class:"btn btn-primary"},content:null}},init:function(t,e){this._options=$.extend(!0,{},this._options,e),this._table=t,this._id=g.hashCode(),g.isObject(this._options.btn)||(this._options.btn={}),this._options.btn.hasOwnProperty("content")&&"string"==typeof this._options.btn.content||(this._options.btn.content=t.getLang().search),g.isObject(this._options.btnClear)||(this._options.btnClear={}),this._options.btnClear.hasOwnProperty("content")&&"string"==typeof this._options.btnClear.content||(this._options.btnClear.content=t.getLang().clear),g.isObject(this._options.btnComplete)||(this._options.btnComplete={}),this._options.btnComplete.hasOwnProperty("content")&&"string"==typeof this._options.btnComplete.content||(this._options.btnComplete.content=t.getLang().search)},initEvents:function(){var l=this,n=a.getControl(this._table.getId(),this.getId()),i=$("button.btn-search-toggle",n),t=$("button.btn-clear",n);i.click(function(){var i,o,n,t,e,s=a.getSearchContainer(l._table.getId()),r=a.getColumnsContainer(l._table.getId());r[0]&&r.hide(),s[0]?s.fadeToggle("fast"):(i=[],o=[],n=[],r="",t=a.getWrapper(l._table.getId()),e=(e=l._table.getOptions()).search.hasOwnProperty("labelWidth")&&e.search.labelWidth?e.search.labelWidth:160,$.each(l._table._search,function(t,e){var n=e.getOptions();n.hasOwnProperty("field")&&"string"==typeof n.field&&n.field&&(i.push({label:n.hasOwnProperty("label")&&"string"==typeof n.label?n.label:"",description:n.hasOwnProperty("description")&&"string"==typeof n.description?n.description:"",prefix:n.hasOwnProperty("prefix")&&"string"==typeof n.prefix?n.prefix:"",id:e.getId(),content:e.render()}),e.hasOwnProperty("initEvents"))&&"function"==typeof e.initEvents&&o.push({event:e.initEvents,control:e})}),g.isObject(l._options.btnComplete)||(l._options.btnComplete={}),g.isObject(l._options.btnComplete.attr)||(l._options.btnComplete.attr={}),l._options.btnComplete.attr.hasOwnProperty("type")&&delete l._options.btnComplete.attr.type,l._options.btnComplete.attr.hasOwnProperty("class")&&"string"==typeof l._options.btnComplete.attr.class?l._options.btnComplete.attr.class+=" btn-complete":l._options.btnComplete.attr.class="btn-complete",g.isObject(l._options.btnComplete.attr)&&$.each(l._options.btnComplete.attr,function(t,e){n.push(t+'="'+e+'"')}),"string"==typeof l._options.btnComplete.content&&(r=l._options.btnComplete.content),e=ejs.render(f["controls/search-container.html"],{labelWidth:e+("number"==typeof e?"px":""),controls:i,btnCompleteAttr:0 .coreui-table__search",t),$(".btn-complete",s).click(function(){l._table.searchRecords(),s.fadeOut("fast")}))}),t.click(function(){l._table.searchClear();var t=a.getSearchContainer(l._table.getId());t[0]&&t.fadeOut("fast")}),this._table.on("search_change",function(t){var e=$("button.btn-clear",n);0',attr:{class:"btn btn-outline-secondary"}},btnComplete:{content:null,attr:{class:"btn btn-primary"}}},init:function(t,e){this._options=$.extend({},this._options,e),this._table=t,this._id=this._options.hasOwnProperty("id")&&"string"==typeof this._options.id&&this._options.id?this._options.id:g.hashCode(),g.isObject(this._options.btn)||(this._options.btn={}),g.isObject(this._options.btnComplete)||(this._options.btnComplete={}),g.isObject(this._options.btnComplete)&&"string"!=typeof this._options.btnComplete.content&&(this._options.btnComplete.content=t.getLang().complete)},getOptions:function(){return $.extend(!0,{},this._options)},initEvents:function(){var r=this,l=this.getOptions(),t=a.getControl(this._table.getId(),this._id);$("button",t).click(function(){var i,o,n,t,e=a.getColumnsContainer(r._table.getId()),s=a.getSearchContainer(r._table.getId());s[0]&&s.hide(),e[0]?e.fadeToggle("fast"):(i=[],o=!0,n=[],s="",t=a.getWrapper(r._table.getId()),$.each(r._table._columns,function(t,e){var n=e.getOptions();n.hasOwnProperty("field")&&"string"==typeof n.field&&n.field&&(e=e.isShow(),i.push({field:n.field,label:n.hasOwnProperty("label")&&"string"==typeof n.label?n.label:"",show:e}),e||(o=!1))}),g.isObject(l.btnComplete)||(l.btnComplete={}),g.isObject(l.btnComplete.attr)||(l.btnComplete.attr={}),l.btnComplete.attr.hasOwnProperty("type")&&delete l.btnComplete.attr.type,l.btnComplete.attr.hasOwnProperty("class")&&"string"==typeof l.btnComplete.attr.class?l.btnComplete.attr.class+=" btn-complete":l.btnComplete.attr.class="btn-complete",g.isObject(l.btnComplete.attr)&&$.each(l.btnComplete.attr,function(t,e){n.push(t+'="'+e+'"')}),"string"==typeof l.btnComplete.content&&(s=l.btnComplete.content),s=ejs.render(f["controls/columns-container.html"],{showAll:o,columns:i,btnCompleteAttr:0 .coreui-table__columns",t),$(".coreui-table__check_all input",e).change(function(){$(".coreui-table_check-column input",e).prop("checked",$(this).is(":checked"))}),$(".btn-complete",e).click(function(){var n=[];$(".coreui-table_check-column input:checked",e).each(function(t,e){n.push($(e).val())}),r._table.setColumnsShow(n),r._table.refresh(),e.fadeOut("fast")}))})},getId:function(){return this._id},render:function(){var n=[];return g.isObject(this._options.btn.attr)&&$.each(this._options.btn.attr,function(t,e){n.push(t+'="'+e+'"')}),ejs.render(f["controls/columns.html"],{btnContent:this._options.btn.content,btnAttr:0'}},init:function(t,e){this._options=$.extend(!0,{},this._options,e),this._table=t,this._id=this._options.hasOwnProperty("id")&&"string"==typeof this._options.id&&this._options.id?this._options.id:g.hashCode(),null!==this._options.value&&this.setValue(this._options.value)},getOptions:function(){return $.extend(!0,{},this._options)},getId:function(){return this._id},setValue:function(t){null!==t&&"string"!=typeof t&&"number"!=typeof t||(this._value=t,this._render&&(t=a.getControl(this._table.getId(),this._id))[0]&&$("input",t).val(null===this._value?"":this._value))},getValue:function(){var t=a.getControl(this._table.getId(),this._id),t=$("input",t);if(t[0]){t=t.val();if("string"==typeof t&&""!==t)return t}return null},initEvents:function(){var t=a.getControl(this._table.getId(),this._id),e=this;$("input",t).keyup(function(t){"Enter"!==t.key&&13!==t.keyCode||e._table.searchRecords()}),$("button",t).click(function(t){e._table.searchRecords()})},render:function(){this._render=!0;var t=this.getOptions(),e="string"==typeof t.label||"number"==typeof t.label?t.label:"",n=(g.isObject(t.attr)||(t.attr={}),t.hasOwnProperty("width")&&g.isNumeric(t.width)&&(t.attr.hasOwnProperty("style")?t.attr.style+=";width:"+t.width+"px":t.attr.style="width:"+t.width+"px"),t.attr.name="string"==typeof t.field?t.field:"",t.attr.value="string"==typeof this._value||"number"==typeof this._value?this._value:"",t.attr.hasOwnProperty("type")&&delete t.attr.type,g.isObject(t.btn)||(t.btn={}),g.isObject(t.btn.attr)||(t.btn.attr={}),t.btn.attr.hasOwnProperty("type")&&delete t.btn.attr.type,[]),i=[];return $.each(t.attr,function(t,e){n.push(t+'="'+e+'"')}),$.each(t.btn.attr,function(t,e){i.push(t+'="'+e+'"')}),ejs.render(f["filters/text.html"],{attr:0'}},init:function(t,e){this._options=$.extend(!0,{},this._options,e),this._table=t,this._id=this._options.hasOwnProperty("id")&&"string"==typeof this._options.id&&this._options.id?this._options.id:g.hashCode(),null!==this._options.value&&this.setValue(this._options.value)},getOptions:function(){return $.extend(!0,{},this._options)},getId:function(){return this._id},setValue:function(t){if(t){if(!g.isObject(t))return;var e=null,n=null;!t.hasOwnProperty("start")||"string"!=typeof t.start&&"number"==typeof t.start||""===t.start||(e=t.start),!t.hasOwnProperty("end")||"string"!=typeof t.end&&"number"==typeof t.end||""===t.end||(n=t.end),this._value=null===e&&null===n?null:{start:e,end:n}}else this._value=null;this._render&&(t=a.getControl(this._table.getId(),this._id))[0]&&(e=$("input.number-start",t),n=$("input.number-end",t),null===this._value?(e.val(""),n.val("")):g.isObject(this._value)&&(e.val(null!==_(this._value.start)?this._value.start:""),n.val(null!==_(this._value.end)?this._value.end:"")))},getValue:function(){var t=a.getControl(this._table.getId(),this._id),e=$("input.number-start",t),t=$("input.number-end",t);if(e[0]&&t[0]){e=e.val(),t=t.val();if("string"==typeof e&&""!==e||"string"==typeof t&&""!==t)return{start:""!==e?e:null,end:""!==t?t:null}}return null},initEvents:function(){var t=a.getControl(this._table.getId(),this._id),e=this;$("input.number-start, input.number-end",t).keyup(function(t){"Enter"!==t.key&&13!==t.keyCode||e._table.searchRecords()}),$("button",t).click(function(t){e._table.searchRecords()})},render:function(){this._render=!0;var t=this.getOptions(),e="string"==typeof t.label||"number"==typeof t.label?t.label:"",n=(g.isObject(t.attr)||(t.attr={}),t.hasOwnProperty("width")&&g.isNumeric(t.width)&&(t.attr.hasOwnProperty("style")?t.attr.style+=";width:"+t.width+"px":t.attr.style="width:"+t.width+"px"),t.attr.hasOwnProperty("type")&&delete t.attr.type,t.attr.hasOwnProperty("value")&&delete t.attr.value,"string"==typeof t.field?t.field:""),i=[],o=[],s=[];return $.each(t.attr,function(t,e){0<=["name","value","class"].indexOf(t)||["string","number"].indexOf(_(e))<0||(i.push(t+'="'+e+'"'),o.push(t+'="'+e+'"'))}),t.attr.hasOwnProperty("class")&&0<=["string","number"].indexOf(_(t.attr.class))?(i.push('class="'+t.attr.class+' number-start"'),o.push('class="'+t.attr.class+' number-end"')):(i.push('class="number-start"'),o.push('class="number-end"')),n&&(i.push('name="'+n+'[start]"'),o.push('name="'+n+'[end]"')),i.push('value="'+(this._value?this._value.start:"")+'"'),o.push('value="'+(this._value?this._value.end:"")+'"'),g.isObject(t.btn)||(t.btn={}),g.isObject(t.btn.attr)||(t.btn.attr={}),t.btn.attr.hasOwnProperty("type")&&delete t.btn.attr.type,$.each(t.btn.attr,function(t,e){s.push(t+'="'+e+'"')}),ejs.render(f["filters/number.html"],{attrStart:0=e?t:((n=n||"0").repeat(e)+t).slice(-e)}},l.columns.datetime={_table:null,_options:{type:"datetime",field:null,label:null,show:!0,width:null,format:"DD.MM.YYYY hh:mm:ss",attr:{},attrHeader:{},render:null},init:function(t,e){this._table=t,this._options=$.extend({},this._options,e)},setShow:function(t){this._options.show=!!t},isShow:function(){return!!this._options.show},getOptions:function(){return $.extend({},this._options)},render:function(e,t){if("string"!=typeof e)return"";try{var n;""!==e&&(n=new Date(e),e=this._options.format.replace(/YYYY/g,this._strPadLeft(n.getFullYear(),4)).replace(/MM/g,this._strPadLeft(n.getMonth()+1,2)).replace(/M/g,n.getMonth()+1).replace(/DD/g,this._strPadLeft(n.getDate(),2)).replace(/D/g,n.getDate()).replace(/hh/g,this._strPadLeft(n.getHours(),2)).replace(/mm/g,this._strPadLeft(n.getMinutes(),2)).replace(/m/g,n.getMinutes()).replace(/ss/g,this._strPadLeft(n.getSeconds(),2)).replace(/s/g,n.getSeconds()))}catch(t){e=""}return e},_strPadLeft:function(t,e,n){return(t=String(t)).length>=e?t:((n=n||"0").repeat(e)+t).slice(-e)}},l.columns.html={_table:null,_options:{type:"html",field:null,label:null,show:!0,width:null,minWidth:null,maxWidth:null,noWrap:null,noWrapToggle:null,attr:{},attrHeader:{},render:null},init:function(t,e){this._table=t,this._options=$.extend({},this._options,e);t=this._table.getOptions();(this._options.noWrap||null===this._options.noWrap&&t.noWrap)&&(this._options.attr?this._options.attr=g.mergeAttr(this._options.attr,{class:"coreui_table__no-wrap"}):this._options.attr={class:"coreui_table__no-wrap"},this._options.noWrap=!0,this._options.noWrapToggle||null===this._options.noWrapToggle&&t.noWrapToggle)&&(this._options.noWrapToggle=!0)},setShow:function(t){this._options.show=!!t},isShow:function(){return!!this._options.show},getOptions:function(){return $.extend({},this._options)},render:function(t,e){return!(["string","bigint","symbol","number"].indexOf(_(t))<0)||t instanceof HTMLElement||window.hasOwnProperty("jQuery")&&t instanceof jQuery?this._options.noWrap&&(t=$("
").append(t),this._options.noWrapToggle)?$(t).after(''):t:""}},l.columns.number={_table:null,_options:{type:"number",field:null,label:null,show:!0,width:null,minWidth:null,maxWidth:null,noWrap:null,noWrapToggle:null,attr:{},attrHeader:{},render:null},init:function(t,e){this._table=t,this._options=$.extend({},this._options,e);t=this._table.getOptions();(this._options.noWrap||null===this._options.noWrap&&t.noWrap)&&(this._options.attr?this._options.attr=g.mergeAttr(this._options.attr,{class:"coreui_table__no-wrap"}):this._options.attr={class:"coreui_table__no-wrap"},this._options.noWrap=!0,this._options.noWrapToggle||null===this._options.noWrapToggle&&t.noWrapToggle)&&(this._options.noWrapToggle=!0)},setShow:function(t){this._options.show=!!t},isShow:function(){return!!this._options.show},getOptions:function(){return $.extend({},this._options)},render:function(t,e){return["string","bigint","symbol","number"].indexOf(_(t))<0?"":(t=(t=String(t).replace(/,/g,".").replace(/[^0-9\-\.]/g,"").replace(/[\s]{2,}/g," ")).replace(/(?"+t+"",this._options.noWrapToggle)&&(t+=''),t)}},l.columns.money={_table:null,_options:{type:"money",field:null,label:null,show:!0,width:null,minWidth:null,maxWidth:null,noWrap:null,noWrapToggle:null,currency:null,attr:{class:"text-end"},attrHeader:{class:"text-end"},render:null},init:function(t,e){this._table=t,this._options=$.extend({},this._options,e);t=this._table.getOptions();(this._options.noWrap||null===this._options.noWrap&&t.noWrap)&&(this._options.attr?this._options.attr=g.mergeAttr(this._options.attr,{class:"coreui_table__no-wrap"}):this._options.attr={class:"coreui_table__no-wrap"},this._options.noWrap=!0,this._options.noWrapToggle||null===this._options.noWrapToggle&&t.noWrapToggle)&&(this._options.noWrapToggle=!0)},setShow:function(t){this._options.show=!!t},isShow:function(){return!!this._options.show},getOptions:function(){return $.extend({},this._options)},render:function(t,e){return["string","bigint","symbol","number"].indexOf(_(t))<0?"":(t=(isNaN(t)?t.toString():t=Number(t).toFixed(2).toString()).replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g,"$1 "),this._options.currency&&0<=["string","number"].indexOf(_(this._options.currency))&&(t+=' '+this._options.currency+""),this._options.noWrap&&(t="
"+t+"
",this._options.noWrapToggle)&&(t+=''),t)}},l.columns.numbers={_table:null,_options:{type:"numbers",label:"№",width:20,attr:{class:"text-end"},attrHeader:null},init:function(t,e){this._table=t,this._options=$.extend(!0,{},this._options,e)},isShow:function(){return!0},getOptions:function(){return $.extend({},this._options)},render:function(t,e){return this._table._recordsNumber}},l.columns.select={_table:null,_options:{type:"select",field:null,label:"",show:!0,width:35,attr:{class:"coreui-table__select_container text-center"},attrHeader:{class:"text-center"}},init:function(n,t){t.hasOwnProperty("attr")&&(t.attr=CoreUI.table._mergeAttr(this._options.attr,t.attr)),t.hasOwnProperty("attrHeader")&&(t.attrHeader=CoreUI.table._mergeAttr(this._options.attrHeader,t.attrHeader)),this._table=n,this._options=$.extend(!0,{},this._options,t),this._options.label=f["columns/select_label.html"],this._table.on("records_show",function(){var t=a.getRowsSelects(n.getId()),e=a.getRowsSelectAll(n.getId());$(t).click(function(t){t.stopPropagation()}),e.click(function(t){$(this).is(":checked")?n.selectAll():n.unselectAll()})})},setShow:function(t){this._options.show=!!t},isShow:function(){return!!this._options.show},getOptions:function(){return $.extend({},this._options)},render:function(t,n){var e=$(ejs.render(f["columns/select.html"],{index:n.index})),i=this;return e.click(function(t){var e=a.getTrByIndex(i._table.getId(),n.index);e&&($(this).is(":checked")?($(e).addClass("table-primary"),r._trigger(i._table,"record_select",[n])):($(e).removeClass("table-primary"),r._trigger(i._table,"record_unselect",[n])))}),e}},l.columns.switch={_table:null,_options:{type:"switch",label:"",field:"",show:!0,disabled:!1,width:5,valueY:"Y",valueN:"N",attr:{class:"coreui-table__switch_container"},attrHeader:{},onChange:null},init:function(t,e){this._table=t,this._options=$.extend(!0,{},this._options,e),this._table.on("records_show",function(){a.getRowsSwitches(t.getId()).click(function(t){t.stopPropagation()})})},setShow:function(t){this._options.show=!!t},isShow:function(){return!!this._options.show},getOptions:function(){return $.extend(!0,{},this._options)},render:function(t,n){var i,e=n.data.hasOwnProperty(this._options.field)&&n.data[this._options.field]===this._options.valueY,e=$(ejs.render(f["columns/switch.html"],{index:n.index,field:this._options.field,disabled:this._options.disabled,checked:e}));return!this._options.hasOwnProperty("onChange")||"function"!=typeof this._options.onChange&&"string"!=typeof this._options.onChange||(i=this,$(".coreui-table__switch",e).change(function(t){var e=$(this).is(":checked");return"function"==typeof i._options.onChange?i._options.onChange(n,e,this):"string"==typeof i._options.onChange&&(e=null,n.hasOwnProperty(i._table._options.primaryKey)&&(e=n[i._table._options.primaryKey]),new Function("record","checked","id",i._options.onChange)(n,this,e)),!1})),e}},l.columns.text={_table:null,_options:{type:"text",field:null,label:null,show:!0,width:null,minWidth:null,maxWidth:null,attr:null,noWrap:null,noWrapToggle:null,attrHeader:null,render:null},init:function(t,e){this._table=t,this._options=$.extend({},this._options,e);t=this._table.getOptions();(this._options.noWrap||null===this._options.noWrap&&t.noWrap)&&(this._options.attr?this._options.attr=g.mergeAttr(this._options.attr,{class:"coreui_table__no-wrap"}):this._options.attr={class:"coreui_table__no-wrap"},this._options.noWrap=!0,this._options.noWrapToggle||null===this._options.noWrapToggle&&t.noWrapToggle)&&(this._options.noWrapToggle=!0)},setShow:function(t){this._options.show=!!t},isShow:function(){return!!this._options.show},getOptions:function(){return $.extend({},this._options)},render:function(t,e){return["string","bigint","symbol","number"].indexOf(_(t))<0?"":(t=String(t).replace(//g,">"),this._options.noWrap&&(t="
"+t+"
",this._options.noWrapToggle)&&(t+=''),t)}},l.columns.button={_table:null,_options:{type:"button",field:null,label:null,show:!0,width:null,minWidth:null,maxWidth:null},init:function(t,e){this._table=t,this._options=$.extend({},this._options,e)},setShow:function(t){this._options.show=!!t},isShow:function(){return!!this._options.show},getOptions:function(){return $.extend({},this._options)},render:function(e,n){if(!g.isObject(e))return"";g.isObject(e.attr)||(e.attr={}),e.attr.hasOwnProperty("class")||(e.attr.class="btn btn-outline-secondary"),e.attr.hasOwnProperty("type")&&delete e.attr.type;var i,o,s=[],t=($.each(e.attr,function(t,e){0<=["string","number"].indexOf(_(e))&&s.push(t+'="'+e+'"')}),$(ejs.render(f["columns/button.html"],{content:e.content,attr:0',t=t.hasOwnProperty("position")&&"string"==typeof t.position&&t.position?t.position:"end",(o=$(ejs.render(f["columns/menu.html"],{content:e,position:t,attr:0> ":" ")+e+"| "+t}).join("\n");throw t.path=o,t.message=(o||"ejs")+":"+i+"\n"+n+"\n\n"+t.message,t}function b(t){return t.replace(/;(\s*$)/,"$1")}function y(t,e){e=e||h.createNullProtoObjWherePossible();var n=h.createNullProtoObjWherePossible();this.templateText=t,this.mode=null,this.truncate=!1,this.currentLine=1,this.source="",n.client=e.client||!1,n.escapeFunction=e.escape||e.escapeFunction||h.escapeXML,n.compileDebug=!1!==e.compileDebug,n.debug=!!e.debug,n.filename=e.filename,n.openDelimiter=e.openDelimiter||a.openDelimiter||"<",n.closeDelimiter=e.closeDelimiter||a.closeDelimiter||">",n.delimiter=e.delimiter||a.delimiter||"%",n.strict=e.strict||!1,n.context=e.context,n.cache=e.cache||!1,n.rmWhitespace=e.rmWhitespace,n.root=e.root,n.includer=e.includer,n.outputFunctionName=e.outputFunctionName,n.localsName=e.localsName||a.localsName||"locals",n.views=e.views,n.async=e.async,n.destructuredLocals=e.destructuredLocals,n.legacyInclude=void 0===e.legacyInclude||!!e.legacyInclude,n.strict?n._with=!1:n._with=void 0===e._with||e._with,this.opts=n,this.regex=this.createRegex()}a.cache=h.cache,a.fileLoader=s.readFileSync,a.localsName="locals",a.promiseImpl=new Function("return this;")().Promise,a.resolveInclude=function(t,e,n){var i=u.dirname,o=u.extname,n=(0,u.resolve)(n?e:i(e),t);return o(t)||(n+=".ejs"),n},a.compile=function(t,e){return e&&e.scope&&(n||(console.warn("`scope` option is deprecated and will be removed in EJS 3"),n=!0),e.context||(e.context=e.scope),delete e.scope),new y(t,e).compile()},a.render=function(t,e,n){e=e||h.createNullProtoObjWherePossible(),n=n||h.createNullProtoObjWherePossible();return 2==arguments.length&&h.shallowCopyFromList(n,e,i),d(n,t)(e)},a.renderFile=function(){var t,e,n,i=Array.prototype.slice.call(arguments),o=i.shift(),s={filename:o},r=("function"==typeof arguments[arguments.length-1]&&(t=i.pop()),i.length?(e=i.shift(),i.length?h.shallowCopy(s,i.pop()):(e.settings&&(e.settings.views&&(s.views=e.settings.views),e.settings["view cache"]&&(s.cache=!0),i=e.settings["view options"])&&h.shallowCopy(s,i),h.shallowCopyFromList(s,e,c)),s.filename=o):e=h.createNullProtoObjWherePossible(),s),l=e,i=t;if(!i){if("function"==typeof a.promiseImpl)return new a.promiseImpl(function(t,e){try{t(n=d(r)(l))}catch(t){e(t)}});throw new Error("Please provide a callback function")}try{n=d(r)(l)}catch(t){return i(t)}i(null,n)},a.Template=y,a.clearCache=function(){a.cache.reset()},y.modes={EVAL:"eval",ESCAPED:"escaped",RAW:"raw",COMMENT:"comment",LITERAL:"literal"},y.prototype={createRegex:function(){var t="(<%%|%%>|<%=|<%-|<%_|<%#|<%|%>|-%>|_%>)",e=h.escapeRegExpChars(this.opts.delimiter),n=h.escapeRegExpChars(this.opts.openDelimiter),i=h.escapeRegExpChars(this.opts.closeDelimiter),t=t.replace(/%/g,e).replace(//g,i);return new RegExp(t)},compile:function(){var t,o=this.opts,e="",n="",s=o.escapeFunction,i=o.filename?JSON.stringify(o.filename):"undefined";if(!this.source){if(this.generateSource(),e+=' var __output = "";\n function __append(s) { if (s !== undefined && s !== null) __output += s }\n',o.outputFunctionName){if(!p.test(o.outputFunctionName))throw new Error("outputFunctionName is not a valid JS identifier.");e+=" var "+o.outputFunctionName+" = __append;\n"}if(o.localsName&&!p.test(o.localsName))throw new Error("localsName is not a valid JS identifier.");if(o.destructuredLocals&&o.destructuredLocals.length){for(var r=" var __locals = ("+o.localsName+" || {}),\n",l=0;l[ \t]*/gm,"_%>");var n=this,i=this.parseTemplateText(),o=this.opts.delimiter,s=this.opts.openDelimiter,r=this.opts.closeDelimiter;i&&i.length&&i.forEach(function(t,e){if(0===t.indexOf(s+o)&&0!==t.indexOf(s+o+o)&&(e=i[e+2])!=o+r&&e!="-"+o+r&&e!="_"+o+r)throw new Error('Could not find matching close tag for "'+t+'".');n.scanLine(t)})},parseTemplateText:function(){for(var t,e=this.templateText,n=this.regex,i=n.exec(e),o=[];i;)0!==(t=i.index)&&(o.push(e.substring(0,t)),e=e.slice(t)),o.push(i[0]),e=e.slice(i[0].length),i=n.exec(e);return e&&o.push(e),o},_addOutput:function(t){if(this.truncate&&(t=t.replace(/^(?:\r\n|\r|\n)/,""),this.truncate=!1),!t)return t;t=(t=(t=(t=t.replace(/\\/g,"\\\\")).replace(/\n/g,"\\n")).replace(/\r/g,"\\r")).replace(/"/g,'\\"'),this.source+=' ; __append("'+t+'")\n'},scanLine:function(t){var e=this.opts.delimiter,n=this.opts.openDelimiter,i=this.opts.closeDelimiter,o=t.split("\n").length-1;switch(t){case n+e:case n+e+"_":this.mode=y.modes.EVAL;break;case n+e+"=":this.mode=y.modes.ESCAPED;break;case n+e+"-":this.mode=y.modes.RAW;break;case n+e+"#":this.mode=y.modes.COMMENT;break;case n+e+e:this.mode=y.modes.LITERAL,this.source+=' ; __append("'+t.replace(n+e+e,n+e)+'")\n';break;case e+e+i:this.mode=y.modes.LITERAL,this.source+=' ; __append("'+t.replace(e+e+i,e+i)+'")\n';break;case e+i:case"-"+e+i:case"_"+e+i:this.mode==y.modes.LITERAL&&this._addOutput(t),this.mode=null,this.truncate=0===t.indexOf("-")||0===t.indexOf("_");break;default:if(this.mode){switch(this.mode){case y.modes.EVAL:case y.modes.ESCAPED:case y.modes.RAW:t.lastIndexOf("//")>t.lastIndexOf("\n")&&(t+="\n")}switch(this.mode){case y.modes.EVAL:this.source+=" ; "+t+"\n";break;case y.modes.ESCAPED:this.source+=" ; __append(escapeFn("+b(t)+"))\n";break;case y.modes.RAW:this.source+=" ; __append("+b(t)+")\n";break;case y.modes.COMMENT:break;case y.modes.LITERAL:this._addOutput(t)}}else this._addOutput(t)}this.opts.compileDebug&&o&&(this.currentLine+=o,this.source+=" ; __line = "+this.currentLine+"\n")}},a.escapeXML=h.escapeXML,a.__express=a.renderFile,a.VERSION=t,a.name="ejs","undefined"!=typeof window&&(window.ejs=a)},{"../package.json":6,"./utils":2,fs:3,path:4}],2:[function(t,e,n){function s(t,e){return o.apply(t,[e])}var i=/[|\\{}()[\]^$+*?.]/g,o=Object.prototype.hasOwnProperty,r=(n.escapeRegExpChars=function(t){return t?String(t).replace(i,"\\$&"):""},{"&":"&","<":"<",">":">",'"':""","'":"'"}),l=/[&<>'"]/g;function a(t){return r[t]||t}function c(){return Function.prototype.toString.call(this)+';\nvar _ENCODE_HTML_RULES = {\n "&": "&"\n , "<": "<"\n , ">": ">"\n , \'"\': """\n , "\'": "'"\n }\n , _MATCH_HTML = /[&<>\'"]/g;\nfunction encode_char(c) {\n return _ENCODE_HTML_RULES[c] || c;\n};\n'}n.escapeXML=function(t){return null==t?"":String(t).replace(l,a)};try{"function"==typeof Object.defineProperty?Object.defineProperty(n.escapeXML,"toString",{value:c}):n.escapeXML.toString=c}catch(t){console.warn("Unable to set escapeXML.toString (is the Function prototype frozen?)")}n.shallowCopy=function(t,e){if(e=e||{},null!=t)for(var n in e)s(e,n)&&"__proto__"!==n&&"constructor"!==n&&(t[n]=e[n]);return t},n.shallowCopyFromList=function(t,e,n){if(n=n||[],e=e||{},null!=t)for(var i=0;i (http://fleegix.org)",license:"Apache-2.0",bin:{ejs:"./bin/cli.js"},main:"./lib/ejs.js",jsdelivr:"ejs.min.js",unpkg:"ejs.min.js",repository:{type:"git",url:"git://github.com/mde/ejs.git"},bugs:"https://github.com/mde/ejs/issues",homepage:"https://github.com/mde/ejs",dependencies:{jake:"^10.8.5"},devDependencies:{browserify:"^16.5.1",eslint:"^6.8.0","git-directory-deploy":"^1.5.1",jsdoc:"^4.0.2","lru-cache":"^4.0.1",mocha:"^10.2.0","uglify-js":"^3.3.16"},engines:{node:">=0.10.0"},scripts:{test:"mocha -u tdd"}}},{}]},{},[1])(1)});var f=Object.create(null),g=(f["columns/badge.html"]='<%= text %>',f["columns/button.html"]='',f["columns/link.html"]="><%- content %>",f["columns/menu.html"]='
',f["columns/select_label.html"]='',f["columns/select.html"]='',f["columns/switch.html"]='
checked<% } %><% if (disabled) { %> disabled<% } %>>
',f["controls/button_group.html"]='
<% $.each(buttons, function(key, button) { %> <% if (button.type === \'link\') { %> ><%= button.content %> <% } else if (button.type === \'button\') { %> <% } else if (button.type === \'dropdown\') { %>
<% } %> <% }) %>
',f["controls/button.html"]='',f["controls/caption.html"]='
<%= title %> <% if (description) { %> <% } %> <%= value %>
',f["controls/columns-container.html"]='
<% $.each(columns, function(key, column) { %>
<% }); %>
',f["controls/columns.html"]='',f["controls/dropdown.html"]='
',f["controls/link.html"]='><%- content %>',f["controls/page-jump.html"]='
>
',f["controls/page-size.html"]=" ",f["controls/pages.html"]=' ',f["controls/search-clear.html"]=' ',f["controls/search-container.html"]=' ',f["controls/search.html"]='
<%- btnClear %>
',f["controls/total.html"]='
> <%= lang.total %>: <%= recordsTotal %>
',f["filters/checkbox.html"]='
<% if (label) { %> <%= label %> <% } %> <% $.each(items, function(key, item) { %> > <% }); %>
',f["filters/clear.html"]=' ',f["filters/date_month.html"]='
<% if (label) { %> <%= label %> <% } %> >
',f["filters/date_range.html"]='
<% if (label) { %> <%= label %> <% } %> > >
',f["filters/date.html"]='
<% if (label) { %> <%= label %> <% } %> >
',f["filters/datetime_range.html"]='
<% if (label) { %> <%= label %> <% } %> > >
',f["filters/datetime.html"]='
<% if (label) { %> <%= label %> <% } %> >
',f["filters/number.html"]='
<% if (label) { %> <%= label %> <% } %> > >
',f["filters/radio.html"]='
<% if (label) { %> <%= label %> <% } %> <% $.each(items, function(key, item) { %> > <% }); %>
',f["filters/select.html"]='
<% if (label) { %> <%= label %> <% } %>
',f["filters/switch.html"]='
> <% if (label != \'\') { %> <% } %>
',f["filters/text.html"]='
<% if (label) { %> <%= label %> <% } %> >
',f["search/checkbox.html"]=' <% $.each(options, function(key, option) { %>
<% }); %>',f["search/date_month.html"]=' >',f["search/date_range.html"]=' > >',f["search/date.html"]=' >',f["search/datetime_range.html"]=' > >',f["search/datetime.html"]=' >',f["search/number.html"]=' > >',f["search/radio.html"]='
<% $.each(options, function(key, option) { %>
<% }); %>',f["search/select.html"]=" ",f["search/switch.html"]='
>
',f["search/text.html"]=' >',f["table-columns-footer.html"]=" <% $.each(columns, function(key, column) { %> ><%- column.content %> <% }); %> ",f["table-columns-header.html"]=' <% $.each(columns, function(key, column) { %> ><%- column.content %> <% }); %> ',f["table-columns.html"]=' <% $.each(columns, function(key, column) { %> > <%- column.label %> <% if (column.description) { %> <% } %> <% if (column.sortable === \'asc\') { %> <% } else if (column.sortable === \'desc\') { %> <% } %> <% }); %> ',f["table-control.html"]='
',f["table-controls-footer-out.html"]=' ',f["table-controls-footer.html"]=' ',f["table-controls-header-out.html"]='
<% if (controlsLeft.length) { %>
<% } %> <% if (controlsCenter.length) { %>
<% } %> <% if (controlsRight.length) { %>
<% } %>
',f["table-controls-header.html"]='
<% if (controlsLeft.length) { %>
<% } %> <% if (controlsCenter.length) { %>
<% } %> <% if (controlsRight.length) { %>
<% } %>
',f["table-loader.html"]='
<%= lang.loading %>
',f["table-record-expand.html"]=' ',f["table-record-group.html"]='> ',f["table-record.html"]=' data-record-index="<%= record.index %>"> <% $.each(record.fields, function(key2, field) { %> > <% }); %> ',f["table-records-empty.html"]=' <%= lang.emptyRecords %> ',f["table-wrapper.html"]='
style="<%= widthSizes.join(\';\') %>"<% } %>>
style="<%= heightSizes.join(\';\') %>"<% } %>>
',f["table.html"]=' <% $.each(colGroups, function(key, columnGroup) { %> style="<%= columnGroup.style %>"<% } %>/> <% }); %> <% if (columnHeaders) { %> <%- theadAttr %>"<% } %>> <%- columnGroupsHeader %> <%- columns %> <% } %> <% if (columnGroupsFooter != \'\') { %> <%- columnGroupsFooter %> <% } %>
',{mergeAttr:function(t,e){var n=Object.assign({},t);return"object"===_(e)&&$.each(e,function(t,e){n.hasOwnProperty(t)?"class"===t?n[t]+=" "+e:"style"===t?n[t]+=";"+e:n[t]=e:n[t]=e}),n},isNumeric:function(t){return("number"==typeof t||"string"==typeof t&&""!==t.trim())&&!isNaN(t)},hashCode:function(){return this.crc32(((new Date).getTime()+Math.random()).toString()).toString(16)},isObject:function(t){return"object"===_(t)&&!Array.isArray(t)&&null!==t},crc32:function(t){for(var e=[],n=0;n<256;n++){for(var i=n,o=0;o<8;o++)i=1&i?3988292384^i>>>1:i>>>1;e[n]=i}for(var s=-1,r=0;r>>8^e[255&(s^t.charCodeAt(r))];return(-1^s)>>>0}}),b={renderTable:function(r){var n,o,t=r.getOptions(),e=[],i="",s="",l=[],a=[],c=(0 td:eq("+t+")").html(e.content)}),l},renderField:function(t,e,n){var i=e.getOptions(),o="string"==typeof i.field?i.field:null,s=null,r=n.meta&&n.meta.hasOwnProperty("fields")&&n.meta.fields.hasOwnProperty(o)?n.meta.fields[o]:null,l=i.hasOwnProperty("attr")&&g.isObject(i.attr)?i.attr:{};if(r&&g.isObject(r)){if(r&&r.hasOwnProperty("show")&&!r.show)return null;g.isObject(r.attr)&&(l=g.mergeAttr(l,r.attr))}i.hasOwnProperty("fixed")&&"string"==typeof i.fixed&&(l=g.mergeAttr(l,{class:"coreui-table__fixed_"+i.fixed})),s="function"==typeof i.render?i.render({data:n.data,meta:n.meta,index:n.index},t):o&&n.data.hasOwnProperty(o)?n.data[o]:null;var s=e.render(s,n),a=[];return $.each(l,function(t,e){a.push(t+'="'+e+'"')}),{attr:0 td").html(t),i},renderExpand:function(t,e){"object"===_(e)&&(e=b.renderComponents(t,e,"record_expand_show"));var n=$(ejs.render(f["table-record-expand.html"],{colspan:t._countColumnsShow}));return 0<=["string","number"].indexOf(_(e))?n.find("td").html(e):Array.isArray(e)&&$.each(e,function(t,e){(0<=["string","number"].indexOf(_(e))||e instanceof HTMLElement||window.hasOwnProperty("jQuery")&&e instanceof jQuery)&&n.find("td").append(e)}),n},renderControl:function(t,e){var n;if(g.isObject(e))return(n=$(ejs.render(f["table-control.html"],{id:e.getId()}))).append(e.render()),e.hasOwnProperty("initEvents")&&"function"==typeof e.initEvents&&t.on("container_show",function(){e.initEvents()}),n},renderComponents:function(t,e,n){var i=[];if(e instanceof Object){Array.isArray(e)||(e=[e]);for(var o,s=0;so[e.field])return s=!1}else if(i&&e.value.end'):e.append(''))})},getStorage:function(t){var e=localStorage.getItem("coreui_table");try{return"string"==typeof e&&e&&(e=JSON.parse(e),g.isObject(e))?t&&"string"==typeof t?e.hasOwnProperty(t)?e[t]:null:e:null}catch(t){return null}},setStorage:function(t,e){var n;"string"==typeof t&&t&&(n=this.getStorage(),g.isObject(n)&&(n.hasOwnProperty(t)?e?n[t]=e:delete n[t]:e&&(n[t]=e)),localStorage.setItem("coreui_table",JSON.stringify(n||{})))},getStorageField:function(t,e){t=this.getStorage(t)||{};return t.hasOwnProperty(e)?t[e]:null},setStorageField:function(t,e,n){var i=this.getStorage(t)||{};null===n?i.hasOwnProperty(e)&&delete i[e]:i[e]=n,this.setStorage(t,i)}},a={getContainer:function(t){return $("#coreui-table-"+t+" > .coreui-table__container")},getLock:function(t){return $("#coreui-table-"+t+" > .coreui-table__container > .coreui-table-lock")},getWrapper:function(t){return $("#coreui-table-"+t+" > .coreui-table__container > .coreui-table__wrapper")},getSearchContainer:function(t){return $("#coreui-table-"+t+" > .coreui-table__container > .coreui-table__wrapper > .coreui-table__search")},getColumnsContainer:function(t){return $("#coreui-table-"+t+" > .coreui-table__container > .coreui-table__wrapper > .coreui-table__columns")},getSearchControl:function(t,e){return $("#coreui-table-"+t+" > .coreui-table__container > .coreui-table__wrapper > .coreui-table__search .search-control-"+e)},getControl:function(t,e){return $("#coreui-table-"+t+" #coreui-table-control-"+e)},getTable:function(t){return $("#coreui-table-"+t+" > .coreui-table__container > .coreui-table__wrapper > table")},getTableTbody:function(t){return $("#coreui-table-"+t+" > .coreui-table__container > .coreui-table__wrapper > table > tbody")},getTableThead:function(t){return $("#coreui-table-"+t+" > .coreui-table__container > .coreui-table__wrapper > table > thead")},getTableSortable:function(t){return $("#coreui-table-"+t+" > .coreui-table__container > .coreui-table__wrapper > table > thead > tr > td.coreui-table__sortable")},getTrRecords:function(t){return $("#coreui-table-"+t+" > .coreui-table__container > .coreui-table__wrapper > table > tbody > tr.coreui-table__record")},getTrByIndex:function(t,e){return $("#coreui-table-"+t+' > .coreui-table__container > .coreui-table__wrapper > table > tbody > tr[data-record-index="'+e+'"]')},getExpandRow:function(t){return t.next().hasClass("coreui-table__record-expanded")?t.next():null},addExpandRow:function(t,e,n){n=b.renderExpand(t,n,"record_expand_show"),e.after(n),e.next().show("fast"),e.addClass("record-expanded"),n=e.data("record-index");r._trigger(t,"record_expand_show",[n])},hideExpandRow:function(t){t.hide("fast")},showExpandRow:function(t){t.show("fast")},removeExpandRow:function(t){t.hide("fast",function(){$(this).remove()})},getSelectedIndexes:function(t){var n=[];return $("#coreui-table-"+t+" > .coreui-table__container > .coreui-table__wrapper > table > tbody > tr.coreui-table__record > td.coreui-table__select_container > .coreui-table__select:checked").each(function(t,e){n.push($(e).val())}),n},getRowsSwitches:function(t){return $("#coreui-table-"+t+" > .coreui-table__container > .coreui-table__wrapper > table > tbody > tr.coreui-table__record > td.coreui-table__switch_container")},getRowsSelects:function(t){return $("#coreui-table-"+t+" > .coreui-table__container > .coreui-table__wrapper > table > tbody > tr.coreui-table__record > td.coreui-table__select_container")},getRowsSelectAll:function(t){return $("#coreui-table-"+t+" > .coreui-table__container > .coreui-table__wrapper > table > thead > tr > td .coreui-table__select-all")},getNoWrapToggles:function(t){return $("#coreui-table-"+t+" > .coreui-table__container > .coreui-table__wrapper > table > tbody > tr > td.coreui_table__no-wrap > i.toggle")},selectTr:function(t){t.addClass("table-primary"),$(".coreui-table__select",t).prop("checked",!0)},selectTrAll:function(t){t="#coreui-table-"+t+" > .coreui-table__container > .coreui-table__wrapper > table";$(t+" > thead > tr > td > .coreui-table__select-all").prop("checked",!0),$(t+" > tbody > tr.coreui-table__record").addClass("table-primary"),$(t+" > tbody > tr.coreui-table__record > td > .coreui-table__select").prop("checked",!0)},unselectTr:function(t){$(t).removeClass("table-primary"),$(".coreui-table__select",t).prop("checked",!1)},unselectTrAll:function(t){t="#coreui-table-"+t+" > .coreui-table__container > .coreui-table__wrapper > table";$(t+" > thead > tr > td > .coreui-table__select-all").prop("checked",!1),$(t+" > tbody > tr.coreui-table__record").removeClass("table-primary"),$(t+" > tbody > tr.coreui-table__record > td.coreui-table__select_container > .coreui-table__select").prop("checked",!1)},fixedColsLeft:function(t){var e="#coreui-table-"+t+" > .coreui-table__container > .coreui-table__wrapper",n=0;$(e+" > table > thead > tr:last-child > td.coreui-table__fixed_left").each(function(){var t=$(this).index()+1;1!==t&&($(e+" > table > thead > tr:last-child > td:nth-child("+t+")").css("left",n+"px"),$(e+" > table > tbody > tr > td:nth-child("+t+")").css("left",n+"px")),n+=$(this).outerWidth()})},fixedColsRight:function(t){var e="#coreui-table-"+t+" > .coreui-table__container > .coreui-table__wrapper",n=0;$($(e+" > table > thead > tr:last-child > td.coreui-table__fixed_right").get().reverse()).each(function(){var t=$(this).index()+1;1!==t&&($(e+" > table > thead > tr:last-child > td:nth-child("+t+")").css("right",n+"px"),$(e+" > table > tbody > tr > td:nth-child("+t+")").css("right",n+"px")),n+=$(this).outerWidth()})}},i={_options:{id:null,class:"",primaryKey:"id",lang:"en",langList:{},width:null,minWidth:null,maxWidth:null,height:null,minHeight:null,naxHeight:null,overflow:!1,page:1,recordsPerPage:25,theadTop:0,saveState:!1,noBorder:!1,noWrap:!1,noWrapToggle:!1,columnHeaders:!0,recordsRequest:{method:"GET",url:null,params:{page:"page",count:"count",start:"start",end:"end",sort:"sort",search:"search",filter:"filter"}},group:{field:null,attr:{},render:null},onClick:null,onClickUrl:null,sort:[],header:[],footer:[],columnGroupsHeader:[],search:{labelWidth:200,controls:[]},columns:[],columnGroupsFooter:[],records:[]},_id:"",_page:1,_recordsIndex:1,_recordsPerPage:25,_recordsTotal:0,_recordsNumber:1,_seq:1,_isRecordsRequest:!1,_countColumnsShow:0,_records:[],_sort:[],_columns:[],_search:[],_filters:[],_controls:[],_controlsPositions:{header:[],footer:[]},_events:{},_init:function(t){this._options=$.extend(!0,{},this._options,t),this._events={},this._id=this._options.hasOwnProperty("id")&&"string"==typeof this._options.id&&this._options.id?this._options.id:g.hashCode(),0',attr:{class:"btn btn-outline-secondary"}},btnComplete:{attr:{class:"btn btn-primary"},content:null}},init:function(t,e){this._options=$.extend(!0,{},this._options,e),this._table=t,this._id=g.hashCode(),g.isObject(this._options.btn)||(this._options.btn={}),this._options.btn.hasOwnProperty("content")&&"string"==typeof this._options.btn.content||(this._options.btn.content=t.getLang().search),g.isObject(this._options.btnClear)||(this._options.btnClear={}),this._options.btnClear.hasOwnProperty("content")&&"string"==typeof this._options.btnClear.content||(this._options.btnClear.content=t.getLang().clear),g.isObject(this._options.btnComplete)||(this._options.btnComplete={}),this._options.btnComplete.hasOwnProperty("content")&&"string"==typeof this._options.btnComplete.content||(this._options.btnComplete.content=t.getLang().search)},initEvents:function(){var l=this,n=a.getControl(this._table.getId(),this.getId()),i=$("button.btn-search-toggle",n),t=$("button.btn-clear",n);i.click(function(){var i,o,n,t,e,s=a.getSearchContainer(l._table.getId()),r=a.getColumnsContainer(l._table.getId());r[0]&&r.hide(),s[0]?s.fadeToggle("fast"):(i=[],o=[],n=[],r="",t=a.getWrapper(l._table.getId()),e=(e=l._table.getOptions()).search.hasOwnProperty("labelWidth")&&e.search.labelWidth?e.search.labelWidth:160,$.each(l._table._search,function(t,e){var n=e.getOptions();n.hasOwnProperty("field")&&"string"==typeof n.field&&n.field&&(i.push({label:n.hasOwnProperty("label")&&"string"==typeof n.label?n.label:"",description:n.hasOwnProperty("description")&&"string"==typeof n.description?n.description:"",prefix:n.hasOwnProperty("prefix")&&"string"==typeof n.prefix?n.prefix:"",id:e.getId(),content:e.render()}),e.hasOwnProperty("initEvents"))&&"function"==typeof e.initEvents&&o.push({event:e.initEvents,control:e})}),g.isObject(l._options.btnComplete)||(l._options.btnComplete={}),g.isObject(l._options.btnComplete.attr)||(l._options.btnComplete.attr={}),l._options.btnComplete.attr.hasOwnProperty("type")&&delete l._options.btnComplete.attr.type,l._options.btnComplete.attr.hasOwnProperty("class")&&"string"==typeof l._options.btnComplete.attr.class?l._options.btnComplete.attr.class+=" btn-complete":l._options.btnComplete.attr.class="btn-complete",g.isObject(l._options.btnComplete.attr)&&$.each(l._options.btnComplete.attr,function(t,e){n.push(t+'="'+e+'"')}),"string"==typeof l._options.btnComplete.content&&(r=l._options.btnComplete.content),e=ejs.render(f["controls/search-container.html"],{labelWidth:e+("number"==typeof e?"px":""),controls:i,btnCompleteAttr:0 .coreui-table__search",t),$(".btn-complete",s).click(function(){l._table.searchRecords(),s.fadeOut("fast")}))}),t.click(function(){l._table.searchClear();var t=a.getSearchContainer(l._table.getId());t[0]&&t.fadeOut("fast")}),this._table.on("search_change",function(t){var e=$("button.btn-clear",n);0',attr:{class:"btn btn-outline-secondary"}},btnComplete:{content:null,attr:{class:"btn btn-primary"}}},init:function(t,e){this._options=$.extend({},this._options,e),this._table=t,this._id=this._options.hasOwnProperty("id")&&"string"==typeof this._options.id&&this._options.id?this._options.id:g.hashCode(),g.isObject(this._options.btn)||(this._options.btn={}),g.isObject(this._options.btnComplete)||(this._options.btnComplete={}),g.isObject(this._options.btnComplete)&&"string"!=typeof this._options.btnComplete.content&&(this._options.btnComplete.content=t.getLang().complete)},getOptions:function(){return $.extend(!0,{},this._options)},initEvents:function(){var r=this,l=this.getOptions(),t=a.getControl(this._table.getId(),this._id);$("button",t).click(function(){var i,o,n,t,e=a.getColumnsContainer(r._table.getId()),s=a.getSearchContainer(r._table.getId());s[0]&&s.hide(),e[0]?e.fadeToggle("fast"):(i=[],o=!0,n=[],s="",t=a.getWrapper(r._table.getId()),$.each(r._table._columns,function(t,e){var n=e.getOptions();n.hasOwnProperty("field")&&"string"==typeof n.field&&n.field&&(e=e.isShow(),i.push({field:n.field,label:n.hasOwnProperty("label")&&"string"==typeof n.label?n.label:"",show:e}),e||(o=!1))}),g.isObject(l.btnComplete)||(l.btnComplete={}),g.isObject(l.btnComplete.attr)||(l.btnComplete.attr={}),l.btnComplete.attr.hasOwnProperty("type")&&delete l.btnComplete.attr.type,l.btnComplete.attr.hasOwnProperty("class")&&"string"==typeof l.btnComplete.attr.class?l.btnComplete.attr.class+=" btn-complete":l.btnComplete.attr.class="btn-complete",g.isObject(l.btnComplete.attr)&&$.each(l.btnComplete.attr,function(t,e){n.push(t+'="'+e+'"')}),"string"==typeof l.btnComplete.content&&(s=l.btnComplete.content),s=ejs.render(f["controls/columns-container.html"],{showAll:o,columns:i,btnCompleteAttr:0 .coreui-table__columns",t),$(".coreui-table__check_all input",e).change(function(){$(".coreui-table_check-column input",e).prop("checked",$(this).is(":checked"))}),$(".btn-complete",e).click(function(){var n=[];$(".coreui-table_check-column input:checked",e).each(function(t,e){n.push($(e).val())}),r._table.setColumnsShow(n),r._table.refresh(),e.fadeOut("fast")}))})},getId:function(){return this._id},render:function(){var n=[];return g.isObject(this._options.btn.attr)&&$.each(this._options.btn.attr,function(t,e){n.push(t+'="'+e+'"')}),ejs.render(f["controls/columns.html"],{btnContent:this._options.btn.content,btnAttr:0'}},init:function(t,e){this._options=$.extend(!0,{},this._options,e),this._table=t,this._id=this._options.hasOwnProperty("id")&&"string"==typeof this._options.id&&this._options.id?this._options.id:g.hashCode(),null!==this._options.value&&this.setValue(this._options.value)},getOptions:function(){return $.extend(!0,{},this._options)},getId:function(){return this._id},setValue:function(t){null!==t&&"string"!=typeof t&&"number"!=typeof t||(this._value=t,this._render&&(t=a.getControl(this._table.getId(),this._id))[0]&&$("input",t).val(null===this._value?"":this._value))},getValue:function(){var t=a.getControl(this._table.getId(),this._id),t=$("input",t);if(t[0]){t=t.val();if("string"==typeof t&&""!==t)return t}return null},initEvents:function(){var t=a.getControl(this._table.getId(),this._id),e=this;$("input",t).keyup(function(t){"Enter"!==t.key&&13!==t.keyCode||e._table.searchRecords()}),$("button",t).click(function(t){e._table.searchRecords()})},render:function(){this._render=!0;var t=this.getOptions(),e="string"==typeof t.label||"number"==typeof t.label?t.label:"",n=(g.isObject(t.attr)||(t.attr={}),t.hasOwnProperty("width")&&g.isNumeric(t.width)&&(t.attr.hasOwnProperty("style")?t.attr.style+=";width:"+t.width+"px":t.attr.style="width:"+t.width+"px"),t.attr.name="string"==typeof t.field?t.field:"",t.attr.value="string"==typeof this._value||"number"==typeof this._value?this._value:"",t.attr.hasOwnProperty("type")&&delete t.attr.type,g.isObject(t.btn)||(t.btn={}),g.isObject(t.btn.attr)||(t.btn.attr={}),t.btn.attr.hasOwnProperty("type")&&delete t.btn.attr.type,[]),i=[];return $.each(t.attr,function(t,e){n.push(t+'="'+e+'"')}),$.each(t.btn.attr,function(t,e){i.push(t+'="'+e+'"')}),ejs.render(f["filters/text.html"],{attr:0'}},init:function(t,e){this._options=$.extend(!0,{},this._options,e),this._table=t,this._id=this._options.hasOwnProperty("id")&&"string"==typeof this._options.id&&this._options.id?this._options.id:g.hashCode(),null!==this._options.value&&this.setValue(this._options.value)},getOptions:function(){return $.extend(!0,{},this._options)},getId:function(){return this._id},setValue:function(t){if(t){if(!g.isObject(t))return;var e=null,n=null;!t.hasOwnProperty("start")||"string"!=typeof t.start&&"number"==typeof t.start||""===t.start||(e=t.start),!t.hasOwnProperty("end")||"string"!=typeof t.end&&"number"==typeof t.end||""===t.end||(n=t.end),this._value=null===e&&null===n?null:{start:e,end:n}}else this._value=null;this._render&&(t=a.getControl(this._table.getId(),this._id))[0]&&(e=$("input.number-start",t),n=$("input.number-end",t),null===this._value?(e.val(""),n.val("")):g.isObject(this._value)&&(e.val(null!==_(this._value.start)?this._value.start:""),n.val(null!==_(this._value.end)?this._value.end:"")))},getValue:function(){var t=a.getControl(this._table.getId(),this._id),e=$("input.number-start",t),t=$("input.number-end",t);if(e[0]&&t[0]){e=e.val(),t=t.val();if("string"==typeof e&&""!==e||"string"==typeof t&&""!==t)return{start:""!==e?e:null,end:""!==t?t:null}}return null},initEvents:function(){var t=a.getControl(this._table.getId(),this._id),e=this;$("input.number-start, input.number-end",t).keyup(function(t){"Enter"!==t.key&&13!==t.keyCode||e._table.searchRecords()}),$("button",t).click(function(t){e._table.searchRecords()})},render:function(){this._render=!0;var t=this.getOptions(),e="string"==typeof t.label||"number"==typeof t.label?t.label:"",n=(g.isObject(t.attr)||(t.attr={}),t.hasOwnProperty("width")&&g.isNumeric(t.width)&&(t.attr.hasOwnProperty("style")?t.attr.style+=";width:"+t.width+"px":t.attr.style="width:"+t.width+"px"),t.attr.hasOwnProperty("type")&&delete t.attr.type,t.attr.hasOwnProperty("value")&&delete t.attr.value,"string"==typeof t.field?t.field:""),i=[],o=[],s=[];return $.each(t.attr,function(t,e){0<=["name","value","class"].indexOf(t)||["string","number"].indexOf(_(e))<0||(i.push(t+'="'+e+'"'),o.push(t+'="'+e+'"'))}),t.attr.hasOwnProperty("class")&&0<=["string","number"].indexOf(_(t.attr.class))?(i.push('class="'+t.attr.class+' number-start"'),o.push('class="'+t.attr.class+' number-end"')):(i.push('class="number-start"'),o.push('class="number-end"')),n&&(i.push('name="'+n+'[start]"'),o.push('name="'+n+'[end]"')),i.push('value="'+(this._value?this._value.start:"")+'"'),o.push('value="'+(this._value?this._value.end:"")+'"'),g.isObject(t.btn)||(t.btn={}),g.isObject(t.btn.attr)||(t.btn.attr={}),t.btn.attr.hasOwnProperty("type")&&delete t.btn.attr.type,$.each(t.btn.attr,function(t,e){s.push(t+'="'+e+'"')}),ejs.render(f["filters/number.html"],{attrStart:0=e?t:((n=n||"0").repeat(e)+t).slice(-e)}},l.columns.datetime={_table:null,_options:{type:"datetime",field:null,label:null,show:!0,width:null,format:"DD.MM.YYYY hh:mm:ss",attr:{},attrHeader:{},render:null},init:function(t,e){this._table=t,this._options=$.extend({},this._options,e)},setShow:function(t){this._options.show=!!t},isShow:function(){return!!this._options.show},getOptions:function(){return $.extend({},this._options)},render:function(e,t){if("string"!=typeof e)return"";try{var n;""!==e&&(n=new Date(e),e=this._options.format.replace(/YYYY/g,this._strPadLeft(n.getFullYear(),4)).replace(/MM/g,this._strPadLeft(n.getMonth()+1,2)).replace(/M/g,n.getMonth()+1).replace(/DD/g,this._strPadLeft(n.getDate(),2)).replace(/D/g,n.getDate()).replace(/hh/g,this._strPadLeft(n.getHours(),2)).replace(/mm/g,this._strPadLeft(n.getMinutes(),2)).replace(/m/g,n.getMinutes()).replace(/ss/g,this._strPadLeft(n.getSeconds(),2)).replace(/s/g,n.getSeconds()))}catch(t){e=""}return e},_strPadLeft:function(t,e,n){return(t=String(t)).length>=e?t:((n=n||"0").repeat(e)+t).slice(-e)}},l.columns.html={_table:null,_options:{type:"html",field:null,label:null,show:!0,width:null,minWidth:null,maxWidth:null,noWrap:null,noWrapToggle:null,attr:{},attrHeader:{},render:null},init:function(t,e){this._table=t,this._options=$.extend({},this._options,e);t=this._table.getOptions();(this._options.noWrap||null===this._options.noWrap&&t.noWrap)&&(this._options.attr?this._options.attr=g.mergeAttr(this._options.attr,{class:"coreui_table__no-wrap"}):this._options.attr={class:"coreui_table__no-wrap"},this._options.noWrap=!0,this._options.noWrapToggle||null===this._options.noWrapToggle&&t.noWrapToggle)&&(this._options.noWrapToggle=!0)},setShow:function(t){this._options.show=!!t},isShow:function(){return!!this._options.show},getOptions:function(){return $.extend({},this._options)},render:function(t,e){return!(["string","bigint","symbol","number"].indexOf(_(t))<0)||t instanceof HTMLElement||window.hasOwnProperty("jQuery")&&t instanceof jQuery?this._options.noWrap&&(t=$("
").append(t),this._options.noWrapToggle)?$(t).after(''):t:""}},l.columns.number={_table:null,_options:{type:"number",field:null,label:null,show:!0,width:null,minWidth:null,maxWidth:null,noWrap:null,noWrapToggle:null,attr:{},attrHeader:{},render:null},init:function(t,e){this._table=t,this._options=$.extend({},this._options,e);t=this._table.getOptions();(this._options.noWrap||null===this._options.noWrap&&t.noWrap)&&(this._options.attr?this._options.attr=g.mergeAttr(this._options.attr,{class:"coreui_table__no-wrap"}):this._options.attr={class:"coreui_table__no-wrap"},this._options.noWrap=!0,this._options.noWrapToggle||null===this._options.noWrapToggle&&t.noWrapToggle)&&(this._options.noWrapToggle=!0)},setShow:function(t){this._options.show=!!t},isShow:function(){return!!this._options.show},getOptions:function(){return $.extend({},this._options)},render:function(t,e){return["string","bigint","symbol","number"].indexOf(_(t))<0?"":(t=(t=String(t).replace(/,/g,".").replace(/[^0-9\-\.]/g,"").replace(/[\s]{2,}/g," ")).replace(/(?"+t+"",this._options.noWrapToggle)&&(t+=''),t)}},l.columns.money={_table:null,_options:{type:"money",field:null,label:null,show:!0,width:null,minWidth:null,maxWidth:null,noWrap:null,noWrapToggle:null,currency:null,attr:{class:"text-end"},attrHeader:{class:"text-end"},render:null},init:function(t,e){this._table=t,this._options=$.extend({},this._options,e);t=this._table.getOptions();(this._options.noWrap||null===this._options.noWrap&&t.noWrap)&&(this._options.attr?this._options.attr=g.mergeAttr(this._options.attr,{class:"coreui_table__no-wrap"}):this._options.attr={class:"coreui_table__no-wrap"},this._options.noWrap=!0,this._options.noWrapToggle||null===this._options.noWrapToggle&&t.noWrapToggle)&&(this._options.noWrapToggle=!0)},setShow:function(t){this._options.show=!!t},isShow:function(){return!!this._options.show},getOptions:function(){return $.extend({},this._options)},render:function(t,e){return["string","bigint","symbol","number"].indexOf(_(t))<0?"":(t=(isNaN(t)?t.toString():t=Number(t).toFixed(2).toString()).replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g,"$1 "),this._options.currency&&0<=["string","number"].indexOf(_(this._options.currency))&&(t+=' '+this._options.currency+""),this._options.noWrap&&(t="
"+t+"
",this._options.noWrapToggle)&&(t+=''),t)}},l.columns.numbers={_table:null,_options:{type:"numbers",label:"№",width:20,attr:{class:"text-end"},attrHeader:null},init:function(t,e){this._table=t,this._options=$.extend(!0,{},this._options,e)},isShow:function(){return!0},getOptions:function(){return $.extend({},this._options)},render:function(t,e){return this._table._recordsNumber}},l.columns.select={_table:null,_options:{type:"select",field:null,label:"",show:!0,width:35,attr:{class:"coreui-table__select_container text-center"},attrHeader:{class:"text-center"}},init:function(n,t){t.hasOwnProperty("attr")&&(t.attr=CoreUI.table._mergeAttr(this._options.attr,t.attr)),t.hasOwnProperty("attrHeader")&&(t.attrHeader=CoreUI.table._mergeAttr(this._options.attrHeader,t.attrHeader)),this._table=n,this._options=$.extend(!0,{},this._options,t),this._options.label=f["columns/select_label.html"],this._table.on("records_show",function(){var t=a.getRowsSelects(n.getId()),e=a.getRowsSelectAll(n.getId());$(t).click(function(t){t.stopPropagation()}),e.click(function(t){$(this).is(":checked")?n.selectAll():n.unselectAll()})})},setShow:function(t){this._options.show=!!t},isShow:function(){return!!this._options.show},getOptions:function(){return $.extend({},this._options)},render:function(t,n){var e=$(ejs.render(f["columns/select.html"],{index:n.index})),i=this;return e.click(function(t){var e=a.getTrByIndex(i._table.getId(),n.index);e&&($(this).is(":checked")?($(e).addClass("table-primary"),r._trigger(i._table,"record_select",[n])):($(e).removeClass("table-primary"),r._trigger(i._table,"record_unselect",[n])))}),e}},l.columns.switch={_table:null,_options:{type:"switch",label:"",field:"",show:!0,disabled:!1,width:5,valueY:"Y",valueN:"N",attr:{class:"coreui-table__switch_container"},attrHeader:{},onChange:null},init:function(t,e){this._table=t,this._options=$.extend(!0,{},this._options,e),this._table.on("records_show",function(){a.getRowsSwitches(t.getId()).click(function(t){t.stopPropagation()})})},setShow:function(t){this._options.show=!!t},isShow:function(){return!!this._options.show},getOptions:function(){return $.extend(!0,{},this._options)},render:function(t,n){var i,e=n.data.hasOwnProperty(this._options.field)&&n.data[this._options.field]===this._options.valueY,e=$(ejs.render(f["columns/switch.html"],{index:n.index,field:this._options.field,disabled:this._options.disabled,checked:e}));return!this._options.hasOwnProperty("onChange")||"function"!=typeof this._options.onChange&&"string"!=typeof this._options.onChange||(i=this,$(".coreui-table__switch",e).change(function(t){var e=$(this).is(":checked");return"function"==typeof i._options.onChange?i._options.onChange(n,e,this):"string"==typeof i._options.onChange&&(e=null,n.hasOwnProperty(i._table._options.primaryKey)&&(e=n[i._table._options.primaryKey]),new Function("record","checked","id",i._options.onChange)(n,this,e)),!1})),e}},l.columns.text={_table:null,_options:{type:"text",field:null,label:null,show:!0,width:null,minWidth:null,maxWidth:null,attr:null,noWrap:null,noWrapToggle:null,attrHeader:null,render:null},init:function(t,e){this._table=t,this._options=$.extend({},this._options,e);t=this._table.getOptions();(this._options.noWrap||null===this._options.noWrap&&t.noWrap)&&(this._options.attr?this._options.attr=g.mergeAttr(this._options.attr,{class:"coreui_table__no-wrap"}):this._options.attr={class:"coreui_table__no-wrap"},this._options.noWrap=!0,this._options.noWrapToggle||null===this._options.noWrapToggle&&t.noWrapToggle)&&(this._options.noWrapToggle=!0)},setShow:function(t){this._options.show=!!t},isShow:function(){return!!this._options.show},getOptions:function(){return $.extend({},this._options)},render:function(t,e){return["string","bigint","symbol","number"].indexOf(_(t))<0?"":(t=String(t).replace(//g,">"),this._options.noWrap&&(t="
"+t+"
",this._options.noWrapToggle)&&(t+=''),t)}},l.columns.button={_table:null,_options:{type:"button",field:null,label:null,show:!0,width:null,minWidth:null,maxWidth:null},init:function(t,e){this._table=t,this._options=$.extend({},this._options,e)},setShow:function(t){this._options.show=!!t},isShow:function(){return!!this._options.show},getOptions:function(){return $.extend({},this._options)},render:function(e,n){if(!g.isObject(e))return"";g.isObject(e.attr)||(e.attr={}),e.attr.hasOwnProperty("class")||(e.attr.class="btn btn-outline-secondary"),e.attr.hasOwnProperty("type")&&delete e.attr.type;var i,o,s=[],t=($.each(e.attr,function(t,e){0<=["string","number"].indexOf(_(e))&&s.push(t+'="'+e+'"')}),$(ejs.render(f["columns/button.html"],{content:e.content,attr:0',t=t.hasOwnProperty("position")&&"string"==typeof t.position&&t.position?t.position:"end",(o=$(ejs.render(f["columns/menu.html"],{content:e,position:t,attr:0\";\n var _DEFAULT_DELIMITER = \"%\";\n var _DEFAULT_LOCALS_NAME = \"locals\";\n var _NAME = \"ejs\";\n var _REGEX_STRING = \"(<%%|%%>|<%=|<%-|<%_|<%#|<%|%>|-%>|_%>)\";\n var _OPTS_PASSABLE_WITH_DATA = [\"delimiter\", \"scope\", \"context\", \"debug\", \"compileDebug\", \"client\", \"_with\", \"rmWhitespace\", \"strict\", \"filename\", \"async\"];\n var _OPTS_PASSABLE_WITH_DATA_EXPRESS = _OPTS_PASSABLE_WITH_DATA.concat(\"cache\");\n var _BOM = /^\\uFEFF/;\n var _JS_IDENTIFIER = /^[a-zA-Z_$][0-9a-zA-Z_$]*$/;\n exports.cache = utils.cache;\n exports.fileLoader = fs.readFileSync;\n exports.localsName = _DEFAULT_LOCALS_NAME;\n exports.promiseImpl = new Function(\"return this;\")().Promise;\n exports.resolveInclude = function (name, filename, isDir) {\n var dirname = path.dirname;\n var extname = path.extname;\n var resolve = path.resolve;\n var includePath = resolve(isDir ? filename : dirname(filename), name);\n var ext = extname(name);\n if (!ext) {\n includePath += \".ejs\";\n }\n return includePath;\n };\n function resolvePaths(name, paths) {\n var filePath;\n if (paths.some(function (v) {\n filePath = exports.resolveInclude(name, v, true);\n return fs.existsSync(filePath);\n })) {\n return filePath;\n }\n }\n function getIncludePath(path, options) {\n var includePath;\n var filePath;\n var views = options.views;\n var match = /^[A-Za-z]+:\\\\|^\\//.exec(path);\n if (match && match.length) {\n path = path.replace(/^\\/*/, \"\");\n if (Array.isArray(options.root)) {\n includePath = resolvePaths(path, options.root);\n } else {\n includePath = exports.resolveInclude(path, options.root || \"/\", true);\n }\n } else {\n if (options.filename) {\n filePath = exports.resolveInclude(path, options.filename);\n if (fs.existsSync(filePath)) {\n includePath = filePath;\n }\n }\n if (!includePath && Array.isArray(views)) {\n includePath = resolvePaths(path, views);\n }\n if (!includePath && typeof options.includer !== \"function\") {\n throw new Error('Could not find the include file \"' + options.escapeFunction(path) + '\"');\n }\n }\n return includePath;\n }\n function handleCache(options, template) {\n var func;\n var filename = options.filename;\n var hasTemplate = arguments.length > 1;\n if (options.cache) {\n if (!filename) {\n throw new Error(\"cache option requires a filename\");\n }\n func = exports.cache.get(filename);\n if (func) {\n return func;\n }\n if (!hasTemplate) {\n template = fileLoader(filename).toString().replace(_BOM, \"\");\n }\n } else if (!hasTemplate) {\n if (!filename) {\n throw new Error(\"Internal EJS error: no file name or template \" + \"provided\");\n }\n template = fileLoader(filename).toString().replace(_BOM, \"\");\n }\n func = exports.compile(template, options);\n if (options.cache) {\n exports.cache.set(filename, func);\n }\n return func;\n }\n function tryHandleCache(options, data, cb) {\n var result;\n if (!cb) {\n if (typeof exports.promiseImpl == \"function\") {\n return new exports.promiseImpl(function (resolve, reject) {\n try {\n result = handleCache(options)(data);\n resolve(result);\n } catch (err) {\n reject(err);\n }\n });\n } else {\n throw new Error(\"Please provide a callback function\");\n }\n } else {\n try {\n result = handleCache(options)(data);\n } catch (err) {\n return cb(err);\n }\n cb(null, result);\n }\n }\n function fileLoader(filePath) {\n return exports.fileLoader(filePath);\n }\n function includeFile(path, options) {\n var opts = utils.shallowCopy(utils.createNullProtoObjWherePossible(), options);\n opts.filename = getIncludePath(path, opts);\n if (typeof options.includer === \"function\") {\n var includerResult = options.includer(path, opts.filename);\n if (includerResult) {\n if (includerResult.filename) {\n opts.filename = includerResult.filename;\n }\n if (includerResult.template) {\n return handleCache(opts, includerResult.template);\n }\n }\n }\n return handleCache(opts);\n }\n function rethrow(err, str, flnm, lineno, esc) {\n var lines = str.split(\"\\n\");\n var start = Math.max(lineno - 3, 0);\n var end = Math.min(lines.length, lineno + 3);\n var filename = esc(flnm);\n var context = lines.slice(start, end).map(function (line, i) {\n var curr = i + start + 1;\n return (curr == lineno ? \" >> \" : \" \") + curr + \"| \" + line;\n }).join(\"\\n\");\n err.path = filename;\n err.message = (filename || \"ejs\") + \":\" + lineno + \"\\n\" + context + \"\\n\\n\" + err.message;\n throw err;\n }\n function stripSemi(str) {\n return str.replace(/;(\\s*$)/, \"$1\");\n }\n exports.compile = function compile(template, opts) {\n var templ;\n if (opts && opts.scope) {\n if (!scopeOptionWarned) {\n console.warn(\"`scope` option is deprecated and will be removed in EJS 3\");\n scopeOptionWarned = true;\n }\n if (!opts.context) {\n opts.context = opts.scope;\n }\n delete opts.scope;\n }\n templ = new Template(template, opts);\n return templ.compile();\n };\n exports.render = function (template, d, o) {\n var data = d || utils.createNullProtoObjWherePossible();\n var opts = o || utils.createNullProtoObjWherePossible();\n if (arguments.length == 2) {\n utils.shallowCopyFromList(opts, data, _OPTS_PASSABLE_WITH_DATA);\n }\n return handleCache(opts, template)(data);\n };\n exports.renderFile = function () {\n var args = Array.prototype.slice.call(arguments);\n var filename = args.shift();\n var cb;\n var opts = {\n filename: filename\n };\n var data;\n var viewOpts;\n if (typeof arguments[arguments.length - 1] == \"function\") {\n cb = args.pop();\n }\n if (args.length) {\n data = args.shift();\n if (args.length) {\n utils.shallowCopy(opts, args.pop());\n } else {\n if (data.settings) {\n if (data.settings.views) {\n opts.views = data.settings.views;\n }\n if (data.settings[\"view cache\"]) {\n opts.cache = true;\n }\n viewOpts = data.settings[\"view options\"];\n if (viewOpts) {\n utils.shallowCopy(opts, viewOpts);\n }\n }\n utils.shallowCopyFromList(opts, data, _OPTS_PASSABLE_WITH_DATA_EXPRESS);\n }\n opts.filename = filename;\n } else {\n data = utils.createNullProtoObjWherePossible();\n }\n return tryHandleCache(opts, data, cb);\n };\n exports.Template = Template;\n exports.clearCache = function () {\n exports.cache.reset();\n };\n function Template(text, opts) {\n opts = opts || utils.createNullProtoObjWherePossible();\n var options = utils.createNullProtoObjWherePossible();\n this.templateText = text;\n this.mode = null;\n this.truncate = false;\n this.currentLine = 1;\n this.source = \"\";\n options.client = opts.client || false;\n options.escapeFunction = opts.escape || opts.escapeFunction || utils.escapeXML;\n options.compileDebug = opts.compileDebug !== false;\n options.debug = !!opts.debug;\n options.filename = opts.filename;\n options.openDelimiter = opts.openDelimiter || exports.openDelimiter || _DEFAULT_OPEN_DELIMITER;\n options.closeDelimiter = opts.closeDelimiter || exports.closeDelimiter || _DEFAULT_CLOSE_DELIMITER;\n options.delimiter = opts.delimiter || exports.delimiter || _DEFAULT_DELIMITER;\n options.strict = opts.strict || false;\n options.context = opts.context;\n options.cache = opts.cache || false;\n options.rmWhitespace = opts.rmWhitespace;\n options.root = opts.root;\n options.includer = opts.includer;\n options.outputFunctionName = opts.outputFunctionName;\n options.localsName = opts.localsName || exports.localsName || _DEFAULT_LOCALS_NAME;\n options.views = opts.views;\n options.async = opts.async;\n options.destructuredLocals = opts.destructuredLocals;\n options.legacyInclude = typeof opts.legacyInclude != \"undefined\" ? !!opts.legacyInclude : true;\n if (options.strict) {\n options._with = false;\n } else {\n options._with = typeof opts._with != \"undefined\" ? opts._with : true;\n }\n this.opts = options;\n this.regex = this.createRegex();\n }\n Template.modes = {\n EVAL: \"eval\",\n ESCAPED: \"escaped\",\n RAW: \"raw\",\n COMMENT: \"comment\",\n LITERAL: \"literal\"\n };\n Template.prototype = {\n createRegex: function () {\n var str = _REGEX_STRING;\n var delim = utils.escapeRegExpChars(this.opts.delimiter);\n var open = utils.escapeRegExpChars(this.opts.openDelimiter);\n var close = utils.escapeRegExpChars(this.opts.closeDelimiter);\n str = str.replace(/%/g, delim).replace(//g, close);\n return new RegExp(str);\n },\n compile: function () {\n var src;\n var fn;\n var opts = this.opts;\n var prepended = \"\";\n var appended = \"\";\n var escapeFn = opts.escapeFunction;\n var ctor;\n var sanitizedFilename = opts.filename ? JSON.stringify(opts.filename) : \"undefined\";\n if (!this.source) {\n this.generateSource();\n prepended += ' var __output = \"\";\\n' + \" function __append(s) { if (s !== undefined && s !== null) __output += s }\\n\";\n if (opts.outputFunctionName) {\n if (!_JS_IDENTIFIER.test(opts.outputFunctionName)) {\n throw new Error(\"outputFunctionName is not a valid JS identifier.\");\n }\n prepended += \" var \" + opts.outputFunctionName + \" = __append;\" + \"\\n\";\n }\n if (opts.localsName && !_JS_IDENTIFIER.test(opts.localsName)) {\n throw new Error(\"localsName is not a valid JS identifier.\");\n }\n if (opts.destructuredLocals && opts.destructuredLocals.length) {\n var destructuring = \" var __locals = (\" + opts.localsName + \" || {}),\\n\";\n for (var i = 0; i < opts.destructuredLocals.length; i++) {\n var name = opts.destructuredLocals[i];\n if (!_JS_IDENTIFIER.test(name)) {\n throw new Error(\"destructuredLocals[\" + i + \"] is not a valid JS identifier.\");\n }\n if (i > 0) {\n destructuring += \",\\n \";\n }\n destructuring += name + \" = __locals.\" + name;\n }\n prepended += destructuring + \";\\n\";\n }\n if (opts._with !== false) {\n prepended += \" with (\" + opts.localsName + \" || {}) {\" + \"\\n\";\n appended += \" }\" + \"\\n\";\n }\n appended += \" return __output;\" + \"\\n\";\n this.source = prepended + this.source + appended;\n }\n if (opts.compileDebug) {\n src = \"var __line = 1\" + \"\\n\" + \" , __lines = \" + JSON.stringify(this.templateText) + \"\\n\" + \" , __filename = \" + sanitizedFilename + \";\" + \"\\n\" + \"try {\" + \"\\n\" + this.source + \"} catch (e) {\" + \"\\n\" + \" rethrow(e, __lines, __filename, __line, escapeFn);\" + \"\\n\" + \"}\" + \"\\n\";\n } else {\n src = this.source;\n }\n if (opts.client) {\n src = \"escapeFn = escapeFn || \" + escapeFn.toString() + \";\" + \"\\n\" + src;\n if (opts.compileDebug) {\n src = \"rethrow = rethrow || \" + rethrow.toString() + \";\" + \"\\n\" + src;\n }\n }\n if (opts.strict) {\n src = '\"use strict\";\\n' + src;\n }\n if (opts.debug) {\n console.log(src);\n }\n if (opts.compileDebug && opts.filename) {\n src = src + \"\\n\" + \"//# sourceURL=\" + sanitizedFilename + \"\\n\";\n }\n try {\n if (opts.async) {\n try {\n ctor = new Function(\"return (async function(){}).constructor;\")();\n } catch (e) {\n if (e instanceof SyntaxError) {\n throw new Error(\"This environment does not support async/await\");\n } else {\n throw e;\n }\n }\n } else {\n ctor = Function;\n }\n fn = new ctor(opts.localsName + \", escapeFn, include, rethrow\", src);\n } catch (e) {\n if (e instanceof SyntaxError) {\n if (opts.filename) {\n e.message += \" in \" + opts.filename;\n }\n e.message += \" while compiling ejs\\n\\n\";\n e.message += \"If the above error is not helpful, you may want to try EJS-Lint:\\n\";\n e.message += \"https://github.com/RyanZim/EJS-Lint\";\n if (!opts.async) {\n e.message += \"\\n\";\n e.message += \"Or, if you meant to create an async function, pass `async: true` as an option.\";\n }\n }\n throw e;\n }\n var returnedFn = opts.client ? fn : function anonymous(data) {\n var include = function (path, includeData) {\n var d = utils.shallowCopy(utils.createNullProtoObjWherePossible(), data);\n if (includeData) {\n d = utils.shallowCopy(d, includeData);\n }\n return includeFile(path, opts)(d);\n };\n return fn.apply(opts.context, [data || utils.createNullProtoObjWherePossible(), escapeFn, include, rethrow]);\n };\n if (opts.filename && typeof Object.defineProperty === \"function\") {\n var filename = opts.filename;\n var basename = path.basename(filename, path.extname(filename));\n try {\n Object.defineProperty(returnedFn, \"name\", {\n value: basename,\n writable: false,\n enumerable: false,\n configurable: true\n });\n } catch (e) {}\n }\n return returnedFn;\n },\n generateSource: function () {\n var opts = this.opts;\n if (opts.rmWhitespace) {\n this.templateText = this.templateText.replace(/[\\r\\n]+/g, \"\\n\").replace(/^\\s+|\\s+$/gm, \"\");\n }\n this.templateText = this.templateText.replace(/[ \\t]*<%_/gm, \"<%_\").replace(/_%>[ \\t]*/gm, \"_%>\");\n var self = this;\n var matches = this.parseTemplateText();\n var d = this.opts.delimiter;\n var o = this.opts.openDelimiter;\n var c = this.opts.closeDelimiter;\n if (matches && matches.length) {\n matches.forEach(function (line, index) {\n var closing;\n if (line.indexOf(o + d) === 0 && line.indexOf(o + d + d) !== 0) {\n closing = matches[index + 2];\n if (!(closing == d + c || closing == \"-\" + d + c || closing == \"_\" + d + c)) {\n throw new Error('Could not find matching close tag for \"' + line + '\".');\n }\n }\n self.scanLine(line);\n });\n }\n },\n parseTemplateText: function () {\n var str = this.templateText;\n var pat = this.regex;\n var result = pat.exec(str);\n var arr = [];\n var firstPos;\n while (result) {\n firstPos = result.index;\n if (firstPos !== 0) {\n arr.push(str.substring(0, firstPos));\n str = str.slice(firstPos);\n }\n arr.push(result[0]);\n str = str.slice(result[0].length);\n result = pat.exec(str);\n }\n if (str) {\n arr.push(str);\n }\n return arr;\n },\n _addOutput: function (line) {\n if (this.truncate) {\n line = line.replace(/^(?:\\r\\n|\\r|\\n)/, \"\");\n this.truncate = false;\n }\n if (!line) {\n return line;\n }\n line = line.replace(/\\\\/g, \"\\\\\\\\\");\n line = line.replace(/\\n/g, \"\\\\n\");\n line = line.replace(/\\r/g, \"\\\\r\");\n line = line.replace(/\"/g, '\\\\\"');\n this.source += ' ; __append(\"' + line + '\")' + \"\\n\";\n },\n scanLine: function (line) {\n var self = this;\n var d = this.opts.delimiter;\n var o = this.opts.openDelimiter;\n var c = this.opts.closeDelimiter;\n var newLineCount = 0;\n newLineCount = line.split(\"\\n\").length - 1;\n switch (line) {\n case o + d:\n case o + d + \"_\":\n this.mode = Template.modes.EVAL;\n break;\n case o + d + \"=\":\n this.mode = Template.modes.ESCAPED;\n break;\n case o + d + \"-\":\n this.mode = Template.modes.RAW;\n break;\n case o + d + \"#\":\n this.mode = Template.modes.COMMENT;\n break;\n case o + d + d:\n this.mode = Template.modes.LITERAL;\n this.source += ' ; __append(\"' + line.replace(o + d + d, o + d) + '\")' + \"\\n\";\n break;\n case d + d + c:\n this.mode = Template.modes.LITERAL;\n this.source += ' ; __append(\"' + line.replace(d + d + c, d + c) + '\")' + \"\\n\";\n break;\n case d + c:\n case \"-\" + d + c:\n case \"_\" + d + c:\n if (this.mode == Template.modes.LITERAL) {\n this._addOutput(line);\n }\n this.mode = null;\n this.truncate = line.indexOf(\"-\") === 0 || line.indexOf(\"_\") === 0;\n break;\n default:\n if (this.mode) {\n switch (this.mode) {\n case Template.modes.EVAL:\n case Template.modes.ESCAPED:\n case Template.modes.RAW:\n if (line.lastIndexOf(\"//\") > line.lastIndexOf(\"\\n\")) {\n line += \"\\n\";\n }\n }\n switch (this.mode) {\n case Template.modes.EVAL:\n this.source += \" ; \" + line + \"\\n\";\n break;\n case Template.modes.ESCAPED:\n this.source += \" ; __append(escapeFn(\" + stripSemi(line) + \"))\" + \"\\n\";\n break;\n case Template.modes.RAW:\n this.source += \" ; __append(\" + stripSemi(line) + \")\" + \"\\n\";\n break;\n case Template.modes.COMMENT:\n break;\n case Template.modes.LITERAL:\n this._addOutput(line);\n break;\n }\n } else {\n this._addOutput(line);\n }\n }\n if (self.opts.compileDebug && newLineCount) {\n this.currentLine += newLineCount;\n this.source += \" ; __line = \" + this.currentLine + \"\\n\";\n }\n }\n };\n exports.escapeXML = utils.escapeXML;\n exports.__express = exports.renderFile;\n exports.VERSION = _VERSION_STRING;\n exports.name = _NAME;\n if (typeof window != \"undefined\") {\n window.ejs = exports;\n }\n }, {\n \"../package.json\": 6,\n \"./utils\": 2,\n fs: 3,\n path: 4\n }],\n 2: [function (require, module, exports) {\n \"use strict\";\n\n var regExpChars = /[|\\\\{}()[\\]^$+*?.]/g;\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n var hasOwn = function (obj, key) {\n return hasOwnProperty.apply(obj, [key]);\n };\n exports.escapeRegExpChars = function (string) {\n if (!string) {\n return \"\";\n }\n return String(string).replace(regExpChars, \"\\\\$&\");\n };\n var _ENCODE_HTML_RULES = {\n \"&\": \"&\",\n \"<\": \"<\",\n \">\": \">\",\n '\"': \""\",\n \"'\": \"'\"\n };\n var _MATCH_HTML = /[&<>'\"]/g;\n function encode_char(c) {\n return _ENCODE_HTML_RULES[c] || c;\n }\n var escapeFuncStr = \"var _ENCODE_HTML_RULES = {\\n\" + ' \"&\": \"&\"\\n' + ' , \"<\": \"<\"\\n' + ' , \">\": \">\"\\n' + ' , \\'\"\\': \""\"\\n' + ' , \"\\'\": \"'\"\\n' + \" }\\n\" + \" , _MATCH_HTML = /[&<>'\\\"]/g;\\n\" + \"function encode_char(c) {\\n\" + \" return _ENCODE_HTML_RULES[c] || c;\\n\" + \"};\\n\";\n exports.escapeXML = function (markup) {\n return markup == undefined ? \"\" : String(markup).replace(_MATCH_HTML, encode_char);\n };\n function escapeXMLToString() {\n return Function.prototype.toString.call(this) + \";\\n\" + escapeFuncStr;\n }\n try {\n if (typeof Object.defineProperty === \"function\") {\n Object.defineProperty(exports.escapeXML, \"toString\", {\n value: escapeXMLToString\n });\n } else {\n exports.escapeXML.toString = escapeXMLToString;\n }\n } catch (err) {\n console.warn(\"Unable to set escapeXML.toString (is the Function prototype frozen?)\");\n }\n exports.shallowCopy = function (to, from) {\n from = from || {};\n if (to !== null && to !== undefined) {\n for (var p in from) {\n if (!hasOwn(from, p)) {\n continue;\n }\n if (p === \"__proto__\" || p === \"constructor\") {\n continue;\n }\n to[p] = from[p];\n }\n }\n return to;\n };\n exports.shallowCopyFromList = function (to, from, list) {\n list = list || [];\n from = from || {};\n if (to !== null && to !== undefined) {\n for (var i = 0; i < list.length; i++) {\n var p = list[i];\n if (typeof from[p] != \"undefined\") {\n if (!hasOwn(from, p)) {\n continue;\n }\n if (p === \"__proto__\" || p === \"constructor\") {\n continue;\n }\n to[p] = from[p];\n }\n }\n }\n return to;\n };\n exports.cache = {\n _data: {},\n set: function (key, val) {\n this._data[key] = val;\n },\n get: function (key) {\n return this._data[key];\n },\n remove: function (key) {\n delete this._data[key];\n },\n reset: function () {\n this._data = {};\n }\n };\n exports.hyphenToCamel = function (str) {\n return str.replace(/-[a-z]/g, function (match) {\n return match[1].toUpperCase();\n });\n };\n exports.createNullProtoObjWherePossible = function () {\n if (typeof Object.create == \"function\") {\n return function () {\n return Object.create(null);\n };\n }\n if (!({\n __proto__: null\n } instanceof Object)) {\n return function () {\n return {\n __proto__: null\n };\n };\n }\n return function () {\n return {};\n };\n }();\n }, {}],\n 3: [function (require, module, exports) {}, {}],\n 4: [function (require, module, exports) {\n (function (process) {\n function normalizeArray(parts, allowAboveRoot) {\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === \".\") {\n parts.splice(i, 1);\n } else if (last === \"..\") {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift(\"..\");\n }\n }\n return parts;\n }\n exports.resolve = function () {\n var resolvedPath = \"\",\n resolvedAbsolute = false;\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = i >= 0 ? arguments[i] : process.cwd();\n if (typeof path !== \"string\") {\n throw new TypeError(\"Arguments to path.resolve must be strings\");\n } else if (!path) {\n continue;\n }\n resolvedPath = path + \"/\" + resolvedPath;\n resolvedAbsolute = path.charAt(0) === \"/\";\n }\n resolvedPath = normalizeArray(filter(resolvedPath.split(\"/\"), function (p) {\n return !!p;\n }), !resolvedAbsolute).join(\"/\");\n return (resolvedAbsolute ? \"/\" : \"\") + resolvedPath || \".\";\n };\n exports.normalize = function (path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === \"/\";\n path = normalizeArray(filter(path.split(\"/\"), function (p) {\n return !!p;\n }), !isAbsolute).join(\"/\");\n if (!path && !isAbsolute) {\n path = \".\";\n }\n if (path && trailingSlash) {\n path += \"/\";\n }\n return (isAbsolute ? \"/\" : \"\") + path;\n };\n exports.isAbsolute = function (path) {\n return path.charAt(0) === \"/\";\n };\n exports.join = function () {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function (p, index) {\n if (typeof p !== \"string\") {\n throw new TypeError(\"Arguments to path.join must be strings\");\n }\n return p;\n }).join(\"/\"));\n };\n exports.relative = function (from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== \"\") break;\n }\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== \"\") break;\n }\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n var fromParts = trim(from.split(\"/\"));\n var toParts = trim(to.split(\"/\"));\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push(\"..\");\n }\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n return outputParts.join(\"/\");\n };\n exports.sep = \"/\";\n exports.delimiter = \":\";\n exports.dirname = function (path) {\n if (typeof path !== \"string\") path = path + \"\";\n if (path.length === 0) return \".\";\n var code = path.charCodeAt(0);\n var hasRoot = code === 47;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n matchedSlash = false;\n }\n }\n if (end === -1) return hasRoot ? \"/\" : \".\";\n if (hasRoot && end === 1) {\n return \"/\";\n }\n return path.slice(0, end);\n };\n function basename(path) {\n if (typeof path !== \"string\") path = path + \"\";\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47) {\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n matchedSlash = false;\n end = i + 1;\n }\n }\n if (end === -1) return \"\";\n return path.slice(start, end);\n }\n exports.basename = function (path, ext) {\n var f = basename(path);\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n };\n exports.extname = function (path) {\n if (typeof path !== \"string\") path = path + \"\";\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47) {\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46) {\n if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) {\n preDotState = -1;\n }\n }\n if (startDot === -1 || end === -1 || preDotState === 0 || preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return \"\";\n }\n return path.slice(startDot, end);\n };\n function filter(xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n }\n var substr = \"ab\".substr(-1) === \"b\" ? function (str, start, len) {\n return str.substr(start, len);\n } : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n };\n }).call(this, require(\"_process\"));\n }, {\n _process: 5\n }],\n 5: [function (require, module, exports) {\n var process = module.exports = {};\n var cachedSetTimeout;\n var cachedClearTimeout;\n function defaultSetTimout() {\n throw new Error(\"setTimeout has not been defined\");\n }\n function defaultClearTimeout() {\n throw new Error(\"clearTimeout has not been defined\");\n }\n (function () {\n try {\n if (typeof setTimeout === \"function\") {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === \"function\") {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n })();\n function runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n return setTimeout(fun, 0);\n }\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n return cachedSetTimeout(fun, 0);\n } catch (e) {\n try {\n return cachedSetTimeout.call(null, fun, 0);\n } catch (e) {\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n }\n function runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n return clearTimeout(marker);\n }\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n return cachedClearTimeout(marker);\n } catch (e) {\n try {\n return cachedClearTimeout.call(null, marker);\n } catch (e) {\n return cachedClearTimeout.call(this, marker);\n }\n }\n }\n var queue = [];\n var draining = false;\n var currentQueue;\n var queueIndex = -1;\n function cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n }\n function drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n var len = queue.length;\n while (len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n }\n process.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n };\n function Item(fun, array) {\n this.fun = fun;\n this.array = array;\n }\n Item.prototype.run = function () {\n this.fun.apply(null, this.array);\n };\n process.title = \"browser\";\n process.browser = true;\n process.env = {};\n process.argv = [];\n process.version = \"\";\n process.versions = {};\n function noop() {}\n process.on = noop;\n process.addListener = noop;\n process.once = noop;\n process.off = noop;\n process.removeListener = noop;\n process.removeAllListeners = noop;\n process.emit = noop;\n process.prependListener = noop;\n process.prependOnceListener = noop;\n process.listeners = function (name) {\n return [];\n };\n process.binding = function (name) {\n throw new Error(\"process.binding is not supported\");\n };\n process.cwd = function () {\n return \"/\";\n };\n process.chdir = function (dir) {\n throw new Error(\"process.chdir is not supported\");\n };\n process.umask = function () {\n return 0;\n };\n }, {}],\n 6: [function (require, module, exports) {\n module.exports = {\n name: \"ejs\",\n description: \"Embedded JavaScript templates\",\n keywords: [\"template\", \"engine\", \"ejs\"],\n version: \"3.1.8\",\n author: \"Matthew Eernisse (http://fleegix.org)\",\n license: \"Apache-2.0\",\n bin: {\n ejs: \"./bin/cli.js\"\n },\n main: \"./lib/ejs.js\",\n jsdelivr: \"ejs.min.js\",\n unpkg: \"ejs.min.js\",\n repository: {\n type: \"git\",\n url: \"git://github.com/mde/ejs.git\"\n },\n bugs: \"https://github.com/mde/ejs/issues\",\n homepage: \"https://github.com/mde/ejs\",\n dependencies: {\n jake: \"^10.8.5\"\n },\n devDependencies: {\n browserify: \"^16.5.1\",\n eslint: \"^6.8.0\",\n \"git-directory-deploy\": \"^1.5.1\",\n jsdoc: \"^4.0.2\",\n \"lru-cache\": \"^4.0.1\",\n mocha: \"^10.2.0\",\n \"uglify-js\": \"^3.3.16\"\n },\n engines: {\n node: \">=0.10.0\"\n },\n scripts: {\n test: \"mocha -u tdd\"\n }\n };\n }, {}]\n }, {}, [1])(1);\n});\n\nvar tpl = Object.create(null);\ntpl['columns/badge.html'] = '\"><%= text %>';\ntpl['columns/button.html'] = '';\ntpl['columns/link.html'] = '><%- content %>';\ntpl['columns/menu.html'] = '
    \"> <% $.each(items, function(key, item) { %> <% if (item.type === \\'link\\') { %>
  • \"<%- item.attr %>><%= item.content %>
  • <% } else if (item.type === \\'button\\') { %>
  • <% } else if (item.type === \\'divider\\') { %>

  • <% } else if (item.type === \\'header\\') { %>
  • <%= item.content %>
  • <% } %> <% }) %>
';\ntpl['columns/select_label.html'] = '';\ntpl['columns/select.html'] = '\">';\ntpl['columns/switch.html'] = '
\" value=\"record.index\"<% if (checked) { %> checked<% } %><% if (disabled) { %> disabled<% } %>>
';\ntpl['controls/button_group.html'] = '
<% $.each(buttons, function(key, button) { %> <% if (button.type === \\'link\\') { %> \"<%- button.attr %>><%= button.content %> <% } else if (button.type === \\'button\\') { %> <% } else if (button.type === \\'dropdown\\') { %>
    \"> <% $.each(button.items, function(key, item) { %> <% if (item.type === \\'link\\') { %>
  • \"><%= item.content %>
  • <% } else if (item.type === \\'button\\') { %>
  • <% } else if (item.type === \\'divider\\') { %>

  • <% } %> <% }) %>
<% } %> <% }) %>
';\ntpl['controls/button.html'] = '';\ntpl['controls/caption.html'] = '
<%= title %> <% if (description) { %> \"> <% } %> <%= value %>
';\ntpl['controls/columns-container.html'] = '
<% $.each(columns, function(key, column) { %>
<% }); %>
';\ntpl['controls/columns.html'] = '';\ntpl['controls/dropdown.html'] = '
    \"> <% $.each(items, function(key, item) { %> <% if (item.type === \\'link\\') { %>
  • \"><%= item.content %>
  • <% } else if (item.type === \\'button\\') { %>
  • <% } else if (item.type === \\'divider\\') { %>

  • <% } %> <% }) %>
';\ntpl['controls/link.html'] = '\"<%- attr %>><%- content %>';\ntpl['controls/page-jump.html'] = '
>
';\ntpl['controls/page-size.html'] = ' ';\ntpl['controls/pages.html'] = ' ';\ntpl['controls/search-clear.html'] = ' ';\ntpl['controls/search-container.html'] = ' ';\ntpl['controls/search.html'] = '
<%- btnClear %>
';\ntpl['controls/total.html'] = '
> <%= lang.total %>: <%= recordsTotal %>
';\ntpl['filters/checkbox.html'] = '
<% if (label) { %> <%= label %> <% } %> <% $.each(items, function(key, item) { %> \" name=\"<%= field %>\" value=\"<%= item.value %>\" <%= item.checked ? \\' checked\\' : \\'\\' %>> <% }); %>
';\ntpl['filters/clear.html'] = ' ';\ntpl['filters/date_month.html'] = '
<% if (label) { %> <%= label %> <% } %> >
';\ntpl['filters/date_range.html'] = '
<% if (label) { %> <%= label %> <% } %> > >
';\ntpl['filters/date.html'] = '
<% if (label) { %> <%= label %> <% } %> >
';\ntpl['filters/datetime_range.html'] = '
<% if (label) { %> <%= label %> <% } %> > >
';\ntpl['filters/datetime.html'] = '
<% if (label) { %> <%= label %> <% } %> >
';\ntpl['filters/number.html'] = '
<% if (label) { %> <%= label %> <% } %> > >
';\ntpl['filters/radio.html'] = '
<% if (label) { %> <%= label %> <% } %> <% $.each(items, function(key, item) { %> \" name=\"<%= field %>\" value=\"<%= item.value %>\" <%= item.checked ? \\' checked\\' : \\'\\' %>> <% }); %>
';\ntpl['filters/select.html'] = '
<% if (label) { %> <%= label %> <% } %>
';\ntpl['filters/switch.html'] = '
\" name=\"<%= field %>\" value=\"<%= valueY %>\" <%= checked ? \\' checked\\' : \\'\\' %>> <% if (label != \\'\\') { %> <% } %>
';\ntpl['filters/text.html'] = '
<% if (label) { %> <%= label %> <% } %> >
';\ntpl['search/checkbox.html'] = ' <% $.each(options, function(key, option) { %>
<% }); %>';\ntpl['search/date_month.html'] = ' >';\ntpl['search/date_range.html'] = ' > >';\ntpl['search/date.html'] = ' >';\ntpl['search/datetime_range.html'] = ' > >';\ntpl['search/datetime.html'] = ' >';\ntpl['search/number.html'] = ' > >';\ntpl['search/radio.html'] = '
<% $.each(options, function(key, option) { %>
<% }); %>';\ntpl['search/select.html'] = ' ';\ntpl['search/switch.html'] = '
\" name=\"<%= field %>\" value=\"<%= valueY %>\" <%= checked ? \\' checked\\' : \\'\\' %>>
';\ntpl['search/text.html'] = ' >';\ntpl['table-columns-footer.html'] = ' <% $.each(columns, function(key, column) { %> ><%- column.content %> <% }); %> ';\ntpl['table-columns-header.html'] = ' <% $.each(columns, function(key, column) { %> ><%- column.content %> <% }); %> ';\ntpl['table-columns.html'] = ' <% $.each(columns, function(key, column) { %> > <%- column.label %> <% if (column.description) { %> \"> <% } %> <% if (column.sortable === \\'asc\\') { %> <% } else if (column.sortable === \\'desc\\') { %> <% } %> <% }); %> ';\ntpl['table-control.html'] = '
\" class=\"coreui-table__control\">
';\ntpl['table-controls-footer-out.html'] = ' ';\ntpl['table-controls-footer.html'] = ' ';\ntpl['table-controls-header-out.html'] = '
<% if (controlsLeft.length) { %>
<% } %> <% if (controlsCenter.length) { %>
<% } %> <% if (controlsRight.length) { %>
<% } %>
';\ntpl['table-controls-header.html'] = '
<% if (controlsLeft.length) { %>
<% } %> <% if (controlsCenter.length) { %>
<% } %> <% if (controlsRight.length) { %>
<% } %>
';\ntpl['table-loader.html'] = '
<%= lang.loading %>
';\ntpl['table-record-expand.html'] = ' \"> ';\ntpl['table-record-group.html'] = '> \"> ';\ntpl['table-record.html'] = ' data-record-index=\"<%= record.index %>\"> <% $.each(record.fields, function(key2, field) { %> > <% }); %> ';\ntpl['table-records-empty.html'] = ' \"><%= lang.emptyRecords %> ';\ntpl['table-wrapper.html'] = '
\" class=\"coreui-table\"<% if (widthSizes) { %> style=\"<%= widthSizes.join(\\';\\') %>\"<% } %>>
overflow-x-auto<% } %>\" <% if (heightSizes) { %>style=\"<%= heightSizes.join(\\';\\') %>\"<% } %>>
';\ntpl['table.html'] = ' mb-0\"> <% $.each(colGroups, function(key, columnGroup) { %> style=\"<%= columnGroup.style %>\"<% } %>/> <% }); %> <% if (columnHeaders) { %> <%- theadAttr %>\"<% } %>> <%- columnGroupsHeader %> <%- columns %> <% } %> <% if (columnGroupsFooter != \\'\\') { %> <%- columnGroupsFooter %> <% } %>
';\n\nvar coreuiTableUtils = {\n /**\r\n * Объединение атрибутов\r\n * @param attr1\r\n * @param attr2\r\n * @returns {object}\r\n */\n mergeAttr: function mergeAttr(attr1, attr2) {\n var mergeAttr = Object.assign({}, attr1);\n if (_typeof(attr2) === 'object') {\n $.each(attr2, function (name, value) {\n if (mergeAttr.hasOwnProperty(name)) {\n if (name === 'class') {\n mergeAttr[name] += ' ' + value;\n } else if (name === 'style') {\n mergeAttr[name] += ';' + value;\n } else {\n mergeAttr[name] = value;\n }\n } else {\n mergeAttr[name] = value;\n }\n });\n }\n return mergeAttr;\n },\n /**\r\n * Проверка на число\r\n * @param num\r\n * @returns {boolean}\r\n * @private\r\n */\n isNumeric: function isNumeric(num) {\n return (typeof num === 'number' || typeof num === \"string\" && num.trim() !== '') && !isNaN(num);\n },\n /**\r\n * @returns {string}\r\n * @private\r\n */\n hashCode: function hashCode() {\n return this.crc32((new Date().getTime() + Math.random()).toString()).toString(16);\n },\n /**\r\n * Проверка на объект\r\n * @param value\r\n */\n isObject: function isObject(value) {\n return _typeof(value) === 'object' && !Array.isArray(value) && value !== null;\n },\n /**\r\n * @param str\r\n * @returns {number}\r\n * @private\r\n */\n crc32: function crc32(str) {\n for (var a, o = [], c = 0; c < 256; c++) {\n a = c;\n for (var f = 0; f < 8; f++) {\n a = 1 & a ? 3988292384 ^ a >>> 1 : a >>> 1;\n }\n o[c] = a;\n }\n for (var n = -1, t = 0; t < str.length; t++) {\n n = n >>> 8 ^ o[255 & (n ^ str.charCodeAt(t))];\n }\n return (-1 ^ n) >>> 0;\n }\n};\n\nvar coreuiTableRender = {\n /**\r\n * Сборка таблицы\r\n * @param {object} table\r\n * @private\r\n */\n renderTable: function renderTable(table) {\n var options = table.getOptions();\n var recordsElements = [];\n var columnGroupsHeader = '';\n var columnGroupsFooter = '';\n var colGroups = [];\n var columns = [];\n\n // Колонки\n if (table._columns.length > 0) {\n $.each(table._columns, function (key, column) {\n if (!column.isShow()) {\n return;\n }\n var columnOptions = column.getOptions();\n var attributes = [];\n var sortable = null;\n if (columnOptions.hasOwnProperty('field') && typeof columnOptions.field === 'string') {\n columnOptions.attrHeader = coreuiTableUtils.mergeAttr(columnOptions.attrHeader, {\n \"data-field\": columnOptions.field\n });\n }\n if (columnOptions.hasOwnProperty('fixed') && typeof columnOptions.fixed === 'string') {\n columnOptions.attrHeader = coreuiTableUtils.mergeAttr(columnOptions.attrHeader, {\n \"class\": 'coreui-table__fixed_' + columnOptions.fixed\n });\n columnOptions.attr = coreuiTableUtils.mergeAttr(columnOptions.attr, {\n \"class\": 'coreui-table__fixed_' + columnOptions.fixed\n });\n }\n if (columnOptions.type !== 'numbers') {\n if (columnOptions.hasOwnProperty('sortable') && columnOptions.sortable) {\n columnOptions.attrHeader = coreuiTableUtils.mergeAttr(columnOptions.attrHeader, {\n \"class\": 'coreui-table__sortable'\n });\n }\n if (table._sort.length > 0 && columnOptions.hasOwnProperty('field') && typeof columnOptions.field === 'string' && columnOptions.field) {\n $.each(table._sort, function (key, sortField) {\n if (columnOptions.field === sortField.field) {\n if (sortField.order === 'asc') {\n sortable = 'asc';\n } else if (sortField.order === 'desc') {\n sortable = 'desc';\n }\n return false;\n }\n });\n }\n }\n if (columnOptions.attrHeader && coreuiTableUtils.isObject(columnOptions.attrHeader)) {\n $.each(columnOptions.attrHeader, function (name, value) {\n attributes.push(name + '=\"' + value + '\"');\n });\n }\n var style = [];\n if (columnOptions.hasOwnProperty('width') && ['string', 'number'].indexOf(_typeof(columnOptions.width)) >= 0) {\n var unit = typeof columnOptions.width === 'number' ? 'px' : '';\n style.push('width:' + columnOptions.width + unit);\n }\n if (columnOptions.hasOwnProperty('minWidth') && ['string', 'number'].indexOf(_typeof(columnOptions.minWidth)) >= 0) {\n var _unit = typeof columnOptions.minWidth === 'number' ? 'px' : '';\n style.push('min-width:' + columnOptions.minWidth + _unit);\n }\n if (columnOptions.hasOwnProperty('maxWidth') && ['string', 'number'].indexOf(_typeof(columnOptions.maxWidth)) >= 0) {\n var _unit2 = typeof columnOptions.maxWidth === 'number' ? 'px' : '';\n style.push('max-width:' + columnOptions.maxWidth + _unit2);\n }\n colGroups.push({\n style: style.length > 0 ? style.join(';') : ''\n });\n columns.push({\n attr: attributes.length > 0 ? ' ' + attributes.join(' ') : '',\n label: columnOptions.hasOwnProperty('label') ? columnOptions.label : \"\",\n description: columnOptions.hasOwnProperty('description') ? columnOptions.description : '',\n sortable: sortable\n });\n });\n }\n\n // Строки\n if (!table._isRecordsRequest) {\n if (table._records.length > 0) {\n table._recordsTotal = table.getRecordsCount();\n table._recordsNumber = table._page === 1 ? 1 : (table._page - 1) * table._recordsPerPage + 1;\n recordsElements = coreuiTableRender.renderRecords(table, table._records);\n } else {\n recordsElements = coreuiTableRender.renderRecords(table, []);\n }\n }\n if (options.hasOwnProperty('columnGroupsHeader') && Array.isArray(options.columnGroupsHeader) && options.columnGroupsHeader.length > 0) {\n var rows = [];\n $.each(options.columnGroupsHeader, function (key, headerRow) {\n if (Array.isArray(headerRow)) {\n var cells = [];\n $.each(headerRow, function (key, headerColumn) {\n if (coreuiTableUtils.isObject(headerColumn)) {\n var attributes = [];\n if (headerColumn.hasOwnProperty('attr') && coreuiTableUtils.isObject(headerColumn.attr)) {\n $.each(headerColumn.attr, function (name, value) {\n attributes.push(name + '=\"' + value + '\"');\n });\n }\n cells.push({\n content: headerColumn.hasOwnProperty('content') ? headerColumn.content : '',\n description: headerColumn.hasOwnProperty('description') ? headerColumn.description : '',\n attr: attributes.length > 0 ? ' ' + attributes.join(' ') : ''\n });\n }\n });\n rows.push(ejs.render(tpl['table-columns-header.html'], {\n columns: cells\n }));\n }\n });\n columnGroupsHeader = rows.join('');\n }\n if (options.hasOwnProperty('columnGroupsFooter') && Array.isArray(options.columnGroupsFooter) && options.columnGroupsFooter.length > 0) {\n var _rows = [];\n $.each(options.columnGroupsFooter, function (key, footerRow) {\n if (Array.isArray(footerRow)) {\n var cells = [];\n $.each(footerRow, function (key, footerColumn) {\n if (coreuiTableUtils.isObject(footerColumn)) {\n var attributes = [];\n if (footerColumn.hasOwnProperty('attr') && coreuiTableUtils.isObject(footerColumn.attr)) {\n $.each(footerColumn.attr, function (name, value) {\n attributes.push(name + '=\"' + value + '\"');\n });\n }\n cells.push({\n content: footerColumn.hasOwnProperty('content') ? footerColumn.content : '',\n description: footerColumn.hasOwnProperty('description') ? footerColumn.description : '',\n attr: attributes.length > 0 ? ' ' + attributes.join(' ') : ''\n });\n }\n });\n _rows.push(ejs.render(tpl['table-columns-footer.html'], {\n columns: cells\n }));\n }\n });\n columnGroupsFooter = _rows.join('');\n }\n var classes = [];\n if (typeof options[\"class\"] === 'string' && options[\"class\"]) {\n classes.push(options[\"class\"]);\n }\n if (!columnGroupsFooter) {\n classes.push('empty-tfoot');\n }\n var htmlColumns = ejs.render(tpl['table-columns.html'], {\n columns: columns\n });\n var theadAttr = [];\n if (options.hasOwnProperty('theadTop') && ['string', 'number'].indexOf(_typeof(options.theadTop)) >= 0) {\n var unit = coreuiTableUtils.isNumeric(options.theadTop) ? 'px' : '';\n theadAttr.push('style=\"top:' + options.theadTop + unit + '\"');\n }\n var tableElement = $(ejs.render(tpl['table.html'], {\n classes: classes.join(' '),\n theadAttr: theadAttr.length > 0 ? theadAttr.join(' ') : '',\n columnHeaders: options.columnHeaders,\n columnGroupsHeader: columnGroupsHeader,\n colGroups: colGroups,\n columns: htmlColumns,\n columnGroupsFooter: columnGroupsFooter\n }));\n var tbody = tableElement.find('tbody');\n $.each(recordsElements, function (key, recordElement) {\n tbody.append(recordElement);\n });\n return tableElement;\n },\n /**\r\n * Сборка записей таблицы\r\n * @param {object} table\r\n * @param {Array} records\r\n * @return {Array}\r\n */\n renderRecords: function renderRecords(table, records) {\n var renderRecords = [];\n if (records.length > 0) {\n var that = this;\n var options = table.getOptions();\n var group = options.hasOwnProperty('group') && coreuiTableUtils.isObject(options.group) && options.group.hasOwnProperty('field') && typeof options.group.field === 'string' && options.group.field ? options.group : null;\n var groupValue = null;\n $.each(records, function (key, record) {\n if (record.show) {\n if (group && record.data.hasOwnProperty(group.field) && ['string', 'number'].indexOf(_typeof(record.data[group.field])) >= 0 && groupValue != record.data[group.field]) {\n groupValue = record.data[group.field];\n renderRecords.push(that.renderGroup(table, group, record));\n }\n renderRecords.push(that.renderRecord(table, record));\n table._recordsNumber++;\n }\n });\n }\n if (renderRecords.length === 0) {\n renderRecords = [$(ejs.render(tpl['table-records-empty.html'], {\n columnsCount: table._countColumnsShow,\n lang: table.getLang()\n }))];\n }\n return renderRecords;\n },\n /**\r\n * Сборка записи таблицы\r\n * @param {object} table\r\n * @param {object} record\r\n * @returns {{ attr: (string), fields: (object) }}}\r\n * @private\r\n */\n renderRecord: function renderRecord(table, record) {\n var that = this;\n var options = table.getOptions();\n var fields = [];\n var recordAttr = {\n \"class\": 'coreui-table__record'\n };\n record = $.extend(true, {}, record);\n $.each(table._columns, function (key, column) {\n if (!column.isShow()) {\n return;\n }\n var field = that.renderField(table, column, record);\n if (field) {\n fields.push(field);\n }\n });\n if (typeof options.onClickUrl === 'string' && options.onClickUrl) {\n recordAttr[\"class\"] += ' coreui-table_pointer';\n }\n if (record.meta) {\n recordAttr = coreuiTableUtils.mergeAttr(recordAttr, record.meta.attr);\n }\n var attributes = [];\n $.each(recordAttr, function (name, value) {\n attributes.push(name + '=\"' + value + '\"');\n });\n var recordElement = $(ejs.render(tpl['table-record.html'], {\n record: {\n attr: attributes.length > 0 ? ' ' + attributes.join(' ') : '',\n index: record.index,\n fields: fields\n }\n }));\n $.each(fields, function (key, field) {\n recordElement.find(' > td:eq(' + key + ')').html(field.content);\n });\n return recordElement;\n },\n /**\r\n * Сборка ячейки таблицы\r\n * @param {object} table\r\n * @param {object} column\r\n * @param {object} record\r\n * @returns {{ attr: (string), content: (string) }}\r\n * @private\r\n */\n renderField: function renderField(table, column, record) {\n var columnOptions = column.getOptions();\n var columnField = typeof columnOptions.field === 'string' ? columnOptions.field : null;\n var content = null;\n var fieldProps = record.meta && record.meta.hasOwnProperty('fields') && record.meta.fields.hasOwnProperty(columnField) ? record.meta.fields[columnField] : null;\n var fieldAttr = columnOptions.hasOwnProperty('attr') && coreuiTableUtils.isObject(columnOptions.attr) ? columnOptions.attr : {};\n if (fieldProps && coreuiTableUtils.isObject(fieldProps)) {\n if (fieldProps && fieldProps.hasOwnProperty('show') && !fieldProps.show) {\n return null;\n }\n if (coreuiTableUtils.isObject(fieldProps.attr)) {\n fieldAttr = coreuiTableUtils.mergeAttr(fieldAttr, fieldProps.attr);\n }\n }\n if (columnOptions.hasOwnProperty('fixed') && typeof columnOptions.fixed === 'string') {\n fieldAttr = coreuiTableUtils.mergeAttr(fieldAttr, {\n \"class\": 'coreui-table__fixed_' + columnOptions.fixed\n });\n }\n if (typeof columnOptions.render === 'function') {\n content = columnOptions.render({\n data: record.data,\n meta: record.meta,\n index: record.index\n }, table);\n } else {\n content = columnField && record.data.hasOwnProperty(columnField) ? record.data[columnField] : null;\n }\n content = column.render(content, record);\n var fieldAttrResult = [];\n $.each(fieldAttr, function (name, value) {\n fieldAttrResult.push(name + '=\"' + value + '\"');\n });\n return {\n attr: fieldAttrResult.length > 0 ? ' ' + fieldAttrResult.join(' ') : '',\n content: content\n };\n },\n /**\r\n * Сборка записи-группы\r\n * @param {object} table\r\n * @param {object} group\r\n * @param {object} record\r\n * @returns {{ attr: (string), fields: (object) }}}\r\n * @private\r\n */\n renderGroup: function renderGroup(table, group, record) {\n var attr = group.hasOwnProperty('attr') && coreuiTableUtils.isObject(group.attr) ? group.attr : {};\n if (attr.hasOwnProperty('class') && typeof attr[\"class\"] === 'string') {\n attr[\"class\"] += ' coreui-table__record-group';\n } else {\n attr[\"class\"] = 'coreui-table__record-group';\n }\n var attributes = [];\n $.each(attr, function (name, value) {\n if (typeof value === 'string') {\n attributes.push(name + '=\"' + value + '\"');\n }\n });\n var recordElement = $(ejs.render(tpl['table-record-group.html'], {\n attr: attributes.length > 0 ? ' ' + attributes.join(' ') : '',\n colspan: table._countColumnsShow\n }));\n var content = record.data[group.field];\n if (group.hasOwnProperty('render') && typeof group.render === 'function') {\n var renderContent = group.render(record);\n if (renderContent) {\n content = renderContent;\n }\n }\n recordElement.find(' > td').html(content);\n return recordElement;\n },\n /**\r\n * Сборка раскрывающейся строки\r\n * @param {object} table\r\n * @param {Array|string} content\r\n */\n renderExpand: function renderExpand(table, content) {\n if (_typeof(content) === 'object') {\n content = coreuiTableRender.renderComponents(table, content, 'record_expand_show');\n }\n var expandRecord = $(ejs.render(tpl['table-record-expand.html'], {\n colspan: table._countColumnsShow\n }));\n if (['string', 'number'].indexOf(_typeof(content)) >= 0) {\n expandRecord.find('td').html(content);\n } else if (Array.isArray(content)) {\n $.each(content, function (key, item) {\n if (['string', 'number'].indexOf(_typeof(item)) >= 0 || item instanceof HTMLElement || window.hasOwnProperty('jQuery') && item instanceof jQuery) {\n expandRecord.find('td').append(item);\n }\n });\n }\n return expandRecord;\n },\n /**\r\n * Сборка элемента управления\r\n * @param {object} table\r\n * @param {object} control\r\n * @private\r\n * @returns {HTMLElement|jQuery}\r\n */\n renderControl: function renderControl(table, control) {\n if (coreuiTableUtils.isObject(control)) {\n var controlElement = $(ejs.render(tpl['table-control.html'], {\n id: control.getId()\n }));\n controlElement.append(control.render());\n if (control.hasOwnProperty('initEvents') && typeof control.initEvents === 'function') {\n table.on('container_show', function () {\n control.initEvents();\n });\n }\n return controlElement;\n }\n },\n /**\r\n * Формирование контента компонента\r\n * @param {object} table\r\n * @param {object} components\r\n * @param {string} eventName\r\n * @return {Array}\r\n */\n renderComponents: function renderComponents(table, components, eventName) {\n var result = [];\n if (components instanceof Object) {\n if (!Array.isArray(components)) {\n components = [components];\n }\n for (var i = 0; i < components.length; i++) {\n if (typeof components[i] === 'string') {\n result.push(components[i]);\n } else if (!Array.isArray(components[i]) && components[i].hasOwnProperty('component') && components[i].component.substring(0, 6) === 'coreui') {\n var name = components[i].component.split('.')[1];\n if (CoreUI.hasOwnProperty(name) && coreuiTableUtils.isObject(CoreUI[name])) {\n var instance = CoreUI[name].create(components[i]);\n result.push(instance.render());\n if (eventName) {\n table.on(eventName, instance.initEvents, instance, true);\n }\n }\n }\n }\n }\n return result;\n }\n};\n\nvar coreuiTablePrivate = {\n /**\r\n * Инициализация колонок\r\n * @param {Object} table\r\n * @param {Array} columns\r\n * @private\r\n */\n initColumns: function initColumns(table, columns) {\n $.each(columns, function (key, column) {\n if (typeof column.type === 'undefined' || !coreuiTable$1.columns.hasOwnProperty(column.type)) {\n column.type = 'text';\n }\n if (!column.hasOwnProperty('show') || typeof column.show !== 'boolean') {\n column.show = true;\n }\n if (column.hasOwnProperty('fixed') && typeof column.fixed === 'string') {\n table._options.overflow = true;\n }\n var columnInstance = $.extend(true, {}, coreuiTable$1.columns[column.type]);\n columnInstance.init(table, column);\n table._columns.push(columnInstance);\n if (columnInstance.isShow()) {\n table._countColumnsShow++;\n }\n });\n },\n /**\r\n * Инициализация поисковых полей\r\n * @param {Object} table\r\n * @param {Array} searchControls\r\n * @private\r\n */\n initSearch: function initSearch(table, searchControls) {\n var options = table.getOptions();\n var searchValues = options.saveState && options.id ? coreuiTablePrivate.getStorageField(table.getId(), 'search') : null;\n $.each(searchControls, function (key, control) {\n if (!coreuiTableUtils.isObject(control)) {\n control = {};\n }\n if (!control.hasOwnProperty('type') || typeof control.type !== 'string' || !coreuiTable$1.search.hasOwnProperty(control.type)) {\n control.type = 'text';\n }\n if (options.saveState && options.id) {\n control.value = null;\n if (Array.isArray(searchValues) && control.hasOwnProperty('field')) {\n $.each(searchValues, function (key, search) {\n if (coreuiTableUtils.isObject(search) && search.hasOwnProperty('field') && search.hasOwnProperty('value') && search.field && search.field === control.field) {\n control.value = search.value;\n return false;\n }\n });\n }\n }\n var controlInstance = $.extend(true, {}, coreuiTable$1.search[control.type]);\n controlInstance.init(table, control);\n table._search.push(controlInstance);\n });\n },\n /**\r\n * Инициализация контролов и фильтров\r\n * @param {Object} table\r\n * @param {Array} rows\r\n * @param {string} position\r\n * @private\r\n */\n initControls: function initControls(table, rows, position) {\n var that = this;\n $.each(rows, function (key, row) {\n var type = 'in';\n var controlsLeft = [];\n var controlsCenter = [];\n var controlsRight = [];\n if (typeof row.type === 'string' && ['in', 'out'].indexOf(row.type.toLowerCase()) >= 0) {\n type = row.type.toLowerCase();\n }\n if (row.hasOwnProperty('left') && Array.isArray(row.left)) {\n $.each(row.left, function (key, control) {\n var instance = that.initControl(table, control);\n if (coreuiTableUtils.isObject(instance)) {\n controlsLeft.push(instance);\n }\n });\n }\n if (row.hasOwnProperty('center') && Array.isArray(row.center)) {\n $.each(row.center, function (key, control) {\n var instance = that.initControl(table, control);\n if (coreuiTableUtils.isObject(instance)) {\n controlsCenter.push(instance);\n }\n });\n }\n if (row.hasOwnProperty('right') && Array.isArray(row.right)) {\n $.each(row.right, function (key, control) {\n var instance = that.initControl(table, control);\n if (coreuiTableUtils.isObject(instance)) {\n controlsRight.push(instance);\n }\n });\n }\n if (controlsLeft.length > 0 || controlsCenter.length > 0 || controlsRight.length > 0) {\n table._controlsPositions[position].push({\n type: type,\n left: controlsLeft,\n center: controlsCenter,\n right: controlsRight\n });\n }\n });\n },\n /**\r\n * Инициализация контрола или фильтра\r\n * @param {Object} table\r\n * @param {object} control\r\n * @private\r\n */\n initControl: function initControl(table, control) {\n var instance = null;\n if (coreuiTableUtils.isObject(control) && typeof control.type === 'string') {\n if (coreuiTable$1.controls.hasOwnProperty(control.type)) {\n instance = $.extend(true, {}, coreuiTable$1.controls[control.type]);\n instance.init(table, control);\n table._controls.push(instance);\n } else if (control.type.indexOf('filter:') === 0) {\n var filterName = control.type.substring(7);\n if (coreuiTable$1.filters.hasOwnProperty(filterName)) {\n if (control.hasOwnProperty('field')) {\n var options = table.getOptions();\n if (options.saveState && options.id) {\n var filterValues = options.saveState && options.id ? coreuiTablePrivate.getStorageField(table.getId(), 'filters') : null;\n control.value = null;\n if (Array.isArray(filterValues)) {\n $.each(filterValues, function (key, filter) {\n if (coreuiTableUtils.isObject(filter) && filter.hasOwnProperty('field') && filter.hasOwnProperty('value') && filter.field && filter.field === control.field) {\n control.value = filter.value;\n return false;\n }\n });\n }\n }\n }\n instance = $.extend(true, {}, coreuiTable$1.filters[filterName]);\n instance.init(table, control);\n table._filters.push(instance);\n }\n }\n }\n return instance;\n },\n /**\r\n * Инициализация сортировки\r\n * @param {Object} table\r\n * @param {Array} sort\r\n * @private\r\n */\n initSort: function initSort(table, sort) {\n if (Array.isArray(sort) && sort.length > 0) {\n $.each(sort, function (key, sortField) {\n if (coreuiTableUtils.isObject(sortField) && sortField.hasOwnProperty('field') && sortField.hasOwnProperty('order') && typeof sortField.field === 'string' && typeof sortField.order === 'string' && sortField.field && sortField.order && ['asc', 'desc'].indexOf(sortField.order) >= 0) {\n table._sort.push({\n field: sortField.field,\n order: sortField.order\n });\n }\n });\n }\n },\n /**\r\n * Установка записей\r\n * @param {Object} table\r\n * @param {Array} records\r\n * @private\r\n */\n setRecords: function setRecords(table, records) {\n table._recordsIndex = 1;\n table._records = [];\n var that = this;\n $.each(records, function (key, record) {\n that.addRecord(table, record);\n });\n },\n /**\r\n * Добавление новой записи\r\n * @param {object} table\r\n * @param {object} data\r\n * @param {number} afterIndex\r\n * @return {object|null}\r\n * @private\r\n */\n addRecord: function addRecord(table, data, afterIndex) {\n if (coreuiTableUtils.isObject(data)) {\n data = $.extend(true, {}, data);\n var meta = data.hasOwnProperty('_meta') && coreuiTableUtils.isObject(data._meta) ? data._meta : null;\n if (meta) {\n delete data._meta;\n }\n var record = {\n index: table._recordsIndex++,\n data: data,\n show: true,\n meta: meta,\n seq: table._seq++\n };\n if (typeof afterIndex === 'number') {\n if (afterIndex === 0) {\n table._records.splice(0, 0, record);\n return record;\n } else {\n var index = null;\n $.each(table._records, function (key, record) {\n if (afterIndex === record.index) {\n index = key;\n return false;\n }\n });\n if (index !== null) {\n table._records.splice(index, 0, record);\n return record;\n }\n }\n } else {\n table._records.push(record);\n return record;\n }\n }\n return null;\n },\n /**\r\n * Добавление новой записи перед указанной\r\n * @param {object} table\r\n * @param {object} data\r\n * @param {number} index\r\n * @return {object|null}\r\n * @private\r\n */\n addRecordBefore: function addRecordBefore(table, data, index) {\n if (coreuiTableUtils.isObject(data) && typeof index === 'number') {\n data = $.extend(true, {}, data);\n var meta = data.hasOwnProperty('_meta') && coreuiTableUtils.isObject(data._meta) ? data._meta : null;\n if (meta) {\n delete data._meta;\n }\n var record = {\n index: table._recordsIndex++,\n data: data,\n show: true,\n meta: meta,\n seq: table._seq++\n };\n var issetKey = false;\n var keyBefore = null;\n $.each(table._records, function (key, record) {\n if (index === record.index) {\n issetKey = true;\n return false;\n }\n keyBefore = key;\n });\n if (issetKey && keyBefore) {\n table._records.splice(keyBefore, 0, record);\n return record;\n }\n }\n return null;\n },\n /**\r\n * Проверка подходит ли запись под поисковые данные\r\n * @param {Array} filters\r\n * @param {object} recordData\r\n * @return {boolean}\r\n * @private\r\n */\n isFilteredRecord: function isFilteredRecord(filters, recordData) {\n var isShow = true;\n $.each(filters, function (key, filter) {\n if (recordData.hasOwnProperty(filter.field) && ['string', 'number'].indexOf(_typeof(recordData[filter.field])) >= 0) {\n if (['string', 'number'].indexOf(_typeof(filter.value)) >= 0) {\n if (filter.hasOwnProperty('alg') && filter.alg === 'strict') {\n if (recordData[filter.field].toString().toLowerCase() != filter.value.toString().toLowerCase()) {\n isShow = false;\n return false;\n }\n } else if (recordData[filter.field].toString().toLowerCase().indexOf(filter.value.toString().toLowerCase()) < 0) {\n isShow = false;\n return false;\n }\n } else if (Array.isArray(filter.value)) {\n if (filter.value.indexOf(recordData[filter.field].toString()) < 0) {\n isShow = false;\n return false;\n }\n } else if (coreuiTableUtils.isObject(filter.value) && filter.value.hasOwnProperty('start') && filter.value.hasOwnProperty('end')) {\n var issetStart = ['string', 'number'].indexOf(_typeof(filter.value.start)) >= 0;\n var issetEnd = ['string', 'number'].indexOf(_typeof(filter.value.end)) >= 0;\n if (issetStart && issetEnd) {\n if (recordData[filter.field] < filter.value.start || filter.value.end < recordData[filter.field]) {\n isShow = false;\n return false;\n }\n } else if (issetStart) {\n if (filter.value.start > recordData[filter.field]) {\n isShow = false;\n return false;\n }\n } else if (issetEnd) {\n if (filter.value.end < recordData[filter.field]) {\n isShow = false;\n return false;\n }\n }\n }\n } else {\n isShow = false;\n return false;\n }\n });\n return isShow;\n },\n /**\r\n * Выполнения зарегистрированных функций в указанном событии\r\n * @param {object} table\r\n * @param {string} name\r\n * @param {Array} params\r\n * @private\r\n */\n _trigger: function _trigger(table, name, params) {\n params = params || [];\n if (table._events.hasOwnProperty(name) && table._events[name].length > 0) {\n for (var i = 0; i < table._events[name].length; i++) {\n var callback = table._events[name][i].callback;\n var context = table._events[name][i].context ? table._events[name][i].context : table;\n callback.apply(context, params);\n if (table._events[name][i].singleExec) {\n table._events[name].splice(i, 1);\n i--;\n }\n }\n }\n },\n /**\r\n * Сортировка записей по seq\r\n * @param {Array} records\r\n * @return {*}\r\n */\n sortRecordsBySeq: function sortRecordsBySeq(records) {\n return records.sort(function (a, b) {\n return a.seq - b.seq;\n });\n },\n /**\r\n * Сортировка записей по указанным полям\r\n * @param records\r\n * @param fields\r\n */\n sortRecordsByFields: function sortRecordsByFields(records, fields) {\n return records.sort(function (a, b) {\n for (var i = 0; i < fields.length; i++) {\n var issetAField = a.data.hasOwnProperty(fields[i].field);\n var issetBField = b.data.hasOwnProperty(fields[i].field);\n if (!issetAField && !issetBField) {\n return 0;\n } else if (!issetAField) {\n return 1;\n } else if (!issetBField) {\n return -1;\n }\n var aVal = a.data[fields[i].field];\n var bVal = b.data[fields[i].field];\n if (aVal === null || aVal === undefined || typeof aVal === \"function\") {\n aVal = '';\n } else if (_typeof(aVal) === 'object') {\n aVal = JSON.stringify(aVal);\n }\n if (bVal === null || bVal === undefined || typeof bVal === \"function\") {\n bVal = '';\n } else if (_typeof(bVal) === 'object') {\n bVal = JSON.stringify(bVal);\n }\n var val = aVal < bVal ? -1 : aVal > bVal ? 1 : 0;\n if (fields[i].order === \"desc\") {\n val = val * -1;\n }\n if (val !== 0) {\n return val;\n }\n }\n });\n },\n /**\r\n * Установка сортировки для указанных колонок\r\n * @param {object} table\r\n * @param {Array} sort\r\n */\n setColumnsSort: function setColumnsSort(table, sort) {\n var thead = coreuiTableElements.getTableThead(table.getId());\n $.each(table._columns, function (key, column) {\n var options = column.getOptions();\n if (options.hasOwnProperty('field') && options.hasOwnProperty('sortable') && typeof options.field === 'string' && options.sortable) {\n var sortColumn = null;\n if (Array.isArray(sort)) {\n $.each(sort, function (key, sortItem) {\n if (coreuiTableUtils.isObject(sortItem) && sortItem.hasOwnProperty('field') && sortItem.hasOwnProperty('order') && typeof sortItem.field === 'string' && typeof sortItem.order === 'string' && options.field === sortItem.field) {\n sortColumn = {\n field: sortItem.field,\n order: sortItem.order\n };\n }\n });\n }\n var columnElement = thead.find('[data-field=\"' + options.field + '\"]');\n columnElement.find('.coreui-table__column-sort').remove();\n if (sortColumn !== null) {\n if (sortColumn.order === 'asc') {\n columnElement.append('');\n } else {\n columnElement.append('');\n }\n }\n }\n });\n },\n /**\r\n * Получение данных из хранилища\r\n * @param {string} tableId\r\n * @return {object|null}\r\n */\n getStorage: function getStorage(tableId) {\n var storage = localStorage.getItem('coreui_table');\n try {\n if (typeof storage === 'string' && storage) {\n storage = JSON.parse(storage);\n if (coreuiTableUtils.isObject(storage)) {\n return tableId && typeof tableId === 'string' ? storage.hasOwnProperty(tableId) ? storage[tableId] : null : storage;\n }\n }\n return null;\n } catch (e) {\n return null;\n }\n },\n /**\r\n * Сохранение данных в хранилище\r\n * @param {string} tableId\r\n * @param {object|null} storage\r\n */\n setStorage: function setStorage(tableId, storage) {\n if (typeof tableId !== 'string' || !tableId) {\n return;\n }\n var storageAll = this.getStorage();\n if (coreuiTableUtils.isObject(storageAll)) {\n if (storageAll.hasOwnProperty(tableId)) {\n if (storage) {\n storageAll[tableId] = storage;\n } else {\n delete storageAll[tableId];\n }\n } else if (storage) {\n storageAll[tableId] = storage;\n }\n }\n localStorage.setItem('coreui_table', JSON.stringify(storageAll || {}));\n },\n /**\r\n * Получение поля из хранилища\r\n * @param tableId\r\n * @param field\r\n * @return {*|null}\r\n */\n getStorageField: function getStorageField(tableId, field) {\n var storage = this.getStorage(tableId) || {};\n return storage.hasOwnProperty(field) ? storage[field] : null;\n },\n /**\r\n * Сохранение поля в хранилище\r\n * @param tableId\r\n * @param field\r\n * @param data\r\n */\n setStorageField: function setStorageField(tableId, field, data) {\n var storage = this.getStorage(tableId) || {};\n if (data === null) {\n if (storage.hasOwnProperty(field)) {\n delete storage[field];\n }\n } else {\n storage[field] = data;\n }\n this.setStorage(tableId, storage);\n }\n};\n\nvar coreuiTableElements = {\n /**\r\n * Получение контейнера таблицы\r\n * @param {string} tableId\r\n * @return {jQuery}\r\n */\n getContainer: function getContainer(tableId) {\n return $('#coreui-table-' + tableId + ' > .coreui-table__container');\n },\n /**\r\n * Получение обертки таблицы\r\n * @param {string} tableId\r\n * @return {jQuery}\r\n */\n getLock: function getLock(tableId) {\n return $('#coreui-table-' + tableId + ' > .coreui-table__container > .coreui-table-lock');\n },\n /**\r\n * Получение обертки таблицы\r\n * @param {string} tableId\r\n * @return {jQuery}\r\n */\n getWrapper: function getWrapper(tableId) {\n return $('#coreui-table-' + tableId + ' > .coreui-table__container > .coreui-table__wrapper');\n },\n /**\r\n * Получение поискового контейнера\r\n * @param {string} tableId\r\n * @return {jQuery}\r\n */\n getSearchContainer: function getSearchContainer(tableId) {\n return $('#coreui-table-' + tableId + ' > .coreui-table__container > .coreui-table__wrapper > .coreui-table__search');\n },\n /**\r\n * Получение поискового контейнера\r\n * @param {string} tableId\r\n * @return {jQuery}\r\n */\n getColumnsContainer: function getColumnsContainer(tableId) {\n return $('#coreui-table-' + tableId + ' > .coreui-table__container > .coreui-table__wrapper > .coreui-table__columns');\n },\n /**\r\n * Получение контейнера поискового контрола\r\n * @param {string} tableId\r\n * @param {string} controlId\r\n * @return {jQuery}\r\n */\n getSearchControl: function getSearchControl(tableId, controlId) {\n return $('#coreui-table-' + tableId + ' > .coreui-table__container > .coreui-table__wrapper > .coreui-table__search .search-control-' + controlId);\n },\n /**\r\n * Получение контейнера контрола\r\n * @param {string} tableId\r\n * @param {string} controlId\r\n * @return {jQuery}\r\n */\n getControl: function getControl(tableId, controlId) {\n return $('#coreui-table-' + tableId + ' #coreui-table-control-' + controlId);\n },\n /**\r\n * Получение таблицы\r\n * @param {string} tableId\r\n * @return {jQuery}\r\n */\n getTable: function getTable(tableId) {\n return $('#coreui-table-' + tableId + ' > .coreui-table__container > .coreui-table__wrapper > table');\n },\n /**\r\n * Получение тела таблицы\r\n * @param {string} tableId\r\n * @return {jQuery}\r\n */\n getTableTbody: function getTableTbody(tableId) {\n return $('#coreui-table-' + tableId + ' > .coreui-table__container > .coreui-table__wrapper > table > tbody');\n },\n /**\r\n * Получение заголовков таблицы\r\n * @param {string} tableId\r\n * @return {jQuery}\r\n */\n getTableThead: function getTableThead(tableId) {\n return $('#coreui-table-' + tableId + ' > .coreui-table__container > .coreui-table__wrapper > table > thead');\n },\n /**\r\n * Получение ячеек с сортировкой по таблице\r\n * @param {string} tableId\r\n * @return {jQuery}\r\n */\n getTableSortable: function getTableSortable(tableId) {\n return $('#coreui-table-' + tableId + ' > .coreui-table__container > .coreui-table__wrapper > table > thead > tr > td.coreui-table__sortable');\n },\n /**\r\n * Получение строк записей\r\n * @param {string} tableId\r\n * @return {jQuery}\r\n */\n getTrRecords: function getTrRecords(tableId) {\n return $('#coreui-table-' + tableId + ' > .coreui-table__container > .coreui-table__wrapper > table > tbody > tr.coreui-table__record');\n },\n /**\r\n * Получение элемента строки по ключу\r\n * @param {string} tableId\r\n * @param {int} index\r\n * @return {jQuery}\r\n */\n getTrByIndex: function getTrByIndex(tableId, index) {\n return $('#coreui-table-' + tableId + ' > .coreui-table__container > .coreui-table__wrapper > table > tbody > tr[data-record-index=\"' + index + '\"]');\n },\n /**\r\n * Получение контента под строкой\r\n * @param {jQuery} recordElement\r\n * @return {jQuery}\r\n */\n getExpandRow: function getExpandRow(recordElement) {\n return recordElement.next().hasClass('coreui-table__record-expanded') ? recordElement.next() : null;\n },\n /**\r\n * Добавление контента под строкой\r\n * @param {object} table\r\n * @param {jQuery} recordElement\r\n * @param {Array|string} content\r\n * @return {jQuery}\r\n */\n addExpandRow: function addExpandRow(table, recordElement, content) {\n var expandRecord = coreuiTableRender.renderExpand(table, content, 'record_expand_show');\n recordElement.after(expandRecord);\n recordElement.next().show('fast');\n recordElement.addClass('record-expanded');\n var recordIndex = recordElement.data('record-index');\n coreuiTablePrivate._trigger(table, 'record_expand_show', [recordIndex]);\n },\n /**\r\n * Скрытие контента под строкой\r\n * @param {jQuery} recordExpanded\r\n * @return {jQuery}\r\n */\n hideExpandRow: function hideExpandRow(recordExpanded) {\n recordExpanded.hide('fast');\n },\n /**\r\n * Показ контента под строкой\r\n * @param {jQuery} recordExpanded\r\n * @return {jQuery}\r\n */\n showExpandRow: function showExpandRow(recordExpanded) {\n recordExpanded.show('fast');\n },\n /**\r\n * Удаление контента под строкой\r\n * @param {jQuery} recordExpanded\r\n * @return {jQuery}\r\n */\n removeExpandRow: function removeExpandRow(recordExpanded) {\n recordExpanded.hide('fast', function () {\n $(this).remove();\n });\n },\n /**\r\n * Получение выбранных на таблице элементов\r\n * @param {string} tableId\r\n * @return {Array}\r\n */\n getSelectedIndexes: function getSelectedIndexes(tableId) {\n var indexes = [];\n $('#coreui-table-' + tableId + ' > .coreui-table__container > .coreui-table__wrapper > table > tbody > tr.coreui-table__record > td.coreui-table__select_container > .coreui-table__select:checked').each(function (key, element) {\n indexes.push($(element).val());\n });\n return indexes;\n },\n /**\r\n * Получение выбранных на таблице элементов\r\n * @param {string} tableId\r\n * @return {Array}\r\n */\n getRowsSwitches: function getRowsSwitches(tableId) {\n return $('#coreui-table-' + tableId + ' > .coreui-table__container > .coreui-table__wrapper > table > tbody > tr.coreui-table__record > td.coreui-table__switch_container');\n },\n /**\r\n * Получение элементов выбора строк\r\n * @param {string} tableId\r\n * @return {Array}\r\n */\n getRowsSelects: function getRowsSelects(tableId) {\n return $('#coreui-table-' + tableId + ' > .coreui-table__container > .coreui-table__wrapper > table > tbody > tr.coreui-table__record > td.coreui-table__select_container');\n },\n /**\r\n * Получение элемента для выбора всех строк\r\n * @param {string} tableId\r\n * @return {Array}\r\n */\n getRowsSelectAll: function getRowsSelectAll(tableId) {\n return $('#coreui-table-' + tableId + ' > .coreui-table__container > .coreui-table__wrapper > table > thead > tr > td .coreui-table__select-all');\n },\n /**\r\n * Получение элементов для раскрытия ячеек\r\n * @param {string} tableId\r\n * @return {Array}\r\n */\n getNoWrapToggles: function getNoWrapToggles(tableId) {\n return $('#coreui-table-' + tableId + ' > .coreui-table__container > .coreui-table__wrapper > table > tbody > tr > td.coreui_table__no-wrap > i.toggle');\n },\n /**\r\n * Выделение строки в таблице\r\n * @param {jQuery} tr\r\n */\n selectTr: function selectTr(tr) {\n tr.addClass('table-primary');\n $('.coreui-table__select', tr).prop('checked', true);\n },\n /**\r\n * Выделение всех строк в таблице\r\n * @param {string} tableId\r\n */\n selectTrAll: function selectTrAll(tableId) {\n var tableContainer = '#coreui-table-' + tableId + ' > .coreui-table__container > .coreui-table__wrapper > table';\n $(tableContainer + ' > thead > tr > td > .coreui-table__select-all').prop('checked', true);\n $(tableContainer + ' > tbody > tr.coreui-table__record').addClass('table-primary');\n $(tableContainer + ' > tbody > tr.coreui-table__record > td > .coreui-table__select').prop('checked', true);\n },\n /**\r\n * Снятие выделение строки в таблице\r\n * @param {jQuery} tr\r\n */\n unselectTr: function unselectTr(tr) {\n $(tr).removeClass('table-primary');\n $('.coreui-table__select', tr).prop('checked', false);\n },\n /**\r\n * Снятие выделение со всех строк в таблице\r\n * @param {string} tableId\r\n */\n unselectTrAll: function unselectTrAll(tableId) {\n var tableContainer = '#coreui-table-' + tableId + ' > .coreui-table__container > .coreui-table__wrapper > table';\n $(tableContainer + ' > thead > tr > td > .coreui-table__select-all').prop('checked', false);\n $(tableContainer + ' > tbody > tr.coreui-table__record').removeClass('table-primary');\n $(tableContainer + ' > tbody > tr.coreui-table__record > td.coreui-table__select_container > .coreui-table__select').prop('checked', false);\n },\n /**\r\n * Фиксация колонок слева\r\n * @param {string} tableId\r\n */\n fixedColsLeft: function fixedColsLeft(tableId) {\n var tableWrapper = '#coreui-table-' + tableId + ' > .coreui-table__container > .coreui-table__wrapper';\n var colOffset = 0;\n $(tableWrapper + ' > table > thead > tr:last-child > td.coreui-table__fixed_left').each(function () {\n var index = $(this).index() + 1;\n if (index !== 1) {\n $(tableWrapper + ' > table > thead > tr:last-child > td:nth-child(' + index + ')').css('left', colOffset + 'px');\n $(tableWrapper + ' > table > tbody > tr > td:nth-child(' + index + ')')\n //.addClass('coreui-table__fixed_left')\n .css('left', colOffset + 'px');\n }\n colOffset += $(this).outerWidth();\n });\n },\n /**\r\n * Фиксация колонок справа\r\n * @param {string} tableId\r\n */\n fixedColsRight: function fixedColsRight(tableId) {\n var tableWrapper = '#coreui-table-' + tableId + ' > .coreui-table__container > .coreui-table__wrapper';\n var colOffset = 0;\n $($(tableWrapper + ' > table > thead > tr:last-child > td.coreui-table__fixed_right').get().reverse()).each(function () {\n var index = $(this).index() + 1;\n if (index !== 1) {\n $(tableWrapper + ' > table > thead > tr:last-child > td:nth-child(' + index + ')').css('right', colOffset + 'px');\n $(tableWrapper + ' > table > tbody > tr > td:nth-child(' + index + ')')\n //.addClass('coreui-table__fixed_left')\n .css('right', colOffset + 'px');\n }\n colOffset += $(this).outerWidth();\n });\n }\n};\n\nvar coreuiTableInstance = {\n _options: {\n id: null,\n \"class\": '',\n primaryKey: 'id',\n lang: 'en',\n langList: {},\n width: null,\n minWidth: null,\n maxWidth: null,\n height: null,\n minHeight: null,\n naxHeight: null,\n overflow: false,\n page: 1,\n recordsPerPage: 25,\n theadTop: 0,\n saveState: false,\n noWrap: false,\n noWrapToggle: false,\n columnHeaders: true,\n recordsRequest: {\n method: 'GET',\n url: null,\n // '/mod/index/orders/?page=[page]'\n params: {\n page: 'page',\n count: 'count',\n start: 'start',\n end: 'end',\n sort: 'sort',\n search: 'search',\n filter: 'filter'\n }\n },\n group: {\n field: null,\n attr: {},\n render: null\n },\n onClick: null,\n onClickUrl: null,\n sort: [],\n header: [],\n footer: [],\n columnGroupsHeader: [],\n search: {\n labelWidth: 200,\n controls: []\n },\n columns: [],\n columnGroupsFooter: [],\n records: []\n },\n _id: '',\n _page: 1,\n _recordsIndex: 1,\n _recordsPerPage: 25,\n _recordsTotal: 0,\n _recordsNumber: 1,\n _seq: 1,\n _isRecordsRequest: false,\n _countColumnsShow: 0,\n _records: [],\n _sort: [],\n _columns: [],\n _search: [],\n _filters: [],\n _controls: [],\n _controlsPositions: {\n header: [],\n footer: []\n },\n _events: {},\n /**\r\n * Инициализация\r\n * @param {object} options\r\n * @private\r\n */\n _init: function _init(options) {\n this._options = $.extend(true, {}, this._options, options);\n this._events = {};\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (this._options.page > 0) {\n this._page = this._options.page;\n }\n if (this._options.recordsPerPage > 0) {\n this._recordsPerPage = this._options.recordsPerPage;\n }\n this._isRecordsRequest = this._options.hasOwnProperty('recordsRequest') && coreuiTableUtils.isObject(this._options.recordsRequest) && this._options.recordsRequest.hasOwnProperty('url') && typeof this._options.recordsRequest.url === 'string' && this._options.recordsRequest.url !== '' && this._options.recordsRequest.url !== '#';\n if (this._isRecordsRequest) {\n if (!this._options.recordsRequest.hasOwnProperty('method') || typeof this._options.recordsRequest.method !== 'string') {\n this._options.recordsRequest.method = 'GET';\n }\n } else if (Array.isArray(this._options.records)) {\n coreuiTablePrivate.setRecords(this, this._options.records);\n }\n\n // Инициализация колонок\n if (_typeof(this._options.columns) === 'object' && Array.isArray(this._options.columns) && this._options.columns.length > 0) {\n coreuiTablePrivate.initColumns(this, this._options.columns);\n }\n\n // Инициализация поисковых полей\n if (coreuiTableUtils.isObject(this._options.search) && _typeof(this._options.search.controls) === 'object' && Array.isArray(this._options.search.controls) && this._options.search.controls.length > 0) {\n coreuiTablePrivate.initSearch(this, this._options.search.controls);\n }\n\n // Инициализация контролов и фильтров\n if (this._options.hasOwnProperty('header') && Array.isArray(this._options.header) && this._options.header.length > 0) {\n coreuiTablePrivate.initControls(this, this._options.header, 'header');\n }\n if (this._options.hasOwnProperty('footer') && Array.isArray(this._options.footer) && this._options.footer.length > 0) {\n coreuiTablePrivate.initControls(this, this._options.footer, 'footer');\n }\n\n // Сортировка\n if (this._options.saveState && this._options.id) {\n var sort = coreuiTablePrivate.getStorageField(this.getId(), 'sort');\n if (Array.isArray(sort) && sort.length > 0) {\n coreuiTablePrivate.initSort(this, sort);\n if (this._records.length > 0) {\n this._records = coreuiTablePrivate.sortRecordsByFields(this._records, this._sort);\n }\n }\n } else {\n if (this._options.hasOwnProperty('sort') && Array.isArray(this._options.sort) && this._options.sort.length > 0) {\n coreuiTablePrivate.initSort(this, this._options.sort);\n }\n }\n },\n /**\r\n * Инициализация событий таблицы\r\n */\n initEvents: function initEvents() {\n var that = this;\n\n // Показ строк\n this.on('records_show', function () {\n // Переход по ссылке\n if (typeof that._options.onClickUrl === 'string' && that._options.onClickUrl) {\n coreuiTableElements.getTrRecords(that.getId()).click(function () {\n var recordKey = $(this).data('record-index');\n var record = that.getRecordByIndex(recordKey);\n if (!record) {\n return;\n }\n var url = that._options.onClickUrl;\n $.each(record.data, function (field, value) {\n var fieldQuote = field.replace(/([^\\w\\d])/g, '\\\\$1');\n url = url.replace(new RegExp('\\\\[' + fieldQuote + '\\\\]', 'g'), value);\n });\n if (url && url !== '#') {\n location.href = url;\n }\n });\n }\n\n // Событие нажатия на строку\n if (typeof that._options.onClick === 'function') {\n coreuiTableElements.getTrRecords(that.getId()).click(function (event) {\n var recordKey = $(this).data('record-index');\n var record = that.getRecordByIndex(recordKey);\n if (!record) {\n return;\n }\n that._options.onClick(event, record);\n });\n }\n\n // Раскрытие строки\n coreuiTableElements.getNoWrapToggles(that.getId()).click(function (event) {\n event.cancelBubble = true;\n event.preventDefault();\n var parent = $(this).parent();\n if (parent.hasClass('shown')) {\n $(this).removeClass('bi-caret-up-fill');\n $(this).addClass('bi-caret-down-fill');\n parent.removeClass('shown');\n } else {\n $(this).removeClass('bi-caret-down-fill');\n $(this).addClass('bi-caret-up-fill');\n parent.addClass('shown');\n }\n });\n\n // Фиксация колонок\n coreuiTableElements.fixedColsLeft(that.getId());\n coreuiTableElements.fixedColsRight(that.getId());\n });\n\n // Показ таблицы\n this.on('table_show', function () {\n var sortableColumns = coreuiTableElements.getTableSortable(that.getId());\n if (sortableColumns[0]) {\n sortableColumns.click(function () {\n var field = $(this).data('field');\n if (field) {\n var sorting = [];\n var currentOrder = null;\n $.each(that._sort, function (key, sortField) {\n if (field === sortField.field) {\n currentOrder = sortField.order;\n return false;\n }\n });\n if (currentOrder === null) {\n sorting.push({\n field: field,\n order: 'asc'\n });\n } else if (currentOrder === 'asc') {\n sorting.push({\n field: field,\n order: 'desc'\n });\n }\n if (sorting.length === 0) {\n that.sortDefault();\n } else {\n that.sortFields(sorting);\n }\n }\n });\n }\n });\n\n // События смены состояния\n if (this._options.saveState && this._options.id) {\n this.on('records_sort', function () {\n coreuiTablePrivate.setStorageField(that.getId(), 'sort', that._sort);\n });\n this.on('search_change', function () {\n coreuiTablePrivate.setStorageField(that.getId(), 'search', that.getSearchData());\n });\n this.on('filters_change', function () {\n coreuiTablePrivate.setStorageField(that.getId(), 'filters', that.getFilterData());\n });\n this.on('columns_change', function () {\n var columns = [];\n $.each(that._columns, function (key, column) {\n var columnOptions = column.getOptions();\n columns.push({\n field: columnOptions.field,\n isShow: column.isShow()\n });\n });\n coreuiTablePrivate.setStorageField(that.getId(), 'columns', columns);\n });\n }\n coreuiTablePrivate._trigger(this, 'table_show', [this]);\n coreuiTablePrivate._trigger(this, 'container_show');\n\n // Вызов события показа строк\n if (!this._isRecordsRequest) {\n coreuiTablePrivate._trigger(this, 'records_show', [this]);\n }\n },\n /**\r\n * Получение идентификатора таблицы\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Получение опций таблицы\r\n * @returns {*}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n *\r\n * @param element\r\n * @returns {*}\r\n */\n render: function render(element) {\n var that = this;\n var widthSizes = [];\n var heightSizes = [];\n var render = {\n headersOut: [],\n headersIn: [],\n footersIn: [],\n footersOut: []\n };\n this._recordsTotal = this._records.length;\n if (this._options.width > 0) {\n var unit = typeof this._options.width === 'number' ? 'px' : '';\n widthSizes.push('width:' + this._options.width + unit);\n }\n if (this._options.minWidth > 0) {\n var _unit = typeof this._options.minWidth === 'number' ? 'px' : '';\n widthSizes.push('min-width:' + this._options.minWidth + _unit);\n }\n if (this._options.maxWidth > 0) {\n var _unit2 = typeof this._options.maxWidth === 'number' ? 'px' : '';\n widthSizes.push('max-width:' + this._options.maxWidth + _unit2);\n this._options.overflow = true;\n }\n if (this._options.height > 0) {\n var _unit3 = typeof this._options.height === 'number' ? 'px' : '';\n heightSizes.push('height:' + this._options.height + _unit3);\n }\n if (this._options.minHeight > 0) {\n var _unit4 = typeof this._options.minHeight === 'number' ? 'px' : '';\n heightSizes.push('min-height:' + this._options.minHeight + _unit4);\n }\n if (this._options.maxHeight > 0) {\n var _unit5 = typeof this._options.maxHeight === 'number' ? 'px' : '';\n heightSizes.push('max-height:' + this._options.maxHeight + _unit5);\n this._options.overflow = true;\n }\n\n // Верхние элементы управления\n if (Array.isArray(this._controlsPositions.header) && this._controlsPositions.header.length > 0) {\n $.each(this._controlsPositions.header, function (key, header) {\n var controlsLeft = [];\n var controlsCenter = [];\n var controlsRight = [];\n if (Array.isArray(header.left) && header.left.length > 0) {\n $.each(header.left, function (key, control) {\n var controlRender = coreuiTableRender.renderControl(that, control);\n if (controlRender) {\n controlsLeft.push(controlRender);\n }\n });\n }\n if (Array.isArray(header.center) && header.center.length > 0) {\n $.each(header.center, function (key, control) {\n var controlRender = coreuiTableRender.renderControl(that, control);\n if (controlRender) {\n controlsCenter.push(controlRender);\n }\n });\n }\n if (Array.isArray(header.right) && header.right.length > 0) {\n $.each(header.right, function (key, control) {\n var controlRender = coreuiTableRender.renderControl(that, control);\n if (controlRender) {\n controlsRight.push(controlRender);\n }\n });\n }\n if (controlsLeft.length > 0 || controlsCenter.length > 0 || controlsRight.length > 0) {\n if (header.type === 'in') {\n var headerControls = $(ejs.render(tpl['table-controls-header.html'], {\n controlsLeft: controlsLeft,\n controlsCenter: controlsCenter,\n controlsRight: controlsRight\n }));\n if (controlsLeft.length > 0) {\n $.each(controlsLeft, function (key, control) {\n headerControls.find('.coreui-table__controls_left').append(control);\n });\n }\n if (controlsCenter.length > 0) {\n $.each(controlsCenter, function (key, control) {\n headerControls.find('.coreui-table__controls_center').append(control);\n });\n }\n if (controlsRight.length > 0) {\n $.each(controlsRight, function (key, control) {\n headerControls.find('.coreui-table__controls_right').append(control);\n });\n }\n render.headersIn.push(headerControls);\n } else {\n var _headerControls = $(ejs.render(tpl['table-controls-header-out.html'], {\n controlsLeft: controlsLeft,\n controlsCenter: controlsCenter,\n controlsRight: controlsRight\n }));\n if (controlsLeft.length > 0) {\n $.each(controlsLeft, function (key, control) {\n _headerControls.find('.coreui-table__controls_left').append(control);\n });\n }\n if (controlsCenter.length > 0) {\n $.each(controlsCenter, function (key, control) {\n _headerControls.find('.coreui-table__controls_center').append(control);\n });\n }\n if (controlsRight.length > 0) {\n $.each(controlsRight, function (key, control) {\n _headerControls.find('.coreui-table__controls_right').append(control);\n });\n }\n render.headersOut.push(_headerControls);\n }\n }\n });\n }\n\n // Нижние элементы управления\n if (Array.isArray(this._controlsPositions.footer) && this._controlsPositions.footer.length > 0) {\n $.each(this._controlsPositions.footer, function (key, footer) {\n var controlsLeft = [];\n var controlsCenter = [];\n var controlsRight = [];\n if (Array.isArray(footer.left) && footer.left.length > 0) {\n $.each(footer.left, function (key, control) {\n var controlRender = coreuiTableRender.renderControl(that, control);\n if (controlRender) {\n controlsLeft.push(controlRender);\n }\n });\n }\n if (Array.isArray(footer.center) && footer.center.length > 0) {\n $.each(footer.center, function (key, control) {\n var controlRender = coreuiTableRender.renderControl(that, control);\n if (controlRender) {\n controlsCenter.push(controlRender);\n }\n });\n }\n if (Array.isArray(footer.right) && footer.right.length > 0) {\n $.each(footer.right, function (key, control) {\n var controlRender = coreuiTableRender.renderControl(that, control);\n if (controlRender) {\n controlsRight.push(controlRender);\n }\n });\n }\n if (controlsLeft.length > 0 || controlsCenter.length > 0 || controlsRight.length > 0) {\n if (footer.type === 'in') {\n var footerControls = $(ejs.render(tpl['table-controls-footer.html'], {\n controlsLeft: controlsLeft,\n controlsCenter: controlsCenter,\n controlsRight: controlsRight\n }));\n if (controlsLeft.length > 0) {\n $.each(controlsLeft, function (key, control) {\n footerControls.find('.coreui-table__controls_left').append(control);\n });\n }\n if (controlsCenter.length > 0) {\n $.each(controlsCenter, function (key, control) {\n footerControls.find('.coreui-table__controls_center').append(control);\n });\n }\n if (controlsRight.length > 0) {\n $.each(controlsRight, function (key, control) {\n footerControls.find('.coreui-table__controls_right').append(control);\n });\n }\n render.footersIn.push(footerControls);\n } else {\n var _footerControls = $(ejs.render(tpl['table-controls-footer-out.html'], {\n controlsLeft: controlsLeft,\n controlsCenter: controlsCenter,\n controlsRight: controlsRight\n }));\n if (controlsLeft.length > 0) {\n $.each(controlsLeft, function (key, control) {\n _footerControls.find('.coreui-table__controls_left').append(control);\n });\n }\n if (controlsCenter.length > 0) {\n $.each(controlsCenter, function (key, control) {\n _footerControls.find('.coreui-table__controls_center').append(control);\n });\n }\n if (controlsRight.length > 0) {\n $.each(controlsRight, function (key, control) {\n _footerControls.find('.coreui-table__controls_right').append(control);\n });\n }\n render.footersOut.push(_footerControls);\n }\n }\n });\n }\n\n // Загрузка записей\n if (this._isRecordsRequest) {\n this.on('container_show', function () {\n that.load(this._options.recordsRequest.url, this._options.recordsRequest.method);\n });\n }\n var tableElement = coreuiTableRender.renderTable(this);\n var containerElement = $(ejs.render(tpl['table-wrapper.html'], {\n id: this._id,\n lang: this.getLang(),\n widthSizes: widthSizes,\n heightSizes: heightSizes,\n recordsTotal: this._recordsTotal,\n overflow: !!this._options.overflow\n }));\n if (render.headersOut.length > 0) {\n containerElement.prepend(render.headersOut);\n }\n if (render.headersIn.length > 0) {\n containerElement.find('.coreui-table__container').prepend(render.headersIn);\n }\n if (render.footersIn.length > 0) {\n containerElement.find('.coreui-table__container').append(render.footersIn);\n }\n if (render.footersOut.length > 0) {\n containerElement.append(render.footersOut);\n }\n containerElement.find('.coreui-table__wrapper').html(tableElement);\n if (element === undefined) {\n return containerElement;\n }\n\n // Dom element\n var domElement = null;\n if (typeof element === 'string') {\n domElement = document.getElementById(element);\n } else if (element instanceof HTMLElement) {\n domElement = element;\n }\n if (domElement) {\n $(domElement).html(containerElement);\n this.initEvents();\n }\n },\n /**\r\n * Блокировка таблицы\r\n */\n lock: function lock() {\n var container = coreuiTableElements.getContainer(this.getId());\n if (container[0] && !container.find('.coreui-table-lock')[0]) {\n var html = ejs.render(tpl['table-loader.html'], {\n lang: this.getLang()\n });\n container.prepend(html);\n }\n },\n /**\r\n * Разблокировка таблицы\r\n */\n unlock: function unlock() {\n coreuiTableElements.getLock(this.getId()).hide(50, function () {\n $(this).remove();\n });\n },\n /**\r\n * Загрузка строк\r\n * @param {string} url\r\n * @param {string} method\r\n */\n load: function load(url, method) {\n this.lock();\n var that = this;\n var params = {};\n if (url.match(/\\[page\\]/)) {\n url = url.replace(/\\[page\\]/g, this._page);\n } else {\n var paramPage = coreuiTableUtils.isObject(this._options.recordsRequest.params) && this._options.recordsRequest.params.hasOwnProperty('page') ? this._options.recordsRequest.params.page : 'page';\n params[paramPage] = this._page;\n }\n if (url.match(/\\[count\\]/)) {\n url = url.replace(/\\[count\\]/g, this._recordsPerPage);\n } else {\n var paramCount = coreuiTableUtils.isObject(this._options.recordsRequest.params) && this._options.recordsRequest.params.hasOwnProperty('count') ? this._options.recordsRequest.params.count : 'count';\n params[paramCount] = this._recordsPerPage;\n }\n if (url.match(/\\[start\\]/)) {\n url = url.replace(/\\[start\\]/g, (this._page - 1) * this._recordsPerPage + 1);\n } else {\n var paramStart = coreuiTableUtils.isObject(this._options.recordsRequest.params) && this._options.recordsRequest.params.hasOwnProperty('start') ? this._options.recordsRequest.params.start : 'start';\n params[paramStart] = (this._page - 1) * this._recordsPerPage + 1;\n }\n if (url.match(/\\[end\\]/)) {\n url = url.replace(/\\[end\\]/g, (this._page - 1) * this._recordsPerPage + Number(this._recordsPerPage));\n } else {\n var paramEnd = coreuiTableUtils.isObject(this._options.recordsRequest.params) && this._options.recordsRequest.params.hasOwnProperty('end') ? this._options.recordsRequest.params.end : 'end';\n params[paramEnd] = (this._page - 1) * this._recordsPerPage + Number(this._recordsPerPage);\n }\n var searchData = this.getSearchData();\n var filterData = this.getFilterData();\n if (searchData.length > 0) {\n var paramSearch = coreuiTableUtils.isObject(this._options.recordsRequest.params) && this._options.recordsRequest.params.hasOwnProperty('search') && typeof this._options.recordsRequest.params.search === 'string' ? this._options.recordsRequest.params.search : 'search';\n params[paramSearch] = searchData;\n }\n if (filterData.length > 0) {\n var paramFilters = coreuiTableUtils.isObject(this._options.recordsRequest.params) && this._options.recordsRequest.params.hasOwnProperty('filter') && typeof this._options.recordsRequest.params.filter === 'string' ? this._options.recordsRequest.params.filter : 'filter';\n params[paramFilters] = filterData;\n }\n if (this._sort.length > 0) {\n var paramSort = coreuiTableUtils.isObject(this._options.recordsRequest.params) && this._options.recordsRequest.params.hasOwnProperty('sort') && typeof this._options.recordsRequest.params.sort === 'string' ? this._options.recordsRequest.params.sort : 'sort';\n params[paramSort] = this._sort;\n }\n $.ajax({\n url: url,\n method: method || 'GET',\n dataType: \"json\",\n data: params,\n beforeSend: function beforeSend(xhr) {\n coreuiTablePrivate._trigger(that, 'records_load_start', [that, xhr]);\n },\n success: function success(result) {\n if (result.hasOwnProperty('records') && _typeof(result.records) === 'object' && Array.isArray(result.records)) {\n var total = result.hasOwnProperty('total') && coreuiTableUtils.isNumeric(result.total) ? result.total : null;\n that.setRecords(result.records, total);\n } else {\n that.setRecords([]);\n }\n },\n error: function error(xhr, textStatus, errorThrown) {\n that.setRecords([]);\n coreuiTablePrivate._trigger(that, 'records_load_error', [that, xhr, textStatus, errorThrown]);\n },\n complete: function complete(xhr, textStatus) {\n that.unlock();\n coreuiTablePrivate._trigger(that, 'records_load_end', [that, xhr, textStatus]);\n }\n });\n },\n /**\r\n * Перезагрузка записей в таблице\r\n */\n reload: function reload() {\n if (this._isRecordsRequest) {\n this.load(this._options.recordsRequest.url, this._options.recordsRequest.method);\n }\n },\n /**\r\n * Пересоздание тела таблицы\r\n */\n refresh: function refresh() {\n var table = coreuiTableRender.renderTable(this);\n coreuiTableElements.getTable(this.getId()).replaceWith(table);\n coreuiTablePrivate._trigger(this, 'table_show', [this]);\n coreuiTablePrivate._trigger(this, 'records_show', [this]);\n },\n /**\r\n * Установка общего количества записей на странице\r\n * @param recordsPerPage\r\n */\n setPageSize: function setPageSize(recordsPerPage) {\n this._recordsPerPage = recordsPerPage;\n coreuiTablePrivate._trigger(this, 'page_size_update');\n },\n /**\r\n * Выбор всех записей в таблице\r\n */\n selectAll: function selectAll() {\n coreuiTableElements.selectTrAll(this.getId());\n coreuiTablePrivate._trigger(this, 'record_select_all');\n },\n /**\r\n * Отмена выбор всех записей в таблице\r\n */\n unselectAll: function unselectAll() {\n coreuiTableElements.unselectTrAll(this.getId());\n coreuiTablePrivate._trigger(this, 'record_unselect_all');\n },\n /**\r\n * Выбор записи в таблице\r\n * @param {string} id\r\n */\n selectRecord: function selectRecord(id) {\n var record = this.getRecordById(id);\n if (!record) {\n return;\n }\n var tr = coreuiTableElements.getTrByIndex(this.getId(), record.index);\n if (tr.length === 0) {\n return;\n }\n coreuiTableElements.selectTr(tr);\n coreuiTablePrivate._trigger(this, 'record_select', [record]);\n },\n /**\r\n * Отмена выбора записи в таблице\r\n * @param {string} id\r\n */\n unselectRecord: function unselectRecord(id) {\n var record = this.getRecordById(id);\n if (!record) {\n return;\n }\n var tr = coreuiTableElements.getTrByIndex(this.getId(), record.index);\n if (!tr) {\n return;\n }\n coreuiTableElements.unselectTr(tr);\n coreuiTablePrivate._trigger(this, 'record_unselect', [record.data]);\n },\n /**\r\n * Получение выбранных id\r\n * @return {array}\r\n */\n getSelectedRecordsId: function getSelectedRecordsId() {\n var records = [];\n var that = this;\n var field = this._options.primaryKey;\n $.each(coreuiTableElements.getSelectedIndexes(this.getId()), function (key, index) {\n var record = that.getRecordByIndex(index);\n if (!record || !record.data.hasOwnProperty(field)) {\n return;\n }\n records.push(record.data[field]);\n });\n return records;\n },\n /**\r\n * Получение выбранных записей\r\n * @return {array}\r\n */\n getSelectedRecords: function getSelectedRecords() {\n var records = [];\n var that = this;\n $.each(coreuiTableElements.getSelectedIndexes(this.getId()), function (key, index) {\n var record = that.getRecordByIndex(index);\n if (!record) {\n return;\n }\n records.push(record);\n });\n return records;\n },\n /**\r\n * Получение записи по id\r\n * @param id\r\n * @return {object|null}\r\n */\n getRecord: function getRecord(id) {\n var record = this.getRecordById(id);\n if (!record) {\n return null;\n }\n return record.data;\n },\n /**\r\n * Получение записей\r\n */\n getRecords: function getRecords() {\n var records = [];\n $.each(this._records, function (key, record) {\n records.push($.extend(true, {}, record));\n });\n return records;\n },\n /**\r\n * Получение данных из существующих записей\r\n * @return {Array}\r\n */\n getData: function getData() {\n var data = [];\n $.each(this._records, function (key, record) {\n data.push($.extend(true, {}, record.data));\n });\n return data;\n },\n /**\r\n * Переход к предыдущей странице\r\n */\n prevPage: function prevPage() {\n if (this._page > 1) {\n this._page--;\n this.reload();\n }\n },\n /**\r\n * Переход к следующей странице\r\n * @return {array}\r\n */\n nextPage: function nextPage() {\n var totalPages = this._recordsTotal > 0 && this._recordsPerPage > 0 ? Math.ceil(this._recordsTotal / this._recordsPerPage) : 1;\n if (this._page < totalPages) {\n this._page++;\n this.reload();\n }\n },\n /**\r\n * Переход к указанной странице\r\n */\n goPage: function goPage(page) {\n if (page >= 1) {\n this._page = page;\n this.reload();\n }\n },\n /**\r\n * Регистрация функции на событие\r\n * @param {Array|string} eventName\r\n * @param {function} callback\r\n * @param {*} context\r\n * @param {boolean} singleExec\r\n */\n on: function on(eventName, callback, context, singleExec) {\n var eventNames = [];\n if (Array.isArray(eventName)) {\n $.each(eventName, function (key, name) {\n if (typeof name === 'string' && name) {\n eventNames.push(name);\n }\n });\n } else if (typeof eventName === 'string' && eventName) {\n eventNames.push(eventName);\n } else {\n return;\n }\n var that = this;\n $.each(eventNames, function (key, name) {\n if (!Array.isArray(that._events[name])) {\n that._events[name] = [];\n }\n that._events[name].push({\n context: context ? context : that,\n callback: callback,\n singleExec: !!singleExec\n });\n });\n },\n /**\r\n * Получение переводов текущего языка\r\n * @return {object}\r\n */\n getLang: function getLang() {\n return $.extend(true, {}, this._options.langList);\n },\n /**\r\n * Установка видимых колонок, не указанные колонки будут скрыты\r\n * @param {Array} columns\r\n */\n setColumnsShow: function setColumnsShow(columns) {\n if (!Array.isArray(columns)) {\n return;\n }\n $.each(this._columns, function (key, column) {\n var options = column.getOptions();\n if (options.hasOwnProperty('field') && typeof options.field === 'string') {\n column.setShow(columns.indexOf(options.field) >= 0);\n }\n });\n coreuiTablePrivate._trigger(this, 'columns_change');\n },\n /**\r\n * Получение поисковых данных\r\n * @return {*[]}\r\n */\n getSearchData: function getSearchData() {\n var searchData = [];\n $.each(this._search, function (key, control) {\n var options = control.getOptions();\n if (options.hasOwnProperty('field') && typeof options.field === 'string' && options.field) {\n var value = control.getValue();\n if (value !== null) {\n searchData.push({\n field: options.field,\n value: value,\n alg: control.hasOwnProperty('getAlgorithm') && typeof control.getAlgorithm === 'function' ? control.getAlgorithm() : null\n });\n }\n }\n });\n return searchData;\n },\n /**\r\n * Получение данных из фильтров\r\n * @return {*[]}\r\n */\n getFilterData: function getFilterData() {\n var filterData = [];\n $.each(this._filters, function (key, control) {\n var options = control.getOptions();\n if (options.hasOwnProperty('field') && typeof options.field === 'string' && options.field) {\n var value = control.getValue();\n if (value !== null) {\n filterData.push({\n field: options.field,\n value: value,\n alg: control.hasOwnProperty('getAlgorithm') && typeof control.getAlgorithm === 'function' ? control.getAlgorithm() : null\n });\n }\n }\n });\n return filterData;\n },\n /**\r\n * Поиск по таблице с использованием данных из поиска и фильтров\r\n */\n searchRecords: function searchRecords() {\n var searchData = this.getSearchData();\n var filterData = this.getFilterData();\n if (this._isRecordsRequest) {\n this.load(this._options.recordsRequest.url, this._options.recordsRequest.method);\n } else {\n $.each(this._records, function (index, record) {\n var isShow = true;\n if (searchData.length > 0) {\n isShow = coreuiTablePrivate.isFilteredRecord(searchData, record.data);\n }\n if (isShow && filterData.length > 0) {\n isShow = coreuiTablePrivate.isFilteredRecord(filterData, record.data);\n }\n record.show = isShow;\n });\n this.refresh();\n }\n coreuiTablePrivate._trigger(this, 'filters_change', [filterData]);\n coreuiTablePrivate._trigger(this, 'search_change', [searchData]);\n },\n /**\r\n * Очистка поисковых данных\r\n */\n searchClear: function searchClear() {\n $.each(this._search, function (key, search) {\n search.setValue(null);\n });\n this.searchRecords();\n },\n /**\r\n * Очистка поисковых данных в фильтрах\r\n */\n filtersClear: function filtersClear() {\n $.each(this._filters, function (key, filter) {\n filter.setValue(null);\n });\n this.searchRecords();\n },\n /**\r\n * Получение записи по индексу\r\n * @param {string|number} index\r\n * @return {object|null}\r\n */\n getRecordByIndex: function getRecordByIndex(index) {\n if (['string', 'number'].indexOf(_typeof(index)) < 0 || index === '') {\n return null;\n }\n index = Number(index);\n if (index <= 0) {\n return null;\n }\n var record = null;\n $.each(this._records, function (key, recordItem) {\n if (recordItem.index === index) {\n record = {\n index: recordItem.index,\n data: $.extend(true, {}, recordItem.data),\n meta: recordItem.meta ? $.extend(true, {}, recordItem.meta) : null\n };\n return false;\n }\n });\n return record;\n },\n /**\r\n * Получение записи по id\r\n * @param {string} id\r\n * @return {object|null}\r\n */\n getRecordById: function getRecordById(id) {\n return this.getRecordByField(this._options.primaryKey, id);\n },\n /**\r\n * Получение записи по полю\r\n * @param {string} field\r\n * @param {string|number} value\r\n * @return {object|null}\r\n */\n getRecordByField: function getRecordByField(field, value) {\n if (['string', 'number'].indexOf(_typeof(field)) < 0 || field === '') {\n return null;\n }\n var record = null;\n $.each(this._records, function (key, recordItem) {\n if (recordItem.data.hasOwnProperty(field) && recordItem.data[field] === value) {\n record = $.extend(true, {}, recordItem);\n return false;\n }\n });\n return record;\n },\n /**\r\n * Получение контрола по его id\r\n * @param {string} id\r\n * @return {object}\r\n */\n getControlById: function getControlById(id) {\n var result = null;\n $.each(this._controls, function (key, control) {\n if (control.hasOwnProperty('getId') && typeof control.getId === 'function' && control.getId() === id) {\n result = control;\n return false;\n }\n });\n return result;\n },\n /**\r\n * Получение контрола поиска по его id\r\n * @param {string} id\r\n * @return {object}\r\n */\n getSearchControlById: function getSearchControlById(id) {\n var result = null;\n $.each(this._search, function (key, search) {\n if (search.hasOwnProperty('getId') && typeof search.getId === 'function' && search.getId() === id) {\n result = search;\n return false;\n }\n });\n return result;\n },\n /**\r\n * Сортировка по полям\r\n * @param {Array} sorting\r\n */\n sortFields: function sortFields(sorting) {\n if (!Array.isArray(sorting)) {\n return;\n }\n var that = this;\n this._sort = [];\n $.each(sorting, function (key, sort) {\n if (!coreuiTableUtils.isObject(sort) || !sort.hasOwnProperty('field') || !sort.hasOwnProperty('order') || typeof sort.field !== 'string' || typeof sort.order !== 'string' || !sort.field || !sort.order) {\n return;\n }\n var columnSortable = false;\n $.each(that._columns, function (key, column) {\n var options = column.getOptions();\n if (options.hasOwnProperty('field') && options.hasOwnProperty('sortable') && typeof options.field === 'string' && options.field === sort.field && options.sortable) {\n columnSortable = true;\n return false;\n }\n });\n if (columnSortable) {\n that._sort.push({\n field: sort.field,\n order: sort.order\n });\n }\n });\n if (this._sort.length >= 0) {\n if (this._isRecordsRequest) {\n this.load(this._options.recordsRequest.url, this._options.recordsRequest.method);\n coreuiTablePrivate.setColumnsSort(this, this._sort);\n } else {\n this.records = coreuiTablePrivate.sortRecordsByFields(this._records, this._sort);\n this.refresh();\n }\n }\n coreuiTablePrivate._trigger(this, 'records_sort', [this]);\n },\n /**\r\n * Сортировка по умолчанию\r\n */\n sortDefault: function sortDefault() {\n this._sort = [];\n if (this._isRecordsRequest) {\n this.load(this._options.recordsRequest.url, this._options.recordsRequest.method);\n coreuiTablePrivate.setColumnsSort(this);\n } else {\n this.records = coreuiTablePrivate.sortRecordsBySeq(this._records);\n this.refresh();\n }\n coreuiTablePrivate._trigger(this, 'records_sort', [this]);\n },\n /**\r\n * Удаление строки из таблицы по индексу\r\n * @param index\r\n */\n removeRecordByIndex: function removeRecordByIndex(index) {\n var recordKey = null;\n $.each(this._records, function (key, recordItem) {\n if (recordItem.index === index) {\n recordKey = key;\n return false;\n }\n });\n if (recordKey !== null && recordKey >= 0) {\n this._records.splice(recordKey, 1);\n var tr = coreuiTableElements.getTrByIndex(this.getId(), index);\n if (tr.length >= 0) {\n tr.fadeOut('fast', function () {\n tr.remove();\n });\n }\n this._recordsNumber--;\n }\n },\n /**\r\n * Добавление строки в таблицу после строки с индексом\r\n * @param {object} recordData\r\n * @param {number} index\r\n */\n addRecordAfterIndex: function addRecordAfterIndex(recordData, index) {\n var tr = coreuiTableElements.getTrByIndex(this.getId(), index);\n if (tr.length >= 0) {\n var record = coreuiTablePrivate.addRecord(this, recordData, index);\n if (record) {\n tr.after(coreuiTableRender.renderRecord(this, record));\n this._recordsNumber++;\n }\n }\n },\n /**\r\n * Добавление строки в таблицу перед строкой с индексом\r\n * @param {object} recordData\r\n * @param {number} index\r\n */\n addRecordBeforeIndex: function addRecordBeforeIndex(recordData, index) {\n var tr = coreuiTableElements.getTrByIndex(this.getId(), index);\n if (tr.length >= 0) {\n var record = coreuiTablePrivate.addRecordBefore(this, recordData, index);\n if (record) {\n tr.before(coreuiTableRender.renderRecord(this, record));\n this._recordsNumber++;\n }\n }\n },\n /**\r\n * Добавление строки в начало таблицы\r\n * @param {object} recordData\r\n */\n addRecordFirst: function addRecordFirst(recordData) {\n var tbody = coreuiTableElements.getTableTbody(this.getId());\n if (tbody.length >= 0) {\n var record = coreuiTablePrivate.addRecord(this, recordData, 0);\n tbody.prepend(coreuiTableRender.renderRecord(this, record));\n this._recordsNumber++;\n }\n },\n /**\r\n * Добавление строки в конец таблицы\r\n * @param {object} recordData\r\n */\n addRecordLast: function addRecordLast(recordData) {\n var tbody = coreuiTableElements.getTableTbody(this.getId());\n if (tbody.length >= 0) {\n var record = coreuiTablePrivate.addRecord(this, recordData);\n tbody.append(coreuiTableRender.renderRecord(this, record));\n this._recordsNumber++;\n }\n },\n /**\r\n * Показ указанных записей в таблице\r\n * @param {Array} records\r\n * @param {number} total\r\n */\n setRecords: function setRecords(records, total) {\n if (!Array.isArray(records)) {\n return;\n }\n this._recordsTotal = coreuiTableUtils.isNumeric(total) ? parseInt(total) : records.length;\n coreuiTablePrivate.setRecords(this, records);\n if (records.length > 0) {\n this._recordsNumber = this._page === 1 ? 1 : (this._page - 1) * this._recordsPerPage + 1;\n }\n var recordsElements = coreuiTableRender.renderRecords(this, this._records);\n var tableBody = coreuiTableElements.getTableTbody(this.getId());\n tableBody.html('');\n $.each(recordsElements, function (key, recordElement) {\n tableBody.append(recordElement);\n });\n coreuiTablePrivate._trigger(this, 'records_show', [this]);\n },\n /**\r\n * Получение количества строк\r\n * @return {number}\r\n */\n getRecordsCount: function getRecordsCount() {\n var count = 0;\n if (this._isRecordsRequest) {\n count = this._recordsTotal;\n } else {\n $.each(this._records, function (key, record) {\n if (record.show) {\n count++;\n }\n });\n }\n return count;\n },\n /**\r\n * Раскрытие / скрытие дополнительных данных строки\r\n * @param {number} recordIndex\r\n * @param {HTMLElement|jQuery|string|Array|function} content\r\n * @param {boolean} isRebuild - true default\r\n */\n expandRecordContent: function expandRecordContent(recordIndex, content, isRebuild) {\n var recordElement = coreuiTableElements.getTrByIndex(this.getId(), recordIndex);\n var recordExpanded = coreuiTableElements.getExpandRow(recordElement);\n if (recordElement.hasClass('record-expanded')) {\n if (recordExpanded) {\n if (isRebuild === undefined || isRebuild) {\n coreuiTableElements.removeExpandRow(recordExpanded);\n } else {\n coreuiTableElements.hideExpandRow(recordExpanded);\n }\n }\n recordElement.removeClass('record-expanded');\n coreuiTablePrivate._trigger(this, 'record_expand_hide', [recordIndex]);\n } else {\n if (recordExpanded) {\n coreuiTableElements.showExpandRow(recordExpanded);\n recordElement.addClass('record-expanded');\n coreuiTablePrivate._trigger(this, 'record_expand_show', [recordIndex]);\n } else {\n if (typeof content === 'function') {\n var callbackResult = content();\n if (callbackResult instanceof Promise) {\n var that = this;\n callbackResult.then(function (result) {\n coreuiTableElements.addExpandRow(that, recordElement, result);\n })[\"catch\"](function () {\n coreuiTableElements.addExpandRow(that, recordElement, '');\n });\n } else {\n coreuiTableElements.addExpandRow(this, recordElement, callbackResult);\n }\n } else {\n coreuiTableElements.addExpandRow(this, recordElement, content);\n }\n }\n }\n },\n /**\r\n * Раскрытие / скрытие дополнительных данных строки\r\n * @param {number} recordIndex\r\n * @param {string} url\r\n * @param {boolean} isRebuild\r\n */\n expandRecordUrl: function expandRecordUrl(recordIndex, url, isRebuild) {\n var that = this;\n this.expandRecordContent(recordIndex, function () {\n that.lock();\n return new Promise(function (resolve, reject) {\n $.ajax({\n method: 'get',\n url: url,\n success: function success(response, textStatus, xhr) {\n var result = response;\n if (typeof response === 'string') {\n if (String(xhr.getResponseHeader('Content-Type')).indexOf('application/json') === 0) {\n try {\n result = JSON.parse(response);\n } catch (e) {\n console.warn(e);\n }\n }\n }\n resolve(result);\n },\n error: function error(xhr, textStatus, errorThrown) {\n reject(xhr, textStatus, errorThrown);\n },\n complete: function complete(xhr, textStatus) {\n that.unlock();\n }\n });\n });\n }, isRebuild);\n }\n};\n\nvar coreuiTable$1 = {\n columns: {},\n controls: {},\n filters: {},\n search: {},\n lang: {},\n _instances: {},\n _settings: {\n lang: 'en'\n },\n /**\r\n * @param {object} options\r\n * @returns {CoreUI.table.instance}\r\n */\n create: function create(options) {\n var instance = $.extend(true, {}, coreuiTableInstance);\n if (!options.hasOwnProperty('lang') || typeof options.lang !== 'string') {\n options.lang = this.getSetting('lang');\n }\n var langList = this.lang.hasOwnProperty(options.lang) ? this.lang[options.lang] : {};\n options.langList = options.hasOwnProperty('langList') && coreuiTableUtils.isObject(options.langList) ? $.extend(true, {}, langList, options.langList) : langList;\n instance._init(options instanceof Object ? options : {});\n var tableId = instance.getId();\n this._instances[tableId] = instance;\n return instance;\n },\n /**\r\n * @param {string} id\r\n * @returns {CoreUI.table.instance|null}\r\n */\n get: function get(id) {\n if (!this._instances.hasOwnProperty(id)) {\n return null;\n }\n if (!$('#coreui-table-' + id)[0]) {\n delete this._instances[id];\n return null;\n }\n return this._instances[id];\n },\n /**\r\n * Установка настроек\r\n * @param {object} settings\r\n */\n setSettings: function setSettings(settings) {\n this._settings = $.extend(true, {}, this._settings, settings);\n },\n /**\r\n * Получение значения настройки\r\n * @param {string} name\r\n */\n getSetting: function getSetting(name) {\n var value = null;\n if (this._settings.hasOwnProperty(name)) {\n value = this._settings[name];\n }\n return value;\n }\n};\n\ncoreuiTable$1.lang.ru = {\n \"emptyRecords\": \"Нет записей\",\n \"loading\": \"Загрузка...\",\n \"total\": \"Всего\",\n \"all\": \"Все\",\n \"complete\": \"Применить\",\n \"search\": \"Искать\",\n \"clear\": \"Очистить\"\n};\n\ncoreuiTable$1.lang.en = {\n \"emptyRecords\": \"No records\",\n \"loading\": \"Loading...\",\n \"total\": \"Total\",\n \"all\": \"All\",\n \"complete\": \"Complete\",\n \"search\": \"Search\",\n \"clear\": \"Clear\"\n};\n\ncoreuiTable$1.controls.link = {\n _id: null,\n _table: null,\n _options: {\n id: null,\n type: 'link',\n href: null,\n content: null,\n onClick: null,\n attr: null\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend({}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n },\n /**\r\n * Инициализация событий связанных с элементом управления\r\n */\n initEvents: function initEvents() {\n var that = this;\n if (typeof this._options.onClick === 'function' || typeof this._options.onClick === 'string') {\n var control = coreuiTableElements.getControl(this._table.getId(), this.getId());\n $('a', control).click(function (event) {\n if (typeof that._options.onClick === 'function') {\n return that._options.onClick(event, that._table);\n } else if (typeof that._options.onClick === 'string') {\n var func = new Function('event', 'table', 'control', that._options.onClick);\n func(event, that._table, that);\n }\n });\n }\n },\n /**\r\n * Получение ID элемента управления\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Формирование контента для размещения на странице\r\n * @returns {string}\r\n */\n render: function render() {\n var attributes = [];\n if (_typeof(this._options.attr) === 'object') {\n $.each(this._options.attr, function (name, value) {\n attributes.push(name + '=\"' + value + '\"');\n });\n }\n return ejs.render(tpl['controls/link.html'], {\n href: this._options.href,\n content: this._options.content,\n attr: attributes.length > 0 ? ' ' + attributes.join(' ') : ''\n });\n }\n};\n\ncoreuiTable$1.controls.button = {\n _id: null,\n _table: null,\n _options: {\n id: null,\n type: 'button',\n content: null,\n onClick: null,\n attr: {\n \"class\": 'btn btn-secondary'\n }\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend({}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n },\n /**\r\n * Инициализация событий связанных с элементом управления\r\n */\n initEvents: function initEvents() {\n var that = this;\n if (typeof this._options.onClick === 'function' || typeof this._options.onClick === 'string') {\n var control = coreuiTableElements.getControl(this._table.getId(), this.getId());\n $('button', control).click(function (event) {\n if (typeof that._options.onClick === 'function') {\n that._options.onClick(event, that._table, that);\n } else if (typeof that._options.onClick === 'string') {\n var func = new Function('event', 'table', 'control', that._options.onClick);\n func(event, that._table, that);\n }\n });\n }\n },\n /**\r\n * Получение ID элемента управления\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Формирование контента для размещения на странице\r\n * @returns {string}\r\n */\n render: function render() {\n var attributes = [];\n if (coreuiTableUtils.isObject(this._options.attr)) {\n $.each(this._options.attr, function (name, value) {\n attributes.push(name + '=\"' + value + '\"');\n });\n }\n return ejs.render(tpl['controls/button.html'], {\n content: this._options.content,\n attr: attributes.length > 0 ? ' ' + attributes.join(' ') : ''\n });\n }\n};\n\ncoreuiTable$1.controls.dropdown = {\n _id: null,\n _table: null,\n _options: {\n id: null,\n type: 'dropdown',\n content: null,\n items: null,\n attr: {\n \"class\": 'btn btn-primary'\n }\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend({}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (Array.isArray(this._options.items)) {\n $.each(this._options.items, function (key, item) {\n if (coreuiTableUtils.isObject(item) && typeof item.type === 'string') {\n item.id = coreuiTableUtils.hashCode();\n }\n });\n }\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Инициализация событий связанных с элементом управления\r\n */\n initEvents: function initEvents() {\n var that = this;\n var options = this.getOptions();\n if (Array.isArray(options.items)) {\n $.each(options.items, function (key, item) {\n if (coreuiTableUtils.isObject(item) && typeof item.type === 'string') {\n if (item.type === 'button') {\n if (item.hasOwnProperty('content') && item.hasOwnProperty('onClick') && ['string', 'function'].indexOf(_typeof(item.onClick)) >= 0 && typeof item.content === 'string') {\n var control = coreuiTableElements.getControl(that._table.getId(), that.getId());\n $('button#btn-dropdown-' + item.id, control).click(function (event) {\n if (typeof item.onClick === 'function') {\n item.onClick(event, that._table, that);\n } else if (typeof item.onClick === 'string') {\n var func = new Function('event', 'table', 'control', item.onClick);\n func(event, that._table, that);\n }\n });\n }\n }\n }\n });\n }\n },\n /**\r\n * Получение ID элемента управления\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Формирование контента для размещения на странице\r\n * @returns {string}\r\n */\n render: function render() {\n var options = this.getOptions();\n var items = [];\n var attributes = [];\n if (Array.isArray(options.items)) {\n $.each(options.items, function (key, item) {\n if (coreuiTableUtils.isObject(item) && typeof item.type === 'string') {\n if (item.type === 'link') {\n if (item.hasOwnProperty('link') && item.hasOwnProperty('content') && typeof item.link === 'string' && typeof item.content === 'string') {\n items.push({\n type: 'link',\n link: item.link,\n content: item.content\n });\n }\n } else if (item.type === 'button') {\n if (item.hasOwnProperty('content') && item.hasOwnProperty('onClick') && typeof item.content === 'string' && ['string', 'function'].indexOf(_typeof(item.onClick)) >= 0) {\n items.push({\n type: 'button',\n id: item.id,\n content: item.content\n });\n }\n } else if (item.type === 'divider') {\n items.push({\n type: 'divider'\n });\n }\n }\n });\n }\n if (coreuiTableUtils.isObject(options.attr)) {\n if (options.attr.hasOwnProperty('class') && ['string', 'number'].indexOf(_typeof(options.attr[\"class\"])) >= 0) {\n options.attr[\"class\"] += ' dropdown-toggle';\n }\n if (options.attr.hasOwnProperty('type')) {\n delete options.attr.type;\n }\n if (options.attr.hasOwnProperty('id')) {\n delete options.attr.id;\n }\n if (options.attr.hasOwnProperty('data-bs-toggle')) {\n delete options.attr['data-bs-toggle'];\n }\n $.each(options.attr, function (name, value) {\n attributes.push(name + '=\"' + value + '\"');\n });\n }\n return ejs.render(tpl['controls/dropdown.html'], {\n content: options.content,\n position: options.hasOwnProperty('position') && typeof options.position === 'string' ? options.position : 'end',\n attr: attributes.length > 0 ? ' ' + attributes.join(' ') : '',\n items: items\n });\n }\n};\n\ncoreuiTable$1.controls.button_group = {\n _id: null,\n _table: null,\n _options: {\n id: null,\n type: 'button_group',\n content: null,\n onClick: null,\n attr: null\n },\n _link: {\n attr: {\n \"class\": 'btn btn-secondary'\n }\n },\n _button: {\n attr: {\n \"class\": 'btn btn-secondary'\n }\n },\n _dropdown: {\n attr: {\n \"class\": 'btn btn-secondary'\n }\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend({}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (Array.isArray(this._options.buttons)) {\n $.each(this._options.buttons, function (key, button) {\n if (coreuiTableUtils.isObject(button) && typeof button.type === 'string') {\n button.id = coreuiTableUtils.hashCode();\n if (button.type === 'dropdown' && Array.isArray(button.items)) {\n $.each(button.items, function (key, item) {\n if (coreuiTableUtils.isObject(item) && typeof item.type === 'string') {\n item.id = coreuiTableUtils.hashCode();\n }\n });\n }\n }\n });\n }\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Инициализация событий связанных с элементом управления\r\n */\n initEvents: function initEvents() {\n var that = this;\n var options = this.getOptions();\n if (Array.isArray(options.buttons)) {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n $.each(options.buttons, function (key, button) {\n if (coreuiTableUtils.isObject(button) && typeof button.type === 'string') {\n if (button.type === 'button') {\n if (button.hasOwnProperty('content') && button.hasOwnProperty('onClick') && ['string', 'function'].indexOf(_typeof(button.onClick)) >= 0 && typeof button.content === 'string') {\n $('button#btn-' + button.id, control).click(function (event) {\n if (typeof button.onClick === 'function') {\n button.onClick(event, that._table, that);\n } else if (typeof button.onClick === 'string') {\n var func = new Function('event', 'table', 'control', button.onClick);\n func(event, that._table, that);\n }\n });\n }\n } else if (button.type === 'dropdown' && Array.isArray(button.items)) {\n $.each(button.items, function (key, item) {\n if (coreuiTableUtils.isObject(item) && typeof item.type === 'string') {\n if (item.hasOwnProperty('content') && item.hasOwnProperty('onClick') && ['string', 'function'].indexOf(_typeof(item.onClick)) >= 0 && typeof item.content === 'string') {\n $('button#btn-dropdown-' + item.id, control).click(function (event) {\n if (typeof item.onClick === 'function') {\n item.onClick(event, that._table, that);\n } else if (typeof item.onClick === 'string') {\n var func = new Function('event', 'table', 'control', item.onClick);\n func(event, that._table, that);\n }\n });\n }\n }\n });\n }\n }\n });\n }\n },\n /**\r\n * Получение ID элемента управления\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Формирование контента для размещения на странице\r\n * @returns {string}\r\n */\n render: function render() {\n var options = this.getOptions();\n var buttons = [];\n var that = this;\n if (Array.isArray(options.buttons)) {\n $.each(options.buttons, function (key, button) {\n if (coreuiTableUtils.isObject(button) && typeof button.type === 'string') {\n if (button.type === 'link') {\n if (button.hasOwnProperty('link') && button.hasOwnProperty('content') && typeof button.link === 'string' && typeof button.content === 'string') {\n var attributes = [];\n if (coreuiTableUtils.isObject(button.attr)) {\n button.attr = {};\n }\n if (button.attr.hasOwnProperty('href')) {\n delete button.attr.href;\n }\n if (!button.attr.hasOwnProperty('class')) {\n button.attr[\"class\"] = that._link.attr[\"class\"];\n }\n $.each(button.attr, function (name, value) {\n attributes.push(name + '=\"' + value + '\"');\n });\n buttons.push({\n type: 'link',\n link: button.link,\n content: button.content,\n attr: attributes\n });\n }\n } else if (button.type === 'button') {\n if (button.hasOwnProperty('content') && button.hasOwnProperty('onClick') && typeof button.content === 'string' && ['string', 'function'].indexOf(_typeof(button.onClick)) >= 0) {\n var _attributes = [];\n if (coreuiTableUtils.isObject(button.attr)) {\n button.attr = {};\n }\n if (button.attr.hasOwnProperty('type')) {\n delete button.attr.type;\n }\n if (button.attr.hasOwnProperty('id')) {\n delete button.attr.id;\n }\n if (!button.attr.hasOwnProperty('class')) {\n button.attr[\"class\"] = that._button.attr[\"class\"];\n }\n $.each(button.attr, function (name, value) {\n _attributes.push(name + '=\"' + value + '\"');\n });\n buttons.push({\n type: 'button',\n link: button.link,\n id: button.id,\n content: button.content,\n attr: _attributes\n });\n }\n } else if (button.type === 'dropdown') {\n if (Array.isArray(button.items)) {\n var _attributes2 = [];\n var items = [];\n $.each(button.items, function (key, item) {\n if (coreuiTableUtils.isObject(item) && typeof item.type === 'string') {\n if (item.type === 'link') {\n if (item.hasOwnProperty('link') && item.hasOwnProperty('content') && typeof item.link === 'string' && typeof item.content === 'string') {\n items.push({\n type: 'link',\n link: item.link,\n content: item.content\n });\n }\n } else if (item.type === 'button') {\n if (item.hasOwnProperty('content') && item.hasOwnProperty('onClick') && typeof item.content === 'string' && ['string', 'function'].indexOf(_typeof(item.onClick)) >= 0) {\n items.push({\n type: 'button',\n id: item.id,\n content: item.content\n });\n }\n } else if (item.type === 'divider') {\n items.push({\n type: 'divider'\n });\n }\n }\n });\n if (coreuiTableUtils.isObject(button.attr)) {\n button.attr = {};\n }\n if (button.attr.hasOwnProperty('type')) {\n delete button.attr.type;\n }\n if (button.attr.hasOwnProperty('id')) {\n delete button.attr.id;\n }\n if (!button.attr.hasOwnProperty('class')) {\n button.attr[\"class\"] = that._dropdown.attr[\"class\"];\n }\n if (button.attr.hasOwnProperty('class') && ['string', 'number'].indexOf(_typeof(button.attr[\"class\"])) >= 0) {\n button.attr[\"class\"] += ' dropdown-toggle';\n }\n $.each(button.attr, function (name, value) {\n _attributes2.push(name + '=\"' + value + '\"');\n });\n buttons.push({\n type: 'dropdown',\n content: button.content,\n position: button.hasOwnProperty('position') && typeof button.position === 'string' ? button.position : 'end',\n attr: _attributes2,\n items: items\n });\n }\n }\n }\n });\n }\n return ejs.render(tpl['controls/button_group.html'], {\n buttons: buttons\n });\n }\n};\n\ncoreuiTable$1.controls.custom = {\n _id: null,\n _table: null,\n _options: {\n id: null,\n type: 'custom',\n content: null\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend({}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n },\n /**\r\n * Инициализация событий связанных с элементом управления\r\n */\n initEvents: function initEvents() {},\n /**\r\n * Получение ID элемента управления\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Формирование контента для размещения на странице\r\n * @returns {string|HTMLElement|jQuery}\r\n */\n render: function render() {\n if (typeof this._options.content === 'string') {\n return this._options.content;\n } else if (typeof this._options.content === 'function') {\n return this._options.content();\n }\n }\n};\n\ncoreuiTable$1.controls.page_size = {\n _id: null,\n _table: null,\n _options: {\n id: null,\n type: 'page_size',\n attr: {\n \"class\": 'form-select'\n },\n list: [25, 50, 100, 1000]\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n if (options.hasOwnProperty('attr') && coreuiTableUtils.isObject(options.attr)) {\n options.attr = coreuiTableUtils.mergeAttr(this._options.attr, options.attr);\n }\n this._options = $.extend({}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (!Array.isArray(this._options.list)) {\n this._options.list = [];\n }\n if (this._options.list.indexOf(this._table._recordsPerPage) < 0) {\n this._options.list.unshift(this._table._recordsPerPage);\n }\n },\n /**\r\n * Инициализация событий связанных с элементом управления\r\n */\n initEvents: function initEvents() {\n var that = this;\n var control = coreuiTableElements.getControl(this._table.getId(), this.getId());\n var selectPageSize = $('select', control);\n selectPageSize.change(function () {\n that._table._page = 1;\n that._table.setPageSize(Number(selectPageSize.val()));\n that._table.reload();\n });\n this._table.on('page_size_update', function () {\n selectPageSize.val(that._table._recordsPerPage);\n });\n },\n /**\r\n * Получение ID элемента управления\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Формирование контента для размещения на странице\r\n * @returns {string}\r\n */\n render: function render() {\n var attributes = [];\n if (coreuiTableUtils.isObject(this._options.attr)) {\n $.each(this._options.attr, function (name, value) {\n attributes.push(name + '=\"' + value + '\"');\n });\n }\n return ejs.render(tpl['controls/page-size.html'], {\n recordsPerPageList: this._options.list,\n recordsPerPage: this._table._recordsPerPage,\n attr: attributes.length > 0 ? ' ' + attributes.join(' ') : '',\n lang: this._table.getLang()\n });\n }\n};\n\ncoreuiTable$1.controls.page_jump = {\n _id: null,\n _table: null,\n _options: {\n id: null,\n type: 'page_jump',\n attr: {\n \"class\": 'input-group'\n }\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n if (options.hasOwnProperty('attr') && coreuiTableUtils.isObject(options.attr)) {\n options.attr = coreuiTableUtils.mergeAttr(this._options.attr, options.attr);\n }\n this._options = $.extend({}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n },\n /**\r\n * Инициализация событий связанных с элементом управления\r\n */\n initEvents: function initEvents() {\n var that = this;\n var control = coreuiTableElements.getControl(this._table.getId(), this.getId());\n var input = $('input', control);\n var button = $('button', control);\n if (button[0]) {\n button.click(function () {\n that._table.goPage(input.val());\n });\n input.keyup(function (event) {\n if (event.key === 'Enter' || event.keyCode === 13) {\n that._table.goPage(input.val());\n }\n });\n }\n },\n /**\r\n * Получение ID элемента управления\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Формирование контента для размещения на странице\r\n * @returns {string}\r\n */\n render: function render() {\n var attributes = [];\n if (coreuiTableUtils.isObject(this._options.attr)) {\n $.each(this._options.attr, function (name, value) {\n attributes.push(name + '=\"' + value + '\"');\n });\n }\n return ejs.render(tpl['controls/page-jump.html'], {\n recordsPerPageList: this._options.list,\n recordsPerPage: this._table._recordsPerPage,\n attr: attributes.length > 0 ? ' ' + attributes.join(' ') : '',\n lang: this._table.getLang()\n });\n }\n};\n\ncoreuiTable$1.controls.pages = {\n _id: null,\n _table: null,\n _options: {\n show: {\n prev: true,\n next: true\n },\n count: 3,\n attr: {\n \"class\": 'pagination mb-0'\n }\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n if (options.hasOwnProperty('attr') && coreuiTableUtils.isObject(options.attr)) {\n options.attr = coreuiTableUtils.mergeAttr(this._options.attr, options.attr);\n }\n this._options = $.extend({}, this._options, options);\n this._table = table;\n this._id = coreuiTableUtils.hashCode();\n },\n /**\r\n * Инициализация событий связанных с элементом управления\r\n */\n initEvents: function initEvents() {\n var that = this;\n var control = coreuiTableElements.getControl(this._table.getId(), this.getId());\n this._initEvents();\n this._table.on('records_show', function () {\n control.html(that.render());\n that._initEvents();\n });\n },\n /**\r\n * Получение ID элемента управления\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Формирование контента для размещения на странице\r\n * @returns {string}\r\n */\n render: function render() {\n var attributes = [];\n var showPrev = !!this._options.show.prev;\n var showNext = !!this._options.show.next;\n var showDividerStart = false;\n var showDividerEnd = false;\n var showPageFirst = false;\n var showPageLast = false;\n var pages = [];\n var pagesTotal = this._table._recordsTotal > 0 && this._table._recordsPerPage > 0 ? Math.ceil(this._table._recordsTotal / this._table._recordsPerPage) : 1;\n if (this._table._recordsTotal > 0 && this._options.count > 0 && coreuiTableUtils.isNumeric(this._options.count)) {\n var count = Math.min(this._options.count, pagesTotal);\n var countHalf = Math.max(0, Math.floor(count / 2));\n if (count % 2 === 0) {\n countHalf -= 1;\n }\n var start = this._table._page > 1 ? Math.max(1, this._table._page - countHalf) : this._table._page;\n if (start + count > pagesTotal) {\n start = pagesTotal - (count - 1);\n }\n for (var i = 0; i < count; i++) {\n pages.push(start + i);\n }\n } else {\n if (this._options.count > 0 && this._table._page > 1) {\n pages.push(this._table._page);\n }\n }\n if (pages.length > 0) {\n if (pages[0] >= 2) {\n showPageFirst = true;\n }\n if (pages[0] >= 3) {\n showDividerStart = true;\n }\n if (pages[pages.length - 1] + 1 < pagesTotal) {\n showDividerEnd = true;\n }\n if (pages[pages.length - 1] < pagesTotal) {\n showPageLast = true;\n }\n }\n if (coreuiTableUtils.isObject(this._options.attr)) {\n $.each(this._options.attr, function (name, value) {\n attributes.push(name + '=\"' + value + '\"');\n });\n }\n return ejs.render(tpl['controls/pages.html'], {\n currentPage: this._table._page,\n isActivePrev: this._table._page > 1,\n isActiveNext: this._table._page < pagesTotal,\n pagesTotal: pagesTotal,\n showPrev: showPrev,\n showPageFirst: showPageFirst,\n showDividerStart: showDividerStart,\n pages: pages,\n showDividerEnd: showDividerEnd,\n showPageLast: showPageLast,\n showNext: showNext,\n attr: attributes.length > 0 ? ' ' + attributes.join(' ') : '',\n lang: this._table.getLang()\n });\n },\n /**\r\n * Инициализация событий на элементах\r\n * @private\r\n */\n _initEvents: function _initEvents() {\n var that = this;\n var control = coreuiTableElements.getControl(this._table.getId(), this.getId());\n var btnPrev = $('.coreui-table__page_prev', control);\n if (btnPrev[0]) {\n if (that._table._page <= 1) {\n btnPrev.addClass('disabled');\n }\n btnPrev.click(function () {\n if (that._table._page > 1) {\n that._table.prevPage();\n }\n });\n }\n var btnNext = $('.coreui-table__page_next', control);\n if (btnNext[0]) {\n btnNext.click(function () {\n that._table.nextPage();\n });\n }\n var pages = $('.coreui-table__page', control);\n if (pages[0]) {\n pages.click(function () {\n var page = Number($.trim($(this).text()));\n if (page > 0) {\n that._table.goPage(page);\n }\n });\n }\n }\n};\n\ncoreuiTable$1.controls.total = {\n _id: null,\n _table: null,\n _options: {\n attr: {\n \"class\": 'px-1'\n }\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n if (options.hasOwnProperty('attr') && coreuiTableUtils.isObject(options.attr)) {\n options.attr = coreuiTableUtils.mergeAttr(this._options.attr, options.attr);\n }\n this._options = $.extend({}, this._options, options);\n this._table = table;\n this._id = coreuiTableUtils.hashCode();\n },\n /**\r\n * Инициализация событий связанных с элементом управления\r\n */\n initEvents: function initEvents() {\n var that = this;\n var control = coreuiTableElements.getControl(this._table.getId(), this.getId());\n this._table.on('records_show', function () {\n control.html(that.render());\n });\n },\n /**\r\n * Получение ID элемента управления\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Формирование контента для размещения на странице\r\n * @returns {string}\r\n */\n render: function render() {\n var attributes = [];\n if (coreuiTableUtils.isObject(this._options.attr)) {\n $.each(this._options.attr, function (name, value) {\n attributes.push(name + '=\"' + value + '\"');\n });\n }\n return ejs.render(tpl['controls/total.html'], {\n recordsTotal: this._table._recordsTotal,\n attr: attributes.length > 0 ? ' ' + attributes.join(' ') : '',\n lang: this._table.getLang()\n });\n }\n};\n\ncoreuiTable$1.controls.search = {\n _id: null,\n _table: null,\n _options: {\n btn: {\n attr: {\n \"class\": 'btn btn-secondary'\n },\n content: null\n },\n btnClear: {\n content: \"\",\n attr: {\n \"class\": 'btn btn-outline-secondary'\n }\n },\n btnComplete: {\n attr: {\n \"class\": 'btn btn-primary'\n },\n content: null\n }\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend(true, {}, this._options, options);\n this._table = table;\n this._id = coreuiTableUtils.hashCode();\n if (!coreuiTableUtils.isObject(this._options.btn)) {\n this._options.btn = {};\n }\n if (!this._options.btn.hasOwnProperty('content') || typeof this._options.btn.content !== 'string') {\n this._options.btn.content = table.getLang().search;\n }\n if (!coreuiTableUtils.isObject(this._options.btnClear)) {\n this._options.btnClear = {};\n }\n if (!this._options.btnClear.hasOwnProperty('content') || typeof this._options.btnClear.content !== 'string') {\n this._options.btnClear.content = table.getLang().clear;\n }\n if (!coreuiTableUtils.isObject(this._options.btnComplete)) {\n this._options.btnComplete = {};\n }\n if (!this._options.btnComplete.hasOwnProperty('content') || typeof this._options.btnComplete.content !== 'string') {\n this._options.btnComplete.content = table.getLang().search;\n }\n },\n /**\r\n * Инициализация событий связанных с элементом управления\r\n */\n initEvents: function initEvents() {\n var that = this;\n var control = coreuiTableElements.getControl(this._table.getId(), this.getId());\n var buttonToggle = $('button.btn-search-toggle', control);\n var buttonClear = $('button.btn-clear', control);\n buttonToggle.click(function () {\n var container = coreuiTableElements.getSearchContainer(that._table.getId());\n var columnsContainer = coreuiTableElements.getColumnsContainer(that._table.getId());\n if (columnsContainer[0]) {\n columnsContainer.hide();\n }\n if (container[0]) {\n container.fadeToggle('fast');\n } else {\n var controls = [];\n var controlsEvents = [];\n var btnCompleteAttr = [];\n var btnCompleteContent = '';\n var wrapper = coreuiTableElements.getWrapper(that._table.getId());\n var tableOptions = that._table.getOptions();\n var labelWidth = tableOptions.search.hasOwnProperty('labelWidth') && tableOptions.search.labelWidth ? tableOptions.search.labelWidth : 160;\n $.each(that._table._search, function (key, control) {\n var options = control.getOptions();\n if (options.hasOwnProperty('field') && typeof options.field === 'string' && options.field) {\n controls.push({\n label: options.hasOwnProperty('label') && typeof options.label === 'string' ? options.label : '',\n description: options.hasOwnProperty('description') && typeof options.description === 'string' ? options.description : '',\n prefix: options.hasOwnProperty('prefix') && typeof options.prefix === 'string' ? options.prefix : '',\n id: control.getId(),\n content: control.render()\n });\n if (control.hasOwnProperty('initEvents') && typeof control.initEvents === 'function') {\n controlsEvents.push({\n event: control.initEvents,\n control: control\n });\n }\n }\n });\n if (!coreuiTableUtils.isObject(that._options.btnComplete)) {\n that._options.btnComplete = {};\n }\n if (!coreuiTableUtils.isObject(that._options.btnComplete.attr)) {\n that._options.btnComplete.attr = {};\n }\n if (that._options.btnComplete.attr.hasOwnProperty('type')) {\n delete that._options.btnComplete.attr.type;\n }\n if (!that._options.btnComplete.attr.hasOwnProperty('class') || typeof that._options.btnComplete.attr[\"class\"] !== 'string') {\n that._options.btnComplete.attr[\"class\"] = 'btn-complete';\n } else {\n that._options.btnComplete.attr[\"class\"] += ' btn-complete';\n }\n if (coreuiTableUtils.isObject(that._options.btnComplete.attr)) {\n $.each(that._options.btnComplete.attr, function (name, value) {\n btnCompleteAttr.push(name + '=\"' + value + '\"');\n });\n }\n if (typeof that._options.btnComplete.content === 'string') {\n btnCompleteContent = that._options.btnComplete.content;\n }\n var content = ejs.render(tpl['controls/search-container.html'], {\n labelWidth: labelWidth + (typeof labelWidth === 'number' ? 'px' : ''),\n controls: controls,\n btnCompleteAttr: btnCompleteAttr.length > 0 ? ' ' + btnCompleteAttr.join(' ') : '',\n btnCompleteContent: btnCompleteContent\n });\n wrapper.prepend(content);\n if (controlsEvents.length > 0) {\n $.each(controlsEvents, function (key, controlsEvent) {\n controlsEvent.event.apply(controlsEvent.control);\n });\n }\n container = $('> .coreui-table__search', wrapper);\n $('.btn-complete', container).click(function () {\n that._table.searchRecords();\n container.fadeOut('fast');\n });\n }\n });\n buttonClear.click(function () {\n that._table.searchClear();\n var container = coreuiTableElements.getSearchContainer(that._table.getId());\n if (container[0]) {\n container.fadeOut('fast');\n }\n });\n this._table.on('search_change', function (searchData) {\n var buttonClear = $('button.btn-clear', control);\n if (searchData.length > 0) {\n if (!buttonClear[0]) {\n $(that._renderBtnClear()).insertAfter(buttonToggle);\n $('button.btn-clear', control).click(function () {\n that._table.searchClear();\n var container = coreuiTableElements.getSearchContainer(that._table.getId());\n if (container[0]) {\n container.fadeOut('fast');\n }\n });\n }\n } else {\n buttonClear.remove();\n var container = coreuiTableElements.getSearchContainer(that._table.getId());\n if (container[0]) {\n container.fadeOut('fast');\n }\n }\n });\n },\n /**\r\n * Получение ID элемента управления\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Формирование контента для размещения на странице\r\n * @returns {string}\r\n */\n render: function render() {\n var btnAttr = [];\n var btnContent = '';\n var btnClear = '';\n if (!coreuiTableUtils.isObject(this._options.btn)) {\n this._options.btn = {};\n }\n if (!coreuiTableUtils.isObject(this._options.btn.attr)) {\n this._options.btn.attr = {};\n }\n if (!this._options.btn.attr.hasOwnProperty('class') || typeof this._options.btn.attr[\"class\"] !== 'string') {\n this._options.btn.attr[\"class\"] = 'btn-search-toggle';\n } else {\n this._options.btn.attr[\"class\"] += ' btn-search-toggle';\n }\n $.each(this._options.btn.attr, function (name, value) {\n btnAttr.push(name + '=\"' + value + '\"');\n });\n if (typeof this._options.btn.content === 'string') {\n btnContent = this._options.btn.content;\n }\n if (this._table.getSearchData().length > 0) {\n btnClear = this._renderBtnClear();\n }\n return ejs.render(tpl['controls/search.html'], {\n btnContent: btnContent,\n btnAttr: btnAttr.length > 0 ? ' ' + btnAttr.join(' ') : '',\n btnClear: btnClear\n });\n },\n /**\r\n * Рендер кнопки отмены\r\n * @private\r\n */\n _renderBtnClear: function _renderBtnClear() {\n var attributes = [];\n var content = '';\n if (!coreuiTableUtils.isObject(this._options.btnClear)) {\n this._options.btnClear = {};\n }\n if (!coreuiTableUtils.isObject(this._options.btnClear.attr)) {\n this._options.btnClear.attr = {};\n }\n if (!this._options.btnClear.attr.hasOwnProperty('class') || typeof this._options.btnClear.attr[\"class\"] !== 'string') {\n this._options.btnClear.attr[\"class\"] = 'btn-clear';\n } else {\n this._options.btnClear.attr[\"class\"] += ' btn-clear';\n }\n $.each(this._options.btnClear.attr, function (name, value) {\n attributes.push(name + '=\"' + value + '\"');\n });\n if (typeof this._options.btnClear.content === 'string') {\n content = this._options.btnClear.content;\n }\n return ejs.render(tpl['controls/search-clear.html'], {\n content: content,\n attr: attributes.length > 0 ? ' ' + attributes.join(' ') : ''\n });\n }\n};\n\ncoreuiTable$1.controls.columns = {\n _id: null,\n _table: null,\n _options: {\n id: null,\n type: 'columns',\n btn: {\n content: '',\n attr: {\n \"class\": 'btn btn-outline-secondary'\n }\n },\n btnComplete: {\n content: null,\n attr: {\n \"class\": 'btn btn-primary'\n }\n }\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend({}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (!coreuiTableUtils.isObject(this._options.btn)) {\n this._options.btn = {};\n }\n if (!coreuiTableUtils.isObject(this._options.btnComplete)) {\n this._options.btnComplete = {};\n }\n if (coreuiTableUtils.isObject(this._options.btnComplete) && typeof this._options.btnComplete.content !== 'string') {\n this._options.btnComplete.content = table.getLang().complete;\n }\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Инициализация событий связанных с элементом управления\r\n */\n initEvents: function initEvents() {\n var that = this;\n var options = this.getOptions();\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n var button = $('button', control);\n button.click(function () {\n var container = coreuiTableElements.getColumnsContainer(that._table.getId());\n var containerSearch = coreuiTableElements.getSearchContainer(that._table.getId());\n if (containerSearch[0]) {\n containerSearch.hide();\n }\n if (container[0]) {\n container.fadeToggle('fast');\n } else {\n var columns = [];\n var showAll = true;\n var btnCompleteAttr = [];\n var btnCompleteContent = '';\n var wrapper = coreuiTableElements.getWrapper(that._table.getId());\n $.each(that._table._columns, function (key, column) {\n var options = column.getOptions();\n if (options.hasOwnProperty('field') && typeof options.field === 'string' && options.field) {\n var isShow = column.isShow();\n columns.push({\n field: options.field,\n label: options.hasOwnProperty('label') && typeof options.label === 'string' ? options.label : '',\n show: isShow\n });\n if (!isShow) {\n showAll = false;\n }\n }\n });\n if (!coreuiTableUtils.isObject(options.btnComplete)) {\n options.btnComplete = {};\n }\n if (!coreuiTableUtils.isObject(options.btnComplete.attr)) {\n options.btnComplete.attr = {};\n }\n if (options.btnComplete.attr.hasOwnProperty('type')) {\n delete options.btnComplete.attr.type;\n }\n if (!options.btnComplete.attr.hasOwnProperty('class') || typeof options.btnComplete.attr[\"class\"] !== 'string') {\n options.btnComplete.attr[\"class\"] = 'btn-complete';\n } else {\n options.btnComplete.attr[\"class\"] += ' btn-complete';\n }\n if (coreuiTableUtils.isObject(options.btnComplete.attr)) {\n $.each(options.btnComplete.attr, function (name, value) {\n btnCompleteAttr.push(name + '=\"' + value + '\"');\n });\n }\n if (typeof options.btnComplete.content === 'string') {\n btnCompleteContent = options.btnComplete.content;\n }\n var content = ejs.render(tpl['controls/columns-container.html'], {\n showAll: showAll,\n columns: columns,\n btnCompleteAttr: btnCompleteAttr.length > 0 ? ' ' + btnCompleteAttr.join(' ') : '',\n btnCompleteContent: btnCompleteContent,\n lang: that._table.getLang()\n });\n wrapper.prepend(content);\n container = $('> .coreui-table__columns', wrapper);\n $('.coreui-table__check_all input', container).change(function () {\n $('.coreui-table_check-column input', container).prop('checked', $(this).is(\":checked\"));\n });\n $('.btn-complete', container).click(function () {\n var columns = [];\n $('.coreui-table_check-column input:checked', container).each(function (key, input) {\n columns.push($(input).val());\n });\n that._table.setColumnsShow(columns);\n that._table.refresh();\n container.fadeOut('fast');\n });\n }\n });\n },\n /**\r\n * Получение ID элемента управления\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Формирование контента для размещения на странице\r\n * @returns {string}\r\n */\n render: function render() {\n var attributes = [];\n if (coreuiTableUtils.isObject(this._options.btn.attr)) {\n $.each(this._options.btn.attr, function (name, value) {\n attributes.push(name + '=\"' + value + '\"');\n });\n }\n return ejs.render(tpl['controls/columns.html'], {\n btnContent: this._options.btn.content,\n btnAttr: attributes.length > 0 ? ' ' + attributes.join(' ') : ''\n });\n }\n};\n\ncoreuiTable$1.controls.caption = {\n _id: null,\n _table: null,\n _options: {\n id: null,\n type: 'caption',\n title: null,\n description: null,\n value: null\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend({}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n },\n /**\r\n * Инициализация событий связанных с элементом управления\r\n */\n initEvents: function initEvents() {},\n /**\r\n * Получение ID элемента управления\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Формирование контента для размещения на странице\r\n * @returns {string}\r\n */\n render: function render() {\n return ejs.render(tpl['controls/caption.html'], {\n title: this._options.title,\n description: this._options.description,\n value: this._options.value\n });\n }\n};\n\ncoreuiTable$1.filters.clear = {\n _id: null,\n _table: null,\n _options: {\n id: null,\n type: 'clear',\n content: null,\n attr: {\n \"class\": 'btn btn-secondary'\n }\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend(true, {}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (!this._options.hasOwnProperty('content') || typeof this._options.content !== 'string') {\n this._options.content = table.getLang().clear;\n }\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Получение id\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Установка значения\r\n * @param {string} value\r\n */\n setValue: function setValue(value) {},\n /**\r\n * Получение значения\r\n * @returns {null}\r\n */\n getValue: function getValue() {\n return null;\n },\n /**\r\n * Инициализация событий\r\n * @returns {object}\r\n */\n initEvents: function initEvents() {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n var that = this;\n $('button', control).click(function () {\n that._table.filtersClear();\n });\n this._table.on('filters_change', function (filterData) {\n if (filterData.length > 0) {\n $('button', control).show();\n } else {\n $('button', control).hide();\n }\n });\n },\n /**\r\n * Формирование контента\r\n * @returns {string}\r\n */\n render: function render() {\n var options = this.getOptions();\n if (!coreuiTableUtils.isObject(options.attr)) {\n options.attr = {};\n }\n if (options.attr.hasOwnProperty('type')) {\n delete options.attr.type;\n }\n var filterData = this._table.getFilterData();\n if (filterData.length === 0) {\n if (options.attr.hasOwnProperty('style') && typeof options.attr.style === 'string') {\n options.attr.style += ';display:none;';\n } else {\n options.attr.style = \"display:none\";\n }\n }\n var attr = [];\n $.each(options.attr, function (name, value) {\n attr.push(name + '=\"' + value + '\"');\n });\n return ejs.render(tpl['filters/clear.html'], {\n attr: attr.length > 0 ? ' ' + attr.join(' ') : '',\n content: options.content ? options.content : ''\n });\n }\n};\n\ncoreuiTable$1.filters.text = {\n _id: null,\n _table: null,\n _value: null,\n _render: false,\n _options: {\n id: null,\n type: 'text',\n field: null,\n label: null,\n value: null,\n width: 200,\n attr: {\n \"class\": \"form-control\"\n },\n btn: {\n attr: {\n \"class\": \"btn btn-outline-secondary border-secondary-subtle\"\n },\n content: ''\n }\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend(true, {}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (this._options.value !== null) {\n this.setValue(this._options.value);\n }\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Получение id\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Установка значения\r\n * @param {string|number|null} value\r\n */\n setValue: function setValue(value) {\n if (value !== null && typeof value !== 'string' && typeof value !== 'number') {\n return;\n }\n this._value = value;\n if (this._render) {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n if (control[0]) {\n $('input', control).val(this._value === null ? '' : this._value);\n }\n }\n },\n /**\r\n * Получение значения\r\n * @returns {string|null}\r\n */\n getValue: function getValue() {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n var input = $('input', control);\n if (input[0]) {\n var value = input.val();\n if (typeof value === 'string' && value !== '') {\n return value;\n }\n }\n return null;\n },\n /**\r\n * Инициализация событий\r\n * @returns {object}\r\n */\n initEvents: function initEvents() {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n var that = this;\n $('input', control).keyup(function (e) {\n if (e.key === 'Enter' || e.keyCode === 13) {\n that._table.searchRecords();\n }\n });\n $('button', control).click(function (e) {\n that._table.searchRecords();\n });\n },\n /**\r\n * Формирование контента\r\n * @returns {string}\r\n */\n render: function render() {\n this._render = true;\n var options = this.getOptions();\n var label = typeof options.label === 'string' || typeof options.label === 'number' ? options.label : '';\n if (!coreuiTableUtils.isObject(options.attr)) {\n options.attr = {};\n }\n if (options.hasOwnProperty('width') && coreuiTableUtils.isNumeric(options.width)) {\n if (options.attr.hasOwnProperty('style')) {\n options.attr['style'] += ';width:' + options.width + 'px';\n } else {\n options.attr['style'] = 'width:' + options.width + 'px';\n }\n }\n options.attr['name'] = typeof options.field === 'string' ? options.field : '';\n options.attr['value'] = typeof this._value === 'string' || typeof this._value === 'number' ? this._value : '';\n if (options.attr.hasOwnProperty('type')) {\n delete options.attr.type;\n }\n if (!coreuiTableUtils.isObject(options.btn)) {\n options.btn = {};\n }\n if (!coreuiTableUtils.isObject(options.btn.attr)) {\n options.btn.attr = {};\n }\n if (options.btn.attr.hasOwnProperty('type')) {\n delete options.btn.attr.type;\n }\n var attr = [];\n var attrBtn = [];\n $.each(options.attr, function (name, value) {\n attr.push(name + '=\"' + value + '\"');\n });\n $.each(options.btn.attr, function (name, value) {\n attrBtn.push(name + '=\"' + value + '\"');\n });\n return ejs.render(tpl['filters/text.html'], {\n attr: attr.length > 0 ? ' ' + attr.join(' ') : '',\n label: label,\n btnAttr: attrBtn.length > 0 ? ' ' + attrBtn.join(' ') : '',\n btnContent: options.btn.content ? options.btn.content : ''\n });\n }\n};\n\ncoreuiTable$1.filters.number = {\n _id: null,\n _table: null,\n _value: null,\n _render: false,\n _options: {\n id: null,\n type: 'number',\n field: null,\n label: null,\n value: null,\n width: 90,\n attr: {\n \"class\": \"form-control\"\n },\n btn: {\n attr: {\n \"class\": \"btn btn-outline-secondary border-secondary-subtle\"\n },\n content: ''\n }\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend(true, {}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (this._options.value !== null) {\n this.setValue(this._options.value);\n }\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Получение id\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Установка значения\r\n * @param {object|null} value\r\n */\n setValue: function setValue(value) {\n if (value) {\n if (!coreuiTableUtils.isObject(value)) {\n return;\n }\n var numberStart = null;\n var numberEnd = null;\n if (value.hasOwnProperty('start') && (typeof value.start === 'string' || typeof value.start !== 'number') && value.start !== '') {\n numberStart = value.start;\n }\n if (value.hasOwnProperty('end') && (typeof value.end === 'string' || typeof value.end !== 'number') && value.end !== '') {\n numberEnd = value.end;\n }\n if (numberStart === null && numberEnd === null) {\n this._value = null;\n } else {\n this._value = {\n start: numberStart,\n end: numberEnd\n };\n }\n } else {\n this._value = null;\n }\n if (this._render) {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n if (control[0]) {\n var inputStart = $('input.number-start', control);\n var inputEnd = $('input.number-end', control);\n if (this._value === null) {\n inputStart.val('');\n inputEnd.val('');\n } else if (coreuiTableUtils.isObject(this._value)) {\n inputStart.val(_typeof(this._value.start) !== null ? this._value.start : '');\n inputEnd.val(_typeof(this._value.end) !== null ? this._value.end : '');\n }\n }\n }\n },\n /**\r\n * Получение значения\r\n * @returns {string}\r\n */\n getValue: function getValue() {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n var inputStart = $('input.number-start', control);\n var inputEnd = $('input.number-end', control);\n if (inputStart[0] && inputEnd[0]) {\n var valueStart = inputStart.val();\n var valueEnd = inputEnd.val();\n if (typeof valueStart === 'string' && valueStart !== '' || typeof valueEnd === 'string' && valueEnd !== '') {\n return {\n start: valueStart !== '' ? valueStart : null,\n end: valueEnd !== '' ? valueEnd : null\n };\n }\n }\n return null;\n },\n /**\r\n * Инициализация событий\r\n * @returns {object}\r\n */\n initEvents: function initEvents() {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n var that = this;\n $('input.number-start, input.number-end', control).keyup(function (e) {\n if (e.key === 'Enter' || e.keyCode === 13) {\n that._table.searchRecords();\n }\n });\n $('button', control).click(function (e) {\n that._table.searchRecords();\n });\n },\n /**\r\n * Формирование контента\r\n * @returns {string}\r\n */\n render: function render() {\n this._render = true;\n var options = this.getOptions();\n var label = typeof options.label === 'string' || typeof options.label === 'number' ? options.label : '';\n if (!coreuiTableUtils.isObject(options.attr)) {\n options.attr = {};\n }\n if (options.hasOwnProperty('width') && coreuiTableUtils.isNumeric(options.width)) {\n if (options.attr.hasOwnProperty('style')) {\n options.attr['style'] += ';width:' + options.width + 'px';\n } else {\n options.attr['style'] = 'width:' + options.width + 'px';\n }\n }\n if (options.attr.hasOwnProperty('type')) {\n delete options.attr.type;\n }\n if (options.attr.hasOwnProperty('value')) {\n delete options.attr.value;\n }\n var field = typeof options.field === 'string' ? options.field : '';\n var startAttr = [];\n var endAttr = [];\n var attrBtn = [];\n $.each(options.attr, function (name, value) {\n if (['name', 'value', 'class'].indexOf(name) >= 0 || ['string', 'number'].indexOf(_typeof(value)) < 0) {\n return;\n }\n startAttr.push(name + '=\"' + value + '\"');\n endAttr.push(name + '=\"' + value + '\"');\n });\n if (options.attr.hasOwnProperty('class') && ['string', 'number'].indexOf(_typeof(options.attr[\"class\"])) >= 0) {\n startAttr.push('class=\"' + options.attr[\"class\"] + ' number-start\"');\n endAttr.push('class=\"' + options.attr[\"class\"] + ' number-end\"');\n } else {\n startAttr.push('class=\"number-start\"');\n endAttr.push('class=\"number-end\"');\n }\n if (field) {\n startAttr.push('name=\"' + field + '[start]\"');\n endAttr.push('name=\"' + field + '[end]\"');\n }\n startAttr.push('value=\"' + (this._value ? this._value.start : '') + '\"');\n endAttr.push('value=\"' + (this._value ? this._value.end : '') + '\"');\n if (!coreuiTableUtils.isObject(options.btn)) {\n options.btn = {};\n }\n if (!coreuiTableUtils.isObject(options.btn.attr)) {\n options.btn.attr = {};\n }\n if (options.btn.attr.hasOwnProperty('type')) {\n delete options.btn.attr.type;\n }\n $.each(options.btn.attr, function (name, value) {\n attrBtn.push(name + '=\"' + value + '\"');\n });\n return ejs.render(tpl['filters/number.html'], {\n attrStart: startAttr.length > 0 ? ' ' + startAttr.join(' ') : '',\n attrEnd: endAttr.length > 0 ? ' ' + endAttr.join(' ') : '',\n label: label,\n btnAttr: attrBtn.length > 0 ? ' ' + attrBtn.join(' ') : '',\n btnContent: options.btn.content ? options.btn.content : ''\n });\n }\n};\n\ncoreuiTable$1.filters.date = {\n _id: null,\n _table: null,\n _value: null,\n _render: false,\n _options: {\n id: null,\n type: 'date',\n field: null,\n label: null,\n value: null,\n width: 200,\n attr: {\n \"class\": \"form-control\"\n }\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend(true, {}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (this._options.value !== null) {\n this.setValue(this._options.value);\n }\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Получение id\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Установка значения\r\n * @param {string} value\r\n */\n setValue: function setValue(value) {\n if (typeof value !== 'string' && value !== null) {\n return;\n }\n if (value && (value.match(/^\\d{4}\\-\\d{2}\\-\\d{2}$/) === null || isNaN(new Date(value)))) {\n return;\n }\n this._value = value;\n if (this._render) {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n if (control[0]) {\n $('input', control).val(this._value === null ? '' : this._value);\n }\n }\n },\n /**\r\n * Получение значения\r\n * @returns {string}\r\n */\n getValue: function getValue() {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n var input = $('input', control);\n if (input[0]) {\n var value = input.val();\n if (typeof value === 'string' && value !== '') {\n return value;\n }\n }\n return null;\n },\n /**\r\n * Инициализация событий\r\n * @returns {object}\r\n */\n initEvents: function initEvents() {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n var that = this;\n $('input', control).change(function (e) {\n that._table.searchRecords();\n });\n },\n /**\r\n * Формирование контента\r\n * @returns {string}\r\n */\n render: function render() {\n this._render = true;\n var options = this.getOptions();\n var label = typeof options.label === 'string' || typeof options.label === 'number' ? options.label : '';\n if (!coreuiTableUtils.isObject(options.attr)) {\n options.attr = {};\n }\n if (options.hasOwnProperty('width') && coreuiTableUtils.isNumeric(options.width)) {\n if (options.attr.hasOwnProperty('style')) {\n options.attr['style'] += ';width:' + options.width + 'px';\n } else {\n options.attr['style'] = 'width:' + options.width + 'px';\n }\n }\n options.attr['name'] = typeof options.field === 'string' ? options.field : '';\n options.attr['value'] = typeof this._value === 'string' || typeof this._value === 'number' ? this._value : '';\n if (options.attr.hasOwnProperty('type')) {\n delete options.attr.type;\n }\n var attr = [];\n $.each(options.attr, function (name, value) {\n attr.push(name + '=\"' + value + '\"');\n });\n return ejs.render(tpl['filters/date.html'], {\n attr: attr.length > 0 ? ' ' + attr.join(' ') : '',\n label: label\n });\n }\n};\n\ncoreuiTable$1.filters.datetime = {\n _id: null,\n _table: null,\n _value: null,\n _render: false,\n _options: {\n id: null,\n type: 'datetime',\n field: null,\n label: null,\n value: null,\n width: 200,\n attr: {\n \"class\": \"form-control\"\n }\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend(true, {}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (this._options.value !== null) {\n this.setValue(this._options.value);\n }\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Получение id\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Установка значения\r\n * @param {string|null} value\r\n */\n setValue: function setValue(value) {\n if (typeof value !== 'string' && value !== null) {\n return;\n }\n if (value && (value.match(/^\\d{4}\\-\\d{2}\\-\\d{2} \\d{2}:\\d{2}:\\d{2}$/) === null || isNaN(new Date(value)))) {\n return;\n }\n this._value = value;\n if (this._render) {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n if (control[0]) {\n $('input', control).val(this._value === null ? '' : this._value);\n }\n }\n },\n /**\r\n * Получение значения\r\n * @returns {string|null}\r\n */\n getValue: function getValue() {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n var input = $('input', control);\n if (input[0]) {\n var value = input.val();\n if (typeof value === 'string' && value !== '') {\n return value;\n }\n }\n return null;\n },\n /**\r\n * Инициализация событий\r\n * @returns {object}\r\n */\n initEvents: function initEvents() {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n var that = this;\n $('input', control).change(function (e) {\n that._table.searchRecords();\n });\n },\n /**\r\n * Формирование контента\r\n * @returns {string}\r\n */\n render: function render() {\n this._render = true;\n var options = this.getOptions();\n var label = typeof options.label === 'string' || typeof options.label === 'number' ? options.label : '';\n if (!coreuiTableUtils.isObject(options.attr)) {\n options.attr = {};\n }\n if (options.hasOwnProperty('width') && coreuiTableUtils.isNumeric(options.width)) {\n if (options.attr.hasOwnProperty('style')) {\n options.attr['style'] += ';width:' + options.width + 'px';\n } else {\n options.attr['style'] = 'width:' + options.width + 'px';\n }\n }\n options.attr['name'] = typeof options.field === 'string' ? options.field : '';\n options.attr['value'] = typeof this._value === 'string' || typeof this._value === 'number' ? this._value : '';\n if (options.attr.hasOwnProperty('type')) {\n delete options.attr.type;\n }\n var attr = [];\n $.each(options.attr, function (name, value) {\n attr.push(name + '=\"' + value + '\"');\n });\n return ejs.render(tpl['filters/datetime.html'], {\n attr: attr.length > 0 ? ' ' + attr.join(' ') : '',\n label: label\n });\n }\n};\n\ncoreuiTable$1.filters.date_month = {\n _id: null,\n _table: null,\n _value: null,\n _render: false,\n _options: {\n id: null,\n type: 'date_month',\n field: null,\n label: null,\n value: null,\n width: 200,\n attr: {\n \"class\": \"form-control\"\n }\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend(true, {}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (this._options.value !== null) {\n this.setValue(this._options.value);\n }\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Получение id\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Установка значения\r\n * @param {string|null} value\r\n */\n setValue: function setValue(value) {\n if (typeof value !== 'string' && value !== null) {\n return;\n }\n if (value && (value.match(/^\\d{4}\\-\\d{2}$/) === null || isNaN(new Date(value)))) {\n return;\n }\n this._value = value;\n if (this._render) {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n if (control[0]) {\n $('input', control).val(this._value === null ? '' : this._value);\n }\n }\n },\n /**\r\n * Получение значения\r\n * @returns {string}\r\n */\n getValue: function getValue() {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n var input = $('input', control);\n if (input[0]) {\n var value = input.val();\n if (typeof value === 'string' && value !== '') {\n return value;\n }\n }\n return null;\n },\n /**\r\n * Инициализация событий\r\n * @returns {object}\r\n */\n initEvents: function initEvents() {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n var that = this;\n $('input', control).change(function (e) {\n that._table.searchRecords();\n });\n },\n /**\r\n * Формирование контента\r\n * @returns {string}\r\n */\n render: function render() {\n this._render = true;\n var options = this.getOptions();\n var label = typeof options.label === 'string' || typeof options.label === 'number' ? options.label : '';\n if (!coreuiTableUtils.isObject(options.attr)) {\n options.attr = {};\n }\n if (options.hasOwnProperty('width') && coreuiTableUtils.isNumeric(options.width)) {\n if (options.attr.hasOwnProperty('style')) {\n options.attr['style'] += ';width:' + options.width + 'px';\n } else {\n options.attr['style'] = 'width:' + options.width + 'px';\n }\n }\n options.attr['name'] = typeof options.field === 'string' ? options.field : '';\n options.attr['value'] = typeof this._value === 'string' || typeof this._value === 'number' ? this._value : '';\n if (options.attr.hasOwnProperty('type')) {\n delete options.attr.type;\n }\n var attr = [];\n $.each(options.attr, function (name, value) {\n attr.push(name + '=\"' + value + '\"');\n });\n return ejs.render(tpl['filters/date_month.html'], {\n attr: attr.length > 0 ? ' ' + attr.join(' ') : '',\n label: label\n });\n }\n};\n\ncoreuiTable$1.filters.date_range = {\n _id: null,\n _table: null,\n _value: null,\n _render: false,\n _options: {\n id: null,\n type: 'date_range',\n field: null,\n label: null,\n value: null,\n width: 200,\n attr: {\n \"class\": \"form-control d-inline-block\"\n }\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend(true, {}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (this._options.value !== null) {\n this.setValue(this._options.value);\n }\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Получение id\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Установка значения\r\n * @param {object|null} value\r\n */\n setValue: function setValue(value) {\n if (value) {\n if (!coreuiTableUtils.isObject(value)) {\n return;\n }\n var dateStart = null;\n var dateEnd = null;\n if (value.hasOwnProperty('start') && typeof value.start === 'string' && value.start.match(/^\\d{4}\\-\\d{2}\\-\\d{2}$/) === null && isNaN(new Date(value.start))) {\n dateStart = value.start;\n }\n if (value.hasOwnProperty('end') && typeof value.end === 'string' && value.end.match(/^\\d{4}\\-\\d{2}\\-\\d{2}$/) === null && isNaN(new Date(value.end))) {\n dateEnd = value.end;\n }\n if (dateStart === null && dateEnd === null) {\n this._value = null;\n } else {\n this._value = {\n start: dateStart,\n end: dateEnd\n };\n }\n } else {\n this._value = null;\n }\n if (this._render) {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n if (control[0]) {\n var inputStart = $('input.date-start', control);\n var inputEnd = $('input.date-end', control);\n if (this._value === null) {\n inputStart.val('');\n inputEnd.val('');\n } else if (coreuiTableUtils.isObject(this._value)) {\n inputStart.val(_typeof(this._value.start) !== null ? this._value.start : '');\n inputEnd.val(_typeof(this._value.end) !== null ? this._value.end : '');\n }\n }\n }\n },\n /**\r\n * Получение значения\r\n * @returns {Object|null}\r\n */\n getValue: function getValue() {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n var inputStart = $('input.date-start', control);\n var inputEnd = $('input.date-end', control);\n if (inputStart[0] && inputEnd[0]) {\n var valueStart = inputStart.val();\n var valueEnd = inputEnd.val();\n if (typeof valueStart === 'string' && valueStart !== '' || typeof valueEnd === 'string' && valueEnd !== '') {\n return {\n start: valueStart !== '' ? valueStart : null,\n end: valueEnd !== '' ? valueEnd : null\n };\n }\n }\n return null;\n },\n /**\r\n * Инициализация событий\r\n * @returns {object}\r\n */\n initEvents: function initEvents() {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n var that = this;\n $('input', control).change(function (e) {\n that._table.searchRecords();\n });\n },\n /**\r\n * Формирование контента\r\n * @returns {string}\r\n */\n render: function render() {\n this._render = true;\n var options = this.getOptions();\n var label = typeof options.label === 'string' || typeof options.label === 'number' ? options.label : '';\n if (!coreuiTableUtils.isObject(options.attr)) {\n options.attr = {};\n }\n if (options.hasOwnProperty('width') && coreuiTableUtils.isNumeric(options.width)) {\n if (options.attr.hasOwnProperty('style')) {\n options.attr['style'] += ';width:' + options.width + 'px';\n } else {\n options.attr['style'] = 'width:' + options.width + 'px';\n }\n }\n if (options.attr.hasOwnProperty('type')) {\n delete options.attr.type;\n }\n if (options.attr.hasOwnProperty('value')) {\n delete options.attr.value;\n }\n var field = typeof options.field === 'string' ? options.field : '';\n var startAttr = [];\n var startEnd = [];\n $.each(options.attr, function (name, value) {\n if (['name', 'value', 'class'].indexOf(name) >= 0 || ['string', 'number'].indexOf(_typeof(value)) < 0) {\n return;\n }\n startAttr.push(name + '=\"' + value + '\"');\n startEnd.push(name + '=\"' + value + '\"');\n });\n if (options.attr.hasOwnProperty('class') && ['string', 'number'].indexOf(_typeof(options.attr[\"class\"])) >= 0) {\n startAttr.push('class=\"' + options.attr[\"class\"] + ' date-start\"');\n startEnd.push('class=\"' + options.attr[\"class\"] + ' date-end\"');\n } else {\n startAttr.push('class=\"date-start\"');\n startEnd.push('class=\"date-end\"');\n }\n if (field) {\n startAttr.push('name=\"' + field + '[start]\"');\n startEnd.push('name=\"' + field + '[end]\"');\n }\n startAttr.push('value=\"' + (this._value ? this._value.start : '') + '\"');\n startEnd.push('value=\"' + (this._value ? this._value.end : '') + '\"');\n return ejs.render(tpl['filters/date_range.html'], {\n label: label,\n startAttr: startAttr.length > 0 ? ' ' + startAttr.join(' ') : '',\n endAttr: startEnd.length > 0 ? ' ' + startEnd.join(' ') : ''\n });\n }\n};\n\ncoreuiTable$1.filters.datetime_range = {\n _id: null,\n _table: null,\n _value: null,\n _render: false,\n _options: {\n id: null,\n type: 'datetime_range',\n field: null,\n label: null,\n value: null,\n width: 200,\n attr: {\n \"class\": \"form-control d-inline-block\"\n }\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend(true, {}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (this._options.value !== null) {\n this.setValue(this._options.value);\n }\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Получение id\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Установка значения\r\n * @param {object|null} value\r\n */\n setValue: function setValue(value) {\n if (value) {\n if (!coreuiTableUtils.isObject(value)) {\n return;\n }\n var dateStart = null;\n var dateEnd = null;\n if (value.hasOwnProperty('start') && typeof value.start === 'string' && value.start.match(/^\\d{4}\\-\\d{2}\\-\\d{2} \\d{2}:\\d{2}:\\d{2}$/) === null && isNaN(new Date(value.start))) {\n dateStart = value.start;\n }\n if (value.hasOwnProperty('end') && typeof value.end === 'string' && value.end.match(/^\\d{4}\\-\\d{2}\\-\\d{2} \\d{2}:\\d{2}:\\d{2}$/) === null && isNaN(new Date(value.end))) {\n dateEnd = value.end;\n }\n if (dateStart === null && dateEnd === null) {\n this._value = null;\n } else {\n this._value = {\n start: dateStart,\n end: dateEnd\n };\n }\n } else {\n this._value = null;\n }\n if (this._render) {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n if (control[0]) {\n var inputStart = $('input.date-start', control);\n var inputEnd = $('input.date-end', control);\n if (this._value === null) {\n inputStart.val('');\n inputEnd.val('');\n } else if (coreuiTableUtils.isObject(this._value)) {\n inputStart.val(_typeof(this._value.start) !== null ? this._value.start : '');\n inputEnd.val(_typeof(this._value.end) !== null ? this._value.end : '');\n }\n }\n }\n },\n /**\r\n * Получение значения\r\n * @returns {Object|null}\r\n */\n getValue: function getValue() {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n var inputStart = $('input.date-start', control);\n var inputEnd = $('input.date-end', control);\n if (inputStart[0] && inputEnd[0]) {\n var valueStart = inputStart.val();\n var valueEnd = inputEnd.val();\n if (typeof valueStart === 'string' && valueStart !== '' || typeof valueEnd === 'string' && valueEnd !== '') {\n return {\n start: valueStart !== '' ? valueStart : null,\n end: valueEnd !== '' ? valueEnd : null\n };\n }\n }\n return null;\n },\n /**\r\n * Инициализация событий\r\n * @returns {object}\r\n */\n initEvents: function initEvents() {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n var that = this;\n $('input', control).change(function (e) {\n that._table.searchRecords();\n });\n },\n /**\r\n * Формирование контента\r\n * @returns {string}\r\n */\n render: function render() {\n this._render = true;\n var options = this.getOptions();\n var label = typeof options.label === 'string' || typeof options.label === 'number' ? options.label : '';\n if (!coreuiTableUtils.isObject(options.attr)) {\n options.attr = {};\n }\n if (options.hasOwnProperty('width') && coreuiTableUtils.isNumeric(options.width)) {\n if (options.attr.hasOwnProperty('style')) {\n options.attr['style'] += ';width:' + options.width + 'px';\n } else {\n options.attr['style'] = 'width:' + options.width + 'px';\n }\n }\n if (options.attr.hasOwnProperty('type')) {\n delete options.attr.type;\n }\n if (options.attr.hasOwnProperty('value')) {\n delete options.attr.value;\n }\n var field = typeof options.field === 'string' ? options.field : '';\n var startAttr = [];\n var startEnd = [];\n $.each(options.attr, function (name, value) {\n if (['name', 'value', 'class'].indexOf(name) >= 0 || ['string', 'number'].indexOf(_typeof(value)) < 0) {\n return;\n }\n startAttr.push(name + '=\"' + value + '\"');\n startEnd.push(name + '=\"' + value + '\"');\n });\n if (options.attr.hasOwnProperty('class') && ['string', 'number'].indexOf(_typeof(options.attr[\"class\"])) >= 0) {\n startAttr.push('class=\"' + options.attr[\"class\"] + ' date-start\"');\n startEnd.push('class=\"' + options.attr[\"class\"] + ' date-end\"');\n } else {\n startAttr.push('class=\"date-start\"');\n startEnd.push('class=\"date-end\"');\n }\n if (field) {\n startAttr.push('name=\"' + field + '[start]\"');\n startEnd.push('name=\"' + field + '[end]\"');\n }\n startAttr.push('value=\"' + (this._value ? this._value.start : '') + '\"');\n startEnd.push('value=\"' + (this._value ? this._value.end : '') + '\"');\n return ejs.render(tpl['filters/datetime_range.html'], {\n label: label,\n startAttr: startAttr.length > 0 ? ' ' + startAttr.join(' ') : '',\n endAttr: startEnd.length > 0 ? ' ' + startEnd.join(' ') : ''\n });\n }\n};\n\ncoreuiTable$1.filters.checkbox = {\n _id: null,\n _table: null,\n _value: null,\n _class: 'btn btn-outline-secondary',\n _render: false,\n _options: {\n id: null,\n type: 'checkbox',\n field: null,\n label: null,\n value: null,\n options: []\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend(true, {}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (this._options.value !== null) {\n this.setValue(this._options.value);\n }\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Получение id\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Установка значения\r\n * @param {Array|string|number|null} value\r\n */\n setValue: function setValue(value) {\n if (['string', 'number', 'object'].indexOf(_typeof(value)) < 0) {\n return;\n }\n if (_typeof(value) === 'object') {\n if (Array.isArray(value)) {\n var items = [];\n $.each(value, function (key, item) {\n if (typeof value !== 'string' && typeof value !== 'number') {\n return;\n }\n items.push(item);\n });\n this._value = items;\n } else {\n this._value = null;\n }\n } else {\n this._value = [value];\n }\n if (this._render) {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n if (control[0]) {\n $('input:checked', control).prop('checked', false);\n if (Array.isArray(this._value)) {\n $.each(this._value, function (key, value) {\n $('input[value=\"' + value + '\"]', control).prop('checked', true);\n });\n }\n }\n }\n },\n /**\r\n * Получение значения\r\n * @returns {Array|null}\r\n */\n getValue: function getValue() {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n if (control[0]) {\n var inputs = $('input:checked', control);\n var items = [];\n $.each(inputs, function (key, input) {\n var value = $(input).attr('value');\n if (['string', 'number'].indexOf(_typeof(value)) >= 0 && value !== '') {\n items.push(value);\n }\n });\n return items.length > 0 ? items : null;\n } else {\n return this._value;\n }\n },\n /**\r\n * Инициализация событий\r\n */\n initEvents: function initEvents() {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n var that = this;\n $('input', control).change(function (e) {\n that._table.searchRecords();\n });\n },\n /**\r\n * Формирование контента\r\n * @returns {string}\r\n */\n render: function render() {\n this._render = true;\n var that = this;\n var options = this.getOptions();\n var field = typeof options.field === 'string' ? options.field : '';\n var items = [];\n var label = typeof options.label === 'string' || typeof options.label === 'number' ? options.label : '';\n $.each(options.options, function (key, option) {\n if (!coreuiTableUtils.isObject(option) || !option.hasOwnProperty('value') || ['string', 'numeric'].indexOf(_typeof(option.value)) === -1) {\n return;\n }\n var checked = Array.isArray(that._value) ? that._value.indexOf(option.value) >= 0 : false;\n var text = option.hasOwnProperty('text') ? option.text : option.value;\n items.push({\n text: text,\n value: option.value,\n \"class\": option.hasOwnProperty('class') && typeof option[\"class\"] === 'string' ? option[\"class\"] : that._class,\n checked: checked\n });\n });\n return ejs.render(tpl['filters/checkbox.html'], {\n label: label,\n items: items,\n field: field + this.getId(),\n lang: this._table.getLang()\n });\n }\n};\n\ncoreuiTable$1.filters.radio = {\n _id: null,\n _table: null,\n _value: null,\n _class: 'btn btn-outline-secondary',\n _render: false,\n _options: {\n id: null,\n type: 'radio',\n field: null,\n label: null,\n value: null,\n options: []\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend(true, {}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (this._options.value !== null) {\n this.setValue(this._options.value);\n }\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Получение id\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Установка значения\r\n * @param {string|number|null} value\r\n */\n setValue: function setValue(value) {\n if (value !== null && typeof value !== 'string' && typeof value !== 'number') {\n return;\n }\n this._value = value;\n if (this._render) {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n if (control[0]) {\n $('input', control).prop('checked', false);\n if (this._value !== null) {\n $('input[value=\"' + this._value + '\"]', control).prop('checked', true);\n }\n }\n }\n },\n /**\r\n * Получение значения\r\n * @returns {string|null}\r\n */\n getValue: function getValue() {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n var input = $('input:checked', control);\n if (input[0]) {\n var value = input.val();\n return value === '' ? null : value;\n } else {\n return this._value;\n }\n },\n /**\r\n * Получение типа поискового алгоритма\r\n */\n getAlgorithm: function getAlgorithm() {\n return 'strict';\n },\n /**\r\n * Инициализация событий\r\n */\n initEvents: function initEvents() {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n var that = this;\n $('input', control).change(function (e) {\n that._table.searchRecords();\n });\n },\n /**\r\n * Формирование контента\r\n * @returns {string}\r\n */\n render: function render() {\n this._render = true;\n var that = this;\n var options = this.getOptions();\n var field = typeof options.field === 'string' ? options.field : '';\n var items = [];\n var label = typeof options.label === 'string' || typeof options.label === 'number' ? options.label : '';\n $.each(options.options, function (key, option) {\n if (!coreuiTableUtils.isObject(option) || !option.hasOwnProperty('value') || ['string', 'numeric'].indexOf(_typeof(option.value)) === -1) {\n return;\n }\n var text = option.hasOwnProperty('text') ? option.text : option.value;\n items.push({\n text: text,\n value: option.value,\n \"class\": option.hasOwnProperty('class') && typeof option[\"class\"] === 'string' ? option[\"class\"] : that._class,\n checked: option.value == that._value\n });\n });\n return ejs.render(tpl['filters/radio.html'], {\n label: label,\n items: items,\n field: field + this.getId(),\n lang: this._table.getLang()\n });\n }\n};\n\ncoreuiTable$1.filters.select = {\n _id: null,\n _table: null,\n _value: null,\n _render: false,\n _options: {\n id: null,\n type: 'select',\n field: null,\n label: null,\n width: null,\n attr: {\n \"class\": 'form-select d-inline-block'\n },\n options: []\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend(true, {}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Получение id\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Установка значения\r\n * @param {Array|string|number|null} value\r\n */\n setValue: function setValue(value) {\n if (['string', 'number', 'object'].indexOf(_typeof(value)) < 0) {\n return;\n }\n if (_typeof(value) === 'object') {\n if (Array.isArray(value)) {\n var items = [];\n $.each(value, function (key, item) {\n if (typeof value !== 'string' && typeof value !== 'number') {\n return;\n }\n items.push(item);\n });\n this._value = items;\n } else {\n this._value = null;\n }\n } else {\n this._value = [value];\n }\n if (this._render) {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n if (control[0]) {\n $('select option:selected', control).prop('selected', false);\n if (Array.isArray(this._value)) {\n $.each(this._value, function (key, value) {\n $('select option[value=\"' + value + '\"]', control).prop('selected', true);\n });\n }\n }\n }\n },\n /**\r\n * Получение значения\r\n * @returns {Array|null}\r\n */\n getValue: function getValue() {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n if (control[0]) {\n var options = $('select option:checked', control);\n var items = [];\n $.each(options, function (key, option) {\n var value = $(option).attr('value');\n if (['string', 'number'].indexOf(_typeof(value)) >= 0 && value !== '') {\n items.push(value);\n }\n });\n return items.length > 0 ? items : null;\n } else {\n return null;\n }\n },\n /**\r\n * Инициализация событий\r\n */\n initEvents: function initEvents() {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n var that = this;\n $('select', control).change(function (e) {\n that._table.searchRecords();\n });\n },\n /**\r\n * Формирование контента\r\n * @returns {string}\r\n */\n render: function render() {\n this._render = true;\n var that = this;\n var options = this.getOptions();\n var selectOptions = [];\n var attributes = [];\n var label = typeof options.label === 'string' || typeof options.label === 'number' ? options.label : '';\n if (!options.hasOwnProperty('attr') || !coreuiTableUtils.isObject(options.attr)) {\n options.attr = {};\n }\n if (options.field) {\n options.attr.name = this._options.field;\n }\n if (options.width) {\n options.attr = coreuiTableUtils.mergeAttr({\n style: 'width:' + options.width + 'px'\n }, options.attr);\n }\n if (options.hasOwnProperty('options') && _typeof(options.options) === 'object' && options.options !== null) {\n $.each(options.options, function (key, option) {\n if (typeof option === 'string' || typeof option === 'number') {\n selectOptions.push(that._buildOption({\n type: 'option',\n value: key,\n text: option\n }));\n } else if (coreuiTableUtils.isObject(option)) {\n var type = option.hasOwnProperty('type') && typeof option.type === 'string' ? option.type : 'option';\n if (type === 'group') {\n var renderAttr = [];\n var groupAttr = {};\n var groupOptions = [];\n if (option.hasOwnProperty('attr') && coreuiTableUtils.isObject(option.attr)) {\n groupAttr = option.attr;\n }\n if (option.hasOwnProperty('label') && ['string', 'number'].indexOf(_typeof(option.label)) >= 0) {\n groupAttr.label = option.label;\n }\n $.each(groupAttr, function (name, value) {\n renderAttr.push(name + '=\"' + value + '\"');\n });\n if (Array.isArray(option.options)) {\n $.each(option.options, function (key, groupOption) {\n groupOptions.push(that._buildOption(groupOption));\n });\n }\n selectOptions.push({\n type: 'group',\n attr: renderAttr.length > 0 ? ' ' + renderAttr.join(' ') : '',\n options: groupOptions\n });\n } else {\n selectOptions.push(that._buildOption(option));\n }\n }\n });\n }\n $.each(options.attr, function (name, value) {\n attributes.push(name + '=\"' + value + '\"');\n });\n return ejs.render(tpl['filters/select.html'], {\n label: label,\n attr: attributes.length > 0 ? ' ' + attributes.join(' ') : '',\n options: selectOptions\n });\n },\n /**\r\n * Сборка опции\r\n * @param option\r\n * @return {object}\r\n * @private\r\n */\n _buildOption: function _buildOption(option) {\n var optionAttr = [];\n var optionText = option.hasOwnProperty('text') && ['string', 'number'].indexOf(_typeof(option.text)) >= 0 ? option.text : '';\n $.each(option, function (name, value) {\n if (name !== 'text') {\n optionAttr.push(name + '=\"' + value + '\"');\n }\n });\n if (Array.isArray(this._value)) {\n $.each(this._value, function (key, itemValue) {\n if (itemValue == option.value) {\n optionAttr.push('selected=\"selected\"');\n return false;\n }\n });\n } else if (this._value == option.value) {\n optionAttr.push('selected=\"selected\"');\n }\n return {\n type: 'option',\n text: optionText,\n attr: optionAttr.length > 0 ? ' ' + optionAttr.join(' ') : ''\n };\n }\n};\n\ncoreuiTable$1.filters[\"switch\"] = {\n _id: null,\n _table: null,\n _value: null,\n _render: false,\n _options: {\n id: null,\n type: 'switch',\n field: null,\n label: null,\n value: null,\n valueY: 'Y'\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend(true, {}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (this._options.value !== null) {\n this.setValue(this._options.value);\n }\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Получение id\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Установка значения\r\n * @param {string|number|null} value\r\n */\n setValue: function setValue(value) {\n if (value !== null && typeof value !== 'string' && typeof value !== 'number') {\n return;\n }\n this._value = value;\n if (this._render) {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n if (control[0]) {\n var valueY = typeof this._options.valueY === 'string' || typeof this._options.valueY === 'number' ? this._options.valueY : '';\n if (this._value === null) {\n $('input', control).prop('checked', false);\n } else if (this._value === valueY) {\n $('input', control).prop('checked', true);\n } else {\n $('input', control).prop('checked', false);\n }\n }\n }\n },\n /**\r\n * Получение значения\r\n * @returns {string}\r\n */\n getValue: function getValue() {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n var input = $('input:checked', control);\n return input[0] ? input.val() : null;\n },\n /**\r\n * Инициализация событий\r\n */\n initEvents: function initEvents() {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n var that = this;\n $('input', control).change(function (e) {\n that._table.searchRecords();\n });\n },\n /**\r\n * Формирование контента\r\n * @returns {string}\r\n */\n render: function render() {\n this._render = true;\n var options = this.getOptions();\n var valueY = typeof options.valueY === 'string' || typeof options.valueY === 'number' ? options.valueY : '';\n var label = typeof options.label === 'string' || typeof options.label === 'number' ? options.label : '';\n return ejs.render(tpl['filters/switch.html'], {\n id: this._id,\n valueY: valueY,\n field: typeof options.field === 'string' ? options.field : '',\n checked: this._value == valueY,\n label: label\n });\n }\n};\n\ncoreuiTable$1.search.text = {\n _id: null,\n _table: null,\n _value: null,\n _render: false,\n _options: {\n id: null,\n type: 'text',\n field: null,\n label: null,\n value: null,\n width: 200,\n attr: {\n \"class\": \"form-control d-inline-block\"\n }\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend(true, {}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (this._options.value !== null) {\n this.setValue(this._options.value);\n }\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Получение id\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Установка значения\r\n * @param {string} value\r\n */\n setValue: function setValue(value) {\n if (value !== null && typeof value !== 'string' && typeof value !== 'number') {\n return;\n }\n this._value = value;\n if (this._render) {\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n if (control[0]) {\n $('input', control).val(this._value === null ? '' : this._value);\n }\n }\n },\n /**\r\n * Получение значения\r\n * @returns {string|null}\r\n */\n getValue: function getValue() {\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n var input = $('input', control);\n if (input[0]) {\n var value = input.val();\n if (typeof value === 'string' && value !== '') {\n return value;\n }\n }\n return null;\n },\n /**\r\n * Инициализация событий\r\n * @returns {object}\r\n */\n initEvents: function initEvents() {\n var container = coreuiTableElements.getSearchContainer(this._table.getId());\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n var that = this;\n $('input', control).keyup(function (e) {\n if (e.key === 'Enter' || e.keyCode === 13) {\n that._table.searchRecords();\n container.fadeOut('fast');\n }\n });\n },\n /**\r\n * Формирование контента\r\n * @returns {string}\r\n */\n render: function render() {\n this._render = true;\n if (!coreuiTableUtils.isObject(this._options.attr)) {\n this._options.attr = {};\n }\n if (this._options.hasOwnProperty('width') && coreuiTableUtils.isNumeric(this._options.width)) {\n if (this._options.attr.hasOwnProperty('style')) {\n this._options.attr['style'] += ';width:' + this._options.width + 'px';\n } else {\n this._options.attr['style'] = 'width:' + this._options.width + 'px';\n }\n }\n this._options.attr['name'] = typeof this._options.field === 'string' ? this._options.field : '';\n this._options.attr['value'] = typeof this._value === 'string' || typeof this._value === 'number' ? this._value : '';\n if (this._options.attr.hasOwnProperty('type')) {\n delete this._options.attr.type;\n }\n var attributes = [];\n $.each(this._options.attr, function (name, value) {\n attributes.push(name + '=\"' + value + '\"');\n });\n return ejs.render(tpl['search/text.html'], {\n attr: attributes.length > 0 ? ' ' + attributes.join(' ') : ''\n });\n }\n};\n\ncoreuiTable$1.search.number = {\n _id: null,\n _table: null,\n _value: null,\n _render: false,\n _options: {\n id: null,\n type: 'number',\n field: null,\n label: null,\n value: null,\n width: 200,\n attr: {\n \"class\": \"form-control d-inline-block\"\n }\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend(true, {}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (this._options.value !== null) {\n this.setValue(this._options.value);\n }\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Получение id\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Установка значения\r\n * @param {Object} value\r\n */\n setValue: function setValue(value) {\n if (value) {\n if (!coreuiTableUtils.isObject(value)) {\n return;\n }\n var numberStart = null;\n var numberEnd = null;\n if (value.hasOwnProperty('start') && ['string', 'number'].indexOf(_typeof(value.start)) >= 0) {\n numberStart = value.start;\n }\n if (value.hasOwnProperty('end') && ['string', 'number'].indexOf(_typeof(value.end)) >= 0) {\n numberEnd = value.end;\n }\n if (numberStart === null && numberEnd === null) {\n this._value = null;\n } else {\n this._value = {\n start: numberStart,\n end: numberEnd\n };\n }\n } else {\n this._value = null;\n }\n if (this._render) {\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n if (control[0]) {\n var inputStart = $('input.number-start', control);\n var inputEnd = $('input.number-end', control);\n if (this._value === null) {\n inputStart.val('');\n inputEnd.val('');\n } else if (coreuiTableUtils.isObject(this._value)) {\n inputStart.val(_typeof(this._value.start) !== null ? this._value.start : '');\n inputEnd.val(_typeof(this._value.end) !== null ? this._value.end : '');\n }\n }\n }\n },\n /**\r\n * Получение значения\r\n * @returns {string|null}\r\n */\n getValue: function getValue() {\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n var inputStart = $('input.number-start', control);\n var inputEnd = $('input.number-end', control);\n if (inputStart[0] && inputEnd[0]) {\n var valueStart = inputStart.val();\n var valueEnd = inputEnd.val();\n if (typeof valueStart === 'string' && valueStart !== '' || typeof valueEnd === 'string' && valueEnd !== '') {\n return {\n start: valueStart !== '' ? valueStart : null,\n end: valueEnd !== '' ? valueEnd : null\n };\n }\n }\n return null;\n },\n /**\r\n * Инициализация событий\r\n * @returns {object}\r\n */\n initEvents: function initEvents() {\n var container = coreuiTableElements.getSearchContainer(this._table.getId());\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n var that = this;\n $('input.number-start, input.number-end', control).keyup(function (e) {\n if (e.key === 'Enter' || e.keyCode === 13) {\n that._table.searchRecords();\n container.fadeOut('fast');\n }\n });\n },\n /**\r\n * Формирование контента\r\n * @returns {string}\r\n */\n render: function render() {\n this._render = true;\n if (!coreuiTableUtils.isObject(this._options.attr)) {\n this._options.attr = {};\n }\n if (this._options.hasOwnProperty('width') && coreuiTableUtils.isNumeric(this._options.width)) {\n if (this._options.attr.hasOwnProperty('style')) {\n this._options.attr['style'] += ';width:' + this._options.width + 'px';\n } else {\n this._options.attr['style'] = 'width:' + this._options.width + 'px';\n }\n }\n if (this._options.attr.hasOwnProperty('type')) {\n delete this._options.attr.type;\n }\n if (this._options.attr.hasOwnProperty('value')) {\n delete this._options.attr.value;\n }\n var field = typeof this._options.field === 'string' ? this._options.field : '';\n var startAttr = [];\n var startEnd = [];\n $.each(this._options.attr, function (name, value) {\n if (['name', 'value', 'class'].indexOf(name) >= 0 || ['string', 'number'].indexOf(_typeof(value)) < 0) {\n return;\n }\n startAttr.push(name + '=\"' + value + '\"');\n startEnd.push(name + '=\"' + value + '\"');\n });\n if (this._options.attr.hasOwnProperty('class') && ['string', 'number'].indexOf(_typeof(this._options.attr[\"class\"])) >= 0) {\n startAttr.push('class=\"' + this._options.attr[\"class\"] + ' number-start\"');\n startEnd.push('class=\"' + this._options.attr[\"class\"] + ' number-end\"');\n } else {\n startAttr.push('class=\"number-start\"');\n startEnd.push('class=\"number-end\"');\n }\n if (field) {\n startAttr.push('name=\"' + field + '[start]\"');\n startEnd.push('name=\"' + field + '[end]\"');\n }\n startAttr.push('value=\"' + (this._value ? this._value.start : '') + '\"');\n startEnd.push('value=\"' + (this._value ? this._value.end : '') + '\"');\n return ejs.render(tpl['search/number.html'], {\n startAttr: startAttr.length > 0 ? ' ' + startAttr.join(' ') : '',\n endAttr: startEnd.length > 0 ? ' ' + startEnd.join(' ') : ''\n });\n }\n};\n\ncoreuiTable$1.search.date = {\n _id: null,\n _table: null,\n _value: null,\n _render: false,\n _options: {\n id: null,\n type: 'date',\n field: null,\n label: null,\n value: null,\n width: 200,\n attr: {\n \"class\": \"form-control d-inline-block\"\n }\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend(true, {}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (this._options.value !== null) {\n this.setValue(this._options.value);\n }\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Получение id\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Установка значения\r\n * @param {string} value\r\n */\n setValue: function setValue(value) {\n if (typeof value !== 'string' && value !== null) {\n return;\n }\n if (value && (value.match(/^\\d{4}\\-\\d{2}\\-\\d{2}$/) === null || isNaN(new Date(value)))) {\n return;\n }\n this._value = value;\n if (this._render) {\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n if (control[0]) {\n $('input', control).val(this._value === null ? '' : this._value);\n }\n }\n },\n /**\r\n * Получение значения\r\n * @returns {string|null}\r\n */\n getValue: function getValue() {\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n var input = $('input', control);\n if (input[0]) {\n var value = input.val();\n if (typeof value === 'string' && value !== '') {\n return value;\n }\n }\n return null;\n },\n /**\r\n * Инициализация событий\r\n * @returns {object}\r\n */\n initEvents: function initEvents() {\n var container = coreuiTableElements.getSearchContainer(this._table.getId());\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n var that = this;\n $('input', control).keyup(function (e) {\n if (e.key === 'Enter' || e.keyCode === 13) {\n that._table.searchRecords();\n container.fadeOut('fast');\n }\n });\n },\n /**\r\n * Формирование контента\r\n * @returns {string}\r\n */\n render: function render() {\n this._render = true;\n if (!coreuiTableUtils.isObject(this._options.attr)) {\n this._options.attr = {};\n }\n if (this._options.hasOwnProperty('width') && coreuiTableUtils.isNumeric(this._options.width)) {\n if (this._options.attr.hasOwnProperty('style')) {\n this._options.attr['style'] += ';width:' + this._options.width + 'px';\n } else {\n this._options.attr['style'] = 'width:' + this._options.width + 'px';\n }\n }\n this._options.attr['name'] = typeof this._options.field === 'string' ? this._options.field : '';\n this._options.attr['value'] = typeof this._value === 'string' || typeof this._value === 'number' ? this._value : '';\n if (this._options.attr.hasOwnProperty('type')) {\n delete this._options.attr.type;\n }\n var attributes = [];\n $.each(this._options.attr, function (name, value) {\n attributes.push(name + '=\"' + value + '\"');\n });\n return ejs.render(tpl['search/date.html'], {\n attr: attributes.length > 0 ? ' ' + attributes.join(' ') : ''\n });\n }\n};\n\ncoreuiTable$1.search.date_month = {\n _id: null,\n _table: null,\n _value: null,\n _render: false,\n _options: {\n id: null,\n type: 'date_month',\n field: null,\n label: null,\n value: null,\n width: 200,\n attr: {\n \"class\": \"form-control d-inline-block\"\n }\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend(true, {}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (this._options.value !== null) {\n this.setValue(this._options.value);\n }\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Получение id\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Установка значения\r\n * @param {string|null} value\r\n */\n setValue: function setValue(value) {\n if (typeof value !== 'string' && value !== null) {\n return;\n }\n if (value && (value.match(/^\\d{4}\\-\\d{2}$/) === null || isNaN(new Date(value)))) {\n return;\n }\n this._value = value;\n if (this._render) {\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n if (control[0]) {\n $('input', control).val(this._value === null ? '' : this._value);\n }\n }\n },\n /**\r\n * Получение значения\r\n * @returns {string|null}\r\n */\n getValue: function getValue() {\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n var input = $('input', control);\n if (input[0]) {\n var value = input.val();\n if (typeof value === 'string' && value !== '') {\n return value;\n }\n }\n return null;\n },\n /**\r\n * Инициализация событий\r\n * @returns {object}\r\n */\n initEvents: function initEvents() {\n var container = coreuiTableElements.getSearchContainer(this._table.getId());\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n var that = this;\n $('input', control).keyup(function (e) {\n if (e.key === 'Enter' || e.keyCode === 13) {\n that._table.searchRecords();\n container.fadeOut('fast');\n }\n });\n },\n /**\r\n * Формирование контента\r\n * @returns {string}\r\n */\n render: function render() {\n this._render = true;\n if (!coreuiTableUtils.isObject(this._options.attr)) {\n this._options.attr = {};\n }\n if (this._options.hasOwnProperty('width') && coreuiTableUtils.isNumeric(this._options.width)) {\n if (this._options.attr.hasOwnProperty('style')) {\n this._options.attr['style'] += ';width:' + this._options.width + 'px';\n } else {\n this._options.attr['style'] = 'width:' + this._options.width + 'px';\n }\n }\n this._options.attr['name'] = typeof this._options.field === 'string' ? this._options.field : '';\n this._options.attr['value'] = typeof this._value === 'string' || typeof this._value === 'number' ? this._value : '';\n if (this._options.attr.hasOwnProperty('type')) {\n delete this._options.attr.type;\n }\n var attributes = [];\n $.each(this._options.attr, function (name, value) {\n attributes.push(name + '=\"' + value + '\"');\n });\n return ejs.render(tpl['search/date_month.html'], {\n attr: attributes.length > 0 ? ' ' + attributes.join(' ') : ''\n });\n }\n};\n\ncoreuiTable$1.search.datetime = {\n _id: null,\n _table: null,\n _value: null,\n _render: false,\n _options: {\n id: null,\n type: 'datetime',\n field: null,\n label: null,\n value: null,\n width: 200,\n attr: {\n \"class\": \"form-control d-inline-block\"\n }\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend(true, {}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (this._options.value !== null) {\n this.setValue(this._options.value);\n }\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Получение id\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Установка значения\r\n * @param {string} value\r\n */\n setValue: function setValue(value) {\n if (typeof value !== 'string' && value !== null) {\n return;\n }\n if (value && (value.match(/^\\d{4}\\-\\d{2}\\-\\d{2} \\d{2}:\\d{2}:\\d{2}$/) === null || isNaN(new Date(value)))) {\n return;\n }\n this._value = value;\n if (this._render) {\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n if (control[0]) {\n $('input', control).val(this._value === null ? '' : this._value);\n }\n }\n },\n /**\r\n * Получение значения\r\n * @returns {string}\r\n */\n getValue: function getValue() {\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n var input = $('input', control);\n if (input[0]) {\n var value = input.val();\n if (typeof value === 'string' && value !== '') {\n return value;\n }\n }\n return null;\n },\n /**\r\n * Инициализация событий\r\n * @returns {object}\r\n */\n initEvents: function initEvents() {\n var container = coreuiTableElements.getSearchContainer(this._table.getId());\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n var that = this;\n $('input', control).keyup(function (e) {\n if (e.key === 'Enter' || e.keyCode === 13) {\n that._table.searchRecords();\n container.fadeOut('fast');\n }\n });\n },\n /**\r\n * Формирование контента\r\n * @returns {string}\r\n */\n render: function render() {\n this._render = true;\n if (!coreuiTableUtils.isObject(this._options.attr)) {\n this._options.attr = {};\n }\n if (this._options.hasOwnProperty('width') && coreuiTableUtils.isNumeric(this._options.width)) {\n if (this._options.attr.hasOwnProperty('style')) {\n this._options.attr['style'] += ';width:' + this._options.width + 'px';\n } else {\n this._options.attr['style'] = 'width:' + this._options.width + 'px';\n }\n }\n this._options.attr['name'] = typeof this._options.field === 'string' ? this._options.field : '';\n this._options.attr['value'] = typeof this._value === 'string' || typeof this._value === 'number' ? this._value : '';\n if (this._options.attr.hasOwnProperty('type')) {\n delete this._options.attr.type;\n }\n var attributes = [];\n $.each(this._options.attr, function (name, value) {\n attributes.push(name + '=\"' + value + '\"');\n });\n return ejs.render(tpl['search/datetime.html'], {\n attr: attributes.length > 0 ? ' ' + attributes.join(' ') : ''\n });\n }\n};\n\ncoreuiTable$1.search.date_range = {\n _id: null,\n _table: null,\n _value: null,\n _render: false,\n _options: {\n id: null,\n type: 'date_range',\n field: null,\n label: null,\n value: null,\n width: 200,\n attr: {\n \"class\": \"form-control d-inline-block\"\n }\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend(true, {}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (this._options.value !== null) {\n this.setValue(this._options.value);\n }\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Получение id\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Установка значения\r\n * @param {Object} value\r\n */\n setValue: function setValue(value) {\n if (value) {\n if (!coreuiTableUtils.isObject(value)) {\n return;\n }\n var dateStart = null;\n var dateEnd = null;\n if (value.hasOwnProperty('start') && typeof value.start === 'string' && value.start.match(/^\\d{4}\\-\\d{2}\\-\\d{2}$/) === null && isNaN(new Date(value.start))) {\n dateStart = value.start;\n }\n if (value.hasOwnProperty('end') && typeof value.end === 'string' && value.end.match(/^\\d{4}\\-\\d{2}\\-\\d{2}$/) === null && isNaN(new Date(value.end))) {\n dateEnd = value.end;\n }\n if (dateStart === null && dateEnd === null) {\n this._value = null;\n } else {\n this._value = {\n start: dateStart,\n end: dateEnd\n };\n }\n } else {\n this._value = null;\n }\n if (this._render) {\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n if (control[0]) {\n var inputStart = $('input.date-start', control);\n var inputEnd = $('input.date-end', control);\n if (this._value === null) {\n inputStart.val('');\n inputEnd.val('');\n } else if (coreuiTableUtils.isObject(this._value)) {\n inputStart.val(_typeof(this._value.start) !== null ? this._value.start : '');\n inputEnd.val(_typeof(this._value.end) !== null ? this._value.end : '');\n }\n }\n }\n },\n /**\r\n * Получение значения\r\n * @returns {Object|null}\r\n */\n getValue: function getValue() {\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n var inputStart = $('input.date-start', control);\n var inputEnd = $('input.date-end', control);\n if (inputStart[0] && inputEnd[0]) {\n var valueStart = inputStart.val();\n var valueEnd = inputEnd.val();\n if (typeof valueStart === 'string' && valueStart !== '' || typeof valueEnd === 'string' && valueEnd !== '') {\n return {\n start: valueStart !== '' ? valueStart : null,\n end: valueEnd !== '' ? valueEnd : null\n };\n }\n }\n return null;\n },\n /**\r\n * Инициализация событий\r\n * @returns {object}\r\n */\n initEvents: function initEvents() {\n var container = coreuiTableElements.getSearchContainer(this._table.getId());\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n var that = this;\n $('input.date-start, input.date-end', control).keyup(function (e) {\n if (e.key === 'Enter' || e.keyCode === 13) {\n that._table.searchRecords();\n container.fadeOut('fast');\n }\n });\n },\n /**\r\n * Формирование контента\r\n * @returns {string}\r\n */\n render: function render() {\n this._render = true;\n var options = this.getOptions();\n if (!coreuiTableUtils.isObject(options.attr)) {\n options.attr = {};\n }\n if (options.hasOwnProperty('width') && coreuiTableUtils.isNumeric(options.width)) {\n if (options.attr.hasOwnProperty('style')) {\n options.attr['style'] += ';width:' + options.width + 'px';\n } else {\n options.attr['style'] = 'width:' + options.width + 'px';\n }\n }\n if (options.attr.hasOwnProperty('type')) {\n delete options.attr.type;\n }\n if (options.attr.hasOwnProperty('value')) {\n delete options.attr.value;\n }\n var field = typeof options.field === 'string' ? options.field : '';\n var startAttr = [];\n var startEnd = [];\n $.each(options.attr, function (name, value) {\n if (['name', 'value', 'class'].indexOf(name) >= 0 || ['string', 'number'].indexOf(_typeof(value)) < 0) {\n return;\n }\n startAttr.push(name + '=\"' + value + '\"');\n startEnd.push(name + '=\"' + value + '\"');\n });\n if (options.attr.hasOwnProperty('class') && ['string', 'number'].indexOf(_typeof(options.attr[\"class\"])) >= 0) {\n startAttr.push('class=\"' + options.attr[\"class\"] + ' date-start\"');\n startEnd.push('class=\"' + options.attr[\"class\"] + ' date-end\"');\n } else {\n startAttr.push('class=\"date-start\"');\n startEnd.push('class=\"date-end\"');\n }\n if (field) {\n startAttr.push('name=\"' + field + '[start]\"');\n startEnd.push('name=\"' + field + '[end]\"');\n }\n startAttr.push('value=\"' + (this._value ? this._value.start : '') + '\"');\n startEnd.push('value=\"' + (this._value ? this._value.end : '') + '\"');\n return ejs.render(tpl['search/date_range.html'], {\n startAttr: startAttr.length > 0 ? ' ' + startAttr.join(' ') : '',\n endAttr: startEnd.length > 0 ? ' ' + startEnd.join(' ') : ''\n });\n }\n};\n\ncoreuiTable$1.search.datetime_range = {\n _id: null,\n _table: null,\n _value: null,\n _render: false,\n _options: {\n id: null,\n type: 'datetime_range',\n field: null,\n label: null,\n value: null,\n width: 200,\n attr: {\n \"class\": \"form-control d-inline-block\"\n }\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend(true, {}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (this._options.value !== null) {\n this.setValue(this._options.value);\n }\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Получение id\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Установка значения\r\n * @param {Object} value\r\n */\n setValue: function setValue(value) {\n if (value) {\n if (!coreuiTableUtils.isObject(value)) {\n return;\n }\n var dateStart = null;\n var dateEnd = null;\n if (value.hasOwnProperty('start') && typeof value.start === 'string' && value.start.match(/^\\d{4}\\-\\d{2}\\-\\d{2} \\d{2}:\\d{2}:\\d{2}$/) === null && isNaN(new Date(value.start))) {\n dateStart = value.start;\n }\n if (value.hasOwnProperty('end') && typeof value.end === 'string' && value.end.match(/^\\d{4}\\-\\d{2}\\-\\d{2} \\d{2}:\\d{2}:\\d{2}$/) === null && isNaN(new Date(value.end))) {\n dateEnd = value.end;\n }\n if (dateStart === null && dateEnd === null) {\n this._value = null;\n } else {\n this._value = {\n start: dateStart,\n end: dateEnd\n };\n }\n } else {\n this._value = null;\n }\n if (this._render) {\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n if (control[0]) {\n var inputStart = $('input.date-start', control);\n var inputEnd = $('input.date-end', control);\n if (this._value === null) {\n inputStart.val('');\n inputEnd.val('');\n } else if (coreuiTableUtils.isObject(this._value)) {\n inputStart.val(_typeof(this._value.start) !== null ? this._value.start : '');\n inputEnd.val(_typeof(this._value.end) !== null ? this._value.end : '');\n }\n }\n }\n },\n /**\r\n * Получение значения\r\n * @returns {Object|null}\r\n */\n getValue: function getValue() {\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n var inputStart = $('input.date-start', control);\n var inputEnd = $('input.date-end', control);\n if (inputStart[0] && inputEnd[0]) {\n var valueStart = inputStart.val();\n var valueEnd = inputEnd.val();\n if (typeof valueStart === 'string' && valueStart !== '' || typeof valueEnd === 'string' && valueEnd !== '') {\n return {\n start: valueStart !== '' ? valueStart : null,\n end: valueEnd !== '' ? valueEnd : null\n };\n }\n }\n return null;\n },\n /**\r\n * Инициализация событий\r\n * @returns {object}\r\n */\n initEvents: function initEvents() {\n var container = coreuiTableElements.getSearchContainer(this._table.getId());\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n var that = this;\n $('input.date-start, input.date-end', control).keyup(function (e) {\n if (e.key === 'Enter' || e.keyCode === 13) {\n that._table.searchRecords();\n container.fadeOut('fast');\n }\n });\n },\n /**\r\n * Формирование контента\r\n * @returns {string}\r\n */\n render: function render() {\n this._render = true;\n if (!coreuiTableUtils.isObject(this._options.attr)) {\n this._options.attr = {};\n }\n if (this._options.hasOwnProperty('width') && coreuiTableUtils.isNumeric(this._options.width)) {\n if (this._options.attr.hasOwnProperty('style')) {\n this._options.attr['style'] += ';width:' + this._options.width + 'px';\n } else {\n this._options.attr['style'] = 'width:' + this._options.width + 'px';\n }\n }\n if (this._options.attr.hasOwnProperty('type')) {\n delete this._options.attr.type;\n }\n if (this._options.attr.hasOwnProperty('value')) {\n delete this._options.attr.value;\n }\n var field = typeof this._options.field === 'string' ? this._options.field : '';\n var startAttr = [];\n var startEnd = [];\n $.each(this._options.attr, function (name, value) {\n if (['name', 'value', 'class'].indexOf(name) >= 0 || ['string', 'number'].indexOf(_typeof(value)) < 0) {\n return;\n }\n startAttr.push(name + '=\"' + value + '\"');\n startEnd.push(name + '=\"' + value + '\"');\n });\n if (this._options.attr.hasOwnProperty('class') && ['string', 'number'].indexOf(_typeof(this._options.attr[\"class\"])) >= 0) {\n startAttr.push('class=\"' + this._options.attr[\"class\"] + ' date-start\"');\n startEnd.push('class=\"' + this._options.attr[\"class\"] + ' date-end\"');\n } else {\n startAttr.push('class=\"date-start\"');\n startEnd.push('class=\"date-end\"');\n }\n if (field) {\n startAttr.push('name=\"' + field + '[start]\"');\n startEnd.push('name=\"' + field + '[end]\"');\n }\n startAttr.push('value=\"' + (this._value ? this._value.start : '') + '\"');\n startEnd.push('value=\"' + (this._value ? this._value.end : '') + '\"');\n return ejs.render(tpl['search/datetime_range.html'], {\n startAttr: startAttr.length > 0 ? ' ' + startAttr.join(' ') : '',\n endAttr: startEnd.length > 0 ? ' ' + startEnd.join(' ') : ''\n });\n }\n};\n\ncoreuiTable$1.search.checkbox = {\n _id: null,\n _table: null,\n _value: null,\n _render: false,\n _options: {\n id: null,\n type: 'checkbox',\n field: null,\n label: null,\n value: null,\n options: []\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend(true, {}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (this._options.value !== null) {\n this.setValue(this._options.value);\n }\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Получение id\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Установка значения\r\n * @param {Array|null} value\r\n */\n setValue: function setValue(value) {\n if (['string', 'number', 'object'].indexOf(_typeof(value)) < 0) {\n return;\n }\n if (_typeof(value) === 'object') {\n if (Array.isArray(value)) {\n var items = [];\n $.each(value, function (key, item) {\n if (typeof value !== 'string' && typeof value !== 'number') {\n return;\n }\n items.push(item);\n });\n this._value = items;\n } else {\n this._value = null;\n }\n } else {\n this._value = [value];\n }\n if (this._render) {\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n if (control[0]) {\n $('input:checked', control).prop('checked', false);\n if (Array.isArray(this._value)) {\n $.each(this._value, function (key, value) {\n $('input[value=\"' + value + '\"]', control).prop('checked', true);\n });\n }\n }\n }\n },\n /**\r\n * Получение значения\r\n * @returns {Array|null}\r\n */\n getValue: function getValue() {\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n if (control[0]) {\n var inputs = $('input:checked', control);\n var items = [];\n $.each(inputs, function (key, input) {\n var value = $(input).attr('value');\n if (['string', 'number'].indexOf(_typeof(value)) >= 0 && value !== '') {\n items.push(value);\n }\n });\n return items.length > 0 ? items : null;\n } else {\n return this._value;\n }\n },\n /**\r\n * Инициализация событий\r\n */\n initEvents: function initEvents() {},\n /**\r\n * Формирование контента\r\n * @returns {string}\r\n */\n render: function render() {\n this._render = true;\n var that = this;\n var options = [];\n $.each(this._options.options, function (key, option) {\n if (!coreuiTableUtils.isObject(option) || !option.hasOwnProperty('value') || ['string', 'numeric'].indexOf(_typeof(option.value)) === -1) {\n return;\n }\n var checked = Array.isArray(that._value) ? that._value.indexOf(option.value) >= 0 : false;\n var text = option.hasOwnProperty('text') ? option.text : option.value;\n options.push({\n text: text,\n value: option.value,\n checked: checked\n });\n });\n return ejs.render(tpl['search/checkbox.html'], {\n options: options,\n field: typeof this._options.field === 'string' ? this._options.field : ''\n });\n }\n};\n\ncoreuiTable$1.search.radio = {\n _id: null,\n _table: null,\n _value: null,\n _render: false,\n _options: {\n id: null,\n type: 'radio',\n field: null,\n label: null,\n value: null,\n options: []\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend(true, {}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (this._options.value !== null) {\n this.setValue(this._options.value);\n }\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Получение id\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Установка значения\r\n * @param {string} value\r\n */\n setValue: function setValue(value) {\n if (value !== null && typeof value !== 'string' && typeof value !== 'number') {\n return;\n }\n this._value = value;\n if (this._render) {\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n if (control[0]) {\n $('input', control).prop('checked', false);\n if (this._value !== null) {\n $('input[value=\"' + this._value + '\"]', control).prop('checked', true);\n }\n }\n }\n },\n /**\r\n * Получение значения\r\n * @returns {string|null}\r\n */\n getValue: function getValue() {\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n var input = $('input:checked', control);\n if (input[0]) {\n var value = input.val();\n return value === '' ? null : value;\n } else {\n return this._value;\n }\n },\n /**\r\n * Получение типа поискового алгоритма\r\n */\n getAlgorithm: function getAlgorithm() {\n return 'strict';\n },\n /**\r\n * Инициализация событий\r\n * @returns {object}\r\n */\n initEvents: function initEvents() {},\n /**\r\n * Формирование контента\r\n * @returns {string}\r\n */\n render: function render() {\n this._render = true;\n var that = this;\n var checkedAll = true;\n var options = [];\n $.each(this._options.options, function (key, option) {\n if (!coreuiTableUtils.isObject(option) || !option.hasOwnProperty('value') || ['string', 'numeric'].indexOf(_typeof(option.value)) === -1) {\n return;\n }\n var checked = option.value == that._value;\n var text = option.hasOwnProperty('text') ? option.text : option.value;\n if (checked) {\n checkedAll = false;\n }\n options.push({\n text: text,\n value: option.value,\n checked: checked\n });\n });\n return ejs.render(tpl['search/radio.html'], {\n options: options,\n checkedAll: checkedAll,\n field: typeof this._options.field === 'string' ? this._options.field : '',\n lang: this._table.getLang()\n });\n }\n};\n\ncoreuiTable$1.search.select = {\n _id: null,\n _table: null,\n _value: null,\n _render: false,\n _options: {\n id: null,\n type: 'select',\n field: null,\n label: null,\n width: null,\n value: null,\n attr: {\n \"class\": 'form-select d-inline-block'\n },\n options: []\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend(true, {}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (this._options.value !== null) {\n this.setValue(this._options.value);\n }\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Получение id\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Установка значения\r\n * @param {Array} value\r\n */\n setValue: function setValue(value) {\n if (['string', 'number', 'object'].indexOf(_typeof(value)) < 0) {\n return;\n }\n if (_typeof(value) === 'object') {\n if (Array.isArray(value)) {\n var items = [];\n $.each(value, function (key, item) {\n if (typeof value !== 'string' && typeof value !== 'number') {\n return;\n }\n items.push(item);\n });\n this._value = items;\n } else {\n this._value = null;\n }\n } else {\n this._value = [value];\n }\n if (this._render) {\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n if (control[0]) {\n $('select option:selected', control).prop('selected', false);\n if (Array.isArray(this._value)) {\n $.each(this._value, function (key, value) {\n $('select option[value=\"' + value + '\"]', control).prop('selected', true);\n });\n }\n }\n }\n },\n /**\r\n * Получение значения\r\n * @returns {Array|null}\r\n */\n getValue: function getValue() {\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n if (control[0]) {\n var options = $('select option:selected', control);\n var items = [];\n $.each(options, function (key, option) {\n var value = $(option).attr('value');\n if (['string', 'number'].indexOf(_typeof(value)) >= 0 && value !== '') {\n items.push(value);\n }\n });\n return items.length > 0 ? items : null;\n } else {\n return this._value;\n }\n },\n /**\r\n * Инициализация событий\r\n * @returns {object}\r\n */\n initEvents: function initEvents() {},\n /**\r\n * Формирование контента\r\n * @returns {string}\r\n */\n render: function render() {\n this._render = true;\n var that = this;\n var options = this.getOptions();\n var selectOptions = [];\n var attributes = [];\n if (!options.hasOwnProperty('attr') || !coreuiTableUtils.isObject(options.attr)) {\n options.attr = {};\n }\n if (options.field) {\n options.attr.name = this._options.field;\n }\n if (options.width) {\n options.attr = coreuiTableUtils.mergeAttr({\n style: 'width:' + options.width + 'px'\n }, options.attr);\n }\n if (options.hasOwnProperty('options') && _typeof(options.options) === 'object' && options.options !== null) {\n $.each(options.options, function (key, option) {\n if (typeof option === 'string' || typeof option === 'number') {\n selectOptions.push(that._buildOption({\n type: 'option',\n value: key,\n text: option\n }));\n } else if (coreuiTableUtils.isObject(option)) {\n var type = option.hasOwnProperty('type') && typeof option.type === 'string' ? option.type : 'option';\n if (type === 'group') {\n var renderAttr = [];\n var groupAttr = {};\n var groupOptions = [];\n if (option.hasOwnProperty('attr') && coreuiTableUtils.isObject(option.attr)) {\n groupAttr = option.attr;\n }\n if (option.hasOwnProperty('label') && ['string', 'number'].indexOf(_typeof(option.label)) >= 0) {\n groupAttr.label = option.label;\n }\n $.each(groupAttr, function (name, value) {\n renderAttr.push(name + '=\"' + value + '\"');\n });\n if (Array.isArray(option.options)) {\n $.each(option.options, function (key, groupOption) {\n groupOptions.push(that._buildOption(groupOption));\n });\n }\n selectOptions.push({\n type: 'group',\n attr: renderAttr.length > 0 ? ' ' + renderAttr.join(' ') : '',\n options: groupOptions\n });\n } else {\n selectOptions.push(that._buildOption(option));\n }\n }\n });\n }\n $.each(options.attr, function (name, value) {\n attributes.push(name + '=\"' + value + '\"');\n });\n return ejs.render(tpl['search/select.html'], {\n field: options,\n value: this._value,\n attr: attributes.length > 0 ? ' ' + attributes.join(' ') : '',\n options: selectOptions\n });\n },\n /**\r\n * Сборка опции\r\n * @param option\r\n * @return {object}\r\n * @private\r\n */\n _buildOption: function _buildOption(option) {\n var optionAttr = [];\n var optionText = option.hasOwnProperty('text') && ['string', 'number'].indexOf(_typeof(option.text)) >= 0 ? option.text : '';\n $.each(option, function (name, value) {\n if (name !== 'text') {\n optionAttr.push(name + '=\"' + value + '\"');\n }\n });\n if (Array.isArray(this._value)) {\n $.each(this._value, function (key, itemValue) {\n if (itemValue == option.value) {\n optionAttr.push('selected=\"selected\"');\n return false;\n }\n });\n } else if (this._value == option.value) {\n optionAttr.push('selected=\"selected\"');\n }\n return {\n type: 'option',\n text: optionText,\n attr: optionAttr.length > 0 ? ' ' + optionAttr.join(' ') : ''\n };\n }\n};\n\ncoreuiTable$1.search[\"switch\"] = {\n _id: null,\n _table: null,\n _value: null,\n _render: false,\n _options: {\n id: null,\n type: 'switch',\n field: null,\n value: null,\n valueY: 'Y'\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend(true, {}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (this._options.value !== null) {\n this.setValue(this._options.value);\n }\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Получение id\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Установка значения\r\n * @param {string|number|null} value\r\n */\n setValue: function setValue(value) {\n if (value !== null && typeof value !== 'string' && typeof value !== 'number') {\n return;\n }\n this._value = value;\n if (this._render) {\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n if (control[0]) {\n var valueY = typeof this._options.valueY === 'string' || typeof this._options.valueY === 'number' ? this._options.valueY : '';\n if (this._value === null) {\n $('input', control).prop('checked', false);\n } else if (this._value === valueY) {\n $('input', control).prop('checked', true);\n } else {\n $('input', control).prop('checked', false);\n }\n }\n }\n },\n /**\r\n * Получение значения\r\n * @returns {string}\r\n */\n getValue: function getValue() {\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n var input = $('input:checked', control);\n return input[0] ? input.val() : null;\n },\n /**\r\n * Инициализация событий\r\n */\n initEvents: function initEvents() {},\n /**\r\n * Формирование контента\r\n * @returns {string}\r\n */\n render: function render() {\n this._render = true;\n var options = this.getOptions();\n var valueY = typeof options.valueY === 'string' || typeof options.valueY === 'number' ? options.valueY : '';\n return ejs.render(tpl['search/switch.html'], {\n id: this._id,\n valueY: valueY,\n field: typeof options.field === 'string' ? options.field : '',\n checked: this._value == valueY\n });\n }\n};\n\ncoreuiTable$1.columns.date = {\n _table: null,\n _options: {\n type: 'date',\n field: null,\n label: null,\n show: true,\n width: null,\n format: 'DD.MM.YYYY',\n attr: {},\n attrHeader: {},\n render: null\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._table = table;\n this._options = $.extend({}, this._options, options);\n },\n /**\r\n * Установка видимости колонки\r\n * @param {boolean} isShow\r\n */\n setShow: function setShow(isShow) {\n this._options.show = !!isShow;\n },\n /**\r\n * Видимости колонки\r\n */\n isShow: function isShow() {\n return !!this._options.show;\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend({}, this._options);\n },\n /**\r\n * Формирование контента\r\n * @param {string} content\r\n * @param {object} record\r\n * @returns {string}\r\n */\n render: function render(content, record) {\n if (typeof content !== 'string') {\n return '';\n }\n try {\n if (content !== '') {\n var date = new Date(content);\n content = this._options.format.replace(/YYYY/g, this._strPadLeft(date.getFullYear(), 4)).replace(/MM/g, this._strPadLeft(date.getMonth() + 1, 2)).replace(/M/g, date.getMonth() + 1).replace(/DD/g, this._strPadLeft(date.getDate(), 2)).replace(/D/g, date.getDate());\n }\n } catch (e) {\n content = '';\n }\n return content;\n },\n /**\r\n * Размерность строки\r\n * @param {string} str\r\n * @param {int} count\r\n * @param {string} repeat\r\n * @returns {string}\r\n */\n _strPadLeft: function _strPadLeft(str, count, repeat) {\n str = String(str);\n if (str.length >= count) {\n return str;\n }\n repeat = repeat ? repeat : '0';\n return (repeat.repeat(count) + str).slice(-count);\n }\n};\n\ncoreuiTable$1.columns.datetime = {\n _table: null,\n _options: {\n type: 'datetime',\n field: null,\n label: null,\n show: true,\n width: null,\n format: 'DD.MM.YYYY hh:mm:ss',\n attr: {},\n attrHeader: {},\n render: null\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._table = table;\n this._options = $.extend({}, this._options, options);\n },\n /**\r\n * Установка видимости колонки\r\n * @param {boolean} isShow\r\n */\n setShow: function setShow(isShow) {\n this._options.show = !!isShow;\n },\n /**\r\n * Видимости колонки\r\n */\n isShow: function isShow() {\n return !!this._options.show;\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend({}, this._options);\n },\n /**\r\n * Формирование контента\r\n * @param {string} content\r\n * @param {object} record\r\n * @returns {string}\r\n */\n render: function render(content, record) {\n if (typeof content !== 'string') {\n return '';\n }\n try {\n if (content !== '') {\n var date = new Date(content);\n content = this._options.format.replace(/YYYY/g, this._strPadLeft(date.getFullYear(), 4)).replace(/MM/g, this._strPadLeft(date.getMonth() + 1, 2)).replace(/M/g, date.getMonth() + 1).replace(/DD/g, this._strPadLeft(date.getDate(), 2)).replace(/D/g, date.getDate()).replace(/hh/g, this._strPadLeft(date.getHours(), 2)).replace(/mm/g, this._strPadLeft(date.getMinutes(), 2)).replace(/m/g, date.getMinutes()).replace(/ss/g, this._strPadLeft(date.getSeconds(), 2)).replace(/s/g, date.getSeconds());\n }\n } catch (e) {\n content = '';\n }\n return content;\n },\n /**\r\n * Размерность строки\r\n * @param {string} str\r\n * @param {int} count\r\n * @param {string} repeat\r\n * @returns {string}\r\n */\n _strPadLeft: function _strPadLeft(str, count, repeat) {\n str = String(str);\n if (str.length >= count) {\n return str;\n }\n repeat = repeat ? repeat : '0';\n return (repeat.repeat(count) + str).slice(-count);\n }\n};\n\ncoreuiTable$1.columns.html = {\n _table: null,\n _options: {\n type: 'html',\n field: null,\n label: null,\n show: true,\n width: null,\n minWidth: null,\n maxWidth: null,\n noWrap: null,\n noWrapToggle: null,\n attr: {},\n attrHeader: {},\n render: null\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._table = table;\n this._options = $.extend({}, this._options, options);\n var tableOptions = this._table.getOptions();\n if (this._options.noWrap || this._options.noWrap === null && tableOptions.noWrap) {\n if (!this._options.attr) {\n this._options.attr = {\n \"class\": 'coreui_table__no-wrap'\n };\n } else {\n this._options.attr = coreuiTableUtils.mergeAttr(this._options.attr, {\n \"class\": 'coreui_table__no-wrap'\n });\n }\n this._options.noWrap = true;\n if (this._options.noWrapToggle || this._options.noWrapToggle === null && tableOptions.noWrapToggle) {\n this._options.noWrapToggle = true;\n }\n }\n },\n /**\r\n * Установка видимости колонки\r\n * @param {boolean} isShow\r\n */\n setShow: function setShow(isShow) {\n this._options.show = !!isShow;\n },\n /**\r\n * Видимости колонки\r\n */\n isShow: function isShow() {\n return !!this._options.show;\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend({}, this._options);\n },\n /**\r\n * Формирование контента\r\n * @param {string|HTMLElement|jQuery} content\r\n * @param {object} record\r\n * @returns {string}\r\n */\n render: function render(content, record) {\n if (['string', 'bigint', 'symbol', 'number'].indexOf(_typeof(content)) < 0 && !(content instanceof HTMLElement) && !(window.hasOwnProperty('jQuery') && content instanceof jQuery)) {\n return '';\n }\n if (this._options.noWrap) {\n content = $('
').append(content);\n if (this._options.noWrapToggle) {\n content = $(content).after('');\n }\n }\n return content;\n }\n};\n\ncoreuiTable$1.columns.number = {\n _table: null,\n _options: {\n type: 'number',\n field: null,\n label: null,\n show: true,\n width: null,\n minWidth: null,\n maxWidth: null,\n noWrap: null,\n noWrapToggle: null,\n attr: {},\n attrHeader: {},\n render: null\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._table = table;\n this._options = $.extend({}, this._options, options);\n var tableOptions = this._table.getOptions();\n if (this._options.noWrap || this._options.noWrap === null && tableOptions.noWrap) {\n if (!this._options.attr) {\n this._options.attr = {\n \"class\": 'coreui_table__no-wrap'\n };\n } else {\n this._options.attr = coreuiTableUtils.mergeAttr(this._options.attr, {\n \"class\": 'coreui_table__no-wrap'\n });\n }\n this._options.noWrap = true;\n if (this._options.noWrapToggle || this._options.noWrapToggle === null && tableOptions.noWrapToggle) {\n this._options.noWrapToggle = true;\n }\n }\n },\n /**\r\n * Установка видимости колонки\r\n * @param {boolean} isShow\r\n */\n setShow: function setShow(isShow) {\n this._options.show = !!isShow;\n },\n /**\r\n * Видимости колонки\r\n */\n isShow: function isShow() {\n return !!this._options.show;\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend({}, this._options);\n },\n /**\r\n * Формирование контента\r\n * @param {string} content\r\n * @param {object} record\r\n * @returns {string}\r\n */\n render: function render(content, record) {\n if (['string', 'bigint', 'symbol', 'number'].indexOf(_typeof(content)) < 0) {\n return '';\n }\n content = String(content).replace(/,/g, '.').replace(/[^0-9\\-\\.]/g, '').replace(/[\\s]{2,}/g, ' ');\n content = content.replace(/(?' + content + '';\n if (this._options.noWrapToggle) {\n content += '';\n }\n }\n return content;\n }\n};\n\ncoreuiTable$1.columns.money = {\n _table: null,\n _options: {\n type: 'money',\n field: null,\n label: null,\n show: true,\n width: null,\n minWidth: null,\n maxWidth: null,\n noWrap: null,\n noWrapToggle: null,\n currency: null,\n attr: {\n \"class\": 'text-end'\n },\n attrHeader: {\n \"class\": 'text-end'\n },\n render: null\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._table = table;\n this._options = $.extend({}, this._options, options);\n var tableOptions = this._table.getOptions();\n if (this._options.noWrap || this._options.noWrap === null && tableOptions.noWrap) {\n if (!this._options.attr) {\n this._options.attr = {\n \"class\": 'coreui_table__no-wrap'\n };\n } else {\n this._options.attr = coreuiTableUtils.mergeAttr(this._options.attr, {\n \"class\": 'coreui_table__no-wrap'\n });\n }\n this._options.noWrap = true;\n if (this._options.noWrapToggle || this._options.noWrapToggle === null && tableOptions.noWrapToggle) {\n this._options.noWrapToggle = true;\n }\n }\n },\n /**\r\n * Установка видимости колонки\r\n * @param {boolean} isShow\r\n */\n setShow: function setShow(isShow) {\n this._options.show = !!isShow;\n },\n /**\r\n * Видимости колонки\r\n */\n isShow: function isShow() {\n return !!this._options.show;\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend({}, this._options);\n },\n /**\r\n * Формирование контента\r\n * @param {string} content\r\n * @param {object} record\r\n * @returns {string}\r\n */\n render: function render(content, record) {\n if (['string', 'bigint', 'symbol', 'number'].indexOf(_typeof(content)) < 0) {\n return '';\n }\n if (isNaN(content)) {\n content = content.toString().replace(/(\\d)(?=(\\d\\d\\d)+([^\\d]|$))/g, '$1 ');\n } else {\n content = Number(content).toFixed(2).toString();\n content = content.replace(/(\\d)(?=(\\d\\d\\d)+([^\\d]|$))/g, '$1 ');\n }\n if (this._options.currency && ['string', 'number'].indexOf(_typeof(this._options.currency)) >= 0) {\n content += ' ' + this._options.currency + '';\n }\n if (this._options.noWrap) {\n content = '
' + content + '
';\n if (this._options.noWrapToggle) {\n content += '';\n }\n }\n return content;\n }\n};\n\ncoreuiTable$1.columns.numbers = {\n _table: null,\n _options: {\n type: 'numbers',\n label: '№',\n width: 20,\n attr: {\n \"class\": 'text-end'\n },\n attrHeader: null\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._table = table;\n this._options = $.extend(true, {}, this._options, options);\n },\n /**\r\n * Видимости колонки\r\n */\n isShow: function isShow() {\n return true;\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend({}, this._options);\n },\n /**\r\n * Формирование контента\r\n * @param {string} content\r\n * @param {object} record\r\n * @returns {string}\r\n */\n render: function render(content, record) {\n return this._table._recordsNumber;\n }\n};\n\ncoreuiTable$1.columns.select = {\n _table: null,\n _options: {\n type: 'select',\n field: null,\n label: '',\n show: true,\n width: 35,\n attr: {\n \"class\": 'coreui-table__select_container text-center'\n },\n attrHeader: {\n \"class\": 'text-center'\n }\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n if (options.hasOwnProperty('attr')) {\n options.attr = CoreUI.table._mergeAttr(this._options.attr, options.attr);\n }\n if (options.hasOwnProperty('attrHeader')) {\n options.attrHeader = CoreUI.table._mergeAttr(this._options.attrHeader, options.attrHeader);\n }\n this._table = table;\n this._options = $.extend(true, {}, this._options, options);\n this._options.label = tpl['columns/select_label.html'];\n\n // Показ строк\n this._table.on('records_show', function () {\n var selects = coreuiTableElements.getRowsSelects(table.getId());\n var selectAll = coreuiTableElements.getRowsSelectAll(table.getId());\n\n // Отмена обработки нажатия в select колонках\n $(selects).click(function (event) {\n event.stopPropagation();\n });\n\n // Выбор всех строк\n selectAll.click(function (event) {\n if ($(this).is(':checked')) {\n table.selectAll();\n } else {\n table.unselectAll();\n }\n });\n });\n },\n /**\r\n * Установка видимости колонки\r\n * @param {boolean} isShow\r\n */\n setShow: function setShow(isShow) {\n this._options.show = !!isShow;\n },\n /**\r\n * Видимости колонки\r\n */\n isShow: function isShow() {\n return !!this._options.show;\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend({}, this._options);\n },\n /**\r\n * Формирование контента\r\n * @param {string} content\r\n * @param {object} record\r\n * @returns {string}\r\n */\n render: function render(content, record) {\n var select = $(ejs.render(tpl['columns/select.html'], {\n index: record.index\n }));\n var that = this;\n\n // Выбор строки\n select.click(function (event) {\n var tr = coreuiTableElements.getTrByIndex(that._table.getId(), record.index);\n if (!tr) {\n return;\n }\n if ($(this).is(':checked')) {\n $(tr).addClass('table-primary');\n coreuiTablePrivate._trigger(that._table, 'record_select', [record]);\n } else {\n $(tr).removeClass('table-primary');\n coreuiTablePrivate._trigger(that._table, 'record_unselect', [record]);\n }\n });\n return select;\n }\n};\n\ncoreuiTable$1.columns[\"switch\"] = {\n _table: null,\n _options: {\n type: 'switch',\n label: '',\n field: '',\n show: true,\n disabled: false,\n width: 5,\n valueY: 'Y',\n valueN: 'N',\n attr: {\n \"class\": 'coreui-table__switch_container'\n },\n attrHeader: {},\n onChange: null\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._table = table;\n this._options = $.extend(true, {}, this._options, options);\n\n // Показ строк\n this._table.on('records_show', function () {\n var containers = coreuiTableElements.getRowsSwitches(table.getId());\n\n // Отмена обработки нажатия в switch колонках\n containers.click(function (event) {\n event.stopPropagation();\n });\n });\n },\n /**\r\n * Установка видимости колонки\r\n * @param {boolean} isShow\r\n */\n setShow: function setShow(isShow) {\n this._options.show = !!isShow;\n },\n /**\r\n * Видимости колонки\r\n */\n isShow: function isShow() {\n return !!this._options.show;\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Формирование контента\r\n * @param {string} content\r\n * @param {object} record\r\n * @returns {string}\r\n */\n render: function render(content, record) {\n var isChecked = record.data.hasOwnProperty(this._options.field) && record.data[this._options.field] === this._options.valueY;\n var formSwitch = $(ejs.render(tpl['columns/switch.html'], {\n index: record.index,\n field: this._options.field,\n disabled: this._options.disabled,\n checked: isChecked\n }));\n\n // События нажатия на переключатель\n if (this._options.hasOwnProperty('onChange') && (typeof this._options.onChange === 'function' || typeof this._options.onChange === 'string')) {\n var that = this;\n $('.coreui-table__switch', formSwitch).change(function (event) {\n var isChecked = $(this).is(':checked');\n if (typeof that._options.onChange === 'function') {\n that._options.onChange(record, isChecked, this);\n } else if (typeof that._options.onChange === 'string') {\n var id = null;\n if (record.hasOwnProperty(that._table._options.primaryKey)) {\n id = record[that._table._options.primaryKey];\n }\n var func = new Function('record', 'checked', 'id', that._options.onChange);\n func(record, this, id);\n }\n return false;\n });\n }\n return formSwitch;\n }\n};\n\ncoreuiTable$1.columns.text = {\n _table: null,\n _options: {\n type: 'text',\n field: null,\n label: null,\n show: true,\n width: null,\n minWidth: null,\n maxWidth: null,\n attr: null,\n noWrap: null,\n noWrapToggle: null,\n attrHeader: null,\n render: null\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._table = table;\n this._options = $.extend({}, this._options, options);\n var tableOptions = this._table.getOptions();\n if (this._options.noWrap || this._options.noWrap === null && tableOptions.noWrap) {\n if (!this._options.attr) {\n this._options.attr = {\n \"class\": 'coreui_table__no-wrap'\n };\n } else {\n this._options.attr = coreuiTableUtils.mergeAttr(this._options.attr, {\n \"class\": 'coreui_table__no-wrap'\n });\n }\n this._options.noWrap = true;\n if (this._options.noWrapToggle || this._options.noWrapToggle === null && tableOptions.noWrapToggle) {\n this._options.noWrapToggle = true;\n }\n }\n },\n /**\r\n * Установка видимости колонки\r\n * @param {boolean} isShow\r\n */\n setShow: function setShow(isShow) {\n this._options.show = !!isShow;\n },\n /**\r\n * Видимости колонки\r\n */\n isShow: function isShow() {\n return !!this._options.show;\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend({}, this._options);\n },\n /**\r\n * Формирование контента\r\n * @param {string} content\r\n * @param {object} record\r\n * @returns {string}\r\n */\n render: function render(content, record) {\n if (['string', 'bigint', 'symbol', 'number'].indexOf(_typeof(content)) < 0) {\n return '';\n }\n content = String(content).replace(//g, '>');\n if (this._options.noWrap) {\n content = '
' + content + '
';\n if (this._options.noWrapToggle) {\n content += '';\n }\n }\n return content;\n }\n};\n\ncoreuiTable$1.columns.button = {\n _table: null,\n _options: {\n type: 'button',\n field: null,\n label: null,\n show: true,\n width: null,\n minWidth: null,\n maxWidth: null\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._table = table;\n this._options = $.extend({}, this._options, options);\n },\n /**\r\n * Установка видимости колонки\r\n * @param {boolean} isShow\r\n */\n setShow: function setShow(isShow) {\n this._options.show = !!isShow;\n },\n /**\r\n * Видимости колонки\r\n */\n isShow: function isShow() {\n return !!this._options.show;\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend({}, this._options);\n },\n /**\r\n * Формирование контента\r\n * @param {object} content\r\n * @param {object} record\r\n * @returns {string}\r\n */\n render: function render(content, record) {\n if (!coreuiTableUtils.isObject(content)) {\n return '';\n }\n if (!coreuiTableUtils.isObject(content.attr)) {\n content.attr = {};\n }\n if (!content.attr.hasOwnProperty('class')) {\n content.attr[\"class\"] = 'btn btn-outline-secondary';\n }\n if (content.attr.hasOwnProperty('type')) {\n delete content.attr.type;\n }\n var attributes = [];\n $.each(content.attr, function (name, value) {\n if (['string', 'number'].indexOf(_typeof(value)) >= 0) {\n attributes.push(name + '=\"' + value + '\"');\n }\n });\n var btn = $(ejs.render(tpl['columns/button.html'], {\n content: content.content,\n attr: attributes.length > 0 ? ' ' + attributes.join(' ') : ''\n }));\n if (content.hasOwnProperty('onClick')) {\n var that = this;\n if (typeof content.onClick === 'function') {\n btn.click(function (event) {\n event.cancelBubble = true;\n event.preventDefault();\n content.onClick(record, that._table);\n });\n } else if (typeof content.onClick === 'string') {\n var func = new Function('record', 'table', content.onClick);\n btn.click(function (event) {\n event.cancelBubble = true;\n event.preventDefault();\n func(record, that._table);\n });\n } else {\n btn.click(function (event) {\n event.cancelBubble = true;\n event.preventDefault();\n });\n }\n } else {\n btn.click(function (event) {\n event.cancelBubble = true;\n event.preventDefault();\n });\n }\n return btn;\n }\n};\n\ncoreuiTable$1.columns.link = {\n _table: null,\n _options: {\n type: 'link',\n field: null,\n label: null,\n show: true,\n width: null,\n minWidth: null,\n maxWidth: null\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._table = table;\n this._options = $.extend({}, this._options, options);\n },\n /**\r\n * Установка видимости колонки\r\n * @param {boolean} isShow\r\n */\n setShow: function setShow(isShow) {\n this._options.show = !!isShow;\n },\n /**\r\n * Видимости колонки\r\n */\n isShow: function isShow() {\n return !!this._options.show;\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend({}, this._options);\n },\n /**\r\n * Формирование контента\r\n * @param {object|string} content\r\n * @param {object} record\r\n * @returns {string}\r\n */\n render: function render(content, record) {\n if ((typeof content !== 'string' || !content) && (!coreuiTableUtils.isObject(content) || !content.hasOwnProperty('url') || typeof content.url !== 'string' || !content.url)) {\n return '';\n }\n var linkContent = '';\n var attr = {};\n if (typeof content === 'string') {\n attr.href = content;\n linkContent = content;\n } else {\n if (content.hasOwnProperty('attr') && coreuiTableUtils.isObject(content.attr)) {\n attr = content.attr;\n }\n if (attr.hasOwnProperty('href')) {\n delete attr.href;\n }\n attr.href = content.url;\n if (content.hasOwnProperty('content') && typeof content.content === 'string' && content.content) {\n linkContent = content.content;\n } else {\n linkContent = content.url;\n }\n }\n var attributes = [];\n $.each(attr, function (name, value) {\n if (['string', 'number'].indexOf(_typeof(value)) >= 0) {\n attributes.push(name + '=\"' + value + '\"');\n }\n });\n var link = $(ejs.render(tpl['columns/link.html'], {\n content: linkContent,\n attr: attributes.length > 0 ? ' ' + attributes.join(' ') : ''\n }));\n link.click(function (event) {\n event.cancelBubble = true;\n event.preventDefault();\n });\n return link;\n }\n};\n\ncoreuiTable$1.columns.menu = {\n _table: null,\n _options: {\n type: 'menu',\n field: null,\n label: null,\n show: true,\n width: null,\n minWidth: null,\n maxWidth: null\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._table = table;\n this._options = $.extend({}, this._options, options);\n },\n /**\r\n * Установка видимости колонки\r\n * @param {boolean} isShow\r\n */\n setShow: function setShow(isShow) {\n this._options.show = !!isShow;\n },\n /**\r\n * Видимости колонки\r\n */\n isShow: function isShow() {\n return !!this._options.show;\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend({}, this._options);\n },\n /**\r\n * Формирование контента\r\n * @param {object|string} content\r\n * @param {object} record\r\n * @returns {string}\r\n */\n render: function render(content, record) {\n if (!coreuiTableUtils.isObject(content) || !content.hasOwnProperty('items') || !Array.isArray(content.items) || content.items.length === 0) {\n return '';\n }\n var items = [];\n var attr = {};\n if (Array.isArray(content.items)) {\n $.each(content.items, function (key, item) {\n if (coreuiTableUtils.isObject(item) && typeof item.type === 'string') {\n if (item.type === 'link') {\n if (item.hasOwnProperty('link') && item.hasOwnProperty('content') && typeof item.link === 'string' && typeof item.content === 'string') {\n var linkAttr = {};\n if (item.hasOwnProperty('attr') || coreuiTableUtils.isObject(item.attr)) {\n linkAttr = item.attr;\n }\n if (linkAttr.hasOwnProperty('href')) {\n delete linkAttr.href;\n }\n if (!linkAttr.hasOwnProperty('class') || typeof linkAttr[\"class\"] !== 'string') {\n linkAttr[\"class\"] = 'dropdown-item';\n } else {\n linkAttr[\"class\"] += ' dropdown-item';\n }\n var linkAttributes = [];\n $.each(linkAttr, function (name, value) {\n if (['string', 'number'].indexOf(_typeof(value)) >= 0) {\n linkAttributes.push(name + '=\"' + value + '\"');\n }\n });\n items.push({\n type: 'link',\n link: item.link,\n content: item.content,\n attr: linkAttributes\n });\n }\n } else if (item.type === 'button') {\n if (item.hasOwnProperty('content') && item.hasOwnProperty('onClick') && typeof item.content === 'string' && ['string', 'function'].indexOf(_typeof(item.onClick)) >= 0) {\n var btnAttr = {};\n if (item.hasOwnProperty('attr') || coreuiTableUtils.isObject(item.attr)) {\n btnAttr = item.attr;\n }\n if (btnAttr.hasOwnProperty('type')) {\n delete btnAttr.type;\n }\n if (btnAttr.hasOwnProperty('id')) {\n delete btnAttr['id'];\n }\n if (!btnAttr.hasOwnProperty('class') || typeof btnAttr[\"class\"] !== 'string') {\n btnAttr[\"class\"] = 'dropdown-item';\n } else {\n btnAttr[\"class\"] += ' dropdown-item';\n }\n var btnAttributes = [];\n $.each(btnAttr, function (name, value) {\n if (['string', 'number'].indexOf(_typeof(value)) >= 0) {\n btnAttributes.push(name + '=\"' + value + '\"');\n }\n });\n items.push({\n type: 'button',\n id: coreuiTableUtils.hashCode(),\n content: item.content,\n onClick: item.onClick,\n attr: btnAttributes.length > 0 ? ' ' + btnAttributes.join(' ') : ''\n });\n }\n } else if (item.type === 'divider') {\n items.push({\n type: 'divider'\n });\n } else if (item.type === 'header') {\n if (item.hasOwnProperty('content') && typeof item.content === 'string') {\n items.push({\n type: 'header',\n content: item.content\n });\n }\n }\n }\n });\n }\n if (content.hasOwnProperty('attr') || coreuiTableUtils.isObject(content.attr)) {\n attr = content.attr;\n }\n if (!attr.hasOwnProperty('class') || ['string', 'number'].indexOf(_typeof(attr[\"class\"])) < 0) {\n attr[\"class\"] = 'btn rounded-1';\n }\n if (attr.hasOwnProperty('type')) {\n delete attr.type;\n }\n if (attr.hasOwnProperty('data-bs-toggle')) {\n delete attr['data-bs-toggle'];\n }\n var attributes = [];\n $.each(attr, function (name, value) {\n if (['string', 'number'].indexOf(_typeof(value)) >= 0) {\n attributes.push(name + '=\"' + value + '\"');\n }\n });\n var menuContent = content.hasOwnProperty('content') && typeof content.content === 'string' && content.content ? content.content : '';\n var position = content.hasOwnProperty('position') && typeof content.position === 'string' && content.position ? content.position : 'end';\n var menu = $(ejs.render(tpl['columns/menu.html'], {\n content: menuContent,\n position: position,\n attr: attributes.length > 0 ? ' ' + attributes.join(' ') : '',\n items: items\n }));\n menu.click(function (event) {\n event.cancelBubble = true;\n event.preventDefault();\n });\n if (Array.isArray(items)) {\n var that = this;\n $.each(items, function (key, item) {\n if (coreuiTableUtils.isObject(item) && typeof item.type === 'string') {\n if (item.type === 'button') {\n if (item.hasOwnProperty('content') && item.hasOwnProperty('onClick') && ['string', 'function'].indexOf(_typeof(item.onClick)) >= 0 && typeof item.content === 'string') {\n $('button#btn-dropdown-' + item.id, menu).click(function (event) {\n if (typeof item.onClick === 'function') {\n item.onClick(record, that._table, event);\n } else if (typeof item.onClick === 'string') {\n new Function('record', 'table', 'event', item.onClick)(record, that._table, event);\n }\n });\n }\n }\n }\n });\n }\n return menu;\n }\n};\n\ncoreuiTable$1.columns.badge = {\n _table: null,\n _options: {\n type: 'badge',\n field: null,\n label: null,\n show: true,\n width: null,\n minWidth: null,\n maxWidth: null\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._table = table;\n this._options = $.extend({}, this._options, options);\n },\n /**\r\n * Установка видимости колонки\r\n * @param {boolean} isShow\r\n */\n setShow: function setShow(isShow) {\n this._options.show = !!isShow;\n },\n /**\r\n * Видимости колонки\r\n */\n isShow: function isShow() {\n return !!this._options.show;\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend({}, this._options);\n },\n /**\r\n * Формирование контента\r\n * @param {object|string} content\r\n * @param {object} record\r\n * @returns {string}\r\n */\n render: function render(content, record) {\n if (!coreuiTableUtils.isObject(content) || !content.hasOwnProperty('type') || !content.hasOwnProperty('text') || typeof content.type !== 'string' || typeof content.text !== 'string' || !content.type || !content.text) {\n return '';\n }\n return $(ejs.render(tpl['columns/badge.html'], {\n type: content.type,\n text: content.text\n }));\n }\n};\n\ncoreuiTable$1.columns.component = {\n _table: null,\n _options: {\n type: 'component',\n field: null,\n label: null,\n show: true,\n width: null,\n minWidth: null,\n maxWidth: null\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._table = table;\n this._options = $.extend({}, this._options, options);\n },\n /**\r\n * Установка видимости колонки\r\n * @param {boolean} isShow\r\n */\n setShow: function setShow(isShow) {\n this._options.show = !!isShow;\n },\n /**\r\n * Видимости колонки\r\n */\n isShow: function isShow() {\n return !!this._options.show;\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend({}, this._options);\n },\n /**\r\n * Формирование контента\r\n * @param {object|string} content\r\n * @param {object} record\r\n * @returns {string}\r\n */\n render: function render(content, record) {\n if (!coreuiTableUtils.isObject(content) || !content.hasOwnProperty('component') || typeof content.component !== 'string' || !content.component) {\n return '';\n }\n return coreuiTableRender.renderComponents(this._table, content, 'records_show');\n }\n};\n\nreturn coreuiTable$1;\n\n})));\n"],"names":["global","factory","exports","module","define","amd","CoreUI","table","this","_typeof","o","Symbol","iterator","constructor","prototype","f","window","self","ejs","r","e","n","t","i","c","require","u","a","Error","code","p","call","length","1","fs","path","utils","scopeOptionWarned","_VERSION_STRING","version","_OPTS_PASSABLE_WITH_DATA","_OPTS_PASSABLE_WITH_DATA_EXPRESS","concat","_BOM","_JS_IDENTIFIER","resolvePaths","name","paths","filePath","some","v","resolveInclude","existsSync","handleCache","options","template","func","filename","hasTemplate","arguments","cache","get","fileLoader","toString","replace","compile","set","includeFile","opts","shallowCopy","createNullProtoObjWherePossible","includePath","views","match","exec","Array","isArray","root","includer","escapeFunction","includerResult","rethrow","err","str","flnm","lineno","esc","lines","split","start","Math","max","end","min","context","slice","map","line","curr","join","message","stripSemi","Template","text","templateText","mode","truncate","currentLine","source","client","escape","escapeXML","compileDebug","debug","openDelimiter","closeDelimiter","delimiter","strict","rmWhitespace","outputFunctionName","localsName","async","destructuredLocals","legacyInclude","_with","regex","createRegex","readFileSync","promiseImpl","Function","Promise","isDir","dirname","extname","resolve","scope","console","warn","render","d","data","shallowCopyFromList","renderFile","cb","result","args","shift","pop","settings","viewOpts","reject","clearCache","reset","modes","EVAL","ESCAPED","RAW","COMMENT","LITERAL","delim","escapeRegExpChars","open","close","RegExp","fn","prepended","appended","escapeFn","sanitizedFilename","JSON","stringify","generateSource","test","destructuring","src","log","ctor","SyntaxError","returnedFn","apply","includeData","Object","defineProperty","basename","value","writable","enumerable","configurable","matches","parseTemplateText","forEach","index","indexOf","closing","scanLine","firstPos","pat","arr","push","substring","_addOutput","newLineCount","lastIndexOf","__express","VERSION","../package.json","./utils","2","hasOwn","obj","key","hasOwnProperty","regExpChars","_ENCODE_HTML_RULES","string","String","&","<",">","\"","'","_MATCH_HTML","encode_char","escapeXMLToString","markup","undefined","to","from","list","_data","val","remove","hyphenToCamel","toUpperCase","create","__proto__","3","4","process","normalizeArray","parts","allowAboveRoot","up","last","splice","unshift","filter","xs","res","resolvedPath","resolvedAbsolute","cwd","TypeError","charAt","normalize","isAbsolute","trailingSlash","substr","relative","trim","fromParts","toParts","samePartsLength","outputParts","sep","hasRoot","charCodeAt","matchedSlash","ext","startDot","startPart","preDotState","len","_process","5","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","setTimeout","clearTimeout","runTimeout","fun","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","run","runClearTimeout","marker","Item","array","noop","nextTick","title","browser","env","argv","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","chdir","dir","umask","6","description","keywords","author","license","bin","main","jsdelivr","unpkg","repository","type","url","bugs","homepage","dependencies","jake","devDependencies","browserify","eslint","git-directory-deploy","jsdoc","lru-cache","mocha","uglify-js","engines","node","scripts","tpl","coreuiTableUtils","mergeAttr","attr1","attr2","assign","$","each","isNumeric","num","isNaN","hashCode","crc32","Date","getTime","random","isObject","coreuiTableRender","renderTable","rows","_rows","getOptions","recordsElements","columnGroupsHeader","columnGroupsFooter","colGroups","columns","classes","_columns","column","columnOptions","attributes","sortable","_unit2","isShow","field","attrHeader","data-field","fixed","class","attr","_sort","sortField","order","style","width","unit","minWidth","_unit","maxWidth","label","_isRecordsRequest","_records","_recordsTotal","getRecordsCount","_recordsNumber","_page","_recordsPerPage","renderRecords","headerRow","cells","headerColumn","content","footerRow","footerColumn","htmlColumns","theadAttr","tableElement","theadTop","columnHeaders","tbody","find","recordElement","append","records","that","group","groupValue","record","show","renderGroup","renderRecord","columnsCount","_countColumnsShow","lang","getLang","fields","recordAttr","extend","renderField","onClickUrl","meta","html","columnField","fieldProps","fieldAttr","fieldAttrResult","colspan","renderContent","renderExpand","renderComponents","expandRecord","item","HTMLElement","jQuery","renderControl","control","controlElement","id","getId","initEvents","components","eventName","instance","component","coreuiTablePrivate","initColumns","coreuiTable$1","_options","overflow","columnInstance","init","initSearch","searchControls","searchValues","saveState","getStorageField","search","controlInstance","_search","initControls","position","row","controlsLeft","controlsCenter","controlsRight","toLowerCase","left","initControl","center","right","_controlsPositions","filterName","filterValues","controls","_controls","filters","_filters","initSort","sort","setRecords","_recordsIndex","addRecord","afterIndex","_meta","seq","_seq","addRecordBefore","issetKey","keyBefore","isFilteredRecord","recordData","alg","issetStart","issetEnd","_trigger","params","_events","callback","singleExec","sortRecordsBySeq","b","sortRecordsByFields","issetAField","issetBField","aVal","bVal","setColumnsSort","thead","coreuiTableElements","getTableThead","sortColumn","sortItem","columnElement","getStorage","tableId","storage","localStorage","getItem","parse","setStorage","storageAll","setItem","setStorageField","getContainer","getLock","getWrapper","getSearchContainer","getColumnsContainer","getSearchControl","controlId","getControl","getTable","getTableTbody","getTableSortable","getTrRecords","getTrByIndex","getExpandRow","next","hasClass","addExpandRow","after","addClass","recordIndex","hideExpandRow","recordExpanded","hide","showExpandRow","removeExpandRow","getSelectedIndexes","indexes","element","getRowsSwitches","getRowsSelects","getRowsSelectAll","getNoWrapToggles","selectTr","tr","prop","selectTrAll","tableContainer","unselectTr","removeClass","unselectTrAll","fixedColsLeft","tableWrapper","colOffset","css","outerWidth","fixedColsRight","reverse","coreuiTableInstance","primaryKey","langList","height","minHeight","naxHeight","page","recordsPerPage","noWrap","noWrapToggle","recordsRequest","method","count","onClick","header","footer","labelWidth","_id","_init","click","recordKey","getRecordByIndex","fieldQuote","location","href","event","cancelBubble","preventDefault","parent","sortableColumns","sorting","currentOrder","sortDefault","sortFields","getSearchData","getFilterData","widthSizes","heightSizes","headersOut","headersIn","footersIn","footersOut","_unit3","_unit4","maxHeight","_unit5","headerControls","_headerControls","controlRender","footerControls","_footerControls","load","containerElement","recordsTotal","prepend","domElement","document","getElementById","lock","container","unlock","searchData","Number","filterData","ajax","dataType","beforeSend","xhr","success","total","error","textStatus","errorThrown","complete","reload","refresh","replaceWith","setPageSize","selectAll","unselectAll","selectRecord","getRecordById","unselectRecord","getSelectedRecordsId","getSelectedRecords","getRecord","getRecords","getData","prevPage","nextPage","totalPages","ceil","goPage","eventNames","setColumnsShow","setShow","getValue","getAlgorithm","searchRecords","searchClear","setValue","filtersClear","recordItem","getRecordByField","getControlById","getSearchControlById","columnSortable","removeRecordByIndex","fadeOut","addRecordAfterIndex","addRecordBeforeIndex","before","addRecordFirst","addRecordLast","tableBody","parseInt","expandRecordContent","isRebuild","callbackResult","then","expandRecordUrl","response","getResponseHeader","_instances","_settings","getSetting","setSettings","ru","emptyRecords","loading","all","clear","en","link","_table","button","dropdown","items","button_group","_link","_button","_dropdown","buttons","_attributes","_attributes2","custom","page_size","selectPageSize","change","recordsPerPageList","page_jump","input","keyup","keyCode","pages","prev","_initEvents","showPrev","showNext","showDividerStart","showDividerEnd","showPageFirst","showPageLast","pagesTotal","countHalf","floor","currentPage","isActivePrev","isActiveNext","btnPrev","btnNext","btn","btnClear","btnComplete","buttonToggle","buttonClear","controlsEvents","btnCompleteAttr","wrapper","columnsContainer","fadeToggle","btnCompleteContent","tableOptions","prefix","controlsEvent","_renderBtnClear","insertAfter","btnAttr","btnContent","showAll","containerSearch","is","caption","_value","_render","attrBtn","number","numberStart","numberEnd","inputStart","inputEnd","valueStart","valueEnd","startAttr","endAttr","attrStart","attrEnd","date","datetime","date_month","date_range","dateStart","dateEnd","startEnd","datetime_range","checkbox","_class","inputs","option","checked","radio","select","selectOptions","renderAttr","groupOptions","_buildOption","groupAttr","groupOption","optionAttr","optionText","itemValue","valueY","checkedAll","format","_strPadLeft","getFullYear","getMonth","getDate","repeat","getHours","getMinutes","getSeconds","money","currency","toFixed","numbers","_mergeAttr","selects","stopPropagation","disabled","valueN","onChange","isChecked","formSwitch","linkContent","menu","menuContent","linkAttributes","btnAttributes","linkAttr","badge"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"coreui-table.min.js","sources":["coreui-table.min.js"],"sourcesContent":["(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.CoreUI = global.CoreUI || {}, global.CoreUI.table = factory());\n}(this, (function () { 'use strict';\n\nfunction _AsyncGenerator(e) {\n var r, t;\n function resume(r, t) {\n try {\n var n = e[r](t),\n o = n.value,\n u = o instanceof _OverloadYield;\n Promise.resolve(u ? o.v : o).then(function (t) {\n if (u) {\n var i = \"return\" === r ? \"return\" : \"next\";\n if (!o.k || t.done) return resume(i, t);\n t = e[i](t).value;\n }\n settle(n.done ? \"return\" : \"normal\", t);\n }, function (e) {\n resume(\"throw\", e);\n });\n } catch (e) {\n settle(\"throw\", e);\n }\n }\n function settle(e, n) {\n switch (e) {\n case \"return\":\n r.resolve({\n value: n,\n done: !0\n });\n break;\n case \"throw\":\n r.reject(n);\n break;\n default:\n r.resolve({\n value: n,\n done: !1\n });\n }\n (r = r.next) ? resume(r.key, r.arg) : t = null;\n }\n this._invoke = function (e, n) {\n return new Promise(function (o, u) {\n var i = {\n key: e,\n arg: n,\n resolve: o,\n reject: u,\n next: null\n };\n t ? t = t.next = i : (r = t = i, resume(e, n));\n });\n }, \"function\" != typeof e.return && (this.return = void 0);\n}\n_AsyncGenerator.prototype[\"function\" == typeof Symbol && Symbol.asyncIterator || \"@@asyncIterator\"] = function () {\n return this;\n}, _AsyncGenerator.prototype.next = function (e) {\n return this._invoke(\"next\", e);\n}, _AsyncGenerator.prototype.throw = function (e) {\n return this._invoke(\"throw\", e);\n}, _AsyncGenerator.prototype.return = function (e) {\n return this._invoke(\"return\", e);\n};\nfunction _OverloadYield(t, e) {\n this.v = t, this.k = e;\n}\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\n\n(function (f) {\n if (typeof exports === \"object\" && typeof module !== \"undefined\") {\n module.exports = f();\n } else if (typeof define === \"function\" && define.amd) {\n define([], f);\n } else {\n var g;\n if (typeof window !== \"undefined\") {\n g = window;\n } else if (typeof global !== \"undefined\") {\n g = global;\n } else if (typeof self !== \"undefined\") {\n g = self;\n } else {\n g = this;\n }\n g.ejs = f();\n }\n})(function () {\n return function () {\n function r(e, n, t) {\n function o(i, f) {\n if (!n[i]) {\n if (!e[i]) {\n var c = \"function\" == typeof require && require;\n if (!f && c) return c(i, !0);\n if (u) return u(i, !0);\n var a = new Error(\"Cannot find module '\" + i + \"'\");\n throw a.code = \"MODULE_NOT_FOUND\", a;\n }\n var p = n[i] = {\n exports: {}\n };\n e[i][0].call(p.exports, function (r) {\n var n = e[i][1][r];\n return o(n || r);\n }, p, p.exports, r, e, n, t);\n }\n return n[i].exports;\n }\n for (var u = \"function\" == typeof require && require, i = 0; i < t.length; i++) o(t[i]);\n return o;\n }\n return r;\n }()({\n 1: [function (require, module, exports) {\n \"use strict\";\n\n var fs = require(\"fs\");\n var path = require(\"path\");\n var utils = require(\"./utils\");\n var scopeOptionWarned = false;\n var _VERSION_STRING = require(\"../package.json\").version;\n var _DEFAULT_OPEN_DELIMITER = \"<\";\n var _DEFAULT_CLOSE_DELIMITER = \">\";\n var _DEFAULT_DELIMITER = \"%\";\n var _DEFAULT_LOCALS_NAME = \"locals\";\n var _NAME = \"ejs\";\n var _REGEX_STRING = \"(<%%|%%>|<%=|<%-|<%_|<%#|<%|%>|-%>|_%>)\";\n var _OPTS_PASSABLE_WITH_DATA = [\"delimiter\", \"scope\", \"context\", \"debug\", \"compileDebug\", \"client\", \"_with\", \"rmWhitespace\", \"strict\", \"filename\", \"async\"];\n var _OPTS_PASSABLE_WITH_DATA_EXPRESS = _OPTS_PASSABLE_WITH_DATA.concat(\"cache\");\n var _BOM = /^\\uFEFF/;\n var _JS_IDENTIFIER = /^[a-zA-Z_$][0-9a-zA-Z_$]*$/;\n exports.cache = utils.cache;\n exports.fileLoader = fs.readFileSync;\n exports.localsName = _DEFAULT_LOCALS_NAME;\n exports.promiseImpl = new Function(\"return this;\")().Promise;\n exports.resolveInclude = function (name, filename, isDir) {\n var dirname = path.dirname;\n var extname = path.extname;\n var resolve = path.resolve;\n var includePath = resolve(isDir ? filename : dirname(filename), name);\n var ext = extname(name);\n if (!ext) {\n includePath += \".ejs\";\n }\n return includePath;\n };\n function resolvePaths(name, paths) {\n var filePath;\n if (paths.some(function (v) {\n filePath = exports.resolveInclude(name, v, true);\n return fs.existsSync(filePath);\n })) {\n return filePath;\n }\n }\n function getIncludePath(path, options) {\n var includePath;\n var filePath;\n var views = options.views;\n var match = /^[A-Za-z]+:\\\\|^\\//.exec(path);\n if (match && match.length) {\n path = path.replace(/^\\/*/, \"\");\n if (Array.isArray(options.root)) {\n includePath = resolvePaths(path, options.root);\n } else {\n includePath = exports.resolveInclude(path, options.root || \"/\", true);\n }\n } else {\n if (options.filename) {\n filePath = exports.resolveInclude(path, options.filename);\n if (fs.existsSync(filePath)) {\n includePath = filePath;\n }\n }\n if (!includePath && Array.isArray(views)) {\n includePath = resolvePaths(path, views);\n }\n if (!includePath && typeof options.includer !== \"function\") {\n throw new Error('Could not find the include file \"' + options.escapeFunction(path) + '\"');\n }\n }\n return includePath;\n }\n function handleCache(options, template) {\n var func;\n var filename = options.filename;\n var hasTemplate = arguments.length > 1;\n if (options.cache) {\n if (!filename) {\n throw new Error(\"cache option requires a filename\");\n }\n func = exports.cache.get(filename);\n if (func) {\n return func;\n }\n if (!hasTemplate) {\n template = fileLoader(filename).toString().replace(_BOM, \"\");\n }\n } else if (!hasTemplate) {\n if (!filename) {\n throw new Error(\"Internal EJS error: no file name or template \" + \"provided\");\n }\n template = fileLoader(filename).toString().replace(_BOM, \"\");\n }\n func = exports.compile(template, options);\n if (options.cache) {\n exports.cache.set(filename, func);\n }\n return func;\n }\n function tryHandleCache(options, data, cb) {\n var result;\n if (!cb) {\n if (typeof exports.promiseImpl == \"function\") {\n return new exports.promiseImpl(function (resolve, reject) {\n try {\n result = handleCache(options)(data);\n resolve(result);\n } catch (err) {\n reject(err);\n }\n });\n } else {\n throw new Error(\"Please provide a callback function\");\n }\n } else {\n try {\n result = handleCache(options)(data);\n } catch (err) {\n return cb(err);\n }\n cb(null, result);\n }\n }\n function fileLoader(filePath) {\n return exports.fileLoader(filePath);\n }\n function includeFile(path, options) {\n var opts = utils.shallowCopy(utils.createNullProtoObjWherePossible(), options);\n opts.filename = getIncludePath(path, opts);\n if (typeof options.includer === \"function\") {\n var includerResult = options.includer(path, opts.filename);\n if (includerResult) {\n if (includerResult.filename) {\n opts.filename = includerResult.filename;\n }\n if (includerResult.template) {\n return handleCache(opts, includerResult.template);\n }\n }\n }\n return handleCache(opts);\n }\n function rethrow(err, str, flnm, lineno, esc) {\n var lines = str.split(\"\\n\");\n var start = Math.max(lineno - 3, 0);\n var end = Math.min(lines.length, lineno + 3);\n var filename = esc(flnm);\n var context = lines.slice(start, end).map(function (line, i) {\n var curr = i + start + 1;\n return (curr == lineno ? \" >> \" : \" \") + curr + \"| \" + line;\n }).join(\"\\n\");\n err.path = filename;\n err.message = (filename || \"ejs\") + \":\" + lineno + \"\\n\" + context + \"\\n\\n\" + err.message;\n throw err;\n }\n function stripSemi(str) {\n return str.replace(/;(\\s*$)/, \"$1\");\n }\n exports.compile = function compile(template, opts) {\n var templ;\n if (opts && opts.scope) {\n if (!scopeOptionWarned) {\n console.warn(\"`scope` option is deprecated and will be removed in EJS 3\");\n scopeOptionWarned = true;\n }\n if (!opts.context) {\n opts.context = opts.scope;\n }\n delete opts.scope;\n }\n templ = new Template(template, opts);\n return templ.compile();\n };\n exports.render = function (template, d, o) {\n var data = d || utils.createNullProtoObjWherePossible();\n var opts = o || utils.createNullProtoObjWherePossible();\n if (arguments.length == 2) {\n utils.shallowCopyFromList(opts, data, _OPTS_PASSABLE_WITH_DATA);\n }\n return handleCache(opts, template)(data);\n };\n exports.renderFile = function () {\n var args = Array.prototype.slice.call(arguments);\n var filename = args.shift();\n var cb;\n var opts = {\n filename: filename\n };\n var data;\n var viewOpts;\n if (typeof arguments[arguments.length - 1] == \"function\") {\n cb = args.pop();\n }\n if (args.length) {\n data = args.shift();\n if (args.length) {\n utils.shallowCopy(opts, args.pop());\n } else {\n if (data.settings) {\n if (data.settings.views) {\n opts.views = data.settings.views;\n }\n if (data.settings[\"view cache\"]) {\n opts.cache = true;\n }\n viewOpts = data.settings[\"view options\"];\n if (viewOpts) {\n utils.shallowCopy(opts, viewOpts);\n }\n }\n utils.shallowCopyFromList(opts, data, _OPTS_PASSABLE_WITH_DATA_EXPRESS);\n }\n opts.filename = filename;\n } else {\n data = utils.createNullProtoObjWherePossible();\n }\n return tryHandleCache(opts, data, cb);\n };\n exports.Template = Template;\n exports.clearCache = function () {\n exports.cache.reset();\n };\n function Template(text, opts) {\n opts = opts || utils.createNullProtoObjWherePossible();\n var options = utils.createNullProtoObjWherePossible();\n this.templateText = text;\n this.mode = null;\n this.truncate = false;\n this.currentLine = 1;\n this.source = \"\";\n options.client = opts.client || false;\n options.escapeFunction = opts.escape || opts.escapeFunction || utils.escapeXML;\n options.compileDebug = opts.compileDebug !== false;\n options.debug = !!opts.debug;\n options.filename = opts.filename;\n options.openDelimiter = opts.openDelimiter || exports.openDelimiter || _DEFAULT_OPEN_DELIMITER;\n options.closeDelimiter = opts.closeDelimiter || exports.closeDelimiter || _DEFAULT_CLOSE_DELIMITER;\n options.delimiter = opts.delimiter || exports.delimiter || _DEFAULT_DELIMITER;\n options.strict = opts.strict || false;\n options.context = opts.context;\n options.cache = opts.cache || false;\n options.rmWhitespace = opts.rmWhitespace;\n options.root = opts.root;\n options.includer = opts.includer;\n options.outputFunctionName = opts.outputFunctionName;\n options.localsName = opts.localsName || exports.localsName || _DEFAULT_LOCALS_NAME;\n options.views = opts.views;\n options.async = opts.async;\n options.destructuredLocals = opts.destructuredLocals;\n options.legacyInclude = typeof opts.legacyInclude != \"undefined\" ? !!opts.legacyInclude : true;\n if (options.strict) {\n options._with = false;\n } else {\n options._with = typeof opts._with != \"undefined\" ? opts._with : true;\n }\n this.opts = options;\n this.regex = this.createRegex();\n }\n Template.modes = {\n EVAL: \"eval\",\n ESCAPED: \"escaped\",\n RAW: \"raw\",\n COMMENT: \"comment\",\n LITERAL: \"literal\"\n };\n Template.prototype = {\n createRegex: function () {\n var str = _REGEX_STRING;\n var delim = utils.escapeRegExpChars(this.opts.delimiter);\n var open = utils.escapeRegExpChars(this.opts.openDelimiter);\n var close = utils.escapeRegExpChars(this.opts.closeDelimiter);\n str = str.replace(/%/g, delim).replace(//g, close);\n return new RegExp(str);\n },\n compile: function () {\n var src;\n var fn;\n var opts = this.opts;\n var prepended = \"\";\n var appended = \"\";\n var escapeFn = opts.escapeFunction;\n var ctor;\n var sanitizedFilename = opts.filename ? JSON.stringify(opts.filename) : \"undefined\";\n if (!this.source) {\n this.generateSource();\n prepended += ' var __output = \"\";\\n' + \" function __append(s) { if (s !== undefined && s !== null) __output += s }\\n\";\n if (opts.outputFunctionName) {\n if (!_JS_IDENTIFIER.test(opts.outputFunctionName)) {\n throw new Error(\"outputFunctionName is not a valid JS identifier.\");\n }\n prepended += \" var \" + opts.outputFunctionName + \" = __append;\" + \"\\n\";\n }\n if (opts.localsName && !_JS_IDENTIFIER.test(opts.localsName)) {\n throw new Error(\"localsName is not a valid JS identifier.\");\n }\n if (opts.destructuredLocals && opts.destructuredLocals.length) {\n var destructuring = \" var __locals = (\" + opts.localsName + \" || {}),\\n\";\n for (var i = 0; i < opts.destructuredLocals.length; i++) {\n var name = opts.destructuredLocals[i];\n if (!_JS_IDENTIFIER.test(name)) {\n throw new Error(\"destructuredLocals[\" + i + \"] is not a valid JS identifier.\");\n }\n if (i > 0) {\n destructuring += \",\\n \";\n }\n destructuring += name + \" = __locals.\" + name;\n }\n prepended += destructuring + \";\\n\";\n }\n if (opts._with !== false) {\n prepended += \" with (\" + opts.localsName + \" || {}) {\" + \"\\n\";\n appended += \" }\" + \"\\n\";\n }\n appended += \" return __output;\" + \"\\n\";\n this.source = prepended + this.source + appended;\n }\n if (opts.compileDebug) {\n src = \"var __line = 1\" + \"\\n\" + \" , __lines = \" + JSON.stringify(this.templateText) + \"\\n\" + \" , __filename = \" + sanitizedFilename + \";\" + \"\\n\" + \"try {\" + \"\\n\" + this.source + \"} catch (e) {\" + \"\\n\" + \" rethrow(e, __lines, __filename, __line, escapeFn);\" + \"\\n\" + \"}\" + \"\\n\";\n } else {\n src = this.source;\n }\n if (opts.client) {\n src = \"escapeFn = escapeFn || \" + escapeFn.toString() + \";\" + \"\\n\" + src;\n if (opts.compileDebug) {\n src = \"rethrow = rethrow || \" + rethrow.toString() + \";\" + \"\\n\" + src;\n }\n }\n if (opts.strict) {\n src = '\"use strict\";\\n' + src;\n }\n if (opts.debug) {\n console.log(src);\n }\n if (opts.compileDebug && opts.filename) {\n src = src + \"\\n\" + \"//# sourceURL=\" + sanitizedFilename + \"\\n\";\n }\n try {\n if (opts.async) {\n try {\n ctor = new Function(\"return (async function(){}).constructor;\")();\n } catch (e) {\n if (e instanceof SyntaxError) {\n throw new Error(\"This environment does not support async/await\");\n } else {\n throw e;\n }\n }\n } else {\n ctor = Function;\n }\n fn = new ctor(opts.localsName + \", escapeFn, include, rethrow\", src);\n } catch (e) {\n if (e instanceof SyntaxError) {\n if (opts.filename) {\n e.message += \" in \" + opts.filename;\n }\n e.message += \" while compiling ejs\\n\\n\";\n e.message += \"If the above error is not helpful, you may want to try EJS-Lint:\\n\";\n e.message += \"https://github.com/RyanZim/EJS-Lint\";\n if (!opts.async) {\n e.message += \"\\n\";\n e.message += \"Or, if you meant to create an async function, pass `async: true` as an option.\";\n }\n }\n throw e;\n }\n var returnedFn = opts.client ? fn : function anonymous(data) {\n var include = function (path, includeData) {\n var d = utils.shallowCopy(utils.createNullProtoObjWherePossible(), data);\n if (includeData) {\n d = utils.shallowCopy(d, includeData);\n }\n return includeFile(path, opts)(d);\n };\n return fn.apply(opts.context, [data || utils.createNullProtoObjWherePossible(), escapeFn, include, rethrow]);\n };\n if (opts.filename && typeof Object.defineProperty === \"function\") {\n var filename = opts.filename;\n var basename = path.basename(filename, path.extname(filename));\n try {\n Object.defineProperty(returnedFn, \"name\", {\n value: basename,\n writable: false,\n enumerable: false,\n configurable: true\n });\n } catch (e) {}\n }\n return returnedFn;\n },\n generateSource: function () {\n var opts = this.opts;\n if (opts.rmWhitespace) {\n this.templateText = this.templateText.replace(/[\\r\\n]+/g, \"\\n\").replace(/^\\s+|\\s+$/gm, \"\");\n }\n this.templateText = this.templateText.replace(/[ \\t]*<%_/gm, \"<%_\").replace(/_%>[ \\t]*/gm, \"_%>\");\n var self = this;\n var matches = this.parseTemplateText();\n var d = this.opts.delimiter;\n var o = this.opts.openDelimiter;\n var c = this.opts.closeDelimiter;\n if (matches && matches.length) {\n matches.forEach(function (line, index) {\n var closing;\n if (line.indexOf(o + d) === 0 && line.indexOf(o + d + d) !== 0) {\n closing = matches[index + 2];\n if (!(closing == d + c || closing == \"-\" + d + c || closing == \"_\" + d + c)) {\n throw new Error('Could not find matching close tag for \"' + line + '\".');\n }\n }\n self.scanLine(line);\n });\n }\n },\n parseTemplateText: function () {\n var str = this.templateText;\n var pat = this.regex;\n var result = pat.exec(str);\n var arr = [];\n var firstPos;\n while (result) {\n firstPos = result.index;\n if (firstPos !== 0) {\n arr.push(str.substring(0, firstPos));\n str = str.slice(firstPos);\n }\n arr.push(result[0]);\n str = str.slice(result[0].length);\n result = pat.exec(str);\n }\n if (str) {\n arr.push(str);\n }\n return arr;\n },\n _addOutput: function (line) {\n if (this.truncate) {\n line = line.replace(/^(?:\\r\\n|\\r|\\n)/, \"\");\n this.truncate = false;\n }\n if (!line) {\n return line;\n }\n line = line.replace(/\\\\/g, \"\\\\\\\\\");\n line = line.replace(/\\n/g, \"\\\\n\");\n line = line.replace(/\\r/g, \"\\\\r\");\n line = line.replace(/\"/g, '\\\\\"');\n this.source += ' ; __append(\"' + line + '\")' + \"\\n\";\n },\n scanLine: function (line) {\n var self = this;\n var d = this.opts.delimiter;\n var o = this.opts.openDelimiter;\n var c = this.opts.closeDelimiter;\n var newLineCount = 0;\n newLineCount = line.split(\"\\n\").length - 1;\n switch (line) {\n case o + d:\n case o + d + \"_\":\n this.mode = Template.modes.EVAL;\n break;\n case o + d + \"=\":\n this.mode = Template.modes.ESCAPED;\n break;\n case o + d + \"-\":\n this.mode = Template.modes.RAW;\n break;\n case o + d + \"#\":\n this.mode = Template.modes.COMMENT;\n break;\n case o + d + d:\n this.mode = Template.modes.LITERAL;\n this.source += ' ; __append(\"' + line.replace(o + d + d, o + d) + '\")' + \"\\n\";\n break;\n case d + d + c:\n this.mode = Template.modes.LITERAL;\n this.source += ' ; __append(\"' + line.replace(d + d + c, d + c) + '\")' + \"\\n\";\n break;\n case d + c:\n case \"-\" + d + c:\n case \"_\" + d + c:\n if (this.mode == Template.modes.LITERAL) {\n this._addOutput(line);\n }\n this.mode = null;\n this.truncate = line.indexOf(\"-\") === 0 || line.indexOf(\"_\") === 0;\n break;\n default:\n if (this.mode) {\n switch (this.mode) {\n case Template.modes.EVAL:\n case Template.modes.ESCAPED:\n case Template.modes.RAW:\n if (line.lastIndexOf(\"//\") > line.lastIndexOf(\"\\n\")) {\n line += \"\\n\";\n }\n }\n switch (this.mode) {\n case Template.modes.EVAL:\n this.source += \" ; \" + line + \"\\n\";\n break;\n case Template.modes.ESCAPED:\n this.source += \" ; __append(escapeFn(\" + stripSemi(line) + \"))\" + \"\\n\";\n break;\n case Template.modes.RAW:\n this.source += \" ; __append(\" + stripSemi(line) + \")\" + \"\\n\";\n break;\n case Template.modes.COMMENT:\n break;\n case Template.modes.LITERAL:\n this._addOutput(line);\n break;\n }\n } else {\n this._addOutput(line);\n }\n }\n if (self.opts.compileDebug && newLineCount) {\n this.currentLine += newLineCount;\n this.source += \" ; __line = \" + this.currentLine + \"\\n\";\n }\n }\n };\n exports.escapeXML = utils.escapeXML;\n exports.__express = exports.renderFile;\n exports.VERSION = _VERSION_STRING;\n exports.name = _NAME;\n if (typeof window != \"undefined\") {\n window.ejs = exports;\n }\n }, {\n \"../package.json\": 6,\n \"./utils\": 2,\n fs: 3,\n path: 4\n }],\n 2: [function (require, module, exports) {\n \"use strict\";\n\n var regExpChars = /[|\\\\{}()[\\]^$+*?.]/g;\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n var hasOwn = function (obj, key) {\n return hasOwnProperty.apply(obj, [key]);\n };\n exports.escapeRegExpChars = function (string) {\n if (!string) {\n return \"\";\n }\n return String(string).replace(regExpChars, \"\\\\$&\");\n };\n var _ENCODE_HTML_RULES = {\n \"&\": \"&\",\n \"<\": \"<\",\n \">\": \">\",\n '\"': \""\",\n \"'\": \"'\"\n };\n var _MATCH_HTML = /[&<>'\"]/g;\n function encode_char(c) {\n return _ENCODE_HTML_RULES[c] || c;\n }\n var escapeFuncStr = \"var _ENCODE_HTML_RULES = {\\n\" + ' \"&\": \"&\"\\n' + ' , \"<\": \"<\"\\n' + ' , \">\": \">\"\\n' + ' , \\'\"\\': \""\"\\n' + ' , \"\\'\": \"'\"\\n' + \" }\\n\" + \" , _MATCH_HTML = /[&<>'\\\"]/g;\\n\" + \"function encode_char(c) {\\n\" + \" return _ENCODE_HTML_RULES[c] || c;\\n\" + \"};\\n\";\n exports.escapeXML = function (markup) {\n return markup == undefined ? \"\" : String(markup).replace(_MATCH_HTML, encode_char);\n };\n function escapeXMLToString() {\n return Function.prototype.toString.call(this) + \";\\n\" + escapeFuncStr;\n }\n try {\n if (typeof Object.defineProperty === \"function\") {\n Object.defineProperty(exports.escapeXML, \"toString\", {\n value: escapeXMLToString\n });\n } else {\n exports.escapeXML.toString = escapeXMLToString;\n }\n } catch (err) {\n console.warn(\"Unable to set escapeXML.toString (is the Function prototype frozen?)\");\n }\n exports.shallowCopy = function (to, from) {\n from = from || {};\n if (to !== null && to !== undefined) {\n for (var p in from) {\n if (!hasOwn(from, p)) {\n continue;\n }\n if (p === \"__proto__\" || p === \"constructor\") {\n continue;\n }\n to[p] = from[p];\n }\n }\n return to;\n };\n exports.shallowCopyFromList = function (to, from, list) {\n list = list || [];\n from = from || {};\n if (to !== null && to !== undefined) {\n for (var i = 0; i < list.length; i++) {\n var p = list[i];\n if (typeof from[p] != \"undefined\") {\n if (!hasOwn(from, p)) {\n continue;\n }\n if (p === \"__proto__\" || p === \"constructor\") {\n continue;\n }\n to[p] = from[p];\n }\n }\n }\n return to;\n };\n exports.cache = {\n _data: {},\n set: function (key, val) {\n this._data[key] = val;\n },\n get: function (key) {\n return this._data[key];\n },\n remove: function (key) {\n delete this._data[key];\n },\n reset: function () {\n this._data = {};\n }\n };\n exports.hyphenToCamel = function (str) {\n return str.replace(/-[a-z]/g, function (match) {\n return match[1].toUpperCase();\n });\n };\n exports.createNullProtoObjWherePossible = function () {\n if (typeof Object.create == \"function\") {\n return function () {\n return Object.create(null);\n };\n }\n if (!({\n __proto__: null\n } instanceof Object)) {\n return function () {\n return {\n __proto__: null\n };\n };\n }\n return function () {\n return {};\n };\n }();\n }, {}],\n 3: [function (require, module, exports) {}, {}],\n 4: [function (require, module, exports) {\n (function (process) {\n function normalizeArray(parts, allowAboveRoot) {\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === \".\") {\n parts.splice(i, 1);\n } else if (last === \"..\") {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift(\"..\");\n }\n }\n return parts;\n }\n exports.resolve = function () {\n var resolvedPath = \"\",\n resolvedAbsolute = false;\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = i >= 0 ? arguments[i] : process.cwd();\n if (typeof path !== \"string\") {\n throw new TypeError(\"Arguments to path.resolve must be strings\");\n } else if (!path) {\n continue;\n }\n resolvedPath = path + \"/\" + resolvedPath;\n resolvedAbsolute = path.charAt(0) === \"/\";\n }\n resolvedPath = normalizeArray(filter(resolvedPath.split(\"/\"), function (p) {\n return !!p;\n }), !resolvedAbsolute).join(\"/\");\n return (resolvedAbsolute ? \"/\" : \"\") + resolvedPath || \".\";\n };\n exports.normalize = function (path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === \"/\";\n path = normalizeArray(filter(path.split(\"/\"), function (p) {\n return !!p;\n }), !isAbsolute).join(\"/\");\n if (!path && !isAbsolute) {\n path = \".\";\n }\n if (path && trailingSlash) {\n path += \"/\";\n }\n return (isAbsolute ? \"/\" : \"\") + path;\n };\n exports.isAbsolute = function (path) {\n return path.charAt(0) === \"/\";\n };\n exports.join = function () {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function (p, index) {\n if (typeof p !== \"string\") {\n throw new TypeError(\"Arguments to path.join must be strings\");\n }\n return p;\n }).join(\"/\"));\n };\n exports.relative = function (from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== \"\") break;\n }\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== \"\") break;\n }\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n var fromParts = trim(from.split(\"/\"));\n var toParts = trim(to.split(\"/\"));\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push(\"..\");\n }\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n return outputParts.join(\"/\");\n };\n exports.sep = \"/\";\n exports.delimiter = \":\";\n exports.dirname = function (path) {\n if (typeof path !== \"string\") path = path + \"\";\n if (path.length === 0) return \".\";\n var code = path.charCodeAt(0);\n var hasRoot = code === 47;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n matchedSlash = false;\n }\n }\n if (end === -1) return hasRoot ? \"/\" : \".\";\n if (hasRoot && end === 1) {\n return \"/\";\n }\n return path.slice(0, end);\n };\n function basename(path) {\n if (typeof path !== \"string\") path = path + \"\";\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47) {\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n matchedSlash = false;\n end = i + 1;\n }\n }\n if (end === -1) return \"\";\n return path.slice(start, end);\n }\n exports.basename = function (path, ext) {\n var f = basename(path);\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n };\n exports.extname = function (path) {\n if (typeof path !== \"string\") path = path + \"\";\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47) {\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46) {\n if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) {\n preDotState = -1;\n }\n }\n if (startDot === -1 || end === -1 || preDotState === 0 || preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return \"\";\n }\n return path.slice(startDot, end);\n };\n function filter(xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n }\n var substr = \"ab\".substr(-1) === \"b\" ? function (str, start, len) {\n return str.substr(start, len);\n } : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n };\n }).call(this, require(\"_process\"));\n }, {\n _process: 5\n }],\n 5: [function (require, module, exports) {\n var process = module.exports = {};\n var cachedSetTimeout;\n var cachedClearTimeout;\n function defaultSetTimout() {\n throw new Error(\"setTimeout has not been defined\");\n }\n function defaultClearTimeout() {\n throw new Error(\"clearTimeout has not been defined\");\n }\n (function () {\n try {\n if (typeof setTimeout === \"function\") {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === \"function\") {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n })();\n function runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n return setTimeout(fun, 0);\n }\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n return cachedSetTimeout(fun, 0);\n } catch (e) {\n try {\n return cachedSetTimeout.call(null, fun, 0);\n } catch (e) {\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n }\n function runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n return clearTimeout(marker);\n }\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n return cachedClearTimeout(marker);\n } catch (e) {\n try {\n return cachedClearTimeout.call(null, marker);\n } catch (e) {\n return cachedClearTimeout.call(this, marker);\n }\n }\n }\n var queue = [];\n var draining = false;\n var currentQueue;\n var queueIndex = -1;\n function cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n }\n function drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n var len = queue.length;\n while (len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n }\n process.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n };\n function Item(fun, array) {\n this.fun = fun;\n this.array = array;\n }\n Item.prototype.run = function () {\n this.fun.apply(null, this.array);\n };\n process.title = \"browser\";\n process.browser = true;\n process.env = {};\n process.argv = [];\n process.version = \"\";\n process.versions = {};\n function noop() {}\n process.on = noop;\n process.addListener = noop;\n process.once = noop;\n process.off = noop;\n process.removeListener = noop;\n process.removeAllListeners = noop;\n process.emit = noop;\n process.prependListener = noop;\n process.prependOnceListener = noop;\n process.listeners = function (name) {\n return [];\n };\n process.binding = function (name) {\n throw new Error(\"process.binding is not supported\");\n };\n process.cwd = function () {\n return \"/\";\n };\n process.chdir = function (dir) {\n throw new Error(\"process.chdir is not supported\");\n };\n process.umask = function () {\n return 0;\n };\n }, {}],\n 6: [function (require, module, exports) {\n module.exports = {\n name: \"ejs\",\n description: \"Embedded JavaScript templates\",\n keywords: [\"template\", \"engine\", \"ejs\"],\n version: \"3.1.8\",\n author: \"Matthew Eernisse (http://fleegix.org)\",\n license: \"Apache-2.0\",\n bin: {\n ejs: \"./bin/cli.js\"\n },\n main: \"./lib/ejs.js\",\n jsdelivr: \"ejs.min.js\",\n unpkg: \"ejs.min.js\",\n repository: {\n type: \"git\",\n url: \"git://github.com/mde/ejs.git\"\n },\n bugs: \"https://github.com/mde/ejs/issues\",\n homepage: \"https://github.com/mde/ejs\",\n dependencies: {\n jake: \"^10.8.5\"\n },\n devDependencies: {\n browserify: \"^16.5.1\",\n eslint: \"^6.8.0\",\n \"git-directory-deploy\": \"^1.5.1\",\n jsdoc: \"^4.0.2\",\n \"lru-cache\": \"^4.0.1\",\n mocha: \"^10.2.0\",\n \"uglify-js\": \"^3.3.16\"\n },\n engines: {\n node: \">=0.10.0\"\n },\n scripts: {\n test: \"mocha -u tdd\"\n }\n };\n }, {}]\n }, {}, [1])(1);\n});\n\nvar tpl = Object.create(null);\ntpl['columns/badge.html'] = '\"><%= text %>';\ntpl['columns/button.html'] = '';\ntpl['columns/link.html'] = '><%- content %>';\ntpl['columns/menu.html'] = '
    \"> <% $.each(items, function(key, item) { %> <% if (item.type === \\'link\\') { %>
  • \"<%- item.attr %>><%= item.content %>
  • <% } else if (item.type === \\'button\\') { %>
  • <% } else if (item.type === \\'divider\\') { %>

  • <% } else if (item.type === \\'header\\') { %>
  • <%= item.content %>
  • <% } %> <% }) %>
';\ntpl['columns/select_label.html'] = '';\ntpl['columns/select.html'] = '\">';\ntpl['columns/switch.html'] = '
\" value=\"record.index\"<% if (checked) { %> checked<% } %><% if (disabled) { %> disabled<% } %>>
';\ntpl['controls/button_group.html'] = '
<% $.each(buttons, function(key, button) { %> <% if (button.type === \\'link\\') { %> \"<%- button.attr %>><%= button.content %> <% } else if (button.type === \\'button\\') { %> <% } else if (button.type === \\'dropdown\\') { %>
    \"> <% $.each(button.items, function(key, item) { %> <% if (item.type === \\'link\\') { %>
  • \"><%= item.content %>
  • <% } else if (item.type === \\'button\\') { %>
  • <% } else if (item.type === \\'divider\\') { %>

  • <% } %> <% }) %>
<% } %> <% }) %>
';\ntpl['controls/button.html'] = '';\ntpl['controls/caption.html'] = '
<%= title %> <% if (description) { %> \"> <% } %> <%= value %>
';\ntpl['controls/columns-container.html'] = '
<% $.each(columns, function(key, column) { %>
<% }); %>
';\ntpl['controls/columns.html'] = '';\ntpl['controls/dropdown.html'] = '
    \"> <% $.each(items, function(key, item) { %> <% if (item.type === \\'link\\') { %>
  • \"><%= item.content %>
  • <% } else if (item.type === \\'button\\') { %>
  • <% } else if (item.type === \\'divider\\') { %>

  • <% } %> <% }) %>
';\ntpl['controls/link.html'] = '\"<%- attr %>><%- content %>';\ntpl['controls/page-jump.html'] = '
>
';\ntpl['controls/page-size.html'] = ' ';\ntpl['controls/pages.html'] = ' ';\ntpl['controls/search-clear.html'] = ' ';\ntpl['controls/search-container.html'] = ' ';\ntpl['controls/search.html'] = '
<%- btnClear %>
';\ntpl['controls/total.html'] = '
> <%= lang.total %>: <%= recordsTotal %>
';\ntpl['filters/checkbox.html'] = '
<% if (label) { %> <%= label %> <% } %> <% $.each(items, function(key, item) { %> \" name=\"<%= field %>\" value=\"<%= item.value %>\" <%= item.checked ? \\' checked\\' : \\'\\' %>> <% }); %>
';\ntpl['filters/clear.html'] = ' ';\ntpl['filters/date_month.html'] = '
<% if (label) { %> <%= label %> <% } %> >
';\ntpl['filters/date_range.html'] = '
<% if (label) { %> <%= label %> <% } %> > >
';\ntpl['filters/date.html'] = '
<% if (label) { %> <%= label %> <% } %> >
';\ntpl['filters/datetime_range.html'] = '
<% if (label) { %> <%= label %> <% } %> > >
';\ntpl['filters/datetime.html'] = '
<% if (label) { %> <%= label %> <% } %> >
';\ntpl['filters/number.html'] = '
<% if (label) { %> <%= label %> <% } %> > >
';\ntpl['filters/radio.html'] = '
<% if (label) { %> <%= label %> <% } %> <% $.each(items, function(key, item) { %> \" name=\"<%= field %>\" value=\"<%= item.value %>\" <%= item.checked ? \\' checked\\' : \\'\\' %>> <% }); %>
';\ntpl['filters/select.html'] = '
<% if (label) { %> <%= label %> <% } %>
';\ntpl['filters/switch.html'] = '
\" name=\"<%= field %>\" value=\"<%= valueY %>\" <%= checked ? \\' checked\\' : \\'\\' %>> <% if (label != \\'\\') { %> <% } %>
';\ntpl['filters/text.html'] = '
<% if (label) { %> <%= label %> <% } %> >
';\ntpl['search/checkbox.html'] = ' <% $.each(options, function(key, option) { %>
<% }); %>';\ntpl['search/date_month.html'] = ' >';\ntpl['search/date_range.html'] = ' > >';\ntpl['search/date.html'] = ' >';\ntpl['search/datetime_range.html'] = ' > >';\ntpl['search/datetime.html'] = ' >';\ntpl['search/number.html'] = ' > >';\ntpl['search/radio.html'] = '
<% $.each(options, function(key, option) { %>
<% }); %>';\ntpl['search/select.html'] = ' ';\ntpl['search/switch.html'] = '
\" name=\"<%= field %>\" value=\"<%= valueY %>\" <%= checked ? \\' checked\\' : \\'\\' %>>
';\ntpl['search/text.html'] = ' >';\ntpl['table-columns-footer.html'] = ' <% $.each(columns, function(key, column) { %> ><%- column.content %> <% }); %> ';\ntpl['table-columns-header.html'] = ' <% $.each(columns, function(key, column) { %> ><%- column.content %> <% }); %> ';\ntpl['table-columns.html'] = ' <% $.each(columns, function(key, column) { %> > <%- column.label %> <% if (column.description) { %> \"> <% } %> <% if (column.sortable === \\'asc\\') { %> <% } else if (column.sortable === \\'desc\\') { %> <% } %> <% }); %> ';\ntpl['table-control.html'] = '
\" class=\"coreui-table__control\">
';\ntpl['table-controls-footer-out.html'] = ' ';\ntpl['table-controls-footer.html'] = ' ';\ntpl['table-controls-header-out.html'] = '
<% if (controlsLeft.length) { %>
<% } %> <% if (controlsCenter.length) { %>
<% } %> <% if (controlsRight.length) { %>
<% } %>
';\ntpl['table-controls-header.html'] = '
<% if (controlsLeft.length) { %>
<% } %> <% if (controlsCenter.length) { %>
<% } %> <% if (controlsRight.length) { %>
<% } %>
';\ntpl['table-loader.html'] = '
<%= lang.loading %>
';\ntpl['table-record-expand.html'] = ' \"> ';\ntpl['table-record-group.html'] = '> \"> ';\ntpl['table-record.html'] = ' data-record-index=\"<%= record.index %>\"> <% $.each(record.fields, function(key2, field) { %> > <% }); %> ';\ntpl['table-records-empty.html'] = ' \"><%= lang.emptyRecords %> ';\ntpl['table-wrapper.html'] = '
\" class=\"coreui-table<%= classes %>\"<% if (widthSizes) { %> style=\"<%= widthSizes.join(\\';\\') %>\"<% } %>>
overflow-x-auto<% } %>\" <% if (heightSizes) { %>style=\"<%= heightSizes.join(\\';\\') %>\"<% } %>>
';\ntpl['table.html'] = ' mb-0\"> <% $.each(colGroups, function(key, columnGroup) { %> style=\"<%= columnGroup.style %>\"<% } %>/> <% }); %> <% if (columnHeaders) { %> <%- theadAttr %>\"<% } %>> <%- columnGroupsHeader %> <%- columns %> <% } %> <% if (columnGroupsFooter != \\'\\') { %> <%- columnGroupsFooter %> <% } %>
';\n\nvar coreuiTableUtils = {\n /**\r\n * Объединение атрибутов\r\n * @param attr1\r\n * @param attr2\r\n * @returns {object}\r\n */\n mergeAttr: function mergeAttr(attr1, attr2) {\n var mergeAttr = Object.assign({}, attr1);\n if (_typeof(attr2) === 'object') {\n $.each(attr2, function (name, value) {\n if (mergeAttr.hasOwnProperty(name)) {\n if (name === 'class') {\n mergeAttr[name] += ' ' + value;\n } else if (name === 'style') {\n mergeAttr[name] += ';' + value;\n } else {\n mergeAttr[name] = value;\n }\n } else {\n mergeAttr[name] = value;\n }\n });\n }\n return mergeAttr;\n },\n /**\r\n * Проверка на число\r\n * @param num\r\n * @returns {boolean}\r\n * @private\r\n */\n isNumeric: function isNumeric(num) {\n return (typeof num === 'number' || typeof num === \"string\" && num.trim() !== '') && !isNaN(num);\n },\n /**\r\n * @returns {string}\r\n * @private\r\n */\n hashCode: function hashCode() {\n return this.crc32((new Date().getTime() + Math.random()).toString()).toString(16);\n },\n /**\r\n * Проверка на объект\r\n * @param value\r\n */\n isObject: function isObject(value) {\n return _typeof(value) === 'object' && !Array.isArray(value) && value !== null;\n },\n /**\r\n * @param str\r\n * @returns {number}\r\n * @private\r\n */\n crc32: function crc32(str) {\n for (var a, o = [], c = 0; c < 256; c++) {\n a = c;\n for (var f = 0; f < 8; f++) {\n a = 1 & a ? 3988292384 ^ a >>> 1 : a >>> 1;\n }\n o[c] = a;\n }\n for (var n = -1, t = 0; t < str.length; t++) {\n n = n >>> 8 ^ o[255 & (n ^ str.charCodeAt(t))];\n }\n return (-1 ^ n) >>> 0;\n }\n};\n\nvar coreuiTableRender = {\n /**\r\n * Сборка таблицы\r\n * @param {object} table\r\n * @private\r\n */\n renderTable: function renderTable(table) {\n var options = table.getOptions();\n var recordsElements = [];\n var columnGroupsHeader = '';\n var columnGroupsFooter = '';\n var colGroups = [];\n var columns = [];\n\n // Колонки\n if (table._columns.length > 0) {\n $.each(table._columns, function (key, column) {\n if (!column.isShow()) {\n return;\n }\n var columnOptions = column.getOptions();\n var attributes = [];\n var sortable = null;\n if (columnOptions.hasOwnProperty('field') && typeof columnOptions.field === 'string') {\n columnOptions.attrHeader = coreuiTableUtils.mergeAttr(columnOptions.attrHeader, {\n \"data-field\": columnOptions.field\n });\n }\n if (columnOptions.hasOwnProperty('fixed') && typeof columnOptions.fixed === 'string') {\n columnOptions.attrHeader = coreuiTableUtils.mergeAttr(columnOptions.attrHeader, {\n \"class\": 'coreui-table__fixed_' + columnOptions.fixed\n });\n columnOptions.attr = coreuiTableUtils.mergeAttr(columnOptions.attr, {\n \"class\": 'coreui-table__fixed_' + columnOptions.fixed\n });\n }\n if (columnOptions.type !== 'numbers') {\n if (columnOptions.hasOwnProperty('sortable') && columnOptions.sortable) {\n columnOptions.attrHeader = coreuiTableUtils.mergeAttr(columnOptions.attrHeader, {\n \"class\": 'coreui-table__sortable'\n });\n }\n if (table._sort.length > 0 && columnOptions.hasOwnProperty('field') && typeof columnOptions.field === 'string' && columnOptions.field) {\n $.each(table._sort, function (key, sortField) {\n if (columnOptions.field === sortField.field) {\n if (sortField.order === 'asc') {\n sortable = 'asc';\n } else if (sortField.order === 'desc') {\n sortable = 'desc';\n }\n return false;\n }\n });\n }\n }\n if (columnOptions.attrHeader && coreuiTableUtils.isObject(columnOptions.attrHeader)) {\n $.each(columnOptions.attrHeader, function (name, value) {\n attributes.push(name + '=\"' + value + '\"');\n });\n }\n var style = [];\n if (columnOptions.hasOwnProperty('width') && ['string', 'number'].indexOf(_typeof(columnOptions.width)) >= 0) {\n var unit = typeof columnOptions.width === 'number' ? 'px' : '';\n style.push('width:' + columnOptions.width + unit);\n }\n if (columnOptions.hasOwnProperty('minWidth') && ['string', 'number'].indexOf(_typeof(columnOptions.minWidth)) >= 0) {\n var _unit = typeof columnOptions.minWidth === 'number' ? 'px' : '';\n style.push('min-width:' + columnOptions.minWidth + _unit);\n }\n if (columnOptions.hasOwnProperty('maxWidth') && ['string', 'number'].indexOf(_typeof(columnOptions.maxWidth)) >= 0) {\n var _unit2 = typeof columnOptions.maxWidth === 'number' ? 'px' : '';\n style.push('max-width:' + columnOptions.maxWidth + _unit2);\n }\n colGroups.push({\n style: style.length > 0 ? style.join(';') : ''\n });\n columns.push({\n attr: attributes.length > 0 ? ' ' + attributes.join(' ') : '',\n label: columnOptions.hasOwnProperty('label') ? columnOptions.label : \"\",\n description: columnOptions.hasOwnProperty('description') ? columnOptions.description : '',\n sortable: sortable\n });\n });\n }\n\n // Строки\n if (!table._isRecordsRequest) {\n if (table._records.length > 0) {\n table._recordsTotal = table.getRecordsCount();\n table._recordsNumber = table._page === 1 ? 1 : (table._page - 1) * table._recordsPerPage + 1;\n recordsElements = coreuiTableRender.renderRecords(table, table._records);\n } else {\n recordsElements = coreuiTableRender.renderRecords(table, []);\n }\n }\n if (options.hasOwnProperty('columnGroupsHeader') && Array.isArray(options.columnGroupsHeader) && options.columnGroupsHeader.length > 0) {\n var rows = [];\n $.each(options.columnGroupsHeader, function (key, headerRow) {\n if (Array.isArray(headerRow)) {\n var cells = [];\n $.each(headerRow, function (key, headerColumn) {\n if (coreuiTableUtils.isObject(headerColumn)) {\n var attributes = [];\n if (headerColumn.hasOwnProperty('attr') && coreuiTableUtils.isObject(headerColumn.attr)) {\n $.each(headerColumn.attr, function (name, value) {\n attributes.push(name + '=\"' + value + '\"');\n });\n }\n cells.push({\n content: headerColumn.hasOwnProperty('content') ? headerColumn.content : '',\n description: headerColumn.hasOwnProperty('description') ? headerColumn.description : '',\n attr: attributes.length > 0 ? ' ' + attributes.join(' ') : ''\n });\n }\n });\n rows.push(ejs.render(tpl['table-columns-header.html'], {\n columns: cells\n }));\n }\n });\n columnGroupsHeader = rows.join('');\n }\n if (options.hasOwnProperty('columnGroupsFooter') && Array.isArray(options.columnGroupsFooter) && options.columnGroupsFooter.length > 0) {\n var _rows = [];\n $.each(options.columnGroupsFooter, function (key, footerRow) {\n if (Array.isArray(footerRow)) {\n var cells = [];\n $.each(footerRow, function (key, footerColumn) {\n if (coreuiTableUtils.isObject(footerColumn)) {\n var attributes = [];\n if (footerColumn.hasOwnProperty('attr') && coreuiTableUtils.isObject(footerColumn.attr)) {\n $.each(footerColumn.attr, function (name, value) {\n attributes.push(name + '=\"' + value + '\"');\n });\n }\n cells.push({\n content: footerColumn.hasOwnProperty('content') ? footerColumn.content : '',\n description: footerColumn.hasOwnProperty('description') ? footerColumn.description : '',\n attr: attributes.length > 0 ? ' ' + attributes.join(' ') : ''\n });\n }\n });\n _rows.push(ejs.render(tpl['table-columns-footer.html'], {\n columns: cells\n }));\n }\n });\n columnGroupsFooter = _rows.join('');\n }\n var classes = [];\n if (typeof options[\"class\"] === 'string' && options[\"class\"]) {\n classes.push(options[\"class\"]);\n }\n if (!columnGroupsFooter) {\n classes.push('empty-tfoot');\n }\n var htmlColumns = ejs.render(tpl['table-columns.html'], {\n columns: columns\n });\n var theadAttr = [];\n if (options.hasOwnProperty('theadTop') && ['string', 'number'].indexOf(_typeof(options.theadTop)) >= 0) {\n var unit = coreuiTableUtils.isNumeric(options.theadTop) ? 'px' : '';\n theadAttr.push('style=\"top:' + options.theadTop + unit + '\"');\n }\n var tableElement = $(ejs.render(tpl['table.html'], {\n classes: classes.join(' '),\n theadAttr: theadAttr.length > 0 ? theadAttr.join(' ') : '',\n columnHeaders: options.columnHeaders,\n columnGroupsHeader: columnGroupsHeader,\n colGroups: colGroups,\n columns: htmlColumns,\n columnGroupsFooter: columnGroupsFooter\n }));\n var tbody = tableElement.find('tbody');\n $.each(recordsElements, function (key, recordElement) {\n tbody.append(recordElement);\n });\n return tableElement;\n },\n /**\r\n * Сборка записей таблицы\r\n * @param {object} table\r\n * @param {Array} records\r\n * @return {Array}\r\n */\n renderRecords: function renderRecords(table, records) {\n var renderRecords = [];\n if (records.length > 0) {\n var that = this;\n var options = table.getOptions();\n var group = options.hasOwnProperty('group') && coreuiTableUtils.isObject(options.group) && options.group.hasOwnProperty('field') && typeof options.group.field === 'string' && options.group.field ? options.group : null;\n var groupValue = null;\n $.each(records, function (key, record) {\n if (record.show) {\n if (group && record.data.hasOwnProperty(group.field) && ['string', 'number'].indexOf(_typeof(record.data[group.field])) >= 0 && groupValue != record.data[group.field]) {\n groupValue = record.data[group.field];\n renderRecords.push(that.renderGroup(table, group, record));\n }\n renderRecords.push(that.renderRecord(table, record));\n table._recordsNumber++;\n }\n });\n }\n if (renderRecords.length === 0) {\n renderRecords = [$(ejs.render(tpl['table-records-empty.html'], {\n columnsCount: table._countColumnsShow,\n lang: table.getLang()\n }))];\n }\n return renderRecords;\n },\n /**\r\n * Сборка записи таблицы\r\n * @param {object} table\r\n * @param {object} record\r\n * @returns {{ attr: (string), fields: (object) }}}\r\n * @private\r\n */\n renderRecord: function renderRecord(table, record) {\n var that = this;\n var options = table.getOptions();\n var fields = [];\n var recordAttr = {\n \"class\": 'coreui-table__record'\n };\n record = $.extend(true, {}, record);\n $.each(table._columns, function (key, column) {\n if (!column.isShow()) {\n return;\n }\n var field = that.renderField(table, column, record);\n if (field) {\n fields.push(field);\n }\n });\n if (typeof options.onClickUrl === 'string' && options.onClickUrl) {\n recordAttr[\"class\"] += ' coreui-table_pointer';\n }\n if (record.meta) {\n recordAttr = coreuiTableUtils.mergeAttr(recordAttr, record.meta.attr);\n }\n var attributes = [];\n $.each(recordAttr, function (name, value) {\n attributes.push(name + '=\"' + value + '\"');\n });\n var recordElement = $(ejs.render(tpl['table-record.html'], {\n record: {\n attr: attributes.length > 0 ? ' ' + attributes.join(' ') : '',\n index: record.index,\n fields: fields\n }\n }));\n $.each(fields, function (key, field) {\n recordElement.find(' > td:eq(' + key + ')').html(field.content);\n });\n return recordElement;\n },\n /**\r\n * Сборка ячейки таблицы\r\n * @param {object} table\r\n * @param {object} column\r\n * @param {object} record\r\n * @returns {{ attr: (string), content: (string) }}\r\n * @private\r\n */\n renderField: function renderField(table, column, record) {\n var columnOptions = column.getOptions();\n var columnField = typeof columnOptions.field === 'string' ? columnOptions.field : null;\n var content = null;\n var fieldProps = record.meta && record.meta.hasOwnProperty('fields') && record.meta.fields.hasOwnProperty(columnField) ? record.meta.fields[columnField] : null;\n var fieldAttr = columnOptions.hasOwnProperty('attr') && coreuiTableUtils.isObject(columnOptions.attr) ? columnOptions.attr : {};\n if (fieldProps && coreuiTableUtils.isObject(fieldProps)) {\n if (fieldProps && fieldProps.hasOwnProperty('show') && !fieldProps.show) {\n return null;\n }\n if (coreuiTableUtils.isObject(fieldProps.attr)) {\n fieldAttr = coreuiTableUtils.mergeAttr(fieldAttr, fieldProps.attr);\n }\n }\n if (columnOptions.hasOwnProperty('fixed') && typeof columnOptions.fixed === 'string') {\n fieldAttr = coreuiTableUtils.mergeAttr(fieldAttr, {\n \"class\": 'coreui-table__fixed_' + columnOptions.fixed\n });\n }\n if (typeof columnOptions.render === 'function') {\n content = columnOptions.render({\n data: record.data,\n meta: record.meta,\n index: record.index\n }, table);\n } else {\n content = columnField && record.data.hasOwnProperty(columnField) ? record.data[columnField] : null;\n }\n content = column.render(content, record);\n var fieldAttrResult = [];\n $.each(fieldAttr, function (name, value) {\n fieldAttrResult.push(name + '=\"' + value + '\"');\n });\n return {\n attr: fieldAttrResult.length > 0 ? ' ' + fieldAttrResult.join(' ') : '',\n content: content\n };\n },\n /**\r\n * Сборка записи-группы\r\n * @param {object} table\r\n * @param {object} group\r\n * @param {object} record\r\n * @returns {{ attr: (string), fields: (object) }}}\r\n * @private\r\n */\n renderGroup: function renderGroup(table, group, record) {\n var attr = group.hasOwnProperty('attr') && coreuiTableUtils.isObject(group.attr) ? group.attr : {};\n if (attr.hasOwnProperty('class') && typeof attr[\"class\"] === 'string') {\n attr[\"class\"] += ' coreui-table__record-group';\n } else {\n attr[\"class\"] = 'coreui-table__record-group';\n }\n var attributes = [];\n $.each(attr, function (name, value) {\n if (typeof value === 'string') {\n attributes.push(name + '=\"' + value + '\"');\n }\n });\n var recordElement = $(ejs.render(tpl['table-record-group.html'], {\n attr: attributes.length > 0 ? ' ' + attributes.join(' ') : '',\n colspan: table._countColumnsShow\n }));\n var content = record.data[group.field];\n if (group.hasOwnProperty('render') && typeof group.render === 'function') {\n var renderContent = group.render(record);\n if (renderContent) {\n content = renderContent;\n }\n }\n recordElement.find(' > td').html(content);\n return recordElement;\n },\n /**\r\n * Сборка раскрывающейся строки\r\n * @param {object} table\r\n * @param {Array|string} content\r\n */\n renderExpand: function renderExpand(table, content) {\n if (_typeof(content) === 'object') {\n content = coreuiTableRender.renderComponents(table, content, 'record_expand_show');\n }\n var expandRecord = $(ejs.render(tpl['table-record-expand.html'], {\n colspan: table._countColumnsShow\n }));\n if (['string', 'number'].indexOf(_typeof(content)) >= 0) {\n expandRecord.find('td').html(content);\n } else if (Array.isArray(content)) {\n $.each(content, function (key, item) {\n if (['string', 'number'].indexOf(_typeof(item)) >= 0 || item instanceof HTMLElement || window.hasOwnProperty('jQuery') && item instanceof jQuery) {\n expandRecord.find('td').append(item);\n }\n });\n }\n return expandRecord;\n },\n /**\r\n * Сборка элемента управления\r\n * @param {object} table\r\n * @param {object} control\r\n * @private\r\n * @returns {HTMLElement|jQuery}\r\n */\n renderControl: function renderControl(table, control) {\n if (coreuiTableUtils.isObject(control)) {\n var controlElement = $(ejs.render(tpl['table-control.html'], {\n id: control.getId()\n }));\n controlElement.append(control.render());\n if (control.hasOwnProperty('initEvents') && typeof control.initEvents === 'function') {\n table.on('container_show', function () {\n control.initEvents();\n });\n }\n return controlElement;\n }\n },\n /**\r\n * Формирование контента компонента\r\n * @param {object} table\r\n * @param {object} components\r\n * @param {string} eventName\r\n * @return {Array}\r\n */\n renderComponents: function renderComponents(table, components, eventName) {\n var result = [];\n if (components instanceof Object) {\n if (!Array.isArray(components)) {\n components = [components];\n }\n for (var i = 0; i < components.length; i++) {\n if (typeof components[i] === 'string') {\n result.push(components[i]);\n } else if (!Array.isArray(components[i]) && components[i].hasOwnProperty('component') && components[i].component.substring(0, 6) === 'coreui') {\n var name = components[i].component.split('.')[1];\n if (CoreUI.hasOwnProperty(name) && coreuiTableUtils.isObject(CoreUI[name])) {\n var instance = CoreUI[name].create(components[i]);\n result.push(instance.render());\n if (eventName) {\n table.on(eventName, instance.initEvents, instance, true);\n }\n }\n }\n }\n }\n return result;\n }\n};\n\nvar coreuiTablePrivate = {\n /**\r\n * Инициализация колонок\r\n * @param {Object} table\r\n * @param {Array} columns\r\n * @private\r\n */\n initColumns: function initColumns(table, columns) {\n $.each(columns, function (key, column) {\n if (typeof column.type === 'undefined' || !coreuiTable$1.columns.hasOwnProperty(column.type)) {\n column.type = 'text';\n }\n if (!column.hasOwnProperty('show') || typeof column.show !== 'boolean') {\n column.show = true;\n }\n if (column.hasOwnProperty('fixed') && typeof column.fixed === 'string') {\n table._options.overflow = true;\n }\n var columnInstance = $.extend(true, {}, coreuiTable$1.columns[column.type]);\n columnInstance.init(table, column);\n table._columns.push(columnInstance);\n if (columnInstance.isShow()) {\n table._countColumnsShow++;\n }\n });\n },\n /**\r\n * Инициализация поисковых полей\r\n * @param {Object} table\r\n * @param {Array} searchControls\r\n * @private\r\n */\n initSearch: function initSearch(table, searchControls) {\n var options = table.getOptions();\n var searchValues = options.saveState && options.id ? coreuiTablePrivate.getStorageField(table.getId(), 'search') : null;\n $.each(searchControls, function (key, control) {\n if (!coreuiTableUtils.isObject(control)) {\n control = {};\n }\n if (!control.hasOwnProperty('type') || typeof control.type !== 'string' || !coreuiTable$1.search.hasOwnProperty(control.type)) {\n control.type = 'text';\n }\n if (options.saveState && options.id) {\n control.value = null;\n if (Array.isArray(searchValues) && control.hasOwnProperty('field')) {\n $.each(searchValues, function (key, search) {\n if (coreuiTableUtils.isObject(search) && search.hasOwnProperty('field') && search.hasOwnProperty('value') && search.field && search.field === control.field) {\n control.value = search.value;\n return false;\n }\n });\n }\n }\n var controlInstance = $.extend(true, {}, coreuiTable$1.search[control.type]);\n controlInstance.init(table, control);\n table._search.push(controlInstance);\n });\n },\n /**\r\n * Инициализация контролов и фильтров\r\n * @param {Object} table\r\n * @param {Array} rows\r\n * @param {string} position\r\n * @private\r\n */\n initControls: function initControls(table, rows, position) {\n var that = this;\n $.each(rows, function (key, row) {\n var type = 'in';\n var controlsLeft = [];\n var controlsCenter = [];\n var controlsRight = [];\n if (typeof row.type === 'string' && ['in', 'out'].indexOf(row.type.toLowerCase()) >= 0) {\n type = row.type.toLowerCase();\n }\n if (row.hasOwnProperty('left') && Array.isArray(row.left)) {\n $.each(row.left, function (key, control) {\n var instance = that.initControl(table, control);\n if (coreuiTableUtils.isObject(instance)) {\n controlsLeft.push(instance);\n }\n });\n }\n if (row.hasOwnProperty('center') && Array.isArray(row.center)) {\n $.each(row.center, function (key, control) {\n var instance = that.initControl(table, control);\n if (coreuiTableUtils.isObject(instance)) {\n controlsCenter.push(instance);\n }\n });\n }\n if (row.hasOwnProperty('right') && Array.isArray(row.right)) {\n $.each(row.right, function (key, control) {\n var instance = that.initControl(table, control);\n if (coreuiTableUtils.isObject(instance)) {\n controlsRight.push(instance);\n }\n });\n }\n if (controlsLeft.length > 0 || controlsCenter.length > 0 || controlsRight.length > 0) {\n table._controlsPositions[position].push({\n type: type,\n left: controlsLeft,\n center: controlsCenter,\n right: controlsRight\n });\n }\n });\n },\n /**\r\n * Инициализация контрола или фильтра\r\n * @param {Object} table\r\n * @param {object} control\r\n * @private\r\n */\n initControl: function initControl(table, control) {\n var instance = null;\n if (coreuiTableUtils.isObject(control) && typeof control.type === 'string') {\n if (coreuiTable$1.controls.hasOwnProperty(control.type)) {\n instance = $.extend(true, {}, coreuiTable$1.controls[control.type]);\n instance.init(table, control);\n table._controls.push(instance);\n } else if (control.type.indexOf('filter:') === 0) {\n var filterName = control.type.substring(7);\n if (coreuiTable$1.filters.hasOwnProperty(filterName)) {\n if (control.hasOwnProperty('field')) {\n var options = table.getOptions();\n if (options.saveState && options.id) {\n var filterValues = options.saveState && options.id ? coreuiTablePrivate.getStorageField(table.getId(), 'filters') : null;\n control.value = null;\n if (Array.isArray(filterValues)) {\n $.each(filterValues, function (key, filter) {\n if (coreuiTableUtils.isObject(filter) && filter.hasOwnProperty('field') && filter.hasOwnProperty('value') && filter.field && filter.field === control.field) {\n control.value = filter.value;\n return false;\n }\n });\n }\n }\n }\n instance = $.extend(true, {}, coreuiTable$1.filters[filterName]);\n instance.init(table, control);\n table._filters.push(instance);\n }\n }\n }\n return instance;\n },\n /**\r\n * Инициализация сортировки\r\n * @param {Object} table\r\n * @param {Array} sort\r\n * @private\r\n */\n initSort: function initSort(table, sort) {\n if (Array.isArray(sort) && sort.length > 0) {\n $.each(sort, function (key, sortField) {\n if (coreuiTableUtils.isObject(sortField) && sortField.hasOwnProperty('field') && sortField.hasOwnProperty('order') && typeof sortField.field === 'string' && typeof sortField.order === 'string' && sortField.field && sortField.order && ['asc', 'desc'].indexOf(sortField.order) >= 0) {\n table._sort.push({\n field: sortField.field,\n order: sortField.order\n });\n }\n });\n }\n },\n /**\r\n * Установка записей\r\n * @param {Object} table\r\n * @param {Array} records\r\n * @private\r\n */\n setRecords: function setRecords(table, records) {\n table._recordsIndex = 1;\n table._records = [];\n var that = this;\n $.each(records, function (key, record) {\n that.addRecord(table, record);\n });\n },\n /**\r\n * Добавление новой записи\r\n * @param {object} table\r\n * @param {object} data\r\n * @param {number} afterIndex\r\n * @return {object|null}\r\n * @private\r\n */\n addRecord: function addRecord(table, data, afterIndex) {\n if (coreuiTableUtils.isObject(data)) {\n data = $.extend(true, {}, data);\n var meta = data.hasOwnProperty('_meta') && coreuiTableUtils.isObject(data._meta) ? data._meta : null;\n if (meta) {\n delete data._meta;\n }\n var record = {\n index: table._recordsIndex++,\n data: data,\n show: true,\n meta: meta,\n seq: table._seq++\n };\n if (typeof afterIndex === 'number') {\n if (afterIndex === 0) {\n table._records.splice(0, 0, record);\n return record;\n } else {\n var index = null;\n $.each(table._records, function (key, record) {\n if (afterIndex === record.index) {\n index = key;\n return false;\n }\n });\n if (index !== null) {\n table._records.splice(index, 0, record);\n return record;\n }\n }\n } else {\n table._records.push(record);\n return record;\n }\n }\n return null;\n },\n /**\r\n * Добавление новой записи перед указанной\r\n * @param {object} table\r\n * @param {object} data\r\n * @param {number} index\r\n * @return {object|null}\r\n * @private\r\n */\n addRecordBefore: function addRecordBefore(table, data, index) {\n if (coreuiTableUtils.isObject(data) && typeof index === 'number') {\n data = $.extend(true, {}, data);\n var meta = data.hasOwnProperty('_meta') && coreuiTableUtils.isObject(data._meta) ? data._meta : null;\n if (meta) {\n delete data._meta;\n }\n var record = {\n index: table._recordsIndex++,\n data: data,\n show: true,\n meta: meta,\n seq: table._seq++\n };\n var issetKey = false;\n var keyBefore = null;\n $.each(table._records, function (key, record) {\n if (index === record.index) {\n issetKey = true;\n return false;\n }\n keyBefore = key;\n });\n if (issetKey && keyBefore) {\n table._records.splice(keyBefore, 0, record);\n return record;\n }\n }\n return null;\n },\n /**\r\n * Проверка подходит ли запись под поисковые данные\r\n * @param {Array} filters\r\n * @param {object} recordData\r\n * @return {boolean}\r\n * @private\r\n */\n isFilteredRecord: function isFilteredRecord(filters, recordData) {\n var isShow = true;\n $.each(filters, function (key, filter) {\n if (recordData.hasOwnProperty(filter.field) && ['string', 'number'].indexOf(_typeof(recordData[filter.field])) >= 0) {\n if (['string', 'number'].indexOf(_typeof(filter.value)) >= 0) {\n if (filter.hasOwnProperty('alg') && filter.alg === 'strict') {\n if (recordData[filter.field].toString().toLowerCase() != filter.value.toString().toLowerCase()) {\n isShow = false;\n return false;\n }\n } else if (recordData[filter.field].toString().toLowerCase().indexOf(filter.value.toString().toLowerCase()) < 0) {\n isShow = false;\n return false;\n }\n } else if (Array.isArray(filter.value)) {\n if (filter.value.indexOf(recordData[filter.field].toString()) < 0) {\n isShow = false;\n return false;\n }\n } else if (coreuiTableUtils.isObject(filter.value) && filter.value.hasOwnProperty('start') && filter.value.hasOwnProperty('end')) {\n var issetStart = ['string', 'number'].indexOf(_typeof(filter.value.start)) >= 0;\n var issetEnd = ['string', 'number'].indexOf(_typeof(filter.value.end)) >= 0;\n if (issetStart && issetEnd) {\n if (recordData[filter.field] < filter.value.start || filter.value.end < recordData[filter.field]) {\n isShow = false;\n return false;\n }\n } else if (issetStart) {\n if (filter.value.start > recordData[filter.field]) {\n isShow = false;\n return false;\n }\n } else if (issetEnd) {\n if (filter.value.end < recordData[filter.field]) {\n isShow = false;\n return false;\n }\n }\n }\n } else {\n isShow = false;\n return false;\n }\n });\n return isShow;\n },\n /**\r\n * Выполнения зарегистрированных функций в указанном событии\r\n * @param {object} table\r\n * @param {string} name\r\n * @param {Array} params\r\n * @private\r\n */\n _trigger: function _trigger(table, name, params) {\n params = params || [];\n if (table._events.hasOwnProperty(name) && table._events[name].length > 0) {\n for (var i = 0; i < table._events[name].length; i++) {\n var callback = table._events[name][i].callback;\n var context = table._events[name][i].context ? table._events[name][i].context : table;\n callback.apply(context, params);\n if (table._events[name][i].singleExec) {\n table._events[name].splice(i, 1);\n i--;\n }\n }\n }\n },\n /**\r\n * Сортировка записей по seq\r\n * @param {Array} records\r\n * @return {*}\r\n */\n sortRecordsBySeq: function sortRecordsBySeq(records) {\n return records.sort(function (a, b) {\n return a.seq - b.seq;\n });\n },\n /**\r\n * Сортировка записей по указанным полям\r\n * @param records\r\n * @param fields\r\n */\n sortRecordsByFields: function sortRecordsByFields(records, fields) {\n return records.sort(function (a, b) {\n for (var i = 0; i < fields.length; i++) {\n var issetAField = a.data.hasOwnProperty(fields[i].field);\n var issetBField = b.data.hasOwnProperty(fields[i].field);\n if (!issetAField && !issetBField) {\n return 0;\n } else if (!issetAField) {\n return 1;\n } else if (!issetBField) {\n return -1;\n }\n var aVal = a.data[fields[i].field];\n var bVal = b.data[fields[i].field];\n if (aVal === null || aVal === undefined || typeof aVal === \"function\") {\n aVal = '';\n } else if (_typeof(aVal) === 'object') {\n aVal = JSON.stringify(aVal);\n }\n if (bVal === null || bVal === undefined || typeof bVal === \"function\") {\n bVal = '';\n } else if (_typeof(bVal) === 'object') {\n bVal = JSON.stringify(bVal);\n }\n var val = aVal < bVal ? -1 : aVal > bVal ? 1 : 0;\n if (fields[i].order === \"desc\") {\n val = val * -1;\n }\n if (val !== 0) {\n return val;\n }\n }\n });\n },\n /**\r\n * Установка сортировки для указанных колонок\r\n * @param {object} table\r\n * @param {Array} sort\r\n */\n setColumnsSort: function setColumnsSort(table, sort) {\n var thead = coreuiTableElements.getTableThead(table.getId());\n $.each(table._columns, function (key, column) {\n var options = column.getOptions();\n if (options.hasOwnProperty('field') && options.hasOwnProperty('sortable') && typeof options.field === 'string' && options.sortable) {\n var sortColumn = null;\n if (Array.isArray(sort)) {\n $.each(sort, function (key, sortItem) {\n if (coreuiTableUtils.isObject(sortItem) && sortItem.hasOwnProperty('field') && sortItem.hasOwnProperty('order') && typeof sortItem.field === 'string' && typeof sortItem.order === 'string' && options.field === sortItem.field) {\n sortColumn = {\n field: sortItem.field,\n order: sortItem.order\n };\n }\n });\n }\n var columnElement = thead.find('[data-field=\"' + options.field + '\"]');\n columnElement.find('.coreui-table__column-sort').remove();\n if (sortColumn !== null) {\n if (sortColumn.order === 'asc') {\n columnElement.append('');\n } else {\n columnElement.append('');\n }\n }\n }\n });\n },\n /**\r\n * Получение данных из хранилища\r\n * @param {string} tableId\r\n * @return {object|null}\r\n */\n getStorage: function getStorage(tableId) {\n var storage = localStorage.getItem('coreui_table');\n try {\n if (typeof storage === 'string' && storage) {\n storage = JSON.parse(storage);\n if (coreuiTableUtils.isObject(storage)) {\n return tableId && typeof tableId === 'string' ? storage.hasOwnProperty(tableId) ? storage[tableId] : null : storage;\n }\n }\n return null;\n } catch (e) {\n return null;\n }\n },\n /**\r\n * Сохранение данных в хранилище\r\n * @param {string} tableId\r\n * @param {object|null} storage\r\n */\n setStorage: function setStorage(tableId, storage) {\n if (typeof tableId !== 'string' || !tableId) {\n return;\n }\n var storageAll = this.getStorage();\n if (coreuiTableUtils.isObject(storageAll)) {\n if (storageAll.hasOwnProperty(tableId)) {\n if (storage) {\n storageAll[tableId] = storage;\n } else {\n delete storageAll[tableId];\n }\n } else if (storage) {\n storageAll[tableId] = storage;\n }\n }\n localStorage.setItem('coreui_table', JSON.stringify(storageAll || {}));\n },\n /**\r\n * Получение поля из хранилища\r\n * @param tableId\r\n * @param field\r\n * @return {*|null}\r\n */\n getStorageField: function getStorageField(tableId, field) {\n var storage = this.getStorage(tableId) || {};\n return storage.hasOwnProperty(field) ? storage[field] : null;\n },\n /**\r\n * Сохранение поля в хранилище\r\n * @param tableId\r\n * @param field\r\n * @param data\r\n */\n setStorageField: function setStorageField(tableId, field, data) {\n var storage = this.getStorage(tableId) || {};\n if (data === null) {\n if (storage.hasOwnProperty(field)) {\n delete storage[field];\n }\n } else {\n storage[field] = data;\n }\n this.setStorage(tableId, storage);\n }\n};\n\nvar coreuiTableElements = {\n /**\r\n * Получение контейнера таблицы\r\n * @param {string} tableId\r\n * @return {jQuery}\r\n */\n getContainer: function getContainer(tableId) {\n return $('#coreui-table-' + tableId + ' > .coreui-table__container');\n },\n /**\r\n * Получение обертки таблицы\r\n * @param {string} tableId\r\n * @return {jQuery}\r\n */\n getLock: function getLock(tableId) {\n return $('#coreui-table-' + tableId + ' > .coreui-table__container > .coreui-table-lock');\n },\n /**\r\n * Получение обертки таблицы\r\n * @param {string} tableId\r\n * @return {jQuery}\r\n */\n getWrapper: function getWrapper(tableId) {\n return $('#coreui-table-' + tableId + ' > .coreui-table__container > .coreui-table__wrapper');\n },\n /**\r\n * Получение поискового контейнера\r\n * @param {string} tableId\r\n * @return {jQuery}\r\n */\n getSearchContainer: function getSearchContainer(tableId) {\n return $('#coreui-table-' + tableId + ' > .coreui-table__container > .coreui-table__wrapper > .coreui-table__search');\n },\n /**\r\n * Получение поискового контейнера\r\n * @param {string} tableId\r\n * @return {jQuery}\r\n */\n getColumnsContainer: function getColumnsContainer(tableId) {\n return $('#coreui-table-' + tableId + ' > .coreui-table__container > .coreui-table__wrapper > .coreui-table__columns');\n },\n /**\r\n * Получение контейнера поискового контрола\r\n * @param {string} tableId\r\n * @param {string} controlId\r\n * @return {jQuery}\r\n */\n getSearchControl: function getSearchControl(tableId, controlId) {\n return $('#coreui-table-' + tableId + ' > .coreui-table__container > .coreui-table__wrapper > .coreui-table__search .search-control-' + controlId);\n },\n /**\r\n * Получение контейнера контрола\r\n * @param {string} tableId\r\n * @param {string} controlId\r\n * @return {jQuery}\r\n */\n getControl: function getControl(tableId, controlId) {\n return $('#coreui-table-' + tableId + ' #coreui-table-control-' + controlId);\n },\n /**\r\n * Получение таблицы\r\n * @param {string} tableId\r\n * @return {jQuery}\r\n */\n getTable: function getTable(tableId) {\n return $('#coreui-table-' + tableId + ' > .coreui-table__container > .coreui-table__wrapper > table');\n },\n /**\r\n * Получение тела таблицы\r\n * @param {string} tableId\r\n * @return {jQuery}\r\n */\n getTableTbody: function getTableTbody(tableId) {\n return $('#coreui-table-' + tableId + ' > .coreui-table__container > .coreui-table__wrapper > table > tbody');\n },\n /**\r\n * Получение заголовков таблицы\r\n * @param {string} tableId\r\n * @return {jQuery}\r\n */\n getTableThead: function getTableThead(tableId) {\n return $('#coreui-table-' + tableId + ' > .coreui-table__container > .coreui-table__wrapper > table > thead');\n },\n /**\r\n * Получение ячеек с сортировкой по таблице\r\n * @param {string} tableId\r\n * @return {jQuery}\r\n */\n getTableSortable: function getTableSortable(tableId) {\n return $('#coreui-table-' + tableId + ' > .coreui-table__container > .coreui-table__wrapper > table > thead > tr > td.coreui-table__sortable');\n },\n /**\r\n * Получение строк записей\r\n * @param {string} tableId\r\n * @return {jQuery}\r\n */\n getTrRecords: function getTrRecords(tableId) {\n return $('#coreui-table-' + tableId + ' > .coreui-table__container > .coreui-table__wrapper > table > tbody > tr.coreui-table__record');\n },\n /**\r\n * Получение элемента строки по ключу\r\n * @param {string} tableId\r\n * @param {int} index\r\n * @return {jQuery}\r\n */\n getTrByIndex: function getTrByIndex(tableId, index) {\n return $('#coreui-table-' + tableId + ' > .coreui-table__container > .coreui-table__wrapper > table > tbody > tr[data-record-index=\"' + index + '\"]');\n },\n /**\r\n * Получение контента под строкой\r\n * @param {jQuery} recordElement\r\n * @return {jQuery}\r\n */\n getExpandRow: function getExpandRow(recordElement) {\n return recordElement.next().hasClass('coreui-table__record-expanded') ? recordElement.next() : null;\n },\n /**\r\n * Добавление контента под строкой\r\n * @param {object} table\r\n * @param {jQuery} recordElement\r\n * @param {Array|string} content\r\n * @return {jQuery}\r\n */\n addExpandRow: function addExpandRow(table, recordElement, content) {\n var expandRecord = coreuiTableRender.renderExpand(table, content, 'record_expand_show');\n recordElement.after(expandRecord);\n recordElement.next().show('fast');\n recordElement.addClass('record-expanded');\n var recordIndex = recordElement.data('record-index');\n coreuiTablePrivate._trigger(table, 'record_expand_show', [recordIndex]);\n },\n /**\r\n * Скрытие контента под строкой\r\n * @param {jQuery} recordExpanded\r\n * @return {jQuery}\r\n */\n hideExpandRow: function hideExpandRow(recordExpanded) {\n recordExpanded.hide('fast');\n },\n /**\r\n * Показ контента под строкой\r\n * @param {jQuery} recordExpanded\r\n * @return {jQuery}\r\n */\n showExpandRow: function showExpandRow(recordExpanded) {\n recordExpanded.show('fast');\n },\n /**\r\n * Удаление контента под строкой\r\n * @param {jQuery} recordExpanded\r\n * @return {jQuery}\r\n */\n removeExpandRow: function removeExpandRow(recordExpanded) {\n recordExpanded.hide('fast', function () {\n $(this).remove();\n });\n },\n /**\r\n * Получение выбранных на таблице элементов\r\n * @param {string} tableId\r\n * @return {Array}\r\n */\n getSelectedIndexes: function getSelectedIndexes(tableId) {\n var indexes = [];\n $('#coreui-table-' + tableId + ' > .coreui-table__container > .coreui-table__wrapper > table > tbody > tr.coreui-table__record > td.coreui-table__select_container > .coreui-table__select:checked').each(function (key, element) {\n indexes.push($(element).val());\n });\n return indexes;\n },\n /**\r\n * Получение выбранных на таблице элементов\r\n * @param {string} tableId\r\n * @return {Array}\r\n */\n getRowsSwitches: function getRowsSwitches(tableId) {\n return $('#coreui-table-' + tableId + ' > .coreui-table__container > .coreui-table__wrapper > table > tbody > tr.coreui-table__record > td.coreui-table__switch_container');\n },\n /**\r\n * Получение элементов выбора строк\r\n * @param {string} tableId\r\n * @return {Array}\r\n */\n getRowsSelects: function getRowsSelects(tableId) {\n return $('#coreui-table-' + tableId + ' > .coreui-table__container > .coreui-table__wrapper > table > tbody > tr.coreui-table__record > td.coreui-table__select_container');\n },\n /**\r\n * Получение элемента для выбора всех строк\r\n * @param {string} tableId\r\n * @return {Array}\r\n */\n getRowsSelectAll: function getRowsSelectAll(tableId) {\n return $('#coreui-table-' + tableId + ' > .coreui-table__container > .coreui-table__wrapper > table > thead > tr > td .coreui-table__select-all');\n },\n /**\r\n * Получение элементов для раскрытия ячеек\r\n * @param {string} tableId\r\n * @return {Array}\r\n */\n getNoWrapToggles: function getNoWrapToggles(tableId) {\n return $('#coreui-table-' + tableId + ' > .coreui-table__container > .coreui-table__wrapper > table > tbody > tr > td.coreui_table__no-wrap > i.toggle');\n },\n /**\r\n * Выделение строки в таблице\r\n * @param {jQuery} tr\r\n */\n selectTr: function selectTr(tr) {\n tr.addClass('table-primary');\n $('.coreui-table__select', tr).prop('checked', true);\n },\n /**\r\n * Выделение всех строк в таблице\r\n * @param {string} tableId\r\n */\n selectTrAll: function selectTrAll(tableId) {\n var tableContainer = '#coreui-table-' + tableId + ' > .coreui-table__container > .coreui-table__wrapper > table';\n $(tableContainer + ' > thead > tr > td > .coreui-table__select-all').prop('checked', true);\n $(tableContainer + ' > tbody > tr.coreui-table__record').addClass('table-primary');\n $(tableContainer + ' > tbody > tr.coreui-table__record > td > .coreui-table__select').prop('checked', true);\n },\n /**\r\n * Снятие выделение строки в таблице\r\n * @param {jQuery} tr\r\n */\n unselectTr: function unselectTr(tr) {\n $(tr).removeClass('table-primary');\n $('.coreui-table__select', tr).prop('checked', false);\n },\n /**\r\n * Снятие выделение со всех строк в таблице\r\n * @param {string} tableId\r\n */\n unselectTrAll: function unselectTrAll(tableId) {\n var tableContainer = '#coreui-table-' + tableId + ' > .coreui-table__container > .coreui-table__wrapper > table';\n $(tableContainer + ' > thead > tr > td > .coreui-table__select-all').prop('checked', false);\n $(tableContainer + ' > tbody > tr.coreui-table__record').removeClass('table-primary');\n $(tableContainer + ' > tbody > tr.coreui-table__record > td.coreui-table__select_container > .coreui-table__select').prop('checked', false);\n },\n /**\r\n * Фиксация колонок слева\r\n * @param {string} tableId\r\n */\n fixedColsLeft: function fixedColsLeft(tableId) {\n var tableWrapper = '#coreui-table-' + tableId + ' > .coreui-table__container > .coreui-table__wrapper';\n var colOffset = 0;\n $(tableWrapper + ' > table > thead > tr:last-child > td.coreui-table__fixed_left').each(function () {\n var index = $(this).index() + 1;\n if (index !== 1) {\n $(tableWrapper + ' > table > thead > tr:last-child > td:nth-child(' + index + ')').css('left', colOffset + 'px');\n $(tableWrapper + ' > table > tbody > tr > td:nth-child(' + index + ')')\n //.addClass('coreui-table__fixed_left')\n .css('left', colOffset + 'px');\n }\n colOffset += $(this).outerWidth();\n });\n },\n /**\r\n * Фиксация колонок справа\r\n * @param {string} tableId\r\n */\n fixedColsRight: function fixedColsRight(tableId) {\n var tableWrapper = '#coreui-table-' + tableId + ' > .coreui-table__container > .coreui-table__wrapper';\n var colOffset = 0;\n $($(tableWrapper + ' > table > thead > tr:last-child > td.coreui-table__fixed_right').get().reverse()).each(function () {\n var index = $(this).index() + 1;\n if (index !== 1) {\n $(tableWrapper + ' > table > thead > tr:last-child > td:nth-child(' + index + ')').css('right', colOffset + 'px');\n $(tableWrapper + ' > table > tbody > tr > td:nth-child(' + index + ')')\n //.addClass('coreui-table__fixed_left')\n .css('right', colOffset + 'px');\n }\n colOffset += $(this).outerWidth();\n });\n }\n};\n\nvar coreuiTableInstance = {\n _options: {\n id: null,\n \"class\": '',\n primaryKey: 'id',\n lang: 'en',\n langList: {},\n width: null,\n minWidth: null,\n maxWidth: null,\n height: null,\n minHeight: null,\n naxHeight: null,\n overflow: false,\n page: 1,\n recordsPerPage: 25,\n theadTop: 0,\n saveState: false,\n noBorder: false,\n noWrap: false,\n noWrapToggle: false,\n columnHeaders: true,\n recordsRequest: {\n method: 'GET',\n url: null,\n // '/mod/index/orders/?page=[page]'\n params: {\n page: 'page',\n count: 'count',\n start: 'start',\n end: 'end',\n sort: 'sort',\n search: 'search',\n filter: 'filter'\n }\n },\n group: {\n field: null,\n attr: {},\n render: null\n },\n onClick: null,\n onClickUrl: null,\n sort: [],\n header: [],\n footer: [],\n columnGroupsHeader: [],\n search: {\n labelWidth: 200,\n controls: []\n },\n columns: [],\n columnGroupsFooter: [],\n records: []\n },\n _id: '',\n _page: 1,\n _recordsIndex: 1,\n _recordsPerPage: 25,\n _recordsTotal: 0,\n _recordsNumber: 1,\n _seq: 1,\n _isRecordsRequest: false,\n _countColumnsShow: 0,\n _records: [],\n _sort: [],\n _columns: [],\n _search: [],\n _filters: [],\n _controls: [],\n _controlsPositions: {\n header: [],\n footer: []\n },\n _events: {},\n /**\r\n * Инициализация\r\n * @param {object} options\r\n * @private\r\n */\n _init: function _init(options) {\n this._options = $.extend(true, {}, this._options, options);\n this._events = {};\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (this._options.page > 0) {\n this._page = this._options.page;\n }\n if (this._options.recordsPerPage > 0) {\n this._recordsPerPage = this._options.recordsPerPage;\n }\n this._isRecordsRequest = this._options.hasOwnProperty('recordsRequest') && coreuiTableUtils.isObject(this._options.recordsRequest) && this._options.recordsRequest.hasOwnProperty('url') && typeof this._options.recordsRequest.url === 'string' && this._options.recordsRequest.url !== '' && this._options.recordsRequest.url !== '#';\n if (this._isRecordsRequest) {\n if (!this._options.recordsRequest.hasOwnProperty('method') || typeof this._options.recordsRequest.method !== 'string') {\n this._options.recordsRequest.method = 'GET';\n }\n } else if (Array.isArray(this._options.records)) {\n coreuiTablePrivate.setRecords(this, this._options.records);\n }\n\n // Инициализация колонок\n if (_typeof(this._options.columns) === 'object' && Array.isArray(this._options.columns) && this._options.columns.length > 0) {\n coreuiTablePrivate.initColumns(this, this._options.columns);\n }\n\n // Инициализация поисковых полей\n if (coreuiTableUtils.isObject(this._options.search) && _typeof(this._options.search.controls) === 'object' && Array.isArray(this._options.search.controls) && this._options.search.controls.length > 0) {\n coreuiTablePrivate.initSearch(this, this._options.search.controls);\n }\n\n // Инициализация контролов и фильтров\n if (this._options.hasOwnProperty('header') && Array.isArray(this._options.header) && this._options.header.length > 0) {\n coreuiTablePrivate.initControls(this, this._options.header, 'header');\n }\n if (this._options.hasOwnProperty('footer') && Array.isArray(this._options.footer) && this._options.footer.length > 0) {\n coreuiTablePrivate.initControls(this, this._options.footer, 'footer');\n }\n\n // Сортировка\n if (this._options.saveState && this._options.id) {\n var sort = coreuiTablePrivate.getStorageField(this.getId(), 'sort');\n if (Array.isArray(sort) && sort.length > 0) {\n coreuiTablePrivate.initSort(this, sort);\n if (this._records.length > 0) {\n this._records = coreuiTablePrivate.sortRecordsByFields(this._records, this._sort);\n }\n }\n } else {\n if (this._options.hasOwnProperty('sort') && Array.isArray(this._options.sort) && this._options.sort.length > 0) {\n coreuiTablePrivate.initSort(this, this._options.sort);\n }\n }\n },\n /**\r\n * Инициализация событий таблицы\r\n */\n initEvents: function initEvents() {\n var that = this;\n\n // Показ строк\n this.on('records_show', function () {\n // Переход по ссылке\n if (typeof that._options.onClickUrl === 'string' && that._options.onClickUrl) {\n coreuiTableElements.getTrRecords(that.getId()).click(function () {\n var recordKey = $(this).data('record-index');\n var record = that.getRecordByIndex(recordKey);\n if (!record) {\n return;\n }\n var url = that._options.onClickUrl;\n $.each(record.data, function (field, value) {\n var fieldQuote = field.replace(/([^\\w\\d])/g, '\\\\$1');\n url = url.replace(new RegExp('\\\\[' + fieldQuote + '\\\\]', 'g'), value);\n });\n if (url && url !== '#') {\n location.href = url;\n }\n });\n }\n\n // Событие нажатия на строку\n if (typeof that._options.onClick === 'function') {\n coreuiTableElements.getTrRecords(that.getId()).click(function (event) {\n var recordKey = $(this).data('record-index');\n var record = that.getRecordByIndex(recordKey);\n if (!record) {\n return;\n }\n that._options.onClick(event, record);\n });\n }\n\n // Раскрытие строки\n coreuiTableElements.getNoWrapToggles(that.getId()).click(function (event) {\n event.cancelBubble = true;\n event.preventDefault();\n var parent = $(this).parent();\n if (parent.hasClass('shown')) {\n $(this).removeClass('bi-caret-up-fill');\n $(this).addClass('bi-caret-down-fill');\n parent.removeClass('shown');\n } else {\n $(this).removeClass('bi-caret-down-fill');\n $(this).addClass('bi-caret-up-fill');\n parent.addClass('shown');\n }\n });\n\n // Фиксация колонок\n coreuiTableElements.fixedColsLeft(that.getId());\n coreuiTableElements.fixedColsRight(that.getId());\n });\n\n // Показ таблицы\n this.on('table_show', function () {\n var sortableColumns = coreuiTableElements.getTableSortable(that.getId());\n if (sortableColumns[0]) {\n sortableColumns.click(function () {\n var field = $(this).data('field');\n if (field) {\n var sorting = [];\n var currentOrder = null;\n $.each(that._sort, function (key, sortField) {\n if (field === sortField.field) {\n currentOrder = sortField.order;\n return false;\n }\n });\n if (currentOrder === null) {\n sorting.push({\n field: field,\n order: 'asc'\n });\n } else if (currentOrder === 'asc') {\n sorting.push({\n field: field,\n order: 'desc'\n });\n }\n if (sorting.length === 0) {\n that.sortDefault();\n } else {\n that.sortFields(sorting);\n }\n }\n });\n }\n });\n\n // События смены состояния\n if (this._options.saveState && this._options.id) {\n this.on('records_sort', function () {\n coreuiTablePrivate.setStorageField(that.getId(), 'sort', that._sort);\n });\n this.on('search_change', function () {\n coreuiTablePrivate.setStorageField(that.getId(), 'search', that.getSearchData());\n });\n this.on('filters_change', function () {\n coreuiTablePrivate.setStorageField(that.getId(), 'filters', that.getFilterData());\n });\n this.on('columns_change', function () {\n var columns = [];\n $.each(that._columns, function (key, column) {\n var columnOptions = column.getOptions();\n columns.push({\n field: columnOptions.field,\n isShow: column.isShow()\n });\n });\n coreuiTablePrivate.setStorageField(that.getId(), 'columns', columns);\n });\n }\n coreuiTablePrivate._trigger(this, 'table_show', [this]);\n coreuiTablePrivate._trigger(this, 'container_show');\n\n // Вызов события показа строк\n if (!this._isRecordsRequest) {\n coreuiTablePrivate._trigger(this, 'records_show', [this]);\n }\n },\n /**\r\n * Получение идентификатора таблицы\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Получение опций таблицы\r\n * @returns {*}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n *\r\n * @param element\r\n * @returns {*}\r\n */\n render: function render(element) {\n var that = this;\n var widthSizes = [];\n var heightSizes = [];\n var options = this.getOptions();\n var render = {\n headersOut: [],\n headersIn: [],\n footersIn: [],\n footersOut: []\n };\n this._recordsTotal = this._records.length;\n if (options.width > 0) {\n var unit = typeof options.width === 'number' ? 'px' : '';\n widthSizes.push('width:' + options.width + unit);\n }\n if (options.minWidth > 0) {\n var _unit = typeof options.minWidth === 'number' ? 'px' : '';\n widthSizes.push('min-width:' + options.minWidth + _unit);\n }\n if (options.maxWidth > 0) {\n var _unit2 = typeof options.maxWidth === 'number' ? 'px' : '';\n widthSizes.push('max-width:' + options.maxWidth + _unit2);\n options.overflow = true;\n }\n if (options.height > 0) {\n var _unit3 = typeof options.height === 'number' ? 'px' : '';\n heightSizes.push('height:' + options.height + _unit3);\n }\n if (options.minHeight > 0) {\n var _unit4 = typeof options.minHeight === 'number' ? 'px' : '';\n heightSizes.push('min-height:' + options.minHeight + _unit4);\n }\n if (options.maxHeight > 0) {\n var _unit5 = typeof options.maxHeight === 'number' ? 'px' : '';\n heightSizes.push('max-height:' + options.maxHeight + _unit5);\n options.overflow = true;\n }\n\n // Верхние элементы управления\n if (Array.isArray(this._controlsPositions.header) && this._controlsPositions.header.length > 0) {\n $.each(this._controlsPositions.header, function (key, header) {\n var controlsLeft = [];\n var controlsCenter = [];\n var controlsRight = [];\n if (Array.isArray(header.left) && header.left.length > 0) {\n $.each(header.left, function (key, control) {\n var controlRender = coreuiTableRender.renderControl(that, control);\n if (controlRender) {\n controlsLeft.push(controlRender);\n }\n });\n }\n if (Array.isArray(header.center) && header.center.length > 0) {\n $.each(header.center, function (key, control) {\n var controlRender = coreuiTableRender.renderControl(that, control);\n if (controlRender) {\n controlsCenter.push(controlRender);\n }\n });\n }\n if (Array.isArray(header.right) && header.right.length > 0) {\n $.each(header.right, function (key, control) {\n var controlRender = coreuiTableRender.renderControl(that, control);\n if (controlRender) {\n controlsRight.push(controlRender);\n }\n });\n }\n if (controlsLeft.length > 0 || controlsCenter.length > 0 || controlsRight.length > 0) {\n if (header.type === 'in') {\n var headerControls = $(ejs.render(tpl['table-controls-header.html'], {\n controlsLeft: controlsLeft,\n controlsCenter: controlsCenter,\n controlsRight: controlsRight\n }));\n if (controlsLeft.length > 0) {\n $.each(controlsLeft, function (key, control) {\n headerControls.find('.coreui-table__controls_left').append(control);\n });\n }\n if (controlsCenter.length > 0) {\n $.each(controlsCenter, function (key, control) {\n headerControls.find('.coreui-table__controls_center').append(control);\n });\n }\n if (controlsRight.length > 0) {\n $.each(controlsRight, function (key, control) {\n headerControls.find('.coreui-table__controls_right').append(control);\n });\n }\n render.headersIn.push(headerControls);\n } else {\n var _headerControls = $(ejs.render(tpl['table-controls-header-out.html'], {\n controlsLeft: controlsLeft,\n controlsCenter: controlsCenter,\n controlsRight: controlsRight\n }));\n if (controlsLeft.length > 0) {\n $.each(controlsLeft, function (key, control) {\n _headerControls.find('.coreui-table__controls_left').append(control);\n });\n }\n if (controlsCenter.length > 0) {\n $.each(controlsCenter, function (key, control) {\n _headerControls.find('.coreui-table__controls_center').append(control);\n });\n }\n if (controlsRight.length > 0) {\n $.each(controlsRight, function (key, control) {\n _headerControls.find('.coreui-table__controls_right').append(control);\n });\n }\n render.headersOut.push(_headerControls);\n }\n }\n });\n }\n\n // Нижние элементы управления\n if (Array.isArray(this._controlsPositions.footer) && this._controlsPositions.footer.length > 0) {\n $.each(this._controlsPositions.footer, function (key, footer) {\n var controlsLeft = [];\n var controlsCenter = [];\n var controlsRight = [];\n if (Array.isArray(footer.left) && footer.left.length > 0) {\n $.each(footer.left, function (key, control) {\n var controlRender = coreuiTableRender.renderControl(that, control);\n if (controlRender) {\n controlsLeft.push(controlRender);\n }\n });\n }\n if (Array.isArray(footer.center) && footer.center.length > 0) {\n $.each(footer.center, function (key, control) {\n var controlRender = coreuiTableRender.renderControl(that, control);\n if (controlRender) {\n controlsCenter.push(controlRender);\n }\n });\n }\n if (Array.isArray(footer.right) && footer.right.length > 0) {\n $.each(footer.right, function (key, control) {\n var controlRender = coreuiTableRender.renderControl(that, control);\n if (controlRender) {\n controlsRight.push(controlRender);\n }\n });\n }\n if (controlsLeft.length > 0 || controlsCenter.length > 0 || controlsRight.length > 0) {\n if (footer.type === 'in') {\n var footerControls = $(ejs.render(tpl['table-controls-footer.html'], {\n controlsLeft: controlsLeft,\n controlsCenter: controlsCenter,\n controlsRight: controlsRight\n }));\n if (controlsLeft.length > 0) {\n $.each(controlsLeft, function (key, control) {\n footerControls.find('.coreui-table__controls_left').append(control);\n });\n }\n if (controlsCenter.length > 0) {\n $.each(controlsCenter, function (key, control) {\n footerControls.find('.coreui-table__controls_center').append(control);\n });\n }\n if (controlsRight.length > 0) {\n $.each(controlsRight, function (key, control) {\n footerControls.find('.coreui-table__controls_right').append(control);\n });\n }\n render.footersIn.push(footerControls);\n } else {\n var _footerControls = $(ejs.render(tpl['table-controls-footer-out.html'], {\n controlsLeft: controlsLeft,\n controlsCenter: controlsCenter,\n controlsRight: controlsRight\n }));\n if (controlsLeft.length > 0) {\n $.each(controlsLeft, function (key, control) {\n _footerControls.find('.coreui-table__controls_left').append(control);\n });\n }\n if (controlsCenter.length > 0) {\n $.each(controlsCenter, function (key, control) {\n _footerControls.find('.coreui-table__controls_center').append(control);\n });\n }\n if (controlsRight.length > 0) {\n $.each(controlsRight, function (key, control) {\n _footerControls.find('.coreui-table__controls_right').append(control);\n });\n }\n render.footersOut.push(_footerControls);\n }\n }\n });\n }\n\n // Загрузка записей\n if (this._isRecordsRequest) {\n this.on('container_show', function () {\n that.load(options.recordsRequest.url, options.recordsRequest.method);\n });\n }\n var classes = [];\n if (options.hasOwnProperty('noBorder') && typeof options.noBorder === 'boolean' && options.noBorder) {\n classes.push('coreui-table__no_border');\n }\n var tableElement = coreuiTableRender.renderTable(this);\n var containerElement = $(ejs.render(tpl['table-wrapper.html'], {\n id: this._id,\n lang: this.getLang(),\n classes: classes.length > 0 ? ' ' + classes.join(' ') : '',\n widthSizes: widthSizes,\n heightSizes: heightSizes,\n recordsTotal: this._recordsTotal,\n overflow: !!options.overflow\n }));\n if (render.headersOut.length > 0) {\n containerElement.prepend(render.headersOut);\n }\n if (render.headersIn.length > 0) {\n containerElement.find('.coreui-table__container').prepend(render.headersIn);\n }\n if (render.footersIn.length > 0) {\n containerElement.find('.coreui-table__container').append(render.footersIn);\n }\n if (render.footersOut.length > 0) {\n containerElement.append(render.footersOut);\n }\n containerElement.find('.coreui-table__wrapper').html(tableElement);\n if (element === undefined) {\n return containerElement;\n }\n\n // Dom element\n var domElement = null;\n if (typeof element === 'string') {\n domElement = document.getElementById(element);\n } else if (element instanceof HTMLElement) {\n domElement = element;\n }\n if (domElement) {\n $(domElement).html(containerElement);\n this.initEvents();\n }\n },\n /**\r\n * Блокировка таблицы\r\n */\n lock: function lock() {\n var container = coreuiTableElements.getContainer(this.getId());\n if (container[0] && !container.find('.coreui-table-lock')[0]) {\n var html = ejs.render(tpl['table-loader.html'], {\n lang: this.getLang()\n });\n container.prepend(html);\n }\n },\n /**\r\n * Разблокировка таблицы\r\n */\n unlock: function unlock() {\n coreuiTableElements.getLock(this.getId()).hide(50, function () {\n $(this).remove();\n });\n },\n /**\r\n * Загрузка строк\r\n * @param {string} url\r\n * @param {string} method\r\n */\n load: function load(url, method) {\n this.lock();\n var that = this;\n var params = {};\n if (url.match(/\\[page\\]/)) {\n url = url.replace(/\\[page\\]/g, this._page);\n } else {\n var paramPage = coreuiTableUtils.isObject(this._options.recordsRequest.params) && this._options.recordsRequest.params.hasOwnProperty('page') ? this._options.recordsRequest.params.page : 'page';\n params[paramPage] = this._page;\n }\n if (url.match(/\\[count\\]/)) {\n url = url.replace(/\\[count\\]/g, this._recordsPerPage);\n } else {\n var paramCount = coreuiTableUtils.isObject(this._options.recordsRequest.params) && this._options.recordsRequest.params.hasOwnProperty('count') ? this._options.recordsRequest.params.count : 'count';\n params[paramCount] = this._recordsPerPage;\n }\n if (url.match(/\\[start\\]/)) {\n url = url.replace(/\\[start\\]/g, (this._page - 1) * this._recordsPerPage + 1);\n } else {\n var paramStart = coreuiTableUtils.isObject(this._options.recordsRequest.params) && this._options.recordsRequest.params.hasOwnProperty('start') ? this._options.recordsRequest.params.start : 'start';\n params[paramStart] = (this._page - 1) * this._recordsPerPage + 1;\n }\n if (url.match(/\\[end\\]/)) {\n url = url.replace(/\\[end\\]/g, (this._page - 1) * this._recordsPerPage + Number(this._recordsPerPage));\n } else {\n var paramEnd = coreuiTableUtils.isObject(this._options.recordsRequest.params) && this._options.recordsRequest.params.hasOwnProperty('end') ? this._options.recordsRequest.params.end : 'end';\n params[paramEnd] = (this._page - 1) * this._recordsPerPage + Number(this._recordsPerPage);\n }\n var searchData = this.getSearchData();\n var filterData = this.getFilterData();\n if (searchData.length > 0) {\n var paramSearch = coreuiTableUtils.isObject(this._options.recordsRequest.params) && this._options.recordsRequest.params.hasOwnProperty('search') && typeof this._options.recordsRequest.params.search === 'string' ? this._options.recordsRequest.params.search : 'search';\n params[paramSearch] = searchData;\n }\n if (filterData.length > 0) {\n var paramFilters = coreuiTableUtils.isObject(this._options.recordsRequest.params) && this._options.recordsRequest.params.hasOwnProperty('filter') && typeof this._options.recordsRequest.params.filter === 'string' ? this._options.recordsRequest.params.filter : 'filter';\n params[paramFilters] = filterData;\n }\n if (this._sort.length > 0) {\n var paramSort = coreuiTableUtils.isObject(this._options.recordsRequest.params) && this._options.recordsRequest.params.hasOwnProperty('sort') && typeof this._options.recordsRequest.params.sort === 'string' ? this._options.recordsRequest.params.sort : 'sort';\n params[paramSort] = this._sort;\n }\n $.ajax({\n url: url,\n method: method || 'GET',\n dataType: \"json\",\n data: params,\n beforeSend: function beforeSend(xhr) {\n coreuiTablePrivate._trigger(that, 'records_load_start', [that, xhr]);\n },\n success: function success(result) {\n if (result.hasOwnProperty('records') && _typeof(result.records) === 'object' && Array.isArray(result.records)) {\n var total = result.hasOwnProperty('total') && coreuiTableUtils.isNumeric(result.total) ? result.total : null;\n that.setRecords(result.records, total);\n } else {\n that.setRecords([]);\n }\n },\n error: function error(xhr, textStatus, errorThrown) {\n that.setRecords([]);\n coreuiTablePrivate._trigger(that, 'records_load_error', [that, xhr, textStatus, errorThrown]);\n },\n complete: function complete(xhr, textStatus) {\n that.unlock();\n coreuiTablePrivate._trigger(that, 'records_load_end', [that, xhr, textStatus]);\n }\n });\n },\n /**\r\n * Перезагрузка записей в таблице\r\n */\n reload: function reload() {\n if (this._isRecordsRequest) {\n this.load(this._options.recordsRequest.url, this._options.recordsRequest.method);\n }\n },\n /**\r\n * Пересоздание тела таблицы\r\n */\n refresh: function refresh() {\n var table = coreuiTableRender.renderTable(this);\n coreuiTableElements.getTable(this.getId()).replaceWith(table);\n coreuiTablePrivate._trigger(this, 'table_show', [this]);\n coreuiTablePrivate._trigger(this, 'records_show', [this]);\n },\n /**\r\n * Установка общего количества записей на странице\r\n * @param recordsPerPage\r\n */\n setPageSize: function setPageSize(recordsPerPage) {\n this._recordsPerPage = recordsPerPage;\n coreuiTablePrivate._trigger(this, 'page_size_update');\n },\n /**\r\n * Выбор всех записей в таблице\r\n */\n selectAll: function selectAll() {\n coreuiTableElements.selectTrAll(this.getId());\n coreuiTablePrivate._trigger(this, 'record_select_all');\n },\n /**\r\n * Отмена выбор всех записей в таблице\r\n */\n unselectAll: function unselectAll() {\n coreuiTableElements.unselectTrAll(this.getId());\n coreuiTablePrivate._trigger(this, 'record_unselect_all');\n },\n /**\r\n * Выбор записи в таблице\r\n * @param {string} id\r\n */\n selectRecord: function selectRecord(id) {\n var record = this.getRecordById(id);\n if (!record) {\n return;\n }\n var tr = coreuiTableElements.getTrByIndex(this.getId(), record.index);\n if (tr.length === 0) {\n return;\n }\n coreuiTableElements.selectTr(tr);\n coreuiTablePrivate._trigger(this, 'record_select', [record]);\n },\n /**\r\n * Отмена выбора записи в таблице\r\n * @param {string} id\r\n */\n unselectRecord: function unselectRecord(id) {\n var record = this.getRecordById(id);\n if (!record) {\n return;\n }\n var tr = coreuiTableElements.getTrByIndex(this.getId(), record.index);\n if (!tr) {\n return;\n }\n coreuiTableElements.unselectTr(tr);\n coreuiTablePrivate._trigger(this, 'record_unselect', [record.data]);\n },\n /**\r\n * Получение выбранных id\r\n * @return {array}\r\n */\n getSelectedRecordsId: function getSelectedRecordsId() {\n var records = [];\n var that = this;\n var field = this._options.primaryKey;\n $.each(coreuiTableElements.getSelectedIndexes(this.getId()), function (key, index) {\n var record = that.getRecordByIndex(index);\n if (!record || !record.data.hasOwnProperty(field)) {\n return;\n }\n records.push(record.data[field]);\n });\n return records;\n },\n /**\r\n * Получение выбранных записей\r\n * @return {array}\r\n */\n getSelectedRecords: function getSelectedRecords() {\n var records = [];\n var that = this;\n $.each(coreuiTableElements.getSelectedIndexes(this.getId()), function (key, index) {\n var record = that.getRecordByIndex(index);\n if (!record) {\n return;\n }\n records.push(record);\n });\n return records;\n },\n /**\r\n * Получение записи по id\r\n * @param id\r\n * @return {object|null}\r\n */\n getRecord: function getRecord(id) {\n var record = this.getRecordById(id);\n if (!record) {\n return null;\n }\n return record.data;\n },\n /**\r\n * Получение записей\r\n */\n getRecords: function getRecords() {\n var records = [];\n $.each(this._records, function (key, record) {\n records.push($.extend(true, {}, record));\n });\n return records;\n },\n /**\r\n * Получение данных из существующих записей\r\n * @return {Array}\r\n */\n getData: function getData() {\n var data = [];\n $.each(this._records, function (key, record) {\n data.push($.extend(true, {}, record.data));\n });\n return data;\n },\n /**\r\n * Переход к предыдущей странице\r\n */\n prevPage: function prevPage() {\n if (this._page > 1) {\n this._page--;\n this.reload();\n }\n },\n /**\r\n * Переход к следующей странице\r\n * @return {array}\r\n */\n nextPage: function nextPage() {\n var totalPages = this._recordsTotal > 0 && this._recordsPerPage > 0 ? Math.ceil(this._recordsTotal / this._recordsPerPage) : 1;\n if (this._page < totalPages) {\n this._page++;\n this.reload();\n }\n },\n /**\r\n * Переход к указанной странице\r\n */\n goPage: function goPage(page) {\n if (page >= 1) {\n this._page = page;\n this.reload();\n }\n },\n /**\r\n * Регистрация функции на событие\r\n * @param {Array|string} eventName\r\n * @param {function} callback\r\n * @param {*} context\r\n * @param {boolean} singleExec\r\n */\n on: function on(eventName, callback, context, singleExec) {\n var eventNames = [];\n if (Array.isArray(eventName)) {\n $.each(eventName, function (key, name) {\n if (typeof name === 'string' && name) {\n eventNames.push(name);\n }\n });\n } else if (typeof eventName === 'string' && eventName) {\n eventNames.push(eventName);\n } else {\n return;\n }\n var that = this;\n $.each(eventNames, function (key, name) {\n if (!Array.isArray(that._events[name])) {\n that._events[name] = [];\n }\n that._events[name].push({\n context: context ? context : that,\n callback: callback,\n singleExec: !!singleExec\n });\n });\n },\n /**\r\n * Получение переводов текущего языка\r\n * @return {object}\r\n */\n getLang: function getLang() {\n return $.extend(true, {}, this._options.langList);\n },\n /**\r\n * Установка видимых колонок, не указанные колонки будут скрыты\r\n * @param {Array} columns\r\n */\n setColumnsShow: function setColumnsShow(columns) {\n if (!Array.isArray(columns)) {\n return;\n }\n $.each(this._columns, function (key, column) {\n var options = column.getOptions();\n if (options.hasOwnProperty('field') && typeof options.field === 'string') {\n column.setShow(columns.indexOf(options.field) >= 0);\n }\n });\n coreuiTablePrivate._trigger(this, 'columns_change');\n },\n /**\r\n * Получение поисковых данных\r\n * @return {*[]}\r\n */\n getSearchData: function getSearchData() {\n var searchData = [];\n $.each(this._search, function (key, control) {\n var options = control.getOptions();\n if (options.hasOwnProperty('field') && typeof options.field === 'string' && options.field) {\n var value = control.getValue();\n if (value !== null) {\n searchData.push({\n field: options.field,\n value: value,\n alg: control.hasOwnProperty('getAlgorithm') && typeof control.getAlgorithm === 'function' ? control.getAlgorithm() : null\n });\n }\n }\n });\n return searchData;\n },\n /**\r\n * Получение данных из фильтров\r\n * @return {*[]}\r\n */\n getFilterData: function getFilterData() {\n var filterData = [];\n $.each(this._filters, function (key, control) {\n var options = control.getOptions();\n if (options.hasOwnProperty('field') && typeof options.field === 'string' && options.field) {\n var value = control.getValue();\n if (value !== null) {\n filterData.push({\n field: options.field,\n value: value,\n alg: control.hasOwnProperty('getAlgorithm') && typeof control.getAlgorithm === 'function' ? control.getAlgorithm() : null\n });\n }\n }\n });\n return filterData;\n },\n /**\r\n * Поиск по таблице с использованием данных из поиска и фильтров\r\n */\n searchRecords: function searchRecords() {\n var searchData = this.getSearchData();\n var filterData = this.getFilterData();\n if (this._isRecordsRequest) {\n this.load(this._options.recordsRequest.url, this._options.recordsRequest.method);\n } else {\n $.each(this._records, function (index, record) {\n var isShow = true;\n if (searchData.length > 0) {\n isShow = coreuiTablePrivate.isFilteredRecord(searchData, record.data);\n }\n if (isShow && filterData.length > 0) {\n isShow = coreuiTablePrivate.isFilteredRecord(filterData, record.data);\n }\n record.show = isShow;\n });\n this.refresh();\n }\n coreuiTablePrivate._trigger(this, 'filters_change', [filterData]);\n coreuiTablePrivate._trigger(this, 'search_change', [searchData]);\n },\n /**\r\n * Очистка поисковых данных\r\n */\n searchClear: function searchClear() {\n $.each(this._search, function (key, search) {\n search.setValue(null);\n });\n this.searchRecords();\n },\n /**\r\n * Очистка поисковых данных в фильтрах\r\n */\n filtersClear: function filtersClear() {\n $.each(this._filters, function (key, filter) {\n filter.setValue(null);\n });\n this.searchRecords();\n },\n /**\r\n * Получение записи по индексу\r\n * @param {string|number} index\r\n * @return {object|null}\r\n */\n getRecordByIndex: function getRecordByIndex(index) {\n if (['string', 'number'].indexOf(_typeof(index)) < 0 || index === '') {\n return null;\n }\n index = Number(index);\n if (index <= 0) {\n return null;\n }\n var record = null;\n $.each(this._records, function (key, recordItem) {\n if (recordItem.index === index) {\n record = {\n index: recordItem.index,\n data: $.extend(true, {}, recordItem.data),\n meta: recordItem.meta ? $.extend(true, {}, recordItem.meta) : null\n };\n return false;\n }\n });\n return record;\n },\n /**\r\n * Получение записи по id\r\n * @param {string} id\r\n * @return {object|null}\r\n */\n getRecordById: function getRecordById(id) {\n return this.getRecordByField(this._options.primaryKey, id);\n },\n /**\r\n * Получение записи по полю\r\n * @param {string} field\r\n * @param {string|number} value\r\n * @return {object|null}\r\n */\n getRecordByField: function getRecordByField(field, value) {\n if (['string', 'number'].indexOf(_typeof(field)) < 0 || field === '') {\n return null;\n }\n var record = null;\n $.each(this._records, function (key, recordItem) {\n if (recordItem.data.hasOwnProperty(field) && recordItem.data[field] === value) {\n record = $.extend(true, {}, recordItem);\n return false;\n }\n });\n return record;\n },\n /**\r\n * Получение контрола по его id\r\n * @param {string} id\r\n * @return {object}\r\n */\n getControlById: function getControlById(id) {\n var result = null;\n $.each(this._controls, function (key, control) {\n if (control.hasOwnProperty('getId') && typeof control.getId === 'function' && control.getId() === id) {\n result = control;\n return false;\n }\n });\n return result;\n },\n /**\r\n * Получение контрола поиска по его id\r\n * @param {string} id\r\n * @return {object}\r\n */\n getSearchControlById: function getSearchControlById(id) {\n var result = null;\n $.each(this._search, function (key, search) {\n if (search.hasOwnProperty('getId') && typeof search.getId === 'function' && search.getId() === id) {\n result = search;\n return false;\n }\n });\n return result;\n },\n /**\r\n * Сортировка по полям\r\n * @param {Array} sorting\r\n */\n sortFields: function sortFields(sorting) {\n if (!Array.isArray(sorting)) {\n return;\n }\n var that = this;\n this._sort = [];\n $.each(sorting, function (key, sort) {\n if (!coreuiTableUtils.isObject(sort) || !sort.hasOwnProperty('field') || !sort.hasOwnProperty('order') || typeof sort.field !== 'string' || typeof sort.order !== 'string' || !sort.field || !sort.order) {\n return;\n }\n var columnSortable = false;\n $.each(that._columns, function (key, column) {\n var options = column.getOptions();\n if (options.hasOwnProperty('field') && options.hasOwnProperty('sortable') && typeof options.field === 'string' && options.field === sort.field && options.sortable) {\n columnSortable = true;\n return false;\n }\n });\n if (columnSortable) {\n that._sort.push({\n field: sort.field,\n order: sort.order\n });\n }\n });\n if (this._sort.length >= 0) {\n if (this._isRecordsRequest) {\n this.load(this._options.recordsRequest.url, this._options.recordsRequest.method);\n coreuiTablePrivate.setColumnsSort(this, this._sort);\n } else {\n this.records = coreuiTablePrivate.sortRecordsByFields(this._records, this._sort);\n this.refresh();\n }\n }\n coreuiTablePrivate._trigger(this, 'records_sort', [this]);\n },\n /**\r\n * Сортировка по умолчанию\r\n */\n sortDefault: function sortDefault() {\n this._sort = [];\n if (this._isRecordsRequest) {\n this.load(this._options.recordsRequest.url, this._options.recordsRequest.method);\n coreuiTablePrivate.setColumnsSort(this);\n } else {\n this.records = coreuiTablePrivate.sortRecordsBySeq(this._records);\n this.refresh();\n }\n coreuiTablePrivate._trigger(this, 'records_sort', [this]);\n },\n /**\r\n * Удаление строки из таблицы по индексу\r\n * @param index\r\n */\n removeRecordByIndex: function removeRecordByIndex(index) {\n var recordKey = null;\n $.each(this._records, function (key, recordItem) {\n if (recordItem.index === index) {\n recordKey = key;\n return false;\n }\n });\n if (recordKey !== null && recordKey >= 0) {\n this._records.splice(recordKey, 1);\n var tr = coreuiTableElements.getTrByIndex(this.getId(), index);\n if (tr.length >= 0) {\n tr.fadeOut('fast', function () {\n tr.remove();\n });\n }\n this._recordsNumber--;\n }\n },\n /**\r\n * Добавление строки в таблицу после строки с индексом\r\n * @param {object} recordData\r\n * @param {number} index\r\n */\n addRecordAfterIndex: function addRecordAfterIndex(recordData, index) {\n var tr = coreuiTableElements.getTrByIndex(this.getId(), index);\n if (tr.length >= 0) {\n var record = coreuiTablePrivate.addRecord(this, recordData, index);\n if (record) {\n tr.after(coreuiTableRender.renderRecord(this, record));\n this._recordsNumber++;\n }\n }\n },\n /**\r\n * Добавление строки в таблицу перед строкой с индексом\r\n * @param {object} recordData\r\n * @param {number} index\r\n */\n addRecordBeforeIndex: function addRecordBeforeIndex(recordData, index) {\n var tr = coreuiTableElements.getTrByIndex(this.getId(), index);\n if (tr.length >= 0) {\n var record = coreuiTablePrivate.addRecordBefore(this, recordData, index);\n if (record) {\n tr.before(coreuiTableRender.renderRecord(this, record));\n this._recordsNumber++;\n }\n }\n },\n /**\r\n * Добавление строки в начало таблицы\r\n * @param {object} recordData\r\n */\n addRecordFirst: function addRecordFirst(recordData) {\n var tbody = coreuiTableElements.getTableTbody(this.getId());\n if (tbody.length >= 0) {\n var record = coreuiTablePrivate.addRecord(this, recordData, 0);\n tbody.prepend(coreuiTableRender.renderRecord(this, record));\n this._recordsNumber++;\n }\n },\n /**\r\n * Добавление строки в конец таблицы\r\n * @param {object} recordData\r\n */\n addRecordLast: function addRecordLast(recordData) {\n var tbody = coreuiTableElements.getTableTbody(this.getId());\n if (tbody.length >= 0) {\n var record = coreuiTablePrivate.addRecord(this, recordData);\n tbody.append(coreuiTableRender.renderRecord(this, record));\n this._recordsNumber++;\n }\n },\n /**\r\n * Показ указанных записей в таблице\r\n * @param {Array} records\r\n * @param {number} total\r\n */\n setRecords: function setRecords(records, total) {\n if (!Array.isArray(records)) {\n return;\n }\n this._recordsTotal = coreuiTableUtils.isNumeric(total) ? parseInt(total) : records.length;\n coreuiTablePrivate.setRecords(this, records);\n if (records.length > 0) {\n this._recordsNumber = this._page === 1 ? 1 : (this._page - 1) * this._recordsPerPage + 1;\n }\n var recordsElements = coreuiTableRender.renderRecords(this, this._records);\n var tableBody = coreuiTableElements.getTableTbody(this.getId());\n tableBody.html('');\n $.each(recordsElements, function (key, recordElement) {\n tableBody.append(recordElement);\n });\n coreuiTablePrivate._trigger(this, 'records_show', [this]);\n },\n /**\r\n * Получение количества строк\r\n * @return {number}\r\n */\n getRecordsCount: function getRecordsCount() {\n var count = 0;\n if (this._isRecordsRequest) {\n count = this._recordsTotal;\n } else {\n $.each(this._records, function (key, record) {\n if (record.show) {\n count++;\n }\n });\n }\n return count;\n },\n /**\r\n * Раскрытие / скрытие дополнительных данных строки\r\n * @param {number} recordIndex\r\n * @param {HTMLElement|jQuery|string|Array|function} content\r\n * @param {boolean} isRebuild - true default\r\n */\n expandRecordContent: function expandRecordContent(recordIndex, content, isRebuild) {\n var recordElement = coreuiTableElements.getTrByIndex(this.getId(), recordIndex);\n var recordExpanded = coreuiTableElements.getExpandRow(recordElement);\n if (recordElement.hasClass('record-expanded')) {\n if (recordExpanded) {\n if (isRebuild === undefined || isRebuild) {\n coreuiTableElements.removeExpandRow(recordExpanded);\n } else {\n coreuiTableElements.hideExpandRow(recordExpanded);\n }\n }\n recordElement.removeClass('record-expanded');\n coreuiTablePrivate._trigger(this, 'record_expand_hide', [recordIndex]);\n } else {\n if (recordExpanded) {\n coreuiTableElements.showExpandRow(recordExpanded);\n recordElement.addClass('record-expanded');\n coreuiTablePrivate._trigger(this, 'record_expand_show', [recordIndex]);\n } else {\n if (typeof content === 'function') {\n var callbackResult = content();\n if (callbackResult instanceof Promise) {\n var that = this;\n callbackResult.then(function (result) {\n coreuiTableElements.addExpandRow(that, recordElement, result);\n })[\"catch\"](function () {\n coreuiTableElements.addExpandRow(that, recordElement, '');\n });\n } else {\n coreuiTableElements.addExpandRow(this, recordElement, callbackResult);\n }\n } else {\n coreuiTableElements.addExpandRow(this, recordElement, content);\n }\n }\n }\n },\n /**\r\n * Раскрытие / скрытие дополнительных данных строки\r\n * @param {number} recordIndex\r\n * @param {string} url\r\n * @param {boolean} isRebuild\r\n */\n expandRecordUrl: function expandRecordUrl(recordIndex, url, isRebuild) {\n var that = this;\n this.expandRecordContent(recordIndex, function () {\n that.lock();\n return new Promise(function (resolve, reject) {\n $.ajax({\n method: 'get',\n url: url,\n success: function success(response, textStatus, xhr) {\n var result = response;\n if (typeof response === 'string') {\n if (String(xhr.getResponseHeader('Content-Type')).indexOf('application/json') === 0) {\n try {\n result = JSON.parse(response);\n } catch (e) {\n console.warn(e);\n }\n }\n }\n resolve(result);\n },\n error: function error(xhr, textStatus, errorThrown) {\n reject(xhr, textStatus, errorThrown);\n },\n complete: function complete(xhr, textStatus) {\n that.unlock();\n }\n });\n });\n }, isRebuild);\n }\n};\n\nvar coreuiTable$1 = {\n columns: {},\n controls: {},\n filters: {},\n search: {},\n lang: {},\n _instances: {},\n _settings: {\n lang: 'en'\n },\n /**\r\n * @param {object} options\r\n * @returns {CoreUI.table.instance}\r\n */\n create: function create(options) {\n var instance = $.extend(true, {}, coreuiTableInstance);\n if (!options.hasOwnProperty('lang') || typeof options.lang !== 'string') {\n options.lang = this.getSetting('lang');\n }\n var langList = this.lang.hasOwnProperty(options.lang) ? this.lang[options.lang] : {};\n options.langList = options.hasOwnProperty('langList') && coreuiTableUtils.isObject(options.langList) ? $.extend(true, {}, langList, options.langList) : langList;\n instance._init(options instanceof Object ? options : {});\n var tableId = instance.getId();\n this._instances[tableId] = instance;\n return instance;\n },\n /**\r\n * @param {string} id\r\n * @returns {CoreUI.table.instance|null}\r\n */\n get: function get(id) {\n if (!this._instances.hasOwnProperty(id)) {\n return null;\n }\n if (!$('#coreui-table-' + id)[0]) {\n delete this._instances[id];\n return null;\n }\n return this._instances[id];\n },\n /**\r\n * Установка настроек\r\n * @param {object} settings\r\n */\n setSettings: function setSettings(settings) {\n this._settings = $.extend(true, {}, this._settings, settings);\n },\n /**\r\n * Получение значения настройки\r\n * @param {string} name\r\n */\n getSetting: function getSetting(name) {\n var value = null;\n if (this._settings.hasOwnProperty(name)) {\n value = this._settings[name];\n }\n return value;\n }\n};\n\ncoreuiTable$1.lang.ru = {\n \"emptyRecords\": \"Нет записей\",\n \"loading\": \"Загрузка...\",\n \"total\": \"Всего\",\n \"all\": \"Все\",\n \"complete\": \"Применить\",\n \"search\": \"Искать\",\n \"clear\": \"Очистить\"\n};\n\ncoreuiTable$1.lang.en = {\n \"emptyRecords\": \"No records\",\n \"loading\": \"Loading...\",\n \"total\": \"Total\",\n \"all\": \"All\",\n \"complete\": \"Complete\",\n \"search\": \"Search\",\n \"clear\": \"Clear\"\n};\n\ncoreuiTable$1.controls.link = {\n _id: null,\n _table: null,\n _options: {\n id: null,\n type: 'link',\n href: null,\n content: null,\n onClick: null,\n attr: null\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend({}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n },\n /**\r\n * Инициализация событий связанных с элементом управления\r\n */\n initEvents: function initEvents() {\n var that = this;\n if (typeof this._options.onClick === 'function' || typeof this._options.onClick === 'string') {\n var control = coreuiTableElements.getControl(this._table.getId(), this.getId());\n $('a', control).click(function (event) {\n if (typeof that._options.onClick === 'function') {\n return that._options.onClick(event, that._table);\n } else if (typeof that._options.onClick === 'string') {\n var func = new Function('event', 'table', 'control', that._options.onClick);\n func(event, that._table, that);\n }\n });\n }\n },\n /**\r\n * Получение ID элемента управления\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Формирование контента для размещения на странице\r\n * @returns {string}\r\n */\n render: function render() {\n var attributes = [];\n if (_typeof(this._options.attr) === 'object') {\n $.each(this._options.attr, function (name, value) {\n attributes.push(name + '=\"' + value + '\"');\n });\n }\n return ejs.render(tpl['controls/link.html'], {\n href: this._options.href,\n content: this._options.content,\n attr: attributes.length > 0 ? ' ' + attributes.join(' ') : ''\n });\n }\n};\n\ncoreuiTable$1.controls.button = {\n _id: null,\n _table: null,\n _options: {\n id: null,\n type: 'button',\n content: null,\n onClick: null,\n attr: {\n \"class\": 'btn btn-secondary'\n }\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend({}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n },\n /**\r\n * Инициализация событий связанных с элементом управления\r\n */\n initEvents: function initEvents() {\n var that = this;\n if (typeof this._options.onClick === 'function' || typeof this._options.onClick === 'string') {\n var control = coreuiTableElements.getControl(this._table.getId(), this.getId());\n $('button', control).click(function (event) {\n if (typeof that._options.onClick === 'function') {\n that._options.onClick(event, that._table, that);\n } else if (typeof that._options.onClick === 'string') {\n var func = new Function('event', 'table', 'control', that._options.onClick);\n func(event, that._table, that);\n }\n });\n }\n },\n /**\r\n * Получение ID элемента управления\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Формирование контента для размещения на странице\r\n * @returns {string}\r\n */\n render: function render() {\n var attributes = [];\n if (coreuiTableUtils.isObject(this._options.attr)) {\n $.each(this._options.attr, function (name, value) {\n attributes.push(name + '=\"' + value + '\"');\n });\n }\n return ejs.render(tpl['controls/button.html'], {\n content: this._options.content,\n attr: attributes.length > 0 ? ' ' + attributes.join(' ') : ''\n });\n }\n};\n\ncoreuiTable$1.controls.dropdown = {\n _id: null,\n _table: null,\n _options: {\n id: null,\n type: 'dropdown',\n content: null,\n items: null,\n attr: {\n \"class\": 'btn btn-primary'\n }\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend({}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (Array.isArray(this._options.items)) {\n $.each(this._options.items, function (key, item) {\n if (coreuiTableUtils.isObject(item) && typeof item.type === 'string') {\n item.id = coreuiTableUtils.hashCode();\n }\n });\n }\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Инициализация событий связанных с элементом управления\r\n */\n initEvents: function initEvents() {\n var that = this;\n var options = this.getOptions();\n if (Array.isArray(options.items)) {\n $.each(options.items, function (key, item) {\n if (coreuiTableUtils.isObject(item) && typeof item.type === 'string') {\n if (item.type === 'button') {\n if (item.hasOwnProperty('content') && item.hasOwnProperty('onClick') && ['string', 'function'].indexOf(_typeof(item.onClick)) >= 0 && typeof item.content === 'string') {\n var control = coreuiTableElements.getControl(that._table.getId(), that.getId());\n $('button#btn-dropdown-' + item.id, control).click(function (event) {\n if (typeof item.onClick === 'function') {\n item.onClick(event, that._table, that);\n } else if (typeof item.onClick === 'string') {\n var func = new Function('event', 'table', 'control', item.onClick);\n func(event, that._table, that);\n }\n });\n }\n }\n }\n });\n }\n },\n /**\r\n * Получение ID элемента управления\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Формирование контента для размещения на странице\r\n * @returns {string}\r\n */\n render: function render() {\n var options = this.getOptions();\n var items = [];\n var attributes = [];\n if (Array.isArray(options.items)) {\n $.each(options.items, function (key, item) {\n if (coreuiTableUtils.isObject(item) && typeof item.type === 'string') {\n if (item.type === 'link') {\n if (item.hasOwnProperty('link') && item.hasOwnProperty('content') && typeof item.link === 'string' && typeof item.content === 'string') {\n items.push({\n type: 'link',\n link: item.link,\n content: item.content\n });\n }\n } else if (item.type === 'button') {\n if (item.hasOwnProperty('content') && item.hasOwnProperty('onClick') && typeof item.content === 'string' && ['string', 'function'].indexOf(_typeof(item.onClick)) >= 0) {\n items.push({\n type: 'button',\n id: item.id,\n content: item.content\n });\n }\n } else if (item.type === 'divider') {\n items.push({\n type: 'divider'\n });\n }\n }\n });\n }\n if (coreuiTableUtils.isObject(options.attr)) {\n if (options.attr.hasOwnProperty('class') && ['string', 'number'].indexOf(_typeof(options.attr[\"class\"])) >= 0) {\n options.attr[\"class\"] += ' dropdown-toggle';\n }\n if (options.attr.hasOwnProperty('type')) {\n delete options.attr.type;\n }\n if (options.attr.hasOwnProperty('id')) {\n delete options.attr.id;\n }\n if (options.attr.hasOwnProperty('data-bs-toggle')) {\n delete options.attr['data-bs-toggle'];\n }\n $.each(options.attr, function (name, value) {\n attributes.push(name + '=\"' + value + '\"');\n });\n }\n return ejs.render(tpl['controls/dropdown.html'], {\n content: options.content,\n position: options.hasOwnProperty('position') && typeof options.position === 'string' ? options.position : 'end',\n attr: attributes.length > 0 ? ' ' + attributes.join(' ') : '',\n items: items\n });\n }\n};\n\ncoreuiTable$1.controls.button_group = {\n _id: null,\n _table: null,\n _options: {\n id: null,\n type: 'button_group',\n content: null,\n onClick: null,\n attr: null\n },\n _link: {\n attr: {\n \"class\": 'btn btn-secondary'\n }\n },\n _button: {\n attr: {\n \"class\": 'btn btn-secondary'\n }\n },\n _dropdown: {\n attr: {\n \"class\": 'btn btn-secondary'\n }\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend({}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (Array.isArray(this._options.buttons)) {\n $.each(this._options.buttons, function (key, button) {\n if (coreuiTableUtils.isObject(button) && typeof button.type === 'string') {\n button.id = coreuiTableUtils.hashCode();\n if (button.type === 'dropdown' && Array.isArray(button.items)) {\n $.each(button.items, function (key, item) {\n if (coreuiTableUtils.isObject(item) && typeof item.type === 'string') {\n item.id = coreuiTableUtils.hashCode();\n }\n });\n }\n }\n });\n }\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Инициализация событий связанных с элементом управления\r\n */\n initEvents: function initEvents() {\n var that = this;\n var options = this.getOptions();\n if (Array.isArray(options.buttons)) {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n $.each(options.buttons, function (key, button) {\n if (coreuiTableUtils.isObject(button) && typeof button.type === 'string') {\n if (button.type === 'button') {\n if (button.hasOwnProperty('content') && button.hasOwnProperty('onClick') && ['string', 'function'].indexOf(_typeof(button.onClick)) >= 0 && typeof button.content === 'string') {\n $('button#btn-' + button.id, control).click(function (event) {\n if (typeof button.onClick === 'function') {\n button.onClick(event, that._table, that);\n } else if (typeof button.onClick === 'string') {\n var func = new Function('event', 'table', 'control', button.onClick);\n func(event, that._table, that);\n }\n });\n }\n } else if (button.type === 'dropdown' && Array.isArray(button.items)) {\n $.each(button.items, function (key, item) {\n if (coreuiTableUtils.isObject(item) && typeof item.type === 'string') {\n if (item.hasOwnProperty('content') && item.hasOwnProperty('onClick') && ['string', 'function'].indexOf(_typeof(item.onClick)) >= 0 && typeof item.content === 'string') {\n $('button#btn-dropdown-' + item.id, control).click(function (event) {\n if (typeof item.onClick === 'function') {\n item.onClick(event, that._table, that);\n } else if (typeof item.onClick === 'string') {\n var func = new Function('event', 'table', 'control', item.onClick);\n func(event, that._table, that);\n }\n });\n }\n }\n });\n }\n }\n });\n }\n },\n /**\r\n * Получение ID элемента управления\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Формирование контента для размещения на странице\r\n * @returns {string}\r\n */\n render: function render() {\n var options = this.getOptions();\n var buttons = [];\n var that = this;\n if (Array.isArray(options.buttons)) {\n $.each(options.buttons, function (key, button) {\n if (coreuiTableUtils.isObject(button) && typeof button.type === 'string') {\n if (button.type === 'link') {\n if (button.hasOwnProperty('link') && button.hasOwnProperty('content') && typeof button.link === 'string' && typeof button.content === 'string') {\n var attributes = [];\n if (coreuiTableUtils.isObject(button.attr)) {\n button.attr = {};\n }\n if (button.attr.hasOwnProperty('href')) {\n delete button.attr.href;\n }\n if (!button.attr.hasOwnProperty('class')) {\n button.attr[\"class\"] = that._link.attr[\"class\"];\n }\n $.each(button.attr, function (name, value) {\n attributes.push(name + '=\"' + value + '\"');\n });\n buttons.push({\n type: 'link',\n link: button.link,\n content: button.content,\n attr: attributes\n });\n }\n } else if (button.type === 'button') {\n if (button.hasOwnProperty('content') && button.hasOwnProperty('onClick') && typeof button.content === 'string' && ['string', 'function'].indexOf(_typeof(button.onClick)) >= 0) {\n var _attributes = [];\n if (coreuiTableUtils.isObject(button.attr)) {\n button.attr = {};\n }\n if (button.attr.hasOwnProperty('type')) {\n delete button.attr.type;\n }\n if (button.attr.hasOwnProperty('id')) {\n delete button.attr.id;\n }\n if (!button.attr.hasOwnProperty('class')) {\n button.attr[\"class\"] = that._button.attr[\"class\"];\n }\n $.each(button.attr, function (name, value) {\n _attributes.push(name + '=\"' + value + '\"');\n });\n buttons.push({\n type: 'button',\n link: button.link,\n id: button.id,\n content: button.content,\n attr: _attributes\n });\n }\n } else if (button.type === 'dropdown') {\n if (Array.isArray(button.items)) {\n var _attributes2 = [];\n var items = [];\n $.each(button.items, function (key, item) {\n if (coreuiTableUtils.isObject(item) && typeof item.type === 'string') {\n if (item.type === 'link') {\n if (item.hasOwnProperty('link') && item.hasOwnProperty('content') && typeof item.link === 'string' && typeof item.content === 'string') {\n items.push({\n type: 'link',\n link: item.link,\n content: item.content\n });\n }\n } else if (item.type === 'button') {\n if (item.hasOwnProperty('content') && item.hasOwnProperty('onClick') && typeof item.content === 'string' && ['string', 'function'].indexOf(_typeof(item.onClick)) >= 0) {\n items.push({\n type: 'button',\n id: item.id,\n content: item.content\n });\n }\n } else if (item.type === 'divider') {\n items.push({\n type: 'divider'\n });\n }\n }\n });\n if (coreuiTableUtils.isObject(button.attr)) {\n button.attr = {};\n }\n if (button.attr.hasOwnProperty('type')) {\n delete button.attr.type;\n }\n if (button.attr.hasOwnProperty('id')) {\n delete button.attr.id;\n }\n if (!button.attr.hasOwnProperty('class')) {\n button.attr[\"class\"] = that._dropdown.attr[\"class\"];\n }\n if (button.attr.hasOwnProperty('class') && ['string', 'number'].indexOf(_typeof(button.attr[\"class\"])) >= 0) {\n button.attr[\"class\"] += ' dropdown-toggle';\n }\n $.each(button.attr, function (name, value) {\n _attributes2.push(name + '=\"' + value + '\"');\n });\n buttons.push({\n type: 'dropdown',\n content: button.content,\n position: button.hasOwnProperty('position') && typeof button.position === 'string' ? button.position : 'end',\n attr: _attributes2,\n items: items\n });\n }\n }\n }\n });\n }\n return ejs.render(tpl['controls/button_group.html'], {\n buttons: buttons\n });\n }\n};\n\ncoreuiTable$1.controls.custom = {\n _id: null,\n _table: null,\n _options: {\n id: null,\n type: 'custom',\n content: null\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend({}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n },\n /**\r\n * Инициализация событий связанных с элементом управления\r\n */\n initEvents: function initEvents() {},\n /**\r\n * Получение ID элемента управления\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Формирование контента для размещения на странице\r\n * @returns {string|HTMLElement|jQuery}\r\n */\n render: function render() {\n if (typeof this._options.content === 'string') {\n return this._options.content;\n } else if (typeof this._options.content === 'function') {\n return this._options.content();\n }\n }\n};\n\ncoreuiTable$1.controls.page_size = {\n _id: null,\n _table: null,\n _options: {\n id: null,\n type: 'page_size',\n attr: {\n \"class\": 'form-select'\n },\n list: [25, 50, 100, 1000]\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n if (options.hasOwnProperty('attr') && coreuiTableUtils.isObject(options.attr)) {\n options.attr = coreuiTableUtils.mergeAttr(this._options.attr, options.attr);\n }\n this._options = $.extend({}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (!Array.isArray(this._options.list)) {\n this._options.list = [];\n }\n if (this._options.list.indexOf(this._table._recordsPerPage) < 0) {\n this._options.list.unshift(this._table._recordsPerPage);\n }\n },\n /**\r\n * Инициализация событий связанных с элементом управления\r\n */\n initEvents: function initEvents() {\n var that = this;\n var control = coreuiTableElements.getControl(this._table.getId(), this.getId());\n var selectPageSize = $('select', control);\n selectPageSize.change(function () {\n that._table._page = 1;\n that._table.setPageSize(Number(selectPageSize.val()));\n that._table.reload();\n });\n this._table.on('page_size_update', function () {\n selectPageSize.val(that._table._recordsPerPage);\n });\n },\n /**\r\n * Получение ID элемента управления\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Формирование контента для размещения на странице\r\n * @returns {string}\r\n */\n render: function render() {\n var attributes = [];\n if (coreuiTableUtils.isObject(this._options.attr)) {\n $.each(this._options.attr, function (name, value) {\n attributes.push(name + '=\"' + value + '\"');\n });\n }\n return ejs.render(tpl['controls/page-size.html'], {\n recordsPerPageList: this._options.list,\n recordsPerPage: this._table._recordsPerPage,\n attr: attributes.length > 0 ? ' ' + attributes.join(' ') : '',\n lang: this._table.getLang()\n });\n }\n};\n\ncoreuiTable$1.controls.page_jump = {\n _id: null,\n _table: null,\n _options: {\n id: null,\n type: 'page_jump',\n attr: {\n \"class\": 'input-group'\n }\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n if (options.hasOwnProperty('attr') && coreuiTableUtils.isObject(options.attr)) {\n options.attr = coreuiTableUtils.mergeAttr(this._options.attr, options.attr);\n }\n this._options = $.extend({}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n },\n /**\r\n * Инициализация событий связанных с элементом управления\r\n */\n initEvents: function initEvents() {\n var that = this;\n var control = coreuiTableElements.getControl(this._table.getId(), this.getId());\n var input = $('input', control);\n var button = $('button', control);\n if (button[0]) {\n button.click(function () {\n that._table.goPage(input.val());\n });\n input.keyup(function (event) {\n if (event.key === 'Enter' || event.keyCode === 13) {\n that._table.goPage(input.val());\n }\n });\n }\n },\n /**\r\n * Получение ID элемента управления\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Формирование контента для размещения на странице\r\n * @returns {string}\r\n */\n render: function render() {\n var attributes = [];\n if (coreuiTableUtils.isObject(this._options.attr)) {\n $.each(this._options.attr, function (name, value) {\n attributes.push(name + '=\"' + value + '\"');\n });\n }\n return ejs.render(tpl['controls/page-jump.html'], {\n recordsPerPageList: this._options.list,\n recordsPerPage: this._table._recordsPerPage,\n attr: attributes.length > 0 ? ' ' + attributes.join(' ') : '',\n lang: this._table.getLang()\n });\n }\n};\n\ncoreuiTable$1.controls.pages = {\n _id: null,\n _table: null,\n _options: {\n show: {\n prev: true,\n next: true\n },\n count: 3,\n attr: {\n \"class\": 'pagination mb-0'\n }\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n if (options.hasOwnProperty('attr') && coreuiTableUtils.isObject(options.attr)) {\n options.attr = coreuiTableUtils.mergeAttr(this._options.attr, options.attr);\n }\n this._options = $.extend({}, this._options, options);\n this._table = table;\n this._id = coreuiTableUtils.hashCode();\n },\n /**\r\n * Инициализация событий связанных с элементом управления\r\n */\n initEvents: function initEvents() {\n var that = this;\n var control = coreuiTableElements.getControl(this._table.getId(), this.getId());\n this._initEvents();\n this._table.on('records_show', function () {\n control.html(that.render());\n that._initEvents();\n });\n },\n /**\r\n * Получение ID элемента управления\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Формирование контента для размещения на странице\r\n * @returns {string}\r\n */\n render: function render() {\n var attributes = [];\n var showPrev = !!this._options.show.prev;\n var showNext = !!this._options.show.next;\n var showDividerStart = false;\n var showDividerEnd = false;\n var showPageFirst = false;\n var showPageLast = false;\n var pages = [];\n var pagesTotal = this._table._recordsTotal > 0 && this._table._recordsPerPage > 0 ? Math.ceil(this._table._recordsTotal / this._table._recordsPerPage) : 1;\n if (this._table._recordsTotal > 0 && this._options.count > 0 && coreuiTableUtils.isNumeric(this._options.count)) {\n var count = Math.min(this._options.count, pagesTotal);\n var countHalf = Math.max(0, Math.floor(count / 2));\n if (count % 2 === 0) {\n countHalf -= 1;\n }\n var start = this._table._page > 1 ? Math.max(1, this._table._page - countHalf) : this._table._page;\n if (start + count > pagesTotal) {\n start = pagesTotal - (count - 1);\n }\n for (var i = 0; i < count; i++) {\n pages.push(start + i);\n }\n } else {\n if (this._options.count > 0 && this._table._page > 1) {\n pages.push(this._table._page);\n }\n }\n if (pages.length > 0) {\n if (pages[0] >= 2) {\n showPageFirst = true;\n }\n if (pages[0] >= 3) {\n showDividerStart = true;\n }\n if (pages[pages.length - 1] + 1 < pagesTotal) {\n showDividerEnd = true;\n }\n if (pages[pages.length - 1] < pagesTotal) {\n showPageLast = true;\n }\n }\n if (coreuiTableUtils.isObject(this._options.attr)) {\n $.each(this._options.attr, function (name, value) {\n attributes.push(name + '=\"' + value + '\"');\n });\n }\n return ejs.render(tpl['controls/pages.html'], {\n currentPage: this._table._page,\n isActivePrev: this._table._page > 1,\n isActiveNext: this._table._page < pagesTotal,\n pagesTotal: pagesTotal,\n showPrev: showPrev,\n showPageFirst: showPageFirst,\n showDividerStart: showDividerStart,\n pages: pages,\n showDividerEnd: showDividerEnd,\n showPageLast: showPageLast,\n showNext: showNext,\n attr: attributes.length > 0 ? ' ' + attributes.join(' ') : '',\n lang: this._table.getLang()\n });\n },\n /**\r\n * Инициализация событий на элементах\r\n * @private\r\n */\n _initEvents: function _initEvents() {\n var that = this;\n var control = coreuiTableElements.getControl(this._table.getId(), this.getId());\n var btnPrev = $('.coreui-table__page_prev', control);\n if (btnPrev[0]) {\n if (that._table._page <= 1) {\n btnPrev.addClass('disabled');\n }\n btnPrev.click(function () {\n if (that._table._page > 1) {\n that._table.prevPage();\n }\n });\n }\n var btnNext = $('.coreui-table__page_next', control);\n if (btnNext[0]) {\n btnNext.click(function () {\n that._table.nextPage();\n });\n }\n var pages = $('.coreui-table__page', control);\n if (pages[0]) {\n pages.click(function () {\n var page = Number($.trim($(this).text()));\n if (page > 0) {\n that._table.goPage(page);\n }\n });\n }\n }\n};\n\ncoreuiTable$1.controls.total = {\n _id: null,\n _table: null,\n _options: {\n attr: {\n \"class\": 'px-1'\n }\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n if (options.hasOwnProperty('attr') && coreuiTableUtils.isObject(options.attr)) {\n options.attr = coreuiTableUtils.mergeAttr(this._options.attr, options.attr);\n }\n this._options = $.extend({}, this._options, options);\n this._table = table;\n this._id = coreuiTableUtils.hashCode();\n },\n /**\r\n * Инициализация событий связанных с элементом управления\r\n */\n initEvents: function initEvents() {\n var that = this;\n var control = coreuiTableElements.getControl(this._table.getId(), this.getId());\n this._table.on('records_show', function () {\n control.html(that.render());\n });\n },\n /**\r\n * Получение ID элемента управления\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Формирование контента для размещения на странице\r\n * @returns {string}\r\n */\n render: function render() {\n var attributes = [];\n if (coreuiTableUtils.isObject(this._options.attr)) {\n $.each(this._options.attr, function (name, value) {\n attributes.push(name + '=\"' + value + '\"');\n });\n }\n return ejs.render(tpl['controls/total.html'], {\n recordsTotal: this._table._recordsTotal,\n attr: attributes.length > 0 ? ' ' + attributes.join(' ') : '',\n lang: this._table.getLang()\n });\n }\n};\n\ncoreuiTable$1.controls.search = {\n _id: null,\n _table: null,\n _options: {\n btn: {\n attr: {\n \"class\": 'btn btn-secondary'\n },\n content: null\n },\n btnClear: {\n content: \"\",\n attr: {\n \"class\": 'btn btn-outline-secondary'\n }\n },\n btnComplete: {\n attr: {\n \"class\": 'btn btn-primary'\n },\n content: null\n }\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend(true, {}, this._options, options);\n this._table = table;\n this._id = coreuiTableUtils.hashCode();\n if (!coreuiTableUtils.isObject(this._options.btn)) {\n this._options.btn = {};\n }\n if (!this._options.btn.hasOwnProperty('content') || typeof this._options.btn.content !== 'string') {\n this._options.btn.content = table.getLang().search;\n }\n if (!coreuiTableUtils.isObject(this._options.btnClear)) {\n this._options.btnClear = {};\n }\n if (!this._options.btnClear.hasOwnProperty('content') || typeof this._options.btnClear.content !== 'string') {\n this._options.btnClear.content = table.getLang().clear;\n }\n if (!coreuiTableUtils.isObject(this._options.btnComplete)) {\n this._options.btnComplete = {};\n }\n if (!this._options.btnComplete.hasOwnProperty('content') || typeof this._options.btnComplete.content !== 'string') {\n this._options.btnComplete.content = table.getLang().search;\n }\n },\n /**\r\n * Инициализация событий связанных с элементом управления\r\n */\n initEvents: function initEvents() {\n var that = this;\n var control = coreuiTableElements.getControl(this._table.getId(), this.getId());\n var buttonToggle = $('button.btn-search-toggle', control);\n var buttonClear = $('button.btn-clear', control);\n buttonToggle.click(function () {\n var container = coreuiTableElements.getSearchContainer(that._table.getId());\n var columnsContainer = coreuiTableElements.getColumnsContainer(that._table.getId());\n if (columnsContainer[0]) {\n columnsContainer.hide();\n }\n if (container[0]) {\n container.fadeToggle('fast');\n } else {\n var controls = [];\n var controlsEvents = [];\n var btnCompleteAttr = [];\n var btnCompleteContent = '';\n var wrapper = coreuiTableElements.getWrapper(that._table.getId());\n var tableOptions = that._table.getOptions();\n var labelWidth = tableOptions.search.hasOwnProperty('labelWidth') && tableOptions.search.labelWidth ? tableOptions.search.labelWidth : 160;\n $.each(that._table._search, function (key, control) {\n var options = control.getOptions();\n if (options.hasOwnProperty('field') && typeof options.field === 'string' && options.field) {\n controls.push({\n label: options.hasOwnProperty('label') && typeof options.label === 'string' ? options.label : '',\n description: options.hasOwnProperty('description') && typeof options.description === 'string' ? options.description : '',\n prefix: options.hasOwnProperty('prefix') && typeof options.prefix === 'string' ? options.prefix : '',\n id: control.getId(),\n content: control.render()\n });\n if (control.hasOwnProperty('initEvents') && typeof control.initEvents === 'function') {\n controlsEvents.push({\n event: control.initEvents,\n control: control\n });\n }\n }\n });\n if (!coreuiTableUtils.isObject(that._options.btnComplete)) {\n that._options.btnComplete = {};\n }\n if (!coreuiTableUtils.isObject(that._options.btnComplete.attr)) {\n that._options.btnComplete.attr = {};\n }\n if (that._options.btnComplete.attr.hasOwnProperty('type')) {\n delete that._options.btnComplete.attr.type;\n }\n if (!that._options.btnComplete.attr.hasOwnProperty('class') || typeof that._options.btnComplete.attr[\"class\"] !== 'string') {\n that._options.btnComplete.attr[\"class\"] = 'btn-complete';\n } else {\n that._options.btnComplete.attr[\"class\"] += ' btn-complete';\n }\n if (coreuiTableUtils.isObject(that._options.btnComplete.attr)) {\n $.each(that._options.btnComplete.attr, function (name, value) {\n btnCompleteAttr.push(name + '=\"' + value + '\"');\n });\n }\n if (typeof that._options.btnComplete.content === 'string') {\n btnCompleteContent = that._options.btnComplete.content;\n }\n var content = ejs.render(tpl['controls/search-container.html'], {\n labelWidth: labelWidth + (typeof labelWidth === 'number' ? 'px' : ''),\n controls: controls,\n btnCompleteAttr: btnCompleteAttr.length > 0 ? ' ' + btnCompleteAttr.join(' ') : '',\n btnCompleteContent: btnCompleteContent\n });\n wrapper.prepend(content);\n if (controlsEvents.length > 0) {\n $.each(controlsEvents, function (key, controlsEvent) {\n controlsEvent.event.apply(controlsEvent.control);\n });\n }\n container = $('> .coreui-table__search', wrapper);\n $('.btn-complete', container).click(function () {\n that._table.searchRecords();\n container.fadeOut('fast');\n });\n }\n });\n buttonClear.click(function () {\n that._table.searchClear();\n var container = coreuiTableElements.getSearchContainer(that._table.getId());\n if (container[0]) {\n container.fadeOut('fast');\n }\n });\n this._table.on('search_change', function (searchData) {\n var buttonClear = $('button.btn-clear', control);\n if (searchData.length > 0) {\n if (!buttonClear[0]) {\n $(that._renderBtnClear()).insertAfter(buttonToggle);\n $('button.btn-clear', control).click(function () {\n that._table.searchClear();\n var container = coreuiTableElements.getSearchContainer(that._table.getId());\n if (container[0]) {\n container.fadeOut('fast');\n }\n });\n }\n } else {\n buttonClear.remove();\n var container = coreuiTableElements.getSearchContainer(that._table.getId());\n if (container[0]) {\n container.fadeOut('fast');\n }\n }\n });\n },\n /**\r\n * Получение ID элемента управления\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Формирование контента для размещения на странице\r\n * @returns {string}\r\n */\n render: function render() {\n var btnAttr = [];\n var btnContent = '';\n var btnClear = '';\n if (!coreuiTableUtils.isObject(this._options.btn)) {\n this._options.btn = {};\n }\n if (!coreuiTableUtils.isObject(this._options.btn.attr)) {\n this._options.btn.attr = {};\n }\n if (!this._options.btn.attr.hasOwnProperty('class') || typeof this._options.btn.attr[\"class\"] !== 'string') {\n this._options.btn.attr[\"class\"] = 'btn-search-toggle';\n } else {\n this._options.btn.attr[\"class\"] += ' btn-search-toggle';\n }\n $.each(this._options.btn.attr, function (name, value) {\n btnAttr.push(name + '=\"' + value + '\"');\n });\n if (typeof this._options.btn.content === 'string') {\n btnContent = this._options.btn.content;\n }\n if (this._table.getSearchData().length > 0) {\n btnClear = this._renderBtnClear();\n }\n return ejs.render(tpl['controls/search.html'], {\n btnContent: btnContent,\n btnAttr: btnAttr.length > 0 ? ' ' + btnAttr.join(' ') : '',\n btnClear: btnClear\n });\n },\n /**\r\n * Рендер кнопки отмены\r\n * @private\r\n */\n _renderBtnClear: function _renderBtnClear() {\n var attributes = [];\n var content = '';\n if (!coreuiTableUtils.isObject(this._options.btnClear)) {\n this._options.btnClear = {};\n }\n if (!coreuiTableUtils.isObject(this._options.btnClear.attr)) {\n this._options.btnClear.attr = {};\n }\n if (!this._options.btnClear.attr.hasOwnProperty('class') || typeof this._options.btnClear.attr[\"class\"] !== 'string') {\n this._options.btnClear.attr[\"class\"] = 'btn-clear';\n } else {\n this._options.btnClear.attr[\"class\"] += ' btn-clear';\n }\n $.each(this._options.btnClear.attr, function (name, value) {\n attributes.push(name + '=\"' + value + '\"');\n });\n if (typeof this._options.btnClear.content === 'string') {\n content = this._options.btnClear.content;\n }\n return ejs.render(tpl['controls/search-clear.html'], {\n content: content,\n attr: attributes.length > 0 ? ' ' + attributes.join(' ') : ''\n });\n }\n};\n\ncoreuiTable$1.controls.columns = {\n _id: null,\n _table: null,\n _options: {\n id: null,\n type: 'columns',\n btn: {\n content: '',\n attr: {\n \"class\": 'btn btn-outline-secondary'\n }\n },\n btnComplete: {\n content: null,\n attr: {\n \"class\": 'btn btn-primary'\n }\n }\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend({}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (!coreuiTableUtils.isObject(this._options.btn)) {\n this._options.btn = {};\n }\n if (!coreuiTableUtils.isObject(this._options.btnComplete)) {\n this._options.btnComplete = {};\n }\n if (coreuiTableUtils.isObject(this._options.btnComplete) && typeof this._options.btnComplete.content !== 'string') {\n this._options.btnComplete.content = table.getLang().complete;\n }\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Инициализация событий связанных с элементом управления\r\n */\n initEvents: function initEvents() {\n var that = this;\n var options = this.getOptions();\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n var button = $('button', control);\n button.click(function () {\n var container = coreuiTableElements.getColumnsContainer(that._table.getId());\n var containerSearch = coreuiTableElements.getSearchContainer(that._table.getId());\n if (containerSearch[0]) {\n containerSearch.hide();\n }\n if (container[0]) {\n container.fadeToggle('fast');\n } else {\n var columns = [];\n var showAll = true;\n var btnCompleteAttr = [];\n var btnCompleteContent = '';\n var wrapper = coreuiTableElements.getWrapper(that._table.getId());\n $.each(that._table._columns, function (key, column) {\n var options = column.getOptions();\n if (options.hasOwnProperty('field') && typeof options.field === 'string' && options.field) {\n var isShow = column.isShow();\n columns.push({\n field: options.field,\n label: options.hasOwnProperty('label') && typeof options.label === 'string' ? options.label : '',\n show: isShow\n });\n if (!isShow) {\n showAll = false;\n }\n }\n });\n if (!coreuiTableUtils.isObject(options.btnComplete)) {\n options.btnComplete = {};\n }\n if (!coreuiTableUtils.isObject(options.btnComplete.attr)) {\n options.btnComplete.attr = {};\n }\n if (options.btnComplete.attr.hasOwnProperty('type')) {\n delete options.btnComplete.attr.type;\n }\n if (!options.btnComplete.attr.hasOwnProperty('class') || typeof options.btnComplete.attr[\"class\"] !== 'string') {\n options.btnComplete.attr[\"class\"] = 'btn-complete';\n } else {\n options.btnComplete.attr[\"class\"] += ' btn-complete';\n }\n if (coreuiTableUtils.isObject(options.btnComplete.attr)) {\n $.each(options.btnComplete.attr, function (name, value) {\n btnCompleteAttr.push(name + '=\"' + value + '\"');\n });\n }\n if (typeof options.btnComplete.content === 'string') {\n btnCompleteContent = options.btnComplete.content;\n }\n var content = ejs.render(tpl['controls/columns-container.html'], {\n showAll: showAll,\n columns: columns,\n btnCompleteAttr: btnCompleteAttr.length > 0 ? ' ' + btnCompleteAttr.join(' ') : '',\n btnCompleteContent: btnCompleteContent,\n lang: that._table.getLang()\n });\n wrapper.prepend(content);\n container = $('> .coreui-table__columns', wrapper);\n $('.coreui-table__check_all input', container).change(function () {\n $('.coreui-table_check-column input', container).prop('checked', $(this).is(\":checked\"));\n });\n $('.btn-complete', container).click(function () {\n var columns = [];\n $('.coreui-table_check-column input:checked', container).each(function (key, input) {\n columns.push($(input).val());\n });\n that._table.setColumnsShow(columns);\n that._table.refresh();\n container.fadeOut('fast');\n });\n }\n });\n },\n /**\r\n * Получение ID элемента управления\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Формирование контента для размещения на странице\r\n * @returns {string}\r\n */\n render: function render() {\n var attributes = [];\n if (coreuiTableUtils.isObject(this._options.btn.attr)) {\n $.each(this._options.btn.attr, function (name, value) {\n attributes.push(name + '=\"' + value + '\"');\n });\n }\n return ejs.render(tpl['controls/columns.html'], {\n btnContent: this._options.btn.content,\n btnAttr: attributes.length > 0 ? ' ' + attributes.join(' ') : ''\n });\n }\n};\n\ncoreuiTable$1.controls.caption = {\n _id: null,\n _table: null,\n _options: {\n id: null,\n type: 'caption',\n title: null,\n description: null,\n value: null\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend({}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n },\n /**\r\n * Инициализация событий связанных с элементом управления\r\n */\n initEvents: function initEvents() {},\n /**\r\n * Получение ID элемента управления\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Формирование контента для размещения на странице\r\n * @returns {string}\r\n */\n render: function render() {\n return ejs.render(tpl['controls/caption.html'], {\n title: this._options.title,\n description: this._options.description,\n value: this._options.value\n });\n }\n};\n\ncoreuiTable$1.filters.clear = {\n _id: null,\n _table: null,\n _options: {\n id: null,\n type: 'clear',\n content: null,\n attr: {\n \"class\": 'btn btn-secondary'\n }\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend(true, {}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (!this._options.hasOwnProperty('content') || typeof this._options.content !== 'string') {\n this._options.content = table.getLang().clear;\n }\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Получение id\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Установка значения\r\n * @param {string} value\r\n */\n setValue: function setValue(value) {},\n /**\r\n * Получение значения\r\n * @returns {null}\r\n */\n getValue: function getValue() {\n return null;\n },\n /**\r\n * Инициализация событий\r\n * @returns {object}\r\n */\n initEvents: function initEvents() {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n var that = this;\n $('button', control).click(function () {\n that._table.filtersClear();\n });\n this._table.on('filters_change', function (filterData) {\n if (filterData.length > 0) {\n $('button', control).show();\n } else {\n $('button', control).hide();\n }\n });\n },\n /**\r\n * Формирование контента\r\n * @returns {string}\r\n */\n render: function render() {\n var options = this.getOptions();\n if (!coreuiTableUtils.isObject(options.attr)) {\n options.attr = {};\n }\n if (options.attr.hasOwnProperty('type')) {\n delete options.attr.type;\n }\n var filterData = this._table.getFilterData();\n if (filterData.length === 0) {\n if (options.attr.hasOwnProperty('style') && typeof options.attr.style === 'string') {\n options.attr.style += ';display:none;';\n } else {\n options.attr.style = \"display:none\";\n }\n }\n var attr = [];\n $.each(options.attr, function (name, value) {\n attr.push(name + '=\"' + value + '\"');\n });\n return ejs.render(tpl['filters/clear.html'], {\n attr: attr.length > 0 ? ' ' + attr.join(' ') : '',\n content: options.content ? options.content : ''\n });\n }\n};\n\ncoreuiTable$1.filters.text = {\n _id: null,\n _table: null,\n _value: null,\n _render: false,\n _options: {\n id: null,\n type: 'text',\n field: null,\n label: null,\n value: null,\n width: 200,\n attr: {\n \"class\": \"form-control\"\n },\n btn: {\n attr: {\n \"class\": \"btn btn-outline-secondary border-secondary-subtle\"\n },\n content: ''\n }\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend(true, {}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (this._options.value !== null) {\n this.setValue(this._options.value);\n }\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Получение id\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Установка значения\r\n * @param {string|number|null} value\r\n */\n setValue: function setValue(value) {\n if (value !== null && typeof value !== 'string' && typeof value !== 'number') {\n return;\n }\n this._value = value;\n if (this._render) {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n if (control[0]) {\n $('input', control).val(this._value === null ? '' : this._value);\n }\n }\n },\n /**\r\n * Получение значения\r\n * @returns {string|null}\r\n */\n getValue: function getValue() {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n var input = $('input', control);\n if (input[0]) {\n var value = input.val();\n if (typeof value === 'string' && value !== '') {\n return value;\n }\n }\n return null;\n },\n /**\r\n * Инициализация событий\r\n * @returns {object}\r\n */\n initEvents: function initEvents() {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n var that = this;\n $('input', control).keyup(function (e) {\n if (e.key === 'Enter' || e.keyCode === 13) {\n that._table.searchRecords();\n }\n });\n $('button', control).click(function (e) {\n that._table.searchRecords();\n });\n },\n /**\r\n * Формирование контента\r\n * @returns {string}\r\n */\n render: function render() {\n this._render = true;\n var options = this.getOptions();\n var label = typeof options.label === 'string' || typeof options.label === 'number' ? options.label : '';\n if (!coreuiTableUtils.isObject(options.attr)) {\n options.attr = {};\n }\n if (options.hasOwnProperty('width') && coreuiTableUtils.isNumeric(options.width)) {\n if (options.attr.hasOwnProperty('style')) {\n options.attr['style'] += ';width:' + options.width + 'px';\n } else {\n options.attr['style'] = 'width:' + options.width + 'px';\n }\n }\n options.attr['name'] = typeof options.field === 'string' ? options.field : '';\n options.attr['value'] = typeof this._value === 'string' || typeof this._value === 'number' ? this._value : '';\n if (options.attr.hasOwnProperty('type')) {\n delete options.attr.type;\n }\n if (!coreuiTableUtils.isObject(options.btn)) {\n options.btn = {};\n }\n if (!coreuiTableUtils.isObject(options.btn.attr)) {\n options.btn.attr = {};\n }\n if (options.btn.attr.hasOwnProperty('type')) {\n delete options.btn.attr.type;\n }\n var attr = [];\n var attrBtn = [];\n $.each(options.attr, function (name, value) {\n attr.push(name + '=\"' + value + '\"');\n });\n $.each(options.btn.attr, function (name, value) {\n attrBtn.push(name + '=\"' + value + '\"');\n });\n return ejs.render(tpl['filters/text.html'], {\n attr: attr.length > 0 ? ' ' + attr.join(' ') : '',\n label: label,\n btnAttr: attrBtn.length > 0 ? ' ' + attrBtn.join(' ') : '',\n btnContent: options.btn.content ? options.btn.content : ''\n });\n }\n};\n\ncoreuiTable$1.filters.number = {\n _id: null,\n _table: null,\n _value: null,\n _render: false,\n _options: {\n id: null,\n type: 'number',\n field: null,\n label: null,\n value: null,\n width: 90,\n attr: {\n \"class\": \"form-control\"\n },\n btn: {\n attr: {\n \"class\": \"btn btn-outline-secondary border-secondary-subtle\"\n },\n content: ''\n }\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend(true, {}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (this._options.value !== null) {\n this.setValue(this._options.value);\n }\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Получение id\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Установка значения\r\n * @param {object|null} value\r\n */\n setValue: function setValue(value) {\n if (value) {\n if (!coreuiTableUtils.isObject(value)) {\n return;\n }\n var numberStart = null;\n var numberEnd = null;\n if (value.hasOwnProperty('start') && (typeof value.start === 'string' || typeof value.start !== 'number') && value.start !== '') {\n numberStart = value.start;\n }\n if (value.hasOwnProperty('end') && (typeof value.end === 'string' || typeof value.end !== 'number') && value.end !== '') {\n numberEnd = value.end;\n }\n if (numberStart === null && numberEnd === null) {\n this._value = null;\n } else {\n this._value = {\n start: numberStart,\n end: numberEnd\n };\n }\n } else {\n this._value = null;\n }\n if (this._render) {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n if (control[0]) {\n var inputStart = $('input.number-start', control);\n var inputEnd = $('input.number-end', control);\n if (this._value === null) {\n inputStart.val('');\n inputEnd.val('');\n } else if (coreuiTableUtils.isObject(this._value)) {\n inputStart.val(_typeof(this._value.start) !== null ? this._value.start : '');\n inputEnd.val(_typeof(this._value.end) !== null ? this._value.end : '');\n }\n }\n }\n },\n /**\r\n * Получение значения\r\n * @returns {string}\r\n */\n getValue: function getValue() {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n var inputStart = $('input.number-start', control);\n var inputEnd = $('input.number-end', control);\n if (inputStart[0] && inputEnd[0]) {\n var valueStart = inputStart.val();\n var valueEnd = inputEnd.val();\n if (typeof valueStart === 'string' && valueStart !== '' || typeof valueEnd === 'string' && valueEnd !== '') {\n return {\n start: valueStart !== '' ? valueStart : null,\n end: valueEnd !== '' ? valueEnd : null\n };\n }\n }\n return null;\n },\n /**\r\n * Инициализация событий\r\n * @returns {object}\r\n */\n initEvents: function initEvents() {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n var that = this;\n $('input.number-start, input.number-end', control).keyup(function (e) {\n if (e.key === 'Enter' || e.keyCode === 13) {\n that._table.searchRecords();\n }\n });\n $('button', control).click(function (e) {\n that._table.searchRecords();\n });\n },\n /**\r\n * Формирование контента\r\n * @returns {string}\r\n */\n render: function render() {\n this._render = true;\n var options = this.getOptions();\n var label = typeof options.label === 'string' || typeof options.label === 'number' ? options.label : '';\n if (!coreuiTableUtils.isObject(options.attr)) {\n options.attr = {};\n }\n if (options.hasOwnProperty('width') && coreuiTableUtils.isNumeric(options.width)) {\n if (options.attr.hasOwnProperty('style')) {\n options.attr['style'] += ';width:' + options.width + 'px';\n } else {\n options.attr['style'] = 'width:' + options.width + 'px';\n }\n }\n if (options.attr.hasOwnProperty('type')) {\n delete options.attr.type;\n }\n if (options.attr.hasOwnProperty('value')) {\n delete options.attr.value;\n }\n var field = typeof options.field === 'string' ? options.field : '';\n var startAttr = [];\n var endAttr = [];\n var attrBtn = [];\n $.each(options.attr, function (name, value) {\n if (['name', 'value', 'class'].indexOf(name) >= 0 || ['string', 'number'].indexOf(_typeof(value)) < 0) {\n return;\n }\n startAttr.push(name + '=\"' + value + '\"');\n endAttr.push(name + '=\"' + value + '\"');\n });\n if (options.attr.hasOwnProperty('class') && ['string', 'number'].indexOf(_typeof(options.attr[\"class\"])) >= 0) {\n startAttr.push('class=\"' + options.attr[\"class\"] + ' number-start\"');\n endAttr.push('class=\"' + options.attr[\"class\"] + ' number-end\"');\n } else {\n startAttr.push('class=\"number-start\"');\n endAttr.push('class=\"number-end\"');\n }\n if (field) {\n startAttr.push('name=\"' + field + '[start]\"');\n endAttr.push('name=\"' + field + '[end]\"');\n }\n startAttr.push('value=\"' + (this._value ? this._value.start : '') + '\"');\n endAttr.push('value=\"' + (this._value ? this._value.end : '') + '\"');\n if (!coreuiTableUtils.isObject(options.btn)) {\n options.btn = {};\n }\n if (!coreuiTableUtils.isObject(options.btn.attr)) {\n options.btn.attr = {};\n }\n if (options.btn.attr.hasOwnProperty('type')) {\n delete options.btn.attr.type;\n }\n $.each(options.btn.attr, function (name, value) {\n attrBtn.push(name + '=\"' + value + '\"');\n });\n return ejs.render(tpl['filters/number.html'], {\n attrStart: startAttr.length > 0 ? ' ' + startAttr.join(' ') : '',\n attrEnd: endAttr.length > 0 ? ' ' + endAttr.join(' ') : '',\n label: label,\n btnAttr: attrBtn.length > 0 ? ' ' + attrBtn.join(' ') : '',\n btnContent: options.btn.content ? options.btn.content : ''\n });\n }\n};\n\ncoreuiTable$1.filters.date = {\n _id: null,\n _table: null,\n _value: null,\n _render: false,\n _options: {\n id: null,\n type: 'date',\n field: null,\n label: null,\n value: null,\n width: 200,\n attr: {\n \"class\": \"form-control\"\n }\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend(true, {}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (this._options.value !== null) {\n this.setValue(this._options.value);\n }\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Получение id\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Установка значения\r\n * @param {string} value\r\n */\n setValue: function setValue(value) {\n if (typeof value !== 'string' && value !== null) {\n return;\n }\n if (value && (value.match(/^\\d{4}\\-\\d{2}\\-\\d{2}$/) === null || isNaN(new Date(value)))) {\n return;\n }\n this._value = value;\n if (this._render) {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n if (control[0]) {\n $('input', control).val(this._value === null ? '' : this._value);\n }\n }\n },\n /**\r\n * Получение значения\r\n * @returns {string}\r\n */\n getValue: function getValue() {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n var input = $('input', control);\n if (input[0]) {\n var value = input.val();\n if (typeof value === 'string' && value !== '') {\n return value;\n }\n }\n return null;\n },\n /**\r\n * Инициализация событий\r\n * @returns {object}\r\n */\n initEvents: function initEvents() {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n var that = this;\n $('input', control).change(function (e) {\n that._table.searchRecords();\n });\n },\n /**\r\n * Формирование контента\r\n * @returns {string}\r\n */\n render: function render() {\n this._render = true;\n var options = this.getOptions();\n var label = typeof options.label === 'string' || typeof options.label === 'number' ? options.label : '';\n if (!coreuiTableUtils.isObject(options.attr)) {\n options.attr = {};\n }\n if (options.hasOwnProperty('width') && coreuiTableUtils.isNumeric(options.width)) {\n if (options.attr.hasOwnProperty('style')) {\n options.attr['style'] += ';width:' + options.width + 'px';\n } else {\n options.attr['style'] = 'width:' + options.width + 'px';\n }\n }\n options.attr['name'] = typeof options.field === 'string' ? options.field : '';\n options.attr['value'] = typeof this._value === 'string' || typeof this._value === 'number' ? this._value : '';\n if (options.attr.hasOwnProperty('type')) {\n delete options.attr.type;\n }\n var attr = [];\n $.each(options.attr, function (name, value) {\n attr.push(name + '=\"' + value + '\"');\n });\n return ejs.render(tpl['filters/date.html'], {\n attr: attr.length > 0 ? ' ' + attr.join(' ') : '',\n label: label\n });\n }\n};\n\ncoreuiTable$1.filters.datetime = {\n _id: null,\n _table: null,\n _value: null,\n _render: false,\n _options: {\n id: null,\n type: 'datetime',\n field: null,\n label: null,\n value: null,\n width: 200,\n attr: {\n \"class\": \"form-control\"\n }\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend(true, {}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (this._options.value !== null) {\n this.setValue(this._options.value);\n }\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Получение id\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Установка значения\r\n * @param {string|null} value\r\n */\n setValue: function setValue(value) {\n if (typeof value !== 'string' && value !== null) {\n return;\n }\n if (value && (value.match(/^\\d{4}\\-\\d{2}\\-\\d{2} \\d{2}:\\d{2}:\\d{2}$/) === null || isNaN(new Date(value)))) {\n return;\n }\n this._value = value;\n if (this._render) {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n if (control[0]) {\n $('input', control).val(this._value === null ? '' : this._value);\n }\n }\n },\n /**\r\n * Получение значения\r\n * @returns {string|null}\r\n */\n getValue: function getValue() {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n var input = $('input', control);\n if (input[0]) {\n var value = input.val();\n if (typeof value === 'string' && value !== '') {\n return value;\n }\n }\n return null;\n },\n /**\r\n * Инициализация событий\r\n * @returns {object}\r\n */\n initEvents: function initEvents() {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n var that = this;\n $('input', control).change(function (e) {\n that._table.searchRecords();\n });\n },\n /**\r\n * Формирование контента\r\n * @returns {string}\r\n */\n render: function render() {\n this._render = true;\n var options = this.getOptions();\n var label = typeof options.label === 'string' || typeof options.label === 'number' ? options.label : '';\n if (!coreuiTableUtils.isObject(options.attr)) {\n options.attr = {};\n }\n if (options.hasOwnProperty('width') && coreuiTableUtils.isNumeric(options.width)) {\n if (options.attr.hasOwnProperty('style')) {\n options.attr['style'] += ';width:' + options.width + 'px';\n } else {\n options.attr['style'] = 'width:' + options.width + 'px';\n }\n }\n options.attr['name'] = typeof options.field === 'string' ? options.field : '';\n options.attr['value'] = typeof this._value === 'string' || typeof this._value === 'number' ? this._value : '';\n if (options.attr.hasOwnProperty('type')) {\n delete options.attr.type;\n }\n var attr = [];\n $.each(options.attr, function (name, value) {\n attr.push(name + '=\"' + value + '\"');\n });\n return ejs.render(tpl['filters/datetime.html'], {\n attr: attr.length > 0 ? ' ' + attr.join(' ') : '',\n label: label\n });\n }\n};\n\ncoreuiTable$1.filters.date_month = {\n _id: null,\n _table: null,\n _value: null,\n _render: false,\n _options: {\n id: null,\n type: 'date_month',\n field: null,\n label: null,\n value: null,\n width: 200,\n attr: {\n \"class\": \"form-control\"\n }\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend(true, {}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (this._options.value !== null) {\n this.setValue(this._options.value);\n }\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Получение id\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Установка значения\r\n * @param {string|null} value\r\n */\n setValue: function setValue(value) {\n if (typeof value !== 'string' && value !== null) {\n return;\n }\n if (value && (value.match(/^\\d{4}\\-\\d{2}$/) === null || isNaN(new Date(value)))) {\n return;\n }\n this._value = value;\n if (this._render) {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n if (control[0]) {\n $('input', control).val(this._value === null ? '' : this._value);\n }\n }\n },\n /**\r\n * Получение значения\r\n * @returns {string}\r\n */\n getValue: function getValue() {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n var input = $('input', control);\n if (input[0]) {\n var value = input.val();\n if (typeof value === 'string' && value !== '') {\n return value;\n }\n }\n return null;\n },\n /**\r\n * Инициализация событий\r\n * @returns {object}\r\n */\n initEvents: function initEvents() {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n var that = this;\n $('input', control).change(function (e) {\n that._table.searchRecords();\n });\n },\n /**\r\n * Формирование контента\r\n * @returns {string}\r\n */\n render: function render() {\n this._render = true;\n var options = this.getOptions();\n var label = typeof options.label === 'string' || typeof options.label === 'number' ? options.label : '';\n if (!coreuiTableUtils.isObject(options.attr)) {\n options.attr = {};\n }\n if (options.hasOwnProperty('width') && coreuiTableUtils.isNumeric(options.width)) {\n if (options.attr.hasOwnProperty('style')) {\n options.attr['style'] += ';width:' + options.width + 'px';\n } else {\n options.attr['style'] = 'width:' + options.width + 'px';\n }\n }\n options.attr['name'] = typeof options.field === 'string' ? options.field : '';\n options.attr['value'] = typeof this._value === 'string' || typeof this._value === 'number' ? this._value : '';\n if (options.attr.hasOwnProperty('type')) {\n delete options.attr.type;\n }\n var attr = [];\n $.each(options.attr, function (name, value) {\n attr.push(name + '=\"' + value + '\"');\n });\n return ejs.render(tpl['filters/date_month.html'], {\n attr: attr.length > 0 ? ' ' + attr.join(' ') : '',\n label: label\n });\n }\n};\n\ncoreuiTable$1.filters.date_range = {\n _id: null,\n _table: null,\n _value: null,\n _render: false,\n _options: {\n id: null,\n type: 'date_range',\n field: null,\n label: null,\n value: null,\n width: 200,\n attr: {\n \"class\": \"form-control d-inline-block\"\n }\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend(true, {}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (this._options.value !== null) {\n this.setValue(this._options.value);\n }\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Получение id\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Установка значения\r\n * @param {object|null} value\r\n */\n setValue: function setValue(value) {\n if (value) {\n if (!coreuiTableUtils.isObject(value)) {\n return;\n }\n var dateStart = null;\n var dateEnd = null;\n if (value.hasOwnProperty('start') && typeof value.start === 'string' && value.start.match(/^\\d{4}\\-\\d{2}\\-\\d{2}$/) === null && isNaN(new Date(value.start))) {\n dateStart = value.start;\n }\n if (value.hasOwnProperty('end') && typeof value.end === 'string' && value.end.match(/^\\d{4}\\-\\d{2}\\-\\d{2}$/) === null && isNaN(new Date(value.end))) {\n dateEnd = value.end;\n }\n if (dateStart === null && dateEnd === null) {\n this._value = null;\n } else {\n this._value = {\n start: dateStart,\n end: dateEnd\n };\n }\n } else {\n this._value = null;\n }\n if (this._render) {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n if (control[0]) {\n var inputStart = $('input.date-start', control);\n var inputEnd = $('input.date-end', control);\n if (this._value === null) {\n inputStart.val('');\n inputEnd.val('');\n } else if (coreuiTableUtils.isObject(this._value)) {\n inputStart.val(_typeof(this._value.start) !== null ? this._value.start : '');\n inputEnd.val(_typeof(this._value.end) !== null ? this._value.end : '');\n }\n }\n }\n },\n /**\r\n * Получение значения\r\n * @returns {Object|null}\r\n */\n getValue: function getValue() {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n var inputStart = $('input.date-start', control);\n var inputEnd = $('input.date-end', control);\n if (inputStart[0] && inputEnd[0]) {\n var valueStart = inputStart.val();\n var valueEnd = inputEnd.val();\n if (typeof valueStart === 'string' && valueStart !== '' || typeof valueEnd === 'string' && valueEnd !== '') {\n return {\n start: valueStart !== '' ? valueStart : null,\n end: valueEnd !== '' ? valueEnd : null\n };\n }\n }\n return null;\n },\n /**\r\n * Инициализация событий\r\n * @returns {object}\r\n */\n initEvents: function initEvents() {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n var that = this;\n $('input', control).change(function (e) {\n that._table.searchRecords();\n });\n },\n /**\r\n * Формирование контента\r\n * @returns {string}\r\n */\n render: function render() {\n this._render = true;\n var options = this.getOptions();\n var label = typeof options.label === 'string' || typeof options.label === 'number' ? options.label : '';\n if (!coreuiTableUtils.isObject(options.attr)) {\n options.attr = {};\n }\n if (options.hasOwnProperty('width') && coreuiTableUtils.isNumeric(options.width)) {\n if (options.attr.hasOwnProperty('style')) {\n options.attr['style'] += ';width:' + options.width + 'px';\n } else {\n options.attr['style'] = 'width:' + options.width + 'px';\n }\n }\n if (options.attr.hasOwnProperty('type')) {\n delete options.attr.type;\n }\n if (options.attr.hasOwnProperty('value')) {\n delete options.attr.value;\n }\n var field = typeof options.field === 'string' ? options.field : '';\n var startAttr = [];\n var startEnd = [];\n $.each(options.attr, function (name, value) {\n if (['name', 'value', 'class'].indexOf(name) >= 0 || ['string', 'number'].indexOf(_typeof(value)) < 0) {\n return;\n }\n startAttr.push(name + '=\"' + value + '\"');\n startEnd.push(name + '=\"' + value + '\"');\n });\n if (options.attr.hasOwnProperty('class') && ['string', 'number'].indexOf(_typeof(options.attr[\"class\"])) >= 0) {\n startAttr.push('class=\"' + options.attr[\"class\"] + ' date-start\"');\n startEnd.push('class=\"' + options.attr[\"class\"] + ' date-end\"');\n } else {\n startAttr.push('class=\"date-start\"');\n startEnd.push('class=\"date-end\"');\n }\n if (field) {\n startAttr.push('name=\"' + field + '[start]\"');\n startEnd.push('name=\"' + field + '[end]\"');\n }\n startAttr.push('value=\"' + (this._value ? this._value.start : '') + '\"');\n startEnd.push('value=\"' + (this._value ? this._value.end : '') + '\"');\n return ejs.render(tpl['filters/date_range.html'], {\n label: label,\n startAttr: startAttr.length > 0 ? ' ' + startAttr.join(' ') : '',\n endAttr: startEnd.length > 0 ? ' ' + startEnd.join(' ') : ''\n });\n }\n};\n\ncoreuiTable$1.filters.datetime_range = {\n _id: null,\n _table: null,\n _value: null,\n _render: false,\n _options: {\n id: null,\n type: 'datetime_range',\n field: null,\n label: null,\n value: null,\n width: 200,\n attr: {\n \"class\": \"form-control d-inline-block\"\n }\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend(true, {}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (this._options.value !== null) {\n this.setValue(this._options.value);\n }\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Получение id\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Установка значения\r\n * @param {object|null} value\r\n */\n setValue: function setValue(value) {\n if (value) {\n if (!coreuiTableUtils.isObject(value)) {\n return;\n }\n var dateStart = null;\n var dateEnd = null;\n if (value.hasOwnProperty('start') && typeof value.start === 'string' && value.start.match(/^\\d{4}\\-\\d{2}\\-\\d{2} \\d{2}:\\d{2}:\\d{2}$/) === null && isNaN(new Date(value.start))) {\n dateStart = value.start;\n }\n if (value.hasOwnProperty('end') && typeof value.end === 'string' && value.end.match(/^\\d{4}\\-\\d{2}\\-\\d{2} \\d{2}:\\d{2}:\\d{2}$/) === null && isNaN(new Date(value.end))) {\n dateEnd = value.end;\n }\n if (dateStart === null && dateEnd === null) {\n this._value = null;\n } else {\n this._value = {\n start: dateStart,\n end: dateEnd\n };\n }\n } else {\n this._value = null;\n }\n if (this._render) {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n if (control[0]) {\n var inputStart = $('input.date-start', control);\n var inputEnd = $('input.date-end', control);\n if (this._value === null) {\n inputStart.val('');\n inputEnd.val('');\n } else if (coreuiTableUtils.isObject(this._value)) {\n inputStart.val(_typeof(this._value.start) !== null ? this._value.start : '');\n inputEnd.val(_typeof(this._value.end) !== null ? this._value.end : '');\n }\n }\n }\n },\n /**\r\n * Получение значения\r\n * @returns {Object|null}\r\n */\n getValue: function getValue() {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n var inputStart = $('input.date-start', control);\n var inputEnd = $('input.date-end', control);\n if (inputStart[0] && inputEnd[0]) {\n var valueStart = inputStart.val();\n var valueEnd = inputEnd.val();\n if (typeof valueStart === 'string' && valueStart !== '' || typeof valueEnd === 'string' && valueEnd !== '') {\n return {\n start: valueStart !== '' ? valueStart : null,\n end: valueEnd !== '' ? valueEnd : null\n };\n }\n }\n return null;\n },\n /**\r\n * Инициализация событий\r\n * @returns {object}\r\n */\n initEvents: function initEvents() {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n var that = this;\n $('input', control).change(function (e) {\n that._table.searchRecords();\n });\n },\n /**\r\n * Формирование контента\r\n * @returns {string}\r\n */\n render: function render() {\n this._render = true;\n var options = this.getOptions();\n var label = typeof options.label === 'string' || typeof options.label === 'number' ? options.label : '';\n if (!coreuiTableUtils.isObject(options.attr)) {\n options.attr = {};\n }\n if (options.hasOwnProperty('width') && coreuiTableUtils.isNumeric(options.width)) {\n if (options.attr.hasOwnProperty('style')) {\n options.attr['style'] += ';width:' + options.width + 'px';\n } else {\n options.attr['style'] = 'width:' + options.width + 'px';\n }\n }\n if (options.attr.hasOwnProperty('type')) {\n delete options.attr.type;\n }\n if (options.attr.hasOwnProperty('value')) {\n delete options.attr.value;\n }\n var field = typeof options.field === 'string' ? options.field : '';\n var startAttr = [];\n var startEnd = [];\n $.each(options.attr, function (name, value) {\n if (['name', 'value', 'class'].indexOf(name) >= 0 || ['string', 'number'].indexOf(_typeof(value)) < 0) {\n return;\n }\n startAttr.push(name + '=\"' + value + '\"');\n startEnd.push(name + '=\"' + value + '\"');\n });\n if (options.attr.hasOwnProperty('class') && ['string', 'number'].indexOf(_typeof(options.attr[\"class\"])) >= 0) {\n startAttr.push('class=\"' + options.attr[\"class\"] + ' date-start\"');\n startEnd.push('class=\"' + options.attr[\"class\"] + ' date-end\"');\n } else {\n startAttr.push('class=\"date-start\"');\n startEnd.push('class=\"date-end\"');\n }\n if (field) {\n startAttr.push('name=\"' + field + '[start]\"');\n startEnd.push('name=\"' + field + '[end]\"');\n }\n startAttr.push('value=\"' + (this._value ? this._value.start : '') + '\"');\n startEnd.push('value=\"' + (this._value ? this._value.end : '') + '\"');\n return ejs.render(tpl['filters/datetime_range.html'], {\n label: label,\n startAttr: startAttr.length > 0 ? ' ' + startAttr.join(' ') : '',\n endAttr: startEnd.length > 0 ? ' ' + startEnd.join(' ') : ''\n });\n }\n};\n\ncoreuiTable$1.filters.checkbox = {\n _id: null,\n _table: null,\n _value: null,\n _class: 'btn btn-outline-secondary',\n _render: false,\n _options: {\n id: null,\n type: 'checkbox',\n field: null,\n label: null,\n value: null,\n options: []\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend(true, {}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (this._options.value !== null) {\n this.setValue(this._options.value);\n }\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Получение id\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Установка значения\r\n * @param {Array|string|number|null} value\r\n */\n setValue: function setValue(value) {\n if (['string', 'number', 'object'].indexOf(_typeof(value)) < 0) {\n return;\n }\n if (_typeof(value) === 'object') {\n if (Array.isArray(value)) {\n var items = [];\n $.each(value, function (key, item) {\n if (typeof value !== 'string' && typeof value !== 'number') {\n return;\n }\n items.push(item);\n });\n this._value = items;\n } else {\n this._value = null;\n }\n } else {\n this._value = [value];\n }\n if (this._render) {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n if (control[0]) {\n $('input:checked', control).prop('checked', false);\n if (Array.isArray(this._value)) {\n $.each(this._value, function (key, value) {\n $('input[value=\"' + value + '\"]', control).prop('checked', true);\n });\n }\n }\n }\n },\n /**\r\n * Получение значения\r\n * @returns {Array|null}\r\n */\n getValue: function getValue() {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n if (control[0]) {\n var inputs = $('input:checked', control);\n var items = [];\n $.each(inputs, function (key, input) {\n var value = $(input).attr('value');\n if (['string', 'number'].indexOf(_typeof(value)) >= 0 && value !== '') {\n items.push(value);\n }\n });\n return items.length > 0 ? items : null;\n } else {\n return this._value;\n }\n },\n /**\r\n * Инициализация событий\r\n */\n initEvents: function initEvents() {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n var that = this;\n $('input', control).change(function (e) {\n that._table.searchRecords();\n });\n },\n /**\r\n * Формирование контента\r\n * @returns {string}\r\n */\n render: function render() {\n this._render = true;\n var that = this;\n var options = this.getOptions();\n var field = typeof options.field === 'string' ? options.field : '';\n var items = [];\n var label = typeof options.label === 'string' || typeof options.label === 'number' ? options.label : '';\n $.each(options.options, function (key, option) {\n if (!coreuiTableUtils.isObject(option) || !option.hasOwnProperty('value') || ['string', 'numeric'].indexOf(_typeof(option.value)) === -1) {\n return;\n }\n var checked = Array.isArray(that._value) ? that._value.indexOf(option.value) >= 0 : false;\n var text = option.hasOwnProperty('text') ? option.text : option.value;\n items.push({\n text: text,\n value: option.value,\n \"class\": option.hasOwnProperty('class') && typeof option[\"class\"] === 'string' ? option[\"class\"] : that._class,\n checked: checked\n });\n });\n return ejs.render(tpl['filters/checkbox.html'], {\n label: label,\n items: items,\n field: field + this.getId(),\n lang: this._table.getLang()\n });\n }\n};\n\ncoreuiTable$1.filters.radio = {\n _id: null,\n _table: null,\n _value: null,\n _class: 'btn btn-outline-secondary',\n _render: false,\n _options: {\n id: null,\n type: 'radio',\n field: null,\n label: null,\n value: null,\n options: []\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend(true, {}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (this._options.value !== null) {\n this.setValue(this._options.value);\n }\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Получение id\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Установка значения\r\n * @param {string|number|null} value\r\n */\n setValue: function setValue(value) {\n if (value !== null && typeof value !== 'string' && typeof value !== 'number') {\n return;\n }\n this._value = value;\n if (this._render) {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n if (control[0]) {\n $('input', control).prop('checked', false);\n if (this._value !== null) {\n $('input[value=\"' + this._value + '\"]', control).prop('checked', true);\n }\n }\n }\n },\n /**\r\n * Получение значения\r\n * @returns {string|null}\r\n */\n getValue: function getValue() {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n var input = $('input:checked', control);\n if (input[0]) {\n var value = input.val();\n return value === '' ? null : value;\n } else {\n return this._value;\n }\n },\n /**\r\n * Получение типа поискового алгоритма\r\n */\n getAlgorithm: function getAlgorithm() {\n return 'strict';\n },\n /**\r\n * Инициализация событий\r\n */\n initEvents: function initEvents() {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n var that = this;\n $('input', control).change(function (e) {\n that._table.searchRecords();\n });\n },\n /**\r\n * Формирование контента\r\n * @returns {string}\r\n */\n render: function render() {\n this._render = true;\n var that = this;\n var options = this.getOptions();\n var field = typeof options.field === 'string' ? options.field : '';\n var items = [];\n var label = typeof options.label === 'string' || typeof options.label === 'number' ? options.label : '';\n $.each(options.options, function (key, option) {\n if (!coreuiTableUtils.isObject(option) || !option.hasOwnProperty('value') || ['string', 'numeric'].indexOf(_typeof(option.value)) === -1) {\n return;\n }\n var text = option.hasOwnProperty('text') ? option.text : option.value;\n items.push({\n text: text,\n value: option.value,\n \"class\": option.hasOwnProperty('class') && typeof option[\"class\"] === 'string' ? option[\"class\"] : that._class,\n checked: option.value == that._value\n });\n });\n return ejs.render(tpl['filters/radio.html'], {\n label: label,\n items: items,\n field: field + this.getId(),\n lang: this._table.getLang()\n });\n }\n};\n\ncoreuiTable$1.filters.select = {\n _id: null,\n _table: null,\n _value: null,\n _render: false,\n _options: {\n id: null,\n type: 'select',\n field: null,\n label: null,\n width: null,\n attr: {\n \"class\": 'form-select d-inline-block'\n },\n options: []\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend(true, {}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Получение id\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Установка значения\r\n * @param {Array|string|number|null} value\r\n */\n setValue: function setValue(value) {\n if (['string', 'number', 'object'].indexOf(_typeof(value)) < 0) {\n return;\n }\n if (_typeof(value) === 'object') {\n if (Array.isArray(value)) {\n var items = [];\n $.each(value, function (key, item) {\n if (typeof value !== 'string' && typeof value !== 'number') {\n return;\n }\n items.push(item);\n });\n this._value = items;\n } else {\n this._value = null;\n }\n } else {\n this._value = [value];\n }\n if (this._render) {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n if (control[0]) {\n $('select option:selected', control).prop('selected', false);\n if (Array.isArray(this._value)) {\n $.each(this._value, function (key, value) {\n $('select option[value=\"' + value + '\"]', control).prop('selected', true);\n });\n }\n }\n }\n },\n /**\r\n * Получение значения\r\n * @returns {Array|null}\r\n */\n getValue: function getValue() {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n if (control[0]) {\n var options = $('select option:checked', control);\n var items = [];\n $.each(options, function (key, option) {\n var value = $(option).attr('value');\n if (['string', 'number'].indexOf(_typeof(value)) >= 0 && value !== '') {\n items.push(value);\n }\n });\n return items.length > 0 ? items : null;\n } else {\n return null;\n }\n },\n /**\r\n * Инициализация событий\r\n */\n initEvents: function initEvents() {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n var that = this;\n $('select', control).change(function (e) {\n that._table.searchRecords();\n });\n },\n /**\r\n * Формирование контента\r\n * @returns {string}\r\n */\n render: function render() {\n this._render = true;\n var that = this;\n var options = this.getOptions();\n var selectOptions = [];\n var attributes = [];\n var label = typeof options.label === 'string' || typeof options.label === 'number' ? options.label : '';\n if (!options.hasOwnProperty('attr') || !coreuiTableUtils.isObject(options.attr)) {\n options.attr = {};\n }\n if (options.field) {\n options.attr.name = this._options.field;\n }\n if (options.width) {\n options.attr = coreuiTableUtils.mergeAttr({\n style: 'width:' + options.width + 'px'\n }, options.attr);\n }\n if (options.hasOwnProperty('options') && _typeof(options.options) === 'object' && options.options !== null) {\n $.each(options.options, function (key, option) {\n if (typeof option === 'string' || typeof option === 'number') {\n selectOptions.push(that._buildOption({\n type: 'option',\n value: key,\n text: option\n }));\n } else if (coreuiTableUtils.isObject(option)) {\n var type = option.hasOwnProperty('type') && typeof option.type === 'string' ? option.type : 'option';\n if (type === 'group') {\n var renderAttr = [];\n var groupAttr = {};\n var groupOptions = [];\n if (option.hasOwnProperty('attr') && coreuiTableUtils.isObject(option.attr)) {\n groupAttr = option.attr;\n }\n if (option.hasOwnProperty('label') && ['string', 'number'].indexOf(_typeof(option.label)) >= 0) {\n groupAttr.label = option.label;\n }\n $.each(groupAttr, function (name, value) {\n renderAttr.push(name + '=\"' + value + '\"');\n });\n if (Array.isArray(option.options)) {\n $.each(option.options, function (key, groupOption) {\n groupOptions.push(that._buildOption(groupOption));\n });\n }\n selectOptions.push({\n type: 'group',\n attr: renderAttr.length > 0 ? ' ' + renderAttr.join(' ') : '',\n options: groupOptions\n });\n } else {\n selectOptions.push(that._buildOption(option));\n }\n }\n });\n }\n $.each(options.attr, function (name, value) {\n attributes.push(name + '=\"' + value + '\"');\n });\n return ejs.render(tpl['filters/select.html'], {\n label: label,\n attr: attributes.length > 0 ? ' ' + attributes.join(' ') : '',\n options: selectOptions\n });\n },\n /**\r\n * Сборка опции\r\n * @param option\r\n * @return {object}\r\n * @private\r\n */\n _buildOption: function _buildOption(option) {\n var optionAttr = [];\n var optionText = option.hasOwnProperty('text') && ['string', 'number'].indexOf(_typeof(option.text)) >= 0 ? option.text : '';\n $.each(option, function (name, value) {\n if (name !== 'text') {\n optionAttr.push(name + '=\"' + value + '\"');\n }\n });\n if (Array.isArray(this._value)) {\n $.each(this._value, function (key, itemValue) {\n if (itemValue == option.value) {\n optionAttr.push('selected=\"selected\"');\n return false;\n }\n });\n } else if (this._value == option.value) {\n optionAttr.push('selected=\"selected\"');\n }\n return {\n type: 'option',\n text: optionText,\n attr: optionAttr.length > 0 ? ' ' + optionAttr.join(' ') : ''\n };\n }\n};\n\ncoreuiTable$1.filters[\"switch\"] = {\n _id: null,\n _table: null,\n _value: null,\n _render: false,\n _options: {\n id: null,\n type: 'switch',\n field: null,\n label: null,\n value: null,\n valueY: 'Y'\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend(true, {}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (this._options.value !== null) {\n this.setValue(this._options.value);\n }\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Получение id\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Установка значения\r\n * @param {string|number|null} value\r\n */\n setValue: function setValue(value) {\n if (value !== null && typeof value !== 'string' && typeof value !== 'number') {\n return;\n }\n this._value = value;\n if (this._render) {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n if (control[0]) {\n var valueY = typeof this._options.valueY === 'string' || typeof this._options.valueY === 'number' ? this._options.valueY : '';\n if (this._value === null) {\n $('input', control).prop('checked', false);\n } else if (this._value === valueY) {\n $('input', control).prop('checked', true);\n } else {\n $('input', control).prop('checked', false);\n }\n }\n }\n },\n /**\r\n * Получение значения\r\n * @returns {string}\r\n */\n getValue: function getValue() {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n var input = $('input:checked', control);\n return input[0] ? input.val() : null;\n },\n /**\r\n * Инициализация событий\r\n */\n initEvents: function initEvents() {\n var control = coreuiTableElements.getControl(this._table.getId(), this._id);\n var that = this;\n $('input', control).change(function (e) {\n that._table.searchRecords();\n });\n },\n /**\r\n * Формирование контента\r\n * @returns {string}\r\n */\n render: function render() {\n this._render = true;\n var options = this.getOptions();\n var valueY = typeof options.valueY === 'string' || typeof options.valueY === 'number' ? options.valueY : '';\n var label = typeof options.label === 'string' || typeof options.label === 'number' ? options.label : '';\n return ejs.render(tpl['filters/switch.html'], {\n id: this._id,\n valueY: valueY,\n field: typeof options.field === 'string' ? options.field : '',\n checked: this._value == valueY,\n label: label\n });\n }\n};\n\ncoreuiTable$1.search.text = {\n _id: null,\n _table: null,\n _value: null,\n _render: false,\n _options: {\n id: null,\n type: 'text',\n field: null,\n label: null,\n value: null,\n width: 200,\n attr: {\n \"class\": \"form-control d-inline-block\"\n }\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend(true, {}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (this._options.value !== null) {\n this.setValue(this._options.value);\n }\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Получение id\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Установка значения\r\n * @param {string} value\r\n */\n setValue: function setValue(value) {\n if (value !== null && typeof value !== 'string' && typeof value !== 'number') {\n return;\n }\n this._value = value;\n if (this._render) {\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n if (control[0]) {\n $('input', control).val(this._value === null ? '' : this._value);\n }\n }\n },\n /**\r\n * Получение значения\r\n * @returns {string|null}\r\n */\n getValue: function getValue() {\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n var input = $('input', control);\n if (input[0]) {\n var value = input.val();\n if (typeof value === 'string' && value !== '') {\n return value;\n }\n }\n return null;\n },\n /**\r\n * Инициализация событий\r\n * @returns {object}\r\n */\n initEvents: function initEvents() {\n var container = coreuiTableElements.getSearchContainer(this._table.getId());\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n var that = this;\n $('input', control).keyup(function (e) {\n if (e.key === 'Enter' || e.keyCode === 13) {\n that._table.searchRecords();\n container.fadeOut('fast');\n }\n });\n },\n /**\r\n * Формирование контента\r\n * @returns {string}\r\n */\n render: function render() {\n this._render = true;\n if (!coreuiTableUtils.isObject(this._options.attr)) {\n this._options.attr = {};\n }\n if (this._options.hasOwnProperty('width') && coreuiTableUtils.isNumeric(this._options.width)) {\n if (this._options.attr.hasOwnProperty('style')) {\n this._options.attr['style'] += ';width:' + this._options.width + 'px';\n } else {\n this._options.attr['style'] = 'width:' + this._options.width + 'px';\n }\n }\n this._options.attr['name'] = typeof this._options.field === 'string' ? this._options.field : '';\n this._options.attr['value'] = typeof this._value === 'string' || typeof this._value === 'number' ? this._value : '';\n if (this._options.attr.hasOwnProperty('type')) {\n delete this._options.attr.type;\n }\n var attributes = [];\n $.each(this._options.attr, function (name, value) {\n attributes.push(name + '=\"' + value + '\"');\n });\n return ejs.render(tpl['search/text.html'], {\n attr: attributes.length > 0 ? ' ' + attributes.join(' ') : ''\n });\n }\n};\n\ncoreuiTable$1.search.number = {\n _id: null,\n _table: null,\n _value: null,\n _render: false,\n _options: {\n id: null,\n type: 'number',\n field: null,\n label: null,\n value: null,\n width: 200,\n attr: {\n \"class\": \"form-control d-inline-block\"\n }\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend(true, {}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (this._options.value !== null) {\n this.setValue(this._options.value);\n }\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Получение id\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Установка значения\r\n * @param {Object} value\r\n */\n setValue: function setValue(value) {\n if (value) {\n if (!coreuiTableUtils.isObject(value)) {\n return;\n }\n var numberStart = null;\n var numberEnd = null;\n if (value.hasOwnProperty('start') && ['string', 'number'].indexOf(_typeof(value.start)) >= 0) {\n numberStart = value.start;\n }\n if (value.hasOwnProperty('end') && ['string', 'number'].indexOf(_typeof(value.end)) >= 0) {\n numberEnd = value.end;\n }\n if (numberStart === null && numberEnd === null) {\n this._value = null;\n } else {\n this._value = {\n start: numberStart,\n end: numberEnd\n };\n }\n } else {\n this._value = null;\n }\n if (this._render) {\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n if (control[0]) {\n var inputStart = $('input.number-start', control);\n var inputEnd = $('input.number-end', control);\n if (this._value === null) {\n inputStart.val('');\n inputEnd.val('');\n } else if (coreuiTableUtils.isObject(this._value)) {\n inputStart.val(_typeof(this._value.start) !== null ? this._value.start : '');\n inputEnd.val(_typeof(this._value.end) !== null ? this._value.end : '');\n }\n }\n }\n },\n /**\r\n * Получение значения\r\n * @returns {string|null}\r\n */\n getValue: function getValue() {\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n var inputStart = $('input.number-start', control);\n var inputEnd = $('input.number-end', control);\n if (inputStart[0] && inputEnd[0]) {\n var valueStart = inputStart.val();\n var valueEnd = inputEnd.val();\n if (typeof valueStart === 'string' && valueStart !== '' || typeof valueEnd === 'string' && valueEnd !== '') {\n return {\n start: valueStart !== '' ? valueStart : null,\n end: valueEnd !== '' ? valueEnd : null\n };\n }\n }\n return null;\n },\n /**\r\n * Инициализация событий\r\n * @returns {object}\r\n */\n initEvents: function initEvents() {\n var container = coreuiTableElements.getSearchContainer(this._table.getId());\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n var that = this;\n $('input.number-start, input.number-end', control).keyup(function (e) {\n if (e.key === 'Enter' || e.keyCode === 13) {\n that._table.searchRecords();\n container.fadeOut('fast');\n }\n });\n },\n /**\r\n * Формирование контента\r\n * @returns {string}\r\n */\n render: function render() {\n this._render = true;\n if (!coreuiTableUtils.isObject(this._options.attr)) {\n this._options.attr = {};\n }\n if (this._options.hasOwnProperty('width') && coreuiTableUtils.isNumeric(this._options.width)) {\n if (this._options.attr.hasOwnProperty('style')) {\n this._options.attr['style'] += ';width:' + this._options.width + 'px';\n } else {\n this._options.attr['style'] = 'width:' + this._options.width + 'px';\n }\n }\n if (this._options.attr.hasOwnProperty('type')) {\n delete this._options.attr.type;\n }\n if (this._options.attr.hasOwnProperty('value')) {\n delete this._options.attr.value;\n }\n var field = typeof this._options.field === 'string' ? this._options.field : '';\n var startAttr = [];\n var startEnd = [];\n $.each(this._options.attr, function (name, value) {\n if (['name', 'value', 'class'].indexOf(name) >= 0 || ['string', 'number'].indexOf(_typeof(value)) < 0) {\n return;\n }\n startAttr.push(name + '=\"' + value + '\"');\n startEnd.push(name + '=\"' + value + '\"');\n });\n if (this._options.attr.hasOwnProperty('class') && ['string', 'number'].indexOf(_typeof(this._options.attr[\"class\"])) >= 0) {\n startAttr.push('class=\"' + this._options.attr[\"class\"] + ' number-start\"');\n startEnd.push('class=\"' + this._options.attr[\"class\"] + ' number-end\"');\n } else {\n startAttr.push('class=\"number-start\"');\n startEnd.push('class=\"number-end\"');\n }\n if (field) {\n startAttr.push('name=\"' + field + '[start]\"');\n startEnd.push('name=\"' + field + '[end]\"');\n }\n startAttr.push('value=\"' + (this._value ? this._value.start : '') + '\"');\n startEnd.push('value=\"' + (this._value ? this._value.end : '') + '\"');\n return ejs.render(tpl['search/number.html'], {\n startAttr: startAttr.length > 0 ? ' ' + startAttr.join(' ') : '',\n endAttr: startEnd.length > 0 ? ' ' + startEnd.join(' ') : ''\n });\n }\n};\n\ncoreuiTable$1.search.date = {\n _id: null,\n _table: null,\n _value: null,\n _render: false,\n _options: {\n id: null,\n type: 'date',\n field: null,\n label: null,\n value: null,\n width: 200,\n attr: {\n \"class\": \"form-control d-inline-block\"\n }\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend(true, {}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (this._options.value !== null) {\n this.setValue(this._options.value);\n }\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Получение id\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Установка значения\r\n * @param {string} value\r\n */\n setValue: function setValue(value) {\n if (typeof value !== 'string' && value !== null) {\n return;\n }\n if (value && (value.match(/^\\d{4}\\-\\d{2}\\-\\d{2}$/) === null || isNaN(new Date(value)))) {\n return;\n }\n this._value = value;\n if (this._render) {\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n if (control[0]) {\n $('input', control).val(this._value === null ? '' : this._value);\n }\n }\n },\n /**\r\n * Получение значения\r\n * @returns {string|null}\r\n */\n getValue: function getValue() {\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n var input = $('input', control);\n if (input[0]) {\n var value = input.val();\n if (typeof value === 'string' && value !== '') {\n return value;\n }\n }\n return null;\n },\n /**\r\n * Инициализация событий\r\n * @returns {object}\r\n */\n initEvents: function initEvents() {\n var container = coreuiTableElements.getSearchContainer(this._table.getId());\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n var that = this;\n $('input', control).keyup(function (e) {\n if (e.key === 'Enter' || e.keyCode === 13) {\n that._table.searchRecords();\n container.fadeOut('fast');\n }\n });\n },\n /**\r\n * Формирование контента\r\n * @returns {string}\r\n */\n render: function render() {\n this._render = true;\n if (!coreuiTableUtils.isObject(this._options.attr)) {\n this._options.attr = {};\n }\n if (this._options.hasOwnProperty('width') && coreuiTableUtils.isNumeric(this._options.width)) {\n if (this._options.attr.hasOwnProperty('style')) {\n this._options.attr['style'] += ';width:' + this._options.width + 'px';\n } else {\n this._options.attr['style'] = 'width:' + this._options.width + 'px';\n }\n }\n this._options.attr['name'] = typeof this._options.field === 'string' ? this._options.field : '';\n this._options.attr['value'] = typeof this._value === 'string' || typeof this._value === 'number' ? this._value : '';\n if (this._options.attr.hasOwnProperty('type')) {\n delete this._options.attr.type;\n }\n var attributes = [];\n $.each(this._options.attr, function (name, value) {\n attributes.push(name + '=\"' + value + '\"');\n });\n return ejs.render(tpl['search/date.html'], {\n attr: attributes.length > 0 ? ' ' + attributes.join(' ') : ''\n });\n }\n};\n\ncoreuiTable$1.search.date_month = {\n _id: null,\n _table: null,\n _value: null,\n _render: false,\n _options: {\n id: null,\n type: 'date_month',\n field: null,\n label: null,\n value: null,\n width: 200,\n attr: {\n \"class\": \"form-control d-inline-block\"\n }\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend(true, {}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (this._options.value !== null) {\n this.setValue(this._options.value);\n }\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Получение id\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Установка значения\r\n * @param {string|null} value\r\n */\n setValue: function setValue(value) {\n if (typeof value !== 'string' && value !== null) {\n return;\n }\n if (value && (value.match(/^\\d{4}\\-\\d{2}$/) === null || isNaN(new Date(value)))) {\n return;\n }\n this._value = value;\n if (this._render) {\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n if (control[0]) {\n $('input', control).val(this._value === null ? '' : this._value);\n }\n }\n },\n /**\r\n * Получение значения\r\n * @returns {string|null}\r\n */\n getValue: function getValue() {\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n var input = $('input', control);\n if (input[0]) {\n var value = input.val();\n if (typeof value === 'string' && value !== '') {\n return value;\n }\n }\n return null;\n },\n /**\r\n * Инициализация событий\r\n * @returns {object}\r\n */\n initEvents: function initEvents() {\n var container = coreuiTableElements.getSearchContainer(this._table.getId());\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n var that = this;\n $('input', control).keyup(function (e) {\n if (e.key === 'Enter' || e.keyCode === 13) {\n that._table.searchRecords();\n container.fadeOut('fast');\n }\n });\n },\n /**\r\n * Формирование контента\r\n * @returns {string}\r\n */\n render: function render() {\n this._render = true;\n if (!coreuiTableUtils.isObject(this._options.attr)) {\n this._options.attr = {};\n }\n if (this._options.hasOwnProperty('width') && coreuiTableUtils.isNumeric(this._options.width)) {\n if (this._options.attr.hasOwnProperty('style')) {\n this._options.attr['style'] += ';width:' + this._options.width + 'px';\n } else {\n this._options.attr['style'] = 'width:' + this._options.width + 'px';\n }\n }\n this._options.attr['name'] = typeof this._options.field === 'string' ? this._options.field : '';\n this._options.attr['value'] = typeof this._value === 'string' || typeof this._value === 'number' ? this._value : '';\n if (this._options.attr.hasOwnProperty('type')) {\n delete this._options.attr.type;\n }\n var attributes = [];\n $.each(this._options.attr, function (name, value) {\n attributes.push(name + '=\"' + value + '\"');\n });\n return ejs.render(tpl['search/date_month.html'], {\n attr: attributes.length > 0 ? ' ' + attributes.join(' ') : ''\n });\n }\n};\n\ncoreuiTable$1.search.datetime = {\n _id: null,\n _table: null,\n _value: null,\n _render: false,\n _options: {\n id: null,\n type: 'datetime',\n field: null,\n label: null,\n value: null,\n width: 200,\n attr: {\n \"class\": \"form-control d-inline-block\"\n }\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend(true, {}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (this._options.value !== null) {\n this.setValue(this._options.value);\n }\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Получение id\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Установка значения\r\n * @param {string} value\r\n */\n setValue: function setValue(value) {\n if (typeof value !== 'string' && value !== null) {\n return;\n }\n if (value && (value.match(/^\\d{4}\\-\\d{2}\\-\\d{2} \\d{2}:\\d{2}:\\d{2}$/) === null || isNaN(new Date(value)))) {\n return;\n }\n this._value = value;\n if (this._render) {\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n if (control[0]) {\n $('input', control).val(this._value === null ? '' : this._value);\n }\n }\n },\n /**\r\n * Получение значения\r\n * @returns {string}\r\n */\n getValue: function getValue() {\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n var input = $('input', control);\n if (input[0]) {\n var value = input.val();\n if (typeof value === 'string' && value !== '') {\n return value;\n }\n }\n return null;\n },\n /**\r\n * Инициализация событий\r\n * @returns {object}\r\n */\n initEvents: function initEvents() {\n var container = coreuiTableElements.getSearchContainer(this._table.getId());\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n var that = this;\n $('input', control).keyup(function (e) {\n if (e.key === 'Enter' || e.keyCode === 13) {\n that._table.searchRecords();\n container.fadeOut('fast');\n }\n });\n },\n /**\r\n * Формирование контента\r\n * @returns {string}\r\n */\n render: function render() {\n this._render = true;\n if (!coreuiTableUtils.isObject(this._options.attr)) {\n this._options.attr = {};\n }\n if (this._options.hasOwnProperty('width') && coreuiTableUtils.isNumeric(this._options.width)) {\n if (this._options.attr.hasOwnProperty('style')) {\n this._options.attr['style'] += ';width:' + this._options.width + 'px';\n } else {\n this._options.attr['style'] = 'width:' + this._options.width + 'px';\n }\n }\n this._options.attr['name'] = typeof this._options.field === 'string' ? this._options.field : '';\n this._options.attr['value'] = typeof this._value === 'string' || typeof this._value === 'number' ? this._value : '';\n if (this._options.attr.hasOwnProperty('type')) {\n delete this._options.attr.type;\n }\n var attributes = [];\n $.each(this._options.attr, function (name, value) {\n attributes.push(name + '=\"' + value + '\"');\n });\n return ejs.render(tpl['search/datetime.html'], {\n attr: attributes.length > 0 ? ' ' + attributes.join(' ') : ''\n });\n }\n};\n\ncoreuiTable$1.search.date_range = {\n _id: null,\n _table: null,\n _value: null,\n _render: false,\n _options: {\n id: null,\n type: 'date_range',\n field: null,\n label: null,\n value: null,\n width: 200,\n attr: {\n \"class\": \"form-control d-inline-block\"\n }\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend(true, {}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (this._options.value !== null) {\n this.setValue(this._options.value);\n }\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Получение id\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Установка значения\r\n * @param {Object} value\r\n */\n setValue: function setValue(value) {\n if (value) {\n if (!coreuiTableUtils.isObject(value)) {\n return;\n }\n var dateStart = null;\n var dateEnd = null;\n if (value.hasOwnProperty('start') && typeof value.start === 'string' && value.start.match(/^\\d{4}\\-\\d{2}\\-\\d{2}$/) === null && isNaN(new Date(value.start))) {\n dateStart = value.start;\n }\n if (value.hasOwnProperty('end') && typeof value.end === 'string' && value.end.match(/^\\d{4}\\-\\d{2}\\-\\d{2}$/) === null && isNaN(new Date(value.end))) {\n dateEnd = value.end;\n }\n if (dateStart === null && dateEnd === null) {\n this._value = null;\n } else {\n this._value = {\n start: dateStart,\n end: dateEnd\n };\n }\n } else {\n this._value = null;\n }\n if (this._render) {\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n if (control[0]) {\n var inputStart = $('input.date-start', control);\n var inputEnd = $('input.date-end', control);\n if (this._value === null) {\n inputStart.val('');\n inputEnd.val('');\n } else if (coreuiTableUtils.isObject(this._value)) {\n inputStart.val(_typeof(this._value.start) !== null ? this._value.start : '');\n inputEnd.val(_typeof(this._value.end) !== null ? this._value.end : '');\n }\n }\n }\n },\n /**\r\n * Получение значения\r\n * @returns {Object|null}\r\n */\n getValue: function getValue() {\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n var inputStart = $('input.date-start', control);\n var inputEnd = $('input.date-end', control);\n if (inputStart[0] && inputEnd[0]) {\n var valueStart = inputStart.val();\n var valueEnd = inputEnd.val();\n if (typeof valueStart === 'string' && valueStart !== '' || typeof valueEnd === 'string' && valueEnd !== '') {\n return {\n start: valueStart !== '' ? valueStart : null,\n end: valueEnd !== '' ? valueEnd : null\n };\n }\n }\n return null;\n },\n /**\r\n * Инициализация событий\r\n * @returns {object}\r\n */\n initEvents: function initEvents() {\n var container = coreuiTableElements.getSearchContainer(this._table.getId());\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n var that = this;\n $('input.date-start, input.date-end', control).keyup(function (e) {\n if (e.key === 'Enter' || e.keyCode === 13) {\n that._table.searchRecords();\n container.fadeOut('fast');\n }\n });\n },\n /**\r\n * Формирование контента\r\n * @returns {string}\r\n */\n render: function render() {\n this._render = true;\n var options = this.getOptions();\n if (!coreuiTableUtils.isObject(options.attr)) {\n options.attr = {};\n }\n if (options.hasOwnProperty('width') && coreuiTableUtils.isNumeric(options.width)) {\n if (options.attr.hasOwnProperty('style')) {\n options.attr['style'] += ';width:' + options.width + 'px';\n } else {\n options.attr['style'] = 'width:' + options.width + 'px';\n }\n }\n if (options.attr.hasOwnProperty('type')) {\n delete options.attr.type;\n }\n if (options.attr.hasOwnProperty('value')) {\n delete options.attr.value;\n }\n var field = typeof options.field === 'string' ? options.field : '';\n var startAttr = [];\n var startEnd = [];\n $.each(options.attr, function (name, value) {\n if (['name', 'value', 'class'].indexOf(name) >= 0 || ['string', 'number'].indexOf(_typeof(value)) < 0) {\n return;\n }\n startAttr.push(name + '=\"' + value + '\"');\n startEnd.push(name + '=\"' + value + '\"');\n });\n if (options.attr.hasOwnProperty('class') && ['string', 'number'].indexOf(_typeof(options.attr[\"class\"])) >= 0) {\n startAttr.push('class=\"' + options.attr[\"class\"] + ' date-start\"');\n startEnd.push('class=\"' + options.attr[\"class\"] + ' date-end\"');\n } else {\n startAttr.push('class=\"date-start\"');\n startEnd.push('class=\"date-end\"');\n }\n if (field) {\n startAttr.push('name=\"' + field + '[start]\"');\n startEnd.push('name=\"' + field + '[end]\"');\n }\n startAttr.push('value=\"' + (this._value ? this._value.start : '') + '\"');\n startEnd.push('value=\"' + (this._value ? this._value.end : '') + '\"');\n return ejs.render(tpl['search/date_range.html'], {\n startAttr: startAttr.length > 0 ? ' ' + startAttr.join(' ') : '',\n endAttr: startEnd.length > 0 ? ' ' + startEnd.join(' ') : ''\n });\n }\n};\n\ncoreuiTable$1.search.datetime_range = {\n _id: null,\n _table: null,\n _value: null,\n _render: false,\n _options: {\n id: null,\n type: 'datetime_range',\n field: null,\n label: null,\n value: null,\n width: 200,\n attr: {\n \"class\": \"form-control d-inline-block\"\n }\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend(true, {}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (this._options.value !== null) {\n this.setValue(this._options.value);\n }\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Получение id\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Установка значения\r\n * @param {Object} value\r\n */\n setValue: function setValue(value) {\n if (value) {\n if (!coreuiTableUtils.isObject(value)) {\n return;\n }\n var dateStart = null;\n var dateEnd = null;\n if (value.hasOwnProperty('start') && typeof value.start === 'string' && value.start.match(/^\\d{4}\\-\\d{2}\\-\\d{2} \\d{2}:\\d{2}:\\d{2}$/) === null && isNaN(new Date(value.start))) {\n dateStart = value.start;\n }\n if (value.hasOwnProperty('end') && typeof value.end === 'string' && value.end.match(/^\\d{4}\\-\\d{2}\\-\\d{2} \\d{2}:\\d{2}:\\d{2}$/) === null && isNaN(new Date(value.end))) {\n dateEnd = value.end;\n }\n if (dateStart === null && dateEnd === null) {\n this._value = null;\n } else {\n this._value = {\n start: dateStart,\n end: dateEnd\n };\n }\n } else {\n this._value = null;\n }\n if (this._render) {\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n if (control[0]) {\n var inputStart = $('input.date-start', control);\n var inputEnd = $('input.date-end', control);\n if (this._value === null) {\n inputStart.val('');\n inputEnd.val('');\n } else if (coreuiTableUtils.isObject(this._value)) {\n inputStart.val(_typeof(this._value.start) !== null ? this._value.start : '');\n inputEnd.val(_typeof(this._value.end) !== null ? this._value.end : '');\n }\n }\n }\n },\n /**\r\n * Получение значения\r\n * @returns {Object|null}\r\n */\n getValue: function getValue() {\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n var inputStart = $('input.date-start', control);\n var inputEnd = $('input.date-end', control);\n if (inputStart[0] && inputEnd[0]) {\n var valueStart = inputStart.val();\n var valueEnd = inputEnd.val();\n if (typeof valueStart === 'string' && valueStart !== '' || typeof valueEnd === 'string' && valueEnd !== '') {\n return {\n start: valueStart !== '' ? valueStart : null,\n end: valueEnd !== '' ? valueEnd : null\n };\n }\n }\n return null;\n },\n /**\r\n * Инициализация событий\r\n * @returns {object}\r\n */\n initEvents: function initEvents() {\n var container = coreuiTableElements.getSearchContainer(this._table.getId());\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n var that = this;\n $('input.date-start, input.date-end', control).keyup(function (e) {\n if (e.key === 'Enter' || e.keyCode === 13) {\n that._table.searchRecords();\n container.fadeOut('fast');\n }\n });\n },\n /**\r\n * Формирование контента\r\n * @returns {string}\r\n */\n render: function render() {\n this._render = true;\n if (!coreuiTableUtils.isObject(this._options.attr)) {\n this._options.attr = {};\n }\n if (this._options.hasOwnProperty('width') && coreuiTableUtils.isNumeric(this._options.width)) {\n if (this._options.attr.hasOwnProperty('style')) {\n this._options.attr['style'] += ';width:' + this._options.width + 'px';\n } else {\n this._options.attr['style'] = 'width:' + this._options.width + 'px';\n }\n }\n if (this._options.attr.hasOwnProperty('type')) {\n delete this._options.attr.type;\n }\n if (this._options.attr.hasOwnProperty('value')) {\n delete this._options.attr.value;\n }\n var field = typeof this._options.field === 'string' ? this._options.field : '';\n var startAttr = [];\n var startEnd = [];\n $.each(this._options.attr, function (name, value) {\n if (['name', 'value', 'class'].indexOf(name) >= 0 || ['string', 'number'].indexOf(_typeof(value)) < 0) {\n return;\n }\n startAttr.push(name + '=\"' + value + '\"');\n startEnd.push(name + '=\"' + value + '\"');\n });\n if (this._options.attr.hasOwnProperty('class') && ['string', 'number'].indexOf(_typeof(this._options.attr[\"class\"])) >= 0) {\n startAttr.push('class=\"' + this._options.attr[\"class\"] + ' date-start\"');\n startEnd.push('class=\"' + this._options.attr[\"class\"] + ' date-end\"');\n } else {\n startAttr.push('class=\"date-start\"');\n startEnd.push('class=\"date-end\"');\n }\n if (field) {\n startAttr.push('name=\"' + field + '[start]\"');\n startEnd.push('name=\"' + field + '[end]\"');\n }\n startAttr.push('value=\"' + (this._value ? this._value.start : '') + '\"');\n startEnd.push('value=\"' + (this._value ? this._value.end : '') + '\"');\n return ejs.render(tpl['search/datetime_range.html'], {\n startAttr: startAttr.length > 0 ? ' ' + startAttr.join(' ') : '',\n endAttr: startEnd.length > 0 ? ' ' + startEnd.join(' ') : ''\n });\n }\n};\n\ncoreuiTable$1.search.checkbox = {\n _id: null,\n _table: null,\n _value: null,\n _render: false,\n _options: {\n id: null,\n type: 'checkbox',\n field: null,\n label: null,\n value: null,\n options: []\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend(true, {}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (this._options.value !== null) {\n this.setValue(this._options.value);\n }\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Получение id\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Установка значения\r\n * @param {Array|null} value\r\n */\n setValue: function setValue(value) {\n if (['string', 'number', 'object'].indexOf(_typeof(value)) < 0) {\n return;\n }\n if (_typeof(value) === 'object') {\n if (Array.isArray(value)) {\n var items = [];\n $.each(value, function (key, item) {\n if (typeof value !== 'string' && typeof value !== 'number') {\n return;\n }\n items.push(item);\n });\n this._value = items;\n } else {\n this._value = null;\n }\n } else {\n this._value = [value];\n }\n if (this._render) {\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n if (control[0]) {\n $('input:checked', control).prop('checked', false);\n if (Array.isArray(this._value)) {\n $.each(this._value, function (key, value) {\n $('input[value=\"' + value + '\"]', control).prop('checked', true);\n });\n }\n }\n }\n },\n /**\r\n * Получение значения\r\n * @returns {Array|null}\r\n */\n getValue: function getValue() {\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n if (control[0]) {\n var inputs = $('input:checked', control);\n var items = [];\n $.each(inputs, function (key, input) {\n var value = $(input).attr('value');\n if (['string', 'number'].indexOf(_typeof(value)) >= 0 && value !== '') {\n items.push(value);\n }\n });\n return items.length > 0 ? items : null;\n } else {\n return this._value;\n }\n },\n /**\r\n * Инициализация событий\r\n */\n initEvents: function initEvents() {},\n /**\r\n * Формирование контента\r\n * @returns {string}\r\n */\n render: function render() {\n this._render = true;\n var that = this;\n var options = [];\n $.each(this._options.options, function (key, option) {\n if (!coreuiTableUtils.isObject(option) || !option.hasOwnProperty('value') || ['string', 'numeric'].indexOf(_typeof(option.value)) === -1) {\n return;\n }\n var checked = Array.isArray(that._value) ? that._value.indexOf(option.value) >= 0 : false;\n var text = option.hasOwnProperty('text') ? option.text : option.value;\n options.push({\n text: text,\n value: option.value,\n checked: checked\n });\n });\n return ejs.render(tpl['search/checkbox.html'], {\n options: options,\n field: typeof this._options.field === 'string' ? this._options.field : ''\n });\n }\n};\n\ncoreuiTable$1.search.radio = {\n _id: null,\n _table: null,\n _value: null,\n _render: false,\n _options: {\n id: null,\n type: 'radio',\n field: null,\n label: null,\n value: null,\n options: []\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend(true, {}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (this._options.value !== null) {\n this.setValue(this._options.value);\n }\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Получение id\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Установка значения\r\n * @param {string} value\r\n */\n setValue: function setValue(value) {\n if (value !== null && typeof value !== 'string' && typeof value !== 'number') {\n return;\n }\n this._value = value;\n if (this._render) {\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n if (control[0]) {\n $('input', control).prop('checked', false);\n if (this._value !== null) {\n $('input[value=\"' + this._value + '\"]', control).prop('checked', true);\n }\n }\n }\n },\n /**\r\n * Получение значения\r\n * @returns {string|null}\r\n */\n getValue: function getValue() {\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n var input = $('input:checked', control);\n if (input[0]) {\n var value = input.val();\n return value === '' ? null : value;\n } else {\n return this._value;\n }\n },\n /**\r\n * Получение типа поискового алгоритма\r\n */\n getAlgorithm: function getAlgorithm() {\n return 'strict';\n },\n /**\r\n * Инициализация событий\r\n * @returns {object}\r\n */\n initEvents: function initEvents() {},\n /**\r\n * Формирование контента\r\n * @returns {string}\r\n */\n render: function render() {\n this._render = true;\n var that = this;\n var checkedAll = true;\n var options = [];\n $.each(this._options.options, function (key, option) {\n if (!coreuiTableUtils.isObject(option) || !option.hasOwnProperty('value') || ['string', 'numeric'].indexOf(_typeof(option.value)) === -1) {\n return;\n }\n var checked = option.value == that._value;\n var text = option.hasOwnProperty('text') ? option.text : option.value;\n if (checked) {\n checkedAll = false;\n }\n options.push({\n text: text,\n value: option.value,\n checked: checked\n });\n });\n return ejs.render(tpl['search/radio.html'], {\n options: options,\n checkedAll: checkedAll,\n field: typeof this._options.field === 'string' ? this._options.field : '',\n lang: this._table.getLang()\n });\n }\n};\n\ncoreuiTable$1.search.select = {\n _id: null,\n _table: null,\n _value: null,\n _render: false,\n _options: {\n id: null,\n type: 'select',\n field: null,\n label: null,\n width: null,\n value: null,\n attr: {\n \"class\": 'form-select d-inline-block'\n },\n options: []\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend(true, {}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (this._options.value !== null) {\n this.setValue(this._options.value);\n }\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Получение id\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Установка значения\r\n * @param {Array} value\r\n */\n setValue: function setValue(value) {\n if (['string', 'number', 'object'].indexOf(_typeof(value)) < 0) {\n return;\n }\n if (_typeof(value) === 'object') {\n if (Array.isArray(value)) {\n var items = [];\n $.each(value, function (key, item) {\n if (typeof value !== 'string' && typeof value !== 'number') {\n return;\n }\n items.push(item);\n });\n this._value = items;\n } else {\n this._value = null;\n }\n } else {\n this._value = [value];\n }\n if (this._render) {\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n if (control[0]) {\n $('select option:selected', control).prop('selected', false);\n if (Array.isArray(this._value)) {\n $.each(this._value, function (key, value) {\n $('select option[value=\"' + value + '\"]', control).prop('selected', true);\n });\n }\n }\n }\n },\n /**\r\n * Получение значения\r\n * @returns {Array|null}\r\n */\n getValue: function getValue() {\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n if (control[0]) {\n var options = $('select option:selected', control);\n var items = [];\n $.each(options, function (key, option) {\n var value = $(option).attr('value');\n if (['string', 'number'].indexOf(_typeof(value)) >= 0 && value !== '') {\n items.push(value);\n }\n });\n return items.length > 0 ? items : null;\n } else {\n return this._value;\n }\n },\n /**\r\n * Инициализация событий\r\n * @returns {object}\r\n */\n initEvents: function initEvents() {},\n /**\r\n * Формирование контента\r\n * @returns {string}\r\n */\n render: function render() {\n this._render = true;\n var that = this;\n var options = this.getOptions();\n var selectOptions = [];\n var attributes = [];\n if (!options.hasOwnProperty('attr') || !coreuiTableUtils.isObject(options.attr)) {\n options.attr = {};\n }\n if (options.field) {\n options.attr.name = this._options.field;\n }\n if (options.width) {\n options.attr = coreuiTableUtils.mergeAttr({\n style: 'width:' + options.width + 'px'\n }, options.attr);\n }\n if (options.hasOwnProperty('options') && _typeof(options.options) === 'object' && options.options !== null) {\n $.each(options.options, function (key, option) {\n if (typeof option === 'string' || typeof option === 'number') {\n selectOptions.push(that._buildOption({\n type: 'option',\n value: key,\n text: option\n }));\n } else if (coreuiTableUtils.isObject(option)) {\n var type = option.hasOwnProperty('type') && typeof option.type === 'string' ? option.type : 'option';\n if (type === 'group') {\n var renderAttr = [];\n var groupAttr = {};\n var groupOptions = [];\n if (option.hasOwnProperty('attr') && coreuiTableUtils.isObject(option.attr)) {\n groupAttr = option.attr;\n }\n if (option.hasOwnProperty('label') && ['string', 'number'].indexOf(_typeof(option.label)) >= 0) {\n groupAttr.label = option.label;\n }\n $.each(groupAttr, function (name, value) {\n renderAttr.push(name + '=\"' + value + '\"');\n });\n if (Array.isArray(option.options)) {\n $.each(option.options, function (key, groupOption) {\n groupOptions.push(that._buildOption(groupOption));\n });\n }\n selectOptions.push({\n type: 'group',\n attr: renderAttr.length > 0 ? ' ' + renderAttr.join(' ') : '',\n options: groupOptions\n });\n } else {\n selectOptions.push(that._buildOption(option));\n }\n }\n });\n }\n $.each(options.attr, function (name, value) {\n attributes.push(name + '=\"' + value + '\"');\n });\n return ejs.render(tpl['search/select.html'], {\n field: options,\n value: this._value,\n attr: attributes.length > 0 ? ' ' + attributes.join(' ') : '',\n options: selectOptions\n });\n },\n /**\r\n * Сборка опции\r\n * @param option\r\n * @return {object}\r\n * @private\r\n */\n _buildOption: function _buildOption(option) {\n var optionAttr = [];\n var optionText = option.hasOwnProperty('text') && ['string', 'number'].indexOf(_typeof(option.text)) >= 0 ? option.text : '';\n $.each(option, function (name, value) {\n if (name !== 'text') {\n optionAttr.push(name + '=\"' + value + '\"');\n }\n });\n if (Array.isArray(this._value)) {\n $.each(this._value, function (key, itemValue) {\n if (itemValue == option.value) {\n optionAttr.push('selected=\"selected\"');\n return false;\n }\n });\n } else if (this._value == option.value) {\n optionAttr.push('selected=\"selected\"');\n }\n return {\n type: 'option',\n text: optionText,\n attr: optionAttr.length > 0 ? ' ' + optionAttr.join(' ') : ''\n };\n }\n};\n\ncoreuiTable$1.search[\"switch\"] = {\n _id: null,\n _table: null,\n _value: null,\n _render: false,\n _options: {\n id: null,\n type: 'switch',\n field: null,\n value: null,\n valueY: 'Y'\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._options = $.extend(true, {}, this._options, options);\n this._table = table;\n this._id = this._options.hasOwnProperty('id') && typeof this._options.id === 'string' && this._options.id ? this._options.id : coreuiTableUtils.hashCode();\n if (this._options.value !== null) {\n this.setValue(this._options.value);\n }\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Получение id\r\n * @returns {string}\r\n */\n getId: function getId() {\n return this._id;\n },\n /**\r\n * Установка значения\r\n * @param {string|number|null} value\r\n */\n setValue: function setValue(value) {\n if (value !== null && typeof value !== 'string' && typeof value !== 'number') {\n return;\n }\n this._value = value;\n if (this._render) {\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n if (control[0]) {\n var valueY = typeof this._options.valueY === 'string' || typeof this._options.valueY === 'number' ? this._options.valueY : '';\n if (this._value === null) {\n $('input', control).prop('checked', false);\n } else if (this._value === valueY) {\n $('input', control).prop('checked', true);\n } else {\n $('input', control).prop('checked', false);\n }\n }\n }\n },\n /**\r\n * Получение значения\r\n * @returns {string}\r\n */\n getValue: function getValue() {\n var control = coreuiTableElements.getSearchControl(this._table.getId(), this._id);\n var input = $('input:checked', control);\n return input[0] ? input.val() : null;\n },\n /**\r\n * Инициализация событий\r\n */\n initEvents: function initEvents() {},\n /**\r\n * Формирование контента\r\n * @returns {string}\r\n */\n render: function render() {\n this._render = true;\n var options = this.getOptions();\n var valueY = typeof options.valueY === 'string' || typeof options.valueY === 'number' ? options.valueY : '';\n return ejs.render(tpl['search/switch.html'], {\n id: this._id,\n valueY: valueY,\n field: typeof options.field === 'string' ? options.field : '',\n checked: this._value == valueY\n });\n }\n};\n\ncoreuiTable$1.columns.date = {\n _table: null,\n _options: {\n type: 'date',\n field: null,\n label: null,\n show: true,\n width: null,\n format: 'DD.MM.YYYY',\n attr: {},\n attrHeader: {},\n render: null\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._table = table;\n this._options = $.extend({}, this._options, options);\n },\n /**\r\n * Установка видимости колонки\r\n * @param {boolean} isShow\r\n */\n setShow: function setShow(isShow) {\n this._options.show = !!isShow;\n },\n /**\r\n * Видимости колонки\r\n */\n isShow: function isShow() {\n return !!this._options.show;\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend({}, this._options);\n },\n /**\r\n * Формирование контента\r\n * @param {string} content\r\n * @param {object} record\r\n * @returns {string}\r\n */\n render: function render(content, record) {\n if (typeof content !== 'string') {\n return '';\n }\n try {\n if (content !== '') {\n var date = new Date(content);\n content = this._options.format.replace(/YYYY/g, this._strPadLeft(date.getFullYear(), 4)).replace(/MM/g, this._strPadLeft(date.getMonth() + 1, 2)).replace(/M/g, date.getMonth() + 1).replace(/DD/g, this._strPadLeft(date.getDate(), 2)).replace(/D/g, date.getDate());\n }\n } catch (e) {\n content = '';\n }\n return content;\n },\n /**\r\n * Размерность строки\r\n * @param {string} str\r\n * @param {int} count\r\n * @param {string} repeat\r\n * @returns {string}\r\n */\n _strPadLeft: function _strPadLeft(str, count, repeat) {\n str = String(str);\n if (str.length >= count) {\n return str;\n }\n repeat = repeat ? repeat : '0';\n return (repeat.repeat(count) + str).slice(-count);\n }\n};\n\ncoreuiTable$1.columns.datetime = {\n _table: null,\n _options: {\n type: 'datetime',\n field: null,\n label: null,\n show: true,\n width: null,\n format: 'DD.MM.YYYY hh:mm:ss',\n attr: {},\n attrHeader: {},\n render: null\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._table = table;\n this._options = $.extend({}, this._options, options);\n },\n /**\r\n * Установка видимости колонки\r\n * @param {boolean} isShow\r\n */\n setShow: function setShow(isShow) {\n this._options.show = !!isShow;\n },\n /**\r\n * Видимости колонки\r\n */\n isShow: function isShow() {\n return !!this._options.show;\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend({}, this._options);\n },\n /**\r\n * Формирование контента\r\n * @param {string} content\r\n * @param {object} record\r\n * @returns {string}\r\n */\n render: function render(content, record) {\n if (typeof content !== 'string') {\n return '';\n }\n try {\n if (content !== '') {\n var date = new Date(content);\n content = this._options.format.replace(/YYYY/g, this._strPadLeft(date.getFullYear(), 4)).replace(/MM/g, this._strPadLeft(date.getMonth() + 1, 2)).replace(/M/g, date.getMonth() + 1).replace(/DD/g, this._strPadLeft(date.getDate(), 2)).replace(/D/g, date.getDate()).replace(/hh/g, this._strPadLeft(date.getHours(), 2)).replace(/mm/g, this._strPadLeft(date.getMinutes(), 2)).replace(/m/g, date.getMinutes()).replace(/ss/g, this._strPadLeft(date.getSeconds(), 2)).replace(/s/g, date.getSeconds());\n }\n } catch (e) {\n content = '';\n }\n return content;\n },\n /**\r\n * Размерность строки\r\n * @param {string} str\r\n * @param {int} count\r\n * @param {string} repeat\r\n * @returns {string}\r\n */\n _strPadLeft: function _strPadLeft(str, count, repeat) {\n str = String(str);\n if (str.length >= count) {\n return str;\n }\n repeat = repeat ? repeat : '0';\n return (repeat.repeat(count) + str).slice(-count);\n }\n};\n\ncoreuiTable$1.columns.html = {\n _table: null,\n _options: {\n type: 'html',\n field: null,\n label: null,\n show: true,\n width: null,\n minWidth: null,\n maxWidth: null,\n noWrap: null,\n noWrapToggle: null,\n attr: {},\n attrHeader: {},\n render: null\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._table = table;\n this._options = $.extend({}, this._options, options);\n var tableOptions = this._table.getOptions();\n if (this._options.noWrap || this._options.noWrap === null && tableOptions.noWrap) {\n if (!this._options.attr) {\n this._options.attr = {\n \"class\": 'coreui_table__no-wrap'\n };\n } else {\n this._options.attr = coreuiTableUtils.mergeAttr(this._options.attr, {\n \"class\": 'coreui_table__no-wrap'\n });\n }\n this._options.noWrap = true;\n if (this._options.noWrapToggle || this._options.noWrapToggle === null && tableOptions.noWrapToggle) {\n this._options.noWrapToggle = true;\n }\n }\n },\n /**\r\n * Установка видимости колонки\r\n * @param {boolean} isShow\r\n */\n setShow: function setShow(isShow) {\n this._options.show = !!isShow;\n },\n /**\r\n * Видимости колонки\r\n */\n isShow: function isShow() {\n return !!this._options.show;\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend({}, this._options);\n },\n /**\r\n * Формирование контента\r\n * @param {string|HTMLElement|jQuery} content\r\n * @param {object} record\r\n * @returns {string}\r\n */\n render: function render(content, record) {\n if (['string', 'bigint', 'symbol', 'number'].indexOf(_typeof(content)) < 0 && !(content instanceof HTMLElement) && !(window.hasOwnProperty('jQuery') && content instanceof jQuery)) {\n return '';\n }\n if (this._options.noWrap) {\n content = $('
').append(content);\n if (this._options.noWrapToggle) {\n content = $(content).after('');\n }\n }\n return content;\n }\n};\n\ncoreuiTable$1.columns.number = {\n _table: null,\n _options: {\n type: 'number',\n field: null,\n label: null,\n show: true,\n width: null,\n minWidth: null,\n maxWidth: null,\n noWrap: null,\n noWrapToggle: null,\n attr: {},\n attrHeader: {},\n render: null\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._table = table;\n this._options = $.extend({}, this._options, options);\n var tableOptions = this._table.getOptions();\n if (this._options.noWrap || this._options.noWrap === null && tableOptions.noWrap) {\n if (!this._options.attr) {\n this._options.attr = {\n \"class\": 'coreui_table__no-wrap'\n };\n } else {\n this._options.attr = coreuiTableUtils.mergeAttr(this._options.attr, {\n \"class\": 'coreui_table__no-wrap'\n });\n }\n this._options.noWrap = true;\n if (this._options.noWrapToggle || this._options.noWrapToggle === null && tableOptions.noWrapToggle) {\n this._options.noWrapToggle = true;\n }\n }\n },\n /**\r\n * Установка видимости колонки\r\n * @param {boolean} isShow\r\n */\n setShow: function setShow(isShow) {\n this._options.show = !!isShow;\n },\n /**\r\n * Видимости колонки\r\n */\n isShow: function isShow() {\n return !!this._options.show;\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend({}, this._options);\n },\n /**\r\n * Формирование контента\r\n * @param {string} content\r\n * @param {object} record\r\n * @returns {string}\r\n */\n render: function render(content, record) {\n if (['string', 'bigint', 'symbol', 'number'].indexOf(_typeof(content)) < 0) {\n return '';\n }\n content = String(content).replace(/,/g, '.').replace(/[^0-9\\-\\.]/g, '').replace(/[\\s]{2,}/g, ' ');\n content = content.replace(/(?' + content + '';\n if (this._options.noWrapToggle) {\n content += '';\n }\n }\n return content;\n }\n};\n\ncoreuiTable$1.columns.money = {\n _table: null,\n _options: {\n type: 'money',\n field: null,\n label: null,\n show: true,\n width: null,\n minWidth: null,\n maxWidth: null,\n noWrap: null,\n noWrapToggle: null,\n currency: null,\n attr: {\n \"class\": 'text-end'\n },\n attrHeader: {\n \"class\": 'text-end'\n },\n render: null\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._table = table;\n this._options = $.extend({}, this._options, options);\n var tableOptions = this._table.getOptions();\n if (this._options.noWrap || this._options.noWrap === null && tableOptions.noWrap) {\n if (!this._options.attr) {\n this._options.attr = {\n \"class\": 'coreui_table__no-wrap'\n };\n } else {\n this._options.attr = coreuiTableUtils.mergeAttr(this._options.attr, {\n \"class\": 'coreui_table__no-wrap'\n });\n }\n this._options.noWrap = true;\n if (this._options.noWrapToggle || this._options.noWrapToggle === null && tableOptions.noWrapToggle) {\n this._options.noWrapToggle = true;\n }\n }\n },\n /**\r\n * Установка видимости колонки\r\n * @param {boolean} isShow\r\n */\n setShow: function setShow(isShow) {\n this._options.show = !!isShow;\n },\n /**\r\n * Видимости колонки\r\n */\n isShow: function isShow() {\n return !!this._options.show;\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend({}, this._options);\n },\n /**\r\n * Формирование контента\r\n * @param {string} content\r\n * @param {object} record\r\n * @returns {string}\r\n */\n render: function render(content, record) {\n if (['string', 'bigint', 'symbol', 'number'].indexOf(_typeof(content)) < 0) {\n return '';\n }\n if (isNaN(content)) {\n content = content.toString().replace(/(\\d)(?=(\\d\\d\\d)+([^\\d]|$))/g, '$1 ');\n } else {\n content = Number(content).toFixed(2).toString();\n content = content.replace(/(\\d)(?=(\\d\\d\\d)+([^\\d]|$))/g, '$1 ');\n }\n if (this._options.currency && ['string', 'number'].indexOf(_typeof(this._options.currency)) >= 0) {\n content += ' ' + this._options.currency + '';\n }\n if (this._options.noWrap) {\n content = '
' + content + '
';\n if (this._options.noWrapToggle) {\n content += '';\n }\n }\n return content;\n }\n};\n\ncoreuiTable$1.columns.numbers = {\n _table: null,\n _options: {\n type: 'numbers',\n label: '№',\n width: 20,\n attr: {\n \"class\": 'text-end'\n },\n attrHeader: null\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._table = table;\n this._options = $.extend(true, {}, this._options, options);\n },\n /**\r\n * Видимости колонки\r\n */\n isShow: function isShow() {\n return true;\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend({}, this._options);\n },\n /**\r\n * Формирование контента\r\n * @param {string} content\r\n * @param {object} record\r\n * @returns {string}\r\n */\n render: function render(content, record) {\n return this._table._recordsNumber;\n }\n};\n\ncoreuiTable$1.columns.select = {\n _table: null,\n _options: {\n type: 'select',\n field: null,\n label: '',\n show: true,\n width: 35,\n attr: {\n \"class\": 'coreui-table__select_container text-center'\n },\n attrHeader: {\n \"class\": 'text-center'\n }\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n if (options.hasOwnProperty('attr')) {\n options.attr = CoreUI.table._mergeAttr(this._options.attr, options.attr);\n }\n if (options.hasOwnProperty('attrHeader')) {\n options.attrHeader = CoreUI.table._mergeAttr(this._options.attrHeader, options.attrHeader);\n }\n this._table = table;\n this._options = $.extend(true, {}, this._options, options);\n this._options.label = tpl['columns/select_label.html'];\n\n // Показ строк\n this._table.on('records_show', function () {\n var selects = coreuiTableElements.getRowsSelects(table.getId());\n var selectAll = coreuiTableElements.getRowsSelectAll(table.getId());\n\n // Отмена обработки нажатия в select колонках\n $(selects).click(function (event) {\n event.stopPropagation();\n });\n\n // Выбор всех строк\n selectAll.click(function (event) {\n if ($(this).is(':checked')) {\n table.selectAll();\n } else {\n table.unselectAll();\n }\n });\n });\n },\n /**\r\n * Установка видимости колонки\r\n * @param {boolean} isShow\r\n */\n setShow: function setShow(isShow) {\n this._options.show = !!isShow;\n },\n /**\r\n * Видимости колонки\r\n */\n isShow: function isShow() {\n return !!this._options.show;\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend({}, this._options);\n },\n /**\r\n * Формирование контента\r\n * @param {string} content\r\n * @param {object} record\r\n * @returns {string}\r\n */\n render: function render(content, record) {\n var select = $(ejs.render(tpl['columns/select.html'], {\n index: record.index\n }));\n var that = this;\n\n // Выбор строки\n select.click(function (event) {\n var tr = coreuiTableElements.getTrByIndex(that._table.getId(), record.index);\n if (!tr) {\n return;\n }\n if ($(this).is(':checked')) {\n $(tr).addClass('table-primary');\n coreuiTablePrivate._trigger(that._table, 'record_select', [record]);\n } else {\n $(tr).removeClass('table-primary');\n coreuiTablePrivate._trigger(that._table, 'record_unselect', [record]);\n }\n });\n return select;\n }\n};\n\ncoreuiTable$1.columns[\"switch\"] = {\n _table: null,\n _options: {\n type: 'switch',\n label: '',\n field: '',\n show: true,\n disabled: false,\n width: 5,\n valueY: 'Y',\n valueN: 'N',\n attr: {\n \"class\": 'coreui-table__switch_container'\n },\n attrHeader: {},\n onChange: null\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._table = table;\n this._options = $.extend(true, {}, this._options, options);\n\n // Показ строк\n this._table.on('records_show', function () {\n var containers = coreuiTableElements.getRowsSwitches(table.getId());\n\n // Отмена обработки нажатия в switch колонках\n containers.click(function (event) {\n event.stopPropagation();\n });\n });\n },\n /**\r\n * Установка видимости колонки\r\n * @param {boolean} isShow\r\n */\n setShow: function setShow(isShow) {\n this._options.show = !!isShow;\n },\n /**\r\n * Видимости колонки\r\n */\n isShow: function isShow() {\n return !!this._options.show;\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend(true, {}, this._options);\n },\n /**\r\n * Формирование контента\r\n * @param {string} content\r\n * @param {object} record\r\n * @returns {string}\r\n */\n render: function render(content, record) {\n var isChecked = record.data.hasOwnProperty(this._options.field) && record.data[this._options.field] === this._options.valueY;\n var formSwitch = $(ejs.render(tpl['columns/switch.html'], {\n index: record.index,\n field: this._options.field,\n disabled: this._options.disabled,\n checked: isChecked\n }));\n\n // События нажатия на переключатель\n if (this._options.hasOwnProperty('onChange') && (typeof this._options.onChange === 'function' || typeof this._options.onChange === 'string')) {\n var that = this;\n $('.coreui-table__switch', formSwitch).change(function (event) {\n var isChecked = $(this).is(':checked');\n if (typeof that._options.onChange === 'function') {\n that._options.onChange(record, isChecked, this);\n } else if (typeof that._options.onChange === 'string') {\n var id = null;\n if (record.hasOwnProperty(that._table._options.primaryKey)) {\n id = record[that._table._options.primaryKey];\n }\n var func = new Function('record', 'checked', 'id', that._options.onChange);\n func(record, this, id);\n }\n return false;\n });\n }\n return formSwitch;\n }\n};\n\ncoreuiTable$1.columns.text = {\n _table: null,\n _options: {\n type: 'text',\n field: null,\n label: null,\n show: true,\n width: null,\n minWidth: null,\n maxWidth: null,\n attr: null,\n noWrap: null,\n noWrapToggle: null,\n attrHeader: null,\n render: null\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._table = table;\n this._options = $.extend({}, this._options, options);\n var tableOptions = this._table.getOptions();\n if (this._options.noWrap || this._options.noWrap === null && tableOptions.noWrap) {\n if (!this._options.attr) {\n this._options.attr = {\n \"class\": 'coreui_table__no-wrap'\n };\n } else {\n this._options.attr = coreuiTableUtils.mergeAttr(this._options.attr, {\n \"class\": 'coreui_table__no-wrap'\n });\n }\n this._options.noWrap = true;\n if (this._options.noWrapToggle || this._options.noWrapToggle === null && tableOptions.noWrapToggle) {\n this._options.noWrapToggle = true;\n }\n }\n },\n /**\r\n * Установка видимости колонки\r\n * @param {boolean} isShow\r\n */\n setShow: function setShow(isShow) {\n this._options.show = !!isShow;\n },\n /**\r\n * Видимости колонки\r\n */\n isShow: function isShow() {\n return !!this._options.show;\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend({}, this._options);\n },\n /**\r\n * Формирование контента\r\n * @param {string} content\r\n * @param {object} record\r\n * @returns {string}\r\n */\n render: function render(content, record) {\n if (['string', 'bigint', 'symbol', 'number'].indexOf(_typeof(content)) < 0) {\n return '';\n }\n content = String(content).replace(//g, '>');\n if (this._options.noWrap) {\n content = '
' + content + '
';\n if (this._options.noWrapToggle) {\n content += '';\n }\n }\n return content;\n }\n};\n\ncoreuiTable$1.columns.button = {\n _table: null,\n _options: {\n type: 'button',\n field: null,\n label: null,\n show: true,\n width: null,\n minWidth: null,\n maxWidth: null\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._table = table;\n this._options = $.extend({}, this._options, options);\n },\n /**\r\n * Установка видимости колонки\r\n * @param {boolean} isShow\r\n */\n setShow: function setShow(isShow) {\n this._options.show = !!isShow;\n },\n /**\r\n * Видимости колонки\r\n */\n isShow: function isShow() {\n return !!this._options.show;\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend({}, this._options);\n },\n /**\r\n * Формирование контента\r\n * @param {object} content\r\n * @param {object} record\r\n * @returns {string}\r\n */\n render: function render(content, record) {\n if (!coreuiTableUtils.isObject(content)) {\n return '';\n }\n if (!coreuiTableUtils.isObject(content.attr)) {\n content.attr = {};\n }\n if (!content.attr.hasOwnProperty('class')) {\n content.attr[\"class\"] = 'btn btn-outline-secondary';\n }\n if (content.attr.hasOwnProperty('type')) {\n delete content.attr.type;\n }\n var attributes = [];\n $.each(content.attr, function (name, value) {\n if (['string', 'number'].indexOf(_typeof(value)) >= 0) {\n attributes.push(name + '=\"' + value + '\"');\n }\n });\n var btn = $(ejs.render(tpl['columns/button.html'], {\n content: content.content,\n attr: attributes.length > 0 ? ' ' + attributes.join(' ') : ''\n }));\n if (content.hasOwnProperty('onClick')) {\n var that = this;\n if (typeof content.onClick === 'function') {\n btn.click(function (event) {\n event.cancelBubble = true;\n event.preventDefault();\n content.onClick(record, that._table);\n });\n } else if (typeof content.onClick === 'string') {\n var func = new Function('record', 'table', content.onClick);\n btn.click(function (event) {\n event.cancelBubble = true;\n event.preventDefault();\n func(record, that._table);\n });\n } else {\n btn.click(function (event) {\n event.cancelBubble = true;\n event.preventDefault();\n });\n }\n } else {\n btn.click(function (event) {\n event.cancelBubble = true;\n event.preventDefault();\n });\n }\n return btn;\n }\n};\n\ncoreuiTable$1.columns.link = {\n _table: null,\n _options: {\n type: 'link',\n field: null,\n label: null,\n show: true,\n width: null,\n minWidth: null,\n maxWidth: null\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._table = table;\n this._options = $.extend({}, this._options, options);\n },\n /**\r\n * Установка видимости колонки\r\n * @param {boolean} isShow\r\n */\n setShow: function setShow(isShow) {\n this._options.show = !!isShow;\n },\n /**\r\n * Видимости колонки\r\n */\n isShow: function isShow() {\n return !!this._options.show;\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend({}, this._options);\n },\n /**\r\n * Формирование контента\r\n * @param {object|string} content\r\n * @param {object} record\r\n * @returns {string}\r\n */\n render: function render(content, record) {\n if ((typeof content !== 'string' || !content) && (!coreuiTableUtils.isObject(content) || !content.hasOwnProperty('url') || typeof content.url !== 'string' || !content.url)) {\n return '';\n }\n var linkContent = '';\n var attr = {};\n if (typeof content === 'string') {\n attr.href = content;\n linkContent = content;\n } else {\n if (content.hasOwnProperty('attr') && coreuiTableUtils.isObject(content.attr)) {\n attr = content.attr;\n }\n if (attr.hasOwnProperty('href')) {\n delete attr.href;\n }\n attr.href = content.url;\n if (content.hasOwnProperty('content') && typeof content.content === 'string' && content.content) {\n linkContent = content.content;\n } else {\n linkContent = content.url;\n }\n }\n var attributes = [];\n $.each(attr, function (name, value) {\n if (['string', 'number'].indexOf(_typeof(value)) >= 0) {\n attributes.push(name + '=\"' + value + '\"');\n }\n });\n var link = $(ejs.render(tpl['columns/link.html'], {\n content: linkContent,\n attr: attributes.length > 0 ? ' ' + attributes.join(' ') : ''\n }));\n link.click(function (event) {\n event.cancelBubble = true;\n event.preventDefault();\n });\n return link;\n }\n};\n\ncoreuiTable$1.columns.menu = {\n _table: null,\n _options: {\n type: 'menu',\n field: null,\n label: null,\n show: true,\n width: null,\n minWidth: null,\n maxWidth: null\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._table = table;\n this._options = $.extend({}, this._options, options);\n },\n /**\r\n * Установка видимости колонки\r\n * @param {boolean} isShow\r\n */\n setShow: function setShow(isShow) {\n this._options.show = !!isShow;\n },\n /**\r\n * Видимости колонки\r\n */\n isShow: function isShow() {\n return !!this._options.show;\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend({}, this._options);\n },\n /**\r\n * Формирование контента\r\n * @param {object|string} content\r\n * @param {object} record\r\n * @returns {string}\r\n */\n render: function render(content, record) {\n if (!coreuiTableUtils.isObject(content) || !content.hasOwnProperty('items') || !Array.isArray(content.items) || content.items.length === 0) {\n return '';\n }\n var items = [];\n var attr = {};\n if (Array.isArray(content.items)) {\n $.each(content.items, function (key, item) {\n if (coreuiTableUtils.isObject(item) && typeof item.type === 'string') {\n if (item.type === 'link') {\n if (item.hasOwnProperty('link') && item.hasOwnProperty('content') && typeof item.link === 'string' && typeof item.content === 'string') {\n var linkAttr = {};\n if (item.hasOwnProperty('attr') || coreuiTableUtils.isObject(item.attr)) {\n linkAttr = item.attr;\n }\n if (linkAttr.hasOwnProperty('href')) {\n delete linkAttr.href;\n }\n if (!linkAttr.hasOwnProperty('class') || typeof linkAttr[\"class\"] !== 'string') {\n linkAttr[\"class\"] = 'dropdown-item';\n } else {\n linkAttr[\"class\"] += ' dropdown-item';\n }\n var linkAttributes = [];\n $.each(linkAttr, function (name, value) {\n if (['string', 'number'].indexOf(_typeof(value)) >= 0) {\n linkAttributes.push(name + '=\"' + value + '\"');\n }\n });\n items.push({\n type: 'link',\n link: item.link,\n content: item.content,\n attr: linkAttributes\n });\n }\n } else if (item.type === 'button') {\n if (item.hasOwnProperty('content') && item.hasOwnProperty('onClick') && typeof item.content === 'string' && ['string', 'function'].indexOf(_typeof(item.onClick)) >= 0) {\n var btnAttr = {};\n if (item.hasOwnProperty('attr') || coreuiTableUtils.isObject(item.attr)) {\n btnAttr = item.attr;\n }\n if (btnAttr.hasOwnProperty('type')) {\n delete btnAttr.type;\n }\n if (btnAttr.hasOwnProperty('id')) {\n delete btnAttr['id'];\n }\n if (!btnAttr.hasOwnProperty('class') || typeof btnAttr[\"class\"] !== 'string') {\n btnAttr[\"class\"] = 'dropdown-item';\n } else {\n btnAttr[\"class\"] += ' dropdown-item';\n }\n var btnAttributes = [];\n $.each(btnAttr, function (name, value) {\n if (['string', 'number'].indexOf(_typeof(value)) >= 0) {\n btnAttributes.push(name + '=\"' + value + '\"');\n }\n });\n items.push({\n type: 'button',\n id: coreuiTableUtils.hashCode(),\n content: item.content,\n onClick: item.onClick,\n attr: btnAttributes.length > 0 ? ' ' + btnAttributes.join(' ') : ''\n });\n }\n } else if (item.type === 'divider') {\n items.push({\n type: 'divider'\n });\n } else if (item.type === 'header') {\n if (item.hasOwnProperty('content') && typeof item.content === 'string') {\n items.push({\n type: 'header',\n content: item.content\n });\n }\n }\n }\n });\n }\n if (content.hasOwnProperty('attr') || coreuiTableUtils.isObject(content.attr)) {\n attr = content.attr;\n }\n if (!attr.hasOwnProperty('class') || ['string', 'number'].indexOf(_typeof(attr[\"class\"])) < 0) {\n attr[\"class\"] = 'btn rounded-1';\n }\n if (attr.hasOwnProperty('type')) {\n delete attr.type;\n }\n if (attr.hasOwnProperty('data-bs-toggle')) {\n delete attr['data-bs-toggle'];\n }\n var attributes = [];\n $.each(attr, function (name, value) {\n if (['string', 'number'].indexOf(_typeof(value)) >= 0) {\n attributes.push(name + '=\"' + value + '\"');\n }\n });\n var menuContent = content.hasOwnProperty('content') && typeof content.content === 'string' && content.content ? content.content : '';\n var position = content.hasOwnProperty('position') && typeof content.position === 'string' && content.position ? content.position : 'end';\n var menu = $(ejs.render(tpl['columns/menu.html'], {\n content: menuContent,\n position: position,\n attr: attributes.length > 0 ? ' ' + attributes.join(' ') : '',\n items: items\n }));\n menu.click(function (event) {\n event.cancelBubble = true;\n event.preventDefault();\n });\n if (Array.isArray(items)) {\n var that = this;\n $.each(items, function (key, item) {\n if (coreuiTableUtils.isObject(item) && typeof item.type === 'string') {\n if (item.type === 'button') {\n if (item.hasOwnProperty('content') && item.hasOwnProperty('onClick') && ['string', 'function'].indexOf(_typeof(item.onClick)) >= 0 && typeof item.content === 'string') {\n $('button#btn-dropdown-' + item.id, menu).click(function (event) {\n if (typeof item.onClick === 'function') {\n item.onClick(record, that._table, event);\n } else if (typeof item.onClick === 'string') {\n new Function('record', 'table', 'event', item.onClick)(record, that._table, event);\n }\n });\n }\n }\n }\n });\n }\n return menu;\n }\n};\n\ncoreuiTable$1.columns.badge = {\n _table: null,\n _options: {\n type: 'badge',\n field: null,\n label: null,\n show: true,\n width: null,\n minWidth: null,\n maxWidth: null\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._table = table;\n this._options = $.extend({}, this._options, options);\n },\n /**\r\n * Установка видимости колонки\r\n * @param {boolean} isShow\r\n */\n setShow: function setShow(isShow) {\n this._options.show = !!isShow;\n },\n /**\r\n * Видимости колонки\r\n */\n isShow: function isShow() {\n return !!this._options.show;\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend({}, this._options);\n },\n /**\r\n * Формирование контента\r\n * @param {object|string} content\r\n * @param {object} record\r\n * @returns {string}\r\n */\n render: function render(content, record) {\n if (!coreuiTableUtils.isObject(content) || !content.hasOwnProperty('type') || !content.hasOwnProperty('text') || typeof content.type !== 'string' || typeof content.text !== 'string' || !content.type || !content.text) {\n return '';\n }\n return $(ejs.render(tpl['columns/badge.html'], {\n type: content.type,\n text: content.text\n }));\n }\n};\n\ncoreuiTable$1.columns.component = {\n _table: null,\n _options: {\n type: 'component',\n field: null,\n label: null,\n show: true,\n width: null,\n minWidth: null,\n maxWidth: null\n },\n /**\r\n * Инициализация\r\n * @param {CoreUI.table.instance} table\r\n * @param {object} options\r\n */\n init: function init(table, options) {\n this._table = table;\n this._options = $.extend({}, this._options, options);\n },\n /**\r\n * Установка видимости колонки\r\n * @param {boolean} isShow\r\n */\n setShow: function setShow(isShow) {\n this._options.show = !!isShow;\n },\n /**\r\n * Видимости колонки\r\n */\n isShow: function isShow() {\n return !!this._options.show;\n },\n /**\r\n * Получение параметров\r\n * @returns {object}\r\n */\n getOptions: function getOptions() {\n return $.extend({}, this._options);\n },\n /**\r\n * Формирование контента\r\n * @param {object|string} content\r\n * @param {object} record\r\n * @returns {string}\r\n */\n render: function render(content, record) {\n if (!coreuiTableUtils.isObject(content) || !content.hasOwnProperty('component') || typeof content.component !== 'string' || !content.component) {\n return '';\n }\n return coreuiTableRender.renderComponents(this._table, content, 'records_show');\n }\n};\n\nreturn coreuiTable$1;\n\n})));\n"],"names":["global","factory","exports","module","define","amd","CoreUI","table","this","_typeof","o","Symbol","iterator","constructor","prototype","f","window","self","ejs","r","e","n","t","i","c","require","u","a","Error","code","p","call","length","1","fs","path","utils","scopeOptionWarned","_VERSION_STRING","version","_OPTS_PASSABLE_WITH_DATA","_OPTS_PASSABLE_WITH_DATA_EXPRESS","concat","_BOM","_JS_IDENTIFIER","resolvePaths","name","paths","filePath","some","v","resolveInclude","existsSync","handleCache","options","template","func","filename","hasTemplate","arguments","cache","get","fileLoader","toString","replace","compile","set","includeFile","opts","shallowCopy","createNullProtoObjWherePossible","includePath","views","match","exec","Array","isArray","root","includer","escapeFunction","includerResult","rethrow","err","str","flnm","lineno","esc","lines","split","start","Math","max","end","min","context","slice","map","line","curr","join","message","stripSemi","Template","text","templateText","mode","truncate","currentLine","source","client","escape","escapeXML","compileDebug","debug","openDelimiter","closeDelimiter","delimiter","strict","rmWhitespace","outputFunctionName","localsName","async","destructuredLocals","legacyInclude","_with","regex","createRegex","readFileSync","promiseImpl","Function","Promise","isDir","dirname","extname","resolve","scope","console","warn","render","d","data","shallowCopyFromList","renderFile","cb","result","args","shift","pop","settings","viewOpts","reject","clearCache","reset","modes","EVAL","ESCAPED","RAW","COMMENT","LITERAL","delim","escapeRegExpChars","open","close","RegExp","fn","prepended","appended","escapeFn","sanitizedFilename","JSON","stringify","generateSource","test","destructuring","src","log","ctor","SyntaxError","returnedFn","apply","includeData","Object","defineProperty","basename","value","writable","enumerable","configurable","matches","parseTemplateText","forEach","index","indexOf","closing","scanLine","firstPos","pat","arr","push","substring","_addOutput","newLineCount","lastIndexOf","__express","VERSION","../package.json","./utils","2","hasOwn","obj","key","hasOwnProperty","regExpChars","_ENCODE_HTML_RULES","string","String","&","<",">","\"","'","_MATCH_HTML","encode_char","escapeXMLToString","markup","undefined","to","from","list","_data","val","remove","hyphenToCamel","toUpperCase","create","__proto__","3","4","process","normalizeArray","parts","allowAboveRoot","up","last","splice","unshift","filter","xs","res","resolvedPath","resolvedAbsolute","cwd","TypeError","charAt","normalize","isAbsolute","trailingSlash","substr","relative","trim","fromParts","toParts","samePartsLength","outputParts","sep","hasRoot","charCodeAt","matchedSlash","ext","startDot","startPart","preDotState","len","_process","5","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","setTimeout","clearTimeout","runTimeout","fun","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","run","runClearTimeout","marker","Item","array","noop","nextTick","title","browser","env","argv","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","chdir","dir","umask","6","description","keywords","author","license","bin","main","jsdelivr","unpkg","repository","type","url","bugs","homepage","dependencies","jake","devDependencies","browserify","eslint","git-directory-deploy","jsdoc","lru-cache","mocha","uglify-js","engines","node","scripts","tpl","coreuiTableUtils","mergeAttr","attr1","attr2","assign","$","each","isNumeric","num","isNaN","hashCode","crc32","Date","getTime","random","isObject","coreuiTableRender","renderTable","rows","_rows","getOptions","recordsElements","columnGroupsHeader","columnGroupsFooter","colGroups","columns","classes","_columns","column","columnOptions","attributes","sortable","_unit2","isShow","field","attrHeader","data-field","fixed","class","attr","_sort","sortField","order","style","width","unit","minWidth","_unit","maxWidth","label","_isRecordsRequest","_records","_recordsTotal","getRecordsCount","_recordsNumber","_page","_recordsPerPage","renderRecords","headerRow","cells","headerColumn","content","footerRow","footerColumn","htmlColumns","theadAttr","tableElement","theadTop","columnHeaders","tbody","find","recordElement","append","records","that","group","groupValue","record","show","renderGroup","renderRecord","columnsCount","_countColumnsShow","lang","getLang","fields","recordAttr","extend","renderField","onClickUrl","meta","html","columnField","fieldProps","fieldAttr","fieldAttrResult","colspan","renderContent","renderExpand","renderComponents","expandRecord","item","HTMLElement","jQuery","renderControl","control","controlElement","id","getId","initEvents","components","eventName","instance","component","coreuiTablePrivate","initColumns","coreuiTable$1","_options","overflow","columnInstance","init","initSearch","searchControls","searchValues","saveState","getStorageField","search","controlInstance","_search","initControls","position","row","controlsLeft","controlsCenter","controlsRight","toLowerCase","left","initControl","center","right","_controlsPositions","filterName","filterValues","controls","_controls","filters","_filters","initSort","sort","setRecords","_recordsIndex","addRecord","afterIndex","_meta","seq","_seq","addRecordBefore","issetKey","keyBefore","isFilteredRecord","recordData","alg","issetStart","issetEnd","_trigger","params","_events","callback","singleExec","sortRecordsBySeq","b","sortRecordsByFields","issetAField","issetBField","aVal","bVal","setColumnsSort","thead","coreuiTableElements","getTableThead","sortColumn","sortItem","columnElement","getStorage","tableId","storage","localStorage","getItem","parse","setStorage","storageAll","setItem","setStorageField","getContainer","getLock","getWrapper","getSearchContainer","getColumnsContainer","getSearchControl","controlId","getControl","getTable","getTableTbody","getTableSortable","getTrRecords","getTrByIndex","getExpandRow","next","hasClass","addExpandRow","after","addClass","recordIndex","hideExpandRow","recordExpanded","hide","showExpandRow","removeExpandRow","getSelectedIndexes","indexes","element","getRowsSwitches","getRowsSelects","getRowsSelectAll","getNoWrapToggles","selectTr","tr","prop","selectTrAll","tableContainer","unselectTr","removeClass","unselectTrAll","fixedColsLeft","tableWrapper","colOffset","css","outerWidth","fixedColsRight","reverse","coreuiTableInstance","primaryKey","langList","height","minHeight","naxHeight","page","recordsPerPage","noBorder","noWrap","noWrapToggle","recordsRequest","method","count","onClick","header","footer","labelWidth","_id","_init","click","recordKey","getRecordByIndex","fieldQuote","location","href","event","cancelBubble","preventDefault","parent","sortableColumns","sorting","currentOrder","sortDefault","sortFields","getSearchData","getFilterData","widthSizes","heightSizes","headersOut","headersIn","footersIn","footersOut","_unit3","_unit4","maxHeight","_unit5","headerControls","_headerControls","controlRender","footerControls","_footerControls","load","containerElement","recordsTotal","prepend","domElement","document","getElementById","lock","container","unlock","searchData","Number","filterData","ajax","dataType","beforeSend","xhr","success","total","error","textStatus","errorThrown","complete","reload","refresh","replaceWith","setPageSize","selectAll","unselectAll","selectRecord","getRecordById","unselectRecord","getSelectedRecordsId","getSelectedRecords","getRecord","getRecords","getData","prevPage","nextPage","totalPages","ceil","goPage","eventNames","setColumnsShow","setShow","getValue","getAlgorithm","searchRecords","searchClear","setValue","filtersClear","recordItem","getRecordByField","getControlById","getSearchControlById","columnSortable","removeRecordByIndex","fadeOut","addRecordAfterIndex","addRecordBeforeIndex","before","addRecordFirst","addRecordLast","tableBody","parseInt","expandRecordContent","isRebuild","callbackResult","then","expandRecordUrl","response","getResponseHeader","_instances","_settings","getSetting","setSettings","ru","emptyRecords","loading","all","clear","en","link","_table","button","dropdown","items","button_group","_link","_button","_dropdown","buttons","_attributes","_attributes2","custom","page_size","selectPageSize","change","recordsPerPageList","page_jump","input","keyup","keyCode","pages","prev","_initEvents","showPrev","showNext","showDividerStart","showDividerEnd","showPageFirst","showPageLast","pagesTotal","countHalf","floor","currentPage","isActivePrev","isActiveNext","btnPrev","btnNext","btn","btnClear","btnComplete","buttonToggle","buttonClear","controlsEvents","btnCompleteAttr","wrapper","columnsContainer","fadeToggle","btnCompleteContent","tableOptions","prefix","controlsEvent","_renderBtnClear","insertAfter","btnAttr","btnContent","showAll","containerSearch","is","caption","_value","_render","attrBtn","number","numberStart","numberEnd","inputStart","inputEnd","valueStart","valueEnd","startAttr","endAttr","attrStart","attrEnd","date","datetime","date_month","date_range","dateStart","dateEnd","startEnd","datetime_range","checkbox","_class","inputs","option","checked","radio","select","selectOptions","renderAttr","groupOptions","_buildOption","groupAttr","groupOption","optionAttr","optionText","itemValue","valueY","checkedAll","format","_strPadLeft","getFullYear","getMonth","getDate","repeat","getHours","getMinutes","getSeconds","money","currency","toFixed","numbers","_mergeAttr","selects","stopPropagation","disabled","valueN","onChange","isChecked","formSwitch","linkContent","menu","menuContent","linkAttributes","btnAttributes","linkAttr","badge"],"mappings":"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"} \ No newline at end of file diff --git a/index.html b/index.html index 02fbf4b..a50cf5f 100644 --- a/index.html +++ b/index.html @@ -1667,6 +1667,10 @@

Options

theadTop numeric 0 Если overflow не активен, то, по умолчанию, при прокрутке, заголовок таблицы прижимается к верху страницы. Этот параметр указывает высоту на которой заголовок будет оставаться + + noBorder boolean false + Убирает внешние границы с таблицы. Может быть полезно для визуального встраивания внутрь другого контента + noWrap boolean false На все текстовые колонки таблицы будет применено ограничение текста в рамках одной строки. Для ограничения колонки по ширине в них требуется указывать maxWidth