annotation_dashboard/commit
FIXED: broken user dashboard page
author | Jacco van Ossenbruggen |
---|---|
Tue Sep 23 16:02:26 2014 +0200 | |
committer | Jacco van Ossenbruggen |
Tue Sep 23 16:02:26 2014 +0200 | |
commit | 1b9a16b70b4831a98d7adfbb3f6ee82123df64be |
tree | 8bb2e32a12ffdfe6072828b0b36bef36774f7d49 |
parent | 7326f1c4a488372dc22606154b2fe5d21b3e6284 |
Diff style: patch stat
diff --git a/applications/dashboard_user_page.pl b/applications/dashboard_user_page.pl index d23bdc7..f29967c 100644 --- a/applications/dashboard_user_page.pl +++ b/applications/dashboard_user_page.pl @@ -2,6 +2,8 @@ % from SWI-Prolog libraries: :- use_module(library(apply)). +:- use_module(library(option)). +:- use_module(library(settings)). :- use_module(library(http/http_dispatch)). :- use_module(library(http/http_parameters)). :- use_module(library(http/html_write)). @@ -32,19 +34,22 @@ http_dashboard_user(Request) :- user_page(User, []). user_page(User, Options0) :- - findall(Prop, user_property(User, Prop), Props), + findall(Prop, user_property(User, Prop), UserProps), find_annotations_by_user(User, Annotations), partition(is_tag, Annotations, Tags, Judgements), maplist(rdf_get_annotation_target, Tags, Targets), sort(Targets, Objects), - Options = [annotations(Annotations), - judgements(Judgements), - lazy(true), - user(User), - showTag(mine), - image_link_predicate(http_mediumscale) | - Options0 - ], + Extra = [annotations(Annotations), + judgements(Judgements), + lazy(true), + user(User), + targets(Objects), + showTag(mine), + image_link_predicate(http_mediumscale) + ], + merge_options(Extra, Options0, Options), + find_user_stats(User, UserStats, Options), + merge_options(UserStats, UserProps, Props), reply_html_page( [title(User), meta([name(viewport), diff --git a/components/dashboard/show_objects.pl b/components/dashboard/show_objects.pl index 020d237..c208d1d 100644 --- a/components/dashboard/show_objects.pl +++ b/components/dashboard/show_objects.pl @@ -3,49 +3,49 @@ ]). :- use_module(library(apply)). -:- use_module(library(lists)). :- use_module(library(option)). :- use_module(library(http/html_write)). :- use_module(library(semweb/rdf_db)). :- use_module(library(oa_annotation)). :- use_module(applications(annotation)). :- use_module(components(dashboard/show_annotations)). -:- use_module(library(dashboard_util)). show_objects(Targets,Options) --> - { true, - option(task(Task), Options), - rdf_has(Task, ann_ui:taskUI, UI), - get_metafields(UI, [], MetadataFields), - get_anfields(UI, [], [], AnnotationFields), - NewOptions = [ - ui(UI), - metadata_fields(MetadataFields), - annotation_fields(AnnotationFields) | - Options - ] + { get_annotion_options(Options, NewOptions) }, html( [div([class(row)], [div([], - [\annotation_page_body([targets(Targets), media_class('col-xs-6')|NewOptions]) + [\annotation_page_body([targets(Targets), + media_class('col-xs-6')|NewOptions]) ]) ]) ]). + +get_annotion_options(Options, NewOptions) :- + option(task(Task), Options), !, + rdf_has(Task, ann_ui:taskUI, UI), + get_metafields(UI, [], MetadataFields), + get_anfields(UI, [], [], AnnotationFields), + ExtraOptions = [ + ui(UI), + metadata_fields(MetadataFields), + annotation_fields(AnnotationFields) + ], + merge_options(ExtraOptions, Options, NewOptions). + +get_annotion_options(Options, NewOptions) :- + merge_options([annotation_fields(dynamic), + lazy(true) + ], + Options, NewOptions). + + match_target(T,A) :- rdf_get_annotation_target(A,T). image_annotation:html_application_target_info(Options) --> - { option(task(Task), Options), - rdf_has(Task, ann_ui:taskUI, UI), - get_metafields(UI, [], MetadataFields), - get_anfields(UI, [], [], AnnotationFields), - NewOptions = [ - ui(UI), - metadata_fields(MetadataFields), - annotation_fields(AnnotationFields) | - Options - ], + { get_annotion_options(Options, NewOptions), option(target(Target), Options), option(annotations(A), Options, []), include(match_target(Target), A, Annotations) diff --git a/lib/dashboard_util.pl b/lib/dashboard_util.pl index ac517e0..b52e42c 100644 --- a/lib/dashboard_util.pl +++ b/lib/dashboard_util.pl @@ -10,6 +10,7 @@ find_tasks/1, find_task_properties/4, + find_user_stats/3, find_workers/1 ]). @@ -105,6 +106,25 @@ is_specific_target_annotation(A, T) :- rdf_has(A, oa:hasTarget, T), rdfs_individual_of(T, oa:'SpecificResource'). +find_user_stats(_User, Props, Options) :- + option(annotations(Annotations), Options), + option(judgements(Judgements), Options), + option(targets(Targets), Options), + include(is_specific_target_annotation, Annotations, SpecAnns), + length(Annotations, NrAnnotations), + length(Judgements, NrJudgements), + length(SpecAnns, NrSpecAnns), + length(Targets, NrWorkedOn), + NrObjAnnotations is NrAnnotations - NrSpecAnns, + CountProps = [ annotations(NrAnnotations), + judgements(NrJudgements), + spec_annotations(NrSpecAnns), + obj_annotations(NrObjAnnotations), + targets_worked_on(NrWorkedOn) + ], + maplist(pmap, CountProps, Props). + + find_task_properties(Task, Props, Representative, Options) :- option(filter(Filter), Options, ground), find_annotations_by_task(Task, Annotations), @@ -166,6 +186,7 @@ target_has_image(T) :- property_key_label(500, targets_untouched, 'works without tags'). property_key_label(200, targets_total, 'works targeted'). +property_key_label(205, judgements, 'annotations this user judged'). property_key_label(250, targets_complete, 'works completed'). property_key_label(300, targets_worked_on, 'works with some tags'). property_key_label(100, annotations, 'total annotations').