|
@@ -156,12 +156,68 @@ export const resetGivenFormate = () => {
|
|
|
|
|
|
};
|
|
|
|
|
|
+/**
|
|
|
+ * TODO:曲目:摇篮曲(节奏练习)-倚音位置 特殊处理
|
|
|
+ */
|
|
|
+export const moveGracePosition = (needTrans?: boolean) => {
|
|
|
+ /**
|
|
|
+ * TODO:曲目:摇篮曲(节奏练习)-倚音位置 特殊处理
|
|
|
+ */
|
|
|
+ const specialIds = ['1788850864767643649','1788502467554750466'];
|
|
|
+ if (specialIds.includes(state.cbsExamSongId) || needTrans) {
|
|
|
+ const lastCurve: any = Array.from(document.getElementsByClassName('vf-curve'))?.last();
|
|
|
+ if (lastCurve) {
|
|
|
+ lastCurve.style.display = 'none';
|
|
|
+ }
|
|
|
+ if (state.musicRenderType === 'staff') {
|
|
|
+ // const transNoteDom = document.getElementById('vf-auto2182')?.getElementsByClassName('vf-modifiers')?.[0];
|
|
|
+ // const transBeamDom = document.getElementById('auto3167')?.parentNode?.getElementsByClassName('vf-beams')?.[0];
|
|
|
+ // if (transNoteDom) {
|
|
|
+ // transNoteDom.style.transform = 'translateX(-0.5rem)';
|
|
|
+ // }
|
|
|
+ // if (transBeamDom) {
|
|
|
+ // transBeamDom.style.transform = 'translateX(-0.5rem)';
|
|
|
+ // }
|
|
|
+ } else {
|
|
|
+ const signatureDom = document.getElementById('auto2784'), fixedSigntureDom = document.getElementById('auto3022');
|
|
|
+ const needTransLateDom: any = document.getElementById('vf-auto2178')?.getElementsByClassName('vf-modifier')?.[0], fixednNeedTransLateDom: any = document.getElementById('vf-auto2390')?.getElementsByClassName('vf-modifier')?.[0];
|
|
|
+ const arrowDom = document.getElementById('vf-auto2178-lines'), fixedArrowDom = document.getElementById('vf-auto2390-lines');
|
|
|
+ if (signatureDom) signatureDom.style.display = 'none';
|
|
|
+ if (fixedSigntureDom) fixedSigntureDom.style.display = 'none';
|
|
|
+ if (needTransLateDom) needTransLateDom.style.transform = 'translateX(-0.65rem)';
|
|
|
+ if (fixednNeedTransLateDom) fixednNeedTransLateDom.style.transform = 'translateX(-0.65rem)';
|
|
|
+ if (arrowDom) {
|
|
|
+ arrowDom.style.transform = 'translateX(-0.65rem)';
|
|
|
+ }
|
|
|
+ if (fixedArrowDom) {
|
|
|
+ fixedArrowDom.style.transform = 'translateX(-0.65rem)';
|
|
|
+ }
|
|
|
+ if (arrowDom || fixedArrowDom) {
|
|
|
+ const path: any = arrowDom ? arrowDom.querySelector('path') : fixedArrowDom ? fixedArrowDom.querySelector('path') : null;
|
|
|
+ let d = path?.getAttribute("d");
|
|
|
+ if (d) {
|
|
|
+ const patchStr = d.split('L')?.last()?.split(" ")?.[0];
|
|
|
+ let startX = d.split("M")?.[1]?.split(" ")[0] || 0;
|
|
|
+ startX = startX ? Number(startX) : 0;
|
|
|
+ let endX = d.split("L")?.last().split(" ")[0] || 0;
|
|
|
+ endX = endX ? Number(endX) : 0;
|
|
|
+ const distanceX = endX - startX;
|
|
|
+ const transX = startX - distanceX;
|
|
|
+ d = d.replace(`L${patchStr}`,`L${transX}`);
|
|
|
+ path.setAttribute("d", d);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+}
|
|
|
|
|
|
// 谱面优化
|
|
|
export const resetFormate = () => {
|
|
|
container.value = document.getElementById('scrollContainer')
|
|
|
// if (state.extStyleConfigJson || !container.value) return;
|
|
|
if (!container.value) return;
|
|
|
+ moveGracePosition();
|
|
|
const stafflines: SVGAElement[] = Array.from((container.value as HTMLElement).querySelectorAll(".staffline"));
|
|
|
const baseStep = 4; // 两个元素相间,的间距
|
|
|
const musicalDistance = 28; // 音阶与第一条线谱的间距,默认设置为28
|
|
@@ -180,40 +236,6 @@ export const resetFormate = () => {
|
|
|
const staveSection: SVGAElement[] = Array.from(staffline.querySelectorAll(".vf-measure .vf-staveSection"));
|
|
|
const paths: SVGAElement[] = Array.from(staffline.querySelectorAll(".vf-measure > .vf-stave path"));
|
|
|
const dotModifiers: SVGAElement[] = Array.from(staffline.querySelectorAll(".vf-measure .vf-stopDot"));
|
|
|
- /**
|
|
|
- * TODO:曲目:摇篮曲(节奏练习)-倚音位置 特殊处理
|
|
|
- */
|
|
|
- const specialIds = ['1788850864767643649','1788502467554750466'];
|
|
|
- if (specialIds.includes(state.cbsExamSongId)) {
|
|
|
- const lastCurve = Array.from(document.getElementsByClassName('vf-curve'))?.last();
|
|
|
- if (lastCurve) {
|
|
|
- lastCurve.style.display = 'none';
|
|
|
- }
|
|
|
- if (state.musicRenderType === 'staff') {
|
|
|
- const transNoteDom = document.getElementById('vf-auto2182')?.getElementsByClassName('vf-modifiers')?.[0];
|
|
|
- const transBeamDom = document.getElementById('auto3167')?.parentNode?.getElementsByClassName('vf-beams')?.[0];
|
|
|
- if (transNoteDom) {
|
|
|
- transNoteDom.style.transform = 'translateX(-0.5rem)';
|
|
|
- }
|
|
|
- if (transBeamDom) {
|
|
|
- transBeamDom.style.transform = 'translateX(-0.5rem)';
|
|
|
- }
|
|
|
- } else {
|
|
|
- const signatureDom = document.getElementById('auto2784');
|
|
|
- const needTransLateDom = document.getElementById('vf-auto2178')?.getElementsByClassName('vf-modifier')?.[0];
|
|
|
- const arrowDom = document.getElementById('vf-auto2178-lines');
|
|
|
- if (signatureDom) {
|
|
|
- signatureDom.style.display = 'none';
|
|
|
- }
|
|
|
- if (needTransLateDom) {
|
|
|
- needTransLateDom.style.transform = 'translateX(-0.65rem)';
|
|
|
- }
|
|
|
- if (arrowDom) {
|
|
|
- arrowDom.style.transform = 'translateX(-0.65rem)';
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
|
|
|
// 获取第一个线谱的y轴坐标
|
|
|
const firstLinePathY = paths[0]?.getBBox().y || 0
|