{"version":3,"sources":["webpack:///./src/pages/manage/projects/audio/id.vue?6c0f","webpack:///./src/pages/manage/projects/audio/id.vue","webpack:///./src/pages/manage/projects/audio/id.vue?0a20","webpack:///./src/pages/manage/projects/audio/id.vue?460b","webpack:///./src/pages/manage/projects/audio/id.vue?36c4"],"names":["name","_c","attrs","scopedSlots","key","on","_vm","proxy","item","_v","uploaderDialogVisible","model","value","audioTextDialogVisible","callback","staticClass","ref","timeUpdate","$event","currentItem","transcribtion","class","word","done","parseAudioPosition","active","startTime","currentTime","seekAudio","staticRenderFns","Home","Vue","constructor","dataSource","ObjectDataSource","id","this","$route","params","config","className","audioDataSource","ListDataSource","pageIndex","pageSize","filter","JSON","stringify","fieldName","fieldValue","parseInt","beforeAdd","projectId","headers","text","sortable","align","event","url","data","axios","post","Accept","onUploadProgress","e","onProgress","file","items","push","index","findIndex","a","set","show","chunk","response","chunks","_chunk$alternatives$","alternatives","words","sort","b","endTime","$refs","audio","srcElement","position","parseFloat","replace","created","get","__decorate","Component","components","FileUploaderDialog","component"],"mappings":"0IAAA,W,mICAkL,W,IAA6B,O,EAAUA,EAAI,MAAE,GAAU,oB,OAAC,UAAG,MAAKC,CAAgBC,MAAM,K,CAAuB,iCAA4B,C,MAAC,CAAkC,2BAACC,MAAW,CAAUC,KAAI,e,GAAwCC,EAAG,a,aAA0BC,c,iBAAgC,U,cAAC,mB,YAAiC,OAACC,IAAK,MAAM,GAAC,WAACH,MAAI,GAAQ,QAAI,IAAWI,kBAAO,8B,CAA4B,4B,OAAiBP,G,2BAA8E,K,IAA8E,kBAAG,OAAK,cAA8BO,aAAO,OAAC,IAASA,4BAA8B,EAAK,YAAW,KAAC,e,EAA0B,8D,KAA0B,gB,GAA6FH,UAAG,K,UAA8C,qCAAC,IAAIJ,MAAG,SAAcQ,GAA+EP,OAAM,cAAiBG,CAAE,EAAC,0E,GAAC,C,MAAgCC,SAASE,GAAK,mBAAgE,iFAAG,OAAO,cAA4B,GAAQ,CAAgB,kBAAO,oBAA+D,CAACE,0CAAyB,iBAAoC,0BAAG,GAAEJ,CAAgCJ,OAAM,cAAc,MAAC,CAACS,MAAM,wBAACC,SAAU,SAACC,GAAwBC,wBAAwB,GAA+B,WAAC,2BAAoC,wBAAE,MAAK,CAA6BC,MAAW,OAAmIC,MAAI,CAAQD,QAAY,uBAAOb,SAAM,YAAC,yBAAW,GAAM,WAAC,2B,GAA+B,OAAOI,GAAIW,OAAWC,C,YAAO,uBAAC,wFAAE,IAAK,QAAUhB,YAAM,O,MAAM,CAAyD,SAAO,IAAc,GAACI,CAA4FS,WAAY,YAAa,OAAQ,EAACI,WAAYC,M,CAA+EC,WAAM,CAAoC,MAAIb,CAAyJ,IAAOP,4BAAU,0B,KAAK,e,EAAsD,2DAAiB,mB,YAAK,U,KAAoBoB,EAAK,YAAC,6C,SAChjFC,MAAM,C,YAENC,mBAAUC,c,CAEJA,G,EADNC,WACMD,SAAkB,EAACF,IAAKI,MAAU,gBAAQC,EAAW,MACrDH,aAAkB,cAAe,EAAGlB,GAAIqB,8B,OAC/C,U,IAAG,IAAC,G,EAAC,KAAQ,OAAST,SAAO,K,OAAC,SAAWU,C,IAAuC,aAAC,OAAItB,MAAM,EAAkC,mBAAM,sDAAQ,OAAC,qBAAqB,EAAYL,YAAW,+DAAQ,GAAO,CAAW,kBAAI,6CAA4D,iCAAC,OAAO,MACxS,iCACG4B,OAEJ,MAAe,W,oMCDf,IAAqBC,EAArB,cAAkCC,OAAlCC,c,oBACE,KAAAnB,wBAAkC,EAClC,KAAAM,YAAmB,KACnB,KAAAQ,YAAsB,EACtB,KAAAM,WAA+B,IAAIC,OAAiB,CAClDC,IAAKC,KAAKC,OAAOC,OAAOH,GACxBI,OAAQ,GACRC,UAAW,qBAEb,KAAAC,gBAAkC,IAAIC,OAAe,CACnDH,OAAQ,CACNI,UAAW,EACXC,SAAU,IACVC,OAAQC,KAAKC,UAAU,CACrB,CAAEC,UAAW,YAAaC,WAAYC,SAASd,KAAKC,OAAOC,OAAOH,QAGtEK,UAAW,YACXW,UAAYxC,IACVA,EAAMyC,UAAYhB,KAAKC,OAAOC,OAAOH,MAIzC,KAAAkB,QAAsB,CACpB,CACEC,KAAM,KACN1C,MAAO,KACP2C,UAAU,GAEZ,CACED,KAAM,gBACN1C,MAAO,aACP2C,UAAU,GAEZ,CACED,KAAM,QACN1C,MAAO,SACP4C,MAAO,MACPD,UAAU,GAEZ,CACED,KAAM,YACN1C,MAAO,OACP2C,UAAU,GAEZ,CACED,KAAM,eACN1C,MAAO,WACP2C,UAAU,GAEZ,CACED,KAAM,cACN1C,MAAO,gBACP2C,UAAU,GAEZ,CACED,KAAM,4BACN1C,MAAO,oBACP2C,UAAU,GAEZ,CACED,KAAM,SACN1C,MAAO,kBACP2C,UAAU,IAId,KAAA7C,uBAAiC,EAEjC,iBAAiB+C,GACf,MAAMC,EAAM,uCAAuCtB,KAAKC,OAAOC,OAAOH,GAEtE,IACE,MAAM,KAAEwB,SAAeC,IAAMC,KAAKH,EAAKD,EAAME,KAAM,CACjDN,QAAS,CACP,eAAgB,sBAChBS,OAAQ,OAEVC,iBAAiBC,GACfP,EAAMQ,WAAWD,EAAGP,EAAMS,SAG9B9B,KAAKK,gBAAgB0B,MAAMC,KAAKT,GAChC,MAAOK,GACP,MAAMA,GAIV,YAAYxD,GACV,IAAIkD,EAAM,6BACV,MAAM,KAAEC,SAAeC,IAAMC,KAAKH,EAAK,CAAClD,EAAK2B,KAC7C,IAAK3B,KAAQmD,EAAM,CACjB,IAAIU,EAAQjC,KAAKK,gBAAgB0B,MAAMG,UAAWC,GAAMA,EAAEpC,IAAM3B,EAAK2B,IACjEkC,GAAS,GACXtC,OAAIyC,IAAIpC,KAAKK,gBAAgB0B,MAAOE,EAAO7D,IAIjD,UAAUA,GACR,IAAIkD,EAAM,2BACV,MAAM,KAAEC,SAAeC,IAAMC,KAAKH,EAAK,CAAClD,EAAK2B,KAC7C,IAAK3B,KAAQmD,EAAM,CACjB,IAAIU,EAAQjC,KAAKK,gBAAgB0B,MAAMG,UAAWC,GAAMA,EAAEpC,IAAM3B,EAAK2B,IACjEkC,GAAS,GACXtC,OAAIyC,IAAIpC,KAAKK,gBAAgB0B,MAAOE,EAAO7D,IAIjDiE,KAAKjE,GACH4B,KAAKjB,YAAcX,EACnB,IAAK,IAAIkE,KAAStC,KAAKjB,YAAYC,cAAcuD,SAASC,OAAQ,KAAAC,EAChEH,EAAMhD,UAAYU,KAAKZ,mBACA,QADkBqD,EACvCH,EAAMI,aAAa,UAAE,IAAAD,GAAU,QAAVA,EAArBA,EAAuBE,MAAM,UAAE,IAAAF,OAAA,EAA/BA,EAAiCnD,WAGrCU,KAAKjB,YAAYC,cAAcuD,SAASC,OACtCxC,KAAKjB,YAAYC,cAAcuD,SAASC,OAAOI,MAAK,SAAUT,EAAGU,GAC/D,OAAOV,EAAE7C,UAAYuD,EAAEvD,aAE3BU,KAAKT,YAAc,EACnBS,KAAKvB,wBAAyB,EAGhCe,UAAUF,EAAWwD,GAClB9C,KAAK+C,MAAMC,MAAczD,YAAcS,KAAKZ,mBAAmBE,GAElET,WAAWwC,GACTrB,KAAKT,YAAc8B,EAAM4B,WAAW1D,YAGtCH,mBAAmB8D,GACjB,OAAOA,EAAWC,WAAWD,EAASE,QAAQ,IAAK,KAAO,KAG5DC,UACErD,KAAKH,WAAWyD,QAvIC5D,EAAI6D,eAAA,CAHxBC,eAAU,CACTC,WAAY,CAAEC,8BAEKhE,WCV6Z,I,yBCQ9aiE,EAAY,eACd,EACA,EACAlE,GACA,EACA,KACA,WACA,MAIa,aAAAkE,E","file":"js/chunk-d4fe5fd4.56700ce3.js","sourcesContent":["export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./id.vue?vue&type=style&index=0&id=2241c576&prod&scoped=true&lang=scss\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-container',{attrs:{\"fluid\":\"\"}},[_c('h1',[_c('inline-editor-string',{attrs:{\"data-source\":_vm.dataSource,\"field\":{ name: 'caption' }}})],1),_c('data-list',{attrs:{\"title\":\"Аудиозаписи\",\"custom-headers\":_vm.headers,\"data-source\":_vm.audioDataSource},scopedSlots:_vm._u([{key:\"add\",fn:function(){return [_c('v-btn',{on:{\"click\":function($event){_vm.uploaderDialogVisible = true}}},[_vm._v(\"Загрузить файлы\")])]},proxy:true},{key:\"player\",fn:function({ item }){return [_c('audio',{attrs:{\"controls\":\"\"}},[_c('source',{attrs:{\"src\":`/api/v1/manage/audiofile/${item.id}/stream`,\"type\":\"audio/ogg\"}}),_vm._v(\" Your browser does not support the audio element. \")])]}},{key:\"transcribtion\",fn:function({ item }){return [(item.transcribtionStateId == 0)?_c('v-btn',{on:{\"click\":function($event){return _vm.start(item)}}},[_c('v-icon',[_vm._v(\"mdi-text\")])],1):_vm._e(),(item.transcribtionStateId == 1)?_c('v-btn',{on:{\"click\":function($event){return _vm.get(item)}}},[_c('v-icon',[_vm._v(\"mdi-download\")])],1):_vm._e(),(item.transcribtionStateId == 2)?_c('v-btn',{attrs:{\"depressed\":\"\"},on:{\"click\":function($event){return _vm.show(item)}}},[_c('v-icon',[_vm._v(\"mdi-text-box-outline\")])],1):_vm._e()]}}])}),_c('file-uploader-dialog',{on:{\"upload\":_vm.uploadFile},model:{value:(_vm.uploaderDialogVisible),callback:function ($$v) {_vm.uploaderDialogVisible=$$v},expression:\"uploaderDialogVisible\"}}),(_vm.currentItem)?_c('v-dialog',{attrs:{\"width\":\"900\"},model:{value:(_vm.audioTextDialogVisible),callback:function ($$v) {_vm.audioTextDialogVisible=$$v},expression:\"audioTextDialogVisible\"}},[_c('v-card',[_c('v-card-title',{staticClass:\"primary white--text\"},[_vm._v(\" \"+_vm._s(_vm.currentItem.name)+\" \")]),_c('v-card-text',[(_vm.audioTextDialogVisible)?_c('audio',{ref:\"audio\",staticClass:\"mt-2\",attrs:{\"controls\":\"\"},on:{\"timeupdate\":function($event){return _vm.timeUpdate($event)}}},[_c('source',{attrs:{\"src\":`/api/v1/manage/audiofile/${_vm.currentItem.id}/stream`,\"type\":\"audio/ogg\"}}),_vm._v(\" Your browser does not support the audio element. \")]):_vm._e()]),_c('v-card-text',{staticClass:\"scroll\"},_vm._l((_vm.currentItem.transcribtion.response.chunks),function(item,index){return _c('div',{key:index,class:'channel channel-' + item.channelTag},[(item.channelTag == 2)?_c('div',[_c('b',[_vm._v(\"Оператор\")])]):_c('div',[_c('b',[_vm._v(\"Клиент\")])]),_vm._l((item.alternatives),function(alternative,a){return _c('span',{key:'a' + a},_vm._l((alternative.words),function(word,wi){return _c('span',{key:'a' + a + 'wi' + wi,class:{\n word: true,\n bad: word.confidence < 1,\n done: _vm.parseAudioPosition(word.startTime) <= _vm.currentTime,\n active:\n _vm.parseAudioPosition(word.startTime) <= _vm.currentTime &&\n _vm.parseAudioPosition(word.endTime) >= _vm.currentTime,\n },on:{\"click\":function($event){return _vm.seekAudio(word.startTime, word.endTime)}}},[_vm._v(\" \"+_vm._s(word.word)+\" \")])}),0)})],2)}),0),_c('v-card-actions',[_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"primary\"},on:{\"click\":function($event){_vm.audioTextDialogVisible = false}}},[_vm._v(\" Закрыть \")])],1)],1)],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { Vue, Component } from \"vue-property-decorator\";\nimport { ObjectDataSource } from \"@/data/Object/ObjecDatatSource\";\nimport { ListDataSource } from \"@/data/List/ListDataSource\";\nimport FileUploaderDialog from \"@/components/helpers/file-uploader-dialog.vue\";\n\nimport axios from \"axios\";\n@Component({\n components: { FileUploaderDialog },\n})\nexport default class Home extends Vue {\n audioTextDialogVisible: boolean = false;\n currentItem: any = null;\n currentTime: number = 0;\n dataSource: ObjectDataSource = new ObjectDataSource({\n id: +this.$route.params.id,\n config: {},\n className: \"AudiofileProject\",\n });\n audioDataSource: ListDataSource = new ListDataSource({\n config: {\n pageIndex: 1,\n pageSize: 100,\n filter: JSON.stringify([\n { fieldName: \"projectId\", fieldValue: parseInt(this.$route.params.id) },\n ]),\n },\n className: \"audiofile\",\n beforeAdd: (model) => {\n model.projectId = this.$route.params.id;\n },\n });\n\n headers: Array = [\n {\n text: \"ID\",\n value: \"id\",\n sortable: true,\n },\n {\n text: \"Дата создания\",\n value: \"createDate\",\n sortable: true,\n },\n {\n text: \"Плеер\",\n value: \"player\",\n align: \"end\",\n sortable: false,\n },\n {\n text: \"Имя файла\",\n value: \"name\",\n sortable: true,\n },\n {\n text: \"Размер файла\",\n value: \"fileSize\",\n sortable: true,\n },\n {\n text: \"Стенограмма\",\n value: \"transcribtion\",\n sortable: false,\n },\n {\n text: \"Дата изменения стенограмы\",\n value: \"transcribtionDate\",\n sortable: true,\n },\n {\n text: \"Статус\",\n value: \"instanceStateId\",\n sortable: false,\n },\n ];\n\n uploaderDialogVisible: boolean = false;\n\n async uploadFile(event: any) {\n const url = `manage/audiofile/upload/?project_id=${this.$route.params.id}`;\n\n try {\n const { data } = await axios.post(url, event.data, {\n headers: {\n \"Content-Type\": \"multipart/form-data\",\n Accept: \"*/*\",\n },\n onUploadProgress(e) {\n event.onProgress(e, event.file);\n },\n });\n this.audioDataSource.items.push(data);\n } catch (e) {\n throw e;\n }\n }\n\n async start(item) {\n let url = `manage/audiofile/recognize`;\n const { data } = await axios.post(url, [item.id]);\n for (item of data) {\n let index = this.audioDataSource.items.findIndex((a) => a.id == item.id);\n if (index >= 0) {\n Vue.set(this.audioDataSource.items, index, item);\n }\n }\n }\n async get(item) {\n let url = `manage/audiofile/ttsdata`;\n const { data } = await axios.post(url, [item.id]);\n for (item of data) {\n let index = this.audioDataSource.items.findIndex((a) => a.id == item.id);\n if (index >= 0) {\n Vue.set(this.audioDataSource.items, index, item);\n }\n }\n }\n show(item) {\n this.currentItem = item;\n for (let chunk of this.currentItem.transcribtion.response.chunks) {\n chunk.startTime = this.parseAudioPosition(\n chunk.alternatives[0]?.words[0]?.startTime\n );\n }\n this.currentItem.transcribtion.response.chunks =\n this.currentItem.transcribtion.response.chunks.sort(function (a, b) {\n return a.startTime - b.startTime;\n });\n this.currentTime = 0;\n this.audioTextDialogVisible = true;\n }\n\n seekAudio(startTime, endTime) {\n (this.$refs.audio as any).currentTime = this.parseAudioPosition(startTime);\n }\n timeUpdate(event) {\n this.currentTime = event.srcElement.currentTime;\n }\n\n parseAudioPosition(position) {\n return position ? parseFloat(position.replace(\"s\", \"\")) : null;\n }\n\n created() {\n this.dataSource.get();\n }\n}\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./id.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./id.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./id.vue?vue&type=template&id=2241c576&scoped=true\"\nimport script from \"./id.vue?vue&type=script&lang=ts\"\nexport * from \"./id.vue?vue&type=script&lang=ts\"\nimport style0 from \"./id.vue?vue&type=style&index=0&id=2241c576&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2241c576\",\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""}