From 185c977cdb9c8cb5e82af8f20e274c60d678d799 Mon Sep 17 00:00:00 2001 From: Matt Lott Date: Fri, 24 Oct 2014 15:11:55 -0700 Subject: [PATCH] User code problems admin view Shows the most recent 1000 log entries Url: admin/user-code-problems --- app/Router.coffee | 1 + app/locale/en.coffee | 2 ++ app/templates/admin.jade | 4 ++- app/templates/admin/user-code-problems.jade | 33 ++++++++++++++++++ app/views/admin/UserCodeProblemsView.coffee | 38 +++++++++++++++++++++ 5 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 app/templates/admin/user-code-problems.jade create mode 100644 app/views/admin/UserCodeProblemsView.coffee diff --git a/app/Router.coffee b/app/Router.coffee index 437e44d9b..dcdbfd492 100644 --- a/app/Router.coffee +++ b/app/Router.coffee @@ -34,6 +34,7 @@ module.exports = class CocoRouter extends Backbone.Router 'admin/level-sessions': go('admin/LevelSessionsView') 'admin/users': go('admin/UsersView') 'admin/base': go('admin/BaseView') + 'admin/user-code-problems': go('admin/UserCodeProblemsView') 'beta': go('HomeView') diff --git a/app/locale/en.coffee b/app/locale/en.coffee index 8dbccf0bb..adf8a1b42 100644 --- a/app/locale/en.coffee +++ b/app/locale/en.coffee @@ -1052,8 +1052,10 @@ av_entities_active_instances_url: "Active Instances" av_entities_employer_list_url: "Employer List" av_entities_candidates_list_url: "Candidate List" + av_entities_user_code_problems_list_url: "User Code Problems List" av_other_sub_title: "Other" av_other_debug_base_url: "Base (for debugging base.jade)" u_title: "User List" + ucp_title: "User Code Problems" lg_title: "Latest Games" clas: "CLAs" diff --git a/app/templates/admin.jade b/app/templates/admin.jade index 66b2328eb..af59ee831 100644 --- a/app/templates/admin.jade +++ b/app/templates/admin.jade @@ -33,7 +33,9 @@ block content a(href="/admin/employers", data-i18n="admin.av_entities_employer_list_url") Employer List li a(href="/admin/candidates", data-i18n="admin.av_entities_candidates_list_url") Candidate List - + li + a(href="/admin/user-code-problems", data-i18n="admin.av_entities_user_code_problems_list_url") User Code Problems List + h4(data-i18n="admin.av_other_sub_title") Other ul diff --git a/app/templates/admin/user-code-problems.jade b/app/templates/admin/user-code-problems.jade new file mode 100644 index 000000000..75ad99c1e --- /dev/null +++ b/app/templates/admin/user-code-problems.jade @@ -0,0 +1,33 @@ +extends /templates/base + +block content + + h1(data-i18n="admin.ucp_title") User Code Problems + + table.table.table-striped.table-bordered.table-condensed#users + thead(style='font-weight:bold') + tr + td language + //- td errType + //- td errLevel + //- td errId + td levelID + td codeSnippet + td errHint + td errMessage + //- td code + td created + + tbody + each problem in userCodeProblems + tr + td #{problem.language} + //- td #{problem.errType} + //- td #{problem.errLevel} + //- td #{problem.errId} + td #{problem.levelID} + td #{problem.codeSnippet} + td #{problem.errHint} + td #{problem.errMessage} + //- td #{problem.code} + td #{new Date(problem.created).toLocaleString()} diff --git a/app/views/admin/UserCodeProblemsView.coffee b/app/views/admin/UserCodeProblemsView.coffee new file mode 100644 index 000000000..876ab9a4b --- /dev/null +++ b/app/views/admin/UserCodeProblemsView.coffee @@ -0,0 +1,38 @@ +RootView = require 'views/kinds/RootView' +template = require 'templates/admin/user-code-problems' +UserCodeProblem = require 'models/UserCodeProblem' + +module.exports = class UserCodeProblemsView extends RootView + # TODO: Pagination, choosing filters on the page itself. + + id: 'admin-user-code-problems-view' + template: template + + constructor: (options) -> + super options + @getUserCodeProblems() + + getUserCodeProblems: -> + # can have this page show arbitrary conditions, see mongoose queries + # http://mongoosejs.com/docs/queries.html + # Each list in conditions is a function call. + # The first arg is the function name + # The rest are the args for the function + + conditions = [ + ['limit', 1000] + ['sort', '-created'] + ] + conditions = $.param({conditions:JSON.stringify(conditions)}) + UserCodeProblemCollection = Backbone.Collection.extend({ + model: UserCodeProblem + url: '/db/user.code.problem?' + conditions + }) + @userCodeProblems = new UserCodeProblemCollection() + @userCodeProblems.fetch() + @listenTo(@userCodeProblems, 'all', @render) + + getRenderData: -> + c = super() + c.userCodeProblems = (problem.attributes for problem in @userCodeProblems.models) + c