- fixed sunrise bug
- faster css - fixed Makefiles
This commit is contained in:
parent
faeeb612d3
commit
151a40aab5
9 changed files with 101 additions and 131905 deletions
39
index.html
39
index.html
|
|
@ -41,6 +41,7 @@
|
|||
<link rel="stylesheet" href="style.css" />
|
||||
<script type="text/javascript" src="js/SL.Astro.js"></script>
|
||||
<script type="text/javascript" src="js/SL.Calendar.js"></script>
|
||||
<!--script type="text/javascript" src="js/SL.App.js"></script-->
|
||||
|
||||
<!--
|
||||
* load SUBLUNAR ALMANAC plugin modules
|
||||
|
|
@ -92,7 +93,7 @@
|
|||
<div id="calendar">
|
||||
<div id="caption">
|
||||
<center>
|
||||
<h3 class="stoke">How does this work? <a href="http://sublunar.space/2018-12-sublunar-almanac.html#doc" target="_blank">Read!</a></h3>
|
||||
<h3 class="stoke"></h3>
|
||||
</center>
|
||||
</div>
|
||||
<div id="grid">
|
||||
|
|
@ -280,6 +281,39 @@
|
|||
<a href="http://bootswatch.com" target="_blank">bootswatch v3.3.7</a>, © 2012-2017 Thomas Park, <a href="https://opensource.org/licenses/MIT" target="_blank">(MIT)</a>.
|
||||
</p>
|
||||
</center>
|
||||
<hr />
|
||||
<h3>User Guide</h3>
|
||||
<p>The <em>Sublunar Almanac</em> is a browser based tool to display and filter a <em>roster of Planetary Hours</em>, the most commonly used time-frames for starting magical operations. The starting and ending times, as well as the durations of Planetary Hours depend on the <em>geographic location</em> because they are defined by the respective local rising and setting times of the sun. The <em>Sublunar Almanac</em> can be used to find auspicious hours based on <em>place</em> and <em>astrological data</em> and information found in <em>grimoires</em> and other <em>magical texts</em>.</p>
|
||||
<h4>Overview</h4>
|
||||
<p>When activated properly <em>Sublunar Almanac</em> displays a roster of rectangular boxes, each representing a Planetary Hour.</p>
|
||||
<p>They are numbered from 1 to 24, the <em>yellow</em> ones are during the <em>day</em> (sunrise to sunset), the <em>blue</em> ones during the <em>night</em> (sunset to sunrise). The large number in the bottom row indicates the <em>number of the hour</em>, the numbers in the center of the top row show the real <a href="https://en.wikipedia.org/wiki/Gregorian_calendar">Gregorian Calendar</a> <em>date</em> in the format dd/mm. The symbol in the top left corner indicates the <em>ruler of the current Planetary Day</em> (Sol, Luna, Mars, Mercury, Jupiter, Venus, Saturn) and the one in the right corner the <em>ruler of the Planetary Hour</em>. Below you find the <em>starting time</em> of this hour on the left in hh:mm format and the <em>ending time</em> on the right, respectively.</p>
|
||||
<p>But before the <em>Sublunar Almanac</em> shows you any of this, it needs to be individually <em>set up</em>.</p>
|
||||
<h4>Settings</h4>
|
||||
<p>The program needs to know a <em>geographic location</em> and a <em>range of hours</em> to display, among other options. These must be set properly. To do that, click the <em>Settings</em> button on the top left of the grey <em>navigation bar</em>:</p>
|
||||
<p>The easiest way to set up a location is by clicking the <em>Locate Me</em> button and allowing the browser to pass the geolocation information to the <em>Almanac</em>. If your browser does not support that feature or if you want to calculate the <em>Almanac</em> for a location that is not the one you are currently at, you can enter it manually by typing the <em>name of your city</em> or place into the "<em>Manual Geolocation</em>" field and wait for the <em>auto-complete list</em> to show you all the matches. When you click one of the options in the list, the fields for <em>UTC-Offset</em> (time difference from Universal Time), <em>Latitude</em> and <em>Longitude</em> are automatically filled in.</p>
|
||||
<p>Alternatively you may of course provide the coordinates and offset yourself <em>manually</em>. These latter fields are <em>crucial</em> for the <em>Almanac</em> to function, so if they are empty, <em>it won't work</em>.</p>
|
||||
<p>The other important information needed is the <em>time-range</em> to be displayed. The <em>Time and Date</em> field can be used to adjust the desired starting point of the Almanac. It is set to <em>right now</em> by default. The number of days for which the <em>Almanac</em> will calculate the hours can be set in the <em>Generate Days</em> field. It is set to one week by default but can take any number of days. The <em>Almanac</em> takes around one second to calculate all information for one day, so if you want to generate 30 or more days, prepare to be <em>patient</em>.</p>
|
||||
<p>The <em>Almanac</em> shows you all the hours from the beginning of the day set up in the <em>Time and Date</em> field. If you want to only see hours that lie in the future, tick the <em>Hide Past</em> checkbox. By default the <em>Almanac</em> uses the <em>Tropical Zodiac</em> for Astrological calculations. If you - like myself - prefer to use the <em>Sidereal Zodiac</em>, please make sure you tick the <em>Sidereal</em> checkbox.</p>
|
||||
<p>The bottom part of the <em>Settings</em> are a list of all <em>Plug-in Modules</em> currently implemented in the <em>Sublunar Almanac</em>. Each module calculates and displays different information based on astrological phenomena and lists of auspicious times transmitted through magical texts and these modules are the <em>power behind the Almanac</em>.</p>
|
||||
<p>By default, all modules related to astrological phenomena and planetary timing are <em>activated</em> and all modules related to magical texts are <em>deactivated</em>, so if you want to see for example, what the <em>Hygromanteia</em> or <em>PGM</em> have to say about certain times the moon is in certain Zodiac signs, make sure to activate these modules by <em>ticking their checkbox</em>.</p>
|
||||
<p>When all settings are made, click the blue <em>Generate</em> button and watch the magic unfold. The <em>Settings</em> window will close and a <em>blue line and circle</em> on the top of the screen will indicate the <em>status</em> of the <em>background calculations</em>. When it is done, the roster of Planetary Hours will appear according to your settings.</p>
|
||||
<h4>Hour Information</h4>
|
||||
<p>When you <em>click</em> any of the Planetary Hour boxes you can see all calculated information about this hour depending on the modules previously selected in the Settings:</p>
|
||||
<p>If you want to save this selected hour to your <em>Google Calendar</em> or any other calendar that supports the <em>iCal</em> format, such as Apple or Microsoft Calendar, click one of the buttons on the bottom of the information window.</p>
|
||||
<h4>Filtering</h4>
|
||||
<p>The main power of <em>Sublunar Almanac</em> is the <em>filtering</em>. Notice the small menus that appeared in the <em>top right of the navigation bar</em> after you clicked Generate? These are filters provided by the modules to find an auspicious hour for whatever operation you want to execute.</p>
|
||||
<p>When you click on one of them, its <em>filter options</em> will be displayed:</p>
|
||||
<p>Here you can see two columns with all the <em>filter criteria</em> you can apply to the hours in the roster. The <em>left column</em> is a list of <em>tags</em> related to all the criteria listed in the right column. If you click on one of the tags, only the criteria related to this tag are listed. When you <em>click a filter criterium in the right column</em> it will <em>immediately be applied</em> to the grid of Planetary Hours in the background. The filter criteria are <em>mutually inclusive</em> ("OR" logic), that means that when you select more than one of them, <em>all of the selected ones</em> are applied ("show hours matching criterium A OR B OR C").</p>
|
||||
<p>In contrast, the filter sections themselves are <em>mutually exclusive</em> ("AND" logic). So if you select criteria from filter A and criteria from filter B, the calendar will just display dates that have an <em>overlap</em> of the criteria of A and B ("show hours matching criterium A OR B from filter A AND criterium C from filter D"). This has been done to make it possible to find Planetary Hours that have <em>overlapping auspiciousness</em> criteria (for example to "find an hour of Mercury on the day of Jupiter when Mercury is exalted") - in Rune Soup terms also known as "<em>Fruit Machine</em>" moments.</p>
|
||||
<p><em>Beware:</em> If you choose <em>too many criteria</em> that do not match any of the displayed Planetary Hours, the roster will <em>become empty</em>. To reset all the filters at the same time and display all Planetary Hours, click the <em>Reset</em> button in the navigation bar.</p>
|
||||
<h4>Notes and Caveats</h4>
|
||||
<p>Most importantly: I take <em>no reliability or warranty on the accuracy</em> of any of the information provided by <em>Sublunar Almanac</em>.</p>
|
||||
<p>I am <em>not a professional</em> JavaScript programmer, but I taught myself how to code to get stuff done. <em>Please forgive me</em> if my code looks shit or has bugs.</p>
|
||||
<p>Of course <em>astrological phenomena</em> are in <em>constant change</em>, from minute to minute. The <em>Sublunar Almanac</em> calculates all data for the <em>start time</em> of each Planetary Hour, so if your magical operation strictly depends on the moon being in a certain range of degrees of the Zodiac or needs to happen only on a certain Lunar day, please double-check with other sources. Usually it is <em>magically sufficient</em> to <em>start a magical operation in a certain hour</em>.</p>
|
||||
<p>The difference between <em>tropical</em> and <em>sidereal Zodiac</em> I use is 24° 07' 02"</p>
|
||||
<p>For <em>technical reasons</em> the only dates where all phenomena can be fairly <em>accurately</em> calculated are between <em>1900</em> and <em>2100</em> CT, Lunar Days only between <em>1970</em> and <em>2100</em>.</p>
|
||||
<p><em>Lunar Day 1</em> starts on the <em>exact moment of New Moon</em>, all consecutive Lunar Days start at local <em>moonrise</em>-times.</p>
|
||||
<p>For astrological <em>aspects</em> I use orbs according to <em>Hellenistic sources</em>. All planets have an orb-size of 3 degrees, the luminaries 3.2 degrees for all aspects except conjunctions where the moon has 13 degrees and the sun 15. For direction and speed calculations I interpret all speeds between -0.01 and 0.01 degrees as <em>stations</em> for the inner planets and between -0.001 and 0.001 degrees for the outer planets, everything below that is <em>retrograde</em>, everything above <em>direct</em>.</p>
|
||||
</script>
|
||||
|
||||
<!--
|
||||
|
|
@ -450,7 +484,10 @@
|
|||
});
|
||||
|
||||
if ( $("body").attr("use") == "offline" ) {
|
||||
$('#caption .stoke').html(nw.App.manifest.window.title);
|
||||
SL.App.authorize();
|
||||
} else {
|
||||
$('#caption .stoke').html('What is this and how does it work? <a href="http://sublunar.space/2018-12-sublunar-almanac.html" target="_blank">Read!</a>');
|
||||
}
|
||||
|
||||
</script>
|
||||
|
|
|
|||
BIN
js/pmom.wasm
BIN
js/pmom.wasm
Binary file not shown.
131818
js/pmom.wast
131818
js/pmom.wast
File diff suppressed because one or more lines are too long
|
|
@ -13,7 +13,7 @@
|
|||
# send email to the Swiss Ephemeris mailing list.
|
||||
#
|
||||
|
||||
CFLAGS = -g -Wall -fPIC -O2 -DVARIANT=2 # for Linux and other gcc systems
|
||||
CFLAGS = -g -Wall -fPIC -O2 -DUSECASE=2 # for Linux and other gcc systems
|
||||
OP=$(CFLAGS)
|
||||
CC=emcc #for Linux
|
||||
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@
|
|||
# send email to the Swiss Ephemeris mailing list.
|
||||
#
|
||||
|
||||
CFLAGS = -g -Wall -fPIC -O2 -DVARIANT=1 # for Linux and other gcc systems
|
||||
CFLAGS = -g -Wall -fPIC -O2 -DUSECASE=1 # for Linux and other gcc systems
|
||||
OP=$(CFLAGS)
|
||||
CC=cc #for Linux
|
||||
|
||||
|
|
|
|||
102
lib/sweph/pmom.c
102
lib/sweph/pmom.c
|
|
@ -6,8 +6,8 @@
|
|||
#define ONLINE 1
|
||||
#define OFFLINE 2
|
||||
|
||||
#ifndef VARIANT
|
||||
#error "VARIANT needs to be set"
|
||||
#ifndef USECASE
|
||||
#error "USECASE needs to be set"
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
|
|
@ -16,7 +16,7 @@
|
|||
#include <math.h>
|
||||
#include "swephexp.h"
|
||||
|
||||
#if VARIANT == OFFLINE
|
||||
#if USECASE == OFFLINE
|
||||
#include <emscripten.h>
|
||||
#endif
|
||||
|
||||
|
|
@ -73,30 +73,41 @@ long time_to_epoch(int32 year, int32 month, int32 day, int32 hour, int32 minute,
|
|||
}
|
||||
|
||||
/**
|
||||
* converts UNIX epoch to JD
|
||||
* converts UNIX epoch to time array
|
||||
*/
|
||||
double epoch_to_jul(long ts)
|
||||
int * epoch_to_time(long ts, int *time)
|
||||
{
|
||||
time_t timestamp;
|
||||
struct tm *tmp;
|
||||
int32 year, month, day, hour, minute, second;
|
||||
double hours;
|
||||
|
||||
// convert timestamp to tm struct
|
||||
timestamp = ts;
|
||||
tmp = gmtime(×tamp);
|
||||
|
||||
// read the data
|
||||
year = tmp->tm_year+1900;
|
||||
month = tmp->tm_mon+1;
|
||||
day = tmp->tm_mday;
|
||||
hour = tmp->tm_hour;
|
||||
minute = tmp->tm_min;
|
||||
second = tmp->tm_sec;
|
||||
hours = (double) hour + (double) minute / 60 + (double) second / 3600;
|
||||
time[0] = tmp->tm_year+1900;
|
||||
time[1] = tmp->tm_mon+1;
|
||||
time[2] = tmp->tm_mday;
|
||||
time[3] = tmp->tm_hour;
|
||||
time[4] = tmp->tm_min;
|
||||
time[5] = tmp->tm_sec;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* converts UNIX epoch to JD
|
||||
*/
|
||||
double epoch_to_jul(long ts)
|
||||
{
|
||||
int32 time[6];
|
||||
double hours;
|
||||
|
||||
epoch_to_time(ts, time);
|
||||
hours = (double) time[3] + (double) time[4] / 60 + (double) time[5] / 3600;
|
||||
|
||||
// return JD
|
||||
return swe_julday(year,month,day,hours,SE_GREG_CAL);
|
||||
return swe_julday(time[0],time[1],time[2],hours,SE_GREG_CAL);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -150,7 +161,7 @@ int * planetary_moment(double lat, double lon, long unixtime, double *lunar, dou
|
|||
hours = (double) hour + (double) minute / 60 + (double) second / 3600;
|
||||
|
||||
// set ephemeris path and flags
|
||||
swe_set_ephe_path("lib");
|
||||
swe_set_ephe_path("");
|
||||
iflag = SEFLG_SPEED;
|
||||
ipl = SE_MOON;
|
||||
rsmi = SE_CALC_RISE;
|
||||
|
|
@ -208,7 +219,7 @@ int * solar_moment(double lat, double lon, long unixtime, long *solar) {
|
|||
int32 year, month, day, hour, minute, second, iflag, pday = 0;
|
||||
int ipl, rsmi, hourlength[3];
|
||||
double hours, tjd, td;
|
||||
double datm[2], geopos[3], sunyesterday[2], suntoday[2], suntomorrow[2];
|
||||
double datm[2], geopos[3], lastset, lastrise, nextset, nextrise, onextrise, onextset;
|
||||
char serr[AS_MAXCH], starname[255], pds[80];
|
||||
|
||||
datm[0] = 1013.25; // atmospheric pressure
|
||||
|
|
@ -232,28 +243,40 @@ int * solar_moment(double lat, double lon, long unixtime, long *solar) {
|
|||
geopos[1] = lat;
|
||||
geopos[2] = 0;
|
||||
swe_set_topo(geopos[0], geopos[1], geopos[2]);
|
||||
tjd = swe_julday(year,month,day,0,SE_GREG_CAL);
|
||||
tjd = swe_julday(year,month,day,0.0,SE_GREG_CAL);
|
||||
|
||||
if ( lon > 70.0 ) tjd = tjd - 1;
|
||||
|
||||
// calculate sunrise and sunset of the day and the days before and after tomorrow
|
||||
ipl = SE_SUN;
|
||||
rsmi = SE_CALC_RISE;
|
||||
swe_rise_trans(tjd, ipl, starname, iflag, rsmi, geopos, datm[0], datm[1], &suntoday[0], serr);
|
||||
swe_rise_trans(tjd+1, ipl, starname, iflag, rsmi, geopos, datm[0], datm[1], &suntomorrow[0], serr);
|
||||
rsmi = SE_CALC_SET;
|
||||
swe_rise_trans(tjd-1, ipl, starname, iflag, rsmi, geopos, datm[0], datm[1], &sunyesterday[1], serr);
|
||||
swe_rise_trans(tjd, ipl, starname, iflag, rsmi, geopos, datm[0], datm[1], &suntoday[1], serr);
|
||||
swe_rise_trans(tjd+1, ipl, starname, iflag, rsmi, geopos, datm[0], datm[1], &suntomorrow[1], serr);
|
||||
|
||||
hourlength[0] = (jul_to_epoch(suntoday[0]) - jul_to_epoch(sunyesterday[1])) / 12; // length of night hours yesterday
|
||||
hourlength[1] = (jul_to_epoch(suntoday[1]) - jul_to_epoch(suntoday[0])) / 12; // length of day hours today
|
||||
if ( hourlength[1] < 0 ) hourlength[1] = (jul_to_epoch(suntomorrow[1]) - jul_to_epoch(suntoday[0])) / 12;
|
||||
hourlength[2] = (jul_to_epoch(suntomorrow[0]) - jul_to_epoch(suntoday[1])) / 12; // length of night hours today
|
||||
// next rise and set
|
||||
swe_rise_trans(tjd, ipl, starname, iflag, SE_CALC_RISE, geopos, datm[0], datm[1], &nextrise, serr);
|
||||
swe_rise_trans(tjd, ipl, starname, iflag, SE_CALC_SET, geopos, datm[0], datm[1], &nextset, serr);
|
||||
|
||||
// previous rise and set
|
||||
swe_rise_trans(tjd-1, ipl, starname, iflag, SE_CALC_RISE, geopos, datm[0], datm[1], &lastrise, serr);
|
||||
swe_rise_trans(tjd-1, ipl, starname, iflag, SE_CALC_SET, geopos, datm[0], datm[1], &lastset, serr);
|
||||
|
||||
// next rise after next rise
|
||||
swe_rise_trans(tjd+1, ipl, starname, iflag, SE_CALC_RISE, geopos, datm[0], datm[1], &onextrise, serr);
|
||||
swe_rise_trans(tjd+1, ipl, starname, iflag, SE_CALC_SET, geopos, datm[0], datm[1], &onextset, serr);
|
||||
|
||||
|
||||
if ( nextset < nextrise ) {
|
||||
lastset = nextset;
|
||||
nextset = onextset;
|
||||
}
|
||||
|
||||
hourlength[0] = (jul_to_epoch(nextrise) - jul_to_epoch(lastset)) / 12; // length of night hours yesterday
|
||||
hourlength[1] = (jul_to_epoch(nextset) - jul_to_epoch(nextrise)) / 12; // length of day hours today
|
||||
hourlength[2] = (jul_to_epoch(onextrise) - jul_to_epoch(nextset)) / 12; // length of night hours today
|
||||
|
||||
// calculate planetary hour
|
||||
solar[0] = jul_to_epoch(sunyesterday[1]); // set yesterday
|
||||
solar[1] = jul_to_epoch(suntoday[0]); // rise today
|
||||
solar[2] = jul_to_epoch(suntoday[1]); // set today
|
||||
solar[3] = jul_to_epoch(suntomorrow[0]); // rise tomorrow
|
||||
solar[0] = jul_to_epoch(lastset); // set yesterday
|
||||
solar[1] = jul_to_epoch(nextrise); // rise today
|
||||
solar[2] = jul_to_epoch(nextset); // set today
|
||||
solar[3] = jul_to_epoch(onextrise); // rise tomorrow
|
||||
solar[4] = hourlength[0]; // night hour length yesterday
|
||||
solar[5] = hourlength[1]; // day hour length today
|
||||
solar[6] = hourlength[2]; // night hour length today
|
||||
|
|
@ -270,7 +293,7 @@ const char * pmom(int days, long epoch, double latitude, double longitude, int b
|
|||
long queryday;
|
||||
struct tm *tmp;
|
||||
time_t timestamp = 0;
|
||||
int32 year, month, day, hour, minute, second, j, h, m, interval, start, hm;
|
||||
int32 year, month, day, hour, minute, second, j, h, m, interval, start, hm, time[6];
|
||||
double hours;
|
||||
long solar[9] = {0};
|
||||
double lunar[3] = {0.0}, planet[16] = {0.0};
|
||||
|
|
@ -312,10 +335,7 @@ const char * pmom(int days, long epoch, double latitude, double longitude, int b
|
|||
|
||||
planetary_moment(latitude, longitude, hm, lunar, planet);
|
||||
|
||||
length += snprintf(Buffer+length, buflen-length,
|
||||
"{ \"ts\": %d, \"lunar\": { \"day\": %d, \"angle\": %f, \"phase\": %f }, \"planetary\": { \"day\": { \"no\": %d, \"start\": %d, \"end\": %d }, \"night\": { \"start\": %d, \"end\": %d }, \"hour\": { \"no\": %d, \"start\": %d, \"end\": %d, \"length\": { \"day\": %d, \"night\": %d } } }, \"ephemeris\": { \"sun\": { \"deg\": %f, \"speed\": %f }, \"moon\": { \"deg\": %f, \"speed\": %f }, \"mercury\": { \"deg\": %f, \"speed\": %f }, \"venus\": { \"deg\": %f, \"speed\": %f }, \"mars\": { \"deg\": %f, \"speed\": %f }, \"jupiter\": { \"deg\": %f, \"speed\": %f }, \"saturn\": { \"deg\": %f, \"speed\": %f }, \"asc\": { \"deg\": %f }, \"mc\": { \"deg\": %f } } }",
|
||||
hm, (int) lunar[0], lunar[1], lunar[2], solar[7], solar[1], solar[2]-1, solar[2], solar[3]-1, h, hm, hm+interval-1, solar[5], solar[6], planet[0], planet[7], planet[1], planet[8], planet[2], planet[9], planet[3], planet[10], planet[4], planet[11], planet[5], planet[12], planet[6], planet[13], planet[14], planet[15]
|
||||
);
|
||||
length += snprintf(Buffer+length, buflen-length, "{ \"ts\": %d, \"lunar\": { \"day\": %d, \"angle\": %f, \"phase\": %f }, \"planetary\": { \"day\": { \"no\": %d, \"start\": %d, \"end\": %d }, \"night\": { \"start\": %d, \"end\": %d }, \"hour\": { \"no\": %d, \"start\": %d, \"end\": %d, \"length\": { \"day\": %d, \"night\": %d } } }, \"ephemeris\": { \"sun\": { \"deg\": %f, \"speed\": %f }, \"moon\": { \"deg\": %f, \"speed\": %f }, \"mercury\": { \"deg\": %f, \"speed\": %f }, \"venus\": { \"deg\": %f, \"speed\": %f }, \"mars\": { \"deg\": %f, \"speed\": %f }, \"jupiter\": { \"deg\": %f, \"speed\": %f }, \"saturn\": { \"deg\": %f, \"speed\": %f }, \"asc\": { \"deg\": %f }, \"mc\": { \"deg\": %f } } }", hm, (int) lunar[0], lunar[1], lunar[2], solar[7], solar[1], solar[2]-1, solar[2], solar[3]-1, h, hm, hm+interval-1, solar[5], solar[6], planet[0], planet[7], planet[1], planet[8], planet[2], planet[9], planet[3], planet[10], planet[4], planet[11], planet[5], planet[12], planet[6], planet[13], planet[14], planet[15] );
|
||||
|
||||
//length += snprintf(Buffer+length, buflen-length, "%d setyes %d risetod %d settod %d risetom %d nhly %d dhlt %d nhlt %d pday %d\n", hm, solar[0], solar[1], solar[2], solar[3], solar[4], solar[5], solar[6], solar[7]);
|
||||
|
||||
|
|
@ -324,14 +344,14 @@ const char * pmom(int days, long epoch, double latitude, double longitude, int b
|
|||
|
||||
h++;
|
||||
}
|
||||
queryday = solar[3];
|
||||
queryday = hm;
|
||||
j++;
|
||||
};
|
||||
length += snprintf(Buffer+length, buflen-length, "]}");
|
||||
return Buffer;
|
||||
}
|
||||
|
||||
#if VARIANT == ONLINE
|
||||
#if USECASE == ONLINE
|
||||
int main(int argc,char* argv[]) // days, timestamp, latitude, longitude
|
||||
{
|
||||
double latitude = 0.0;
|
||||
|
|
@ -364,7 +384,7 @@ int main(int argc,char* argv[]) // days, timestamp, latitude, longitude
|
|||
}
|
||||
#endif
|
||||
|
||||
#if VARIANT == OFFLINE
|
||||
#if USECASE == OFFLINE
|
||||
EMSCRIPTEN_KEEPALIVE
|
||||
const char * get(int days, long epoch, double latitude, double longitude) // days, timestamp, latitude, longitude
|
||||
{
|
||||
|
|
|
|||
43
style.css
43
style.css
|
|
@ -1,39 +1,3 @@
|
|||
/* noto-sans-regular - greek_greek-ext_latin_latin-ext */
|
||||
@font-face {
|
||||
font-family: 'Noto Sans';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: local('Noto Sans'), local('NotoSans'),
|
||||
url('3rd/fonts/noto-sans-v6-greek_greek-ext_latin_latin-ext-regular.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
|
||||
url('3rd/fonts/noto-sans-v6-greek_greek-ext_latin_latin-ext-regular.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
|
||||
}
|
||||
/* noto-sans-italic - greek_greek-ext_latin_latin-ext */
|
||||
@font-face {
|
||||
font-family: 'Noto Sans';
|
||||
font-style: italic;
|
||||
font-weight: 400;
|
||||
src: local('Noto Sans Italic'), local('NotoSans-Italic'),
|
||||
url('3rd/fonts/noto-sans-v6-greek_greek-ext_latin_latin-ext-italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
|
||||
url('3rd/fonts/noto-sans-v6-greek_greek-ext_latin_latin-ext-italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
|
||||
}
|
||||
/* noto-sans-700italic - greek_greek-ext_latin_latin-ext */
|
||||
@font-face {
|
||||
font-family: 'Noto Sans';
|
||||
font-style: italic;
|
||||
font-weight: 700;
|
||||
src: local('Noto Sans Bold Italic'), local('NotoSans-BoldItalic'),
|
||||
url('3rd/fonts/noto-sans-v6-greek_greek-ext_latin_latin-ext-700italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
|
||||
url('3rd/fonts/noto-sans-v6-greek_greek-ext_latin_latin-ext-700italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
|
||||
}
|
||||
/* noto-sans-700 - greek_greek-ext_latin_latin-ext */
|
||||
@font-face {
|
||||
font-family: 'Noto Sans';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
src: local('Noto Sans Bold'), local('NotoSans-Bold'),
|
||||
url('3rd/fonts/noto-sans-v6-greek_greek-ext_latin_latin-ext-700.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
|
||||
url('3rd/fonts/noto-sans-v6-greek_greek-ext_latin_latin-ext-700.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
|
||||
}
|
||||
|
||||
/* stoke-300 - latin */
|
||||
@font-face {
|
||||
|
|
@ -57,7 +21,6 @@
|
|||
body {
|
||||
color: #9A8961;
|
||||
background-color: #090A0E;
|
||||
font-family: 'Noto Sans';
|
||||
}
|
||||
|
||||
ul {
|
||||
|
|
@ -74,10 +37,6 @@ li {
|
|||
text-align: center;
|
||||
}
|
||||
|
||||
.noto {
|
||||
font-family: 'Noto Sans'
|
||||
}
|
||||
|
||||
.stoke {
|
||||
font-family: 'Stoke'
|
||||
}
|
||||
|
|
@ -128,7 +87,6 @@ li {
|
|||
}
|
||||
|
||||
.planetaryhour table td {
|
||||
font-family: 'Noto Sans';
|
||||
padding-bottom: 5px;
|
||||
width: 33%;
|
||||
}
|
||||
|
|
@ -164,7 +122,6 @@ li {
|
|||
|
||||
.planetaryhour table tr:nth-child(2) td:nth-child(2) {
|
||||
font-size: 1.6em;
|
||||
font-family: 'Stoke';
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue