Created
September 15, 2012 11:50
-
-
Save alappe/3727474 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#input = [ | |
# {"_id":"e6611f8beb21495ad2e37d4e640086af","_rev":"1-4acaf9700aaf607f6a9a3103d8576211","type":"log","edited_at":[],"created_at":"2012-09-03T13:49:46.751Z","time":"0.50","ticket":"#6878","date":"2012-09-02T22:00:00.000Z","customer":"mrn","tags":[]}, | |
# {"_id":"fedfd6aabd2904db1c25ef4fba002284","_rev":"1-5c263397b46d08f6cf8ad26c8acbca3c","type":"log","edited_at":[],"created_at":"2012-09-05T14:37:44.997Z","time":"0.50","ticket":"#6880","date":"2012-09-04T22:00:00.000Z","customer":"mrn","tags":[]}, | |
# {"_id":"fedfd6aabd2904db1c25ef4fba005eb2","_rev":"1-87a8df1e31254b2821f98a28d8a8fb81","type":"log","edited_at":[],"created_at":"2012-09-10T06:50:21.703Z","time":"0.50","ticket":"#6959","date":"2012-09-09T22:00:00.000Z","customer":"mrn","tags":[]}, | |
# {"_id":"fedfd6aabd2904db1c25ef4fba006818","_rev":"1-ea525c4eb9927ab2f849b751f219bdb9","type":"log","edited_at":[],"created_at":"2012-09-10T07:12:51.828Z","time":"0.25","ticket":"","date":"2012-09-09T22:00:00.000Z","customer":"mrn","tags":[]}, | |
# {"_id":"fedfd6aabd2904db1c25ef4fba006fbf","_rev":"1-cef3a09bd601af32669650a11c075c38","type":"log","edited_at":[],"created_at":"2012-09-10T08:59:17.648Z","time":"0.75","ticket":"#6951","date":"2012-09-09T22:00:00.000Z","customer":"mrn","tags":[]}, | |
# {"_id":"fedfd6aabd2904db1c25ef4fba0072df","_rev":"1-6df2f1ccf9b6c91fa97341092b06f027","type":"log","edited_at":[],"created_at":"2012-09-10T09:14:14.566Z","time":"0.25","ticket":"#6906","date":"2012-09-09T22:00:00.000Z","customer":"mrn","tags":[]}, | |
# {"_id":"fedfd6aabd2904db1c25ef4fba0084aa","_rev":"1-d47ea56986b047d62114dee37aa270c4","type":"log","edited_at":[],"created_at":"2012-09-10T15:06:42.929Z","time":"0.25","ticket":"#6906","date":"2012-09-09T22:00:00.000Z","customer":"mrn","tags":[]}, | |
# {"_id":"fedfd6aabd2904db1c25ef4fba01817a","_rev":"1-0a8e30c7b34308b5117b8a23979e1b50","type":"log","edited_at":[],"created_at":"2012-09-14T07:42:25.461Z","time":"0.25","ticket":"#7081","date":"2012-09-13T22:00:00.000Z","customer":"mrn","tags":[]}, | |
# {"_id":"fedfd6aabd2904db1c25ef4fba018acc","_rev":"3-95ef2d77cd5a3182ccebeb5fa18801bf","type":"log","edited_at":[],"created_at":"2012-09-13T07:43:12.046Z","time":"0.75","ticket":"#7066","date":"2012-09-12T22:00:00.000Z","customer":"mrn","tags":[]}, | |
# {"_id":"fedfd6aabd2904db1c25ef4fba01998d","_rev":"3-151f2e231fa7bffa304f785a172cd44e","type":"log","edited_at":[],"created_at":"2012-09-13T07:44:31.897Z","time":"10.00","ticket":"#7031","date":"2012-09-12T22:00:00.000Z","customer":"mrn","tags":[]}, | |
# {"_id":"fedfd6aabd2904db1c25ef4fba01af38","_rev":"1-9807ba81bcdcd2e80d102fe1f567d986","type":"log","edited_at":[],"created_at":"2012-09-14T10:18:41.650Z","time":"2.00","ticket":"#7047","date":"2012-09-13T22:00:00.000Z","customer":"mrn","tags":[]}, | |
# {"_id":"fedfd6aabd2904db1c25ef4fba01ca34","_rev":"1-bdbc1db1fb2ecff5f1a1462514bdb221","type":"log","edited_at":[],"created_at":"2012-09-14T15:23:18.292Z","time":"2.00","ticket":"#7037","date":"2012-09-13T22:00:00.000Z","customer":"mrn","tags":[]}, | |
#] | |
#getRow = -> input.pop() | |
#send = (text) -> console.log text | |
# | |
# Format to get | |
# 10. Juli 2012 & \task{6033} & & 3,00 \\ | |
# Actual list function code: | |
(head, req) -> | |
# Set a Content-Type: | |
start | |
headers: | |
"Content-Type": "application/x-tex" | |
months = | |
1: 'Januar' | |
2: 'Februar' | |
3: 'März' | |
4: 'April' | |
5: 'Mai' | |
6: 'Juni' | |
7: 'Juli' | |
8: 'August' | |
9: 'September' | |
10: 'Oktober' | |
11: 'November' | |
12: 'Dezember' | |
invoiceItems = {} | |
# Fetch all records into one big array | |
rows = while row = getRow() | |
row | |
sum = 0.0 | |
# Cluster by date | |
for entry in rows | |
date = new Date entry.date | |
day = if date.getDate() < 10 then "0#{date.getDate()}" else date.getDate() | |
year = date.getFullYear() | |
month = months[date.getMonth() + 1] | |
dateString = "#{day}. #{month} #{year}" | |
# Make sure the entry exists | |
invoiceItems[dateString] = [] unless invoiceItems[dateString]? | |
formattedTime = (String entry.time).replace '.', ',' | |
formattedTicket = entry.ticket.replace '#', '' | |
formattedTags = (entry.tags.join ' ').replace '\\', '' | |
invoiceItems[dateString].push | |
task: formattedTicket | |
time: formattedTime | |
tags: formattedTags | |
sum += parseFloat entry.time, 2 | |
# Print by date: | |
for day, items of invoiceItems | |
for logItem in items | |
day = '\t' unless items[0] is logItem | |
send "#{day} & \\task{#{logItem.task}} & #{logItem.tags} & #{logItem.time}\\\\" | |
send "\\midrule" | |
sum = String(sum) | |
formattedSum = if sum.indexOf '.' is -1 then "#{sum},00" else #{sum.replacee '.', ','}" | |
send "\\addlinespace" | |
send "Summe: & & & #{formattedSum}" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment