progetti.js 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396
  1. var PROJECT = PROJECT || {};
  2. PROJECT.labs = [
  3. { collettivo: "Ciclofficina Ampioraggio",
  4. dshort: "Officina per le biciclette. Nessuno ti ripara le bici, impari a farlo insieme a chi ha già questa competenza.",
  5. dlong: "...",
  6. when : [
  7. {day: "Mar", hour: ["19:00", "22:00"], title: "Assemblea Ciclofficina" },
  8. {day: "Mer", hour: ["18:00", "22:00"], title: "Riparazioni biciclette" },
  9. {day: "Dom", hour: ["18:00", "22:00"], title: "Riparazioni biciclette" }
  10. ],
  11. old_event: "", //un vecchio evento
  12. site: "http://ampioraggio.noblogs.org", //sito personale
  13. contatto : "", //email
  14. page: "http://www.ecn.org/xm24/ciclofficina-ampioraggio", //pagina su sito xm24
  15. sn: "", //social network
  16. },
  17. { collettivo: "SIM",
  18. dshort: '“Nessuno educa nessuno, nessuno educa se stesso, gli uomini'+
  19. 'si educano insieme, con la mediazione del mondo.” – Paulo Freire',
  20. dlong: "La Scuola d’Italiano CON migranti del XM24 è una scuola "+
  21. "autogestita che unisce al percorso linguistico un percorso politico, sia "+
  22. "perchè si oppone alle leggi razziste dello stato, sia perchè concepisce "+
  23. "l’ apprendimento dell’italiano da parte dei migranti come uno strumento "+
  24. "di emancipazione, autodefinizione e socializzazione.",
  25. when : [
  26. {day: "Lun", hour: ["19:00", "21:00"], title:"Scuola Italiano con Migranti"},
  27. {day: "Lun", hour: ["21:00", "23:00"], title:"Assemlea di gestione SIM"},
  28. {day: "Mar", hour: ["19:00", "21:00"], title:"Scuola Italiano con Migranti"}
  29. ],
  30. old_event: "", //un vecchio evento
  31. site: "http://simxm24.noblogs.org", //sito personale
  32. contatto : "", //email
  33. page: "", //pagina su sito xm24
  34. sn: "https://www.fb.com/infoschockxm24", //social network
  35. },
  36. { collettivo: "Hacklabbo",
  37. dshort: "Serata di smanettamento collettivo, giochi, confronto. Sottoterra nascono idee, "+
  38. "serpeggiano progetti, si condividono codice, saldatori e birrette.",
  39. dlong: "Analizziamo e smontiamo e scardiniamoLe tecnologie invasive, l’imposizione "+
  40. "di una socialita’ predigerita da parte dei colossi dell’informatica "+
  41. "e dei media, la profilazione, la censura licenze limitanti e brevetti "+
  42. "Rivendicando la libera circolazione "+
  43. "(analogica e digitale) dell’informazione, il diritto alla privacy, "+
  44. "all’anonimato e alla liberta di espressione ed invenzione. Condividiamo "+
  45. "conoscenza autoproducendo dal basso strumenti alternativi ed infrastrutture "+
  46. "autonome di comunicazione per una partecipazione politica consapevole.",
  47. when : [
  48. {day: "Mer", hour: ["21:00", "24:00"], title:"Hacklabbo" },
  49. ],
  50. old_event: "", //un vecchio evento
  51. site: "http://liste.indivia.net/listinfo/hacklabbo", //sito personale
  52. contatto : "", //email
  53. page: "http://www.ecn.org/xm24/hacklabbo/", //pagina su sito xm24
  54. },
  55. { collettivo: "Infoshock",
  56. dshort: "L’ InfoShock di XM24 è uno spazio di consultazione e distribuzione "+
  57. "alternativa di materiale storico/culturale/politico.",
  58. dlong: "Infoshock è uno spazio aggregativo, un luogo di interazione e contaminazione "+
  59. "sociale, di incontro, confronto e condivisione, un veicolo sperimentale e "+
  60. "creativo per la trasmissione della cultura e della politica.",
  61. when : [
  62. {day: "Giov", hour: ["20:00", "23:00"], title:"Apertura spazio Infoshock" },
  63. ],
  64. old_event: "", //un vecchio evento
  65. site: "https://infoshockxm24.noblogs.org", //sito personale
  66. contatto : "infoshockxm24@indivia.net", //email
  67. page: "http://www.ecn.org/xm24/infoshock/", //pagina su sito xm24
  68. sn: "", //social network
  69. },
  70. { collettivo: "SeriXm",
  71. dshort: "Laboratorio creativo attrezzato per la stampa serigrafica",
  72. dlong: "Uno spazio di autoproduzione che nasce con l’intento di sperimentare e "+
  73. "applicare la creazione legata al mondo del visuale. La serigrafia come "+
  74. "tecnica di stampa manuale legata al mondo d.i.y. si pone in maniera "+
  75. "opposta alle logiche della produzione industriale massiva e omologante.",
  76. when : [
  77. {day: "Mer", hour: ["19:30", "22:00"], title:"Apertura serigrafia"},
  78. ],
  79. old_event: "", //un vecchio evento
  80. site: "", //sito personale
  81. contatto : "serixm@autistici.org", //email
  82. page: "http://www.ecn.org/xm24/seryxm/", //pagina su sito xm24
  83. sn: "", //social network
  84. },
  85. { collettivo: "Palestrina Libera",
  86. dshort: "Palestra popolare basata sugli stessi principi del posto che la ospita, XM24, di cui è parte integrante.",
  87. dlong: "Uno spazio di autoproduzione che nasce con l’intento di sperimentare e "+
  88. "applicare la creazione legata al mondo del visuale. La serigrafia come "+
  89. "tecnica di stampa manuale legata al mondo d.i.y. si pone in maniera "+
  90. "opposta alle logiche della produzione industriale massiva e omologante.",
  91. when : [
  92. {day: "Mar", hour: ["18:30", "20:00"], title:"Hata Yoga"},
  93. {day: "Mer", hour: ["20:30", "22:30"], title:"Hata Yoga meditativa"},
  94. {day: "Lun", hour: ["20:30", "22:30"], title:"Hata Yoga meditativa"},
  95. {day: "Gio", hour: ["18:30", "20:00"], title:"Hata Yoga"},
  96. {day: "Lun", hour: ["19:00", "21:00"], title:"Tessuti aerei"},
  97. {day: "Mer", hour: ["19:00", "21:00"], title:"Tessuti aerei"},
  98. {day: "Ven", hour: ["19:00", "21:00"], title:"Tessuti aerei"},
  99. {day: "Sab", hour: ["15:00", "17:00"], title:"Shiatsu"},
  100. //{day: "Lun", hour: ["15:00", "17:00"], title:"Acrobalance"}
  101. ],
  102. old_event: "", //un vecchio evento
  103. site: "http://liste.indivia.net/listinfo/pallestra", //sito personale
  104. contatto : "palestrinalibera@autistici.org", //email
  105. page: "http://www.ecn.org/xm24/palestrina-libera/", //pagina su sito xm24
  106. sn: "", //social network
  107. },
  108. { collettivo: "Palestra Popolare Antifa Boxe Teofilo Stevenson",
  109. dshort: "Palestra popolare nata a novembre del 2014 per offrire un corso autogestito di Boxe.",
  110. dlong: "All’interno del circuito nazionale delle palestre popolari, la P.P. Stevenson si propone di "+
  111. "offrire un’esperienza di sport popolare che parte dal basso, si prefigge "+
  112. "di insegnare a praticare una disciplina che ha come principi l’uguaglianza "+
  113. "e il rispetto reciproco",
  114. when : [
  115. {day: "Lun", hour: ["19:00", "21:00"], title:"Pugilato"},
  116. {day: "Mer", hour: ["19:00", "21:00"], title:"Pugilato Principianti"},
  117. {day: "Ven", hour: ["19:00", "21:00"], title:"Pugilato"},
  118. ],
  119. old_event: "", //un vecchio evento
  120. site: "http://liste.indivia.net/listinfo/pallestra", //sito personale
  121. contatto : "palestrapopolarestevenson@autistici.org", //email
  122. page: "http://www.ecn.org/xm24/palestrina-libera/", //pagina su sito xm24
  123. sn: "https://www.fb.com/palestrapopolarestevenson", //social network
  124. },
  125. { collettivo: "Lab57 Alchemica",
  126. dshort: "Ascolto psicologico e punto di primo soccorso",
  127. dlong: "Ascolto psicologico e punto di primo soccorso per evitare le "+
  128. "conseguenze dannose provocate dall’abuso di sostanze psicoattive "+
  129. "legali ed illegali o più in generale causate da comportamenti e "+
  130. "stili vita a rischio",
  131. when : [
  132. {day: "Giov", hour: ["19:00", "23:00"], title:"Sportello consulenza antipro"},
  133. ],
  134. old_event: "", //un vecchio evento
  135. site: "http://lab57.indivia.net", //sito personale
  136. contatto : "lab57@indivia.net", //email
  137. page: "http://www.ecn.org/xm24/alchemicalab57/", //pagina su sito xm24
  138. sn: "", //social network
  139. },
  140. { collettivo: "Campi aperti",
  141. dshort: "Associazione fatta da agricoltori e consumatori che sostiene l’agricoltura biologica e contadina.",
  142. dlong: "Per noi di CampiAperti realizzare la sovranità alimentare nelle città "+
  143. "significa difendere la piccola agricoltura contadina nelle campagne "+
  144. "creando una relazione diretta tra chi produce e chi consuma. "+
  145. "Questo progetto per noi è il punto di partenza per la costruzione di"+
  146. " una alternativa al sistema economico dominante.",
  147. when : [
  148. {day: "Gio", hour: ["16.30", "21:00"], title:"Mercatino Biologico"},
  149. ],
  150. old_event: "", //un vecchio evento
  151. site: "http://www.campiaperti.org/", //sito personale
  152. contatto : "frigotecniche@indivia.net", //email
  153. page: "http://www.campiaperti.org/chi-siamo/", //pagina su sito xm24
  154. sn: "", //social network
  155. },
  156. { collettivo: "Frigotecniche",
  157. dshort: "Laboratori di sperimentazione musicale",
  158. dlong: "Alcuni gruppi promotori del lab sono: Dune, Mother propaganda, Kaatu verata nikto, "+
  159. "Stormo, G.I.JOE, Grindine. "+
  160. "Alcune etichette Xhol Records, In limine Records, Donnabavosa REcords",
  161. when : [
  162. ],
  163. old_event: "", //un vecchio evento
  164. site: "", //sito personale
  165. contatto : "frigotecniche@indivia.net", //email
  166. page: "http://www.ecn.org/xm24/frigotecniche/", //pagina su sito xm24
  167. sn: "", //social network
  168. },
  169. { collettivo: "Xm24",
  170. dshort: "Spazio pubblico autogestito",
  171. dlong: "Crogiulo di opinioni, interessi, speranze. Ostinatamente dietro la barricata.",
  172. when : [
  173. {day: "Mar", hour: ["20.30", "24:30"], title:"Assemblea pubblica Xm24"},
  174. ],
  175. site: "http://www.ecn.org/xm24/", //sito personale
  176. },
  177. { collettivo: "No Borders",
  178. dshort: "Lottiamo contro tutte le frontiere, fisiche e immaginarie, e siamo per la libertà di movimento di tutti e tutte.",
  179. dlong: "L’assemblea Bologna No Borders nasce in seguito all’esperienza del "+
  180. "presidio di Ventimiglia e fa parte della rete No Borders, "+
  181. "che è presente in tante città Italiane e europee ed è attiva in "+
  182. "molti luoghi di frontiera.",
  183. when : [
  184. {day: "Mer", hour: ["20.00", "22:00"], title:"Assemblea No Borders"},
  185. ],
  186. old_event: "", //un vecchio evento
  187. site: "", //sito personale
  188. contatto : "", //email
  189. page: "", //pagina su sito xm24
  190. },
  191. { collettivo: "Sportello medico giuridico MEDERÌ",
  192. dshort: "Consulenza medica e legale in materia di immigrazione",
  193. dlong: "Rivendichiamo il diritto di ciascuno di essere libero di scegliere "+
  194. "dove spostarsi e stabilirsi a prescindere dalla provenienza e senza "+
  195. "subire discriminazioni. Rifiutiamo che il fenomeno migratorio sia "+
  196. "trattato come un problema di ordine pubblico oppure limitato dalle "+
  197. "esigenze economiche di un paese.",
  198. when : [
  199. {day: "Lun", hour: ["19.00", "21:00"], title:"Sportello medico giuridico"},
  200. ],
  201. old_event: "", //un vecchio evento
  202. site: "", //sito personale
  203. contatto : "sportellomedicogiuridico@xm24.indivia.net", //email
  204. page: "http://www.ecn.org/xm24/sportello-medico-legale/", //pagina su sito xm24
  205. }
  206. ];
  207. var sortHours = function(a, b){
  208. return a.hour[0] < b.hour[0] || (a.hour[0] == b.hour[0] && a.hour[1] < b.hour[1]) ? -1 : 1;
  209. };
  210. var sortDay = function(arr){
  211. var sorted = [];
  212. if(arr.lun)
  213. sorted.push(arr.lun);
  214. if(arr.mar)
  215. sorted.push(arr.mar);
  216. if(arr.mer)
  217. sorted.push(arr.mer);
  218. if(arr.gio)
  219. sorted.push(arr.gio);
  220. if(arr.ven)
  221. sorted.push(arr.ven);
  222. if(arr.sab)
  223. sorted.push(arr.sab);
  224. if(arr.dom)
  225. sorted.push(arr.dom);
  226. return sorted;
  227. };
  228. var init = true;
  229. PROJECT.hr = "<hr class='post-divider'>";
  230. var getLabelUrl = function(url){
  231. var label = url.replace(/(http|https):\/\/(www\.)*/,'')
  232. .replace(/\/\s*$/, ""); //l'ultima barra
  233. return label;
  234. };
  235. PROJECT.getHtmlA = function(label, url, _class, isMail) {
  236. if(!url)
  237. return "";
  238. _class = _class || "";
  239. var link = isMail ? "mailto:" + url : url;
  240. return "<span class='e_link title "+_class+"'>" + label + "</span>"+
  241. "<a class='e_link e_url"+_class+"' href='" + link + "' rel='external'>" +
  242. getLabelUrl(url) +
  243. "</a>" +
  244. "<br>";
  245. };
  246. PROJECT.getHtmlDate = function(evt, noDay) {
  247. if(evt) {
  248. var day = ! noDay ? "<span class='e_day'>" + evt.day + "</span>" + " " : "";
  249. return "<small>" + day +
  250. "<span class='e_from'>" + evt.hour[0] + "</span>" + " - " +
  251. "<span class='e_to'>" + evt.hour[1] + "</span></small> " +
  252. "<span class='e_title'>" + " : " + evt.title + "</span> ";
  253. } else {
  254. return "";
  255. }
  256. };
  257. PROJECT.labOrder = function(lab){
  258. var events = "";
  259. for(var e = 0; e < lab.when.length; e++) {
  260. events += "<li>" + PROJECT.getHtmlDate(lab.when[e]) + "</li>";
  261. }
  262. if(events !== '') {
  263. events = "<small>Orari:</small>"+
  264. "<ul>" +
  265. events +
  266. "</ul>";
  267. }
  268. var li = "<li>"+
  269. "<p class='title'>" + lab.collettivo + "</p>"+
  270. "<p class='dshort'>" + lab.dshort + "</p>"+
  271. PROJECT.getHtmlA("Url: ", lab.page) +
  272. PROJECT.getHtmlA("Sito: ", lab.site) +
  273. PROJECT.getHtmlA("Email: ", lab.contatto, null, true) +
  274. PROJECT.getHtmlA("Social: ", lab.sn)+
  275. "<br>" +
  276. events +
  277. PROJECT.hr +
  278. "</li>";
  279. return li;
  280. };
  281. PROJECT.todayOrder = function(todayEvents, lab, day){
  282. for(var e = 0; e < lab.when.length; e++) {
  283. //Comparo in minuscolo così son sicuro di matchare in ogni modo in cui è scritto nel json
  284. if(lab.when[e].day.toLowerCase() == day) {
  285. todayEvents.push(lab.when[e]);
  286. }
  287. }
  288. };
  289. PROJECT.todayRender = function(todayEvents){
  290. var events="";
  291. todayEvents.sort(sortHours);
  292. for(var i = 0, len = todayEvents.length; i < len; i++) {
  293. var hr = i == len - 1 ? "" : PROJECT.hr;
  294. events += "<li>" +
  295. PROJECT.getHtmlDate(todayEvents[i], true) +
  296. hr +
  297. "</li>";
  298. }
  299. if(todayEvents.length === 0) {
  300. events = "<i>Oggi non sono previsti laboratori o assemblee.</i>";
  301. } else {
  302. events = "<p class='title'>OGGI: " + moment().format('DD/MM/YYYY') + "</p><ul>" + events + "</ul>";
  303. }
  304. return events;
  305. };
  306. PROJECT.dateRender = function(date) {
  307. date.sort(sortHours);
  308. var dates = "<p class='title'>" + date[0].day.toUpperCase() + "</p>";
  309. dates += "<ul>";
  310. for(var i = 0, len = date.length; i < len; i++) {
  311. var hr = i == len - 1 ? "" : PROJECT.hr;
  312. dates += "<li>" +
  313. PROJECT.getHtmlDate(date[i], true) +
  314. hr +
  315. "</li>";
  316. }
  317. dates += "</ul>";
  318. return dates;
  319. };
  320. PROJECT.dateOrder = function(dayEvents, lab) {
  321. for(var e = 0; e < lab.when.length; e++) {
  322. var day = lab.when[e].day.toLowerCase();
  323. if(! dayEvents[day])
  324. dayEvents[day] = [];
  325. dayEvents[day].push(lab.when[e]);
  326. }
  327. };
  328. PROJECT.render = function() {
  329. var day = moment().format("ddd").toLowerCase();
  330. //var day = "mar"; //DEBUG
  331. var lab = "", date = "", today = "";
  332. var todayEvents = [], dayEvents = [];
  333. for(var l = 0, labLen = PROJECT.labs.length; l < labLen; l++) {
  334. PROJECT.todayOrder(todayEvents, PROJECT.labs[l], day);
  335. lab += PROJECT.labOrder(PROJECT.labs[l]);
  336. PROJECT.dateOrder(dayEvents, PROJECT.labs[l]);
  337. }
  338. //------ TODAY ORDER
  339. today += PROJECT.todayRender(todayEvents);
  340. $('#today p').empty();
  341. $('#today p').html(today);
  342. //------ DAY ORDER
  343. dayEvents = sortDay(dayEvents);
  344. for(var k in dayEvents) {
  345. date += PROJECT.dateRender(dayEvents[k]);
  346. }
  347. $('#mydate p').empty();
  348. $('#mydate p').html(date);
  349. //------ LAB ORDER
  350. $('#project p').empty();
  351. $('#project p').html("<ul>" + lab + "</ul>");
  352. init = false;
  353. };