Home

Jeong-Yoon

01 May 2019

Study manager 프로젝트 진행과정11

2019.05.01 Study Manager 프로젝트 진행과정 11

Study Detail 화면에서 curriculumDetail show(), hide() 기능

  • Curriculum을 눌렀을 떄, CurriculumDetail 내용이 나오도록 해야했다.
  • Curriculum을 누르면 내용이 나오도록 코드를 작성하니까 누를 때마다 내용이 추가되는 문제가 있었다.
  • Curriculum을 눌렀을 때, 한번만 내용이 나오고 다시 누르면 내용이 없어지도록 코드를 작성했다.
    • 화살표 아이콘을 넣어서 누르기 전에는 아래 방향으로, 누르면 위 방향으로 향하게 했다.
    • 아이콘 방향에 따라서 작동할 수 있도록 if문을 사용했다.
  • 눌렀을 때, 밑에 내용을 눌러도 맨 위에 있는 화살표가 변하는 문제가 있었다.
    • curriculumId를 아이콘의 id에 넣어서 저장했더니 누르는 위치에 있는 아이콘이 반응했다.
  • Curriculum Detail이 사라지기는 하는데, 다시 나타날 때 내용이 아이콘을 누른만큼 더해져서 나타났다.
    • 내용을 저장하는 curriculumDetailDiv가 empty 일때만 ajax를 실행할 수 있도록 했다.
  • 내용을 나타낼 때는 show()를 숨길때는 hide()를 사용했다.

     function curriculumDetail(curriculumId) {
       
        var token = $("meta[name='_csrf']").attr("content");
        var header = $("meta[name='_csrf_header']").attr("content");
       
        var JSONObject = {'curriculumId': curriculumId};
        var jsonData = JSON.stringify(JSONObject);
        var curriculumDetailDiv = "";
       
        if (document.getElementById("myDIV2"+curriculumId).style.display == 'none') {
           document.getElementById("myDIV"+curriculumId).style.display = 'none';
           document.getElementById("myDIV2"+curriculumId).style.display = 'block';
           if ($('#curriculumDetails' + curriculumId).empty()) {
                 $.ajax({
                    url: '/api/curriculumDetail',
                    method: 'post',
                    data: jsonData,
                    async: false,
                    contentType: "application/json",
                    beforeSend: function( xhr ) {
                       xhr.setRequestHeader(header, token);
                    },
                    success: function (data) {
                       for (var i = 0; i < data.length; i++) {
                             curriculumDetailDiv = $('<li style="margin-left: 5%; margin-bottom:1%;" onclick="gotoContent('+ curriculumId +','+data[i].curriculumDetailId+')" value="' + data[i].curriculumDetailContent + '">' + data[i].curriculumDetailContent + '</li> ' +
                              '<input type="hidden" id="curriculumDetailContent'+data[i].curriculumDetailId+'" value="' + data[i].curriculumDetailContent + '"/>' +
                              '<input type="hidden" id="curriculumDetailId'+data[i].curriculumDetailId+'" value="' + data[i].curriculumDetailId + '"/>');
                             curriculumDetailDiv.appendTo($('#curriculumDetails' + curriculumId));
                       }
                    },
                    error: function (err) {
                       console.log(err.toString());
                    }
                 });
           }
           $('#curriculumDetails' + curriculumId).show();
        } else {
           document.getElementById("myDIV"+curriculumId).style.display = 'block';
           document.getElementById("myDIV2"+curriculumId).style.display = 'none'
           $('#curriculumDetails' + curriculumId).hide();
        }
     }
    

Study content 화면으로 내용 보내기, Study detail 화면으로 돌아가기

  • Study content 화면으로 내용을 보낼 때, 각 Curriculum의 맨 처음 Curriculum detail만 데이터가 전송되는 문제가 있었다.
    • 전송하는 모든 내용의 id마다 curriculumId와 curriculumDetailId를 붙였더니 문제를 해결할 수 있었다.
      function gotoContent(curriculumId,curriculumDetailId) {
    
          var curriculumDetailContent = $('#curriculumDetailContent'+curriculumDetailId).val();
          var curriculumDetailId = $('#curriculumDetailId'+curriculumDetailId).val();
          var curriculumContent = $('input[id=curriculumContent'+curriculumId+']').val();
          ...
    
      }
    
  • Study content 화면에서 Study Detail 화면으로 돌아가도록 history를 이용하였다.

     function gotolist() {
        history.go(-1);
     }
    

Til next time,
Jeong-Yoon at 00:00

scribble