Parcourir la source

try fix picture problem

Arsekl il y a 3 ans
Parent
commit
336d7427bf
1 fichiers modifiés avec 32 ajouts et 7 suppressions
  1. 32 7
      src/utils/index.ts

+ 32 - 7
src/utils/index.ts

@@ -129,7 +129,8 @@ export function isImage(filename: string) {
         lowercase.endsWith('png') ||
         lowercase.endsWith('png') ||
         lowercase.endsWith('gif') ||
         lowercase.endsWith('gif') ||
         lowercase.endsWith('jpeg') ||
         lowercase.endsWith('jpeg') ||
-            lowercase.endsWith('ico')
+        lowercase.endsWith('ico') ||
+        lowercase.endsWith('ttf')
     )
     )
 }
 }
 
 
@@ -223,21 +224,19 @@ function generateFileNodes(
 
 
 function generateFileTree(question: NestedCodeItemVO) {
 function generateFileTree(question: NestedCodeItemVO) {
     const editableFiles = [...Object.keys(question.editable!)]
     const editableFiles = [...Object.keys(question.editable!)]
-    const editable = editableFiles.filter((filename, index) => {
-        return !isImage(filename)
-    }).reduce<IFolderTreeNodeProps[]>((nodes, filename) => {
+    const editable = editableFiles.reduce<IFolderTreeNodeProps[]>((nodes, filename) => {
         const filePathList = filename
         const filePathList = filename
             .split('/')
             .split('/')
             .filter((name) => name.length > 0)
             .filter((name) => name.length > 0)
         return generateFileNodes(nodes, filePathList, filename, false, question.editable!)
         return generateFileNodes(nodes, filePathList, filename, false, question.editable!)
     }, [])
     }, [])
     const unEditableFiles = [...Object.keys(question.uneditable!)]
     const unEditableFiles = [...Object.keys(question.uneditable!)]
-    const unEditable = unEditableFiles.reduce<IFolderTreeNodeProps[]>((nodes, filename) => {
+    const Files = unEditableFiles.reduce<IFolderTreeNodeProps[]>((nodes, filename) => {
         const filePathList = filename
         const filePathList = filename
             .split('/')
             .split('/')
             .filter((name) => name.length > 0)
             .filter((name) => name.length > 0)
         return generateFileNodes(nodes, filePathList, filename, true, question.uneditable!)
         return generateFileNodes(nodes, filePathList, filename, true, question.uneditable!)
-    }, [])
+    }, editable)
     const files: IFolderTreeNodeProps = {
     const files: IFolderTreeNodeProps = {
         id: 0,
         id: 0,
         readOnly: false,
         readOnly: false,
@@ -246,7 +245,7 @@ function generateFileTree(question: NestedCodeItemVO) {
         location: question.projectName,
         location: question.projectName,
         isLeaf: false,
         isLeaf: false,
         data: "",
         data: "",
-        children: [...editable, ...unEditable]
+        children: [...Files]
     }
     }
     molecule.folderTree.reset()
     molecule.folderTree.reset()
     molecule.folderTree.add(files)
     molecule.folderTree.add(files)
@@ -287,6 +286,32 @@ export function getQuestion(examId: string, studentId: string) {
                 hide()
                 hide()
                 if (response.err === 0) {
                 if (response.err === 0) {
                     const question = response.res;
                     const question = response.res;
+                    let editableImage: {
+                            [key: string]: string} = {},
+                        nextEditable: {
+                            [key: string]: string} = {},
+                        nextUnEditable: {
+                            [key: string]: string} = {}
+                    ;
+                    question.codeList.forEach((code:NestedCodeItemVO) => {
+                        if (code.editable) {
+                            for (let key in code.editable){
+                                if (isImage(key)) {
+                                    editableImage[key] = code.editable[key];
+                                } else {
+                                    nextEditable[key] = code.editable[key];
+                                }
+                            }
+                        }
+                    })
+                    question.codeList.forEach((code: NestedCodeItemVO) => {
+                        if (code.editable){
+                            code.editable = nextEditable;
+                        }
+                        if (code.uneditable){
+                            code.uneditable = Object.assign(nextUnEditable, code.uneditable, editableImage);
+                        }
+                    })
                     question.codeList.sort(function (a:NestedCodeItemVO, b:NestedCodeItemVO){if (a && b && a.questionId && b.questionId) return a.questionId - b.questionId; return -1;})
                     question.codeList.sort(function (a:NestedCodeItemVO, b:NestedCodeItemVO){if (a && b && a.questionId && b.questionId) return a.questionId - b.questionId; return -1;})
                     const current = store.getState().loadCurrentQuestion;
                     const current = store.getState().loadCurrentQuestion;
                     const pre = store.getState().loadQuestion;
                     const pre = store.getState().loadQuestion;