Action

Test: Shopping List (merge)

Posted by felix@42sol.eu, Last update over 3 years ago - Unlisted

Steps

  • script

    // shopping list: finding and merging shopping lists
    //TODO: remove watch tag
    // ignore processed notes 
    
    const constraints = 
    {
      tag_master : "shopping_master",
      title_master : "# Shopping",
      prefix : "", // "- [ ]"
      tag_watch : "watch",
      merged_tag : "shopping_merged",
      dismissed_tag : "shopping_dismissed",
      
      remove_watch_tag : true,
      max_lines : 5,
      max_line_lenght : 42,
      look_in : "inbox" // archive, flagged, trash, all
    } 
    
    function get_items( p_constraints )
    { 
      var match_list = "";
      var data_list = Draft.query( "", p_constraints.look_in, [p_constraints.tag_watch], [p_constraints.merged_tag, p_constraints.dismissed_tag]);
      
      for( var index in data_list )
      {
          var draft_candidate = data_list[index];
          var content_lines = draft_candidate.lines
          var max_line_length = 0;
          for( var line_index in content_lines)
          {
             var active_length = content_lines[line_index].length;
             if(  max_line_length < active_length )
             {
                  max_line_length = active_length;
             }
          }
          
          
          if( content_lines.length < p_constraints.max_lines 
              && max_line_length < p_constraints.max_line_lenght)
          {
            draft_candidate.addTag(p_constraints.merged_tag);
            draft_candidate.removeTag(p_constraints.watch_tag);
            
          	for( var line_index in content_lines)
          	{
          	  var active_item = content_lines[line_index];
          	  if( active_item.length > 0 )
          	  {
               	match_list += p_constraints.prefix+ content_lines[line_index] + "\n";
               }
      		   }
      		 }
      		 else
      		 { 
      draft_candidate.addTag(p_constraints.dismissed_tag);
      		   
      	draft_candidate.removeTag(p_constraints.watch_tag);
           }
           draft_candidate.update();
      	}
      return match_list;
    }
    
    var items = get_items( constraints );
    alert(items);
    
    // put this into the shopping list draft
    
    var shopping_list = Draft.query( "", "all", [constraints.tag_master])[0];
    
    if(shopping_list == null) 
    { 
      shopping_list = new Draft();
      shopping_list.addTag(constraints.tag_master);
      shopping_list.content = constraints.title_master;
    }
    
    shopping_list.append(items);
    shopping_list.update();

Options

  • After Success Trash
    Notification Info
    Log Level Info
Items available in the Drafts Directory are uploaded by community members. Use appropriate caution reviewing downloaded items before use.