_PREFS_FILE_NAME = 'prefs.json'
_DEFAULT_PREFS = {
- 'layout_columns': 3
+ 'layout_columns': 3,
+ 'refresh_factor': 1
}
_prefs = None
_load()
if key:
- return _prefs.get(username, {}).get(key, _DEFAULT_PREFS.get(key))
+ prefs = _prefs.get(username, {}).get(key, _DEFAULT_PREFS.get(key))
else:
- return _prefs.get(username, _DEFAULT_PREFS)
+ prefs = dict(_DEFAULT_PREFS)
+ prefs.update(_prefs.get(username, {}))
+
+ return prefs
def set(username, key, value):
var fullScreenCameraId = null;
var inProgress = false;
var refreshInterval = 15; /* milliseconds */
+var refreshFactor = 1;
var username = '';
var password = '';
var basePath = null;
setLayoutColumns(columns);
savePrefs();
});
+ $('#framerateDimmerSlider').change(function () {
+ refreshFactor = parseInt(this.value) / 100;
+ savePrefs();
+ });
/* various change handlers */
$('#storageDeviceSelect').change(function () {
function prefsUi2Dict() {
var dict = {
- 'layout_columns': $('#layoutColumnsSlider').val()
+ 'layout_columns': $('#layoutColumnsSlider').val(),
+ 'refresh_factor': $('#framerateDimmerSlider').val() / 100
};
return dict;
function dict2PrefsUi(dict) {
$('#layoutColumnsSlider').val(dict['layout_columns']);
+ $('#framerateDimmerSlider').val(dict['refresh_factor'] * 100);
updateConfigUI();
}
function applyPrefs(dict) {
setLayoutColumns(dict['layout_columns']);
+ refreshFactor = dict['refresh_factor'];
}
function savePrefs() {
var count = parseInt(1000 / (refreshInterval * this.config['streaming_framerate']));
var serverSideResize = this.config['streaming_server_resize'];
+ count /= refreshFactor;
if (this.img.error) {
/* in case of error, decrease the refresh rate to 1 fps */
<td class="settings-item-value"><input type="text" class="range styled prefs" id="layoutColumnsSlider"></td>
<td><span class="help-mark" title="configures the number of columns to use when laying out the camera frames">?</span></td>
</tr>
+ <tr class="settings-item" min="0" max="100" snap="2" ticksnum="6" decimals="0">
+ <td class="settings-item-label"><span class="settings-item-label">Frame Rate Dimmer</span></td>
+ <td class="settings-item-value"><input type="text" class="range styled prefs" id="framerateDimmerSlider"></td>
+ <td><span class="help-mark" title="dims the actual frame refreshing rate to save network bandwidth and traffic (doesn't work on simple MJPEG cameras)">?</span></td>
+ </tr>
</table>
<!-- General Settings -->