Permalink
Browse files

Responsive mode not very broken anymore

  • Loading branch information...
ralsina committed May 19, 2017
1 parent 2964c60 commit fe2c5cd79ef8237212ec52bed3744febd3559daa
Showing with 41 additions and 42 deletions.
  1. +41 −42 nikola/data/themes/base/assets/js/flowr.js
@@ -11,6 +11,26 @@
flowr = function(elem, options) {
$this = elem;
var extend = function(out) {
out = out || {};
for (var i = 1; i < arguments.length; i++) {
if (!arguments[i])
continue;
for (var key in arguments[i]) {
if (arguments[i].hasOwnProperty(key))
out[key] = arguments[i][key];
}
}
return out;
};
var data = (function() {
var lastId = 0,
store = {};
@@ -21,8 +41,8 @@
if (element.myCustomDataTag === undefined) {
id = lastId++;
element.myCustomDataTag = id;
}
store[id] = info;
} else { id = element.myCustomDataTag; }
store[id] = extend(store[id], info);
},
get: function(element) {
@@ -31,7 +51,21 @@
};
}());
$this = elem;
function reorderContent() {
var _initialWidth = data.get($this).width;
var _newWidth = $this.offsetWidth;
var _change = _initialWidth - _newWidth;
if (_initialWidth != _newWidth) {
$this.innerHTML = "";
var _settings = data.get($this).lastSettings || {};
_settings.data = data.get($this).data || {};
_settings.maxWidth = $this.offsetWidth - 1;
flowr($this, _settings);
}
}
var ROW_CLASS_NAME = 'flowr-row'; // Class name for the row of flowy
var MAX_LAST_ROW_GAP = 25; // If the width of last row is lesser than max-width, recalculation is needed
var NO_COPY_FIELDS = ['complete', 'data', 'responsive']; // these attributes will not be carried forward for append related calls
@@ -52,22 +86,6 @@
'rows': -1, // Maximum number of rows to render. -1 for no limit.
'responsive': true // make content responsive
};
var extend = function(out) {
out = out || {};
for (var i = 1; i < arguments.length; i++) {
if (!arguments[i])
continue;
for (var key in arguments[i]) {
if (arguments[i].hasOwnProperty(key))
out[key] = arguments[i][key];
}
}
return out;
};
var settings = extend(DEFAULTS, options);
@@ -122,10 +140,7 @@
}
}
// A standalone utility to calculate the item widths for a particular row
// Returns rowWidth: width occupied & data : the items in the new row
var utils = {
getNextRow: function(data, settings) {
function getNextRow(data, settings) {
var itemIndex = 0;
var itemsLength = data.length;
var lineItems = [];
@@ -199,24 +214,8 @@
data: lineItems,
width: testWidth + requiredPadding()
};
}, //getNextRow
reorderContent: function() {
/*
TODO: optimize for faster resizing by reusing dom objects instead of killing the dom
*/
var _initialWidth = data.get($this).width;
var _newWidth = $this.offsetWidth;
var _change = _initialWidth - _newWidth;
if (_initialWidth != _newWidth) {
$this.innerHtml = '';
var _settings = data.get($this).lastSettings;
_settings.data = data.get($this).lastSettings.data;
_settings.maxWidth = $this.offsetWidth - 1;
flowr($this, _settings);
}
}
} //utils
// If the responsive var is set to true then listen for resize method
// and prevent resizing from happening twice if responsive is set again during append phase!
@@ -232,7 +231,7 @@
task_id = clearTimeout(task_id);
task_id = null;
}
task_id = setTimeout(utils.reorderContent, 80);
task_id = setTimeout(function() {reorderContent(data);}, 80);
data.set($this, {task_id: task_id});
}
});
@@ -254,7 +253,7 @@
data.set($this, {data: allData});
// While we have a new row
while ((rowData = utils.getNextRow(_data, settings)) != null && rowData.data.length > 0) {
while ((rowData = getNextRow(_data, settings)) != null && rowData.data.length > 0) {
if (settings.rows > 0 && currentRow >= settings.rows)
break;
// remove the number of elements in the new row from the top of data stack

0 comments on commit fe2c5cd

Please sign in to comment.