Advertisement
Guest User

Untitled

a guest
Nov 26th, 2014
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.96 KB | None | 0 0
  1. <div class="form-group">
  2. <label for="datas_sel" class="control-label">Datas do evento</label><br>
  3. <div id="datas_sel" style="float:left;"></div><br class="clear">&nbsp;<br>
  4. <label>Horas para as datas selecionadas:</label><br>
  5. <div id="horas_sel" style="width:100%;"></div><br class="clear">&nbsp;<br>
  6. </div>
  7.  
  8. //classe de implementação
  9. var calendario = {
  10. datas : new Array(),
  11. padNumero: function(num) {
  12. return (num.toString().length == 1)?"0"+num.toString():num.toString();
  13. },
  14. forDate : function(str){
  15. return str.substring(6) + "/" + str.substring(4,6) + "/" + str.substring(0,4);
  16. },
  17. sorteio: function(a, b) {
  18. return a.getAttribute('data-date') - b.getAttribute('data-date');
  19. },
  20. dataOrganiza: function(){
  21. var organizar = $("#horas_sel div").toArray().sort(this.sorteio);
  22. $("#horas_sel div").remove();
  23. $.each(organizar, function (k, v) {
  24. $('#horas_sel').append(v);
  25. });
  26. },
  27. addRemData: function(data) {
  28. var index = jQuery.inArray(data, this.datas);
  29. if (index >= 0){
  30. this.removeDate(index);
  31. }else{
  32. this.addDate(data);
  33. }
  34. this.dataOrganiza();
  35. },
  36. addDate: function(data) {
  37. if (jQuery.inArray(data, this.datas) < 0){
  38. this.datas.push(data);
  39. }
  40. $('#horas_sel').append('<div id="dia_'+data+'" data-date="'+data+'" data-horas="0">
  41. <span id="data_'+data+'"><b>'+this.forDate(data)+':</b></span>
  42. <span id="hora_'+data+'"></span>
  43. <span id="plusicon_'+data+'" class="glyphicon glyphicon-plus-sign" style="padding:3px;border-left:1px solid #CCC;"></span>
  44. </div>');
  45. setTimeout(function(){
  46. $('#plusicon_'+data).click(function(){
  47. calendario.addHora(data)
  48. });
  49. calendario.addHora(data);
  50. },300);
  51. },
  52. removeDate: function(ind) {
  53. var d = this.datas.splice(ind, 1);
  54. $('#dia_'+d).remove();
  55. },
  56. addHora: function(data){
  57. var num = $('#dia_'+data).attr('data-horas');
  58. num = (parseInt(num)>=0)? parseInt(num)+1:1;
  59. $('#dia_'+data).attr('data-horas',num);
  60. $('#hora_'+data).append('<span id="ttem_'+data+'_'+num+'">
  61. Inicio: <input type="text" id="tini_'+data+'_'+num+'" class="form-control" placeholder="12:00"/>
  62. Final: <input type="text" id="tfim_'+data+'_'+num+'" class="form-control" placeholder="13:00"/>
  63. <span id="tmen_'+data+'_'+num+'" class="glyphicon glyphicon-minus-sign" style="margin-right:10px; padding:3px; border-right:1px solid #ccc;"></span>
  64. </span>');
  65. if($('#hora_'+data+' input').length >= 6){
  66. $('#plusicon_'+data).css('display', 'none');
  67. }else{
  68. $('#plusicon_'+data).css('display', 'inline-block');
  69. }
  70. setTimeout(function(){
  71. $('#tini_'+data+'_'+num+', #tfim_'+data+'_'+num).timepicker({stepMinute: 5});
  72. $('#tmen_'+data+'_'+num).click(function(){
  73. calendario.remHora(data,num);
  74. });
  75. },300);
  76. },
  77. remHora: function(data, id){
  78. $('#ttem_'+data+'_'+id).remove();
  79. if($('#hora_'+data+' input').length >= 8){
  80. $('#plusicon_'+data).css('display', 'none');
  81. }else{
  82. $('#plusicon_'+data).css('display', 'inline-block');
  83. }
  84. }
  85. }
  86. //inicia o calendário
  87. $('#datas_sel').datepicker({
  88. numberOfMonths: [1,3],
  89. howWeek: true,
  90. weekHeader: "W",
  91. onSelect: function (dateText, inst) {
  92. calendario.addRemData(dateText.split('/').reverse().join(''));
  93. },
  94. beforeShowDay: function (date) {
  95. var year = date.getFullYear();
  96. var month = calendario.padNumero(date.getMonth() + 1);
  97. var day = calendario.padNumero(date.getDate());
  98. var dateString = year.toString() + month.toString() + day.toString();
  99.  
  100. var gotDate = jQuery.inArray(dateString, calendario.datas);
  101. if (gotDate >= 0) {
  102. return [true, "ui-state-highlight"];
  103. }
  104. return [true, ""];
  105. }
  106. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement