Hey guys,

I was thinking about a hours filter which is working same like the days 
filter to show tiddlers I created or modified the last x hours.
It was quite simple to change some parts of the days core filter. So I want 
to share my result:


$:/core/modules/filters/hours.js

/*\
title: $:/core/modules/filters/hours.js
type: application/javascript
module-type: filteroperator

Filter operator that selects tiddlers with a specified date field within a 
specified hour interval.

\*/
(function(){

/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";

/*
Export our filter function
*/
exports.hours = function(source,operator,options) {
        var results = [],
                fieldName = operator.suffix || "modified",
                hourInterval = (parseInt(operator.operand,10)||0),
                hourIntervalSign = $tw.utils.sign(hourInterval),
                targetTimeStamp = (new Date()).setMinutes(0,0,0) + 
1000*60*60*hourInterval,
                isWithinHours = function(dateField) {
                        var sign = $tw.utils.sign(targetTimeStamp - (new 
Date(dateField)).setMinutes(0,0,0));
                        return sign === 0 || sign === hourIntervalSign;
                };

        if(operator.prefix === "!") {
                targetTimeStamp = targetTimeStamp - 1000*60*60*hourIntervalSign;
                source(function(tiddler,title) {
                        if(tiddler && tiddler.fields[fieldName]) {
                                
if(!isWithinDays($tw.utils.parseDate(tiddler.fields[fieldName]))) {
                                        results.push(title);
                                }
                        }
                });
        } else {
                source(function(tiddler,title) {
                        if(tiddler && tiddler.fields[fieldName]) {
                                
if(isWithinHours($tw.utils.parseDate(tiddler.fields[fieldName]))) {
                                        results.push(title);
                                }
                        }
                });
        }
        return results;
};

})();

type: application/javascript
module-type: filteroperator


Usage:
e.g. [hours[-2]]

Is there a need for this filter? Are there any suggestions?

Regards,
The Bo

-- 
You received this message because you are subscribed to the Google Groups 
"TiddlyWiki" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to tiddlywiki+unsubscr...@googlegroups.com.
To post to this group, send email to tiddlywiki@googlegroups.com.
Visit this group at https://groups.google.com/group/tiddlywiki.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/tiddlywiki/67cb3389-ce6e-47c0-9176-7ad5f8e2d172%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to