diff -r 149a4ea20ea7 -r cfea8c04c8c7 src/widgets/LatestAnnotation.js --- a/src/widgets/LatestAnnotation.js Fri Sep 18 14:44:36 2015 +0200 +++ b/src/widgets/LatestAnnotation.js Fri Sep 18 14:48:13 2015 +0200 @@ -7,6 +7,9 @@ IriSP.Widgets.LatestAnnotation.prototype = new IriSP.Widgets.Widget(); IriSP.Widgets.LatestAnnotation.prototype.defaults = { + pre_draw_callback: function(){ + return this.importUsers(); + }, from_user: false, filter_by_segment: false, segments_annotation_type: "chap", @@ -28,6 +31,9 @@ starts_hidden: false, show_header: false, custom_header: false, + make_name_string_function: function(params){ + return params.username ? params.username : "Anonymous"; + }, }; IriSP.Widgets.LatestAnnotation.prototype.messages = { @@ -64,6 +70,40 @@ + "" +IriSP.Widgets.LatestAnnotation.prototype.importUsers = function(){ + if (!this.source.users_data){ + this.usernames = Array(); + var _this = this, + _list = this.getWidgetAnnotations(), + usernames_list_string = ""; + + _list.forEach(function(_annotation){ + if(_this.usernames.indexOf(_annotation.creator) == -1){ + _this.usernames.push(_annotation.creator); + } + }); + this.usernames.forEach(function(_username){ + usernames_list_string+=_username+"," + }) + usernames_list_string = usernames_list_string.substring(0, usernames_list_string.length - 1); + _url = Mustache.to_html(this.api_users_endpoint, {usernames_list_string: encodeURIComponent(usernames_list_string), usernames_list_length: this.usernames.length}); + return IriSP.jQuery.ajax({ + async: false, + url: _url, + type: "GET", + success: function(_data) { + _this.source.users_data = _data.objects + }, + error: function(_xhr, _error, _thrown) { + console.log(_xhr) + console.log(_error) + console.log(_thrown) + } + }) + } + console.log(this.source.users_data) +} + IriSP.Widgets.LatestAnnotation.prototype.draw = function(){ var _this = this; this.renderTemplate(); @@ -75,9 +115,19 @@ _this.getWidgetAnnotations().forEach(function(_annotation){ _annotation.off("click"); _annotation.on("click", function(){ + _users = this.source.users_data.filter(function(_user_data){ + return _user_data.username == _annotation.creator + }) + if (_users.length == 0){ + _user.username = _annotation.creator; + } + else { + _user = _users[0]; + } + _user_display_string = _this.make_name_string_function(_user) _html = Mustache.to_html(_this.annotationTemplate, { annotation_created: _annotation.created.toLocaleDateString()+", "+_annotation.created.toLocaleTimeString(), - annotation_creator: _annotation.creator, + annotation_creator: _user_display_string, annotation_title: _annotation.title, annotation_content: _annotation.description, copy_and_edit_button: _this.copy_and_edit_button, @@ -182,13 +232,25 @@ return _annotation.created; }); - var _latestAnnotation = false; - var _html=""; + var _latestAnnotation = false, + _html="", + _user_display_string = "", + _user = {}; if (_list.length != 0){ _latestAnnotation = _list.pop(); + _users = this.source.users_data.filter(function(_user_data){ + return _user_data.username == _latestAnnotation.creator + }) + if (_users.length == 0){ + _user.username = _latestAnnotation.creator; + } + else { + _user = _users[0]; + } + _user_display_string = this.make_name_string_function(_user) _html = Mustache.to_html(this.annotationTemplate, { annotation_created: _latestAnnotation.created.toLocaleDateString()+", "+_latestAnnotation.created.toLocaleTimeString(), - annotation_creator: _latestAnnotation.creator, + annotation_creator: _user_display_string, annotation_title: _latestAnnotation.title, annotation_content: _latestAnnotation.description, copy_and_edit_button: this.copy_and_edit_button,