123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- <template lang='pug'>
- v-dialog(v-model='isShown', width='90vw', max-width='1200')
- .dialog-header
- span Live Console
- v-spacer
- .caption.blue--text.text--lighten-3.mr-3 Streaming...
- v-progress-circular(
- indeterminate
- color='blue lighten-3'
- :size='20'
- :width='2'
- )
- .consoleTerm(ref='consoleContainer')
- v-toolbar(flat, color='grey darken-3', dark)
- v-spacer
- v-btn(outline, @click='clear')
- v-icon(left) cancel_presentation
- span Clear
- v-btn(outline, @click='close')
- v-icon(left) close
- span Close
- </template>
- <script>
- import _ from 'lodash'
- // import { Terminal } from 'xterm'
- // import * as fit from 'xterm/lib/addons/fit/fit'
- import livetrailSubscription from 'gql/admin/logging/logging-subscription-livetrail.gql'
- // Terminal.applyAddon(fit)
- export default {
- term: null,
- props: {
- value: {
- type: Boolean,
- default: false
- }
- },
- computed: {
- isShown: {
- get() { return this.value },
- set(val) { this.$emit('input', val) }
- }
- },
- watch: {
- value(newValue, oldValue) {
- if (newValue) {
- _.delay(() => {
- // this.term = new Terminal()
- this.term.open(this.$refs.consoleContainer)
- this.term.writeln('Connecting to \x1B[1;3;31mconsole output\x1B[0m...')
- this.attach()
- }, 100)
- } else {
- this.term.dispose()
- this.term = null
- }
- }
- },
- mounted() {
- },
- methods: {
- clear() {
- this.term.clear()
- },
- close() {
- this.isShown = false
- },
- attach() {
- const self = this
- const observer = this.$apollo.subscribe({
- query: livetrailSubscription
- })
- observer.subscribe({
- next(data) {
- const item = _.get(data, `data.loggingLiveTrail`, {})
- console.info(item)
- self.term.writeln(`${item.level}: ${item.output}`)
- },
- error(error) {
- self.$store.commit('showNotification', {
- style: 'red',
- message: error.message,
- icon: 'warning'
- })
- }
- })
- }
- }
- }
- </script>
- <style lang='scss'>
- .consoleTerm {
- background-color: #000;
- padding: 16px;
- width: 100%;
- height: 415px;
- }
- </style>
|