mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-04-21 14:04:15 +00:00
98_todoist: removed Attribute "sortTasks" / better commandref
git-svn-id: https://svn.fhem.de/fhem/trunk@20969 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
f0904ecdc9
commit
3dce8d1c7c
@ -1,5 +1,6 @@
|
|||||||
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
|
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
|
||||||
# Do not insert empty lines here, update check depends on it.
|
# Do not insert empty lines here, update check depends on it.
|
||||||
|
- change: 98_todoist: removed Attribute "sortTasks" / better commandref
|
||||||
- change: 93_DbLog: change datetime pattern in valueFn of addCacheLine
|
- change: 93_DbLog: change datetime pattern in valueFn of addCacheLine
|
||||||
Forum: #107285
|
Forum: #107285
|
||||||
- change: 98_todoist: reorder tasks - widget reorder
|
- change: 98_todoist: reorder tasks - widget reorder
|
||||||
|
@ -17,7 +17,7 @@ eval "use Date::Parse;1" or $missingModule .= "Date::Parse ";
|
|||||||
|
|
||||||
#######################
|
#######################
|
||||||
# Global variables
|
# Global variables
|
||||||
my $version = "1.3.0";
|
my $version = "1.3.1";
|
||||||
|
|
||||||
my $srandUsed;
|
my $srandUsed;
|
||||||
|
|
||||||
@ -76,7 +76,6 @@ sub todoist_Initialize($) {
|
|||||||
$hash->{AttrList} = "disable:1,0 ".
|
$hash->{AttrList} = "disable:1,0 ".
|
||||||
"pollInterval ".
|
"pollInterval ".
|
||||||
"do_not_notify ".
|
"do_not_notify ".
|
||||||
"sortTasks:1,0 ".
|
|
||||||
"getCompleted:1,0 ".
|
"getCompleted:1,0 ".
|
||||||
"showPriority:1,0 ".
|
"showPriority:1,0 ".
|
||||||
"showAssignedBy:1,0 ".
|
"showAssignedBy:1,0 ".
|
||||||
@ -937,7 +936,7 @@ sub todoist_GetTasksCallback($$$){
|
|||||||
else {
|
else {
|
||||||
my $decoded_json="";
|
my $decoded_json="";
|
||||||
|
|
||||||
# checl for correct JSON
|
# check for correct JSON
|
||||||
if (eval{decode_json($data)}) {
|
if (eval{decode_json($data)}) {
|
||||||
|
|
||||||
$decoded_json = decode_json($data);
|
$decoded_json = decode_json($data);
|
||||||
@ -1135,10 +1134,6 @@ sub todoist_GetTasksCallback($$$){
|
|||||||
|
|
||||||
readingsEndUpdate( $hash, 1 );
|
readingsEndUpdate( $hash, 1 );
|
||||||
|
|
||||||
## sort Tasks alphabetically if set
|
|
||||||
todoist_sort($hash) if (AttrVal($name,"sortTasks",0) == 1);
|
|
||||||
|
|
||||||
|
|
||||||
RemoveInternalTimer($hash,"todoist_GetTasks");
|
RemoveInternalTimer($hash,"todoist_GetTasks");
|
||||||
InternalTimer(gettimeofday()+$hash->{INTERVAL}, "todoist_GetTasks", $hash, 0); ## loop with Interval
|
InternalTimer(gettimeofday()+$hash->{INTERVAL}, "todoist_GetTasks", $hash, 0); ## loop with Interval
|
||||||
|
|
||||||
@ -1466,73 +1461,6 @@ sub todoist_GetProjectsCallback($$$){
|
|||||||
return "Got $i new projects: ".$return;
|
return "Got $i new projects: ".$return;
|
||||||
}
|
}
|
||||||
|
|
||||||
# sort alphabetically (probably deprecated)
|
|
||||||
sub todoist_sort($) {
|
|
||||||
my ($hash) = @_;
|
|
||||||
|
|
||||||
my $name=$hash->{NAME};
|
|
||||||
|
|
||||||
my $lText="";
|
|
||||||
|
|
||||||
my %list;
|
|
||||||
|
|
||||||
|
|
||||||
## get all Readings
|
|
||||||
my $readings = $hash->{READINGS};
|
|
||||||
## prepare Hash for sorting
|
|
||||||
foreach my $key (keys %{$readings}) {
|
|
||||||
if ($key =~ m/^Task_\d\d\d$/) {
|
|
||||||
my @temp = split("_",$key);
|
|
||||||
my $tid = int($temp[1]);
|
|
||||||
my $val = $readings->{$key}{VAL};
|
|
||||||
my $id = $hash->{helper}{IDS}{'Task_'.$tid};
|
|
||||||
$list{$tid} = {content => $val, ID => $id};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
CommandDeleteReading(undef, "$hash->{NAME} (T|t)ask_.*");
|
|
||||||
|
|
||||||
readingsBeginUpdate($hash);
|
|
||||||
|
|
||||||
delete($hash->{helper}{"IDS"});
|
|
||||||
|
|
||||||
## sort Tasks and write them back
|
|
||||||
my $i = 0;
|
|
||||||
foreach my $key (sort {lc($list{$a}->{content}) cmp lc($list{$b}->{content})} keys(%list)) {
|
|
||||||
my $data = $list{$key};
|
|
||||||
readingsBulkUpdate($hash,"Task_".sprintf("%03s",$i),$data->{content});
|
|
||||||
readingsBulkUpdate($hash,"Task_".sprintf("%03s",$i)."_dueDate",$hash->{helper}{"DUE_DATE"}{$data->{ID}}) if ($hash->{helper}{"DUE_DATE"}{$data->{ID}});
|
|
||||||
readingsBulkUpdate($hash,"Task_".sprintf("%03s",$i)."_responsibleUid",$hash->{helper}{"RESPONSIBLE_UID"}{$data->{ID}}) if ($hash->{helper}{"RESPONSIBLE_UID"}{$data->{ID}} && AttrVal($name,"showResponsible",0)==1);
|
|
||||||
readingsBulkUpdate($hash,"Task_".sprintf("%03s",$i)."_assignedByUid",$hash->{helper}{"ASSIGNEDBY_UID"}{$data->{ID}}) if ($hash->{helper}{"ASSIGNEDBY_UID"}{$data->{ID}} && AttrVal($name,"showAssignedBy",0)==1);
|
|
||||||
readingsBulkUpdate($hash,"Task_".sprintf("%03s",$i)."_priority",$hash->{helper}{"PRIORITY"}{$data->{ID}}) if ($hash->{helper}{"PRIORITY"}{$data->{ID}} && AttrVal($name,"showPriority",0)==1);
|
|
||||||
readingsBulkUpdate($hash,"Task_".sprintf("%03s",$i)."_recurrenceType",$hash->{helper}{"RECURRENCE_TYPE"}{$data->{ID}}) if ($hash->{helper}{"RECURRENCE_TYPE"}{$data->{ID}});
|
|
||||||
readingsBulkUpdate($hash,"Task_".sprintf("%03s",$i)."_completedAt",$hash->{helper}{"COMPLETED_AT"}{$data->{ID}}) if ($hash->{helper}{"COMPLETED_AT"}{$data->{ID}});
|
|
||||||
readingsBulkUpdate($hash,"Task_".sprintf("%03s",$i)."_completedById",$hash->{helper}{"COMPLETED_BY_ID"}{$data->{ID}}) if ($hash->{helper}{"COMPLETED_BY_ID"}{$data->{ID}});
|
|
||||||
readingsBulkUpdate($hash,"Task_".sprintf("%03s",$i)."_order",$hash->{helper}{"ORDER"}{$data->{ID}}) if ($hash->{helper}{"ORDER"}{$data->{ID}} && AttrVal($name,"showOrder",0)==1);
|
|
||||||
readingsBulkUpdate($hash,"Task_".sprintf("%03s",$i)."_parentID",$hash->{helper}{"PARENT_ID"}{$data->{ID}}) if ($hash->{helper}{"PARENT_ID"}{$data->{ID}});
|
|
||||||
readingsBulkUpdate($hash,"Task_".sprintf("%03s",$i)."_sectionID",$hash->{helper}{"SECTION_ID"}{$data->{ID}}) if ($hash->{helper}{"SECTION_ID"}{$data->{ID}});
|
|
||||||
readingsBulkUpdate($hash,"Task_".sprintf("%03s",$i)."_checked",$hash->{helper}{"CHECKED"}{$data->{ID}}) if ($hash->{helper}{"CHECKED"}{$data->{ID}} && AttrVal($name,"showChecked",1)==1);
|
|
||||||
readingsBulkUpdate($hash,"Task_".sprintf("%03s",$i)."_isDeleted",$hash->{helper}{"ISDELETED"}{$data->{ID}}) if ($hash->{helper}{"ISDELETED"}{$data->{ID}} && AttrVal($name,"showDeleted",1)==1);
|
|
||||||
readingsBulkUpdate($hash,"Task_".sprintf("%03s",$i)."_ID",$data->{ID}) if (AttrVal($name,"hideId",0)!=1);
|
|
||||||
|
|
||||||
$hash->{helper}{"IDS"}{"Task_".$i} = $data->{ID};
|
|
||||||
$hash->{helper}{"WID"}{$data->{ID}} = $i;
|
|
||||||
|
|
||||||
if (!$hash->{helper}{"COMPLETED_AT"}{$data->{ID}}) {
|
|
||||||
$lText.=", " if ($i != 0);
|
|
||||||
$lText.=$data->{content};
|
|
||||||
}
|
|
||||||
$i++;
|
|
||||||
}
|
|
||||||
|
|
||||||
## list Text for TTS, Text-Message...
|
|
||||||
$lText="-" if ($lText eq "");
|
|
||||||
readingsBulkUpdate($hash,"listText",$lText) if ($lText ne "");
|
|
||||||
|
|
||||||
readingsEndUpdate( $hash, 1 );
|
|
||||||
return undef;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#################################################
|
#################################################
|
||||||
# delete all Tasks from list
|
# delete all Tasks from list
|
||||||
@ -1751,7 +1679,7 @@ sub todoist_Attr($@) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( $attrName eq "sortTasks" || $attrName =~ /(show(Priority|AssignedBy|Responsible|Order|DetailWidget|Section|Parent)|getCompleted|hide(Id|ListIfEmpty)|autoGetUsers|avoidDuplicates|delDeletedLists)/) {
|
if ( $attrName =~ /(show(Priority|AssignedBy|Responsible|Order|DetailWidget|Section|Parent)|getCompleted|hide(Id|ListIfEmpty)|autoGetUsers|avoidDuplicates|delDeletedLists)/) {
|
||||||
if ( $cmd eq "set" ) {
|
if ( $cmd eq "set" ) {
|
||||||
return "$name: $attrName has to be 0 or 1" if ($attrVal !~ /^(0|1)$/);
|
return "$name: $attrName has to be 0 or 1" if ($attrVal !~ /^(0|1)$/);
|
||||||
Log3 $name, 4, "todoist ($name): set attribut $attrName to $attrVal";
|
Log3 $name, 4, "todoist ($name): set attribut $attrName to $attrVal";
|
||||||
@ -2406,7 +2334,7 @@ sub todoist_genUUID() {
|
|||||||
<code>set <DEVICE> updateTask 1 dueDate=übermorgen</code><br />
|
<code>set <DEVICE> updateTask 1 dueDate=übermorgen</code><br />
|
||||||
<code>set <DEVICE> updateTask TITLE:Brot dueDate=übermorgen</code><br /><br /></li>
|
<code>set <DEVICE> updateTask TITLE:Brot dueDate=übermorgen</code><br /><br /></li>
|
||||||
<li><b>moveTask</b> - move a task to another parent or project.
|
<li><b>moveTask</b> - move a task to another parent or project.
|
||||||
Needs Task-ID or todoist-Task-ID as parameter<br /><br />
|
Expects Task-ID or todoist-Task-ID as parameter<br /><br />
|
||||||
Possible additional parameters are:<br />
|
Possible additional parameters are:<br />
|
||||||
<ul>
|
<ul>
|
||||||
<li>parentID=todoist-ID of the new parent task.</li>
|
<li>parentID=todoist-ID of the new parent task.</li>
|
||||||
@ -2432,7 +2360,11 @@ sub todoist_genUUID() {
|
|||||||
<li><b>sortTasks</b> - sort Tasks alphabetically<br /><br /></li>
|
<li><b>sortTasks</b> - sort Tasks alphabetically<br /><br /></li>
|
||||||
<li><b>clearList</b> - <b><u>deletes</u></b> all Tasks from the list (only FHEM listed Tasks can be deleted)<br /><br /></li>
|
<li><b>clearList</b> - <b><u>deletes</u></b> all Tasks from the list (only FHEM listed Tasks can be deleted)<br /><br /></li>
|
||||||
<li><b>cChildProjects</b> - searches for children and defines them if possible, deletes lists that are deleted
|
<li><b>cChildProjects</b> - searches for children and defines them if possible, deletes lists that are deleted
|
||||||
in todoist (Attribut delDeletedLists)<br /></li>
|
in todoist (Attribut delDeletedLists)<br /><br /></li>
|
||||||
|
<li><b>reorderTasks</b> - expects a comma seperated list of todoist-IDs. Tasks will be reorders in the given order<br />
|
||||||
|
Example: <br /><br />
|
||||||
|
<code>set <DEVICE> reorderTasks 12345678,23456789,34567890</code><br /><br />
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<br />
|
<br />
|
||||||
<a name="todoist_Attributes"></a>
|
<a name="todoist_Attributes"></a>
|
||||||
@ -2443,12 +2375,6 @@ sub todoist_genUUID() {
|
|||||||
<li><a name="#disable">disable</a></li>
|
<li><a name="#disable">disable</a></li>
|
||||||
<li>pollInterval
|
<li>pollInterval
|
||||||
get the list every pollInterval seconds. Default is 1800. Smallest possible value is 20.<br /><br /></li>
|
get the list every pollInterval seconds. Default is 1800. Smallest possible value is 20.<br /><br /></li>
|
||||||
<li>sortTasks
|
|
||||||
<ul>
|
|
||||||
<li>0: don't sort the tasks (default)</li>
|
|
||||||
<li>1: sorts Tasks alphabetically after every update</li>
|
|
||||||
<!--<li>2: sorts Tasks in todoist order</li>-->
|
|
||||||
</ul></li>
|
|
||||||
<br />
|
<br />
|
||||||
<li>hideId
|
<li>hideId
|
||||||
<ul>
|
<ul>
|
||||||
@ -2623,7 +2549,7 @@ sub todoist_genUUID() {
|
|||||||
<li>Update a task by clicking it's text. You can edit the task in an input field. Leaving the field or pressing enter triggers updateTask.</li>
|
<li>Update a task by clicking it's text. You can edit the task in an input field. Leaving the field or pressing enter triggers updateTask.</li>
|
||||||
<li>You can use parameters like "dueDate" in the input fields like this:
|
<li>You can use parameters like "dueDate" in the input fields like this:
|
||||||
<ul>
|
<ul>
|
||||||
<code>Milch -dueDate=morgen</code>
|
<code>Milch dueDate=morgen</code>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li>Clicking the cross behind every task deletes this one for good.</li>
|
<li>Clicking the cross behind every task deletes this one for good.</li>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user