Hey whatever, thanks for your reply. Here's the script as created by Tobias


<script>
(function($){

var
        /*the tag for receipt tiddlers*/
        tag = "receipt",
        /*the names of the data fields to use*/
        data = {
                "revenues":"revenues",
                "expenses":"expenses",
                "year":"year",
                "month":"month"
        },
        /*the month values being used*/
        months = 
["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],
        /*the table header*/
        header = "|Month|Expenses|Revenues|Balance|Expense Total|Revenue 
Total|Balance Total|h\n",

        /*when transcluded, use <<tiddler YearlyIncome with: 2015>>*/
        get = "$1" == "$"+"1" ? null : parseInt("$1"),
        y,years=[];

window.YearlyIncomeReport = function(){
        var
                m, out,
                $sel = $(this),
                $table = $sel.next(),
                year = get ? get : $sel.val(),
                totals = {
                        expenses:[0,0,0,0,0,0,0,0,0,0,0,0],
                        revenues:[0,0,0,0,0,0,0,0,0,0,0,0]
                },
                sum = function(arr,num){
                        var m, result = 0;
                        for(m=0; m<=num; m++){
                                result += arr[m];
                        }
                        return result;
                };

        if(get){
                $table = $("<div>");
                $(place).append($table);
        }

        store.forEachTiddler( function(title, tiddler) {
                if(tiddler.tags.contains(tag)){
                        var
                                y = tiddler.data(data.year),
                                m = tiddler.data(data.month);

                        m = m ? months.indexOf(m) : 0;

                        if(0 <= m && y && y == year){
                                totals.expenses[m] += 
tiddler.data(data.expenses) || 0;
                                totals.revenues[m] += 
tiddler.data(data.revenues) || 0;
                        }
                }
        });

        out = header;
        for(m = 0; m< months.length; m++){
                var
                        e = totals.expenses[m],
                        r = totals.revenues[m],
                        te = sum(totals.expenses,m),
                        tr = sum(totals.revenues,m);
                out +=
                        "|" + months[m] +
                        "|" + e + 
                        "|" + r + 
                        "|" + (r - e) + 
                        "|" + te + 
                        "|" + tr + 
                        "|" + (tr - te) + 
                        "|\n";
        };

        $table.empty();
        wikify(out,$table[0]);
}

if(get){
        window.YearlyIncomeReport();
} else {
        $sel = $("<select/>").change(window.YearlyIncomeReport);
        $(place).append($sel);

        store.forEachTiddler( function(title, tiddler) {
                if(tiddler.tags.contains(tag)){
                        y = tiddler.data(data.year);
                        if(y){
                                years.pushUnique(y);
                        }
                }
        });
        years.sort();

        for(y=0;y<years.length;y++){
                
$sel.prepend($('<option></option>').val(years[y]).html(years[y]));
        }

        $(place).append("<div/>");
        $sel.trigger("change");
}
})(jQuery);
</script>

and here it is slightly tweaked by me, as I actually use it

  <script>
(function($){

var
        /*the tag for receipt tiddlers*/
        
tag1 = "expense",



tag2 = "income",

        /*the names of the data fields to use*/
        data = {
                "revenues":"incomeAmount",
                "expenses":"expenseAmount",
                "year":"eY",
                "month":"eM"
        },
        /*the month values being used*/
        months = ["01","02","03","04","05","06","07","08","09","10","11","12"],
        /*the table header*/
        header = "|borderless|k\n|!Month|!Expenses|!Revenues|!Balance|!Expense 
Total|!Revenue Total|!Balance Total|h\n",

        /*when transcluded, use <<tiddler YearlyIncome with: 2015>>*/
        get = "$1" == "$"+"1" ? null : parseInt("$1"),
        y,years=[];

window.YearlyIncomeReport = function(){
        var
                m, out,
                $sel = $(this),
                $table = $sel.next(),
                year = get ? get : $sel.val(),
                totals = {
                        expenses:[0,0,0,0,0,0,0,0,0,0,0,0],
                        revenues:[0,0,0,0,0,0,0,0,0,0,0,0]
                },
                sum = function(arr,num){
                        var m, result = 0;
                        for(m=0; m<=num; m++){
                                result += arr[m];
                        }
                        return result;
                };

        if(get){
                $table = $("<div>");
                $(place).append($table);
        }

        store.forEachTiddler( function(title, tiddler) {
   if (tiddler.tags.containsAny([tag1,tag2])) {

                        var
                                y = tiddler.data(data.year),
                                m = tiddler.data(data.month);

                        m = m ? months.indexOf(m) : 0;

                        if(0 <= m && y && y == year){
                                totals.expenses[m] += 
tiddler.data(data.expenses)*1 || 0;
                                totals.revenues[m] += 
tiddler.data(data.revenues)*1 || 0;
                        }
                }
        });

        out = header;
        for(m = 0; m< months.length; m++){
                var
                        e = totals.expenses[m],
                        r = totals.revenues[m],
                        te = sum(totals.expenses,m),
                        tr = sum(totals.revenues,m);
                out +=
                        "|" + months[m] +
                        "|" + e + 
                        "|" + r + 
                        "|" + (r - e) + 
                        "|" + te + 
                        "|" + tr + 
                        "|" + (tr - te) + 
                        "|\n";
        };

        $table.empty();
        wikify(out,$table[0]);
}

if(get){
        window.YearlyIncomeReport();
} else {
        $sel = $("<select/>").change(window.YearlyIncomeReport);
        $(place).append($sel);

        store.forEachTiddler( function(title, tiddler) {
                

   if (tiddler.tags.containsAny([tag1,tag2])){
                        y = tiddler.data(data.year);
                        if(y){
                                years.pushUnique(y);
                        }
                }
        });
        years.sort();

        for(y=0;y<years.length;y++){
                
$sel.prepend($('<option></option>').val(years[y]).html(years[y]));
        }

        $(place).append("<div/>");
        $sel.trigger("change");
}
})(jQuery);
</script>

I'm on my phone right now but please let me know if more info or even an MTC is 
required.

Thanks again,
sklpns

-- 
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 [email protected].
To post to this group, send email to [email protected].
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/4819891d-d669-4e24-8285-cdeb077812a7%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to