Compare commits

...

59 Commits

Author SHA1 Message Date
Hykilpikonna c97a202bd5 [U] Release v0.4.6.1087 2019-11-11 22:42:42 -05:00
Hykilpikonna b11332953c [F] Fix dark theme logo displaying issue 2019-11-11 22:41:26 -05:00
Hykilpikonna d5f8649b80 [S] Adjust logo font weight 2019-11-11 22:32:01 -05:00
Hykilpikonna fab173afa3 [S] Adjust logo font size 2019-11-11 22:31:48 -05:00
Hykilpikonna 41fbf70428 [S] Create a gradient for logo 2019-11-11 22:30:41 -05:00
Hykilpikonna 1df427b4b4 [S] Add right margin to icon 2019-11-11 22:15:22 -05:00
Hykilpikonna 96a0d3bef6 [S] Remove old logo style 2019-11-11 22:15:13 -05:00
Hykilpikonna 2d917d7858 [S] Limit logo height 2019-11-11 22:15:03 -05:00
Hykilpikonna 2e851e5541 [S] Add logo in nav bar 2019-11-11 22:14:44 -05:00
Hykilpikonna b5ff93bf58 [+] Import Favicon into index.html 2019-11-11 22:09:02 -05:00
Hykilpikonna a10350756f [+] Generate 32px favicon 2019-11-11 22:08:43 -05:00
Hykilpikonna 133765131c [O] Limit logo image width 2019-11-11 21:57:18 -05:00
Hykilpikonna 723a72c1ab [+] Copy logo to assets 2019-11-11 21:53:48 -05:00
Hykilpikonna 6567aeda7d [+] Export logo as png 2019-11-11 21:53:00 -05:00
Hykilpikonna 2182ff8e74 [M] Move vue logo to icon making dir 2019-11-11 21:52:41 -05:00
Hykilpikonna 25865fb372 [+] Remake logo again 2019-11-11 21:52:21 -05:00
Hykilpikonna 81ffeb8d85 [+] Remake logo 2019-11-11 21:51:40 -05:00
Hykilpikonna 19203f3629 [+] Support email login 2019-11-10 17:14:43 -05:00
Hykilpikonna 82ad8f026b [O] Optimize field types 2019-11-10 17:14:33 -05:00
Hykilpikonna 38629a9e34 [O] Specify username format 2019-11-10 17:10:38 -05:00
Hykilpikonna 4499232544 [S] Remove card paddings 2019-11-10 16:39:33 -05:00
Hykilpikonna 960f30295c [S] Specify background color is transparent 2019-11-10 16:39:21 -05:00
Hykilpikonna 415373559c [S] Darken colors 2019-11-10 16:38:17 -05:00
Hykilpikonna a7d22e1620 [S] Add drop shadow to tooltip 2019-11-10 14:27:59 -05:00
Hykilpikonna f88ef7284f [-] Disable dark mode by default 2019-11-10 14:22:18 -05:00
Hykilpikonna 380023668f [S] Apply dark background to course page too 2019-11-10 14:21:41 -05:00
Hykilpikonna fb90900045 [S] Make graph white 2019-11-10 14:15:08 -05:00
Hykilpikonna ab511a706a [S] Compact css entries 2019-11-10 14:14:14 -05:00
Hykilpikonna 407a2889d1 [S] Use css variables 2019-11-10 14:13:38 -05:00
Hykilpikonna 840775314a [S] Fix prev-course and next-course shadow 2019-11-10 14:06:40 -05:00
Hykilpikonna 85c1d93608 [S] Apply darker background to #app-content too 2019-11-10 14:05:23 -05:00
Hykilpikonna 8825886c5c [S] Emphesize course name 2019-11-10 14:04:25 -05:00
Hykilpikonna e924c00f0d [S] Lighten expansion color 2019-11-10 14:00:32 -05:00
Hykilpikonna 03826d108d [S] Add layer effect to course card expansion 2019-11-10 13:59:38 -05:00
Hykilpikonna 1e04b4ad70 [S] Apply light text to buttons too 2019-11-10 13:59:13 -05:00
Hykilpikonna 3ac37d980c [S] Emphesize percent entry box 2019-11-10 13:54:21 -05:00
Hykilpikonna da8cec72b4 [S] Emphesize max entry box 2019-11-10 13:54:10 -05:00
Hykilpikonna 903345b86a [S] Comment overall css 2019-11-10 13:51:24 -05:00
Hykilpikonna 9ed297431d [S] Apply dark background to entry box 2019-11-10 13:50:56 -05:00
Hykilpikonna e763a1ac88 [S] Adjust backtop box shadow 2019-11-10 13:47:50 -05:00
Hykilpikonna 5b3bdc2f1f [S] Apply light text to span too 2019-11-10 13:46:10 -05:00
Hykilpikonna 65b4a68f7e [S] Remove el-card border 2019-11-10 13:44:08 -05:00
Hykilpikonna 7ff885e28b [S] Make overall background darker 2019-11-10 13:44:01 -05:00
Hykilpikonna b936f8a0ca [S] Default use light background for foreground 2019-11-10 13:40:37 -05:00
Hykilpikonna 93a01aeb5d [S] Fix padding under main frame 2019-11-10 13:35:48 -05:00
Hykilpikonna 0326c0bf14 [S] Use gray color with dark background 2019-11-10 13:34:51 -05:00
Hykilpikonna cb91a20844 [S] Apply dark background to all div 2019-11-10 13:34:39 -05:00
Hykilpikonna 9fdb7461ba [S] Create dark css 2019-11-10 13:28:47 -05:00
Hykilpikonna 15b51020fc [O] Make cards clickable 2019-11-10 13:22:26 -05:00
Hykilpikonna 2938621b73 [O] Scroll to top on page change 2019-11-10 13:22:15 -05:00
Hykilpikonna 624158f3d4 [O] Show prev-course and next-course above others 2019-11-10 13:22:02 -05:00
Hykilpikonna 602a8b9c46 [+] Add back-to-top button 2019-11-10 13:21:35 -05:00
Hykilpikonna 62338358d1 [S] Add radial color gradient to the scatter plot points 2019-11-10 13:12:22 -05:00
Hykilpikonna 9bc69a81af [+] Show label on the top 2019-11-10 13:11:51 -05:00
Hykilpikonna c93b1e4eec [+] Resize scatter plot circles according to their weight 2019-11-10 13:09:18 -05:00
Hykilpikonna d30728e2e9 [+] Add assignmentCount to AssignmentType interface 2019-11-10 13:08:22 -05:00
Hykilpikonna 7d86b7a2b9 [+] Import chroma-js instead 2019-11-10 13:02:18 -05:00
Hykilpikonna bb31e18ad5 [+] Add chroma-js dependency 2019-11-10 12:37:52 -05:00
Hykilpikonna 73dc5f6a51 [O] Optimize course-scatter with course.assignmentTypes 2019-11-10 12:05:53 -05:00
26 changed files with 243 additions and 82 deletions
Binary file not shown.
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

+60 -2
View File
@@ -947,6 +947,11 @@
}
}
},
"@types/chroma-js": {
"version": "1.4.3",
"resolved": "https://registry.npmjs.org/@types/chroma-js/-/chroma-js-1.4.3.tgz",
"integrity": "sha512-m33zg9cRLtuaUSzlbMrr7iLIKNzrD4+M6Unt5+9mCu4BhR5NwnRjVKblINCwzcBXooukIgld8DtEncP8qpvbNg=="
},
"@types/events": {
"version": "3.0.0",
"resolved": "https://registry.npm.taobao.org/@types/events/download/@types/events-3.0.0.tgz",
@@ -2510,6 +2515,14 @@
"integrity": "sha1-oY8eCyacimpdPIbrKYvrFMPde/Y=",
"dev": true
},
"chroma-js": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/chroma-js/-/chroma-js-2.1.0.tgz",
"integrity": "sha512-uiRdh4ZZy+UTPSrAdp8hqEdVb1EllLtTHOt5TMaOjJUvi+O54/83Fc5K2ld1P+TJX+dw5B+8/sCgzI6eaur/lg==",
"requires": {
"cross-env": "^6.0.3"
}
},
"chrome-trace-event": {
"version": "1.0.2",
"resolved": "https://registry.npm.taobao.org/chrome-trace-event/download/chrome-trace-event-1.0.2.tgz",
@@ -3113,6 +3126,52 @@
"sha.js": "^2.4.8"
}
},
"cross-env": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/cross-env/-/cross-env-6.0.3.tgz",
"integrity": "sha512-+KqxF6LCvfhWvADcDPqo64yVIB31gv/jQulX2NGzKS/g3GEVz6/pt4wjHFtFWsHMddebWD/sDthJemzM4MaAag==",
"requires": {
"cross-spawn": "^7.0.0"
},
"dependencies": {
"cross-spawn": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz",
"integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==",
"requires": {
"path-key": "^3.1.0",
"shebang-command": "^2.0.0",
"which": "^2.0.1"
}
},
"path-key": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.0.tgz",
"integrity": "sha512-8cChqz0RP6SHJkMt48FW0A7+qUOn+OsnOsVtzI59tZ8m+5bCSk7hzwET0pulwOM2YMn9J1efb07KB9l9f30SGg=="
},
"shebang-command": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
"requires": {
"shebang-regex": "^3.0.0"
}
},
"shebang-regex": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="
},
"which": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.1.tgz",
"integrity": "sha512-N7GBZOTswtB9lkQBZA4+zAXrjEIWAUOB93AvzUiudRzRxhUdLURQ7D/gAIMY1gatT/LTbmbcv8SiYazy3eYB7w==",
"requires": {
"isexe": "^2.0.0"
}
}
}
},
"cross-spawn": {
"version": "6.0.5",
"resolved": "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-6.0.5.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcross-spawn%2Fdownload%2Fcross-spawn-6.0.5.tgz",
@@ -6266,8 +6325,7 @@
"isexe": {
"version": "2.0.0",
"resolved": "https://registry.npm.taobao.org/isexe/download/isexe-2.0.0.tgz",
"integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
"dev": true
"integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
},
"isobject": {
"version": "3.0.1",
+2
View File
@@ -8,6 +8,8 @@
"lint": "vue-cli-service lint"
},
"dependencies": {
"@types/chroma-js": "^1.4.3",
"chroma-js": "^2.1.0",
"core-js": "^2.6.5",
"echarts": "^4.2.1",
"element-ui": "^2.11.1",
+1 -1
View File
@@ -6,7 +6,7 @@
<!--meta name="viewport" content="width=device-width,initial-scale=1.0"-->
<meta name="viewport" content="width=1024">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<link rel="icon" href="<%= BASE_URL %>logo@32px.png">
<title>Veracross Analyzer</title>
</head>
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

After

Width:  |  Height:  |  Size: 60 KiB

+54 -1
View File
@@ -5,7 +5,7 @@
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
margin-bottom: 100px;
padding-bottom: 100px;
}
#app-content
@@ -28,6 +28,59 @@
--font: 'Avenir', Helvetica, Arial, sans-serif;
}
.dark
{
--dark-layer-1: #383838;
--dark-layer-2: #525252;
--dark-layer-3: #6c6c6c;
--dark-foreground: #e9e9e9;
background: var(--dark-layer-1) !important;
div, ul
{
background: var(--dark-layer-2) !important;
color: var(--dark-foreground) !important;
}
span, button
{
color: var(--dark-foreground) !important;
}
.el-card
{
border: none !important;
}
// Overall
#overall, #overall-course, .overall-span, #app-content
{
background: var(--dark-layer-1) !important;
}
// Course card
.entry-box, .none .unread-number {background: #a1a1a1 !important}
.entry-box.max {background-color: #949494 !important}
.entry-box.percent {background-color: #a7a490 !important}
.course-name {color: #cffff6 !important}
.course-card-content.expand, .assignment-entry, .unread-row,
.unread-row .el-col, #assignment-type-head, .course-page-graph.el-col
{
background-color: var(--dark-layer-3) !important;
}
.overall-span.el-col, .course-page-graph.el-col
{
div, span
{
background: #f9f9f9 !important;
color: var(--dark-layer-1) !important;
}
}
}
// ##############
// # Global CSS #
// ##############
+7
View File
@@ -5,6 +5,13 @@
}
// Logo image
#login-logo-image
{
width: 80%;
margin-bottom: -15px;
}
// Parent overlay
.login-overlay
{
+6 -3
View File
@@ -11,11 +11,11 @@ import VersionUtils from '@/logic/utils/version-utils';
})
export default class Login extends Vue
{
public username: any = '';
public password: any = '';
public username: string = '';
public password: string = '';
public loading: boolean = false;
public error: String = '';
public error: string = '';
/**
* This is called when the instance is created.
@@ -68,6 +68,9 @@ export default class Login extends Vue
// Make login button loading
this.loading = true;
// Format it
this.username = this.username.toLowerCase().replace(/ /g, '').replace(/@.*/g, '');
// Fetch request
App.http.post('/login', {username: this.username, password: this.password})
.then(response =>
+3 -3
View File
@@ -2,18 +2,18 @@
<div id="login" class="login-overlay">
<div class="login-vertical-center">
<div class="login-panel">
<img alt="Vue logo" src="../../assets/logo.png">
<img id="login-logo-image" alt="logo" src="../../assets/logo.png">
<h1>Veracross Analyzer</h1>
<form id="login-form">
<el-input v-model="username"
placeholder="School Username"
placeholder="SJP Username (Eg. flast21)"
:class="{'input-error': error !== ''}"
@keyup.enter.native="onEnter">
</el-input>
<el-input v-model="password"
placeholder="Veracross Password"
placeholder="SJP Password"
show-password=""
:class="{'input-error': error !== ''}"
@keyup.enter.native="onEnter">
+33 -12
View File
@@ -48,24 +48,41 @@
height: 60px;
// Center text
display: inline-flex;
align-items: center;
// Margins
margin-left: 20px;
margin-right: 8px;
// Font
font: bold 16px arial;
display: inline-flex;
// Shadow effect
-webkit-background-clip: text;
background-color: #b1b1b1;
color: transparent;
text-shadow: 1px 1px 0 rgba(255, 255, 255, 0.85);
// Make it non-clickable
pointer-events: none;
#nav-logo
{
height: 70%;
margin-right: 10px;
}
#nav-logo-text
{
// Color
color: #6bbeff !important;
background: linear-gradient(90deg,
rgba(90,177,239,1) 0%,
rgba(25,212,174,1) 100%) !important;
// Font
font-weight: 500;
font-size: 18px;
}
#nav-logo-text.logo-text
{
// Override the background
-webkit-text-fill-color: transparent !important;
-webkit-background-clip: text !important;
}
}
#next-course
@@ -76,7 +93,7 @@
bottom: 0;
left: 25%;
padding-top: 2px;
box-shadow: 0 -2px 9px 0 #ecebeb;
box-shadow: 0 -2px 9px 0 #00000029;
}
footer
@@ -85,6 +102,8 @@ footer
left: 0;
bottom: 0;
width: 100%;
z-index: 1000;
}
#prev-course
@@ -95,7 +114,9 @@ footer
top: 61px;
left: 25%;
padding-bottom: 2px;
box-shadow: 0 2px 9px 0 #ecebeb;
box-shadow: 0 2px 9px 0 #00000029;
z-index: 1001;
}
.nav-course-operations
+3
View File
@@ -106,6 +106,9 @@ export default class Navigation extends Vue
// Update title
document.title = 'Veracross Analyzer - ' + this.getTitle(newIndex);
// Scroll to top
window.scrollTo(0, 0);
}
/**
+5 -1
View File
@@ -4,7 +4,8 @@
:default-active="activeIndex" @select="onSelect">
<div id="nav-title">
Veracross Analyzer
<img id="nav-logo" alt="logo" src="../../assets/logo.png">
<span id="nav-logo-text" class="logo-text">Veracross Analyzer</span>
</div>
<el-menu-item index="overall">Overall</el-menu-item>
@@ -44,6 +45,9 @@
NEXT COURSE
</div>
</footer>
<!-- Back to top -->
<el-backtop style="box-shadow: rgba(0, 0, 0, 0.23) 0 3px 11px 0;"></el-backtop>
</div>
</template>
+1 -1
View File
@@ -7,7 +7,7 @@ export default class Constants
public static API_URL: string = 'https://va.hydev.org/api';
/** Current version */
public static VERSION: string = '0.4.3.1006';
public static VERSION: string = '0.4.6.1087';
/** Minimum version that still supports the same cookies */
public static MIN_SUPPORTED_VERSION: string = '0.3.4.561';
+3 -1
View File
@@ -36,6 +36,7 @@ export interface AssignmentType
scoreMax: number
score: number
percent: number
assignmentCount: number
}
export default class Course
@@ -257,7 +258,8 @@ export default class Course
// Return
return {name: type, id: typeAssignments[0].typeId, weight: +(weight * 100).toFixed(2),
scoreMax: scoreMax, score: score, percent: +(score / scoreMax * 100).toFixed(2)}
scoreMax: scoreMax, score: score, percent: +(score / scoreMax * 100).toFixed(2),
assignmentCount: typeAssignments.length}
})
}
+9
View File
@@ -15,6 +15,7 @@ export default class GraphUtils
return {
// Color
color: Constants.THEME.colors,
backgroundColor: 'transparent',
// Title
title:
@@ -87,4 +88,12 @@ export default class GraphUtils
padding: [3, 5]
}
}
/**
* CSS shadow string (extraCssText) for tooltip
*/
static tooltipCssShadow()
{
return {extraCssText: 'box-shadow: 0 0 3px rgba(0, 0, 0, 0.3);'}
}
}
+3 -7
View File
@@ -4,25 +4,21 @@
<div class="course-card-content expand">
<el-row>
<el-col :span="24">
<el-col :span="24" class="course-page-graph">
<el-card class="large overall-line-card vertical-center">
<course-scatter :course="course"></course-scatter>
</el-card>
</el-col>
<el-col :span="0">
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-col :span="12" class="course-page-graph">
<el-card class="large overall-line-card vertical-center type-graph"
body-style="padding: 0">
<TypeRadar :course="course"></TypeRadar>
</el-card>
</el-col>
<el-col :span="12">
<el-col :span="12" class="course-page-graph">
<el-card class="large overall-line-card vertical-center type-graph"
body-style="padding: 0">
<TypePie :course="course"></TypePie>
@@ -4,6 +4,7 @@ import {FormatUtils} from '@/logic/utils/format-utils';
import moment from 'moment';
import Course, {Assignment} from '@/logic/course';
import GraphUtils from '@/logic/utils/graph-utils';
import chroma from 'chroma-js';
@Component({
})
@@ -61,6 +62,8 @@ export default class CourseScatter extends Vue
// Tooltip
tooltip:
{
...GraphUtils.tooltipCssShadow(),
trigger: 'axis',
axisPointer:
{
@@ -68,7 +71,7 @@ export default class CourseScatter extends Vue
},
formatter: (ps: any[]) => moment(ps[0].data[0]).format('MMM DD, YYYY') + '<br>' + ps.map(p =>
`${GraphUtils.DOT.replace('{color}', p.color)}
${FormatUtils.limit(p.data[2], 22)}: ${p.data[1]}%<br>`).join('')
${FormatUtils.limit(p.data[2].description, 22)}: ${p.data[1]}%<br>`).join('')
},
// Legend
@@ -95,28 +98,47 @@ export default class CourseScatter extends Vue
*/
private series()
{
// Scatter data point style
let itemStyle =
{
normal:
{
opacity: 0.8,
shadowBlur: 10,
shadowOffsetX: 0,
shadowOffsetY: 0,
shadowColor: 'rgba(0, 0, 0, 0.2)'
}
};
// Create scatter plots
let map = this.mapAssignments();
let series: any[] = Array.from(map, ([type, assignments]) =>
let series: any[] = this.course.assignmentTypes.map((type, i) =>
{
return {
type: 'scatter',
name: type,
data: CourseScatter.assignmentsData(assignments),
itemStyle: itemStyle
name: type.name,
data: CourseScatter.assignmentsData(this.course.assignments.filter(a => a.typeId == type.id)),
symbolSize: (data: any) => Math.max(Math.sqrt(type.weight * data[2].scoreMax / type.scoreMax) * 12, 12),
label:
{
emphasis:
{
show: true,
formatter: (p: any) => p.data[2].description,
position: 'top'
}
},
itemStyle:
{
normal:
{
opacity: 0.7,
shadowBlur: 10,
shadowOffsetX: 0,
shadowOffsetY: 0,
shadowColor: 'rgba(0, 0, 0, 0.2)',
color:
{
type: 'radial',
x: 0.4,
y: 0.3,
colorStops:
[
{offset: 0, color: chroma(Constants.THEME.colors[i]).set('hsl.l', 0.9).css()},
{offset: 1, color: Constants.THEME.colors[i]}
]
}
}
}
}
});
@@ -131,27 +153,6 @@ export default class CourseScatter extends Vue
return series;
}
/**
* Map assignments to {assignmentType, [assignment]} format.
*/
private mapAssignments(): Map<string, Assignment[]>
{
// Define map
let map = new Map();
// Move data to map
this.course.assignments.forEach(a =>
{
// Null case, create empty array
if (!map.has(a.type)) map.set(a.type, []);
// Put data
map.get(a.type).push(a);
});
return map;
}
/**
* Convert assignments to series data
*
@@ -160,6 +161,6 @@ export default class CourseScatter extends Vue
private static assignmentsData(assignments: Assignment[])
{
return assignments.filter(a => a.complete == 'Complete')
.map(a => [a.time, (a.score / a.scoreMax * 100).toFixed(2), a.description]);
.map(a => [a.time, (a.score / a.scoreMax * 100).toFixed(2), a]);
}
}
+1 -1
View File
@@ -31,7 +31,7 @@ export default class TypePie extends Vue
...GraphUtils.getBaseSettings('Assignment Type Weight',
'How much each type of assignment affect your average'),
tooltip: {},
tooltip: GraphUtils.tooltipCssShadow(),
// Data
series:
+1 -1
View File
@@ -66,7 +66,7 @@ export default class TypeRadar extends Vue
center: ['50%', '55%']
},
tooltip: {},
tooltip: GraphUtils.tooltipCssShadow(),
// Data
series:
@@ -1,5 +1,5 @@
<template>
<div id="course-head" class="course-card-content main vertical-center">
<div id="course-head" class="course-card-content main vertical-center" @click="redirect">
<el-row>
<el-col :span="12" class="course-col-name">
<div v-if="clickable" class="course-name clickable" @click="redirect">{{course.name}}</div>
@@ -44,6 +44,8 @@ export default class OverallLine extends Vue
// Tooltip
tooltip:
{
... GraphUtils.tooltipCssShadow(),
trigger: 'axis'
},
+6 -6
View File
@@ -1,8 +1,8 @@
<template>
<div id="overall">
<el-row v-if="getGPA().gpa !== -1">
<el-col :span="4">
<el-card class="large gpa-card vertical-center">
<el-col :span="4" class="overall-span">
<el-card class="large gpa-card vertical-center" body-style="padding: 0">
<div style="padding: 14px;">
<span class="gpa header">GPA:</span>
<span class="gpa text">{{getGPA().gpa}}</span>
@@ -13,13 +13,13 @@
</div>
</el-card>
</el-col>
<el-col :span="14">
<el-card class="large overall-line-card vertical-center">
<el-col :span="14" class="overall-span">
<el-card class="large overall-line-card vertical-center" body-style="padding: 0 10px">
<overall-line :courses="courses"></overall-line>
</el-card>
</el-col>
<el-col :span="6">
<el-card class="large overall-bar-card vertical-center">
<el-col :span="6" class="overall-span">
<el-card class="large overall-bar-card vertical-center" body-style="padding: 0 10px">
<overall-bar :courses="courses"></overall-bar>
</el-card>
</el-col>