* WIP for using json all the time * Updates to render * adds a new component for json * Updates styles * Adds nesting * Adds field list * Adds expanding * Adds new composable for event source * Creates an add button * Removes unused code * Adds and removes fields with defaults * Fixes jumping when adding new fields * Returns JSON correctly * Fixes little bugs * Fixes js tests * Adds vscode * Fixes json buffer error * Fixes extra line * Fixes tests * Fixes tests and adds support for search * Refactors visible payload keys to a composable * Fixes typescript errors and refactors * Fixes visible keys by ComputedRef<Ref> * Fixes search bugs * Updates tests * Fixes go tests * Fixes scroll view * Fixes vue tsc errors * Fixes EOF error * Fixes build error * Uses application/ld+json * Fixes arrays and records * Marks for json too
		
			
				
	
	
		
			79 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
<template>
 | 
						|
  <scrollable-view :scrollable="scrollable" v-if="container">
 | 
						|
    <template #header v-if="showTitle">
 | 
						|
      <div class="mr-0 columns is-vcentered is-marginless is-hidden-mobile">
 | 
						|
        <div class="column is-clipped is-paddingless">
 | 
						|
          <container-title @close="$emit('close')" />
 | 
						|
        </div>
 | 
						|
        <div class="column is-narrow is-paddingless">
 | 
						|
          <container-stat v-if="container.stat" />
 | 
						|
        </div>
 | 
						|
 | 
						|
        <div class="mr-2 column is-narrow is-paddingless">
 | 
						|
          <log-actions-toolbar :onClearClicked="onClearClicked" />
 | 
						|
        </div>
 | 
						|
        <div class="mr-2 column is-narrow is-paddingless" v-if="closable">
 | 
						|
          <button class="delete is-medium" @click="emit('close')"></button>
 | 
						|
        </div>
 | 
						|
      </div>
 | 
						|
    </template>
 | 
						|
    <template #default="{ setLoading }">
 | 
						|
      <log-viewer-with-source ref="viewer" @loading-more="setLoading($event)" />
 | 
						|
    </template>
 | 
						|
  </scrollable-view>
 | 
						|
</template>
 | 
						|
 | 
						|
<script lang="ts" setup>
 | 
						|
import { provide, ref, toRefs } from "vue";
 | 
						|
import LogViewerWithSource from "./LogViewerWithSource.vue";
 | 
						|
import { useContainerStore } from "@/stores/container";
 | 
						|
 | 
						|
const props = defineProps({
 | 
						|
  id: {
 | 
						|
    type: String,
 | 
						|
    required: true,
 | 
						|
  },
 | 
						|
  showTitle: {
 | 
						|
    type: Boolean,
 | 
						|
    default: false,
 | 
						|
  },
 | 
						|
  scrollable: {
 | 
						|
    type: Boolean,
 | 
						|
    default: false,
 | 
						|
  },
 | 
						|
  closable: {
 | 
						|
    type: Boolean,
 | 
						|
    default: false,
 | 
						|
  },
 | 
						|
});
 | 
						|
 | 
						|
const emit = defineEmits(["close"]);
 | 
						|
 | 
						|
const { id } = toRefs(props);
 | 
						|
const store = useContainerStore();
 | 
						|
 | 
						|
const container = store.currentContainer(id);
 | 
						|
 | 
						|
provide("container", container);
 | 
						|
 | 
						|
const viewer = ref<InstanceType<typeof LogViewerWithSource>>();
 | 
						|
 | 
						|
function onClearClicked() {
 | 
						|
  viewer.value?.clear();
 | 
						|
}
 | 
						|
</script>
 | 
						|
<style lang="scss" scoped>
 | 
						|
button.delete {
 | 
						|
  background-color: var(--scheme-main-ter);
 | 
						|
  opacity: 0.6;
 | 
						|
  &:after,
 | 
						|
  &:before {
 | 
						|
    background-color: var(--text-color);
 | 
						|
  }
 | 
						|
 | 
						|
  &:hover {
 | 
						|
    opacity: 1;
 | 
						|
  }
 | 
						|
}
 | 
						|
</style>
 |