index.vue 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <template>
  2. <div class="template-preview">
  3. <a-divider orientation="left">{{$t('k8s.text_116')}}</a-divider>
  4. <div class="mb-3">
  5. <span style="font-size: 14px;" class="mr-2">{{$t('k8s.text_117')}}</span>
  6. <a-select class="w-50" v-model="previewFile" value-key="name" @change="changePreviwFile">
  7. <a-select-option v-for="item in previewFiles" :value="item.data" :key="item.name">{{ item.name }}</a-select-option>
  8. </a-select>
  9. </div>
  10. <code-mirror v-model="yaml" :options="cmOptions" />
  11. </div>
  12. </template>
  13. <script>
  14. import { Base64 } from 'js-base64'
  15. export default {
  16. name: 'K8SChartTemplatePreview',
  17. props: {
  18. previewFiles: {
  19. type: Array,
  20. required: true,
  21. },
  22. },
  23. data () {
  24. return {
  25. previewFile: '',
  26. yaml: '',
  27. cmOptions: {
  28. tabSize: 2,
  29. styleActiveLine: true,
  30. lineNumbers: true,
  31. line: true,
  32. mode: 'text/x-yaml',
  33. theme: 'material',
  34. readOnly: true,
  35. },
  36. }
  37. },
  38. watch: {
  39. previewFiles: {
  40. immediate: true,
  41. handler (previewFiles) {
  42. if (previewFiles && previewFiles.length) {
  43. let defaultFile = previewFiles[0]
  44. const valueFile = previewFiles.find(val => val.name.endsWith('values.yaml'))
  45. if (valueFile) defaultFile = valueFile
  46. this.changePreviwFile(defaultFile.data)
  47. }
  48. },
  49. },
  50. },
  51. methods: {
  52. changePreviwFile (data) {
  53. this.previewFile = data
  54. this.yaml = Base64.decode(data)
  55. },
  56. },
  57. }
  58. </script>