|
@@ -1,49 +1,8 @@
|
|
|
-import { computed, defineComponent, onBeforeMount, onMounted, reactive, Ref, ref, toRefs } from "vue";
|
|
|
+import { computed, defineComponent, onBeforeMount, reactive } from "vue";
|
|
|
import styles from "./index.module.less";
|
|
|
import state from "/src/state";
|
|
|
import { getFingeringConfig, ITypeFingering } from "./fingering-config";
|
|
|
|
|
|
-export const getImageSize = (src: string): Promise<HTMLImageElement> => {
|
|
|
- return new Promise((resolve, reject) => {
|
|
|
- const img = new Image();
|
|
|
- img.src = src;
|
|
|
- img.onload = () => {
|
|
|
- resolve(img);
|
|
|
- };
|
|
|
- img.onerror = (err) => reject(err);
|
|
|
- });
|
|
|
-};
|
|
|
-
|
|
|
-export const formatFixedKey = (type: string, fixedKey: number): Ref<number> => {
|
|
|
- if (type === "piccolo" && state.times[0]) {
|
|
|
- return ref(fixedKey + (1 - state.times[0].octaveOffset) * 12);
|
|
|
- } else {
|
|
|
- return ref(fixedKey);
|
|
|
- }
|
|
|
-};
|
|
|
-
|
|
|
-export const formatRelationship = (relationships: any, usedFixedKey: number) => {
|
|
|
- let rs = relationships[usedFixedKey] || relationships[0] || [];
|
|
|
- if (typeof rs[0] === "number" || typeof rs[0] === "string") {
|
|
|
- return [rs];
|
|
|
- } else if (typeof rs[0] === "object") {
|
|
|
- return rs;
|
|
|
- }
|
|
|
- return [[]];
|
|
|
-};
|
|
|
-
|
|
|
-export const useFingeringSrc = (activeType: any, fingeringName: string, formatFixedKey: number): Ref<string> => {
|
|
|
- const src = ref("");
|
|
|
- if (activeType && fingeringName === "trombone") {
|
|
|
- if (!activeType.relationship[formatFixedKey]) {
|
|
|
- src.value = activeType.json.full2;
|
|
|
- return src;
|
|
|
- }
|
|
|
- }
|
|
|
- src.value = activeType.json.full;
|
|
|
- return src;
|
|
|
-};
|
|
|
-
|
|
|
export default defineComponent({
|
|
|
name: "fingering",
|
|
|
setup(props, { expose }) {
|
|
@@ -53,7 +12,6 @@ export default defineComponent({
|
|
|
});
|
|
|
const getFingeringData = async () => {
|
|
|
fingerData.subject = await getFingeringConfig(state.fingeringInfo.name);
|
|
|
- console.log("🚀 ~ fingerData.relationship:", fingerData.subject);
|
|
|
};
|
|
|
onBeforeMount(() => {
|
|
|
getFingeringData();
|
|
@@ -69,24 +27,48 @@ export default defineComponent({
|
|
|
const rs: number[] = Array.isArray(relationship[1]) ? relationship[fingerData.relationshipIndex] : relationship;
|
|
|
const canTizhi = Array.isArray(relationship[1]);
|
|
|
return (
|
|
|
- <div class={[styles.fingeringContainer]}>
|
|
|
- <span class={[styles.yidiao, !rs.includes(0) && styles.canDisplay]}>转调</span>
|
|
|
+ <>
|
|
|
+ {state.fingeringInfo.direction === "transverse" ? (
|
|
|
+ <div class={[styles.fingeringContainer]}>
|
|
|
+ <span class={[styles.yidiao, rs.includes(0) && styles.canDisplay]}>转调</span>
|
|
|
+
|
|
|
+ <div class={styles.imgs}>
|
|
|
+ <img src={fingerData.subject?.json?.full} />
|
|
|
+ {rs.map((key: number | string, index: number) => {
|
|
|
+ const nk: string = typeof key === "string" ? key.replace("active-", "") : String(key);
|
|
|
+ return <img data-index={nk} src={fingerData.subject?.json?.[nk]} />;
|
|
|
+ })}
|
|
|
+ </div>
|
|
|
|
|
|
- <div class={styles.imgs}>
|
|
|
- <img src={fingerData.subject?.json?.full} />
|
|
|
- {rs.map((key: number | string, index: number) => {
|
|
|
- const nk: string = typeof key === "string" ? key.replace("active-", "") : String(key);
|
|
|
- return <img data-index={nk} src={fingerData.subject?.json?.[nk]} />;
|
|
|
- })}
|
|
|
- </div>
|
|
|
+ <div
|
|
|
+ class={[styles.tizhi, canTizhi && styles.canDisplay]}
|
|
|
+ onClick={() => (fingerData.relationshipIndex = fingerData.relationshipIndex === 0 ? 1 : 0)}
|
|
|
+ >
|
|
|
+ 替指
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ ) : (
|
|
|
+ <div class={[styles.fingeringContainer, styles.vertical]}>
|
|
|
+ <div class={styles.imgs}>
|
|
|
+ <img src={fingerData.subject?.json?.full} />
|
|
|
+ {rs.map((key: number | string, index: number) => {
|
|
|
+ const nk: string = typeof key === "string" ? key.replace("active-", "") : String(key);
|
|
|
+ return <img data-index={nk} src={fingerData.subject?.json?.[nk]} />;
|
|
|
+ })}
|
|
|
+ </div>
|
|
|
|
|
|
- <div
|
|
|
- class={[styles.tizhi, canTizhi && styles.canDisplay]}
|
|
|
- onClick={() => (fingerData.relationshipIndex = fingerData.relationshipIndex === 0 ? 1 : 0)}
|
|
|
- >
|
|
|
- 替指
|
|
|
- </div>
|
|
|
- </div>
|
|
|
+ <div class={styles.rightContent}>
|
|
|
+ <span class={[styles.yidiao, rs.includes(0) && styles.canDisplay]}>转调</span>
|
|
|
+ <div
|
|
|
+ class={[styles.tizhi, canTizhi && styles.canDisplay]}
|
|
|
+ onClick={() => (fingerData.relationshipIndex = fingerData.relationshipIndex === 0 ? 1 : 0)}
|
|
|
+ >
|
|
|
+ 替指
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ )}
|
|
|
+ </>
|
|
|
);
|
|
|
};
|
|
|
},
|