Compare commits

..

26 Commits

Author SHA1 Message Date
1082be1251 update dist and lib 2020-08-19 19:26:05 +08:00
e67b4d5403 Optimize the update effect of updateRows. 2020-08-19 19:25:25 +08:00
1c7e03bff8 update change log 2020-08-19 19:25:20 +08:00
c5ff0cd474 update version to 2.9.7 2020-08-19 19:25:14 +08:00
1e76c1c0ec update dist and lib 2020-08-05 14:21:31 +08:00
731d89fb1a update version to 2.9.6 2020-08-05 14:20:33 +08:00
dd512c05dc update change log 2020-08-05 14:20:27 +08:00
be97afe8a9 fix: Carousel is abnormal when carousel is page 2020-08-05 14:19:23 +08:00
16013c0aa3 update dist 2020-08-05 10:03:59 +08:00
c3211c358e Merge branch 'master' of https://github.com/DataV-Team/Datav 2020-08-05 10:03:19 +08:00
536ded2964 update dist and lib 2020-08-05 09:59:49 +08:00
32b9757e0f Optmization: Reduce redundant node rendering 2020-08-05 09:59:20 +08:00
60247e548c update change log 2020-08-05 09:59:04 +08:00
58d27bc6b1 update version to 2.9.5 2020-08-05 09:58:58 +08:00
e0bd76032a update dist and lib 2020-07-03 17:40:19 +08:00
6139b5d9b7 update version to 2.9.4 2020-07-03 17:39:37 +08:00
c32d396f90 update change log 2020-07-03 17:39:12 +08:00
feada8a462 Optimize key value 2020-07-03 17:37:36 +08:00
9318431c88 update dist and lib 2020-07-02 11:15:51 +08:00
abba9ad931 update version to 2.9.3 2020-07-02 11:15:47 +08:00
2b06940ac7 update change log 2020-07-02 11:05:47 +08:00
026d9139c4 Optimize uuid 2020-07-02 11:00:19 +08:00
9b84417f01 update dist and lib 2020-06-16 14:49:59 +08:00
86da84af2e update version to 2.9.2 2020-06-16 14:49:32 +08:00
1ea106fd83 update change log 2020-06-16 14:49:11 +08:00
7491b34711 bug fixes: reset animationIndex when config upate 2020-06-16 14:48:16 +08:00
10 changed files with 150 additions and 33 deletions

View File

@ -1,8 +1,47 @@
# 2.9.7-alpha (2020-08-05)
### Optmization
- **scrollBoard:** Optimize the update effect of updateRows.
# 2.9.6-alpha (2020-08-05)
### Bug Fixes
- **scrollBoard:** Carousel is abnormal when carousel is page.
- **scrollRankingBoard:** Carousel is abnormal when carousel is page.
# 2.9.5-alpha (2020-08-05)
### Optmization
- **scrollBoard:** Reduce redundant node rendering.
- **scrollRankingBoard:** Reduce redundant node rendering.
- **scrollBoard:** Add api to update row data.
# 2.9.4-alpha (2020-07-03)
### Optmization
- **scrollBoard:** Optimize key value [(#8)](https://github.com/DataV-Team/DataV-React/issues/8).
# 2.9.3-alpha (2020-07-02)
### Perfect
- **uuid:** Optimization of `-` in uuid will cause abnormal svg animation [(#108)](https://github.com/DataV-Team/DataV/issues/108).
# 2.9.2-alpha (2020-06-16)
### Bug Fixes
- **scrollBoard:** reset animationIndex when config upate.
# 2.9.1-alpha (2020-06-16)
### BugFixes
### Bug Fixes
- **scrollRankingBoard:** Calculation optimization of negative values. [(#101)](https://github.com/DataV-Team/DataV/pull/101).
- **scrollRankingBoard:** Calculation optimization of negative values [(#101)](https://github.com/DataV-Team/DataV/pull/101).
### Perfect
@ -106,7 +145,7 @@
# 2.4.7-alpha (2019-10-24)
### perfect
### Perfect
- **charts:** Optimize memory leaks.
- **digitalFlop:** Optimize memory leaks.

48
dist/datav.map.vue.js vendored
View File

@ -38,8 +38,8 @@
const minusY = Math.abs(pointOne[1] - pointTwo[1]);
return Math.sqrt(minusX * minusX + minusY * minusY);
}
function uuid() {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
function uuid(hasHyphen) {
return (hasHyphen ? 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx' : 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx').replace(/[xy]/g, function (c) {
const r = Math.random() * 16 | 0;
const v = c == 'x' ? r : r & 0x3 | 0x8;
return v.toString(16);
@ -23018,7 +23018,8 @@
aligns: [],
animationIndex: 0,
animationHandler: '',
updater: 0
updater: 0,
needCalc: false
};
},
@ -23029,6 +23030,7 @@
calcData
} = this;
stopAnimation();
this.animationIndex = 0;
calcData();
}
@ -23207,6 +23209,18 @@
},
async animation(start = false) {
const {
needCalc,
calcHeights,
calcRowsData
} = this;
if (needCalc) {
calcRowsData();
calcHeights();
this.needCalc = false;
}
let {
avgHeight,
animationIndex,
@ -23231,7 +23245,7 @@
const animationNum = carousel === 'single' ? 1 : rowNum;
let rows = rowsData.slice(animationIndex);
rows.push(...rowsData.slice(0, animationIndex));
this.rows = rows;
this.rows = rows.slice(0, carousel === 'page' ? rowNum * 2 : rowNum + 1);
this.heights = new Array(rowLength).fill(avgHeight);
await new Promise(resolve => setTimeout(resolve, 300));
if (updater !== this.updater) return;
@ -23264,6 +23278,20 @@
rowIndex,
columnIndex: ci
});
},
updateRows(rows, animationIndex) {
const {
mergedConfig,
animationHandler,
animation
} = this;
this.mergedConfig = { ...mergedConfig,
data: [...rows]
};
this.needCalc = true;
if (typeof animationIndex === 'number') this.animationIndex = animationIndex;
if (!animationHandler) animation(true);
}
},
@ -23295,7 +23323,7 @@
},
_vm._l(_vm.header, function(headerItem, i) {
return _c("div", {
key: headerItem + i,
key: "" + headerItem + i,
staticClass: "header-item",
style:
"\n height: " +
@ -23328,7 +23356,7 @@
return _c(
"div",
{
key: row.toString() + row.scroll,
key: "" + row.toString() + row.scroll,
staticClass: "row-item",
style:
"\n height: " +
@ -23343,7 +23371,7 @@
},
_vm._l(row.ceils, function(ceil, ci) {
return _c("div", {
key: ceil + ri + ci,
key: "" + ceil + ri + ci,
staticClass: "ceil",
style: "width: " + _vm.widths[ci] + "px;",
attrs: { align: _vm.aligns[ci] },
@ -23375,7 +23403,7 @@
/* style */
const __vue_inject_styles__$z = function (inject) {
if (!inject) return
inject("data-v-64cbfe00_0", { source: ".dv-scroll-board {\n position: relative;\n width: 100%;\n height: 100%;\n color: #fff;\n}\n.dv-scroll-board .text {\n padding: 0 10px;\n box-sizing: border-box;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.dv-scroll-board .header {\n display: flex;\n flex-direction: row;\n font-size: 15px;\n}\n.dv-scroll-board .header .header-item {\n padding: 0 10px;\n box-sizing: border-box;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n transition: all 0.3s;\n}\n.dv-scroll-board .rows {\n overflow: hidden;\n}\n.dv-scroll-board .rows .row-item {\n display: flex;\n font-size: 14px;\n transition: all 0.3s;\n}\n.dv-scroll-board .rows .ceil {\n padding: 0 10px;\n box-sizing: border-box;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.dv-scroll-board .rows .index {\n border-radius: 3px;\n padding: 0px 3px;\n}\n", map: {"version":3,"sources":["main.vue"],"names":[],"mappings":"AAAA;EACE,kBAAkB;EAClB,WAAW;EACX,YAAY;EACZ,WAAW;AACb;AACA;EACE,eAAe;EACf,sBAAsB;EACtB,mBAAmB;EACnB,gBAAgB;EAChB,uBAAuB;AACzB;AACA;EACE,aAAa;EACb,mBAAmB;EACnB,eAAe;AACjB;AACA;EACE,eAAe;EACf,sBAAsB;EACtB,mBAAmB;EACnB,gBAAgB;EAChB,uBAAuB;EACvB,oBAAoB;AACtB;AACA;EACE,gBAAgB;AAClB;AACA;EACE,aAAa;EACb,eAAe;EACf,oBAAoB;AACtB;AACA;EACE,eAAe;EACf,sBAAsB;EACtB,mBAAmB;EACnB,gBAAgB;EAChB,uBAAuB;AACzB;AACA;EACE,kBAAkB;EAClB,gBAAgB;AAClB","file":"main.vue","sourcesContent":[".dv-scroll-board {\n position: relative;\n width: 100%;\n height: 100%;\n color: #fff;\n}\n.dv-scroll-board .text {\n padding: 0 10px;\n box-sizing: border-box;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.dv-scroll-board .header {\n display: flex;\n flex-direction: row;\n font-size: 15px;\n}\n.dv-scroll-board .header .header-item {\n padding: 0 10px;\n box-sizing: border-box;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n transition: all 0.3s;\n}\n.dv-scroll-board .rows {\n overflow: hidden;\n}\n.dv-scroll-board .rows .row-item {\n display: flex;\n font-size: 14px;\n transition: all 0.3s;\n}\n.dv-scroll-board .rows .ceil {\n padding: 0 10px;\n box-sizing: border-box;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.dv-scroll-board .rows .index {\n border-radius: 3px;\n padding: 0px 3px;\n}\n"]}, media: undefined });
inject("data-v-26e19f4c_0", { source: ".dv-scroll-board {\n position: relative;\n width: 100%;\n height: 100%;\n color: #fff;\n}\n.dv-scroll-board .text {\n padding: 0 10px;\n box-sizing: border-box;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.dv-scroll-board .header {\n display: flex;\n flex-direction: row;\n font-size: 15px;\n}\n.dv-scroll-board .header .header-item {\n padding: 0 10px;\n box-sizing: border-box;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n transition: all 0.3s;\n}\n.dv-scroll-board .rows {\n overflow: hidden;\n}\n.dv-scroll-board .rows .row-item {\n display: flex;\n font-size: 14px;\n transition: all 0.3s;\n}\n.dv-scroll-board .rows .ceil {\n padding: 0 10px;\n box-sizing: border-box;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.dv-scroll-board .rows .index {\n border-radius: 3px;\n padding: 0px 3px;\n}\n", map: {"version":3,"sources":["main.vue"],"names":[],"mappings":"AAAA;EACE,kBAAkB;EAClB,WAAW;EACX,YAAY;EACZ,WAAW;AACb;AACA;EACE,eAAe;EACf,sBAAsB;EACtB,mBAAmB;EACnB,gBAAgB;EAChB,uBAAuB;AACzB;AACA;EACE,aAAa;EACb,mBAAmB;EACnB,eAAe;AACjB;AACA;EACE,eAAe;EACf,sBAAsB;EACtB,mBAAmB;EACnB,gBAAgB;EAChB,uBAAuB;EACvB,oBAAoB;AACtB;AACA;EACE,gBAAgB;AAClB;AACA;EACE,aAAa;EACb,eAAe;EACf,oBAAoB;AACtB;AACA;EACE,eAAe;EACf,sBAAsB;EACtB,mBAAmB;EACnB,gBAAgB;EAChB,uBAAuB;AACzB;AACA;EACE,kBAAkB;EAClB,gBAAgB;AAClB","file":"main.vue","sourcesContent":[".dv-scroll-board {\n position: relative;\n width: 100%;\n height: 100%;\n color: #fff;\n}\n.dv-scroll-board .text {\n padding: 0 10px;\n box-sizing: border-box;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.dv-scroll-board .header {\n display: flex;\n flex-direction: row;\n font-size: 15px;\n}\n.dv-scroll-board .header .header-item {\n padding: 0 10px;\n box-sizing: border-box;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n transition: all 0.3s;\n}\n.dv-scroll-board .rows {\n overflow: hidden;\n}\n.dv-scroll-board .rows .row-item {\n display: flex;\n font-size: 14px;\n transition: all 0.3s;\n}\n.dv-scroll-board .rows .ceil {\n padding: 0 10px;\n box-sizing: border-box;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.dv-scroll-board .rows .index {\n border-radius: 3px;\n padding: 0px 3px;\n}\n"]}, media: undefined });
};
/* scoped */
@ -23608,7 +23636,7 @@
const animationNum = carousel === 'single' ? 1 : rowNum;
let rows = rowsData.slice(animationIndex);
rows.push(...rowsData.slice(0, animationIndex));
this.rows = rows;
this.rows = rows.slice(0, carousel === 'page' ? rowNum * 2 : rowNum + 1);
this.heights = new Array(rowLength).fill(avgHeight);
await new Promise(resolve => setTimeout(resolve, 300));
if (updater !== this.updater) return;
@ -23698,7 +23726,7 @@
/* style */
const __vue_inject_styles__$A = function (inject) {
if (!inject) return
inject("data-v-226dd7bc_0", { source: ".dv-scroll-ranking-board {\n width: 100%;\n height: 100%;\n color: #fff;\n overflow: hidden;\n}\n.dv-scroll-ranking-board .row-item {\n transition: all 0.3s;\n display: flex;\n flex-direction: column;\n justify-content: center;\n overflow: hidden;\n}\n.dv-scroll-ranking-board .ranking-info {\n display: flex;\n width: 100%;\n font-size: 13px;\n}\n.dv-scroll-ranking-board .ranking-info .rank {\n width: 40px;\n color: #1370fb;\n}\n.dv-scroll-ranking-board .ranking-info .info-name {\n flex: 1;\n}\n.dv-scroll-ranking-board .ranking-column {\n border-bottom: 2px solid rgba(19, 112, 251, 0.5);\n margin-top: 5px;\n}\n.dv-scroll-ranking-board .ranking-column .inside-column {\n position: relative;\n height: 6px;\n background-color: #1370fb;\n margin-bottom: 2px;\n border-radius: 1px;\n overflow: hidden;\n}\n.dv-scroll-ranking-board .ranking-column .shine {\n position: absolute;\n left: 0%;\n top: 2px;\n height: 2px;\n width: 50px;\n transform: translateX(-100%);\n background: radial-gradient(#28f8ff 5%, transparent 80%);\n animation: shine 3s ease-in-out infinite alternate;\n}\n@keyframes shine {\n80% {\n left: 0%;\n transform: translateX(-100%);\n}\n100% {\n left: 100%;\n transform: translateX(0%);\n}\n}\n", map: {"version":3,"sources":["main.vue"],"names":[],"mappings":"AAAA;EACE,WAAW;EACX,YAAY;EACZ,WAAW;EACX,gBAAgB;AAClB;AACA;EACE,oBAAoB;EACpB,aAAa;EACb,sBAAsB;EACtB,uBAAuB;EACvB,gBAAgB;AAClB;AACA;EACE,aAAa;EACb,WAAW;EACX,eAAe;AACjB;AACA;EACE,WAAW;EACX,cAAc;AAChB;AACA;EACE,OAAO;AACT;AACA;EACE,gDAAgD;EAChD,eAAe;AACjB;AACA;EACE,kBAAkB;EAClB,WAAW;EACX,yBAAyB;EACzB,kBAAkB;EAClB,kBAAkB;EAClB,gBAAgB;AAClB;AACA;EACE,kBAAkB;EAClB,QAAQ;EACR,QAAQ;EACR,WAAW;EACX,WAAW;EACX,4BAA4B;EAC5B,wDAAwD;EACxD,kDAAkD;AACpD;AACA;AACE;IACE,QAAQ;IACR,4BAA4B;AAC9B;AACA;IACE,UAAU;IACV,yBAAyB;AAC3B;AACF","file":"main.vue","sourcesContent":[".dv-scroll-ranking-board {\n width: 100%;\n height: 100%;\n color: #fff;\n overflow: hidden;\n}\n.dv-scroll-ranking-board .row-item {\n transition: all 0.3s;\n display: flex;\n flex-direction: column;\n justify-content: center;\n overflow: hidden;\n}\n.dv-scroll-ranking-board .ranking-info {\n display: flex;\n width: 100%;\n font-size: 13px;\n}\n.dv-scroll-ranking-board .ranking-info .rank {\n width: 40px;\n color: #1370fb;\n}\n.dv-scroll-ranking-board .ranking-info .info-name {\n flex: 1;\n}\n.dv-scroll-ranking-board .ranking-column {\n border-bottom: 2px solid rgba(19, 112, 251, 0.5);\n margin-top: 5px;\n}\n.dv-scroll-ranking-board .ranking-column .inside-column {\n position: relative;\n height: 6px;\n background-color: #1370fb;\n margin-bottom: 2px;\n border-radius: 1px;\n overflow: hidden;\n}\n.dv-scroll-ranking-board .ranking-column .shine {\n position: absolute;\n left: 0%;\n top: 2px;\n height: 2px;\n width: 50px;\n transform: translateX(-100%);\n background: radial-gradient(#28f8ff 5%, transparent 80%);\n animation: shine 3s ease-in-out infinite alternate;\n}\n@keyframes shine {\n 80% {\n left: 0%;\n transform: translateX(-100%);\n }\n 100% {\n left: 100%;\n transform: translateX(0%);\n }\n}\n"]}, media: undefined });
inject("data-v-14e1c432_0", { source: ".dv-scroll-ranking-board {\n width: 100%;\n height: 100%;\n color: #fff;\n overflow: hidden;\n}\n.dv-scroll-ranking-board .row-item {\n transition: all 0.3s;\n display: flex;\n flex-direction: column;\n justify-content: center;\n overflow: hidden;\n}\n.dv-scroll-ranking-board .ranking-info {\n display: flex;\n width: 100%;\n font-size: 13px;\n}\n.dv-scroll-ranking-board .ranking-info .rank {\n width: 40px;\n color: #1370fb;\n}\n.dv-scroll-ranking-board .ranking-info .info-name {\n flex: 1;\n}\n.dv-scroll-ranking-board .ranking-column {\n border-bottom: 2px solid rgba(19, 112, 251, 0.5);\n margin-top: 5px;\n}\n.dv-scroll-ranking-board .ranking-column .inside-column {\n position: relative;\n height: 6px;\n background-color: #1370fb;\n margin-bottom: 2px;\n border-radius: 1px;\n overflow: hidden;\n}\n.dv-scroll-ranking-board .ranking-column .shine {\n position: absolute;\n left: 0%;\n top: 2px;\n height: 2px;\n width: 50px;\n transform: translateX(-100%);\n background: radial-gradient(#28f8ff 5%, transparent 80%);\n animation: shine 3s ease-in-out infinite alternate;\n}\n@keyframes shine {\n80% {\n left: 0%;\n transform: translateX(-100%);\n}\n100% {\n left: 100%;\n transform: translateX(0%);\n}\n}\n", map: {"version":3,"sources":["main.vue"],"names":[],"mappings":"AAAA;EACE,WAAW;EACX,YAAY;EACZ,WAAW;EACX,gBAAgB;AAClB;AACA;EACE,oBAAoB;EACpB,aAAa;EACb,sBAAsB;EACtB,uBAAuB;EACvB,gBAAgB;AAClB;AACA;EACE,aAAa;EACb,WAAW;EACX,eAAe;AACjB;AACA;EACE,WAAW;EACX,cAAc;AAChB;AACA;EACE,OAAO;AACT;AACA;EACE,gDAAgD;EAChD,eAAe;AACjB;AACA;EACE,kBAAkB;EAClB,WAAW;EACX,yBAAyB;EACzB,kBAAkB;EAClB,kBAAkB;EAClB,gBAAgB;AAClB;AACA;EACE,kBAAkB;EAClB,QAAQ;EACR,QAAQ;EACR,WAAW;EACX,WAAW;EACX,4BAA4B;EAC5B,wDAAwD;EACxD,kDAAkD;AACpD;AACA;AACE;IACE,QAAQ;IACR,4BAA4B;AAC9B;AACA;IACE,UAAU;IACV,yBAAyB;AAC3B;AACF","file":"main.vue","sourcesContent":[".dv-scroll-ranking-board {\n width: 100%;\n height: 100%;\n color: #fff;\n overflow: hidden;\n}\n.dv-scroll-ranking-board .row-item {\n transition: all 0.3s;\n display: flex;\n flex-direction: column;\n justify-content: center;\n overflow: hidden;\n}\n.dv-scroll-ranking-board .ranking-info {\n display: flex;\n width: 100%;\n font-size: 13px;\n}\n.dv-scroll-ranking-board .ranking-info .rank {\n width: 40px;\n color: #1370fb;\n}\n.dv-scroll-ranking-board .ranking-info .info-name {\n flex: 1;\n}\n.dv-scroll-ranking-board .ranking-column {\n border-bottom: 2px solid rgba(19, 112, 251, 0.5);\n margin-top: 5px;\n}\n.dv-scroll-ranking-board .ranking-column .inside-column {\n position: relative;\n height: 6px;\n background-color: #1370fb;\n margin-bottom: 2px;\n border-radius: 1px;\n overflow: hidden;\n}\n.dv-scroll-ranking-board .ranking-column .shine {\n position: absolute;\n left: 0%;\n top: 2px;\n height: 2px;\n width: 50px;\n transform: translateX(-100%);\n background: radial-gradient(#28f8ff 5%, transparent 80%);\n animation: shine 3s ease-in-out infinite alternate;\n}\n@keyframes shine {\n 80% {\n left: 0%;\n transform: translateX(-100%);\n }\n 100% {\n left: 100%;\n transform: translateX(0%);\n }\n}\n"]}, media: undefined });
};
/* scoped */

File diff suppressed because one or more lines are too long

View File

@ -4,7 +4,7 @@
<div
class="header-item"
v-for="(headerItem, i) in header"
:key="headerItem + i"
:key="`${headerItem}${i}`"
:style="`
height: ${mergedConfig.headerHeight}px;
line-height: ${mergedConfig.headerHeight}px;
@ -23,7 +23,7 @@
<div
class="row-item"
v-for="(row, ri) in rows"
:key="row.toString() + row.scroll"
:key="`${row.toString()}${row.scroll}`"
:style="`
height: ${heights[ri]}px;
line-height: ${heights[ri]}px;
@ -33,7 +33,7 @@
<div
class="ceil"
v-for="(ceil, ci) in row.ceils"
:key="ceil + ri + ci"
:key="`${ceil}${ri}${ci}`"
:style="`width: ${widths[ci]}px;`"
:align="aligns[ci]"
v-html="ceil"
@ -178,7 +178,9 @@ export default {
animationHandler: '',
updater: 0
updater: 0,
needCalc: false
}
},
watch: {
@ -187,6 +189,8 @@ export default {
stopAnimation()
this.animationIndex = 0
calcData()
}
},
@ -333,6 +337,14 @@ export default {
this.aligns = deepMerge(aligns, align)
},
async animation (start = false) {
const { needCalc, calcHeights, calcRowsData } = this
if (needCalc) {
calcRowsData()
calcHeights()
this.needCalc = false
}
let { avgHeight, animationIndex, mergedConfig, rowsData, animation, updater } = this
const { waitTime, carousel, rowNum } = mergedConfig
@ -351,7 +363,7 @@ export default {
let rows = rowsData.slice(animationIndex)
rows.push(...rowsData.slice(0, animationIndex))
this.rows = rows
this.rows = rows.slice(0, carousel === 'page' ? rowNum * 2 : rowNum + 1)
this.heights = new Array(rowLength).fill(avgHeight)
await new Promise(resolve => setTimeout(resolve, 300))
@ -385,6 +397,19 @@ export default {
rowIndex,
columnIndex: ci
})
},
updateRows(rows, animationIndex) {
const { mergedConfig, animationHandler, animation } = this
this.mergedConfig = {
...mergedConfig,
data: [...rows]
}
this.needCalc = true
if (typeof animationIndex === 'number') this.animationIndex = animationIndex
if (!animationHandler) animation(true)
}
},
destroyed () {

View File

@ -208,7 +208,7 @@ export default {
let rows = rowsData.slice(animationIndex)
rows.push(...rowsData.slice(0, animationIndex))
this.rows = rows
this.rows = rows.slice(0, carousel === 'page' ? rowNum * 2 : rowNum + 1)
this.heights = new Array(rowLength).fill(avgHeight)
await new Promise(resolve => setTimeout(resolve, 300))

View File

@ -38,10 +38,10 @@ export function getPointDistance (pointOne, pointTwo) {
return Math.sqrt(minusX * minusX + minusY * minusY)
}
export function uuid () {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
export function uuid (hasHyphen) {
return (hasHyphen ? 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx' : 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx').replace(/[xy]/g, function (c) {
const r = Math.random() * 16 | 0
const v = c == 'x' ? r : (r & 0x3 | 0x8)
return v.toString(16)
})
})
}

View File

@ -1,6 +1,6 @@
{
"name": "@jiaminghi/data-view",
"version": "2.9.1",
"version": "2.9.7",
"author": "JiaMing <743192023@qq.com>",
"description": "Vue Large screen data display component library",
"main": "lib/index.js",

View File

@ -4,7 +4,7 @@
<div
class="header-item"
v-for="(headerItem, i) in header"
:key="headerItem + i"
:key="`${headerItem}${i}`"
:style="`
height: ${mergedConfig.headerHeight}px;
line-height: ${mergedConfig.headerHeight}px;
@ -23,7 +23,7 @@
<div
class="row-item"
v-for="(row, ri) in rows"
:key="row.toString() + row.scroll"
:key="`${row.toString()}${row.scroll}`"
:style="`
height: ${heights[ri]}px;
line-height: ${heights[ri]}px;
@ -33,7 +33,7 @@
<div
class="ceil"
v-for="(ceil, ci) in row.ceils"
:key="ceil + ri + ci"
:key="`${ceil}${ri}${ci}`"
:style="`width: ${widths[ci]}px;`"
:align="aligns[ci]"
v-html="ceil"
@ -178,7 +178,9 @@ export default {
animationHandler: '',
updater: 0
updater: 0,
needCalc: false
}
},
watch: {
@ -187,6 +189,8 @@ export default {
stopAnimation()
this.animationIndex = 0
calcData()
}
},
@ -333,6 +337,14 @@ export default {
this.aligns = deepMerge(aligns, align)
},
async animation (start = false) {
const { needCalc, calcHeights, calcRowsData } = this
if (needCalc) {
calcRowsData()
calcHeights()
this.needCalc = false
}
let { avgHeight, animationIndex, mergedConfig, rowsData, animation, updater } = this
const { waitTime, carousel, rowNum } = mergedConfig
@ -351,7 +363,7 @@ export default {
let rows = rowsData.slice(animationIndex)
rows.push(...rowsData.slice(0, animationIndex))
this.rows = rows
this.rows = rows.slice(0, carousel === 'page' ? rowNum * 2 : rowNum + 1)
this.heights = new Array(rowLength).fill(avgHeight)
await new Promise(resolve => setTimeout(resolve, 300))
@ -385,6 +397,19 @@ export default {
rowIndex,
columnIndex: ci
})
},
updateRows(rows, animationIndex) {
const { mergedConfig, animationHandler, animation } = this
this.mergedConfig = {
...mergedConfig,
data: [...rows]
}
this.needCalc = true
if (typeof animationIndex === 'number') this.animationIndex = animationIndex
if (!animationHandler) animation(true)
}
},
destroyed () {

View File

@ -208,7 +208,7 @@ export default {
let rows = rowsData.slice(animationIndex)
rows.push(...rowsData.slice(0, animationIndex))
this.rows = rows
this.rows = rows.slice(0, carousel === 'page' ? rowNum * 2 : rowNum + 1)
this.heights = new Array(rowLength).fill(avgHeight)
await new Promise(resolve => setTimeout(resolve, 300))

View File

@ -38,10 +38,10 @@ export function getPointDistance (pointOne, pointTwo) {
return Math.sqrt(minusX * minusX + minusY * minusY)
}
export function uuid () {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
export function uuid (hasHyphen) {
return (hasHyphen ? 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx' : 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx').replace(/[xy]/g, function (c) {
const r = Math.random() * 16 | 0
const v = c == 'x' ? r : (r & 0x3 | 0x8)
return v.toString(16)
})
})
}