Compare commits

..

No commits in common. "2b304ca4073b1fa542c10519f9835c5e2fa30b41" and "3f6b91f5ca66887192f1bc95e29218e05640dd81" have entirely different histories.

6 changed files with 48 additions and 161 deletions

View file

@ -34,7 +34,6 @@
"js-cookie": "^2.2.0", "js-cookie": "^2.2.0",
"stylus": "^0.54.5", "stylus": "^0.54.5",
"stylus-loader": "^3.0.1", "stylus-loader": "^3.0.1",
"vue-async-computed": "^3.6.1",
"vue-cli-plugin-coffeescript": "^0.0.3", "vue-cli-plugin-coffeescript": "^0.0.3",
"vue-cli-plugin-vuetify": "^0.5.0", "vue-cli-plugin-vuetify": "^0.5.0",
"vue-template-compiler": "^2.5.21", "vue-template-compiler": "^2.5.21",

View file

@ -1,6 +1,5 @@
import Vue from 'vue' import Vue from 'vue'
import './plugins/vuetify' import './plugins/vuetify'
import './plugins/vue-async-computed'
import App from './App.vue' import App from './App.vue'
import router from './router' import router from './router'
import 'roboto-fontface/css/roboto/roboto-fontface.css' import 'roboto-fontface/css/roboto/roboto-fontface.css'

View file

@ -1,4 +0,0 @@
import Vue from 'vue'
import AsyncComputed from 'vue-async-computed'
Vue.use(AsyncComputed)

View file

@ -24,22 +24,18 @@ export default {
RegisterForm RegisterForm
}, },
computed: {
session: () => Cookies.get('session')
},
mounted() { mounted() {
this.$nextTick(() => { if (Cookies.get('session')) {
axios axios
.post('/user/login', { .post('/user/login', {
session: this.session session: Cookies.get('session')
}) })
.then(response => { .then(response => {
if (response.data.success) { if (response.data.success) {
this.$router.push({ name: 'usercp' }) this.$router.push({ name: 'usercp' })
} }
}) })
}) }
} }
} }
</script> </script>

View file

@ -2,31 +2,27 @@
<v-container> <v-container>
<Header /> <Header />
<template v-if="user"> <p>user logged in: {{ user.login }}</p>
<p>user logged in: {{ user.login }}</p>
<template v-if="decks"> <v-expansion-panel>
<v-expansion-panel> <v-expansion-panel-content v-for="deck in decks" :key="deck.id">
<v-expansion-panel-content v-for="deck in decks" :key="deck.id"> <template v-slot:header>
<template v-slot:header> <div>{{ deck.content.name }}</div>
<div>{{ deck.content.name }}</div> </template>
</template> <v-card>
<v-card> <v-card-text>
<v-card-text> {{ deck.content.note }}
{{ deck.content.note }} <ul>
<ul> <li v-for="card in deck.content.cards" :key="card.serial">
<li v-for="card in deck.content.cards" :key="card.serial"> {{ card.serial }}: {{ cardsdb[card.serial].name }}
{{ card.serial }}: {{ cardsdb[card.serial].name }} </li>
</li> </ul>
</ul> </v-card-text>
</v-card-text> </v-card>
</v-card> </v-expansion-panel-content>
</v-expansion-panel-content> </v-expansion-panel>
</v-expansion-panel>
</template>
<v-btn @click.native="logout">Logout</v-btn> <v-btn @click.native="logout">Logout</v-btn>
</template>
</v-container> </v-container>
</template> </template>
@ -44,6 +40,12 @@ export default {
Header Header
}, },
data: () => ({
user: '',
decks: '',
cardsdb: null
}),
methods: { methods: {
goHome() { goHome() {
Cookies.remove('session') Cookies.remove('session')
@ -63,129 +65,29 @@ export default {
} }
}, },
computed: {
session: () => Cookies.get('session'),
cardsdb: () => CardsDB
},
asyncComputed: {
user() {
return axios
.post('/user/info', {
session: this.session
})
.then(response => {
if (response.data.success) {
return response.data.user
} else {
this.goHome()
return null
}
})
},
decks() {
return axios
.post('/decks/list', {
session: this.session
})
.then(response => {
if (response.data.success) {
return response.data.decks
}
})
}
},
mounted() { mounted() {
let fileContent = `--Generated By FF Decks (www.ffdecks.com)-- this.cardsdb = CardsDB
Deck Name: Ashe turbo
Created by: hawks1997
axios
Forward(26): .post('/user/info', {
3 Garland (6-002) session: Cookies.get('session')
3 Rain (8-134) })
3 Garnet (3-129) .then(response => {
2 Zidane (8-115) if (response.data.success) {
3 Ashe (2-121) this.user = response.data.user
3 Basch (2-014) } else {
3 Steiner (4-129) this.goHome()
3 Vivi (3-017) }
3 Cecil (2-129) })
axios
Summon(8): .post('/decks/list', {
2 Cuchulainn, the Impure (2-133) session: Cookies.get('session')
2 Bahamut (4-016) })
1 Phoenix (5-019) .then(response => {
3 Leviathan (6-125) if (response.data.success) {
this.decks = response.data.decks
Backup(16): }
2 Sage (2-005)
2 Vermilion Bird l'Cie Caetuna (6-010)
2 Yotsuyu (8-020)
2 Rasler (5-166)
2 Red Mage (1-003)
3 Hilda (6-122)
3 Astrologian (2-130)
Monster(0):`
// select the line containing 'deck name:'
// and its successor
let metaRE = /^deck name: (.+)$[\s]*?^(.+)$/im
let metaData = metaRE.exec(fileContent)
// extract matches
let deckData = {
name: metaData[1],
note: metaData[2],
cards: []
}
// select all lines containing card serial numbers
let cardLinesRE = /^.*\b\d-\d{3}[A-Z]?\b.*$/gm
let cardLines = fileContent.match(cardLinesRE)
cardLines.forEach(cardLine => {
// extract serial (guaranteed to be in here!)
let serialRE = /\b(\d-\d{3})[A-Z]?\b/i
let serial = serialRE.exec(cardLine)[1]
// strip out serial number
cardLine = cardLine.replace(serialRE, '')
let countREs = [
// prioritize a count with "times" symbol *, x, ×
/\b([1-3])(?:[*×]|[x]\b)/,
/(?:[*×]|\b[x])([1-3])\b/,
// next priority: with whitespace
/\s+([1-3])\s+/,
/\s+([1-3])\b/,
/\b([1-3])\s+/,
// least priority: any single digit
/\b([1-3])\b/
]
// fallback value
let count = '0'
for (let i = 0; i < countREs.length; i++) {
let data = countREs[i].exec(cardLine)
if (data) {
count = data[1]
break
}
}
// push card data into deck
deckData.cards.push({
serial: serial,
count: count
}) })
})
console.log(deckData)
} }
} }
</script> </script>

View file

@ -9891,11 +9891,6 @@ vm-browserify@0.0.4:
dependencies: dependencies:
indexof "0.0.1" indexof "0.0.1"
vue-async-computed@^3.6.1:
version "3.6.1"
resolved "https://registry.yarnpkg.com/vue-async-computed/-/vue-async-computed-3.6.1.tgz#6b790e2125347c678d1b82b10a5b03b41d7b86d0"
integrity sha512-8FFDTqfdvKrzK5Fr7nNHZgP6sQ2hTUELTrLn25i8VW/g06MztD+FOe1gs0RYVpRkPlcrykf2hbJxNYra1c4OGg==
vue-cli-plugin-coffeescript@^0.0.3: vue-cli-plugin-coffeescript@^0.0.3:
version "0.0.3" version "0.0.3"
resolved "https://registry.yarnpkg.com/vue-cli-plugin-coffeescript/-/vue-cli-plugin-coffeescript-0.0.3.tgz#717b608395a2bafc31c0d568159e014a16fbb6bc" resolved "https://registry.yarnpkg.com/vue-cli-plugin-coffeescript/-/vue-cli-plugin-coffeescript-0.0.3.tgz#717b608395a2bafc31c0d568159e014a16fbb6bc"