2017-11-20 12:45:09 -08:00
|
|
|
import { rgbstr2hex } from '../../services/color_convert/color_convert.js'
|
|
|
|
|
2017-01-16 09:57:03 -08:00
|
|
|
export default {
|
2017-02-17 09:21:02 -08:00
|
|
|
data () {
|
|
|
|
return {
|
|
|
|
availableStyles: [],
|
2017-11-17 07:24:42 -08:00
|
|
|
selected: this.$store.state.config.theme,
|
|
|
|
bgColorLocal: '',
|
|
|
|
fgColorLocal: '',
|
|
|
|
textColorLocal: '',
|
2018-04-01 12:07:25 -07:00
|
|
|
linkColorLocal: '',
|
|
|
|
redColorLocal: '#ff0000',
|
|
|
|
blueColorLocal: '#0095ff',
|
|
|
|
greenColorLocal: '#0fa00f',
|
|
|
|
orangeColorLocal: '#E3FF00'
|
2017-02-17 09:21:02 -08:00
|
|
|
}
|
|
|
|
},
|
2017-01-16 09:57:03 -08:00
|
|
|
created () {
|
|
|
|
const self = this
|
2017-11-17 07:24:42 -08:00
|
|
|
|
|
|
|
window.fetch('/static/styles.json')
|
2017-01-16 09:57:03 -08:00
|
|
|
.then((data) => data.json())
|
2017-11-17 07:24:42 -08:00
|
|
|
.then((themes) => {
|
|
|
|
self.availableStyles = themes
|
|
|
|
})
|
|
|
|
},
|
2017-11-18 03:13:51 -08:00
|
|
|
mounted () {
|
2018-03-31 11:14:36 -07:00
|
|
|
this.bgColorLocal = rgbstr2hex(this.$store.state.config.colors.bg)
|
|
|
|
this.fgColorLocal = rgbstr2hex(this.$store.state.config.colors.lightBg)
|
|
|
|
this.textColorLocal = rgbstr2hex(this.$store.state.config.colors.fg)
|
|
|
|
this.linkColorLocal = rgbstr2hex(this.$store.state.config.colors.link)
|
2018-04-01 12:07:25 -07:00
|
|
|
|
|
|
|
this.redColorLocal = rgbstr2hex(this.$store.state.config.colors.cRed || this.redColorLocal)
|
|
|
|
this.blueColorLocal = rgbstr2hex(this.$store.state.config.colors.cBlue || this.blueColorLocal)
|
|
|
|
this.greenColorLocal = rgbstr2hex(this.$store.state.config.colors.cGreen || this.greenColorLocal)
|
|
|
|
this.orangeColorLocal = rgbstr2hex(this.$store.state.config.colors.cOrange || this.orangeColorLocal)
|
2017-11-17 07:24:42 -08:00
|
|
|
},
|
|
|
|
methods: {
|
|
|
|
setCustomTheme () {
|
|
|
|
if (!this.bgColorLocal && !this.fgColorLocal && !this.linkColorLocal) {
|
|
|
|
// reset to picked themes
|
|
|
|
}
|
|
|
|
const rgb = (hex) => {
|
2017-11-18 03:13:51 -08:00
|
|
|
const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex)
|
2017-11-17 07:24:42 -08:00
|
|
|
return result ? {
|
2017-11-18 03:13:51 -08:00
|
|
|
r: parseInt(result[1], 16),
|
|
|
|
g: parseInt(result[2], 16),
|
|
|
|
b: parseInt(result[3], 16)
|
2017-11-17 07:24:42 -08:00
|
|
|
} : null
|
|
|
|
}
|
|
|
|
const bgRgb = rgb(this.bgColorLocal)
|
|
|
|
const fgRgb = rgb(this.fgColorLocal)
|
|
|
|
const textRgb = rgb(this.textColorLocal)
|
|
|
|
const linkRgb = rgb(this.linkColorLocal)
|
2018-04-01 12:07:25 -07:00
|
|
|
|
|
|
|
const redRgb = rgb(this.redColorLocal)
|
|
|
|
const blueRgb = rgb(this.blueColorLocal)
|
|
|
|
const greenRgb = rgb(this.greenColorLocal)
|
|
|
|
const orangeRgb = rgb(this.orangeColorLocal)
|
|
|
|
|
2017-11-17 07:24:42 -08:00
|
|
|
if (bgRgb && fgRgb && linkRgb) {
|
2017-11-18 03:13:51 -08:00
|
|
|
this.$store.dispatch('setOption', {
|
|
|
|
name: 'customTheme',
|
|
|
|
value: {
|
|
|
|
fg: fgRgb,
|
|
|
|
bg: bgRgb,
|
|
|
|
text: textRgb,
|
2018-04-01 12:07:25 -07:00
|
|
|
link: linkRgb,
|
|
|
|
cRed: redRgb,
|
|
|
|
cBlue: blueRgb,
|
|
|
|
cGreen: greenRgb,
|
|
|
|
cOrange: orangeRgb
|
2017-11-18 03:13:51 -08:00
|
|
|
}})
|
2017-11-17 07:24:42 -08:00
|
|
|
}
|
|
|
|
}
|
2017-01-16 09:57:03 -08:00
|
|
|
},
|
|
|
|
watch: {
|
|
|
|
selected () {
|
2017-11-17 07:24:42 -08:00
|
|
|
this.bgColorLocal = this.selected[1]
|
|
|
|
this.fgColorLocal = this.selected[2]
|
|
|
|
this.textColorLocal = this.selected[3]
|
|
|
|
this.linkColorLocal = this.selected[4]
|
2018-04-01 12:07:25 -07:00
|
|
|
this.redColorLocal = this.selected[5]
|
|
|
|
this.blueColorLocal = this.selected[6]
|
|
|
|
this.greenColorLocal = this.selected[7]
|
|
|
|
this.orangeColorLocal = this.selected[8]
|
2017-01-16 09:57:03 -08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|