Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
das Fehlen der *.map Dateien aus dem jQuerymobile sollte nicht das Problem sein, die Meldung habe ich auch (bei einem funktionierenden Popup) bei anderen Browsern und meiner Konfiguration.
Habe auf 2.8 umgestellt und niún das Problem, dass unten stehende Fehlermeldung kommt.
"DOM Daten für UZSU nicht vorhanden in uzsuDomClick!"
Kann mir jemand sagen, woran das liegen kann?
Gruß
Hans
*Entwarnung*
Habe den Fehler gefunden. Im Item war ein Schreibfehler!
Gruß
Hans
Zuletzt geändert von Tontechniker; 19.02.2016, 14:37.
aktuell auf dem GIT ist die Version v4 (als RC1) zur Umstellung auf die smartvisu 2.8 mit den SVG als "Responsive Design". Von meiner Seite werde ich ab der v4 (bzw. Umstellung auf 2.8 smartvisu) nur noch auf dem Resposive Design weiter arbeiten (er wird sonst zu viel parallel).
ich möchte eine kleine Umfrage starten. Es geht um die Verwendung des DesignType = '1'. Wer benutzt diesen Design Type aktiv in seiner Visu ?
Zur Erinnerung nochmal die Darstellung. Es ist ein Expertenmodus gewesen. Bislang hatte ich dazu keine Anfragen usw. Ich würde diese gerne für die Zukunft in der Pflege entfallen lassen.
2016-03-21 21:35:31,267 DEBUG Main 192.168.99.20:55634 sent '{"cmd":"item","id":"Licht.Buero.An_Aus","val":{"active":true,"list":[{"active":true,"rrule":"FREQ=WEEKLY;BYDAY=MO","time":"21.36","value":"1","event":"time","timeMin":"","timeMax":"","timeCron":"21.36","timeOffset":""}]}}' -- __init__.py:json_parse:270
2016-03-21 21:35:31,268 WARNING Main Item Licht.Buero.An_Aus: value {'list': [{'event': 'time', 'time': '21.36', 'value': '1', 'timeMin': '', 'timeCron': '21.36', 'rrule': 'FREQ=WEEKLY;BYDAY=MO', 'timeMax': '', 'timeOffset': '', 'active': True}], 'active': True} does not match type bool. Via Visu 192.168.99.20:55634 -- item.py:__update:347
Deine Meldung kommt aus dem Plugin. Das habe ich nicht programmiert. Bitte nenne einmal die Versionsnummer der Visu und des POpups und was du gemacht hast. Wie sieht der Aufruf des POpups aus. Welche Parameter hast du verwendet und gesetzt. Vielleicht können wir dann besser helfen.
#!/usr/bin/env python3
# vim: set encoding=utf-8 tabstop=4 softtabstop=4 shiftwidth=4 expandtab
#########################################################################
# Copyright 2011-2013 Niko Will
#########################################################################
# This file is part of SmartHome.py. http://mknx.github.io/smarthome/
#
# SmartHome.py is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# SmartHome.py 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 General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with SmartHome.py. If not, see <http://www.gnu.org/licenses/>.
##########################################################################
# Item Data Format
#
# Each UZSU item is of type list. Each list entry has to be a dict with specific key and value pairs. Here are the possible keys and what their for:
#
# dtstart: a datetime object. Exact datetime as start value for the rrule algorithm. Important e.g. for FREQ=MINUTELY rrules (optional).
#
# value: the value which will be set to the item.
#
# active: True if the entry is activated, False if not. A deactivated entry is stored to the database but doesn't trigger the setting of the value. It can be enabled later with the update method.
#
# time: time as string to use sunrise/sunset arithmetics like in the crontab eg. 17:00<sunset, sunrise>8:00, 17:00<sunset. You also can set the time with 17:00.
#
# rrule: You can use the recurrence rules documented in the iCalendar RFC for recurrence use of a switching entry.
#
# Example
#
# Activates the light every other day at 16:30 and deactivates it at 17:30 for five times:
#
# sh.eg.wohnen.kugellampe.uzsu({'active':True, 'list':[
# {'value':1, 'active':True, 'rrule':'FREQ=DAILY;INTERVAL=2;COUNT=5', 'time': '16:30'},
# {'value':0, 'active':True, 'rrule':'FREQ=DAILY;INTERVAL=2;COUNT=5', 'time': '17:30'}
# ]})
import logging
from datetime import datetime, timedelta
from dateutil.rrule import rrulestr
from dateutil import parser
import lib.orb
class UZSU():
_items = {} # item buffer for all uzsu enabled items
def __init__(self, smarthome, path=None):
self.logger = logging.getLogger('UZSU')
self.logger.info('Init UZSU')
self._sh = smarthome
def parse_item(self, item):
if 'uzsu_item' in item.conf:
self._items[item] = item()
return self.update_item
def run(self):
"""This is called once at the beginning after all items are already parsed from smarthome.py
All active uzsu items are registered to the scheduler
"""
self.alive = True
for item in self._items:
if 'active' in self._items[item]:
if self._items[item]['active']:
self._schedule(item)
def stop(self):
self.alive = False
def update_item(self, item, caller=None, source=None, dest=None):
"""
This is called by smarthome engine when the item changes, e.g. by Visu or by the command line interface
The relevant item is put into the internal item list and registered to the scheduler
"""
self._items[item] = item()
self._schedule(item)
def _schedule(self, item):
"""
This function schedules an item: First the item is removed from the scheduler. If the item is active
then the list is searched for the nearest next execution time
"""
self._sh.scheduler.remove('uzsu_{}'.format(item))
_next = None
_value = None
if 'active' in self._items[item]:
if self._items[item]['active']:
for entry in self._items[item]['list']:
next, value = self._next_time(entry)
if _next is None:
_next = next
_value = value
elif next and next < _next:
_next = next
_value = value
if _next and not _value is None:
self._sh.scheduler.add('uzsu_{}'.format(item), self._set, value={'item': item, 'value': _value}, next=_next)
def _set(self, **kwargs):
item = kwargs['item']
value = kwargs['value']
self._sh.return_item(item.conf['uzsu_item'])(value, caller='UZSU')
self._schedule(item)
def _next_time(self, entry):
"""
Here we examine an entry of the list of points in time and return the next execution time and the next value
"""
try:
if not isinstance(entry, dict):
return None, None
if not 'value' in entry:
return None, None
if not 'active' in entry:
return None, None
if not 'time' in entry:
return None, None
now = datetime.now()
value = entry['value']
active = entry['active']
today = datetime.today()
yesterday = today - timedelta(days=1)
time = entry['time']
if not active:
return None, None
if 'date' in entry:
date = entry['date']
if 'rrule' in entry:
if 'dtstart' in entry:
rrule = rrulestr(entry['rrule'], dtstart=entry['dtstart'])
else:
try:
rrule = rrulestr(entry['rrule'], dtstart=datetime.combine(yesterday, parser.parse(time.strip()).time()))
except Exception as e:
self.logger.debug("Tolerated Exception '{}' while examining '{}' with function rrulestr()".format(e,time))
if 'sun' in time:
self.logger.debug("Looking for next sun-related time with rulestr()")
rrule = rrulestr(entry['rrule'], dtstart=datetime.combine(yesterday, self._sun(datetime.combine(yesterday.date(), datetime.min.time()).replace(tzinfo=self._sh.tzinfo()), time).time()))
else:
self.logger.debug("Looking for next time with rulestr()")
rrule = rrulestr(entry['rrule'], dtstart=datetime.combine(yesterday, datetime.min.time()))
dt = now
while self.alive:
dt = rrule.after(dt)
if dt is None:
return None, None
if 'sun' in time:
next = self._sun(datetime.combine(dt.date(), datetime.min.time()).replace(tzinfo=self._sh.tzinfo()), time)
self.logger.debug("Result parsing time (rrule){}: {}".format(time, next))
else:
next = datetime.combine(dt.date(), parser.parse(time.strip()).time()).replace(tzinfo=self._sh.tzinfo())
if next and next.date() == dt.date() and next > datetime.now(self._sh.tzinfo()):
return next, value
if 'sun' in time:
next = self.sun(datetime.combine(today, datetime.min.time()).replace(tzinfo=self._sh.tzinfo()), time)
self.logger.debug("Result parsing time (sun) {}: {}".format(time, next))
else:
next = datetime.combine(today, parser.parse(time.strip()).time()).replace(tzinfo=self._sh.tzinfo())
if next and next.date() == today and next > datetime.now(self._sh.tzinfo()):
return next, value
except Exception as e:
self.logger.error("Error '{}' parsing time: {}".format(time, e))
return None, None
def _sun(self, dt, tstr):
#dt contains a datetime object, whereas tstr should contain a string like '6:00<sunrise<8:00'
#syntax is [H:M<](sunrise|sunset)[+|-][offset][<H:M]
# checking preconditions from configuration:
if not self._sh.sun: # no sun object created
self.logger.error('No latitude/longitude specified. You could not use sunrise/sunset as UZSU entry.')
return
# create an own sun object:
try:
#longitude = self._sh.sun.long
#latitude = self._sh.sun.lat
#elevation = self._sh.sun.elevation
longitude = self._sh.sun._obs.long
latitude = self._sh.sun._obs.lat
elevation = self._sh.sun._obs.elev
uzsu_sun = lib.orb.Orb('sun', longitude, latitude, elevation)
self.logger.debug("Created a new sun object with latitude={}, longitude={}, elevation={}".format(latitude, longitude, elevation))
except Exception as e:
self.logger.error("Error '{}' creating a new sun object. You could not use sunrise/sunset as UZSU entry.".format(e))
return
# now start into parsing details
self.logger.debug('Examine time string: {0}'.format(tstr))
# find min/max times
tabs = tstr.split('<')
if len(tabs) == 1:
smin = None
cron = tabs[0].strip()
smax = None
elif len(tabs) == 2:
if tabs[0].startswith('sun'):
smin = None
cron = tabs[0].strip()
smax = tabs[1].strip()
else:
smin = tabs[0].strip()
cron = tabs[1].strip()
smax = None
elif len(tabs) == 3:
smin = tabs[0].strip()
cron = tabs[1].strip()
smax = tabs[2].strip()
else:
self.logger.error('Wrong syntax: {0}. Should be [H:M<](sunrise|sunset)[+|-][offset][<H:M]'.format(tstr))
return
# calculate the time offset
doff = 0 # degree offset
moff = 0 # minute offset
tmp, op, offs = cron.rpartition('+')
if op:
if offs.endswith('m'):
moff = int(offs.strip('m'))
else:
doff = float(offs)
else:
tmp, op, offs = cron.rpartition('-')
if op:
if offs.endswith('m'):
moff = -int(offs.strip('m'))
else:
doff = -float(offs)
# see if sunset or sunrise are included
dmin = None
dmax = None
if cron.startswith('sunrise'):
next_time = uzsu_sun.rise(doff, moff, dt=dt)
self.logger.debug("Sunrise is included and calculated as {}".format(next_time))
elif cron.startswith('sunset'):
next_time = uzsu_sun.set(doff, moff, dt=dt)
self.logger.debug("Sunset is included and calculated as {}".format(next_time))
else:
self.logger.error('Wrong syntax: {0}. Should be [H:M<](sunrise|sunset)[+|-][offset][<H:M]'.format(tstr))
return
if smin is not None:
h, sep, m = smin.partition(':')
try:
dmin = next_time.replace(hour=int(h), minute=int(m), second=0, tzinfo=self._sh.tzinfo())
except Exception:
self.logger.error('Wrong syntax: {0}. Should be [H:M<](sunrise|sunset)[+|-][offset][<H:M]'.format(tstr))
return
if dmin > next_time:
next_time = dmin
if smax is not None:
h, sep, m = smax.partition(':')
try:
dmax = next_time.replace(hour=int(h), minute=int(m), second=0, tzinfo=self._sh.tzinfo())
except Exception:
self.logger.error('Wrong syntax: {0}. Should be [H:M<](sunrise|sunset)[+|-][offset][<H:M]'.format(tstr))
return
if dmax < next_time:
next_time = dmax
if dmin is not None and dmax is not None:
if dmin > dmax:
self.logger.error('Wrong times: the earliest time should be smaller than the latest time in {}'.format(tstr))
return
return next_time
und hier die VISU:
Code:
// ----------------------------------------------------------------------------
//
// Neugestaltetes UZSU Widget zur Bedienung UZSU Plugin
//
// Release responsive v3.41
//
[SIZE=3]// Darstellung der UZSU Eintr[/SIZE][FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]äge und Darstellung Widget in Form eine Liste mit den Einträgen[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Umsetzung[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// (c) Michael Würtenberger 2014,2015[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// [/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// APL 2.0 Lizenz[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]//[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Basis der Idee des dynamischen Popups übernommen von John Chacko[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// jQuery Mobile runtime popup[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// 16. November 2012 · 0 Comments [/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// http://johnchacko.net/?p=44[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]//[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// ----------------------------------------------------------------------------[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Basis der Architektur: document.update und document.click baut die handler in die Seite für das Popup ein.[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// document.update kopiert bei einem update die Daten aus dem Backend (per Websocket) in das DOM Element ("uzsu") ein[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// document.click übernimmt die Daten aus dem DOM Element in Variable des JS Bereichs und baut über runtimepopup [/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// dynamisch header, body und footer des popup zusammen und hängt sie an die aktuelle seite an (append, pagecreate)[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// danach werden die Daten aus den Variablen in die Elemente der Seite kopiert. Die Elemente der Seite bilden immer[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// den aktuellen Stand ab und werden von dort in die Variablen zurückgespeichert, wenn notwendig (save, sort).[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// In der Struktur können Zeilen angehängt (add) oder gelöscht werden (del). Dies geschieht immer parallel in den Variablen[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// und den Elementen der Seite. Die Expertenzeilen werden immer sofort mit angelegt, sind aber zu Beginn nicht sichtbar.[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Beim verlassen des Popups werden die dynamisch angelegten DOM Elemente wieder gelöscht (remove).[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]//[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// ----------------------------------------------------------------------------[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// set browser and platform identification variables[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// ----------------------------------------------------------------------------[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]var browserIdentificationVariable = document.documentElement;[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]browserIdentificationVariable.setAttribute('data-useragent',navigator.userAgent);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]browserIdentificationVariable.setAttribute('data-platform', navigator.platform);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]browserIdentificationVariable.className += ((!!('ontouchstart' in window) || !!('onmsgesturechange' in window)) ? ' touch' : '');[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]//----------------------------------------------------------------------------[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Funktionen für das Handling des dicts aus dem und in das Backend[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]//----------------------------------------------------------------------------[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]function uzsuCollapseTimestring(response, designType){[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]for (var numberOfEntry = 0; numberOfEntry < response.list.length; numberOfEntry++) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// und den string setzen, bei designtype = 1 bleibt er bestehen, wird nicht geändert[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if(designType === '0'){[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// zeitstring wieder zusammenbauen, falls Event <> 'time', damit wir den richtigen Zusammenbau im zeitstring haben[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]var timeString = '';[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if(response.list[numberOfEntry].event === 'time'){[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// wenn der eintrag time ist, dann kommt die zeit rein[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]response.list[numberOfEntry].time = response.list[numberOfEntry].timeCron;[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]else{[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// ansonsten wird er aus der bestandteilen zusammengebaut[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if(response.list[numberOfEntry].timeMin.length > 0){ [/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]timeString = timeString + response.list[numberOfEntry].timeMin + '<';[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]timeString += response.list[numberOfEntry].event;[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if(response.list[numberOfEntry].timeOffset > 0){[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]timeString = timeString + '+' + response.list[numberOfEntry].timeOffset + 'm';[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]else if(response.list[numberOfEntry].timeOffset < 0){[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]timeString = timeString + response.list[numberOfEntry].timeOffset + 'm';[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if(response.list[numberOfEntry].timeMax.length > 0){[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]timeString = timeString + '<' + response.list[numberOfEntry].timeMax;[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]response.list[numberOfEntry].time = timeString;[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]function uzsuExpandTimestring(response){[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// ist aus cron von schedule.py aus sh.py übernommen und nach js portiert[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]var timeCron = '';[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]var timeMin = '';[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]var timeMax = '';[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]var timeOffset = '';[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]var event = '';[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]var tabsTime = '';[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]for (var numberOfEntry = 0; numberOfEntry < response.list.length; numberOfEntry++) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]timeCron = '';[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]tabsTime = response.list[numberOfEntry].time.split('<');[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if(tabsTime.length == 1){[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]timeMin = '';[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]timeMax = '';[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if (tabsTime[0].trim().indexOf('sunrise')===0){[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]event = 'sunrise';[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]else if (tabsTime[0].trim().indexOf('sunset')===0){[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]event = 'sunset';[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]else{[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]event = 'time';[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]timeCron = tabsTime[0].trim();[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]else if(tabsTime.length == 2){[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if(tabsTime[0].indexOf('sunrise')===0){[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]timeMin = '';[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]event = 'sunrise';[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]timeMax = tabsTime[1].trim();[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]else if(tabsTime[0].indexOf('sunset')===0){[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]timeMin = '';[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]event = 'sunset';[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]timeMax = tabsTime[1].trim();[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]else{[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]timeMin = tabsTime[0].trim();[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]timeMax = '';[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]event = tabsTime[1].trim();[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if(event.indexOf('sunrise')===0) event = 'sunrise'; else event = 'sunset';[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]else if(tabsTime.length == 3){[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]timeMin = tabsTime[0].trim();[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]timeMax = tabsTime[2].trim();[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]event = tabsTime[1].trim();[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if(event.indexOf('sunrise')===0) event = 'sunrise'; else event = 'sunset';[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]else{[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Formatfehler ! ich nehme dann Defaulteinstellung an[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]timeMin = '';[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]event = 'time';[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]timeMax = '';[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// nun noch der Offset herausnehmen[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]var tabsOffset = response.list[numberOfEntry].time.split('+');[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if(tabsOffset.length == 2){[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// dann steht ein plus drin[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]tabsOffset = tabsOffset[1].split('m');[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]timeOffset = '+' + tabsOffset[0].trim();[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]tabsOffset = response.list[numberOfEntry].time.split('-');[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if(tabsOffset.length == 2){[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// dann steht ein minus drin[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]tabsOffset = tabsOffset[1].split('m');[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]timeOffset = '-' + tabsOffset[0].trim();[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// zuweisung der neuen Werte im dict[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]response.list[numberOfEntry].timeMin = timeMin;[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]response.list[numberOfEntry].timeMax = timeMax;[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]response.list[numberOfEntry].timeCron = timeCron;[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]response.list[numberOfEntry].timeOffset = timeOffset;[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]response.list[numberOfEntry].event = event;[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if(event != 'time') response.list[numberOfEntry].timeCron = event;[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]//----------------------------------------------------------------------------[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Funktionen für den Seitenaufbau[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]//----------------------------------------------------------------------------[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]function uzsuBuildTableHeader(headline, designType, valueType, valueParameterList) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Kopf und überschrift des Popups[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]var tt = "";[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// hier kommt der Popup Container mit der Beschreibung ein Eigenschaften[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]tt += "<div data-role='popup' data-overlay-theme='b' data-theme='a' class='messagePopup' id='uzsuPopupContent' data-dismissible = 'false'>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<div data-rel='back' data-role='button' data-icon='delete' data-iconpos='notext' class='ui-btn-right' id='uzsuClose'></div>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<div class='uzsuClear'><div class='uzsuPopupHeader'>" + headline + "</div>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<div class='uzsuTableMain' id='uzsuTable'>";[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]return tt;[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]function uzsuBuildTableRow(numberOfRow, designType, valueType, valueParameterList) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Tabelleneinträge[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]var tt = "";[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Liste für die Wochentage, damit ich später per Index darauf zugreifen kann[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]var weekDays = [ 'MO', 'TU', 'WE', 'TH', 'FR', 'SA', 'SU' ];[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]tt += "<div class='uzsuRow' id='uzsuNumberOfRow" + numberOfRow + "'>";[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if (designType === '0'){[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]tt+= "<div class='uzsuCell'>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<div class='uzsuCellText'></div>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<form>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<fieldset data-role='controlgroup' data-type='horizontal' data-mini='true'>";[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]for (var numberOfDay = 0; numberOfDay < 7; numberOfDay++) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]tt += "<input type='checkbox' id='checkbox" + numberOfDay + "-" + numberOfRow + "'> <label for='checkbox" + numberOfDay + "-" + numberOfRow + "'>" + weekDays[numberOfDay] + "</label>";[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]tt += "</fieldset>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"</form>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"</div>";[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if (valueType === 'bool') {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Unterscheidung Anzeige und Werte[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if (valueParameterList[0].split(':')[1] === undefined) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]tt += "<div class='uzsuCell'>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<div class='uzsuCellText'>Value</div>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<select name='UZSU' id='uzsuValue" + numberOfRow + "' data-role='slider' data-value = '1' data-mini='true'> " +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<option value='0'>" + valueParameterList[1] + "</option>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<option value='1'> " + valueParameterList[0] + " </option>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"</select>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"</div>";[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]} [/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]else {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]tt += "<div class='uzsuCell'>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<div class='uzsuCellText'>Value</div>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<select name='UZSU' id='uzsuValue" + numberOfRow + "' data-role='slider' data-value = '1' data-mini='true'>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<option value='" + valueParameterList[1].split(':')[1] + "'>" + valueParameterList[1].split(':')[0] + "</option>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<option value='" + valueParameterList[0].split(':')[1] + "'> " + valueParameterList[0].split(':')[0] + " </option>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"</select>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"</div>";[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]} [/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]else if (valueType === 'num') {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]tt += "<div class='uzsuCell'>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<div class='uzsuCellText'>Value</div>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<input type='number' " + valueParameterList[0] + " data-clear-btn='false' class='uzsuValueInput' pattern='[0-9]*' id='uzsuValue" + numberOfRow + "'>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"</div>";[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]} [/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]else if (valueType === 'text') {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]tt += "<div class='uzsuCell'>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<div class='uzsuCellText'>Value</div>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<input type='text' data-clear-btn='false' class='uzsuTextInput' id='uzsuValue" + numberOfRow + "'>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"</div>";[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]} [/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]else if (valueType === 'list') {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// das Listenformat mit select ist sehr trickreich.[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]tt += "<div class='uzsuCell'>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<div class='uzsuCellText'>Value</div>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<form>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<div data-role='fieldcontain' class='uzsuListInput'>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<select name='uzsuValue'" + numberOfRow + "' id='uzsuValue" + numberOfRow + "' data-mini='true'>";[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]for (var numberOfListEntry = 0; numberOfListEntry < valueParameterList.length; numberOfListEntry++) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Unterscheidung Anzeige und Werte[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if (valueParameterList[0].split(':')[1] === undefined) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]tt += "<option value='" + valueParameterList[numberOfListEntry].split(':')[0] + "'>"+ valueParameterList[numberOfListEntry].split(':')[0] + "</option>";[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]} [/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]else {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]tt += "<option value='" + valueParameterList[numberOfListEntry].split(':')[1] + "'>"+ valueParameterList[numberOfListEntry].split(':')[0] + "</option>";[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]tt += "</select>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"</div>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"</form>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"</div>";[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if(designType === '0'){[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]tt+= "<div class='uzsuCell'>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<div class='uzsuCellText'>Time</div>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<input type='time' data-clear-btn='false' class='uzsuTimeInput' id='uzsuTimeCron" + numberOfRow + "'>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"</div>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<div class='uzsuCell'>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<div class='uzsuCellText'></div>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<form>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<fieldset data-role='controlgroup' data-type='horizontal' data-mini='true'>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<input type='checkbox' id='uzsuActive" + numberOfRow + "'>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<label for='uzsuActive" + numberOfRow + "'>Act</label>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"</fieldset>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"</form>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"</div>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<div class='uzsuCellExpert'>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<div class='uzsuCellText'>Expert</div>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<button id='uzsuExpert" + numberOfRow + "' data-mini='true' data-icon='arrow-d' data-iconpos='notext'></button>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"</div>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<div class='uzsuCell'>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<div class='uzsuCellText'></div>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<button id='uzsuDelTableRow" + numberOfRow + "' data-mini='true'>Del</button>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"</div>";[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]else{[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]tt += "<div class='uzsuCell'>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<div class='uzsuCellText'></div>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<form>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<fieldset data-role='controlgroup' data-type='horizontal' data-mini='true'>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<input type='checkbox' id='uzsuActive" + numberOfRow + "'> " +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<label for='uzsuActive" + numberOfRow + "'>Act</label>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"</fieldset>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"</form>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"</div>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<div class='uzsuCell'> " +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<div class='uzsuCellText'></div>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<button id='uzsuDelTableRow" + numberOfRow + "' data-mini='true'>Del</button>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"</div>" + [/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<div class='uzsuCellType1'>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<input type='text' class='uzsuTextWideInput' data-clear-btn='true' id='uzsuTime" + numberOfRow + "'>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<input type='text' class='uzsuTextWideInput' data-clear-btn='true' id='uzsuRrule" + numberOfRow + "'>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"</div>";[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Tabelle Reihen abschliessen[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]tt += "</div>";[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// und jetzt noch die unsichbare Expertenzeile[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]tt += "<div class='uzsuRowExpert' id='uzsuExpertLine" + numberOfRow + "' style='display:none;'>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<div class='uzsuCell'>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<div class='uzsuCellText'>earliest</div>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<input type='time' data-clear-btn='false' class='uzsuTimeMaxMinInput' id='uzsuTimeMin" + numberOfRow + "'>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"</div>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<div class='uzsuCell'>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<div class='uzsuCellText'>Event</div>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<form>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<div data-role='fieldcontain' class='uzsuEvent' >" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<select name='uzsuEvent" + numberOfRow + "' id='uzsuEvent" + numberOfRow + "' data-mini='true'>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<option value='time'>Time</option>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<option value='sunrise'>Sunrise</option>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<option value='sunset'>Sunset</option>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"</select>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"</div>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"</form>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"</div>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<div class='uzsuCell'>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<div class='uzsuCellText'>+/- min</div>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<input type='number' data-clear-btn='false' class='uzsuTimeOffsetInput' id='uzsuTimeOffset" + numberOfRow + "'>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"</div>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<div class='uzsuCell'>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<div class='uzsuCellText'>latest</div>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<input type='time' data-clear-btn='false' class='uzsuTimeMaxMinInput' id='uzsuTimeMax" + numberOfRow + "'>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"</div>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"</div>"; [/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]return tt;[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]function uzsuBuildTableFooter(designType) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]var tt = "";[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Zeileneinträge abschliessen[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]tt += "</div>";[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Aufbau des Footers[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]tt += "<div class='uzsuTableFooter'>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<div class='uzsuRowFooter'>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<div class='uzsuCell'>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<div class='uzsuCellText'>v3.41 resp</div>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<form>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<fieldset data-mini='true'>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<input type='checkbox' id='uzsuGeneralActive'>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<label for='uzsuGeneralActive'>Active</label>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"</fieldset>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"</form>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"</div><div class='uzsuCell'>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<div class='uzsuCellText'></div>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<div data-role='controlgroup' data-type='horizontal' data-inline='true' data-mini='true'>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<div data-role = 'button' id='uzsuAddTableRow'>New</div>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<div data-role = 'button' id='uzsuSortTime'>Sort</div>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"</div>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"</div>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<div class='uzsuCell'>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<div class='uzsuCellText'></div>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<div data-role='controlgroup' data-type='horizontal' data-inline='true' data-mini='true'>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<div data-role = 'button' id='uzsuCancel'>Cancel</div>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"<div data-role = 'button' id='uzsuSaveQuit'>OK</div>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"</div>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"</div>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"</div>" +[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]"</div>";[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// und der Abschluss des popup divs[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]tt += "</div></div>";[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]return tt;[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]//----------------------------------------------------------------------------[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Funktionen für das dynamische Handling der Seiteninhalte des Popups[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]//----------------------------------------------------------------------------[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]function uzsuSetTextInputState(numberOfRow){[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// status der eingaben setzen, das brauchen wir an mehreren stellen[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if ($('#uzsuEvent' + numberOfRow).val() === 'time'){[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$('#uzsuTimeMin' + numberOfRow).textinput('disable');[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$('#uzsuTimeOffset' + numberOfRow).textinput('disable');[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$('#uzsuTimeMax' + numberOfRow).textinput('disable');[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// und den Zeit auf 00:00 stellen wenn von sunrise auf time umgeschaltet wird[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if($('#uzsuTimeCron' + numberOfRow).length !== 0){[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$('#uzsuTimeCron' + numberOfRow).textinput('enable');[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if($('#uzsuTimeCron' + numberOfRow).val().indexOf('sun')===0)[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$('#uzsuTimeCron' + numberOfRow).val('00:00');[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]else{[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$('#uzsuTimeMin' + numberOfRow).textinput('enable');[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$('#uzsuTimeOffset' + numberOfRow).textinput('enable');[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$('#uzsuTimeMax' + numberOfRow).textinput('enable');[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// und den Text event auf sunrise bzw. sunset setzen, damit man ihn erkennt ![/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if($('#uzsuTimeCron' + numberOfRow).length !== 0){[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$('#uzsuTimeCron' + numberOfRow).textinput('disable');[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$('#uzsuTimeCron' + numberOfRow).val($('#uzsuEvent' + numberOfRow).val());[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]function uzsuFillTable(response, designType, valueType, valueParameterList) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Tabelle füllen. Es werden die Daten aus der Variablen response gelesen und in den Status Darstellung der Widgetblöcke zugewiesen. Der aktuelle Status in dann in der Darstellung enthalten ![/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]var numberOfEntries = response.list.length;[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]var weekDays = [ 'MO', 'TU', 'WE', 'TH', 'FR', 'SA', 'SU' ];[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// jetzt wird die Tabelle befüllt allgemeiner Status, bitte nicht mit attr, sondern mit prop, siehe // https://github.com/jquery/jquery-mobile/issues/5587[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$('#uzsuGeneralActive').prop('checked', response.active).checkboxradio("refresh");[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// dann die Werte der Tabelle[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]for (var numberOfRow = 0; numberOfRow < numberOfEntries; numberOfRow++) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// beim Schreiben der Daten Unterscheidung, da sonst das Element falsch genutzt wird mit Flipswitch für die bool Variante[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if (valueType == 'bool') {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$('#uzsuValue' + numberOfRow).val(response.list[numberOfRow].value).slider("refresh");[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// mit int Value für die num Variante[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]else if ((valueType == 'num') || (valueType == 'text')) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$('#uzsuValue' + numberOfRow).val(response.list[numberOfRow].value);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]} [/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]else if (valueType == 'list') {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// hier ist es etwas schwieriger, denn ich muß den Wert mit der Liste vergleichen und dann setzen[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]for (var numberOfListEntry = 0; numberOfListEntry < valueParameterList.length; numberOfListEntry++) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// wenn ich den Eintrag gefunden haben, dann setze ich den Eintrag auf die richtige Stelle ansonsten wird einfach der erste Eintrag genomme.[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// zusätzlich noch die Unterscheidung, ob ich in der Listen Anzeige und Wertezuweisung trenne[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if (valueParameterList[0].split(':')[1] === undefined) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if (response.list[numberOfRow].value == valueParameterList[numberOfListEntry].split(':')[0]) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$('#uzsuValue' + numberOfRow).val(valueParameterList[numberOfListEntry].split(':')[0]).attr('selected',true).siblings('option').removeAttr('selected');[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$('#uzsuValue' + numberOfRow).selectmenu('refresh', true);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]} [/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]else {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if (response.list[numberOfRow].value == valueParameterList[numberOfListEntry].split(':')[1]) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$('#uzsuValue' + numberOfRow).val(valueParameterList[numberOfListEntry].split(':')[1]).attr('selected',true).siblings('option').removeAttr('selected');[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$('#uzsuValue' + numberOfRow).selectmenu('refresh', true);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Values in der Zeile setzen[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$('#uzsuActive' + numberOfRow).prop('checked',response.list[numberOfRow].active).checkboxradio("refresh");[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$('#uzsuTime' + numberOfRow).val(response.list[numberOfRow].time);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$('#uzsuTimeMin'+numberOfRow).val(response.list[numberOfRow].timeMin);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$('#uzsuTimeOffset'+numberOfRow).val(parseInt(response.list[numberOfRow].timeOffset));[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$('#uzsuTimeMax'+numberOfRow).val(response.list[numberOfRow].timeMax);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$('#uzsuTimeCron'+numberOfRow).val(response.list[numberOfRow].timeCron);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// und die pull down Menüs richtig, damit die Einträge wieder stimmen[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$('#uzsuEvent'+numberOfRow).val(response.list[numberOfRow].event).attr('selected',true).siblings('option').removeAttr('selected');[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// und der Refresh, damit es angezeigt wird[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$('#uzsuEvent'+numberOfRow).selectmenu('refresh', true);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Fallunterscheidung für den Expertenmodus[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]uzsuSetTextInputState(numberOfRow);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if(designType === '0'){[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// in der Tabelle die Werte der rrule, dabei gehe ich von dem Standardformat FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU aus und setze für jeden Eintrag den Button.[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]var rrule = response.list[numberOfRow].rrule;[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if (typeof rrule == "undefined") {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]rrule = '';[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]var ind = rrule.indexOf('BYDAY');[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// wenn der Standard drin ist[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if (ind > 0) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]var days = rrule.substring(ind);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Setzen der Werte[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]for (var numberOfDay = 0; numberOfDay < 7; numberOfDay++) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$('#checkbox' + numberOfDay + '-' + numberOfRow).prop('checked', days.indexOf(weekDays[numberOfDay]) > 0).checkboxradio("refresh");[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]else{[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// wenn Experte, dann einfach nur den String[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$('#uzsuRrule' + numberOfRow).val(response.list[numberOfRow].rrule);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]function uzsuSaveTable(item, response, designType, valueType, valueParameterList,[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]saveSmarthome) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Tabelle auslesen und speichern[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]var numberOfEntries = response.list.length;[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]var weekDays = [ 'MO', 'TU', 'WE', 'TH', 'FR', 'SA', 'SU' ];[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// hier werden die Daten aus der Tabelle wieder in die items im Backend zurückgespielt bitte darauf achten, dass das zurückspielen exakt dem der Anzeige enspricht. Gesamthafte Aktivierung[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]response.active = $('#uzsuGeneralActive').is(':checked');[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Einzeleinträge[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]for (var numberOfRow = 0; numberOfRow < numberOfEntries; numberOfRow++) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]response.list[numberOfRow].value = $('#uzsuValue' + numberOfRow).val();[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]response.list[numberOfRow].active = $('#uzsuActive' + numberOfRow).is(':checked');[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]response.list[numberOfRow].time = $('#uzsuTime'+numberOfRow).val();[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]response.list[numberOfRow].timeMin = $('#uzsuTimeMin'+numberOfRow).val();[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]response.list[numberOfRow].timeOffset = $('#uzsuTimeOffset'+numberOfRow).val();[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]response.list[numberOfRow].timeMax = $('#uzsuTimeMax'+numberOfRow).val();[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]response.list[numberOfRow].timeCron = $('#uzsuTimeCron'+numberOfRow).val();[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]response.list[numberOfRow].event = $('#uzsuEvent'+numberOfRow).val();[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if(designType === '0'){[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// in der Tabelle die Werte der rrule, dabei gehe ich von dem Standardformat FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU aus und setze für jeden Eintrag den Button. Setzen der Werte.[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]var first = true;[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]var rrule = '';[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]for (var numberOfDay = 0; numberOfDay < 7; numberOfDay++) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if ($('#checkbox' + numberOfDay + '-' + numberOfRow).is(':checked')) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if (first) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]first = false;[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]rrule = 'FREQ=WEEKLY;BYDAY=' + weekDays[numberOfDay];[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]} [/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]else {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]rrule += ',' + weekDays[numberOfDay];[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]response.list[numberOfRow].rrule = rrule;[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]else{[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// hier wird der String direkt übergeben[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]response.list[numberOfRow].rrule = $('#uzsuRrule' + numberOfRow).val();[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// über json Interface / Treiber herausschreiben[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if (saveSmarthome) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]uzsuCollapseTimestring(response, designType);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]io.write(item, {active : response.active,list : response.list});[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]//----------------------------------------------------------------------------[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Funktionen für das Erweitern und Löschen der Tabelleneinträge[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]//----------------------------------------------------------------------------[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]function uzsuAddTableRow(response, designType, valueType, valueParameterList) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Tabellenzeile einfügen[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]var numberOfNewRow = response.list.length; [/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// alten Zustand mal in die Liste rein. da der aktuelle Zustand ja nur im Widget selbst enthalten ist, wird er vor dem Umbau wieder in die Variable response zurückgespeichert.[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]uzsuSaveTable(1, response, designType, valueType, valueParameterList, false);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// ich hänge immer an die letzte Zeile dran ! erst einmal das Array erweitern[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]response.list.push({active:false,rrule:'',time:'00:00',value:0,event:'time',timeMin:'',timeMax:'',timeCron:'00:00',timeOffset:''});[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// dann eine neue HTML Zeile genenrieren[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]tt = uzsuBuildTableRow(numberOfNewRow, designType, valueType, valueParameterList);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Zeile in die Tabelle einbauen[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$('#uzsuTable').append(tt);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// hier wichtig: damit die Optimierung jquerymobile auf Tabelle wirkt[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$.mobile.activePage.trigger('pagecreate');[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// den delete Handler für die neue Zeile einhängen[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$.mobile.activePage.find('#uzsuDelTableRow' + numberOfNewRow).bind('tap',function(e) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]uzsuDelTableRow(response, designType, valueType,valueParameterList, e);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]});[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// den helper Handler für die neue Zeile einhängen[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$.mobile.activePage.find('#uzsuExpert' + numberOfNewRow).bind('tap', function(e) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]uzsuShowExpertLine(e);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}); [/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// und Daten ausfüllen. hier werden die Zeile wieder mit dem Status beschrieben. Status ist dann wieder im Widget[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]uzsuFillTable(response, designType, valueType, valueParameterList);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]function uzsuDelTableRow(response, designType, valueType, valueParameterList, e) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Tabellenzeile löschen[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]var numberOfEntries = response.list.length;[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// wenn überhaupt Einträge vorhanden sind sollte nicht passieren, weil eigentlich auch kein Button dann da ist, aber...[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if (numberOfEntries > 0) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Index heraussuchen, in welcher Zeile gelöscht wurde[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]var numberOfRowToDelete = parseInt(e.currentTarget.id.substr(15));[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// zwischenspeichern vor dem löschen[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]uzsuSaveTable(1, response, designType, valueType, valueParameterList, false);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// erst mal das Array entsprechen kürzen[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]response.list.splice(numberOfRowToDelete, 1);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// jetzt die Tabelle kürzen im Popup[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$('#uzsuNumberOfRow' + (numberOfEntries - 1)).remove();[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// und Daten wieder ausfüllen[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]uzsuFillTable(response, designType, valueType, valueParameterList);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]function uzsuShowExpertLine(e) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Tabellezeile ermitteln, wo augerufen wurde. es ist die 10. Stelle des aufrufenden Objektes[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]var numberOfRow = parseInt(e.currentTarget.id.substr(10));[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// erst einmal alle verschwinden lassen[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]uzsuHideAllExpertLines();[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Zeile anzeigen[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$('#uzsuExpertLine' + numberOfRow).css('display','');[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// jetzt noch den Button in der Zeile drüber auf arrow up ändern[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$('#uzsuExpert' + numberOfRow).buttonMarkup({ icon: 'arrow-u' });[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// und den Callback ändern[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$.mobile.activePage.find('#uzsuExpert' + numberOfRow).unbind('tap');[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$.mobile.activePage.find('#uzsuExpert' + numberOfRow).bind('tap', function(e) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// propagation stoppen, sonst wird die Zeile gleich wieder aufgemacht[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]e.stopImmediatePropagation();[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]uzsuHideExpertLine(e);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]});[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Handler, um je nach Event die inputs zu Aktivieren / Deaktivieren reagiert auf die Änderung des Pulldown Menüs[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$.mobile.activePage.find('#uzsuEvent' + numberOfRow).on('change', function (){[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]uzsuSetTextInputState(numberOfRow);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]});[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]function uzsuHideExpertLine(e) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Tabellezeile ermitteln, wo aufgerufen wurde. es ist die 10. Stelle des aufrufenden Objektes[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]var numberOfRow = parseInt(e.currentTarget.id.substr(10));[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// tabellenzeile löschen[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if ($('#uzsuExpertLine'+numberOfRow)) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// jetzt die Tabelle kürzen im Popup[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$('#uzsuExpertLine'+numberOfRow).css('display','none');[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// jetzt noch den Button in der Zeile drüber ändern auf arrow down[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$('#uzsuExpert'+ numberOfRow).buttonMarkup({ icon: 'arrow-d' });[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// und den Callback ändern[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$.mobile.activePage.find('#uzsuExpert'+ numberOfRow).unbind('tap');[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$.mobile.activePage.find('#uzsuExpert'+ numberOfRow).bind('tap', function(e) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Propagation stoppen, sonst wird die Zeile gleich wieder aufgemacht[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]e.stopImmediatePropagation();[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]uzsuShowExpertLine(e);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]});[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]function uzsuHideAllExpertLines() {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]var numberOfEntries = $('.uzsuRowExpert').length;[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// tabellenzeile löschen[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]for (var numberOfRow = 0; numberOfRow < numberOfEntries; numberOfRow++) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// jetzt die Tabelle kürzen im Popup[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$('#uzsuExpertLine'+numberOfRow).css('display','none');[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// jetzt noch den Button in der Zeile drüber ändern auf arrow down[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$('#uzsuExpert'+ numberOfRow).buttonMarkup({ icon: 'arrow-d' });[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// und den Callback ändern[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$.mobile.activePage.find('#uzsuExpert'+ numberOfRow).unbind('tap');[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$.mobile.activePage.find('#uzsuExpert'+ numberOfRow).bind('tap', function(e) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Propagation stoppen, sonst wird die Zeile gleich wieder aufgemacht[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]e.stopImmediatePropagation();[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]uzsuShowExpertLine(e);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]});[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3] [/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]//----------------------------------------------------------------------------[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Funktionen für das Sortrieren der Tabelleneinträge[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]//----------------------------------------------------------------------------[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]function uzsuSortFunction(a, b) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// sort Funktion, wirklich vereinfacht für den speziellen Fall[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// ergänzt um das sunrise und sunset Thema[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]var A = a.timeCron.replace(':', '');[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]var B = b.timeCron.replace(':', '');[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Reihenfolge ist erst die Zeiten, dann sunrise, dann sunset [/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if(A == 'sunrise') A = '2400';[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if(A == 'sunset') A = '2400';[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if(B == 'sunrise') B = '2401';[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if(B == 'sunset') B = '2401';[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]return (A - B);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]function uzsuSortTime(response, designType, valueType, valueParameterList, e) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// erst aus dem Widget zurücklesen, sonst kann nicht im Array sortiert werden (alte daten)[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]uzsuSaveTable(1, response, designType, valueType, valueParameterList, false);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// sortieren der Listeneinträge nach zeit[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]response.list.sort(uzsuSortFunction);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// dann die Einträge wieder schreiben[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]uzsuFillTable(response, designType, valueType, valueParameterList);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]//----------------------------------------------------------------------------[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Funktionen für den Aufbau des Popups und das Einrichten der Callbacks[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]//----------------------------------------------------------------------------[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]function uzsuRuntimePopup(response, headline, designType, valueType, valueParameterList, item) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Steuerung des Popups erst einmal wird der Leeranteil angelegt[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// erst den Header, dann die Zeilen, dann den Footer [/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]var tt = uzsuBuildTableHeader(headline, designType, valueType, valueParameterList);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]for (var numberOfRow = 0; numberOfRow < response.list.length; numberOfRow++) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]tt += uzsuBuildTableRow(numberOfRow, designType, valueType, valueParameterList);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]tt += uzsuBuildTableFooter(designType);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// dann hängen wir das an die aktuelle Seite[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$.mobile.activePage.append(tt).trigger('pagecreate');[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// dann speichern wir uns für cancel die ursprünglichen im DOM gespeicherten Werte in eine Variable ab[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]var responseCancel = jQuery.extend(true, {}, response);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// dann die Werte eintragen.[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]uzsuFillTable(response, designType, valueType, valueParameterList);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Popup schliessen mit close rechts oben in der Box[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$.mobile.activePage.find('#uzsuClose').bind('tap', function(e) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// wenn keine Änderungen gemacht werden sollen (cancel), dann auch im cache die alten Werte[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$.mobile.activePage.find('#uzsuPopupContent').popup('close');[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]});[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Popup schliessen mit Cancel in der Leiste[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$.mobile.activePage.find('#uzsuCancel').bind('tap', function(e) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// wenn keine Änderungen gemacht werden sollen (cancel), dann auch im cache die alten Werte[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$.mobile.activePage.find('#uzsuPopupContent').popup('close');[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]});[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// speichern mit SaveQuit[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$.mobile.activePage.find('#uzsuSaveQuit').bind('tap', function(e) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// jetzt wird die Kopie auf das Original kopiert und geschlossen[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]uzsuSaveTable(item, response, designType, valueType, valueParameterList, true);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$.mobile.activePage.find('#uzsuPopupContent').popup('close');[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]});[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Eintrag hinzufügen mit add[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$.mobile.activePage.find('#uzsuAddTableRow').bind('tap', function(e) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]uzsuAddTableRow(response, designType, valueType, valueParameterList);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]});[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Eintrag sortieren nach Zeit[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$.mobile.activePage.find('#uzsuSortTime').bind('tap', function(e) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]uzsuSortTime(response, designType, valueType, valueParameterList);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]});[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Löschen mit del als Callback eintragen[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]for (numberOfRow = 0; numberOfRow < response.list.length; numberOfRow++) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$.mobile.activePage.find('#uzsuDelTableRow' + numberOfRow).bind('tap',function(e) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]uzsuDelTableRow(response, designType, valueType, valueParameterList, e);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]});[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// call Expert Mode[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$.mobile.activePage.find('#uzsuExpert'+ numberOfRow).bind('tap', function(e) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]uzsuShowExpertLine(e);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]});[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// hier wir die aktuelle Seite danach durchsucht, wo das Popup ist und im folgenden das Popup initialisiert, geöffnet und die schliessen[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Funktion daran gebunden. Diese entfernt wieder das Popup aus dem DOM Baum nach dem Schliessen mit remove[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$.mobile.activePage.find('#uzsuPopupContent').popup('open').bind({[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]popupafterclose: function () {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$(this).remove();[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]});[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]//----------------------------------------------------------------------------[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]//Funktionen für das Verankern des Popup auf den Webseiten[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]//----------------------------------------------------------------------------[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]function uzsuDomUpdate(event, response) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Initialisierung zunächst wird festgestellt, ob Item mit Eigenschaft vorhanden. Wenn nicht: active = false[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// ansonsten ist der Status von active gleich dem gesetzten Status[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]var active = response.length > 0 ? response[0].active : false;[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Das Icon wird aktiviert, falls Status auf aktiv, ansonsten deaktiviert angezeigt[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$('#' + this.id + ' img').attr('src',(active ? $(this).attr('data-pic-on') : $(this).attr('data-pic-off')));[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// wenn keine Daten vorhanden, dann ist kein item mit den eigenschaften hinterlegt und es wird nichts gemacht[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if (response.length === 0){[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]alert('DOM Daten für UZSU nicht vorhanden! Item falsch konfiguriert oder nicht vorhanden ! (update-event)');[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]return;[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Wenn ein Update erfolgt, dann werden die Daten erneut in die Variable uzsu geladen damit sind die UZSU objekte auch in der click Funktion verfügbar[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if (response[0].list instanceof Array) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$(this).data('uzsu', response[0]);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]} [/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]else {$(this).data('uzsu', {active : true,list : [] });[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]function uzsuDomClick(event) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// hier werden die Parameter aus den Attributen herausgenommen und beim Öffnen mit .open(....) an das Popup Objekt übergeben[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// und zwar mit deep copy, damit ich bei cancel die ursprünglichen werte nicht überschrieben habe[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]var response = jQuery.extend(true, {}, $(this).data('uzsu'));[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// erst gehen wir davon aus, dass die Prüfungen positiv und ein Popup angezeigt wird[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]var popupOk = true;[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Fehlerbehandlung für ein nicht vorhandenes DOM Objekt. Das response Objekt ist erst da, wenn es mit update angelegt wurde. Da diese[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Schritte asynchron erfolgen, kann es sein, dass das Icon bereits da ist, clickbar, aber nocht keine Daten angekommen. Dann darf ich nicht[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// auf diese Daten zugreifen wollen ![/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if(response.list === undefined){ [/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]alert('DOM Daten für UZSU nicht vorhanden! Item falsch konfiguriert oder nicht vorhanden ! (click-event)');[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]else{[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// jetzt erweitern wir die dicts pro Eintrag, um dem dort einhaltenen Timestring die enthaltenen Einzelteile zu bekommen[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]uzsuExpandTimestring(response);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Auswertung der Übergabeparameter[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]var headline = $(this).attr('data-headline');[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]var designType = $(this).attr('data-designType');[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]var valueType = $(this).attr('data-valueType');[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// hier wird die komplette Liste übergeben. widget.explode kehrt das implode aus der Webseite wieder um[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]var valueParameterList = widget.explode($(this).attr('data-valueParameterList'));[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// default Werte setzen fuer valueParameterList[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if(valueParameterList.length === 0){[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if(valueType === 'bool') valueParameterList = ['On','Off'];[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]else if (valueType === 'num') valueParameterList = [''];[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]else if (valueType === 'text') valueParameterList = [''];[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]else if (valueType === 'list') valueParameterList = [''];[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// data-item ist der sh.py item, in dem alle Attribute lagern, die für die Steuerung notwendig ist ist ja vom typ dict. das item, was tatsächlich per[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Schaltuhr verwendet wird ist nur als attribut (child) enthalten und wird ausschliesslich vom Plugin verwendet. wird für das rückschreiben der Daten an smarthome.py benötigt[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]var item = $(this).attr('data-item');[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// jetzt kommt noch die Liste von Prüfungen, damit hinterher keine Fehler passieren, zunächst fehlerhafter designType (unbekannt)[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if ((designType !== '0') && (designType !== '1')) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]alert('Fehlerhafter Parameter: "' + designType + '" im Feld designType bei Item ' + item);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]popupOk = false;[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// fehlerhafter valueType (unbekannt)[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if ((valueType !== 'bool') && (valueType !== 'num') && (valueType !== 'text') && (valueType !== 'list')) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]alert('Fehlerhafter Parameter: "' + valueType + '" im Feld valueType bei Item ' + item);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]popupOk = false;[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// bei designType '0' wird rrule nach Wochentagen umgewandelt und ein festes Format vogegegeben hier sollte nichts versehentlich überschrieben werden[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if (designType == '0') {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]var numberOfEntries = response.list.length;[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]for (var numberOfRow = 0; numberOfRow < numberOfEntries; numberOfRow++) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// test, ob die RRULE fehlerhaft ist[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if ((response.list[numberOfRow].rrule.indexOf('FREQ=WEEKLY;BYDAY=') !== 0) && (response.list[numberOfRow].rrule.length > 0)) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if (!confirm('Fehler: Parameter designType ist "0", aber gespeicherte RRULE String in UZSU "' + response.list[numberOfRow].rrule + '" entspricht nicht default Format FREQ=WEEKLY;BYDAY=MO... bei Item ' + item + '. Soll dieser Eintrag überschrieben werden ?')) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// direkter Abbruch bei der Entscheidung ![/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]numberOfRow = numberOfEntries; [/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]popupOk = false; [/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// wenn bei designType = 'list' und 'bool' ein Split angegeben wird, dann muss er immer angegeben sein[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if (((valueType == 'list') || (valueType == 'bool')) && (valueParameterList[0].split(':')[1] !== undefined)) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]for (var numberOfTextEntries = 0; numberOfTextEntries < valueParameterList.length; numberOfTextEntries++) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if (valueParameterList[numberOfTextEntries].split(':')[1] === undefined) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]alert('Fehlerhafte Einträge im Parameter valueParameterList !');[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]popupOk = false;[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]if (popupOk) {[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Öffnen des Popups bei clicken des icons und Ausführung der Eingabefunktion[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]uzsuRuntimePopup(response, headline, designType, valueType, valueParameterList, item);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]}[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]// Verankerung als Callback in den DOM Elementen[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$(document).on('update','[data-widget="uzsu.uzsu_icon"]', uzsuDomUpdate);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=3][FONT=Consolas][SIZE=3]$(document).on('click','[data-widget="uzsu.uzsu_icon"]', uzsuDomClick);[/SIZE][/FONT][/SIZE][/FONT]
[SIZE=3] [/SIZE]
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Kommentar