You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@community.apache.org by hu...@apache.org on 2016/02/14 10:41:16 UTC

svn commit: r1730305 - /comdev/helpwanted.apache.org/site/widget.js

Author: humbedooh
Date: Sun Feb 14 09:41:16 2016
New Revision: 1730305

URL: http://svn.apache.org/viewvc?rev=1730305&view=rev
Log:
better support for multiple widgets on the same page

Modified:
    comdev/helpwanted.apache.org/site/widget.js

Modified: comdev/helpwanted.apache.org/site/widget.js
URL: http://svn.apache.org/viewvc/comdev/helpwanted.apache.org/site/widget.js?rev=1730305&r1=1730304&r2=1730305&view=diff
==============================================================================
--- comdev/helpwanted.apache.org/site/widget.js (original)
+++ comdev/helpwanted.apache.org/site/widget.js Sun Feb 14 09:41:16 2016
@@ -17,7 +17,7 @@
 var widgetobj = null
 var widgetproject = "???"
 var widgettitle = null
-var hw_json = null
+var hw_json = {}
 var maxitems = 8
 
 
@@ -101,9 +101,20 @@ function getAsyncJSON(theUrl, xstate, ca
 }
 
 var hw_oldstate = ""
-function displayItemsWidget(json, state) {
-    hw_json = json ? json : hw_json
-    json = hw_json
+function displayItemsWidget(json, state, sorting) {
+    var obj = state.object ? state.object : widgetobj
+    if (state && state.hwuid) {
+        var divs = document.getElementsByTagName('div')
+        for (var i in divs) {
+            if (divs[i].getAttribute && divs[i].getAttribute("hwuid") == state.hwuid) {
+                obj = divs[i]
+                break
+            }
+        }
+    }
+    var hwuid = obj.getAttribute("hwuid")
+    hw_json[hwuid] = json ? json : hw_json[hwuid]
+    json = hw_json[hwuid]
     var diff = ['Beginner', 'Journeyman', 'Intermediate', 'Advanced', 'Expert']
     var numItems = 0
     for (var i in json) {
@@ -113,32 +124,32 @@ function displayItemsWidget(json, state)
         }
         numItems++
     }
-    var obj = state.object ? state.object : widgetobj
-    var title = state.title ? state.title : widgettitle
+    
+    var title = state.title ? state.title : obj.getAttribute("hwtitle")
     obj.setAttribute("class", "hwitems hwwidget")
     
-    if (state && typeof(state) === "string") {
-        if (hw_oldstate == state) {
-            json.sort(function(a,b) { return a[state] < b[state] })
+    if (sorting && typeof(sorting) === "string") {
+        if (hw_oldstate == sorting) {
+            json.sort(function(a,b) { return a[sorting] < b[sorting] })
             hw_oldstate = ""
         } else {
-            json.sort(function(a,b) { return a[state] > b[state] })
-            hw_oldstate = state
+            json.sort(function(a,b) { return a[sorting] > b[sorting] })
+            hw_oldstate = sorting
         }
         
     }
     
-    var tags = ""
+    var tags = obj.getAttribute("tags") ? ", tagged " + obj.getAttribute("tags") : ""
     if (state.tags && state.tags.length > 0) {
         tags = ", tagged " + state.tags
     }
     
     obj.innerHTML = ""
     var tbl = "<table style='width: 100%; text-align: left;'><tr><td colspan='5' style='text-align: center;'><img src='https://helpwanted.apache.org/images/cube.png'/> Tasks " + title + " would like help with"+tags+":</td></tr>" +
-    "<tr style='cursor: pointer' title='Click on a column to sort'><th onclick='displayItemsWidget(null, \"title\");'>Title</th>" +
-    "<th onclick='displayItemsWidget(null, \"languages\");'>Languages</th>" +
-    "<th onclick='displayItemsWidget(null, \"difficulty\");'>Difficulty</th>" +
-    "<th onclick='displayItemsWidget(null, \"created\");'>Created</th></tr>"
+    ("<tr style='cursor: pointer' title='Click on a column to sort'><th onclick='displayItemsWidget(null, {hwuid: \""+hwuid+"\"}, \"title\");'>Title</th>") +
+    ("<th onclick='displayItemsWidget(null, {hwuid: \""+hwuid+"\"}, \"languages\");'>Languages</th>") +
+    ("<th onclick='displayItemsWidget(null, {hwuid: \""+hwuid+"\"}, \"difficulty\");'>Difficulty</th>") +
+    ("<th onclick='displayItemsWidget(null, {hwuid: \""+hwuid+"\"}, \"created\");'>Created</th></tr>")
     
     if (typeof(numItems) === 'undefined' || numItems == 0) {
         obj.innerHTML = tbl + "<tr><td colspan='5'>Sorry, we couldn't find any tasks matching your criteria</td></tr>" +
@@ -154,7 +165,7 @@ function displayItemsWidget(json, state)
             continue
         }
         if (parseInt(i) >= maxitems) {
-            tbl += "<tr><td colspan='5'><a href='javascript:void(0);' onclick='maxitems += 8; displayItemsWidget(null, {});'>Show more tasks</a></td></tr>"
+            tbl += "<tr><td colspan='5'><a href='javascript:void(0);' onclick='maxitems += 8; displayItemsWidget(null, {hwuid: \""+hwuid+"\"});'>Show more tasks</a></td></tr>"
             break
         }
         var rid = (Math.random()*99999).toString(16)
@@ -209,24 +220,29 @@ function sw(id) {
 
 var divs = document.getElementsByTagName('div')
 for (var i in divs) {
-    var dt = divs[i].getAttribute("type")
-    var dn = divs[i].getAttribute("project")
-    var dti = divs[i].getAttribute("description")
-    var dtag = divs[i].getAttribute("tags")
-    if (dtag) {
-        dtag = dtag.split(/,\s*/)
-    }
-    if (dt && dt == "helpwanted" && dn) {
-        widgetobj = divs[i]
-        widgetproject = dn
-        widgettitle = dti ? dti : dn
-        if (widgettitle == '*' || dn == '*') {
-            widgettitle = "the Apache Software Foundation"
-        }
-        var css = document.createElement('link')
-        css.rel = "stylesheet";
-        css.href = "https://helpwanted.apache.org/css/hw2.css";
-        (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(css)
-        fetchItemsWidget([],[],[dn], null, dtag, divs[i], widgettitle)
+    if (divs[i].getAttribute) {
+        var dt = divs[i].getAttribute("type")
+        var dn = divs[i].getAttribute("project")
+        var dti = divs[i].getAttribute("description")
+        var dtag = divs[i].getAttribute("tags")
+        if (dtag) {
+            dtag = dtag.split(/,\s*/)
+        }
+        if (dt && dt == "helpwanted" && dn) {
+            widgetobj = divs[i]
+            widgetproject = dn
+            widgettitle = dti ? dti : dn
+            if (widgettitle == '*' || dn == '*') {
+                widgettitle = "the Apache Software Foundation"
+            }
+            var css = document.createElement('link')
+            css.rel = "stylesheet";
+            css.href = "https://helpwanted.apache.org/css/hw2.css";
+            (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(css)
+            divs[i].setAttribute("hwuid", (Math.random()*99999).toString(16))
+            divs[i].setAttribute("hwtitle", widgettitle)
+            fetchItemsWidget([],[],[dn], null, dtag, divs[i], widgettitle)
+        }
     }
+    
 }
\ No newline at end of file