Stiglo je novo izdanje. Osvježi stranu.
Pravo na uvid u kod. Otvoren protokol omogućava nezavisne operatere i interoperabilnost. Manifest
Izvor
4d7883a894b3
- server.js
- lib/auth.js
- lib/build.js
- lib/cards.js
- lib/db.js
- lib/gradovi.js
- lib/icons.js
- lib/imena.js
- lib/jezik.js
- lib/kartapodaci.js
- lib/lekcije.js
- lib/md.js
- lib/mehanika.js
- lib/mreza.js
- lib/pages.js
- lib/registar.js
- lib/routes.js
- lib/schema2.js
- lib/views.js
- seed/content.mjs
- seed/seed.mjs
- public/app.js
- public/style.css
1 export const GRADOVI = [
2 {
3 "id": "ljubljana",
4 "ime": "Ljubljana",
5 "jed": "slo",
6 "lat": 46.05,
7 "lon": 14.51
8 },
9 {
10 "id": "maribor",
11 "ime": "Maribor",
12 "jed": "slo",
13 "lat": 46.55,
14 "lon": 15.65
15 },
16 {
17 "id": "celje",
18 "ime": "Celje",
19 "jed": "slo",
20 "lat": 46.24,
21 "lon": 15.27
22 },
23 {
24 "id": "kranj",
25 "ime": "Kranj",
26 "jed": "slo",
27 "lat": 46.24,
28 "lon": 14.36
29 },
30 {
31 "id": "koper",
32 "ime": "Koper",
33 "jed": "slo",
34 "lat": 45.55,
35 "lon": 13.73
36 },
37 {
38 "id": "novo-mesto",
39 "ime": "Novo Mesto",
40 "jed": "slo",
41 "lat": 45.8,
42 "lon": 15.17
43 },
44 {
45 "id": "nova-gorica",
46 "ime": "Nova Gorica",
47 "jed": "slo",
48 "lat": 45.96,
49 "lon": 13.65
50 },
51 {
52 "id": "murska-sobota",
53 "ime": "Murska Sobota",
54 "jed": "slo",
55 "lat": 46.66,
56 "lon": 16.17
57 },
58 {
59 "id": "zagreb",
60 "ime": "Zagreb",
61 "jed": "hrv",
62 "lat": 45.81,
63 "lon": 15.98
64 },
65 {
66 "id": "split",
67 "ime": "Split",
68 "jed": "hrv",
69 "lat": 43.51,
70 "lon": 16.44
71 },
72 {
73 "id": "rijeka",
74 "ime": "Rijeka",
75 "jed": "hrv",
76 "lat": 45.33,
77 "lon": 14.44
78 },
79 {
80 "id": "osijek",
81 "ime": "Osijek",
82 "jed": "hrv",
83 "lat": 45.55,
84 "lon": 18.69
85 },
86 {
87 "id": "zadar",
88 "ime": "Zadar",
89 "jed": "hrv",
90 "lat": 44.12,
91 "lon": 15.23
92 },
93 {
94 "id": "pula",
95 "ime": "Pula",
96 "jed": "hrv",
97 "lat": 44.87,
98 "lon": 13.85
99 },
100 {
101 "id": "dubrovnik",
102 "ime": "Dubrovnik",
103 "jed": "hrv",
104 "lat": 42.65,
105 "lon": 18.09
106 },
107 {
108 "id": "varazdin",
109 "ime": "Varaždin",
110 "jed": "hrv",
111 "lat": 46.31,
112 "lon": 16.34
113 },
114 {
115 "id": "sibenik",
116 "ime": "Šibenik",
117 "jed": "hrv",
118 "lat": 43.73,
119 "lon": 15.89
120 },
121 {
122 "id": "slavonski-brod",
123 "ime": "Slavonski Brod",
124 "jed": "hrv",
125 "lat": 45.16,
126 "lon": 18.02
127 },
128 {
129 "id": "karlovac",
130 "ime": "Karlovac",
131 "jed": "hrv",
132 "lat": 45.49,
133 "lon": 15.55
134 },
135 {
136 "id": "vukovar",
137 "ime": "Vukovar",
138 "jed": "hrv",
139 "lat": 45.35,
140 "lon": 19.0
141 },
142 {
143 "id": "sarajevo",
144 "ime": "Sarajevo",
145 "jed": "bih",
146 "lat": 43.86,
147 "lon": 18.41
148 },
149 {
150 "id": "banja-luka",
151 "ime": "Banja Luka",
152 "jed": "bih",
153 "lat": 44.77,
154 "lon": 17.19
155 },
156 {
157 "id": "tuzla",
158 "ime": "Tuzla",
159 "jed": "bih",
160 "lat": 44.54,
161 "lon": 18.68
162 },
163 {
164 "id": "mostar",
165 "ime": "Mostar",
166 "jed": "bih",
167 "lat": 43.34,
168 "lon": 17.81
169 },
170 {
171 "id": "zenica",
172 "ime": "Zenica",
173 "jed": "bih",
174 "lat": 44.2,
175 "lon": 17.91
176 },
177 {
178 "id": "bihac",
179 "ime": "Bihać",
180 "jed": "bih",
181 "lat": 44.82,
182 "lon": 15.87
183 },
184 {
185 "id": "doboj",
186 "ime": "Doboj",
187 "jed": "bih",
188 "lat": 44.73,
189 "lon": 18.09
190 },
191 {
192 "id": "travnik",
193 "ime": "Travnik",
194 "jed": "bih",
195 "lat": 44.23,
196 "lon": 17.66
197 },
198 {
199 "id": "trebinje",
200 "ime": "Trebinje",
201 "jed": "bih",
202 "lat": 42.71,
203 "lon": 18.34
204 },
205 {
206 "id": "brcko",
207 "ime": "Brčko",
208 "jed": "bih",
209 "lat": 44.87,
210 "lon": 18.81
211 },
212 {
213 "id": "podgorica",
214 "ime": "Podgorica",
215 "jed": "cg",
216 "lat": 42.44,
217 "lon": 19.26
218 },
219 {
220 "id": "niksic",
221 "ime": "Nikšić",
222 "jed": "cg",
223 "lat": 42.77,
224 "lon": 18.94
225 },
226 {
227 "id": "kotor",
228 "ime": "Kotor",
229 "jed": "cg",
230 "lat": 42.42,
231 "lon": 18.77
232 },
233 {
234 "id": "bar",
235 "ime": "Bar",
236 "jed": "cg",
237 "lat": 42.1,
238 "lon": 19.1
239 },
240 {
241 "id": "cetinje",
242 "ime": "Cetinje",
243 "jed": "cg",
244 "lat": 42.39,
245 "lon": 18.92
246 },
247 {
248 "id": "pljevlja",
249 "ime": "Pljevlja",
250 "jed": "cg",
251 "lat": 43.36,
252 "lon": 19.36
253 },
254 {
255 "id": "herceg-novi",
256 "ime": "Herceg Novi",
257 "jed": "cg",
258 "lat": 42.45,
259 "lon": 18.54
260 },
261 {
262 "id": "skopje",
263 "ime": "Skopje",
264 "jed": "mak",
265 "lat": 42.0,
266 "lon": 21.43
267 },
268 {
269 "id": "bitola",
270 "ime": "Bitola",
271 "jed": "mak",
272 "lat": 41.03,
273 "lon": 21.33
274 },
275 {
276 "id": "ohrid",
277 "ime": "Ohrid",
278 "jed": "mak",
279 "lat": 41.12,
280 "lon": 20.8
281 },
282 {
283 "id": "kumanovo",
284 "ime": "Kumanovo",
285 "jed": "mak",
286 "lat": 42.13,
287 "lon": 21.71
288 },
289 {
290 "id": "prilep",
291 "ime": "Prilep",
292 "jed": "mak",
293 "lat": 41.35,
294 "lon": 21.55
295 },
296 {
297 "id": "tetovo",
298 "ime": "Tetovo",
299 "jed": "mak",
300 "lat": 42.01,
301 "lon": 20.97
302 },
303 {
304 "id": "stip",
305 "ime": "Štip",
306 "jed": "mak",
307 "lat": 41.74,
308 "lon": 22.19
309 },
310 {
311 "id": "strumica",
312 "ime": "Strumica",
313 "jed": "mak",
314 "lat": 41.44,
315 "lon": 22.64
316 },
317 {
318 "id": "beograd",
319 "ime": "Beograd",
320 "jed": "srb",
321 "lat": 44.8,
322 "lon": 20.47
323 },
324 {
325 "id": "nis",
326 "ime": "Niš",
327 "jed": "srb",
328 "lat": 43.32,
329 "lon": 21.9
330 },
331 {
332 "id": "kragujevac",
333 "ime": "Kragujevac",
334 "jed": "srb",
335 "lat": 44.01,
336 "lon": 20.92
337 },
338 {
339 "id": "cacak",
340 "ime": "Čačak",
341 "jed": "srb",
342 "lat": 43.89,
343 "lon": 20.35
344 },
345 {
346 "id": "kraljevo",
347 "ime": "Kraljevo",
348 "jed": "srb",
349 "lat": 43.72,
350 "lon": 20.69
351 },
352 {
353 "id": "uzice",
354 "ime": "Užice",
355 "jed": "srb",
356 "lat": 43.86,
357 "lon": 19.84
358 },
359 {
360 "id": "valjevo",
361 "ime": "Valjevo",
362 "jed": "srb",
363 "lat": 44.27,
364 "lon": 19.89
365 },
366 {
367 "id": "leskovac",
368 "ime": "Leskovac",
369 "jed": "srb",
370 "lat": 43.0,
371 "lon": 21.95
372 },
373 {
374 "id": "novi-pazar",
375 "ime": "Novi Pazar",
376 "jed": "srb",
377 "lat": 43.14,
378 "lon": 20.52
379 },
380 {
381 "id": "krusevac",
382 "ime": "Kruševac",
383 "jed": "srb",
384 "lat": 43.58,
385 "lon": 21.33
386 },
387 {
388 "id": "sabac",
389 "ime": "Šabac",
390 "jed": "srb",
391 "lat": 44.75,
392 "lon": 19.69
393 },
394 {
395 "id": "smederevo",
396 "ime": "Smederevo",
397 "jed": "srb",
398 "lat": 44.66,
399 "lon": 20.93
400 },
401 {
402 "id": "zajecar",
403 "ime": "Zaječar",
404 "jed": "srb",
405 "lat": 43.9,
406 "lon": 22.28
407 },
408 {
409 "id": "vranje",
410 "ime": "Vranje",
411 "jed": "srb",
412 "lat": 42.55,
413 "lon": 21.9
414 },
415 {
416 "id": "bor",
417 "ime": "Bor",
418 "jed": "srb",
419 "lat": 44.07,
420 "lon": 22.1
421 },
422 {
423 "id": "novi-sad",
424 "ime": "Novi Sad",
425 "jed": "voj",
426 "lat": 45.25,
427 "lon": 19.85
428 },
429 {
430 "id": "subotica",
431 "ime": "Subotica",
432 "jed": "voj",
433 "lat": 46.1,
434 "lon": 19.67
435 },
436 {
437 "id": "zrenjanin",
438 "ime": "Zrenjanin",
439 "jed": "voj",
440 "lat": 45.38,
441 "lon": 20.39
442 },
443 {
444 "id": "pancevo",
445 "ime": "Pančevo",
446 "jed": "voj",
447 "lat": 44.87,
448 "lon": 20.64
449 },
450 {
451 "id": "sombor",
452 "ime": "Sombor",
453 "jed": "voj",
454 "lat": 45.77,
455 "lon": 19.11
456 },
457 {
458 "id": "kikinda",
459 "ime": "Kikinda",
460 "jed": "voj",
461 "lat": 45.83,
462 "lon": 20.47
463 },
464 {
465 "id": "sremska-mitrovica",
466 "ime": "Sremska Mitrovica",
467 "jed": "voj",
468 "lat": 44.98,
469 "lon": 19.61
470 },
471 {
472 "id": "vrsac",
473 "ime": "Vršac",
474 "jed": "voj",
475 "lat": 45.12,
476 "lon": 21.3
477 },
478 {
479 "id": "pristina",
480 "ime": "Priština",
481 "jed": "kos",
482 "lat": 42.66,
483 "lon": 21.17,
484 "alt": "Prishtina"
485 },
486 {
487 "id": "prizren",
488 "ime": "Prizren",
489 "jed": "kos",
490 "lat": 42.21,
491 "lon": 20.74
492 },
493 {
494 "id": "pec",
495 "ime": "Peć",
496 "jed": "kos",
497 "lat": 42.66,
498 "lon": 20.29,
499 "alt": "Peja"
500 },
501 {
502 "id": "mitrovica",
503 "ime": "Mitrovica",
504 "jed": "kos",
505 "lat": 42.89,
506 "lon": 20.87
507 },
508 {
509 "id": "djakovica",
510 "ime": "Đakovica",
511 "jed": "kos",
512 "lat": 42.38,
513 "lon": 20.43,
514 "alt": "Gjakova"
515 },
516 {
517 "id": "gnjilane",
518 "ime": "Gnjilane",
519 "jed": "kos",
520 "lat": 42.46,
521 "lon": 21.47,
522 "alt": "Gjilan"
523 },
524 {
525 "id": "bec",
526 "ime": "Beč",
527 "jed": "dij",
528 "slot": 0
529 },
530 {
531 "id": "berlin",
532 "ime": "Berlin",
533 "jed": "dij",
534 "slot": 1
535 },
536 {
537 "id": "minhen",
538 "ime": "Minhen",
539 "jed": "dij",
540 "slot": 2
541 },
542 {
543 "id": "frankfurt",
544 "ime": "Frankfurt",
545 "jed": "dij",
546 "slot": 3
547 },
548 {
549 "id": "stutgart",
550 "ime": "Štutgart",
551 "jed": "dij",
552 "slot": 4
553 },
554 {
555 "id": "cirih",
556 "ime": "Cirih",
557 "jed": "dij",
558 "slot": 5
559 },
560 {
561 "id": "pariz",
562 "ime": "Pariz",
563 "jed": "dij",
564 "slot": 6
565 },
566 {
567 "id": "london",
568 "ime": "London",
569 "jed": "dij",
570 "slot": 7
571 },
572 {
573 "id": "stokholm",
574 "ime": "Stokholm",
575 "jed": "dij",
576 "slot": 8
577 },
578 {
579 "id": "geteborg",
580 "ime": "Geteborg",
581 "jed": "dij",
582 "slot": 9
583 },
584 {
585 "id": "trst",
586 "ime": "Trst",
587 "jed": "dij",
588 "slot": 10
589 },
590 {
591 "id": "toronto",
592 "ime": "Toronto",
593 "jed": "dij",
594 "slot": 11
595 },
596 {
597 "id": "cikago",
598 "ime": "Čikago",
599 "jed": "dij",
600 "slot": 12
601 },
602 {
603 "id": "njujork",
604 "ime": "Njujork",
605 "jed": "dij",
606 "slot": 13
607 },
608 {
609 "id": "melburn",
610 "ime": "Melburn",
611 "jed": "dij",
612 "slot": 14
613 },
614 {
615 "id": "sidnej",
616 "ime": "Sidnej",
617 "jed": "dij",
618 "slot": 15
619 }
620 ];
621 export const GRAD = Object.fromEntries(GRADOVI.map(g=>[g.id,g]));
622 export const JEDINICE = {slo:"SR Slovenija",hrv:"SR Hrvatska",bih:"SR Bosna i Hercegovina",cg:"SR Crna Gora",mak:"SR Makedonija",srb:"SR Srbija",voj:"SAP Vojvodina",kos:"SAP Kosovo",dij:"Dijaspora"};
623 export const projekcija = (lon,lat) => [(lon-13.2)*.717*142+110,(46.95-lat)*142+110];
624 export function tacka(g) {return g.jed!=="dij"?projekcija(g.lon,g.lat):g.slot<8?[120+g.slot*130,45]:[120+(15-g.slot)*130,1000];}
625 export function unutra(p,ring){let yes=false;for(let i=0,j=ring.length-1;i<ring.length;j=i++){const a=ring[i],b=ring[j];if(((a[1]>p[1])!==(b[1]>p[1]))&&(p[0]<(b[0]-a[0])*(p[1]-a[1])/(b[1]-a[1])+a[0]))yes=!yes;}return yes;}
626