From 5406db1c5bcde566b10ad5ed733f3e78bdbd0c74 Mon Sep 17 00:00:00 2001 From: Kumar Gaurav Date: Tue, 27 Feb 2018 17:22:48 +0530 Subject: [PATCH] Added animation scripts to visualize grid auto-placement algorithm --- auto-placement-explicit.css | 49 ++++++++++++++++++++++++++++++ auto-placement-explicit.html | 16 ++++++++++ auto-placement-explicit.js | 58 ++++++++++++++++++++++++++++++++++++ auto-placement.css | 48 +++++++++++++++++++++++++++++ auto-placement.html | 18 +++++++++++ auto-placement.js | 33 ++++++++++++++++++++ 6 files changed, 222 insertions(+) create mode 100644 auto-placement-explicit.css create mode 100644 auto-placement-explicit.html create mode 100644 auto-placement-explicit.js create mode 100644 auto-placement.css create mode 100644 auto-placement.html create mode 100644 auto-placement.js diff --git a/auto-placement-explicit.css b/auto-placement-explicit.css new file mode 100644 index 0000000..15552bd --- /dev/null +++ b/auto-placement-explicit.css @@ -0,0 +1,49 @@ +.container { + display: grid; + grid-gap: 10px; + grid-template-rows: repeat(5, 60px); + grid-template-columns: repeat(4, 1fr); + grid-auto-rows: 60px; + /*grid-auto-flow: dense;*/ +} +.box{ + display: grid; + grid-template-rows: auto; + grid-template-rows: auto; + align-items: center; + justify-items: center; +} + +.box.two { + grid-row: span 2; +} +.box.four { + grid-column: 1 / span 2; /* INTERESTING */ +} +.box.seven { + grid-column: span 1; +} +.box.eight { + grid-column: span 1; +} +/* explicit grid placement */ +.box.six { + grid-row: 3 / span 2; + grid-column: 2 / span 2; +} +.box.five{ + grid-row: 2; + grid-column: 4; +} +.box.eleven { + grid-row: 5;; + grid-column: 3 / span 2; +} + +/* Old school css*/ +.container { + border: 2px solid black; +} +.box { + border: 0.5px solid blue; +} \ No newline at end of file diff --git a/auto-placement-explicit.html b/auto-placement-explicit.html new file mode 100644 index 0000000..9647808 --- /dev/null +++ b/auto-placement-explicit.html @@ -0,0 +1,16 @@ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+ \ No newline at end of file diff --git a/auto-placement-explicit.js b/auto-placement-explicit.js new file mode 100644 index 0000000..da62ec0 --- /dev/null +++ b/auto-placement-explicit.js @@ -0,0 +1,58 @@ +var container = document.getElementsByClassName("container"); +console.log(container); + +var boxes = container[0].getElementsByClassName("box"); +console.log(boxes); + +function setBoxContent (currBox, i, color) { + currBox.style.backgroundColor = color; + let countNode = (currBox.firstElementChild||currBox.firstChild); + countNode.innerHTML = (i+1); + countNode.style.fontSize = "40px"; + countNode.style.color = "black"; +} +/* +function fillExplicitBox(i, color){ + let currBoxNumber = explicitBoxes[i]; + let currBox = boxes.item(currBoxNumber); + setBoxContent(currBox, currBoxNumber, color); +} +*/ + +function fillBox(i, color){ + let currBox = boxes.item(i); + console.log(currBox); + setBoxContent(currBox, i, color); +} + +var explicitBoxes = [6,5,11]; +var implicitBoxes = []; +let numBoxes = boxes.length; +let numExplicitBoxes = explicitBoxes.length; +for(let j=1; j<=numBoxes; j++) { + if(! explicitBoxes.includes(j)){ + implicitBoxes.push(j); + } +} +let orderBoxes = explicitBoxes.concat(implicitBoxes); + +let delayInMilliseconds = 1000; +let counter = 0; +let color = "#ffb"; +let exColor = "#0fb"; + +var timedLoop = setInterval(function() { + if(counter < numExplicitBoxes){ + fillBox(orderBoxes[counter]-1, exColor); + } + else { + fillBox(orderBoxes[counter]-1, color); + } + counter++; + if(counter===numBoxes) { + //clearInterval(i); + counter = 0; + exColor = (exColor === "#0fb" ? "#bf0" : "#0fb"); + color = (color === "#ffb" ? "#bff" : "#ffb"); + } +}, delayInMilliseconds); diff --git a/auto-placement.css b/auto-placement.css new file mode 100644 index 0000000..42da4f9 --- /dev/null +++ b/auto-placement.css @@ -0,0 +1,48 @@ +.container { + display: grid; + grid-gap: 10px; + grid-template-rows: repeat(3, 60px); + grid-template-columns: repeat(4, 1fr); + grid-auto-rows: 60px; + grid-auto-flow: dense; +} +.box{ + display: grid; + grid-template-rows: auto; + grid-template-rows: auto; + align-items: center; + justify-items: center; +} +.box.two { + grid-row: span 2; +} +/* +Try:: +.box.four { + grid-column: span 2; +} +*/ +.box.four { + grid-column: span 2; +} +.box.six { + grid-row: span 2; + grid-column: span 3; +} +.box.seven { + grid-column: span 1; +} +.box.eight { + grid-column: span 1; +} +.box.eleven { + grid-row: span 2; + grid-column: span 2; +} +/* Old school css*/ +.container { + border: 2px solid black; +} +.box { + border: 0.5px solid blue; +} \ No newline at end of file diff --git a/auto-placement.html b/auto-placement.html new file mode 100644 index 0000000..03fa287 --- /dev/null +++ b/auto-placement.html @@ -0,0 +1,18 @@ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ \ No newline at end of file diff --git a/auto-placement.js b/auto-placement.js new file mode 100644 index 0000000..82ec06b --- /dev/null +++ b/auto-placement.js @@ -0,0 +1,33 @@ +var container = document.getElementsByClassName("container"); +console.log(container); + +var boxes = container[0].getElementsByClassName("box"); +console.log(boxes); + +function fillBox(i, color){ + let currBox = boxes.item(i); + console.log(currBox); + currBox.style.backgroundColor = color; + // to center text + //let countNode = document.createElement("span"); + let countNode = (currBox.firstElementChild||currBox.firstChild); + countNode.innerHTML = (i+1); + countNode.style.fontSize = "40px"; + countNode.style.color = "black"; + //countNode.style.border = "0.5px solid red"; + currBox.appendChild(countNode); +} + +var delayInMilliseconds = 1000; //1 second +var counter = 0; +var numBoxes = boxes.length; +var color = "#ffb"; +var timedLoop = setInterval(function() { + fillBox(counter, color); + counter++; + if(counter===numBoxes) { + //clearInterval(i); + counter = 0; + color = (color === "#ffb" ? "#bff" : "#ffb"); + } +}, delayInMilliseconds);