bill 2 月之前
父節點
當前提交
0296adfbef
共有 1 個文件被更改,包括 65 次插入1 次删除
  1. 65 1
      public/static/kankan.html

+ 65 - 1
public/static/kankan.html

@@ -18,12 +18,46 @@
       width: 100%;
       height: 100%;
     }
+
+    #floors {
+      pointer-events: all;
+      position: fixed;
+      left: 20px;
+      z-index: 10;
+      top: 50%;
+      transform: translateY(-50%);
+      background: rgba(0, 0, 0, .6);
+      border-radius: 6px 6px 6px 6px;
+      overflow: hidden;
+      transition: all .3s;
+      padding: 5px 13px;
+      min-width: 30px;
+    }
+
+    #floors li {
+      height: 36px;
+      cursor: pointer;
+      color: hsla(0, 0%, 100%, .7);
+      font-size: 14px;
+      line-height: 40px;
+      max-width: 83vw;
+      text-align: center;
+      position: relative;
+      color: #fff;
+      text-overflow: ellipsis;
+      overflow: hidden;
+      white-space: nowrap;
+    }
+    .active {
+      color: #00c8af !important;
+    }
   </style>
 </head>
 
 <body>
   <div id="scene" class="scene"></div>
   <div class="map"></div>
+  <ul id="floors" style="display: none;"></ul>
   <script>
     const params = new URLSearchParams(location.search)
     let host = params.get('host') || ''
@@ -56,16 +90,46 @@
         server: host,
         resource: host + '/oss/'
       })
+
+      const setCurrentFloor = (id) => {
+        const $old = document.querySelector(`#floors > .active`)
+        if ($old) {
+          $old.classList.remove('active')
+        }
+        const $item = document.querySelector(`#floors > li[attr-id='${id}']`)
+        console.log(id)
+        kankan.Scene.gotoFloor(Number(id))
+        $item.classList.add('active')
+      }
+
+      const renderFloors = (floors) => {
+        const $floors = document.querySelector('#floors')
+        if (floors.length <= 1) return;
+        $floors.style.display = 'block'
+        $floors.innerHTML = floors.map(item => `<li attr-id="${item.id}">${item.name}</li>`).join('')
+        $floors.addEventListener('click', ev => {
+          const dom = ev.target
+          const id = dom.getAttribute('attr-id')
+          if (!id) return;
+          setCurrentFloor(id)
+        })
+      }
+
+
+      kankan.store.on('flooruser', floor => {
+        renderFloors(floor.floors)
+      })
       kankan.Scene.on('loaded', () => {
         const player = kankan.core.get('Player')
         player.viewLinkManager.addEventListener('loaded', () => {
           player.viewLinkManager.hideAllViews()
         })
+        setCurrentFloor(kankan.Scene.floorId)
       })
       kankan.Scene.on('ready', async () => {
         let metadata = await kankan.store.get('metadata')
         metadata.surveillances = 0
-        
+
       })
       kankan.render()
     }