def METHOD_NAME(self, 
        group_by='mod,file,rank', 
        action='attach,overwrite', summary_name='timeline'
        ):
    """
    Generate/update a timeline from records of the current report state.
    Args:
        group_by (str): By which factor to group entries (default: rank)
                        Allowed Parameters: rank, filename
    """
    report = self
    groups = {}
    items = {}
    group_config = configure_groups()
    #start_time = datetime.datetime.fromtimestamp( self.data['metadata']['job']['start_time'] )
    for mod in report.modules:
        nmod = normalize_mod(mod)
        group_id = nmod
        groups[group_id] = {
            'id': group_id, 
            'content': f'{group_id}',
            'order': group_config[nmod]['order'],
            'nestedGroups': [], # to be filled later
            'showNested': False
        }
    for mod in report.modules:
        if mod in ['DXT_POSIX', 'DXT_MPIIO']:
            continue
        nmod = normalize_mod(mod)
        parent_group = nmod
        for rec in report.records[mod]:
            rec_id = rec['id']
            group_id = f'{nmod}:{rec_id}' 
            # add group
            if group_id not in groups:           
                groups[group_id] = {
                    'id': group_id, 
                    'content':
                        '<b>' +
                        compress_pathname(report.name_records[rec['id']]) +
                        '</b><br>' + 
                        f'{group_id}' + 
                        '',
                    'order': float('inf'),
                    'title': report.name_records[rec['id']],
                    'nestedGroups': [], # to be filled later
                    'showNested': False
                }
                groups[parent_group]['nestedGroups'].append(group_id)
            # add items
            #detailed_items(groups, items, mod, nmod, rec, rec_id, group_id, parent_group)
            summarized_items(self, groups, items, mod, nmod, rec, rec_id, group_id, parent_group)
    purge_empty_nestedGroups(groups)
    # flatten dictionaries to list
    timeline = {
        'groups': [v for k,v in groups.items()],
        'items': [v for k,v in items.items()]
    }
    # overwrite existing summary entry
    if action == "attach,overwrite":
        self.summary[summary_name] = timeline
    return timeline