From d3fb6f7b80a9781b02a7683506c87fff60ad2687 Mon Sep 17 00:00:00 2001 From: Bridger Maxwell Date: Sun, 4 Mar 2012 18:38:14 -0500 Subject: [PATCH 1/2] Fixed profile graph template code. Now is clearly separated between python and javascript. --HG-- branch : bridger-dev --- profile_graphs.js | 188 +++++++++++++++++++++------------------------- 1 file changed, 85 insertions(+), 103 deletions(-) diff --git a/profile_graphs.js b/profile_graphs.js index dbe5dc1f96..72a3de4471 100644 --- a/profile_graphs.js +++ b/profile_graphs.js @@ -18,100 +18,103 @@ $(function () { } /* -------------------------------- Grade detail bars -------------------------------- */ - var colors = [ $.color.parse("#b72121"), $.color.parse("#600101"), $.color.parse("#666666"), $.color.parse("#333333")]; - // var colors = [ $.color.parse("#2e80ce"), $.color.parse("#14518b"), $.color.parse("#599535"), $.color.parse("#3d731c")]; - // var colors = [ $.color.parse("#3f80be"), $.color.parse("#128251"), $.color.parse("#e1b900"), $.color.parse("#d10404")]; - //var colors = [$.color.parse("#1B2045"), $.color.parse("#557a00"), $.color.parse("#F5600"), $.color.parse("#FEBA2C")]; - //var colors = [$.color.parse("#E7C856"), $.color.parse("#CD462E"), $.color.parse("#B01732"), $.color.parse("#41192A")]; - //var colors = [$.color.parse("#434F5E"), $.color.parse("#BEF731"), $.color.parse("#FB5455"), $.color.parse("#44C4B7")]; - //var colors = [$.color.parse("#147A7D"), $.color.parse("#C0C900"), $.color.parse("#C9005B"), $.color.parse("#FCF9A5")]; - - - - var series = []; - var ticks = []; //These are the indices and x-axis labels for the data - var bottomTicks = []; //Labels on the bottom - var detail_tooltips = {}; //This an dictionary mapping from 'section' -> array of detail_tooltips - var droppedScores = []; //These are the datapoints to indicate assignments which aren't factored into the total score - detail_tooltips['Dropped Scores'] = []; + <% + colors = ["#b72121", "#600101", "#666666", "#333333"] + tickIndex = 1 sectionSpacer = 0.5 sectionIndex = 0 - %> - %for section in grade_summary: - %if 'subscores' in section: ##This is for sections like labs or homeworks, with several smaller components and a total - series.push({label: "${section['category']}", - data: ${ json.dumps( [[i + tickIndex, score['percentage']] for i,score in enumerate(section['subscores'])] ) }, - color: colors[${sectionIndex}].toString(), - }); - ticks = ticks.concat( ${ json.dumps( [[i + tickIndex, score['label'] ] for i,score in enumerate(section['subscores'])] ) } ); - bottomTicks.push( [ ${tickIndex + len(section['subscores'])/2}, "${section['category']}" ] ); - detail_tooltips["${section['category']}"] = ${ json.dumps([score['summary'] for score in section['subscores']] ) }; - - droppedScores = droppedScores.concat(${ json.dumps( [[tickIndex + index, 0.05] for index in section['dropped_indices']]) }); - <% dropExplanation = "The lowest {0} {1} scores are dropped".format( len(section['dropped_indices']), section['category'] ) %> - detail_tooltips['Dropped Scores'] = detail_tooltips['Dropped Scores'].concat( ${json.dumps( [dropExplanation] * len(section['dropped_indices']) )} ); - - <% tickIndex += len(section['subscores']) + sectionSpacer %> - - ##Now put on the aggregate score - series.push({label: "${section['category']} Total", - data: [[${tickIndex}, ${section['totalscore']['score']}]], - color: colors[${sectionIndex}].toString(), - }); - ticks = ticks.concat( [ [${tickIndex}, "${section['totallabel']}"] ] ); - detail_tooltips["${section['category']} Total"] = [ "${section['totalscore']['summary']}" ]; - <% tickIndex += 1 + sectionSpacer %> - - %else: ##This is for sections like midterm or final, which have no smaller components - series.push({label: "${section['category']}", - data: [[${tickIndex}, ${section['totalscore']['score']}]], - color: colors[${sectionIndex}].toString(), - }); - ticks = ticks.concat( [ [${tickIndex}," ${section['totallabel']}"] ] ); - - detail_tooltips["${section['category']}"] = [ "${section['totalscore']['summary']}" ]; - <% tickIndex += 1 + sectionSpacer %> - %endif - <%sectionIndex += 1 %> - %endfor - - //Alwasy be sure that one series has the xaxis set to 2, or the second xaxis labels won't show up - series.push( {label: 'Dropped Scores', data: droppedScores, points: {symbol: "cross", show: true, radius: 3}, bars: {show: false}, color: "#333"} ); - - - /* ----------------------------- Grade overviewew bar -------------------------*/ - <% + series = [] + ticks = [] #These are the indices and x-axis labels for the data + bottomTicks = [] #Labels on the bottom + detail_tooltips = {} #This an dictionary mapping from 'section' -> array of detail_tooltips + droppedScores = [] #These are the datapoints to indicate assignments which aren't factored into the total score + dropped_score_tooltips = [] + + for section in grade_summary: + if 'subscores' in section: ##This is for sections like labs or homeworks, with several smaller components and a total + series.append({ + 'label' : section['category'], + 'data' : [[i + tickIndex, score['percentage']] for i,score in enumerate(section['subscores'])], + 'color' : colors[sectionIndex] + }) + + ticks += [[i + tickIndex, score['label'] ] for i,score in enumerate(section['subscores'])] + bottomTicks.append( [tickIndex + len(section['subscores'])/2, section['category']] ) + detail_tooltips[ section['category'] ] = [score['summary'] for score in section['subscores']] + + droppedScores += [[tickIndex + index, 0.05] for index in section['dropped_indices']] + + dropExplanation = "The lowest {0} {1} scores are dropped".format( len(section['dropped_indices']), section['category'] ) + dropped_score_tooltips += [dropExplanation] * len(section['dropped_indices']) + + + tickIndex += len(section['subscores']) + sectionSpacer + + + category_total_label = section['category'] + " Total" + series.append({ + 'label' : category_total_label, + 'data' : [ [tickIndex, section['totalscore']['score']] ], + 'color' : colors[sectionIndex] + }) + + ticks.append( [tickIndex, section['totallabel']] ) + detail_tooltips[category_total_label] = [section['totalscore']['summary']] + else: + series.append({ + 'label' : section['category'], + 'data' : [ [tickIndex, section['totalscore']['score']] ], + 'color' : colors[sectionIndex] + }) + + ticks.append( [tickIndex, section['totallabel']] ) + detail_tooltips[section['category']] = [section['totalscore']['summary']] + + tickIndex += 1 + sectionSpacer + sectionIndex += 1 + + + detail_tooltips['Dropped Scores'] = dropped_score_tooltips + + ## ----------------------------- Grade overviewew bar ------------------------- ## totalWeight = 0.0 sectionIndex = 0 totalScore = 0.0 overviewBarX = tickIndex - %> - %for section in grade_summary: - <% - weighted_score = section['totalscore']['score'] * section['weight'] - summary_text = "{0} - {1:.1%} of a possible {2:.0%}".format(section['category'], weighted_score, section['weight']) - %> - %if section['totalscore']['score'] > 0: - series.push({label: "${section['category']} - Weighted", - data: [[${overviewBarX}, ${weighted_score}]], - color: colors[${sectionIndex}].toString(), - }); - %endif - detail_tooltips["${section['category']} - Weighted"] = [ "${summary_text}" ]; - <% - sectionIndex += 1 - totalWeight += section['weight'] - totalScore += section['totalscore']['score'] * section['weight'] - %> - %endfor - ticks = ticks.concat( [ [${overviewBarX}, "Total"] ] ); + for section in grade_summary: + weighted_score = section['totalscore']['score'] * section['weight'] + summary_text = "{0} - {1:.1%} of a possible {2:.0%}".format(section['category'], weighted_score, section['weight']) + + weighted_category_label = section['category'] + " - Weighted" + + if section['totalscore']['score'] > 0: + series.append({ + 'label' : weighted_category_label, + 'data' : [ [overviewBarX, weighted_score] ], + 'color' : colors[sectionIndex] + }) + + detail_tooltips[weighted_category_label] = [ summary_text ] + sectionIndex += 1 + totalWeight += section['weight'] + totalScore += section['totalscore']['score'] * section['weight'] + + ticks += [ [overviewBarX, "Total"] ] + tickIndex += 1 + sectionSpacer + %> - <% tickIndex += 1 + sectionSpacer %> + var series = ${ json.dumps(series) }; + var ticks = ${ json.dumps(ticks) }; + var bottomTicks = ${ json.dumps(bottomTicks) }; + var detail_tooltips = ${ json.dumps(detail_tooltips) }; + var droppedScores = ${ json.dumps(droppedScores) }; + //Alwasy be sure that one series has the xaxis set to 2, or the second xaxis labels won't show up + series.push( {label: 'Dropped Scores', data: droppedScores, points: {symbol: "cross", show: true, radius: 3}, bars: {show: false}, color: "#333"} ); var options = { series: {stack: true, @@ -131,28 +134,7 @@ $(function () { var o = plot.pointOffset({x: ${overviewBarX} , y: ${totalScore}}); $grade_detail_graph.append('
${"{totalscore:.0%}".format(totalscore=totalScore)}
'); - - // //Rotate the x-axis labels - // var rotateValue = "rotate(-60deg)"; - // var rotateOrigin = "bottom left"; - // $("#grade-detail-graph .x1Axis .tickLabel").css( { - // '-webkit-transform': rotateValue, - // '-moz-transform': rotateValue, - // '-ms-transform': rotateValue, - // '-o-transform': rotateValue, - // 'transform': rotateValue, - // - // '-webkit-transform-origin': rotateOrigin, - // '-moz-transform-origin': rotateOrigin, - // '-ms-transform-origin': rotateOrigin, - // '-o-transform-origin': rotateOrigin, - // - // 'text-align' : 'left', - // }); } - - - var previousPoint = null; $("#grade-detail-graph").bind("plothover", function (event, pos, item) { From 5209a942006447f6e7a194f51e77a1c6bb88346f Mon Sep 17 00:00:00 2001 From: Bridger Maxwell Date: Tue, 6 Mar 2012 15:25:48 -0500 Subject: [PATCH 2/2] Added revision feed, which shows latest edits across the wiki --HG-- branch : bridger-dev --- simplewiki_revision_feed.html | 63 +++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 simplewiki_revision_feed.html diff --git a/simplewiki_revision_feed.html b/simplewiki_revision_feed.html new file mode 100644 index 0000000000..b0196a4dab --- /dev/null +++ b/simplewiki_revision_feed.html @@ -0,0 +1,63 @@ +##This file is based on the template from the SimpleWiki source which carries the GPL license + +<%inherit file="simplewiki_base.html"/> + +<%block name="title">Revision feed - MITx 6.002x Wiki + +<%! + from django.core.urlresolvers import reverse +%> + +<%block name="wiki_page_title"> +

Revision Feed - Page ${wiki_page}

+ + +<%block name="wiki_body"> + + + + + + + + + + + <% loopCount = 0 %> + %for revision in wiki_history: + %if revision.deleted < 2 or show_delete_revision: + <% loopCount += 1 %> + + + + + + + %endif + %endfor + + %if wiki_prev_page or wiki_next_page: + + + + + + %endif +
RevisionCommentDiffModified
+ ${revision.article.title} - ${revision} + + ${ revision.revision_text if revision.revision_text else "None" } + %for x in revision.get_diff(): + ${x|h}
+ %endfor
${revision.get_user()} +
+ ${revision.revision_date.strftime("%b %d, %Y, %I:%M %p")} +
+ %if wiki_prev_page: + Previous page + %endif + %if wiki_next_page: + Next page + %endif +
+