Browse Source

Merge branch 'feature-tianyong-newVersion' into ktyq-test-new

TIANYONG 7 tháng trước cách đây
mục cha
commit
91ab37fcc0

+ 11 - 1
src/helpers/formateMusic.ts

@@ -628,6 +628,9 @@ export const xmlAddPartName = (xml: string) => {
 			const newPartName = `<part-name>${name}</part-name>`
 			// scorePart.prepend(newPartName);
 			scorePart.innerHTML = newPartName + scorePart.innerHTML;
+		} 
+		if (scorePart.getElementsByTagName("part-name").length && !scorePart.getElementsByTagName("part-name")?.[0]?.textContent?.trim() ) {
+			scorePart.getElementsByTagName("part-name")[0].textContent = scorePart.getAttribute("id") || "";
 		}
 	}
 	return new XMLSerializer().serializeToString(xmlParse);
@@ -1256,6 +1259,7 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
 			 * 曲子:1795013295024062466(春暖花开),如果音符有times信息,休止符没有times信息,此种规则是认为休止符不参与时值计算的,需要过滤掉该休止符
 			 */
 			if (state.isEvxml && note.isRestFlag && note?.noteTimeInfo?.length === 0 && state.xmlHasTimes) {
+				note.maxNoteNum = note.maxNoteNum - 1;
 				continue;
 			}
 			let evNoteStartTime = 0, evNoteEndTime = 0;
@@ -1363,7 +1367,13 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
 			nodeDetail.noteLength = maxNum || 1;
 			allNotes.push(nodeDetail);
 			allNoteId.push(nodeDetail.id);
-			measures.push(nodeDetail);
+			if ( measures.some((item: any) => item.MeasureNumberXML !== nodeDetail.MeasureNumberXML) ) {
+				measures = [];
+				measures.push(nodeDetail);
+				nodeDetail.measures = measures;
+			} else {
+				measures.push(nodeDetail);
+			}
 			/**
 			 * bug: #9877
 			 * 多分轨合并展示的曲子,不同分轨,同一小节音符的数量可能不能,不能只通过tickables的长度判断该小节的音符数量

+ 30 - 0
src/page-instrument/custom-plugins/guide-driver/index.tsx

@@ -309,6 +309,21 @@ export const PractiseDriver = defineComponent({
             },
           });
         } else if (state.setting.displayFingering && !props.statusAll.backTitle && !props.statusAll.modelTypeStatus) {
+          options.steps?.push({
+            element: ".driver-6",
+            popover: {
+              title: "",
+              description: "",
+              popoverClass: "popoverClass popoverClass6",
+              align: "start",
+              side: "top",
+              nextBtnText: `下一步 (${options.steps.length + 1}/${length})`, //"下一步6/" + length,
+              showButtons: ["next"],
+              onPopoverRender: (popover: PopoverDOM, options: { config: Config; state: State }) => {
+                driverInitialPosition(popover, options);
+              },
+            },
+          });
           // 是否有指法图
           // 乐器方向不一样引导位置不一样
           options.steps?.push({
@@ -334,6 +349,21 @@ export const PractiseDriver = defineComponent({
             },
           });
         } else if (props.statusAll.backTitle && !props.statusAll.modelTypeStatus) {
+          options.steps?.push({
+            element: ".driver-6",
+            popover: {
+              title: "",
+              description: "",
+              popoverClass: "popoverClass popoverClass6",
+              align: "start",
+              side: "top",
+              nextBtnText: `下一步 (${options.steps.length + 1}/${length})`, //"下一步6/" + length,
+              showButtons: ["next"],
+              onPopoverRender: (popover: PopoverDOM, options: { config: Config; state: State }) => {
+                driverInitialPosition(popover, options);
+              },
+            },
+          });
           if (state.setting.displayFingering) {
             // 是否有指法图
             // 乐器方向不一样引导位置不一样

+ 0 - 1
src/page-instrument/header-top/index.tsx

@@ -610,7 +610,6 @@ export default defineComponent({
           e.stopPropagation();
           e.preventDefault();
           // onStartPlayState();
-          if (state.playState === "play") return;
           togglePlay(state.playState === "play" ? "paused" : "play");
         }
       });

+ 4 - 5
src/page-instrument/view-detail/index.tsx

@@ -165,7 +165,7 @@ export default defineComponent({
       // 如果是纯预览模式,0.65倍缩放谱面
       state.isPreView = query.isPreView;
       if (state.isPreView) {
-        state.zoom = 0.65;
+        state.zoom = query.zoom  || 0.65
       }
       if (id == "1814218144844087298" && state.isSingleLine) {
         state.zoom = 0.7;
@@ -531,8 +531,7 @@ export default defineComponent({
               </div>    
         }
         {
-          state.modeType === 'evaluating' ? (
-          <>
+          state.modeType === 'evaluating' ? (<>
             <img src={bg2Left} class={styles.bg2Left} />
             <img src={bg2Right} class={styles.bg2Right} />
           </>
@@ -565,7 +564,7 @@ export default defineComponent({
           }}
         >
           {/* 曲谱渲染 */}
-          {!detailData.isLoading && (
+          {!detailData.isLoading && 
             <MusicScore 
               ref={musicScoreRef}
               musicColor={state.isPreView ? '#000000' : '#FFFFFF'}
@@ -577,7 +576,7 @@ export default defineComponent({
               {/* 节拍器 */}
               {!detailData.isLoading && !detailData.skeletonLoading && <Tick />}
             </MusicScore>
-          )}
+          }
 
           {/* {
             state.musicRendered && 

+ 6 - 1
src/state.ts

@@ -1274,7 +1274,12 @@ let offsetTop = 0;
  */
 export const scrollViewNote = () => {
   // const cursorElement = document.getElementById("cursorImg-0")!;
-  const cursorElement: any = document.querySelector(`.noteIndex_${state.activeNoteIndex}`)!;
+  const noteId = state.times[state.activeNoteIndex].id;
+  if (!noteId) {
+    return;
+  }
+  const domId = "vf" + noteId;
+  const cursorElement: any = document.querySelector(`[data-vf=${domId}]`)?.parentElement;
   const musicAndSelection = document.getElementById(state.scrollContainer)!;
   // console.log('滑动',cursorElement.offsetTop,offsetTop, cursorElement, )
   if (!cursorElement || !musicAndSelection || offsetTop === cursorElement.offsetTop || Math.abs(offsetTop - cursorElement.offsetTop) < 30) return;