@opengis/bi 1.2.27 → 1.2.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- @font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2JL7SUc.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa0ZL7SUc.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2ZL7SUc.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1pL7SUc.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2pL7SUc.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7SUc.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2JL7SUc.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa0ZL7SUc.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2ZL7SUc.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1pL7SUc.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2pL7SUc.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7SUc.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2JL7SUc.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa0ZL7SUc.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2ZL7SUc.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1pL7SUc.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2pL7SUc.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7SUc.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2JL7SUc.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa0ZL7SUc.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2ZL7SUc.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1pL7SUc.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2pL7SUc.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7SUc.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}body{font-family:Inter,Segoe UI,Helvetica Neue,Roboto,sans-serif;font-weight:400}h1{font-family:Inter,Segoe UI,Helvetica Neue,Roboto,sans-serif;font-weight:700}em{font-family:Inter,Segoe UI,Helvetica Neue,Roboto,sans-serif;font-style:italic}.custom-scrollbar{overflow-y:auto;overflow-x:clip}.custom-scrollbar::-webkit-scrollbar{width:6px;margin-right:0}.custom-scrollbar::-webkit-scrollbar-thumb{background-color:#e0e0e0;border-radius:10px}.custom-scrollbar::-webkit-scrollbar-track{background-color:#f1f1f1}.vs-modal-content[data-v-5722a50f]{scrollbar-width:thin}.vs-modal-enter-active[data-v-5722a50f],.vs-modal-leave-active[data-v-5722a50f]{transition:opacity .2s ease,transform .2s ease}.vs-modal-enter-from[data-v-5722a50f],.vs-modal-leave-to[data-v-5722a50f]{opacity:0;transform:scale(.95)}.custom-scrollbar[data-v-f586e5b0]{overflow-y:auto;overflow-x:clip}.custom-scrollbar[data-v-f586e5b0]::-webkit-scrollbar{width:6px}.custom-scrollbar[data-v-f586e5b0]::-webkit-scrollbar-thumb{background-color:#e0e0e0;border-radius:10px}.custom-scrollbar[data-v-f586e5b0]::-webkit-scrollbar-track{background-color:#f1f1f1}@keyframes fade-in-716ced89{0%{opacity:0}to{opacity:1}}.animate-fade-in[data-v-716ced89]{animation:fade-in-716ced89 .3s ease-out}.custom-x-scrollbar{overflow-x:auto;overflow-y:clip}.custom-x-scrollbar::-webkit-scrollbar{height:6px}.custom-x-scrollbar::-webkit-scrollbar-thumb{background-color:#e0e0e0}.custom-x-scrollbar::-webkit-scrollbar-track{background-color:#f1f1f1}.vs-chart{width:100%;height:100%}.vs-chart-tooltip{border-radius:7px;max-height:100px;max-width:340px;min-width:140px;background-color:#fff;box-shadow:0 0 8px #0000002e}.vs-chart-tooltip__head{padding:5px;border-bottom:1px solid #eee;margin-bottom:5px}.vs-chart-tooltip__head-title{font-size:14px;font-weight:700;display:flex;align-items:center}.vs-chart-tooltip__head-value{margin-right:5px}.vs-chart-tooltip__head-series{font-size:14px;display:flex;align-items:center}.vs-chart-tooltip__color{width:12px;height:12px;display:block;border-radius:50%;margin-right:5px}.vs-chart-tooltip__body{padding:5px;font-size:14px;display:flex;align-items:start;flex-direction:column}.vs-chart-tooltip__body .vs-chart-tooltip__color{border-radius:3px}.vs-chart-tooltip__item{width:100%;display:flex;align-items:center;justify-content:space-between}.vs-chart-tooltip__text{margin-right:auto}.vs-chart-tooltip__body svg{margin-right:8px}body{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.text-widget h1{font-size:18px}.text-widget h2{font-size:14px}.map__settings{display:flex;padding:3px 1px;background:#fff;position:absolute;right:0;bottom:15px;height:30px;align-items:center;font-weight:100;text-align:center}.map__settings-item{display:flex;white-space:nowrap;padding:0 2px;font-size:10px;font-weight:400}.map__settings-attribution{padding:0}.map__settings-menu{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:15px!important;position:absolute;background-color:#fff;bottom:60px;right:90px;width:260px}.map__settings-menu-item{display:flex;align-items:center;color:#2c2c2c;margin-bottom:5px;font-size:12px;justify-content:space-between;height:28px}.map__settings-menu-item-text{height:28px;line-height:28px;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;display:inline-block;font-size:12px;height:40px;line-height:40px;outline:0;padding:0 10px}.map__settings-menu-item--checktext{color:#000!important;font-size:12px;display:inline-block;padding-left:10px;line-height:19px;cursor:pointer}.checked{color:#409eff!important}.vs-map-slot-layers{position:absolute;display:none;bottom:10px;left:15px}.vs-map-slot-layers__layer{width:50px;height:50px;background-color:#fff;box-shadow:0 0 7px #434c5626;padding:5px;border-radius:5px;margin-top:10px;margin-right:10px;cursor:pointer;transition:all .3s}.vs-map-slot-layers__layer:hover{background-color:#eee}.vs-map-slot-layers__image{width:100%;border-radius:5px;object-fit:contain}.focused{background-color:#1989fa!important}.maplibregl-popup-content{padding:0}
1
+ @font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2JL7SUc.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa0ZL7SUc.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2ZL7SUc.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1pL7SUc.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2pL7SUc.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7SUc.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2JL7SUc.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa0ZL7SUc.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2ZL7SUc.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1pL7SUc.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2pL7SUc.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7SUc.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2JL7SUc.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa0ZL7SUc.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2ZL7SUc.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1pL7SUc.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2pL7SUc.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7SUc.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2JL7SUc.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa0ZL7SUc.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2ZL7SUc.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1pL7SUc.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2pL7SUc.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7SUc.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v18/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}body{font-family:Inter,Segoe UI,Helvetica Neue,Roboto,sans-serif;font-weight:400}h1{font-family:Inter,Segoe UI,Helvetica Neue,Roboto,sans-serif;font-weight:700}em{font-family:Inter,Segoe UI,Helvetica Neue,Roboto,sans-serif;font-style:italic}.custom-scrollbar{overflow-y:auto;overflow-x:clip}.custom-scrollbar::-webkit-scrollbar{width:6px;margin-right:0}.custom-scrollbar::-webkit-scrollbar-thumb{background-color:#e0e0e0;border-radius:10px}.custom-scrollbar::-webkit-scrollbar-track{background-color:#f1f1f1}.vs-modal-content[data-v-5722a50f]{scrollbar-width:thin}.vs-modal-enter-active[data-v-5722a50f],.vs-modal-leave-active[data-v-5722a50f]{transition:opacity .2s ease,transform .2s ease}.vs-modal-enter-from[data-v-5722a50f],.vs-modal-leave-to[data-v-5722a50f]{opacity:0;transform:scale(.95)}.custom-scrollbar[data-v-330ef797]{overflow-y:auto;overflow-x:clip}.custom-scrollbar[data-v-330ef797]::-webkit-scrollbar{width:6px}.custom-scrollbar[data-v-330ef797]::-webkit-scrollbar-thumb{background-color:#e0e0e0;border-radius:10px}.custom-scrollbar[data-v-330ef797]::-webkit-scrollbar-track{background-color:#f1f1f1}@keyframes fade-in-716ced89{0%{opacity:0}to{opacity:1}}.animate-fade-in[data-v-716ced89]{animation:fade-in-716ced89 .3s ease-out}.custom-x-scrollbar{overflow-x:auto;overflow-y:clip}.custom-x-scrollbar::-webkit-scrollbar{height:6px}.custom-x-scrollbar::-webkit-scrollbar-thumb{background-color:#e0e0e0}.custom-x-scrollbar::-webkit-scrollbar-track{background-color:#f1f1f1}.vs-chart{width:100%;height:100%}.vs-chart-tooltip{border-radius:7px;max-height:100px;max-width:340px;min-width:140px;background-color:#fff;box-shadow:0 0 8px #0000002e}.vs-chart-tooltip__head{padding:5px;border-bottom:1px solid #eee;margin-bottom:5px}.vs-chart-tooltip__head-title{font-size:14px;font-weight:700;display:flex;align-items:center}.vs-chart-tooltip__head-value{margin-right:5px}.vs-chart-tooltip__head-series{font-size:14px;display:flex;align-items:center}.vs-chart-tooltip__color{width:12px;height:12px;display:block;border-radius:50%;margin-right:5px}.vs-chart-tooltip__body{padding:5px;font-size:14px;display:flex;align-items:start;flex-direction:column}.vs-chart-tooltip__body .vs-chart-tooltip__color{border-radius:3px}.vs-chart-tooltip__item{width:100%;display:flex;align-items:center;justify-content:space-between}.vs-chart-tooltip__text{margin-right:auto}.vs-chart-tooltip__body svg{margin-right:8px}body{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.text-widget h1{font-size:18px}.text-widget h2{font-size:14px}.map__settings{display:flex;padding:3px 1px;background:#fff;position:absolute;right:0;bottom:15px;height:30px;align-items:center;font-weight:100;text-align:center}.map__settings-item{display:flex;white-space:nowrap;padding:0 2px;font-size:10px;font-weight:400}.map__settings-attribution{padding:0}.map__settings-menu{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:15px!important;position:absolute;background-color:#fff;bottom:60px;right:90px;width:260px}.map__settings-menu-item{display:flex;align-items:center;color:#2c2c2c;margin-bottom:5px;font-size:12px;justify-content:space-between;height:28px}.map__settings-menu-item-text{height:28px;line-height:28px;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;display:inline-block;font-size:12px;height:40px;line-height:40px;outline:0;padding:0 10px}.map__settings-menu-item--checktext{color:#000!important;font-size:12px;display:inline-block;padding-left:10px;line-height:19px;cursor:pointer}.checked{color:#409eff!important}.vs-map-slot-layers{position:absolute;display:none;bottom:10px;left:15px}.vs-map-slot-layers__layer{width:50px;height:50px;background-color:#fff;box-shadow:0 0 7px #434c5626;padding:5px;border-radius:5px;margin-top:10px;margin-right:10px;cursor:pointer;transition:all .3s}.vs-map-slot-layers__layer:hover{background-color:#eee}.vs-map-slot-layers__image{width:100%;border-radius:5px;object-fit:contain}.focused{background-color:#1989fa!important}.maplibregl-popup-content{padding:0}
@@ -1,4 +1,4 @@
1
- import { _ as l, c as h, a as c, b as d, d as p } from "./import-file-DN5MrFOd.js";
1
+ import { _ as l, c as h, a as c, b as d, d as p } from "./import-file-C1s2X9Kt.js";
2
2
  import { createElementBlock as u, openBlock as m } from "vue";
3
3
  const o = typeof window < "u" ? window.echarts : null, f = {
4
4
  name: "VsFunnelBar",
@@ -1,5 +1,5 @@
1
1
  import { createBlock as b, openBlock as l, unref as L, mergeProps as v, createElementBlock as d, createElementVNode as c, withDirectives as F, toDisplayString as S, vShow as R, Fragment as P, renderList as V, normalizeClass as D, resolveComponent as A, createVNode as H } from "vue";
2
- import { e as x, X as J, _ as w } from "./import-file-DN5MrFOd.js";
2
+ import { e as x, X as J, _ as w } from "./import-file-C1s2X9Kt.js";
3
3
  /**
4
4
  * @license lucide-vue-next v0.577.0 - ISC
5
5
  *
@@ -1,5 +1,5 @@
1
- import { _ as A, a as F, p as T, c as G, V as P, b as Z, d as q, e as D, l as K } from "./vs-list-BWyOIZbY.js";
2
- import { e as W, _ as H, V as J, c as Q, g as U, h as X, i as Y } from "./import-file-DN5MrFOd.js";
1
+ import { _ as A, a as F, p as T, c as G, V as P, b as Z, d as q, e as D, l as K } from "./vs-list-uhEudqNr.js";
2
+ import { e as W, _ as H, V as J, c as Q, g as U, h as X, i as Y } from "./import-file-C1s2X9Kt.js";
3
3
  import { createElementBlock as g, createCommentVNode as S, openBlock as p, createElementVNode as l, normalizeClass as V, Fragment as R, renderList as N, toDisplayString as O, normalizeStyle as j, createBlock as z, unref as $, mergeProps as ee, resolveComponent as m, withDirectives as M, resolveDynamicComponent as te, createVNode as w, vShow as C } from "vue";
4
4
  /**
5
5
  * @license lucide-vue-next v0.577.0 - ISC
@@ -1,5 +1,5 @@
1
- import { _ as E, a as L, p as $, V as T, b as B, c as H, d as O, l as F, e as N } from "./vs-list-BWyOIZbY.js";
2
- import { _ as V, c as P } from "./import-file-DN5MrFOd.js";
1
+ import { _ as E, a as L, p as $, V as T, b as B, c as H, d as O, l as F, e as N } from "./vs-list-uhEudqNr.js";
2
+ import { _ as V, c as P } from "./import-file-C1s2X9Kt.js";
3
3
  import { resolveComponent as u, createElementBlock as c, openBlock as i, Fragment as w, createElementVNode as r, createBlock as C, createCommentVNode as m, createVNode as x, Teleport as R, toDisplayString as g, renderList as S, normalizeStyle as k, normalizeClass as I } from "vue";
4
4
  const A = {
5
5
  components: { legendIcon: L, closeIcon: E },
@@ -1,4 +1,4 @@
1
- import { _ as c, c as o, f as n } from "./import-file-DN5MrFOd.js";
1
+ import { _ as c, c as o, f as n } from "./import-file-C1s2X9Kt.js";
2
2
  import { createElementBlock as i, openBlock as m, toDisplayString as s } from "vue";
3
3
  const u = {
4
4
  name: "VsNumber",
@@ -1,4 +1,4 @@
1
- import { _ as m, c as f, b as _, d as b } from "./import-file-DN5MrFOd.js";
1
+ import { _ as m, c as f, b as _, d as b } from "./import-file-C1s2X9Kt.js";
2
2
  import { createElementBlock as a, openBlock as r, createElementVNode as s, Fragment as n, renderList as c, toDisplayString as d } from "vue";
3
3
  const x = {
4
4
  name: "VsTable",
@@ -1,4 +1,4 @@
1
- import { _ as s, c as a, m as d } from "./import-file-DN5MrFOd.js";
1
+ import { _ as s, c as a, m as d } from "./import-file-C1s2X9Kt.js";
2
2
  import { createElementBlock as n, openBlock as o, createCommentVNode as c } from "vue";
3
3
  const u = {
4
4
  name: "VsText",
package/package.json CHANGED
@@ -1,75 +1,75 @@
1
- {
2
- "name": "@opengis/bi",
3
- "version": "1.2.27",
4
- "description": "BI data visualization module",
5
- "main": "dist/bi.js",
6
- "browser": "dist/bi.umd.cjs",
7
- "type": "module",
8
- "files": [
9
- "dist",
10
- "server",
11
- "plugin.js",
12
- "utils.js"
13
- ],
14
- "scripts": {
15
- "patch": "npm version patch && git push && npm publish",
16
- "prepublishOnly": "npm run build:lib",
17
- "debug": "node --watch-path=server server",
18
- "dev": "vite",
19
- "type-check": "vue-tsc --noEmit",
20
- "build": "vite build",
21
- "build:lib": "cross-env APP=true vite build",
22
- "build-app": "vite build",
23
- "lint": "eslint .",
24
- "format": "prettier --write .",
25
- "test": "node --test",
26
- "test21": "node --test ./test/plugins/*",
27
- "start": "node server.js",
28
- "prod": "NODE_ENV=production npm run start",
29
- "docs:i": "npm install --prefix ./docs",
30
- "docs:dev": "npm run --prefix ./docs docs:dev",
31
- "docs:build": "npm run --prefix ./docs docs:build",
32
- "docs:preview": "npm run --prefix ./docs docs:preview",
33
- "adduser": "node script/adduser.js"
34
- },
35
- "keywords": [
36
- "bi",
37
- "data visualization",
38
- "chart",
39
- "opengis",
40
- "vue",
41
- "fastify"
42
- ],
43
- "author": "Softpro",
44
- "license": "ISC",
45
- "dependencies": {
46
- "@mapbox/sphericalmercator": "^1.2.0",
47
- "@opengis/table": "^0.0.30",
48
- "lucide-vue-next": "^0.577.0"
49
- },
50
- "devDependencies": {
51
- "@opengis/core": "^0.0.33",
52
- "@opengis/fastify-table": "^2.0.33",
53
- "@opengis/form": "0.0.137",
54
- "@turf/turf": "^7.1.0",
55
- "@types/node": "^22.7.5",
56
- "@typescript-eslint/eslint-plugin": "^6.21.0",
57
- "@typescript-eslint/parser": "^6.21.0",
58
- "@vitejs/plugin-vue": "^5.1.4",
59
- "cross-env": "^10.1.0",
60
- "eslint": "^8.57.1",
61
- "eslint-config-airbnb-base": "^15.0.0",
62
- "eslint-config-prettier": "^9.1.0",
63
- "eslint-plugin-vue": "^9.29.0",
64
- "globals": "^15.10.0",
65
- "marked": "^14.1.2",
66
- "prettier": "^3.3.3",
67
- "rollup-plugin-visualizer": "^7.0.0",
68
- "sass-embedded": "1.89.2",
69
- "typescript": "^5.4.5",
70
- "vite": "^5.1.5",
71
- "vue": "^3.4.27",
72
- "vue-router": "^4.4.3",
73
- "vue-tsc": "^2.1.6"
74
- }
75
- }
1
+ {
2
+ "name": "@opengis/bi",
3
+ "version": "1.2.29",
4
+ "description": "BI data visualization module",
5
+ "main": "dist/bi.js",
6
+ "browser": "dist/bi.umd.cjs",
7
+ "type": "module",
8
+ "files": [
9
+ "dist",
10
+ "server",
11
+ "plugin.js",
12
+ "utils.js"
13
+ ],
14
+ "scripts": {
15
+ "patch": "npm version patch && git push && npm publish",
16
+ "prepublishOnly": "npm run build:lib",
17
+ "debug": "node --watch-path=server server",
18
+ "dev": "vite",
19
+ "type-check": "vue-tsc --noEmit",
20
+ "build": "vite build",
21
+ "build:lib": "cross-env APP=true vite build",
22
+ "build-app": "vite build",
23
+ "lint": "eslint .",
24
+ "format": "prettier --write .",
25
+ "test": "node --test",
26
+ "test21": "node --test ./test/plugins/*",
27
+ "start": "node server.js",
28
+ "prod": "NODE_ENV=production npm run start",
29
+ "docs:i": "npm install --prefix ./docs",
30
+ "docs:dev": "npm run --prefix ./docs docs:dev",
31
+ "docs:build": "npm run --prefix ./docs docs:build",
32
+ "docs:preview": "npm run --prefix ./docs docs:preview",
33
+ "adduser": "node script/adduser.js"
34
+ },
35
+ "keywords": [
36
+ "bi",
37
+ "data visualization",
38
+ "chart",
39
+ "opengis",
40
+ "vue",
41
+ "fastify"
42
+ ],
43
+ "author": "Softpro",
44
+ "license": "ISC",
45
+ "dependencies": {
46
+ "@mapbox/sphericalmercator": "^1.2.0",
47
+ "@opengis/table": "^0.0.30",
48
+ "lucide-vue-next": "^0.577.0"
49
+ },
50
+ "devDependencies": {
51
+ "@opengis/core": "^0.0.33",
52
+ "@opengis/fastify-table": "^2.0.33",
53
+ "@opengis/form": "0.0.137",
54
+ "@turf/turf": "^7.1.0",
55
+ "@types/node": "^22.7.5",
56
+ "@typescript-eslint/eslint-plugin": "^6.21.0",
57
+ "@typescript-eslint/parser": "^6.21.0",
58
+ "@vitejs/plugin-vue": "^5.1.4",
59
+ "cross-env": "^10.1.0",
60
+ "eslint": "^8.57.1",
61
+ "eslint-config-airbnb-base": "^15.0.0",
62
+ "eslint-config-prettier": "^9.1.0",
63
+ "eslint-plugin-vue": "^9.29.0",
64
+ "globals": "^15.10.0",
65
+ "marked": "^14.1.2",
66
+ "prettier": "^3.3.3",
67
+ "rollup-plugin-visualizer": "^7.0.0",
68
+ "sass-embedded": "1.89.2",
69
+ "typescript": "^5.4.5",
70
+ "vite": "^5.1.5",
71
+ "vue": "^3.4.27",
72
+ "vue-router": "^4.4.3",
73
+ "vue-tsc": "^2.1.6"
74
+ }
75
+ }
@@ -1,39 +1,59 @@
1
- import { pgClients, getTemplatePath, getTemplate } from '@opengis/fastify-table/utils.js';
1
+ import { pgClients, getTemplatePath, getTemplate, getTemplateSync } from '@opengis/fastify-table/utils.js';
2
2
 
3
- const q = `select dashboard_id as name, 'db' as type, title, description, table_name, words, public from bi.dashboard`;
3
+ const dirContent = getTemplatePath('dashboard').map(([filename, filepath]) => {
4
+ const obj = getTemplateSync('dashboard', filename);
5
+ const index = obj?.find?.((el) => el[0] === 'index.yml')?.[1];
6
+ const { table_name, description, title } = index || {};
4
7
 
5
- export default async function data({
8
+ return { name: filename, path: filepath, type: 'file', title, description, table_name };
9
+ });
10
+
11
+ const maxLimit = 100;
12
+
13
+ export default async function dashboardList({
6
14
  pg = pgClients.client, query = {}, user = {}
7
15
  }) {
8
16
  const time = Date.now();
9
- const { type = 'file' } = query;
17
+ const { type = 'file', page, search, sql } = query;
18
+
19
+ const limit = Math.min(maxLimit, +(query.limit || 15));
20
+ const offset = page && page > 0 ? (page - 1) * limit : 0;
21
+
22
+ const dir = type === 'file' ? dirContent : [];
10
23
 
11
- const data = getTemplatePath('dashboard');
12
- const dir = type === 'file' ? await Promise.all(
13
- data.map(async ([filename, filepath]) => {
14
- const obj = await getTemplate('dashboard', filename);
15
- const index = obj?.find?.((el) => el[0] === 'index.yml')?.[1];
16
- const { table_name, description, title } = index || {};
24
+ const where = [search ? `lower(title) ~ $1` : null, type === 'viewer' ? `left(table_name,5)='demo.'` : null].filter(Boolean).join(' and ') || 'true';
25
+ const q1 = `select count(*)::int as total, count(*) filter(where ${where})::int as filtered from bi.dashboard`;
26
+
27
+ const q = `select dashboard_id as name, 'db' as type, title, description, table_name, words, public from bi.dashboard where ${where} limit ${limit} offset ${offset}`;
28
+
29
+ if (user?.user_type?.includes('admin') && ['db', 'viewer'].includes(type) && sql) {
30
+ return `${q1};${q}`;
31
+ }
17
32
 
18
- return { name: filename, path: user?.user_type?.includes('admin') ? filepath : undefined, type: 'file', title, description, table_name };
19
- })
20
- ) : [];
33
+ const args = [search].filter(Boolean);
34
+ const { total = 0, filtered = 0 } = ['db', 'viewer'].includes(type) ? await pg.query(q1, args).then(el => el.rows?.[0] || {}) : {};
21
35
 
22
- const { rows = [] } = ['db', 'viewer'].includes(type) ? await pg.query(q) : {};
36
+ const rows = ['db', 'viewer'].includes(type) ? await pg.query(q, args).then(el => el.rows || []) : [];
23
37
 
24
38
  if (type === 'viewer') {
25
39
  return {
26
40
  time: Date.now() - time,
27
41
  db: pg.options?.database,
28
- rows: rows.filter(el => el.table_name && !el.table_name.startsWith('demo.')),
42
+ total,
43
+ filtered,
44
+ count: rows.length,
45
+ rows,
29
46
  };
30
47
  }
31
48
 
32
- const list = dir.concat(rows);
49
+ const list = (user?.user_type?.includes('admin') ? dir : dir.map(el => ({ ...el, path: undefined }))).concat(rows);
33
50
 
34
51
  const res = {
35
52
  time: Date.now() - time,
36
53
  db: pg.options?.database,
54
+ total,
55
+ filtered,
56
+ count: rows.length,
37
57
  rows: list,
38
58
  };
39
59
  return res;
@@ -1,11 +1,11 @@
1
- import yaml from 'js-yaml';
2
-
3
- yaml.loadSafe = (yml) => {
4
- try {
5
- return yaml.load(yml);
6
- } catch (err) {
7
- return { error: err.toString() };
8
- }
9
- };
10
-
11
- export default yaml;
1
+ import yaml from 'js-yaml';
2
+
3
+ yaml.loadSafe = (yml) => {
4
+ try {
5
+ return yaml.load(yml);
6
+ } catch (err) {
7
+ return { error: err.toString() };
8
+ }
9
+ };
10
+
11
+ export default yaml;
@@ -2,17 +2,17 @@ import { dataUpdate, pgClients } from '@opengis/fastify-table/utils.js';
2
2
 
3
3
  import { getWidget, yamlSafe } from '../../../../utils.js';
4
4
 
5
- export default async function widgetEdit({ pg = pgClients.client, body, params }) {
5
+ export default async function widgetEdit({ pg = pgClients.client, body, params }, reply) {
6
6
  const { widget: widgetName, name: dashboardName } = params;
7
7
  const data = body.yml && !body.style ? yamlSafe.load(body.yml) : body;
8
8
  const yml = body.yml ?? yamlSafe.dump(body.data);
9
9
  // console.log(body.data, data, body.yml, yml);
10
10
 
11
11
  if (!widgetName || !dashboardName) {
12
- return {
13
- message: 'not enough params: dashboard and widget name',
14
- status: 400,
15
- };
12
+ return reply.status(400).send({
13
+ error: 'not enough params: dashboard and widget name',
14
+ code: 400,
15
+ });
16
16
  }
17
17
 
18
18
  const { widget_id: widgetId, dashboard_id: dashboardId, widgets } = await pg.query(
@@ -23,7 +23,10 @@ export default async function widgetEdit({ pg = pgClients.client, body, params }
23
23
  // get Data
24
24
  const templateData = await getWidget({ pg, dashboard: dashboardName, widget: widgetName });
25
25
  if (!templateData) {
26
- return { message: `widget not found ${widgetName}`, status: 404 };
26
+ return reply.status(404).send({
27
+ error: `widget not found ${widgetName}`,
28
+ code: 404,
29
+ });
27
30
  }
28
31
 
29
32
  if (data?.data) {
@@ -43,22 +46,28 @@ export default async function widgetEdit({ pg = pgClients.client, body, params }
43
46
  || widgetData?.table_name
44
47
  || templateData.table;
45
48
 
46
- const loadTemplate = pg.pk?.['admin.doc_template'] ? await pg.query(
49
+ const loadTemplate = pg?.pk?.['admin.doc_template'] ? await pg.query(
47
50
  'select body from admin.doc_template where doc_type=5 and title=$1',
48
51
  [tableName]
49
52
  ).then(el => el.rows?.[0]?.body) : null;
50
53
 
51
- if (!tableName || !(pg.pk?.[loadTemplate?.table || tableName] || pgClients[widgetData?.data?.db || templateData?.db || 'client']?.pk?.[loadTemplate?.table || tableName])) {
52
- return { message: 'bad params: table ' + tableName, status: 400 };
54
+ if (!pg || !tableName || !(pg.pk?.[loadTemplate?.table || tableName] || pgClients[widgetData?.data?.db || templateData?.db || 'client']?.pk?.[loadTemplate?.table || tableName])) {
55
+ return reply.status(400).send({
56
+ error: 'bad params: table ' + tableName,
57
+ code: 400,
58
+ });
53
59
  }
54
60
 
55
61
  if (yml) {
56
62
  Object.assign(widgetData, { yml })
57
63
  }
58
64
 
59
- Object.assign(widgetData, { table_name: tableName, data: { ...widgetData?.data || {}, table_name: tableName } });
60
- console.log(widgetData);
61
- const rows = await dataUpdate({
65
+ if (widgetData?.data) {
66
+ Object.assign(widgetData, { data: { ...widgetData?.data || {}, table_name: tableName } });
67
+ }
68
+ Object.assign(widgetData, { table_name: tableName });
69
+ // console.log(widgetData);
70
+ const row = await dataUpdate({
62
71
  pg,
63
72
  table: 'bi.widget',
64
73
  id: widgetId,
@@ -102,5 +111,5 @@ export default async function widgetEdit({ pg = pgClients.client, body, params }
102
111
  data: { widgets },
103
112
  });
104
113
 
105
- return { message: rows, status: 200 };
114
+ return row;
106
115
  }