]> source.dussan.org Git - nextcloud-server.git/commitdiff
Use individual timers for separate config rows
authorRobin McCorkell <rmccorkell@karoshi.org.uk>
Sun, 15 Mar 2015 19:47:22 +0000 (19:47 +0000)
committerRobin McCorkell <rmccorkell@karoshi.org.uk>
Tue, 24 Mar 2015 22:25:30 +0000 (22:25 +0000)
apps/files_external/js/settings.js

index 9e4d026980f54daec78c56d14f35a8a3b4673478..254bab30c5667a5f5edb07a573a8f226c245f395 100644 (file)
@@ -412,7 +412,7 @@ MountConfigListView.prototype = {
        /**
         * Flag whether the list is about user storage configs (true)
         * or global storage configs (false)
-        * 
+        *
         * @type bool
         */
        _isPersonal: false,
@@ -488,35 +488,12 @@ MountConfigListView.prototype = {
        _initEvents: function() {
                var self = this;
 
-               this.$el.on('paste', 'td input', function() {
-                       var $me = $(this);
-                       var $tr = $me.closest('tr');
-                       setTimeout(function() {
-                               highlightInput($me);
-                               self.saveStorageConfig($tr);
-                       }, 20);
-               });
-
-               var timer;
-
-               this.$el.on('keyup', 'td input', function() {
-                       clearTimeout(timer);
-                       var $tr = $(this).closest('tr');
-                       highlightInput($(this));
-                       if ($(this).val) {
-                               timer = setTimeout(function() {
-                                       self.saveStorageConfig($tr);
-                               }, 2000);
-                       }
-               });
-
-               this.$el.on('change', 'td input:checkbox', function() {
-                       self.saveStorageConfig($(this).closest('tr'));
-               });
-
-               this.$el.on('change', '.applicable', function() {
-                       self.saveStorageConfig($(this).closest('tr'));
-               });
+               var onChangeHandler = _.bind(this._onChange, this);
+               //this.$el.on('input', 'td input', onChangeHandler);
+               this.$el.on('keyup', 'td input', onChangeHandler);
+               this.$el.on('paste', 'td input', onChangeHandler);
+               this.$el.on('change', 'td input:checkbox', onChangeHandler);
+               this.$el.on('change', '.applicable', onChangeHandler);
 
                this.$el.on('click', '.status>span', function() {
                        self.recheckStorageConfig($(this).closest('tr'));
@@ -529,6 +506,20 @@ MountConfigListView.prototype = {
                this.$el.on('change', '.selectBackend', _.bind(this._onSelectBackend, this));
        },
 
+       _onChange: function(event) {
+               var self = this;
+               var $target = $(event.target);
+               highlightInput($target);
+               var $tr = $target.closest('tr');
+
+               var timer = $tr.data('save-timer');
+               clearTimeout(timer);
+               timer = setTimeout(function() {
+                       self.saveStorageConfig($tr);
+               }, 2000);
+               $tr.data('save-timer', timer);
+       },
+
        _onSelectBackend: function(event) {
                var $target = $(event.target);
                var $el = this.$el;