calendar.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. $(document).ready(function() {
  2. var cached = {};
  3. $('#calendar').fullCalendar({
  4. header: {
  5. left: 'prev,next today',
  6. center: 'title',
  7. right: ''
  8. },
  9. editable: false,
  10. lang: "pl",
  11. titleFormat: "MMMM YYYY [("+USER+")]",
  12. editable: false,
  13. viewRender: function (view, element) {
  14. getWorkingHours(moment(view.intervalStart).format("YYYY-MM"));
  15. },
  16. eventLimit: true, // allow "more" link when too many events
  17. /*events: [
  18. {
  19. title: '10:00 - 16:00',
  20. start: '2016-08-01',
  21. className: 'workingHours'
  22. }
  23. ],*/
  24. });
  25. function getWorkingHours(date) {
  26. if (cached[date] != true) {
  27. cached[date] = true;
  28. var link = BASE_URL + 'wfs-data.php/default_db/?SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=p5_default_db:GRAFIK_PRACY&SRSNAME=EPSG:3003&Filter=<ogc:Filter><ogc:And><ogc:PropertyIsLike wildCard="*" singleChar="^" escapeChar="!"><ogc:PropertyName>DATE</ogc:PropertyName><ogc:Literal>'+date+'-*</ogc:Literal></ogc:PropertyIsLike><ogc:PropertyIsEqualTo><ogc:PropertyName>L_APPOITMENT_USER</ogc:PropertyName><ogc:Literal>' + USER + '</ogc:Literal></ogc:PropertyIsEqualTo></ogc:And></ogc:Filter>';
  29. //console.log(link);
  30. if (DBG) console.log('DBG API fetch', link);
  31. $.get(link, function(data){
  32. if (DBG) console.log('DBG jQuery.fn.jquery', jQuery.fn.jquery);
  33. if (DBG) console.log('DBG fetched data', data);
  34. if (DBG) console.log('DBG $ data', $(data));
  35. if (DBG) console.log('DBG $ data.children()', $(data).children());
  36. if (DBG) console.log('DBG $ data.children().children()', $(data).children().children());
  37. // if (DBG) console.log('DBG featureMembers $ parsed', $($.parseXML(data)).find("gml:featureMember"));
  38. if (DBG) console.log('DBG featureMembers $', $(data).find("featureMember"));
  39. if (DBG) console.log('DBG featuremembers $', $(data).find("featuremember"));
  40. $.each($($(data).children()[0]).children(), function() {
  41. var item = { // BUG not working everywhere
  42. id: $(this).find("ID").text(),
  43. start_work_hour: $(this).find("START_WORK_HOUR").text(),
  44. end_work_hour: $(this).find("END_WORK_HOUR").text(),
  45. date: $(this).find("DATE").text(),
  46. };
  47. if (!$(this)[0]) {
  48. if (DBG) console.warn("Missing $(this)[0]", $(this));
  49. return false;
  50. }
  51. var fmNode = $(this)[0]
  52. var item = {
  53. id: fmNode.getElementsByTagName('ID'),
  54. start_work_hour: fmNode.getElementsByTagName("START_WORK_HOUR"),
  55. end_work_hour: fmNode.getElementsByTagName("END_WORK_HOUR"),
  56. date: fmNode.getElementsByTagName("DATE"),
  57. };
  58. if (item.id) item.id = $(item.id).text();
  59. if (item.start_work_hour) item.start_work_hour = $(item.start_work_hour).text();
  60. if (item.end_work_hour) item.end_work_hour = $(item.end_work_hour).text();
  61. if (item.date) item.date = $(item.date).text();
  62. if (DBG) console.log('DBG featureMember item', item);
  63. if (!item.id) {
  64. if (DBG) console.warn('Missing featureMember item', item);
  65. return false;
  66. }
  67. var source = {};
  68. if (moment(item.start_work_hour, "HH:mm:ss").format("HH:mm") != "00:00") {
  69. source["title"] = moment(item.start_work_hour, "HH:mm:ss").format("HH:mm")+" - "+moment(item.end_work_hour, "HH:mm:ss").format("HH:mm");
  70. source["className"] = 'workingHours';
  71. } else {
  72. source["title"] = "Uzupełnij";
  73. source["className"] = 'empty';
  74. }
  75. source["start"] = item.date;
  76. source["url"] = BASE_URL + 'index.php?_route=ViewTableAjax&namespace=default_db/GRAFIK_PRACY#EDIT/'+item.id;
  77. $('#calendar').fullCalendar('renderEvent', source, true);
  78. });
  79. });
  80. }
  81. }
  82. });