diff options
| author | Jules Laplace <jules@okfoc.us> | 2012-07-18 00:02:21 -0400 |
|---|---|---|
| committer | Jules Laplace <jules@okfoc.us> | 2012-07-18 00:02:21 -0400 |
| commit | c4338d2ae878a167c409e91dea6d1783fc7e30ba (patch) | |
| tree | 1e54fac722ac3153f9180a5a8332f2b19e11c00c /static/js/src/spacefill.js | |
| parent | d891a7ae1b205716c086363fba17a3249a665deb (diff) | |
put away back
Diffstat (limited to 'static/js/src/spacefill.js')
| -rw-r--r-- | static/js/src/spacefill.js | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/static/js/src/spacefill.js b/static/js/src/spacefill.js new file mode 100644 index 0000000..adf16bf --- /dev/null +++ b/static/js/src/spacefill.js @@ -0,0 +1,87 @@ +var ColumnFill = { + "init": function(){ + var cfg = SpaceFill.config + var numColumns = ColumnFill.calcColumns() + ColumnFill.columns = [] + for (var i = 0; i < numColumns; i++) { + ColumnFill.columns.push({"height": 0}) + } + + cfg.marginWidth = cfg.marginHeight = cfg.minMargin + + if (cfg.spacing == "center") { + cfg.columnSpacingAmt = (cfg.width - (numColumns * (cfg.columnWidth + cfg.marginWidth) + cfg.marginWidth)) / 2 + } else if (cfg.spacing == "justify") { + cfg.marginWidth = (cfg.width - (numColumns * cfg.columnWidth)) / (numColumns + 1) + } + + + }, + "add": function(obj){ + var cfg = SpaceFill.config + var colIndex = ColumnFill.shortestColumn() + var col = ColumnFill.columns[colIndex] + + if (cfg.spacing == "center") { + var colLeft = colIndex * (cfg.marginWidth + cfg.columnWidth) + cfg.columnSpacingAmt + var imgLeft = Math.floor((cfg.marginWidth / 2) + (cfg.columnWidth / 2) - (parseInt(obj.style.width) / 2)) + colLeft + "px" + } else if (cfg.spacing == "justify") { + var colLeft = (colIndex * (cfg.marginWidth + cfg.columnWidth)) + var imgLeft = Math.floor((cfg.marginWidth / 2) + (cfg.columnWidth / 2) - (parseInt(obj.style.width) / 2)) + colLeft + "px" + } + + obj.style.position = 'absolute' + obj.style.top = col.height + cfg.marginHeight + "px" + obj.style.left = imgLeft + + col.height += cfg.marginHeight + parseInt(obj.style.height) + + $(cfg.container).append(obj) + + }, + "calcColumns": function(){ + var cfg = SpaceFill.config + var numColumns = 0 + var width = cfg.width - cfg.minMargin + var columnSub = cfg.columnWidth + cfg.minMargin + while (width > columnSub) { + width -= columnSub + numColumns++ + } + return numColumns + }, + + "shortestColumn": function(){ + var min = Infinity + var mindex = 0 + for(var i = 0; i< ColumnFill.columns.length; i++){ + var col = ColumnFill.columns[i] + if ( min > col.height) { + min = col.height + mindex = i + } + } + return mindex + }, + + "isSpaceFilled": function(){ + var config = SpaceFill.config + var colIndex = ColumnFill.shortestColumn() + var col = ColumnFill.columns[colIndex] + + if (col.height > 4 * config.height) return true; + else return false; + } + +} + +var SpaceFill = { + "init": function(config){ + config.type = "columns" + SpaceFill.config = config + + SpaceFill.types[config.type].init() + SpaceFill.add = SpaceFill.types[config.type].add + }, + "types": { "columns": ColumnFill } +} |
