@@ -225,16 +225,26 @@ function url_translator(urltext) {
225225 if ( urltext === undefined ) {
226226 return 'None' ;
227227 } else {
228- return '<a href="' + urltext + '">' + urltext + '</a>' ;
228+ return '<a href="' + urltext + '">' + 'Website' + '</a>' ;
229229 }
230230}
231231
232+
233+ function repo_translator ( urltext ) {
234+ if ( urltext === undefined ) {
235+ return 'None' ;
236+ } else {
237+ return '<a href="' + urltext + '">' + 'Repository' + '</a>' ;
238+ }
239+ }
240+
241+
232242function pypi_translator ( pypiname ) {
233243 if ( pypiname === undefined ) {
234244 return 'None' ;
235245 } else {
236246 var urltext = 'http://pypi.python.org/pypi/' + pypiname ;
237- return '<a href="' + urltext + '">' + pypiname + '</a>' ;
247+ return '<a href="' + urltext + '">' + 'PyPI' + '</a>' ;
238248 }
239249}
240250
@@ -250,6 +260,7 @@ var _email_regex_str = '[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}';
250260var _email_regex = new RegExp ( _email_regex_str , 'i' ) ;
251261var _email_with_name_regex = new RegExp ( '(.+)<(' + _email_regex_str + ')>' , 'i' ) ;
252262
263+
253264function maintainer_translator ( maint , pkgnm ) {
254265 var url , match ;
255266 if ( _email_with_name_regex . test ( maint ) ) {
@@ -264,34 +275,22 @@ function maintainer_translator(maint, pkgnm) {
264275 }
265276}
266277
278+
267279function populateTables ( data , tstat , xhr ) {
268- populateTable ( 'accepted-package-table' , data , false ) ;
269- populateTable ( 'provisional-package-table' , data , 'only' )
280+ populateTable ( 'accepted-package-table' , data ) ;
270281}
271282
272- function populateTable ( tableid , data , allowprovisional ) {
273- // First we use allowprovisional io decide what the checkProvisional function (used below) does
274- var checkProvisional ;
275- if ( allowprovisional === false ) {
276- checkProvisional = function ( provisional_status ) { return provisional_status === false ; }
277- } else if ( allowprovisional == 'only' ) {
278- checkProvisional = function ( provisional_status ) { return provisional_status ; }
279- } else if ( allowprovisional === true ) {
280- checkProvisional = function ( provisional_status ) { return true ; }
281- } else {
282- throw "Invalid allowprovisional value " + allowprovisional ;
283- }
284283
284+ function populateTable ( tableid , data ) {
285285 // Now we get the table and prepare it
286286 var tab = document . getElementById ( tableid ) ;
287287 var ncols = tab . rows [ 0 ] . cells . length ;
288288
289289 //we have to delete the "Loading..." row
290290 tab . deleteRow ( 1 ) ;
291291
292- var pkgi , row , nmcell , stablecell , pypicell , urlcell , rpocell , maintcell ;
293292 if ( data === null ) {
294- row = tab . insertRow ( 1 ) ;
293+ var row = tab . insertRow ( 1 ) ;
295294 row . insertCell ( 0 ) . innerHTML = 'Could not load registry file!' ;
296295 for ( i = 0 ; i < ( ncols - 1 ) ; i ++ ) { row . insertCell ( i + 1 ) . innerHTML = ' ' ; }
297296 } else {
@@ -305,32 +304,90 @@ function populateTable(tableid, data, allowprovisional) {
305304 nmarr [ i ] = pkgi . name . toLowerCase ( ) ;
306305 sortorder [ i ] = i ;
307306 }
308- // This "sorts" the indecies using a compare function that actually sorts nmarr
307+ // This "sorts" the indicies using a compare function that actually sorts nmarr
309308 sortorder . sort ( function ( a , b ) { return nmarr [ a ] < nmarr [ b ] ? - 1 : nmarr [ a ] > nmarr [ b ] ? 1 : 0 ; } ) ;
310309
310+ var pkgi ;
311+ var namerow , descrow , shieldrow , maintrow ;
312+ var nmcell , pypicell , urlcell , repocell ;
313+ var desccell , maintcell , shieldcell ;
314+
311315 for ( i = 0 ; i < sortorder . length ; i ++ ) {
312316 pkgi = pkgs [ sortorder [ i ] ] ;
313- row = tab . insertRow ( i + 1 ) ;
314-
315- if ( checkProvisional ( pkgi . provisional ) ) {
316- nmcell = row . insertCell ( 0 ) ;
317- stablecell = row . insertCell ( 1 ) ;
318- pypicell = row . insertCell ( 2 ) ;
319- urlcell = row . insertCell ( 3 ) ;
320- repocell = row . insertCell ( 4 ) ;
321- maintcell = row . insertCell ( 5 ) ;
322-
323- nmcell . innerHTML = pkgi . name ;
324- stablecell . innerHTML = bool_translator ( pkgi . stable ) ;
325- pypicell . innerHTML = pypi_translator ( pkgi . pypi_name ) ;
326- urlcell . innerHTML = url_translator ( pkgi . home_url ) ;
327- repocell . innerHTML = url_translator ( pkgi . repo_url ) ;
328- maintcell . innerHTML = maintainer_translator ( pkgi . maintainer , pkgi . name ) ;
329- }
317+ namerow = tab . insertRow ( i * 4 + 1 ) ;
318+
319+ nmcell = namerow . insertCell ( 0 ) ;
320+ urlcell = namerow . insertCell ( 1 ) ;
321+ repocell = namerow . insertCell ( 2 ) ;
322+ pypicell = namerow . insertCell ( 3 ) ;
323+
324+ nmcell . innerHTML = pkgi . name ;
325+ urlcell . innerHTML = url_translator ( pkgi . home_url ) ;
326+ repocell . innerHTML = repo_translator ( pkgi . repo_url ) ;
327+ pypicell . innerHTML = pypi_translator ( pkgi . pypi_name ) ;
328+
329+
330+ descrow = tab . insertRow ( i * 4 + 2 ) ;
331+ descrow . insertCell ( 0 ) . innerHTML = "" ;
332+ desccell = descrow . insertCell ( 1 ) ;
333+ desccell . colSpan = "3" ;
334+ desccell . innerHTML = pkgi . description ;
335+
336+ maintrow = tab . insertRow ( i * 4 + 3 ) ;
337+ maintrow . insertCell ( 0 ) . innerHTML = "" ;
338+ maintcell = maintrow . insertCell ( 1 ) ;
339+ maintcell . colSpan = "3" ;
340+ maintcell . innerHTML = "Maintainer(s): " + maintainer_translator ( pkgi . maintainer , pkgi . name ) ;
341+
342+ shieldrow = tab . insertRow ( i * 4 + 4 ) ;
343+ shieldrow . insertCell ( 0 ) . innerHTML = "" ;
344+ shieldcell = shieldrow . insertCell ( 1 ) ;
345+ shieldcell . colSpan = "3" ;
346+ shieldcell . innerHTML = makeShields ( pkgi )
347+
330348 }
331349 }
332350}
333351
352+ var review_name_map = { "functionality" : "Functionality" ,
353+ "ecointegration" : "Astropy%20integration" ,
354+ "documentation" : "Docs" ,
355+ "testing" : "Tests" ,
356+ "devstatus" : "Development" ,
357+ "python3" : "Python 3"
358+ } ;
359+
360+ var review_default_color = "green" ;
361+ var review_color_map = { 'Unmaintained' : "red" ,
362+ "Functional but low activity" : "orange" ,
363+ "Good" : "green" ,
364+ "Partial" : "orange" ,
365+ "Needs work" : "red"
366+ } ;
367+
368+ function makeShields ( pkg ) {
369+ var shield_string = "" ;
370+
371+ var key , shield_name , pkgvalue , color , url ;
372+
373+ for ( key in review_name_map ) {
374+ console . log ( "K" + key ) ;
375+ if ( review_name_map . hasOwnProperty ( key ) ) {
376+ shield_name = review_name_map [ key ] ;
377+ pkgvalue = pkg . review [ key ] ;
378+
379+ color = review_color_map [ pkgvalue ] ;
380+ if ( typeof color == 'undefined' ) {
381+ color = review_default_color ;
382+ }
383+
384+ url = "https://img.shields.io/badge/" + shield_name + "-" + pkgvalue + "-" + color + ".svg" ;
385+ shield_string += "<img src=\"" + url + "\">" + " "
386+ }
387+ }
388+ return shield_string
389+ }
390+
334391function guess_os ( ) {
335392 var OSName = "source" ;
336393 if ( navigator . appVersion . indexOf ( "Win" ) != - 1 ) OSName = "windows" ;
0 commit comments