[int]
This commit is contained in:
parent
801eddb661
commit
454d3ab589
14 changed files with 125 additions and 68 deletions
|
@ -26,6 +26,7 @@
|
|||
"calendar.name": "Name",
|
||||
"calendar.resource": "Resource",
|
||||
"calendar.access.access": "Zugriff",
|
||||
"calendar.access.public": "öffentlich",
|
||||
"calendar.access.default_level": "Standard",
|
||||
"calendar.access.attributed": "Zuweisungen",
|
||||
"widget.weekview.controls.year": "Jahr",
|
||||
|
@ -50,6 +51,7 @@
|
|||
"page.event_edit.title.read_only": "Termin-Details",
|
||||
"page.event_edit.actions.change": "ändern",
|
||||
"page.event_edit.actions.remove": "löschen",
|
||||
"page.overview.title": "Übersicht"
|
||||
"page.overview.title": "Übersicht",
|
||||
"page.overview.login_hint": "anmelden um nicht-öffentliche Termine zu sehen"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
"calendar.name": "name",
|
||||
"calendar.resource": "resource",
|
||||
"calendar.access.access": "access",
|
||||
"calendar.access.public": "public",
|
||||
"calendar.access.default_level": "default",
|
||||
"calendar.access.attributed": "attributed",
|
||||
"widget.weekview.controls.year": "Year",
|
||||
|
@ -50,6 +51,7 @@
|
|||
"page.event_edit.title.read_only": "Event details",
|
||||
"page.event_edit.actions.change": "change",
|
||||
"page.event_edit.actions.remove": "delete",
|
||||
"page.overview.title": "Overview"
|
||||
"page.overview.title": "Overview",
|
||||
"page.overview.login_hint": "log in to view non-public events"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -308,6 +308,7 @@ namespace _zeitbild.frontend_web.backend
|
|||
{
|
||||
"name": raw.name,
|
||||
"access": {
|
||||
"public": raw.access.public,
|
||||
"default_level": access_level_decode(raw.access.default_level),
|
||||
"attributed": lib_plankton.map.hashmap.implementation_map(
|
||||
lib_plankton.map.hashmap.make(
|
||||
|
@ -359,6 +360,7 @@ namespace _zeitbild.frontend_web.backend
|
|||
{
|
||||
"name": calendar_object.name,
|
||||
"access": {
|
||||
"public": calendar_object.access.public,
|
||||
"default_level": access_level_encode(calendar_object.access.default_level),
|
||||
"attributed": (
|
||||
lib_plankton.map.dump(calendar_object.access.attributed)
|
||||
|
@ -396,6 +398,7 @@ namespace _zeitbild.frontend_web.backend
|
|||
{
|
||||
"name": calendar_object.name,
|
||||
"access": {
|
||||
"public": calendar_object.access.public,
|
||||
"default_level": access_level_encode(calendar_object.access.default_level),
|
||||
"attributed": (
|
||||
lib_plankton.map.dump(calendar_object.access.attributed)
|
||||
|
|
|
@ -37,7 +37,7 @@ namespace _zeitbild.frontend_web
|
|||
document.querySelector("main"),
|
||||
{
|
||||
"fallback": {
|
||||
"name": "login",
|
||||
"name": "overview",
|
||||
"parameters": {}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -96,6 +96,7 @@ namespace _zeitbild.frontend_web.type
|
|||
export type calendar_object = {
|
||||
name : string;
|
||||
access : {
|
||||
public : boolean;
|
||||
default_level : enum_access_level;
|
||||
attributed : lib_plankton.map.type_map<
|
||||
user_id,
|
||||
|
|
|
@ -19,6 +19,7 @@ namespace _zeitbild.frontend_web.pages
|
|||
{
|
||||
name : string;
|
||||
access : {
|
||||
public : boolean;
|
||||
default_level : _zeitbild.frontend_web.type.enum_access_level;
|
||||
attributed : lib_plankton.map.type_map<
|
||||
_zeitbild.frontend_web.type.user_id,
|
||||
|
@ -32,6 +33,7 @@ namespace _zeitbild.frontend_web.pages
|
|||
{
|
||||
name : string;
|
||||
access : {
|
||||
public : boolean;
|
||||
default_level : _zeitbild.frontend_web.type.enum_access_level;
|
||||
attributed : lib_plankton.map.type_map<
|
||||
_zeitbild.frontend_web.type.user_id,
|
||||
|
@ -88,6 +90,11 @@ namespace _zeitbild.frontend_web.pages
|
|||
"name": "access",
|
||||
"input": new lib_plankton.zoo_input.class_input_group(
|
||||
[
|
||||
{
|
||||
"name": "public",
|
||||
"input": new lib_plankton.zoo_input.class_input_checkbox(),
|
||||
"label": lib_plankton.translate.get("calendar.access.public"),
|
||||
},
|
||||
{
|
||||
"name": "default_level",
|
||||
"input": _zeitbild.frontend_web.helpers.input_access_level(),
|
||||
|
|
|
@ -21,6 +21,7 @@ namespace _zeitbild.frontend_web.pages
|
|||
{
|
||||
name : string;
|
||||
access : {
|
||||
public : boolean;
|
||||
default_level : _zeitbild.frontend_web.type.enum_access_level;
|
||||
attributed : lib_plankton.map.type_map<
|
||||
_zeitbild.frontend_web.type.user_id,
|
||||
|
@ -33,6 +34,7 @@ namespace _zeitbild.frontend_web.pages
|
|||
{
|
||||
name : string;
|
||||
access : {
|
||||
public : boolean;
|
||||
default_level : _zeitbild.frontend_web.type.enum_access_level;
|
||||
attributed : lib_plankton.map.type_map<
|
||||
_zeitbild.frontend_web.type.user_id,
|
||||
|
@ -66,6 +68,11 @@ namespace _zeitbild.frontend_web.pages
|
|||
"name": "access",
|
||||
"input": new lib_plankton.zoo_input.class_input_group(
|
||||
[
|
||||
{
|
||||
"name": "public",
|
||||
"input": new lib_plankton.zoo_input.class_input_checkbox(),
|
||||
"label": lib_plankton.translate.get("calendar.access.public"),
|
||||
},
|
||||
{
|
||||
"name": "default_level",
|
||||
"input": _zeitbild.frontend_web.helpers.input_access_level(),
|
||||
|
|
|
@ -11,7 +11,7 @@ namespace _zeitbild.frontend_web.pages
|
|||
);
|
||||
lib_plankton.zoo_page.set(
|
||||
{
|
||||
"name": "login",
|
||||
"name": "overview",
|
||||
"parameters": {
|
||||
}
|
||||
}
|
||||
|
|
|
@ -31,6 +31,15 @@ namespace _zeitbild.frontend_web.pages.overview
|
|||
}
|
||||
);
|
||||
target_element.querySelector("#overview").classList.toggle("compact", compact);
|
||||
// hint
|
||||
{
|
||||
if (! await _zeitbild.frontend_web.backend.is_logged_in()) {
|
||||
target_element.querySelector("#overview-head").textContent = lib_plankton.translate.get("page.overview.login_hint");
|
||||
}
|
||||
else {
|
||||
// do nothing
|
||||
}
|
||||
}
|
||||
// sources
|
||||
{
|
||||
const data : Array<
|
||||
|
|
|
@ -1,6 +1,10 @@
|
|||
<div id="overview">
|
||||
<div id="overview-pane-left">
|
||||
<div id="overview-head">
|
||||
</div>
|
||||
<div id="overview-pane-right">
|
||||
<div id="overview-body">
|
||||
<div id="overview-pane-left">
|
||||
</div>
|
||||
<div id="overview-pane-right">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -25,29 +25,36 @@
|
|||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
#overview
|
||||
#overview-head
|
||||
{
|
||||
text-align: center;
|
||||
font-weight: bold;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
#overview-body
|
||||
{
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
#overview:not(.compact) #overview-pane-left
|
||||
#overview-body:not(.compact) #overview-pane-left
|
||||
{
|
||||
flex-basis: 12.5%;
|
||||
}
|
||||
|
||||
#overview:not(.compact) #overview-pane-right
|
||||
#overview-body:not(.compact) #overview-pane-right
|
||||
{
|
||||
flex-basis: 87.5%;
|
||||
}
|
||||
|
||||
#overview.compact #overview-pane-left
|
||||
#overview-body.compact #overview-pane-left
|
||||
{
|
||||
flex-basis: 0%;
|
||||
}
|
||||
|
||||
#overview.compact #overview-pane-right
|
||||
#overview-body.compact #overview-pane-right
|
||||
{
|
||||
flex-basis: 100%;
|
||||
}
|
||||
|
|
|
@ -19,6 +19,11 @@
|
|||
text-align: center;
|
||||
}
|
||||
|
||||
.weekview-control
|
||||
{
|
||||
margin: 0 12px;
|
||||
}
|
||||
|
||||
.weekview-table table
|
||||
{
|
||||
width: 100%;
|
||||
|
|
|
@ -772,63 +772,73 @@ namespace _zeitbild.frontend_web.widgets.weekview
|
|||
);
|
||||
// cells
|
||||
{
|
||||
context.querySelectorAll(".calendar-cell-regular").forEach(
|
||||
(element) => {
|
||||
element.addEventListener(
|
||||
"click",
|
||||
(event) => {
|
||||
if (! (element === event.target)) {
|
||||
// do nothing
|
||||
if (! await _zeitbild.frontend_web.backend.is_logged_in()) {
|
||||
// do nothing
|
||||
}
|
||||
else {
|
||||
context.querySelectorAll(".calendar-cell-regular").forEach(
|
||||
(element) => {
|
||||
element.addEventListener(
|
||||
"click",
|
||||
(event) => {
|
||||
if (! (element === event.target)) {
|
||||
// do nothing
|
||||
}
|
||||
else {
|
||||
const rel : string = element.getAttribute("rel");
|
||||
const parts : Array<string> = rel.split("-");
|
||||
const date : lib_plankton.pit.type_date = {
|
||||
"year": parseInt(parts[0]),
|
||||
"month": parseInt(parts[1]),
|
||||
"day": parseInt(parts[2]),
|
||||
};
|
||||
this.action_select_day(date);
|
||||
}
|
||||
}
|
||||
else {
|
||||
const rel : string = element.getAttribute("rel");
|
||||
const parts : Array<string> = rel.split("-");
|
||||
const date : lib_plankton.pit.type_date = {
|
||||
"year": parseInt(parts[0]),
|
||||
"month": parseInt(parts[1]),
|
||||
"day": parseInt(parts[2]),
|
||||
};
|
||||
this.action_select_day(date);
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
);
|
||||
);
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
// events
|
||||
{
|
||||
context.querySelectorAll(".calendar-event_entry").forEach(
|
||||
(element) => {
|
||||
element.addEventListener(
|
||||
"click",
|
||||
() => {
|
||||
const rel : string = element.getAttribute("rel");
|
||||
const parts : Array<string> = rel.split("/");
|
||||
const calendar_id : _zeitbild.frontend_web.type.calendar_id = parseInt(parts[0]);
|
||||
const event_id : (null | _zeitbild.frontend_web.type.local_resource_event_id) = (
|
||||
(parts[1] === "-")
|
||||
?
|
||||
null
|
||||
:
|
||||
parseInt(parts[1])
|
||||
);
|
||||
const access_level : _zeitbild.frontend_web.type.enum_access_level = (() => {
|
||||
switch (parts[2]) {
|
||||
case "none": return _zeitbild.frontend_web.type.enum_access_level.none;
|
||||
case "view": return _zeitbild.frontend_web.type.enum_access_level.view;
|
||||
case "edit": return _zeitbild.frontend_web.type.enum_access_level.edit;
|
||||
case "admin": return _zeitbild.frontend_web.type.enum_access_level.admin;
|
||||
}
|
||||
}) ();
|
||||
this.action_select_event(
|
||||
calendar_id,
|
||||
access_level,
|
||||
event_id
|
||||
);
|
||||
}
|
||||
);
|
||||
}
|
||||
);
|
||||
if (! await _zeitbild.frontend_web.backend.is_logged_in()) {
|
||||
// do nothing
|
||||
}
|
||||
else {
|
||||
context.querySelectorAll(".calendar-event_entry").forEach(
|
||||
(element) => {
|
||||
element.addEventListener(
|
||||
"click",
|
||||
() => {
|
||||
const rel : string = element.getAttribute("rel");
|
||||
const parts : Array<string> = rel.split("/");
|
||||
const calendar_id : _zeitbild.frontend_web.type.calendar_id = parseInt(parts[0]);
|
||||
const event_id : (null | _zeitbild.frontend_web.type.local_resource_event_id) = (
|
||||
(parts[1] === "-")
|
||||
?
|
||||
null
|
||||
:
|
||||
parseInt(parts[1])
|
||||
);
|
||||
const access_level : _zeitbild.frontend_web.type.enum_access_level = (() => {
|
||||
switch (parts[2]) {
|
||||
case "none": return _zeitbild.frontend_web.type.enum_access_level.none;
|
||||
case "view": return _zeitbild.frontend_web.type.enum_access_level.view;
|
||||
case "edit": return _zeitbild.frontend_web.type.enum_access_level.edit;
|
||||
case "admin": return _zeitbild.frontend_web.type.enum_access_level.admin;
|
||||
}
|
||||
}) ();
|
||||
this.action_select_event(
|
||||
calendar_id,
|
||||
access_level,
|
||||
event_id
|
||||
);
|
||||
}
|
||||
);
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
return Promise.resolve<void>(undefined);
|
||||
|
|
|
@ -1,18 +1,18 @@
|
|||
<div class="weekview">
|
||||
<div class="weekview-controls">
|
||||
<label class="weekview-control-year">
|
||||
<label class="weekview-control weekview-control-year">
|
||||
<span>{{label_control_year}}</span>
|
||||
<input type="number"/>
|
||||
</label>
|
||||
<label class="weekview-control-week">
|
||||
<label class="weekview-control weekview-control-week">
|
||||
<span>{{label_control_week}}</span>
|
||||
<input type="number"/>
|
||||
</label>
|
||||
<label class="weekview-control-count">
|
||||
<label class="weekview-control weekview-control-count">
|
||||
<span>{{label_control_count}}</span>
|
||||
<input type="number"/>
|
||||
</label>
|
||||
<input type="submit" class="weekview-control-apply" value="{{label_control_apply}}"/>
|
||||
<input type="submit" class="weekview-control weekview-control-apply" value="{{label_control_apply}}"/>
|
||||
</div>
|
||||
<div class="weekview-table">
|
||||
<table>
|
||||
|
|
Loading…
Add table
Reference in a new issue