Le repo des sources pour le site web des JM2L
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

112 line
3.4 KiB

  1. var scheds = {};
  2. function example() {
  3. var taskStatus = {'Stand':'Stand',
  4. 'Table ronde':'Table-ronde',
  5. 'Atelier':'Atelier',
  6. 'Concert':'Concert',
  7. 'Conference':'Conference',
  8. 'Repas':'Repas'}
  9. d3.json("le-prog-json", function(error, JsonContent) {
  10. if (error)
  11. return console.warn(error);
  12. $.each( JsonContent,
  13. function( EventType, ListEvType ) {
  14. $.each( ListEvType,
  15. function( Day, ListEvent ) {
  16. var placeNames = [];
  17. for ( var i = 0; i < ListEvent.length; i++) {
  18. placeNames.push(ListEvent[i]["placeName"]);
  19. // convert json text to js Date
  20. ListEvent[i]["startDate"] = new Date(ListEvent[i]["startDate"]);
  21. ListEvent[i]["endDate"] = new Date(ListEvent[i]["endDate"]);
  22. }
  23. //placeNames.push("unk")
  24. scheds[EventType+"_"+Day] = new d3.sched("SVG_"+Day)
  25. .taskTypes(placeNames)
  26. .taskStatus(taskStatus)
  27. .tickFormat("%H:%M");
  28. //scheds[EventType+"_"+Day].timeDomainMode("fit");
  29. //scheds[EventType+"_"+Day].margin(margin);
  30. scheds[EventType+"_"+Day](ListEvent);
  31. //scheds[EventType+"_"+Day].zoomed();
  32. scheds[EventType+"_"+Day].redraw("SVG_"+Day, ListEvent)
  33. });
  34. });
  35. });
  36. };
  37. // Query Programme
  38. example();
  39. function changeTimeDomain(timeDomainString) {
  40. this.timeDomainString = timeDomainString;
  41. switch (timeDomainString) {
  42. case "1hr":
  43. format = "%H:%M:%S";
  44. sched.timeDomain([ d3.time.hour.offset(getEndDate(), -1), getEndDate() ]);
  45. break;
  46. case "3hr":
  47. format = "%H:%M";
  48. sched.timeDomain([ d3.time.hour.offset(getEndDate(), -3), getEndDate() ]);
  49. break;
  50. case "6hr":
  51. format = "%H:%M";
  52. sched.timeDomain([ d3.time.hour.offset(getEndDate(), -6), getEndDate() ]);
  53. break;
  54. case "1day":
  55. format = "%H:%M";
  56. sched.timeDomain([ d3.time.day.offset(getEndDate(), -1), getEndDate() ]);
  57. break;
  58. case "1week":
  59. format = "%a %H:%M";
  60. sched.timeDomain([ d3.time.day.offset(getEndDate(), -7), getEndDate() ]);
  61. break;
  62. default:
  63. format = "%H:%M"
  64. }
  65. sched.tickFormat(format);
  66. sched.redraw(tasks);
  67. }
  68. function getEndDate() {
  69. var lastEndDate = Date.now();
  70. if (tasks.length > 0) {
  71. lastEndDate = tasks[tasks.length - 1].endDate;
  72. }
  73. return lastEndDate;
  74. }
  75. function addTask() {
  76. var lastEndDate = getEndDate();
  77. var taskStatusKeys = Object.keys(taskStatus);
  78. var taskStatusName = taskStatusKeys[Math.floor(Math.random() * taskStatusKeys.length)];
  79. var taskName = taskNames[Math.floor(Math.random() * taskNames.length)];
  80. tasks.push({
  81. "startDate" : d3.time.hour.offset(lastEndDate, Math.ceil(1 * Math.random())),
  82. "endDate" : d3.time.hour.offset(lastEndDate, (Math.ceil(Math.random() * 3)) + 1),
  83. "taskName" : taskName,
  84. "status" : taskStatusName
  85. });
  86. changeTimeDomain(timeDomainString);
  87. sched.redraw(tasks);
  88. };
  89. function removeTask() {
  90. tasks.pop();
  91. changeTimeDomain(timeDomainString);
  92. sched.redraw(tasks);
  93. };