Revert "Improve scroller performance"

This reverts commit 0fbd076a52.
pull/162/head
Varun Patil 2022-10-29 16:08:06 -07:00
parent cd949edfdc
commit 00a5230c9f
8 changed files with 42 additions and 117 deletions

View File

@ -24,7 +24,6 @@ jobs:
- name: Build vue app
run: |
make dev-setup
make patch-external
make build-js-production
zip -r vue.zip js/
@ -41,8 +40,8 @@ jobs:
# do not stop on another job's failure
fail-fast: false
matrix:
php-versions: ["7.4"]
server-versions: ["stable25"]
php-versions: ['7.4']
server-versions: ['stable25']
services:
mysql:
@ -101,6 +100,7 @@ jobs:
name: report-mysql-${{ matrix.php-versions }}-${{ matrix.server-versions }}
path: apps/${{ env.APP_NAME }}/playwright-report
pgsql:
runs-on: ubuntu-latest
needs: vue
@ -109,8 +109,8 @@ jobs:
# do not stop on another job's failure
fail-fast: false
matrix:
php-versions: ["7.4"]
server-versions: ["stable25"]
php-versions: ['7.4']
server-versions: ['stable25']
services:
postgres:
@ -181,8 +181,8 @@ jobs:
# do not stop on another job's failure
fail-fast: false
matrix:
php-versions: ["7.4"]
server-versions: ["stable25"]
php-versions: ['7.4']
server-versions: ['stable25']
steps:
- name: Checkout server
@ -231,3 +231,4 @@ jobs:
with:
name: report-sqlite-${{ matrix.php-versions }}-${{ matrix.server-versions }}
path: apps/${{ env.APP_NAME }}/playwright-report

View File

@ -13,35 +13,34 @@ jobs:
permissions:
contents: write
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Checkout
uses: actions/checkout@v3
- name: Use Node.js
uses: actions/setup-node@v3
with:
node-version: 18.x
- name: Use Node.js
uses: actions/setup-node@v3
with:
node-version: 18.x
- name: Build
run: |
make dev-setup
make patch-external
make build-js-production
./scripts/bundle.sh
- name: Build
run: |
make dev-setup
make build-js-production
./scripts/bundle.sh
- name: Upload app tarball to release
uses: svenstaro/upload-release-action@v2
id: attach_to_release
with:
file: memories.tar.gz
asset_name: memories.tar.gz
tag: ${{ github.ref }}
overwrite: true
- name: Upload app tarball to release
uses: svenstaro/upload-release-action@v2
id: attach_to_release
with:
file: memories.tar.gz
asset_name: memories.tar.gz
tag: ${{ github.ref }}
overwrite: true
- name: Upload app to Nextcloud appstore
uses: R0Wi/nextcloud-appstore-push-action@v1
with:
app_name: ${{ env.APP_NAME }}
appstore_token: ${{ secrets.APPSTORE_TOKEN }}
download_url: ${{ steps.attach_to_release.outputs.browser_download_url }}
app_private_key: ${{ secrets.APP_PRIVATE_KEY }}
nightly: ${{ github.event.release.prerelease }}
- name: Upload app to Nextcloud appstore
uses: R0Wi/nextcloud-appstore-push-action@v1
with:
app_name: ${{ env.APP_NAME }}
appstore_token: ${{ secrets.APPSTORE_TOKEN }}
download_url: ${{ steps.attach_to_release.outputs.browser_download_url }}
app_private_key: ${{ secrets.APP_PRIVATE_KEY }}
nightly: ${{ github.event.release.prerelease }}

View File

@ -26,9 +26,6 @@ build-js:
build-js-production:
rm -f js/* && npm run build
patch-external:
patch -p1 < patches/scroller.patch
watch-js:
npm run watch

2
package-lock.json generated
View File

@ -23,7 +23,7 @@
"vue-material-design-icons": "^5.1.2",
"vue-property-decorator": "^9.1.2",
"vue-router": "^3.5.4",
"vue-virtual-scroller": "1.1.2",
"vue-virtual-scroller": "^1.1.2",
"webdav": "^4.11.0"
},
"devDependencies": {

View File

@ -43,7 +43,7 @@
"vue-material-design-icons": "^5.1.2",
"vue-property-decorator": "^9.1.2",
"vue-router": "^3.5.4",
"vue-virtual-scroller": "1.1.2",
"vue-virtual-scroller": "^1.1.2",
"webdav": "^4.11.0"
},
"browserslist": [

View File

@ -1,54 +0,0 @@
--- ./node_modules/vue-virtual-scroller/dist/vue-virtual-scroller.esm.js 2022-10-29 15:40:12.517184534 -0700
+++ ./node_modules/vue-virtual-scroller/dist/vue-virtual-scroller.esm.js 2022-10-29 15:40:42.814432774 -0700
@@ -99,6 +99,10 @@
type: Boolean,
default: false
},
+ updateInterval: {
+ type: Number,
+ default: 0,
+ },
skipHover: {
type: Boolean,
default: false
@@ -262,7 +266,9 @@
handleScroll(event) {
if (!this.$_scrollDirty) {
this.$_scrollDirty = true;
- requestAnimationFrame(() => {
+ if (this.$_updateTimeout) return
+
+ const requestUpdate = () => requestAnimationFrame(() => {
this.$_scrollDirty = false;
const {
continuous
@@ -272,9 +278,19 @@
// When non continous scrolling is ending, we force a refresh
if (!continuous) {
clearTimeout(this.$_refreshTimout);
- this.$_refreshTimout = setTimeout(this.handleScroll, 100);
+ this.$_refreshTimout = setTimeout(this.handleScroll, this.updateInterval + 100);
}
});
+
+ requestUpdate()
+
+ // Schedule the next update with throttling
+ if (this.updateInterval) {
+ this.$_updateTimeout = setTimeout(() => {
+ this.$_updateTimeout = 0
+ if (this.$_scrollDirty) requestUpdate();
+ }, this.updateInterval)
+ }
}
},
handleVisibilityChange(isVisible, entry) {
@@ -505,7 +521,7 @@
// After the user has finished scrolling
// Sort views so text selection is correct
clearTimeout(this.$_sortTimer);
- this.$_sortTimer = setTimeout(this.sortViews, 300);
+ this.$_sortTimer = setTimeout(this.sortViews, this.updateInterval + 300);
return {
continuous
};

View File

@ -83,11 +83,9 @@ export default class ScrollerManager extends Mixins(GlobalMixin) {
/** Scrolling recycler timer */
private scrollingRecyclerTimer = null as number | null;
/** View size reflow timer */
private reflowRequest!: boolean;
private reflowRequest = false;
/** Tick adjust timer */
private adjustRequest!: boolean;
/** Recycler scrolling throttle */
private recyclerScrollDirty!: boolean;
private adjustRequest = false;
/** Get the visible ticks */
get visibleTicks() {
@ -117,17 +115,6 @@ export default class ScrollerManager extends Mixins(GlobalMixin) {
/** Recycler scroll event, must be called by timeline */
public recyclerScrolled() {
if (!this.recyclerScrollDirty) {
this.recyclerScrollDirty = true;
window.setTimeout(() => {
this.recyclerScrollDirty = false;
requestAnimationFrame(this.updateFromRecyclerScroll);
}, 100);
}
}
/** Update cursor position from recycler scroll position */
public updateFromRecyclerScroll() {
// Ignore if not initialized
if (!this.ticks.length) return;
@ -569,7 +556,6 @@ export default class ScrollerManager extends Mixins(GlobalMixin) {
min-width: 100%;
min-height: 1.5px;
will-change: transform;
transition: transform 0.1s linear;
&.st {
font-size: 0.75em;
@ -593,11 +579,8 @@ export default class ScrollerManager extends Mixins(GlobalMixin) {
}
}
}
&:hover > .cursor {
transition: none;
&.st {
opacity: 1;
}
&:hover > .cursor.st {
opacity: 1;
}
}
</style>

View File

@ -26,12 +26,11 @@
:class="{ empty: list.length === 0 }"
:items="list"
:emit-update="true"
:buffer="800"
:buffer="400"
:skipHover="true"
key-field="id"
size-field="size"
type-field="type"
:updateInterval="100"
@update="scrollChange"
@resize="handleResizeWithDelay"
>