Dodano podświetlenie rangi supportera w karcie stacji

This commit is contained in:
2020-09-14 23:43:21 +02:00
parent acb4f03b7f
commit e71a9e01f2
4 changed files with 48 additions and 47 deletions
+3 -3
View File
@@ -80,8 +80,8 @@
<div class="dispatcher">
<div
class="dispatcher-level flex"
:style="calculateExpStyle(stationInfo.dispatcherExp)"
>{{stationInfo.online ? computedExp : ""}}</div>
:style="calculateExpStyle(stationInfo.dispatcherExp, stationInfo.dispatcherIsSupporter)"
>{{stationInfo.online ? computedDispatcherExp : ""}}</div>
<div class="dispatcher-info">
<div class="dispatcher-name">
<a
@@ -175,7 +175,7 @@ export default class StationCard extends styleMixin {
cardMode: number = 0;
get computedExp(): string {
get computedDispatcherExp(): string {
return this.stationInfo.dispatcherExp < 2
? "L"
: `${this.stationInfo.dispatcherExp}`;
+38 -43
View File
@@ -1,52 +1,47 @@
import Vue from 'vue'
import Component from 'vue-class-component'
import Vue from 'vue';
import Component from 'vue-class-component';
// You can declare mixins as the same style as components.
@Component
export default class styleMixin extends Vue {
calculateExpStyle(exp: string | number): string {
const bgColor =
exp > -1
? exp < 2
? "#26B0D9"
: `hsl(${-exp * 5 + 100}, 65%, 50%)`
: "#888";
calculateExpStyle(exp: string | number, isSupporter: boolean = false): string {
const bgColor = exp > -1 ? (exp < 2 ? '#26B0D9' : `hsl(${-exp * 5 + 100}, 65%, 50%)`) : '#888';
const fontColor = exp > 15 ? "white" : "black";
const fontColor = exp > 15 ? 'white' : 'black';
const boxShadow = isSupporter ? `box-shadow: 0 0 10px 2px ${bgColor}` : '';
return `backgroundColor: ${bgColor}; color: ${fontColor}`;
return `backgroundColor: ${bgColor}; color: ${fontColor}; ${boxShadow};`;
}
statusClasses(occupiedTo: string) {
let className = '';
switch (occupiedTo) {
case 'WOLNA':
className = 'free';
break;
case 'KOŃCZY':
className = 'ending';
break;
case 'NIEZALOGOWANY':
className = 'not-signed';
break;
case 'BEZ LIMITU':
className = 'no-limit';
break;
case 'NIEDOSTĘPNY':
className = 'unavailable';
break;
case 'Z/W':
className = 'brb';
break;
case 'BRAK MIEJSCA':
className = 'no-space';
break;
default:
break;
}
statusClasses(occupiedTo: string) {
let className = "";
switch (occupiedTo) {
case "WOLNA":
className = "free";
break;
case "KOŃCZY":
className = "ending";
break;
case "NIEZALOGOWANY":
className = "not-signed";
break;
case "BEZ LIMITU":
className = "no-limit";
break;
case "NIEDOSTĘPNY":
className = "unavailable";
break;
case "Z/W":
className = "brb";
break;
case "BRAK MIEJSCA":
className = "no-space";
break;
default:
break;
}
return className;
}
return className;
}
}
+1
View File
@@ -10,6 +10,7 @@ export default interface Station {
dispatcherName: string;
dispatcherExp: number;
dispatcherId: number;
dispatcherIsSupporter: boolean;
stationLines: string;
stationProject: string;
reqLevel: string;
+6 -1
View File
@@ -223,6 +223,7 @@ export default class Store extends VuexModule {
dispatcherRate: station.dispatcherRate,
dispatcherId: station.dispatcherId,
dispatcherExp: station.dispatcherExp,
dispatcherIsSupporter: station.dispatcherIsSupporter,
occupiedTo: statusLabel,
stationTrains,
statusTimestamp,
@@ -282,6 +283,7 @@ export default class Store extends VuexModule {
dispatcherRate: 0,
dispatcherExp: -1,
dispatcherId: 0,
dispatcherIsSupporter: false,
online: false,
occupiedTo: 'WOLNA',
statusTimestamp: -3,
@@ -315,9 +317,12 @@ export default class Store extends VuexModule {
dispatcherRate: 0,
dispatcherExp: -1,
dispatcherId: 0,
dispatcherIsSupporter: false,
online: false,
occupiedTo: 'WOLNA',
statusTimestamp: -3,
online: false,
stationTrains: [],
scheduledTrains: [],
});
return acc;