浏览代码

Scroll Calendar page to show all schedules

master
kj1352 5 年前
父节点
当前提交
d8dc150e1a
共有 3 个文件被更改,包括 191 次插入8 次删除
  1. +157
    -1
      src/app/calendar/calendar.component.html
  2. +20
    -6
      src/app/calendar/calendar.component.scss
  3. +14
    -1
      src/app/calendar/calendar.component.ts

+ 157
- 1
src/app/calendar/calendar.component.html 查看文件

@@ -1,8 +1,12 @@
<div class="page">
<div class="page" #scrollMe>
<header class="nav-header"> <header class="nav-header">
<button class="close-button" (click)="back()"> <button class="close-button" (click)="back()">
<svg-icon [applyClass]="true" class="icon" src="assets/custom-icons/close.svg"></svg-icon> <svg-icon [applyClass]="true" class="icon" src="assets/custom-icons/close.svg"></svg-icon>
</button> </button>
<button class="show-all-button" (click)="scrollToBottom()">
<span *ngIf="showAllSchedules"> Show All </span>
<span *ngIf="!showAllSchedules"> Show Today </span>
</button>
</header> </header>


<div class="calendar-holder"> <div class="calendar-holder">
@@ -80,6 +84,158 @@


</li> </li>
</ul> </ul>

<div class="preceeding-days-progress" *ngIf="showAllSchedules">
<header> {{ selectedDate - 1 }}, {{ selectedMonth }} {{ selectedYear }} </header>
<ul>
<li class="attended">
<svg-icon [applyClass]="true" class="icon status-icon" src="assets/custom-icons/checkmark.svg"></svg-icon>
<div class="content-holder">
<div class="content">
<label> Mathematics class </label>
<p> 8:00 AM to 10:00 AM </p>
</div>
<span class="status"> Attended </span>
</div>
</li>

<li class="absent">
<svg-icon [applyClass]="true" class="icon status-icon" src="assets/custom-icons/close-circle.svg"></svg-icon>
<div class="content-holder">
<div class="content">
<label> Physics class </label>
<p> 11:00 AM to 1:00 PM </p>
</div>
<span class="status"> Absent </span>
</div>

</li>

<li class="late">
<svg-icon [applyClass]="true" class="icon status-icon" src="assets/custom-icons/warning.svg"></svg-icon>
<div class="content-holder">
<div class="content">
<label> Chemistry class </label>
<p> 2:00 PM to 3:00 PM </p>
</div>
<span class="status"> Late by 10 mins </span>
</div>

</li>

<li class="progress">
<svg-icon [applyClass]="true" class="icon status-icon" src="assets/custom-icons/question-mark.svg"></svg-icon>
<div class="content-holder">
<div class="content">
<label> Social Science class </label>
<p> 4:00 AM to 5:00 PM </p>
</div>
<span class="status"> Progress </span>
</div>

</li>
</ul>

<header> {{ selectedDate - 2 }}, {{ selectedMonth }} {{ selectedYear }} </header>
<ul>
<li class="attended">
<svg-icon [applyClass]="true" class="icon status-icon" src="assets/custom-icons/checkmark.svg"></svg-icon>
<div class="content-holder">
<div class="content">
<label> Mathematics class </label>
<p> 8:00 AM to 10:00 AM </p>
</div>
<span class="status"> Attended </span>
</div>
</li>

<li class="absent">
<svg-icon [applyClass]="true" class="icon status-icon" src="assets/custom-icons/close-circle.svg"></svg-icon>
<div class="content-holder">
<div class="content">
<label> Physics class </label>
<p> 11:00 AM to 1:00 PM </p>
</div>
<span class="status"> Absent </span>
</div>

</li>

<li class="late">
<svg-icon [applyClass]="true" class="icon status-icon" src="assets/custom-icons/warning.svg"></svg-icon>
<div class="content-holder">
<div class="content">
<label> Chemistry class </label>
<p> 2:00 PM to 3:00 PM </p>
</div>
<span class="status"> Late by 10 mins </span>
</div>

</li>

<li class="progress">
<svg-icon [applyClass]="true" class="icon status-icon" src="assets/custom-icons/question-mark.svg"></svg-icon>
<div class="content-holder">
<div class="content">
<label> Social Science class </label>
<p> 4:00 AM to 5:00 PM </p>
</div>
<span class="status"> Progress </span>
</div>

</li>
</ul>

<header> {{ selectedDate - 3 }}, {{ selectedMonth }} {{ selectedYear }} </header>
<ul>
<li class="attended">
<svg-icon [applyClass]="true" class="icon status-icon" src="assets/custom-icons/checkmark.svg"></svg-icon>
<div class="content-holder">
<div class="content">
<label> Mathematics class </label>
<p> 8:00 AM to 10:00 AM </p>
</div>
<span class="status"> Attended </span>
</div>
</li>

<li class="absent">
<svg-icon [applyClass]="true" class="icon status-icon" src="assets/custom-icons/close-circle.svg"></svg-icon>
<div class="content-holder">
<div class="content">
<label> Physics class </label>
<p> 11:00 AM to 1:00 PM </p>
</div>
<span class="status"> Absent </span>
</div>

</li>

<li class="late">
<svg-icon [applyClass]="true" class="icon status-icon" src="assets/custom-icons/warning.svg"></svg-icon>
<div class="content-holder">
<div class="content">
<label> Chemistry class </label>
<p> 2:00 PM to 3:00 PM </p>
</div>
<span class="status"> Late by 10 mins </span>
</div>

</li>

<li class="progress">
<svg-icon [applyClass]="true" class="icon status-icon" src="assets/custom-icons/question-mark.svg"></svg-icon>
<div class="content-holder">
<div class="content">
<label> Social Science class </label>
<p> 4:00 AM to 5:00 PM </p>
</div>
<span class="status"> Progress </span>
</div>

</li>
</ul>
</div>
</section> </section>


<button class="add-button"> <svg-icon [applyClass]="true" class="icon" src="assets/custom-icons/plus.svg"></svg-icon> </button> <button class="add-button"> <svg-icon [applyClass]="true" class="icon" src="assets/custom-icons/plus.svg"></svg-icon> </button>


+ 20
- 6
src/app/calendar/calendar.component.scss 查看文件

@@ -26,6 +26,17 @@
} }
} }


.show-all-button {
margin-left: auto;
background-color: var(--dark-grey);
color: white;
border: 0px;
border-radius: 3px;
height: 35px;
padding: 0 15px;
font-size: 14px;
}

.profile-button { .profile-button {
background-color: transparent; background-color: transparent;
margin-left: auto; margin-left: auto;
@@ -126,14 +137,14 @@
} }


.schedule-details { .schedule-details {
max-height: calc(100vh - 60px);
background-color: white; background-color: white;
padding: 40px 5% 100px;
padding: 0 5% 100px;
overflow: auto; overflow: auto;
border-top-left-radius: 30px; border-top-left-radius: 30px;
border-top-right-radius: 30px; border-top-right-radius: 30px;
position: relative; position: relative;

z-index: 0;
&::before { &::before {
content: ''; content: '';
position: absolute; position: absolute;
@@ -149,6 +160,7 @@
color: var(--dark-grey); color: var(--dark-grey);
font-size: 16px; font-size: 16px;
font-weight: 700; font-weight: 700;
margin-top: 40px;
} }


ul { ul {
@@ -245,17 +257,19 @@
.content-holder { .content-holder {
width: calc(100% - 40px); width: calc(100% - 40px);
display: flex; display: flex;
padding: 0 10px;
padding: 15px 15px;
align-items: center; align-items: center;
box-shadow: 1px 1px 5px var(--light-grey);
border-radius: 7px;


.content { .content {
width: calc(100% - 150px);
flex-grow: 1;
} }


.status { .status {
font-size: 14px; font-size: 14px;
text-align: right; text-align: right;
flex-grow: 1;
margin-left: auto;
} }
} }




+ 14
- 1
src/app/calendar/calendar.component.ts 查看文件

@@ -1,4 +1,4 @@
import { Component, OnInit } from '@angular/core';
import { Component, OnInit, ElementRef, ViewChild } from '@angular/core';
import { Location } from '@angular/common'; import { Location } from '@angular/common';


@Component({ @Component({
@@ -7,6 +7,7 @@ import { Location } from '@angular/common';
styleUrls: ['./calendar.component.scss'] styleUrls: ['./calendar.component.scss']
}) })
export class CalendarComponent implements OnInit { export class CalendarComponent implements OnInit {
@ViewChild('scrollMe') private myScrollContainer: ElementRef;
currentDate: number; currentDate: number;
currentMonth: string; currentMonth: string;
currentYear: number; currentYear: number;
@@ -18,10 +19,22 @@ export class CalendarComponent implements OnInit {
succeedingDays: Array<number> = []; succeedingDays: Array<number> = [];
selectedMonthDays: Array<number> = []; selectedMonthDays: Array<number> = [];


showAllSchedules: boolean = false;

constructor( constructor(
private location: Location private location: Location
) { } ) { }


scrollToBottom() {
this.showAllSchedules = !this.showAllSchedules;

if (this.showAllSchedules) {
try {
this.myScrollContainer.nativeElement.scrollTop = this.myScrollContainer.nativeElement.scrollHeight;
} catch(err) { }
}
}

ngOnInit(): void { ngOnInit(): void {
this.selectToday(); this.selectToday();
} }