[mod] helpers: outsourced pit
This commit is contained in:
parent
32ec509064
commit
810965d255
5 changed files with 16 additions and 482 deletions
|
@ -111,8 +111,8 @@ namespace _zeitbild.api
|
||||||
const session : {key : string; value : lib_plankton.session.type_session;} = await session_from_stuff(stuff);
|
const session : {key : string; value : lib_plankton.session.type_session;} = await session_from_stuff(stuff);
|
||||||
const user_id : _zeitbild.type_user_id = await _zeitbild.service.user.identify(session.value.name);
|
const user_id : _zeitbild.type_user_id = await _zeitbild.service.user.identify(session.value.name);
|
||||||
|
|
||||||
const from : _zeitbild.helpers.type_pit = parseInt(stuff.query_parameters["from"]);
|
const from : lib_plankton.pit.type_pit = parseInt(stuff.query_parameters["from"]);
|
||||||
const to : _zeitbild.helpers.type_pit = parseInt(stuff.query_parameters["to"]);
|
const to : lib_plankton.pit.type_pit = parseInt(stuff.query_parameters["to"]);
|
||||||
const calendar_ids_wanted : (null | Array<_zeitbild.type_calendar_id>) = (
|
const calendar_ids_wanted : (null | Array<_zeitbild.type_calendar_id>) = (
|
||||||
(
|
(
|
||||||
("calendar_ids" in stuff.query_parameters)
|
("calendar_ids" in stuff.query_parameters)
|
||||||
|
|
|
@ -4,478 +4,12 @@
|
||||||
namespace _zeitbild.helpers
|
namespace _zeitbild.helpers
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
|
||||||
*/
|
|
||||||
export function date_object_get_week_of_year(
|
|
||||||
date : Date
|
|
||||||
) : int
|
|
||||||
{
|
|
||||||
let date_ : Date = new Date(date.getTime());
|
|
||||||
date_.setHours(0, 0, 0, 0);
|
|
||||||
// Thursday in current week decides the year.
|
|
||||||
date_.setDate(date_.getDate() + 3 - (date_.getDay() + 6) % 7);
|
|
||||||
// January 4 is always in week 1.
|
|
||||||
let week1 : Date = new Date(date_.getFullYear(), 0, 4);
|
|
||||||
// Adjust to Thursday in week 1 and count number of weeks from date to week1.
|
|
||||||
return (
|
|
||||||
1
|
|
||||||
+
|
|
||||||
Math.round(
|
|
||||||
(
|
|
||||||
((date_.getTime() - week1.getTime()) / 86400000)
|
|
||||||
-
|
|
||||||
3
|
|
||||||
+
|
|
||||||
(week1.getDay() + 6) % 7
|
|
||||||
)
|
|
||||||
/
|
|
||||||
7
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @todo unite with type_datetimeobject?
|
|
||||||
*/
|
|
||||||
export type type_datetime = {
|
|
||||||
timezone_shift : int;
|
|
||||||
date : type_date;
|
|
||||||
time : (
|
|
||||||
null
|
|
||||||
|
|
|
||||||
type_time
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @todo timezone_shift
|
|
||||||
*/
|
|
||||||
function datetime_from_date_object(
|
|
||||||
date : Date,
|
|
||||||
options : {
|
|
||||||
timezone_shift ?: int;
|
|
||||||
} = {}
|
|
||||||
) : type_datetime
|
|
||||||
{
|
|
||||||
options = Object.assign(
|
|
||||||
{
|
|
||||||
"timezone_shift": 0,
|
|
||||||
},
|
|
||||||
options
|
|
||||||
);
|
|
||||||
const date_ : Date = lib_plankton.call.convey(
|
|
||||||
date,
|
|
||||||
[
|
|
||||||
(x : Date) => x.getTime(),
|
|
||||||
(x : int) => (x + (((options.timezone_shift as int) * (60 * 60)) * 1000)),
|
|
||||||
(x : int) => new Date(x),
|
|
||||||
]
|
|
||||||
);
|
|
||||||
const iso_string : string = date_.toISOString();
|
|
||||||
return {
|
|
||||||
"timezone_shift": (options.timezone_shift as int),
|
|
||||||
"date": {
|
|
||||||
"year": parseInt(iso_string.slice(0, 4)),
|
|
||||||
"month": parseInt(iso_string.slice(5, 7)),
|
|
||||||
"day": parseInt(iso_string.slice(8, 10)),
|
|
||||||
},
|
|
||||||
"time": {
|
|
||||||
"hour": parseInt(iso_string.slice(11, 13)),
|
|
||||||
"minute": parseInt(iso_string.slice(14, 16)),
|
|
||||||
"second": parseInt(iso_string.slice(17, 19)),
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @todo negative shift?
|
|
||||||
*/
|
|
||||||
function datetime_to_date_object(
|
|
||||||
datetime : type_datetime
|
|
||||||
) : Date
|
|
||||||
{
|
|
||||||
const iso_string : string = lib_plankton.string.coin(
|
|
||||||
"{{year}}-{{month}}-{{day}}T{{hour}}:{{minute}}:{{second}}.000+{{shift}}",
|
|
||||||
{
|
|
||||||
"year": datetime.date.year.toFixed(0).padStart(4, "0"),
|
|
||||||
"month": datetime.date.month.toFixed(0).padStart(2, "0"),
|
|
||||||
"day": datetime.date.day.toFixed(0).padStart(2, "0"),
|
|
||||||
"hour": ((datetime.time !== null) ? datetime.time.hour : 0).toFixed(0).padStart(2, "0"),
|
|
||||||
"minute": ((datetime.time !== null) ? datetime.time.minute : 0).toFixed(0).padStart(2, "0"),
|
|
||||||
"second": ((datetime.time !== null) ? datetime.time.second : 0).toFixed(0).padStart(2, "0"),
|
|
||||||
"shift": (datetime.timezone_shift.toFixed(0).padStart(2, "0") + ":00"),
|
|
||||||
}
|
|
||||||
);
|
|
||||||
return (new Date(iso_string));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
*/
|
|
||||||
export type type_pit = int;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
*/
|
|
||||||
export function pit_to_date_object(
|
|
||||||
pit : type_pit
|
|
||||||
) : Date
|
|
||||||
{
|
|
||||||
return (new Date(pit * 1000));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
*/
|
|
||||||
function pit_from_date_object(
|
|
||||||
date_object : Date
|
|
||||||
) : type_pit
|
|
||||||
{
|
|
||||||
return Math.round(date_object.getTime() / 1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
*/
|
|
||||||
export function pit_now(
|
|
||||||
) : type_pit
|
|
||||||
{
|
|
||||||
return pit_from_date_object(new Date(Date.now()));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @todo timezone
|
|
||||||
*/
|
|
||||||
export function pit_to_datetime(
|
|
||||||
pit : type_pit,
|
|
||||||
options : {
|
|
||||||
timezone_shift ?: int
|
|
||||||
} = {}
|
|
||||||
) : type_datetime
|
|
||||||
{
|
|
||||||
options = Object.assign(
|
|
||||||
{
|
|
||||||
"timezone_shift": 0,
|
|
||||||
},
|
|
||||||
options
|
|
||||||
);
|
|
||||||
const date_object : Date = pit_to_date_object(pit);
|
|
||||||
return datetime_from_date_object(
|
|
||||||
date_object,
|
|
||||||
{
|
|
||||||
"timezone_shift": (options.timezone_shift as int),
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
*/
|
|
||||||
export function pit_from_datetime(
|
|
||||||
datetime : type_datetime
|
|
||||||
) : type_pit
|
|
||||||
{
|
|
||||||
return lib_plankton.call.convey(
|
|
||||||
datetime,
|
|
||||||
[
|
|
||||||
datetime_to_date_object,
|
|
||||||
pit_from_date_object,
|
|
||||||
]
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
*/
|
|
||||||
export function pit_is_before(
|
|
||||||
pit : type_pit,
|
|
||||||
reference : type_pit
|
|
||||||
) : boolean
|
|
||||||
{
|
|
||||||
return (pit < reference);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
*/
|
|
||||||
function pit_is_after(
|
|
||||||
pit : type_pit,
|
|
||||||
reference : type_pit
|
|
||||||
) : boolean
|
|
||||||
{
|
|
||||||
return (pit > reference);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
*/
|
|
||||||
export function pit_is_between(
|
|
||||||
pit : type_pit,
|
|
||||||
reference_left : type_pit,
|
|
||||||
reference_right : type_pit
|
|
||||||
) : boolean
|
|
||||||
{
|
|
||||||
return (
|
|
||||||
pit_is_after(pit, reference_left)
|
|
||||||
&&
|
|
||||||
pit_is_before(pit, reference_right)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
*/
|
|
||||||
function pit_shift_hour(
|
|
||||||
pit : type_pit,
|
|
||||||
increment : int
|
|
||||||
) : type_pit
|
|
||||||
{
|
|
||||||
return (pit + (60 * 60 * increment));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
*/
|
|
||||||
export function pit_shift_day(
|
|
||||||
pit : type_pit,
|
|
||||||
increment : int
|
|
||||||
) : type_pit
|
|
||||||
{
|
|
||||||
return (pit + (60 * 60 * 24 * increment));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
*/
|
|
||||||
export function pit_shift_week(
|
|
||||||
pit : type_pit,
|
|
||||||
increment : int
|
|
||||||
) : type_pit
|
|
||||||
{
|
|
||||||
return (pit + (60 * 60 * 24 * 7 * increment));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
*/
|
|
||||||
function pit_shift_year(
|
|
||||||
pit : type_pit,
|
|
||||||
increment : int
|
|
||||||
) : type_pit
|
|
||||||
{
|
|
||||||
return (pit + (60 * 60 * 24 * 365 * increment));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
*/
|
|
||||||
function pit_trunc_minute(
|
|
||||||
pit : type_pit
|
|
||||||
) : type_pit
|
|
||||||
{
|
|
||||||
const datetime_input : type_datetime = pit_to_datetime(pit);
|
|
||||||
const datetime_output : type_datetime = {
|
|
||||||
"timezone_shift": 0,
|
|
||||||
"date": {
|
|
||||||
"year": datetime_input.date.year,
|
|
||||||
"month": datetime_input.date.month,
|
|
||||||
"day": datetime_input.date.day,
|
|
||||||
},
|
|
||||||
"time": {
|
|
||||||
"hour": (
|
|
||||||
(datetime_input.time === null)
|
|
||||||
?
|
|
||||||
0
|
|
||||||
:
|
|
||||||
datetime_input.time.hour
|
|
||||||
),
|
|
||||||
"minute": (
|
|
||||||
(datetime_input.time === null)
|
|
||||||
?
|
|
||||||
0
|
|
||||||
:
|
|
||||||
datetime_input.time.minute
|
|
||||||
),
|
|
||||||
"second": 0,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
return pit_from_datetime(datetime_output);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
*/
|
|
||||||
function pit_trunc_hour(
|
|
||||||
pit : type_pit
|
|
||||||
) : type_pit
|
|
||||||
{
|
|
||||||
const datetime_input : type_datetime = pit_to_datetime(pit);
|
|
||||||
const datetime_output : type_datetime = {
|
|
||||||
"timezone_shift": 0,
|
|
||||||
"date": {
|
|
||||||
"year": datetime_input.date.year,
|
|
||||||
"month": datetime_input.date.month,
|
|
||||||
"day": datetime_input.date.day,
|
|
||||||
},
|
|
||||||
"time": {
|
|
||||||
"hour": (
|
|
||||||
(datetime_input.time === null)
|
|
||||||
?
|
|
||||||
0
|
|
||||||
:
|
|
||||||
datetime_input.time.hour
|
|
||||||
),
|
|
||||||
"minute": 0,
|
|
||||||
"second": 0,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
return pit_from_datetime(datetime_output);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
*/
|
|
||||||
function pit_trunc_day(
|
|
||||||
pit : type_pit
|
|
||||||
) : type_pit
|
|
||||||
{
|
|
||||||
const datetime_input : type_datetime = pit_to_datetime(pit);
|
|
||||||
const datetime_output : type_datetime = {
|
|
||||||
"timezone_shift": 0,
|
|
||||||
"date": {
|
|
||||||
"year": datetime_input.date.year,
|
|
||||||
"month": datetime_input.date.month,
|
|
||||||
"day": datetime_input.date.day,
|
|
||||||
},
|
|
||||||
"time": {
|
|
||||||
"hour": 0,
|
|
||||||
"minute": 0,
|
|
||||||
"second": 0,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
return pit_from_datetime(datetime_output);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
*/
|
|
||||||
export function pit_trunc_week(
|
|
||||||
pit : type_pit
|
|
||||||
) : type_pit
|
|
||||||
{
|
|
||||||
const date_object : Date = pit_to_date_object(pit);
|
|
||||||
return lib_plankton.call.convey(
|
|
||||||
date_object.getDay(),
|
|
||||||
[
|
|
||||||
(x : int) => ((x === 0) ? 7 : x),
|
|
||||||
(x : int) => (x - 1),
|
|
||||||
(x : int) => pit_shift_day(pit, (-x)),
|
|
||||||
pit_trunc_day
|
|
||||||
]
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
*/
|
|
||||||
function pit_trunc_month(
|
|
||||||
pit : type_pit
|
|
||||||
) : type_pit
|
|
||||||
{
|
|
||||||
const datetime_input : type_datetime = pit_to_datetime(pit);
|
|
||||||
const datetime_output : type_datetime = {
|
|
||||||
"timezone_shift": 0,
|
|
||||||
"date": {
|
|
||||||
"year": datetime_input.date.year,
|
|
||||||
"month": datetime_input.date.month,
|
|
||||||
"day": 1,
|
|
||||||
},
|
|
||||||
"time": {
|
|
||||||
"hour": 0,
|
|
||||||
"minute": 0,
|
|
||||||
"second": 0,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
return pit_from_datetime(datetime_output);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
*/
|
|
||||||
function pit_trunc_year(
|
|
||||||
pit : type_pit
|
|
||||||
) : type_pit
|
|
||||||
{
|
|
||||||
const datetime_input : type_datetime = pit_to_datetime(pit);
|
|
||||||
const datetime_output : type_datetime = {
|
|
||||||
"timezone_shift": 0,
|
|
||||||
"date": {
|
|
||||||
"year": datetime_input.date.year,
|
|
||||||
"month": 1,
|
|
||||||
"day": 1,
|
|
||||||
},
|
|
||||||
"time": {
|
|
||||||
"hour": 0,
|
|
||||||
"minute": 0,
|
|
||||||
"second": 0,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
return pit_from_datetime(datetime_output);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param year year according to specified timezone shift
|
|
||||||
* @param week week according to specified timezone shift
|
|
||||||
* @return the begin of the week (monday, 00:00)
|
|
||||||
*/
|
|
||||||
export function pit_from_year_and_week(
|
|
||||||
year : int,
|
|
||||||
week : int,
|
|
||||||
options : {
|
|
||||||
timezone_shift ?: int;
|
|
||||||
} = {}
|
|
||||||
) : type_pit
|
|
||||||
{
|
|
||||||
options = Object.assign(
|
|
||||||
{
|
|
||||||
"timezone_shift": 0,
|
|
||||||
},
|
|
||||||
options
|
|
||||||
);
|
|
||||||
return lib_plankton.call.convey(
|
|
||||||
{
|
|
||||||
"timezone_shift": (options.timezone_shift as int),
|
|
||||||
"date": {
|
|
||||||
"year": year,
|
|
||||||
"month": 1,
|
|
||||||
"day": 1,
|
|
||||||
},
|
|
||||||
"time": {
|
|
||||||
"hour": 0,
|
|
||||||
"minute": 0,
|
|
||||||
"second": 0
|
|
||||||
}
|
|
||||||
},
|
|
||||||
[
|
|
||||||
pit_from_datetime,
|
|
||||||
(x : type_pit) => pit_shift_week(x, (week - 1)),
|
|
||||||
pit_trunc_week,
|
|
||||||
]
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @todo timezone
|
* @todo timezone
|
||||||
*/
|
*/
|
||||||
function ical_datetime_to_own_datetime(
|
function ical_datetime_to_own_datetime(
|
||||||
ical_datetime : lib_plankton.ical.type_datetime
|
ical_datetime : lib_plankton.ical.type_datetime
|
||||||
) : type_datetime
|
) : lib_plankton.pit.type_datetime
|
||||||
{
|
{
|
||||||
return {
|
return {
|
||||||
"timezone_shift": 0,
|
"timezone_shift": 0,
|
||||||
|
@ -504,7 +38,7 @@ namespace _zeitbild.helpers
|
||||||
*/
|
*/
|
||||||
export function ical_dt_to_own_datetime(
|
export function ical_dt_to_own_datetime(
|
||||||
ical_dt: lib_plankton.ical.type_dt
|
ical_dt: lib_plankton.ical.type_dt
|
||||||
) : type_datetime
|
) : lib_plankton.pit.type_datetime
|
||||||
{
|
{
|
||||||
return {
|
return {
|
||||||
"timezone_shift": 0,
|
"timezone_shift": 0,
|
||||||
|
|
|
@ -184,7 +184,7 @@ namespace _zeitbild.repository.resource
|
||||||
stuff : type_local_resource_event_stuff
|
stuff : type_local_resource_event_stuff
|
||||||
) : Record<string, any>
|
) : Record<string, any>
|
||||||
{
|
{
|
||||||
const encode_datetime : ((datetime : _zeitbild.helpers.type_datetime) => string) = ((datetime) => {
|
const encode_datetime : ((datetime : lib_plankton.pit.type_datetime) => string) = ((datetime) => {
|
||||||
return lib_plankton.string.coin(
|
return lib_plankton.string.coin(
|
||||||
"{{timezone_shift}}|{{date}}{{macro_time}}",
|
"{{timezone_shift}}|{{date}}{{macro_time}}",
|
||||||
{
|
{
|
||||||
|
@ -237,7 +237,7 @@ namespace _zeitbild.repository.resource
|
||||||
row : Record<string, any>
|
row : Record<string, any>
|
||||||
) : type_local_resource_event_stuff
|
) : type_local_resource_event_stuff
|
||||||
{
|
{
|
||||||
const decode_datetime : ((datetime_raw : string) => _zeitbild.helpers.type_datetime) = ((datetime_raw) => {
|
const decode_datetime : ((datetime_raw : string) => lib_plankton.pit.type_datetime) = ((datetime_raw) => {
|
||||||
const parts : Array<string> = datetime_raw.split("|");
|
const parts : Array<string> = datetime_raw.split("|");
|
||||||
const timezone_shift : int = parseInt(parts[0]);
|
const timezone_shift : int = parseInt(parts[0]);
|
||||||
if (parts[1].length <= 10) {
|
if (parts[1].length <= 10) {
|
||||||
|
|
|
@ -165,8 +165,8 @@ namespace _zeitbild.service.calendar
|
||||||
*/
|
*/
|
||||||
async function get_events(
|
async function get_events(
|
||||||
calendar_id : _zeitbild.type_calendar_id,
|
calendar_id : _zeitbild.type_calendar_id,
|
||||||
from_pit : _zeitbild.helpers.type_pit,
|
from_pit : lib_plankton.pit.type_pit,
|
||||||
to_pit : _zeitbild.helpers.type_pit,
|
to_pit : lib_plankton.pit.type_pit,
|
||||||
user_id : _zeitbild.type_user_id
|
user_id : _zeitbild.type_user_id
|
||||||
) : Promise<
|
) : Promise<
|
||||||
Array<
|
Array<
|
||||||
|
@ -197,8 +197,8 @@ namespace _zeitbild.service.calendar
|
||||||
(events) => Promise.resolve(
|
(events) => Promise.resolve(
|
||||||
events
|
events
|
||||||
.filter(
|
.filter(
|
||||||
(event : _zeitbild.type_event_object) => _zeitbild.helpers.pit_is_between(
|
(event : _zeitbild.type_event_object) => lib_plankton.pit.is_between(
|
||||||
_zeitbild.helpers.pit_from_datetime(event.begin),
|
lib_plankton.pit.from_datetime(event.begin),
|
||||||
from_pit,
|
from_pit,
|
||||||
to_pit
|
to_pit
|
||||||
)
|
)
|
||||||
|
@ -279,8 +279,8 @@ namespace _zeitbild.service.calendar
|
||||||
(event) => (event !== null)
|
(event) => (event !== null)
|
||||||
)
|
)
|
||||||
.filter(
|
.filter(
|
||||||
(event) => _zeitbild.helpers.pit_is_between(
|
(event) => lib_plankton.pit.is_between(
|
||||||
_zeitbild.helpers.pit_from_datetime(event.begin),
|
lib_plankton.pit.from_datetime(event.begin),
|
||||||
from_pit,
|
from_pit,
|
||||||
to_pit
|
to_pit
|
||||||
)
|
)
|
||||||
|
@ -305,8 +305,8 @@ namespace _zeitbild.service.calendar
|
||||||
*/
|
*/
|
||||||
export async function gather_events(
|
export async function gather_events(
|
||||||
calendar_ids_wanted : (null | Array<_zeitbild.type_calendar_id>),
|
calendar_ids_wanted : (null | Array<_zeitbild.type_calendar_id>),
|
||||||
from_pit : _zeitbild.helpers.type_pit,
|
from_pit : lib_plankton.pit.type_pit,
|
||||||
to_pit : _zeitbild.helpers.type_pit,
|
to_pit : lib_plankton.pit.type_pit,
|
||||||
user_id : _zeitbild.type_user_id
|
user_id : _zeitbild.type_user_id
|
||||||
) : Promise<
|
) : Promise<
|
||||||
Array<
|
Array<
|
||||||
|
|
|
@ -35,11 +35,11 @@ namespace _zeitbild
|
||||||
*/
|
*/
|
||||||
export type type_event_object = {
|
export type type_event_object = {
|
||||||
name : string;
|
name : string;
|
||||||
begin : _zeitbild.helpers.type_datetime;
|
begin : lib_plankton.pit.type_datetime;
|
||||||
end : (
|
end : (
|
||||||
null
|
null
|
||||||
|
|
|
|
||||||
_zeitbild.helpers.type_datetime
|
lib_plankton.pit.type_datetime
|
||||||
);
|
);
|
||||||
location : (
|
location : (
|
||||||
null
|
null
|
||||||
|
|
Loading…
Add table
Reference in a new issue