{"version":3,"sources":["webpack:///./src/components/Chat.vue?c59c","webpack:///src/components/Chat.vue","webpack:///./src/components/Chat.vue?a2dc","webpack:///./src/components/Chat.vue"],"names":["render","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","_v","_s","errorMessage","_e","scopedSlots","_u","key","fn","ref","on","_g","_b","model","value","callback","$$v","chatDialog","expression","staticStyle","tableKey","tableHeight","dataObject","linkClick","link","getItemColor","coloredFields","fields_included","filterTabsFn","currentMessage","sendMessage","$event","showDialog","showSnackbar","messageSender","snackbarMessage","_l","m","i","time_stamp","sender","msg","replyMessage","sendReply","staticRenderFns","components","data","socket","openDialog","dataReady","object_name","schema_name","mobileBreakpoint","all_records","currentUser","me","allMessages","methods","getSocket","socketUrl","reconnection","reconnectionAttempts","reconnectionDelay","emit","recipients","message","push","to","saveMessage","selectedUsers","length","forEach","r","email","metadata","mounted","that","id","$root","store","userData","qry","$and","$on","e","tableName","select","selected","created","watch","component","VAlert","VBtn","VCard","VCardActions","VCardText","VCardTitle","VCol","VContainer","VDialog","VIcon","VRow","VSnackbar","VSpacer","VTextarea","VToolbar"],"mappings":"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","file":"js/chunk-2d226135.e6b19e32.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.errorMessage)?_c('v-alert',{staticClass:\"ma-2\",attrs:{\"dismissible\":\"\",\"dense\":\"\",\"timeout\":\"3000\",\"type\":\"error\"}},[_vm._v(\" \"+_vm._s(_vm.errorMessage)+\" \")]):_vm._e(),_c('v-dialog',{attrs:{\"max-width\":\"900px\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({attrs:{\"text\":\"\",\"color\":\"info\"}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-wechat\")]),_vm._v(\" Chat \")],1)]}}]),model:{value:(_vm.chatDialog),callback:function ($$v) {_vm.chatDialog=$$v},expression:\"chatDialog\"}},[_c('v-card',[_c('v-card-title',[_vm._v(\" Chat With Users \")]),_c('v-card-text',{staticClass:\"ma-2\",staticStyle:{\"max-width\":\"890px\",\"overflow-x\":\"hidden\"}},[_c('v-container',[_c('v-row',[_c('v-col',{attrs:{\"lg\":\"8\"}},[(_vm.dataReady)?_c('d-table',{key:_vm.tableKey,ref:\"dTable\",attrs:{\"tableHeight\":_vm.tableHeight,\"table_title\":\"Select Users To Send\",\"data_object\":_vm.dataObject,\"getFreshData\":true,\"linkClick\":_vm.linkClick,\"link\":_vm.link,\"directEdit\":false,\"mobileBreakpoint\":\"'0'\",\"itemsPerPage\":15,\"noDelete\":true,\"noExcel\":true,\"hideTopBar\":false,\"getItemColor\":_vm.getItemColor,\"coloredFields\":_vm.coloredFields,\"fields_included\":_vm.fields_included,\"tableName\":\"chat\",\"filterTabsFn\":_vm.filterTabsFn,\"hasSearch\":true}}):_vm._e()],1),_c('v-col',{attrs:{\"lg\":\"4\"}},[_c('v-textarea',{attrs:{\"label\":\"Type your message\",\"rows\":\"10\"},model:{value:(_vm.currentMessage),callback:function ($$v) {_vm.currentMessage=$$v},expression:\"currentMessage\"}}),_c('v-toolbar',{attrs:{\"flat\":\"\"}},[_c('v-spacer'),_c('v-btn',{attrs:{\"text\":\"\",\"color\":\"success\"},on:{\"click\":_vm.sendMessage}},[_c('v-icon',[_vm._v(\"mdi-send\")]),_vm._v(\"Send\")],1),_c('v-btn',{attrs:{\"text\":\"\"},on:{\"click\":function($event){_vm.chatDialog = false}}},[_vm._v(\"Cancel\")])],1)],1)],1)],1)],1)],1)],1),_c('v-snackbar',{attrs:{\"timeout\":3000000},scopedSlots:_vm._u([{key:\"action\",fn:function(ref){\nvar attrs = ref.attrs;\nreturn [_c('v-btn',{attrs:{\"text\":\"\"},on:{\"click\":function($event){_vm.chatDialog = false;\n _vm.showDialog = true;\n _vm.showSnackbar = false;}}},[_vm._v(\"Reply\")])]}}]),model:{value:(_vm.showSnackbar),callback:function ($$v) {_vm.showSnackbar=$$v},expression:\"showSnackbar\"}},[_vm._v(\" New message from \"+_vm._s(_vm.messageSender)+\": \"+_vm._s(_vm.snackbarMessage)+\" \")]),_c('v-dialog',{attrs:{\"max-width\":\"600px\"},model:{value:(_vm.showDialog),callback:function ($$v) {_vm.showDialog=$$v},expression:\"showDialog\"}},[_c('v-card',[_vm._l((_vm.allMessages),function(m,i){return _c('div',{key:i,staticClass:\"ma-2\"},[_vm._v(\" \"+_vm._s(m.time_stamp)+\" \"),_c('b',[_vm._v(_vm._s(m.sender)+\":\")]),_vm._v(\" \"+_vm._s(m.msg)+\" \")])}),_c('v-card-title',[_vm._v(\"Reply to \"+_vm._s(_vm.messageSender))]),_c('v-card-text',[_c('v-textarea',{attrs:{\"label\":\"Type your reply\"},model:{value:(_vm.replyMessage),callback:function ($$v) {_vm.replyMessage=$$v},expression:\"replyMessage\"}})],1),_c('v-card-actions',[_c('v-toolbar',{attrs:{\"flat\":\"\"}},[_c('v-btn',{attrs:{\"text\":\"\"},on:{\"click\":function($event){_vm.showDialog = false}}},[_vm._v(\"Cancel\")]),_c('v-spacer'),_c('v-btn',{attrs:{\"text\":\"\",\"color\":\"success\"},on:{\"click\":_vm.sendReply}},[_c('v-icon',[_vm._v(\"mdi-send\")]),_vm._v(\"Send\")],1)],1)],1)],2)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div>\r\n <!-- Chat UI -->\r\n <v-alert\r\n class=\"ma-2\"\r\n dismissible\r\n dense\r\n timeout=\"3000\"\r\n v-if=\"errorMessage\"\r\n type=\"error\"\r\n >\r\n {{ errorMessage }}\r\n </v-alert>\r\n <v-dialog v-model=\"chatDialog\" max-width=\"900px\">\r\n <template v-slot:activator=\"{ on, attrs }\">\r\n <v-btn text color=\"info\" v-bind=\"attrs\" v-on=\"on\"\r\n ><v-icon>mdi-wechat</v-icon>\r\n Chat\r\n </v-btn>\r\n </template>\r\n <v-card>\r\n <v-card-title>\r\n Chat With Users\r\n </v-card-title>\r\n <v-card-text class=\"ma-2\" style=\"max-width: 890px; overflow-x: hidden;\">\r\n <v-container>\r\n <v-row>\r\n <v-col lg=\"8\">\r\n <d-table\r\n v-if=\"dataReady\"\r\n :tableHeight=\"tableHeight\"\r\n table_title=\"Select Users To Send\"\r\n :data_object=\"dataObject\"\r\n :getFreshData=\"true\"\r\n :linkClick=\"linkClick\"\r\n :link=\"link\"\r\n :directEdit=\"false\"\r\n mobileBreakpoint=\"'0'\"\r\n :itemsPerPage=\"15\"\r\n :noDelete=\"true\"\r\n :key=\"tableKey\"\r\n :noExcel=\"true\"\r\n :hideTopBar=\"false\"\r\n :getItemColor=\"getItemColor\"\r\n :coloredFields=\"coloredFields\"\r\n :fields_included=\"fields_included\"\r\n ref=\"dTable\"\r\n tableName=\"chat\"\r\n :filterTabsFn=\"filterTabsFn\"\r\n :hasSearch=\"true\"\r\n />\r\n </v-col>\r\n <v-col lg=\"4\">\r\n <v-textarea\r\n v-model=\"currentMessage\"\r\n label=\"Type your message\"\r\n rows=\"10\"\r\n ></v-textarea>\r\n <v-toolbar flat>\r\n <v-spacer></v-spacer>\r\n\r\n <v-btn text color=\"success\" @click=\"sendMessage\"\r\n ><v-icon>mdi-send</v-icon>Send</v-btn\r\n ><v-btn text @click=\"chatDialog = false\">Cancel</v-btn>\r\n </v-toolbar>\r\n </v-col>\r\n </v-row>\r\n </v-container>\r\n </v-card-text>\r\n </v-card>\r\n </v-dialog>\r\n <!-- Snackbar for new messages -->\r\n <v-snackbar v-model=\"showSnackbar\" :timeout=\"3000000\">\r\n New message from {{ messageSender }}: {{ snackbarMessage }}\r\n <template v-slot:action=\"{ attrs }\">\r\n <v-btn\r\n text\r\n @click=\"\r\n chatDialog = false;\r\n showDialog = true;\r\n showSnackbar = false;\r\n \"\r\n >Reply</v-btn\r\n >\r\n </template>\r\n </v-snackbar>\r\n\r\n <!-- Dialog for replying -->\r\n <v-dialog v-model=\"showDialog\" max-width=\"600px\">\r\n <v-card>\r\n <div class=\"ma-2\" v-for=\"(m, i) in allMessages\" :key=\"i\">\r\n {{ m.time_stamp }} <b>{{ m.sender }}:</b> {{ m.msg }}\r\n </div>\r\n <v-card-title>Reply to {{ messageSender }}</v-card-title>\r\n <v-card-text>\r\n <v-textarea\r\n v-model=\"replyMessage\"\r\n label=\"Type your reply\"\r\n ></v-textarea>\r\n </v-card-text>\r\n <v-card-actions>\r\n <v-toolbar flat\r\n ><v-btn text @click=\"showDialog = false\">Cancel</v-btn\r\n ><v-spacer></v-spacer>\r\n <v-btn text color=\"success\" @click=\"sendReply\"\r\n ><v-icon>mdi-send</v-icon>Send</v-btn\r\n >\r\n </v-toolbar>\r\n </v-card-actions>\r\n </v-card>\r\n </v-dialog>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport io from \"socket.io-client\";\r\nimport * as fun from \"../plugins/common\";\r\nimport axios from \"axios\";\r\nexport default {\r\n components: { DTable: () => import(\"../components/Table.vue\") },\r\n data() {\r\n return {\r\n chatDialog: false,\r\n tableHeight: \"200px\",\r\n socket: null,\r\n showSnackbar: false,\r\n openDialog: false,\r\n // Peer: require(\"simple-peer\"),\r\n dataReady: false,\r\n fields_included: [\r\n \"full_name\",\r\n // \"email\",\r\n // \"last_login_action\",\r\n // \"last_login_action_time\",\r\n // \"last_action\",\r\n // \"last_action_time\",\r\n ],\r\n dataObject: {\r\n object_name: \"v_users_online\",\r\n schema_name: \"v_sales_person\",\r\n mobileBreakpoint: 0,\r\n all_records: true,\r\n // date_fields: [\"order_date_time\"],\r\n fields_included: [\r\n \"full_name\",\r\n \"email\",\r\n // \"last_login_action\",\r\n // \"last_login_action_time\",\r\n // \"last_action\",\r\n // \"last_action_time\",\r\n ],\r\n },\r\n currentUser: \"\",\r\n me: \"\",\r\n messageSender: \"\",\r\n replyMessage: \"\",\r\n showDialog: false,\r\n allMessages: [],\r\n errorMessage: \"\",\r\n };\r\n },\r\n methods: {\r\n getSocket() {\r\n var socketUrl = \"https://server.moverai.com:5000/\";\r\n this.socket = io(socketUrl, {\r\n reconnection: true,\r\n reconnectionAttempts: 10,\r\n reconnectionDelay: 3000,\r\n });\r\n },\r\n sendReply() {\r\n this.socket.emit(\"send_message_to_selected\", {\r\n recipients: [this.messageSender],\r\n message: this.replyMessage,\r\n sender: this.currentUser,\r\n });\r\n var msg = {\r\n time_stamp: fun.timeStamp(),\r\n msg: this.replyMessage,\r\n sender: this.currentUser,\r\n };\r\n this.allMessages.push(msg);\r\n msg.to = [this.messageSender];\r\n this.saveMessage(msg);\r\n this.replyMessage = \"\";\r\n },\r\n sendMessage() {\r\n if (this.selectedUsers && this.selectedUsers.length) {\r\n if (this.currentMessage) {\r\n this.socket.emit(\"send_message_to_selected\", {\r\n recipients: this.selectedUsers,\r\n message: this.currentMessage,\r\n sender: this.currentUser,\r\n });\r\n var msg = {\r\n time_stamp: fun.timeStamp(),\r\n msg: this.currentMessage,\r\n sender: this.currentUser,\r\n };\r\n this.allMessages.push(msg);\r\n var recipients = [];\r\n this.selectedUsers.forEach((r) => {\r\n if (r.email) {\r\n recipients.push(r.email);\r\n } else {\r\n recipients.push(r);\r\n }\r\n });\r\n msg.to = recipients;\r\n this.saveMessage(msg);\r\n this.currentMessage = \"\";\r\n this.errorMessage = \"\";\r\n this.chatDialog = false;\r\n } else {\r\n this.errorMessage = \"Please type the message\";\r\n }\r\n } else {\r\n this.errorMessage = \"Please select users to send\";\r\n }\r\n },\r\n saveMessage(model) {\r\n var data = {\r\n metadata: { object_name: \"chat\" },\r\n\r\n model: model,\r\n };\r\n axios\r\n .post(this.serverURL + \"/add_data\", data, {\r\n withCredentials: true,\r\n })\r\n .then((response) => {\r\n console.log(response.data);\r\n });\r\n },\r\n },\r\n mounted() {\r\n var socketUrl = \"https://server.moverai.com:5000/\";\r\n this.socket = io(socketUrl);\r\n\r\n var that = this;\r\n this.socket.on(\"receive_message\", (data) => {\r\n // Only show if the current user is one of the intended recipients or if it's a message for 'All'\r\n if (\r\n data.recipients.some((d) => {\r\n return d.email === that.currentUser;\r\n }) ||\r\n data.recipients.includes(that.currentUser)\r\n ) {\r\n var msg = {\r\n time_stamp: fun.timeStamp(),\r\n msg: data.message,\r\n sender: data.sender,\r\n };\r\n that.allMessages.push(msg);\r\n var recipients = [];\r\n data.recipients.forEach((r) => {\r\n if (r.email) {\r\n recipients.push(r.email);\r\n } else {\r\n recipients.push(r);\r\n }\r\n });\r\n msg.to = recipients;\r\n that.saveMessage(msg);\r\n that.snackbarMessage = data.message;\r\n that.messageSender = data.sender;\r\n that.showSnackbar = true;\r\n }\r\n });\r\n this.socket.on(\"me\", (id) => {\r\n that.me = id;\r\n });\r\n this.currentUser = this.$root.store.userData.email;\r\n this.dataObject.qry = {\r\n $and: [\r\n { last_login_action: \"login\" },\r\n { email: { $ne: this.currentUser } },\r\n ],\r\n };\r\n this.dataReady = true;\r\n this.$root.$on(\"tableMounted\", (e) => {\r\n if (e.tableName == \"chat\") {\r\n e.select = true;\r\n }\r\n });\r\n this.$root.$on(\"tableSelectionChanged\", (e) => {\r\n if (e.tableName == \"chat\") {\r\n that.selectedUsers = e.selected;\r\n that.errorMessage = \"\";\r\n }\r\n });\r\n },\r\n created() {},\r\n watch: {\r\n currentMessage() {\r\n this.errorMessage = \"\";\r\n },\r\n },\r\n};\r\n</script>\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Chat.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Chat.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Chat.vue?vue&type=template&id=26da772f&\"\nimport script from \"./Chat.vue?vue&type=script&lang=js&\"\nexport * from \"./Chat.vue?vue&type=script&lang=js&\"\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 null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAlert } from 'vuetify/lib/components/VAlert';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSnackbar } from 'vuetify/lib/components/VSnackbar';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextarea } from 'vuetify/lib/components/VTextarea';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\ninstallComponents(component, {VAlert,VBtn,VCard,VCardActions,VCardText,VCardTitle,VCol,VContainer,VDialog,VIcon,VRow,VSnackbar,VSpacer,VTextarea,VToolbar})\n"],"sourceRoot":""}