瀏覽代碼

feat: 使用多个code匹配指法

TIANYONG 3 周之前
父節點
當前提交
b4dc3917db
共有 1 個文件被更改,包括 17 次插入1 次删除
  1. 17 1
      src/state.ts

+ 17 - 1
src/state.ts

@@ -1271,9 +1271,11 @@ const getMusicInfo = async (res: any) => {
   const { track, index, musicalInstrumentId } = state.isSimplePage ? { track:tracks[0], index: state.partIndex, musicalInstrumentId: '' } : initMusicSource(res.data, tracks, partIndex, workRecordInstrumentId)
   // 这里返回的track可能和实际的对不上,所以重新筛选一下
   const realTrack = musicalInstrumentId && res.data?.musicalInstruments?.length ? res.data?.musicalInstruments.find((item: any) => item?.id == musicalInstrumentId)?.code?.split(',')?.[0] : '';
+  const instrumentCodes = musicalInstrumentId && res.data?.musicalInstruments?.length ? res.data?.musicalInstruments.find((item: any) => item?.id == musicalInstrumentId)?.code : '';
   const musicInfo = {
     ...res.data,
-    track: res.data.musicSheetType === 'CONCERT' ? track : realTrack
+    track: res.data.musicSheetType === 'CONCERT' ? track : realTrack,
+    instrumentCodes
   };
   console.log("🚀 ~ musicInfo:", musicInfo);
   setState(musicInfo, index);
@@ -1616,6 +1618,20 @@ const setState = (data: any, index: number) => {
   }
 
   let code = matchVoicePart(state.trackId, "CONCERT")
+  /**
+   * 曲子:中音萨克斯教程2-4,返回的乐器code是"Alto Sax,Alto Saxophone",使用第一个Alto Sax去找,找不到对应的指法,这种情况下需要使用多个code去匹配指法
+   * 如果当前的第一code找不到,用instrumentCodes去找,
+   * 
+   * */ 
+  if ( data.instrumentCodes && (code == 1 || !code) ) {
+    for (let name of data.instrumentCodes.split(',')) {
+      let matchCode = matchVoicePart(name, "CONCERT")
+      if (matchCode && matchCode !== 1) {
+        code = matchCode
+        break;
+      }
+    }
+  }    
   if (code == 1 || !code) {
     code = fixInstrumentNameCode(state.trackId)
   }