|
@@ -1,159 +1,163 @@
|
|
|
/**
|
|
|
* krpano 1.20 全景hotspot统一schema
|
|
|
*
|
|
|
- *
|
|
|
+ *
|
|
|
* */
|
|
|
|
|
|
-import config from '../config'
|
|
|
+import config from "../config";
|
|
|
|
|
|
const initState = {
|
|
|
- id: "",
|
|
|
- title: "",
|
|
|
- type: 0, // 热点大类型
|
|
|
- ath: 0,
|
|
|
- atv: 0,
|
|
|
- link: "",
|
|
|
- icon: "",
|
|
|
- visible: true,
|
|
|
- size: 0,
|
|
|
- style: {
|
|
|
- fontSize: 12,
|
|
|
- position: "top",
|
|
|
- isHover: false,
|
|
|
- borderColor: "",
|
|
|
- fillColor: "",
|
|
|
- textColor: "",
|
|
|
- isShowLine: "",
|
|
|
- isTextWrap: "",
|
|
|
- lineDirection: "",
|
|
|
- textDirection: "",
|
|
|
- textNumPerLine: "",
|
|
|
- duration: 0,
|
|
|
- frameNumber: 0,
|
|
|
- frameWidth: 0,
|
|
|
- }
|
|
|
-}
|
|
|
+ id: "",
|
|
|
+ title: "",
|
|
|
+ type: 0, // 热点大类型
|
|
|
+ ath: 0,
|
|
|
+ atv: 0,
|
|
|
+ link: "",
|
|
|
+ icon: "",
|
|
|
+ visible: true,
|
|
|
+ size: 0,
|
|
|
+ style: {
|
|
|
+ fontSize: 12,
|
|
|
+ position: "top",
|
|
|
+ isHover: false,
|
|
|
+ borderColor: "",
|
|
|
+ fillColor: "",
|
|
|
+ textColor: "",
|
|
|
+ isShowLine: "",
|
|
|
+ isTextWrap: "",
|
|
|
+ lineDirection: "",
|
|
|
+ textDirection: "",
|
|
|
+ textNumPerLine: "",
|
|
|
+ duration: 0,
|
|
|
+ frameNumber: 0,
|
|
|
+ frameWidth: 0,
|
|
|
+ },
|
|
|
+};
|
|
|
//基本样式汇总
|
|
|
const convertBaseStyle = (dest, origin) => {
|
|
|
- if (dest) {
|
|
|
- // normal
|
|
|
+ if (dest) {
|
|
|
+ // normal
|
|
|
|
|
|
- dest.style.fontSize = origin.fontSize
|
|
|
- dest.style.position = origin.titlePosition
|
|
|
- // 兼容旧数据
|
|
|
+ dest.style.fontSize = origin.fontSize;
|
|
|
+ dest.style.position = origin.titlePosition;
|
|
|
+ // 兼容旧数据
|
|
|
|
|
|
- if ('visible' in origin && typeof origin.visible == "boolean") {
|
|
|
- dest.visible = origin.visible ? 0 : 1
|
|
|
- origin.titleDisplayMode = origin.visible ? 'always' : 'never'
|
|
|
- delete origin.visible
|
|
|
- dest.style.position = "top"
|
|
|
- }
|
|
|
- if (origin && origin.titleDisplayMode == "always") {
|
|
|
- dest.visible = 0
|
|
|
- }
|
|
|
- if (origin && origin.titleDisplayMode == "never") {
|
|
|
- dest.visible = 1
|
|
|
- }
|
|
|
- if (origin && origin.titleDisplayMode == "hover") {
|
|
|
- dest.visible = 2
|
|
|
- }
|
|
|
-
|
|
|
- dest.style.borderColor = '';
|
|
|
- dest.style.fillColor = 'rgba(0,0,0,0.8)';
|
|
|
- dest.style.textColor = 'rgba(255,255,255,1)';
|
|
|
+ if ("visible" in origin && typeof origin.visible == "boolean") {
|
|
|
+ dest.visible = origin.visible ? 0 : 1;
|
|
|
+ origin.titleDisplayMode = origin.visible ? "always" : "never";
|
|
|
+ delete origin.visible;
|
|
|
+ dest.style.position = "top";
|
|
|
+ }
|
|
|
+ if (origin && origin.titleDisplayMode == "always") {
|
|
|
+ dest.visible = 0;
|
|
|
}
|
|
|
- //custom
|
|
|
- if (origin && origin.hotspotIconType === 'serial_frame') {
|
|
|
- dest.style.duration = origin.serialFrameInfo.duration
|
|
|
- dest.style.frameNumber = origin.serialFrameInfo.frameNumber
|
|
|
- dest.style.frameWidth = origin.serialFrameInfo.frameWidth
|
|
|
+ if (origin && origin.titleDisplayMode == "never") {
|
|
|
+ dest.visible = 1;
|
|
|
}
|
|
|
- //custom
|
|
|
- if (origin && origin.hotspotIconType === 'personalized_tag') {
|
|
|
- dest.style.borderColor = origin.personalizedTagInfo.borderColor;
|
|
|
- dest.style.fillColor = origin.personalizedTagInfo.fillColor
|
|
|
- dest.style.isTextWrap = origin.personalizedTagInfo.isTextWrap
|
|
|
- dest.style.lineDirection = origin.personalizedTagInfo.lineDirection
|
|
|
- dest.style.textColor = origin.personalizedTagInfo.textColor
|
|
|
- dest.style.textDirection = origin.personalizedTagInfo.textDirection
|
|
|
- dest.style.textNumPerLine = origin.personalizedTagInfo.textNumPerLine
|
|
|
- dest.style.isShowLine = origin.personalizedTagInfo.isShowLine
|
|
|
+ if (origin && origin.titleDisplayMode == "hover") {
|
|
|
+ dest.visible = 2;
|
|
|
}
|
|
|
|
|
|
-}
|
|
|
+ dest.style.borderColor = "";
|
|
|
+ dest.style.fillColor = "rgba(0,0,0,0.8)";
|
|
|
+ dest.style.textColor = "rgba(255,255,255,1)";
|
|
|
+ }
|
|
|
+ //custom
|
|
|
+ if (origin && origin.hotspotIconType === "serial_frame") {
|
|
|
+ dest.style.duration = origin.serialFrameInfo.duration;
|
|
|
+ dest.style.frameNumber = origin.serialFrameInfo.frameNumber;
|
|
|
+ dest.style.frameWidth = origin.serialFrameInfo.frameWidth;
|
|
|
+ }
|
|
|
+ //custom
|
|
|
+ if (origin && origin.hotspotIconType === "personalized_tag") {
|
|
|
+ dest.style.borderColor = origin.personalizedTagInfo.borderColor;
|
|
|
+ dest.style.fillColor = origin.personalizedTagInfo.fillColor;
|
|
|
+ dest.style.isTextWrap = origin.personalizedTagInfo.isTextWrap;
|
|
|
+ dest.style.lineDirection = origin.personalizedTagInfo.lineDirection;
|
|
|
+ dest.style.textColor = origin.personalizedTagInfo.textColor;
|
|
|
+ dest.style.textDirection = origin.personalizedTagInfo.textDirection;
|
|
|
+ dest.style.textNumPerLine = origin.personalizedTagInfo.textNumPerLine;
|
|
|
+ dest.style.isShowLine = origin.personalizedTagInfo.isShowLine;
|
|
|
+ }
|
|
|
+};
|
|
|
|
|
|
const coverSystemIconPart = (origin) => {
|
|
|
- const duplicate = structuredClone(initState)
|
|
|
- duplicate.id = origin.name;
|
|
|
- duplicate.title = origin.hotspotTitle;
|
|
|
- duplicate.ath = origin.ath;
|
|
|
- duplicate.atv = origin.atv;
|
|
|
- duplicate.type = 0;
|
|
|
- duplicate.icon = origin.img || '';
|
|
|
- duplicate.link = origin.link || '';
|
|
|
- duplicate.size = origin.size;
|
|
|
- convertBaseStyle(duplicate, origin)
|
|
|
- return duplicate;
|
|
|
-}
|
|
|
+ const duplicate = structuredClone(initState);
|
|
|
+ duplicate.id = origin.name;
|
|
|
+ duplicate.title = origin.hotspotTitle;
|
|
|
+ duplicate.ath = origin.ath;
|
|
|
+ duplicate.atv = origin.atv;
|
|
|
+ duplicate.type = 0;
|
|
|
+ duplicate.icon = origin.img || "";
|
|
|
+ duplicate.link = origin.link || "";
|
|
|
+ duplicate.size = origin.size;
|
|
|
+ convertBaseStyle(duplicate, origin);
|
|
|
+ return duplicate;
|
|
|
+};
|
|
|
|
|
|
const coverImageconPart = (origin) => {
|
|
|
- const defaultImage = config.getStaticResource('/panoassets/images/hotspot/image_place_holder.png');
|
|
|
- const duplicate = structuredClone(initState)
|
|
|
- duplicate.id = origin.name;
|
|
|
- duplicate.title = origin.hotspotTitle;
|
|
|
- duplicate.ath = origin.ath;
|
|
|
- duplicate.atv = origin.atv;
|
|
|
- duplicate.type = 1;
|
|
|
- duplicate.icon = origin.customIconInfo.img || defaultImage;
|
|
|
- duplicate.link = origin.link || '';
|
|
|
- duplicate.size = origin.size;
|
|
|
- convertBaseStyle(duplicate, origin)
|
|
|
- return duplicate;
|
|
|
-}
|
|
|
+ const defaultImage = config.getStaticResource(
|
|
|
+ "/panoassets/images/hotspot/image_place_holder.png"
|
|
|
+ );
|
|
|
+ const duplicate = structuredClone(initState);
|
|
|
+ duplicate.id = origin.name;
|
|
|
+ duplicate.title = origin.hotspotTitle;
|
|
|
+ duplicate.ath = origin.ath;
|
|
|
+ duplicate.atv = origin.atv;
|
|
|
+ duplicate.type = 1;
|
|
|
+ duplicate.icon = origin.customIconInfo.img || defaultImage;
|
|
|
+ duplicate.link = origin.link || "";
|
|
|
+ duplicate.size = origin.size;
|
|
|
+ convertBaseStyle(duplicate, origin);
|
|
|
+ return duplicate;
|
|
|
+};
|
|
|
const coverSerialFrame = (origin) => {
|
|
|
- const duplicate = structuredClone(initState);
|
|
|
- const defaultImage = config.getStaticResource('/panoassets/images/hotspot/image_place_holder.png');
|
|
|
- // console.log('defaultImage', defaultImage);
|
|
|
- duplicate.id = origin.name;
|
|
|
- duplicate.title = origin.hotspotTitle;
|
|
|
- duplicate.ath = origin.ath;
|
|
|
- duplicate.atv = origin.atv;
|
|
|
- duplicate.type = 2;
|
|
|
- duplicate.icon = origin.serialFrameInfo.img || defaultImage;
|
|
|
- duplicate.link = origin.link || '';
|
|
|
- duplicate.size = origin.size;
|
|
|
- convertBaseStyle(duplicate, origin)
|
|
|
- return duplicate;
|
|
|
-}
|
|
|
+ const duplicate = structuredClone(initState);
|
|
|
+ const defaultImage = config.getStaticResource(
|
|
|
+ "/panoassets/images/hotspot/image_place_holder.png"
|
|
|
+ );
|
|
|
+ // console.log('defaultImage', defaultImage);
|
|
|
+ duplicate.id = origin.name;
|
|
|
+ duplicate.title = origin.hotspotTitle;
|
|
|
+ duplicate.ath = origin.ath;
|
|
|
+ duplicate.atv = origin.atv;
|
|
|
+ duplicate.type = 2;
|
|
|
|
|
|
+ duplicate.icon =
|
|
|
+ origin.serialFrameInfo.img +
|
|
|
+ "?x-oss-process=image/resize,w_128,q_80" ||
|
|
|
+ defaultImage;
|
|
|
+ duplicate.link = origin.link || "";
|
|
|
+ duplicate.size = origin.size;
|
|
|
+ convertBaseStyle(duplicate, origin);
|
|
|
+ return duplicate;
|
|
|
+};
|
|
|
|
|
|
const coverpersonalizedTag = (origin) => {
|
|
|
- const duplicate = structuredClone(initState);
|
|
|
- duplicate.id = origin.name;
|
|
|
- duplicate.title = origin.hotspotTitle;
|
|
|
- duplicate.ath = origin.ath;
|
|
|
- duplicate.atv = origin.atv;
|
|
|
- duplicate.type = 3;
|
|
|
- duplicate.link = origin.link || '';
|
|
|
- duplicate.size = origin.size;
|
|
|
- convertBaseStyle(duplicate, origin)
|
|
|
- return duplicate;
|
|
|
-}
|
|
|
-
|
|
|
+ const duplicate = structuredClone(initState);
|
|
|
+ duplicate.id = origin.name;
|
|
|
+ duplicate.title = origin.hotspotTitle;
|
|
|
+ duplicate.ath = origin.ath;
|
|
|
+ duplicate.atv = origin.atv;
|
|
|
+ duplicate.type = 3;
|
|
|
+ duplicate.link = origin.link || "";
|
|
|
+ duplicate.size = origin.size;
|
|
|
+ convertBaseStyle(duplicate, origin);
|
|
|
+ return duplicate;
|
|
|
+};
|
|
|
|
|
|
export const convertJQHotspot = (origin) => {
|
|
|
- const type = origin.hotspotIconType
|
|
|
- switch (type) {
|
|
|
- case 'system_icon':
|
|
|
- return coverSystemIconPart(origin);
|
|
|
- case 'custom_image':
|
|
|
- return coverImageconPart(origin);
|
|
|
- case 'serial_frame':
|
|
|
- return coverSerialFrame(origin);
|
|
|
- case 'personalized_tag':
|
|
|
- return coverpersonalizedTag(origin);
|
|
|
- default:
|
|
|
- return coverSystemIconPart(origin);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
+ const type = origin.hotspotIconType;
|
|
|
+ switch (type) {
|
|
|
+ case "system_icon":
|
|
|
+ return coverSystemIconPart(origin);
|
|
|
+ case "custom_image":
|
|
|
+ return coverImageconPart(origin);
|
|
|
+ case "serial_frame":
|
|
|
+ return coverSerialFrame(origin);
|
|
|
+ case "personalized_tag":
|
|
|
+ return coverpersonalizedTag(origin);
|
|
|
+ default:
|
|
|
+ return coverSystemIconPart(origin);
|
|
|
+ }
|
|
|
+};
|