From 177ed4b6aa9c6c4e93a4a5a95ea24fb6db66077a Mon Sep 17 00:00:00 2001 From: tim b Date: Wed, 22 Sep 2010 21:23:20 -0700 Subject: initial shit version of new search --- static/tests/space.packing/spacefill.js | 93 +++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100755 static/tests/space.packing/spacefill.js (limited to 'static/tests/space.packing/spacefill.js') diff --git a/static/tests/space.packing/spacefill.js b/static/tests/space.packing/spacefill.js new file mode 100755 index 0000000..6a2e0a5 --- /dev/null +++ b/static/tests/space.packing/spacefill.js @@ -0,0 +1,93 @@ +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 } + +} \ No newline at end of file -- cgit v1.2.3-70-g09d2