Datumseingabe

Noch so ein Thema das ich schon ewig lange vor mir herschiebe:

Wie realisiere ich denn am besten die Eingabe eines Datums ? Habe zzt. ein Konstrukt aus mehren Buttons. Ist aber ekelhaft, das soll weg.
So etwas ähnliches wie das das ~UnixTimestamp Popup wäre schön.

danke schon mal
Bernhard

Aktuell gibt es da nicht wirklich eine schöne Möglichkeit zur Auswahl eines Datums, sehr viel Nachfrage dazu hat es in letzter Zeit auch nicht gegeben, darum habe ich immer anderen Features den Vorzug gegeben :thinking:

OK, verstehe. Dann werde ich mir mal einen Workaround überlegen.
Früher mal (bevor es das WF konnte) machte ich das mit einem Dummy Timer. Mal sehen ob das auch mit IPSView klappt.

schöne Grüße
Bernhard

Habs hinbekommen.
Mit einem HTML5 date field geht das ganz prima. Das dann mit ein paar Assotiation Button zu einem pers. Steuerlement vereint. Kommt prima.

image

image

image

gruß
bb

Hallo Bernhard,
stehe auch vor den selben Problem :face_with_raised_eyebrow:.
Könntest mich bitte unterstützen, habe nicht viel Programmierkenntnisse.
Möchte auch eine vernünftige Datumseingabe machen.
In IPSView eine Html Box erstellen ???
Danke vorab LG Willi

Servus
Probier mas halt mal. :slight_smile:

In IPS sieht e sso aus:

Als erstes benötigts du in IPS eine String variable mit HTML Profil. Diese läßt du in IPSVIEW in einer HTML Box anzeigen. Nenne sie „HTMLString_StartStopdate“;
Dann zwei Integer Variable mit ~UnixTimestamp Profil. damit der Code mit Copy&Paste funktioniert nennst sie „Start_Date“ und „Stop_Date“.
Weiters einen WebHook, den nennst „/hook/IPSView_DateSelector“ und läßt ihn auf „Actionscript“ zeigen.
Dieses „Actionscript“ bekommt diesen Inhalt:

$Message = $_GET['Message'];
IPS_LogMessage("Msg von IPSView",$Message);

$Topic = substr($Message,0,strpos($Message,":")) ;
$Value = substr($Message,strpos($Message,":")+1);

switch($Topic) {
    case "StartDate":
        SetValueInteger(27930,strtotime($Value));
    break;
    case "StopDate":
        SetValueInteger(56761,strtotime($Value));
    break;
}

Die Zeilen mit SetValue() änderst du und läßt auf deine Start_Date und Stop_Date Variablen zeigen.

Dann noch dann ein weiteres Script „Dateselector_StartStop“ welches die „HTMLString_StartStopdate“ Variable befüllt.
Auch hier änderst du die ID in den ersten drei Zeilen damit sie auf deine Variablen zeigen.

<?php
$ID_HTMLStringVariable = 47388;
$StartDate = date("Y-m-d", GetValue(27930));
$StopDate = date("Y-m-d", GetValue(56761));

$htmlstring =  ' 

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">

<style>
div{margin:1px;}
label{width:0px;display:inline-block;}

.css_datepicker input{
  padding:3px;
  border:0px solid #eee;
  font: normal 14px sans-serif;
  background-color: transparent;
  //color: #eee;
  //outline:none;
  //  filter: invert(1);
color-scheme: dark;
  &:focus{outline:none;border:1px solid #3797F1;}
  &:hover{border: 1 px solid #bdbdbd;
    
  }
}
}
</style>
</head>';


$htmlstring .=  '<?xml version="1.0" encoding="UTF-8"?>';
$htmlstring .= '<script type="application/ecmascript"> 
    
function SendStart(date)
	{
	var HTTP = new XMLHttpRequest();
	HTTP.open("POST","hook/IPSView_DateSelector?Message=" + "StartDate:" + date,true);
	HTTP.send();
	}

function SendStop(date)
	{
	var HTTP = new XMLHttpRequest();
	HTTP.open("POST","hook/IPSView_DateSelector?Message=" + "StopDate:" + date,true);
	HTTP.send();
	}
</script>';

$htmlstring .= '
<div class="css_datepicker"><label for="date"> </label><input type="date" id="startdate" onchange="SendStart(this.value)" value = "'.$StartDate.'" /></div>
<div class="css_datepicker"><label for="date"> </label><input type="date" id="stoptdate" onchange="SendStop(this.value)" value = "'.$StopDate.'"/></div>
';

SetValue($ID_HTMLStringVariable,$htmlstring);

// HTML5 Datepicker von https://codepen.io/Wallbanger/pen/OWwKLO


So , das wars.
Damit solltest du zwei Datumseingabefelder bekommen:
image
Wie funktionierts ?
Wird im Selector ein Datum ausgewählt, so sendet es die Seite an den Webhook. Dieser leitet es an das „Actionscript“ weiter welches es dann in deine Variablen schreibt.

Falls du nur ein Datum benötigts kannst natürlich die entsprechenden Stellen für „StopDate“ weglassen.
Damit wir nicht durcheinanderkommen hab ich einfach Copy&Paste von meinen Scripten gemacht.

wünsche gutes gelingen
Bernhard

Hallo Bernhard,
Danke werde es heute probieren.
LG Willi

Hallo Bernhard,
Hatte WebHook anfangs nicht verstanden,
liegt ja bei den Kern Instanzen :wink:
Wunderte mich anfangs, warum die beiden Datums,
bei neuerlichem Aufruf der HTMLBox nicht Aktualisiert wurden.
Verlinkte danach das PHP Script DateSelect_StartStopdate mit einem Ereignis,
bei Änderung von „StartDate“ und „StopDate“ und es passte dann :slightly_smiling_face:

Danke nochmal für die Hilfe
LG Willi

Freut mich das es funktioniert.
Im Android wird praktischerweise vom (Chrome ??) Browser automatisch auf eine Touchscreen taugliche Anzeige umgeschaltet. Dorrt sieht es dann ähnlich aus wie im WF.

viel Spass
bb