Bug 29939: Use the REST API for ratings
[koha.git] / koha-tmpl / opac-tmpl / bootstrap / js / ratings.js
1 // -----------------------------------------------------
2 // star-ratings code
3 // -----------------------------------------------------
4 // hide 'rate' button if javascript enabled
5
6 $(document).ready(function(){
7     $("input[name='rate_button']").remove();
8
9     var star_ratings = $(".star_rating");
10
11     star_ratings.barrating({
12         theme: 'fontawesome-stars',
13         showSelectedRating: false,
14         allowEmpty: true,
15         deselectable: false,
16         readonly: !is_logged_in,
17         onSelect: function( value ) {
18             var context = $("#" + this.$elem.data("context") );
19             $(".rating-loading", context ).show();
20             let biblionumber = this.$elem.data('biblionumber');
21             if ( value == "" ) value = null;
22             fetch("/api/v1/public/biblios/"+biblionumber+"/ratings", {
23                 method: 'POST',
24                 body: JSON.stringify({ rating: value }),
25                 headers: {
26                     "Content-Type": "application/json;charset=utf-8",
27                 }
28             }).then(checkError)
29               .then((data) => {
30                 $(".rating_value", context ).val(data.rating);
31                 console.log(data);
32                   console.log($(".cancel_rating_text", context ));
33                 if (data.rating) {
34                     console.log(data.rating);
35                     $(".rating_value_text", context ).text( __("Your rating: %s.").format(data.rating) );
36                     $(".cancel_rating_text", context ).show();
37                 } else {
38                     $(".rating_value_text", context ).text("");
39                     $(".cancel_rating_text", context ).hide();
40                 }
41                   console.log($(".rating_text", context ));
42                 $(".rating_text", context ).text( __("Average rating: %s (%s votes)").format(data.average, data.count) );
43                 $(".rating-loading", context ).hide();
44             });
45         }
46     });
47
48     $("body").on("click", ".cancel_rating_text a", function(e){
49         e.preventDefault();
50         var context = "#" + $(this).data("context");
51         $(context).barrating("set", "");
52     });
53 });