Compare commits

..

No commits in common. "ccb408b1b0136e5d3e68d0fc8e6d644d6e9504e3" and "25b60d4f4fc7c7bfc575a0f55d7d36b413f07b48" have entirely different histories.

10 changed files with 97 additions and 308 deletions

View file

@ -882,9 +882,6 @@ declare namespace lib_plankton.call {
/** /**
*/ */
export function sleep(seconds: float): Promise<void>; export function sleep(seconds: float): Promise<void>;
/**
*/
export function null_prop<type_value_from, type_value_to>(value_from: (null | type_value_from), function_: ((value: type_value_from) => type_value_to)): (null | type_value_to);
export {}; export {};
} }
declare namespace lib_plankton.file { declare namespace lib_plankton.file {

View file

@ -2043,16 +2043,6 @@ var lib_plankton;
})); }));
} }
call.sleep = sleep; call.sleep = sleep;
/**
*/
function null_prop(value_from, function_) {
return ((value_from === null)
?
null
:
function_(value_from));
}
call.null_prop = null_prop;
})(call = lib_plankton.call || (lib_plankton.call = {})); })(call = lib_plankton.call || (lib_plankton.call = {}));
})(lib_plankton || (lib_plankton = {})); })(lib_plankton || (lib_plankton = {}));
/* /*
@ -3802,10 +3792,10 @@ var lib_plankton;
options = Object.assign({ options = Object.assign({
"compare_value": instance_compare "compare_value": instance_compare
}, options); }, options);
/*if (is_empty<type_element>(list)) { if (is_empty(list)) {
throw (new Error("the max-arg of an empty list is not defined")); throw (new Error("the max-arg of an empty list is not defined"));
} }
else */ { else {
return (list return (list
.reduce(function (result, element, index) { .reduce(function (result, element, index) {
var value = target_function(element); var value = target_function(element);

View file

@ -47,8 +47,7 @@
"calendar.access.access": "Zugriff", "calendar.access.access": "Zugriff",
"calendar.access.public": "öffentlich", "calendar.access.public": "öffentlich",
"calendar.access.default_level": "Standard", "calendar.access.default_level": "Standard",
"calendar.access.attributed_group": "Gruppen-Zuweisungen", "calendar.access.attributed": "Zuweisungen",
"calendar.access.attributed_user": "Nutzer-Zuweisungen",
"widget.listview.add": "Termin anlegen", "widget.listview.add": "Termin anlegen",
"widget.weekview.controls.year": "Jahr", "widget.weekview.controls.year": "Jahr",
"widget.weekview.controls.week": "Woche", "widget.weekview.controls.week": "Woche",

View file

@ -47,8 +47,7 @@
"calendar.access.access": "access", "calendar.access.access": "access",
"calendar.access.public": "public", "calendar.access.public": "public",
"calendar.access.default_level": "default", "calendar.access.default_level": "default",
"calendar.access.attributed_group": "group attributed", "calendar.access.attributed": "attributed",
"calendar.access.attributed_user": "user attributed",
"widget.listview.add": "add event", "widget.listview.add": "add event",
"widget.weekview.controls.year": "year", "widget.weekview.controls.year": "year",
"widget.weekview.controls.week": "week", "widget.weekview.controls.week": "week",

View file

@ -151,42 +151,7 @@ namespace _dali.helpers
/** /**
*/ */
export function input_attributed_access_group( export function input_attributed_access(
groups : Array<{id : _dali.type_group_id; object : _dali.type_group_object;}>
)
: lib_plankton.zoo_input.class_input_hashmap<
_dali.type_group_id,
_dali.enum_access_level
>
{
return (
new lib_plankton.zoo_input.class_input_hashmap<_dali.type_group_id, _dali.enum_access_level>(
// hash_key
(group_id) => group_id.toFixed(0),
// key_input_factory
() => new lib_plankton.zoo_input.class_input_wrapped<string, int>(
new lib_plankton.zoo_input.class_input_selection(
groups
.map(
(group) => ({
"value": group.id.toFixed(0),
"label": group.object.label,
})
)
),
x => parseInt(x),
x => x.toFixed(0)
),
// value_input_factory
() => input_access_level()
)
);
}
/**
*/
export function input_attributed_access_user(
users : Array<{id : _dali.type_user_id; name : string;}> users : Array<{id : _dali.type_user_id; name : string;}>
) )
: lib_plankton.zoo_input.class_input_hashmap< : lib_plankton.zoo_input.class_input_hashmap<

View file

@ -4,12 +4,6 @@ namespace _dali.model
/** /**
*/ */
type type_state = { type type_state = {
groups : Array<
{
id : _dali.type_group_id;
object : _dali.type_group_object;
}
>;
users : Array< users : Array<
{ {
id : _dali.type_user_id; id : _dali.type_user_id;
@ -116,23 +110,6 @@ namespace _dali.model
} }
/**
*/
export async function group_list(
)
: Promise<
Array<
{
id : _dali.type_group_id;
object : _dali.type_group_object;
}
>
>
{
return Promise.resolve(_state.groups);
}
/** /**
*/ */
export async function user_list( export async function user_list(
@ -219,30 +196,12 @@ namespace _dali.model
"access": { "access": {
"public": data.access.public, "public": data.access.public,
"default_level": _dali.access_level_decode(data.access.default_level), "default_level": _dali.access_level_decode(data.access.default_level),
"attributed_group": lib_plankton.map.hashmap.implementation_map( "attributed": lib_plankton.map.hashmap.implementation_map(
lib_plankton.map.hashmap.make( lib_plankton.map.hashmap.make(
x => x.toFixed(0), x => x.toFixed(0),
{ {
"pairs": ( "pairs": (
data.access.attributed_group data.access.attributed
.map(
(entry) => (
{
"key": entry.group_id,
"value": _dali.access_level_decode(entry.level),
}
)
)
),
}
)
),
"attributed_user": lib_plankton.map.hashmap.implementation_map(
lib_plankton.map.hashmap.make(
x => x.toFixed(0),
{
"pairs": (
data.access.attributed_user
.map( .map(
(entry) => ( (entry) => (
{ {
@ -285,19 +244,8 @@ namespace _dali.model
"access": { "access": {
"public": calendar_object.access.public, "public": calendar_object.access.public,
"default_level": _dali.access_level_encode(calendar_object.access.default_level), "default_level": _dali.access_level_encode(calendar_object.access.default_level),
"attributed_group": ( "attributed": (
lib_plankton.map.dump(calendar_object.access.attributed_group) lib_plankton.map.dump(calendar_object.access.attributed)
.map(
(pair) => (
{
"group_id": pair.key,
"level": _dali.access_level_encode(pair.value),
}
)
)
),
"attributed_user": (
lib_plankton.map.dump(calendar_object.access.attributed_user)
.map( .map(
(pair) => ( (pair) => (
{ {
@ -306,7 +254,7 @@ namespace _dali.model
} }
) )
) )
), )
}, },
/** /**
* @todo * @todo
@ -350,24 +298,15 @@ namespace _dali.model
"access": { "access": {
"public": calendar_object.access.public, "public": calendar_object.access.public,
"default_level": _dali.access_level_encode(calendar_object.access.default_level), "default_level": _dali.access_level_encode(calendar_object.access.default_level),
"attributed_group": ( "attributed": (
lib_plankton.map.dump(calendar_object.access.attributed_group) lib_plankton.map.dump(calendar_object.access.attributed)
.map(
(pair) => ({
"group_id": pair.key,
"level": _dali.access_level_encode(pair.value),
})
)
),
"attributed_user": (
lib_plankton.map.dump(calendar_object.access.attributed_user)
.map( .map(
(pair) => ({ (pair) => ({
"user_id": pair.key, "user_id": pair.key,
"level": _dali.access_level_encode(pair.value), "level": _dali.access_level_encode(pair.value),
}) })
) )
), )
}, },
} }
); );
@ -615,8 +554,13 @@ namespace _dali.model
: Promise<void> : Promise<void>
{ {
_state = { _state = {
"groups": [], "users": (
"users": [], _dali.is_logged_in()
?
(await _dali.backend.user_list())
:
[]
),
"calendars": lib_plankton.map.hashmap.implementation_map( "calendars": lib_plankton.map.hashmap.implementation_map(
lib_plankton.map.hashmap.make( lib_plankton.map.hashmap.make(
calendar_id => calendar_id.toFixed(0) calendar_id => calendar_id.toFixed(0)
@ -633,20 +577,6 @@ namespace _dali.model
_dali.listen_login( _dali.listen_login(
async () => { async () => {
_state.groups = (
(await _dali.backend.group_list())
.map(
entry => (
{
"id": entry.id,
"object": {
"name": entry.name,
"label": entry.label,
}
}
)
)
);
_state.users = await _dali.backend.user_list(); _state.users = await _dali.backend.user_list();
await sync_calendars(); await sync_calendars();
lib_plankton.map.clear(_state.events); lib_plankton.map.clear(_state.events);
@ -656,7 +586,6 @@ namespace _dali.model
); );
_dali.listen_logout( _dali.listen_logout(
async () => { async () => {
_state.groups = [];
_state.users = []; _state.users = [];
await sync_calendars(); await sync_calendars();
lib_plankton.map.clear(_state.events); lib_plankton.map.clear(_state.events);

View file

@ -136,7 +136,6 @@ namespace _dali.pages.overview
: Promise<void> : Promise<void>
{ {
const widget = new _dali.widgets.calendar_edit.class_widget_calendar_edit( const widget = new _dali.widgets.calendar_edit.class_widget_calendar_edit(
await _dali.model.group_list(),
await _dali.model.user_list(), await _dali.model.user_list(),
{ {
"name": "", "name": "",
@ -144,18 +143,7 @@ namespace _dali.pages.overview
"access": { "access": {
"public": false, "public": false,
"default_level": _dali.enum_access_level.view, "default_level": _dali.enum_access_level.view,
"attributed_group": lib_plankton.map.hashmap.implementation_map< "attributed": lib_plankton.map.hashmap.implementation_map<
_dali.type_group_id,
_dali.enum_access_level
>(
lib_plankton.map.hashmap.make<
_dali.type_group_id,
_dali.enum_access_level
>(
group_id => group_id.toFixed(0),
)
),
"attributed_user": lib_plankton.map.hashmap.implementation_map<
_dali.type_user_id, _dali.type_user_id,
_dali.enum_access_level _dali.enum_access_level
>( >(
@ -247,7 +235,6 @@ namespace _dali.pages.overview
calendar_id calendar_id
); );
const widget = new _dali.widgets.calendar_edit.class_widget_calendar_edit( const widget = new _dali.widgets.calendar_edit.class_widget_calendar_edit(
await _dali.model.group_list(),
await _dali.model.user_list(), await _dali.model.user_list(),
calendar_object, calendar_object,
{ {
@ -303,82 +290,75 @@ namespace _dali.pages.overview
) )
: Promise<void> : Promise<void>
{ {
if (! _dali.is_logged_in()) const widget = new _dali.widgets.event_edit.class_widget_event_edit(
{ (await get_available_calendars()),
// do nothing {
} "calendar_id": null,
else "event_name": "",
{ "event_begin": lib_plankton.call.convey(
const widget = new _dali.widgets.event_edit.class_widget_event_edit( date,
(await get_available_calendars()), [
{ x => ({
"calendar_id": null, "timezone_shift": 0,
"event_name": "", "date": date,
"event_begin": lib_plankton.call.convey( "time": {"hour": 12, "minute": 0, "second": 0}
date, }),
[ lib_plankton.pit.from_datetime,
x => ({ x => lib_plankton.pit.shift_hour(x, 0),
"timezone_shift": 0, lib_plankton.pit.to_datetime,
"date": date, ]
"time": {"hour": 12, "minute": 0, "second": 0} ),
}), "event_end": lib_plankton.call.convey(
lib_plankton.pit.from_datetime, date,
x => lib_plankton.pit.shift_hour(x, 0), [
lib_plankton.pit.to_datetime, x => ({
] "timezone_shift": 0,
), "date": date,
"event_end": lib_plankton.call.convey( "time": {"hour": 12, "minute": 0, "second": 0}
date, }),
[ lib_plankton.pit.from_datetime,
x => ({ x => lib_plankton.pit.shift_hour(x, +1),
"timezone_shift": 0, lib_plankton.pit.to_datetime,
"date": date, ]
"time": {"hour": 12, "minute": 0, "second": 0} ),
}), "event_location": null,
lib_plankton.pit.from_datetime, "event_link": null,
x => lib_plankton.pit.shift_hour(x, +1), "event_description": null,
lib_plankton.pit.to_datetime, },
] {
), "read_only": false,
"event_location": null, "action_cancel": () => {
"event_link": null, _dali.overlay.toggle({"mode": false});
"event_description": null,
}, },
{ "action_add": (data) => {
"read_only": false, _dali.model.event_add(
"action_cancel": () => { data.calendar_id,
_dali.overlay.toggle({"mode": false}); {
}, "name": data.event_name,
"action_add": (data) => { "begin": data.event_begin,
_dali.model.event_add( "end": data.event_end,
data.calendar_id, "location": data.event_location,
{ "link": data.event_link,
"name": data.event_name, "description": data.event_description,
"begin": data.event_begin, }
"end": data.event_end, )
"location": data.event_location, .then(
"link": data.event_link, () => {
"description": data.event_description, update_entries();
} _dali.overlay.toggle({"mode": false});
) }
.then( )
() => { .catch(
update_entries(); (reason) => {
_dali.overlay.toggle({"mode": false}); // todo
} }
) );
.catch( },
(reason) => { }
// todo );
} _dali.overlay.clear();
); _dali.overlay.toggle({"mode": true});
}, await widget.load(_dali.overlay.get_content_element());
}
);
_dali.overlay.clear();
_dali.overlay.toggle({"mode": true});
await widget.load(_dali.overlay.get_content_element());
}
} }
/** /**

View file

@ -411,28 +411,6 @@ namespace _dali.backend
} }
/**
*/
export function group_list(
)
: Promise<
Array<
{
id : int;
name : string;
label : string;
}
>
>
{
return call(
lib_plankton.http.enum_method.get,
"/groups",
null
);
}
/** /**
*/ */
export function user_list( export function user_list(
@ -534,18 +512,12 @@ namespace _dali.backend
access : { access : {
public : boolean; public : boolean;
default_level : string; default_level : string;
attributed_group : Array< attributed : Array<
{
group_id : int;
level : string;
}
>;
attributed_user : Array<
{ {
user_id : int; user_id : int;
level : string; level : string;
} }
>; >
}; };
resource_id : int; resource_id : int;
} }
@ -572,13 +544,7 @@ namespace _dali.backend
access : { access : {
public : boolean; public : boolean;
default_level : string; default_level : string;
attributed_group : Array< attributed : Array<
{
group_id : int;
level : string;
}
>;
attributed_user : Array<
{ {
user_id : int; user_id : int;
level : string; level : string;
@ -629,13 +595,7 @@ namespace _dali.backend
access : { access : {
public : boolean; public : boolean;
default_level : string; default_level : string;
attributed_group : Array< attributed : Array<
{
group_id : int;
level : string;
}
>;
attributed_user : Array<
{ {
user_id : int; user_id : int;
level : string; level : string;

View file

@ -14,19 +14,6 @@ namespace _dali
} }
/**
*/
export type type_group_id = int;
/**
*/
export type type_group_object = {
name : string;
label : string;
};
/** /**
*/ */
export type type_user_id = int; export type type_user_id = int;
@ -36,7 +23,6 @@ namespace _dali
*/ */
export type type_user_object = { export type type_user_object = {
name : string; name : string;
label : string;
email_address : ( email_address : (
null null
| |
@ -151,11 +137,7 @@ namespace _dali
access : { access : {
public : boolean; public : boolean;
default_level : enum_access_level; default_level : enum_access_level;
attributed_group : lib_plankton.map.type_map< attributed : lib_plankton.map.type_map<
type_group_id,
enum_access_level
>;
attributed_user : lib_plankton.map.type_map<
type_user_id, type_user_id,
enum_access_level enum_access_level
>; >;

View file

@ -7,11 +7,6 @@ namespace _dali.widgets.calendar_edit
implements lib_plankton.zoo_widget.interface_widget implements lib_plankton.zoo_widget.interface_widget
{ {
/**
*/
private groups : Array<{id : _dali.type_group_id; object : _dali.type_group_object;}>;
/** /**
*/ */
private users : Array<{id : _dali.type_user_id; name : string;}>; private users : Array<{id : _dali.type_user_id; name : string;}>;
@ -50,7 +45,6 @@ namespace _dali.widgets.calendar_edit
/** /**
*/ */
public constructor( public constructor(
groups : Array<{id : _dali.type_group_id; object : _dali.type_group_object;}>,
users : Array<{id : _dali.type_user_id; name : string;}>, users : Array<{id : _dali.type_user_id; name : string;}>,
initial_value : _dali.type_calendar_object, initial_value : _dali.type_calendar_object,
{ {
@ -73,7 +67,6 @@ namespace _dali.widgets.calendar_edit
} }
) )
{ {
this.groups = groups;
this.users = users; this.users = users;
this.initial_value = initial_value; this.initial_value = initial_value;
this.read_only = read_only; this.read_only = read_only;
@ -128,14 +121,9 @@ namespace _dali.widgets.calendar_edit
"label": lib_plankton.translate.get("calendar.access.default_level"), "label": lib_plankton.translate.get("calendar.access.default_level"),
}, },
{ {
"name": "attributed_group", "name": "attributed",
"input": _dali.helpers.input_attributed_access_group(this.groups), "input": _dali.helpers.input_attributed_access(this.users),
"label": lib_plankton.translate.get("calendar.access.attributed_group"), "label": lib_plankton.translate.get("calendar.access.attributed"),
},
{
"name": "attributed_user",
"input": _dali.helpers.input_attributed_access_user(this.users),
"label": lib_plankton.translate.get("calendar.access.attributed_user"),
}, },
] ]
), ),