PKSelect
  • Document
  • 프로젝트 개요
  • 프로젝트 준비
    • 개발환경 및 팀구성
    • 워크플로우
    • 사전조사 & 의사결정
      • 사전조사
      • 의사결정
        • 기능적 의사결정
        • 비기능적 의사결정
  • 프로젝트 설계
    • FRONTEND 설계 개요
      • FRONTEND 화면 흐름 및 동작
      • 콘텐츠 구성
        • Mainpage
        • Secondpage
      • 디자인 설계 의사결정
        • 디자인 컨셉 및 기능 정의
        • 컴포넌트 디자인
          • PC version
          • Mobile version
        • 로고결정
    • 시스템 구조 설계 개요
      • 시스템 흐름도 및 구조도
    • API Document
  • issue
    • FrontEnd
      • FrontEnd/Device classification issue
      • FrontEnd/cross browsing issue
    • BackEnd
      • BackEnd/lms_login_pw_issue
      • BackEnd/Circular Imports
    • Memo
  • 프로젝트 개발
    • FrontEnd
      • 페이지 UI
        • Mainpage
        • Loading page
        • SPA
        • Secondpage
          • Calendar
          • Table
            • 데이터 정렬
            • table
            • Button
              • 마감기한 지난 항목 삭제 <-> 확인 button
              • 과목 <-> 강의, 과제, 시험 button
              • 종강 D-day button
          • 피드백 이후 추가된 기능
      • 향후 개발 계획
    • BackEnd
      • Flask
        • PKSelecter/
        • controller/
        • app/
        • tests/
      • Server
        • AWS
        • Nginx + wsgi + Flask
        • (Sercurity) HTTPS
    • Prototype
  • 프로젝트 결과
    • 결과 보고
      • 개요
      • FrontEnd
      • BackEnd
      • PKSelect, Beta Service
      • 베타 서비스 설문조사
        • 서비스 사용성 평가
        • 베타 서비스 피드백
      • Google analytics 적용
      • 중간 발표 질문 정리
      • 최종 결과 보고
        • 피드백 적용 기능
Powered by GitBook
On this page

Was this helpful?

  1. 프로젝트 개발
  2. FrontEnd
  3. 페이지 UI
  4. Secondpage
  5. Table

데이터 정렬

login 성공 후 응답 받은 json 데이터를 강의, 과제, 시험 별로 분류를 한 뒤, 마감 기한이 임박한 과목부터 표시하고 과목 안에서도 마감기한이 임박한 항목 순으로 정렬한다.

let lms_data_json = new Array(json['lms_data'].length)

                for (let i = 0; i < json['lms_data'].length; i++) {
                    lms_data_json[i] = json['lms_data'][i]
                }
                //강의, 과제, 시험 별로 분류
                let subject = new Array(3)

                for (let s = 0; s < 3; s++) {
                    subject[s] = new Array(0)
                }

                for (let i = 0; i < lms_data_json.length; i++) {
                    if (lms_data_json[i]['class'] == '수업') {
                        subject[0].push(lms_data_json[i])
                    } else if (lms_data_json[i]['class'] == '과제') {
                        subject[1].push(lms_data_json[i])
                    } else {
                        subject[2].push(lms_data_json[i])
                    }
                }


                //subject[]를 날짜 순으로 정렬
                for (let s = 0; s < 3; s++) {
                    subject[s] = subject[s].sort((a, b) => {
                        if (a['date_deadline'] > b['date_deadline']) {
                            return 1;
                        } else if (a['date_deadline'] < b['date_deadline']) {
                            return -1;
                        }
                    })
                }

                //list_sequence[]에 강의,과제,시험 별로 존재하는 과목을 1번만 날짜 순서대로 추출
                let list_sequence = new Array(3);
                for (let s = 0; s < 3; s++) {
                    list_sequence[s] = new Array(0);
                    list_sequence[s] = subject[s].map(function (Subject_name) {
                        // arr : subject_name만 추출
                        return Subject_name['subject_name'];
                    }).filter(function (Subject_name, index, arr) {
                        // arr.indexOf(Subject_name): arr에 속하는 Subject_name의 인덱스가 
                        // 지금 계산 중인 엔덱스와 같으면 반환
                        return arr.indexOf(Subject_name) === index;
                    });
                }

                // list_sequence[]에 쌓인 과목 순으로 subject[]추출해서 answer[]에 push
                let list_sequence_deque = new Array(3)
                let len_deque = new Array(3)
                let answer = new Array(3)
                for (let s = 0; s < 3; s++) {
                    list_sequence_deque[s] = new Deque
                    for (let i = 0; i < list_sequence[s].length; i++) {
                        list_sequence_deque[s].push_back(list_sequence[s][i])
                    }
                    len_deque[s] = list_sequence_deque[s]['arr'].length
                    answer[s] = new Array()

                    for (let i = 0; i < len_deque[s]; i++) {
                        let current_subject = list_sequence_deque[s].pop_front()
                        for (let j = 0; j < subject[s].length; j++) {
                            if (current_subject == subject[s][j]['subject_name']) {
                                answer[s].push(subject[s][j])
                            } else {
                                continue;
                            }
                        }
                    }
                }
PreviousTableNexttable

Last updated 3 years ago

Was this helpful?