var overlayVisible = false;
var layoutColumns = 1;
var fitFramesVertically = false;
+var layoutRows = 1;
/* Object utilities */
updateLayout();
savePrefs();
});
+ $('#layoutRowsSlider').change(function () {
+ layoutRows = parseInt(this.value);
+ updateLayout();
+ savePrefs();
+ });
$('#framerateDimmerSlider').change(function () {
framerateFactor = parseInt(this.value) / 100;
savePrefs();
function updateLayout() {
if (fitFramesVertically) {
/* make sure the height of each camera
- * is smaller than the height of the screen */
+ * is smaller than the height of the screen
+ * divided by the number of layout rows */
/* find the tallest frame */
var frames = getCameraFrames();
}
var windowHeight = $(window).height() - heightOffset;
- var ratio = maxHeightFrame.width() / maxHeightFrame.height();
+ var ratio = maxHeightFrame.width() / maxHeightFrame.height() / layoutRows;
var width = parseInt(ratio * windowHeight * columns);
var maxWidth = windowWidth;
function prefsUi2Dict() {
var dict = {
- 'layout_columns': $('#layoutColumnsSlider').val(),
+ 'layout_columns': parseInt($('#layoutColumnsSlider').val()),
'fit_frames_vertically': $('#fitFramesVerticallySwitch')[0].checked,
+ 'layout_rows': parseInt($('#layoutRowsSlider').val()),
'framerate_factor': $('#framerateDimmerSlider').val() / 100,
'resolution_factor': $('#resolutionDimmerSlider').val() / 100
};
function dict2PrefsUi(dict) {
$('#layoutColumnsSlider').val(dict['layout_columns']);
$('#fitFramesVerticallySwitch')[0].checked = dict['fit_frames_vertically'];
+ $('#layoutRowsSlider').val(dict['layout_rows']);
$('#framerateDimmerSlider').val(dict['framerate_factor'] * 100);
$('#resolutionDimmerSlider').val(dict['resolution_factor'] * 100);
function applyPrefs(dict) {
setLayoutColumns(dict['layout_columns']);
fitFramesVertically = dict['fit_frames_vertically']
+ layoutRows = dict['layout_rows'];
framerateFactor = dict['framerate_factor'];
resolutionFactor = dict['resolution_factor'];
<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 used to lay out the camera frames">?</span></td>
</tr>
- <tr class="settings-item" min="1" max="4" snap="1" ticksnum="4" decimals="0" id="fitFramesVerticallyRow">
+ <tr class="settings-item">
<td class="settings-item-label"><span class="settings-item-label">Fit Frames Vertically</span></td>
<td class="settings-item-value"><input type="checkbox" class="styled prefs" id="fitFramesVerticallySwitch"></td>
<td><span class="help-mark" title="controls whether frame sizes can be reduced to vertically fit the window or not">?</span></td>
</tr>
+ <tr class="settings-item" min="1" max="4" snap="1" ticksnum="4" decimals="0" id="layoutRows" depends="fitFramesVertically">
+ <td class="settings-item-label"><span class="settings-item-label">Layout Rows</span></td>
+ <td class="settings-item-value"><input type="text" class="range styled prefs" id="layoutRowsSlider"></td>
+ <td><span class="help-mark" title="configures the number of rows used to lay 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>