Automatic reformatting using `prettier`

merge-requests/31/head
Sebastian Delmont 2020-10-31 10:01:03 -04:00
rodzic e29d693de3
commit 6b426cdb3b
43 zmienionych plików z 393739 dodań i 34517 usunięć

Wyświetl plik

@ -12,6 +12,7 @@ but for development work we recommend the SDK flavor because it provides access
among other things.
### Code Formatting
We use `prettier` to enforce code formatting rules, and we follow
the [JavaScript Standard Style](https://standardjs.com/)
@ -23,7 +24,6 @@ all files to match the standard.
If you want to know more about why these tools are useful,
[watch this talk](https://www.youtube.com/watch?v=kuHfMw8j4xk)
# Developer Environment Setup
## Developing on Windows

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Wyświetl plik

@ -1,71 +1,71 @@
{
"AL": "Alabama",
"AK": "Alaska",
"ALL": "All CQ Prefixes",
"AZ": "Arizona",
"AR": "Arkansas",
"CO-AF": "Africa",
"CO-AS": "Asia",
"CO-EU": "Europe",
"CO-NA": "North America",
"CO-SA": "South America",
"CO-OC": "Oceania",
"CN-AS": "American Samoa",
"CA": "California",
"CO": "Colorado",
"CT": "Connecticut",
"DC": "D.C.",
"DE": "Delaware",
"DX": "Distance",
"FL": "Florida",
"CN-GU": "Guam",
"GA": "Georgia",
"HI": "Hawaii",
"ID": "Idaho",
"IL": "Illinois",
"IN": "Indiana",
"IA": "Iowa",
"KS": "Kansas",
"LA": "Louisiana",
"KY": "Kentucky",
"MD": "Maryland",
"ME": "Maine",
"MA": "Massachusetts",
"MI": "Michigan",
"MN": "Minnesota",
"MS": "Mississippi",
"MO": "Missouri",
"MT": "Montana",
"CN-MP": "Northern Marianas",
"NE": "Nebraska",
"NV": "Nevada",
"NH": "New Hampshire",
"NJ": "New Jersey",
"NM": "New Mexico",
"NY": "New York",
"NC": "North Carolina",
"ND": "North Dakota",
"OH": "Ohio",
"OK": "Oklahoma",
"OR": "Oregon",
"PA": "Pennsylvania",
"CN-PR": "Puerto Rico",
"RI": "Rhode Is.",
"SC": "South Carolina",
"SD": "South Dakota",
"TN": "Tennessee",
"TX": "Texas",
"AA": "US Forces",
"AE": "US Forces Overseas",
"AP": "US Forces Pacific",
"CN-UM": "US Outlying Is.",
"CN-VI": "Virgin Is.",
"US": "United States",
"UT": "Utah",
"VT": "Vermont",
"VA": "Virginia",
"WA": "Washington",
"WV": "West Virginia",
"WI": "Wisconsin",
"WY": "Wyoming"
}
"AL": "Alabama",
"AK": "Alaska",
"ALL": "All CQ Prefixes",
"AZ": "Arizona",
"AR": "Arkansas",
"CO-AF": "Africa",
"CO-AS": "Asia",
"CO-EU": "Europe",
"CO-NA": "North America",
"CO-SA": "South America",
"CO-OC": "Oceania",
"CN-AS": "American Samoa",
"CA": "California",
"CO": "Colorado",
"CT": "Connecticut",
"DC": "D.C.",
"DE": "Delaware",
"DX": "Distance",
"FL": "Florida",
"CN-GU": "Guam",
"GA": "Georgia",
"HI": "Hawaii",
"ID": "Idaho",
"IL": "Illinois",
"IN": "Indiana",
"IA": "Iowa",
"KS": "Kansas",
"LA": "Louisiana",
"KY": "Kentucky",
"MD": "Maryland",
"ME": "Maine",
"MA": "Massachusetts",
"MI": "Michigan",
"MN": "Minnesota",
"MS": "Mississippi",
"MO": "Missouri",
"MT": "Montana",
"CN-MP": "Northern Marianas",
"NE": "Nebraska",
"NV": "Nevada",
"NH": "New Hampshire",
"NJ": "New Jersey",
"NM": "New Mexico",
"NY": "New York",
"NC": "North Carolina",
"ND": "North Dakota",
"OH": "Ohio",
"OK": "Oklahoma",
"OR": "Oregon",
"PA": "Pennsylvania",
"CN-PR": "Puerto Rico",
"RI": "Rhode Is.",
"SC": "South Carolina",
"SD": "South Dakota",
"TN": "Tennessee",
"TX": "Texas",
"AA": "US Forces",
"AE": "US Forces Overseas",
"AP": "US Forces Pacific",
"CN-UM": "US Outlying Is.",
"CN-VI": "Virgin Is.",
"US": "United States",
"UT": "Utah",
"VT": "Vermont",
"VA": "Virginia",
"WA": "Washington",
"WV": "West Virginia",
"WI": "Wisconsin",
"WY": "Wyoming"
}

Wyświetl plik

@ -1,401 +1,401 @@
{
"1":["Canada","CA","ca.png"],
"2":["Abu Ail Island","XX","xx.png"],
"3":["Afghanistan","AF","af.png"],
"4":["Agalega and St Brandon","MP","mp.png"],
"5":["Aland Islands","AX","ax.png"],
"6":["Alaska","US","us.png"],
"7":["Albania","AL","al.png"],
"8":["Aldabra","XX","xx.png"],
"9":["American Samoa","AS","as.png"],
"10":["Amsterdam and St Paul Islands","FR","fr.png"],
"11":["Andaman and Nicobar Islands","IN","in.png"],
"12":["Anguilla","AI","ai.png"],
"13":["Antarctica","AQ","aq.png"],
"14":["Armenia","AM","am.png"],
"15":["Asiatic Russia","RU","ru.png"],
"16":["Auckland, Campbell Islands","NZ","nz.png"],
"17":["Aves Island","VE","ve.png"],
"18":["Azerbaijan","AZ","az.png"],
"19":["Bajo Neuvo","XX","xx.png"],
"20":["Baker and Howland Islands","US","us.png"],
"21":["Balearic Islands","ES","es.png"],
"22":["Palau","PW","pw.png"],
"23":["Blenheim Reef","XX","xx.png"],
"24":["Bouvet Island","NO","no.png"],
"25":["British North Borneo","XX","xx.png"],
"26":["British Somaliland","XX","xx.png"],
"27":["Belarus","BY","by.png"],
"28":["Canal Zone","XX","xx.png"],
"29":["Canary Islands","ES","es.png"],
"30":["Celebe & Molucca Is.","XX","xx.png"],
"31":["Central Kiribati","KI","ki.png"],
"32":["Ceuta and Melilla","ES","es.png"],
"33":["Chagos Islands","GB","gb.png"],
"34":["Chatham Islands","NZ","nz.png"],
"35":["Christmas Island","CX","cx.png"],
"36":["Clipperton Island","FR","fr.png"],
"37":["Cocos Island","CR","cr.png"],
"38":["Cocos-Keeling Islands","CC","cc.png"],
"40":["Crete","GR","gr.png"],
"41":["Crozet Island","FR","fr.png"],
"43":["Desecheo Island","PR","pr.png"],
"44":["Desroches","XX","xx.png"],
"45":["Dodecanese","GR","gr.png"],
"46":["East Malaysia","MY","my.png"],
"47":["Easter Island","CL","cl.png"],
"48":["East Kiribati","KI","ki.png"],
"49":["Equatorial Guinea","GQ","gq.png"],
"50":["Mexico","MX","mx.png"],
"51":["Eritrea","ER","er.png"],
"52":["Estonia","EE","ee.png"],
"53":["Ethiopia","ET","et.png"],
"54":["Russia","RU","ru.png"],
"55":["Farquhar","XX","xx.png"],
"56":["Fernando de Noronha","BR","br.png"],
"57":["French Equatorial Africa","XX","xx.png"],
"58":["French Indo-China","XX","xx.png"],
"59":["French West Africa","XX","xx.png"],
"60":["Bahamas","BS","bs.png"],
"61":["Franz Josef Land","RU","ru.png"],
"62":["Barbados","BB","bb.png"],
"63":["French Guiana","GF","gf.png"],
"64":["Bermuda","BM","bm.png"],
"65":["British Virgin Islands","VG","vg.png"],
"66":["Belize","BZ","bz.png"],
"67":["French India","XX","xx.png"],
"68":["Kuwait/Saudi Arabia Neutral Zone","XX","xx.png"],
"69":["Cayman Islands","KY","ky.png"],
"70":["Cuba","CU","cu.png"],
"71":["Galapagos Islands","EC","ec.png"],
"72":["Dominican Republic","DO","do.png"],
"74":["El Salvador","SV","sv.png"],
"75":["Georgia","GE","ge.png"],
"76":["Guatemala","GT","gt.png"],
"77":["Grenada","GD","gd.png"],
"78":["Haiti","HT","ht.png"],
"79":["Guadeloupe","GP","gp.png"],
"80":["Honduras","HN","hn.png"],
"81":["Germany","XX","xx.png"],
"82":["Jamaica","JM","jm.png"],
"84":["Martinique","MQ","mq.png"],
"85":["Netherlands Antillies","AN","an.png"],
"86":["Nicaragua","NI","ni.png"],
"88":["Panama","PA","pa.png"],
"89":["Turks and Caicos Islands","TC","tc.png"],
"90":["Trinidad and Tobago","TT","tt.png"],
"91":["Aruba","AW","aw.png"],
"94":["Antigua and Barbuda","AG","ag.png"],
"95":["Dominica","DM","dm.png"],
"96":["Montserrat","MS","ms.png"],
"97":["St Lucia","LC","lc.png"],
"98":["St Vincent","VC","vc.png"],
"99":["Glorioso Islands","FR","fr.png"],
"100":["Argentina","AR","ar.png"],
"101":["Goa","XX","xx.png"],
"102":["Gold Coast, Togoland","XX","xx.png"],
"103":["Guam","GU","gu.png"],
"104":["Bolivia","BO","bo.png"],
"105":["Guantanamo Bay","US","us.png"],
"106":["Guernsey","GG","gg.png"],
"107":["Guinea","GN","gn.png"],
"108":["Brazil","BR","br.png"],
"109":["Guinea-Bissau","GW","gw.png"],
"110":["Hawaii","US","us.png"],
"111":["Heard Islands","HM","hm.png"],
"112":["Chile","CL","cl.png"],
"113":["Ifni","XX","xx.png"],
"114":["Isle of Man","IM","im.png"],
"115":["Italian Somaliland","XX","xx.png"],
"116":["Colombia","CO","co.png"],
"117":["ITU Geneva","CH","ch.png"],
"118":["Jan Mayen Island","NO","no.png"],
"119":["Java","XX","xx.png"],
"120":["Ecuador","EC","ec.png"],
"122":["Jersey","JE","je.png"],
"123":["Johnston Island","US","us.png"],
"124":["Juan de Nova Island","FR","fr.png"],
"125":["Juan Fernandez Islands","CL","cl.png"],
"126":["Kaliningrad","RU","ru.png"],
"127":["Kamaran Is.","XX","xx.png"],
"129":["Guyana","GY","gy.png"],
"130":["Kazakhstan","KZ","kz.png"],
"131":["Kerguelen Islands","FR","fr.png"],
"132":["Paraguay","PY","py.png"],
"133":["Kermadec Islands","NZ","nz.png"],
"134":["Kingman Reef","US","us.png"],
"135":["Kyrgyzstan","KG","kg.png"],
"136":["Peru","PE","pe.png"],
"137":["South Korea","KR","kr.png"],
"138":["Kure Atoll","US","us.png"],
"140":["Suriname","SR","sr.png"],
"141":["Falkland Islands","FK","fk.png"],
"142":["Lakshadweep Islands","IN","in.png"],
"143":["Laos","LA","la.png"],
"144":["Uruguay","UY","uy.png"],
"145":["Latvia","LV","lv.png"],
"146":["Lithuania","LT","lt.png"],
"147":["Lord Howe Island","AU","au.png"],
"148":["Venezuela","VE","ve.png"],
"149":["Azore","PT","pt.png"],
"150":["Australia","AU","au.png"],
"151":["Maly Vysotsky Island","RU","ru.png"],
"152":["Macau","MO","mo.png"],
"153":["Macquarie Island","AU","au.png"],
"154":["Yemen Arab Rep.","XX","xx.png"],
"155":["Malaya","XX","xx.png"],
"157":["Nauru","NR","nr.png"],
"158":["Vanuatu","VU","vu.png"],
"159":["Maldives","MV","mv.png"],
"160":["Tonga","TO","to.png"],
"161":["Malpelo Island","CO","co.png"],
"162":["New Caledonia","NC","nc.png"],
"163":["Papua New Guinea","PG","pg.png"],
"164":["Manchuria","XX","xx.png"],
"165":["Mauritius","MU","mu.png"],
"166":["Mariana Islands","US","us.png"],
"167":["Market Reef","AX","ax.png"],
"168":["Marshall Islands","MH","mh.png"],
"169":["Mayotte","YT","yt.png"],
"170":["New Zealand","NZ","nz.png"],
"171":["Mellish Reef","AU","au.png"],
"172":["Pitcairn Islands","PN","pn.png"],
"173":["Micronesia","FM","fm.png"],
"174":["Midway Islands","US","us.png"],
"175":["French Polynesia","PF","pf.png"],
"176":["Fiji","FJ","fj.png"],
"177":["Minami Torishima","JP","jp.png"],
"178":["Minerva Reef","XX","xx.png"],
"179":["Moldova","MD","md.png"],
"180":["Mt Athos","GR","gr.png"],
"181":["Mozambique","MZ","mz.png"],
"182":["Navassa Island","US","us.png"],
"183":["Netherlands Borneo","XX","xx.png"],
"184":["Netherlands New Guinea","XX","xx.png"],
"185":["Solomon Islands","SB","sb.png"],
"186":["Newfoundland, Labrador","XX","xx.png"],
"187":["Niger","NE","ne.png"],
"188":["Niue","NU","nu.png"],
"189":["Norfolk Island","NF","nf.png"],
"190":["Samoa","WS","ws.png"],
"191":["North Cook Islands","NZ","nz.png"],
"192":["Ogasawara","JP","jp.png"],
"193":["Okinawa (Ryukyu Is.)","XX","xx.png"],
"194":["Okino Tori-shima","XX","xx.png"],
"195":["Annobon Island","GQ","gq.png"],
"196":["Palestine","XX","xx.png"],
"197":["Palmyra, Jarvis Island","US","us.png"],
"198":["Papua Territory","XX","xx.png"],
"199":["Peter I Island","NO","no.png"],
"200":["Portuguese Timor","XX","xx.png"],
"201":["Prince Edward and Marion Island","ZA","za.png"],
"202":["Puerto Rico","PR","pr.png"],
"203":["Andorra","AD","ad.png"],
"204":["Revillagigedo Islands","MX","mx.png"],
"205":["Ascension Island","KY","ky.png"],
"206":["Austria","AT","at.png"],
"207":["Rodriguez Island","MU","mu.png"],
"208":["Ruanda-Urundi","XX","xx.png"],
"209":["Belgium","BE","be.png"],
"210":["Saar","XX","xx.png"],
"211":["Sable Island","CA","ca.png"],
"212":["Bulgaria","BG","bg.png"],
"213":["St Martin","FR","fr.png"],
"214":["Corsica","FR","fr.png"],
"215":["Cyprus","CY","cy.png"],
"216":["San Andres and Providencia","CO","co.png"],
"217":["San Felix","CL","cl.png"],
"218":["Czechoslovakia","XX","xx.png"],
"219":["Sao Tome & Principe","ST","st.png"],
"221":["Denmark","DK","dk.png"],
"222":["Faroe Islands","FO","fo.png"],
"223":["England","GB","gb.png"],
"224":["Finland","FI","fi.png"],
"225":["Sardinia","IT","it.png"],
"226":["Saudi Arabia/Iraq Neutral Zone","XX","xx.png"],
"227":["France","FR","fr.png"],
"228":["Serrana Bank & Roncador Cay","XX","xx.png"],
"229":["German Democratic Republic","XX","xx.png"],
"230":["Germany","DE","de.png"],
"231":["Sikkim","XX","xx.png"],
"232":["Somalia","SO","so.png"],
"233":["Gibraltar","GI","gi.png"],
"234":["South Cook Islands","GS","gs.png"],
"235":["South Georgia Islands","GS","gs.png"],
"236":["Greece","GR","gr.png"],
"237":["Greenland","GL","gl.png"],
"238":["South Orkney Islands","GB","gb.png"],
"239":["Hungary","HU","hu.png"],
"240":["South Sandwich Islands","GS","gs.png"],
"241":["South Shetland Island","GB","gb.png"],
"242":["Iceland","IS","is.png"],
"243":["People's Democratic Rep. of Yemen","XX","xx.png"],
"244":["Southern Sudan","XX","xx.png"],
"245":["Ireland","IE","ie.png"],
"246":["SMO Malta","MT","mt.png"],
"247":["Spratly Islands","PH","ph.png"],
"248":["Italy","IT","it.png"],
"249":["St Kitts and Nevis","KN","kn.png"],
"250":["St Helena Island","SH","sh.png"],
"251":["Liechtenstein","LI","li.png"],
"252":["St Paul Island","CA","ca.png"],
"253":["St Peter & St Paul Rocks","BR","br.png"],
"254":["Luxembourg","LU","lu.png"],
"255":["St. Maarten, Saba, St. Eustatius","XX","xx.png"],
"256":["Madeira Island","PT","pt.png"],
"257":["Malta","MT","mt.png"],
"258":["Sumatra","XX","xx.png"],
"259":["Svalbard","NO","no.png"],
"260":["Monaco","MC","mc.png"],
"261":["Swan Is.","XX","xx.png"],
"262":["Tajikistan","TJ","tj.png"],
"263":["Netherlands","NL","nl.png"],
"264":["Tangier","XX","xx.png"],
"265":["Northern Ireland","IE","ie.png"],
"266":["Norway","NO","no.png"],
"267":["Territory of New Guinea","XX","xx.png"],
"268":["Tibet","XX","xx.png"],
"269":["Poland","PL","pl.png"],
"270":["Tokelau Islands","TK","tk.png"],
"271":["Trieste","XX","xx.png"],
"272":["Portugal","PT","pt.png"],
"273":["Trindade and Martim Vaz Island","BR","br.png"],
"274":["Tristan da Cunha and Gough Island","GB","gb.png"],
"275":["Romania","RO","ro.png"],
"276":["Tromelin Island","FR","fr.png"],
"277":["St Pierre & Miquelon","PM","pm.png"],
"278":["San Marino","SM","sm.png"],
"279":["Scotland","GB","gb.png"],
"280":["Turkmenistan","TM","tm.png"],
"281":["Spain","ES","es.png"],
"282":["Tuvalu","TV","tv.png"],
"283":["Cyprus SBA","CY","cy.png"],
"284":["Sweden","SE","se.png"],
"285":["US Virgin Islands","VI","vi.png"],
"286":["Uganda","UG","ug.png"],
"287":["Switzerland","CH","ch.png"],
"288":["Ukraine","UA","ua.png"],
"289":["United Nations","UN","un.png"],
"291":["United States","US","us.png"],
"292":["Uzbekistan","UZ","uz.png"],
"293":["Vietnam","VN","vn.png"],
"294":["Wales","GB","gb.png"],
"295":["Vatican","VA","va.png"],
"296":["Serbia","RS","rs.png"],
"297":["Wake Island","US","us.png"],
"298":["Wallis and Futuna Islands","WF","wf.png"],
"299":["West Malaysia","MY","my.png"],
"301":["Kiribati","KI","ki.png"],
"302":["Western Sahara","EH","eh.png"],
"303":["Willis Island","AU","au.png"],
"304":["Bahrain","BH","bh.png"],
"305":["Bangladesh","BD","bd.png"],
"306":["Bhutan","BT","bt.png"],
"307":["Zanzibar","XX","xx.png"],
"308":["Costa Rica","CR","cr.png"],
"309":["Myanmar (Burma)","MM","mm.png"],
"312":["Cambodia","KH","kh.png"],
"315":["Sri Lanka","LK","lk.png"],
"318":["China","CN","cn.png"],
"321":["Hong Kong","HK","hk.png"],
"324":["India","IN","in.png"],
"327":["Indonesia","ID","id.png"],
"330":["Iran","IR","ir.png"],
"333":["Iraq","IQ","iq.png"],
"336":["Israel","IL","il.png"],
"339":["Japan","JP","jp.png"],
"342":["Jordan","JO","jo.png"],
"344":["North Korea","KP","kp.png"],
"345":["Brunei","BN","bn.png"],
"348":["Kuwait","KW","kw.png"],
"354":["Lebanon","LB","lb.png"],
"363":["Mongolia","MN","mn.png"],
"369":["Nepal","NP","np.png"],
"370":["Oman","OM","om.png"],
"372":["Pakistan","PK","pk.png"],
"375":["Philippines","PH","ph.png"],
"376":["Qatar","QA","qa.png"],
"378":["Saudi Arabia","SA","sa.png"],
"379":["Seychelles","SC","sc.png"],
"381":["Singapore","SG","sg.png"],
"382":["Djibouti","DJ","dj.png"],
"384":["Syria","SY","sy.png"],
"386":["Taiwan","TW","tw.png"],
"387":["Thailand","TH","th.png"],
"390":["Turkey","TR","tr.png"],
"391":["United Arab Emirates","AE","ae.png"],
"400":["Algeria","DZ","dz.png"],
"401":["Angola","AO","ao.png"],
"402":["Botswana","BW","bw.png"],
"404":["Burundi","BI","bi.png"],
"406":["Cameroon","CM","cm.png"],
"408":["Central African Republic","CF","cf.png"],
"409":["Cape Verde","CV","cv.png"],
"410":["Chad","TD","td.png"],
"411":["Comoros","KM","km.png"],
"412":["Congo","CG","cg.png"],
"414":["Congo, Dem. Republic of","CD","cd.png"],
"416":["Benin","BJ","bj.png"],
"420":["Gabon","GA","ga.png"],
"422":["The Gambia","GM","gm.png"],
"424":["Ghana","GH","gh.png"],
"428":["Ivory Coast","CI","ci.png"],
"430":["Kenya","KE","ke.png"],
"432":["Lesotho","LS","ls.png"],
"434":["Liberia","LR","lr.png"],
"436":["Libya","LY","ly.png"],
"438":["Madagascar","MG","mg.png"],
"440":["Malawi","MW","mw.png"],
"442":["Mali","ML","ml.png"],
"444":["Mauritania","MR","mr.png"],
"446":["Morocco","MA","ma.png"],
"450":["Nigeria","NG","ng.png"],
"452":["Zimbabwe","ZW","zw.png"],
"453":["Reunion","RE","re.png"],
"454":["Rwanda","RW","rw.png"],
"456":["Senegal","SN","sn.png"],
"458":["Sierra Leone","SL","sl.png"],
"460":["Rotuma","FJ","fj.png"],
"462":["South Africa","ZA","za.png"],
"464":["Namibia","NA","na.png"],
"466":["Sudan","SD","sd.png"],
"468":["Swaziland","SZ","sz.png"],
"470":["Tanzania","TZ","tz.png"],
"474":["Tunisia","TN","tn.png"],
"478":["Egypt","EG","eg.png"],
"480":["Burkina Faso","BF","bf.png"],
"482":["Zambia","ZM","zm.png"],
"483":["Togo","TG","tg.png"],
"488":["Walvis Bay","XX","xx.png"],
"489":["Conway Reef","FJ","fj.png"],
"490":["Banaba Island","KI","ki.png"],
"492":["Yemen","YE","ye.png"],
"493":["Penguin Is.","XX","xx.png"],
"497":["Croatia","HR","hr.png"],
"499":["Slovenia","SI","si.png"],
"501":["Bosnia and Herzegovina","BA","ba.png"],
"502":["Macedonia","MK","mk.png"],
"503":["Czech Republic","CZ","cz.png"],
"504":["Slovak Republic","SK","sk.png"],
"505":["Pratas Island","TW","tw.png"],
"506":["Scarborough Reef","PH","ph.png"],
"507":["Temotu","SB","sb.png"],
"508":["Austral Islands, Tubuai","PF","pf.png"],
"509":["Marquesas Islands","FR","fr.png"],
"510":["Palestine","PS","ps.png"],
"511":["Timor Leste","TL","tl.png"],
"512":["Chesterfield Islands","GB","gb.png"],
"513":["Ducie Island","PN","pn.png"],
"514":["Montenegro","ME","me.png"],
"515":["Swains Island","US","us.png"],
"516":["St. Barthelemy","FR","fr.png"],
"517":["Curacao","CW","cw.png"],
"518":["St. Maarten","SX","sx.png"],
"519":["Saba, St Eustatius","AN","an.png"],
"520":["Bonaire","NL","nl.png"],
"521":["South Sudan","SS","ss.png"],
"522":["Republic of Kosovo","XX","xx.png"],
"901":["Northern Cyprus","XX","xx.png"],
"1378":["Saudi Arabia/Iraq Neutral Zone","SA","sa.png"],
"1502":["Republic of Kosovo (Non-DXCC)","XX","xx.png"]
}
"1": ["Canada", "CA", "ca.png"],
"2": ["Abu Ail Island", "XX", "xx.png"],
"3": ["Afghanistan", "AF", "af.png"],
"4": ["Agalega and St Brandon", "MP", "mp.png"],
"5": ["Aland Islands", "AX", "ax.png"],
"6": ["Alaska", "US", "us.png"],
"7": ["Albania", "AL", "al.png"],
"8": ["Aldabra", "XX", "xx.png"],
"9": ["American Samoa", "AS", "as.png"],
"10": ["Amsterdam and St Paul Islands", "FR", "fr.png"],
"11": ["Andaman and Nicobar Islands", "IN", "in.png"],
"12": ["Anguilla", "AI", "ai.png"],
"13": ["Antarctica", "AQ", "aq.png"],
"14": ["Armenia", "AM", "am.png"],
"15": ["Asiatic Russia", "RU", "ru.png"],
"16": ["Auckland, Campbell Islands", "NZ", "nz.png"],
"17": ["Aves Island", "VE", "ve.png"],
"18": ["Azerbaijan", "AZ", "az.png"],
"19": ["Bajo Neuvo", "XX", "xx.png"],
"20": ["Baker and Howland Islands", "US", "us.png"],
"21": ["Balearic Islands", "ES", "es.png"],
"22": ["Palau", "PW", "pw.png"],
"23": ["Blenheim Reef", "XX", "xx.png"],
"24": ["Bouvet Island", "NO", "no.png"],
"25": ["British North Borneo", "XX", "xx.png"],
"26": ["British Somaliland", "XX", "xx.png"],
"27": ["Belarus", "BY", "by.png"],
"28": ["Canal Zone", "XX", "xx.png"],
"29": ["Canary Islands", "ES", "es.png"],
"30": ["Celebe & Molucca Is.", "XX", "xx.png"],
"31": ["Central Kiribati", "KI", "ki.png"],
"32": ["Ceuta and Melilla", "ES", "es.png"],
"33": ["Chagos Islands", "GB", "gb.png"],
"34": ["Chatham Islands", "NZ", "nz.png"],
"35": ["Christmas Island", "CX", "cx.png"],
"36": ["Clipperton Island", "FR", "fr.png"],
"37": ["Cocos Island", "CR", "cr.png"],
"38": ["Cocos-Keeling Islands", "CC", "cc.png"],
"40": ["Crete", "GR", "gr.png"],
"41": ["Crozet Island", "FR", "fr.png"],
"43": ["Desecheo Island", "PR", "pr.png"],
"44": ["Desroches", "XX", "xx.png"],
"45": ["Dodecanese", "GR", "gr.png"],
"46": ["East Malaysia", "MY", "my.png"],
"47": ["Easter Island", "CL", "cl.png"],
"48": ["East Kiribati", "KI", "ki.png"],
"49": ["Equatorial Guinea", "GQ", "gq.png"],
"50": ["Mexico", "MX", "mx.png"],
"51": ["Eritrea", "ER", "er.png"],
"52": ["Estonia", "EE", "ee.png"],
"53": ["Ethiopia", "ET", "et.png"],
"54": ["Russia", "RU", "ru.png"],
"55": ["Farquhar", "XX", "xx.png"],
"56": ["Fernando de Noronha", "BR", "br.png"],
"57": ["French Equatorial Africa", "XX", "xx.png"],
"58": ["French Indo-China", "XX", "xx.png"],
"59": ["French West Africa", "XX", "xx.png"],
"60": ["Bahamas", "BS", "bs.png"],
"61": ["Franz Josef Land", "RU", "ru.png"],
"62": ["Barbados", "BB", "bb.png"],
"63": ["French Guiana", "GF", "gf.png"],
"64": ["Bermuda", "BM", "bm.png"],
"65": ["British Virgin Islands", "VG", "vg.png"],
"66": ["Belize", "BZ", "bz.png"],
"67": ["French India", "XX", "xx.png"],
"68": ["Kuwait/Saudi Arabia Neutral Zone", "XX", "xx.png"],
"69": ["Cayman Islands", "KY", "ky.png"],
"70": ["Cuba", "CU", "cu.png"],
"71": ["Galapagos Islands", "EC", "ec.png"],
"72": ["Dominican Republic", "DO", "do.png"],
"74": ["El Salvador", "SV", "sv.png"],
"75": ["Georgia", "GE", "ge.png"],
"76": ["Guatemala", "GT", "gt.png"],
"77": ["Grenada", "GD", "gd.png"],
"78": ["Haiti", "HT", "ht.png"],
"79": ["Guadeloupe", "GP", "gp.png"],
"80": ["Honduras", "HN", "hn.png"],
"81": ["Germany", "XX", "xx.png"],
"82": ["Jamaica", "JM", "jm.png"],
"84": ["Martinique", "MQ", "mq.png"],
"85": ["Netherlands Antillies", "AN", "an.png"],
"86": ["Nicaragua", "NI", "ni.png"],
"88": ["Panama", "PA", "pa.png"],
"89": ["Turks and Caicos Islands", "TC", "tc.png"],
"90": ["Trinidad and Tobago", "TT", "tt.png"],
"91": ["Aruba", "AW", "aw.png"],
"94": ["Antigua and Barbuda", "AG", "ag.png"],
"95": ["Dominica", "DM", "dm.png"],
"96": ["Montserrat", "MS", "ms.png"],
"97": ["St Lucia", "LC", "lc.png"],
"98": ["St Vincent", "VC", "vc.png"],
"99": ["Glorioso Islands", "FR", "fr.png"],
"100": ["Argentina", "AR", "ar.png"],
"101": ["Goa", "XX", "xx.png"],
"102": ["Gold Coast, Togoland", "XX", "xx.png"],
"103": ["Guam", "GU", "gu.png"],
"104": ["Bolivia", "BO", "bo.png"],
"105": ["Guantanamo Bay", "US", "us.png"],
"106": ["Guernsey", "GG", "gg.png"],
"107": ["Guinea", "GN", "gn.png"],
"108": ["Brazil", "BR", "br.png"],
"109": ["Guinea-Bissau", "GW", "gw.png"],
"110": ["Hawaii", "US", "us.png"],
"111": ["Heard Islands", "HM", "hm.png"],
"112": ["Chile", "CL", "cl.png"],
"113": ["Ifni", "XX", "xx.png"],
"114": ["Isle of Man", "IM", "im.png"],
"115": ["Italian Somaliland", "XX", "xx.png"],
"116": ["Colombia", "CO", "co.png"],
"117": ["ITU Geneva", "CH", "ch.png"],
"118": ["Jan Mayen Island", "NO", "no.png"],
"119": ["Java", "XX", "xx.png"],
"120": ["Ecuador", "EC", "ec.png"],
"122": ["Jersey", "JE", "je.png"],
"123": ["Johnston Island", "US", "us.png"],
"124": ["Juan de Nova Island", "FR", "fr.png"],
"125": ["Juan Fernandez Islands", "CL", "cl.png"],
"126": ["Kaliningrad", "RU", "ru.png"],
"127": ["Kamaran Is.", "XX", "xx.png"],
"129": ["Guyana", "GY", "gy.png"],
"130": ["Kazakhstan", "KZ", "kz.png"],
"131": ["Kerguelen Islands", "FR", "fr.png"],
"132": ["Paraguay", "PY", "py.png"],
"133": ["Kermadec Islands", "NZ", "nz.png"],
"134": ["Kingman Reef", "US", "us.png"],
"135": ["Kyrgyzstan", "KG", "kg.png"],
"136": ["Peru", "PE", "pe.png"],
"137": ["South Korea", "KR", "kr.png"],
"138": ["Kure Atoll", "US", "us.png"],
"140": ["Suriname", "SR", "sr.png"],
"141": ["Falkland Islands", "FK", "fk.png"],
"142": ["Lakshadweep Islands", "IN", "in.png"],
"143": ["Laos", "LA", "la.png"],
"144": ["Uruguay", "UY", "uy.png"],
"145": ["Latvia", "LV", "lv.png"],
"146": ["Lithuania", "LT", "lt.png"],
"147": ["Lord Howe Island", "AU", "au.png"],
"148": ["Venezuela", "VE", "ve.png"],
"149": ["Azore", "PT", "pt.png"],
"150": ["Australia", "AU", "au.png"],
"151": ["Maly Vysotsky Island", "RU", "ru.png"],
"152": ["Macau", "MO", "mo.png"],
"153": ["Macquarie Island", "AU", "au.png"],
"154": ["Yemen Arab Rep.", "XX", "xx.png"],
"155": ["Malaya", "XX", "xx.png"],
"157": ["Nauru", "NR", "nr.png"],
"158": ["Vanuatu", "VU", "vu.png"],
"159": ["Maldives", "MV", "mv.png"],
"160": ["Tonga", "TO", "to.png"],
"161": ["Malpelo Island", "CO", "co.png"],
"162": ["New Caledonia", "NC", "nc.png"],
"163": ["Papua New Guinea", "PG", "pg.png"],
"164": ["Manchuria", "XX", "xx.png"],
"165": ["Mauritius", "MU", "mu.png"],
"166": ["Mariana Islands", "US", "us.png"],
"167": ["Market Reef", "AX", "ax.png"],
"168": ["Marshall Islands", "MH", "mh.png"],
"169": ["Mayotte", "YT", "yt.png"],
"170": ["New Zealand", "NZ", "nz.png"],
"171": ["Mellish Reef", "AU", "au.png"],
"172": ["Pitcairn Islands", "PN", "pn.png"],
"173": ["Micronesia", "FM", "fm.png"],
"174": ["Midway Islands", "US", "us.png"],
"175": ["French Polynesia", "PF", "pf.png"],
"176": ["Fiji", "FJ", "fj.png"],
"177": ["Minami Torishima", "JP", "jp.png"],
"178": ["Minerva Reef", "XX", "xx.png"],
"179": ["Moldova", "MD", "md.png"],
"180": ["Mt Athos", "GR", "gr.png"],
"181": ["Mozambique", "MZ", "mz.png"],
"182": ["Navassa Island", "US", "us.png"],
"183": ["Netherlands Borneo", "XX", "xx.png"],
"184": ["Netherlands New Guinea", "XX", "xx.png"],
"185": ["Solomon Islands", "SB", "sb.png"],
"186": ["Newfoundland, Labrador", "XX", "xx.png"],
"187": ["Niger", "NE", "ne.png"],
"188": ["Niue", "NU", "nu.png"],
"189": ["Norfolk Island", "NF", "nf.png"],
"190": ["Samoa", "WS", "ws.png"],
"191": ["North Cook Islands", "NZ", "nz.png"],
"192": ["Ogasawara", "JP", "jp.png"],
"193": ["Okinawa (Ryukyu Is.)", "XX", "xx.png"],
"194": ["Okino Tori-shima", "XX", "xx.png"],
"195": ["Annobon Island", "GQ", "gq.png"],
"196": ["Palestine", "XX", "xx.png"],
"197": ["Palmyra, Jarvis Island", "US", "us.png"],
"198": ["Papua Territory", "XX", "xx.png"],
"199": ["Peter I Island", "NO", "no.png"],
"200": ["Portuguese Timor", "XX", "xx.png"],
"201": ["Prince Edward and Marion Island", "ZA", "za.png"],
"202": ["Puerto Rico", "PR", "pr.png"],
"203": ["Andorra", "AD", "ad.png"],
"204": ["Revillagigedo Islands", "MX", "mx.png"],
"205": ["Ascension Island", "KY", "ky.png"],
"206": ["Austria", "AT", "at.png"],
"207": ["Rodriguez Island", "MU", "mu.png"],
"208": ["Ruanda-Urundi", "XX", "xx.png"],
"209": ["Belgium", "BE", "be.png"],
"210": ["Saar", "XX", "xx.png"],
"211": ["Sable Island", "CA", "ca.png"],
"212": ["Bulgaria", "BG", "bg.png"],
"213": ["St Martin", "FR", "fr.png"],
"214": ["Corsica", "FR", "fr.png"],
"215": ["Cyprus", "CY", "cy.png"],
"216": ["San Andres and Providencia", "CO", "co.png"],
"217": ["San Felix", "CL", "cl.png"],
"218": ["Czechoslovakia", "XX", "xx.png"],
"219": ["Sao Tome & Principe", "ST", "st.png"],
"221": ["Denmark", "DK", "dk.png"],
"222": ["Faroe Islands", "FO", "fo.png"],
"223": ["England", "GB", "gb.png"],
"224": ["Finland", "FI", "fi.png"],
"225": ["Sardinia", "IT", "it.png"],
"226": ["Saudi Arabia/Iraq Neutral Zone", "XX", "xx.png"],
"227": ["France", "FR", "fr.png"],
"228": ["Serrana Bank & Roncador Cay", "XX", "xx.png"],
"229": ["German Democratic Republic", "XX", "xx.png"],
"230": ["Germany", "DE", "de.png"],
"231": ["Sikkim", "XX", "xx.png"],
"232": ["Somalia", "SO", "so.png"],
"233": ["Gibraltar", "GI", "gi.png"],
"234": ["South Cook Islands", "GS", "gs.png"],
"235": ["South Georgia Islands", "GS", "gs.png"],
"236": ["Greece", "GR", "gr.png"],
"237": ["Greenland", "GL", "gl.png"],
"238": ["South Orkney Islands", "GB", "gb.png"],
"239": ["Hungary", "HU", "hu.png"],
"240": ["South Sandwich Islands", "GS", "gs.png"],
"241": ["South Shetland Island", "GB", "gb.png"],
"242": ["Iceland", "IS", "is.png"],
"243": ["People's Democratic Rep. of Yemen", "XX", "xx.png"],
"244": ["Southern Sudan", "XX", "xx.png"],
"245": ["Ireland", "IE", "ie.png"],
"246": ["SMO Malta", "MT", "mt.png"],
"247": ["Spratly Islands", "PH", "ph.png"],
"248": ["Italy", "IT", "it.png"],
"249": ["St Kitts and Nevis", "KN", "kn.png"],
"250": ["St Helena Island", "SH", "sh.png"],
"251": ["Liechtenstein", "LI", "li.png"],
"252": ["St Paul Island", "CA", "ca.png"],
"253": ["St Peter & St Paul Rocks", "BR", "br.png"],
"254": ["Luxembourg", "LU", "lu.png"],
"255": ["St. Maarten, Saba, St. Eustatius", "XX", "xx.png"],
"256": ["Madeira Island", "PT", "pt.png"],
"257": ["Malta", "MT", "mt.png"],
"258": ["Sumatra", "XX", "xx.png"],
"259": ["Svalbard", "NO", "no.png"],
"260": ["Monaco", "MC", "mc.png"],
"261": ["Swan Is.", "XX", "xx.png"],
"262": ["Tajikistan", "TJ", "tj.png"],
"263": ["Netherlands", "NL", "nl.png"],
"264": ["Tangier", "XX", "xx.png"],
"265": ["Northern Ireland", "IE", "ie.png"],
"266": ["Norway", "NO", "no.png"],
"267": ["Territory of New Guinea", "XX", "xx.png"],
"268": ["Tibet", "XX", "xx.png"],
"269": ["Poland", "PL", "pl.png"],
"270": ["Tokelau Islands", "TK", "tk.png"],
"271": ["Trieste", "XX", "xx.png"],
"272": ["Portugal", "PT", "pt.png"],
"273": ["Trindade and Martim Vaz Island", "BR", "br.png"],
"274": ["Tristan da Cunha and Gough Island", "GB", "gb.png"],
"275": ["Romania", "RO", "ro.png"],
"276": ["Tromelin Island", "FR", "fr.png"],
"277": ["St Pierre & Miquelon", "PM", "pm.png"],
"278": ["San Marino", "SM", "sm.png"],
"279": ["Scotland", "GB", "gb.png"],
"280": ["Turkmenistan", "TM", "tm.png"],
"281": ["Spain", "ES", "es.png"],
"282": ["Tuvalu", "TV", "tv.png"],
"283": ["Cyprus SBA", "CY", "cy.png"],
"284": ["Sweden", "SE", "se.png"],
"285": ["US Virgin Islands", "VI", "vi.png"],
"286": ["Uganda", "UG", "ug.png"],
"287": ["Switzerland", "CH", "ch.png"],
"288": ["Ukraine", "UA", "ua.png"],
"289": ["United Nations", "UN", "un.png"],
"291": ["United States", "US", "us.png"],
"292": ["Uzbekistan", "UZ", "uz.png"],
"293": ["Vietnam", "VN", "vn.png"],
"294": ["Wales", "GB", "gb.png"],
"295": ["Vatican", "VA", "va.png"],
"296": ["Serbia", "RS", "rs.png"],
"297": ["Wake Island", "US", "us.png"],
"298": ["Wallis and Futuna Islands", "WF", "wf.png"],
"299": ["West Malaysia", "MY", "my.png"],
"301": ["Kiribati", "KI", "ki.png"],
"302": ["Western Sahara", "EH", "eh.png"],
"303": ["Willis Island", "AU", "au.png"],
"304": ["Bahrain", "BH", "bh.png"],
"305": ["Bangladesh", "BD", "bd.png"],
"306": ["Bhutan", "BT", "bt.png"],
"307": ["Zanzibar", "XX", "xx.png"],
"308": ["Costa Rica", "CR", "cr.png"],
"309": ["Myanmar (Burma)", "MM", "mm.png"],
"312": ["Cambodia", "KH", "kh.png"],
"315": ["Sri Lanka", "LK", "lk.png"],
"318": ["China", "CN", "cn.png"],
"321": ["Hong Kong", "HK", "hk.png"],
"324": ["India", "IN", "in.png"],
"327": ["Indonesia", "ID", "id.png"],
"330": ["Iran", "IR", "ir.png"],
"333": ["Iraq", "IQ", "iq.png"],
"336": ["Israel", "IL", "il.png"],
"339": ["Japan", "JP", "jp.png"],
"342": ["Jordan", "JO", "jo.png"],
"344": ["North Korea", "KP", "kp.png"],
"345": ["Brunei", "BN", "bn.png"],
"348": ["Kuwait", "KW", "kw.png"],
"354": ["Lebanon", "LB", "lb.png"],
"363": ["Mongolia", "MN", "mn.png"],
"369": ["Nepal", "NP", "np.png"],
"370": ["Oman", "OM", "om.png"],
"372": ["Pakistan", "PK", "pk.png"],
"375": ["Philippines", "PH", "ph.png"],
"376": ["Qatar", "QA", "qa.png"],
"378": ["Saudi Arabia", "SA", "sa.png"],
"379": ["Seychelles", "SC", "sc.png"],
"381": ["Singapore", "SG", "sg.png"],
"382": ["Djibouti", "DJ", "dj.png"],
"384": ["Syria", "SY", "sy.png"],
"386": ["Taiwan", "TW", "tw.png"],
"387": ["Thailand", "TH", "th.png"],
"390": ["Turkey", "TR", "tr.png"],
"391": ["United Arab Emirates", "AE", "ae.png"],
"400": ["Algeria", "DZ", "dz.png"],
"401": ["Angola", "AO", "ao.png"],
"402": ["Botswana", "BW", "bw.png"],
"404": ["Burundi", "BI", "bi.png"],
"406": ["Cameroon", "CM", "cm.png"],
"408": ["Central African Republic", "CF", "cf.png"],
"409": ["Cape Verde", "CV", "cv.png"],
"410": ["Chad", "TD", "td.png"],
"411": ["Comoros", "KM", "km.png"],
"412": ["Congo", "CG", "cg.png"],
"414": ["Congo, Dem. Republic of", "CD", "cd.png"],
"416": ["Benin", "BJ", "bj.png"],
"420": ["Gabon", "GA", "ga.png"],
"422": ["The Gambia", "GM", "gm.png"],
"424": ["Ghana", "GH", "gh.png"],
"428": ["Ivory Coast", "CI", "ci.png"],
"430": ["Kenya", "KE", "ke.png"],
"432": ["Lesotho", "LS", "ls.png"],
"434": ["Liberia", "LR", "lr.png"],
"436": ["Libya", "LY", "ly.png"],
"438": ["Madagascar", "MG", "mg.png"],
"440": ["Malawi", "MW", "mw.png"],
"442": ["Mali", "ML", "ml.png"],
"444": ["Mauritania", "MR", "mr.png"],
"446": ["Morocco", "MA", "ma.png"],
"450": ["Nigeria", "NG", "ng.png"],
"452": ["Zimbabwe", "ZW", "zw.png"],
"453": ["Reunion", "RE", "re.png"],
"454": ["Rwanda", "RW", "rw.png"],
"456": ["Senegal", "SN", "sn.png"],
"458": ["Sierra Leone", "SL", "sl.png"],
"460": ["Rotuma", "FJ", "fj.png"],
"462": ["South Africa", "ZA", "za.png"],
"464": ["Namibia", "NA", "na.png"],
"466": ["Sudan", "SD", "sd.png"],
"468": ["Swaziland", "SZ", "sz.png"],
"470": ["Tanzania", "TZ", "tz.png"],
"474": ["Tunisia", "TN", "tn.png"],
"478": ["Egypt", "EG", "eg.png"],
"480": ["Burkina Faso", "BF", "bf.png"],
"482": ["Zambia", "ZM", "zm.png"],
"483": ["Togo", "TG", "tg.png"],
"488": ["Walvis Bay", "XX", "xx.png"],
"489": ["Conway Reef", "FJ", "fj.png"],
"490": ["Banaba Island", "KI", "ki.png"],
"492": ["Yemen", "YE", "ye.png"],
"493": ["Penguin Is.", "XX", "xx.png"],
"497": ["Croatia", "HR", "hr.png"],
"499": ["Slovenia", "SI", "si.png"],
"501": ["Bosnia and Herzegovina", "BA", "ba.png"],
"502": ["Macedonia", "MK", "mk.png"],
"503": ["Czech Republic", "CZ", "cz.png"],
"504": ["Slovak Republic", "SK", "sk.png"],
"505": ["Pratas Island", "TW", "tw.png"],
"506": ["Scarborough Reef", "PH", "ph.png"],
"507": ["Temotu", "SB", "sb.png"],
"508": ["Austral Islands, Tubuai", "PF", "pf.png"],
"509": ["Marquesas Islands", "FR", "fr.png"],
"510": ["Palestine", "PS", "ps.png"],
"511": ["Timor Leste", "TL", "tl.png"],
"512": ["Chesterfield Islands", "GB", "gb.png"],
"513": ["Ducie Island", "PN", "pn.png"],
"514": ["Montenegro", "ME", "me.png"],
"515": ["Swains Island", "US", "us.png"],
"516": ["St. Barthelemy", "FR", "fr.png"],
"517": ["Curacao", "CW", "cw.png"],
"518": ["St. Maarten", "SX", "sx.png"],
"519": ["Saba, St Eustatius", "AN", "an.png"],
"520": ["Bonaire", "NL", "nl.png"],
"521": ["South Sudan", "SS", "ss.png"],
"522": ["Republic of Kosovo", "XX", "xx.png"],
"901": ["Northern Cyprus", "XX", "xx.png"],
"1378": ["Saudi Arabia/Iraq Neutral Zone", "SA", "sa.png"],
"1502": ["Republic of Kosovo (Non-DXCC)", "XX", "xx.png"]
}

File diff suppressed because one or more lines are too long

Wyświetl plik

@ -1,270 +1,230 @@
[
{
"name": "Mapnik by OpenStreetMap (Intl)",
"url": "http://{a-c}.tile.openstreetmap.org/{z}/{x}/{y}.png",
"attributions": "<a href=\"http://openstreetmap.org/\" target=\"_blank\">OpenStreetMap</a>",
"minZoom": 0,
"maxZoom": 19
}
,
{
"name": "Mapnik by OpenStreetMap (Deutsche)",
"url": "http://{a-c}.tile.openstreetmap.de/tiles/osmde/{z}/{x}/{y}.png",
"attributions": "<a href=\"http://openstreetmap.de/\" target=\"_blank\">OpenStreetMap Deutschland</a>",
"minZoom": 0,
"maxZoom": 18
}
,
{
"name": "Mapnik by OpenStreetMap (français)",
"url": "http://{a-c}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png",
"attributions": "<a href=\"http://openstreetmap.fr/\" target=\"_blank\">OpenStreetMap France</a>",
"minZoom": 0,
"maxZoom": 18
}
,
{
"name": "Terrain by Stamen (English)",
"url": "http://stamen-tiles-{a-d}.a.ssl.fastly.net/terrain/{z}/{x}/{y}.png",
"attributions": "<a target=\"_blank\" href=\"http://stamen.com\">Stamen Design</a>",
"minZoom": 0,
"maxZoom": 18
}
,
{
"name": "Terrain by Stamen (No Labels)",
"url": "http://stamen-tiles-{a-d}.a.ssl.fastly.net/terrain-background/{z}/{x}/{y}.png",
"attributions": "<a target=\"_blank\" href=\"http://stamen.com\">Stamen Design</a>",
"minZoom": 0,
"maxZoom": 18
}
,
{
"name": "Toner by Stamen (English)",
"url": "http://stamen-tiles-{a-d}.a.ssl.fastly.net/toner/{z}/{x}/{y}.png",
"attributions": "<a target=\"_blank\" href=\"http://stamen.com\">Stamen Design</a>",
"minZoom": 0,
"maxZoom": 20
}
,
{
"name": "Toner by Stamen (No Labels)",
"url": "http://stamen-tiles-{a-d}.a.ssl.fastly.net/toner-background/{z}/{x}/{y}.png",
"attributions": "<a target=\"_blank\" href=\"http://stamen.com\">Stamen Design</a>",
"minZoom": 0,
"maxZoom": 20
}
,
{
"name": "TonerLite by Stamen (English)",
"url": "http://stamen-tiles-{a-d}.a.ssl.fastly.net/toner-lite/{z}/{x}/{y}.png",
"attributions": "<a target=\"_blank\" href=\"http://stamen.com\">Stamen Design</a>",
"minZoom": 0,
"maxZoom": 20
},
{
"name": "Mapnik by OpenStreetMap (Intl)",
"url": "http://{a-c}.tile.openstreetmap.org/{z}/{x}/{y}.png",
"attributions": "<a href=\"http://openstreetmap.org/\" target=\"_blank\">OpenStreetMap</a>",
"minZoom": 0,
"maxZoom": 19
},
{
"name": "Mapnik by OpenStreetMap (Deutsche)",
"url": "http://{a-c}.tile.openstreetmap.de/tiles/osmde/{z}/{x}/{y}.png",
"attributions": "<a href=\"http://openstreetmap.de/\" target=\"_blank\">OpenStreetMap Deutschland</a>",
"minZoom": 0,
"maxZoom": 18
},
{
"name": "Mapnik by OpenStreetMap (français)",
"url": "http://{a-c}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png",
"attributions": "<a href=\"http://openstreetmap.fr/\" target=\"_blank\">OpenStreetMap France</a>",
"minZoom": 0,
"maxZoom": 18
},
{
"name": "Terrain by Stamen (English)",
"url": "http://stamen-tiles-{a-d}.a.ssl.fastly.net/terrain/{z}/{x}/{y}.png",
"attributions": "<a target=\"_blank\" href=\"http://stamen.com\">Stamen Design</a>",
"minZoom": 0,
"maxZoom": 18
},
{
"name": "Terrain by Stamen (No Labels)",
"url": "http://stamen-tiles-{a-d}.a.ssl.fastly.net/terrain-background/{z}/{x}/{y}.png",
"attributions": "<a target=\"_blank\" href=\"http://stamen.com\">Stamen Design</a>",
"minZoom": 0,
"maxZoom": 18
},
{
"name": "Toner by Stamen (English)",
"url": "http://stamen-tiles-{a-d}.a.ssl.fastly.net/toner/{z}/{x}/{y}.png",
"attributions": "<a target=\"_blank\" href=\"http://stamen.com\">Stamen Design</a>",
"minZoom": 0,
"maxZoom": 20
},
{
"name": "Toner by Stamen (No Labels)",
"url": "http://stamen-tiles-{a-d}.a.ssl.fastly.net/toner-background/{z}/{x}/{y}.png",
"attributions": "<a target=\"_blank\" href=\"http://stamen.com\">Stamen Design</a>",
"minZoom": 0,
"maxZoom": 20
},
{
"name": "TonerLite by Stamen (English)",
"url": "http://stamen-tiles-{a-d}.a.ssl.fastly.net/toner-lite/{z}/{x}/{y}.png",
"attributions": "<a target=\"_blank\" href=\"http://stamen.com\">Stamen Design</a>",
"minZoom": 0,
"maxZoom": 20
},
{
"name": "Toner by Stamen (No Labels)(Offline)",
"url": "/map/toner-background/{z}/{x}/{y}.png",
"attributions": "Stamen Design",
"minZoom": 0,
"maxZoom": 5,
"offline": true
}
,
{
"name": "Hydda by OpenStreetMap Sweden (Intl)",
"url": "http://{a-c}.tile.openstreetmap.se/hydda/full/{z}/{x}/{y}.png",
"attributions": "<a href=\"http://openstreetmap.se/\" target=\"_blank\">OpenStreetMap Sweden</a>",
"minZoom": 0,
"maxZoom": 18
}
,
{
"name": "Hydda by OpenStreetMap Sweden (No Labels)",
"url": "http://{a-c}.tile.openstreetmap.se/hydda/base/{z}/{x}/{y}.png",
"attributions": "<a href=\"http://openstreetmap.se/\" target=\"_blank\">OpenStreetMap Sweden</a>",
"minZoom": 0,
"maxZoom": 18
}
,
{
"name": "Toner by Stamen (No Labels)(Offline)",
"url": "/map/toner-background/{z}/{x}/{y}.png",
"attributions": "Stamen Design",
"minZoom": 0,
"maxZoom": 5,
"offline": true
},
{
"name": "Hydda by OpenStreetMap Sweden (Intl)",
"url": "http://{a-c}.tile.openstreetmap.se/hydda/full/{z}/{x}/{y}.png",
"attributions": "<a href=\"http://openstreetmap.se/\" target=\"_blank\">OpenStreetMap Sweden</a>",
"minZoom": 0,
"maxZoom": 18
},
{
"name": "Hydda by OpenStreetMap Sweden (No Labels)",
"url": "http://{a-c}.tile.openstreetmap.se/hydda/base/{z}/{x}/{y}.png",
"attributions": "<a href=\"http://openstreetmap.se/\" target=\"_blank\">OpenStreetMap Sweden</a>",
"minZoom": 0,
"maxZoom": 18
},
{
"name": "National Geographic by Esri (English)",
"url": "http://server.arcgisonline.com/ArcGIS/rest/services/NatGeo_World_Map/MapServer/tile/{z}/{y}/{x}",
"attributions": "&copy; Esri &mdash; National Geographic",
"maxZoom": 16
},
{
"name": "National Geographic by Esri (English)",
"url": "http://server.arcgisonline.com/ArcGIS/rest/services/NatGeo_World_Map/MapServer/tile/{z}/{y}/{x}",
"attributions": "&copy; Esri &mdash; National Geographic",
"maxZoom": 16
}
,
{
"name": "Street by Esri (English)",
"url": "http://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer/tile/{z}/{y}/{x}",
"attributions": "&copy; Esri"
}
,
{
"name": "Topographical by Esri (English)",
"url": "http://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer/tile/{z}/{y}/{x}",
"attributions": "&copy; Esri"
}
,
{
"name": "Physical by Esri (No Labels)",
"url": "http://server.arcgisonline.com/ArcGIS/rest/services/World_Physical_Map/MapServer/tile/{z}/{y}/{x}",
"attributions": "&copy; Esri",
"maxZoom": 8
}
,
{
"name": "Satellite by Esri (No Labels)",
"url": "http://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}",
"attributions": "&copy; Esri",
"maxZoom": 18
}
,
{
{
"name": "Street by Esri (English)",
"url": "http://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer/tile/{z}/{y}/{x}",
"attributions": "&copy; Esri"
},
{
"name": "Topographical by Esri (English)",
"url": "http://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer/tile/{z}/{y}/{x}",
"attributions": "&copy; Esri"
},
{
"name": "Physical by Esri (No Labels)",
"url": "http://server.arcgisonline.com/ArcGIS/rest/services/World_Physical_Map/MapServer/tile/{z}/{y}/{x}",
"attributions": "&copy; Esri",
"maxZoom": 8
},
{
"name": "Satellite by Esri (No Labels)",
"url": "http://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}",
"attributions": "&copy; Esri",
"maxZoom": 18
},
{
"name": "Wikimedia (Intl)",
"url":"http://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png",
"attributions": "<a target=\"_blank\" href=\"https://wikimediafoundation.org/wiki/Maps_Terms_of_Use\">Wikimedia</a>",
"minZoom": 1,
"maxZoom": 19
}
,
{
"url": "http://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png",
"attributions": "<a target=\"_blank\" href=\"https://wikimediafoundation.org/wiki/Maps_Terms_of_Use\">Wikimedia</a>",
"minZoom": 1,
"maxZoom": 19
},
{
"name": "Wikimedia (No Labels)",
"url":"http://maps.wikimedia.org/osm/{z}/{x}/{y}.png",
"attributions": "<a target=\"_blank\" href=\"https://wikimediafoundation.org/wiki/Maps_Terms_of_Use\">Wikimedia</a>",
"minZoom": 1,
"maxZoom": 19
}
,
{
"url": "http://maps.wikimedia.org/osm/{z}/{x}/{y}.png",
"attributions": "<a target=\"_blank\" href=\"https://wikimediafoundation.org/wiki/Maps_Terms_of_Use\">Wikimedia</a>",
"minZoom": 1,
"maxZoom": 19
},
{
"name": "Watercolor by Stamen (No Labels)",
"url": "http://stamen-tiles-{a-d}.a.ssl.fastly.net/watercolor/{z}/{x}/{y}.png",
"attributions": "<a target=\"_blank\" href=\"http://stamen.com\">Stamen Design</a>",
"minZoom": 1,
"maxZoom": 19
},
{
"name": "Humanitarian by OpenStreetMap (Intl)",
"url": "http://{a-c}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png",
"attributions": "<a href=\"http://openstreetmap.org/\" target=\"_blank\">OpenStreetMap</a>",
"minZoom": 0,
"maxZoom": 19
}
,
{
"name": "Dark Gray by Esri (English)",
"url": "http://services.arcgisonline.com/arcgis/rest/services/Canvas/World_Dark_Gray_Base/MapServer/tile/{z}/{y}/{x}",
"attributions": "&copy; Esri",
"maxZoom": 19
}
,
{
"name": "Light Gray by Esri (English)",
"url": "http://services.arcgisonline.com/arcgis/rest/services/Canvas/World_Light_Gray_Base/MapServer/tile/{z}/{y}/{x}",
"attributions": "&copy; Esri",
"maxZoom": 16
},
{
"name" : "City Lights by NASA (No Labels)",
"url" : "http://map1.vis.earthdata.nasa.gov/wmts-webmerc/VIIRS_CityLights_2012/default/GoogleMapsCompatible_Level8/{z}/{y}/{x}.jpg",
"attributions": "&copy; NASA",
"maxZoom": 8
},
{
"name" : "Midnight Commander by Carto (No Labels)",
"url" : "https://cartocdn_{a-d}.global.ssl.fastly.net/base-midnight/{z}/{x}/{y}.png",
"attributions": "&copy; Carto",
"maxZoom": 19
}
,
{
"name" : "Antique by Carto (Minimal Labels)",
"url" : "https://cartocdn_{a-d}.global.ssl.fastly.net/base-antique/{z}/{x}/{y}.png",
"attributions": "&copy; Carto",
"maxZoom": 19
}
,
{
"name" : "Eco by Carto (Minimal Labels)",
"url" : "https://cartocdn_{a-d}.global.ssl.fastly.net/base-eco/{z}/{x}/{y}.png",
"attributions": "&copy; Carto",
"maxZoom": 19
}
,
{
"name" : "Voyager by Carto (English)",
"url" : "https://{a-d}.basemaps.cartocdn.com/rastertiles/voyager_labels_under/{z}/{x}/{y}.png",
"attributions": "&copy; Carto",
"maxZoom": 19
}
,
{
"name" : "Positron by Carto (English)",
"url" : "https://{a-d}.basemaps.cartocdn.com/rastertiles/light_all/{z}/{x}/{y}.png",
"attributions": "&copy; Carto",
"maxZoom": 19
}
,
{
"name" : "Dark Matter by Carto (English)",
"url" : "https://{a-d}.basemaps.cartocdn.com/rastertiles/dark_all/{z}/{x}/{y}.png",
"attributions": "&copy; Carto",
"maxZoom": 19
}
,
{
"name" : "Voyager by Carto (No Labels)",
"url" : "https://{a-d}.basemaps.cartocdn.com/rastertiles/voyager_nolabels/{z}/{x}/{y}.png",
"attributions": "&copy; Carto",
"maxZoom": 19
}
,
{
"name" : "Positron by Carto (No Labels)",
"url" : "https://{a-d}.basemaps.cartocdn.com/rastertiles/light_nolabels/{z}/{x}/{y}.png",
"attributions": "&copy; Carto",
"maxZoom": 19
}
,
{
"name" : "Dark Matter by Carto (No Labels)",
"url" : "https://{a-d}.basemaps.cartocdn.com/rastertiles/dark_nolabels/{z}/{x}/{y}.png",
"attributions": "&copy; Carto",
"maxZoom": 19
},
{
"name" : "Geography Class by Mapbox (English)",
"url" : "http://{a-b}.tiles.mapbox.com/v3/aj.1x1-degrees/{z}/{x}/{y}.png",
"attributions": "&copy; mapbox",
"maxZoom": 19
}
,
{
"name" : "Flat Blue by Carto (No Labels)",
"url" : "https://cartocdn_{a-d}.global.ssl.fastly.net/base-flatblue/{z}/{x}/{y}.png",
"attributions": "&copy; Carto",
"maxZoom": 19
},
{
"name": "Satellite by MapTiler (No Labels)(Offline)",
"url": "/map/sat/{z}/{x}/{y}.png",
"attributions": "MapTiler",
"minZoom": 0,
"maxZoom": 5,
"offline": true
}
]
"url": "http://stamen-tiles-{a-d}.a.ssl.fastly.net/watercolor/{z}/{x}/{y}.png",
"attributions": "<a target=\"_blank\" href=\"http://stamen.com\">Stamen Design</a>",
"minZoom": 1,
"maxZoom": 19
},
{
"name": "Humanitarian by OpenStreetMap (Intl)",
"url": "http://{a-c}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png",
"attributions": "<a href=\"http://openstreetmap.org/\" target=\"_blank\">OpenStreetMap</a>",
"minZoom": 0,
"maxZoom": 19
},
{
"name": "Dark Gray by Esri (English)",
"url": "http://services.arcgisonline.com/arcgis/rest/services/Canvas/World_Dark_Gray_Base/MapServer/tile/{z}/{y}/{x}",
"attributions": "&copy; Esri",
"maxZoom": 19
},
{
"name": "Light Gray by Esri (English)",
"url": "http://services.arcgisonline.com/arcgis/rest/services/Canvas/World_Light_Gray_Base/MapServer/tile/{z}/{y}/{x}",
"attributions": "&copy; Esri",
"maxZoom": 16
},
{
"name": "City Lights by NASA (No Labels)",
"url": "http://map1.vis.earthdata.nasa.gov/wmts-webmerc/VIIRS_CityLights_2012/default/GoogleMapsCompatible_Level8/{z}/{y}/{x}.jpg",
"attributions": "&copy; NASA",
"maxZoom": 8
},
{
"name": "Midnight Commander by Carto (No Labels)",
"url": "https://cartocdn_{a-d}.global.ssl.fastly.net/base-midnight/{z}/{x}/{y}.png",
"attributions": "&copy; Carto",
"maxZoom": 19
},
{
"name": "Antique by Carto (Minimal Labels)",
"url": "https://cartocdn_{a-d}.global.ssl.fastly.net/base-antique/{z}/{x}/{y}.png",
"attributions": "&copy; Carto",
"maxZoom": 19
},
{
"name": "Eco by Carto (Minimal Labels)",
"url": "https://cartocdn_{a-d}.global.ssl.fastly.net/base-eco/{z}/{x}/{y}.png",
"attributions": "&copy; Carto",
"maxZoom": 19
},
{
"name": "Voyager by Carto (English)",
"url": "https://{a-d}.basemaps.cartocdn.com/rastertiles/voyager_labels_under/{z}/{x}/{y}.png",
"attributions": "&copy; Carto",
"maxZoom": 19
},
{
"name": "Positron by Carto (English)",
"url": "https://{a-d}.basemaps.cartocdn.com/rastertiles/light_all/{z}/{x}/{y}.png",
"attributions": "&copy; Carto",
"maxZoom": 19
},
{
"name": "Dark Matter by Carto (English)",
"url": "https://{a-d}.basemaps.cartocdn.com/rastertiles/dark_all/{z}/{x}/{y}.png",
"attributions": "&copy; Carto",
"maxZoom": 19
},
{
"name": "Voyager by Carto (No Labels)",
"url": "https://{a-d}.basemaps.cartocdn.com/rastertiles/voyager_nolabels/{z}/{x}/{y}.png",
"attributions": "&copy; Carto",
"maxZoom": 19
},
{
"name": "Positron by Carto (No Labels)",
"url": "https://{a-d}.basemaps.cartocdn.com/rastertiles/light_nolabels/{z}/{x}/{y}.png",
"attributions": "&copy; Carto",
"maxZoom": 19
},
{
"name": "Dark Matter by Carto (No Labels)",
"url": "https://{a-d}.basemaps.cartocdn.com/rastertiles/dark_nolabels/{z}/{x}/{y}.png",
"attributions": "&copy; Carto",
"maxZoom": 19
},
{
"name": "Geography Class by Mapbox (English)",
"url": "http://{a-b}.tiles.mapbox.com/v3/aj.1x1-degrees/{z}/{x}/{y}.png",
"attributions": "&copy; mapbox",
"maxZoom": 19
},
{
"name": "Flat Blue by Carto (No Labels)",
"url": "https://cartocdn_{a-d}.global.ssl.fastly.net/base-flatblue/{z}/{x}/{y}.png",
"attributions": "&copy; Carto",
"maxZoom": 19
},
{
"name": "Satellite by MapTiler (No Labels)(Offline)",
"url": "/map/sat/{z}/{x}/{y}.png",
"attributions": "MapTiler",
"minZoom": 0,
"maxZoom": 5,
"offline": true
}
]

Wyświetl plik

@ -1,128 +1,128 @@
{
"CW": false,
"AMTOR": false,
"AMTORFEC": false,
"AM": true,
"ARDOP": false,
"ASCII": false,
"ATV": false,
"BPSK31": false,
"BPSK63": false,
"BPSK125": false,
"C4FM": true,
"CHIP": false,
"CHIP64": false,
"CHIP128": false,
"CLO": false,
"CLOVER": false,
"CONTESTIA": false,
"DATA": false,
"DIGVOICE": true,
"DIGITALVOICE": true,
"DOMINO": false,
"DOMINOEX": false,
"DOMINOF": false,
"DSTAR": true,
"DSSTV": false,
"FAX": false,
"FM": true,
"FMHELL": false,
"FSK31": false,
"FSK441": false,
"FT4": false,
"FT8": false,
"GTOR": false,
"HELL": false,
"HELL80": false,
"HFSK": false,
"ISCAT": false,
"JS8": false,
"JT4": false,
"JT4A": false,
"JT4B": false,
"JT4C": false,
"JT4D": false,
"JT4E": false,
"JT4F": false,
"JT4G": false,
"JT65": false,
"JT65A": false,
"JT65B": false,
"JT65B2": false,
"JT65C": false,
"JT65C2": false,
"JT6M": false,
"JT9": false,
"LSB": true,
"MFSK": false,
"MFSK4": false,
"MFSK8": false,
"MFSK16": false,
"MFSK22": false,
"MFSK31": false,
"MFSK32": false,
"MFSK64": false,
"MFSK128": false,
"MINIRTTY": false,
"MSK144": false,
"MT63": false,
"OLIVIA": false,
"OPERA": false,
"PAC": false,
"PAC2": false,
"PAC3": false,
"PAC4": false,
"PACKET": false,
"PACTOR": false,
"PAX": false,
"PAX2": false,
"PHONE": true,
"PKT": false,
"PSK": false,
"PSK10": false,
"PSK31": false,
"PSK2K": false,
"PSK63": false,
"PSK63F": false,
"PSK125": false,
"PSK250": false,
"PSK500": false,
"PSK1000": false,
"PSK220F": false,
"PSKAM10": false,
"PSKAM31": false,
"PSKAM50": false,
"PSKFEC31": false,
"PSKHELL": false,
"Q15": false,
"QPSK31": false,
"QPSK63": false,
"QPSK125": false,
"QPSK250": false,
"QPSK500": false,
"QRA64": false,
"QRA64A": false,
"QRA64B": false,
"QRA64C": false,
"QRA64D": false,
"QRA64E": false,
"ROS": false,
"RTTY": false,
"RTTYM": false,
"SIM31": false,
"SIM64": false,
"SSB": true,
"SSTV": false,
"T10": false,
"THOR": false,
"THRB": false,
"THRBX": false,
"THROB": false,
"TOR": false,
"USB": true,
"VARA": false,
"V4": false,
"VOI": false,
"WINMOR": false,
"WSPR": false
}
"CW": false,
"AMTOR": false,
"AMTORFEC": false,
"AM": true,
"ARDOP": false,
"ASCII": false,
"ATV": false,
"BPSK31": false,
"BPSK63": false,
"BPSK125": false,
"C4FM": true,
"CHIP": false,
"CHIP64": false,
"CHIP128": false,
"CLO": false,
"CLOVER": false,
"CONTESTIA": false,
"DATA": false,
"DIGVOICE": true,
"DIGITALVOICE": true,
"DOMINO": false,
"DOMINOEX": false,
"DOMINOF": false,
"DSTAR": true,
"DSSTV": false,
"FAX": false,
"FM": true,
"FMHELL": false,
"FSK31": false,
"FSK441": false,
"FT4": false,
"FT8": false,
"GTOR": false,
"HELL": false,
"HELL80": false,
"HFSK": false,
"ISCAT": false,
"JS8": false,
"JT4": false,
"JT4A": false,
"JT4B": false,
"JT4C": false,
"JT4D": false,
"JT4E": false,
"JT4F": false,
"JT4G": false,
"JT65": false,
"JT65A": false,
"JT65B": false,
"JT65B2": false,
"JT65C": false,
"JT65C2": false,
"JT6M": false,
"JT9": false,
"LSB": true,
"MFSK": false,
"MFSK4": false,
"MFSK8": false,
"MFSK16": false,
"MFSK22": false,
"MFSK31": false,
"MFSK32": false,
"MFSK64": false,
"MFSK128": false,
"MINIRTTY": false,
"MSK144": false,
"MT63": false,
"OLIVIA": false,
"OPERA": false,
"PAC": false,
"PAC2": false,
"PAC3": false,
"PAC4": false,
"PACKET": false,
"PACTOR": false,
"PAX": false,
"PAX2": false,
"PHONE": true,
"PKT": false,
"PSK": false,
"PSK10": false,
"PSK31": false,
"PSK2K": false,
"PSK63": false,
"PSK63F": false,
"PSK125": false,
"PSK250": false,
"PSK500": false,
"PSK1000": false,
"PSK220F": false,
"PSKAM10": false,
"PSKAM31": false,
"PSKAM50": false,
"PSKFEC31": false,
"PSKHELL": false,
"Q15": false,
"QPSK31": false,
"QPSK63": false,
"QPSK125": false,
"QPSK250": false,
"QPSK500": false,
"QRA64": false,
"QRA64A": false,
"QRA64B": false,
"QRA64C": false,
"QRA64D": false,
"QRA64E": false,
"ROS": false,
"RTTY": false,
"RTTYM": false,
"SIM31": false,
"SIM64": false,
"SSB": true,
"SSTV": false,
"T10": false,
"THOR": false,
"THRB": false,
"THRBX": false,
"THROB": false,
"TOR": false,
"USB": true,
"VARA": false,
"V4": false,
"VOI": false,
"WINMOR": false,
"WSPR": false
}

Wyświetl plik

@ -1,128 +1,128 @@
{
"CW": false,
"AMTOR": true,
"AMTORFEC": true,
"AM": false,
"ARDOP": true,
"ASCII": true,
"ATV": false,
"BPSK31": true,
"BPSK63": true,
"BPSK125": true,
"C4FM": false,
"CHIP": true,
"CHIP64": true,
"CHIP128": true,
"CLO": true,
"CLOVER": true,
"CONTESTIA": true,
"DATA": true,
"DIGVOICE": false,
"DIGITALVOICE": false,
"DOMINO": true,
"DOMINOEX": true,
"DOMINOF": true,
"DSTAR": false,
"DSSTV": true,
"FAX": false,
"FM": false,
"FMHELL": true,
"FSK31": true,
"FSK441": true,
"FT4": true,
"FT8": true,
"GTOR": true,
"HELL": true,
"HELL80": true,
"HFSK": true,
"ISCAT": true,
"JS8": true,
"JT4": true,
"JT4A": true,
"JT4B": true,
"JT4C": true,
"JT4D": true,
"JT4E": true,
"JT4F": true,
"JT4G": true,
"JT65": true,
"JT65A": true,
"JT65B": true,
"JT65B2": true,
"JT65C": true,
"JT65C2": true,
"JT6M": true,
"JT9": true,
"LSB": false,
"MFSK": true,
"MFSK4": true,
"MFSK8": true,
"MFSK16": true,
"MFSK22": true,
"MFSK31": true,
"MFSK32": true,
"MFSK64": true,
"MFSK128": true,
"MINIRTTY": true,
"MSK144": true,
"MT63": true,
"OLIVIA": true,
"OPERA": true,
"PAC": true,
"PAC2": true,
"PAC3": true,
"PAC4": true,
"PACKET": true,
"PACTOR": true,
"PAX": true,
"PAX2": true,
"PHONE": false,
"PKT": true,
"PSK": true,
"PSK10": true,
"PSK31": true,
"PSK2K": true,
"PSK63": true,
"PSK63F": true,
"PSK125": true,
"PSK250": true,
"PSK500": true,
"PSK1000": true,
"PSK220F": true,
"PSKAM10": true,
"PSKAM31": true,
"PSKAM50": true,
"PSKFEC31": true,
"PSKHELL": true,
"Q15": true,
"QPSK31": true,
"QPSK63": true,
"QPSK125": true,
"QPSK250": true,
"QPSK500": true,
"QRA64": true,
"QRA64A": true,
"QRA64B": true,
"QRA64C": true,
"QRA64D": true,
"QRA64E": true,
"ROS": true,
"RTTY": true,
"RTTYM": true,
"SIM31": true,
"SIM64": true,
"SSB": false,
"SSTV": false,
"T10": true,
"THOR": true,
"THRB": true,
"THRBX": true,
"THROB": true,
"TOR": true,
"USB": false,
"VARA": true,
"V4": true,
"VOI": true,
"WINMOR": true,
"WSPR": true
}
"CW": false,
"AMTOR": true,
"AMTORFEC": true,
"AM": false,
"ARDOP": true,
"ASCII": true,
"ATV": false,
"BPSK31": true,
"BPSK63": true,
"BPSK125": true,
"C4FM": false,
"CHIP": true,
"CHIP64": true,
"CHIP128": true,
"CLO": true,
"CLOVER": true,
"CONTESTIA": true,
"DATA": true,
"DIGVOICE": false,
"DIGITALVOICE": false,
"DOMINO": true,
"DOMINOEX": true,
"DOMINOF": true,
"DSTAR": false,
"DSSTV": true,
"FAX": false,
"FM": false,
"FMHELL": true,
"FSK31": true,
"FSK441": true,
"FT4": true,
"FT8": true,
"GTOR": true,
"HELL": true,
"HELL80": true,
"HFSK": true,
"ISCAT": true,
"JS8": true,
"JT4": true,
"JT4A": true,
"JT4B": true,
"JT4C": true,
"JT4D": true,
"JT4E": true,
"JT4F": true,
"JT4G": true,
"JT65": true,
"JT65A": true,
"JT65B": true,
"JT65B2": true,
"JT65C": true,
"JT65C2": true,
"JT6M": true,
"JT9": true,
"LSB": false,
"MFSK": true,
"MFSK4": true,
"MFSK8": true,
"MFSK16": true,
"MFSK22": true,
"MFSK31": true,
"MFSK32": true,
"MFSK64": true,
"MFSK128": true,
"MINIRTTY": true,
"MSK144": true,
"MT63": true,
"OLIVIA": true,
"OPERA": true,
"PAC": true,
"PAC2": true,
"PAC3": true,
"PAC4": true,
"PACKET": true,
"PACTOR": true,
"PAX": true,
"PAX2": true,
"PHONE": false,
"PKT": true,
"PSK": true,
"PSK10": true,
"PSK31": true,
"PSK2K": true,
"PSK63": true,
"PSK63F": true,
"PSK125": true,
"PSK250": true,
"PSK500": true,
"PSK1000": true,
"PSK220F": true,
"PSKAM10": true,
"PSKAM31": true,
"PSKAM50": true,
"PSKFEC31": true,
"PSKHELL": true,
"Q15": true,
"QPSK31": true,
"QPSK63": true,
"QPSK125": true,
"QPSK250": true,
"QPSK500": true,
"QRA64": true,
"QRA64A": true,
"QRA64B": true,
"QRA64C": true,
"QRA64D": true,
"QRA64E": true,
"ROS": true,
"RTTY": true,
"RTTYM": true,
"SIM31": true,
"SIM64": true,
"SSB": false,
"SSTV": false,
"T10": true,
"THOR": true,
"THRB": true,
"THRBX": true,
"THROB": true,
"TOR": true,
"USB": false,
"VARA": true,
"V4": true,
"VOI": true,
"WINMOR": true,
"WSPR": true
}

Wyświetl plik

@ -1,39 +1,40 @@
{ "A":"Alfa" ,
"B":"Bravo" ,
"C":"Charlie" ,
"D":"Delta" ,
"E":"Echo" ,
"F":"Fox-trot" ,
"G":"Golf" ,
"H":"Hotel" ,
"I":"India" ,
"J":"Juliette" ,
"K":"Kilo" ,
"L":"Lima" ,
"M":"Mike" ,
"N":"November" ,
"O":"Oscar" ,
"P":"Papa" ,
"Q":"Quebec" ,
"R":"Romeo" ,
"S":"Sierra" ,
"T":"Tango" ,
"U":"Uniform" ,
"V":"Vicktor" ,
"W":"Whiskey" ,
"X":"X-ray" ,
"Y":"Yankee" ,
"Z":"Zulu" ,
"0":"Zero" ,
"1":"One" ,
"2":"Too" ,
"3":"Three" ,
"4":"Four" ,
"5":"Five" ,
"6":"Six" ,
"7":"Seven" ,
"8":"Eight" ,
"9":"Nine" ,
"/":"Stroke",
" ":", "
{
"A": "Alfa",
"B": "Bravo",
"C": "Charlie",
"D": "Delta",
"E": "Echo",
"F": "Fox-trot",
"G": "Golf",
"H": "Hotel",
"I": "India",
"J": "Juliette",
"K": "Kilo",
"L": "Lima",
"M": "Mike",
"N": "November",
"O": "Oscar",
"P": "Papa",
"Q": "Quebec",
"R": "Romeo",
"S": "Sierra",
"T": "Tango",
"U": "Uniform",
"V": "Vicktor",
"W": "Whiskey",
"X": "X-ray",
"Y": "Yankee",
"Z": "Zulu",
"0": "Zero",
"1": "One",
"2": "Too",
"3": "Three",
"4": "Four",
"5": "Five",
"6": "Six",
"7": "Seven",
"8": "Eight",
"9": "Nine",
"/": "Stroke",
" ": ", "
}

File diff suppressed because one or more lines are too long

Wyświetl plik

@ -1438,25 +1438,13 @@
"CA-PE": {
"postal": "CA-PE",
"name": "Prince Edward Island",
"mh": [
"FN86",
"FN85",
"FN96",
"FN76",
"FN77",
"FN87"
],
"mh": ["FN86", "FN85", "FN96", "FN76", "FN77", "FN87"],
"dxcc": 1
},
"US-MA": {
"postal": "US-MA",
"name": "Massachusetts",
"mh": [
"FN51",
"FN32",
"FN42",
"FN41"
],
"mh": ["FN51", "FN32", "FN42", "FN41"],
"dxcc": 291
},
"US-MN": {
@ -1644,7 +1632,7 @@
"postal": "US-CA",
"name": "California",
"mh": [
"CM93",
"CM93",
"DM02",
"DM12",
"DM22",
@ -1993,9 +1981,9 @@
"EN05",
"EN15",
"EN02",
"DN73",
"DN74",
"DN75"
"DN73",
"DN74",
"DN75"
],
"dxcc": 291
},
@ -2079,119 +2067,81 @@
"US-CT": {
"postal": "US-CT",
"name": "Connecticut",
"mh": [
"FN30",
"FN31",
"FN41",
"FN32",
"FN42"
],
"mh": ["FN30", "FN31", "FN41", "FN32", "FN42"],
"dxcc": 291
},
"US-NH": {
"postal": "US-NH",
"name": "New Hampshire",
"mh": [
"FN45",
"FN42",
"FN32",
"FN33",
"FN44",
"FN34",
"FN43"
],
"mh": ["FN45", "FN42", "FN32", "FN33", "FN44", "FN34", "FN43"],
"dxcc": 291
},
"US-RI": {
"postal": "US-RI",
"name": "Rhode Island",
"mh": [
"FN41",
"FN42"
],
"mh": ["FN41", "FN42"],
"dxcc": 291
},
"US-DC": {
"postal": "US-DC",
"name": "District Of Columbia",
"mh": [
"FM18"
],
"mh": ["FM18"],
"dxcc": 291
},
"US-GU": {
"postal": "US-GU",
"name": "Guam",
"mh": [
"QK23"
],
"mh": ["QK23"],
"dxcc": 103
},
"US-MH": {
"postal": "US-MH",
"name": "Marshall Islands",
"mh": [
"RJ29",
"RJ38",
"RJ39",
"RJ45",
"RJ46",
"RJ47",
"RJ48",
"RJ49",
"RJ56",
"RJ57",
"RJ58",
"RJ59",
"RJ66",
"RK11",
"RK21",
"RK31",
"RK40",
"RK41",
"RK44"
"RJ29",
"RJ38",
"RJ39",
"RJ45",
"RJ46",
"RJ47",
"RJ48",
"RJ49",
"RJ56",
"RJ57",
"RJ58",
"RJ59",
"RJ66",
"RK11",
"RK21",
"RK31",
"RK40",
"RK41",
"RK44"
],
"dxcc": 168
},
"US-PR": {
"US-PR": {
"postal": "US-PR",
"name": "Puerto Rico",
"mh": [
"FK67",
"FK68",
"FK77",
"FK78"
],
"mh": ["FK67", "FK68", "FK77", "FK78"],
"dxcc": 202
},
"US-VI": {
"US-VI": {
"postal": "US-VI",
"name": "Virgin Islands",
"mh": [
"FK77",
"FK78"
],
"mh": ["FK77", "FK78"],
"dxcc": 285
},
"US-MP": {
"US-MP": {
"postal": "US-MP",
"name": "Northern Mariana Islands",
"mh": [
"LH89"
],
"mh": ["LH89"],
"dxcc": 4
},
"US-VT": {
"postal": "US-VT",
"name": "Vermont",
"mh": [
"FN33",
"FN34",
"FN35",
"FN44",
"FN32",
"FN45"
],
"mh": ["FN33", "FN34", "FN35", "FN44", "FN32", "FN45"],
"dxcc": 291
},
"US-AL": {
@ -2484,38 +2434,19 @@
"US-DE": {
"postal": "US-DE",
"name": "Delaware",
"mh": [
"FM28",
"FM29"
],
"mh": ["FM28", "FM29"],
"dxcc": 291
},
"US-MD": {
"postal": "US-MD",
"name": "Maryland",
"mh": [
"FM17",
"FM27",
"FM08",
"FM18",
"FM28",
"FM09",
"FM19",
"FM29"
],
"mh": ["FM17", "FM27", "FM08", "FM18", "FM28", "FM09", "FM19", "FM29"],
"dxcc": 291
},
"US-NJ": {
"postal": "US-NJ",
"name": "New Jersey",
"mh": [
"FM29",
"FN20",
"FN30",
"FN21",
"FN31",
"FM28"
],
"mh": ["FM29", "FN20", "FN30", "FN21", "FN31", "FM28"],
"dxcc": 291
},
"US-NY": {
@ -2620,20 +2551,13 @@
"MX-DIF": {
"postal": "MX-DIF",
"name": "Distrito Federal",
"mh": [
"EK09"
],
"mh": ["EK09"],
"dxcc": 50
},
"MX-AGU": {
"postal": "MX-AGU",
"name": "Aguascalientes",
"mh": [
"DL81",
"DL91",
"DL82",
"DL92"
],
"mh": ["DL81", "DL91", "DL82", "DL92"],
"dxcc": 50
},
"MX-BCN": {
@ -2694,16 +2618,7 @@
"MX-CHP": {
"postal": "MX-CHP",
"name": "Chiapas",
"mh": [
"EK47",
"EK37",
"EK36",
"EK26",
"EK35",
"EK34",
"EK45",
"EK46"
],
"mh": ["EK47", "EK37", "EK36", "EK26", "EK35", "EK34", "EK45", "EK46"],
"dxcc": 50
},
"MX-CHH": {
@ -2759,12 +2674,7 @@
"MX-COL": {
"postal": "MX-COL",
"name": "Colima",
"mh": [
"DK89",
"DK79",
"DK88",
"DK78"
],
"mh": ["DK89", "DK79", "DK88", "DK78"],
"dxcc": 50
},
"MX-DUR": {
@ -2789,37 +2699,19 @@
"MX-GUA": {
"postal": "MX-GUA",
"name": "Guanajuato",
"mh": [
"DL91",
"EL01",
"DL90",
"DL80",
"DK99"
],
"mh": ["DL91", "EL01", "DL90", "DL80", "DK99"],
"dxcc": 50
},
"MX-GRO": {
"postal": "MX-GRO",
"name": "Guerrero",
"mh": [
"EK08",
"DK98",
"DK88",
"DK87",
"DK97",
"EK07",
"EK06"
],
"mh": ["EK08", "DK98", "DK88", "DK87", "DK97", "EK07", "EK06"],
"dxcc": 50
},
"MX-HID": {
"postal": "MX-HID",
"name": "Hidalgo",
"mh": [
"EL01",
"EL00",
"EK09"
],
"mh": ["EL01", "EL00", "EK09"],
"dxcc": 50
},
"MX-JAL": {
@ -2841,50 +2733,25 @@
"MX-MIC": {
"postal": "MX-MIC",
"name": "Michoacán",
"mh": [
"DL80",
"DL90",
"DK99",
"DK98",
"DK88",
"DK87",
"DK89"
],
"mh": ["DL80", "DL90", "DK99", "DK98", "DK88", "DK87", "DK89"],
"dxcc": 50
},
"MX-MOR": {
"postal": "MX-MOR",
"name": "Morelos",
"mh": [
"EK09",
"EK08"
],
"mh": ["EK09", "EK08"],
"dxcc": 50
},
"MX-MEX": {
"postal": "MX-MEX",
"name": "México",
"mh": [
"EK09",
"EL00",
"DK99",
"DK98",
"EK08",
"DL90"
],
"mh": ["EK09", "EL00", "DK99", "DK98", "EK08", "DL90"],
"dxcc": 50
},
"MX-NAY": {
"postal": "MX-NAY",
"name": "Nayarit",
"mh": [
"DL72",
"DL71",
"DL81",
"DL70",
"DL61",
"DL73"
],
"mh": ["DL72", "DL71", "DL81", "DL70", "DL61", "DL73"],
"dxcc": 50
},
"MX-NLE": {
@ -2926,57 +2793,25 @@
"MX-PUE": {
"postal": "MX-PUE",
"name": "Puebla",
"mh": [
"EL10",
"EL00",
"EK19",
"EK09",
"EK18",
"EK17",
"EK07",
"EK08"
],
"mh": ["EL10", "EL00", "EK19", "EK09", "EK18", "EK17", "EK07", "EK08"],
"dxcc": 50
},
"MX-QUE": {
"postal": "MX-QUE",
"name": "Querétaro",
"mh": [
"DL90",
"EL00",
"EL01",
"DL91"
],
"mh": ["DL90", "EL00", "EL01", "DL91"],
"dxcc": 50
},
"MX-ROO": {
"postal": "MX-ROO",
"name": "Quintana Roo",
"mh": [
"EL61",
"EL60",
"EL50",
"EK59",
"EK69",
"EK58",
"EK68",
"EK57"
],
"mh": ["EL61", "EL60", "EL50", "EK59", "EK69", "EK58", "EK68", "EK57"],
"dxcc": 50
},
"MX-SLP": {
"postal": "MX-SLP",
"name": "San Luis Potosí",
"mh": [
"DL94",
"DL93",
"DL83",
"DL92",
"DL82",
"EL02",
"EL01",
"DL91"
],
"mh": ["DL94", "DL93", "DL83", "DL92", "DL82", "EL02", "EL01", "DL91"],
"dxcc": 50
},
"MX-SIN": {
@ -3026,14 +2861,7 @@
"MX-TAB": {
"postal": "MX-TAB",
"name": "Tabasco",
"mh": [
"EK38",
"EK47",
"EK48",
"EK37",
"EK28",
"EK27"
],
"mh": ["EK38", "EK47", "EK48", "EK37", "EK28", "EK27"],
"dxcc": 50
},
"MX-TAM": {
@ -3059,10 +2887,7 @@
"MX-TLA": {
"postal": "MX-TLA",
"name": "Tlaxcala",
"mh": [
"EK09",
"EK19"
],
"mh": ["EK09", "EK19"],
"dxcc": 50
},
"MX-VER": {
@ -3087,15 +2912,7 @@
"MX-YUC": {
"postal": "MX-YUC",
"name": "Yucatán",
"mh": [
"EL40",
"EL50",
"EK59",
"EL60",
"EL61",
"EL51",
"EL41"
],
"mh": ["EL40", "EL50", "EK59", "EL60", "EL61", "EL51", "EL41"],
"dxcc": 50
},
"MX-ZAC": {
@ -3654,24 +3471,13 @@
"AU-ACT": {
"name": "Australian Capital Territory",
"postal": "AU-ACT",
"mh": [
"QF44"
],
"mh": ["QF44"],
"dxcc": 150
},
"DE-BW": {
"name": "Baden-Württemberg",
"dxcc": 230,
"mh": [
"JN49",
"JN59",
"JN58",
"JN57",
"JN47",
"JN37",
"JN38",
"JN48"
],
"mh": ["JN49", "JN59", "JN58", "JN57", "JN47", "JN37", "JN38", "JN48"],
"postal": "DE-BW"
},
"DE-BY": {
@ -3696,333 +3502,163 @@
"DE-BE": {
"name": "Berlin",
"dxcc": 230,
"mh": [
"JO62"
],
"mh": ["JO62"],
"postal": "DE-BE"
},
"DE-BB": {
"name": "Brandenburg",
"dxcc": 230,
"mh": [
"JO61",
"JO71",
"JO72",
"JO62",
"JO52",
"JO53",
"JO63",
"JO73"
],
"mh": ["JO61", "JO71", "JO72", "JO62", "JO52", "JO53", "JO63", "JO73"],
"postal": "DE-BB"
},
"DE-HB": {
"name": "Bremen",
"dxcc": 230,
"mh": [
"JO43"
],
"mh": ["JO43"],
"postal": "DE-HB"
},
"DE-HH": {
"name": "Hamburg",
"dxcc": 230,
"mh": [
"JO43",
"JO53"
],
"mh": ["JO43", "JO53"],
"postal": "DE-HH"
},
"DE-HE": {
"name": "Hessen",
"dxcc": 230,
"mh": [
"JN49",
"JO30",
"JN39",
"JO40",
"JO50",
"JO41",
"JO51"
],
"mh": ["JN49", "JO30", "JN39", "JO40", "JO50", "JO41", "JO51"],
"postal": "DE-HE"
},
"DE-MV": {
"name": "Mecklenburg-Vorpommern",
"dxcc": 230,
"mh": [
"JO53",
"JO63",
"JO73",
"JO64",
"JO74",
"JO54"
],
"mh": ["JO53", "JO63", "JO73", "JO64", "JO74", "JO54"],
"postal": "DE-MV"
},
"DE-NI": {
"name": "Niedersachsen",
"dxcc": 230,
"mh": [
"JO32",
"JO33",
"JO43",
"JO53",
"JO52",
"JO51",
"JO41",
"JO42"
],
"mh": ["JO32", "JO33", "JO43", "JO53", "JO52", "JO51", "JO41", "JO42"],
"postal": "DE-NI"
},
"DE-NW": {
"name": "Nordrhein-Westfalen",
"dxcc": 230,
"mh": [
"JO42",
"JO32",
"JO31",
"JO21",
"JO20",
"JO30",
"JO40",
"JO41"
],
"mh": ["JO42", "JO32", "JO31", "JO21", "JO20", "JO30", "JO40", "JO41"],
"postal": "DE-NW"
},
"DE-RP": {
"name": "Rheinland-Pfalz",
"dxcc": 230,
"mh": [
"JN49",
"JN48",
"JN39",
"JO30",
"JO40"
],
"mh": ["JN49", "JN48", "JN39", "JO30", "JO40"],
"postal": "DE-RP"
},
"DE-SL": {
"name": "Saarland",
"dxcc": 230,
"mh": [
"JN39"
],
"mh": ["JN39"],
"postal": "DE-SL"
},
"DE-SN": {
"name": "Sachsen",
"dxcc": 230,
"mh": [
"JO70",
"JO71",
"JO61",
"JO60",
"JO50"
],
"mh": ["JO70", "JO71", "JO61", "JO60", "JO50"],
"postal": "DE-SN"
},
"DE-ST": {
"name": "Sachsen-Anhalt",
"dxcc": 230,
"mh": [
"JO52",
"JO62",
"JO53",
"JO61",
"JO60",
"JO51"
],
"mh": ["JO52", "JO62", "JO53", "JO61", "JO60", "JO51"],
"postal": "DE-ST"
},
"DE-SH": {
"name": "Schleswig-Holstein",
"dxcc": 230,
"mh": [
"JO43",
"JO53",
"JO54",
"JO44",
"JO45"
],
"mh": ["JO43", "JO53", "JO54", "JO44", "JO45"],
"postal": "DE-SH"
},
"DE-TH": {
"name": "Thüringen",
"dxcc": 230,
"mh": [
"JO50",
"JO60",
"JO61",
"JO51",
"JO41",
"JO40"
],
"mh": ["JO50", "JO60", "JO61", "JO51", "JO41", "JO40"],
"postal": "DE-TH"
},
"FR-A": {
"postal": "FR-A",
"dxcc": 227,
"mh": [
"JN38",
"JN37",
"JN48",
"JN49",
"JN39"
],
"mh": ["JN38", "JN37", "JN48", "JN49", "JN39"],
"name": "Alsace"
},
"FR-B": {
"postal": "FR-B",
"dxcc": 227,
"mh": [
"IN93",
"IN92",
"JN03",
"JN04",
"JN05",
"IN95",
"IN94"
],
"mh": ["IN93", "IN92", "JN03", "JN04", "JN05", "IN95", "IN94"],
"name": "Aquitaine"
},
"FR-C": {
"postal": "FR-C",
"dxcc": 227,
"mh": [
"JN14",
"JN16",
"JN26",
"JN24",
"JN25",
"JN15"
],
"mh": ["JN14", "JN16", "JN26", "JN24", "JN25", "JN15"],
"name": "Auvergne"
},
"FR-E": {
"postal": "FR-E",
"dxcc": 227,
"mh": [
"IN78",
"IN88",
"IN98",
"IN97",
"IN87",
"IN77"
],
"mh": ["IN78", "IN88", "IN98", "IN97", "IN87", "IN77"],
"name": "Bretagne"
},
"FR-D": {
"postal": "FR-D",
"dxcc": 227,
"mh": [
"JN27",
"JN28",
"JN18",
"JN17",
"JN16",
"JN26"
],
"mh": ["JN27", "JN28", "JN18", "JN17", "JN16", "JN26"],
"name": "Bourgogne"
},
"FR-F": {
"postal": "FR-F",
"dxcc": 227,
"mh": [
"JN18",
"JN17",
"JN16",
"JN06",
"JN07",
"JN08"
],
"mh": ["JN18", "JN17", "JN16", "JN06", "JN07", "JN08"],
"name": "Centre"
},
"FR-G": {
"postal": "FR-G",
"dxcc": 227,
"mh": [
"JN29",
"JO20",
"JN19",
"JN18",
"JN17",
"JN27",
"JN28"
],
"mh": ["JN29", "JO20", "JN19", "JN18", "JN17", "JN27", "JN28"],
"name": "Champagne-Ardenne"
},
"FR-H": {
"postal": "FR-H",
"dxcc": 227,
"mh": [
"JN43",
"JN42",
"JN41"
],
"mh": ["JN43", "JN42", "JN41"],
"name": "Corse"
},
"FR-I": {
"postal": "FR-I",
"dxcc": 227,
"mh": [
"JN26",
"JN36",
"JN27",
"JN37",
"JN38"
],
"mh": ["JN26", "JN36", "JN27", "JN37", "JN38"],
"name": "Franche-Comté"
},
"FR-K": {
"postal": "FR-K",
"dxcc": 227,
"mh": [
"JN02",
"JN12",
"JN23",
"JN13",
"JN03",
"JN14",
"JN24"
],
"mh": ["JN02", "JN12", "JN23", "JN13", "JN03", "JN14", "JN24"],
"name": "Languedoc-Roussillon"
},
"FR-L": {
"postal": "FR-L",
"dxcc": 227,
"mh": [
"JN05",
"JN06",
"JN16",
"JN15",
"JN04",
"JN14"
],
"mh": ["JN05", "JN06", "JN16", "JN15", "JN04", "JN14"],
"name": "Limousin"
},
"FR-M": {
"postal": "FR-M",
"dxcc": 227,
"mh": [
"JN39",
"JN29",
"JN38",
"JN28",
"JN27",
"JN37"
],
"mh": ["JN39", "JN29", "JN38", "JN28", "JN27", "JN37"],
"name": "Lorraine"
},
"FR-P": {
"postal": "FR-P",
"dxcc": 227,
"mh": [
"IN99",
"JN09",
"JN08",
"IN98"
],
"mh": ["IN99", "JN09", "JN08", "IN98"],
"name": "Basse-Normandie"
},
"FR-N": {
@ -4045,68 +3681,31 @@
"FR-O": {
"postal": "FR-O",
"dxcc": 227,
"mh": [
"JO10",
"JO11",
"JO20",
"JN29",
"JO00"
],
"mh": ["JO10", "JO11", "JO20", "JN29", "JO00"],
"name": "Nord-Pas-de-Calais"
},
"FR-R": {
"postal": "FR-R",
"dxcc": 227,
"mh": [
"IN96",
"IN86",
"IN87",
"IN98",
"JN08",
"JN07",
"IN97"
],
"mh": ["IN96", "IN86", "IN87", "IN98", "JN08", "JN07", "IN97"],
"name": "Pays de la Loire"
},
"FR-S": {
"postal": "FR-S",
"dxcc": 227,
"mh": [
"JO00",
"JN09",
"JO10",
"JN19",
"JN29",
"JN18",
"JM07",
"JJ23"
],
"mh": ["JO00", "JN09", "JO10", "JN19", "JN29", "JN18", "JM07", "JJ23"],
"name": "Picardie"
},
"FR-T": {
"postal": "FR-T",
"dxcc": 227,
"mh": [
"IN95",
"JN05",
"IN96",
"IN97",
"JN06",
"JN07"
],
"mh": ["IN95", "JN05", "IN96", "IN97", "JN06", "JN07"],
"name": "Poitou-Charentes"
},
"FR-U": {
"postal": "FR-U",
"dxcc": 227,
"mh": [
"JN34",
"JN35",
"JN24",
"JN23",
"JN33",
"JN32"
],
"mh": ["JN34", "JN35", "JN24", "JN23", "JN33", "JN32"],
"name": "Provence-Alpes-Côte d'Azur"
},
"FR-V": {
@ -4128,23 +3727,13 @@
"FR-Q": {
"postal": "FR-Q",
"dxcc": 227,
"mh": [
"JN09",
"JN08",
"JO00"
],
"mh": ["JN09", "JN08", "JO00"],
"name": "Haute-Normandie"
},
"FR-J": {
"postal": "FR-J",
"dxcc": 227,
"mh": [
"JN09",
"JN19",
"JN18",
"JN08",
"HK37"
],
"mh": ["JN09", "JN19", "JN18", "JN08", "HK37"],
"name": "Île-de-France"
}
}
}

Wyświetl plik

@ -13,43 +13,67 @@
You should have received a copy of the GNU General Public License
along with GridTracker. If not, see <https://www.gnu.org/licenses/>.
-->
<html lang="en" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Band Activity</title>
<link rel="stylesheet" href="./lib/style.css"/>
<script src="./lib/protos.js" type="text/javascript" ></script>
<script src="./lib/screens.js" type="text/javascript" ></script>
<script>
<html lang="en" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Band Activity</title>
<link rel="stylesheet" href="./lib/style.css" />
<script src="./lib/protos.js" type="text/javascript"></script>
<script src="./lib/screens.js" type="text/javascript"></script>
<script>
document.addEventListener("dragover", function (event) {
event.preventDefault();
});
document.addEventListener("drop", function (event) {
event.preventDefault();
});
document.addEventListener("contextmenu", function (ev) {
window.opener.toggleBaWindow(ev);
if (process.versions["nw-flavor"] != "sdk") {
ev.preventDefault();
}
});
</script>
<script src="./lib/screens.js"></script>
</head>
document.addEventListener("dragover", function (event) {
event.preventDefault();
});
document.addEventListener("drop", function (event) {
event.preventDefault();
});
document.addEventListener('contextmenu', function(ev) {
window.opener.toggleBaWindow(ev);
if (process.versions['nw-flavor'] != "sdk") {
ev.preventDefault();
}
});
</script>
<script src="./lib/screens.js"></script>
</head>
<body id='mainBody' style="-webkit-app-region:drag;margin:0px;right:0px;left:0px;bottom:0px;top:0px;display:block;background-color:#000000FF;padding:0px;text-align:center;vertical-align:middle;position:absolute;z-index:600;">
<div id="pskReporterBandActivityDiv" style="position:relative;background-color:#000;border:1px solid purple;margin:1px;height:49px;margin-bottom:1px;padding:0px" title="PSK-Reporter Band Activity">
<div id="graphDiv" style="bottom:0;position: absolute;width:100%;padding:0px;margin-bottom:2px">
<br />...no data yet...<br />
&nbsp;
</div>
</div>
</body>
<body
id="mainBody"
style="
-webkit-app-region: drag;
margin: 0px;
right: 0px;
left: 0px;
bottom: 0px;
top: 0px;
display: block;
background-color: #000000ff;
padding: 0px;
text-align: center;
vertical-align: middle;
position: absolute;
z-index: 600;
"
>
<div
id="pskReporterBandActivityDiv"
style="
position: relative;
background-color: #000;
border: 1px solid purple;
margin: 1px;
height: 49px;
margin-bottom: 1px;
padding: 0px;
"
title="PSK-Reporter Band Activity"
>
<div id="graphDiv" style="bottom: 0; position: absolute; width: 100%; padding: 0px; margin-bottom: 2px">
<br />...no data yet...<br />
&nbsp;
</div>
</div>
</body>
</html>

Plik diff jest za duży Load Diff

Wyświetl plik

@ -14,139 +14,136 @@
along with GridTracker. If not, see <https://www.gnu.org/licenses/>.
-->
<html xmlns="http://www.w3.org/1999/xhtml">
<head >
<title>Current Conditions</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="./lib/style.css">
<style type="text/css">
body,html {
-webkit-appearance: none;
-webkit-user-select: none;
height: 100%;
overflow: hidden;
<head>
<title>Current Conditions</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="./lib/style.css" />
<style type="text/css">
body,
html {
-webkit-appearance: none;
-webkit-user-select: none;
height: 100%;
overflow: hidden;
}
}
table,
th,
td {
color: #fff;
white-space: nowrap;
font-family: Sans-Serif;
font-size: 12px;
text-align: center;
}
</style>
<script>
document.oncontextmenu = function (event) {
if (process.versions["nw-flavor"] != "sdk") {
ev.preventDefault();
}
};
table, th, td {
color:#FFF;
white-space: nowrap;
font-family:Sans-Serif;
font-size: 12px;
text-align:center;
}
</style>
<script>
document.oncontextmenu = function(event) {
if (process.versions['nw-flavor'] != "sdk") {
ev.preventDefault();
}
}
document.addEventListener("dragover", function (event) {
event.preventDefault();
});
document.addEventListener("drop", function (event) {
event.preventDefault();
});
function lockNewWindows()
{
if ( typeof nw != 'undefined' )
{
var gui = require('nw.gui');
var win = gui.Window.get();
win.on('new-win-policy', function (frame, url, policy) {
gui.Shell.openExternal(url);
policy.ignore();
document.addEventListener("dragover", function (event) {
event.preventDefault();
});
}
}
function timeNowSec()
{
return parseInt(Date.now() / 1000);
}
document.addEventListener("drop", function (event) {
event.preventDefault();
});
function showConditionsBox()
{
var now = timeNowSec() % 86400;
function lockNewWindows() {
if (typeof nw != "undefined") {
var gui = require("nw.gui");
var win = gui.Window.get();
win.on("new-win-policy", function (frame, url, policy) {
gui.Shell.openExternal(url);
policy.ignore();
});
}
}
function timeNowSec() {
return parseInt(Date.now() / 1000);
}
var images = document.getElementsByTagName('img');
function showConditionsBox() {
var now = timeNowSec() % 86400;
for(var i = 0; i < images.length; i++) {
var parts = images[i].src.split("t=");
images[i].src = parts[0] + "t=" + now;
}
var images = document.getElementsByTagName("img");
setTimeout(showConditionsBox,1800000);
for (var i = 0; i < images.length; i++) {
var parts = images[i].src.split("t=");
images[i].src = parts[0] + "t=" + now;
}
}
setTimeout(showConditionsBox, 1800000);
}
function init()
{
lockNewWindows();
showConditionsBox();
function init() {
lockNewWindows();
showConditionsBox();
document.addEventListener('keydown', onMyKeyDown, false);
document.addEventListener("keydown", onMyKeyDown, false);
}
}
function onMyKeyDown(event)
{
window.opener.onMyKeyDown(event);
}
</script>
<script src="./lib/screens.js"></script>
</head>
<body style="margin:0;top:3px" onload="init();" >
<div id="main" style="margin:0;top:0;min-height:60px;background-color:black;padding:0px;text-align:center;vertical-align:middle;position:relative;white-space:nowrap;overflow:hidden;" >
<div id="conditionsDataDiv" >
<div>
<a target='_blank' href='http://www.hamqsl.com' title='Visit www.hamqsl.net'><img src='http://www.hamqsl.com/solar101vhf.php?t='></a>
</div>
<div >
<table align='center'>
<tr>
<td>
<img src='https://sohowww.nascom.nasa.gov/data/realtime/eit_304/512/latest.jpg?t=' class='solarImg'>
</td>
<td>
<img src='https://sohowww.nascom.nasa.gov/data/realtime/eit_171/512/latest.jpg?t=' class='solarImg'>
</td>
<td>
<img src='https://sohowww.nascom.nasa.gov/data/realtime/eit_195/512/latest.jpg?t=' class='solarImg'>
</td>
<td>
<img src='https://sohowww.nascom.nasa.gov/data/realtime/eit_284/512/latest.jpg?t=' class='solarImg'>
</td>
<td>
<img src='https://sdo.gsfc.nasa.gov/assets/img/latest/f_304_211_171_256.jpg?t=' class='solarImg'>
</td>
</tr>
<tr>
<td>
30.4nm
</td>
<td>
17.1nm
</td>
<td>
19.5nm
</td>
<td>
28.4nm
</td>
<td>
304/211/171
</td>
</tr>
</table>
</div>
</div>
</div>
</body>
function onMyKeyDown(event) {
window.opener.onMyKeyDown(event);
}
</script>
<script src="./lib/screens.js"></script>
</head>
<body style="margin: 0; top: 3px" onload="init();">
<div
id="main"
style="
margin: 0;
top: 0;
min-height: 60px;
background-color: black;
padding: 0px;
text-align: center;
vertical-align: middle;
position: relative;
white-space: nowrap;
overflow: hidden;
"
>
<div id="conditionsDataDiv">
<div>
<a target="_blank" href="http://www.hamqsl.com" title="Visit www.hamqsl.net"
><img src="http://www.hamqsl.com/solar101vhf.php?t="
/></a>
</div>
<div>
<table align="center">
<tr>
<td>
<img src="https://sohowww.nascom.nasa.gov/data/realtime/eit_304/512/latest.jpg?t=" class="solarImg" />
</td>
<td>
<img src="https://sohowww.nascom.nasa.gov/data/realtime/eit_171/512/latest.jpg?t=" class="solarImg" />
</td>
<td>
<img src="https://sohowww.nascom.nasa.gov/data/realtime/eit_195/512/latest.jpg?t=" class="solarImg" />
</td>
<td>
<img src="https://sohowww.nascom.nasa.gov/data/realtime/eit_284/512/latest.jpg?t=" class="solarImg" />
</td>
<td>
<img src="https://sdo.gsfc.nasa.gov/assets/img/latest/f_304_211_171_256.jpg?t=" class="solarImg" />
</td>
</tr>
<tr>
<td>30.4nm</td>
<td>17.1nm</td>
<td>19.5nm</td>
<td>28.4nm</td>
<td>304/211/171</td>
</tr>
</table>
</div>
</div>
</div>
</body>
</html>

Wyświetl plik

@ -14,114 +14,129 @@
You should have received a copy of the GNU General Public License
along with GridTracker. If not, see <https://www.gnu.org/licenses/>.
-->
<html lang="en" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Callsign Lookup</title>
<link rel="stylesheet" href="./lib/style.css"/>
<script src="./lib/protos.js" type="text/javascript" ></script>
<script src="./lib/screens.js"></script>
<script>
<html lang="en" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Callsign Lookup</title>
<link rel="stylesheet" href="./lib/style.css" />
<script src="./lib/protos.js" type="text/javascript"></script>
<script src="./lib/screens.js"></script>
<script>
document.oncontextmenu = function () {
return false;
};
document.oncontextmenu = function() {
return false;
}
document.addEventListener("dragover", function (event) {
event.preventDefault();
});
document.addEventListener("dragover", function (event) {
event.preventDefault();
});
document.addEventListener("drop", function (event) {
event.preventDefault();
});
document.addEventListener("drop", function (event) {
event.preventDefault();
});
function lookupCallsign(callsign, grid, cache) {
window.opener.lookupCallsign(callsign, grid, cache);
}
function lookupCallsign( callsign, grid, cache )
{
window.opener.lookupCallsign(callsign, grid, cache);
}
function statsFocus(selection) {
var which = document.getElementById(selection);
if (which != null) {
which.focus();
which.selectionStart = which.selectionEnd = which.value.length;
}
}
function statsFocus( selection )
{
var which = document.getElementById(selection);
if ( which != null )
{
which.focus();
which.selectionStart = which.selectionEnd = which.value.length;
}
}
function ValidateCallsign(inputText, validDiv) {
if (inputText.value.length > 0) {
var passed = false;
inputText.value = inputText.value.toUpperCase();
if (/\d/.test(inputText.value) || /[A-Z]/.test(inputText.value)) {
passed = true;
}
if (passed) {
inputText.style.color = "#FF0";
inputText.style.backgroundColor = "green";
if (validDiv) validDiv.innerHTML = "Valid!";
return true;
} else {
inputText.style.color = "#000";
inputText.style.backgroundColor = "yellow";
if (validDiv) validDiv.innerHTML = "Invalid!";
return false;
}
} else {
inputText.style.color = "#000";
inputText.style.backgroundColor = "yellow";
if (validDiv) validDiv.innerHTML = "Invalid!";
return false;
}
}
function ValidateCallsign(inputText, validDiv) {
if ((inputText.value.length > 0)) {
var passed = false;
inputText.value = inputText.value.toUpperCase();
if (/\d/.test(inputText.value) || /[A-Z]/.test(inputText.value)) {
passed = true;
}
if (passed) {
inputText.style.color = "#FF0";
inputText.style.backgroundColor = "green";
if (validDiv)
validDiv.innerHTML = "Valid!";
return true;
} else {
inputText.style.color = "#000";
inputText.style.backgroundColor = "yellow";
if (validDiv)
validDiv.innerHTML = "Invalid!";
return false;
}
} else {
inputText.style.color = "#000";
inputText.style.backgroundColor = "yellow";
if (validDiv)
validDiv.innerHTML = "Invalid!";
return false;
}
}
function validateCallByElement(elementString) {
ValidateCallsign(window[elementString], null);
}
function validateCallByElement( elementString )
{
ValidateCallsign( window[elementString] , null);
}
function init() {
ValidateCallsign(lookupCallsignInput, null);
}
function init()
{
ValidateCallsign(lookupCallsignInput, null);
}
function addTextToClipboard(data) {
navigator.clipboard.writeText(data);
}
function addTextToClipboard(data)
{
navigator.clipboard.writeText(data);
}
function setClipboardFromLookup() {
if (window.opener.g_lastLookupAddress) {
addTextToClipboard(window.opener.g_lastLookupAddress);
}
}
function setClipboardFromLookup()
{
if ( window.opener.g_lastLookupAddress )
{
addTextToClipboard(window.opener.g_lastLookupAddress);
}
}
function Resize() {
lookupBoxDiv.style.height = window.innerHeight + "px";
}
</script>
</head>
function Resize()
{
lookupBoxDiv.style.height = (window.innerHeight) + "px" ;
}
</script>
</head>
<body id='mainBody' onresize="Resize();" onload="init();" >
<div id="rootInfoDiv"style="margin:0px;right:0px;left:0px;bottom:0px;top:3px;display:block;background-color:black;padding:0px;text-align:center;vertical-align:middle;position:absolute;z-index:600;" class="roundBorder" >
<div id="lookupBoxDiv" class="lookupContent" style="display:block;overflow:auto;overflow-x:hidden">
<div >Callsign<input id="lookupCallsignInput" type="text" class="inputTextValue" size="12" onkeyup="if (event.keyCode === 13) lookupButtonID.click();" oninput="ValidateCallsign(this,null);" />
<div id="lookupButtonID" title="Lookup Callsign" class="button" onclick="if ( ValidateCallsign(lookupCallsignInput,null) ) { lookupCallsign(lookupCallsignInput.value, null, false);}">Lookup</div>
</div>
<div id="lookupLocalDiv"></div>
<div id="lookupInfoDiv">No Callsign information to display<br/>try a lookup!</div>
</div>
<body id="mainBody" onresize="Resize();" onload="init();">
<div
id="rootInfoDiv"
style="
margin: 0px;
right: 0px;
left: 0px;
bottom: 0px;
top: 3px;
display: block;
background-color: black;
padding: 0px;
text-align: center;
vertical-align: middle;
position: absolute;
z-index: 600;
"
class="roundBorder"
>
<div id="lookupBoxDiv" class="lookupContent" style="display: block; overflow: auto; overflow-x: hidden">
<div>
Callsign<input
id="lookupCallsignInput"
type="text"
class="inputTextValue"
size="12"
onkeyup="if (event.keyCode === 13) lookupButtonID.click();"
oninput="ValidateCallsign(this,null);"
/>
<div
id="lookupButtonID"
title="Lookup Callsign"
class="button"
onclick="if ( ValidateCallsign(lookupCallsignInput,null) ) { lookupCallsign(lookupCallsignInput.value, null, false);}"
>
Lookup
</div>
</div>
<div id="lookupLocalDiv"></div>
<div id="lookupInfoDiv">No Callsign information to display<br />try a lookup!</div>
</div>
</div>
</body>
</html>
</body>
</html>

Wyświetl plik

@ -14,70 +14,81 @@
along with GridTracker. If not, see <https://www.gnu.org/licenses/>.
-->
<html xmlns="http://www.w3.org/1999/xhtml">
<head >
<title>Data Breakout</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="./lib/style.css">
<style type="text/css">
body {
-webkit-appearance: none;
-webkit-user-select: none;
height: 98%;
overflow: auto;
}
table, th, td, body {
color: #FFF;
white-space: nowrap;
font-family: Sans-Serif;
font-size: 12px;
text-align: auto;
}
</style>
<script>
<head>
<title>Data Breakout</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="./lib/style.css" />
<style type="text/css">
body {
-webkit-appearance: none;
-webkit-user-select: none;
height: 98%;
overflow: auto;
}
table,
th,
td,
body {
color: #fff;
white-space: nowrap;
font-family: Sans-Serif;
font-size: 12px;
text-align: auto;
}
</style>
<script>
function startLookup(call, grid) {
window.opener.startLookup(call, grid);
window.opener.focus();
}
function startLookup(call, grid)
{
window.opener.startLookup(call,grid);
window.opener.focus();
}
function lockNewWindows() {
if (typeof nw != "undefined") {
var gui = require("nw.gui");
var win = gui.Window.get();
win.on("new-win-policy", function (frame, url, policy) {
gui.Shell.openExternal(url);
policy.ignore();
});
}
}
function lockNewWindows()
{
if ( typeof nw != 'undefined' )
{
var gui = require('nw.gui');
var win = gui.Window.get();
win.on('new-win-policy', function (frame, url, policy) {
gui.Shell.openExternal(url);
policy.ignore();
});
}
}
function init() {
lockNewWindows();
function init()
{
lockNewWindows();
document.addEventListener("keydown", onMyKeyDown, false);
}
document.addEventListener('keydown', onMyKeyDown, false);
}
function onMyKeyDown(event) {
window.opener.onMyKeyDown(event);
}
function onMyKeyDown(event)
{
window.opener.onMyKeyDown(event);
}
document.oncontextmenu = function(event) {
if (process.versions['nw-flavor'] != "sdk") {
ev.preventDefault();
}
}
</script>
<script src="./lib/screens.js"></script>
</head>
<body id="mainBody" onload="init();" >
<div id="main" style="margin:0;top:0;min-height:60px;width:auto;background-color:black;padding:2px;text-align:center;vertical-align:middle;position:relative;white-space:nowrap;overflow:hidden;" >
<div id="adifTable"></div>
</div>
</body>
document.oncontextmenu = function (event) {
if (process.versions["nw-flavor"] != "sdk") {
ev.preventDefault();
}
};
</script>
<script src="./lib/screens.js"></script>
</head>
<body id="mainBody" onload="init();">
<div
id="main"
style="
margin: 0;
top: 0;
min-height: 60px;
width: auto;
background-color: black;
padding: 2px;
text-align: center;
vertical-align: middle;
position: relative;
white-space: nowrap;
overflow: hidden;
"
>
<div id="adifTable"></div>
</div>
</body>
</html>

Wyświetl plik

@ -14,84 +14,165 @@
along with GridTracker. If not, see <https://www.gnu.org/licenses/>.
-->
<html xmlns="http://www.w3.org/1999/xhtml">
<head >
<title>GridTracker - Print</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
table.darkTable {
border-collapse: collapse;
border: 1px solid black;
background-color: white;
text-align: center;
}
table.darkTable td, table.darkTable th {
border: 1px solid black;
padding:3px 5px;
<head>
<title>GridTracker - Print</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
table.darkTable {
border-collapse: collapse;
border: 1px solid black;
background-color: white;
text-align: center;
}
table.darkTable td,
table.darkTable th {
border: 1px solid black;
padding: 3px 5px;
}
}
table.darkTable thead {
border-bottom: 2px solid black;
}
table.darkTable thead th {
font-weight: bold;
text-align: center;
border-left: 2px solid black;
}
table.darkTable thead th:first-child {
border-left: none;
}
</style>
<script>
function init()
{
window.print();
}
</script>
</head>
<body id="mainBody" onload="init();" >
<div id="main" >
<center><h2>GridTracker</h2></center>
<div id="printDiv">
<table align=center class="darkTable" >
<tr>
<th colspan=3 >
Hot Key List
</th>
</tr>
<tr>
<th>Key</th><th align='left'>Action</th><th>Condition</th>
</tr>
<tr><td>C</td><td align='left' >Open Conditions Windows</td><td></td></tr>
<tr><td>G</td><td align='left' >Toggle GridTracker Flags</td><td></td></tr>
<tr><td>I</td><td align='left' >Open Stats/Info </td><td></td></tr>
<tr><td>L</td><td align='left' >Open ADIF file</td><td></td></tr>
<tr><td>M</td><td align='left' >Toggle Audio Mute</td><td></td></tr>
<tr><td>N</td><td align='left' >Toggle Earth Shadow</td><td></td></tr>
<tr><td>P</td><td align='left' >Toggle Grid/PushPin Mode</td><td></td></tr>
<tr><td>Q</td><td align='left' >Cycle QSO/LIVE view</td><td></td></tr>
<tr><td>R</td><td align='left' >Open Call Roster Window</td><td></td></tr>
<tr><td>S</td><td align='left' >Open Settings</td><td></td></tr>
<tr><td>W</td><td align='left' >Toggle Maidenhead Grid Size</td><td></td></tr>
<tr><td>1</td><td align='left' >Show General Map Layer</td><td></td></tr>
<tr><td>2</td><td align='left' >Show CQ Zones Award Layer</td><td></td></tr>
<tr><td>3</td><td align='left' >Show ITU Zones Award Layer</td><td></td></tr>
<tr><td>4</td><td align='left' >Show Continents Award Layer</td><td></td></tr>
<tr><td>5</td><td align='left' >Show US States Award Layer</td><td></td></tr>
<tr><td>6</td><td align='left' >Show DXCC Award Layer</td><td></td></tr>
<tr><td>7</td><td align='left' >Show US Counties Award Layer</td><td></td></tr>
<tr><td>M</td><td align='left' >Add MapCenter Alert</td><td>right-click<br>empty grid</td></tr>
<tr><td>T</td><td align='left' >Add TTS Alert</td><td>right-click<br>empty grid</td></tr>
<tr><td>V</td><td align='left' >Add PopUp Alert</td><td>right-click<br>empty grid</td></tr>
<tr><td>F1</td><td align='left' >Hot Key List</td><td></td></tr>
</table>
</div>
</div>
</body>
table.darkTable thead {
border-bottom: 2px solid black;
}
table.darkTable thead th {
font-weight: bold;
text-align: center;
border-left: 2px solid black;
}
table.darkTable thead th:first-child {
border-left: none;
}
</style>
<script>
function init() {
window.print();
}
</script>
</head>
<body id="mainBody" onload="init();">
<div id="main">
<center><h2>GridTracker</h2></center>
<div id="printDiv">
<table align="center" class="darkTable">
<tr>
<th colspan="3">Hot Key List</th>
</tr>
<tr>
<th>Key</th>
<th align="left">Action</th>
<th>Condition</th>
</tr>
<tr>
<td>C</td>
<td align="left">Open Conditions Windows</td>
<td></td>
</tr>
<tr>
<td>G</td>
<td align="left">Toggle GridTracker Flags</td>
<td></td>
</tr>
<tr>
<td>I</td>
<td align="left">Open Stats/Info</td>
<td></td>
</tr>
<tr>
<td>L</td>
<td align="left">Open ADIF file</td>
<td></td>
</tr>
<tr>
<td>M</td>
<td align="left">Toggle Audio Mute</td>
<td></td>
</tr>
<tr>
<td>N</td>
<td align="left">Toggle Earth Shadow</td>
<td></td>
</tr>
<tr>
<td>P</td>
<td align="left">Toggle Grid/PushPin Mode</td>
<td></td>
</tr>
<tr>
<td>Q</td>
<td align="left">Cycle QSO/LIVE view</td>
<td></td>
</tr>
<tr>
<td>R</td>
<td align="left">Open Call Roster Window</td>
<td></td>
</tr>
<tr>
<td>S</td>
<td align="left">Open Settings</td>
<td></td>
</tr>
<tr>
<td>W</td>
<td align="left">Toggle Maidenhead Grid Size</td>
<td></td>
</tr>
<tr>
<td>1</td>
<td align="left">Show General Map Layer</td>
<td></td>
</tr>
<tr>
<td>2</td>
<td align="left">Show CQ Zones Award Layer</td>
<td></td>
</tr>
<tr>
<td>3</td>
<td align="left">Show ITU Zones Award Layer</td>
<td></td>
</tr>
<tr>
<td>4</td>
<td align="left">Show Continents Award Layer</td>
<td></td>
</tr>
<tr>
<td>5</td>
<td align="left">Show US States Award Layer</td>
<td></td>
</tr>
<tr>
<td>6</td>
<td align="left">Show DXCC Award Layer</td>
<td></td>
</tr>
<tr>
<td>7</td>
<td align="left">Show US Counties Award Layer</td>
<td></td>
</tr>
<tr>
<td>M</td>
<td align="left">Add MapCenter Alert</td>
<td>right-click<br />empty grid</td>
</tr>
<tr>
<td>T</td>
<td align="left">Add TTS Alert</td>
<td>right-click<br />empty grid</td>
</tr>
<tr>
<td>V</td>
<td align="left">Add PopUp Alert</td>
<td>right-click<br />empty grid</td>
</tr>
<tr>
<td>F1</td>
<td align="left">Hot Key List</td>
<td></td>
</tr>
</table>
</div>
</div>
</body>
</html>

Wyświetl plik

@ -13,242 +13,440 @@
You should have received a copy of the GNU General Public License
along with GridTracker. If not, see <https://www.gnu.org/licenses/>.
-->
<html xmlns="http://www.w3.org/1999/xhtml" style="height:100%;width:100%">
<head >
<title>Call Roster</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="./lib/style.css">
<link id="roster" rel="stylesheet" href="./lib/style_roster.css">
<script src="./lib/protos.js" type="text/javascript" ></script>
<script src="./lib/third-party.js" type="text/javascript" ></script>
<script src="./lib/roster.js" type="text/javascript" ></script>
<script src="./lib/screens.js"></script>
</head>
<body onload="init();" onresize="resize();">
<div id="main" style="margin:0px;top:0;left:0;width:100%;background-color:black;position:absolute;white-space:nowrap;overflow:auto;" >
<div id="mainCallRoster" >
<div id="rosterHead" style="width:100%;padding:0;margin:0">
<div id="viewDiv" class="controlItem" style="border:1px solid #006;vertical-align:middle;">
<table style="text-align:center;border-collapse:collapse;">
<tr><td colspan=3 >
<div id="txrxdec" style="background-color:Green;border-style:outset;border-color:yellow;border-width:3px;margin:2px;" class="roundBorder">waiting for message</div>
</td></tr>
<tr><td colspan=3>
<div class="button" style="margin:3px" onclick="window.opener.haltAllTx(true);">Halt Tx</div>
</td></tr>
<tr title="Logbook Reference">
<td align='right'>Logbook</td>
<td align='left' colspan=2>
<select id="referenceNeed" onchange="valuesChanged();">
<option value="6">Award Tracker</option>
<option value="0">Live Band &amp; Mode</option>
<option value="1">Live Band, Mix Modes</option>
<option value="2">Live Band, Digi Modes</option>
<option value="3">Live Mode, Mix Band</option>
<option value="4">Mix Band &amp; Modes</option>
<option value="5">Mix Band &amp; Digi Modes</option>
</select>
</td>
</tr>
<tr id="awardHunterTr" style="display:none">
<td colspan=2 ><div class="button" style="margin:5px" onclick="openAwardPopup()">Add Awards</div></td>
<!--td><div class="button" style="margin:5px" onclick="addAllAwards()">Add All!</div></td>
<html xmlns="http://www.w3.org/1999/xhtml" style="height: 100%; width: 100%">
<head>
<title>Call Roster</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="./lib/style.css" />
<link id="roster" rel="stylesheet" href="./lib/style_roster.css" />
<script src="./lib/protos.js" type="text/javascript"></script>
<script src="./lib/third-party.js" type="text/javascript"></script>
<script src="./lib/roster.js" type="text/javascript"></script>
<script src="./lib/screens.js"></script>
</head>
<body onload="init();" onresize="resize();">
<div
id="main"
style="
margin: 0px;
top: 0;
left: 0;
width: 100%;
background-color: black;
position: absolute;
white-space: nowrap;
overflow: auto;
"
>
<div id="mainCallRoster">
<div id="rosterHead" style="width: 100%; padding: 0; margin: 0">
<div id="viewDiv" class="controlItem" style="border: 1px solid #006; vertical-align: middle">
<table style="text-align: center; border-collapse: collapse">
<tr>
<td colspan="3">
<div
id="txrxdec"
style="
background-color: Green;
border-style: outset;
border-color: yellow;
border-width: 3px;
margin: 2px;
"
class="roundBorder"
>
waiting for message
</div>
</td>
</tr>
<tr>
<td colspan="3">
<div class="button" style="margin: 3px" onclick="window.opener.haltAllTx(true);">Halt Tx</div>
</td>
</tr>
<tr title="Logbook Reference">
<td align="right">Logbook</td>
<td align="left" colspan="2">
<select id="referenceNeed" onchange="valuesChanged();">
<option value="6">Award Tracker</option>
<option value="0">Live Band &amp; Mode</option>
<option value="1">Live Band, Mix Modes</option>
<option value="2">Live Band, Digi Modes</option>
<option value="3">Live Mode, Mix Band</option>
<option value="4">Mix Band &amp; Modes</option>
<option value="5">Mix Band &amp; Digi Modes</option>
</select>
</td>
</tr>
<tr id="awardHunterTr" style="display: none">
<td colspan="2">
<div class="button" style="margin: 5px" onclick="openAwardPopup()">Add Awards</div>
</td>
<!--td><div class="button" style="margin:5px" onclick="addAllAwards()">Add All!</div></td>
<td><div class="button" style="margin:5px" onclick="delAllAwards()">Del All!</div></td-->
</tr>
<tr id="callsignsTr" >
<td align='right'>Callsigns</td>
<td align='left' colspan=2>
<select id="callsignNeed" onchange="valuesChanged();">
<option value="worked">New</option>
<option value="confirmed">New+Unconfirmed</option>
<option value="all">All Traffic</option>
<option value="hits">All Traffic/Only Wanted</option>
</select>
</td>
</tr>
<tr id="huntingTr" >
<td align='right'>Hunting</td>
<td align='left'>
<div id="huntModeTd" style="display:block" >
<select id="huntMode" onchange="valuesChanged();" value="callsign">
<option value="callsign">Callsign</option>
<option value="grid">Grid</option>
<option value="dxcc">DXCC</option>
<option value="dxccs">DXCC (Single)</option>
<option value="cq">CQ Zone</option>
<option value="itu">ITU Zone</option>
<option value="usstates">US States (WAS)</option>
<option value="usstate">US State (Single)</option>
<option value="wpx">Prefix (WPX)</option>
</select>
</div>
<div id="huntNeedTd" style="display:block" >
<select id="huntNeed" onchange="valuesChanged();">
<option value="worked">New</option>
<option value="confirmed">New+Unconfirmed</option>
</select>
</div>
<div id="huntStateTd" style="display:none" >
<select id="stateSelect" style="margin-top:2px"; >
<option value="" selected=true>Select Territory</option>
</select>
</div>
<div id="huntDXCCsTd" style="display:none" >
<select id="DXCCsSelect" style="margin-top:2px"; >
<option value="-1" selected=true>Select DXCC</option>
</select>
</div>
</td>
</tr>
<tr style="padding:0;margin:0"><td colspan=2 style="padding:0;margin:0"><div id="scriptIcon" style="display:none;padding:0;margin:0"></div></td></tr>
</table>
</div>
<div id="awardWantedDiv" class="controlItem" style="border:none;overflow:auto;overflow-x:hidden" ></div>
<div id="huntingMatrixDiv" class="controlItem" style="border:1px solid #066">
<table style="border-collapse:collapse;" title="Wanted" >
<tr><th colspan=2>Wanted</th></tr>
<tr>
<td colspan=1 ><label><input type="checkbox" id="huntCallsign" onchange="wantedChanged(this);">Callsign</label></td><td colspan=1 ><label><input type="checkbox" id="huntCQz" onchange="wantedChanged(this);">CQz</label></td>
</tr>
<tr>
<td colspan=1 ><input type="checkbox" id="huntGrid" onchange="wantedChanged(this);">Grid</td> <td colspan=1 ><input type="checkbox" id="huntITUz" onchange="wantedChanged(this);">ITUz</td>
</tr>
<tr>
<td colspan=1 ><input type="checkbox" id="huntDXCC" onchange="wantedChanged(this);">DXCC</td> <td colspan=1 ><input type="checkbox" id="huntState" onchange="wantedChanged(this);">State</td>
</tr>
<tr>
<td colspan=1 title='Stations calling *you*'><input type="checkbox" id="huntQRZ" onchange="wantedChanged(this);">QRZ</td><td colspan=1 ><input type="checkbox" id="huntCounty" onchange="wantedChanged(this);">County</td>
</tr>
<tr>
<td colspan=1 ><input type="checkbox" id="huntPX" onchange="wantedChanged(this);">WPX</td><td colspan=1 ><input type="checkbox" id="huntCont" onchange="wantedChanged(this);">Cont</td>
</tr>
<tr>
<td colspan=1 title='Off-Air Message Service Users'><input type="checkbox" id="huntOAMS" onchange="wantedChanged(this);">OAMS</td>
</tr>
</table>
</div>
<div id="exceptionDiv" class="controlItem" style="border:1px solid #622;" >
<table style="border-collapse:collapse;margin:0;padding:0;" title="Exceptions">
<tr>
<td>
<table style="border-collapse:collapse;" >
<tr>
<td colspan=2 ><label><input type="checkbox" id="cqOnly" onchange="valuesChanged();">CQ Only</label></td>
</tr>
<tr>
<td colspan=2 ><label><input type="checkbox" id="wantGrid" onchange="valuesChanged();">Has Grid</label></td>
</tr>
<tr>
<td ><input type="checkbox" id="wantMinDB" onchange="valuesChanged();"/>Min dB</td>
<td ><input type="range" min="-25" max="0" step="1" class="slider" id="minDb" oninput="valuesChanged();" style="width:75px"/></td>
<td align="center" id="minDbView" class="roundBorderValue">-24</td>
</tr>
<tr>
<td ><input type="checkbox" id="wantMaxDT" onchange="valuesChanged();">Max DT</td>
<td ><input type="range" min="0.1" max="2" step="0.1" class="slider" id="maxDT" oninput="valuesChanged();" style="width:75px"/></td>
<td align="center" id="maxDTView" class="roundBorderValue">.5</td>
</tr>
<tr>
<td ><input type="checkbox" id="wantMinFreq" onchange="valuesChanged();">Min freq</td>
<td ><input type="range" min="0" max="2500" step="10" class="slider" id="minFreq" oninput="valuesChanged();" style="width:75px"/></td>
<td align="center" id="minFreqView" class="roundBorderValue">400</td>
</tr>
<tr>
<td ><input type="checkbox" id="wantMaxFreq" onchange="valuesChanged();">Max freq</td>
<td ><input type="range" min="500" max="3500" step="10" class="slider" id="maxFreq" oninput="valuesChanged();" style="width:75px"/></td>
<td align="center" id="maxFreqView" class="roundBorderValue">3500</td>
</tr>
<tr>
<td id="usesLoTWDiv" ><input type="checkbox" id="usesLoTW" onchange="valuesChanged();">Uses LoTW</td>
<td ><input title="Max time since their last upload" type="range" min="3" max="27" step="3" class="slider" id="maxLoTW" oninput="valuesChanged();" style="width:75px"/></td>
<td title="Max time since their last upload" align="center" id="maxLoTWView" class="roundBorderValue" style="width:35px">3</td>
</tr>
<tr>
<td colspan=2 id="onlySpotDiv" style='display:none' ><input type="checkbox" id="onlySpot" onchange="valuesChanged();">Spotted Me</td>
</tr>
</table>
</td>
<td>
<table style="border-collapse:collapse;">
<tr>
<td colspan=2 ><input type="checkbox" id="noMyDxcc" onchange="onlyMyDxcc.checked=false; valuesChanged();">Not My DXCC</td>
</tr>
<tr>
<td colspan=2 ><input type="checkbox" id="onlyMyDxcc" onchange="noMyDxcc.checked=false; valuesChanged();">Only My DXCC</td>
</tr>
<tr >
<td colspan=2 id="useseQSLDiv" style='display:none' ><input type="checkbox" id="useseQSL" onchange="valuesChanged();">Uses eQSL</td>
</tr>
<tr >
<td colspan=2 id="usesOQRSDiv" style='display:none' ><input type="checkbox" id="usesOQRS" onchange="valuesChanged();">Uses OQRS</td>
</tr>
<tr >
<td colspan=2 id="allOnlyNewDiv" style='display:none' ><input type="checkbox" id="allOnlyNew" onchange="valuesChanged();">Only New Calls</td>
</tr>
<tr>
<td colspan=2 title='No Decodes Containing...'><input type="checkbox" id="noMsg" onchange="valuesChanged();"/>No &nbsp;&nbsp;<input type="text" class="inputTextValue" size="5" id="noMsgValue" onfocus="g_regFocus=true;" onblur="g_regFocus=false;" oninput="valuesChanged();" style='background-color:green;color:yellow;margin:0' onkeydown="checkForEnter(this);" /></td>
</tr>
<tr>
<td colspan=2 title='Only Decodes Containing...'><input type="checkbox" id="onlyMsg" onchange="valuesChanged();"/>Only<input type="text" class="inputTextValue" size="5" id="onlyMsgValue" onfocus="g_regFocus=true;" onblur="g_regFocus=false;" oninput="valuesChanged();" style='background-color:green;color:yellow;margin:0' onkeydown="checkForEnter(this);" /></td>
</tr>
</table>
</td>
</tr>
<tr >
<td colspan=6 align=center >
<table >
<tr >
<td >
<label><input type="checkbox" id="useRegex" title="Callsign Regular Expression" onchange="valuesChanged();" /> <a title="Regular Expressions 101" href="https://regex101.com/?flavor=javascript" target='_blank'>Regex</a></label>
<input type="text" class="inputTextValue" size="12" id="callsignRegex" onfocus="g_regFocus=true;" onblur="g_regFocus=false;" oninput="valuesChanged();" style='display:none;background-color:green;color:yellow;margin:0' onkeydown="checkForEnter(this);" />
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
<div id="instancesDiv" style="display:none;" ></div>
</div>
</tr>
<tr id="callsignsTr">
<td align="right">Callsigns</td>
<td align="left" colspan="2">
<select id="callsignNeed" onchange="valuesChanged();">
<option value="worked">New</option>
<option value="confirmed">New+Unconfirmed</option>
<option value="all">All Traffic</option>
<option value="hits">All Traffic/Only Wanted</option>
</select>
</td>
</tr>
<tr id="huntingTr">
<td align="right">Hunting</td>
<td align="left">
<div id="huntModeTd" style="display: block">
<select id="huntMode" onchange="valuesChanged();" value="callsign">
<option value="callsign">Callsign</option>
<option value="grid">Grid</option>
<option value="dxcc">DXCC</option>
<option value="dxccs">DXCC (Single)</option>
<option value="cq">CQ Zone</option>
<option value="itu">ITU Zone</option>
<option value="usstates">US States (WAS)</option>
<option value="usstate">US State (Single)</option>
<option value="wpx">Prefix (WPX)</option>
</select>
</div>
<div id="huntNeedTd" style="display: block">
<select id="huntNeed" onchange="valuesChanged();">
<option value="worked">New</option>
<option value="confirmed">New+Unconfirmed</option>
</select>
</div>
<div id="huntStateTd" style="display: none">
<select id="stateSelect" style="margin-top: 2px" ;>
<option value="" selected="true">Select Territory</option>
</select>
</div>
<div id="huntDXCCsTd" style="display: none">
<select id="DXCCsSelect" style="margin-top: 2px" ;>
<option value="-1" selected="true">Select DXCC</option>
</select>
</div>
</td>
</tr>
<tr style="padding: 0; margin: 0">
<td colspan="2" style="padding: 0; margin: 0">
<div id="scriptIcon" style="display: none; padding: 0; margin: 0"></div>
</td>
</tr>
</table>
</div>
<div id="awardWantedDiv" class="controlItem" style="border: none; overflow: auto; overflow-x: hidden"></div>
<div id="huntingMatrixDiv" class="controlItem" style="border: 1px solid #066">
<table style="border-collapse: collapse" title="Wanted">
<tr>
<th colspan="2">Wanted</th>
</tr>
<tr>
<td colspan="1">
<label><input type="checkbox" id="huntCallsign" onchange="wantedChanged(this);" />Callsign</label>
</td>
<td colspan="1">
<label><input type="checkbox" id="huntCQz" onchange="wantedChanged(this);" />CQz</label>
</td>
</tr>
<tr>
<td colspan="1"><input type="checkbox" id="huntGrid" onchange="wantedChanged(this);" />Grid</td>
<td colspan="1"><input type="checkbox" id="huntITUz" onchange="wantedChanged(this);" />ITUz</td>
</tr>
<tr>
<td colspan="1"><input type="checkbox" id="huntDXCC" onchange="wantedChanged(this);" />DXCC</td>
<td colspan="1"><input type="checkbox" id="huntState" onchange="wantedChanged(this);" />State</td>
</tr>
<tr>
<td colspan="1" title="Stations calling *you*">
<input type="checkbox" id="huntQRZ" onchange="wantedChanged(this);" />QRZ
</td>
<td colspan="1"><input type="checkbox" id="huntCounty" onchange="wantedChanged(this);" />County</td>
</tr>
<tr>
<td colspan="1"><input type="checkbox" id="huntPX" onchange="wantedChanged(this);" />WPX</td>
<td colspan="1"><input type="checkbox" id="huntCont" onchange="wantedChanged(this);" />Cont</td>
</tr>
<tr>
<td colspan="1" title="Off-Air Message Service Users">
<input type="checkbox" id="huntOAMS" onchange="wantedChanged(this);" />OAMS
</td>
</tr>
</table>
</div>
<div id="exceptionDiv" class="controlItem" style="border: 1px solid #622">
<table style="border-collapse: collapse; margin: 0; padding: 0" title="Exceptions">
<tr>
<td>
<table style="border-collapse: collapse">
<tr>
<td colspan="2">
<label><input type="checkbox" id="cqOnly" onchange="valuesChanged();" />CQ Only</label>
</td>
</tr>
<tr>
<td colspan="2">
<label><input type="checkbox" id="wantGrid" onchange="valuesChanged();" />Has Grid</label>
</td>
</tr>
<tr>
<td><input type="checkbox" id="wantMinDB" onchange="valuesChanged();" />Min dB</td>
<td>
<input
type="range"
min="-25"
max="0"
step="1"
class="slider"
id="minDb"
oninput="valuesChanged();"
style="width: 75px"
/>
</td>
<td align="center" id="minDbView" class="roundBorderValue">-24</td>
</tr>
<tr>
<td><input type="checkbox" id="wantMaxDT" onchange="valuesChanged();" />Max DT</td>
<td>
<input
type="range"
min="0.1"
max="2"
step="0.1"
class="slider"
id="maxDT"
oninput="valuesChanged();"
style="width: 75px"
/>
</td>
<td align="center" id="maxDTView" class="roundBorderValue">.5</td>
</tr>
<tr>
<td><input type="checkbox" id="wantMinFreq" onchange="valuesChanged();" />Min freq</td>
<td>
<input
type="range"
min="0"
max="2500"
step="10"
class="slider"
id="minFreq"
oninput="valuesChanged();"
style="width: 75px"
/>
</td>
<td align="center" id="minFreqView" class="roundBorderValue">400</td>
</tr>
<tr>
<td><input type="checkbox" id="wantMaxFreq" onchange="valuesChanged();" />Max freq</td>
<td>
<input
type="range"
min="500"
max="3500"
step="10"
class="slider"
id="maxFreq"
oninput="valuesChanged();"
style="width: 75px"
/>
</td>
<td align="center" id="maxFreqView" class="roundBorderValue">3500</td>
</tr>
<tr>
<td id="usesLoTWDiv">
<input type="checkbox" id="usesLoTW" onchange="valuesChanged();" />Uses LoTW
</td>
<td>
<input
title="Max time since their last upload"
type="range"
min="3"
max="27"
step="3"
class="slider"
id="maxLoTW"
oninput="valuesChanged();"
style="width: 75px"
/>
</td>
<td
title="Max time since their last upload"
align="center"
id="maxLoTWView"
class="roundBorderValue"
style="width: 35px"
>
3
</td>
</tr>
<tr>
<td colspan="2" id="onlySpotDiv" style="display: none">
<input type="checkbox" id="onlySpot" onchange="valuesChanged();" />Spotted Me
</td>
</tr>
</table>
</td>
<td>
<table style="border-collapse: collapse">
<tr>
<td colspan="2">
<input type="checkbox" id="noMyDxcc" onchange="onlyMyDxcc.checked=false; valuesChanged();" />Not
My DXCC
</td>
</tr>
<tr>
<td colspan="2">
<input
type="checkbox"
id="onlyMyDxcc"
onchange="noMyDxcc.checked=false; valuesChanged();"
/>Only My DXCC
</td>
</tr>
<tr>
<td colspan="2" id="useseQSLDiv" style="display: none">
<input type="checkbox" id="useseQSL" onchange="valuesChanged();" />Uses eQSL
</td>
</tr>
<tr>
<td colspan="2" id="usesOQRSDiv" style="display: none">
<input type="checkbox" id="usesOQRS" onchange="valuesChanged();" />Uses OQRS
</td>
</tr>
<tr>
<td colspan="2" id="allOnlyNewDiv" style="display: none">
<input type="checkbox" id="allOnlyNew" onchange="valuesChanged();" />Only New Calls
</td>
</tr>
<tr>
<td colspan="2" title="No Decodes Containing...">
<input type="checkbox" id="noMsg" onchange="valuesChanged();" />No &nbsp;&nbsp;<input
type="text"
class="inputTextValue"
size="5"
id="noMsgValue"
onfocus="g_regFocus=true;"
onblur="g_regFocus=false;"
oninput="valuesChanged();"
style="background-color: green; color: yellow; margin: 0"
onkeydown="checkForEnter(this);"
/>
</td>
</tr>
<tr>
<td colspan="2" title="Only Decodes Containing...">
<input type="checkbox" id="onlyMsg" onchange="valuesChanged();" />Only<input
type="text"
class="inputTextValue"
size="5"
id="onlyMsgValue"
onfocus="g_regFocus=true;"
onblur="g_regFocus=false;"
oninput="valuesChanged();"
style="background-color: green; color: yellow; margin: 0"
onkeydown="checkForEnter(this);"
/>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="6" align="center">
<table>
<tr>
<td>
<label
><input
type="checkbox"
id="useRegex"
title="Callsign Regular Expression"
onchange="valuesChanged();"
/>
<a
title="Regular Expressions 101"
href="https://regex101.com/?flavor=javascript"
target="_blank"
>Regex</a
></label
>
<input
type="text"
class="inputTextValue"
size="12"
id="callsignRegex"
onfocus="g_regFocus=true;"
onblur="g_regFocus=false;"
oninput="valuesChanged();"
style="display: none; background-color: green; color: yellow; margin: 0"
onkeydown="checkForEnter(this);"
/>
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
<div id="instancesDiv" style="display: none"></div>
</div>
<div oncontextmenu="handleContextMenu(event);">
<div id="rosterTable" style="overflow:auto;overflow-x:hidden;"></div>
</div>
</div>
<div id="editView" class="roundBorder" style="height:100%;border:3px solid #066;padding:10px;margin:10px;display:none;">
<div style='display:block;font-size:larger'>Callsign, CQ and DXCC Ignores</div><br/>
<div id="editTables">
</div>
<div class="button" style="margin-top:5px" onclick="closeEditIgnores()">Close</div>
</div>
<div oncontextmenu="handleContextMenu(event);">
<div id="rosterTable" style="overflow: auto; overflow-x: hidden"></div>
</div>
</div>
<div
id="editView"
class="roundBorder"
style="height: 100%; border: 3px solid #066; padding: 10px; margin: 10px; display: none"
>
<div style="display: block; font-size: larger">Callsign, CQ and DXCC Ignores</div>
<br />
<div id="editTables"></div>
<div class="button" style="margin-top: 5px" onclick="closeEditIgnores()">Close</div>
</div>
<div id="awardHunterDiv" class="mapItem" style="background-color:black;display:block;position:absolute;z-index:-499;top:10px;left:10px;margin:auto;">
<table style="padding:15px;">
<tr>
<th align='center'>New Award Tracker</th>
</tr>
<tr>
<td align='left' >
<select id="awardSponsor" onchange="awardSponsorChanged();">
<option value="" disabled selected>Sponsor</option>
</select>
</td>
</tr>
<tr>
<td align='left' >
<select id="awardName" onchange="awardNameChanged();">
<option value="" disabled selected>Name</option>
</select>
</td>
</tr>
<tr>
<td align='center'><div class="button" style="margin:3px" onclick="closeAwardPopup()">Done</div></td>
</tr>
</table >
</div>
</div>
</body>
<div
id="awardHunterDiv"
class="mapItem"
style="
background-color: black;
display: block;
position: absolute;
z-index: -499;
top: 10px;
left: 10px;
margin: auto;
"
>
<table style="padding: 15px">
<tr>
<th align="center">New Award Tracker</th>
</tr>
<tr>
<td align="left">
<select id="awardSponsor" onchange="awardSponsorChanged();">
<option value="" disabled selected>Sponsor</option>
</select>
</td>
</tr>
<tr>
<td align="left">
<select id="awardName" onchange="awardNameChanged();">
<option value="" disabled selected>Name</option>
</select>
</td>
</tr>
<tr>
<td align="center">
<div class="button" style="margin: 3px" onclick="closeAwardPopup()">Done</div>
</td>
</tr>
</table>
</div>
</div>
</body>
</html>

Wyświetl plik

@ -14,57 +14,99 @@
You should have received a copy of the GNU General Public License
along with GridTracker. If not, see <https://www.gnu.org/licenses/>.
-->
<html lang="en" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Statistics</title>
<link rel="stylesheet" href="./lib/style.css"/>
<script src="./lib/protos.js" type="text/javascript" ></script>
<script src="./lib/stats.js"></script>
<script src="./lib/screens.js"></script>
</head>
<html lang="en" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Statistics</title>
<link rel="stylesheet" href="./lib/style.css" />
<script src="./lib/protos.js" type="text/javascript"></script>
<script src="./lib/stats.js"></script>
<script src="./lib/screens.js"></script>
</head>
<body id='mainBody' onresize="Resize();" onload="init();" >
<div id="rootInfoDiv"style="margin:0px;right:0px;left:0px;bottom:0px;top:3px;display:block;background-color:black;padding:0px;text-align:center;vertical-align:middle;position:absolute;z-index:600;border:1px green;" class="roundBorder" >
<div class="infotab">
<button id="qsobox" class="infoTablinks active" onclick="resetSearch(); openInfoTab(event, 'workedBoxDiv', 'showWorkedBox')">Logbook</button>
<button id="stabox" class="infoTablinks" onclick="openInfoTab(event, 'statBoxDiv', 'showStatBox');">Scores</button>
<button id="dxcbox" class="infoTablinks" onclick="openInfoTab(event, 'dxccBoxDiv', 'showDXCCsBox')">DXCCs</button>
<button id="cqzbox" class="infoTablinks" onclick="openInfoTab(event, 'cqzoneBoxDiv', 'showCQzoneBox')">CQ Zones</button>
<button id="itubox" class="infoTablinks" onclick="openInfoTab(event, 'ituzoneBoxDiv', 'showITUzoneBox')">ITU Zones</button>
<button id="waswacbox" class="infoTablinks" onclick="openInfoTab(event, 'waswaczoneBoxDiv', 'showWASWACzoneBox')">WAC / WAS</button>
<button id="wpxbox" class="infoTablinks" onclick="openInfoTab(event, 'wpxBoxDiv', 'showWPXBox')">WPX</button>
<button id="calbox" class="infoTablinks" onclick="openInfoTab(event, 'callsignBoxDiv', 'showCallsignBox')">Live</button>
<button id="ldrbox" class="infoTablinks" onclick="openInfoTab(event, 'decodeLastDiv', null)">Decodes</button>
</div>
<div id="statBoxDiv" class="infoTabcontent" >
<div id="statViewDiv" style="margin:2px;padding:2px;overflow:auto;" ></div>
</div>
<div id="dxccBoxDiv" class="infoTabcontent" >
<div id="dxccListDiv" style="margin:2px;padding:2px;bottom:5px;" ></div>
</div>
<div id="cqzoneBoxDiv" class="infoTabcontent" >
<div id="cqzoneListDiv" style="margin:2px;padding:2px" ></div>
</div>
<div id="ituzoneBoxDiv" class="infoTabcontent" >
<div id="ituzoneListDiv" style="margin:2px;padding:2px" ></div>
</div>
<div id="waswaczoneBoxDiv" class="infoTabcontent" >
<div id="waswacListDiv" style="margin:2px;padding:2px" ></div>
</div>
<div id="wpxBoxDiv" class="infoTabcontent" >
<div id="wpxListDiv" style="margin:2px;padding:2px" ></div>
</div>
<div id="workedBoxDiv" class="infoTabcontent">
<div id="workedHeadDiv" ></div>
<div id="workedListDiv" style="margin:2px;padding:2px;overflow:auto;" ></div>
</div>
<div id="callsignBoxDiv" class="infoTabcontent">
<div id="callsignListDiv" style="margin:2px;padding:2px" ></div>
</div>
<div id="decodeLastDiv" class="infoTabcontent">
<div id="decodeLastListDiv" style="margin:2px;padding:2px;overflow:auto;overflow-x:hidden;" >No decodes yet</div>
</div>
<body id="mainBody" onresize="Resize();" onload="init();">
<div
id="rootInfoDiv"
style="
margin: 0px;
right: 0px;
left: 0px;
bottom: 0px;
top: 3px;
display: block;
background-color: black;
padding: 0px;
text-align: center;
vertical-align: middle;
position: absolute;
z-index: 600;
border: 1px green;
"
class="roundBorder"
>
<div class="infotab">
<button
id="qsobox"
class="infoTablinks active"
onclick="resetSearch(); openInfoTab(event, 'workedBoxDiv', 'showWorkedBox')"
>
Logbook
</button>
<button id="stabox" class="infoTablinks" onclick="openInfoTab(event, 'statBoxDiv', 'showStatBox');">
Scores
</button>
<button id="dxcbox" class="infoTablinks" onclick="openInfoTab(event, 'dxccBoxDiv', 'showDXCCsBox')">
DXCCs
</button>
<button id="cqzbox" class="infoTablinks" onclick="openInfoTab(event, 'cqzoneBoxDiv', 'showCQzoneBox')">
CQ Zones
</button>
<button id="itubox" class="infoTablinks" onclick="openInfoTab(event, 'ituzoneBoxDiv', 'showITUzoneBox')">
ITU Zones
</button>
<button
id="waswacbox"
class="infoTablinks"
onclick="openInfoTab(event, 'waswaczoneBoxDiv', 'showWASWACzoneBox')"
>
WAC / WAS
</button>
<button id="wpxbox" class="infoTablinks" onclick="openInfoTab(event, 'wpxBoxDiv', 'showWPXBox')">WPX</button>
<button id="calbox" class="infoTablinks" onclick="openInfoTab(event, 'callsignBoxDiv', 'showCallsignBox')">
Live
</button>
<button id="ldrbox" class="infoTablinks" onclick="openInfoTab(event, 'decodeLastDiv', null)">Decodes</button>
</div>
<div id="statBoxDiv" class="infoTabcontent">
<div id="statViewDiv" style="margin: 2px; padding: 2px; overflow: auto"></div>
</div>
<div id="dxccBoxDiv" class="infoTabcontent">
<div id="dxccListDiv" style="margin: 2px; padding: 2px; bottom: 5px"></div>
</div>
<div id="cqzoneBoxDiv" class="infoTabcontent">
<div id="cqzoneListDiv" style="margin: 2px; padding: 2px"></div>
</div>
<div id="ituzoneBoxDiv" class="infoTabcontent">
<div id="ituzoneListDiv" style="margin: 2px; padding: 2px"></div>
</div>
<div id="waswaczoneBoxDiv" class="infoTabcontent">
<div id="waswacListDiv" style="margin: 2px; padding: 2px"></div>
</div>
<div id="wpxBoxDiv" class="infoTabcontent">
<div id="wpxListDiv" style="margin: 2px; padding: 2px"></div>
</div>
<div id="workedBoxDiv" class="infoTabcontent">
<div id="workedHeadDiv"></div>
<div id="workedListDiv" style="margin: 2px; padding: 2px; overflow: auto"></div>
</div>
<div id="callsignBoxDiv" class="infoTabcontent">
<div id="callsignListDiv" style="margin: 2px; padding: 2px"></div>
</div>
<div id="decodeLastDiv" class="infoTabcontent">
<div id="decodeLastListDiv" style="margin: 2px; padding: 2px; overflow: auto; overflow-x: hidden">
No decodes yet
</div>
</div>
</div>
</body>
</html>
</body>
</html>

Plik diff jest za duży Load Diff

Plik diff jest za duży Load Diff

Wyświetl plik

@ -1,261 +1,296 @@
'use strict';
"use strict";
var D2R = Math.PI / 180;
var R2D = 180 / Math.PI;
var Coord = function(lon,lat) {
this.lon = lon;
this.lat = lat;
this.x = D2R * lon;
this.y = D2R * lat;
var Coord = function (lon, lat) {
this.lon = lon;
this.lat = lat;
this.x = D2R * lon;
this.y = D2R * lat;
};
Coord.prototype.view = function() {
return String(this.lon).slice(0, 4) + ',' + String(this.lat).slice(0, 4);
Coord.prototype.view = function () {
return String(this.lon).slice(0, 4) + "," + String(this.lat).slice(0, 4);
};
Coord.prototype.antipode = function() {
var anti_lat = -1 * this.lat;
var anti_lon = (this.lon < 0) ? 180 + this.lon : (180 - this.lon) * -1;
return new Coord(anti_lon, anti_lat);
Coord.prototype.antipode = function () {
var anti_lat = -1 * this.lat;
var anti_lon = this.lon < 0 ? 180 + this.lon : (180 - this.lon) * -1;
return new Coord(anti_lon, anti_lat);
};
var LineString = function() {
this.coords = [];
this.length = 0;
var LineString = function () {
this.coords = [];
this.length = 0;
};
LineString.prototype.move_to = function(coord) {
this.length++;
this.coords.push(coord);
LineString.prototype.move_to = function (coord) {
this.length++;
this.coords.push(coord);
};
var Arc = function(properties) {
this.properties = properties || {};
this.geometries = [];
var Arc = function (properties) {
this.properties = properties || {};
this.geometries = [];
};
Arc.prototype.json = function() {
if (this.geometries.length <= 0) {
return {'geometry': { 'type': 'LineString', 'coordinates': null },
'type': 'Feature', 'properties': this.properties
};
} else if (this.geometries.length == 1) {
return {'geometry': { 'type': 'LineString', 'coordinates': this.geometries[0].coords },
'type': 'Feature', 'properties': this.properties
};
} else {
var multiline = [];
for (var i = 0; i < this.geometries.length; i++) {
multiline.push(this.geometries[i].coords);
}
return {'geometry': { 'type': 'MultiLineString', 'coordinates': multiline },
'type': 'Feature', 'properties': this.properties
};
Arc.prototype.json = function () {
if (this.geometries.length <= 0) {
return {
geometry: { type: "LineString", coordinates: null },
type: "Feature",
properties: this.properties,
};
} else if (this.geometries.length == 1) {
return {
geometry: { type: "LineString", coordinates: this.geometries[0].coords },
type: "Feature",
properties: this.properties,
};
} else {
var multiline = [];
for (var i = 0; i < this.geometries.length; i++) {
multiline.push(this.geometries[i].coords);
}
return {
geometry: { type: "MultiLineString", coordinates: multiline },
type: "Feature",
properties: this.properties,
};
}
};
// TODO - output proper multilinestring
Arc.prototype.wkt = function() {
var wkt_string = '';
var wkt = 'LINESTRING(';
var collect = function(c) { wkt += c[0] + ' ' + c[1] + ','; };
for (var i = 0; i < this.geometries.length; i++) {
if (this.geometries[i].coords.length === 0) {
return 'LINESTRING(empty)';
} else {
var coords = this.geometries[i].coords;
coords.forEach(collect);
wkt_string += wkt.substring(0, wkt.length - 1) + ')';
}
Arc.prototype.wkt = function () {
var wkt_string = "";
var wkt = "LINESTRING(";
var collect = function (c) {
wkt += c[0] + " " + c[1] + ",";
};
for (var i = 0; i < this.geometries.length; i++) {
if (this.geometries[i].coords.length === 0) {
return "LINESTRING(empty)";
} else {
var coords = this.geometries[i].coords;
coords.forEach(collect);
wkt_string += wkt.substring(0, wkt.length - 1) + ")";
}
return wkt_string;
}
return wkt_string;
};
/*
* http://en.wikipedia.org/wiki/Great-circle_distance
*
*/
var GreatCircle = function(start,end,properties) {
if (!start || start.x === undefined || start.y === undefined) {
throw new Error("GreatCircle constructor expects two args: start and end objects with x and y properties");
}
if (!end || end.x === undefined || end.y === undefined) {
throw new Error("GreatCircle constructor expects two args: start and end objects with x and y properties");
}
this.start = new Coord(start.x,start.y);
this.end = new Coord(end.x,end.y);
this.properties = properties || {};
var GreatCircle = function (start, end, properties) {
if (!start || start.x === undefined || start.y === undefined) {
throw new Error(
"GreatCircle constructor expects two args: start and end objects with x and y properties"
);
}
if (!end || end.x === undefined || end.y === undefined) {
throw new Error(
"GreatCircle constructor expects two args: start and end objects with x and y properties"
);
}
this.start = new Coord(start.x, start.y);
this.end = new Coord(end.x, end.y);
this.properties = properties || {};
var w = this.start.x - this.end.x;
var h = this.start.y - this.end.y;
var z = Math.pow(Math.sin(h / 2.0), 2) +
Math.cos(this.start.y) *
Math.cos(this.end.y) *
Math.pow(Math.sin(w / 2.0), 2);
this.g = 2.0 * Math.asin(Math.sqrt(z));
var w = this.start.x - this.end.x;
var h = this.start.y - this.end.y;
var z =
Math.pow(Math.sin(h / 2.0), 2) +
Math.cos(this.start.y) *
Math.cos(this.end.y) *
Math.pow(Math.sin(w / 2.0), 2);
this.g = 2.0 * Math.asin(Math.sqrt(z));
if (this.g == Math.PI) {
throw new Error('it appears ' + start.view() + ' and ' + end.view() + " are 'antipodal', e.g diametrically opposite, thus there is no single route but rather infinite");
} else if (isNaN(this.g)) {
throw new Error('could not calculate great circle between ' + start + ' and ' + end);
}
if (this.g == Math.PI) {
throw new Error(
"it appears " +
start.view() +
" and " +
end.view() +
" are 'antipodal', e.g diametrically opposite, thus there is no single route but rather infinite"
);
} else if (isNaN(this.g)) {
throw new Error(
"could not calculate great circle between " + start + " and " + end
);
}
};
/*
* http://williams.best.vwh.net/avform.htm#Intermediate
*/
GreatCircle.prototype.interpolate = function(f) {
var A = Math.sin((1 - f) * this.g) / Math.sin(this.g);
var B = Math.sin(f * this.g) / Math.sin(this.g);
var x = A * Math.cos(this.start.y) * Math.cos(this.start.x) + B * Math.cos(this.end.y) * Math.cos(this.end.x);
var y = A * Math.cos(this.start.y) * Math.sin(this.start.x) + B * Math.cos(this.end.y) * Math.sin(this.end.x);
var z = A * Math.sin(this.start.y) + B * Math.sin(this.end.y);
var lat = R2D * Math.atan2(z, Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)));
var lon = R2D * Math.atan2(y, x);
return [lon, lat];
GreatCircle.prototype.interpolate = function (f) {
var A = Math.sin((1 - f) * this.g) / Math.sin(this.g);
var B = Math.sin(f * this.g) / Math.sin(this.g);
var x =
A * Math.cos(this.start.y) * Math.cos(this.start.x) +
B * Math.cos(this.end.y) * Math.cos(this.end.x);
var y =
A * Math.cos(this.start.y) * Math.sin(this.start.x) +
B * Math.cos(this.end.y) * Math.sin(this.end.x);
var z = A * Math.sin(this.start.y) + B * Math.sin(this.end.y);
var lat = R2D * Math.atan2(z, Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)));
var lon = R2D * Math.atan2(y, x);
return [lon, lat];
};
/*
* Generate points along the great circle
*/
GreatCircle.prototype.Arc = function(npoints,options) {
var first_pass = [];
if (!npoints || npoints <= 2) {
first_pass.push([this.start.lon, this.start.lat]);
first_pass.push([this.end.lon, this.end.lat]);
} else {
var delta = 1.0 / (npoints - 1);
for (var i = 0; i < npoints; ++i) {
var step = delta * i;
var pair = this.interpolate(step);
first_pass.push(pair);
}
GreatCircle.prototype.Arc = function (npoints, options) {
var first_pass = [];
if (!npoints || npoints <= 2) {
first_pass.push([this.start.lon, this.start.lat]);
first_pass.push([this.end.lon, this.end.lat]);
} else {
var delta = 1.0 / (npoints - 1);
for (var i = 0; i < npoints; ++i) {
var step = delta * i;
var pair = this.interpolate(step);
first_pass.push(pair);
}
/* partial port of dateline handling from:
}
/* partial port of dateline handling from:
gdal/ogr/ogrgeometryfactory.cpp
TODO - does not handle all wrapping scenarios yet
*/
var bHasBigDiff = false;
var dfMaxSmallDiffLong = 0;
// from http://www.gdal.org/ogr2ogr.html
// -datelineoffset:
// (starting with GDAL 1.10) offset from dateline in degrees (default long. = +/- 10deg, geometries within 170deg to -170deg will be splited)
var dfDateLineOffset = options && options.offset ? options.offset : 10;
var dfLeftBorderX = 180 - dfDateLineOffset;
var dfRightBorderX = -180 + dfDateLineOffset;
var dfDiffSpace = 360 - dfDateLineOffset;
var bHasBigDiff = false;
var dfMaxSmallDiffLong = 0;
// from http://www.gdal.org/ogr2ogr.html
// -datelineoffset:
// (starting with GDAL 1.10) offset from dateline in degrees (default long. = +/- 10deg, geometries within 170deg to -170deg will be splited)
var dfDateLineOffset = options && options.offset ? options.offset : 10;
var dfLeftBorderX = 180 - dfDateLineOffset;
var dfRightBorderX = -180 + dfDateLineOffset;
var dfDiffSpace = 360 - dfDateLineOffset;
// https://github.com/OSGeo/gdal/blob/7bfb9c452a59aac958bff0c8386b891edf8154ca/gdal/ogr/ogrgeometryfactory.cpp#L2342
for (var j = 1; j < first_pass.length; ++j) {
var dfPrevX = first_pass[j-1][0];
var dfX = first_pass[j][0];
var dfDiffLong = Math.abs(dfX - dfPrevX);
if (dfDiffLong > dfDiffSpace &&
((dfX > dfLeftBorderX && dfPrevX < dfRightBorderX) || (dfPrevX > dfLeftBorderX && dfX < dfRightBorderX))) {
bHasBigDiff = true;
} else if (dfDiffLong > dfMaxSmallDiffLong) {
dfMaxSmallDiffLong = dfDiffLong;
}
// https://github.com/OSGeo/gdal/blob/7bfb9c452a59aac958bff0c8386b891edf8154ca/gdal/ogr/ogrgeometryfactory.cpp#L2342
for (var j = 1; j < first_pass.length; ++j) {
var dfPrevX = first_pass[j - 1][0];
var dfX = first_pass[j][0];
var dfDiffLong = Math.abs(dfX - dfPrevX);
if (
dfDiffLong > dfDiffSpace &&
((dfX > dfLeftBorderX && dfPrevX < dfRightBorderX) ||
(dfPrevX > dfLeftBorderX && dfX < dfRightBorderX))
) {
bHasBigDiff = true;
} else if (dfDiffLong > dfMaxSmallDiffLong) {
dfMaxSmallDiffLong = dfDiffLong;
}
}
var poMulti = [];
if (bHasBigDiff && dfMaxSmallDiffLong < dfDateLineOffset) {
var poNewLS = [];
poMulti.push(poNewLS);
for (var k = 0; k < first_pass.length; ++k) {
var dfX0 = parseFloat(first_pass[k][0]);
if (k > 0 && Math.abs(dfX0 - first_pass[k-1][0]) > dfDiffSpace) {
var dfX1 = parseFloat(first_pass[k-1][0]);
var dfY1 = parseFloat(first_pass[k-1][1]);
var dfX2 = parseFloat(first_pass[k][0]);
var dfY2 = parseFloat(first_pass[k][1]);
if (dfX1 > -180 && dfX1 < dfRightBorderX && dfX2 == 180 &&
k+1 < first_pass.length &&
first_pass[k-1][0] > -180 && first_pass[k-1][0] < dfRightBorderX)
{
poNewLS.push([-180, first_pass[k][1]]);
k++;
poNewLS.push([first_pass[k][0], first_pass[k][1]]);
continue;
} else if (dfX1 > dfLeftBorderX && dfX1 < 180 && dfX2 == -180 &&
k+1 < first_pass.length &&
first_pass[k-1][0] > dfLeftBorderX && first_pass[k-1][0] < 180)
{
poNewLS.push([180, first_pass[k][1]]);
k++;
poNewLS.push([first_pass[k][0], first_pass[k][1]]);
continue;
}
if (dfX1 < dfRightBorderX && dfX2 > dfLeftBorderX)
{
// swap dfX1, dfX2
var tmpX = dfX1;
dfX1 = dfX2;
dfX2 = tmpX;
// swap dfY1, dfY2
var tmpY = dfY1;
dfY1 = dfY2;
dfY2 = tmpY;
}
if (dfX1 > dfLeftBorderX && dfX2 < dfRightBorderX) {
dfX2 += 360;
}
if (dfX1 <= 180 && dfX2 >= 180 && dfX1 < dfX2)
{
var dfRatio = (180 - dfX1) / (dfX2 - dfX1);
var dfY = dfRatio * dfY2 + (1 - dfRatio) * dfY1;
poNewLS.push([first_pass[k-1][0] > dfLeftBorderX ? 180 : -180, dfY]);
poNewLS = [];
poNewLS.push([first_pass[k-1][0] > dfLeftBorderX ? -180 : 180, dfY]);
poMulti.push(poNewLS);
}
else
{
poNewLS = [];
poMulti.push(poNewLS);
}
poNewLS.push([dfX0, first_pass[k][1]]);
} else {
poNewLS.push([first_pass[k][0], first_pass[k][1]]);
}
var poMulti = [];
if (bHasBigDiff && dfMaxSmallDiffLong < dfDateLineOffset) {
var poNewLS = [];
poMulti.push(poNewLS);
for (var k = 0; k < first_pass.length; ++k) {
var dfX0 = parseFloat(first_pass[k][0]);
if (k > 0 && Math.abs(dfX0 - first_pass[k - 1][0]) > dfDiffSpace) {
var dfX1 = parseFloat(first_pass[k - 1][0]);
var dfY1 = parseFloat(first_pass[k - 1][1]);
var dfX2 = parseFloat(first_pass[k][0]);
var dfY2 = parseFloat(first_pass[k][1]);
if (
dfX1 > -180 &&
dfX1 < dfRightBorderX &&
dfX2 == 180 &&
k + 1 < first_pass.length &&
first_pass[k - 1][0] > -180 &&
first_pass[k - 1][0] < dfRightBorderX
) {
poNewLS.push([-180, first_pass[k][1]]);
k++;
poNewLS.push([first_pass[k][0], first_pass[k][1]]);
continue;
} else if (
dfX1 > dfLeftBorderX &&
dfX1 < 180 &&
dfX2 == -180 &&
k + 1 < first_pass.length &&
first_pass[k - 1][0] > dfLeftBorderX &&
first_pass[k - 1][0] < 180
) {
poNewLS.push([180, first_pass[k][1]]);
k++;
poNewLS.push([first_pass[k][0], first_pass[k][1]]);
continue;
}
} else {
// add normally
var poNewLS0 = [];
poMulti.push(poNewLS0);
for (var l = 0; l < first_pass.length; ++l) {
poNewLS0.push([first_pass[l][0],first_pass[l][1]]);
if (dfX1 < dfRightBorderX && dfX2 > dfLeftBorderX) {
// swap dfX1, dfX2
var tmpX = dfX1;
dfX1 = dfX2;
dfX2 = tmpX;
// swap dfY1, dfY2
var tmpY = dfY1;
dfY1 = dfY2;
dfY2 = tmpY;
}
if (dfX1 > dfLeftBorderX && dfX2 < dfRightBorderX) {
dfX2 += 360;
}
if (dfX1 <= 180 && dfX2 >= 180 && dfX1 < dfX2) {
var dfRatio = (180 - dfX1) / (dfX2 - dfX1);
var dfY = dfRatio * dfY2 + (1 - dfRatio) * dfY1;
poNewLS.push([
first_pass[k - 1][0] > dfLeftBorderX ? 180 : -180,
dfY,
]);
poNewLS = [];
poNewLS.push([
first_pass[k - 1][0] > dfLeftBorderX ? -180 : 180,
dfY,
]);
poMulti.push(poNewLS);
} else {
poNewLS = [];
poMulti.push(poNewLS);
}
poNewLS.push([dfX0, first_pass[k][1]]);
} else {
poNewLS.push([first_pass[k][0], first_pass[k][1]]);
}
}
var arc = new Arc(this.properties);
for (var m = 0; m < poMulti.length; ++m) {
var line = new LineString();
arc.geometries.push(line);
var points = poMulti[m];
for (var j0 = 0; j0 < points.length; ++j0) {
line.move_to(points[j0]);
}
} else {
// add normally
var poNewLS0 = [];
poMulti.push(poNewLS0);
for (var l = 0; l < first_pass.length; ++l) {
poNewLS0.push([first_pass[l][0], first_pass[l][1]]);
}
return arc;
}
var arc = new Arc(this.properties);
for (var m = 0; m < poMulti.length; ++m) {
var line = new LineString();
arc.geometries.push(line);
var points = poMulti[m];
for (var j0 = 0; j0 < points.length; ++j0) {
line.move_to(points[j0]);
}
}
return arc;
};
if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {
if (typeof module !== "undefined" && typeof module.exports !== "undefined") {
// nodejs
module.exports.Coord = Coord;
module.exports.Arc = Arc;
module.exports.GreatCircle = GreatCircle;
} else {
// browser
var arc = {};
arc.Coord = Coord;
arc.Arc = Arc;
arc.GreatCircle = GreatCircle;
}
}

Wyświetl plik

@ -1,269 +1,249 @@
var validSettings =
[
"HRDLogbookLogSettings",
"N1MMSettings",
"acLogSettings",
"adifLogSettings",
"alertSettings",
"appSettings",
"audioSettings",
"awardTracker",
"bandActivity",
"blockedCQ",
"blockedCalls",
"blockedDxcc",
"callsignLookups",
"classicAlerts",
"classicAlertsVersion",
"currentVersion",
"dxkLogSettings",
"log4OMSettings",
"mapMemory",
"mapSettings",
"msgSettings",
"receptionSettings",
"rosterSettings",
"savedAlerts",
"speechSettings",
"startupLogs",
"trustedQslSettings",
"screenSettings"
var validSettings = [
"HRDLogbookLogSettings",
"N1MMSettings",
"acLogSettings",
"adifLogSettings",
"alertSettings",
"appSettings",
"audioSettings",
"awardTracker",
"bandActivity",
"blockedCQ",
"blockedCalls",
"blockedDxcc",
"callsignLookups",
"classicAlerts",
"classicAlertsVersion",
"currentVersion",
"dxkLogSettings",
"log4OMSettings",
"mapMemory",
"mapSettings",
"msgSettings",
"receptionSettings",
"rosterSettings",
"savedAlerts",
"speechSettings",
"startupLogs",
"trustedQslSettings",
"screenSettings",
];
var def_appSettings =
{
"alertMute" : 0,
"rosterAlwaysOnTop": false,
"centerGridsquare" : "",
"chatUUID" : "",
"crScript" : 0,
"distanceUnit" : "MI",
"earthImgSrc" : 0,
"gridViewMode" : 3,
"gridsquareDecayTime" : 300,
"gtAgree" : "",
"gtBandFilter" : "",
"gtFlagImgSrc" : 0,
"gtModeFilter" : "",
"gtPropFilter" : "mixed",
"gtMsgEnable" : true,
"gtShareEnable" : true,
"heatEnabled" : 0,
"loadAdifAtStartup" : false,
"lookupLoginCq" : "",
"lookupLoginQrz" : "",
"lookupLoginQth" : "",
"lookupOnTx" : false,
"lookupCloseLog": true,
"lookupMerge" : true,
"lookupMissingGrid" : false,
"lookupPasswordCq" : "",
"lookupPasswordQrz" : "",
"lookupPasswordQth" : "",
"lookupService" : "CALLOOK",
"moonPath" : 0,
"moonTrack" : 0,
"mouseTrack" : 0,
"multicast" : false,
"myBand": "OOB",
"myDEGrid": "",
"myDEcall": "NOCALL",
"myMode": "",
"myRawCall": "NOCALL",
"myRawFreq": "",
"myRawGrid": "",
"pathWidthWeight" : 1.0,
"pushPinMode" : false,
"qrzPathWidthWeight" : 1.2,
"sixWideMode" : 0,
"savedAppData": null,
"soundCard" : "default",
"spotsEnabled" : 0,
"stopAskingVersion" : false,
"useLocalTime" : 0,
"wsjtForwardUdpEnable" : false,
"wsjtForwardUdpIp" : "127.0.0.1",
"wsjtForwardUdpPort" : 2238,
"wsjtIP" : "",
"wsjtUdpPort" : 0,
"workingCallsignEnable" : false,
"workingCallsigns" : {},
"workingDateEnable": false,
"workingDate" : 0,
"gtSpotEnable" : true
var def_appSettings = {
alertMute: 0,
rosterAlwaysOnTop: false,
centerGridsquare: "",
chatUUID: "",
crScript: 0,
distanceUnit: "MI",
earthImgSrc: 0,
gridViewMode: 3,
gridsquareDecayTime: 300,
gtAgree: "",
gtBandFilter: "",
gtFlagImgSrc: 0,
gtModeFilter: "",
gtPropFilter: "mixed",
gtMsgEnable: true,
gtShareEnable: true,
heatEnabled: 0,
loadAdifAtStartup: false,
lookupLoginCq: "",
lookupLoginQrz: "",
lookupLoginQth: "",
lookupOnTx: false,
lookupCloseLog: true,
lookupMerge: true,
lookupMissingGrid: false,
lookupPasswordCq: "",
lookupPasswordQrz: "",
lookupPasswordQth: "",
lookupService: "CALLOOK",
moonPath: 0,
moonTrack: 0,
mouseTrack: 0,
multicast: false,
myBand: "OOB",
myDEGrid: "",
myDEcall: "NOCALL",
myMode: "",
myRawCall: "NOCALL",
myRawFreq: "",
myRawGrid: "",
pathWidthWeight: 1.0,
pushPinMode: false,
qrzPathWidthWeight: 1.2,
sixWideMode: 0,
savedAppData: null,
soundCard: "default",
spotsEnabled: 0,
stopAskingVersion: false,
useLocalTime: 0,
wsjtForwardUdpEnable: false,
wsjtForwardUdpIp: "127.0.0.1",
wsjtForwardUdpPort: 2238,
wsjtIP: "",
wsjtUdpPort: 0,
workingCallsignEnable: false,
workingCallsigns: {},
workingDateEnable: false,
workingDate: 0,
gtSpotEnable: true,
};
var def_mapSettings =
{
"animate" : true,
"animateSpeed" : 4,
"CQhilite" : true,
"fitQRZ" : false,
"focusRig" : true,
"gridAlpha" : 136,
"haltAllOnTx" : true,
"legend" : true,
"longitude" : 0.0,
"latitude" : 0.0,
"loudness" : 1,
"mapIndex" : 19,
"mergeOverlay" : false,
"mouseOver" : true,
"nightLoudness" : 0.8,
"nightMapEnable" : false,
"nightMapIndex" : 20,
"nightPathColor" : 361,
"nightQrzPathColor" : 1,
"offlineMode" : false,
"pathColor" : 0,
"qrzDxccFallback" : false,
"qrzPathColor" : 1,
"rosterTime" : 120,
"shadow" : 0.1,
"splitQSL" : true,
"strikes" : false,
"strikesAlert" : 2,
"strikesGlobal" : false,
"strikesNotify" : false,
"trafficDecode" : true,
"usNexrad" : false,
"zoom" : 4,
"mapTrans" : 0.5
var def_mapSettings = {
animate: true,
animateSpeed: 4,
CQhilite: true,
fitQRZ: false,
focusRig: true,
gridAlpha: 136,
haltAllOnTx: true,
legend: true,
longitude: 0.0,
latitude: 0.0,
loudness: 1,
mapIndex: 19,
mergeOverlay: false,
mouseOver: true,
nightLoudness: 0.8,
nightMapEnable: false,
nightMapIndex: 20,
nightPathColor: 361,
nightQrzPathColor: 1,
offlineMode: false,
pathColor: 0,
qrzDxccFallback: false,
qrzPathColor: 1,
rosterTime: 120,
shadow: 0.1,
splitQSL: true,
strikes: false,
strikesAlert: 2,
strikesGlobal: false,
strikesNotify: false,
trafficDecode: true,
usNexrad: false,
zoom: 4,
mapTrans: 0.5,
};
var def_adifLogSettings =
{
"menu": {
"buttonAdifCheckBox": false,
"buttonClubCheckBox": false,
"buttonLOTWCheckBox": false,
"buttonQRZCheckBox": false,
"buttonPsk24CheckBox": true
},
"startup": {
"loadAdifCheckBox": false,
"loadPsk24CheckBox": false,
"loadQRZCheckBox": false,
"loadLOTWCheckBox": false,
"loadClubCheckBox": false,
"loadGTCheckBox": true
},
"qsolog": {
"logQRZqsoCheckBox": false,
"logGTqsoCheckBox": true,
"logLOTWqsoCheckBox": false,
"logHRDLOGqsoCheckBox": false,
"logClubqsoCheckBox": false,
"logCloudlogQSOCheckBox": false,
"logeQSLQSOCheckBox": false
},
"nickname": {
"nicknameeQSLCheckBox": false,
},
"text": {
"lotwLogin": "",
"clubCall": "",
"clubEmail": "",
"clubPassword": "",
"lotwPassword": "",
"lotwTrusted": "",
"lotwStation": "",
"qrzApiKey": "",
"HRDLOGCallsign": "",
"HRDLOGUploadCode": "",
"CloudlogURL":"http://127.0.0.1/index.php/api/qso",
"CloudlogAPI":"",
"eQSLUser":"",
"eQSLPassword":"",
"eQSLNickname":""
},
"downloads": {}
var def_adifLogSettings = {
menu: {
buttonAdifCheckBox: false,
buttonClubCheckBox: false,
buttonLOTWCheckBox: false,
buttonQRZCheckBox: false,
buttonPsk24CheckBox: true,
},
startup: {
loadAdifCheckBox: false,
loadPsk24CheckBox: false,
loadQRZCheckBox: false,
loadLOTWCheckBox: false,
loadClubCheckBox: false,
loadGTCheckBox: true,
},
qsolog: {
logQRZqsoCheckBox: false,
logGTqsoCheckBox: true,
logLOTWqsoCheckBox: false,
logHRDLOGqsoCheckBox: false,
logClubqsoCheckBox: false,
logCloudlogQSOCheckBox: false,
logeQSLQSOCheckBox: false,
},
nickname: {
nicknameeQSLCheckBox: false,
},
text: {
lotwLogin: "",
clubCall: "",
clubEmail: "",
clubPassword: "",
lotwPassword: "",
lotwTrusted: "",
lotwStation: "",
qrzApiKey: "",
HRDLOGCallsign: "",
HRDLOGUploadCode: "",
CloudlogURL: "http://127.0.0.1/index.php/api/qso",
CloudlogAPI: "",
eQSLUser: "",
eQSLPassword: "",
eQSLNickname: "",
},
downloads: {},
};
var def_msgSettings =
{
"msgAlertSelect" : 1,
"msgAlertWord" : "New chat message",
"msgAlertMedia" : "none",
"msgFrequencySelect" : 0,
"msgActionSelect" : 0,
"msgAwaySelect" : 0,
"msgAwayText" : "I am away from the shack at the moment"
var def_msgSettings = {
msgAlertSelect: 1,
msgAlertWord: "New chat message",
msgAlertMedia: "none",
msgFrequencySelect: 0,
msgActionSelect: 0,
msgAwaySelect: 0,
msgAwayText: "I am away from the shack at the moment",
};
var def_receptionSettings =
{
"lastSequenceNumber" : "0", // Treat as a string, it's friggin big
"lastDownloadTimeSec" : 0,
"viewHistoryTimeSec" : 900,
"viewPaths" : false,
"pathColor" : -1,
"pathNightColor" : 361,
"spotWidth" : 0.8,
"mergeSpots" : false
var def_receptionSettings = {
lastSequenceNumber: "0", // Treat as a string, it's friggin big
lastDownloadTimeSec: 0,
viewHistoryTimeSec: 900,
viewPaths: false,
pathColor: -1,
pathNightColor: 361,
spotWidth: 0.8,
mergeSpots: false,
};
var def_N1MMSettings =
{
"enable" : false,
"port" : 2333,
"ip" : "127.0.0.1"
var def_N1MMSettings = {
enable: false,
port: 2333,
ip: "127.0.0.1",
};
var def_log4OMSettings =
{
"enable" : false,
"port" : 2236,
"ip" : "127.0.0.1"
var def_log4OMSettings = {
enable: false,
port: 2236,
ip: "127.0.0.1",
};
var def_dxkLogSettings =
{
"enable" : false,
"port" : 52000,
"ip" : "127.0.0.1"
var def_dxkLogSettings = {
enable: false,
port: 52000,
ip: "127.0.0.1",
};
var def_HRDLogbookLogSettings =
{
"enable" : false,
"port" : 7826,
"ip" : "127.0.0.1"
var def_HRDLogbookLogSettings = {
enable: false,
port: 7826,
ip: "127.0.0.1",
};
var def_acLogSettings =
{
"enable" : false,
"port" : 1100,
"ip" : "127.0.0.1"
var def_acLogSettings = {
enable: false,
port: 1100,
ip: "127.0.0.1",
};
var def_trustedQslSettings =
{
"stationFile" : "",
"stationFileValid" : false,
"binaryFile" : "",
"binaryFileValid" : false
var def_trustedQslSettings = {
stationFile: "",
stationFileValid: false,
binaryFile: "",
binaryFileValid: false,
};
var def_callsignLookups =
{
"lotwUseEnable" : true,
"lotwWeeklyEnable" : true,
"lotwLastUpdate" : 0,
"eqslUseEnable" : true,
"eqslWeeklyEnable" : true,
"eqslLastUpdate" : 0,
"ulsUseEnable" : true,
"ulsWeeklyEnable" : true,
"ulsLastUpdate" : 0,
"oqrsUseEnable" : false,
"oqrsWeeklyEnable" : false,
"oqrsLastUpdate" : 0
var def_callsignLookups = {
lotwUseEnable: true,
lotwWeeklyEnable: true,
lotwLastUpdate: 0,
eqslUseEnable: true,
eqslWeeklyEnable: true,
eqslLastUpdate: 0,
ulsUseEnable: true,
ulsWeeklyEnable: true,
ulsLastUpdate: 0,
oqrsUseEnable: false,
oqrsWeeklyEnable: false,
oqrsLastUpdate: 0,
};
var def_bandActivity =
{
"lastUpdate" : {},
"lines" : {}
var def_bandActivity = {
lastUpdate: {},
lines: {},
};

Wyświetl plik

@ -5,7 +5,7 @@
left: 0;
width: 100vw;
height: 100vh;
background: rgba(0,0,0,0.5);
background: rgba(0, 0, 0, 0.5);
opacity: 0;
visibility: hidden;
transition: opacity 0.2s;
@ -14,28 +14,28 @@
opacity: 1;
visibility: visible;
}
.picker-wrap .picker{
.picker-wrap .picker {
margin: 50vh auto 0 auto;
transform: translateY(-50%)
transform: translateY(-50%);
}
/* [CONTAINER] */
.picker {
max-width: 200px;
border: 1px solid #444;
-webkit-border-radius:6px;
-webkit-border-radius: 6px;
background: #444;
border-style:outset;
border-style: outset;
padding: 5px;
}
.picker:hover
{
border: 1px solid #888;
.picker:hover {
border: 1px solid #888;
}
/* [MONTH + YEAR] */
.picker-m, .picker-y {
.picker-m,
.picker-y {
width: 25%;
padding: 5px;
box-sizing: border-box;
@ -71,4 +71,4 @@
.picker-d-dd {
color: #888;
background: #4e4e4e;
}
}

Wyświetl plik

@ -1,68 +1,67 @@
function hooray(){
var SCREEN_WIDTH = window.innerWidth,
function hooray() {
var SCREEN_WIDTH = window.innerWidth,
SCREEN_HEIGHT = window.innerHeight,
mousePos = {
x: 400,
y: 300
x: 400,
y: 300,
},
// create canvas
canvas = document.createElement('canvas'),
context = canvas.getContext('2d'),
canvas = document.createElement("canvas"),
context = canvas.getContext("2d"),
particles = [],
rockets = [],
MAX_PARTICLES = 400,
colorCode = 0;
// init
$(document).ready(function() {
// init
$(document).ready(function () {
document.body.appendChild(canvas);
canvas.width = SCREEN_WIDTH;
canvas.height = SCREEN_HEIGHT;
setInterval(launch, 800);
setInterval(loop, 1000 / 50);
});
});
// update mouse position
$(document).mousemove(function(e) {
// update mouse position
$(document).mousemove(function (e) {
e.preventDefault();
mousePos = {
x: e.clientX,
y: e.clientY
x: e.clientX,
y: e.clientY,
};
});
});
// launch more rockets!!!
$(document).mousedown(function(e) {
// launch more rockets!!!
$(document).mousedown(function (e) {
for (var i = 0; i < 5; i++) {
launchFrom(Math.random() * SCREEN_WIDTH * 2 / 3 + SCREEN_WIDTH / 6);
launchFrom((Math.random() * SCREEN_WIDTH * 2) / 3 + SCREEN_WIDTH / 6);
}
});
});
function launch() {
function launch() {
launchFrom(mousePos.x);
}
}
function launchFrom(x) {
function launchFrom(x) {
if (rockets.length < 10) {
var rocket = new Rocket(x);
rocket.explosionColor = Math.floor(Math.random() * 360 / 10) * 10;
rocket.vel.y = Math.random() * -3 - 4;
rocket.vel.x = Math.random() * 6 - 3;
rocket.size = 8;
rocket.shrink = 0.999;
rocket.gravity = 0.01;
rockets.push(rocket);
var rocket = new Rocket(x);
rocket.explosionColor = Math.floor((Math.random() * 360) / 10) * 10;
rocket.vel.y = Math.random() * -3 - 4;
rocket.vel.x = Math.random() * 6 - 3;
rocket.size = 8;
rocket.shrink = 0.999;
rocket.gravity = 0.01;
rockets.push(rocket);
}
}
}
function loop() {
function loop() {
// update screen size
if (SCREEN_WIDTH != window.innerWidth) {
canvas.width = SCREEN_WIDTH = window.innerWidth;
canvas.width = SCREEN_WIDTH = window.innerWidth;
}
if (SCREEN_HEIGHT != window.innerHeight) {
canvas.height = SCREEN_HEIGHT = window.innerHeight;
canvas.height = SCREEN_HEIGHT = window.innerHeight;
}
// clear canvas
@ -72,27 +71,38 @@ function loop() {
var existingRockets = [];
for (var i = 0; i < rockets.length; i++) {
// update and render
rockets[i].update();
rockets[i].render(context);
// update and render
rockets[i].update();
rockets[i].render(context);
// calculate distance with Pythagoras
var distance = Math.sqrt(Math.pow(mousePos.x - rockets[i].pos.x, 2) + Math.pow(mousePos.y - rockets[i].pos.y, 2));
// calculate distance with Pythagoras
var distance = Math.sqrt(
Math.pow(mousePos.x - rockets[i].pos.x, 2) +
Math.pow(mousePos.y - rockets[i].pos.y, 2)
);
// random chance of 1% if rockets is above the middle
var randomChance = rockets[i].pos.y < (SCREEN_HEIGHT * 2 / 3) ? (Math.random() * 100 <= 1) : false;
// random chance of 1% if rockets is above the middle
var randomChance =
rockets[i].pos.y < (SCREEN_HEIGHT * 2) / 3
? Math.random() * 100 <= 1
: false;
/* Explosion rules
/* Explosion rules
- 80% of screen
- going down
- close to the mouse
- 1% chance of random explosion
*/
if (rockets[i].pos.y < SCREEN_HEIGHT / 5 || rockets[i].vel.y >= 0 || distance < 50 || randomChance) {
rockets[i].explode();
} else {
existingRockets.push(rockets[i]);
}
if (
rockets[i].pos.y < SCREEN_HEIGHT / 5 ||
rockets[i].vel.y >= 0 ||
distance < 50 ||
randomChance
) {
rockets[i].explode();
} else {
existingRockets.push(rockets[i]);
}
}
rockets = existingRockets;
@ -100,33 +110,33 @@ function loop() {
var existingParticles = [];
for (var i = 0; i < particles.length; i++) {
particles[i].update();
particles[i].update();
// render and save particles that can be rendered
if (particles[i].exists()) {
particles[i].render(context);
existingParticles.push(particles[i]);
}
// render and save particles that can be rendered
if (particles[i].exists()) {
particles[i].render(context);
existingParticles.push(particles[i]);
}
}
// update array with existing particles - old particles should be garbage collected
particles = existingParticles;
while (particles.length > MAX_PARTICLES) {
particles.shift();
particles.shift();
}
}
}
function Particle(pos) {
function Particle(pos) {
this.pos = {
x: pos ? pos.x : 0,
y: pos ? pos.y : 0
x: pos ? pos.x : 0,
y: pos ? pos.y : 0,
};
this.vel = {
x: 0,
y: 0
x: 0,
y: 0,
};
this.shrink = .97;
this.shrink = 0.97;
this.size = 2;
this.resistance = 1;
@ -137,9 +147,9 @@ function Particle(pos) {
this.alpha = 1;
this.fade = 0;
this.color = 0;
}
}
Particle.prototype.update = function() {
Particle.prototype.update = function () {
// apply resistance
this.vel.x *= this.resistance;
this.vel.y *= this.resistance;
@ -156,89 +166,102 @@ Particle.prototype.update = function() {
// fade out
this.alpha -= this.fade;
};
};
Particle.prototype.render = function(c) {
Particle.prototype.render = function (c) {
if (!this.exists()) {
return;
return;
}
c.save();
c.globalCompositeOperation = 'lighter';
c.globalCompositeOperation = "lighter";
var x = this.pos.x,
y = this.pos.y,
r = this.size / 2;
y = this.pos.y,
r = this.size / 2;
var gradient = c.createRadialGradient(x, y, 0.1, x, y, r);
gradient.addColorStop(0.1, "rgba(255,255,255," + this.alpha + ")");
gradient.addColorStop(0.8, "hsla(" + this.color + ", 100%, 50%, " + this.alpha + ")");
gradient.addColorStop(
0.8,
"hsla(" + this.color + ", 100%, 50%, " + this.alpha + ")"
);
gradient.addColorStop(1, "hsla(" + this.color + ", 100%, 50%, 0.1)");
c.fillStyle = gradient;
c.beginPath();
c.arc(this.pos.x, this.pos.y, this.flick ? Math.random() * this.size : this.size, 0, Math.PI * 2, true);
c.arc(
this.pos.x,
this.pos.y,
this.flick ? Math.random() * this.size : this.size,
0,
Math.PI * 2,
true
);
c.closePath();
c.fill();
c.restore();
};
};
Particle.prototype.exists = function() {
Particle.prototype.exists = function () {
return this.alpha >= 0.1 && this.size >= 1;
};
};
function Rocket(x) {
Particle.apply(this, [{
function Rocket(x) {
Particle.apply(this, [
{
x: x,
y: SCREEN_HEIGHT}]);
y: SCREEN_HEIGHT,
},
]);
this.explosionColor = 0;
}
}
Rocket.prototype = new Particle();
Rocket.prototype.constructor = Rocket;
Rocket.prototype = new Particle();
Rocket.prototype.constructor = Rocket;
Rocket.prototype.explode = function() {
Rocket.prototype.explode = function () {
var count = Math.random() * 10 + 80;
for (var i = 0; i < count; i++) {
var particle = new Particle(this.pos);
var angle = Math.random() * Math.PI * 2;
var particle = new Particle(this.pos);
var angle = Math.random() * Math.PI * 2;
// emulate 3D effect by using cosine and put more particles in the middle
var speed = Math.cos(Math.random() * Math.PI / 2) * 15;
// emulate 3D effect by using cosine and put more particles in the middle
var speed = Math.cos((Math.random() * Math.PI) / 2) * 15;
particle.vel.x = Math.cos(angle) * speed;
particle.vel.y = Math.sin(angle) * speed;
particle.vel.x = Math.cos(angle) * speed;
particle.vel.y = Math.sin(angle) * speed;
particle.size = 10;
particle.size = 10;
particle.gravity = 0.2;
particle.resistance = 0.92;
particle.shrink = Math.random() * 0.05 + 0.93;
particle.gravity = 0.2;
particle.resistance = 0.92;
particle.shrink = Math.random() * 0.05 + 0.93;
particle.flick = true;
particle.color = this.explosionColor;
particle.flick = true;
particle.color = this.explosionColor;
particles.push(particle);
particles.push(particle);
}
};
};
Rocket.prototype.render = function(c) {
Rocket.prototype.render = function (c) {
if (!this.exists()) {
return;
return;
}
c.save();
c.globalCompositeOperation = 'lighter';
c.globalCompositeOperation = "lighter";
var x = this.pos.x,
y = this.pos.y,
r = this.size / 2;
y = this.pos.y,
r = this.size / 2;
var gradient = c.createRadialGradient(x, y, 0.1, x, y, r);
gradient.addColorStop(0.1, "rgba(255, 255, 255 ," + this.alpha + ")");
@ -247,10 +270,17 @@ Rocket.prototype.render = function(c) {
c.fillStyle = gradient;
c.beginPath();
c.arc(this.pos.x, this.pos.y, this.flick ? Math.random() * this.size / 2 + this.size / 2 : this.size, 0, Math.PI * 2, true);
c.arc(
this.pos.x,
this.pos.y,
this.flick ? (Math.random() * this.size) / 2 + this.size / 2 : this.size,
0,
Math.PI * 2,
true
);
c.closePath();
c.fill();
c.restore();
};
}
};
}

Plik diff jest za duży Load Diff

Plik diff jest za duży Load Diff

Wyświetl plik

@ -1,2 +1,276 @@
.ol-box{box-sizing:border-box;border-radius:2px;border:2px solid #00f}.ol-mouse-position{top:8px;right:8px;position:absolute}.ol-scale-line{background:rgba(0,60,136,.3);border-radius:4px;bottom:8px;left:8px;padding:2px;position:absolute}.ol-scale-line-inner{border:1px solid #eee;border-top:none;color:#eee;font-size:10px;text-align:center;margin:1px;will-change:contents,width;transition:all .25s}.ol-scale-bar{position:absolute;bottom:8px;left:8px}.ol-scale-step-marker{width:1px;height:15px;background-color:#000;float:right;z-Index:10}.ol-scale-step-text{position:absolute;bottom:-5px;font-size:12px;z-Index:11;color:#000;text-shadow:-2px 0 #fff,0 2px #fff,2px 0 #fff,0 -2px #fff}.ol-scale-text{position:absolute;font-size:14px;text-align:center;bottom:25px;color:#000;text-shadow:-2px 0 #fff,0 2px #fff,2px 0 #fff,0 -2px #fff}.ol-scale-singlebar{position:relative;height:10px;z-Index:9;border:1px solid #000}.ol-unsupported{display:none}.ol-unselectable,.ol-viewport{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.ol-overlaycontainer,.ol-overlaycontainer-stopevent{pointer-events:none}.ol-overlaycontainer-stopevent>*,.ol-overlaycontainer>*{pointer-events:auto}.ol-selectable{-webkit-touch-callout:default;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.ol-grabbing{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.ol-grab{cursor:move;cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.ol-control{position:absolute;background-color:rgba(255,255,255,.4);border-radius:4px;padding:2px}.ol-control:hover{background-color:rgba(255,255,255,.6)}.ol-zoom{top:.5em;left:.5em}.ol-rotate{top:.5em;right:.5em;transition:opacity .25s linear,visibility 0s linear}.ol-rotate.ol-hidden{opacity:0;visibility:hidden;transition:opacity .25s linear,visibility 0s linear .25s}.ol-zoom-extent{top:4.643em;left:.5em}.ol-full-screen{right:.5em;top:.5em}.ol-control button{display:block;margin:1px;padding:0;color:#fff;font-size:1.14em;font-weight:700;text-decoration:none;text-align:center;height:1.375em;width:1.375em;line-height:.4em;background-color:rgba(0,60,136,.5);border:none;border-radius:2px}.ol-control button::-moz-focus-inner{border:none;padding:0}.ol-control button span{pointer-events:none}.ol-zoom-extent button{line-height:1.4em}.ol-compass{display:block;font-weight:400;font-size:1.2em;will-change:transform}.ol-touch .ol-control button{font-size:1.5em}.ol-touch .ol-zoom-extent{top:5.5em}.ol-control button:focus,.ol-control button:hover{text-decoration:none;background-color:rgba(0,60,136,.7)}.ol-zoom .ol-zoom-in{border-radius:2px 2px 0 0}.ol-zoom .ol-zoom-out{border-radius:0 0 2px 2px}.ol-attribution{text-align:right;bottom:.5em;right:.5em;max-width:calc(100% - 1.3em)}.ol-attribution ul{margin:0;padding:0 .5em;color:#000;text-shadow:0 0 2px #fff}.ol-attribution li{display:inline;list-style:none}.ol-attribution li:not(:last-child):after{content:" "}.ol-attribution img{max-height:2em;max-width:inherit;vertical-align:middle}.ol-attribution button,.ol-attribution ul{display:inline-block}.ol-attribution.ol-collapsed ul{display:none}.ol-attribution:not(.ol-collapsed){background:rgba(255,255,255,.8)}.ol-attribution.ol-uncollapsible{bottom:0;right:0;border-radius:4px 0 0}.ol-attribution.ol-uncollapsible img{margin-top:-.2em;max-height:1.6em}.ol-attribution.ol-uncollapsible button{display:none}.ol-zoomslider{top:4.5em;left:.5em;height:200px}.ol-zoomslider button{position:relative;height:10px}.ol-touch .ol-zoomslider{top:5.5em}.ol-overviewmap{left:.5em;bottom:.5em}.ol-overviewmap.ol-uncollapsible{bottom:0;left:0;border-radius:0 4px 0 0}.ol-overviewmap .ol-overviewmap-map,.ol-overviewmap button{display:inline-block}.ol-overviewmap .ol-overviewmap-map{border:1px solid #7b98bc;height:150px;margin:2px;width:150px}.ol-overviewmap:not(.ol-collapsed) button{bottom:1px;left:2px;position:absolute}.ol-overviewmap.ol-collapsed .ol-overviewmap-map,.ol-overviewmap.ol-uncollapsible button{display:none}.ol-overviewmap:not(.ol-collapsed){background:rgba(255,255,255,.8)}.ol-overviewmap-box{border:2px dotted rgba(0,60,136,.7)}.ol-overviewmap .ol-overviewmap-box:hover{cursor:move}
/*# sourceMappingURL=ol.css.map */
.ol-box {
box-sizing: border-box;
border-radius: 2px;
border: 2px solid #00f;
}
.ol-mouse-position {
top: 8px;
right: 8px;
position: absolute;
}
.ol-scale-line {
background: rgba(0, 60, 136, 0.3);
border-radius: 4px;
bottom: 8px;
left: 8px;
padding: 2px;
position: absolute;
}
.ol-scale-line-inner {
border: 1px solid #eee;
border-top: none;
color: #eee;
font-size: 10px;
text-align: center;
margin: 1px;
will-change: contents, width;
transition: all 0.25s;
}
.ol-scale-bar {
position: absolute;
bottom: 8px;
left: 8px;
}
.ol-scale-step-marker {
width: 1px;
height: 15px;
background-color: #000;
float: right;
z-index: 10;
}
.ol-scale-step-text {
position: absolute;
bottom: -5px;
font-size: 12px;
z-index: 11;
color: #000;
text-shadow: -2px 0 #fff, 0 2px #fff, 2px 0 #fff, 0 -2px #fff;
}
.ol-scale-text {
position: absolute;
font-size: 14px;
text-align: center;
bottom: 25px;
color: #000;
text-shadow: -2px 0 #fff, 0 2px #fff, 2px 0 #fff, 0 -2px #fff;
}
.ol-scale-singlebar {
position: relative;
height: 10px;
z-index: 9;
border: 1px solid #000;
}
.ol-unsupported {
display: none;
}
.ol-unselectable,
.ol-viewport {
-webkit-touch-callout: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
-webkit-tap-highlight-color: transparent;
}
.ol-overlaycontainer,
.ol-overlaycontainer-stopevent {
pointer-events: none;
}
.ol-overlaycontainer-stopevent > *,
.ol-overlaycontainer > * {
pointer-events: auto;
}
.ol-selectable {
-webkit-touch-callout: default;
-webkit-user-select: text;
-moz-user-select: text;
-ms-user-select: text;
user-select: text;
}
.ol-grabbing {
cursor: -webkit-grabbing;
cursor: -moz-grabbing;
cursor: grabbing;
}
.ol-grab {
cursor: move;
cursor: -webkit-grab;
cursor: -moz-grab;
cursor: grab;
}
.ol-control {
position: absolute;
background-color: rgba(255, 255, 255, 0.4);
border-radius: 4px;
padding: 2px;
}
.ol-control:hover {
background-color: rgba(255, 255, 255, 0.6);
}
.ol-zoom {
top: 0.5em;
left: 0.5em;
}
.ol-rotate {
top: 0.5em;
right: 0.5em;
transition: opacity 0.25s linear, visibility 0s linear;
}
.ol-rotate.ol-hidden {
opacity: 0;
visibility: hidden;
transition: opacity 0.25s linear, visibility 0s linear 0.25s;
}
.ol-zoom-extent {
top: 4.643em;
left: 0.5em;
}
.ol-full-screen {
right: 0.5em;
top: 0.5em;
}
.ol-control button {
display: block;
margin: 1px;
padding: 0;
color: #fff;
font-size: 1.14em;
font-weight: 700;
text-decoration: none;
text-align: center;
height: 1.375em;
width: 1.375em;
line-height: 0.4em;
background-color: rgba(0, 60, 136, 0.5);
border: none;
border-radius: 2px;
}
.ol-control button::-moz-focus-inner {
border: none;
padding: 0;
}
.ol-control button span {
pointer-events: none;
}
.ol-zoom-extent button {
line-height: 1.4em;
}
.ol-compass {
display: block;
font-weight: 400;
font-size: 1.2em;
will-change: transform;
}
.ol-touch .ol-control button {
font-size: 1.5em;
}
.ol-touch .ol-zoom-extent {
top: 5.5em;
}
.ol-control button:focus,
.ol-control button:hover {
text-decoration: none;
background-color: rgba(0, 60, 136, 0.7);
}
.ol-zoom .ol-zoom-in {
border-radius: 2px 2px 0 0;
}
.ol-zoom .ol-zoom-out {
border-radius: 0 0 2px 2px;
}
.ol-attribution {
text-align: right;
bottom: 0.5em;
right: 0.5em;
max-width: calc(100% - 1.3em);
}
.ol-attribution ul {
margin: 0;
padding: 0 0.5em;
color: #000;
text-shadow: 0 0 2px #fff;
}
.ol-attribution li {
display: inline;
list-style: none;
}
.ol-attribution li:not(:last-child):after {
content: " ";
}
.ol-attribution img {
max-height: 2em;
max-width: inherit;
vertical-align: middle;
}
.ol-attribution button,
.ol-attribution ul {
display: inline-block;
}
.ol-attribution.ol-collapsed ul {
display: none;
}
.ol-attribution:not(.ol-collapsed) {
background: rgba(255, 255, 255, 0.8);
}
.ol-attribution.ol-uncollapsible {
bottom: 0;
right: 0;
border-radius: 4px 0 0;
}
.ol-attribution.ol-uncollapsible img {
margin-top: -0.2em;
max-height: 1.6em;
}
.ol-attribution.ol-uncollapsible button {
display: none;
}
.ol-zoomslider {
top: 4.5em;
left: 0.5em;
height: 200px;
}
.ol-zoomslider button {
position: relative;
height: 10px;
}
.ol-touch .ol-zoomslider {
top: 5.5em;
}
.ol-overviewmap {
left: 0.5em;
bottom: 0.5em;
}
.ol-overviewmap.ol-uncollapsible {
bottom: 0;
left: 0;
border-radius: 0 4px 0 0;
}
.ol-overviewmap .ol-overviewmap-map,
.ol-overviewmap button {
display: inline-block;
}
.ol-overviewmap .ol-overviewmap-map {
border: 1px solid #7b98bc;
height: 150px;
margin: 2px;
width: 150px;
}
.ol-overviewmap:not(.ol-collapsed) button {
bottom: 1px;
left: 2px;
position: absolute;
}
.ol-overviewmap.ol-collapsed .ol-overviewmap-map,
.ol-overviewmap.ol-uncollapsible button {
display: none;
}
.ol-overviewmap:not(.ol-collapsed) {
background: rgba(255, 255, 255, 0.8);
}
.ol-overviewmap-box {
border: 2px dotted rgba(0, 60, 136, 0.7);
}
.ol-overviewmap .ol-overviewmap-box:hover {
cursor: move;
}
/*# sourceMappingURL=ol.css.map */

Wyświetl plik

@ -1,131 +1,184 @@
// GridTracker ©2020 N0TTL
// Incoming is already float fixed ( 14.037 ) for 14,037,000hz
Number.prototype.formatBand = function()
{
var freq = this;
var bands = ["OOB", "0", 1, "160m", 3, "80m", 5, "60m", 7, "40m", 10, "30m", 14, "20m", 18, "17m", 21, "15m", 24, "12m", 27,"11m", 28, "10m", 29, "10m", 50, "6m", 51, "6m", 52, "6m", 53, "6m", 54, "6m", 70, "4m",141,"2m",142,"2m",143,"2m",144,"2m",145,"2m",146,"2m",147,"2m",148,"2m", 219,"1.5m",220,"1.5m",221,"1.5m",222,"1.5m",223,"1.5m",224,"1.5m",225,"1.5m"];
Number.prototype.formatBand = function () {
var freq = this;
var bands = [
"OOB",
"0",
1,
"160m",
3,
"80m",
5,
"60m",
7,
"40m",
10,
"30m",
14,
"20m",
18,
"17m",
21,
"15m",
24,
"12m",
27,
"11m",
28,
"10m",
29,
"10m",
50,
"6m",
51,
"6m",
52,
"6m",
53,
"6m",
54,
"6m",
70,
"4m",
141,
"2m",
142,
"2m",
143,
"2m",
144,
"2m",
145,
"2m",
146,
"2m",
147,
"2m",
148,
"2m",
219,
"1.5m",
220,
"1.5m",
221,
"1.5m",
222,
"1.5m",
223,
"1.5m",
224,
"1.5m",
225,
"1.5m",
];
var newFreq = parseInt(freq);
if ( newFreq > 0 && newFreq < 226 )
return bands[bands.indexOf(newFreq) +1];
else if ( newFreq >= 420 && newFreq <= 450 )
return "70cm";
else if ( newFreq >= 902 && newFreq <= 928 )
return "33cm";
else if ( newFreq >= 1240 && newFreq <= 1300 )
return "23cm";
else if ( freq >= 0.472 && freq <= 0.479 )
return "630m";
else if ( freq >= 0.1357 && freq <= 0.1485 )
return "2200m";
else if ( freq >= 0.0090 && freq <= 0.0200 )
return "4000m";
else return "OOB";
}
Number.prototype.formatMhz = function(n, x) {
var re = '\\d(?=(\\d{' + (x || 3) + '})+' + (n > 0 ? '\\.' : '$') + ')';
return this.toFixed(Math.max(0, ~~n)).replace(new RegExp(re, 'g'), '$&.');
var newFreq = parseInt(freq);
if (newFreq > 0 && newFreq < 226) return bands[bands.indexOf(newFreq) + 1];
else if (newFreq >= 420 && newFreq <= 450) return "70cm";
else if (newFreq >= 902 && newFreq <= 928) return "33cm";
else if (newFreq >= 1240 && newFreq <= 1300) return "23cm";
else if (freq >= 0.472 && freq <= 0.479) return "630m";
else if (freq >= 0.1357 && freq <= 0.1485) return "2200m";
else if (freq >= 0.009 && freq <= 0.02) return "4000m";
else return "OOB";
};
Number.prototype.formatSignalReport = function() {
var val = this;
var report = String();
if ( val >= 0 )
report = "+" + val;
else
report = val;
return report;
Number.prototype.formatMhz = function (n, x) {
var re = "\\d(?=(\\d{" + (x || 3) + "})+" + (n > 0 ? "\\." : "$") + ")";
return this.toFixed(Math.max(0, ~~n)).replace(new RegExp(re, "g"), "$&.");
};
String.prototype.formatCallsign = function() {
var re = new RegExp("0", 'g');
return this.replace(re,"Ø");
Number.prototype.formatSignalReport = function () {
var val = this;
var report = String();
}
Number.prototype.toDHMS = function()
{
var seconds = this;
var days = Math.floor(seconds / (3600*24));
seconds -= days*3600*24;
var hrs = Math.floor(seconds / 3600);
seconds -= hrs*3600;
var mnts = Math.floor(seconds / 60);
seconds -= mnts*60;
days = (days ? days+"d " :"");
hrs = (hrs? hrs+"h ":"");
mnts =(mnts? mnts+"m ":"");
var first = days+hrs+mnts;
if ( first == "" )
val = seconds+"s";
else
val = first+(seconds>0? seconds+"s": "");
return val;
if (val >= 0) report = "+" + val;
else report = val;
return report;
};
Number.prototype.toDHM = function()
{
var seconds = this;
var days = Math.floor(seconds / (3600*24));
seconds -= days*3600*24;
var hrs = Math.floor(seconds / 3600);
seconds -= hrs*3600;
var mnts = Math.floor(seconds / 60);
seconds -= mnts*60;
days = (days ? days+"d " :"");
hrs = (hrs? hrs+"h ":"");
mnts =(mnts? mnts+"m ":"");
val = days+hrs+mnts;
return val;
String.prototype.formatCallsign = function () {
var re = new RegExp("0", "g");
return this.replace(re, "Ø");
};
Number.prototype.toYM = function()
{
var months = this;
var years = parseInt(Math.floor(months / 12 ));
months -= years*12;
months = parseInt(months);
years = ( years ? years+"y ":"");
months = ( months ? months+"m":"");
var total = years+months;
return (total==""?"any":total);
}
Number.prototype.toDHMS = function () {
var seconds = this;
var days = Math.floor(seconds / (3600 * 24));
seconds -= days * 3600 * 24;
var hrs = Math.floor(seconds / 3600);
seconds -= hrs * 3600;
var mnts = Math.floor(seconds / 60);
seconds -= mnts * 60;
Number.prototype.toHMS = function()
{
var seconds = this;
var days = Math.floor(seconds / (3600*24));
seconds -= days*3600*24;
var hrs = Math.floor(seconds / 3600);
seconds -= hrs*3600;
var mnts = Math.floor(seconds / 60);
seconds -= mnts*60;
days = days ? days + "d " : "";
hrs = hrs ? hrs + "h " : "";
mnts = mnts ? mnts + "m " : "";
var first = days + hrs + mnts;
if (first == "") val = seconds + "s";
else val = first + (seconds > 0 ? seconds + "s" : "");
return val;
};
Number.prototype.toDHM = function () {
var seconds = this;
var days = Math.floor(seconds / (3600 * 24));
seconds -= days * 3600 * 24;
var hrs = Math.floor(seconds / 3600);
seconds -= hrs * 3600;
var mnts = Math.floor(seconds / 60);
seconds -= mnts * 60;
hrs = (hrs<10? "0"+hrs:hrs);
mnts =(mnts<10? "0"+mnts:mnts);
seconds = (seconds<10? "0"+seconds:seconds);
val = hrs+""+mnts+""+seconds;
return val;
days = days ? days + "d " : "";
hrs = hrs ? hrs + "h " : "";
mnts = mnts ? mnts + "m " : "";
val = days + hrs + mnts;
return val;
};
Number.prototype.toYM = function () {
var months = this;
var years = parseInt(Math.floor(months / 12));
months -= years * 12;
months = parseInt(months);
years = years ? years + "y " : "";
months = months ? months + "m" : "";
var total = years + months;
return total == "" ? "any" : total;
};
Number.prototype.toHMS = function () {
var seconds = this;
var days = Math.floor(seconds / (3600 * 24));
seconds -= days * 3600 * 24;
var hrs = Math.floor(seconds / 3600);
seconds -= hrs * 3600;
var mnts = Math.floor(seconds / 60);
seconds -= mnts * 60;
hrs = hrs < 10 ? "0" + hrs : hrs;
mnts = mnts < 10 ? "0" + mnts : mnts;
seconds = seconds < 10 ? "0" + seconds : seconds;
val = hrs + "" + mnts + "" + seconds;
return val;
};
String.prototype.toProperCase = function () {
return this.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();});
return this.replace(/\w\S*/g, function (txt) {
return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
});
};
Number.prototype.pad = function(size) {
var s = String(this);
while (s.length < (size || 2)) {s = "0" + s;}
return s;
}
Number.prototype.pad = function (size) {
var s = String(this);
while (s.length < (size || 2)) {
s = "0" + s;
}
return s;
};
String.prototype.replaceAll = function(str1, str2)
{
return this.split(str1).join(str2);
}
String.prototype.replaceAll = function (str1, str2) {
return this.split(str1).join(str2);
};

Plik diff jest za duży Load Diff

Wyświetl plik

@ -2,175 +2,153 @@ var s_title = null;
var s_screenSettings = {};
var s_zoomLevel = 0;
nw.Screen.Init();
var g_screenLost = false;
var g_windowInfo = {};
var g_initialScreenCount = nw.Screen.screens.length;
function setWindowInfo()
{
// if we've lost a screen, stop saving our info
if ( g_screenLost )
return;
var win = nw.Window.get();
var windowInfo = {};
windowInfo.x = win.x;
windowInfo.y = win.y;
windowInfo.width = win.width;
windowInfo.height = win.height;
g_windowInfo = windowInfo;
function setWindowInfo() {
// if we've lost a screen, stop saving our info
if (g_screenLost) return;
var win = nw.Window.get();
var windowInfo = {};
windowInfo.x = win.x;
windowInfo.y = win.y;
windowInfo.width = win.width;
windowInfo.height = win.height;
g_windowInfo = windowInfo;
}
function clearAllScreenTimers()
{
if ( g_windowMoveTimer != null )
{
clearTimeout(g_windowMoveTimer);
g_windowMoveTimer = null;
}
if ( g_windowResizeTimer != null )
{
clearTimeout(g_windowResizeTimer);
g_windowResizeTimer = null;
}
function clearAllScreenTimers() {
if (g_windowMoveTimer != null) {
clearTimeout(g_windowMoveTimer);
g_windowMoveTimer = null;
}
if (g_windowResizeTimer != null) {
clearTimeout(g_windowResizeTimer);
g_windowResizeTimer = null;
}
}
var screenCB = {
onDisplayAdded: function(screen) {
clearAllScreenTimers();
if ( g_screenLost == true && g_initialScreenCount == nw.Screen.screens.length)
{
// Lets restore the position now
var win = nw.Window.get();
win.x = g_windowInfo.x;
win.y = g_windowInfo.y;
win.width = g_windowInfo.width;
win.height = g_windowInfo.height;
g_screenLost = false;
}
onDisplayAdded: function (screen) {
clearAllScreenTimers();
if (
g_screenLost == true &&
g_initialScreenCount == nw.Screen.screens.length
) {
// Lets restore the position now
var win = nw.Window.get();
win.x = g_windowInfo.x;
win.y = g_windowInfo.y;
win.width = g_windowInfo.width;
win.height = g_windowInfo.height;
g_screenLost = false;
}
},
onDisplayRemoved: function(screen) {
clearAllScreenTimers();
if ( g_initialScreenCount != nw.Screen.screens.length )
{
g_screenLost = true;
}
}
onDisplayRemoved: function (screen) {
clearAllScreenTimers();
if (g_initialScreenCount != nw.Screen.screens.length) {
g_screenLost = true;
}
},
};
function saveScreenSettings()
{
var setting = { "showing" : g_isShowing , "zoomLevel" : s_zoomLevel };
function saveScreenSettings() {
var setting = { showing: g_isShowing, zoomLevel: s_zoomLevel };
s_screenSettings = JSON.parse(localStorage.screenSettings);
s_screenSettings = JSON.parse(localStorage.screenSettings);
s_screenSettings[s_title] = setting;
s_screenSettings[s_title] = setting;
localStorage.screenSettings = JSON.stringify(s_screenSettings);
localStorage.screenSettings = JSON.stringify(s_screenSettings);
}
// listen to screen events
nw.Screen.on('displayAdded', screenCB.onDisplayAdded);
nw.Screen.on('displayRemoved', screenCB.onDisplayRemoved);
nw.Screen.on("displayAdded", screenCB.onDisplayAdded);
nw.Screen.on("displayRemoved", screenCB.onDisplayRemoved);
var g_isShowing = false;
nw.Window.get().on('loaded', function () {
s_title = document.title.substr(0,16).trim();
g_isShowing = false;
if ( typeof localStorage.screenSettings == "undefined" )
{
localStorage.screenSettings = "{}";
nw.Window.get().on("loaded", function () {
s_title = document.title.substr(0, 16).trim();
g_isShowing = false;
if (typeof localStorage.screenSettings == "undefined") {
localStorage.screenSettings = "{}";
}
s_screenSettings = JSON.parse(localStorage.screenSettings);
}
s_screenSettings = JSON.parse(localStorage.screenSettings);
if (!(s_title in s_screenSettings)) {
saveScreenSettings();
}
if (!("zoomLevel" in s_screenSettings[s_title])) {
saveScreenSettings();
}
g_isShowing = s_screenSettings[s_title].showing;
nw.Window.get().zoomLevel = s_zoomLevel = s_screenSettings[s_title].zoomLevel;
if ( !(s_title in s_screenSettings) )
{
saveScreenSettings();
}
if ( !("zoomLevel" in s_screenSettings[s_title]) )
{
saveScreenSettings();
}
g_isShowing = s_screenSettings[s_title].showing;
nw.Window.get().zoomLevel = s_zoomLevel = s_screenSettings[s_title].zoomLevel;
if (g_isShowing || s_title == "GridTracker ©202") this.show();
else this.hide();
if ( g_isShowing || s_title == "GridTracker ©202" )
this.show();
else
this.hide();
g_initialScreenCount = nw.Screen.screens.length;
setWindowInfo();
document.addEventListener('keydown', onZoomControlDown, true);
});
var g_windowMoveTimer = null;
nw.Window.get().on('move', function (x,y) {
if ( g_windowMoveTimer != null )
{
clearTimeout(g_windowMoveTimer);
}
g_windowMoveTimer = setTimeout(setWindowInfo,1000);
});
var g_windowResizeTimer = null;
nw.Window.get().on('resize', function (w,h) {
if ( g_windowResizeTimer != null )
{
clearTimeout(g_windowResizeTimer);
}
g_windowResizeTimer = setTimeout(setWindowInfo,1000);
});
var g_zoomKeys = { "NumpadSubtract":reduceZoom , "Minus":reduceZoom , "NumpadAdd":increaseZoom, "Equal":increaseZoom, "Numpad0":resetZoom , "Digit0":resetZoom };
function onZoomControlDown(event)
{
if ( event.ctrlKey )
{
if ( event.code in g_zoomKeys )
{
g_zoomKeys[event.code]();
}
}
}
function reduceZoom()
{
s_zoomLevel -= 0.20;
nw.Window.get().zoomLevel = s_zoomLevel;
saveScreenSettings();
}
function increaseZoom()
{
s_zoomLevel += 0.20;
nw.Window.get().zoomLevel = s_zoomLevel;
saveScreenSettings();
}
function resetZoom()
{
s_zoomLevel = 0;
nw.Window.get().zoomLevel = s_zoomLevel;
saveScreenSettings();
}
var g_process = require('process');
g_process.on('uncaughtException', function (e) {
g_initialScreenCount = nw.Screen.screens.length;
setWindowInfo();
document.addEventListener("keydown", onZoomControlDown, true);
});
var g_windowMoveTimer = null;
nw.Window.get().on("move", function (x, y) {
if (g_windowMoveTimer != null) {
clearTimeout(g_windowMoveTimer);
}
g_windowMoveTimer = setTimeout(setWindowInfo, 1000);
});
var g_windowResizeTimer = null;
nw.Window.get().on("resize", function (w, h) {
if (g_windowResizeTimer != null) {
clearTimeout(g_windowResizeTimer);
}
g_windowResizeTimer = setTimeout(setWindowInfo, 1000);
});
var g_zoomKeys = {
NumpadSubtract: reduceZoom,
Minus: reduceZoom,
NumpadAdd: increaseZoom,
Equal: increaseZoom,
Numpad0: resetZoom,
Digit0: resetZoom,
};
function onZoomControlDown(event) {
if (event.ctrlKey) {
if (event.code in g_zoomKeys) {
g_zoomKeys[event.code]();
}
}
}
function reduceZoom() {
s_zoomLevel -= 0.2;
nw.Window.get().zoomLevel = s_zoomLevel;
saveScreenSettings();
}
function increaseZoom() {
s_zoomLevel += 0.2;
nw.Window.get().zoomLevel = s_zoomLevel;
saveScreenSettings();
}
function resetZoom() {
s_zoomLevel = 0;
nw.Window.get().zoomLevel = s_zoomLevel;
saveScreenSettings();
}
var g_process = require("process");
g_process.on("uncaughtException", function (e) {});

Wyświetl plik

@ -2,16 +2,19 @@
**/
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
typeof define === 'function' && define.amd ? define(factory) :
(global.GeoJSONTerminator = factory());
}(this, (function () { 'use strict';
typeof exports === "object" && typeof module !== "undefined"
? (module.exports = factory())
: typeof define === "function" && define.amd
? define(factory)
: (global.GeoJSONTerminator = factory());
})(this, function () {
"use strict";
function julian(date) {
/* Calculate the present UTC Julian Date. Function is valid after
* the beginning of the UNIX epoch 1970-01-01 and ignores leap
* seconds. */
return (date / 86400000) + 2440587.5;
return date / 86400000 + 2440587.5;
}
function GMST(julianDay) {
@ -23,9 +26,9 @@
}
class Terminator {
constructor(options={resolution: 1}) {
constructor(options = { resolution: 1 }) {
this.options = options;
this.version = '0.1.0';
this.version = "0.1.0";
this._R2D = 180 / Math.PI;
this._D2R = Math.PI / 180;
//this.options.resolution = options.resolution || this.options.resolution;
@ -51,119 +54,165 @@
ogr2ogr -f "GeoJSON" output.geojson input.geojson \
-clipsrc -180 90 180 90
*/
return {
"type": "Feature",
"properties": {},
"geometry": {
"type": "Polygon",
"coordinates": [
[
...latLngs.map(latLng => {
return [latLng[1], latLng[0]];
}),
[latLngs[0][1], latLngs[0][0]]
].slice().reverse()
]
}
}
return {
type: "Feature",
properties: {},
geometry: {
type: "Polygon",
coordinates: [
[
...latLngs.map((latLng) => {
return [latLng[1], latLng[0]];
}),
[latLngs[0][1], latLngs[0][0]],
]
.slice()
.reverse(),
],
},
};
}
_sunEclipticPosition (julianDay) {
_sunEclipticPosition(julianDay) {
/* Compute the position of the Sun in ecliptic coordinates at
julianDay. Following
http://en.wikipedia.org/wiki/Position_of_the_Sun */
// Days since start of J2000.0
var n = julianDay - 2451545.0;
// mean longitude of the Sun
var L = 280.460 + 0.9856474 * n;
var L = 280.46 + 0.9856474 * n;
L %= 360;
// mean anomaly of the Sun
var g = 357.528 + 0.9856003 * n;
g %= 360;
// ecliptic longitude of Sun
var lambda = L + 1.915 * Math.sin(g * this._D2R) +
var lambda =
L +
1.915 * Math.sin(g * this._D2R) +
0.02 * Math.sin(2 * g * this._D2R);
return {lambda: lambda};
return { lambda: lambda };
}
_eclipticObliquity (julianDay) {
_eclipticObliquity(julianDay) {
// Following the short term expression in
// http://en.wikipedia.org/wiki/Axial_tilt#Obliquity_of_the_ecliptic_.28Earth.27s_axial_tilt.29
var n = julianDay - 2451545.0;
// Julian centuries since J2000.0
var T = n / 36525;
var epsilon = 23.43929111 -
T * (46.836769 / 3600
- T * (0.0001831 / 3600
+ T * (0.00200340 / 3600
- T * (0.576e-6 / 3600
- T * 4.34e-8 / 3600))));
var epsilon =
23.43929111 -
T *
(46.836769 / 3600 -
T *
(0.0001831 / 3600 +
T *
(0.0020034 / 3600 -
T * (0.576e-6 / 3600 - (T * 4.34e-8) / 3600))));
return epsilon;
}
_jday (date) {
return (date.getTime() / 86400000.0) + 2440587.5;
_jday(date) {
return date.getTime() / 86400000.0 + 2440587.5;
}
_calculatePositionOfSun (date) {
date = (date instanceof Date) ? date : new Date();
_calculatePositionOfSun(date) {
date = date instanceof Date ? date : new Date();
var rad = 0.017453292519943295;
var rad = 0.017453292519943295;
// based on NOAA solar calculations
var ms_past_midnight = ((date.getUTCHours() * 60 + date.getUTCMinutes()) * 60 + date.getUTCSeconds()) * 1000 + date.getUTCMilliseconds();
var jc = (this._jday(date) - 2451545)/36525;
var mean_long_sun = (280.46646+jc*(36000.76983+jc*0.0003032)) % 360;
var mean_anom_sun = 357.52911+jc*(35999.05029-0.0001537*jc);
var sun_eq = Math.sin(rad*mean_anom_sun)*(1.914602-jc*(0.004817+0.000014*jc))+Math.sin(rad*2*mean_anom_sun)*(0.019993-0.000101*jc)+Math.sin(rad*3*mean_anom_sun)*0.000289;
var sun_true_long = mean_long_sun + sun_eq;
var sun_app_long = sun_true_long - 0.00569 - 0.00478*Math.sin(rad*125.04-1934.136*jc);
var mean_obliq_ecliptic = 23+(26+((21.448-jc*(46.815+jc*(0.00059-jc*0.001813))))/60)/60;
var obliq_corr = mean_obliq_ecliptic + 0.00256*Math.cos(rad*125.04-1934.136*jc);
// based on NOAA solar calculations
var ms_past_midnight =
((date.getUTCHours() * 60 + date.getUTCMinutes()) * 60 +
date.getUTCSeconds()) *
1000 +
date.getUTCMilliseconds();
var jc = (this._jday(date) - 2451545) / 36525;
var mean_long_sun =
(280.46646 + jc * (36000.76983 + jc * 0.0003032)) % 360;
var mean_anom_sun = 357.52911 + jc * (35999.05029 - 0.0001537 * jc);
var sun_eq =
Math.sin(rad * mean_anom_sun) *
(1.914602 - jc * (0.004817 + 0.000014 * jc)) +
Math.sin(rad * 2 * mean_anom_sun) * (0.019993 - 0.000101 * jc) +
Math.sin(rad * 3 * mean_anom_sun) * 0.000289;
var sun_true_long = mean_long_sun + sun_eq;
var sun_app_long =
sun_true_long -
0.00569 -
0.00478 * Math.sin(rad * 125.04 - 1934.136 * jc);
var mean_obliq_ecliptic =
23 +
(26 + (21.448 - jc * (46.815 + jc * (0.00059 - jc * 0.001813))) / 60) /
60;
var obliq_corr =
mean_obliq_ecliptic + 0.00256 * Math.cos(rad * 125.04 - 1934.136 * jc);
var lat = Math.asin(Math.sin(rad*obliq_corr)*Math.sin(rad*sun_app_long)) / rad;
var lat =
Math.asin(Math.sin(rad * obliq_corr) * Math.sin(rad * sun_app_long)) /
rad;
var eccent = 0.016708634-jc*(0.000042037+0.0000001267*jc);
var y = Math.tan(rad*(obliq_corr/2))*Math.tan(rad*(obliq_corr/2));
var rq_of_time = 4*((y*Math.sin(2*rad*mean_long_sun)-2*eccent*Math.sin(rad*mean_anom_sun)+4*eccent*y*Math.sin(rad*mean_anom_sun)*Math.cos(2*rad*mean_long_sun)-0.5*y*y*Math.sin(4*rad*mean_long_sun)-1.25*eccent*eccent*Math.sin(2*rad*mean_anom_sun))/rad);
var true_solar_time_in_deg = ((ms_past_midnight+rq_of_time*60000) % 86400000) / 240000;
var eccent = 0.016708634 - jc * (0.000042037 + 0.0000001267 * jc);
var y =
Math.tan(rad * (obliq_corr / 2)) * Math.tan(rad * (obliq_corr / 2));
var rq_of_time =
4 *
((y * Math.sin(2 * rad * mean_long_sun) -
2 * eccent * Math.sin(rad * mean_anom_sun) +
4 *
eccent *
y *
Math.sin(rad * mean_anom_sun) *
Math.cos(2 * rad * mean_long_sun) -
0.5 * y * y * Math.sin(4 * rad * mean_long_sun) -
1.25 * eccent * eccent * Math.sin(2 * rad * mean_anom_sun)) /
rad);
var true_solar_time_in_deg =
((ms_past_midnight + rq_of_time * 60000) % 86400000) / 240000;
var lng = -((true_solar_time_in_deg < 0) ? true_solar_time_in_deg + 180 : true_solar_time_in_deg - 180);
var lng = -(true_solar_time_in_deg < 0
? true_solar_time_in_deg + 180
: true_solar_time_in_deg - 180);
return [lng,lat];
return [lng, lat];
}
_sunEquatorialPosition (sunEclLng, eclObliq) {
_sunEquatorialPosition(sunEclLng, eclObliq) {
/* Compute the Sun's equatorial position from its ecliptic
* position. Inputs are expected in degrees. Outputs are in
* degrees as well. */
var alpha = Math.atan(Math.cos(eclObliq * this._D2R)
* Math.tan(sunEclLng * this._D2R)) * this._R2D;
var delta = Math.asin(Math.sin(eclObliq * this._D2R)
* Math.sin(sunEclLng * this._D2R)) * this._R2D;
var alpha =
Math.atan(
Math.cos(eclObliq * this._D2R) * Math.tan(sunEclLng * this._D2R)
) * this._R2D;
var delta =
Math.asin(
Math.sin(eclObliq * this._D2R) * Math.sin(sunEclLng * this._D2R)
) * this._R2D;
var lQuadrant = Math.floor(sunEclLng / 90) * 90;
var raQuadrant = Math.floor(alpha / 90) * 90;
alpha = alpha + (lQuadrant - raQuadrant);
return {alpha: alpha, delta: delta};
return { alpha: alpha, delta: delta };
}
_hourAngle (lng, sunPos, gst) {
_hourAngle(lng, sunPos, gst) {
/* Compute the hour angle of the sun for a longitude on
* Earth. Return the hour angle in degrees. */
var lst = gst + lng / 15;
return lst * 15 - sunPos.alpha;
}
_latitude (ha, sunPos) {
_latitude(ha, sunPos) {
/* For a given hour angle and sun position, compute the
* latitude of the terminator in degrees. */
var lat = Math.atan(-Math.cos(ha * this._D2R) /
Math.tan(sunPos.delta * this._D2R)) * this._R2D;
var lat =
Math.atan(
-Math.cos(ha * this._D2R) / Math.tan(sunPos.delta * this._D2R)
) * this._R2D;
return lat;
}
_compute (time) {
_compute(time) {
var today = time ? new Date(time) : new Date();
var julianDay = julian(today);
var gst = GMST(julianDay);
@ -176,10 +225,10 @@
for (var i = 0; i <= 720 * this.options.resolution; i++) {
var lng = startMinus + i / this.options.resolution;
var ha = this._hourAngle(lng, sunEqPos, gst);
latLng[i+1 ] = [this._latitude(ha, sunEqPos), lng ];
latLng[i + 1] = [this._latitude(ha, sunEqPos), lng];
}
if (sunEqPos.delta < 0) {
latLng[0] = [90, startMinus];
latLng[0] = [90, startMinus];
latLng[latLng.length] = [90, 360];
} else {
latLng[0] = [-90, startMinus];
@ -193,174 +242,170 @@
}
return terminator;
})));
});
var dayNight = {
map: null,
vectorLayer:null,
map: null,
vectorLayer: null,
init: function (map) {
this.map = map;
init: function (map) {
this.map = map;
var geoJSON = new GeoJSONTerminator();
var geoJSON = new GeoJSONTerminator();
this.vectorSource = new ol.source.Vector({
features: (new ol.format.GeoJSON()).readFeatures(geoJSON, {
featureProjection: 'EPSG:3857'
})
});
this.vectorSource = new ol.source.Vector({
features: new ol.format.GeoJSON().readFeatures(geoJSON, {
featureProjection: "EPSG:3857",
}),
});
this.vectorLayer = new ol.layer.Vector({
source: this.vectorSource,
style: new ol.style.Style({
fill: new ol.style.Fill({
color: 'rgb(0,0,0)'
}),
stroke: null
this.vectorLayer = new ol.layer.Vector({
source: this.vectorSource,
style: new ol.style.Style({
fill: new ol.style.Fill({
color: "rgb(0,0,0)",
}),
opacity: Number(g_mapSettings.shadow),
zIndex: 0
});
this.map.getLayers().insertAt(1, this.vectorLayer);
stroke: null,
}),
opacity: Number(g_mapSettings.shadow),
zIndex: 0,
});
this.map.getLayers().insertAt(1, this.vectorLayer);
},
refresh: function () {
var circleStyle = new ol.style.Style({
fill: new ol.style.Fill({
color: "rgb(0,0,0)",
}),
});
this.vectorLayer.setStyle(circleStyle);
this.vectorLayer.setOpacity(Number(g_mapSettings.shadow));
this.vectorSource.clear();
},
refresh: function () {
var circleStyle = new ol.style.Style({
fill: new ol.style.Fill({
color: 'rgb(0,0,0)'
})
});
this.vectorLayer.setStyle(circleStyle);
this.vectorLayer.setOpacity(Number(g_mapSettings.shadow));
this.vectorSource.clear();
this.vectorSource.addFeature(
new ol.format.GeoJSON().readFeature(new GeoJSONTerminator(), {
featureProjection: "EPSG:3857",
})
);
var point = ol.proj.fromLonLat([g_myLon, g_myLat]);
var arr = this.vectorSource.getFeaturesAtCoordinate(point);
return arr.length > 0 ? true : false;
},
this.vectorSource.addFeature(
(new ol.format.GeoJSON()).readFeature(new GeoJSONTerminator(), {
featureProjection: 'EPSG:3857'
})
);
var point = ol.proj.fromLonLat([g_myLon, g_myLat]);
var arr = this.vectorSource.getFeaturesAtCoordinate(point);
return (arr.length > 0?true:false);
},
show: function () {
this.vectorLayer.setVisible(true);
return this.refresh();
},
hide: function () {
this.vectorLayer.setVisible(false);
},
isVisible: function () {
return this.vectorLayer.getVisible();
}
show: function () {
this.vectorLayer.setVisible(true);
return this.refresh();
},
hide: function () {
this.vectorLayer.setVisible(false);
},
isVisible: function () {
return this.vectorLayer.getVisible();
},
};
var moonLayer = {
map: null,
vectorLayer:null,
icon: null,
pin: null,
init: function (map) {
this.map = map;
map: null,
vectorLayer: null,
icon: null,
pin: null,
init: function (map) {
this.map = map;
this.icon = new ol.style.Icon({
src: "./img/luna.png",
anchorYUnits: 'pixels',
anchorXUnits: 'pixels',
anchor: [255,255],
scale: 0.10,
opacity: 0.5
});
this.icon = new ol.style.Icon({
src: "./img/luna.png",
anchorYUnits: "pixels",
anchorXUnits: "pixels",
anchor: [255, 255],
scale: 0.1,
opacity: 0.5,
});
this.pin = iconFeature(
ol.proj.fromLonLat(subLunar(timeNowSec()).ll),
this.icon,
0
);
this.pin.size = 99;
this.vectorSource = new ol.source.Vector({});
this.pin = iconFeature( ol.proj.fromLonLat(subLunar(timeNowSec()).ll) , this.icon, 0);
this.pin.size = 99;
this.vectorSource = new ol.source.Vector({});
this.vectorLayer = new ol.layer.Vector({
source: this.vectorSource,
zIndex: 30
});
this.map.getLayers().insertAt(1, this.vectorLayer);
},
future: function (now) {
var r = 0;
var x = 25;
var i = 3600;
var data = Array();
for ( r = 0; r < x; r++ )
{
data.push( subLunar(now + (r*i)).ll );
}
line = [];
var lonOff = 0;
var lastc = 0;
for (var i = 0; i < data.length; i++)
{
var c = data[i];
if (isNaN(c[0])) {
continue;
}
if (Math.abs(lastc - c[0]) > 270) {
// Wrapped
if (c[0] < lastc) {
lonOff += 360;
} else {
lonOff -= 360;
}
}
lastc = c[0];
line.push(ol.proj.fromLonLat([ c[0] + lonOff, c[1]]));
}
if (line.length == 0) {
line.push(ol.proj.fromLonLat(start));
}
line = new ol.geom.LineString(line);
var feature = new ol.Feature({ geometry: line, name: 'moonFlight' });
feature.setStyle(new ol.style.Style({
stroke: new ol.style.Stroke({ color: "#FFF", width: 1}) }));
return feature;
},
refresh: function () {
this.vectorSource.clear();
if ( g_appSettings.moonTrack == 1 )
{
now = timeNowSec();
if ( g_appSettings.moonPath == 1 )
this.vectorSource.addFeature(this.future(now));
this.pin = iconFeature( ol.proj.fromLonLat(subLunar(now).ll) , this.icon, 0);
this.pin.size = 99;
this.vectorSource.addFeature(this.pin);
}
},
show: function () {
this.refresh();
this.vectorLayer.setVisible(true);
lunaButonImg.style.webkitFilter = "brightness(100%)";
},
hide: function () {
this.vectorLayer.setVisible(false);
lunaButonImg.style.webkitFilter = "brightness(50%)";
},
isVisible: function () {
return this.vectorLayer.getVisible();
this.vectorLayer = new ol.layer.Vector({
source: this.vectorSource,
zIndex: 30,
});
this.map.getLayers().insertAt(1, this.vectorLayer);
},
future: function (now) {
var r = 0;
var x = 25;
var i = 3600;
var data = Array();
for (r = 0; r < x; r++) {
data.push(subLunar(now + r * i).ll);
}
line = [];
var lonOff = 0;
var lastc = 0;
for (var i = 0; i < data.length; i++) {
var c = data[i];
if (isNaN(c[0])) {
continue;
}
if (Math.abs(lastc - c[0]) > 270) {
// Wrapped
if (c[0] < lastc) {
lonOff += 360;
} else {
lonOff -= 360;
}
}
lastc = c[0];
line.push(ol.proj.fromLonLat([c[0] + lonOff, c[1]]));
}
if (line.length == 0) {
line.push(ol.proj.fromLonLat(start));
}
line = new ol.geom.LineString(line);
var feature = new ol.Feature({ geometry: line, name: "moonFlight" });
feature.setStyle(
new ol.style.Style({
stroke: new ol.style.Stroke({ color: "#FFF", width: 1 }),
})
);
return feature;
},
refresh: function () {
this.vectorSource.clear();
if (g_appSettings.moonTrack == 1) {
now = timeNowSec();
if (g_appSettings.moonPath == 1)
this.vectorSource.addFeature(this.future(now));
this.pin = iconFeature(
ol.proj.fromLonLat(subLunar(now).ll),
this.icon,
0
);
this.pin.size = 99;
this.vectorSource.addFeature(this.pin);
}
},
show: function () {
this.refresh();
this.vectorLayer.setVisible(true);
lunaButonImg.style.webkitFilter = "brightness(100%)";
},
hide: function () {
this.vectorLayer.setVisible(false);
lunaButonImg.style.webkitFilter = "brightness(50%)";
},
isVisible: function () {
return this.vectorLayer.getVisible();
},
};

Wyświetl plik

@ -1,204 +1,172 @@
// GridTracker ©2020 N0TTL
document.oncontextmenu = function(event) {
event.preventDefault();
}
document.oncontextmenu = function (event) {
event.preventDefault();
};
document.addEventListener("dragover", function (event) {
event.preventDefault();
event.preventDefault();
});
document.addEventListener("drop", function (event) {
event.preventDefault();
event.preventDefault();
});
function openInfoTab(evt, tabName, callFunc, callObj) {
// Declare all variables
var i, infoTabcontent, infoTablinks;
// Get all elements with class="infoTabcontent" and hide them
infoTabcontent = document.getElementsByClassName("infoTabcontent");
for (i = 0; i < infoTabcontent.length; i++) {
infoTabcontent[i].style.display = "none";
}
// Get all elements with class="infoTablinks" and remove the class "active"
infoTablinks = document.getElementsByClassName("infoTablinks");
for (i = 0; i < infoTablinks.length; i++) {
infoTablinks[i].className = infoTablinks[i].className.replace(
" active",
""
);
}
// Show the current tab, and add an "active" class to the button that opened the tab
// Declare all variables
var i,
infoTabcontent,
infoTablinks;
// Get all elements with class="infoTabcontent" and hide them
infoTabcontent = document.getElementsByClassName("infoTabcontent");
for (i = 0; i < infoTabcontent.length; i++) {
infoTabcontent[i].style.display = "none";
}
// Get all elements with class="infoTablinks" and remove the class "active"
infoTablinks = document.getElementsByClassName("infoTablinks");
for (i = 0; i < infoTablinks.length; i++) {
infoTablinks[i].className = infoTablinks[i].className.replace(" active", "");
}
// Show the current tab, and add an "active" class to the button that opened the tab
document.getElementById(tabName).style.display = "block";
if (typeof evt.currentTarget != 'undefined')
evt.currentTarget.className += " active";
else
evt.className += " active";
if (callFunc) {
if ( typeof window.opener.window[callFunc] != 'undefined' )
{
var caller = window.opener.window[callFunc];
if ( caller )
{
if (callObj)
caller(callObj);
else
caller();
}
}
}
document.getElementById(tabName).style.display = "block";
if (typeof evt.currentTarget != "undefined")
evt.currentTarget.className += " active";
else evt.className += " active";
if (callFunc) {
if (typeof window.opener.window[callFunc] != "undefined") {
var caller = window.opener.window[callFunc];
if (caller) {
if (callObj) caller(callObj);
else caller();
}
}
}
}
function resetSearch()
{
window.opener.resetSearch();
function resetSearch() {
window.opener.resetSearch();
}
function lookupCallsign( callsign )
{
window.opener.lookupCallsign(callsign);
function lookupCallsign(callsign) {
window.opener.lookupCallsign(callsign);
}
function appendToChild( elementString , object, onInputString , defaultValue)
{
window[elementString].appendChild(object);
object.oninput = window.opener[onInputString];
object.value = defaultValue;
function appendToChild(elementString, object, onInputString, defaultValue) {
window[elementString].appendChild(object);
object.oninput = window.opener[onInputString];
object.value = defaultValue;
}
function statsFocus( selection )
{
var which = document.getElementById(selection);
if ( which != null )
{
which.focus();
which.selectionStart = which.selectionEnd = which.value.length;
}
function statsFocus(selection) {
var which = document.getElementById(selection);
if (which != null) {
which.focus();
which.selectionStart = which.selectionEnd = which.value.length;
}
}
function ValidateCallsign(inputText, validDiv) {
if ((inputText.value.length > 0)) {
var passed = false;
inputText.value = inputText.value.toUpperCase();
if (/\d/.test(inputText.value) || /[A-Z]/.test(inputText.value)) {
passed = true;
}
if (passed) {
inputText.style.color = "#FF0";
inputText.style.backgroundColor = "green";
if (validDiv)
validDiv.innerHTML = "Valid!";
return true;
} else {
inputText.style.color = "#000";
inputText.style.backgroundColor = "yellow";
if (validDiv)
validDiv.innerHTML = "Invalid!";
return false;
}
} else {
inputText.style.color = "#000";
inputText.style.backgroundColor = "yellow";
if (validDiv)
validDiv.innerHTML = "Invalid!";
return false;
}
if (inputText.value.length > 0) {
var passed = false;
inputText.value = inputText.value.toUpperCase();
if (/\d/.test(inputText.value) || /[A-Z]/.test(inputText.value)) {
passed = true;
}
if (passed) {
inputText.style.color = "#FF0";
inputText.style.backgroundColor = "green";
if (validDiv) validDiv.innerHTML = "Valid!";
return true;
} else {
inputText.style.color = "#000";
inputText.style.backgroundColor = "yellow";
if (validDiv) validDiv.innerHTML = "Invalid!";
return false;
}
} else {
inputText.style.color = "#000";
inputText.style.backgroundColor = "yellow";
if (validDiv) validDiv.innerHTML = "Invalid!";
return false;
}
}
function validateCallByElement( elementString )
{
ValidateCallsign( window[elementString] , null);
function validateCallByElement(elementString) {
ValidateCallsign(window[elementString], null);
}
function init()
{
openInfoTab(event, 'workedBoxDiv', 'showWorkedBox');
function init() {
openInfoTab(event, "workedBoxDiv", "showWorkedBox");
}
function addTextToClipboard(data)
{
navigator.clipboard.writeText(data);
function addTextToClipboard(data) {
navigator.clipboard.writeText(data);
}
function setClipboardFromLookup()
{
if ( window.opener.g_lastLookupAddress )
{
addTextToClipboard(window.opener.g_lastLookupAddress);
}
function setClipboardFromLookup() {
if (window.opener.g_lastLookupAddress) {
addTextToClipboard(window.opener.g_lastLookupAddress);
}
}
function resizeWorked()
{
workedListDiv.style.height = ((window.innerHeight - 63) - 6) + "px" ;
function resizeWorked() {
workedListDiv.style.height = window.innerHeight - 63 - 6 + "px";
}
function Resize() {
if ( statBoxDiv.style.display == "block" ) {
window.opener.showStatBox(true);
}
if (workedBoxDiv.style.display == "block") {
resizeWorked();
}
if (callsignBoxDiv.style.display == "block") {
window.opener.showCallsignBox(true);
}
if (dxccBoxDiv.style.display == "block") {
window.opener.showDXCCsBox();
}
if (cqzoneBoxDiv.style.display == "block") {
window.opener.showCQzoneBox();
}
if (ituzoneBoxDiv.style.display == "block") {
window.opener.showITUzoneBox();
}
if (waswaczoneBoxDiv.style.display == "block") {
window.opener.showWASWACzoneBox();
}
if (wpxBoxDiv.style.display == "block")
{
window.opener.showWPXBox(true);
}
if ( decodeLastDiv.style.display == "block" )
{
decodeLastListDiv.style.height = ((window.innerHeight - 63) + 26) + "px" ;
}
if (statBoxDiv.style.display == "block") {
window.opener.showStatBox(true);
}
if (workedBoxDiv.style.display == "block") {
resizeWorked();
}
if (callsignBoxDiv.style.display == "block") {
window.opener.showCallsignBox(true);
}
if (dxccBoxDiv.style.display == "block") {
window.opener.showDXCCsBox();
}
if (cqzoneBoxDiv.style.display == "block") {
window.opener.showCQzoneBox();
}
if (ituzoneBoxDiv.style.display == "block") {
window.opener.showITUzoneBox();
}
if (waswaczoneBoxDiv.style.display == "block") {
window.opener.showWASWACzoneBox();
}
if (wpxBoxDiv.style.display == "block") {
window.opener.showWPXBox(true);
}
if (decodeLastDiv.style.display == "block") {
decodeLastListDiv.style.height = window.innerHeight - 63 + 26 + "px";
}
}
function reloadInfo(bandOrMode) {
if (statBoxDiv.style.display == "block") {
window.opener.showStatBox(false);
}
if (callsignBoxDiv.style.display == "block") {
window.opener.showCallsignBox(false);
}
if (dxccBoxDiv.style.display == "block") {
window.opener.showDXCCsBox();
}
if (wpxBoxDiv.style.display == "block") {
window.opener.showWPXBox();
}
function reloadInfo( bandOrMode )
{
if ( statBoxDiv.style.display == "block" ) {
window.opener.showStatBox(false);
}
if (callsignBoxDiv.style.display == "block") {
window.opener.showCallsignBox(false);
}
if (dxccBoxDiv.style.display == "block") {
window.opener.showDXCCsBox();
}
if (wpxBoxDiv.style.display == "block") {
window.opener.showWPXBox();
}
if (cqzoneBoxDiv.style.display == "block") {
window.opener.showCQzoneBox();
}
if (ituzoneBoxDiv.style.display == "block") {
window.opener.showITUzoneBox();
}
if (waswaczoneBoxDiv.style.display == "block") {
window.opener.showWASWACzoneBox();
}
if (cqzoneBoxDiv.style.display == "block") {
window.opener.showCQzoneBox();
}
if (ituzoneBoxDiv.style.display == "block") {
window.opener.showITUzoneBox();
}
if (waswaczoneBoxDiv.style.display == "block") {
window.opener.showWASWACzoneBox();
}
}

Plik diff jest za duży Load Diff

Wyświetl plik

@ -1,137 +1,128 @@
table, th, td {
color:#EEE;
white-space: nowrap;
font-family:Sans-Serif;
text-align:auto;
padding:0px;
margin:0px;
top:0;
table,
th,
td {
color: #eee;
white-space: nowrap;
font-family: Sans-Serif;
text-align: auto;
padding: 0px;
margin: 0px;
top: 0;
}
table, th, td, select, .compact {font-size: 12px;}
th,td {
padding-bottom:2px;
padding-right:1px;
margin-right:2px;
padding-left:2px;
table,
th,
td,
select,
.compact {
font-size: 12px;
}
input[type="checkbox"]
{
-webkit-appearance: checkbox !important;
appearance: checkbox !important;
margin:0;
margin-right:1px;
vertical-align: middle;
position: relative;
top: 0px;
th,
td {
padding-bottom: 2px;
padding-right: 1px;
margin-right: 2px;
padding-left: 2px;
}
input[type="checkbox"]:checked
{
// -webkit-appearance: checkbox !important;
// appearance: checkbox !important;
input[type="checkbox"] {
-webkit-appearance: checkbox !important;
appearance: checkbox !important;
margin: 0;
margin-right: 1px;
vertical-align: middle;
position: relative;
top: 0px;
}
input[type="checkbox"]:checked {
// -webkit-appearance: checkbox !important;
// appearance: checkbox !important;
}
select {
-webkit-appearance: none;
-webkit-border-radius:6px;
text-indent: 0.20px;
text-overflow: '';
padding: 2px;
padding-right: 3px;
background-color:darkgreen;
color:#ff0;
cursor:pointer;
}
select:focus
{
outline:none;
-webkit-appearance: none;
-webkit-border-radius: 6px;
text-indent: 0.2px;
text-overflow: "";
padding: 2px;
padding-right: 3px;
background-color: darkgreen;
color: #ff0;
cursor: pointer;
}
select:focus {
outline: none;
}
select:hover
{
border-color:#FFF;
select:hover {
border-color: #fff;
}
select:disabled
{
border:1px solid #333;
background-color:#000;
color:#AAA;
outline:none;
select:disabled {
border: 1px solid #333;
background-color: #000;
color: #aaa;
outline: none;
}
select option {
margin: 40px;
background: #000;
color: #EEE;
text-shadow: 0 2px 0 rgba(0, 0, 0, 0.4);
-moz-appearance: none;
-webkit-appearance: none;
-moz-border-radius:8px;
-webkit-border-radius:8px;
border-radius:8px;
text-indent: 0.20px;
text-overflow: '';
text-align:right;
padding: 5px;
margin: 40px;
background: #000;
color: #eee;
text-shadow: 0 2px 0 rgba(0, 0, 0, 0.4);
-moz-appearance: none;
-webkit-appearance: none;
-moz-border-radius: 8px;
-webkit-border-radius: 8px;
border-radius: 8px;
text-indent: 0.2px;
text-overflow: "";
text-align: right;
padding: 5px;
}
select option:focus
{
color: #F00;
select option:focus {
color: #f00;
}
option:disabled
{
color: #666;
option:disabled {
color: #666;
}
.controlItem
{
-webkit-appearance: none;
margin:0;
padding:0;
padding-top:1px;
margin-top:1px;
margin-bottom:1px;
border-width:1px;
border-color:#AAA;
border-style:inset;
-webkit-border-radius:4px;
display:inline-block;
-webkit-transition:border-color;
vertical-align:top;
.controlItem {
-webkit-appearance: none;
margin: 0;
padding: 0;
padding-top: 1px;
margin-top: 1px;
margin-bottom: 1px;
border-width: 1px;
border-color: #aaa;
border-style: inset;
-webkit-border-radius: 4px;
display: inline-block;
-webkit-transition: border-color;
vertical-align: top;
}
table.awardTableCSS {
border-collapse: collapse;
border: 0px solid #888;
background-color: black;
text-align: center;
}
table.awardTableCSS td, table.awardTableCSS th {
table.awardTableCSS td,
table.awardTableCSS th {
border: 1px solid #888;
padding:2px 4px;
border-left: none;
border-right: none;
padding: 2px 4px;
border-left: none;
border-right: none;
}
table.awardTableCSS thead {
border-bottom: 0px solid #888;
}
table.awardTableCSS thead th {
font-weight: bold;
@ -140,12 +131,11 @@ table.awardTableCSS thead th {
}
table.awardTableCSS thead th:first-child {
border-left: none;
}
.awardTableCSS tr:hover td{ box-shadow: inset 0px 11px 6px -8px #888, inset 0px -11px 6px -8px #888; }
.awardTableCSS tr:hover td {
box-shadow: inset 0px 11px 6px -8px #888, inset 0px -11px 6px -8px #888;
}
table.rosterTable {
border-collapse: collapse;
@ -154,87 +144,92 @@ table.rosterTable {
text-align: center;
}
table.rosterTable td, table.rosterTable th {
table.rosterTable td,
table.rosterTable th {
border: 1px solid #555;
padding:2px 4px;
padding: 2px 4px;
}
table.rosterTable thead {
border-bottom: 1px solid #555;
}
table.rosterTable thead th {
font-weight: bold;
text-align: center;
border-left:1px solid #555;
top:-1px;
position:sticky;
background-color: #000000FF;
font-weight: bold;
text-align: center;
border-left: 1px solid #555;
top: -1px;
position: sticky;
background-color: #000000ff;
}
table.rosterTable thead th:first-child {
border-left: none;
}
.rosterTable tr:hover td{ box-shadow: inset 0px 11px 6px -8px #555, inset 0px -11px 6px -8px #555; }
.rosterTable tr:hover td {
box-shadow: inset 0px 11px 6px -8px #555, inset 0px -11px 6px -8px #555;
}
.oneByOne {
background-clip:content-box;box-shadow: 0 0 8px 3px inset #FFF;background-color:#000;color:#FF0;
background-clip: content-box;
box-shadow: 0 0 8px 3px inset #fff;
background-color: #000;
color: #ff0;
}
.dxCaller {
background-clip:content-box;box-shadow: 0 0 4px 4px inset #0F0;background-color:#000;color:#FF0;
background-clip: content-box;
box-shadow: 0 0 4px 4px inset #0f0;
background-color: #000;
color: #ff0;
}
.dxCalling {
background-clip:content-box;box-shadow: 0 0 4px 4px inset #F00;background-color:#000;color:#FF0;
background-clip: content-box;
box-shadow: 0 0 4px 4px inset #f00;
background-color: #000;
color: #ff0;
}
.compact
{
cursor:pointer;
margin:0px;
padding:0px;
margin-right:2px;
margin-bottom:2px;
border-width:2px;
border-color:#999;
border-style:outset;
min-width: 9em;
min-height: 2em;
display:inline-block;
color:#EEE;
-webkit-transition: border-style;
-webkit-border-radius:4px;
.compact {
cursor: pointer;
margin: 0px;
padding: 0px;
margin-right: 2px;
margin-bottom: 2px;
border-width: 2px;
border-color: #999;
border-style: outset;
min-width: 9em;
min-height: 2em;
display: inline-block;
color: #eee;
-webkit-transition: border-style;
-webkit-border-radius: 4px;
}
.compact:active
{
border-style:inset;
.compact:active {
border-style: inset;
}
.compact:hover {
border-color:#FFF;
border-color: #fff;
}
.compactCallsign {
padding:1px;
overflow: hidden;
white-space: nowrap;
padding: 1px;
overflow: hidden;
white-space: nowrap;
}
.compactDXCC {
padding:2px;
max-width: 9em;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
padding: 2px;
max-width: 9em;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.rosterTable tr:hover td{ box-shadow: inset 0px 11px 6px -8px #888, inset 0px -11px 6px -8px #888; }
.rosterTable tr:hover td {
box-shadow: inset 0px 11px 6px -8px #888, inset 0px -11px 6px -8px #888;
}

Wyświetl plik

@ -1,15 +1,15 @@
{
"name": "GridTracker",
"product_string": "GridTracker",
"window" : {
"id" : "mainWindow",
"icon" : "gridview.png",
"toolbar" : false,
"show" : false,
"width" : 800,
"height" : 652
},
"webkit": {
"window": {
"id": "mainWindow",
"icon": "gridview.png",
"toolbar": false,
"show": false,
"width": 800,
"height": 652
},
"webkit": {
"plugin": true
},
"main": "GridTracker.html"