{"version":3,"sources":["webpack:///./src/api/offline.js"],"names":["instance","Offline","constructor","that","rtcViewer","vueInstance","$parent","portNo","cameraInfo","serialCd","clientId","webrtcInforms","playPoint","recordList","limit","init","viewer","viewers","get","key","sendMessage","event","data","s_live","s_playback","s_pause","s_resume","s_datelist","s_timelist","s_playback_speed","sendViewerMessage","message","dataChannel","send","e","instanceStoreControl","type","call","payload","mode","packet","topic","JSON","stringify","timestamp","date","s_heartbeat","speed","getTopicAndPayload","evt","parse","topics","toString","toLowerCase","split","length","receiveMessageSimple","checkValid","r_heartbeat","r_error","receiveMessage","r_startplay","r_playstatus","r_datelist","r_timelist","r_pause","r_resume","r_position","r_playback_speed","errorCode","errorProcess","dateList","formatted","forEach","ele","count","temp","replace","push","replaceAll","Date","toISOString","substring","dates","changeSwipeDate","timeList","obj","start","end","isExist","some","item","sort","a","b","playTimestamp","position","duration","startTimestamp","tempDiffAdj","player","currentTime","playerInitTime","$store","dispatch","commit","getRecordListLimitApt","total","g","Math","round","setRecordListSimplify","simplifiedList","prevEnd","currentStart","timeDiff","getTime","showToastMessage","VideoErrorStatus","EXCEED_MAX_SESSION","changedSpeed"],"mappings":"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","file":"js/PrivateStoreCCTV~VideoDownloadSetting~WebRtcVideoTest~splitScreen~videoHlsPlayerPage~videoPlayerTestPage.js","sourcesContent":["import { VideoErrorStatus } from \"@/constants\";\n\nlet instance = null;\nconst Offline = class Offline {\n /**\n * @description\n * that : Offline 생성 위치인 VideoBox.vue를 의미함\n * Timeline, LeftMenu, Calendar 등을 컨트롤 하기 위해 $parent로 HLSVideoPlayer를 가져옴\n * rtcViewer : 현재 체결된 rtc Connection을 가져오기 위함\n */\n constructor(that, rtcViewer) {\n if (!that && !rtcViewer) return instance;\n if (that) {\n this.vueInstance = that.$parent; // HLSVideoPlayer를 뜻함\n this.portNo = that.cameraInfo.portNo;\n this.serialCd = that.cameraInfo.serialCd;\n this.clientId = that.webrtcInforms.clientId;\n this.webrtcInforms = that.webrtcInforms;\n this.playPoint = that.playPoint;\n }\n if (rtcViewer) this.rtcViewer = rtcViewer;\n this.recordList = [];\n this.limit = 0;\n instance = this;\n this.init();\n }\n init() {\n this.viewer = this.rtcViewer.viewers.get(this.webrtcInforms.key);\n }\n // send webrtc datachannel message \n sendMessage(event, data) {\n // this.sendMessage('playback', { timestamp : 1714887937224 });\n // this.sendMessage('timelist', { date : '20240503' });\n if (event === \"live\") this.s_live();\n else if (event === \"playback\") this.s_playback(data);\n else if (event === \"pause\") this.s_pause();\n else if (event === \"resume\") this.s_resume();\n else if (event === \"datelist\") this.s_datelist();\n else if (event === \"timelist\") this.s_timelist(data);\n else if (event === \"playbackspeed\") this.s_playback_speed(data);\n }\n sendViewerMessage(message) {\n if (!this.viewer) return;\n if (this.viewer.dataChannel) {\n try {\n this.viewer.dataChannel.send(message);\n console.log('[VIEWER] Sent', message, 'to MASTER!');\n } catch (e) {\n console.error('[VIEWER] Send DataChannel:', e.toString());\n return false;\n }\n } else {\n console.warn('[VIEWER] No DataChannel exists!');\n return false;\n }\n }\n s_live() {\n this.instanceStoreControl({ type: 'dispatch', call: 'player/showLoading', data: null} );\n const payload = {\n portNo : this.portNo,\n mode : \"Live\",\n };\n const packet = {\n topic : `ueyes/iot/${this.serialCd}/request/webrtc/startPlay`,\n clientId : `${this.clientId}`,\n payload : JSON.stringify(payload),\n };\n this.sendViewerMessage(JSON.stringify(packet));\n }\n s_playback(data) {\n this.instanceStoreControl({ type: 'dispatch', call: 'player/showLoading', data: null} );\n const payload = {\n portNo : this.portNo,\n mode : \"Playback\",\n timestamp : data.timestamp,\n };\n const packet = {\n topic : `ueyes/iot/${this.serialCd}/request/webrtc/startPlay`,\n clientId : `${this.clientId}`,\n payload : JSON.stringify(payload),\n };\n this.sendViewerMessage(JSON.stringify(packet));\n }\n s_pause() {\n const payload = {\n portNo : this.portNo,\n };\n const packet = {\n topic : `ueyes/iot/${this.serialCd}/request/webrtc/playback/pause`,\n clientId : `${this.clientId}`,\n payload : JSON.stringify(payload),\n };\n this.sendViewerMessage(JSON.stringify(packet));\n }\n s_resume() {\n const payload = {\n portNo : this.portNo,\n };\n const packet = {\n topic : `ueyes/iot/${this.serialCd}/request/webrtc/playback/resume`,\n clientId : `${this.clientId}`,\n payload : JSON.stringify(payload),\n };\n this.sendViewerMessage(JSON.stringify(packet));\n }\n s_datelist() {\n const payload = {\n portNo : this.portNo,\n };\n const packet = {\n topic : `ueyes/iot/${this.serialCd}/request/webrtc/playback/timeline/dateList`,\n clientId : `${this.clientId}`,\n payload : JSON.stringify(payload),\n };\n this.sendViewerMessage(JSON.stringify(packet));\n }\n s_timelist(data) {\n const payload = {\n portNo: this.portNo,\n date: data.date,\n };\n const packet = {\n topic : `ueyes/iot/${this.serialCd}/request/webrtc/playback/timeline/timeList`,\n clientId : `${this.clientId}`,\n payload : JSON.stringify(payload),\n };\n this.sendViewerMessage(JSON.stringify(packet));\n }\n s_heartbeat() {\n const payload = {\n portNo: this.portNo,\n };\n const packet = {\n topic : `ueyes/iot/${this.serialCd}/response/webrtc/sessionHeartbeat`,\n clientId: `${this.clientId}`,\n payload: JSON.stringify(payload),\n };\n this.sendViewerMessage(JSON.stringify(packet));\n }\n s_playback_speed(speed) {\n const payload = {\n portNo: this.portNo,\n speed: speed,\n };\n const packet = {\n topic : `ueyes/iot/${this.serialCd}/request/webrtc/playback/speed`,\n clientId : `${this.clientId}`,\n payload: JSON.stringify(payload),\n };\n this.sendViewerMessage(JSON.stringify(packet));\n }\n getTopicAndPayload(evt) {\n const message = evt.data;\n const packet = JSON.parse(message);\n const payload = JSON.parse(packet.payload);\n const topics = packet.topic.toString().toLowerCase().split('/');\n const topic = topics[topics.length - 1];\n return {\n topic: topic,\n payload: payload,\n }\n }\n // receive webrtc datachannel message\n receiveMessageSimple(evt) { // split player 등 타임라인이 없는 곳에서 쓰임\n const { topic, payload } = this.getTopicAndPayload(evt);\n console.log('[VIEWER] Received', evt.data, 'from Master', topic, new Date());\n if (topic !== 'position' && topic !== 'sessionheartbeat' && !this.checkValid(payload)) return;\n if (topic === 'sessionheartbeat') this.r_heartbeat(payload);\n else if (topic === \"error\") this.r_error(payload);\n }\n receiveMessage(evt) { // 타임라인, 주간 캘린더 등의 다른 컴포넌트가 있을 경우 쓰임\n const { topic, payload } = this.getTopicAndPayload(evt);\n console.log('[VIEWER] Received', evt.data, 'from Master', topic, new Date());\n if (topic !== 'position' && topic !== 'sessionheartbeat' && !this.checkValid(payload)) return;\n if (topic === \"startplay\") this.r_startplay(payload);\n else if (topic === \"playstatus\") this.r_playstatus(payload);\n else if (topic === \"datelist\") this.r_datelist(payload);\n else if (topic === \"timelist\") this.r_timelist(payload);\n else if (topic === \"pause\") this.r_pause(payload);\n else if (topic === \"resume\") this.r_resume(payload);\n else if (topic === \"position\") this.r_position(payload);\n else if (topic === \"sessionheartbeat\") this.r_heartbeat(payload);\n else if (topic === \"speed\") this.r_playback_speed(payload);\n else if (topic === \"error\") this.r_error(payload);\n }\n checkValid(payload) {\n if (!payload.errorCode) return false;\n if (payload.errorCode !== 'SUCCESS') {\n this.errorProcess(payload);\n return false;\n }\n return true;\n }\n r_startplay(payload) {\n // { portNo: 4, mode: 'Live', errorCode: 'SUCCESS' }\n this.instanceStoreControl({ type: 'dispatch', call: 'player/hideLoading', data: null} );\n console.log('startplay', payload);\n }\n r_playstatus(payload) {\n console.log('playstatus', payload);\n }\n r_datelist(payload) {\n console.log('datelist', payload);\n const dateList = payload.dateList;\n const formatted = [];\n dateList.forEach((ele) => {\n // { portNo: 4, errorCode: 'SUCCESS', dateList: []}\n if (ele.count < 1) return;\n const temp = ele.date.replace(/(\\d{4})(\\d{2})(\\d{2})/g, '$1-$2-$3');\n formatted.push(temp);\n this.sendMessage('timelist', { date: temp.replaceAll('-', '')});\n })\n if (formatted.length === 0) formatted.push(new Date().toISOString().substring(0, 10));\n if (this.vueInstance) {\n this.vueInstance.dates = formatted;\n this.vueInstance.changeSwipeDate();\n this.instanceStoreControl({ type: 'commit', call: 'player/SET_DATE_LIST', data: formatted });\n this.instanceStoreControl({ type: 'commit', call: 'player/SET_RECORDING_PERIOD', data: dateList.length });\n }\n }\n r_timelist(payload) {\n // { portNo: 4, errorCode: 'SUCCESS', timeList: []}\n console.log('timelist', payload);\n const timeList = payload.timeList;\n timeList.forEach(ele => {\n const obj = { start: new Date(ele.start), end: new Date(ele.end) };\n const isExist = this.recordList.some(item => JSON.stringify(item) === JSON.stringify(obj));\n if (!isExist) this.recordList.push(obj);\n });\n this.recordList.sort((a, b) => a.start - b.start);\n // console.log('push recordList', this.recordList);\n // this.limit = 5000;\n // if (this.limit === 0) this.limit = this.getRecordListLimitApt();\n // this.limit = this.limit < 10000 ? this.limit : 5000;\n // this.setRecordListSimplify(this.limit);\n // console.log('simplified recordList', this.recordList, this.limit);\n this.instanceStoreControl({ type: 'commit', call: 'player/SET_RECORD_LIST', data: this.recordList });\n }\n r_position(payload) {\n // { portNo: 2, playTimestamp: 1713250376399, position: 1108200, duration: 1800041, startTimestamp: 1713249268199 }\n console.log('position', payload, new Date(payload.playTimestamp), this.vueInstance.player);\n const { playTimestamp, position, duration, startTimestamp } = payload; \n if (this.vueInstance) {\n this.instanceStoreControl({ type: 'commit', call: 'player/SET_VIDEO_SEGMENT_START_DATE_OBJ', data: new Date(playTimestamp) });\n const tempDiffAdj = this.vueInstance.player.currentTime() - this.vueInstance.playerInitTime;\n this.instanceStoreControl({ type: 'commit', call: 'player/SET_OFFLINE_TIME_DIFF_ADJ', data: tempDiffAdj });\n this.instanceStoreControl({ type: 'dispatch', call: 'player/hideLoading', data: null} );\n }\n }\n r_heartbeat(payload) {\n console.log('heartbeat', payload);\n this.s_heartbeat(); // 받으면 바로 응답하는 것으로 변경\n // setTimeout(() => this.s_heartbeat(), 1000);\n }\n r_error(payload) {\n // { portNo: 2, startTimestamp: 1727223, errorCode: 'FileNotFound' }\n this.instanceStoreControl({ type: 'dispatch', call: 'player/hideLoading', data: null} );\n console.log('error', payload);\n }\n r_pause(payload) {\n // { portNo: 2, errorCode: 'SUCCESS' }\n console.log('pause', payload);\n }\n r_resume(payload) {\n // { portNo: 2, errorCode: 'SUCCESS' }\n console.log('resume', payload);\n }\n r_playback_speed(payload) {\n console.log('playback speed', payload);\n const { duration, playTimestamp, position, speed, startTimestamp } = payload;\n this.instanceStoreControl({ type: 'dispatch', call: 'player/updatePlayRate', data: speed });\n }\n instanceStoreControl(obj) {\n // this.instanceStoreControl({ type: 'dispatch', call: 'player/showLoading', data: null} );\n // this.instanceStoreControl({ type: 'commit', call: 'player/SET_VIDEO_SEGMENT_START_DATE_OBJ', data: });\n const { type, call, data } = obj;\n switch (type) {\n case 'dispatch': \n if (this.vueInstance && this.vueInstance.$store) this.vueInstance.$store.dispatch(call, data);\n break;\n case 'commit':\n if (this.vueInstance && this.vueInstance.$store) this.vueInstance.$store.commit(call, data);\n break;\n }\n }\n getRecordListLimitApt() { \n // 30분 단위의 녹화 영상이 들어옴, 녹화간 시간차는 대략 5초 내외, 녹화간 시간차의 평균으로 녹화범위 데이터 갱신\n // TODO: 적절한 대표값을 찾아 적용 필요. 어디서부터 어디까지 필요한 녹화범위인지 기준이 애매함. \n // 녹화간 중단시간 간격의 평균, 중위값, 최빈값 또는 적당한 값을 찾아 적용하면 좋을 것 같음.\n let total = 0;\n let start, end;\n for (let g = 0; g < this.recordList.length - 1; ++ g) {\n end = this.recordList[g].end;\n start = this.recordList[g + 1].start;\n total += start - end;\n }\n return Math.round(total / (this.recordList.length - 1), 0);\n }\n setRecordListSimplify(limit) { \n // 하루 이상의 시간(24시간)동안 지속 플레이할 경우 recordList의 array 증가로 수행능력 저하 이슈가 있음.\n // 이 부분은 개선하기 위하여 녹화데이터 간략화를 진행함.\n const simplifiedList = [];\n for (let g = 0; g < this.recordList.length; ++ g) {\n if (simplifiedList.length === 0) {\n simplifiedList.push(this.recordList[g]);\n } else {\n let prevEnd = simplifiedList[simplifiedList.length - 1].end;\n let currentStart = this.recordList[g].start;\n let timeDiff = currentStart.getTime() - prevEnd.getTime();\n if (timeDiff <= limit) {\n simplifiedList[simplifiedList.length - 1].end = this.recordList[g].end;\n } else {\n simplifiedList.push(this.recordList[g]);\n }\n }\n }\n this.recordList = simplifiedList;\n }\n errorProcess(payload) {\n const { errorCode } = payload;\n this.instanceStoreControl({ type: 'dispatch', call: 'player/hideLoading', data: null} );\n switch (errorCode) {\n case \"InvalidParameter\":\n // if (this.vueInstance) this.vueInstance.showToastMessage('Invalid Parameter');\n if (this.vueInstance) this.vueInstance.showToastMessage(\"パラメーターが有効ではありません。\");\n console.warn(\"InvalidParameter\", payload);\n break;\n case \"InvalidRequest\":\n /*\n - Live mode 중 pause 요청시\n - Live mode 중 resume 요청시\n - Playback Pause 중 pause 요청시\n - Playback Resume 중 resume 요청시\n */\n // if (this.vueInstance) this.vueInstance.showToastMessage('Invalid Request');\n if (this.vueInstance) this.vueInstance.showToastMessage(\"要求が有効ではありません。\");\n console.warn(\"InvalidRequest\", payload);\n break;\n case \"NotSupported\":\n /*\n - 지원하지 않는 기능 (예: Playback 지원하지 않는 요금제에서 Playback 기능을 요청 하는 경우)\n */\n // if (this.vueInstance) this.vueInstance.showToastMessage('Not Supported');\n if (this.vueInstance) this.vueInstance.showToastMessage(\"サポートされていない要求です。\");\n console.warn(\"NotSupported\", payload);\n break;\n case \"ExceededSessionError\" : \n if (this.vueInstance) {\n this.vueInstance.showToastMessage(\"セッションを超えました。\");\n this.instanceStoreControl({ type: 'commit', call: 'player/SET_VIDEO_ERROR', data: VideoErrorStatus.EXCEED_MAX_SESSION });\n }\n console.warn(\"ExceededSessionError\", payload);\n break;\n case \"InternalOperationError\" :\n console.warn(\"InternalOperationError\", payload);\n break;\n case \"PlaybackModeError\" : \n if (this.vueInstance) this.vueInstance.showToastMessage(\"プレイバックモードの切り替えに失敗しました。\");\n console.warn(\"PlaybackModeError\", payload);\n break;\n case \"LiveModeError\" : \n if (this.vueInstance) this.vueInstance.showToastMessage(\"ライブモードの切り替えに失敗しました。\");\n console.warn(\"LiveModeError\", payload);\n break;\n case \"FileReadError\":\n if (this.vueInstance) this.vueInstance.showToastMessage(\"映像の読み込みに失敗しました。\");\n console.warn(\"FileReadError\", payload);\n break;\n case \"FileOpenError\":\n if (this.vueInstance) this.vueInstance.showToastMessage(\"映像の開きに失敗しました。\");\n console.warn(\"FileOpenError\", payload);\n break;\n case \"FileError\" : \n if (this.vueInstance) this.vueInstance.showToastMessage(\"ファイルエラーがあります。\");\n console.warn(\"FileError\", payload);\n break;\n case \"FileNotFound\":\n if (this.vueInstance) this.vueInstance.showToastMessage(\"映像が見つかりません。\");\n console.warn(\"FileNotFound\", payload);\n break;\n case \"SpeedLimitExceededError\" :\n this.vueInstance.showToastMessage(`スピードリミットを超えました。 ${payload.changedSpeed}倍スピードでプレイします。`);\n this.instanceStoreControl({ type: 'dispatch', call: 'player/updatePlayRate', data: payload.changedSpeed });\n console.warn(\"SpeedLimitExceededError\", payload);\n break;\n }\n }\n};\n\nexport default Offline;\n\n// commonPacket = {\n// clientId: '', // string\n// topic: '', // string\n// payload: {}, // object\n// };\n// timelineDateInfo = {\n// date: '', // string\n// count: 0, // integer\n// };\n// timelineTimeInfo = {\n// start: 0, // timestamp\n// end: 0, // timestamp\n// duration: 0, // long\n// };\n"],"sourceRoot":""}