Skip to content

Commit

Permalink
var
Browse files Browse the repository at this point in the history
  • Loading branch information
jack-blackson committed Jul 28, 2023
1 parent 5f67b2d commit bf9a3a3
Show file tree
Hide file tree
Showing 4 changed files with 110 additions and 45 deletions.
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,11 @@ The goal of the adapter is to provide you a possibility to run countdowns for fu
## How to use it

[English description](docs/en/countdown.md)

[Deutsche Anleitung](docs/de/countdown.md)

## Features to add
* Possibility to add a script as a parameter and start it when countdown ends
* Possibility to use plus and minus in addminutes and the other add functions

## Changelog

Expand Down
74 changes: 38 additions & 36 deletions admin/index_m.html
Original file line number Diff line number Diff line change
Expand Up @@ -29,16 +29,6 @@
var originalNames = []
let _onChange;

// TEMP!!!
/*
const myFunction = () => {
console.log('COntent of Data Array: '+ JSON.stringify(countdownData));
};
setInterval(myFunction, 10000); // Repeat myFunction every 2 seconds
*/

// the function loadSettings has to exist ...
function save(callback) {
var obj = {};
$('.value').each(function () {
Expand All @@ -50,8 +40,19 @@
obj[$this.attr('id')] = $this.val();
}
});
updateSetup()
callback(obj);

if (!checkEntries()){
console.log('No errors found')
updateSetup()
callback(obj);

}
else{
//wait till errors are fixed
console.log('Errors found')
}


}

function updateSetup(){
Expand All @@ -65,6 +66,7 @@

})
if (!found){
console.log('Deleting ' + originalNames[i])
sendTo(adapter + '.' + instance, 'send', {
"name": originalNames[i],
})
Expand All @@ -73,47 +75,45 @@
// update setup entries
for (var i = 0; i < countdownData.length; i++) {

if (checkError(countdownData[i].countdownName,countdownData[i].countdownDate,countdownData[i].countdownTime)){

var dateMomentObject = moment(countdownData[i].countdownDate, "YYYY-MM-DD");

var countName = countdownData[i].countdownName
var dateString = moment(dateMomentObject).local().format('DD.MM.YYYY')
dateString += ' ' + countdownData[i].countdownTime + ':00'

if (countdownData[i].countdownRepeatCycle != ''){
dateString += '+' + countdownData[i].countdownRepeatCycle
}
if (countdownData[i].countdownCountUp){
dateString += '#'
}


console.log('Updating: ' + countName)
sendTo(adapter + '.' + instance, 'send', {
"name": countdownData[i].countdownName,
"name": countName,
"date": dateString
})

}


}

console.log('Countdown data updated')

}

function checkError(countname,date,time){
var noerrorFound = true
if (name = ""){
showToast(_('Please fill in a name for the countdown!'));
noerrorFound = false
}
if (!moment(date, 'YYYY-MM-DD',true).isValid()) {
showToast(_('Please fill in a valid date for the countdown '+ countname ));
noerrorFound = false
}
function checkEntries(){
var errorFound = false

for (var i = 0; i < countdownData.length; i++) {

console.log('No error found for ' + countname + ': ' + noerrorFound)
return noerrorFound
if (countdownData[i].countdownName == ""){
showToast(_('Please fill in a name for the countdown!'));
errorFound = true
}
if (!moment(countdownData[i].countdownDate, 'YYYY-MM-DD',true).isValid()) {
showToast(_('Please fill in a valid date for the countdown '+ countdownData[i].countdownName ));
errorFound = true
}
if (countdownData[i].countdownTime == ""){
showToast(_('Please fill in a valid time for the countdown!'));
errorFound = true
}
}
return errorFound
}

function load(settings, onChange) {
Expand Down Expand Up @@ -141,6 +141,8 @@
if (M) M.updateTextFields();

}


function loadSetup() {

socket.emit('getObjectView', 'system', 'state', { startkey: 'countdown.' + instance + '.setup', endkey: 'countdown.' + instance + '.setup' + '.\u9999', include_docs: true }, function (err, _setup) {
Expand Down
65 changes: 65 additions & 0 deletions docs/de/countdown.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,67 @@
# ioBroker.countdown

## Countdowns anzeigen
Der Adapter stellt automatisch eine JSON-Tabelle und eine HTML-Tabelle zur Verfügung. Für JSON wähle das Widget „basic-table“ aus. Wähle für den HTML-Code „basic - string (unescaped)“ aus.

Es ist möglich, entweder den Kurztext oder den Langtext anzuzeigen.
![Logo](admin/countdown_json.png)

## Countdowns hinzufügen
Es gibt verschiedene Möglichkeiten, Countdowns einzurichten:

* In den Adaptereinstellungen im Reiter „Countdown erstellen“ einen Countdown erstellen.
* Im Geräte-Setup einen manuellen Zustand erstellen. Der Name des Objekts ist der Alarmname und der Wert ist das Datum. Das Datum muss im Format „TT.MM.JJJJ HH:mm:ss“ vorliegen.
* Mit sendto einen Alarm erstellen. Dort können entweder die Komponenten (mindestens Jahr, Monat, Datum) oder eine Datumszeichenfolge gesendet werden. Für die Datumszeichenfolge kann man das Format im Setup des Adapters anpassen.
![Logo](admin/countdown_blocky.png)
* Mit sendto Tage, Monate und Jahre zum heutigen Datum hinzufügen. Sende daher bitte die Komponente „name“ und entweder „addminutes“, „addhours“, „adddays“, „addmonths“ oder „addyears“ als int-Wert.
![Logo](admin/countdown_blocky_add.png)

## So passen Sie Countdowns an
Countdowns können entweder in den Adaptereinstellungen oder mit sendto aktualisiert werden. Verwende einfach den gleichen Namen und sende ihn mit dem neuen Datum. Dadurch wird der Countdown aktualisiert.

## So löschen Sie Countdowns
Ein Countdown kann über die Adaptereinstellungen oder mit sendto gelöscht werden. Sende mit sendto nur den Namen an den Adapter und der Countdown wird automatisch gelöscht.

## Wiederholter Countdown
Wenn sich ein Countdown in einem definierten Zeitraum wieder holen soll (z. B.für Hochzeitstage), kann dies mit dem Countdownadapter gemacht werden. Fülle dazu entweder das Feld „Wiederholungszeitraum“ in den Einstellungen des Adapters aus, oder füge den Zeitraum nach dem Datum hinzu, wenn eine Countdown mit dem Typ „Datum“ erstellen. Ein sendTo würde für einen Countdown, der am 1. April 2020 enden und sich jedes Jahr wiederholen sollte, so aussehen:

sendTo("countdown.0", "send", {
„name“: „Hochzeitstag“,
"Datum": '01.04.2020 00:01+1J'
});

Parameter sind hier:
* Y: Jahre
* M: Monate
* D: Tage
* H: Stunden
* m: Minuten

## Zusammenzählen
Neu hinzugekommen ist die Funktion zum „Hochzählen“, also zum Zählen der Tage ab einem Datum in der Vergangenheit. Dies kann entweder im Adapter-Setup oder durch hinzufügen eines „#“ zu einer Datumszeichenfolge erfolgen, z. B.

sendTo("countdown.0", "send", {
"name": 'Geburtsdatum',
„Datum“: '01.04.2020 00:01#
});

## Verfügbare Objekte
|Datentyp|Beschreibung|
|:---:|:---:|
|Minuten|Minuten bis zum Ende des Countdowns (nicht die Summe!)|
|Stunden|Stunden bis zum Ende des Countdowns (nicht die Summe!)|
|Tage|Tage bis zum Ende des Countdowns (nicht die Summe!)|
|Monate|Monate bis zum Ende des Countdowns (nicht die Summe!)|
|Jahre|Jahre bis zum Ende des Countdowns (nicht die Summe!)|
|name|Countdown-Name|
|endDate|Enddatum des Countdowns – formatiert wie im Setup definiert|
|inWordsShort|Kombinierter Wert aus Minuten, Stunden,... – z.B. 1J 5M 4T|
|inWordsLong|Kombinierter Wert aus Minuten, Stunden,... – z.B. 1 Jahr 5 Monate 4 Tage|
|totalHours|Gesamtzahl. Stunden bis zum Enddatum|
|totalDays|Gesamtzahl. Anzahl Tage bis zum Enddatum|
|totalWeeks|Gesamtanzahl Anzahl Wochen bis zum Enddatum|
|totalMonths|Gesamtanzahl Monate bis zum Enddatum|
|totalYears|Gesamtanzahl Anzahl Jahre bis zum Enddatum|

|reached|Boolean Feld, das definiert, ob das Enddatum erreicht wurde oder nicht|
|repeatEvery|Countdown wird nach Erreichen des Enddatums um diesen Zeitraum wiederholt|
12 changes: 4 additions & 8 deletions docs/en/countdown.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ The adapter provides you automatically a json table and as a HTML table. For the
It is possible to either display the short text or the long text.
![Logo](admin/countdown_json.png)

## How to create countdowns
## How to add countdowns
There are several ways to set up countdowns:

* You can create a countdown in the adapter settings, in the tab "Create Countdown".
Expand All @@ -16,6 +16,9 @@ There are several ways to set up countdowns:
* You can add days, months and years with sendto to todays date. Therefore, please send the component "name" and either "addminutes", "addhours", "adddays", "addmonths" or "addyears" as int value.
![Logo](admin/countdown_blocky_add.png)

## How to adjust countdowns
You can update a countdown either in the adapter settings, or with the sendto. Therefore, just use the same name, and send it with the new date. This will update the countdown.

## How to delete countdowns
You can delete a countdown with the sendto. Therefore, send just the name with sendto to the adapter, and the countdown will be deleted automatically.

Expand All @@ -42,9 +45,7 @@ sendTo("countdown.0", "send", {
"date": '01.04.2020 00:01#
});


## Available outputs

|Data type|Description|
|:---:|:---:|
|minutes|Minutes until countdown end (not total!)|
Expand All @@ -64,8 +65,3 @@ sendTo("countdown.0", "send", {

|reached|Boolean field defining if the end date was reached or not|
|repeatEvery|Countdown is repeted by this period after reaching the enddate|


## Features to add
* Possibility to add a script as a parameter and start it when countdown ends
* Possibility to use plus and minus in addminutes and the other add functions

0 comments on commit bf9a3a3

Please sign in to comment.