Mobil-Ansicht #4

Merged
fenris merged 7 commits from task-419 into main 2025-10-28 11:41:18 +01:00
9 changed files with 262 additions and 188 deletions
Showing only changes of commit 7a5aeb3ff3 - Show all commits

View file

@ -12743,9 +12743,10 @@ var lib_plankton;
const dom_container = document.createElement("div");
dom_container.classList.add("widget-bunch");
for (const element of this.elements) {
const dom_li = document.createElement("li");
await element.load(dom_li);
dom_container.appendChild(dom_li);
const dom_element = document.createElement("div");
dom_element.classList.add("widget-bunch-element");
await element.load(dom_element);
dom_container.appendChild(dom_element);
}
target_element.appendChild(dom_container);
}
@ -12832,7 +12833,7 @@ var lib_plankton;
null
:
class_slider.position_subtract(position, this.state.touch_start_position));
this.state.dom_context.querySelector(".slides").style.transform = (([
this.state.dom_context.querySelector(".widget-slider-slides").style.transform = (([
lib_plankton.string.coin("translateX({{value}}%)", {
"value": ((this.state.index - 1) * (-100)).toFixed(0)
})
@ -12842,7 +12843,6 @@ var lib_plankton;
[]
:
[
//
lib_plankton.string.coin("translateX({{value}}px)", {
"value": class_slider.cap(((this.state.index >= this.conf.content.length)
?
@ -12925,30 +12925,60 @@ var lib_plankton;
*/
async load(target_element) {
this.state.dom_context = target_element;
// style
{
const dom_style = document.createElement("style");
dom_style.textContent = ([
{
"selector": ".widget-slider",
"settings": {
"overflow": "hidden",
"white-space": "nowrap",
"width": "100%",
},
},
{
"selector": ".widget-slider-slides",
"settings": {
"width": "100%",
"height": "100%",
"transition": "transform 0.25s ease-in-out",
}
},
{
"selector": ".widget-slider-slide",
"settings": {
"display": "inline-block",
"height": "100%",
"width": "100%;",
"vertical-align": "top",
"white-space": "normal",
"transition": "width 0.25s ease-in-out",
}
}
]
.map(rule => lib_plankton.string.coin("{{selector}} {{{settings}}}", {
"selector": rule.selector,
"settings": (Object.entries(rule.settings)
.map(([key, value]) => lib_plankton.string.coin("{{key}}: {{value}};", {
"key": key,
"value": value,
}))
.join(" "))
}))
.join("\n"));
this.state.dom_context.appendChild(dom_style);
}
// structure
{
const dom_container = document.createElement("div");
{
dom_container.style.overflow = "hidden";
dom_container.style.whiteSpace = "nowrap";
}
dom_container.classList.add("widget-slider");
{
const dom_content = document.createElement("div");
{
dom_content.style.height = "100%";
dom_content.style.width = "100%";
dom_content.style.transition = "transform 0.25s ease-in-out";
}
dom_content.classList.add("slides");
dom_content.classList.add("widget-slider-slides");
for (const slide of this.conf.content) {
const dom_slide = document.createElement("div");
dom_slide.classList.add("slide");
{
dom_slide.style.display = "inline-block";
dom_slide.style.height = "100%";
dom_slide.style.width = "100%";
dom_slide.style.transition = "width 0.25s ease-in-out";
}
dom_slide.classList.add("widget-slider-slide");
await slide.load(dom_slide);
dom_content.appendChild(dom_slide);
}

View file

@ -495,6 +495,7 @@ namespace _dali.pages.overview
get_entries,
{
"initial_view_mode": view_mode,
"weekview_initial_vertical": (view_kind === _dali.enum_view_kind.touch),
"action_create_event": action_create_event,
"action_edit_event": action_edit_event,
}
@ -512,16 +513,21 @@ namespace _dali.pages.overview
{
case _dali.enum_view_kind.regular:
{
target_element.querySelector("#overview-body").innerHTML = await _dali.helpers.template_coin(
"overview",
"body-regular",
const widget_slider = new lib_plankton.zoo_widget.class_slider(
[
new lib_plankton.zoo_widget.class_bunch(
[
widget_sources,
widget_multiview,
]
),
],
{
"threshold": 100,
"initial_index": 1,
}
);
await widget_sources.load(target_element.querySelector("#overview-pane-left"));
await widget_multiview.load(target_element.querySelector("#overview-pane-right"));
await widget_slider.load(target_element.querySelector("#overview-body"));
break;
}
case _dali.enum_view_kind.touch:
@ -535,7 +541,7 @@ namespace _dali.pages.overview
"threshold": 100,
"initial_index": 2,
}
)
);
await widget_slider.load(target_element.querySelector("#overview-body"));
break;
}
@ -548,12 +554,6 @@ namespace _dali.pages.overview
dom_hint.classList.toggle("overview-hint-hidden", _dali.is_logged_in());
}
// mode switcher
{
// set_view_mode(view_mode);
// await widget_mode_switcher.load(target_element.querySelector("#overview-mode"));
}
_dali.model.listen_reset(
async (priviliged) => {
update_sources_and_entries({"priviliged": priviliged});

View file

@ -23,14 +23,37 @@
flex-wrap: nowrap;
}
#overview-body #overview-pane-left
#overview-pane-left
{
flex-basis: 12.5%;
flex-grow: 0;
flex-shrink: 1;
}
#overview-body #overview-pane-right
#overview-pane-right
{
flex-basis: 87.5%;
flex-grow: 1;
flex-shrink: 1;
}
#overview-body .widget-slider-slide .widget-bunch
{
display: flex;
flex-direction: row;
flex-wrap: nowrap;
}
#overview-body .widget-slider-slide .widget-bunch-element:nth-child(1)
{
flex-grow: 0;
flex-shrink: 1;
flex-basis: 12.5%;
}
#overview-body .widget-slider-slide .widget-bunch-element:nth-child(2)
{
flex-grow: 1;
flex-shrink: 1;
flex-basis: 87.5%;
}

View file

@ -1,4 +0,0 @@
<div id="overview-pane-left">
</div>
<div id="overview-pane-right">
</div>

View file

@ -162,12 +162,12 @@ namespace _dali.widgets.listview
/**
* [implementation]
*/
public async load(
target_element : Element
public async update_entries(
)
: Promise<void>
{
// structure
{
const now_pit : lib_plankton.pit.type_pit = lib_plankton.pit.now();
const from_pit : lib_plankton.pit.type_pit = now_pit;
@ -184,23 +184,8 @@ namespace _dali.widgets.listview
lib_plankton.pit.from_datetime(y.event_object.begin)
)
);
// view
{
target_element.innerHTML = await _dali.helpers.template_coin(
"widget-listview",
"main",
{
"add_href": "",
"add_label": lib_plankton.translate.get("widget.listview.add"),
"add_extra_classes": (
(! await _dali.is_logged_in())
?
" listview-add-hidden"
:
""
),
"entries": (
const dom_list : HTMLElement = this.container.querySelector(".listview-entries");
dom_list.innerHTML = (
(
await _dali.helpers.promise_row<string>(
entries
@ -287,21 +272,11 @@ namespace _dali.widgets.listview
)
)
.join("")
),
}
);
}
// control
// listeners
{
target_element.querySelector(".listview-add").addEventListener(
"click",
(event) => {
event.preventDefault();
this.action_add();
}
);
target_element.querySelectorAll(".listview-entry").forEach(
this.container.querySelectorAll(".listview-entry").forEach(
(element) => {
element.addEventListener(
"click",
@ -320,8 +295,51 @@ namespace _dali.widgets.listview
}
);
}
}
this.container = target_element.querySelector(".listview");
/**
* [implementation]
*/
public async load(
target_element : Element
)
: Promise<void>
{
this.container = target_element;
// view
{
target_element.innerHTML = await _dali.helpers.template_coin(
"widget-listview",
"main",
{
"add_href": "",
"add_label": lib_plankton.translate.get("widget.listview.add"),
"add_extra_classes": (
(! await _dali.is_logged_in())
?
" listview-add-hidden"
:
""
),
"entries": "",
}
);
}
// control
{
target_element.querySelector(".listview-add").addEventListener(
"click",
(event) => {
event.preventDefault();
this.action_add();
}
);
}
await this.update_entries();
return Promise.resolve<void>(undefined);
}

View file

@ -0,0 +1,4 @@
.widget-mode_switcher-option
{
margin-left: 16px;
}

View file

@ -69,6 +69,11 @@ namespace _dali.widgets.multiview
private initial_view_mode : _dali.enum_view_mode;
/**
*/
private weekview_initial_vertical : boolean;
/**
*/
private get_entries : type_get_entries;
@ -110,12 +115,14 @@ namespace _dali.widgets.multiview
get_entries : type_get_entries,
{
"initial_view_mode": initial_view_mode = _dali.enum_view_mode.week,
"weekview_initial_vertical": weekview_initial_vertical = false,
"action_create_event": action_create_event = ((stuff) => Promise.resolve<void>(undefined)),
"action_edit_event": action_edit_event = ((event_key) => Promise.resolve<void>(undefined)),
}
:
{
initial_view_mode ?: _dali.enum_view_mode;
weekview_initial_vertical ?: boolean;
action_create_event ?: type_create_event;
action_edit_event ?: type_edit_event;
}
@ -126,6 +133,7 @@ namespace _dali.widgets.multiview
{
this.get_entries = get_entries;
this.initial_view_mode = initial_view_mode;
this.weekview_initial_vertical = weekview_initial_vertical;
this.action_create_event = action_create_event;
this.action_edit_event = action_edit_event;
this.dom_context = null;
@ -168,12 +176,17 @@ namespace _dali.widgets.multiview
/**
*/
public update_entries(
public async update_entries(
)
:
Promise<void>
{
return this.widget_weekview.update_entries();
await Promise.all(
[
this.widget_weekview.update_entries(),
this.widget_listview.update_entries(),
]
);
}
@ -206,17 +219,6 @@ namespace _dali.widgets.multiview
{
"initial_selection": this.initial_view_mode,
"action_change": (view_mode) => {
console.warn("todo");
/*
lib_plankton.zoo_page.set(
{
"name": "overview",
"parameters": {
"mode": _dali.view_mode_encode(view_mode),
}
}
);
*/
this.set_view_mode(view_mode);
}
}
@ -235,6 +237,7 @@ namespace _dali.widgets.multiview
{
"action_select_event": (event_key) => this.action_edit_event(event_key),
"action_select_day": (date) => this.action_create_event({"date": date}),
"vertical": this.weekview_initial_vertical,
}
)
);

View file

@ -36,7 +36,8 @@ namespace _dali.widgets.weekview
/**
*/
export class class_widget_weekview implements lib_plankton.zoo_widget.interface_widget
export class class_widget_weekview
implements lib_plankton.zoo_widget.interface_widget
{
/**