Quellcode durchsuchen

Merge branch 'master' into dev

Arsekl vor 3 Jahren
Ursprung
Commit
98b6460a29
2 geänderte Dateien mit 29 neuen und 1 gelöschten Zeilen
  1. 15 0
      src/common/index.tsx
  2. 14 1
      src/utils/index.ts

+ 15 - 0
src/common/index.tsx

@@ -1,8 +1,23 @@
 import {IEditorTab, IFolderTreeNodeProps} from '@dtinsight/molecule/esm/model';
 import Editor from '../components/editor'
 import {MarkdownView} from "@/components/markdown";
+import {isImage} from "@/utils";
 
 export function transformToEditorTab(item: IFolderTreeNodeProps): IEditorTab {
+    if (isImage(item.name ? item.name : "")) return {
+        ...item,
+        id: item.id?.toString(),
+        breadcrumb: item.location
+            ? item.location
+                .split('/')
+                .map((local: string, index, array) => ({id: array.slice(0, index + 1).join('/'), name: local}))
+            : [],
+        renderPane: () => {
+            return (
+                <img src={`data:image/png;base64${item.data.value}`}  alt={''}/>
+            )
+        }
+    }
     if (item.data.language === 'markdown') return {
         ...item,
         id: item.id?.toString(),

+ 14 - 1
src/utils/index.ts

@@ -122,6 +122,17 @@ const extToLang: { [prop: string]: string } = {
 }
 let id = 1
 
+export function isImage(filename: string) {
+    const lowercase = filename.toLowerCase()
+    return (
+        lowercase.endsWith('jpg') ||
+        lowercase.endsWith('png') ||
+        lowercase.endsWith('gif') ||
+        lowercase.endsWith('jpeg') ||
+            lowercase.endsWith('ico')
+    )
+}
+
 export function submitQuestion() {
     const examId = store.getState().loadQuestion.examId
     if (!examId) message.error("Please select an exam")
@@ -212,7 +223,9 @@ function generateFileNodes(
 
 function generateFileTree(question: NestedCodeItemVO) {
     const editableFiles = [...Object.keys(question.editable!)]
-    const editable = editableFiles.reduce<IFolderTreeNodeProps[]>((nodes, filename) => {
+    const editable = editableFiles.filter((filename, index) => {
+        return !isImage(filename)
+    }).reduce<IFolderTreeNodeProps[]>((nodes, filename) => {
         const filePathList = filename
             .split('/')
             .filter((name) => name.length > 0)