[upd] plankton
This commit is contained in:
parent
61835bc533
commit
6c92725d50
3 changed files with 507 additions and 298 deletions
191
lib/plankton/plankton.d.ts
vendored
191
lib/plankton/plankton.d.ts
vendored
|
@ -2995,6 +2995,10 @@ declare namespace lib_plankton.pit {
|
|||
type type_pit = int;
|
||||
}
|
||||
declare namespace lib_plankton.pit {
|
||||
/**
|
||||
* @todo complete
|
||||
*/
|
||||
function timezone_name_to_timezone_shift(timezone_name: string): int;
|
||||
/**
|
||||
*/
|
||||
function date_object_get_week_of_year(date: Date): int;
|
||||
|
@ -3008,7 +3012,7 @@ declare namespace lib_plankton.pit {
|
|||
*/
|
||||
function to_date_object(pit: type_pit): Date;
|
||||
/**
|
||||
* @todo timezone
|
||||
* @todo test
|
||||
*/
|
||||
function to_datetime(pit: type_pit, options?: {
|
||||
timezone_shift?: int;
|
||||
|
@ -3048,6 +3052,18 @@ declare namespace lib_plankton.pit {
|
|||
function to_ywd(pit: type_pit, options?: {
|
||||
timezone_shift?: int;
|
||||
}): type_ywd;
|
||||
/**
|
||||
* computes the point in time for switching to central european summer time
|
||||
*
|
||||
* @todo write tests
|
||||
*/
|
||||
function cest_switch_on(year: int): type_pit;
|
||||
/**
|
||||
* computes the point in time for switching away from central european summer time
|
||||
*
|
||||
* @todo write tests
|
||||
*/
|
||||
function cest_switch_off(year: int): type_pit;
|
||||
}
|
||||
declare namespace lib_plankton.www_form {
|
||||
/**
|
||||
|
@ -3566,6 +3582,55 @@ declare namespace lib_plankton.zoo_input {
|
|||
write(value: string): Promise<void>;
|
||||
}
|
||||
}
|
||||
declare namespace lib_plankton.zoo_input {
|
||||
/**
|
||||
*/
|
||||
type type_translations = {
|
||||
add?: string;
|
||||
remove?: string;
|
||||
};
|
||||
/**
|
||||
* @author fenris
|
||||
*/
|
||||
export class class_input_list<type_element> implements interface_input<Array<type_element>> {
|
||||
/**
|
||||
*/
|
||||
private element_input_factory;
|
||||
/**
|
||||
*/
|
||||
private elements_container_dom;
|
||||
/**
|
||||
*/
|
||||
private elements;
|
||||
/**
|
||||
*/
|
||||
private translations;
|
||||
/**
|
||||
*/
|
||||
constructor(element_input_factory: (() => interface_input<type_element>), options?: {
|
||||
translations?: type_translations;
|
||||
});
|
||||
/**
|
||||
*/
|
||||
private clear;
|
||||
/**
|
||||
*/
|
||||
private add;
|
||||
/**
|
||||
* [implementation]
|
||||
*/
|
||||
setup(parent: HTMLElement): Promise<void>;
|
||||
/**
|
||||
* [implementation]
|
||||
*/
|
||||
read(): Promise<Array<type_element>>;
|
||||
/**
|
||||
* [implementation]
|
||||
*/
|
||||
write(value: Array<type_element>): Promise<void>;
|
||||
}
|
||||
export {};
|
||||
}
|
||||
declare namespace lib_plankton.zoo_input {
|
||||
/**
|
||||
* @author fenris
|
||||
|
@ -3644,31 +3709,6 @@ declare namespace lib_plankton.zoo_input {
|
|||
write(value: (null | lib_plankton.pit.type_time)): Promise<void>;
|
||||
}
|
||||
}
|
||||
declare namespace lib_plankton.zoo_input {
|
||||
/**
|
||||
*/
|
||||
class class_input_datetime implements interface_input<lib_plankton.pit.type_datetime> {
|
||||
/**
|
||||
*/
|
||||
private core;
|
||||
/**
|
||||
*/
|
||||
constructor(options?: {
|
||||
label_timezone_shift?: string;
|
||||
label_date?: string;
|
||||
label_time?: string;
|
||||
});
|
||||
/**
|
||||
*/
|
||||
setup(parent: HTMLElement): Promise<void>;
|
||||
/**
|
||||
*/
|
||||
read(): Promise<lib_plankton.pit.type_datetime>;
|
||||
/**
|
||||
*/
|
||||
write(value: lib_plankton.pit.type_datetime): Promise<void>;
|
||||
}
|
||||
}
|
||||
declare namespace lib_plankton.zoo_input {
|
||||
/**
|
||||
* @author fenris
|
||||
|
@ -3699,55 +3739,6 @@ declare namespace lib_plankton.zoo_input {
|
|||
write(value: type_record): Promise<void>;
|
||||
}
|
||||
}
|
||||
declare namespace lib_plankton.zoo_input {
|
||||
/**
|
||||
*/
|
||||
type type_translations = {
|
||||
add?: string;
|
||||
remove?: string;
|
||||
};
|
||||
/**
|
||||
* @author fenris
|
||||
*/
|
||||
export class class_input_list<type_element> implements interface_input<Array<type_element>> {
|
||||
/**
|
||||
*/
|
||||
private element_input_factory;
|
||||
/**
|
||||
*/
|
||||
private elements_container_dom;
|
||||
/**
|
||||
*/
|
||||
private elements;
|
||||
/**
|
||||
*/
|
||||
private translations;
|
||||
/**
|
||||
*/
|
||||
constructor(element_input_factory: (() => interface_input<type_element>), options?: {
|
||||
translations?: type_translations;
|
||||
});
|
||||
/**
|
||||
*/
|
||||
private clear;
|
||||
/**
|
||||
*/
|
||||
private add;
|
||||
/**
|
||||
* [implementation]
|
||||
*/
|
||||
setup(parent: HTMLElement): Promise<void>;
|
||||
/**
|
||||
* [implementation]
|
||||
*/
|
||||
read(): Promise<Array<type_element>>;
|
||||
/**
|
||||
* [implementation]
|
||||
*/
|
||||
write(value: Array<type_element>): Promise<void>;
|
||||
}
|
||||
export {};
|
||||
}
|
||||
declare namespace lib_plankton.zoo_input {
|
||||
/**
|
||||
*/
|
||||
|
@ -3775,6 +3766,56 @@ declare namespace lib_plankton.zoo_input {
|
|||
write(map: lib_plankton.map.type_map<type_key, type_value>): Promise<void>;
|
||||
}
|
||||
}
|
||||
declare namespace lib_plankton.zoo_input {
|
||||
/**
|
||||
*/
|
||||
class class_input_datetime implements interface_input<lib_plankton.pit.type_datetime> {
|
||||
/**
|
||||
*/
|
||||
private core;
|
||||
/**
|
||||
*/
|
||||
constructor(options?: {
|
||||
label_timezone_shift?: string;
|
||||
label_date?: string;
|
||||
label_time?: string;
|
||||
});
|
||||
/**
|
||||
*/
|
||||
setup(parent: HTMLElement): Promise<void>;
|
||||
/**
|
||||
*/
|
||||
read(): Promise<lib_plankton.pit.type_datetime>;
|
||||
/**
|
||||
*/
|
||||
write(value: lib_plankton.pit.type_datetime): Promise<void>;
|
||||
}
|
||||
}
|
||||
declare namespace lib_plankton.zoo_input {
|
||||
/**
|
||||
* for central europe with daylight saving time feature
|
||||
*/
|
||||
class class_input_datetime_central_europe implements interface_input<lib_plankton.pit.type_datetime> {
|
||||
/**
|
||||
*/
|
||||
private core;
|
||||
/**
|
||||
*/
|
||||
constructor(options?: {
|
||||
label_date?: string;
|
||||
label_time?: string;
|
||||
});
|
||||
/**
|
||||
*/
|
||||
setup(parent: HTMLElement): Promise<void>;
|
||||
/**
|
||||
*/
|
||||
read(): Promise<lib_plankton.pit.type_datetime>;
|
||||
/**
|
||||
*/
|
||||
write(value: lib_plankton.pit.type_datetime): Promise<void>;
|
||||
}
|
||||
}
|
||||
declare namespace lib_plankton.zoo_form {
|
||||
/**
|
||||
*/
|
||||
|
|
|
@ -8357,6 +8357,23 @@ var lib_plankton;
|
|||
(function (lib_plankton) {
|
||||
var pit;
|
||||
(function (pit_1) {
|
||||
/**
|
||||
* @todo complete
|
||||
*/
|
||||
function timezone_name_to_timezone_shift(timezone_name) {
|
||||
const map = {
|
||||
"UTC": 0,
|
||||
"CET": +1,
|
||||
"CEST": +2,
|
||||
};
|
||||
if (!(timezone_name in map)) {
|
||||
throw (new Error("unhandled timezone: " + timezone_name));
|
||||
}
|
||||
else {
|
||||
return map[timezone_name];
|
||||
}
|
||||
}
|
||||
pit_1.timezone_name_to_timezone_shift = timezone_name_to_timezone_shift;
|
||||
/**
|
||||
*/
|
||||
function date_object_get_week_of_year(date) {
|
||||
|
@ -8402,7 +8419,7 @@ var lib_plankton;
|
|||
return Math.round(date_object.getTime() / 1000);
|
||||
}
|
||||
/**
|
||||
* @todo timezone
|
||||
* @todo test
|
||||
*/
|
||||
function to_datetime(pit, options = {}) {
|
||||
options = Object.assign({
|
||||
|
@ -8660,6 +8677,58 @@ var lib_plankton;
|
|||
]);
|
||||
}
|
||||
pit_1.to_ywd = to_ywd;
|
||||
/**
|
||||
* computes the point in time for switching to central european summer time
|
||||
*
|
||||
* @todo write tests
|
||||
*/
|
||||
function cest_switch_on(year) {
|
||||
return lib_plankton.call.convey(year, [
|
||||
(x) => ({
|
||||
"timezone_shift": 0,
|
||||
"date": {
|
||||
"year": x,
|
||||
"month": 4,
|
||||
"day": 1,
|
||||
},
|
||||
"time": {
|
||||
"hour": 2,
|
||||
"minute": 0,
|
||||
"second": 0
|
||||
},
|
||||
}),
|
||||
from_datetime,
|
||||
trunc_week,
|
||||
x => shift_day(x, -1),
|
||||
]);
|
||||
}
|
||||
pit_1.cest_switch_on = cest_switch_on;
|
||||
/**
|
||||
* computes the point in time for switching away from central european summer time
|
||||
*
|
||||
* @todo write tests
|
||||
*/
|
||||
function cest_switch_off(year) {
|
||||
return lib_plankton.call.convey(year, [
|
||||
(x) => ({
|
||||
"timezone_shift": 0,
|
||||
"date": {
|
||||
"year": x,
|
||||
"month": 11,
|
||||
"day": 1,
|
||||
},
|
||||
"time": {
|
||||
"hour": 1,
|
||||
"minute": 0,
|
||||
"second": 0
|
||||
},
|
||||
}),
|
||||
from_datetime,
|
||||
trunc_week,
|
||||
x => shift_day(x, -1),
|
||||
]);
|
||||
}
|
||||
pit_1.cest_switch_off = cest_switch_off;
|
||||
})(pit = lib_plankton.pit || (lib_plankton.pit = {}));
|
||||
})(lib_plankton || (lib_plankton = {}));
|
||||
/*
|
||||
|
@ -10153,6 +10222,153 @@ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with »bacterio-plankton:zoo-input«. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
var lib_plankton;
|
||||
(function (lib_plankton) {
|
||||
var zoo_input;
|
||||
(function (zoo_input) {
|
||||
/**
|
||||
* @author fenris
|
||||
*/
|
||||
class class_input_list {
|
||||
/**
|
||||
*/
|
||||
constructor(element_input_factory, options = {}) {
|
||||
options = Object.assign({
|
||||
"translations": {
|
||||
"add": "add",
|
||||
"remove": "remove",
|
||||
},
|
||||
}, options);
|
||||
this.element_input_factory = element_input_factory;
|
||||
this.elements = [];
|
||||
this.elements_container_dom = null;
|
||||
this.translations = options.translations;
|
||||
}
|
||||
/**
|
||||
*/
|
||||
clear() {
|
||||
this.elements_container_dom.innerHTML = "";
|
||||
this.elements = [];
|
||||
return Promise.resolve(undefined);
|
||||
}
|
||||
/**
|
||||
*/
|
||||
async add() {
|
||||
// model
|
||||
let element_dom = document.createElement("div");
|
||||
const input = this.element_input_factory();
|
||||
this.elements.push({ "dom": element_dom, "input": input });
|
||||
// view & control
|
||||
{
|
||||
element_dom.classList.add("plankton_input_list_element");
|
||||
// remover
|
||||
{
|
||||
let remover_dom = document.createElement("button");
|
||||
remover_dom.classList.add("plankton_input_list_button");
|
||||
remover_dom.classList.add("plankton_input_list_element_remover");
|
||||
remover_dom.setAttribute("title", this.translations.remove);
|
||||
remover_dom.textContent = "x";
|
||||
remover_dom.addEventListener("click", (event) => {
|
||||
event.preventDefault();
|
||||
const index = this.elements.findIndex(element => (element.input === input));
|
||||
const element = this.elements[index];
|
||||
this.elements_container_dom.removeChild(element.dom);
|
||||
this.elements.splice(index, 1);
|
||||
});
|
||||
element_dom.appendChild(remover_dom);
|
||||
}
|
||||
// input
|
||||
{
|
||||
let input_dom = document.createElement("div");
|
||||
input_dom.classList.add("plankton_input_list_element_input");
|
||||
await input.setup(input_dom);
|
||||
element_dom.appendChild(input_dom);
|
||||
}
|
||||
this.elements_container_dom.appendChild(element_dom);
|
||||
}
|
||||
return Promise.resolve(input);
|
||||
}
|
||||
/**
|
||||
* [implementation]
|
||||
*/
|
||||
setup(parent) {
|
||||
let container_dom = document.createElement("div");
|
||||
container_dom.classList.add("plankton_input_list");
|
||||
// elements
|
||||
{
|
||||
this.elements_container_dom = document.createElement("div");
|
||||
this.elements_container_dom.classList.add("plankton_input_list_elements");
|
||||
container_dom.appendChild(this.elements_container_dom);
|
||||
}
|
||||
// foot
|
||||
{
|
||||
let footer_dom = document.createElement("div");
|
||||
footer_dom.classList.add("plankton_input_list_foot");
|
||||
// adder
|
||||
{
|
||||
let adder_dom = document.createElement("button");
|
||||
adder_dom.classList.add("plankton_input_list_button");
|
||||
adder_dom.classList.add("plankton_input_list_adder");
|
||||
adder_dom.setAttribute("title", this.translations.add);
|
||||
adder_dom.textContent = "+";
|
||||
adder_dom.addEventListener("click", (event) => {
|
||||
event.preventDefault();
|
||||
this.add();
|
||||
});
|
||||
footer_dom.appendChild(adder_dom);
|
||||
}
|
||||
container_dom.appendChild(footer_dom);
|
||||
}
|
||||
parent.appendChild(container_dom);
|
||||
return Promise.resolve(undefined);
|
||||
}
|
||||
/**
|
||||
* [implementation]
|
||||
*/
|
||||
read() {
|
||||
return (Promise.all(this.elements
|
||||
.map((element, index) => (element.input.read()
|
||||
.then((element_value) => Promise.resolve({
|
||||
"index": index,
|
||||
"value": element_value,
|
||||
})))))
|
||||
.then((elements) => Promise.resolve(elements
|
||||
.sort((x, y) => ((x.index <= y.index) ? 0 : 1))
|
||||
.map(element => element.value))));
|
||||
}
|
||||
/**
|
||||
* [implementation]
|
||||
*/
|
||||
write(value) {
|
||||
return (this.clear()
|
||||
.then(() => Promise.all(value
|
||||
.map((element_value) => (this.add()
|
||||
.then(element_input => element_input.write(element_value))))))
|
||||
.then(() => Promise.resolve(undefined)));
|
||||
}
|
||||
}
|
||||
zoo_input.class_input_list = class_input_list;
|
||||
})(zoo_input = lib_plankton.zoo_input || (lib_plankton.zoo_input = {}));
|
||||
})(lib_plankton || (lib_plankton = {}));
|
||||
/*
|
||||
This file is part of »bacterio-plankton:zoo-input«.
|
||||
|
||||
Copyright 2016-2024 'Christian Fraß, Christian Neubauer, Martin Springwald GbR'
|
||||
<info@greenscale.de>
|
||||
|
||||
»bacterio-plankton:zoo-input« is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
»bacterio-plankton:zoo-input« is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with »bacterio-plankton:zoo-input«. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
@ -10360,77 +10576,6 @@ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with »bacterio-plankton:zoo-input«. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
var lib_plankton;
|
||||
(function (lib_plankton) {
|
||||
var zoo_input;
|
||||
(function (zoo_input) {
|
||||
/**
|
||||
*/
|
||||
class class_input_datetime {
|
||||
/**
|
||||
*/
|
||||
constructor(options = {}) {
|
||||
options = Object.assign({
|
||||
"label_timezone_shift": "",
|
||||
"label_date": "",
|
||||
"label_time": "",
|
||||
}, options);
|
||||
this.core = new zoo_input.class_input_group([
|
||||
{
|
||||
"name": "timezone_shift",
|
||||
"input": new zoo_input.class_input_number(),
|
||||
"label": options.label_timezone_shift,
|
||||
},
|
||||
{
|
||||
"name": "date",
|
||||
"input": new zoo_input.class_input_date(),
|
||||
"label": options.label_date,
|
||||
},
|
||||
{
|
||||
"name": "time",
|
||||
"input": new zoo_input.class_input_soft(new zoo_input.class_input_time()),
|
||||
"label": options.label_time,
|
||||
},
|
||||
]);
|
||||
}
|
||||
/**
|
||||
*/
|
||||
async setup(parent) {
|
||||
return this.core.setup(parent);
|
||||
}
|
||||
/**
|
||||
*/
|
||||
async read() {
|
||||
return this.core.read();
|
||||
}
|
||||
/**
|
||||
*/
|
||||
async write(value) {
|
||||
return this.core.write(value);
|
||||
}
|
||||
}
|
||||
zoo_input.class_input_datetime = class_input_datetime;
|
||||
})(zoo_input = lib_plankton.zoo_input || (lib_plankton.zoo_input = {}));
|
||||
})(lib_plankton || (lib_plankton = {}));
|
||||
/*
|
||||
This file is part of »bacterio-plankton:zoo-input«.
|
||||
|
||||
Copyright 2016-2024 'Christian Fraß, Christian Neubauer, Martin Springwald GbR'
|
||||
<info@greenscale.de>
|
||||
|
||||
»bacterio-plankton:zoo-input« is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
»bacterio-plankton:zoo-input« is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with »bacterio-plankton:zoo-input«. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
@ -10538,153 +10683,6 @@ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with »bacterio-plankton:zoo-input«. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
var lib_plankton;
|
||||
(function (lib_plankton) {
|
||||
var zoo_input;
|
||||
(function (zoo_input) {
|
||||
/**
|
||||
* @author fenris
|
||||
*/
|
||||
class class_input_list {
|
||||
/**
|
||||
*/
|
||||
constructor(element_input_factory, options = {}) {
|
||||
options = Object.assign({
|
||||
"translations": {
|
||||
"add": "add",
|
||||
"remove": "remove",
|
||||
},
|
||||
}, options);
|
||||
this.element_input_factory = element_input_factory;
|
||||
this.elements = [];
|
||||
this.elements_container_dom = null;
|
||||
this.translations = options.translations;
|
||||
}
|
||||
/**
|
||||
*/
|
||||
clear() {
|
||||
this.elements_container_dom.innerHTML = "";
|
||||
this.elements = [];
|
||||
return Promise.resolve(undefined);
|
||||
}
|
||||
/**
|
||||
*/
|
||||
async add() {
|
||||
// model
|
||||
let element_dom = document.createElement("div");
|
||||
const input = this.element_input_factory();
|
||||
this.elements.push({ "dom": element_dom, "input": input });
|
||||
// view & control
|
||||
{
|
||||
element_dom.classList.add("plankton_input_list_element");
|
||||
// remover
|
||||
{
|
||||
let remover_dom = document.createElement("button");
|
||||
remover_dom.classList.add("plankton_input_list_button");
|
||||
remover_dom.classList.add("plankton_input_list_element_remover");
|
||||
remover_dom.setAttribute("title", this.translations.remove);
|
||||
remover_dom.textContent = "x";
|
||||
remover_dom.addEventListener("click", (event) => {
|
||||
event.preventDefault();
|
||||
const index = this.elements.findIndex(element => (element.input === input));
|
||||
const element = this.elements[index];
|
||||
this.elements_container_dom.removeChild(element.dom);
|
||||
this.elements.splice(index, 1);
|
||||
});
|
||||
element_dom.appendChild(remover_dom);
|
||||
}
|
||||
// input
|
||||
{
|
||||
let input_dom = document.createElement("div");
|
||||
input_dom.classList.add("plankton_input_list_element_input");
|
||||
await input.setup(input_dom);
|
||||
element_dom.appendChild(input_dom);
|
||||
}
|
||||
this.elements_container_dom.appendChild(element_dom);
|
||||
}
|
||||
return Promise.resolve(input);
|
||||
}
|
||||
/**
|
||||
* [implementation]
|
||||
*/
|
||||
setup(parent) {
|
||||
let container_dom = document.createElement("div");
|
||||
container_dom.classList.add("plankton_input_list");
|
||||
// elements
|
||||
{
|
||||
this.elements_container_dom = document.createElement("div");
|
||||
this.elements_container_dom.classList.add("plankton_input_list_elements");
|
||||
container_dom.appendChild(this.elements_container_dom);
|
||||
}
|
||||
// foot
|
||||
{
|
||||
let footer_dom = document.createElement("div");
|
||||
footer_dom.classList.add("plankton_input_list_foot");
|
||||
// adder
|
||||
{
|
||||
let adder_dom = document.createElement("button");
|
||||
adder_dom.classList.add("plankton_input_list_button");
|
||||
adder_dom.classList.add("plankton_input_list_adder");
|
||||
adder_dom.setAttribute("title", this.translations.add);
|
||||
adder_dom.textContent = "+";
|
||||
adder_dom.addEventListener("click", (event) => {
|
||||
event.preventDefault();
|
||||
this.add();
|
||||
});
|
||||
footer_dom.appendChild(adder_dom);
|
||||
}
|
||||
container_dom.appendChild(footer_dom);
|
||||
}
|
||||
parent.appendChild(container_dom);
|
||||
return Promise.resolve(undefined);
|
||||
}
|
||||
/**
|
||||
* [implementation]
|
||||
*/
|
||||
read() {
|
||||
return (Promise.all(this.elements
|
||||
.map((element, index) => (element.input.read()
|
||||
.then((element_value) => Promise.resolve({
|
||||
"index": index,
|
||||
"value": element_value,
|
||||
})))))
|
||||
.then((elements) => Promise.resolve(elements
|
||||
.sort((x, y) => ((x.index <= y.index) ? 0 : 1))
|
||||
.map(element => element.value))));
|
||||
}
|
||||
/**
|
||||
* [implementation]
|
||||
*/
|
||||
write(value) {
|
||||
return (this.clear()
|
||||
.then(() => Promise.all(value
|
||||
.map((element_value) => (this.add()
|
||||
.then(element_input => element_input.write(element_value))))))
|
||||
.then(() => Promise.resolve(undefined)));
|
||||
}
|
||||
}
|
||||
zoo_input.class_input_list = class_input_list;
|
||||
})(zoo_input = lib_plankton.zoo_input || (lib_plankton.zoo_input = {}));
|
||||
})(lib_plankton || (lib_plankton = {}));
|
||||
/*
|
||||
This file is part of »bacterio-plankton:zoo-input«.
|
||||
|
||||
Copyright 2016-2024 'Christian Fraß, Christian Neubauer, Martin Springwald GbR'
|
||||
<info@greenscale.de>
|
||||
|
||||
»bacterio-plankton:zoo-input« is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
»bacterio-plankton:zoo-input« is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with »bacterio-plankton:zoo-input«. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
@ -10739,6 +10737,180 @@ var lib_plankton;
|
|||
})(zoo_input = lib_plankton.zoo_input || (lib_plankton.zoo_input = {}));
|
||||
})(lib_plankton || (lib_plankton = {}));
|
||||
/*
|
||||
This file is part of »bacterio-plankton:zoo-input«.
|
||||
|
||||
Copyright 2016-2024 'Christian Fraß, Christian Neubauer, Martin Springwald GbR'
|
||||
<info@greenscale.de>
|
||||
|
||||
»bacterio-plankton:zoo-input« is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
»bacterio-plankton:zoo-input« is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with »bacterio-plankton:zoo-input«. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
var lib_plankton;
|
||||
(function (lib_plankton) {
|
||||
var zoo_input;
|
||||
(function (zoo_input) {
|
||||
/**
|
||||
*/
|
||||
class class_input_datetime {
|
||||
/**
|
||||
*/
|
||||
constructor(options = {}) {
|
||||
options = Object.assign({
|
||||
"label_date": "",
|
||||
"label_time": "",
|
||||
"label_timezone_shift": "",
|
||||
}, options);
|
||||
this.core = new zoo_input.class_input_group([
|
||||
{
|
||||
"name": "date",
|
||||
"input": new zoo_input.class_input_date(),
|
||||
"label": options.label_date,
|
||||
},
|
||||
{
|
||||
"name": "time",
|
||||
"input": new zoo_input.class_input_soft(new zoo_input.class_input_time()),
|
||||
"label": options.label_time,
|
||||
},
|
||||
{
|
||||
"name": "timezone_shift",
|
||||
"input": new zoo_input.class_input_number(),
|
||||
"label": options.label_timezone_shift,
|
||||
},
|
||||
]);
|
||||
}
|
||||
/**
|
||||
*/
|
||||
setup(parent) {
|
||||
return this.core.setup(parent);
|
||||
}
|
||||
/**
|
||||
*/
|
||||
read() {
|
||||
return this.core.read();
|
||||
}
|
||||
/**
|
||||
*/
|
||||
write(value) {
|
||||
return this.core.write(value);
|
||||
}
|
||||
}
|
||||
zoo_input.class_input_datetime = class_input_datetime;
|
||||
})(zoo_input = lib_plankton.zoo_input || (lib_plankton.zoo_input = {}));
|
||||
})(lib_plankton || (lib_plankton = {}));
|
||||
/*
|
||||
This file is part of »bacterio-plankton:zoo-input«.
|
||||
|
||||
Copyright 2016-2024 'Christian Fraß, Christian Neubauer, Martin Springwald GbR'
|
||||
<info@greenscale.de>
|
||||
|
||||
»bacterio-plankton:zoo-input« is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
»bacterio-plankton:zoo-input« is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with »bacterio-plankton:zoo-input«. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
var lib_plankton;
|
||||
(function (lib_plankton) {
|
||||
var zoo_input;
|
||||
(function (zoo_input) {
|
||||
/**
|
||||
* for central europe with daylight saving time feature
|
||||
*/
|
||||
class class_input_datetime_central_europe {
|
||||
/**
|
||||
*/
|
||||
constructor(options = {}) {
|
||||
options = Object.assign({
|
||||
"label_date": "",
|
||||
"label_time": "",
|
||||
}, options);
|
||||
this.core = new zoo_input.class_input_group([
|
||||
{
|
||||
"name": "date",
|
||||
"input": new zoo_input.class_input_date(),
|
||||
"label": options.label_date,
|
||||
},
|
||||
{
|
||||
"name": "time",
|
||||
"input": new zoo_input.class_input_soft(new zoo_input.class_input_time()),
|
||||
"label": options.label_time,
|
||||
},
|
||||
]);
|
||||
}
|
||||
/**
|
||||
*/
|
||||
setup(parent) {
|
||||
return this.core.setup(parent);
|
||||
}
|
||||
/**
|
||||
*/
|
||||
async read() {
|
||||
const datetime_easy = await this.core.read();
|
||||
const datetime_cet = {
|
||||
"timezone_shift": 1,
|
||||
"date": datetime_easy.date,
|
||||
"time": datetime_easy.time,
|
||||
};
|
||||
const datetime_cest = {
|
||||
"timezone_shift": 2,
|
||||
"date": datetime_easy.date,
|
||||
"time": datetime_easy.time,
|
||||
};
|
||||
const datetime = (lib_plankton.pit.is_between(lib_plankton.pit.from_datetime(datetime_cet), lib_plankton.pit.cest_switch_on(datetime_easy.date.year), lib_plankton.pit.cest_switch_off(datetime_easy.date.year))
|
||||
?
|
||||
datetime_cest
|
||||
:
|
||||
datetime_cet);
|
||||
if (datetime_easy.time === null) {
|
||||
datetime.time = null;
|
||||
}
|
||||
else {
|
||||
// do nothing
|
||||
}
|
||||
return Promise.resolve(datetime);
|
||||
}
|
||||
/**
|
||||
*/
|
||||
async write(value) {
|
||||
const pit = lib_plankton.pit.from_datetime(value);
|
||||
const datetime_utc = lib_plankton.pit.to_datetime(pit, {
|
||||
"timezone_shift": 0,
|
||||
});
|
||||
const datetime_relative = lib_plankton.pit.to_datetime(pit, {
|
||||
"timezone_shift": (lib_plankton.pit.is_between(lib_plankton.pit.from_datetime(datetime_utc), lib_plankton.pit.cest_switch_on(datetime_utc.date.year), lib_plankton.pit.cest_switch_off(datetime_utc.date.year))
|
||||
?
|
||||
2
|
||||
:
|
||||
1)
|
||||
});
|
||||
const datetime_easy = {
|
||||
"date": datetime_relative.date,
|
||||
"time": ((value.time === null) ? null : datetime_relative.time),
|
||||
};
|
||||
return this.core.write(datetime_easy);
|
||||
}
|
||||
}
|
||||
zoo_input.class_input_datetime_central_europe = class_input_datetime_central_europe;
|
||||
})(zoo_input = lib_plankton.zoo_input || (lib_plankton.zoo_input = {}));
|
||||
})(lib_plankton || (lib_plankton = {}));
|
||||
/*
|
||||
This file is part of »bacterio-plankton:zoo-form«.
|
||||
|
||||
Copyright 2016-2024 'Christian Fraß, Christian Neubauer, Martin Springwald GbR'
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
.tableview-sources-entry:not(.tableview-sources-entry-active)
|
||||
{
|
||||
filter: saturate(0);
|
||||
}
|
Loading…
Add table
Reference in a new issue