Changes in / [ad4243e:7f36551] in Git


Ignore:
Files:
10 deleted
41 edited

Legend:

Unmodified
Added
Removed
  • src/main/java/com/wediscussmovies/project/model/primarykeys/UserGenresPK.java

    rad4243e r7f36551  
    11package com.wediscussmovies.project.model.primarykeys;
    2 
    3 import lombok.Data;
    42
    53import javax.persistence.Column;
     
    86import java.io.Serializable;
    97
    10 @Data
    118@Embeddable
    129public class UserGenresPK implements Serializable {
     
    3330        UserGenresPK that = (UserGenresPK) o;
    3431
     32
     33
    3534        return userId == that.userId && genreId == that.genreId;
    3635    }
  • src/main/java/com/wediscussmovies/project/querymodels/GenreLikes.java

    rad4243e r7f36551  
    33import lombok.Data;
    44
    5 import javax.persistence.Entity;
    6 import javax.persistence.Table;
    7 import java.util.Comparator;
    8 import java.util.Objects;
    9 
    105@Data
    116public class GenreLikes {
    12     private Integer genreId;
     7
    138    private String name;
    149    private Long likes;
    1510
    16     public static Comparator<GenreLikes> sorter = Comparator.comparing(GenreLikes::getLikes).thenComparing(GenreLikes::getName).reversed();
    17 
    18     public GenreLikes(Integer genreId, String name, Long likes) {
    19         this.genreId = genreId;
     11    public GenreLikes(String name, Long likes) {
    2012        this.name = name;
    2113        this.likes = likes;
    22 
    23     }
    24 
    25     @Override
    26     public boolean equals(Object o) {
    27         if (this == o) return true;
    28         if (o == null || getClass() != o.getClass()) return false;
    29         GenreLikes that = (GenreLikes) o;
    30         return Objects.equals(genreId, that.genreId);
    31     }
    32 
    33     @Override
    34     public int hashCode() {
    35         return Objects.hash(genreId);
    3614    }
    3715}
  • src/main/java/com/wediscussmovies/project/repository/GenreRepository.java

    rad4243e r7f36551  
    44import com.wediscussmovies.project.querymodels.GenreLikes;
    55import org.springframework.data.jpa.repository.JpaRepository;
    6 import org.springframework.data.jpa.repository.Modifying;
    76import org.springframework.data.jpa.repository.Query;
    8 import org.springframework.data.repository.query.Param;
    97import org.springframework.stereotype.Repository;
    108
    119import javax.transaction.Transactional;
    12 import java.sql.Date;
    1310import java.util.List;
    1411
     
    1714     List<Genre> findAllByGenreType(String genre);
    1815
    19      @Query(value = "select new com.wediscussmovies.project.querymodels.GenreLikes(g.genreId, g.genreType, count(ug.id.userId)) from Genre g" +
     16     @Query(value = "select new com.wediscussmovies.project.querymodels.GenreLikes(g.genreType, count(ug.id.userId)) from Genre g" +
    2017             " left join UserGenres ug on ug.id.genreId = g.genreId" +
    21              " group by g.genreId, g.genreType" +
     18             " group by g.genreType" +
    2219             " order by count(ug.id.userId) desc")
    2320     @Transactional
    2421     List<GenreLikes> findAllWithLikes();
    25 
    26      @Modifying
    27      @Query(value = "insert into project.user_genres (user_id,genre_id) values(:user_id,:genre_id)",nativeQuery = true)
    28      @Transactional
    29      void insertInto(@Param("user_id")Integer userId, @Param("genre_id")Integer genreId);
    3022}
  • src/main/java/com/wediscussmovies/project/repository/MovieRepository.java

    rad4243e r7f36551  
    44import com.wediscussmovies.project.model.Person;
    55import org.springframework.data.jpa.repository.JpaRepository;
    6 import org.springframework.data.jpa.repository.Query;
    76import org.springframework.stereotype.Repository;
    87
     
    1413     List<Movie> findAllByDirector(Person director);
    1514     List<Movie> findAllByDirectorIsNull();
    16      @Query(value="select m.movieId from Movie m")
    17      List<Integer> findAllMovieIds();
    1815}
  • src/main/java/com/wediscussmovies/project/service/GenreService.java

    rad4243e r7f36551  
    1414    Genre save(String genreName);
    1515    List<GenreLikes> findAllWithLikes();
    16     void likeGenre(Integer genreId,Integer userId);
    17     void unlikeGenre(Integer genreId,Integer userId);
    1816
    1917}
  • src/main/java/com/wediscussmovies/project/service/MovieService.java

    rad4243e r7f36551  
    66import com.wediscussmovies.project.model.Person;
    77import com.wediscussmovies.project.model.User;
    8 import org.springframework.data.jpa.repository.Query;
    98
    109import java.sql.Date;
     
    1716     List<Movie> searchByTitle(String title);
    1817     Movie findById(Integer id);
    19      List<Integer> listAllIds();
    2018     Movie save(String title, String description, String imageUrl, Date airingDate,Double  rating,
    2119                Integer directorId,List<Integer> actorIds,List<Integer> genreIds);
  • src/main/java/com/wediscussmovies/project/service/PersonService.java

    rad4243e r7f36551  
    55import com.wediscussmovies.project.model.Person;
    66import com.wediscussmovies.project.model.User;
    7 import com.wediscussmovies.project.model.relation.MovieLikes;
    87
    98import java.sql.Date;
    109import java.util.List;
    11 import java.util.stream.Collectors;
    1210
    1311public interface PersonService {
     
    2927    void deleteById(Integer id);
    3028    void addGradePerson(Integer personId, User user, Grade grade);
     29
    3130}
  • src/main/java/com/wediscussmovies/project/service/impl/GenreServiceImpl.java

    rad4243e r7f36551  
    11package com.wediscussmovies.project.service.impl;
    22
    3 import com.wediscussmovies.project.model.User;
    43import com.wediscussmovies.project.model.exception.GenreNotExistException;
    5 import com.wediscussmovies.project.model.exception.UserNotExistException;
    6 import com.wediscussmovies.project.model.primarykeys.GenreLikesPK;
    7 import com.wediscussmovies.project.model.primarykeys.UserGenresPK;
    8 import com.wediscussmovies.project.model.relation.MovieLikes;
    9 import com.wediscussmovies.project.model.relation.UserGenres;
    104import com.wediscussmovies.project.querymodels.GenreLikes;
    11 import com.wediscussmovies.project.repository.GenreLikesRepository;
    125import com.wediscussmovies.project.repository.GenreRepository;
    136import com.wediscussmovies.project.model.Genre;
    14 import com.wediscussmovies.project.repository.UserRepository;
    157import com.wediscussmovies.project.service.GenreService;
    168import org.springframework.stereotype.Service;
     
    2113public class GenreServiceImpl implements GenreService {
    2214    private final GenreRepository genreRepository;
    23     private final UserRepository userRepository;
    24     private final GenreLikesRepository genreLikesRepository;
    2515
    26 
    27     public GenreServiceImpl(GenreRepository genreRepository, UserRepository userRepository, GenreLikesRepository genreLikesRepository) {
     16    public GenreServiceImpl(GenreRepository genreRepository) {
    2817        this.genreRepository = genreRepository;
    29         this.userRepository = userRepository;
    30         this.genreLikesRepository = genreLikesRepository;
    3118    }
    3219
     
    4936    @Override
    5037    public List<GenreLikes> findAllWithLikes() {
    51         List<GenreLikes> genreLikesList = this.genreRepository.findAllWithLikes();
    52         genreLikesList.sort(GenreLikes.sorter);
    53         return genreLikesList;
     38        return this.genreRepository.findAllWithLikes();
    5439    }
    5540
     
    5843        return this.genreRepository.findAll();
    5944    }
    60 
    61     @Override
    62     public void likeGenre(Integer genreId, Integer userId) {
    63         User user = this.userRepository.findById(userId).orElseThrow(() -> new UserNotExistException(userId.toString()));
    64         Genre genre = this.genreRepository.findById(genreId).orElseThrow(() -> new GenreNotExistException(genreId));
    65         this.genreLikesRepository.save(new UserGenres(genre, user));
    66     }
    67 
    68     @Override
    69     public void unlikeGenre(Integer genreId, Integer userId) {
    70         UserGenresPK movieLikesPK = new UserGenresPK(userId, genreId);
    71         this.genreLikesRepository.deleteById(movieLikesPK);
    72     }
    7345}
  • src/main/java/com/wediscussmovies/project/service/impl/MovieServiceImpl.java

    rad4243e r7f36551  
    7676
    7777    @Override
    78     public List<Integer> listAllIds() {
    79         return this.movieRepository.findAllMovieIds();
    80     }
    81 
    82     @Override
    8378    @Transactional
    8479    public Movie save(String title, String description, String imageUrl,
  • src/main/java/com/wediscussmovies/project/service/impl/PersonServiceImpl.java

    rad4243e r7f36551  
    99import com.wediscussmovies.project.model.primarykeys.PersonRatesPK;
    1010import com.wediscussmovies.project.model.relation.MovieActors;
     11import com.wediscussmovies.project.model.relation.MovieRates;
    1112import com.wediscussmovies.project.model.relation.PersonRates;
    12 import com.wediscussmovies.project.repository.*;
     13import com.wediscussmovies.project.repository.MovieActorsRepository;
     14import com.wediscussmovies.project.repository.MovieRepository;
     15import com.wediscussmovies.project.repository.PersonRatesRepository;
     16import com.wediscussmovies.project.repository.PersonRepository;
    1317import com.wediscussmovies.project.model.Person;
    1418import com.wediscussmovies.project.service.PersonService;
     
    2832    private final MovieActorsRepository movieActorsRepository;
    2933    private final PersonRatesRepository personRatesRepository;
     34
    3035
    3136    public PersonServiceImpl(PersonRepository personRepository,
     
    151156
    152157
    153 
    154 
    155158    private void addActorForMovies(Person person, List<Integer> movieIds){
    156159
  • src/main/java/com/wediscussmovies/project/web/controller/GenreController.java

    rad4243e r7f36551  
    11package com.wediscussmovies.project.web.controller;
    22
    3 import com.wediscussmovies.project.LoggedUser;
    4 import com.wediscussmovies.project.model.Genre;
    5 import com.wediscussmovies.project.model.User;
    6 import com.wediscussmovies.project.model.relation.UserGenres;
    7 import com.wediscussmovies.project.querymodels.GenreLikes;
    8 import com.wediscussmovies.project.repository.GenreLikesRepository;
    93import com.wediscussmovies.project.service.GenreService;
    104import org.springframework.stereotype.Controller;
     
    137import org.springframework.web.bind.annotation.RequestMapping;
    148
    15 import java.util.ArrayList;
    16 import java.util.List;
    17 
    189@Controller
    1910@RequestMapping("/genres")
    2011public class GenreController {
    2112    private final GenreService genreService;
    22     private final GenreLikesRepository genreLikesRepository;
    2313
    24     public GenreController(GenreService genreService, GenreLikesRepository genreLikesRepository) {
     14    public GenreController(GenreService genreService) {
    2515        this.genreService = genreService;
    26         this.genreLikesRepository = genreLikesRepository;
    2716    }
    2817    @GetMapping
    2918    public String getGenres(Model model){
    3019        model.addAttribute("genres",genreService.findAllWithLikes());
    31         model.addAttribute("allGenres", genreService.findAll());
    3220        model.addAttribute("contentTemplate","genres");
    33         addModelPropertiesForUser(model);
    3421        return "template";
    3522    }
    36 
    37     private void addModelPropertiesForUser(Model model){
    38         User user = LoggedUser.getLoggedUser();
    39         List<UserGenres> genreLikesList = this.genreLikesRepository.findAllByUser(user);
    40         List<Genre> genres = new ArrayList<>();
    41         for(UserGenres g: genreLikesList){
    42             genres.add(genreService.findById(g.getId().getGenreId()));
    43         }
    44         model.addAttribute("likedGenres",genres);
    45         model.addAttribute("user",user);
    46     }
    4723}
  • src/main/java/com/wediscussmovies/project/web/controller/MovieController.java

    rad4243e r7f36551  
    99import com.wediscussmovies.project.service.PersonService;
    1010import com.wediscussmovies.project.web.DesignFrontMovies;
    11 import com.wediscussmovies.project.web.PageFrontMovies;
    1211import lombok.Data;
    1312import org.springframework.format.annotation.DateTimeFormat;
     
    3837    }
    3938
    40     @GetMapping("/old")
     39    @GetMapping
    4140    public String getMovies(@RequestParam(required = false) String titleQuery, Model model,
    4241                            @RequestParam(required = false) String error){
     
    5655        model.addAttribute("movie_rows", movie_rows);
    5756        model.addAttribute("contentTemplate", "moviesList");
    58         if (error != null && !error.equals(" "))
    59             model.addAttribute("error",error);
    60         return "template";
    61     }
    62 
    63 
    64     @GetMapping
    65     public String getMoviesAlternative(@RequestParam(required = false) String titleQuery, Model model,
    66                             @RequestParam(required = false) String error, @RequestParam(required = false) String page){
    67         if (page==null){
    68             return "redirect:/movies?page=1";
    69         }
    70         addModelPropertiesForUser(model);
    71         List<Movie> movies = PageFrontMovies.getPagedMovies(page, movieService, model);
    72         List<List<Movie>> movie_rows = new ArrayList<>();
    73         DesignFrontMovies.designMovieList(movies,movie_rows);
    74         model.addAttribute("movies", movies);
    75         model.addAttribute("movie_rows", movie_rows);
    76         model.addAttribute("contentTemplate", "moviesListPaged");
    7757        if (error != null && !error.equals(" "))
    7858            model.addAttribute("error",error);
     
    180160    }
    181161    private void addModelProperties(Model model){
    182         model.addAttribute("directors", personService.findAllDirectors());
     162
     163        model.addAttribute("directors",  personService.findAllDirectors());
    183164        model.addAttribute("actors", personService.findAllActors());
    184165        model.addAttribute("genres", genreService.findAll());
     
    188169        model.addAttribute("likedMovies",this.movieService.findLikedMoviesByUser(user));
    189170        model.addAttribute("user",user);
    190     }
     171        }
    191172
    192173}
  • src/main/java/com/wediscussmovies/project/web/controller/PersonController.java

    rad4243e r7f36551  
    11package com.wediscussmovies.project.web.controller;
    22
    3 import com.wediscussmovies.project.LoggedUser;
    43import com.wediscussmovies.project.model.Person;
    5 import com.wediscussmovies.project.model.User;
    64import com.wediscussmovies.project.service.MovieService;
    75import com.wediscussmovies.project.service.PersonService;
     
    137135    }
    138136
    139     private void addModelPropertiesForUser(Model model){
    140         User user = LoggedUser.getLoggedUser();
    141         model.addAttribute("user",user);
    142     }
    143 
    144137
    145138}
  • src/main/resources/static/css/shared.css

    rad4243e r7f36551  
    7070    text-align: center;
    7171}
    72 
    73 #paging-section{
    74     width: 100%;
    75     clear: both;
    76     margin-bottom: 30px;
    77 }
    78 
    79 #inner-paging{
    80     width: fit-content;
    81     margin: auto;
    82 
    83 }
    84 
    85 #button-sub, #button-add{
    86     width: 100px;
    87 }
    88 
    89 #pageInput{
    90     font-size: 100%;
    91     text-align: center;
    92     width: 175px;
    93     margin: auto;
    94 }
    95 
    96 #button-submit-page{
    97     margin: auto;
    98     text-align: center;
    99     margin-top: 7px;
    100     display: none;
    101 }
    102 
    103 .visibility{
    104     transition: 200ms;
    105     opacity: 0;
    106 }
  • src/main/resources/static/js/sharedScript.js

    rad4243e r7f36551  
    44    var elements = $(".elements")
    55    var elementGrade;
    6 
    7 
    8     $("#button-add").on("click", function (){
    9         itemInput = $("#pageInput")
    10         itemInput.val(Number(itemInput.val()) + 1);
    11         $("#button-submit-page").click()
    12     })
    13 
    14     $("#button-sub").on("click", function (){
    15         itemInput = $("#pageInput")
    16         if(Number(itemInput.val()) > 1){
    17             itemInput.val(Number(itemInput.val()) - 1);
    18             $("#button-submit-page").click()
    19         }
    20     })
    21 
    22     $("#searchTitle").on("keyup", function() {
    23         var value = $(this).val().toLowerCase();
    24         console.log(value)
    25         $(".elements div a .title").filter(function() {
    26             console.log($(this).text())
    27             if($(this).text().toLowerCase().indexOf(value) <= -1)
    28                 $(this).parent().parent().parent().addClass("visibility")
    29             else
    30                 $(this).parent().parent().parent().removeClass("visibility")
    31         });
    32     });
    33 
    34 
    356
    367
     
    6637
    6738
    68     /*$(".search-button-title").on("click",function (){
     39    $(".search-button-title").on("click",function (){
    6940        let filter = $("#searchTitle").val()
    7041        console.log(elements)
     
    7950            }
    8051        }
    81     })*/
     52
     53    })
    8254
    8355
    8456   $(".search-button").on("click",function () {
    8557        let filter = $("#searchGenre").val()
     58       console.log(elements)
     59
    8660       for (let item of elements) {
    8761            let genre = $(item).find(".card-genre")
     
    9064            for (let g of genre) {
    9165
    92                 if (( $(g).text().toLowerCase() === filter.toLowerCase() && !$(g).hasClass("visibility") && filter.trim().length != 0)) {
     66                if ($(g).text().toLowerCase() === filter.toLowerCase()) {
    9367                    visible = true
    94                     $(item).removeClass("visibility")
     68                    $(item).css("display","block")
    9569                    break;
    9670                }
    9771            }
    98             if (!visible && filter.trim().length != 0)
    99                 $(item).addClass("visibility")
    100             else
    101                 $(item).removeClass("visibility")
    102 
     72            if (!visible)
     73                $(item).css("display","none")
    10374        }
    10475    });
     
    146117        let url = "api/movies/unlike/"+ $(this).attr("movie-id")+"?userId="+ $(this).attr("user-id")
    147118        ajaxCallLike(url,button,'unlike','Немате оставено допаѓање на филмот!')
    148     })
    149     $(document.body).on("click",".button-add-genre-liked-list",function (){
    150         let button = $(this)
    151         let url = "api/genres/like/"+ $(this).attr("genre-id") + "?userId="+ $(this).attr("user-id")
    152         ajaxCallLikeGenre(url,button,'like','Веќе ви се допаѓа жанрот!')
    153     })
    154     $(document.body).on("click",".button-remove-genre-liked-list",function (){
    155         let button = $(this)
    156         let url = "api/genres/unlike/"+ $(this).attr("genre-id")+"?userId="+ $(this).attr("user-id")
    157         ajaxCallLikeGenre(url,button,'unlike','Немате оставено допаѓање на жанрот!')
    158119    })
    159120    $(".discussion-type").change(function (){
     
    196157
    197158                }
    198                 $(button).remove()
    199159            }
    200160            else {
     
    220180    })
    221181}
    222 
    223 
    224 
    225 function ajaxCallLikeGenre(url,button,type,message){
    226     $.ajax({
    227         url:url,
    228         success:function (data){
    229             if (data){
    230                 let el = $(button).parent().siblings().eq(3)
    231                 console.log(el)
    232                 if (type=="like") {
    233                     $(el).html(parseInt($(el).text()) + 1)
    234                     console.log("da")
    235                 }
    236                 else
    237                     $(el).html(parseInt($(el).text()) - 1)
    238                 $(button).css("display","none")
    239                 let userId = $(button).attr("user-id")
    240                 let genreId=$(button).attr("genre-id")
    241                 if (type==='like') {
    242                     $(button).parent().append("<a class='btn btn-danger button-remove-genre-liked-list' genre-id=" + genreId + " user-id=" + userId + ">💔</a>")
    243                     console.log("da")
    244                 }
    245                 else{
    246                     $(button).parent().append("<a class='btn btn-success button-add-genre-liked-list' genre-id=" + genreId + " user-id=" + userId + ">❤</a>")
    247                 }
    248                 let likes_sibling = $("#"+genreId+"genre")
    249                 value_likes = Number(likes_sibling.text())
    250                 if(type=="like")
    251                     value_likes+=1
    252                 else
    253                     value_likes-=1
    254                 likes_sibling.text(value_likes)
    255                 $(button).remove()
    256             }
    257             else {
    258                 $(button).parent().append("<div>" + message +" <button class='button-confirm'>Ок</button></div>")
    259             }
    260         }
    261     })
    262 }
    263 
    264 
    265182function  ajaxCallRating(url,button,type){
    266183    model = {
  • src/main/resources/templates/genres.html

    rad4243e r7f36551  
    1 <div class="container mb-4" xmlns:sec="http://www.w3.org/1999/xhtml">
     1<div class="container mb-4">
     2  <div class="row">
     3    <div class="col-12">
     4      <div class="table-responsive">
     5        <table class="table table-striped">
     6          <thead>
     7          <tr>
     8            <th scope="col">Име</th>
     9            <th scope="col">Лајкови</th>
     10          </tr>
     11          </thead>
     12          <tbody>
     13          <tr th:each="genre : ${genres}" class="elements">
     14            <td th:text="${genre.getName()}"></td>
     15            <td th:text="${genre.getLikes()}"></td>
    216
    3     <div class="row">
    4       <div class="col-12">
    5         <div class="table-responsive">
    6           <table class="table table-striped">
    7             <thead>
    8             <tr>
    9               <th scope="col">Име</th>
    10               <th scope="col">Лајкови</th>
    11             </tr>
    12             </thead>
    13             <tbody>
    14             <tr th:each="genre : ${genres}" class="elements">
    15               <td th:text="${genre.getName()}"></td>
    16               <td th:text="${genre.getLikes()}" th:id="${genre.getGenreId()+'genre'}"></td>
    17               <td>
    18                 <th:block sec:authorize="isAuthenticated()" th:each="g: ${allGenres}" th:if="${g.getGenreId() == genre.getGenreId()}">
    19                   <a class="btn btn-success button-add-genre-liked-list" th:genre-id="${g.getGenreId()}" th:user-id="${user.getUserId()}" th:if="${!likedGenres.contains(g)}">❤</a>
    20                   <a class="btn btn-danger button-remove-genre-liked-list" th:genre-id="${g.getGenreId()}" th:user-id="${user.getUserId()}" th:if="${likedGenres.contains(g)}">💔</a>
    21                 </th:block>
    22               </td>
    23             </tr>
    24             </tbody>
    25           </table>
    26         </div>
     17          </tr>
     18          </tbody>
     19        </table>
    2720      </div>
    28 
     21    </div>
    2922  </div>
    3023</div>
  • src/main/resources/templates/personShow.html

    rad4243e r7f36551  
    3030        </div>
    3131    </div>
    32     <div style="width: 45%; margin: 25px; float:left; background-color: rgb(200,200,200); padding: 10px; border-radius: 5px">
    33         <h2>
    34             <span>Бројот на оцени кои филмот ги добил:</span>
    35             <span th:text="${movie.getRates().size()}"></span>
    36         </h2>
    37         <hr>
    38         <div th:each="rating: ${movie.getRates()}" style="margin-bottom: 10px; border: 2px solid gray; border-radius: 10px; background-color: lightblue; padding: 10px; border-radius: 10px; min-height: 130px;">
    39             <div style="width: 60%; float:left;">
    40                 <p th:text="${rating.getReason()}" style="text-align: justify"></p>
    41             </div>
    42             <div style="width: 30%; float:right; background-color: darkorange; border-radius: 10px 30px; color: whitesmoke; padding: 10px;">
    43                 <h2 style="text-align: center">Rated:</h2>
    44                 <p th:text="${rating.getStarsRated() + ' out of 10 stars'}" style="text-align: center"></p>
    45             </div>
    46         </div>
    47     </div>
    48     <div style="width: 45%; margin: 25px; float:left; background-color: rgb(200,200,200); padding: 10px; border-radius: 5px">
    49         <h2>
    50             <span>Бројот на лајкови кои филмот ги добил:</span>
    51             <span th:text="${movie.getLikes().size()}"></span>
    52         </h2>
    53         <hr>
    54         <div th:each="liked: ${movie.getLikes()}" style="margin-bottom: 10px; border: 2px solid gray; border-radius: 10px; background-color: lightblue; padding: 10px; border-radius: 10px; min-height: 60px;">
    55             <div style="width: 100%; float:left;">
    56                 <h3  style="text-align: center">
    57                     <span th:text="${liked.getUser().getName() + ' ' + liked.getUser().getSurname()}"></span>
    58                     <span style="color: green; font-size: 100%" >✔</span>
    59                 </h3>
    60             </div>
    61         </div>
    62     </div>
    6332</div>
  • src/main/resources/templates/personsList.html

    rad4243e r7f36551  
    5757
    5858                            </td>
    59 
    60                             <a class="bottom-heart btn btn-success button-add-favourite-list"
    61                                th:movie-id="${person.getMovieId()}"
    62                                th:user-id="${user.getUserId()}"
    63                                th:if="${!likedPersons.contains(movie)}">❤</a>
    64 
    65                             <a class="bottom-heart btn btn-danger button-remove-favourite-list"
    66                                th:movie-id="${person.getMovieId()}" th:user-id="${user.getUserId()}"
    67                                th:if="${likedPersons.contains(movie)}">💔</a>
    68 
    69 
    7059                            </th:block>
    7160
  • target/classes/static/css/shared.css

    rad4243e r7f36551  
    7070    text-align: center;
    7171}
    72 
    73 #paging-section{
    74     width: 100%;
    75     clear: both;
    76     margin-bottom: 30px;
    77 }
    78 
    79 #inner-paging{
    80     width: fit-content;
    81     margin: auto;
    82 
    83 }
    84 
    85 #button-sub, #button-add{
    86     width: 100px;
    87 }
    88 
    89 #pageInput{
    90     font-size: 100%;
    91     text-align: center;
    92     width: 175px;
    93     margin: auto;
    94 }
    95 
    96 #button-submit-page{
    97     margin: auto;
    98     text-align: center;
    99     margin-top: 7px;
    100     display: none;
    101 }
    102 
    103 .visibility{
    104     transition: 200ms;
    105     opacity: 0;
    106 }
  • target/classes/static/js/sharedScript.js

    rad4243e r7f36551  
    44    var elements = $(".elements")
    55    var elementGrade;
    6 
    7 
    8     $("#button-add").on("click", function (){
    9         itemInput = $("#pageInput")
    10         itemInput.val(Number(itemInput.val()) + 1);
    11         $("#button-submit-page").click()
    12     })
    13 
    14     $("#button-sub").on("click", function (){
    15         itemInput = $("#pageInput")
    16         if(Number(itemInput.val()) > 1){
    17             itemInput.val(Number(itemInput.val()) - 1);
    18             $("#button-submit-page").click()
    19         }
    20     })
    21 
    22     $("#searchTitle").on("keyup", function() {
    23         var value = $(this).val().toLowerCase();
    24         console.log(value)
    25         $(".elements div a .title").filter(function() {
    26             console.log($(this).text())
    27             if($(this).text().toLowerCase().indexOf(value) <= -1)
    28                 $(this).parent().parent().parent().addClass("visibility")
    29             else
    30                 $(this).parent().parent().parent().removeClass("visibility")
    31         });
    32     });
    33 
    34 
    356
    367
     
    6637
    6738
    68     /*$(".search-button-title").on("click",function (){
     39    $(".search-button-title").on("click",function (){
    6940        let filter = $("#searchTitle").val()
    7041        console.log(elements)
     
    7950            }
    8051        }
    81     })*/
     52
     53    })
    8254
    8355
    8456   $(".search-button").on("click",function () {
    8557        let filter = $("#searchGenre").val()
     58       console.log(elements)
     59
    8660       for (let item of elements) {
    8761            let genre = $(item).find(".card-genre")
     
    9064            for (let g of genre) {
    9165
    92                 if (( $(g).text().toLowerCase() === filter.toLowerCase() && !$(g).hasClass("visibility") && filter.trim().length != 0)) {
     66                if ($(g).text().toLowerCase() === filter.toLowerCase()) {
    9367                    visible = true
    94                     $(item).removeClass("visibility")
     68                    $(item).css("display","block")
    9569                    break;
    9670                }
    9771            }
    98             if (!visible && filter.trim().length != 0)
    99                 $(item).addClass("visibility")
    100             else
    101                 $(item).removeClass("visibility")
    102 
     72            if (!visible)
     73                $(item).css("display","none")
    10374        }
    10475    });
     
    146117        let url = "api/movies/unlike/"+ $(this).attr("movie-id")+"?userId="+ $(this).attr("user-id")
    147118        ajaxCallLike(url,button,'unlike','Немате оставено допаѓање на филмот!')
    148     })
    149     $(document.body).on("click",".button-add-genre-liked-list",function (){
    150         let button = $(this)
    151         let url = "api/genres/like/"+ $(this).attr("genre-id") + "?userId="+ $(this).attr("user-id")
    152         ajaxCallLikeGenre(url,button,'like','Веќе ви се допаѓа жанрот!')
    153     })
    154     $(document.body).on("click",".button-remove-genre-liked-list",function (){
    155         let button = $(this)
    156         let url = "api/genres/unlike/"+ $(this).attr("genre-id")+"?userId="+ $(this).attr("user-id")
    157         ajaxCallLikeGenre(url,button,'unlike','Немате оставено допаѓање на жанрот!')
    158119    })
    159120    $(".discussion-type").change(function (){
     
    196157
    197158                }
    198                 $(button).remove()
    199159            }
    200160            else {
     
    220180    })
    221181}
    222 
    223 
    224 
    225 function ajaxCallLikeGenre(url,button,type,message){
    226     $.ajax({
    227         url:url,
    228         success:function (data){
    229             if (data){
    230                 let el = $(button).parent().siblings().eq(3)
    231                 console.log(el)
    232                 if (type=="like") {
    233                     $(el).html(parseInt($(el).text()) + 1)
    234                     console.log("da")
    235                 }
    236                 else
    237                     $(el).html(parseInt($(el).text()) - 1)
    238                 $(button).css("display","none")
    239                 let userId = $(button).attr("user-id")
    240                 let genreId=$(button).attr("genre-id")
    241                 if (type==='like') {
    242                     $(button).parent().append("<a class='btn btn-danger button-remove-genre-liked-list' genre-id=" + genreId + " user-id=" + userId + ">💔</a>")
    243                     console.log("da")
    244                 }
    245                 else{
    246                     $(button).parent().append("<a class='btn btn-success button-add-genre-liked-list' genre-id=" + genreId + " user-id=" + userId + ">❤</a>")
    247                 }
    248                 let likes_sibling = $("#"+genreId+"genre")
    249                 value_likes = Number(likes_sibling.text())
    250                 if(type=="like")
    251                     value_likes+=1
    252                 else
    253                     value_likes-=1
    254                 likes_sibling.text(value_likes)
    255                 $(button).remove()
    256             }
    257             else {
    258                 $(button).parent().append("<div>" + message +" <button class='button-confirm'>Ок</button></div>")
    259             }
    260         }
    261     })
    262 }
    263 
    264 
    265182function  ajaxCallRating(url,button,type){
    266183    model = {
  • target/classes/templates/genres.html

    rad4243e r7f36551  
    1 <div class="container mb-4" xmlns:sec="http://www.w3.org/1999/xhtml">
     1<div class="container mb-4">
     2  <div class="row">
     3    <div class="col-12">
     4      <div class="table-responsive">
     5        <table class="table table-striped">
     6          <thead>
     7          <tr>
     8            <th scope="col">Име</th>
     9            <th scope="col">Лајкови</th>
     10          </tr>
     11          </thead>
     12          <tbody>
     13          <tr th:each="genre : ${genres}" class="elements">
     14            <td th:text="${genre.getName()}"></td>
     15            <td th:text="${genre.getLikes()}"></td>
    216
    3     <div class="row">
    4       <div class="col-12">
    5         <div class="table-responsive">
    6           <table class="table table-striped">
    7             <thead>
    8             <tr>
    9               <th scope="col">Име</th>
    10               <th scope="col">Лајкови</th>
    11             </tr>
    12             </thead>
    13             <tbody>
    14             <tr th:each="genre : ${genres}" class="elements">
    15               <td th:text="${genre.getName()}"></td>
    16               <td th:text="${genre.getLikes()}" th:id="${genre.getGenreId()+'genre'}"></td>
    17               <td>
    18                 <th:block sec:authorize="isAuthenticated()" th:each="g: ${allGenres}" th:if="${g.getGenreId() == genre.getGenreId()}">
    19                   <a class="btn btn-success button-add-genre-liked-list" th:genre-id="${g.getGenreId()}" th:user-id="${user.getUserId()}" th:if="${!likedGenres.contains(g)}">❤</a>
    20                   <a class="btn btn-danger button-remove-genre-liked-list" th:genre-id="${g.getGenreId()}" th:user-id="${user.getUserId()}" th:if="${likedGenres.contains(g)}">💔</a>
    21                 </th:block>
    22               </td>
    23             </tr>
    24             </tbody>
    25           </table>
    26         </div>
     17          </tr>
     18          </tbody>
     19        </table>
    2720      </div>
    28 
     21    </div>
    2922  </div>
    3023</div>
  • target/classes/templates/personShow.html

    rad4243e r7f36551  
    3030        </div>
    3131    </div>
    32     <div style="width: 45%; margin: 25px; float:left; background-color: rgb(200,200,200); padding: 10px; border-radius: 5px">
    33         <h2>
    34             <span>Бројот на оцени кои филмот ги добил:</span>
    35             <span th:text="${movie.getRates().size()}"></span>
    36         </h2>
    37         <hr>
    38         <div th:each="rating: ${movie.getRates()}" style="margin-bottom: 10px; border: 2px solid gray; border-radius: 10px; background-color: lightblue; padding: 10px; border-radius: 10px; min-height: 130px;">
    39             <div style="width: 60%; float:left;">
    40                 <p th:text="${rating.getReason()}" style="text-align: justify"></p>
    41             </div>
    42             <div style="width: 30%; float:right; background-color: darkorange; border-radius: 10px 30px; color: whitesmoke; padding: 10px;">
    43                 <h2 style="text-align: center">Rated:</h2>
    44                 <p th:text="${rating.getStarsRated() + ' out of 10 stars'}" style="text-align: center"></p>
    45             </div>
    46         </div>
    47     </div>
    48     <div style="width: 45%; margin: 25px; float:left; background-color: rgb(200,200,200); padding: 10px; border-radius: 5px">
    49         <h2>
    50             <span>Бројот на лајкови кои филмот ги добил:</span>
    51             <span th:text="${movie.getLikes().size()}"></span>
    52         </h2>
    53         <hr>
    54         <div th:each="liked: ${movie.getLikes()}" style="margin-bottom: 10px; border: 2px solid gray; border-radius: 10px; background-color: lightblue; padding: 10px; border-radius: 10px; min-height: 60px;">
    55             <div style="width: 100%; float:left;">
    56                 <h3  style="text-align: center">
    57                     <span th:text="${liked.getUser().getName() + ' ' + liked.getUser().getSurname()}"></span>
    58                     <span style="color: green; font-size: 100%" >✔</span>
    59                 </h3>
    60             </div>
    61         </div>
    62     </div>
    6332</div>
  • target/classes/templates/personsList.html

    rad4243e r7f36551  
    5757
    5858                            </td>
    59 
    60                             <a class="bottom-heart btn btn-success button-add-favourite-list"
    61                                th:movie-id="${person.getMovieId()}"
    62                                th:user-id="${user.getUserId()}"
    63                                th:if="${!likedPersons.contains(movie)}">❤</a>
    64 
    65                             <a class="bottom-heart btn btn-danger button-remove-favourite-list"
    66                                th:movie-id="${person.getMovieId()}" th:user-id="${user.getUserId()}"
    67                                th:if="${likedPersons.contains(movie)}">💔</a>
    68 
    69 
    7059                            </th:block>
    7160
Note: See TracChangeset for help on using the changeset viewer.