Advertisement
Guest User

Untitled

a guest
Mar 21st, 2019
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.52 KB | None | 0 0
  1. let mapToStrings = List.map (string)
  2.  
  3. // total < pages to show
  4. // 1
  5. // 1 2 3
  6. // 1 2 3 4 5 6 7
  7. let generateAllRange total = mapToStrings [1..total]
  8.  
  9. // current in between
  10. // 1 .. 4 5 6 .. 10
  11. let generateMidRange current total pagesToShow =
  12. let start = current - pagesToShow / 2 + 2
  13. let finish = current + pagesToShow / 2 - 2
  14. let range = mapToStrings [start..finish]
  15. ["1";".."] @ range @ [".."; string total]
  16.  
  17. // current close to start
  18. // 1 2 3 4 5 .. 10
  19. let generateStartRange total pagesToShow =
  20. let finish = pagesToShow - 2
  21. let range = mapToStrings [1..finish]
  22. range @ [".."; string total]
  23.  
  24. // current close to finish
  25. // 1 .. 6 7 8 9 10
  26. let generateEndRange total pagesToShow =
  27. let start = total - pagesToShow + 3
  28. let range = mapToStrings [start..total]
  29. ["1";".."] @ range
  30.  
  31. let generatePageNumbers current total visible =
  32. if total <= visible then generateAllRange total
  33. else if current - visible / 2 <= 0 then generateStartRange total visible
  34. else if current + visible / 2 >= total then generateEndRange total visible
  35. else generateMidRange current total visible
  36.  
  37.  
  38. generatePageNumbers 1 51 7
  39. generatePageNumbers 3 51 7
  40. generatePageNumbers 4 51 7
  41. generatePageNumbers 5 51 7
  42. generatePageNumbers 30 51 7
  43. generatePageNumbers 49 51 7
  44. generatePageNumbers 51 51 7
  45. generatePageNumbers 1 5 7
  46. generatePageNumbers 4 6 7
  47. generatePageNumbers 1 51 9
  48. generatePageNumbers 3 51 9
  49. generatePageNumbers 4 51 9
  50. generatePageNumbers 5 51 9
  51. generatePageNumbers 3 51 10
  52. generatePageNumbers 30 51 10
  53. generatePageNumbers 51 51 10
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement