diff --git a/README.md b/README.md index dbc97a2..9101aa4 100644 --- a/README.md +++ b/README.md @@ -79,7 +79,7 @@ $scope.shinyThings = function (item) { ``` ## Example -See [`example.html`](http://htmlpreview.github.io/?https://github.com/btford/angular-dragon-drop/blob/master/example.html). +See [`example.html`](http://htmlpreview.github.io/?https://github.com/shootermv/angular-dragon-drop/blob/master/example.html). ## License MIT diff --git a/dragon-drop.js b/dragon-drop.js index 3222953..d9dac86 100644 --- a/dragon-drop.js +++ b/dragon-drop.js @@ -62,9 +62,18 @@ angular.module('btford.dragon-drop', []). } }; - var add = function (collection, item, key) { + var add = function (collection, item, key, orderBy) { if (collection instanceof Array) { collection.push(item); + /*sorting support*/ + if(orderBy){ + + collection = collection.sort(function(a, b){ + a = parseInt(a[orderBy]); + b = parseInt(b[orderBy]); + return a - b; + }) + } } else { collection[key] = item; } @@ -146,17 +155,23 @@ angular.module('btford.dragon-drop', []). if (dropArea.length > 0) { var expression = dropArea.attr('btf-dragon'); var targetScope = dropArea.scope(); - var match = expression.match(/^\s*(.+)\s+in\s+(.*?)\s*$/); + //added "(?:\s+\|\s+(.*))?" for support orderBy + var match = expression.match(/^\s*(.+)\s+in\s+(.*?)\s*(?:\s+\|\s+(.*))?$/); + + var targetList = targetScope.$eval(match[2]); + var orderBy; + if(match[3]){orderBy = match[3].split(':')[1];} + targetScope.$apply(function () { - add(targetList, dragValue, dragKey); + add(targetList, dragValue, dragKey, orderBy); }); } else if (!dragDuplicate) { // no dropArea here // put item back to origin $rootScope.$apply(function () { - add(dragOrigin, dragValue, dragKey); + add(dragOrigin, dragValue, dragKey, orderBy); }); } @@ -171,7 +186,7 @@ angular.module('btford.dragon-drop', []). // get the `thing in things` expression var expression = attr.btfDragon; - var match = expression.match(/^\s*(.+)\s+in\s+(.*?)\s*$/); + var match = expression.match(/^\s*(.+)\s+in\s+(.*?)\s*(?:\s+\|\s+(.*))?$/); if (!match) { throw Error("Expected btfDragon in form of '_item_ in _collection_' but got '" + expression + "'."); @@ -278,4 +293,4 @@ angular.module('btford.dragon-drop', []). }; } }; - }); + }); \ No newline at end of file diff --git a/example.html b/example.html index b8bbad0..e611cc2 100644 --- a/example.html +++ b/example.html @@ -2,12 +2,15 @@
{{sortablethings | json}}
+ {{sortableotherThings | json}}
+ =f&&(n.resolve(p),
+l(r.$$intervalId),delete e[r.$$intervalId]);A||b.$apply()},g);e[r.$$intervalId]=n;return r}var e={};d.cancel=function(a){return a&&a.$$intervalId in e?(e[a.$$intervalId].reject("canceled"),clearInterval(a.$$intervalId),delete e[a.$$intervalId],!0):!1};return d}]}function sd(){this.$get=function(){return{id:"en-us",NUMBER_FORMATS:{DECIMAL_SEP:".",GROUP_SEP:",",PATTERNS:[{minInt:1,minFrac:0,maxFrac:3,posPre:"",posSuf:"",negPre:"-",negSuf:"",gSize:3,lgSize:3},{minInt:1,minFrac:2,maxFrac:2,posPre:"\u00a4",
+posSuf:"",negPre:"(\u00a4",negSuf:")",gSize:3,lgSize:3}],CURRENCY_SYM:"$"},DATETIME_FORMATS:{MONTH:"January February March April May June July August September October November December".split(" "),SHORTMONTH:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),DAY:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),SHORTDAY:"Sun Mon Tue Wed Thu Fri Sat".split(" "),AMPMS:["AM","PM"],medium:"MMM d, y h:mm:ss a","short":"M/d/yy h:mm a",fullDate:"EEEE, MMMM d, y",longDate:"MMMM d, y",
+mediumDate:"MMM d, y",shortDate:"M/d/yy",mediumTime:"h:mm:ss a",shortTime:"h:mm a"},pluralCat:function(b){return 1===b?"one":"other"}}}}function nc(b){b=b.split("/");for(var a=b.length;a--;)b[a]=rb(b[a]);return b.join("/")}function oc(b,a,c){b=xa(b,c);a.$$protocol=b.protocol;a.$$host=b.hostname;a.$$port=T(b.port)||td[b.protocol]||null}function pc(b,a,c){var d="/"!==b.charAt(0);d&&(b="/"+b);b=xa(b,c);a.$$path=decodeURIComponent(d&&"/"===b.pathname.charAt(0)?b.pathname.substring(1):b.pathname);a.$$search=
+Vb(b.search);a.$$hash=decodeURIComponent(b.hash);a.$$path&&"/"!=a.$$path.charAt(0)&&(a.$$path="/"+a.$$path)}function na(b,a){if(0===a.indexOf(b))return a.substr(b.length)}function Ua(b){var a=b.indexOf("#");return-1==a?b:b.substr(0,a)}function Gb(b){return b.substr(0,Ua(b).lastIndexOf("/")+1)}function qc(b,a){this.$$html5=!0;a=a||"";var c=Gb(b);oc(b,this,b);this.$$parse=function(a){var e=na(c,a);if(!B(e))throw Hb("ipthprfx",a,c);pc(e,this,b);this.$$path||(this.$$path="/");this.$$compose()};this.$$compose=
+function(){var a=Wb(this.$$search),b=this.$$hash?"#"+rb(this.$$hash):"";this.$$url=nc(this.$$path)+(a?"?"+a:"")+b;this.$$absUrl=c+this.$$url.substr(1)};this.$$rewrite=function(d){var e;if((e=na(b,d))!==s)return d=e,(e=na(a,e))!==s?c+(na("/",e)||e):b+d;if((e=na(c,d))!==s)return c+e;if(c==d+"/")return c}}function Ib(b,a){var c=Gb(b);oc(b,this,b);this.$$parse=function(d){var e=na(b,d)||na(c,d),e="#"==e.charAt(0)?na(a,e):this.$$html5?e:"";if(!B(e))throw Hb("ihshprfx",d,a);pc(e,this,b);this.$$compose()};
+this.$$compose=function(){var c=Wb(this.$$search),e=this.$$hash?"#"+rb(this.$$hash):"";this.$$url=nc(this.$$path)+(c?"?"+c:"")+e;this.$$absUrl=b+(this.$$url?a+this.$$url:"")};this.$$rewrite=function(a){if(Ua(b)==Ua(a))return a}}function rc(b,a){this.$$html5=!0;Ib.apply(this,arguments);var c=Gb(b);this.$$rewrite=function(d){var e;if(b==Ua(d))return d;if(e=na(c,d))return b+a+e;if(c===d+"/")return c}}function gb(b){return function(){return this[b]}}function sc(b,a){return function(c){if(z(c))return this[b];
+this[b]=a(c);this.$$compose();return this}}function ud(){var b="",a=!1;this.hashPrefix=function(a){return F(a)?(b=a,this):b};this.html5Mode=function(b){return F(b)?(a=b,this):a};this.$get=["$rootScope","$browser","$sniffer","$rootElement",function(c,d,e,h){function g(a){c.$broadcast("$locationChangeSuccess",f.absUrl(),a)}var f,m=d.baseHref(),k=d.url();a?(m=k.substring(0,k.indexOf("/",k.indexOf("//")+2))+(m||"/"),e=e.history?qc:rc):(m=Ua(k),e=Ib);f=new e(m,"#"+b);f.$$parse(f.$$rewrite(k));h.on("click",
+function(a){if(!a.ctrlKey&&!a.metaKey&&2!=a.which){for(var b=y(a.target);"a"!==v(b[0].nodeName);)if(b[0]===h[0]||!(b=b.parent())[0])return;var e=b.prop("href"),g=f.$$rewrite(e);e&&(!b.attr("target")&&g&&!a.isDefaultPrevented())&&(a.preventDefault(),g!=d.url()&&(f.$$parse(g),c.$apply(),Z.angular["ff-684208-preventDefault"]=!0))}});f.absUrl()!=k&&d.url(f.absUrl(),!0);d.onUrlChange(function(a){f.absUrl()!=a&&(c.$broadcast("$locationChangeStart",a,f.absUrl()).defaultPrevented?d.url(f.absUrl()):(c.$evalAsync(function(){var b=
+f.absUrl();f.$$parse(a);g(b)}),c.$$phase||c.$digest()))});var l=0;c.$watch(function(){var a=d.url(),b=f.$$replace;l&&a==f.absUrl()||(l++,c.$evalAsync(function(){c.$broadcast("$locationChangeStart",f.absUrl(),a).defaultPrevented?f.$$parse(a):(d.url(f.absUrl(),b),g(a))}));f.$$replace=!1;return l});return f}]}function vd(){var b=!0,a=this;this.debugEnabled=function(a){return F(a)?(b=a,this):b};this.$get=["$window",function(c){function d(a){a instanceof Error&&(a.stack?a=a.message&&-1===a.stack.indexOf(a.message)?
+"Error: "+a.message+"\n"+a.stack:a.stack:a.sourceURL&&(a=a.message+"\n"+a.sourceURL+":"+a.line));return a}function e(a){var b=c.console||{},e=b[a]||b.log||x;return e.apply?function(){var a=[];q(arguments,function(b){a.push(d(b))});return e.apply(b,a)}:function(a,b){e(a,null==b?"":b)}}return{log:e("log"),info:e("info"),warn:e("warn"),error:e("error"),debug:function(){var c=e("debug");return function(){b&&c.apply(a,arguments)}}()}}]}function pa(b,a){if("constructor"===b)throw ya("isecfld",a);return b}
+function Va(b,a){if(b&&b.constructor===b)throw ya("isecfn",a);if(b&&b.document&&b.location&&b.alert&&b.setInterval)throw ya("isecwindow",a);if(b&&(b.nodeName||b.on&&b.find))throw ya("isecdom",a);return b}function hb(b,a,c,d,e){e=e||{};a=a.split(".");for(var h,g=0;1