bootstrap-table-natural-sorting.js 960 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. /**
  2. * @author: Brian Huisman
  3. * @webSite: http://www.greywyvern.com
  4. * @version: v1.0.0
  5. * JS function to allow natural sorting on bootstrap-table columns
  6. * just add data-sorter="alphanum" to any th
  7. *
  8. * @update Dennis Hernández <http://djhvscf.github.io/Blog>
  9. */
  10. function alphanum(a, b) {
  11. function chunkify(t) {
  12. var tz = [],
  13. x = 0,
  14. y = -1,
  15. n = 0,
  16. i,
  17. j;
  18. while (i = (j = t.charAt(x++)).charCodeAt(0)) {
  19. var m = (i === 46 || (i >= 48 && i <= 57));
  20. if (m !== n) {
  21. tz[++y] = "";
  22. n = m;
  23. }
  24. tz[y] += j;
  25. }
  26. return tz;
  27. }
  28. var aa = chunkify(a);
  29. var bb = chunkify(b);
  30. for (x = 0; aa[x] && bb[x]; x++) {
  31. if (aa[x] !== bb[x]) {
  32. var c = Number(aa[x]),
  33. d = Number(bb[x]);
  34. if (c == aa[x] && d == bb[x]) {
  35. return c - d;
  36. } else {
  37. return (aa[x] > bb[x]) ? 1 : -1;
  38. }
  39. }
  40. }
  41. return aa.length - bb.length;
  42. }