zhgdlarge/public/bimface.js
2023-07-12 09:56:31 +08:00

1 line
11 KiB
JavaScript

!function(){"use strict";var e=window.hostConfig||{APIHost:"https://api.bimface.com",resourceHost:"https://m.bimface.com",staticHost:"https://static.bimface.com",dataEnvType:"BIMFACE",securityApi:!0};void 0===Object.assign&&(Object.assign=function(e){if(null==e)throw new TypeError("Cannot convert undefined or null to object");for(var t=Object(e),n=1;n<arguments.length;n++){var o=arguments[n];if(null!=o)for(var a in o)Object.prototype.hasOwnProperty.call(o,a)&&(t[a]=o[a])}return t});let t=Object.freeze({Release:"Release",Debug:"Debug"}),n=Object.freeze({Normal:"Normal",DrawingView:"drawingView"}),o=Object.freeze({BIMFACE:"BIMFACE",Local:"Local"}),a=Object.freeze({zh_CN:"zh_CN",en_GB:"en_GB",sv_SE:"sv_SE",zh_TW:"zh_TW"}),r=Object.freeze({Normal:"Normal",Bake:"Bake"});window.BimfaceSDKLoaderConfig=function(){if(window.hostConfig){for(let t in window.hostConfig)e[t]=window.hostConfig[t];e.securityApi=window.hostConfig.securityApi}return{staticHost:`${e.staticHost}/api`,APIHost:e.APIHost,language:"zh_CN",viewToken:null,configuration:t.Release,dataEnvType:e.dataEnvType||"BIMFACE",viewType:n.Normal,visualStyle:r.Bake,version:"",securityApi:e.securityApi}},window.BimfaceEnvOption=o,window.BimfaceLanguageOption=a,window.BimfaceConfigrationOption=t,window.BimfaceViewTypeOption=n;let i=function(e){let t=e.split("/");return t.pop(),t.join("/")+"/"};var s=function(e,t){for(var n=0;n<t.length;n++)t[n]=e+t[n]},d=function(e){var t=e.sdkVersion,o=e.options,a=o.configuration,r=[],i=[`/${t}/${o.language}.js`,`/${t}/Application${a}.js`];return r=function(e,t){return"drawingView"==e.renderType||t.viewType==n.DrawingView}(e.metadata,e.options)?[...r,...i,`/${t}/Drawing.css`,`/${t}/bimface.bufferfly.js`,`/${t}/Drawing${a}.js`]:[...r,...i,`/${t}/Bimface.css`,`/${t}/thirdparty.js`,`/${t}/lib/loaders/BimTilesLoader.js`,`/${t}/Bimface${a}.js`],r};window.postProcessing=function(e){var n=e.metadata,o=e.options,a=e.successCb,r=d(e);s(o.staticHost,r),n.databagId=`${n.databagId}`,o.path?(n.path=o.path,n.dataPath="./"):o.resourcePath&&(n.path=o.resourcePath.replace("viewToken","")),n.sdkPath=o.sdkPath,0==r.length?a(n):c(r,(function(){if(o.build===t.Debug&&o.dataPath){let e=o.dataPath.split("/");a({databagId:e.pop(),path:e.join("/")})}a(n)}))};var c=function(e,n,o){var a=e.length,r=0,i=function(l){if(l&&"error"==l.message&&l.element.indexOf("bimface.index")>-1){r=0;var h=o.options;h.build,t.Release;var g=d(o);return s(h.staticHost,g),void c(g,n)}++r==a?n():u(e[r],i)};u(e[r],i)},l=[],u=function(e,t){if(!(l.indexOf(e.split("/").pop())>-1)){var n,o=document.getElementsByTagName("head")[0];return e.indexOf(".css")>-1?((n=document.createElement("link")).setAttribute("href",e),n.setAttribute("rel","stylesheet")):(n=document.createElement("script")).setAttribute("src",e),n.url=e,o.appendChild(n),n.addEventListener("load",(function(){l.push(this.url.split("/").pop()),t&&t({message:"success"})})),n.addEventListener("error",(function(){t&&t({element:e,message:"error"})})),n}t()};window.loadResource=c;class h extends class{constructor(e){this.indexedDB=window.indexedDB||window.webkitIndexedDB||window.mozIndexedDB||window.msIndexedDB,this.indexedDB||console.log("IndexedDB not supported"),this._db=null,this._opt=e}open(e,t){const n=e||this._opt.name,o=t||this._opt.version||1,a=this.indexedDB.open(n,o);return new Promise(((e,t)=>{a.onsuccess=t=>{this._db=a.result,e(this._db)},a.onupgradeneeded=e=>{let t=this._db=e.target.result;(this._opt.storeList||[]).forEach((e=>!t.objectStoreNames.contains(e)&&t.createObjectStore(e)))},a.onerror=e=>{t(e)}}))}getDB(){return new Promise(((e,t)=>{this._db?e(this._db):this.open().then(e).catch(t)}))}addObject(e,t,n){return new Promise(((o,a)=>{this.getDB().then((r=>{const i=r.transaction(e,"readwrite");i.objectStore(e).put(t,n).onsuccess=e=>{o(e.target.result)},i.onerror=e=>{a(e)}})).catch(a)}))}getObject(e,t){return new Promise(((n,o)=>{this.getDB().then((a=>{const r=a.transaction(e,"readonly");r.objectStore(e).get(t).onsuccess=e=>{let t=e.target.result;t?n(t):o(e)},r.onerror=e=>{o(e)}})).catch(o)}))}deleteObject(e,t){return new Promise(((n,o)=>{this.getDB().then((a=>{const r=a.transaction(e,"readwrite");r.objectStore(e).delete(t).onsuccess=e=>{n(e.target.result)},r.onerror=e=>{o(e)}})).catch(o)}))}clearStore(e){return new Promise(((t,n)=>{this.getDB().then((o=>{const a=o.transaction(e,"readwrite");a.objectStore(e).clear().onsuccess=e=>{t(e.target.result)},a.onerror=e=>{n(e)}})).catch(n)}))}deleteDB(e){return new Promise((t=>{this.indexedDB.deleteDatabase(e),t()}))}getAllKeys(e){return new Promise(((t,n)=>{this.getDB().then((o=>{const a=o.transaction(e,"readonly");a.objectStore(e).getAllKeys().onsuccess=e=>t(e.target.result),a.onerror=n})).catch(n)}))}getAll(e){return new Promise(((t,n)=>{this.getDB().then((o=>{const a=o.transaction(e,"readonly");a.objectStore(e).getAll().onsuccess=e=>t(e.target.result),a.onerror=n})).catch(n)}))}}{constructor(){super({name:"Bf_Loader",version:1,storeList:["d","t"]})}getDatabagInfo(e,t){return new Promise(((n,o)=>{t?this.getObject("d",e).then((e=>this.addTemp(e,t).then((()=>n(e))).catch(o))).catch(o):this.getObject("d",e).then(n).catch(o)}))}addDatabagInfo(e,t){return new Promise(((n,o)=>{const a=e.modelId,r=()=>Promise.all([this.addObject("d",e,a),this.addTemp(e,t)]).then(n).catch(o);this.getDatabagInfo(a).then((t=>{t.databagId!==e.databagId&&this.deleteDB(`Bf_${data.databagId}`),r()})).catch((()=>{r()}))}))}deleteDatabagInfo(e){return new Promise(((t,n)=>{this.deleteObject("d",e).then(t).catch(n)}))}addTemp(e,t){return new Promise(((n,o)=>{this.clearStore("t").then((()=>{this.addObject("t",e,t).then(n).catch(o)})).catch(o)}))}getTemp(e){return new Promise(((t,n)=>{this.getObject("t",e).then(t).catch(n)}))}deleteStorageByModelId(e){return new Promise((t=>{this.getDatabagInfo(e).then((n=>{let o="gisView"===n.renderType?`Bg_${n.modelId}`:`Bf_${n.databagId}`;Promise.allSettled([this.deleteDB(o),this.deleteDatabagInfo(e)]).then(t)})).catch(t)}))}getStoredModelIds(){return this.getAllKeys("d")}getStoredModelInfo(){return new Promise(((e,t)=>{this.getAll("d").then((t=>{let n=t.map((e=>{let{modelId:t,name:n,renderType:o}=e;return{modelId:t,name:n,type:o}}));e(n)})).catch(t)}))}}var g=function(e,t,n){const a=o=>{if(e.enableStorage&&e.modelId){(new h).getDatabagInfo(e.modelId,e.viewToken).then((e=>n&&n(e))).catch((()=>{console.error("[BIMFACE ERROR]: failed get model info from storage"),t&&t(o)}))}else t&&t(o)};if(!e.viewToken&&"Local"!==e.dataEnvType)return void a();const r=e.dataEnvType!==o.Local,i=r&&e.securityApi;!function(e){var t,n=Object.assign({type:"get",data:null,success:null,failure:null},e);(t=window.XMLHttpRequest?new XMLHttpRequest:new ActiveXObject("Microsoft.XMLHTTP")).onreadystatechange=function(){if(4==t.readyState){var e=t.status;e>=200&&e<300||304==e||0===e&&"file:"===window.location.protocol?n.success&&n.success(t.responseText,t.responseXML):n.failure&&n.failure(e)}},t.open(n.type,n.url,n.async),t.send(n.data)}({type:i?"post":"get",url:r&&!i?`${e.url}?viewToken=${e.viewToken}`:e.url,async:!0,data:i?e.data:void 0,requestHeader:e.requestHeader,success:function(t){var o=JSON.parse(t);if("Local"!==e.dataEnvType&&"success"!==o.code)return o.message&&console.error(`[BIMFACE ERROR]: ${o.message}`),void a(t);if(o=o.data||o,e.enableStorage){(new h).addDatabagInfo(o,e.viewToken).then((()=>n&&n(o))).catch((()=>n&&n(o)))}else n&&n(o)},failure:a})},f=function(e,t,o){g(e,o,(function(o){var a=function(e,t){let o,a=t.version;if(e.renderVersion,/\d+?\.\d+?\.\d+/.test(a)&&a.split(".")[0]>=3){const[e,t,n]=a.split(".");"6"===t&&Number(n)<143&&(a=`Bimface@${a}`)}else if("Debug"==t.build)a="Bimface",o="Application";else if(t.sdkPath)a=o="bimface";else if(t.viewType==n.DrawingView&&"drawingView"!=e.renderType){var r=e.subRenders;if(r&&0!=r.length)for(var i=0;i<r.length;i++)r[i].renderType==n.DrawingView&&(a=r[i].jsSDKVersion,o=r[i].jsSDKVersion)}else a=e.jsSDKVersion,o=e.jsSDKVersion;return{ui:o,sdk:a}}(o,e);window.BimfaceLoaderConfig.fullStaticHost="Local"==BimfaceLoaderConfig.dataEnvType?e.staticHost+"/bimface":e.staticHost+"/"+a.sdk;var r={metadata:o,options:e,successCb:t,sdkVersion:a.sdk,uiVersion:a.ui},i=window.BimfaceLoaderConfig.fullStaticHost+"/bimface.index.js";c([i],(function(){postProcessing(r)}),r)}))},w=function(e,t){var n="bimView"==e.renderType?"3DView":e.renderType,o=(e.subRenders,{dataEnvType:t.dataEnvType,viewToken:t.viewToken,staticHost:t.staticHost,APIHost:t.APIHost,viewType:n});return Object.assign(o,e)},p={Version:"2022-7-20-9-58",load:function(e,n,a){window.BimfaceLoaderConfig=e,null==e.build&&(e.build=t.Release);var r=function(e){let n=Object.assign({},e),a="/Glodon";return e.path?(n.dataEnvType=o.Local,n.url=n.path,n.staticHost=n.sdkPath||i(n.path),n.resourcePath=i(n.path),n.path=i(n.path),a=n.sdkPath?"":"/jssdk"):e.resourcePath?(n.dataEnvType=o.Local,n.url=n.resourcePath,n.resourcePath=i(n.resourcePath)):(n.sdkPath&&(a="",n.staticHost=n.sdkPath),n.data=e.viewToken,n.url=`${e.APIHost}/inside/databag`),n.staticHost+=a,e.build!=t.Debug&&n.configuration!=t.Release||(n.configuration=""),n.configuration=n.configuration?`-${n.configuration.toLowerCase()}`:"",n}(e);if(!n&&!a)return new Promise(((t,n)=>{f(r,(function(n){t(w(n,e))}),n)}));f(r,(function(t){n&&n(w(t,e))}),(function(e){a&&a()}))},Storage:{getStorage(){return this.storage=this.storage||new h,this.storage},deleteStorageByModelId(e){return this.getStorage().deleteStorageByModelId(e)},getStoredModelIds(){return this.getStorage().getStoredModelIds()},getStoredModelInfo(){return this.getStorage().getStoredModelInfo()},store(e){let{url:t,viewToken:n,storeMaterialOverride:o,successCallback:a,progressCallback:r,errorCallback:i,conditions:s,storeByQueue:d}=e;const c=d&&d.enable,l=c&&(d.delay||2e3);if(!n)return;t=t||[],a=a||function(){},r=r||function(){},i=i||function(){};const u=new BimfaceSDKLoaderConfig;u.enableStorage=!0,u.viewToken=n,BimfaceSDKLoader.load(u).then((e=>{if("3DView"==e.viewType){const d=document.createElement("div"),u=new Glodon.Bimface.Viewer.Viewer3DConfig;u.domElement=d,u.enableStorage=!0;const h=new Glodon.Bimface.Viewer.Viewer3D(u),g=new Promise((t=>{h.addModel(e),c||h.addEventListener(Glodon.Bimface.Viewer.Viewer3DEvent.ViewLoading,(e=>r(e.progress)));const a=()=>{requestAnimationFrame((()=>{h.destroy(),t()}))};let i=!1;h.addEventListener(Glodon.Bimface.Viewer.Viewer3DEvent.ViewAdded,(()=>{if(i)return;const e=()=>{i=!0;const e=h.getDefaultModel(),t=e.getCloudViewer().getModelManager().getModel(e.modelId),o=[...t._handler.layerProvider.getAllLayerIdxData().layerKeys],s=[...t._handler.layerProvider.getLayerKeyAttributes()];let d=0;const c={},u=()=>{if(r(Math.floor(100*(d+1)/o.length)),d===o.length)return void a();o[d].split("-").forEach(((e,t)=>c[s[t]]=e));const e=h.getDefaultModel();e&&e.destroy();const t=isNaN(l)?2e3:Number(l);setTimeout((()=>{h.addView(n)}),t),d++};h.addEventListener(Glodon.Bimface.Viewer.Viewer3DEvent.ModelAdded,(()=>{h.showExclusiveComponentsByObjectData([c],null,u)})),u()};o?h.loadMaterialOverrideSet(h.getModel().modelId,n,(function(){s?h.showExclusiveComponentsByObjectData(s,null,a):c?e():(h.showAllComponents(),h.addEventListener(Glodon.Bimface.Viewer.Viewer3DEvent.DemandLoaded,a))})):s?h.showExclusiveComponentsByObjectData(s,null,a):c?e():a()}))}));Promise.all([g,h._storeData(t)]).then(a).catch(i)}})).catch()}}};window.BimfaceSDKLoader=p}();