Created
March 25, 2014 19:21
-
-
Save 13protons/9769202 to your computer and use it in GitHub Desktop.
Trying to get masonry working with angular
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| console.log("Masonry getting loade by browser. Angular?"); | |
| (function () { | |
| 'use strict'; | |
| angular.module('wu.masonry', []).controller('MasonryCtrl', [ | |
| '$scope', | |
| '$element', | |
| '$timeout', | |
| function controller($scope, $element, $timeout) { | |
| var bricks = {}; | |
| var schedule = []; | |
| var destroyed = false; | |
| var self = this; | |
| var timeout = null; | |
| this.preserveOrder = false; | |
| this.scheduleMasonryOnce = function scheduleMasonryOnce() { | |
| var args = arguments; | |
| var found = schedule.filter(function filterFn(item) { | |
| return item[0] === args[0]; | |
| }).length > 0; | |
| if (!found) { | |
| this.scheduleMasonry.apply(null, arguments); | |
| } | |
| }; | |
| this.scheduleMasonry = function scheduleMasonry() { | |
| if (timeout) { | |
| $timeout.cancel(timeout); | |
| } | |
| schedule.push([].slice.call(arguments)); | |
| timeout = $timeout(function runMasonry() { | |
| if (destroyed) { | |
| return; | |
| } | |
| schedule.forEach(function scheduleForEach(args) { | |
| $element.masonry.apply($element, args); | |
| }); | |
| schedule = []; | |
| }, 30); | |
| }; | |
| function defaultLoaded($element) { | |
| $element.addClass('loaded'); | |
| } | |
| this.appendBrick = function appendBrick(element, id) { | |
| if (destroyed) { | |
| return; | |
| } | |
| function _append() { | |
| if (Object.keys(bricks).length === 0) { | |
| $element.masonry('resize'); | |
| } | |
| if (bricks[id] === undefined) { | |
| bricks[id] = true; | |
| defaultLoaded(element); | |
| $element.masonry('appended', element, true); | |
| } | |
| } | |
| function _layout() { | |
| self.scheduleMasonryOnce('layout'); | |
| } | |
| if (self.preserveOrder) { | |
| _append(); | |
| element.imagesLoaded(_layout); | |
| } else { | |
| element.imagesLoaded(function imagesLoaded() { | |
| _append(); | |
| _layout(); | |
| }); | |
| } | |
| }; | |
| this.removeBrick = function removeBrick(id, element) { | |
| if (destroyed) { | |
| return; | |
| } | |
| delete bricks[id]; | |
| $element.masonry('remove', element); | |
| this.scheduleMasonryOnce('layout'); | |
| }; | |
| this.destroy = function destroy() { | |
| destroyed = true; | |
| if ($element.data('masonry')) { | |
| $element.masonry('destroy'); | |
| } | |
| $scope.$emit('masonry.destroyed'); | |
| bricks = []; | |
| }; | |
| this.reload = function reload() { | |
| $element.masonry(); | |
| $scope.$emit('masonry.reloaded'); | |
| }; | |
| } | |
| ]).directive('masonry', function masonryDirective() { | |
| return { | |
| restrict: 'AE', | |
| controller: 'MasonryCtrl', | |
| link: { | |
| pre: function preLink(scope, element, attrs, ctrl) { | |
| var attrOptions = scope.$eval(attrs.masonry || attrs.masonryOptions); | |
| var options = angular.extend({ | |
| itemSelector: attrs.itemSelector || '.masonry-brick', | |
| columnWidth: parseInt(attrs.columnWidth, 10) | |
| }, attrOptions || {}); | |
| element.masonry(options); | |
| var preserveOrder = scope.$eval(attrs.preserveOrder); | |
| ctrl.preserveOrder = preserveOrder !== false && attrs.preserveOrder !== undefined; | |
| scope.$emit('masonry.created', element); | |
| scope.$on('$destroy', ctrl.destroy); | |
| } | |
| } | |
| }; | |
| }).directive('masonryBrick', function masonryBrickDirective() { | |
| return { | |
| restrict: 'AC', | |
| require: '^masonry', | |
| scope: true, | |
| link: { | |
| pre: function preLink(scope, element, attrs, ctrl) { | |
| var id = scope.$id, index; | |
| ctrl.appendBrick(element, id); | |
| element.on('$destroy', function () { | |
| ctrl.removeBrick(id, element); | |
| }); | |
| scope.$on('masonry.reload', function () { | |
| ctrl.reload(); | |
| }); | |
| scope.$watch('$index', function () { | |
| if (index !== undefined && index !== scope.$index) { | |
| ctrl.scheduleMasonryOnce('reloadItems'); | |
| ctrl.scheduleMasonryOnce('layout'); | |
| } | |
| index = scope.$index; | |
| }); | |
| } | |
| } | |
| }; | |
| }); | |
| }()); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <!DOCTYPE html> | |
| <html ng-app> | |
| <head> | |
| <!--<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css"> | |
| <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap-theme.min.css"> --> | |
| <!-- <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.3/angular.min.js"></script> --> | |
| <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js"></script> | |
| <meta charset=utf-8 /> | |
| <meta name="viewport" content="width=device-width, initial-scale=1"> | |
| <title>Angular JS Demo</title> | |
| <style> | |
| body{ | |
| padding:20px; | |
| } | |
| .search{ | |
| margin-left:10px; | |
| } | |
| .row { | |
| margin-bottom: 2em; | |
| } | |
| .masonry-brick { | |
| padding: 0; margin: 0; | |
| float: left; | |
| } | |
| </style> | |
| </head> | |
| <body ng-app="list" class="container"> | |
| <div ng-controller="ctrl"> | |
| <div class="row"> | |
| <div class="col-md-12"> | |
| <h2>{{rows.length}} Friend{{plural(rows)}} <span ng-show="temp">?<small class="muted"><em > (only {{rows.length-1}} actually....)</em></small></span></h2> | |
| <form class="form-horizontal"> | |
| <span ng-class="{'input-append':addName}"> | |
| <input id="add" type="text" placeholder="Another one ?" ng-model="addName" ng-change="addTemp()"/> | |
| <input type="submit" class="btn btn-primary" ng-click="addRow()" ng-show="addName" value="+ add"/> | |
| </span> | |
| <span class="search input-prepend" ng-class="{'input-append':search}"> | |
| <span class="add-on"><i class="icon-search"></i></span> | |
| <input type="text" class="span2" placeholder="Search" ng-model="search"> | |
| <button type="submit" class="btn btn-inverse" ng-click="search=''" ng-show="search" value="+ add"><i class="icon-remove icon-white"></i></button> | |
| </span> | |
| </form> | |
| </div> | |
| </div> | |
| <masonry column-width="300" item-selector=".masonry-brick"> | |
| <div ng-repeat="row in rows | filter : search" ng-class="{'muted':isTemp($index)}" class="col-md-6 masonry-brick"> | |
| <strong>{{row.name}}</strong> | |
| <p>{{row.ipsum}}</p> | |
| <!-- | |
| <div class="panel panel-default"> | |
| <div class="panel-heading"> | |
| <sup> | |
| <button class="btn btn-link pull-right" ng-click="deleteRow(row)" ng-hide="isTemp($index)"> | |
| <i class="fa fa-times"></i> | |
| </button> | |
| </sup> | |
| Friend <span class="muted">{{$index+1}}</span> | |
| </div> | |
| <div class="panel-body"> | |
| <h1>{{row.name}}</h2> | |
| <p>{{row.ipsum}}</p> | |
| </div> | |
| </div> | |
| --> | |
| </div> | |
| </masonry> | |
| </div> | |
| <script src="masonry.pkgd.min.js"></script> | |
| <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script> | |
| <!-- <script src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script> --> | |
| <script src="angular-masonry.js"></script> | |
| <script src="script.js"></script> | |
| </body> | |
| </html> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /*! | |
| * Masonry PACKAGED v3.1.5 | |
| * Cascading grid layout library | |
| * http://masonry.desandro.com | |
| * MIT License | |
| * by David DeSandro | |
| */ | |
| !function(a){function b(){}function c(a){function c(b){b.prototype.option||(b.prototype.option=function(b){a.isPlainObject(b)&&(this.options=a.extend(!0,this.options,b))})}function e(b,c){a.fn[b]=function(e){if("string"==typeof e){for(var g=d.call(arguments,1),h=0,i=this.length;i>h;h++){var j=this[h],k=a.data(j,b);if(k)if(a.isFunction(k[e])&&"_"!==e.charAt(0)){var l=k[e].apply(k,g);if(void 0!==l)return l}else f("no such method '"+e+"' for "+b+" instance");else f("cannot call methods on "+b+" prior to initialization; attempted to call '"+e+"'")}return this}return this.each(function(){var d=a.data(this,b);d?(d.option(e),d._init()):(d=new c(this,e),a.data(this,b,d))})}}if(a){var f="undefined"==typeof console?b:function(a){console.error(a)};return a.bridget=function(a,b){c(b),e(a,b)},a.bridget}}var d=Array.prototype.slice;"function"==typeof define&&define.amd?define("jquery-bridget/jquery.bridget",["jquery"],c):c(a.jQuery)}(window),function(a){function b(b){var c=a.event;return c.target=c.target||c.srcElement||b,c}var c=document.documentElement,d=function(){};c.addEventListener?d=function(a,b,c){a.addEventListener(b,c,!1)}:c.attachEvent&&(d=function(a,c,d){a[c+d]=d.handleEvent?function(){var c=b(a);d.handleEvent.call(d,c)}:function(){var c=b(a);d.call(a,c)},a.attachEvent("on"+c,a[c+d])});var e=function(){};c.removeEventListener?e=function(a,b,c){a.removeEventListener(b,c,!1)}:c.detachEvent&&(e=function(a,b,c){a.detachEvent("on"+b,a[b+c]);try{delete a[b+c]}catch(d){a[b+c]=void 0}});var f={bind:d,unbind:e};"function"==typeof define&&define.amd?define("eventie/eventie",f):"object"==typeof exports?module.exports=f:a.eventie=f}(this),function(a){function b(a){"function"==typeof a&&(b.isReady?a():f.push(a))}function c(a){var c="readystatechange"===a.type&&"complete"!==e.readyState;if(!b.isReady&&!c){b.isReady=!0;for(var d=0,g=f.length;g>d;d++){var h=f[d];h()}}}function d(d){return d.bind(e,"DOMContentLoaded",c),d.bind(e,"readystatechange",c),d.bind(a,"load",c),b}var e=a.document,f=[];b.isReady=!1,"function"==typeof define&&define.amd?(b.isReady="function"==typeof requirejs,define("doc-ready/doc-ready",["eventie/eventie"],d)):a.docReady=d(a.eventie)}(this),function(){function a(){}function b(a,b){for(var c=a.length;c--;)if(a[c].listener===b)return c;return-1}function c(a){return function(){return this[a].apply(this,arguments)}}var d=a.prototype,e=this,f=e.EventEmitter;d.getListeners=function(a){var b,c,d=this._getEvents();if(a instanceof RegExp){b={};for(c in d)d.hasOwnProperty(c)&&a.test(c)&&(b[c]=d[c])}else b=d[a]||(d[a]=[]);return b},d.flattenListeners=function(a){var b,c=[];for(b=0;b<a.length;b+=1)c.push(a[b].listener);return c},d.getListenersAsObject=function(a){var b,c=this.getListeners(a);return c instanceof Array&&(b={},b[a]=c),b||c},d.addListener=function(a,c){var d,e=this.getListenersAsObject(a),f="object"==typeof c;for(d in e)e.hasOwnProperty(d)&&-1===b(e[d],c)&&e[d].push(f?c:{listener:c,once:!1});return this},d.on=c("addListener"),d.addOnceListener=function(a,b){return this.addListener(a,{listener:b,once:!0})},d.once=c("addOnceListener"),d.defineEvent=function(a){return this.getListeners(a),this},d.defineEvents=function(a){for(var b=0;b<a.length;b+=1)this.defineEvent(a[b]);return this},d.removeListener=function(a,c){var d,e,f=this.getListenersAsObject(a);for(e in f)f.hasOwnProperty(e)&&(d=b(f[e],c),-1!==d&&f[e].splice(d,1));return this},d.off=c("removeListener"),d.addListeners=function(a,b){return this.manipulateListeners(!1,a,b)},d.removeListeners=function(a,b){return this.manipulateListeners(!0,a,b)},d.manipulateListeners=function(a,b,c){var d,e,f=a?this.removeListener:this.addListener,g=a?this.removeListeners:this.addListeners;if("object"!=typeof b||b instanceof RegExp)for(d=c.length;d--;)f.call(this,b,c[d]);else for(d in b)b.hasOwnProperty(d)&&(e=b[d])&&("function"==typeof e?f.call(this,d,e):g.call(this,d,e));return this},d.removeEvent=function(a){var b,c=typeof a,d=this._getEvents();if("string"===c)delete d[a];else if(a instanceof RegExp)for(b in d)d.hasOwnProperty(b)&&a.test(b)&&delete d[b];else delete this._events;return this},d.removeAllListeners=c("removeEvent"),d.emitEvent=function(a,b){var c,d,e,f,g=this.getListenersAsObject(a);for(e in g)if(g.hasOwnProperty(e))for(d=g[e].length;d--;)c=g[e][d],c.once===!0&&this.removeListener(a,c.listener),f=c.listener.apply(this,b||[]),f===this._getOnceReturnValue()&&this.removeListener(a,c.listener);return this},d.trigger=c("emitEvent"),d.emit=function(a){var b=Array.prototype.slice.call(arguments,1);return this.emitEvent(a,b)},d.setOnceReturnValue=function(a){return this._onceReturnValue=a,this},d._getOnceReturnValue=function(){return this.hasOwnProperty("_onceReturnValue")?this._onceReturnValue:!0},d._getEvents=function(){return this._events||(this._events={})},a.noConflict=function(){return e.EventEmitter=f,a},"function"==typeof define&&define.amd?define("eventEmitter/EventEmitter",[],function(){return a}):"object"==typeof module&&module.exports?module.exports=a:this.EventEmitter=a}.call(this),function(a){function b(a){if(a){if("string"==typeof d[a])return a;a=a.charAt(0).toUpperCase()+a.slice(1);for(var b,e=0,f=c.length;f>e;e++)if(b=c[e]+a,"string"==typeof d[b])return b}}var c="Webkit Moz ms Ms O".split(" "),d=document.documentElement.style;"function"==typeof define&&define.amd?define("get-style-property/get-style-property",[],function(){return b}):"object"==typeof exports?module.exports=b:a.getStyleProperty=b}(window),function(a){function b(a){var b=parseFloat(a),c=-1===a.indexOf("%")&&!isNaN(b);return c&&b}function c(){for(var a={width:0,height:0,innerWidth:0,innerHeight:0,outerWidth:0,outerHeight:0},b=0,c=g.length;c>b;b++){var d=g[b];a[d]=0}return a}function d(a){function d(a){if("string"==typeof a&&(a=document.querySelector(a)),a&&"object"==typeof a&&a.nodeType){var d=f(a);if("none"===d.display)return c();var e={};e.width=a.offsetWidth,e.height=a.offsetHeight;for(var k=e.isBorderBox=!(!j||!d[j]||"border-box"!==d[j]),l=0,m=g.length;m>l;l++){var n=g[l],o=d[n];o=h(a,o);var p=parseFloat(o);e[n]=isNaN(p)?0:p}var q=e.paddingLeft+e.paddingRight,r=e.paddingTop+e.paddingBottom,s=e.marginLeft+e.marginRight,t=e.marginTop+e.marginBottom,u=e.borderLeftWidth+e.borderRightWidth,v=e.borderTopWidth+e.borderBottomWidth,w=k&&i,x=b(d.width);x!==!1&&(e.width=x+(w?0:q+u));var y=b(d.height);return y!==!1&&(e.height=y+(w?0:r+v)),e.innerWidth=e.width-(q+u),e.innerHeight=e.height-(r+v),e.outerWidth=e.width+s,e.outerHeight=e.height+t,e}}function h(a,b){if(e||-1===b.indexOf("%"))return b;var c=a.style,d=c.left,f=a.runtimeStyle,g=f&&f.left;return g&&(f.left=a.currentStyle.left),c.left=b,b=c.pixelLeft,c.left=d,g&&(f.left=g),b}var i,j=a("boxSizing");return function(){if(j){var a=document.createElement("div");a.style.width="200px",a.style.padding="1px 2px 3px 4px",a.style.borderStyle="solid",a.style.borderWidth="1px 2px 3px 4px",a.style[j]="border-box";var c=document.body||document.documentElement;c.appendChild(a);var d=f(a);i=200===b(d.width),c.removeChild(a)}}(),d}var e=a.getComputedStyle,f=e?function(a){return e(a,null)}:function(a){return a.currentStyle},g=["paddingLeft","paddingRight","paddingTop","paddingBottom","marginLeft","marginRight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderTopWidth","borderBottomWidth"];"function"==typeof define&&define.amd?define("get-size/get-size",["get-style-property/get-style-property"],d):"object"==typeof exports?module.exports=d(require("get-style-property")):a.getSize=d(a.getStyleProperty)}(window),function(a,b){function c(a,b){return a[h](b)}function d(a){if(!a.parentNode){var b=document.createDocumentFragment();b.appendChild(a)}}function e(a,b){d(a);for(var c=a.parentNode.querySelectorAll(b),e=0,f=c.length;f>e;e++)if(c[e]===a)return!0;return!1}function f(a,b){return d(a),c(a,b)}var g,h=function(){if(b.matchesSelector)return"matchesSelector";for(var a=["webkit","moz","ms","o"],c=0,d=a.length;d>c;c++){var e=a[c],f=e+"MatchesSelector";if(b[f])return f}}();if(h){var i=document.createElement("div"),j=c(i,"div");g=j?c:f}else g=e;"function"==typeof define&&define.amd?define("matches-selector/matches-selector",[],function(){return g}):window.matchesSelector=g}(this,Element.prototype),function(a){function b(a,b){for(var c in b)a[c]=b[c];return a}function c(a){for(var b in a)return!1;return b=null,!0}function d(a){return a.replace(/([A-Z])/g,function(a){return"-"+a.toLowerCase()})}function e(a,e,f){function h(a,b){a&&(this.element=a,this.layout=b,this.position={x:0,y:0},this._create())}var i=f("transition"),j=f("transform"),k=i&&j,l=!!f("perspective"),m={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"otransitionend",transition:"transitionend"}[i],n=["transform","transition","transitionDuration","transitionProperty"],o=function(){for(var a={},b=0,c=n.length;c>b;b++){var d=n[b],e=f(d);e&&e!==d&&(a[d]=e)}return a}();b(h.prototype,a.prototype),h.prototype._create=function(){this._transn={ingProperties:{},clean:{},onEnd:{}},this.css({position:"absolute"})},h.prototype.handleEvent=function(a){var b="on"+a.type;this[b]&&this[b](a)},h.prototype.getSize=function(){this.size=e(this.element)},h.prototype.css=function(a){var b=this.element.style;for(var c in a){var d=o[c]||c;b[d]=a[c]}},h.prototype.getPosition=function(){var a=g(this.element),b=this.layout.options,c=b.isOriginLeft,d=b.isOriginTop,e=parseInt(a[c?"left":"right"],10),f=parseInt(a[d?"top":"bottom"],10);e=isNaN(e)?0:e,f=isNaN(f)?0:f;var h=this.layout.size;e-=c?h.paddingLeft:h.paddingRight,f-=d?h.paddingTop:h.paddingBottom,this.position.x=e,this.position.y=f},h.prototype.layoutPosition=function(){var a=this.layout.size,b=this.layout.options,c={};b.isOriginLeft?(c.left=this.position.x+a.paddingLeft+"px",c.right=""):(c.right=this.position.x+a.paddingRight+"px",c.left=""),b.isOriginTop?(c.top=this.position.y+a.paddingTop+"px",c.bottom=""):(c.bottom=this.position.y+a.paddingBottom+"px",c.top=""),this.css(c),this.emitEvent("layout",[this])};var p=l?function(a,b){return"translate3d("+a+"px, "+b+"px, 0)"}:function(a,b){return"translate("+a+"px, "+b+"px)"};h.prototype._transitionTo=function(a,b){this.getPosition();var c=this.position.x,d=this.position.y,e=parseInt(a,10),f=parseInt(b,10),g=e===this.position.x&&f===this.position.y;if(this.setPosition(a,b),g&&!this.isTransitioning)return void this.layoutPosition();var h=a-c,i=b-d,j={},k=this.layout.options;h=k.isOriginLeft?h:-h,i=k.isOriginTop?i:-i,j.transform=p(h,i),this.transition({to:j,onTransitionEnd:{transform:this.layoutPosition},isCleaning:!0})},h.prototype.goTo=function(a,b){this.setPosition(a,b),this.layoutPosition()},h.prototype.moveTo=k?h.prototype._transitionTo:h.prototype.goTo,h.prototype.setPosition=function(a,b){this.position.x=parseInt(a,10),this.position.y=parseInt(b,10)},h.prototype._nonTransition=function(a){this.css(a.to),a.isCleaning&&this._removeStyles(a.to);for(var b in a.onTransitionEnd)a.onTransitionEnd[b].call(this)},h.prototype._transition=function(a){if(!parseFloat(this.layout.options.transitionDuration))return void this._nonTransition(a);var b=this._transn;for(var c in a.onTransitionEnd)b.onEnd[c]=a.onTransitionEnd[c];for(c in a.to)b.ingProperties[c]=!0,a.isCleaning&&(b.clean[c]=!0);if(a.from){this.css(a.from);var d=this.element.offsetHeight;d=null}this.enableTransition(a.to),this.css(a.to),this.isTransitioning=!0};var q=j&&d(j)+",opacity";h.prototype.enableTransition=function(){this.isTransitioning||(this.css({transitionProperty:q,transitionDuration:this.layout.options.transitionDuration}),this.element.addEventListener(m,this,!1))},h.prototype.transition=h.prototype[i?"_transition":"_nonTransition"],h.prototype.onwebkitTransitionEnd=function(a){this.ontransitionend(a)},h.prototype.onotransitionend=function(a){this.ontransitionend(a)};var r={"-webkit-transform":"transform","-moz-transform":"transform","-o-transform":"transform"};h.prototype.ontransitionend=function(a){if(a.target===this.element){var b=this._transn,d=r[a.propertyName]||a.propertyName;if(delete b.ingProperties[d],c(b.ingProperties)&&this.disableTransition(),d in b.clean&&(this.element.style[a.propertyName]="",delete b.clean[d]),d in b.onEnd){var e=b.onEnd[d];e.call(this),delete b.onEnd[d]}this.emitEvent("transitionEnd",[this])}},h.prototype.disableTransition=function(){this.removeTransitionStyles(),this.element.removeEventListener(m,this,!1),this.isTransitioning=!1},h.prototype._removeStyles=function(a){var b={};for(var c in a)b[c]="";this.css(b)};var s={transitionProperty:"",transitionDuration:""};return h.prototype.removeTransitionStyles=function(){this.css(s)},h.prototype.removeElem=function(){this.element.parentNode.removeChild(this.element),this.emitEvent("remove",[this])},h.prototype.remove=function(){if(!i||!parseFloat(this.layout.options.transitionDuration))return void this.removeElem();var a=this;this.on("transitionEnd",function(){return a.removeElem(),!0}),this.hide()},h.prototype.reveal=function(){delete this.isHidden,this.css({display:""});var a=this.layout.options;this.transition({from:a.hiddenStyle,to:a.visibleStyle,isCleaning:!0})},h.prototype.hide=function(){this.isHidden=!0,this.css({display:""});var a=this.layout.options;this.transition({from:a.visibleStyle,to:a.hiddenStyle,isCleaning:!0,onTransitionEnd:{opacity:function(){this.isHidden&&this.css({display:"none"})}}})},h.prototype.destroy=function(){this.css({position:"",left:"",right:"",top:"",bottom:"",transition:"",transform:""})},h}var f=a.getComputedStyle,g=f?function(a){return f(a,null)}:function(a){return a.currentStyle};"function"==typeof define&&define.amd?define("outlayer/item",["eventEmitter/EventEmitter","get-size/get-size","get-style-property/get-style-property"],e):(a.Outlayer={},a.Outlayer.Item=e(a.EventEmitter,a.getSize,a.getStyleProperty))}(window),function(a){function b(a,b){for(var c in b)a[c]=b[c];return a}function c(a){return"[object Array]"===l.call(a)}function d(a){var b=[];if(c(a))b=a;else if(a&&"number"==typeof a.length)for(var d=0,e=a.length;e>d;d++)b.push(a[d]);else b.push(a);return b}function e(a,b){var c=n(b,a);-1!==c&&b.splice(c,1)}function f(a){return a.replace(/(.)([A-Z])/g,function(a,b,c){return b+"-"+c}).toLowerCase()}function g(c,g,l,n,o,p){function q(a,c){if("string"==typeof a&&(a=h.querySelector(a)),!a||!m(a))return void(i&&i.error("Bad "+this.constructor.namespace+" element: "+a));this.element=a,this.options=b({},this.constructor.defaults),this.option(c);var d=++r;this.element.outlayerGUID=d,s[d]=this,this._create(),this.options.isInitLayout&&this.layout()}var r=0,s={};return q.namespace="outlayer",q.Item=p,q.defaults={containerStyle:{position:"relative"},isInitLayout:!0,isOriginLeft:!0,isOriginTop:!0,isResizeBound:!0,isResizingContainer:!0,transitionDuration:"0.4s",hiddenStyle:{opacity:0,transform:"scale(0.001)"},visibleStyle:{opacity:1,transform:"scale(1)"}},b(q.prototype,l.prototype),q.prototype.option=function(a){b(this.options,a)},q.prototype._create=function(){this.reloadItems(),this.stamps=[],this.stamp(this.options.stamp),b(this.element.style,this.options.containerStyle),this.options.isResizeBound&&this.bindResize()},q.prototype.reloadItems=function(){this.items=this._itemize(this.element.children)},q.prototype._itemize=function(a){for(var b=this._filterFindItemElements(a),c=this.constructor.Item,d=[],e=0,f=b.length;f>e;e++){var g=b[e],h=new c(g,this);d.push(h)}return d},q.prototype._filterFindItemElements=function(a){a=d(a);for(var b=this.options.itemSelector,c=[],e=0,f=a.length;f>e;e++){var g=a[e];if(m(g))if(b){o(g,b)&&c.push(g);for(var h=g.querySelectorAll(b),i=0,j=h.length;j>i;i++)c.push(h[i])}else c.push(g)}return c},q.prototype.getItemElements=function(){for(var a=[],b=0,c=this.items.length;c>b;b++)a.push(this.items[b].element);return a},q.prototype.layout=function(){this._resetLayout(),this._manageStamps();var a=void 0!==this.options.isLayoutInstant?this.options.isLayoutInstant:!this._isLayoutInited;this.layoutItems(this.items,a),this._isLayoutInited=!0},q.prototype._init=q.prototype.layout,q.prototype._resetLayout=function(){this.getSize()},q.prototype.getSize=function(){this.size=n(this.element)},q.prototype._getMeasurement=function(a,b){var c,d=this.options[a];d?("string"==typeof d?c=this.element.querySelector(d):m(d)&&(c=d),this[a]=c?n(c)[b]:d):this[a]=0},q.prototype.layoutItems=function(a,b){a=this._getItemsForLayout(a),this._layoutItems(a,b),this._postLayout()},q.prototype._getItemsForLayout=function(a){for(var b=[],c=0,d=a.length;d>c;c++){var e=a[c];e.isIgnored||b.push(e)}return b},q.prototype._layoutItems=function(a,b){function c(){d.emitEvent("layoutComplete",[d,a])}var d=this;if(!a||!a.length)return void c();this._itemsOn(a,"layout",c);for(var e=[],f=0,g=a.length;g>f;f++){var h=a[f],i=this._getItemLayoutPosition(h);i.item=h,i.isInstant=b||h.isLayoutInstant,e.push(i)}this._processLayoutQueue(e)},q.prototype._getItemLayoutPosition=function(){return{x:0,y:0}},q.prototype._processLayoutQueue=function(a){for(var b=0,c=a.length;c>b;b++){var d=a[b];this._positionItem(d.item,d.x,d.y,d.isInstant)}},q.prototype._positionItem=function(a,b,c,d){d?a.goTo(b,c):a.moveTo(b,c)},q.prototype._postLayout=function(){this.resizeContainer()},q.prototype.resizeContainer=function(){if(this.options.isResizingContainer){var a=this._getContainerSize();a&&(this._setContainerMeasure(a.width,!0),this._setContainerMeasure(a.height,!1))}},q.prototype._getContainerSize=k,q.prototype._setContainerMeasure=function(a,b){if(void 0!==a){var c=this.size;c.isBorderBox&&(a+=b?c.paddingLeft+c.paddingRight+c.borderLeftWidth+c.borderRightWidth:c.paddingBottom+c.paddingTop+c.borderTopWidth+c.borderBottomWidth),a=Math.max(a,0),this.element.style[b?"width":"height"]=a+"px"}},q.prototype._itemsOn=function(a,b,c){function d(){return e++,e===f&&c.call(g),!0}for(var e=0,f=a.length,g=this,h=0,i=a.length;i>h;h++){var j=a[h];j.on(b,d)}},q.prototype.ignore=function(a){var b=this.getItem(a);b&&(b.isIgnored=!0)},q.prototype.unignore=function(a){var b=this.getItem(a);b&&delete b.isIgnored},q.prototype.stamp=function(a){if(a=this._find(a)){this.stamps=this.stamps.concat(a);for(var b=0,c=a.length;c>b;b++){var d=a[b];this.ignore(d)}}},q.prototype.unstamp=function(a){if(a=this._find(a))for(var b=0,c=a.length;c>b;b++){var d=a[b];e(d,this.stamps),this.unignore(d)}},q.prototype._find=function(a){return a?("string"==typeof a&&(a=this.element.querySelectorAll(a)),a=d(a)):void 0},q.prototype._manageStamps=function(){if(this.stamps&&this.stamps.length){this._getBoundingRect();for(var a=0,b=this.stamps.length;b>a;a++){var c=this.stamps[a];this._manageStamp(c)}}},q.prototype._getBoundingRect=function(){var a=this.element.getBoundingClientRect(),b=this.size;this._boundingRect={left:a.left+b.paddingLeft+b.borderLeftWidth,top:a.top+b.paddingTop+b.borderTopWidth,right:a.right-(b.paddingRight+b.borderRightWidth),bottom:a.bottom-(b.paddingBottom+b.borderBottomWidth)}},q.prototype._manageStamp=k,q.prototype._getElementOffset=function(a){var b=a.getBoundingClientRect(),c=this._boundingRect,d=n(a),e={left:b.left-c.left-d.marginLeft,top:b.top-c.top-d.marginTop,right:c.right-b.right-d.marginRight,bottom:c.bottom-b.bottom-d.marginBottom};return e},q.prototype.handleEvent=function(a){var b="on"+a.type;this[b]&&this[b](a)},q.prototype.bindResize=function(){this.isResizeBound||(c.bind(a,"resize",this),this.isResizeBound=!0)},q.prototype.unbindResize=function(){this.isResizeBound&&c.unbind(a,"resize",this),this.isResizeBound=!1},q.prototype.onresize=function(){function a(){b.resize(),delete b.resizeTimeout}this.resizeTimeout&&clearTimeout(this.resizeTimeout);var b=this;this.resizeTimeout=setTimeout(a,100)},q.prototype.resize=function(){this.isResizeBound&&this.needsResizeLayout()&&this.layout()},q.prototype.needsResizeLayout=function(){var a=n(this.element),b=this.size&&a;return b&&a.innerWidth!==this.size.innerWidth},q.prototype.addItems=function(a){var b=this._itemize(a);return b.length&&(this.items=this.items.concat(b)),b},q.prototype.appended=function(a){var b=this.addItems(a);b.length&&(this.layoutItems(b,!0),this.reveal(b))},q.prototype.prepended=function(a){var b=this._itemize(a);if(b.length){var c=this.items.slice(0);this.items=b.concat(c),this._resetLayout(),this._manageStamps(),this.layoutItems(b,!0),this.reveal(b),this.layoutItems(c)}},q.prototype.reveal=function(a){var b=a&&a.length;if(b)for(var c=0;b>c;c++){var d=a[c];d.reveal()}},q.prototype.hide=function(a){var b=a&&a.length;if(b)for(var c=0;b>c;c++){var d=a[c];d.hide()}},q.prototype.getItem=function(a){for(var b=0,c=this.items.length;c>b;b++){var d=this.items[b];if(d.element===a)return d}},q.prototype.getItems=function(a){if(a&&a.length){for(var b=[],c=0,d=a.length;d>c;c++){var e=a[c],f=this.getItem(e);f&&b.push(f)}return b}},q.prototype.remove=function(a){a=d(a);var b=this.getItems(a);if(b&&b.length){this._itemsOn(b,"remove",function(){this.emitEvent("removeComplete",[this,b])});for(var c=0,f=b.length;f>c;c++){var g=b[c];g.remove(),e(g,this.items)}}},q.prototype.destroy=function(){var a=this.element.style;a.height="",a.position="",a.width="";for(var b=0,c=this.items.length;c>b;b++){var d=this.items[b];d.destroy()}this.unbindResize(),delete this.element.outlayerGUID,j&&j.removeData(this.element,this.constructor.namespace)},q.data=function(a){var b=a&&a.outlayerGUID;return b&&s[b]},q.create=function(a,c){function d(){q.apply(this,arguments)}return Object.create?d.prototype=Object.create(q.prototype):b(d.prototype,q.prototype),d.prototype.constructor=d,d.defaults=b({},q.defaults),b(d.defaults,c),d.prototype.settings={},d.namespace=a,d.data=q.data,d.Item=function(){p.apply(this,arguments)},d.Item.prototype=new p,g(function(){for(var b=f(a),c=h.querySelectorAll(".js-"+b),e="data-"+b+"-options",g=0,k=c.length;k>g;g++){var l,m=c[g],n=m.getAttribute(e);try{l=n&&JSON.parse(n)}catch(o){i&&i.error("Error parsing "+e+" on "+m.nodeName.toLowerCase()+(m.id?"#"+m.id:"")+": "+o);continue}var p=new d(m,l);j&&j.data(m,a,p)}}),j&&j.bridget&&j.bridget(a,d),d},q.Item=p,q}var h=a.document,i=a.console,j=a.jQuery,k=function(){},l=Object.prototype.toString,m="object"==typeof HTMLElement?function(a){return a instanceof HTMLElement}:function(a){return a&&"object"==typeof a&&1===a.nodeType&&"string"==typeof a.nodeName},n=Array.prototype.indexOf?function(a,b){return a.indexOf(b)}:function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1};"function"==typeof define&&define.amd?define("outlayer/outlayer",["eventie/eventie","doc-ready/doc-ready","eventEmitter/EventEmitter","get-size/get-size","matches-selector/matches-selector","./item"],g):a.Outlayer=g(a.eventie,a.docReady,a.EventEmitter,a.getSize,a.matchesSelector,a.Outlayer.Item)}(window),function(a){function b(a,b){var d=a.create("masonry");return d.prototype._resetLayout=function(){this.getSize(),this._getMeasurement("columnWidth","outerWidth"),this._getMeasurement("gutter","outerWidth"),this.measureColumns();var a=this.cols;for(this.colYs=[];a--;)this.colYs.push(0);this.maxY=0},d.prototype.measureColumns=function(){if(this.getContainerWidth(),!this.columnWidth){var a=this.items[0],c=a&&a.element;this.columnWidth=c&&b(c).outerWidth||this.containerWidth}this.columnWidth+=this.gutter,this.cols=Math.floor((this.containerWidth+this.gutter)/this.columnWidth),this.cols=Math.max(this.cols,1)},d.prototype.getContainerWidth=function(){var a=this.options.isFitWidth?this.element.parentNode:this.element,c=b(a);this.containerWidth=c&&c.innerWidth},d.prototype._getItemLayoutPosition=function(a){a.getSize();var b=a.size.outerWidth%this.columnWidth,d=b&&1>b?"round":"ceil",e=Math[d](a.size.outerWidth/this.columnWidth);e=Math.min(e,this.cols);for(var f=this._getColGroup(e),g=Math.min.apply(Math,f),h=c(f,g),i={x:this.columnWidth*h,y:g},j=g+a.size.outerHeight,k=this.cols+1-f.length,l=0;k>l;l++)this.colYs[h+l]=j;return i},d.prototype._getColGroup=function(a){if(2>a)return this.colYs;for(var b=[],c=this.cols+1-a,d=0;c>d;d++){var e=this.colYs.slice(d,d+a);b[d]=Math.max.apply(Math,e)}return b},d.prototype._manageStamp=function(a){var c=b(a),d=this._getElementOffset(a),e=this.options.isOriginLeft?d.left:d.right,f=e+c.outerWidth,g=Math.floor(e/this.columnWidth);g=Math.max(0,g);var h=Math.floor(f/this.columnWidth);h-=f%this.columnWidth?0:1,h=Math.min(this.cols-1,h);for(var i=(this.options.isOriginTop?d.top:d.bottom)+c.outerHeight,j=g;h>=j;j++)this.colYs[j]=Math.max(i,this.colYs[j])},d.prototype._getContainerSize=function(){this.maxY=Math.max.apply(Math,this.colYs);var a={height:this.maxY};return this.options.isFitWidth&&(a.width=this._getContainerFitWidth()),a},d.prototype._getContainerFitWidth=function(){for(var a=0,b=this.cols;--b&&0===this.colYs[b];)a++;return(this.cols-a)*this.columnWidth-this.gutter},d.prototype.needsResizeLayout=function(){var a=this.containerWidth;return this.getContainerWidth(),a!==this.containerWidth},d}var c=Array.prototype.indexOf?function(a,b){return a.indexOf(b)}:function(a,b){for(var c=0,d=a.length;d>c;c++){var e=a[c];if(e===b)return c}return-1};"function"==typeof define&&define.amd?define(["outlayer/outlayer","get-size/get-size"],b):a.Masonry=b(a.Outlayer,a.getSize)}(window); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| var ctrl = function($scope){ | |
| console.log("ctrl loaded"); | |
| $scope.rows = [ | |
| { | |
| name: 'Alan', | |
| ipsum: "Bacon ipsum dolor sit amet pancetta pork loin dolore velit capicola, excepteur non chuck ex short ribs in enim ad jowl ut. Exercitation sirloin pork loin anim duis dolor, pastrami ut ribeye kevin venison. Sed consequat kevin, frankfurter turducken strip steak anim ground round velit adipisicing qui pastrami chicken. Sunt proident sausage frankfurter. Elit pariatur nostrud, turkey fugiat tempor laboris corned beef rump kielbasa ham. Ut velit occaecat, filet mignon spare ribs id shankle labore ullamco swine. Sunt pancetta sausage qui." | |
| }, | |
| { | |
| name: 'Brian', | |
| ipsum: "Bacon ipsum dolor sit amet venison turducken beef ribs turkey salami fatback. Tail fatback salami, ham hock jerky kevin sirloin frankfurter spare ribs meatloaf. Pork chop porchetta corned beef, turkey sausage kielbasa capicola swine prosciutto ground round rump. Porchetta strip steak pork loin meatloaf flank capicola brisket pork chop sausage biltong. Turkey bresaola ground round andouille, pork fatback tongue leberkas flank. Ground round bresaola spare ribs, porchetta landjaeger hamburger biltong ham brisket. Strip steak cow bacon spare ribs kielbasa, ham turducken. Corned beef turkey spare ribs jowl beef ground round pig tongue bresaola andouille leberkas shankle rump meatloaf meatball. Tail jowl bacon, pig t-bone boudin tenderloin swine tongue beef ribs. Cow meatloaf porchetta sirloin drumstick chicken. Shoulder chicken chuck fatback shankle pastrami pork chop. Short ribs prosciutto pastrami t-bone bresaola." | |
| }, | |
| { | |
| name: 'Kevin', | |
| ipsum: "Bacon ipsum dolor sit amet chuck turkey porchetta boudin kevin. Jerky tail fatback, shank chicken ham venison strip steak capicola jowl short ribs short loin t-bone cow. Pastrami pork belly beef, biltong shoulder capicola tri-tip tongue. Pork chop short ribs tri-tip, salami leberkas kevin pork tenderloin. Hamburger cow tri-tip bresaola salami ground round filet mignon. Brisket strip steak short loin doner t-bone tenderloin kevin frankfurter shankle kielbasa pancetta corned beef pork pork loin chicken. Pig andouille tri-tip, pork short loin kielbasa turkey corned beef jerky chuck strip steak pork belly fatback porchetta. Drumstick leberkas boudin ham hock, short loin turducken shank chuck ground round chicken biltong capicola strip steak pork belly. Drumstick bacon sirloin, spare ribs ribeye andouille pig jowl ground round porchetta boudin beef ribs kielbasa. T-bone fatback ribeye, swine corned beef rump venison shoulder strip steak hamburger. Spare ribs strip steak biltong sirloin fatback. Flank chicken cow, shoulder pork chop prosciutto capicola. Filet mignon corned beef tenderloin t-bone, ball tip prosciutto landjaeger shank pastrami andouille fatback.Hamburger shank meatball beef ribs tri-tip sausage sirloin rump porchetta ground round short ribs. Prosciutto fatback jerky pig ham, pork chop tenderloin shoulder rump tongue tail short ribs. Chuck jerky salami, andouille doner shoulder meatloaf meatball pork chop filet mignon tongue. Andouille chuck t-bone, bresaola brisket pork belly ham jerky tenderloin leberkas." | |
| }, | |
| { | |
| name: 'Matt', | |
| ipsum: "Bacon ipsum dolor sit amet pancetta pork loin dolore velit capicola, excepteur non chuck ex short ribs in enim ad jowl ut. Exercitation sirloin pork loin anim duis dolor, pastrami ut ribeye kevin venison. Sed consequat kevin, frankfurter turducken strip steak anim ground round velit adipisicing qui pastrami chicken. Sunt proident sausage frankfurter. Elit pariatur nostrud, turkey fugiat tempor laboris corned beef rump kielbasa ham. Ut velit occaecat, filet mignon spare ribs id shankle labore ullamco swine. Sunt pancetta sausage qui." | |
| }, | |
| { | |
| name: 'Adam', | |
| ipsum: "Bacon ipsum dolor sit amet venison turducken beef ribs turkey salami fatback. Tail fatback salami, ham hock jerky kevin sirloin frankfurter spare ribs meatloaf. Pork chop porchetta corned beef, turkey sausage kielbasa capicola swine prosciutto ground round rump. Porchetta strip steak pork loin meatloaf flank capicola brisket pork chop sausage biltong. Turkey bresaola ground round andouille, pork fatback tongue leberkas flank. Ground round bresaola spare ribs, porchetta landjaeger hamburger biltong ham brisket. Strip steak cow bacon spare ribs kielbasa, ham turducken. Corned beef turkey spare ribs jowl beef ground round pig tongue bresaola andouille leberkas shankle rump meatloaf meatball. Tail jowl bacon, pig t-bone boudin tenderloin swine tongue beef ribs. Cow meatloaf porchetta sirloin drumstick chicken. Shoulder chicken chuck fatback shankle pastrami pork chop. Short ribs prosciutto pastrami t-bone bresaola." | |
| }, | |
| { | |
| name: 'Dave', | |
| ipsum: "Bacon ipsum dolor sit amet chuck turkey porchetta boudin kevin. Jerky tail fatback, shank chicken ham venison strip steak capicola jowl short ribs short loin t-bone cow. Pastrami pork belly beef, biltong shoulder capicola tri-tip tongue. Pork chop short ribs tri-tip, salami leberkas kevin pork tenderloin. Hamburger cow tri-tip bresaola salami ground round filet mignon. Brisket strip steak short loin doner t-bone tenderloin kevin frankfurter shankle kielbasa pancetta corned beef pork pork loin chicken. Pig andouille tri-tip, pork short loin kielbasa turkey corned beef jerky chuck strip steak pork belly fatback porchetta. Drumstick leberkas boudin ham hock, short loin turducken shank chuck ground round chicken biltong capicola strip steak pork belly. Drumstick bacon sirloin, spare ribs ribeye andouille pig jowl ground round porchetta boudin beef ribs kielbasa. T-bone fatback ribeye, swine corned beef rump venison shoulder strip steak hamburger. Spare ribs strip steak biltong sirloin fatback. Flank chicken cow, shoulder pork chop prosciutto capicola. Filet mignon corned beef tenderloin t-bone, ball tip prosciutto landjaeger shank pastrami andouille fatback.Hamburger shank meatball beef ribs tri-tip sausage sirloin rump porchetta ground round short ribs. Prosciutto fatback jerky pig ham, pork chop tenderloin shoulder rump tongue tail short ribs. Chuck jerky salami, andouille doner shoulder meatloaf meatball pork chop filet mignon tongue. Andouille chuck t-bone, bresaola brisket pork belly ham jerky tenderloin leberkas." | |
| } | |
| ]; | |
| $scope.temp = false; | |
| $scope.addRow = function(){ | |
| $scope.temp = false; | |
| $scope.addName=""; | |
| }; | |
| $scope.deleteRow = function(row){ | |
| $scope.rows.splice($scope.rows.indexOf(row),1); | |
| }; | |
| $scope.plural = function (tab){ | |
| return tab.length > 1 ? 's': ''; | |
| }; | |
| $scope.addTemp = function(){ | |
| if($scope.temp) $scope.rows.pop(); | |
| else if($scope.addName) $scope.temp = true; | |
| if($scope.addName) $scope.rows.push($scope.addName); | |
| else $scope.temp = false; | |
| }; | |
| $scope.isTemp = function(i){ | |
| return i==$scope.rows.length-1 && $scope.temp; | |
| }; | |
| } | |
| var listApp = angular.module('list', ["wu.masonry"]); | |
| listApp.controller('ctrl', ["$scope", ctrl]); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment