123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- /**
- * krpano 1.20 全景hotspot统一schema
- *
- *
- * */
- 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,
- },
- };
- //基本样式汇总
- const convertBaseStyle = (dest, origin) => {
- if (dest) {
- // normal
- 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";
- origin.titleDisplayMode = origin.visible ? 1 : 0;
- delete origin.visible;
- dest.style.position = "top";
- }
- // if (origin && origin.titleDisplayMode == "always") {
- if (origin && origin.titleDisplayMode == 1) {
- dest.visible = 0;
- }
- // if (origin && origin.titleDisplayMode == "never") {
- if (origin && origin.titleDisplayMode == 0) {
- 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)";
- }
- //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 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 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 + "?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;
- };
- 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);
- }
- };
|