mirror of
https://github.com/octoleo/syncthing.git
synced 2024-12-22 02:48:59 +00:00
fix(gui): hide lists with [object Object] in advanced settings (#9743)
As discussed in https://github.com/syncthing/syncthing/pull/9175#discussion_r1730431703, entries in advanced settings are unusable if they are comprised of a list of objects. It just displays `[object Object], [object Object], [object Object]`, e.g. for the devices a folder is shared with. Filter out these config elements by detecting an array whose members are not all strings or numbers, and setting them to `skip` type. Fix some unnecessary repetition in calling `inputTypeFor()`, since it is already cached in the `ng-init` directive.
This commit is contained in:
parent
acc5d2675b
commit
896b857fc4
@ -3343,6 +3343,11 @@ angular.module('syncthing.core')
|
||||
return 'checkbox';
|
||||
}
|
||||
if (value instanceof Array) {
|
||||
if (value.some(function (element) {
|
||||
return typeof element !== 'number' && typeof element !== 'string';
|
||||
})) {
|
||||
return 'skip';
|
||||
}
|
||||
return 'list';
|
||||
}
|
||||
if (typeof value === 'object') {
|
||||
|
@ -18,8 +18,8 @@
|
||||
<div ng-repeat="(key, value) in advancedConfig.gui" ng-init="type = inputTypeFor(key, value)" ng-if="type != 'skip'" class="form-group">
|
||||
<label for="guiInput{{$index}}" class="col-sm-4 control-label">{{key | uncamel}} <a href="{{docsURL('users/config#config-option-gui.')}}{{key | lowercase}}" target="_blank"><span class="fas fa-question-circle"></span></a></label>
|
||||
<div class="col-sm-8">
|
||||
<input ng-if="inputTypeFor(key, value) == 'list'" id="guiInput{{$index}}" class="form-control" type="text" ng-model="advancedConfig.gui[key]" ng-list />
|
||||
<input ng-if="inputTypeFor(key, value) != 'list'" id="guiInput{{$index}}" class="form-control" type="{{inputTypeFor(key, value)}}" ng-model="advancedConfig.gui[key]" />
|
||||
<input ng-if="type == 'list'" id="guiInput{{$index}}" class="form-control" type="text" ng-model="advancedConfig.gui[key]" ng-list />
|
||||
<input ng-if="type != 'list'" id="guiInput{{$index}}" class="form-control" type="{{type}}" ng-model="advancedConfig.gui[key]" />
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
Loading…
Reference in New Issue
Block a user