You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ponymail.apache.org by hu...@apache.org on 2016/09/02 17:51:12 UTC

[2/4] incubator-ponymail git commit: Add a calendar object

Add a calendar object


Project: http://git-wip-us.apache.org/repos/asf/incubator-ponymail/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ponymail/commit/1a19fb9d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ponymail/tree/1a19fb9d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ponymail/diff/1a19fb9d

Branch: refs/heads/coffee-and-cake
Commit: 1a19fb9d9e82f80313d1fe35e58c66b902b5eebd
Parents: cb60afc
Author: Daniel Gruno <hu...@apache.org>
Authored: Fri Sep 2 19:49:01 2016 +0200
Committer: Daniel Gruno <hu...@apache.org>
Committed: Fri Sep 2 19:49:01 2016 +0200

----------------------------------------------------------------------
 site/css/ponymail2.css         | 39 +++++++++++++++-
 site/js/coffee/calendar.coffee | 93 +++++++++++++++++++++++++++++++++++++
 2 files changed, 131 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ponymail/blob/1a19fb9d/site/css/ponymail2.css
----------------------------------------------------------------------
diff --git a/site/css/ponymail2.css b/site/css/ponymail2.css
index 7fb365c..846f4b2 100644
--- a/site/css/ponymail2.css
+++ b/site/css/ponymail2.css
@@ -75,4 +75,41 @@ body, html {
     border-radius: 2px;
     font-family: sans-serif;
     font-size:  9pt;
-}
\ No newline at end of file
+}
+
+
+
+/* Calendars */
+
+.calendar_year {
+    background: #77D32C;
+    border-radius: 4px;
+    color: #000;
+    width: 110px;
+    text-align: center;
+    border: 1px solid #666;
+}
+
+.calendar_year:hover {
+    background: #80E52D;
+    cursor: pointer;
+}
+
+
+.calendar_month {
+    background: #8CB9CE;
+    border-radius: 4px;
+    color: #000;
+    margin-left: 5px;
+    width: 100px;
+    text-align: center;
+    border: 1px solid #666;
+}
+
+
+.calendar_month:hover {
+    background: #99BCDB;
+    cursor: pointer;
+}
+
+

http://git-wip-us.apache.org/repos/asf/incubator-ponymail/blob/1a19fb9d/site/js/coffee/calendar.coffee
----------------------------------------------------------------------
diff --git a/site/js/coffee/calendar.coffee b/site/js/coffee/calendar.coffee
new file mode 100644
index 0000000..00c09fa
--- /dev/null
+++ b/site/js/coffee/calendar.coffee
@@ -0,0 +1,93 @@
+calendar_months = [
+    'January',
+    'February',
+    'March',
+    'April',
+    'May',
+    'June',
+    'July',
+    'August',
+    'September',
+    'October',
+    'November',
+    'December'
+    ]
+
+class Calendar
+    constructor: (start, end, jumpTo) ->
+        now = new Date()
+        
+        ### Split start and end into years and months ###
+        [sYear, sMonth] = start.split("-")
+        
+        [eYear, eMonth] = [now.getFullYear(), now.getMonth()+1]
+        
+        ### If end year+month given, use it ###
+        if end
+            [eYear, eMonth] = end.split("-")
+        
+        ### For each year, construct the year div to hold months ###
+        years = []
+        for year in [parseInt(sYear)..parseInt(eYear)]
+            yDiv = new HTML('div', {
+                id: "calendar_year_" + year
+                data: String(year)
+                class: "calendar_year"
+                onclick: "toggleYear(this);"
+            }, String(year))
+            
+            ### Construct the placeholder for months ###
+            ### Hide unless active year ###
+            monthsDiv = new HTML('div', {
+                style:{
+                    display: if (jumpTo and jumpTo == year) or
+                        (not jumpTo and year == parseInt(eYear))
+                    then "block"
+                    else "none",
+                }
+                class: "calendar_months"
+                id: "calendar_months_" + year
+            })
+            
+            ### For each month, make a div ###
+            for month in [12..1]
+                ### Make sure this is within the start<->end range ###
+                if (year > sYear or month >= sMonth) and (year < eYear or month <= eMonth)
+                    monthDiv = new HTML('div', {
+                        class: "calendar_month"
+                        id: "calendar_month_{#year}-{#month}"
+                        data: "#{year}-#{month}"
+                        onclick: "toggleMonth(this)"
+                    }, calendar_months[month-1])
+                    monthsDiv.inject(monthDiv)
+            
+            ### unshift year into the div list (thus reverse order) ###
+            years.unshift(monthsDiv)
+            years.unshift(yDiv)
+            
+        ### Return a combined div ###
+        div = new HTML('div', {
+            class: "calendar"
+            data: sYear + "-" + eYear
+            }, years)
+        
+        return div
+    
+toggleYear = (div) ->
+    
+    ### Get the start and end year from the parent div ###
+    [sYear, eYear] = div.parentNode.getAttribute('data').split("-")
+    
+    ### Get the year we clicked on ###
+    year = parseInt(div.getAttribute("data"))
+        
+    ### For each year, hide if not this year, else show ###
+    for y in [sYear..eYear]
+        if y == year
+            get('calendar_months_' + y).show(true)
+        else
+            get('calendar_months_' + y).show(false)
+            
+toggleMonth = (div) ->
+    #### TODO later... ###
+    
\ No newline at end of file