diff --git a/interfaces/Glitter/templates/static/javascripts/glitter.main.js b/interfaces/Glitter/templates/static/javascripts/glitter.main.js index 4bc0a26..f22954e 100644 --- a/interfaces/Glitter/templates/static/javascripts/glitter.main.js +++ b/interfaces/Glitter/templates/static/javascripts/glitter.main.js @@ -629,6 +629,37 @@ function ViewModel() { } }) + // Save the rest in config if global-settings + var saveInterfaceSettings = function(newValue) { + if(self.useGlobalOptions()) { + var interfaceSettings = { + "dateFormat": self.dateFormat, + "extraQueueColumns": self.extraQueueColumns, + "extraHistoryColumns": self.extraHistoryColumns, + "displayCompact": self.displayCompact, + "displayFullWidth": self.displayFullWidth, + "displayTabbed": self.displayTabbed, + "confirmDeleteQueue": self.confirmDeleteQueue, + "confirmDeleteHistory": self.confirmDeleteHistory + }; + callAPI({ + mode: "set_config", + section: "misc", + keyword: "interface_settings", + value: ko.toJSON(interfaceSettings) + }) + } + } + + self.dateFormat.subscribe(saveInterfaceSettings); + self.extraQueueColumns.subscribe(saveInterfaceSettings); + self.extraHistoryColumns.subscribe(saveInterfaceSettings); + self.displayCompact.subscribe(saveInterfaceSettings); + self.displayFullWidth.subscribe(saveInterfaceSettings); + self.displayTabbed.subscribe(saveInterfaceSettings); + self.confirmDeleteQueue.subscribe(saveInterfaceSettings); + self.confirmDeleteHistory.subscribe(saveInterfaceSettings); + /*** Add NZB's ***/ @@ -1073,6 +1104,17 @@ function ViewModel() { // Set queue limit self.queue.paginationLimit(response.config.misc.queue_limit.toString()) + + // Import the rest of the settings + var interfaceSettings = JSON.parse(response.config.misc.interface_settings); + self.dateFormat(interfaceSettings['dateFormat']); + self.extraQueueColumns(interfaceSettings['extraQueueColumns']); + self.extraHistoryColumns(interfaceSettings['extraHistoryColumns']); + self.displayCompact(interfaceSettings['displayCompact']); + self.displayFullWidth(interfaceSettings['displayFullWidth']); + self.displayTabbed(interfaceSettings['displayTabbed']); + self.confirmDeleteQueue(interfaceSettings['confirmDeleteQueue']); + self.confirmDeleteHistory(interfaceSettings['confirmDeleteHistory']); } // Set bandwidth limit diff --git a/sabnzbd/api.py b/sabnzbd/api.py index 3ba80f8..98f2986 100644 --- a/sabnzbd/api.py +++ b/sabnzbd/api.py @@ -1318,6 +1318,7 @@ def build_queue(start=0, limit=0, trans=False, output=None, search=None, nzo_ids start = int_conv(start) info["refresh_rate"] = str(cfg.refresh_rate()) if cfg.refresh_rate() > 0 else "" + info["interface_settings"] = cfg.interface_settings() info["scripts"] = list_scripts() info["categories"] = list_cats(output is None) info["rating_enable"] = bool(cfg.rating_enable()) diff --git a/sabnzbd/cfg.py b/sabnzbd/cfg.py index 75d003f..d08dc76 100644 --- a/sabnzbd/cfg.py +++ b/sabnzbd/cfg.py @@ -85,6 +85,7 @@ queue_complete = OptionStr("misc", "queue_complete") queue_complete_pers = OptionBool("misc", "queue_complete_pers", False) bandwidth_perc = OptionNumber("misc", "bandwidth_perc", 100, 0, 100) refresh_rate = OptionNumber("misc", "refresh_rate", 0) +interface_settings = OptionStr("misc", "interface_settings") log_level = OptionNumber("logging", "log_level", 1, -1, 2) log_size = OptionNumber("logging", "max_log_size", 5242880) log_backups = OptionNumber("logging", "log_backups", 5, 1, 1024) diff --git a/tests/data/tavern/api_queue_empty.yaml b/tests/data/tavern/api_queue_empty.yaml index d5e8750..5a04caf 100755 --- a/tests/data/tavern/api_queue_empty.yaml +++ b/tests/data/tavern/api_queue_empty.yaml @@ -54,6 +54,7 @@ stages: timeleft: "0:00:00" eta: "unknown" refresh_rate: !re_match "[0-9]*" + interface_settings: !re_match ".*" scripts: !anylist categories: !anylist rating_enable: !anybool @@ -151,6 +152,7 @@ stages: 0:00:00 unknown !anything + !anything !anystr !anystr !anybool diff --git a/tests/data/tavern/api_queue_format.yaml b/tests/data/tavern/api_queue_format.yaml index 229b4d0..09f61fa 100755 --- a/tests/data/tavern/api_queue_format.yaml +++ b/tests/data/tavern/api_queue_format.yaml @@ -55,6 +55,7 @@ stages: timeleft: "0:00:00" eta: "unknown" refresh_rate: !re_match "[0-9]*" + interface_settings: !re_match ".*" scripts: !anylist categories: !anylist rating_enable: !anybool @@ -176,6 +177,7 @@ stages: 0:00:00 unknown !anything + !anything