blob: c4758a40839b111df0b70006b9f846a36c3b547d [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { NTabs, NTabPane, NLog, NConfigProvider } from 'naive-ui'
import { defineComponent, PropType } from 'vue'
import {
ResizeHandler,
ResizedOptions,
HandlerPlacement
} from '../resize-handler'
import { useLayoutStore } from '@/store/layout'
import hljs from 'highlight.js/lib/core'
import styles from './index.module.scss'
const props = {
value: {
type: String as PropType<string>,
default: ''
}
}
export const Log = defineComponent({
name: 'log',
props,
setup(props) {
hljs.registerLanguage('studio-log', () => ({
contains: [
{
scope: 'info',
begin: 'INFO'
},
{
scope: 'warning',
begin: 'WARNING'
},
{
scope: 'error',
begin: 'ERROR'
}
]
}))
const layoutStore = useLayoutStore()
const onResized = (resized: ResizedOptions) => {
let height = layoutStore.editorHeight - resized.y
if (height < 40) height = 35
if (height > layoutStore.editorHeight) height = layoutStore.editorHeight
layoutStore.setLogHeight(height)
}
return () => {
return (
<div
class={styles['log-wrap']}
style={{ height: `${layoutStore.getLogHeight}px` }}
>
<NTabs type='card' closable size='small'>
<NTabPane name='运行日志'>
<NConfigProvider hljs={hljs} class={styles.hljs}>
<NLog log={props.value} language='studio-log' />
</NConfigProvider>
</NTabPane>
</NTabs>
<ResizeHandler placement={HandlerPlacement.T} onResized={onResized} />
</div>
)
}
}
})