summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorVincent Petry <vincent@nextcloud.com>2022-09-14 20:20:50 +0200
committerGitHub <noreply@github.com>2022-09-14 20:20:50 +0200
commitaf35ea308b65dd17c8641ba6a7e8306073c29ad2 (patch)
treed2e2fd916cae6dbe8fe95a467af8503fcf825a1e /apps
parent204a700f85e17966a15afaa2dc91250e3c8a77b4 (diff)
parentd939be4a435658bef6e4518d3bd61b848b8b25ae (diff)
downloadnextcloud-server-af35ea308b65dd17c8641ba6a7e8306073c29ad2.tar.gz
nextcloud-server-af35ea308b65dd17c8641ba6a7e8306073c29ad2.zip
Merge pull request #34071 from nextcloud/bug/33847/fix-grid-view-toggle
Fix grid view toggle
Diffstat (limited to 'apps')
-rw-r--r--apps/files/js/app.js43
-rw-r--r--apps/files/js/filelist.js30
2 files changed, 44 insertions, 29 deletions
diff --git a/apps/files/js/app.js b/apps/files/js/app.js
index f7863de09be..26a0ed9c084 100644
--- a/apps/files/js/app.js
+++ b/apps/files/js/app.js
@@ -61,6 +61,11 @@
var cropImagePreviews = $('#cropImagePreviews').val() === "1";
this.$cropImagePreviews.prop('checked', cropImagePreviews);
+ // Toggle for grid view
+ this.$showGridView = $('input#showgridview');
+ this.$showGridView.on('change', _.bind(this._onGridviewChange, this));
+ $('#view-toggle').tooltip({placement: 'bottom', trigger: 'hover'});
+
if ($('#fileNotFound').val() === "1") {
OC.Notification.show(t('files', 'File could not be found'), {type: 'error'});
}
@@ -190,7 +195,16 @@
* @param {OCA.Files.FileList} newFileList -
*/
updateCurrentFileList: function(newFileList) {
+ if (this.currentFileList === newFileList) {
+ return
+ }
+
this.currentFileList = newFileList;
+ if (this.currentFileList !== null) {
+ // update grid view to the current value
+ const isGridView = this.$showGridView.is(':checked');
+ this.currentFileList.setGridView(isGridView);
+ }
},
/**
@@ -394,7 +408,34 @@
} else {
OC.Util.History.pushState(this._makeUrlParams(params));
}
- }
+ },
+
+ /**
+ * Toggle showing gridview by default or not
+ *
+ * @returns {undefined}
+ */
+ _onGridviewChange: function() {
+ const isGridView = this.$showGridView.is(':checked');
+ // only save state if user is logged in
+ if (OC.currentUser) {
+ $.post(OC.generateUrl('/apps/files/api/v1/showgridview'), {
+ show: isGridView,
+ });
+ }
+ this.$showGridView.next('#view-toggle')
+ .removeClass('icon-toggle-filelist icon-toggle-pictures')
+ .addClass(isGridView ? 'icon-toggle-filelist' : 'icon-toggle-pictures')
+ this.$showGridView.next('#view-toggle').attr(
+ 'data-original-title',
+ isGridView ? t('files', 'Show list view') : t('files', 'Show grid view'),
+ )
+
+ if (this.currentFileList) {
+ this.currentFileList.setGridView(isGridView);
+ }
+ },
+
};
})();
diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js
index 77f67c64ed7..ee596dd417e 100644
--- a/apps/files/js/filelist.js
+++ b/apps/files/js/filelist.js
@@ -105,7 +105,7 @@
* @return {number} page size
*/
pageSize: function() {
- var isGridView = this.$showGridView.is(':checked');
+ var isGridView = this.$table.hasClass('view-grid');
var columns = 1;
var rows = Math.ceil(this.$container.height() / 50);
if (isGridView) {
@@ -368,12 +368,6 @@
this.$el.find('thead th .columntitle').click(_.bind(this._onClickHeader, this));
- // Toggle for grid view, only register once
- this.$showGridView = $('input#showgridview:not(.registered)');
- this.$showGridView.on('change', _.bind(this._onGridviewChange, this));
- this.$showGridView.addClass('registered');
- $('#view-toggle').tooltip({placement: 'bottom', trigger: 'hover'});
-
this._onResize = _.debounce(_.bind(this._onResize, this), 250);
$('#app-content').on('appresized', this._onResize);
$(window).resize(this._onResize);
@@ -747,27 +741,7 @@
this.breadcrumb._resize();
},
- /**
- * Toggle showing gridview by default or not
- *
- * @returns {undefined}
- */
- _onGridviewChange: function() {
- const isGridView = this.$showGridView.is(':checked');
- // only save state if user is logged in
- if (OC.currentUser) {
- $.post(OC.generateUrl('/apps/files/api/v1/showgridview'), {
- show: isGridView,
- });
- }
- this.$showGridView.next('#view-toggle')
- .removeClass('icon-toggle-filelist icon-toggle-pictures')
- .addClass(isGridView ? 'icon-toggle-filelist' : 'icon-toggle-pictures')
- this.$showGridView.next('#view-toggle').attr(
- 'data-original-title',
- isGridView ? t('files', 'Show list view') : t('files', 'Show grid view'),
- )
-
+ setGridView: function(isGridView) {
this.$table.toggleClass('view-grid', isGridView);
if (isGridView) {
// If switching into grid view from list view, too few files might be displayed